@datagrok/bio 1.6.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/package.js CHANGED
@@ -2127,13 +2127,8 @@ function getActivityCliffs(df, seqCol, axesNames, scatterTitle, activities, simi
2127
2127
  if (zoom) {
2128
2128
  const currentLine = lines[linesRes.linesDf.currentRowIdx];
2129
2129
  setTimeout(() => {
2130
- const x1 = sp.dataFrame.get(axesNames[0], currentLine.mols[0]);
2131
- const y1 = sp.dataFrame.get(axesNames[1], currentLine.mols[0]);
2132
- const x2 = sp.dataFrame.get(axesNames[0], currentLine.mols[1]);
2133
- const y2 = sp.dataFrame.get(axesNames[1], currentLine.mols[1]);
2134
- const xDiff = Math.abs(x1 - x2) * 5;
2135
- const yDiff = Math.abs(y1 - y2) * 5;
2136
- sp.zoom(x1 < x2 ? x1 - xDiff : x2 - xDiff, y1 > y2 ? y1 + yDiff : y2 + yDiff, x1 > x2 ? x1 + xDiff : x2 + xDiff, y1 < y2 ? y1 - yDiff : y2 - yDiff);
2130
+ const { zoomLeft, zoomRight, zoomTop, zoomBottom } = getZoomCoordinates(sp.viewport.width, sp.viewport.height, sp.dataFrame.get(axesNames[0], currentLine.mols[0]), sp.dataFrame.get(axesNames[1], currentLine.mols[0]), sp.dataFrame.get(axesNames[0], currentLine.mols[1]), sp.dataFrame.get(axesNames[1], currentLine.mols[1]));
2131
+ sp.zoom(zoomLeft, zoomTop, zoomRight, zoomBottom);
2137
2132
  }, 300);
2138
2133
  zoom = false;
2139
2134
  }
@@ -2142,6 +2137,22 @@ function getActivityCliffs(df, seqCol, axesNames, scatterTitle, activities, simi
2142
2137
  return sp;
2143
2138
  });
2144
2139
  }
2140
+ function getZoomCoordinates(W0, H0, x1, y1, x2, y2) {
2141
+ const W1 = Math.abs(x1 - x2);
2142
+ const H1 = Math.abs(y1 - y2);
2143
+ const scaleW = W0 / W1;
2144
+ const scaleH = H0 / H1;
2145
+ const scale = Math.min(scaleW, scaleH);
2146
+ const W2 = (W0 / scale) * 5;
2147
+ const H2 = (H0 / scale) * 5;
2148
+ const left = x1 < x2 ? x1 : x2;
2149
+ const top = y1 > y2 ? y1 : y2;
2150
+ const zoomLeft = (left + W1 / 2) - W2 / 2;
2151
+ const zoomRight = zoomLeft + W2;
2152
+ const zoomTop = (top - H1 / 2) + H2 / 2;
2153
+ const zoomBottom = zoomTop - H2;
2154
+ return { zoomLeft: zoomLeft, zoomRight: zoomRight, zoomTop: zoomTop, zoomBottom: zoomBottom };
2155
+ }
2145
2156
  function checkCursorOnLine(event, canvas, lines) {
2146
2157
  const rect = canvas.getBoundingClientRect();
2147
2158
  const x = event.clientX - rect.left;
@@ -2215,7 +2226,7 @@ function getSimilaritiesMarixFromDistances(dim, distances, simArr) {
2215
2226
  }
2216
2227
  return simArr;
2217
2228
  }
2218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY2xpZmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWN0aXZpdHktY2xpZmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBc0M3RixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFFakIsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBZ0IsaUJBQWlCLENBQ25DLEVBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFNBQW1CLEVBQ25CLFlBQW9CLEVBQ3BCLFVBQXFCLEVBQ3JCLFVBQWtCLEVBQ2xCLGdCQUF3QixFQUN4QixVQUFrQixFQUNsQixPQUFlLEVBQ2YsS0FBYSxFQUNiLFlBQTZFLEVBQzdFLE9BQW1FLEVBQ25FLGVBQXFELEVBQ3JELE9BQWE7O1FBQ2YsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDdkMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBRTFCLE1BQU0sc0JBQXNCLEdBQUcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUU1RixNQUFNLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxHQUFHLE1BQU0sWUFBWSxDQUFDO1lBQ2pELE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLFVBQVU7WUFDdEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxHQUFHLElBQUksV0FBVztZQUMzQixFQUFFLENBQUMsT0FBTyxDQUFDLEdB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QyxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7S0FDeEU7SUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7U0FDcEMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN4QyxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQWdCLG9CQUFvQixDQUN0QyxHQUFXLEVBQ1gsTUFBaUIsRUFDakIsS0FBbUIsRUFDbkIsTUFBbUIsRUFDbkIsT0FBbUU7O1FBR3JFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxFQUFFLEdBQUcsQ0FBQyxDQUFFLENBQUM7U0FDdEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQUE7QUFFRCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsR0FBVyxFQUFFLFNBQWlCLEVBQUUsTUFBbUI7SUFFbkcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDaEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM5QixhQUFhLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztLQUN4RjtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgTWF0cml4IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpbmUge1xuICBpZDogbnVtYmVyO1xuICBtb2xzOiBudW1iZXJbXTtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGE6IG51bWJlcltdOyAvLyBbeCwgeV1cbiAgYjogbnVtYmVyW107IC8vIFt4LCB5XVxufVxuXG5pbnRlcmZhY2UgSVJlbmRlcmVkTGluZXMge1xuICBsaW5lczogSUxpbmVbXTtcbiAgbGluZXNEZjogREcuRGF0YUZyYW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXF1ZW5jZVNwYWNlUGFyYW1zIHtcbiAgICBzZXFDb2w6IERHLkNvbHVtbixcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gICAgc2ltaWxhcml0eU1ldHJpYzogc3RyaW5nLFxuICAgIGVtYmVkQXhlc05hbWVzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcXVlbmNlU3BhY2VSZXN1bHQge1xuICAgIGRpc3RhbmNlOiBNYXRyaXg7XG4gICAgY29vcmRpbmF0ZXM6IERHLkNvbHVtbkxpc3Q7XG4gIH1cblxuZXhwb3J0IGludGVyZmFjZSBJRHJhd1Rvb2x0aXBQYXJhbXMge1xuICB0b29sdGlwczogYW55LFxuICBsaW5lOiBJTGluZSxcbiAgZGY6IERHLkRhdGFGcmFtZSxcbiAgc2VxQ29sOiBERy5Db2x1bW4sXG4gIGFjdGl2aXR5OiBERy5Db2x1bW4sXG4gIHg6IG51bWJlcixcbiAgeTogbnVtYmVyXG59XG5cbmxldCB6b29tID0gZmFsc2U7XG5cbi8vIFNlYXJjaGVzIGZvciBhY3Rpdml0eSBjbGlmZnMgaW4gYSBjaGVtaWNhbCBkYXRhc2V0IGJ5IHNlbGVjdGVkIGN1dG9mZlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFjdGl2aXR5Q2xpZmZzKFxuICAgIGRmOiBERy5EYXRhRnJhbWUsIFxuICAgIHNlcUNvbDogREcuQ29sdW1uLCBcbiAgICBheGVzTmFtZXM6IHN0cmluZ1tdLFxuICAgIHNjYXR0ZXJUaXRsZTogc3RyaW5nLFxuICAgIGFjdGl2aXRpZXM6IERHLkNvbHVtbiwgXG4gICAgc2ltaWxhcml0eTogbnVtYmVyLFxuICAgIHNpbWlsYXJpdHlNZXRyaWM6IHN0cmluZywgXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nLCBcbiAgICBzZW1UeXBlOiBzdHJpbmcsXG4gICAgdW5pdHM6IHN0cmluZyxcbiAgICBzZXFTcGFjZUZ1bmM6IChwYXJhbXM6IElTZXF1ZW5jZVNwYWNlUGFyYW1zKSA9PiBQcm9taXNlPElTZXF1ZW5jZVNwYWNlUmVzdWx0PixcbiAgICBzaW1GdW5jOiAoY29sOiBERy5Db2x1bW4sIG1vbDogc3RyaW5nKSA9PiBQcm9taXNlPERHLkNvbHVtbiB8IG51bGw+LFxuICAgIHRvb2x0aXBEcmF3RnVuYzogKHBhcmFtczogSURyYXdUb29sdGlwUGFyYW1zKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBhbnkpIDogUHJvbWlzZTxERy5WaWV3ZXI+IHtcbiAgY29uc3QgYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID0gZmFsc2U7XG4gIGNvbnN0IE1JTl9TSU1JTEFSSVRZID0gODA7XG5cbiAgY29uc3QgaW5pdGlhbFNpbWlsYXJpdHlMaW1pdCA9IGF1dG9tYXRpY1NpbWlsYXJpdHlMaW1pdCA/IE1JTl9TSU1JTEFSSVRZIDogc2ltaWxhcml0eSAvIDEwMDtcblxuICBjb25zdCB7ZGlzdGFuY2UsIGNvb3JkaW5hdGVzfSA9IGF3YWl0IHNlcVNwYWNlRnVuYyh7XG4gICAgc2VxQ29sOiBzZXFDb2wsXG4gICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICBzaW1pbGFyaXR5TWV0cmljOiBzaW1pbGFyaXR5TWV0cmljLFxuICAgIGVtYmVkQXhlc05hbWVzOiBheGVzTmFtZXMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9KTtcblxuICBmb3IgKGNvbnN0IGNvbCBvZiBjb29yZGluYXRlcylcbiAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuXG4gIGNvbnN0IGRmU2VxID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsICdzZXEnLCBzZXFDb2wudG9MaXN0KCkpXSk7XG4gIGNvbnN0IGRpbSA9IHNlcUNvbC5sZW5ndGg7XG4gIGNvbnN0IHNpbUFycjogREcuQ29sdW1uW10gPSBBcnJheShkaW0gLSAxKTtcblxuICBpZiAoIWRpc3RhbmNlKVxuICAgIGF3YWl0IGdldFNpbWlsYXJpdGllc01hcml4KGRpbSwgc2VxQ29sLCBkZlNlcSwgc2ltQXJyLCBzaW1GdW5jKTtcbiAgZWxzZVxuICAgIGdldFNpbWlsYXJpdGllc01hcml4RnJvbURpc3RhbmNlcyhkaW0sIGRpc3RhbmNlLCBzaW1BcnIpO1xuXG4gIGNvbnN0IG9wdFNpbWlsYXJpdHlMaW1pdCA9IGluaXRpYWxTaW1pbGFyaXR5TGltaXQ7XG5cbiAgY29uc3Qgc2ltVmFsczogbnVtYmVyW10gPSBbXTtcbiAgY29uc3Qgc2FsaVZhbHM6IG51bWJlcltdID0gW107XG4gIGNvbnN0IG4xOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBuMjogbnVtYmVyW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiAhPSBkaW0gLSAxIC0gaTsgKytqKSB7XG4gICAgICBjb25zdCBzaW06IG51bWJlciA9IHNpbUFycltpXS5nZXQoaik7XG5cbiAgICAgIGlmIChzaW0gPj0gb3B0U2ltaWxhcml0eUxpbWl0KSB7XG4gICAgICAgIG4xLnB1c2goaSk7XG4gICAgICAgIG4yLnB1c2goaSArIGogKyAxKTtcbiAgICAgICAgc2ltVmFscy5wdXNoKHNpbSk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhhY3Rpdml0aWVzLmdldChpKSAtIGFjdGl2aXRpZXMuZ2V0KGkgKyBqICsgMSkpO1xuICAgICAgICBpZiAoc2ltICE9IDEpXG4gICAgICAgICAgc2FsaVZhbHMucHVzaChkaWZmIC8gKDEgLSBzaW0pKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHNhbGlWYWxzLnB1c2goSW5maW5pdHkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNhbGlWYWxzV2l0aG91dEluZmluaXR5ID0gc2FsaVZhbHMuZmlsdGVyKGl0ID0+IGl0ICE9PSBJbmZpbml0eSk7XG4gIGNvbnN0IHNhbGlNaW4gPSBNYXRoLm1pbiguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gIGNvbnN0IHNhbGlNYXggPSBNYXRoLm1heCguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gIGNvbnN0IHNhbGlPcGFjaXR5Q29lZiA9IDAuOC8oc2FsaU1heCAtIHNhbGlNaW4pO1xuXG5cbiAgY29uc3QgbmVpZ2hib3Vyc0NvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgY29uc3Qgc2ltaWxhcml0eUNvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgY29uc3Qgc2FsaUNvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSAhPSBuMS5sZW5ndGg7ICsraSkge1xuICAgIG5laWdoYm91cnNDb3VudFtuMVtpXV0gKz0gMTtcbiAgICBuZWlnaGJvdXJzQ291bnRbbjJbaV1dICs9IDE7XG4gICAgc2ltaWxhcml0eUNvdW50W24xW2ldXSArPSBzaW1WYWxzW2ldO1xuICAgIHNpbWlsYXJpdHlDb3VudFtuMltpXV0gKz0gc2ltVmFsc1tpXTtcbiAgICBpZiAoc2FsaVZhbHNbaV0gIT0gSW5maW5pdHkpIHtcbiAgICAgIGlmIChhY3Rpdml0aWVzLmdldChuMVtpXSkgPiBhY3Rpdml0aWVzLmdldChuMltpXSkpXG4gICAgICAgIHNhbGlDb3VudFtuMVtpXV0gKz0gc2FsaVZhbHNbaV07XG4gICAgICBlbHNlXG4gICAgICAgIHNhbGlDb3VudFtuMltpXV0gKz0gc2FsaVZhbHNbaV07XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2FsaTogREcuQ29sdW1uID0gREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBgc2FsaV8ke2F4ZXNOYW1lc1swXS5zdWJzdHJpbmcoYXhlc05hbWVzWzBdLmxhc3RJbmRleE9mKCdfJykpfWAsIHNhbGlDb3VudCk7XG5cbiAgZGYuY29sdW1ucy5hZGQoc2FsaSk7XG5cbiAgY29uc3QgdmlldyA9IGdyb2suc2hlbGwuZ2V0VGFibGVWaWV3KGRmLm5hbWUpO1xuICBjb25zdCBzcCA9IHZpZXcuYWRkVmlld2VyKERHLlZpZXdlci5zY2F0dGVyUGxvdChkZiwge1xuICAgIHhDb2x1bW5OYW1lOiBheGVzTmFtZXNbMF0sXG4gICAgeUNvbHVtbk5hbWU6IGF4ZXNOYW1lc1sxXSxcbiAgICBzaXplOiBzYWxpLm5hbWUsXG4gICAgY29sb3I6IGFjdGl2aXRpZXMubmFtZSxcbiAgICBzaG93WFNlbGVjdG9yOiBmYWxzZSxcbiAgICBzaG93WVNlbGVjdG9yOiBmYWxzZSxcbiAgICBzaG93U2l6ZVNlbGVjdG9yOiBmYWxzZSxcbiAgICBzaG93Q29sb3JTZWxlY3RvcjogZmFsc2UsXG4gICAgbWFya2VyTWluU2l6ZTogNSxcbiAgICBtYXJrZXJNYXhTaXplOiAyNSxcbiAgICB0aXRsZTogc2NhdHRlclRpdGxlXG4gIH0pKSBhcyBERy5TY2F0dGVyUGxvdFZpZXdlcjtcblxuICBjb25zdCBjYW52YXMgPSAoc3AuZ2V0SW5mbygpIGFzIGFueSlbJ2NhbnZhcyddO1xuICBjb25zdCBsaW5lc1JlcyA9IGNyZWF0ZUxpbmVzKG4xLCBuMiwgc2VxQ29sLCBhY3Rpdml0aWVzLCBzYWxpVmFscywgc2VtVHlwZSwgdW5pdHMpO1xuICBjb25zdCB0b29sdGlwczogYW55ID0ge307XG5cbiAgbGluZXNSZXMubGluZXNEZi5vbkN1cnJlbnRDZWxsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRNb2xJZHggPSBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wgJiYgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Q29sLm5hbWUgPT09ICcyX3NlcScgPyAxIDogMDtcbiAgICBzcC5kYXRhRnJhbWUuY3VycmVudFJvd0lkeCA9XG4gICAgICBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggIT09IC0xID8gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4XS5tb2xzW2N1cnJlbnRNb2xJZHhdIDogLTE7XG4gICAgc3AuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoMCwgIWxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgbGluZXNEZkdyaWQuaW52YWxpZGF0ZSgpO1xuICB9KTtcblxuICBsaW5lc1Jlcy5saW5lc0RmLm9uU2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICBpZiAobGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHggIT09IC0xKSB7XG4gICAgICBjb25zdCBsaW5lID0gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHhdO1xuICAgICAgbGluZS5zZWxlY3RlZCA9ICFsaW5lLnNlbGVjdGVkO1xuICAgICAgaWYgKCFsaW5lLnNlbGVjdGVkKVxuICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcbiAgICB9XG4gICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgIGwubW9scy5mb3JFYWNoKChtKSA9PiBkZi5zZWxlY3Rpb24uc2V0KG0sIHRydWUpKTtcbiAgICB9KTtcbiAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gIH0pO1xuXG4gIGNvbnN0IGxpbmVzRGZHcmlkID0gbGluZXNSZXMubGluZXNEZi5wbG90LmdyaWQoKS5zb3J0KFsnYWN0X2RpZmYnXSwgW2ZhbHNlXSk7XG5cbiAgbGluZXNEZkdyaWQub25DZWxsQ2xpY2suc3Vic2NyaWJlKCgpID0+IHtcbiAgICB6b29tID0gdHJ1ZTtcbiAgfSk7XG5cbiAgY29uc3QgbGlzdENsaWZmc0xpbmsgPSB1aS5idXR0b24oYCR7bGluZXNSZXMubGluZXNEZi5yb3dDb3VudH0gY2xpZmZzYCwgKCkgPT4ge1xuICAgIGNvbnN0IGNsaWZmc0RpYWxvZyA9IHVpLmRpYWxvZyh7dGl0bGU6ICdBY3Rpdml0eSBjbGlmZnMnfSlcbiAgICAgIC5hZGQobGluZXNEZkdyaWQucm9vdClcbiAgICAgIC5zaG93KCk7XG4gICAgY2xpZmZzRGlhbG9nLnJvb3QuaWQgPSAnY2xpZmZzX2RpYWxvZyc7XG4gIH0pO1xuICBsaXN0Q2xpZmZzTGluay5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnRvcCA9ICcxMHB4JztcbiAgbGlzdENsaWZmc0xpbmsuc3R5bGUucmlnaHQgPSAnMTBweCc7XG4gIHNwLnJvb3QuYXBwZW5kKGxpc3RDbGlmZnNMaW5rKTtcblxuICBsZXQgdGltZXI6IE5vZGVKUy5UaW1lb3V0O1xuICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB0aW1lciA9IGdsb2JhbC5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBjaGVja0N1cnNvck9uTGluZShldmVudCwgY2FudmFzLCBsaW5lc1Jlcy5saW5lcyk7XG4gICAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICAgIGlmICghdG9vbHRpcHNbbGluZS5pZF0pIHtcbiAgICAgICAgICBjb25zdCBkcmF3VG9vbHRpcFBhcmFtcyA9IHtcbiAgICAgICAgICAgIHRvb2x0aXBzOiB0b29sdGlwcyxcbiAgICAgICAgICAgIGxpbmU6IGxpbmUsXG4gICAgICAgICAgICBkZjogZGYsXG4gICAgICAgICAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICAgICAgICAgIGFjdGl2aXR5OiBhY3Rpdml0aWVzLFxuICAgICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgICB9XG4gICAgICAgICAgdG9vbHRpcERyYXdGdW5jKGRyYXdUb29sdGlwUGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICB1aS50b29sdGlwLnNob3codG9vbHRpcHNbbGluZS5pZF0sIGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICB9KTtcblxuICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgIGlmIChsaW5lICYmIGRmLm1vdXNlT3ZlclJvd0lkeCA9PT0gLTEpIHtcbiAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgbGluZXNSZXMubGluZXNEZi5zZWxlY3Rpb24uc2V0KGxpbmUuaWQsIGxpbmUuc2VsZWN0ZWQpO1xuXG4gICAgICAgIGlmICghbGluZS5zZWxlY3RlZClcbiAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcblxuICAgICAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gbGluZS5pZCkge1xuICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA9IGxpbmUuaWQ7XG4gICAgICAgICAgZGYuY3VycmVudFJvd0lkeCA9IGxpbmUubW9sc1swXTtcbiAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHNwLm9uRXZlbnQoJ2Q0LWJlZm9yZS1kcmF3LXNjZW5lJylcbiAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICBjb25zdCBsaW5lcyA9IHJlbmRlckxpbmVzKHNwLFxuICAgICAgICBheGVzTmFtZXNbMF0sIGF4ZXNOYW1lc1sxXSwgbGluZXNSZXMsIHNhbGlWYWxzLCBzYWxpT3BhY2l0eUNvZWYsIHNhbGlNaW4pO1xuICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgY29uc3QgY3VycmVudExpbmUgPSBsaW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdO1xuICAgICAgICBzZXRUaW1lb3V0KCgpPT4ge1xuICAgICAgICAgIGNvbnN0IHgxID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMF0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pO1xuICAgICAgICAgIGNvbnN0IHkxID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pO1xuICAgICAgICAgIGNvbnN0IHgyID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMF0sIGN1cnJlbnRMaW5lLm1vbHNbMV0pO1xuICAgICAgICAgIGNvbnN0IHkyID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMV0pO1xuICAgICAgICAgIGNvbnN0IHhEaWZmID0gTWF0aC5hYnMoeDEgLSB4MikqNTtcbiAgICAgICAgICBjb25zdCB5RGlmZiA9IE1hdGguYWJzKHkxIC0geTIpKjU7XG4gICAgICAgICAgc3Auem9vbSh4MSA8IHgyID8geDEgLSB4RGlmZiA6IHgyIC0geERpZmYsXG4gICAgICAgICAgICB5MSA+IHkyID8geTEgKyB5RGlmZiA6IHkyICArIHlEaWZmLFxuICAgICAgICAgICAgeDEgPiB4MiA/IHgxICsgeERpZmYgOiB4MiArIHhEaWZmLFxuICAgICAgICAgICAgeTEgPCB5MiA/IHkxIC0geURpZmYgOiB5MiAtIHlEaWZmKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgem9vbSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHNwLmFkZFByb3BlcnR5KCdzaW1pbGFyaXR5TGltaXQnLCAnZG91YmxlJywgb3B0U2ltaWxhcml0eUxpbWl0KTtcbiAgcmV0dXJuIHNwO1xufVxuXG5mdW5jdGlvbiBjaGVja0N1cnNvck9uTGluZShldmVudDogYW55LCBjYW52YXM6IGFueSwgbGluZXM6IElMaW5lW10pOiBJTGluZSB8IG51bGwge1xuICBjb25zdCByZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcDtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgY29uc3QgZGlzdCA9XG4gICAgICBNYXRoLmFicyhNYXRoLmh5cG90KGxpbmUuYVswXSAtIHgsIGxpbmUuYVsxXSAtIHkpICtcbiAgICAgIE1hdGguaHlwb3QobGluZS5iWzBdIC0geCwgbGluZS5iWzFdIC0geSkgLSBNYXRoLmh5cG90KGxpbmUuYVswXSAtIGxpbmUuYlswXSwgbGluZS5hWzFdIC0gbGluZS5iWzFdKSk7XG4gICAgaWYgKGRpc3QgPCAyKVxuICAgICAgcmV0dXJuIGxpbmU7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckxpbmVzKHNwOiBERy5TY2F0dGVyUGxvdFZpZXdlcixcbiAgeEF4aXM6IHN0cmluZywgeUF4aXM6IHN0cmluZywgbGluZXNSZXM6IElSZW5kZXJlZExpbmVzLCBzYWxpVmFsczogbnVtYmVyW10sIHNhbGlPcGFjaXR5Q29lZjogbnVtYmVyLCBzYWxpTWluOiBudW1iZXIpOiBJTGluZSBbXSB7XG4gIGNvbnN0IGxpbmVzID0gbGluZXNSZXMubGluZXM7XG4gIGNvbnN0IGNhbnZhcyA9IChzcC5nZXRJbmZvKCkgYXMge1tpbmRleDogc3RyaW5nXSA6IGFueX0pWydjYW52YXMnXTtcbiAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykgYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICBjb25zdCB4ID0gc3AuZGF0YUZyYW1lIS5jb2x1bW5zLmJ5TmFtZSh4QXhpcyk7XG4gIGNvbnN0IHkgPSBzcC5kYXRhRnJhbWUhLmNvbHVtbnMuYnlOYW1lKHlBeGlzKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHBvaW50RnJvbSA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1swXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgICBjb25zdCBwb2ludFRvID0gc3Aud29ybGRUb1NjcmVlbih4LmdldChsaW5lc1tpXS5tb2xzWzFdKSwgeS5nZXQobGluZXNbaV0ubW9sc1sxXSkpO1xuICAgIGxpbmVzW2ldLmEgPSBbcG9pbnRGcm9tLngsIHBvaW50RnJvbS55XTtcbiAgICBsaW5lc1tpXS5iID0gW3BvaW50VG8ueCwgcG9pbnRUby55XTtcbiAgICBjb25zdCBsaW5lID0gbmV3IFBhdGgyRCgpO1xuICAgIGxpbmUubW92ZVRvKGxpbmVzW2ldLmFbMF0sIGxpbmVzW2ldLmFbMV0pO1xuICAgIGNvbnN0IGNvbG9yID0gbGluZXNbaV0uc2VsZWN0ZWQgPyAnMjU1LDI1NSwwJyA6ICcwLDEyOCwwJztcbiAgICBjb25zdCBvcGFjaXR5ID0gc2FsaVZhbHNbaV0gPT09IEluZmluaXR5ID8gMSA6IDAuMiArIChzYWxpVmFsc1tpXSAtIHNhbGlNaW4pKnNhbGlPcGFjaXR5Q29lZjtcbiAgICBjdHguc3Ryb2tlU3R5bGUgPSBgcmdiYSgke2NvbG9yfSwke29wYWNpdHl9KWA7XG4gICAgY3R4LmxpbmVXaWR0aCA9IGxpbmVzW2ldLmlkID09PSBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggPyAzIDogMTtcbiAgICBsaW5lLmxpbmVUbyhsaW5lc1tpXS5iWzBdLCBsaW5lc1tpXS5iWzFdKTtcbiAgICBjdHguc3Ryb2tlKGxpbmUpO1xuICB9XG4gIHJldHVybiBsaW5lcztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTGluZXMoXG4gIG4xOiBudW1iZXJbXSwgXG4gIG4yOiBudW1iZXJbXSwgXG4gIHNlcTogREcuQ29sdW1uLCBcbiAgYWN0aXZpdGllczogREcuQ29sdW1uLCBcbiAgc2FsaVZhbHM6IG51bWJlcltdLFxuICBzZW1UeXBlOiBzdHJpbmcsXG4gIHVuaXRzOiBzdHJpbmcpIDogSVJlbmRlcmVkTGluZXMge1xuICBjb25zdCBsaW5lczogSUxpbmVbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG4xLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbnVtMSA9IG4xW2ldO1xuICAgIGNvbnN0IG51bTIgPSBuMltpXTtcbiAgICBsaW5lcy5wdXNoKHtpZDogaSwgbW9sczogW251bTEsIG51bTJdLCBzZWxlY3RlZDogZmFsc2UsIGE6IFtdLCBiOiBbXX0pO1xuICB9XG4gIGNvbnN0IGxpbmVzRGYgPSBERy5EYXRhRnJhbWUuY3JlYXRlKGxpbmVzLmxlbmd0aCk7XG4gIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzFfc2VxJykuaW5pdCgoaTogbnVtYmVyKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld1N0cmluZygnMl9zZXEnKS5pbml0KChpOiBudW1iZXIpID0+IHNlcS5nZXQobGluZXNbaV0ubW9sc1sxXSkpO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ2FjdF9kaWZmJylcbiAgICAuaW5pdCgoaTogbnVtYmVyKSA9PiBNYXRoLmFicyhhY3Rpdml0aWVzLmdldChsaW5lc1tpXS5tb2xzWzBdKSAtIGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKSk7XG4gIGxpbmVzRGYuY29sdW1ucy5hZGROZXdJbnQoJ2xpbmVfaW5kZXgnKS5pbml0KChpOiBudW1iZXIpID0+IGkpO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ3NhbGknKS5pbml0KChpOiBudW1iZXIpID0+IHNhbGlWYWxzW2ldKTtcbiAgbGluZXNEZi5jb2woJzFfc2VxJykhLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgbGluZXNEZi5jb2woJzJfc2VxJykhLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgbGluZXNEZi5jb2woJzFfc2VxJykhLnNlbVR5cGUgPSBzZW1UeXBlO1xuICBsaW5lc0RmLmNvbCgnMl9zZXEnKSEuc2VtVHlwZSA9IHNlbVR5cGU7XG4gIHJldHVybiB7bGluZXMsIGxpbmVzRGZ9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2ltaWxhcml0aWVzTWFyaXgoXG4gICAgZGltOiBudW1iZXIsIFxuICAgIHNlcUNvbDogREcuQ29sdW1uLCBcbiAgICBkZlNlcTogREcuRGF0YUZyYW1lLCBcbiAgICBzaW1BcnI6IERHLkNvbHVtbltdLFxuICAgIHNpbUZ1bmM6IChjb2w6IERHLkNvbHVtbiwgbW9sOiBzdHJpbmcpID0+IFByb21pc2U8REcuQ29sdW1uIHwgbnVsbD5cbiAgICApXG4gIDogUHJvbWlzZTxERy5Db2x1bW5bXT4ge1xuICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICBjb25zdCBtb2wgPSBzZXFDb2wuZ2V0KGkpO1xuICAgIGRmU2VxLnJvd3MucmVtb3ZlQXQoMCwgMSwgZmFsc2UpO1xuICAgIHNpbUFycltpXSA9IChhd2FpdCBzaW1GdW5jKGRmU2VxLmNvbCgnc2VxJykhLCBtb2wpKSE7XG4gIH1cbiAgcmV0dXJuIHNpbUFycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc01hcml4RnJvbURpc3RhbmNlcyhkaW06IG51bWJlciwgZGlzdGFuY2VzOiBNYXRyaXgsIHNpbUFycjogREcuQ29sdW1uW10pXG4gIDogREcuQ29sdW1uW10ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbSAtIDE7ICsraSkge1xuICAgIGNvbnN0IHNpbWlsYXJpdHlBcnIgPSBbXTtcbiAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBkaW07ICsrailcbiAgICAgIHNpbWlsYXJpdHlBcnIucHVzaChnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGRpc3RhbmNlc1tpXVtqXSkpO1xuICAgIHNpbUFycltpXSA9IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCdzaW1pbGFyaXR5JywgRmxvYXQzMkFycmF5LmZyb20oc2ltaWxhcml0eUFycikpO1xuICB9XG4gIHJldHVybiBzaW1BcnI7XG59Il19
2229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY2xpZmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWN0aXZpdHktY2xpZmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBc0M3RixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFFakIsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBZ0IsaUJBQWlCLENBQ25DLEVBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFNBQW1CLEVBQ25CLFlBQW9CLEVBQ3BCLFVBQXFCLEVBQ3JCLFVBQWtCLEVBQ2xCLGdCQUF3QixFQUN4QixVQUFrQixFQUNsQixPQUFlLEVBQ2YsS0FBYSxFQUNiLFlBQTZFLEVBQzdFLE9BQW1FLEVBQ25FLGVBQXFELEVBQ3JELE9BQWE7O1FBQ2YsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDdkMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBRTFCLE1BQU0sc0JBQXNCLEdBQUcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUU1RixNQUFNLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxHQUFHLE1BQU0sWUFBWSxDQUFDO1lBQ2pELE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLFVBQVU7WUFDdEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxHQUFHLElBQUksV0FBVztZQUMzQixFQUFFLENBQUMsT0FBTyxDQUFDLEdB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QUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25GLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzFELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFDLGVBQWUsQ0FBQztRQUM3RixHQUFHLENBQUMsV0FBVyxHQUFHLFFBQVEsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xCO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLEVBQVksRUFDWixFQUFZLEVBQ1osR0FBYyxFQUNkLFVBQXFCLEVBQ3JCLFFBQWtCLEVBQ2xCLE9BQWUsRUFDZixLQUFhO0lBQ2IsTUFBTSxLQUFLLEdBQVksRUFBRSxDQUFDO0lBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQztLQUN4RTtJQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztTQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hDLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBZ0Isb0JBQW9CLENBQ3RDLEdBQVcsRUFDWCxNQUFpQixFQUNqQixLQUFtQixFQUNuQixNQUFtQixFQUNuQixPQUFtRTs7UUFHckUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFFLEVBQUUsR0FBRyxDQUFDLENBQUUsQ0FBQztTQUN0RDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FBQTtBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxHQUFXLEVBQUUsU0FBaUIsRUFBRSxNQUFtQjtJQUVuRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNoQyxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzlCLGFBQWEsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0tBQ3hGO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBNYXRyaXggfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcblxuZXhwb3J0IGludGVyZmFjZSBJTGluZSB7XG4gIGlkOiBudW1iZXI7XG4gIG1vbHM6IG51bWJlcltdO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgYTogbnVtYmVyW107IC8vIFt4LCB5XVxuICBiOiBudW1iZXJbXTsgLy8gW3gsIHldXG59XG5cbmludGVyZmFjZSBJUmVuZGVyZWRMaW5lcyB7XG4gIGxpbmVzOiBJTGluZVtdO1xuICBsaW5lc0RmOiBERy5EYXRhRnJhbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcXVlbmNlU3BhY2VQYXJhbXMge1xuICAgIHNlcUNvbDogREcuQ29sdW1uLFxuICAgIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgICBzaW1pbGFyaXR5TWV0cmljOiBzdHJpbmcsXG4gICAgZW1iZWRBeGVzTmFtZXM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VxdWVuY2VTcGFjZVJlc3VsdCB7XG4gICAgZGlzdGFuY2U6IE1hdHJpeDtcbiAgICBjb29yZGluYXRlczogREcuQ29sdW1uTGlzdDtcbiAgfVxuXG5leHBvcnQgaW50ZXJmYWNlIElEcmF3VG9vbHRpcFBhcmFtcyB7XG4gIHRvb2x0aXBzOiBhbnksXG4gIGxpbmU6IElMaW5lLFxuICBkZjogREcuRGF0YUZyYW1lLFxuICBzZXFDb2w6IERHLkNvbHVtbixcbiAgYWN0aXZpdHk6IERHLkNvbHVtbixcbiAgeDogbnVtYmVyLFxuICB5OiBudW1iZXJcbn1cblxubGV0IHpvb20gPSBmYWxzZTtcblxuLy8gU2VhcmNoZXMgZm9yIGFjdGl2aXR5IGNsaWZmcyBpbiBhIGNoZW1pY2FsIGRhdGFzZXQgYnkgc2VsZWN0ZWQgY3V0b2ZmXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWN0aXZpdHlDbGlmZnMoXG4gICAgZGY6IERHLkRhdGFGcmFtZSwgXG4gICAgc2VxQ29sOiBERy5Db2x1bW4sIFxuICAgIGF4ZXNOYW1lczogc3RyaW5nW10sXG4gICAgc2NhdHRlclRpdGxlOiBzdHJpbmcsXG4gICAgYWN0aXZpdGllczogREcuQ29sdW1uLCBcbiAgICBzaW1pbGFyaXR5OiBudW1iZXIsXG4gICAgc2ltaWxhcml0eU1ldHJpYzogc3RyaW5nLCBcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcsIFxuICAgIHNlbVR5cGU6IHN0cmluZyxcbiAgICB1bml0czogc3RyaW5nLFxuICAgIHNlcVNwYWNlRnVuYzogKHBhcmFtczogSVNlcXVlbmNlU3BhY2VQYXJhbXMpID0+IFByb21pc2U8SVNlcXVlbmNlU3BhY2VSZXN1bHQ+LFxuICAgIHNpbUZ1bmM6IChjb2w6IERHLkNvbHVtbiwgbW9sOiBzdHJpbmcpID0+IFByb21pc2U8REcuQ29sdW1uIHwgbnVsbD4sXG4gICAgdG9vbHRpcERyYXdGdW5jOiAocGFyYW1zOiBJRHJhd1Rvb2x0aXBQYXJhbXMpID0+IHZvaWQsXG4gICAgb3B0aW9ucz86IGFueSkgOiBQcm9taXNlPERHLlZpZXdlcj4ge1xuICBjb25zdCBhdXRvbWF0aWNTaW1pbGFyaXR5TGltaXQgPSBmYWxzZTtcbiAgY29uc3QgTUlOX1NJTUlMQVJJVFkgPSA4MDtcblxuICBjb25zdCBpbml0aWFsU2ltaWxhcml0eUxpbWl0ID0gYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID8gTUlOX1NJTUlMQVJJVFkgOiBzaW1pbGFyaXR5IC8gMTAwO1xuXG4gIGNvbnN0IHtkaXN0YW5jZSwgY29vcmRpbmF0ZXN9ID0gYXdhaXQgc2VxU3BhY2VGdW5jKHtcbiAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgZW1iZWRBeGVzTmFtZXM6IGF4ZXNOYW1lcyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH0pO1xuXG4gIGZvciAoY29uc3QgY29sIG9mIGNvb3JkaW5hdGVzKVxuICAgIGRmLmNvbHVtbnMuYWRkKGNvbCk7XG5cbiAgY29uc3QgZGZTZXEgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW0RHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgJ3NlcScsIHNlcUNvbC50b0xpc3QoKSldKTtcbiAgY29uc3QgZGltID0gc2VxQ29sLmxlbmd0aDtcbiAgY29uc3Qgc2ltQXJyOiBERy5Db2x1bW5bXSA9IEFycmF5KGRpbSAtIDEpO1xuXG4gIGlmICghZGlzdGFuY2UpXG4gICAgYXdhaXQgZ2V0U2ltaWxhcml0aWVzTWFyaXgoZGltLCBzZXFDb2wsIGRmU2VxLCBzaW1BcnIsIHNpbUZ1bmMpO1xuICBlbHNlXG4gICAgZ2V0U2ltaWxhcml0aWVzTWFyaXhGcm9tRGlzdGFuY2VzKGRpbSwgZGlzdGFuY2UsIHNpbUFycik7XG5cbiAgY29uc3Qgb3B0U2ltaWxhcml0eUxpbWl0ID0gaW5pdGlhbFNpbWlsYXJpdHlMaW1pdDtcblxuICBjb25zdCBzaW1WYWxzOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBzYWxpVmFsczogbnVtYmVyW10gPSBbXTtcbiAgY29uc3QgbjE6IG51bWJlcltdID0gW107XG4gIGNvbnN0IG4yOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpICE9IGRpbSAtIDE7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqICE9IGRpbSAtIDEgLSBpOyArK2opIHtcbiAgICAgIGNvbnN0IHNpbTogbnVtYmVyID0gc2ltQXJyW2ldLmdldChqKTtcblxuICAgICAgaWYgKHNpbSA+PSBvcHRTaW1pbGFyaXR5TGltaXQpIHtcbiAgICAgICAgbjEucHVzaChpKTtcbiAgICAgICAgbjIucHVzaChpICsgaiArIDEpO1xuICAgICAgICBzaW1WYWxzLnB1c2goc2ltKTtcbiAgICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGFjdGl2aXRpZXMuZ2V0KGkpIC0gYWN0aXZpdGllcy5nZXQoaSArIGogKyAxKSk7XG4gICAgICAgIGlmIChzaW0gIT0gMSlcbiAgICAgICAgICBzYWxpVmFscy5wdXNoKGRpZmYgLyAoMSAtIHNpbSkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgc2FsaVZhbHMucHVzaChJbmZpbml0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2FsaVZhbHNXaXRob3V0SW5maW5pdHkgPSBzYWxpVmFscy5maWx0ZXIoaXQgPT4gaXQgIT09IEluZmluaXR5KTtcbiAgY29uc3Qgc2FsaU1pbiA9IE1hdGgubWluKC4uLnNhbGlWYWxzV2l0aG91dEluZmluaXR5KTtcbiAgY29uc3Qgc2FsaU1heCA9IE1hdGgubWF4KC4uLnNhbGlWYWxzV2l0aG91dEluZmluaXR5KTtcbiAgY29uc3Qgc2FsaU9wYWNpdHlDb2VmID0gMC44LyhzYWxpTWF4IC0gc2FsaU1pbik7XG5cblxuICBjb25zdCBuZWlnaGJvdXJzQ291bnQgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xuICBjb25zdCBzaW1pbGFyaXR5Q291bnQgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xuICBjb25zdCBzYWxpQ291bnQgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpICE9IG4xLmxlbmd0aDsgKytpKSB7XG4gICAgbmVpZ2hib3Vyc0NvdW50W24xW2ldXSArPSAxO1xuICAgIG5laWdoYm91cnNDb3VudFtuMltpXV0gKz0gMTtcbiAgICBzaW1pbGFyaXR5Q291bnRbbjFbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgc2ltaWxhcml0eUNvdW50W24yW2ldXSArPSBzaW1WYWxzW2ldO1xuICAgIGlmIChzYWxpVmFsc1tpXSAhPSBJbmZpbml0eSkge1xuICAgICAgaWYgKGFjdGl2aXRpZXMuZ2V0KG4xW2ldKSA+IGFjdGl2aXRpZXMuZ2V0KG4yW2ldKSlcbiAgICAgICAgc2FsaUNvdW50W24xW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc2FsaUNvdW50W24yW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzYWxpOiBERy5Db2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIGBzYWxpXyR7YXhlc05hbWVzWzBdLnN1YnN0cmluZyhheGVzTmFtZXNbMF0ubGFzdEluZGV4T2YoJ18nKSl9YCwgc2FsaUNvdW50KTtcblxuICBkZi5jb2x1bW5zLmFkZChzYWxpKTtcblxuICBjb25zdCB2aWV3ID0gZ3Jvay5zaGVsbC5nZXRUYWJsZVZpZXcoZGYubmFtZSk7XG4gIGNvbnN0IHNwID0gdmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7XG4gICAgeENvbHVtbk5hbWU6IGF4ZXNOYW1lc1swXSxcbiAgICB5Q29sdW1uTmFtZTogYXhlc05hbWVzWzFdLFxuICAgIHNpemU6IHNhbGkubmFtZSxcbiAgICBjb2xvcjogYWN0aXZpdGllcy5uYW1lLFxuICAgIHNob3dYU2VsZWN0b3I6IGZhbHNlLFxuICAgIHNob3dZU2VsZWN0b3I6IGZhbHNlLFxuICAgIHNob3dTaXplU2VsZWN0b3I6IGZhbHNlLFxuICAgIHNob3dDb2xvclNlbGVjdG9yOiBmYWxzZSxcbiAgICBtYXJrZXJNaW5TaXplOiA1LFxuICAgIG1hcmtlck1heFNpemU6IDI1LFxuICAgIHRpdGxlOiBzY2F0dGVyVGl0bGVcbiAgfSkpIGFzIERHLlNjYXR0ZXJQbG90Vmlld2VyO1xuXG4gIGNvbnN0IGNhbnZhcyA9IChzcC5nZXRJbmZvKCkgYXMgYW55KVsnY2FudmFzJ107XG4gIGNvbnN0IGxpbmVzUmVzID0gY3JlYXRlTGluZXMobjEsIG4yLCBzZXFDb2wsIGFjdGl2aXRpZXMsIHNhbGlWYWxzLCBzZW1UeXBlLCB1bml0cyk7XG4gIGNvbnN0IHRvb2x0aXBzOiBhbnkgPSB7fTtcblxuICBsaW5lc1Jlcy5saW5lc0RmLm9uQ3VycmVudENlbGxDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudE1vbElkeCA9IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudENvbCAmJiBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wubmFtZSA9PT0gJzJfc2VxJyA/IDEgOiAwO1xuICAgIHNwLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4ID1cbiAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gLTEgPyBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdLm1vbHNbY3VycmVudE1vbElkeF0gOiAtMTtcbiAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCAhbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsIGxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gIH0pO1xuXG4gIGxpbmVzUmVzLmxpbmVzRGYub25TZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeF07XG4gICAgICBsaW5lLnNlbGVjdGVkID0gIWxpbmUuc2VsZWN0ZWQ7XG4gICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgIH1cbiAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICBpZiAobC5zZWxlY3RlZClcbiAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgIH0pO1xuICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgfSk7XG5cbiAgY29uc3QgbGluZXNEZkdyaWQgPSBsaW5lc1Jlcy5saW5lc0RmLnBsb3QuZ3JpZCgpLnNvcnQoWydhY3RfZGlmZiddLCBbZmFsc2VdKTtcblxuICBsaW5lc0RmR3JpZC5vbkNlbGxDbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIHpvb20gPSB0cnVlO1xuICB9KTtcblxuICBjb25zdCBsaXN0Q2xpZmZzTGluayA9IHVpLmJ1dHRvbihgJHtsaW5lc1Jlcy5saW5lc0RmLnJvd0NvdW50fSBjbGlmZnNgLCAoKSA9PiB7XG4gICAgY29uc3QgY2xpZmZzRGlhbG9nID0gdWkuZGlhbG9nKHt0aXRsZTogJ0FjdGl2aXR5IGNsaWZmcyd9KVxuICAgICAgLmFkZChsaW5lc0RmR3JpZC5yb290KVxuICAgICAgLnNob3coKTtcbiAgICBjbGlmZnNEaWFsb2cucm9vdC5pZCA9ICdjbGlmZnNfZGlhbG9nJztcbiAgfSk7XG4gIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgbGlzdENsaWZmc0xpbmsuc3R5bGUudG9wID0gJzEwcHgnO1xuICBsaXN0Q2xpZmZzTGluay5zdHlsZS5yaWdodCA9ICcxMHB4JztcbiAgc3Aucm9vdC5hcHBlbmQobGlzdENsaWZmc0xpbmspO1xuXG4gIGxldCB0aW1lcjogTm9kZUpTLlRpbWVvdXQ7XG4gIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIHRpbWVyID0gZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICAgIGlmIChsaW5lICYmIGRmLm1vdXNlT3ZlclJvd0lkeCA9PT0gLTEpIHtcbiAgICAgICAgaWYgKCF0b29sdGlwc1tsaW5lLmlkXSkge1xuICAgICAgICAgIGNvbnN0IGRyYXdUb29sdGlwUGFyYW1zID0ge1xuICAgICAgICAgICAgdG9vbHRpcHM6IHRvb2x0aXBzLFxuICAgICAgICAgICAgbGluZTogbGluZSxcbiAgICAgICAgICAgIGRmOiBkZixcbiAgICAgICAgICAgIHNlcUNvbDogc2VxQ29sLFxuICAgICAgICAgICAgYWN0aXZpdHk6IGFjdGl2aXRpZXMsXG4gICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgICAgIH1cbiAgICAgICAgICB0b29sdGlwRHJhd0Z1bmMoZHJhd1Rvb2x0aXBQYXJhbXMpO1xuICAgICAgICB9XG4gICAgICAgIHVpLnRvb2x0aXAuc2hvdyh0b29sdGlwc1tsaW5lLmlkXSwgZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG4gIH0pO1xuXG4gIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbihldmVudDogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGxpbmUgPSBjaGVja0N1cnNvck9uTGluZShldmVudCwgY2FudmFzLCBsaW5lc1Jlcy5saW5lcyk7XG4gICAgaWYgKGxpbmUgJiYgZGYubW91c2VPdmVyUm93SWR4ID09PSAtMSkge1xuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgbGluZS5zZWxlY3RlZCA9ICFsaW5lLnNlbGVjdGVkO1xuICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLnNlbGVjdGlvbi5zZXQobGluZS5pZCwgbGluZS5zZWxlY3RlZCk7XG5cbiAgICAgICAgaWYgKCFsaW5lLnNlbGVjdGVkKVxuICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuXG4gICAgICAgIGxpbmVzUmVzLmxpbmVzLmZvckVhY2goKGwpID0+IHtcbiAgICAgICAgICBpZiAobC5zZWxlY3RlZClcbiAgICAgICAgICAgIGwubW9scy5mb3JFYWNoKChtKSA9PiBkZi5zZWxlY3Rpb24uc2V0KG0sIHRydWUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ICE9PSBsaW5lLmlkKSB7XG4gICAgICAgICAgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ID0gbGluZS5pZDtcbiAgICAgICAgICBkZi5jdXJyZW50Um93SWR4ID0gbGluZS5tb2xzWzBdO1xuICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXQoMCwgIWxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0KDAsIGxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgc3Aub25FdmVudCgnZDQtYmVmb3JlLWRyYXctc2NlbmUnKVxuICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIGNvbnN0IGxpbmVzID0gcmVuZGVyTGluZXMoc3AsXG4gICAgICAgIGF4ZXNOYW1lc1swXSwgYXhlc05hbWVzWzFdLCBsaW5lc1Jlcywgc2FsaVZhbHMsIHNhbGlPcGFjaXR5Q29lZiwgc2FsaU1pbik7XG4gICAgICBpZiAoem9vbSkge1xuICAgICAgICBjb25zdCBjdXJyZW50TGluZSA9IGxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF07XG4gICAgICAgIHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgICAgY29uc3Qge3pvb21MZWZ0LCB6b29tUmlnaHQsIHpvb21Ub3AsIHpvb21Cb3R0b219ID0gZ2V0Wm9vbUNvb3JkaW5hdGVzKFxuICAgICAgICAgICAgc3Audmlld3BvcnQud2lkdGgsXG4gICAgICAgICAgICBzcC52aWV3cG9ydC5oZWlnaHQsXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1swXSksXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1sxXSwgY3VycmVudExpbmUubW9sc1swXSksXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1sxXSksXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1sxXSwgY3VycmVudExpbmUubW9sc1sxXSlcbiAgICAgICAgICApICAgICAgICBcbiAgICAgICAgICBzcC56b29tKHpvb21MZWZ0LFxuICAgICAgICAgICAgem9vbVRvcCxcbiAgICAgICAgICAgIHpvb21SaWdodCxcbiAgICAgICAgICAgIHpvb21Cb3R0b20pO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgICB6b29tID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgc3AuYWRkUHJvcGVydHkoJ3NpbWlsYXJpdHlMaW1pdCcsICdkb3VibGUnLCBvcHRTaW1pbGFyaXR5TGltaXQpO1xuICByZXR1cm4gc3A7XG59XG5cbmZ1bmN0aW9uIGdldFpvb21Db29yZGluYXRlcyhXMDogbnVtYmVyLCBIMDogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gIGNvbnN0IFcxID0gTWF0aC5hYnMoeDEgLSB4Mik7XG4gIGNvbnN0IEgxID0gTWF0aC5hYnMoeTEgLSB5Mik7XG4gIGNvbnN0IHNjYWxlVyA9IFcwIC8gVzE7XG4gIGNvbnN0IHNjYWxlSCA9IEgwIC8gSDE7XG4gIGNvbnN0IHNjYWxlID0gTWF0aC5taW4oc2NhbGVXLCBzY2FsZUgpO1xuICBjb25zdCBXMiA9IChXMCAvIHNjYWxlKSAqIDU7XG4gIGNvbnN0IEgyID0gKEgwIC8gc2NhbGUpICogNTtcbiAgY29uc3QgbGVmdCA9IHgxIDwgeDIgPyB4MSA6IHgyO1xuICBjb25zdCB0b3AgPSB5MSA+IHkyID8geTEgOiB5MjtcbiAgY29uc3Qgem9vbUxlZnQgPSAobGVmdCArIFcxIC8gMikgLSBXMiAvIDI7XG4gIGNvbnN0IHpvb21SaWdodCA9IHpvb21MZWZ0ICsgVzI7XG4gIGNvbnN0IHpvb21Ub3AgPSAodG9wIC0gSDEgLyAyKSArIEgyIC8gMjtcbiAgY29uc3Qgem9vbUJvdHRvbSA9IHpvb21Ub3AgLSBIMjtcbiAgcmV0dXJuIHt6b29tTGVmdDogem9vbUxlZnQsIHpvb21SaWdodDogem9vbVJpZ2h0LCB6b29tVG9wOiB6b29tVG9wLCB6b29tQm90dG9tOiB6b29tQm90dG9tfTtcbn1cblxuZnVuY3Rpb24gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQ6IGFueSwgY2FudmFzOiBhbnksIGxpbmVzOiBJTGluZVtdKTogSUxpbmUgfCBudWxsIHtcbiAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gIGNvbnN0IHkgPSBldmVudC5jbGllbnRZIC0gcmVjdC50b3A7XG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGNvbnN0IGRpc3QgPVxuICAgICAgTWF0aC5hYnMoTWF0aC5oeXBvdChsaW5lLmFbMF0gLSB4LCBsaW5lLmFbMV0gLSB5KSArXG4gICAgICBNYXRoLmh5cG90KGxpbmUuYlswXSAtIHgsIGxpbmUuYlsxXSAtIHkpIC0gTWF0aC5oeXBvdChsaW5lLmFbMF0gLSBsaW5lLmJbMF0sIGxpbmUuYVsxXSAtIGxpbmUuYlsxXSkpO1xuICAgIGlmIChkaXN0IDwgMilcbiAgICAgIHJldHVybiBsaW5lO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiByZW5kZXJMaW5lcyhzcDogREcuU2NhdHRlclBsb3RWaWV3ZXIsXG4gIHhBeGlzOiBzdHJpbmcsIHlBeGlzOiBzdHJpbmcsIGxpbmVzUmVzOiBJUmVuZGVyZWRMaW5lcywgc2FsaVZhbHM6IG51bWJlcltdLCBzYWxpT3BhY2l0eUNvZWY6IG51bWJlciwgc2FsaU1pbjogbnVtYmVyKTogSUxpbmUgW10ge1xuICBjb25zdCBsaW5lcyA9IGxpbmVzUmVzLmxpbmVzO1xuICBjb25zdCBjYW52YXMgPSAoc3AuZ2V0SW5mbygpIGFzIHtbaW5kZXg6IHN0cmluZ10gOiBhbnl9KVsnY2FudmFzJ107XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgY29uc3QgeCA9IHNwLmRhdGFGcmFtZSEuY29sdW1ucy5ieU5hbWUoeEF4aXMpO1xuICBjb25zdCB5ID0gc3AuZGF0YUZyYW1lIS5jb2x1bW5zLmJ5TmFtZSh5QXhpcyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwb2ludEZyb20gPSBzcC53b3JsZFRvU2NyZWVuKHguZ2V0KGxpbmVzW2ldLm1vbHNbMF0pLCB5LmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gICAgY29uc3QgcG9pbnRUbyA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1sxXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICBsaW5lc1tpXS5hID0gW3BvaW50RnJvbS54LCBwb2ludEZyb20ueV07XG4gICAgbGluZXNbaV0uYiA9IFtwb2ludFRvLngsIHBvaW50VG8ueV07XG4gICAgY29uc3QgbGluZSA9IG5ldyBQYXRoMkQoKTtcbiAgICBsaW5lLm1vdmVUbyhsaW5lc1tpXS5hWzBdLCBsaW5lc1tpXS5hWzFdKTtcbiAgICBjb25zdCBjb2xvciA9IGxpbmVzW2ldLnNlbGVjdGVkID8gJzI1NSwyNTUsMCcgOiAnMCwxMjgsMCc7XG4gICAgY29uc3Qgb3BhY2l0eSA9IHNhbGlWYWxzW2ldID09PSBJbmZpbml0eSA/IDEgOiAwLjIgKyAoc2FsaVZhbHNbaV0gLSBzYWxpTWluKSpzYWxpT3BhY2l0eUNvZWY7XG4gICAgY3R4LnN0cm9rZVN0eWxlID0gYHJnYmEoJHtjb2xvcn0sJHtvcGFjaXR5fSlgO1xuICAgIGN0eC5saW5lV2lkdGggPSBsaW5lc1tpXS5pZCA9PT0gbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ID8gMyA6IDE7XG4gICAgbGluZS5saW5lVG8obGluZXNbaV0uYlswXSwgbGluZXNbaV0uYlsxXSk7XG4gICAgY3R4LnN0cm9rZShsaW5lKTtcbiAgfVxuICByZXR1cm4gbGluZXM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmVzKFxuICBuMTogbnVtYmVyW10sIFxuICBuMjogbnVtYmVyW10sIFxuICBzZXE6IERHLkNvbHVtbiwgXG4gIGFjdGl2aXRpZXM6IERHLkNvbHVtbiwgXG4gIHNhbGlWYWxzOiBudW1iZXJbXSxcbiAgc2VtVHlwZTogc3RyaW5nLFxuICB1bml0czogc3RyaW5nKSA6IElSZW5kZXJlZExpbmVzIHtcbiAgY29uc3QgbGluZXM6IElMaW5lW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG51bTEgPSBuMVtpXTtcbiAgICBjb25zdCBudW0yID0gbjJbaV07XG4gICAgbGluZXMucHVzaCh7aWQ6IGksIG1vbHM6IFtudW0xLCBudW0yXSwgc2VsZWN0ZWQ6IGZhbHNlLCBhOiBbXSwgYjogW119KTtcbiAgfVxuICBjb25zdCBsaW5lc0RmID0gREcuRGF0YUZyYW1lLmNyZWF0ZShsaW5lcy5sZW5ndGgpO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3U3RyaW5nKCcxX3NlcScpLmluaXQoKGk6IG51bWJlcikgPT4gc2VxLmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzJfc2VxJykuaW5pdCgoaTogbnVtYmVyKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdhY3RfZGlmZicpXG4gICAgLmluaXQoKGk6IG51bWJlcikgPT4gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQobGluZXNbaV0ubW9sc1swXSkgLSBhY3Rpdml0aWVzLmdldChsaW5lc1tpXS5tb2xzWzFdKSkpO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3SW50KCdsaW5lX2luZGV4JykuaW5pdCgoaTogbnVtYmVyKSA9PiBpKTtcbiAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdzYWxpJykuaW5pdCgoaTogbnVtYmVyKSA9PiBzYWxpVmFsc1tpXSk7XG4gIGxpbmVzRGYuY29sKCcxX3NlcScpIS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gIGxpbmVzRGYuY29sKCcyX3NlcScpIS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gIGxpbmVzRGYuY29sKCcxX3NlcScpIS5zZW1UeXBlID0gc2VtVHlwZTtcbiAgbGluZXNEZi5jb2woJzJfc2VxJykhLnNlbVR5cGUgPSBzZW1UeXBlO1xuICByZXR1cm4ge2xpbmVzLCBsaW5lc0RmfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc01hcml4KFxuICAgIGRpbTogbnVtYmVyLCBcbiAgICBzZXFDb2w6IERHLkNvbHVtbiwgXG4gICAgZGZTZXE6IERHLkRhdGFGcmFtZSwgXG4gICAgc2ltQXJyOiBERy5Db2x1bW5bXSxcbiAgICBzaW1GdW5jOiAoY29sOiBERy5Db2x1bW4sIG1vbDogc3RyaW5nKSA9PiBQcm9taXNlPERHLkNvbHVtbiB8IG51bGw+XG4gICAgKVxuICA6IFByb21pc2U8REcuQ29sdW1uW10+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgY29uc3QgbW9sID0gc2VxQ29sLmdldChpKTtcbiAgICBkZlNlcS5yb3dzLnJlbW92ZUF0KDAsIDEsIGZhbHNlKTtcbiAgICBzaW1BcnJbaV0gPSAoYXdhaXQgc2ltRnVuYyhkZlNlcS5jb2woJ3NlcScpISwgbW9sKSkhO1xuICB9XG4gIHJldHVybiBzaW1BcnI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeEZyb21EaXN0YW5jZXMoZGltOiBudW1iZXIsIGRpc3RhbmNlczogTWF0cml4LCBzaW1BcnI6IERHLkNvbHVtbltdKVxuICA6IERHLkNvbHVtbltdIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW0gLSAxOyArK2kpIHtcbiAgICBjb25zdCBzaW1pbGFyaXR5QXJyID0gW107XG4gICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgZGltOyArK2opXG4gICAgICBzaW1pbGFyaXR5QXJyLnB1c2goZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZXNbaV1bal0pKTtcbiAgICBzaW1BcnJbaV0gPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSgnc2ltaWxhcml0eScsIEZsb2F0MzJBcnJheS5mcm9tKHNpbWlsYXJpdHlBcnIpKTtcbiAgfVxuICByZXR1cm4gc2ltQXJyO1xufSJdfQ==
2219
2230
 
2220
2231
  /***/ }),
2221
2232
 
@@ -3972,6 +3983,10 @@ function getPalleteByType(paletteType) {
3972
3983
  return _datagrok_libraries_bio_src_aminoacids__WEBPACK_IMPORTED_MODULE_2__.AminoacidsPalettes.GrokGroups;
3973
3984
  case 'NT':
3974
3985
  return _datagrok_libraries_bio_src_nucleotides__WEBPACK_IMPORTED_MODULE_3__.NucleotidesPalettes.Chromatogram;
3986
+ case 'DNA':
3987
+ return _datagrok_libraries_bio_src_nucleotides__WEBPACK_IMPORTED_MODULE_3__.NucleotidesPalettes.Chromatogram;
3988
+ case 'RNA':
3989
+ return _datagrok_libraries_bio_src_nucleotides__WEBPACK_IMPORTED_MODULE_3__.NucleotidesPalettes.Chromatogram;
3975
3990
  // other
3976
3991
  default:
3977
3992
  return _datagrok_libraries_bio_src_unknown__WEBPACK_IMPORTED_MODULE_4__.UnknownSeqPalettes.Color;
@@ -4002,13 +4017,14 @@ function processSequence(subParts) {
4002
4017
  * @param {string} [color=undefinedColor] String color.
4003
4018
  * @param {number} [pivot=0] Pirvot.
4004
4019
  * @param {boolean} [left=false] Is left aligned.
4005
- * @param {boolean} [hideMod=false] Hide amino acid redidue modifications.
4006
4020
  * @param {number} [transparencyRate=0.0] Transparency rate where 1.0 is fully transparent
4021
+ * @param {string} [separator=''] Is separator for sequence.
4022
+ * @param {boolean} [last=false] Is checker if element last or not.
4007
4023
  * @return {number} x coordinate to start printing at.
4008
4024
  */
4009
- function printLeftOrCentered(x, y, w, h, g, s, color = undefinedColor, pivot = 0, left = false, hideMod = false, transparencyRate = 1.0, separator = '', last = false) {
4025
+ function printLeftOrCentered(x, y, w, h, g, s, color = undefinedColor, pivot = 0, left = false, transparencyRate = 1.0, separator = '', last = false) {
4010
4026
  g.textAlign = 'start';
4011
- let colorPart = s.substring(0);
4027
+ const colorPart = s.substring(0);
4012
4028
  let grayPart = separator;
4013
4029
  if (last) {
4014
4030
  grayPart = '';
@@ -4053,31 +4069,31 @@ class MacromoleculeSequenceCellRenderer extends datagrok_api_dg__WEBPACK_IMPORTE
4053
4069
  */
4054
4070
  render(g, x, y, w, h, gridCell, cellStyle) {
4055
4071
  var _a, _b;
4056
- const grid = gridCell.grid;
4072
+ const grid = gridCell.gridRow !== -1 ? gridCell.grid : undefined;
4057
4073
  const cell = gridCell.cell;
4058
4074
  const tag = gridCell.cell.column.getTag(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.TAGS.UNITS);
4059
4075
  if (tag === 'HELM') {
4060
- let host = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_6__.div([], { style: { width: `${w}px`, height: `${h}px` } });
4076
+ const host = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_6__.div([], { style: { width: `${w}px`, height: `${h}px` } });
4061
4077
  host.setAttribute('dataformat', 'helm');
4062
4078
  host.setAttribute('data', gridCell.cell.value);
4063
4079
  gridCell.element = host;
4064
4080
  //@ts-ignore
4065
- var canvas = new JSDraw2.Editor(host, { width: w, height: h, skin: "w8", viewonly: true });
4066
- var formula = canvas.getFormula(true);
4081
+ const canvas = new JSDraw2.Editor(host, { width: w, height: h, skin: 'w8', viewonly: true });
4082
+ const formula = canvas.getFormula(true);
4067
4083
  if (!formula) {
4068
4084
  gridCell.element = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_6__.divText(gridCell.cell.value, { style: { color: 'red' } });
4069
4085
  }
4070
4086
  else {
4071
4087
  gridCell.element = host;
4072
- var molWeight = Math.round(canvas.getMolWeight() * 100) / 100;
4073
- var coef = Math.round(canvas.getExtinctionCoefficient(true) * 100) / 100;
4074
- var molfile = canvas.getMolfile();
4075
- var result = formula + ', ' + molWeight + ', ' + coef + ', ' + molfile;
4088
+ const molWeight = Math.round(canvas.getMolWeight() * 100) / 100;
4089
+ const coef = Math.round(canvas.getExtinctionCoefficient(true) * 100) / 100;
4090
+ const molfile = canvas.getMolfile();
4091
+ const result = formula + ', ' + molWeight + ', ' + coef + ', ' + molfile;
4076
4092
  lru.set(gridCell.cell.value, result);
4077
4093
  }
4078
4094
  }
4079
4095
  else {
4080
- const [type, subtype, paletteType] = gridCell.cell.column.getTag(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.TAGS.UNITS).split(":");
4096
+ const [type, subtype, paletteType] = gridCell.cell.column.getTag(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.TAGS.UNITS).split(':');
4081
4097
  w = grid ? Math.min(grid.canvas.width - x, w) : g.canvas.width - x;
4082
4098
  g.save();
4083
4099
  g.beginPath();
@@ -4090,10 +4106,9 @@ class MacromoleculeSequenceCellRenderer extends datagrok_api_dg__WEBPACK_IMPORTE
4090
4106
  const units = gridCell.cell.column.getTag(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.TAGS.UNITS);
4091
4107
  const palette = getPalleteByType(paletteType);
4092
4108
  const separator = (_b = gridCell.cell.column.getTag('separator')) !== null && _b !== void 0 ? _b : '';
4093
- const splitterFunc = _datagrok_libraries_bio_src_viewers_web_logo__WEBPACK_IMPORTED_MODULE_5__.WebLogo.getSplitter(units, gridCell.cell.column.getTag('separator')); // splitter,
4109
+ const splitterFunc = _datagrok_libraries_bio_src_viewers_web_logo__WEBPACK_IMPORTED_MODULE_5__.WebLogo.getSplitter(units, gridCell.cell.column.getTag('separator'));
4094
4110
  const subParts = splitterFunc(cell.value);
4095
4111
  // console.log(subParts);
4096
- const textSize = g.measureText(subParts.join(''));
4097
4112
  let x1 = x;
4098
4113
  let color = undefinedColor;
4099
4114
  subParts.forEach((amino, index) => {
@@ -4103,7 +4118,7 @@ class MacromoleculeSequenceCellRenderer extends datagrok_api_dg__WEBPACK_IMPORTE
4103
4118
  if (index === subParts.length - 1) {
4104
4119
  last = true;
4105
4120
  }
4106
- x1 = printLeftOrCentered(x1, y, w, h, g, amino, color, 0, true, false, 1.0, separator, last);
4121
+ x1 = printLeftOrCentered(x1, y, w, h, g, amino, color, 0, true, 1.0, separator, last);
4107
4122
  });
4108
4123
  g.restore();
4109
4124
  }
@@ -4370,13 +4385,33 @@ __webpack_require__.r(__webpack_exports__);
4370
4385
  /** Class for handling conversion of notation systems in Macromolecule columns */
4371
4386
  class NotationConverter {
4372
4387
  constructor(col) {
4388
+ this._defaultGapSymbolsDict = {
4389
+ helm: '*',
4390
+ separator: '',
4391
+ fasta: '-',
4392
+ };
4373
4393
  this._sourceColumn = col;
4374
- this._sourceUnits = this._sourceColumn.tags[datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__.TAGS.UNITS];
4375
- this._sourceNotation = this.determineSourceNotation();
4394
+ const units = this._sourceColumn.tags[datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__.TAGS.UNITS];
4395
+ if (units !== null)
4396
+ this._sourceUnits = units;
4397
+ else
4398
+ throw new Error('Units are not specified in column');
4399
+ this._sourceNotation = this.getSourceNotation();
4400
+ this._defaultGapSymbol = (this.isFasta()) ? this._defaultGapSymbolsDict.fasta :
4401
+ (this.isHelm()) ? this._defaultGapSymbolsDict.helm :
4402
+ this._defaultGapSymbolsDict.separator;
4376
4403
  }
4377
4404
  get sourceUnits() { return this._sourceUnits; }
4378
4405
  get sourceColumn() { return this._sourceColumn; }
4379
4406
  get sourceNotation() { return this._sourceNotation; }
4407
+ get defaultGapSymbol() { return this._defaultGapSymbol; }
4408
+ get separator() {
4409
+ const separator = this.sourceColumn.getTag('separator');
4410
+ if (separator !== null)
4411
+ return separator;
4412
+ else
4413
+ throw new Error('Separator not set');
4414
+ }
4380
4415
  isFasta() { return this.sourceNotation === "FASTA" /* NOTATION.FASTA */; }
4381
4416
  isSeparator() { return this.sourceNotation === "SEPARATOR" /* NOTATION.SEPARATOR */; }
4382
4417
  isHelm() { return this.sourceNotation === "HELM" /* NOTATION.HELM */; }
@@ -4390,33 +4425,15 @@ class NotationConverter {
4390
4425
  /**
4391
4426
  * @return {NOTATION} Notation associated with the units type
4392
4427
  */
4393
- determineSourceNotation() {
4428
+ getSourceNotation() {
4394
4429
  if (this.sourceUnits.toLowerCase().startsWith('fasta'))
4395
4430
  return "FASTA" /* NOTATION.FASTA */;
4396
4431
  else if (this.sourceUnits.toLowerCase().startsWith('separator'))
4397
4432
  return "SEPARATOR" /* NOTATION.SEPARATOR */;
4398
- else
4399
- // TODO: handle possible exceptions
4433
+ else if (this.sourceUnits.toLowerCase().startsWith('helm'))
4400
4434
  return "HELM" /* NOTATION.HELM */;
4401
- }
4402
- /**
4403
- * Determine the separator used in SEPARATOR column
4404
- *
4405
- * @return {string} The detected separator
4406
- */
4407
- determineSeparator() {
4408
- // TODO: figure out how to determine the separator efficiently
4409
- const col = this.sourceColumn;
4410
- let i = 0;
4411
- const re = /[^a-z]/;
4412
- while (i < col.length) {
4413
- const molecule = col.get(i);
4414
- const foundSeparator = molecule.toLowerCase().match(re);
4415
- if (foundSeparator)
4416
- return foundSeparator[0];
4417
- i++;
4418
- }
4419
- throw new Error('No separators found');
4435
+ else
4436
+ throw new Error('The column has units that do not correspond to any notation');
4420
4437
  }
4421
4438
  /**
4422
4439
  * Create a new empty column of the specified notation type and the same
@@ -4432,11 +4449,13 @@ class NotationConverter {
4432
4449
  const newColName = col.dataFrame.columns.getUnusedName(name);
4433
4450
  // dummy code
4434
4451
  const newColumn = datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__.Column.fromList('string', newColName, new Array(len).fill(''));
4435
- newColumn.semType = 'Macromolecule';
4452
+ newColumn.semType = datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__.SEMTYPE.MACROMOLECULE;
4436
4453
  newColumn.setTag(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__.TAGS.UNITS, this.sourceUnits.replace(this.sourceNotation.toLowerCase().toString(), targetNotation.toLowerCase().toString()));
4437
4454
  // TODO: specify cell renderers for all cases
4438
4455
  if (this.toFasta(targetNotation)) {
4439
- newColumn.setTag(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__.TAGS.CELL_RENDERER, 'Macromolecule');
4456
+ newColumn.setTag(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__.TAGS.CELL_RENDERER,
4457
+ // TODO: replace by the enumeration value
4458
+ 'Macromolecule');
4440
4459
  }
4441
4460
  return newColumn;
4442
4461
  }
@@ -4463,16 +4482,12 @@ class NotationConverter {
4463
4482
  });
4464
4483
  return newColumn;
4465
4484
  }
4466
- /**
4467
- * Convert a Macromolecule column from FASTA to HELM
4468
- *
4469
- * @param {string} fastaGapSymbol Optional fasta gap symbol
4470
- * @param {string} helmGapSymbol Optional helm gap symbol
4471
- * @return {DG.Column} A new column in HELM notation
4472
- */
4473
- convertFastaToHelm(fastaGapSymbol = '-', helmGapSymbol = '*') {
4474
- // a function splitting FASTA sequence into an array of monomers
4475
- const splitterAsFasta = _datagrok_libraries_bio_src_viewers_web_logo__WEBPACK_IMPORTED_MODULE_1__.WebLogo.splitterAsFasta;
4485
+ convertToHelm(sourceGapSymbol = null) {
4486
+ if (sourceGapSymbol === null)
4487
+ sourceGapSymbol = this.defaultGapSymbol;
4488
+ // A function splitting a sequence into an array of monomers according to
4489
+ // its notation
4490
+ const splitter = _datagrok_libraries_bio_src_viewers_web_logo__WEBPACK_IMPORTED_MODULE_1__.WebLogo.getSplitterForColumn(this.sourceColumn);
4476
4491
  const prefix = (this.isDna()) ? 'DNA1{' :
4477
4492
  (this.isRna()) ? 'RNA1{' :
4478
4493
  (this.isPeptide()) ? 'PEPTIDE1{' :
@@ -4486,20 +4501,17 @@ class NotationConverter {
4486
4501
  const newColumn = this.getNewColumn("HELM" /* NOTATION.HELM */);
4487
4502
  // assign the values to the empty column
4488
4503
  newColumn.init((idx) => {
4489
- const fastaPolymer = this.sourceColumn.get(idx);
4490
- const fastaMonomersArray = splitterAsFasta(fastaPolymer);
4504
+ const sourcePolymer = this.sourceColumn.get(idx);
4505
+ const sourceMonomersArray = splitter(sourcePolymer);
4491
4506
  const helmArray = [prefix];
4492
4507
  let firstIteration = true;
4493
- for (let i = 0; i < fastaMonomersArray.length; i++) {
4494
- if (fastaMonomersArray[i] === fastaGapSymbol) {
4495
- // TODO: verify the correctness of gap symbols handling
4496
- helmArray.push(helmGapSymbol);
4497
- }
4498
- else {
4499
- const dot = firstIteration ? '' : '.';
4500
- const item = [dot, leftWrapper, fastaMonomersArray[i], rightWrapper];
4501
- helmArray.push(item.join(''));
4502
- }
4508
+ for (let i = 0; i < sourceMonomersArray.length; i++) {
4509
+ const dot = firstIteration ? '' : '.';
4510
+ let token = sourceMonomersArray[i];
4511
+ if (token === sourceGapSymbol)
4512
+ token = this._defaultGapSymbolsDict.helm;
4513
+ const item = [dot, leftWrapper, token, rightWrapper];
4514
+ helmArray.push(item.join(''));
4503
4515
  firstIteration = false;
4504
4516
  }
4505
4517
  helmArray.push(postfix);
@@ -4527,11 +4539,11 @@ class NotationConverter {
4527
4539
  // * NO, they can be multi-characters
4528
4540
  // conversion
4529
4541
  // * consider automatic determining the separator
4530
- // if (separator === null)
4531
- // separator = this.determineSeparator();
4542
+ if (separator === null)
4543
+ separator = this.separator;
4532
4544
  // a function splitting FASTA sequence into an array of monomers
4533
4545
  //const splitterAsSeparator = WebLogo.getSplitterWithSeparator(separator);
4534
- const splitter = _datagrok_libraries_bio_src_viewers_web_logo__WEBPACK_IMPORTED_MODULE_1__.WebLogo.getSplitterForColumn(this._sourceColumn);
4546
+ const splitter = _datagrok_libraries_bio_src_viewers_web_logo__WEBPACK_IMPORTED_MODULE_1__.WebLogo.getSplitterForColumn(this.sourceColumn);
4535
4547
  const newColumn = this.getNewColumn("FASTA" /* NOTATION.FASTA */);
4536
4548
  // assign the values to the empty column
4537
4549
  newColumn.init((idx) => {
@@ -4557,43 +4569,6 @@ class NotationConverter {
4557
4569
  });
4558
4570
  return newColumn;
4559
4571
  }
4560
- convertSeparatorToHelm(fastaGapSymbol = '-', helmGapSymbol = '*') {
4561
- // a function splitting FASTA sequence into an array of monomers
4562
- const splitter = _datagrok_libraries_bio_src_viewers_web_logo__WEBPACK_IMPORTED_MODULE_1__.WebLogo.getSplitterForColumn(this._sourceColumn);
4563
- const prefix = (this.isDna()) ? 'DNA1{' :
4564
- (this.isRna()) ? 'RNA1{' :
4565
- (this.isPeptide()) ? 'PEPTIDE1{' :
4566
- 'Unknown'; // this case should be handled as exceptional
4567
- if (prefix === 'Unknown')
4568
- throw new Error('Neither peptide, nor nucleotide');
4569
- const postfix = '}$$$';
4570
- const leftWrapper = (this.isDna()) ? 'D(' :
4571
- (this.isRna()) ? 'R(' : ''; // no wrapper for peptides
4572
- const rightWrapper = (this.isDna() || this.isRna()) ? ')P' : ''; // no wrapper for peptides
4573
- const newColumn = this.getNewColumn("HELM" /* NOTATION.HELM */);
4574
- // assign the values to the empty column
4575
- newColumn.init((idx) => {
4576
- const fastaPolymer = this.sourceColumn.get(idx);
4577
- const fastaMonomersArray = splitter(fastaPolymer);
4578
- const helmArray = [prefix];
4579
- let firstIteration = true;
4580
- for (let i = 0; i < fastaMonomersArray.length; i++) {
4581
- if (fastaMonomersArray[i] === fastaGapSymbol) {
4582
- // TODO: verify the correctness of gap symbols handling
4583
- helmArray.push(helmGapSymbol);
4584
- }
4585
- else {
4586
- const dot = firstIteration ? '' : '.';
4587
- const item = [dot, leftWrapper, fastaMonomersArray[i], rightWrapper];
4588
- helmArray.push(item.join(''));
4589
- }
4590
- firstIteration = false;
4591
- }
4592
- helmArray.push(postfix);
4593
- return helmArray.join('');
4594
- });
4595
- return newColumn;
4596
- }
4597
4572
  convertHelmToFasta() {
4598
4573
  // TODO: implementation
4599
4574
  return this.getNewColumn("FASTA" /* NOTATION.FASTA */);
@@ -4616,12 +4591,10 @@ class NotationConverter {
4616
4591
  throw new Error('Target separator is not specified');
4617
4592
  if (this.isFasta() && this.toSeparator(targetNotation) && tgtSeparator !== null)
4618
4593
  return this.convertFastaToSeparator(tgtSeparator);
4619
- else if (this.isFasta() && this.toHelm(targetNotation))
4620
- return this.convertFastaToHelm();
4594
+ else if ((this.isFasta() || this.isSeparator()) && this.toHelm(targetNotation))
4595
+ return this.convertToHelm();
4621
4596
  else if (this.isSeparator() && this.toFasta(targetNotation))
4622
4597
  return this.convertSeparatorToFasta(tgtSeparator);
4623
- else if (this.isSeparator() && this.toHelm(targetNotation))
4624
- return this.convertSeparatorToHelm();
4625
4598
  else if (this.isHelm() && this.toFasta(targetNotation))
4626
4599
  return this.convertHelmToFasta();
4627
4600
  else
@@ -10747,6 +10720,20 @@ function toAtomicLevel(df, macroMolecule) {
10747
10720
  }
10748
10721
  if (!checkInputColumn(macroMolecule, 'To Atomic Level'))
10749
10722
  return;
10723
+ let currentView;
10724
+ for (let view of datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.tableViews) {
10725
+ if (df.name === view.name) {
10726
+ currentView = view;
10727
+ }
10728
+ }
10729
+ const file = yield _package.files.readAsText('tests/sar-small.csv');
10730
+ const df2 = datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.DataFrame.fromCsv(file);
10731
+ const v = datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.addTableView(df2);
10732
+ setTimeout(() => {
10733
+ datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.closeTable(df2);
10734
+ v.close();
10735
+ datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.v = currentView;
10736
+ }, 100);
10750
10737
  const monomersLibFile = yield _package.files.readAsText(_utils_utils__WEBPACK_IMPORTED_MODULE_10__.HELM_CORE_LIB_FILENAME);
10751
10738
  const monomersLibObject = JSON.parse(monomersLibFile);
10752
10739
  const atomicCodes = (0,_utils_utils__WEBPACK_IMPORTED_MODULE_10__.getMolfilesFromSeq)(macroMolecule, monomersLibObject);
@@ -10754,7 +10741,7 @@ function toAtomicLevel(df, macroMolecule) {
10754
10741
  const col = datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.Column.fromStrings('regenerated', result);
10755
10742
  col.semType = datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.SEMTYPE.MOLECULE;
10756
10743
  col.tags[datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.TAGS.UNITS] = 'molblock';
10757
- df.columns.add(col);
10744
+ df.columns.add(col, true);
10758
10745
  });
10759
10746
  }
10760
10747
  //top-menu: Bio | MSA...
@@ -10875,4 +10862,4 @@ function convertPanel(col) {
10875
10862
  bio = __webpack_exports__;
10876
10863
  /******/ })()
10877
10864
  ;
10878
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0RBQVM7QUFDN0I7QUFDQSxvQkFBb0IsWUFBWTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNB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Ozs7O0FDdEZuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4Qix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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STtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFLGVBQWU7QUFDdkY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFLGVBQWU7QUFDM0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLGVBQWU7QUFDekY7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsS0FBSyxFQUFFLEVBR1Y7O0FBRVY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxLQUFLLEVBQUUsRUFHVjs7QUFFVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEUsZUFBZTtBQUMzRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyRkFBMkYsZUFBZTtBQUMxRztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBLDJFQUEyRSxlQUFlO0FBQzFGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBLDJFQUEyRSxlQUFlO0FBQzFGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBLCtGQUErRixlQUFlO0FBQzlHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkRBQTZELHNFQUFzRTtBQUNuSTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFD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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFROztBQUVSO0FBQ0E7QUFDQSxxRUFBcUU7O0FBRXJFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQyxtQkFBbUI7QUFDckQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsZ0JBQWdCO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFQTtBQUNBLGNBQWM7QUFDZDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdEQUFnRCxRQUFRO0FBQ3hEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdEQUFnRCxRQUFRO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdEQUFnRCxRQUFRO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdEQUFnRCxRQUFRO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw2QkFBNkIsY0FBYyxLQUFLLGdDQUFtQjs7QUFFaEcsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixzQkFBc0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7OztBQUc5QixPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsaUNBQW1COztBQUVuRCxvQkFBb0IsV0FBVyxpQ0FBbUI7O0FBRWxELE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5ELENBQUMsaUNBQW1CO0FBQ3BCLGtCQUFrQixpQ0FBbUI7O0FBRXJDLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5EO0FBQ0E7QUFDQSxzQkFBc0IsaUNBQW1CO0FBQ3pDLHNCQUFzQixpQ0FBbUI7QUFDekMsc0JBQXNCLGlDQUFtQjtBQUN6QyxzQkFBc0IsaUNBQW1CO0FBQ3pDLHNCQUFzQixpQ0FBbUI7QUFDekMsc0JBQXNCLGlDQUFtQjtBQUN6QyxzQkFBc0IsaUNBQW1CO0FBQ3pDLHNCQUFzQixpQ0FBbUI7QUFDekMsc0JBQXNCLGlDQUFtQjtBQUN6QyxzQkFBc0IsaUNBQW1CO0FBQ3pDLHNCQUFzQixpQ0FBbUI7QUFDekMsc0JBQXNCLGlDQUFtQjtBQUN6QyxzQkFBc0IsaUNBQW1CO0FBQ3pDLHNCQUFzQixpQ0FBbUI7QUFDekMsc0JBQXNCLGlDQUFtQjtBQUN6QyxzQkFBc0IsaUNBQW1CO0FBQ3pDLHNCQUFzQixpQ0FBbUI7QUFDekMsc0JBQXNCLGlDQUFtQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QixzQkFBc0IsMkJBQTJCLFNBQVM7QUFDMUQsSUFBSTtBQUNKLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0RBQStEO0FBQy9EO0FBQ0EsT0FBTztBQUNQO0FBQ0EsdUJBQXVCLGlDQUFpQztBQUN4RCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsaUNBQW1CO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osMEJBQTBCLGdCQUFnQjtBQUMxQywwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSx3QkFBd0IsZ0JBQWdCOztBQUV4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5ELGlCQUFpQixpQ0FBbUI7QUFDcEMsaUJBQWlCLGlDQUFtQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5EO0FBQ0EsbUJBQW1CO0FBQ25CLGlCQUFpQixpQ0FBbUI7QUFDcEMsaUJBQWlCLGlDQUFtQjs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5EO0FBQ0EsU0FBUyxpQ0FBbUI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5ELG9CQUFvQixXQUFXLGlDQUFtQjs7QUFFbEQsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGlDQUFtQjs7QUFFbkQsU0FBUyxpQ0FBbUI7QUFDNUI7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5ELG9CQUFvQixXQUFXLGlDQUFtQjs7QUFFbEQsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGlDQUFtQjs7QUFFbkQsQ0FBQyxpQ0FBbUI7QUFDcEIsQ0FBQyxpQ0FBbUI7QUFDcEIsQ0FBQyxpQ0FBbUI7QUFDcEIsQ0FBQyxpQ0FBbUI7QUFDcEIsa0JBQWtCLGlDQUFtQjs7QUFFckMsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGlDQUFtQjs7QUFFbkQ7QUFDQSxrQkFBa0IsaUNBQW1CO0FBQ3JDLGtCQUFrQixpQ0FBbUI7QUFDckMsa0JBQWtCLGlDQUFtQjtBQUNyQyxrQkFBa0IsaUNBQW1CO0FBQ3JDLGtCQUFrQixpQ0FBbUI7QUFDckMsa0JBQWtCLGlDQUFtQjtBQUNyQyxrQkFBa0IsaUNBQW1CO0FBQ3JDLGtCQUFrQixpQ0FBbUI7QUFDckMsa0JBQWtCLGlDQUFtQjtBQUNyQyxrQkFBa0IsaUNBQW1CO0FBQ3JDLGtCQUFrQixpQ0FBbUI7QUFDckMsa0JBQWtCLGlDQUFtQjtBQUNyQyxrQkFBa0IsaUNBQW1CO0FBQ3JDLGtCQUFrQixpQ0FBbUI7QUFDckMsa0JBQWtCLGlDQUFtQjtBQUNyQyxrQkFBa0IsaUNBQW1CO0FBQ3JDLGtCQUFrQixpQ0FBbUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsY0FBYyxXQUFXO0FBQ3BFO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpQ0FBbUI7QUFDcEM7QUFDQSw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSyxVQUFVO0FBQ2Y7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsb0JBQW9CLGdDQUFnQztBQUNwRCxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVCxNQUFNO0FBQ04sSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHNCQUFzQjtBQUM5QztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLG1CQUFtQixvQkFBb0IsTUFBTTtBQUM3QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHLGlDQUFtQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBLDhDQUE4QyxXQUFXO0FBQ3pELENBQUMsaUNBQW1CO0FBQ3BCO0FBQ0EsbUJBQW1CLGlDQUFtQjs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxTQUFTO0FBQzlDO0FBQ0EsRUFBRTtBQUNGLHVDQUF1QyxpQ0FBbUI7QUFDMUQsb0NBQW9DO0FBQ3BDLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0EsTUFBTTtBQUNOLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsTUFBTTtBQUNOO0FBQ0EsRUFBRTs7QUFFRixPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsaUNBQW1COztBQUVuRCxtQkFBbUIsaUNBQW1CO0FBQ3RDLG1CQUFtQixpQ0FBbUI7QUFDdEMsbUJBQW1CLGlDQUFtQjtBQUN0QyxtQkFBbUIsaUNBQW1CO0FBQ3RDLG1CQUFtQixpQ0FBbUI7QUFDdEMsbUJBQW1CLGlDQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRSxnQkFBZ0I7QUFDbEY7QUFDQSxLQUFLLDJDQUEyQyxnQ0FBZ0M7QUFDaEY7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5EO0FBQ0E7QUFDQSxnQkFBZ0IsaUNBQW1CO0FBQ25DLGdCQUFnQixpQ0FBbUI7QUFDbkMsZ0JBQWdCLGlDQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQSxlQUFlLGlDQUFtQjtBQUNsQztBQUNBO0FBQ0EsU0FBUyxVQUFVO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sR0FBRztBQUNUO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5EO0FBQ0EsZUFBZSxpQ0FBbUI7QUFDbEMsZUFBZSxpQ0FBbUI7QUFDbEM7QUFDQSxNQUFNLGlDQUFtQjtBQUN6QjtBQUNBLHNCQUFzQjtBQUN0QixJQUFJO0FBQ0o7O0FBRUEsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGlDQUFtQjs7QUFFbkQsaUJBQWlCLGlDQUFtQjtBQUNwQyxpQkFBaUIsaUNBQW1CO0FBQ3BDO0FBQ0E7QUFDQSxpQkFBaUIsaUNBQW1CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNDQUFzQyxvQkFBb0IsR0FBRztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGlDQUFtQjs7QUFFbkQ7QUFDQSwwQkFBMEIsaUNBQW1CO0FBQzdDLDBCQUEwQixpQ0FBbUI7QUFDN0MsMEJBQTBCLGlDQUFtQjtBQUM3QywwQkFBMEIsaUNBQW1CO0FBQzdDLDBCQUEwQixpQ0FBbUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGlDQUFtQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsaUNBQW1COztBQUVuRCxrQkFBa0IsaUNBQW1COztBQUVyQyxPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsaUNBQW1COztBQUVuRCxnQkFBZ0IsaUNBQW1CO0FBQ25DLGdCQUFnQixpQ0FBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsaUNBQW1COztBQUVuRCxjQUFjLGlDQUFtQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsaUNBQW1COztBQUVuRCxvQkFBb0IsV0FBVyxpQ0FBbUI7O0FBRWxELE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5ELENBQUMsaUNBQW1CO0FBQ3BCLGtCQUFrQixpQ0FBbUI7O0FBRXJDLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5EO0FBQ0EsZ0JBQWdCLGlDQUFtQjs7QUFFbkMsQ0FBQyxpQ0FBbUI7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRixPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsaUNBQW1COztBQUVuRDtBQUNBO0FBQ0EsY0FBYyxpQ0FBbUI7QUFDakMsZUFBZSxpQ0FBbUIsaUJBQWlCO0FBQ25EO0FBQ0E7QUFDQSwwQkFBMEIsaUNBQW1CLGlCQUFpQixRQUFRO0FBQ3RFOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5ELG9CQUFvQixXQUFXLGlDQUFtQjs7QUFFbEQsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGlDQUFtQjs7QUFFbkQsQ0FBQyxpQ0FBbUI7QUFDcEIsQ0FBQyxpQ0FBbUI7QUFDcEIsQ0FBQyxpQ0FBbUI7QUFDcEIsQ0FBQyxpQ0FBbUI7QUFDcEIsQ0FBQyxpQ0FBbUI7QUFDcEIsa0JBQWtCLGlDQUFtQjs7QUFFckMsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGlDQUFtQjs7QUFFbkQ7QUFDQSxjQUFjLGlDQUFtQjs7QUFFakM7QUFDQSxDQUFDLGlDQUFtQjtBQUNwQiwwQkFBMEI7QUFDMUIsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRixPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsaUNBQW1COztBQUVuRDtBQUNBLG9CQUFvQixpQ0FBbUI7QUFDdkMsb0JBQW9CLGlDQUFtQjtBQUN2QyxvQkFBb0IsaUNBQW1CO0FBQ3ZDLG9CQUFvQixpQ0FBbUI7QUFDdkMsb0JBQW9CLGlDQUFtQjtBQUN2QyxvQkFBb0IsaUNBQW1CO0FBQ3ZDLG9CQUFvQixpQ0FBbUI7QUFDdkMsb0JBQW9CLGlDQUFtQjtBQUN2QyxvQkFBb0IsaUNBQW1CO0FBQ3ZDLG9CQUFvQixpQ0FBbUI7QUFDdkMsb0JBQW9CLGlDQUFtQjtBQUN2QztBQUNBLG9CQUFvQixpQ0FBbUI7QUFDdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsaUNBQWlDO0FBQ2pDLGlDQUFpQztBQUNqQyxpQ0FBaUM7QUFDakM7QUFDQSxNQUFNO0FBQ04sS0FBSyxpQ0FBbUI7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsK0RBQStELE9BQU87QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLGlDQUFtQjtBQUN4Qiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1QixNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0EsYUFBYSxpQ0FBbUIsYUFBYTtBQUM3QztBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5EO0FBQ0Esa0JBQWtCLGlDQUFtQjtBQUNyQyxrQkFBa0IsaUNBQW1CO0FBQ3JDLGtCQUFrQixpQ0FBbUI7QUFDckMsa0JBQWtCLGlDQUFtQjtBQUNyQyxrQkFBa0IsaUNBQW1COztBQUVyQztBQUNBLGVBQWUsaUNBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxpQ0FBbUI7QUFDMUIsdUNBQXVDLGlDQUFtQixpQkFBaUIsMkJBQTJCO0FBQ3RHO0FBQ0E7QUFDQTtBQUNBLEtBQUssaUNBQW1CO0FBQ3hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQSxHQUFHLGlDQUFtQjs7QUFFdEI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxpQ0FBbUI7O0FBRW5EO0FBQ0EsYUFBYSxpQ0FBbUI7O0FBRWhDLHNCQUFzQixRQUFRLGlDQUFtQixZQUFZOztBQUU3RCxPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsaUNBQW1COztBQUVuRDtBQUNBLGVBQWUsaUNBQW1CO0FBQ2xDLGVBQWUsaUNBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDs7Ozs7Ozs7Ozs7QUNucktBOzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOztVQUVBO1VBQ0E7Ozs7O1dDekJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQTs7Ozs7V0NKQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLEdBQUc7V0FDSDtXQUNBO1dBQ0EsQ0FBQzs7Ozs7V0NQRDs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7O1dDTkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7Ozs7O1dDZkE7O1dBRUE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBOztXQUVBOztXQUVBOztXQUVBOztXQUVBOztXQUVBOztXQUVBOztXQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyQkEsaUJBQWlCLFNBQUksSUFBSSxTQUFJO0FBQzdCLDRCQUE0QiwrREFBK0QsaUJBQWlCO0FBQzVHO0FBQ0Esb0NBQW9DLE1BQU0sK0JBQStCLFlBQVk7QUFDckYsbUNBQW1DLE1BQU0sbUNBQW1DLFlBQVk7QUFDeEYsZ0NBQWdDO0FBQ2hDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDMEM7QUFDSjtBQUMvQixxQkFBcUIsb0RBQVU7QUFDaUM7QUFDVDtBQUNFO0FBQ2hCO0FBQ047QUFDb0M7QUFDUztBQUNDO0FBQ2I7QUFDeEI7QUFDdUI7QUFDMUU7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGdCQUFnQjtBQUNyRCxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGVBQWUsb0ZBQWlDO0FBQ2hEO0FBQ0E7QUFDQSw2QkFBNkIsdURBQWE7QUFDMUMsd0JBQXdCLGtFQUF3QjtBQUNoRCxRQUFRLDREQUFrQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3Q0FBd0MsRUFBRSxnQ0FBZ0MsRUFBRSxnQkFBZ0I7QUFDcEg7QUFDQSx3QkFBd0Isd0NBQXdDLEVBQUUsZ0NBQWdDLEVBQUUsZUFBZTtBQUNuSCxRQUFRLDREQUFrQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCx3QkFBd0IseURBQWlCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxlQUFlLGlGQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGVBQWUsdUVBQWU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0EsNkJBQTZCO0FBQ3RCO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDRFQUFxQjtBQUMvQztBQUNBLHFCQUFxQiw0Q0FBNEM7QUFDakU7QUFDQSx5Q0FBeUMsdURBQWE7QUFDdEQsY0FBYyxxR0FBaUIscUdBQXFHLGtFQUF3QixTQUFTLGdFQUFhLEVBQUUsb0ZBQXVCLEVBQUUsd0VBQVc7QUFDeE4sS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFDbkM7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw0RUFBcUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLG9FQUFhO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDBEQUFnQjtBQUM1QztBQUNBLG9DQUFvQyxxRUFBcUU7QUFDekc7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDeEI7QUFDUDtBQUNBLFlBQVksc0RBQVksR0FBRyx5Q0FBeUM7QUFDcEUsWUFBWSw0REFBa0I7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsaUVBQXNCO0FBQ3RGO0FBQ0EsNEJBQTRCLGlFQUFrQjtBQUM5Qyw2QkFBNkIsaUVBQVc7QUFDeEMsb0JBQW9CLCtEQUFxQjtBQUN6QyxzQkFBc0IsNkRBQW1CO0FBQ3pDLGlCQUFpQix1REFBYTtBQUM5QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDZFQUFTO0FBQ3RDO0FBQ0E7QUFDQSxjQUFjLHVFQUE2QjtBQUMzQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxtQkFBbUIsdURBQWE7QUFDaEM7QUFDQSxvQkFBb0IsK0ZBQXFCO0FBQ3pDO0FBQ0EsWUFBWSwwREFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyx1REFBYTtBQUM5QztBQUNBLFlBQVksNERBQWtCO0FBQzlCLDJCQUEyQix3Q0FBd0MsRUFBRSxnQ0FBZ0MsRUFBRSxlQUFlO0FBQ3RIO0FBQ0E7QUFDQSxrQ0FBa0MsOEJBQThCO0FBQ2hFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLCtEQUFxQjtBQUN0RCx3QkFBd0IsK0RBQXFCO0FBQzdDO0FBQ0Esa0JBQWtCLDBGQUFnQixpQkFBaUIsaUdBQXVCO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSx1R0FBNkI7QUFDN0Y7QUFDQTtBQUNBLDBCQUEwQixrRUFBd0I7QUFDbEQsMkJBQTJCLFFBQVEsR0FBRyxTQUFTO0FBQy9DLHVCQUF1Qix1REFBYTtBQUNwQyxZQUFZLGtFQUF3QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNkO0FBQ1AsSUFBSSx1REFBTztBQUNYIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BiaW93YXNtL2Fpb2xpL2Rpc3QvYWlvbGkuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvbnVjbGVvdGlkZXMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXEtcGFsZXR0ZXMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXF1ZW5jZS1lbmNvZGVyLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdW5rbm93bi5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZkLXJlZ2lvbnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9zZXF1ZW5jZS1zcGFjZS5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdmlld2Vycy9hY3Rpdml0eS1jbGlmZnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3dvcmtlcnMvZGltZW5zaW9uYWxpdHktcmVkdWNpbmctd29ya2VyLWNyZWF0b3IuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3JhbmRvbS5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL2Zhc3Rlc3QtbGV2ZW5zaHRlaW4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL2phcm8td2lua2xlci10eXBlc2NyaXB0L2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvc2VxX2FsaWduLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9hdG9taWMtd29ya3MudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXIudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvY29udmVydC50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvbXVsdGlwbGUtc2VxdWVuY2UtYWxpZ25tZW50LnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3NlcXVlbmNlLWFjdGl2aXR5LWNsaWZmcy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvc2VxdWVuY2Utc3BhY2UudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3V0aWxzLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyLnRzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy93dS9kaXN0L3d1LmpzIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJER1wiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJncm9rXCIiLCJ3ZWJwYWNrOi8vYmlvL2V4dGVybmFsIHZhciBcInJ4anNcIiIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwidWlcIiIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2Jpby8uL3NyYy9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuQWlvbGkgPSBmYWN0b3J5KCkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgdmFyIG5hbWUgPSBcIkBiaW93YXNtL2Fpb2xpXCI7XG4gIHZhciB2ZXJzaW9uID0gXCIyLjQuMC1yYzJcIjtcbiAgdmFyIGRlc2NyaXB0aW9uID0gXCJBIGZyYW1ld29yayBmb3IgYnVpbGRpbmcgV2ViQXNzZW1ibHktYmFzZWQgZ2Vub21pY3MgdG9vbHNcIjtcbiAgdmFyIGJyb3dzZXIgPSBcImRpc3QvYWlvbGkuanNcIjtcbiAgdmFyIHdvcmtlciA9IFwiZGlzdC9haW9saS53b3JrZXIuanNcIjtcbiAgdmFyIG1haW4gPSBcImFpb2xpLmpzXCI7XG4gIHZhciByZXBvc2l0b3J5ID0ge1xuICBcdHR5cGU6IFwiZ2l0XCIsXG4gIFx0dXJsOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vYmlvd2FzbS9haW9saS5naXRcIlxuICB9O1xuICB2YXIgYXV0aG9yID0gXCJSb2JlcnQgQWJvdWtoYWxpbFwiO1xuICB2YXIgbGljZW5zZSA9IFwiTUlUXCI7XG4gIHZhciBkZXBlbmRlbmNpZXMgPSB7XG4gIFx0Y29tbGluazogXCJeNC4zLjFcIixcbiAgXHRcIndhc20tZmVhdHVyZS1kZXRlY3RcIjogXCJeMS4yLjExXCJcbiAgfTtcbiAgdmFyIGRldkRlcGVuZGVuY2llcyA9IHtcbiAgXHRcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCI6IFwiXjExLjAuMVwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tanNvblwiOiBcIl40LjEuMFwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tbm9kZS1yZXNvbHZlXCI6IFwiXjcuMC4wXCIsXG4gIFx0Y3lwcmVzczogXCJeOC4wLjBcIixcbiAgXHRyb2xsdXA6IFwiXjEuMjkuMFwiLFxuICBcdFwicm9sbHVwLXBsdWdpbi10ZXJzZXJcIjogXCJeNy4wLjJcIlxuICB9O1xuICB2YXIgc2NyaXB0cyA9IHtcbiAgXHRidWlsZDogXCJyb2xsdXAgLWNcIixcbiAgXHRkZXY6IFwicm9sbHVwIC1jIC13XCIsXG4gIFx0dGVzdDogXCJjeXByZXNzIHJ1blwiLFxuICBcdFwidGVzdC1vcGVuXCI6IFwiY3lwcmVzcyBvcGVuXCJcbiAgfTtcbiAgdmFyIGZpbGVzID0gW1xuICBcdFwiZGlzdFwiXG4gIF07XG4gIHZhciBwa2cgPSB7XG4gIFx0bmFtZTogbmFtZSxcbiAgXHR2ZXJzaW9uOiB2ZXJzaW9uLFxuICBcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgXHRicm93c2VyOiBicm93c2VyLFxuICBcdHdvcmtlcjogd29ya2VyLFxuICBcdG1haW46IG1haW4sXG4gIFx0cmVwb3NpdG9yeTogcmVwb3NpdG9yeSxcbiAgXHRhdXRob3I6IGF1dGhvcixcbiAgXHRsaWNlbnNlOiBsaWNlbnNlLFxuICBcdGRlcGVuZGVuY2llczogZGVwZW5kZW5jaWVzLFxuICBcdGRldkRlcGVuZGVuY2llczogZGV2RGVwZW5kZW5jaWVzLFxuICBcdHNjcmlwdHM6IHNjcmlwdHMsXG4gIFx0ZmlsZXM6IGZpbGVzXG4gIH07XG5cbiAgLyoqXHJcbiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAgICovXHJcbiAgY29uc3QgcHJveHlNYXJrZXIgPSBTeW1ib2woXCJDb21saW5rLnByb3h5XCIpO1xyXG4gIGNvbnN0IGNyZWF0ZUVuZHBvaW50ID0gU3ltYm9sKFwiQ29tbGluay5lbmRwb2ludFwiKTtcclxuICBjb25zdCByZWxlYXNlUHJveHkgPSBTeW1ib2woXCJDb21saW5rLnJlbGVhc2VQcm94eVwiKTtcclxuICBjb25zdCB0aHJvd01hcmtlciA9IFN5bWJvbChcIkNvbWxpbmsudGhyb3duXCIpO1xyXG4gIGNvbnN0IGlzT2JqZWN0ID0gKHZhbCkgPT4gKHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIgJiYgdmFsICE9PSBudWxsKSB8fCB0eXBlb2YgdmFsID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgLyoqXHJcbiAgICogSW50ZXJuYWwgdHJhbnNmZXIgaGFuZGxlIHRvIGhhbmRsZSBvYmplY3RzIG1hcmtlZCB0byBwcm94eS5cclxuICAgKi9cclxuICBjb25zdCBwcm94eVRyYW5zZmVySGFuZGxlciA9IHtcclxuICAgICAgY2FuSGFuZGxlOiAodmFsKSA9PiBpc09iamVjdCh2YWwpICYmIHZhbFtwcm94eU1hcmtlcl0sXHJcbiAgICAgIHNlcmlhbGl6ZShvYmopIHtcclxuICAgICAgICAgIGNvbnN0IHsgcG9ydDEsIHBvcnQyIH0gPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcclxuICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQxKTtcclxuICAgICAgICAgIHJldHVybiBbcG9ydDIsIFtwb3J0Ml1dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShwb3J0KSB7XHJcbiAgICAgICAgICBwb3J0LnN0YXJ0KCk7XHJcbiAgICAgICAgICByZXR1cm4gd3JhcChwb3J0KTtcclxuICAgICAgfSxcclxuICB9O1xyXG4gIC8qKlxyXG4gICAqIEludGVybmFsIHRyYW5zZmVyIGhhbmRsZXIgdG8gaGFuZGxlIHRocm93biBleGNlcHRpb25zLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRocm93VHJhbnNmZXJIYW5kbGVyID0ge1xyXG4gICAgICBjYW5IYW5kbGU6ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpICYmIHRocm93TWFya2VyIGluIHZhbHVlLFxyXG4gICAgICBzZXJpYWxpemUoeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgICBsZXQgc2VyaWFsaXplZDtcclxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHtcclxuICAgICAgICAgICAgICAgICAgaXNFcnJvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBzZXJpYWxpemVkID0geyBpc0Vycm9yOiBmYWxzZSwgdmFsdWUgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBbc2VyaWFsaXplZCwgW11dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShzZXJpYWxpemVkKSB7XHJcbiAgICAgICAgICBpZiAoc2VyaWFsaXplZC5pc0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3Ioc2VyaWFsaXplZC52YWx1ZS5tZXNzYWdlKSwgc2VyaWFsaXplZC52YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aHJvdyBzZXJpYWxpemVkLnZhbHVlO1xyXG4gICAgICB9LFxyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIGN1c3RvbWl6aW5nIHRoZSBzZXJpYWxpemF0aW9uIG9mIGNlcnRhaW4gdmFsdWVzLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRyYW5zZmVySGFuZGxlcnMgPSBuZXcgTWFwKFtcclxuICAgICAgW1wicHJveHlcIiwgcHJveHlUcmFuc2ZlckhhbmRsZXJdLFxyXG4gICAgICBbXCJ0aHJvd1wiLCB0aHJvd1RyYW5zZmVySGFuZGxlcl0sXHJcbiAgXSk7XHJcbiAgZnVuY3Rpb24gZXhwb3NlKG9iaiwgZXAgPSBzZWxmKSB7XHJcbiAgICAgIGVwLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGZ1bmN0aW9uIGNhbGxiYWNrKGV2KSB7XHJcbiAgICAgICAgICBpZiAoIWV2IHx8ICFldi5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgeyBpZCwgdHlwZSwgcGF0aCB9ID0gT2JqZWN0LmFzc2lnbih7IHBhdGg6IFtdIH0sIGV2LmRhdGEpO1xyXG4gICAgICAgICAgY29uc3QgYXJndW1lbnRMaXN0ID0gKGV2LmRhdGEuYXJndW1lbnRMaXN0IHx8IFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICBsZXQgcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguc2xpY2UoMCwgLTEpLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBwYXRoLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJHRVRcIiAvKiBHRVQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByYXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiU0VUXCIgLyogU0VUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFtwYXRoLnNsaWNlKC0xKVswXV0gPSBmcm9tV2lyZVZhbHVlKGV2LmRhdGEudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQVBQTFlcIiAvKiBBUFBMWSAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJhd1ZhbHVlLmFwcGx5KHBhcmVudCwgYXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQ09OU1RSVUNUXCIgLyogQ09OU1RSVUNUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbmV3IHJhd1ZhbHVlKC4uLmFyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBwcm94eSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkVORFBPSU5UXCIgLyogRU5EUE9JTlQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwb3J0MSwgcG9ydDIgfSA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRyYW5zZmVyKHBvcnQxLCBbcG9ydDFdKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAodmFsdWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyZXR1cm5WYWx1ZSlcclxuICAgICAgICAgICAgICAuY2F0Y2goKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLnRoZW4oKHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgW3dpcmVWYWx1ZSwgdHJhbnNmZXJhYmxlc10gPSB0b1dpcmVWYWx1ZShyZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgZXAucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB3aXJlVmFsdWUpLCB7IGlkIH0pLCB0cmFuc2ZlcmFibGVzKTtcclxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJSRUxFQVNFXCIgLyogUkVMRUFTRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAvLyBkZXRhY2ggYW5kIGRlYWN0aXZlIGFmdGVyIHNlbmRpbmcgcmVsZWFzZSByZXNwb25zZSBhYm92ZS5cclxuICAgICAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgY2FsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChlcC5zdGFydCkge1xyXG4gICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBpc01lc3NhZ2VQb3J0KGVuZHBvaW50KSB7XHJcbiAgICAgIHJldHVybiBlbmRwb2ludC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIk1lc3NhZ2VQb3J0XCI7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQoZW5kcG9pbnQpIHtcclxuICAgICAgaWYgKGlzTWVzc2FnZVBvcnQoZW5kcG9pbnQpKVxyXG4gICAgICAgICAgZW5kcG9pbnQuY2xvc2UoKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gd3JhcChlcCwgdGFyZ2V0KSB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgW10sIHRhcmdldCk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUmVsZWFzZWQpIHtcclxuICAgICAgaWYgKGlzUmVsZWFzZWQpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZVwiKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBjcmVhdGVQcm94eShlcCwgcGF0aCA9IFtdLCB0YXJnZXQgPSBmdW5jdGlvbiAoKSB7IH0pIHtcclxuICAgICAgbGV0IGlzUHJveHlSZWxlYXNlZCA9IGZhbHNlO1xyXG4gICAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIHtcclxuICAgICAgICAgIGdldChfdGFyZ2V0LCBwcm9wKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gcmVsZWFzZVByb3h5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Byb3h5UmVsZWFzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChwcm9wID09PSBcInRoZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHRoZW46ICgpID0+IHByb3h5IH07XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIgLyogR0VUICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIH0pLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiByLnRoZW4uYmluZChyKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVByb3h5KGVwLCBbLi4ucGF0aCwgcHJvcF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNldChfdGFyZ2V0LCBwcm9wLCByYXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgLy8gRklYTUU6IEVTNiBQcm94eSBIYW5kbGVyIGBzZXRgIG1ldGhvZHMgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBhXHJcbiAgICAgICAgICAgICAgLy8gYm9vbGVhbi4gVG8gc2hvdyBnb29kIHdpbGwsIHdlIHJldHVybiB0cnVlIGFzeW5jaHJvbm91c2x5IMKvXFxfKOODhClfL8KvXHJcbiAgICAgICAgICAgICAgY29uc3QgW3ZhbHVlLCB0cmFuc2ZlcmFibGVzXSA9IHRvV2lyZVZhbHVlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIlNFVFwiIC8qIFNFVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhdGgsIHByb3BdLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBhcHBseShfdGFyZ2V0LCBfdGhpc0FyZywgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICAgIGlmIChsYXN0ID09PSBjcmVhdGVFbmRwb2ludCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFTkRQT0lOVFwiIC8qIEVORFBPSU5UICovLFxyXG4gICAgICAgICAgICAgICAgICB9KS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBXZSBqdXN0IHByZXRlbmQgdGhhdCBgYmluZCgpYCBkaWRu4oCZdCBoYXBwZW4uXHJcbiAgICAgICAgICAgICAgaWYgKGxhc3QgPT09IFwiYmluZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgcGF0aC5zbGljZSgwLCAtMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkFQUExZXCIgLyogQVBQTFkgKi8sXHJcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICBhcmd1bWVudExpc3QsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJ1Y3QoX3RhcmdldCwgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkNPTlNUUlVDVFwiIC8qIENPTlNUUlVDVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIGFyZ3VtZW50TGlzdCxcclxuICAgICAgICAgICAgICB9LCB0cmFuc2ZlcmFibGVzKS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBwcm94eTtcclxuICB9XHJcbiAgZnVuY3Rpb24gbXlGbGF0KGFycikge1xyXG4gICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJyKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyhhcmd1bWVudExpc3QpIHtcclxuICAgICAgY29uc3QgcHJvY2Vzc2VkID0gYXJndW1lbnRMaXN0Lm1hcCh0b1dpcmVWYWx1ZSk7XHJcbiAgICAgIHJldHVybiBbcHJvY2Vzc2VkLm1hcCgodikgPT4gdlswXSksIG15RmxhdChwcm9jZXNzZWQubWFwKCh2KSA9PiB2WzFdKSldO1xyXG4gIH1cclxuICBjb25zdCB0cmFuc2ZlckNhY2hlID0gbmV3IFdlYWtNYXAoKTtcclxuICBmdW5jdGlvbiB0cmFuc2ZlcihvYmosIHRyYW5zZmVycykge1xyXG4gICAgICB0cmFuc2ZlckNhY2hlLnNldChvYmosIHRyYW5zZmVycyk7XHJcbiAgICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHByb3h5KG9iaikge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihvYmosIHsgW3Byb3h5TWFya2VyXTogdHJ1ZSB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gdG9XaXJlVmFsdWUodmFsdWUpIHtcclxuICAgICAgZm9yIChjb25zdCBbbmFtZSwgaGFuZGxlcl0gb2YgdHJhbnNmZXJIYW5kbGVycykge1xyXG4gICAgICAgICAgaWYgKGhhbmRsZXIuY2FuSGFuZGxlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IFtzZXJpYWxpemVkVmFsdWUsIHRyYW5zZmVyYWJsZXNdID0gaGFuZGxlci5zZXJpYWxpemUodmFsdWUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiSEFORExFUlwiIC8qIEhBTkRMRVIgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNmZXJhYmxlcyxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogXCJSQVdcIiAvKiBSQVcgKi8sXHJcbiAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdHJhbnNmZXJDYWNoZS5nZXQodmFsdWUpIHx8IFtdLFxyXG4gICAgICBdO1xyXG4gIH1cclxuICBmdW5jdGlvbiBmcm9tV2lyZVZhbHVlKHZhbHVlKSB7XHJcbiAgICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcIkhBTkRMRVJcIiAvKiBIQU5ETEVSICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFuc2ZlckhhbmRsZXJzLmdldCh2YWx1ZS5uYW1lKS5kZXNlcmlhbGl6ZSh2YWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgICBjYXNlIFwiUkFXXCIgLyogUkFXICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCBtc2csIHRyYW5zZmVycykge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlkID0gZ2VuZXJhdGVVVUlEKCk7XHJcbiAgICAgICAgICBlcC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBmdW5jdGlvbiBsKGV2KSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFldi5kYXRhIHx8ICFldi5kYXRhLmlkIHx8IGV2LmRhdGEuaWQgIT09IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbCk7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShldi5kYXRhKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGVwLnN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVwLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oeyBpZCB9LCBtc2cpLCB0cmFuc2ZlcnMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKCkge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5KDQpXHJcbiAgICAgICAgICAuZmlsbCgwKVxyXG4gICAgICAgICAgLm1hcCgoKSA9PiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKVxyXG4gICAgICAgICAgLmpvaW4oXCItXCIpO1xyXG4gIH1cbiAgLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29tbGluay5tanMubWFwXG5cbiAgLy8gQ29uc3RhbnRzXG4gIGNvbnN0IFVSTF9DRE5fUk9PVCA9IFwiaHR0cHM6Ly9jZG4uYmlvd2FzbS5jb20vdjJcIjtcbiAgY29uc3QgQ09ORklHX0RFRkFVTFRTID0ge1xuICBcdC8vIEJpb3dhc20gQ0ROIFVSTHNcbiAgXHR1cmxDRE46IFVSTF9DRE5fUk9PVCxcbiAgXHQvLyBHZXQgdGhlIFdvcmtlciBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbnQgQWlvbGkgdmVyc2lvblxuICBcdHVybEFpb2xpOiBgJHtVUkxfQ0ROX1JPT1R9L2Fpb2xpLyR7cGtnLnZlcnNpb259L2Fpb2xpLndvcmtlci5qc2AsXG4gIFx0Ly8gV2hlcmUgd2UgY2FuIGZpbmQgdGhlIGJhc2UgYmlvd2FzbSBtb2R1bGUgKG9ubHkgbW9kaWZ5IHRoaXMgZm9yIGxvY2FsIGRldmVsb3BtZW50KVxuICBcdHVybEJhc2VNb2R1bGU6IG51bGwsXG5cbiAgXHQvLyBGb2xkZXIgdG8gdXNlIGZvciBtb3VudGluZyB0aGUgc2hhcmVkIGZpbGVzeXN0ZW1cbiAgXHRkaXJTaGFyZWQ6IFwiL3NoYXJlZFwiLFxuICBcdC8vIEZvbGRlciB0byB1c2UgZm9yIG1vdW50aW5nIEZpbGUvQmxvYiBvYmplY3RzIHRvIHRoZSB2aXJ0dWFsIGZpbGUgc3lzdGVtXG4gIFx0ZGlyTW91bnRlZDogXCIvbW50XCIsXG4gIFx0Ly8gRm9sZGVyIHRvIHVzZSBmb3Igc3ltbGlua3MgKGJhc2ljYWxseSwgd2UgbWFrZSBhIHN5bWxpbmsgdG8gZWFjaCBmaWxlIG1vdW50ZWQgb24gV09SS0VSRlNcbiAgXHQvLyBzbyB0aGF0IG9wZXJhdGlvbnMgbGlrZSBcInNhbXRvb2xzIGluZGV4XCIgZG9uJ3QgY3Jhc2ggZHVlIHRvIHRoZSByZWFkLW9ubHkgbmF0dXJlIG9mIFdPUktFUlMpLlxuICBcdC8vIEFsc28gbW91bnQgVVJMcyBsYXppbHkgaW4gdGhhdCBmb2xkZXIuXG4gIFx0ZGlyRGF0YTogXCIvZGF0YVwiLFxuICBcdC8vIEludGVybGVhdmUgc3Rkb3V0L3N0ZGVyci4gSWYgc2V0IHRvIGZhbHNlLCBgLmV4ZWMoKWAgcmV0dXJucyBhbiBvYmplY3QgeyBcInN0ZG91dFwiOiA8dGV4dD4sIFwic3RkZXJyXCI6IDx0ZXh0PiB9XG4gIFx0cHJpbnRJbnRlcmxlYXZlZDogdHJ1ZSxcblxuICBcdC8vIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biB3aGVuZXZlciB3ZSByZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBXZWJXb3JrZXIgd2l0aCBwYXlsb2FkIHsgdHlwZTogXCJiaW93YXNtXCIsIHZhbHVlOiAuLi4gfS5cbiAgXHQvLyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9iaW93YXNtL2Jpb3dhc20vdHJlZS9tYWluL3Rvb2xzL2JodHNuZT4gZm9yIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgY2FuIGJlIHVzZWQgdG8gc2VuZCByZWd1bGFyIHVwZGF0ZXNcbiAgXHQvLyBiYWNrIHRvIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgY2FsbE1haW4oKSBpcyBkb25lIHJ1bm5pbmcuXG4gIFx0Y2FsbGJhY2s6IG51bGwsXG5cbiAgXHQvLyBEZWJ1Z2dpbmdcbiAgXHRkZWJ1ZzogZmFsc2UsXG4gIFx0ZW52OiBcInByZFwiXG4gIH07XG5cbiAgLy8gQ2xhc3M6IDEgb2JqZWN0ID0gMSB3b3JrZXI7IHVzZXIgY2FuIGRlY2lkZSBpZiB0aGV5IHdhbnQgdG9vbHMgcnVubmluZyBpbiBzZXBhcmF0ZSB0aHJlYWRzIG9yIGFsbCBvZiB0aGVtIGluIG9uZVxuICBjbGFzcyBBaW9saVxuICB7XG4gIFx0Y29uc3RydWN0b3IodG9vbHMsIGNvbmZpZz17fSlcbiAgXHR7XG4gIFx0XHRpZih0b29scyA9PSBudWxsKVxuICBcdFx0XHR0aHJvdyBcIkV4cGVjdGluZyBhcnJheSBvZiB0b29scyBhcyBpbnB1dCB0byBBaW9saSBjb25zdHJ1Y3Rvci5cIjtcblxuICBcdFx0Ly8gUGFyc2UgdXNlciBpbnB1dFxuICBcdFx0aWYoIUFycmF5LmlzQXJyYXkodG9vbHMpKVxuICBcdFx0XHR0b29scyA9IFsgdG9vbHMgXTtcbiAgXHRcdC8vIE92ZXJ3cml0ZSBkZWZhdWx0IGNvbmZpZyBpZiBzcGVjaWZpZWRcbiAgXHRcdGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIENPTkZJR19ERUZBVUxUUywgY29uZmlnKTtcbiAgXHRcdC8vIEZvciBjb252ZW5pZW5jZSwgc3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBvciBcIjx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+XCIgaW5zdGVhZCBvZiBvYmplY3QgY29uZmlnXG4gIFx0XHR0b29scyA9IHRvb2xzLm1hcCh0aGlzLl9wYXJzZVRvb2wpO1xuICBcdFx0Ly8gSWYgdGVzdGluZyB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudCBlLmcuIGNkbi1zdGcuYmlvd2FzbS5jb21cbiAgXHRcdGlmKGNvbmZpZy5lbnYgIT0gXCJwcmRcIikge1xuICBcdFx0XHRjb25maWcudXJsQ0ROID0gY29uZmlnLnVybENETi5yZXBsYWNlKFwiY2RuXCIsIGBjZG4tJHtjb25maWcuZW52fWApO1xuICBcdFx0XHRjb25maWcudXJsQWlvbGkgPSBjb25maWcudXJsQWlvbGkucmVwbGFjZShcImNkblwiLCBgY2RuLSR7Y29uZmlnLmVudn1gKTtcbiAgXHRcdH1cblxuICBcdFx0Ly8gQWRkIGJpb3dhc20gYmFzZSBtb2R1bGUgdG8gbGlzdCBvZiB0b29scyB0byBpbml0aWFsaXplIChuZWVkIHRoaXMgZm9yIHRoZSBzaGFyZWQgdmlydHVhbCBmaWxlc3lzdGVtKVxuICBcdFx0dG9vbHMgPSBbe1xuICBcdFx0XHR0b29sOiBcImJhc2VcIixcbiAgXHRcdFx0dmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIFx0XHRcdHVybFByZWZpeDogY29uZmlnLnVybEJhc2VNb2R1bGVcbiAgXHRcdH0sIC4uLnRvb2xzXTtcblxuICBcdFx0Ly8gU2V0IHN0YXRlXG4gIFx0XHR0aGlzLnRvb2xzID0gdG9vbHM7XG4gIFx0XHR0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICBcdFx0Ly8gSGFuZGxlIGNhbGxiYWNrIChkZWxldGUgaXQgYmVjYXVzZSB3ZSBjYW4ndCBzZW5kIGEgZnVuY3Rpb24gdG8gdGhlIFdlYldvcmtlcilcbiAgXHRcdGlmKHRoaXMuY29uZmlnLmNhbGxiYWNrICE9IG51bGwpXG4gIFx0XHRcdHRoaXMuY2FsbGJhY2sgPSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcbiAgXHRcdGRlbGV0ZSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcblxuICBcdFx0cmV0dXJuIHRoaXMuaW5pdCgpO1xuICBcdH1cblxuICBcdC8vIEluaXRpYWxpemUgdGhlIFdlYldvcmtlciBhbmQgdGhlIFdlYkFzc2VtYmx5IG1vZHVsZXMgd2l0aGluIGl0XG4gIFx0YXN5bmMgaW5pdCgpIHtcbiAgXHRcdC8vIE5vdGU6IFdlIGNhbiBvbmx5IGNyZWF0ZSBhIFdlYldvcmtlciB1c2luZyBhIFVSTCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGFwcCBydW5uaW5nIGl0LCBpLmUuIHdlXG4gIFx0XHQvLyBjYW4ndCBkbyBgbmV3IFdvcmtlcihcImh0dHBzOi8vY2RuLmJpb3dhc20uY29tL3YyLy4uLlwiKWAsIHNvIGluc3RlYWQgd2UgbmVlZCB0byBmZXRjaCB0aGUgY29udGVudHMgb2YgdGhhdFxuICBcdFx0Ly8gVVJMIGZpcnN0LCBhbmQgdGhlbiBjcmVhdGUgdGhlIFdlYldvcmtlci4gU2VlIDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjAwMTU4OTg+LlxuICBcdFx0Y29uc3QgbW9kdWxlSlMgPSBhd2FpdCAoYXdhaXQgZmV0Y2godGhpcy5jb25maWcudXJsQWlvbGkpKS50ZXh0KCk7XG4gIFx0XHRjb25zdCBtb2R1bGVCbG9iID0gbmV3IEJsb2IoW21vZHVsZUpTXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiB9KTtcblxuICBcdFx0Ly8gQ3JlYXRlIHRoZSBXZWJXb3JrZXJcbiAgXHRcdGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChtb2R1bGVCbG9iKSk7XG4gIFx0XHQvLyBMaXN0ZW4gZm9yIFwiYmlvd2FzbVwiIG1lc3NhZ2VzIGZyb20gdGhlIFdlYldvcmtlclxuICBcdFx0aWYodGhpcy5jYWxsYmFjaylcbiAgXHRcdFx0d29ya2VyLm9ubWVzc2FnZSA9IGUgPT4ge1xuICBcdFx0XHRcdGlmKGUuZGF0YS50eXBlID09IFwiYmlvd2FzbVwiKVxuICBcdFx0XHRcdFx0dGhpcy5jYWxsYmFjayhlLmRhdGEudmFsdWUpO1xuICBcdFx0XHR9O1xuXG4gIFx0XHRjb25zdCBhaW9saSA9IHdyYXAod29ya2VyKTtcbiAgXHRcdGFpb2xpLnRvb2xzID0gdGhpcy50b29scztcbiAgXHRcdGFpb2xpLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuXG4gIFx0XHQvLyBJbml0aWFsaXplIHRoZSB0b29scyBpbnNpZGUgdGhlIFdlYldvcmtlclxuICBcdFx0YXdhaXQgYWlvbGkuaW5pdCgpO1xuXG4gIFx0XHRyZXR1cm4gYWlvbGk7XG4gIFx0fVxuXG4gIFx0Ly8gUGFyc2UgXCI8dG9vbD4vPHZlcnNpb24+XCIgYW5kIFwiPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj5cIiBpbnRvIHsgXCJ0b29sXCI6IDx0b29sPiwgXCJwcm9ncmFtXCI6IDxwcm9ncmFtPiwgXCJ2ZXJzaW9uXCI6IDx2ZXJzaW9uPiB9XG4gIFx0X3BhcnNlVG9vbCh0b29sKVxuICBcdHtcbiAgXHRcdC8vIElmIG5vdCBhIHN0cmluZywgbGVhdmUgaXQgYXMgaXNcbiAgXHRcdGlmKHR5cGVvZiB0b29sICE9PSBcInN0cmluZ1wiKVxuICBcdFx0XHRyZXR1cm4gdG9vbDtcblxuICBcdFx0Ly8gU3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBhbmQgXCI8dG9vbD4vPHByb2dyYW0+Lzx2ZXJzaW9uPlwiXG4gIFx0XHRjb25zdCB0b29sU3BsaXQgPSB0b29sLnNwbGl0KFwiL1wiKTtcbiAgXHRcdGlmKHRvb2xTcGxpdC5sZW5ndGggIT0gMiAmJiB0b29sU3BsaXQubGVuZ3RoICE9IDMpXG4gIFx0XHRcdHRocm93IFwiRXhwZWN0aW5nICc8dG9vbD4vPHZlcnNpb24+JyBvciAnPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj4nXCI7XG5cbiAgXHRcdHJldHVybiB7XG4gIFx0XHRcdHRvb2w6IHRvb2xTcGxpdFswXSxcbiAgXHRcdFx0cHJvZ3JhbTogdG9vbFNwbGl0Lmxlbmd0aCA9PSAzID8gdG9vbFNwbGl0WzFdIDogdG9vbFNwbGl0WzBdLFxuICBcdFx0XHR2ZXJzaW9uOiB0b29sU3BsaXRbdG9vbFNwbGl0Lmxlbmd0aCAtIDFdXG4gIFx0XHR9O1xuICBcdH1cbiAgfVxuXG4gIHJldHVybiBBaW9saTtcblxufSkpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFpb2xpLmpzLm1hcFxuIiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgTGVzaygpIHtcbiAgICAgICAgaWYgKHRoaXMubGVzayA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmxlc2sgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydHJywgJ0EnLCAnUycsICdUJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snTicsICdRJywgJ0gnXSwgJ21hZ2VudGEnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgICAgICAgIF0sIGZhbHNlLCBBbWlub2FjaWRzUGFsZXR0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxlc2s7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgR3Jva0dyb3VwcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3Jva0dyb3VwcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb2tHcm91cHMgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydDJywgJ1UnXSwgJ3llbGxvdyddLFxuICAgICAgICAgICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydSJywgJ0gnLCAnSyddLCAnbGlnaHRfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snUycsICdUJywgJ04nLCAnUSddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncm9rR3JvdXBzO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IFJhc01vbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmFzTW9sID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMucmFzTW9sID0gbmV3IEFtaW5vYWNpZHNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICAgICAgICAgJ0QnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0UnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0MnOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ00nOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ0snOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1InOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1MnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ1QnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ0YnOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ1knOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ04nOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ1EnOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ0cnOiAnI0VCRUJFQicsXG4gICAgICAgICAgICAgICAgJ0wnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ1YnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0knOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0EnOiAnI0M4QzhDOCcsXG4gICAgICAgICAgICAgICAgJ1cnOiAnI0I0NUFCNCcsXG4gICAgICAgICAgICAgICAgJ0gnOiAnIzgyODJEMicsXG4gICAgICAgICAgICAgICAgJ1AnOiAnI0RDOTY4MicsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICcjQkVBMDZFJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhc01vbDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkcyB7XG4gICAgc3RhdGljIGdldFBhbGV0dGUoc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHN3aXRjaCAoc2NoZW1lKSB7XG4gICAgICAgICAgICBjYXNlICdncm9rJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgICAgICBjYXNlICdsZXNrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkxlc2s7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hlbVBhbGV0dGU6IHNjaGVtZSBcXGAke3NjaGVtZX1cXGAgZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRpdmlkZWQgYW1pbm8gYWNpZCB3aXRoIGl0cyBjb250ZW50IGluIHRoZSBicmFja2V0LCBpZiB0aGUgY29udGVudCBpcyBudW1iZXIsIHRoZW4gaXRzIG9taXR0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjIHJhdyBhbWlub1xuICAgICAqIEByZXR1cm4ge1tzdHJpbmcsIHN0cmluZ119IG91dGVyIGFuZCBpbm5lciBjb250ZW50XG4gICAgICovXG4gICAgc3RhdGljIGdldElubmVyT3V0ZXIoYykge1xuICAgICAgICBsZXQgaXNJbm5lciA9IDA7XG4gICAgICAgIGxldCBpbm5lciA9ICcnO1xuICAgICAgICBsZXQgb3V0ZXIgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBjaGFyIG9mIGMpIHtcbiAgICAgICAgICAgIGlmIChjaGFyID09ICcoJylcbiAgICAgICAgICAgICAgICBpc0lubmVyKys7XG4gICAgICAgICAgICBlbHNlIGlmIChjaGFyID09ICcpJylcbiAgICAgICAgICAgICAgICBpc0lubmVyLS07XG4gICAgICAgICAgICBlbHNlIGlmIChpc0lubmVyKVxuICAgICAgICAgICAgICAgIGlubmVyICs9IGNoYXI7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3V0ZXIgKz0gY2hhcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzTmFOKHBhcnNlSW50KGlubmVyKSkgPyBbb3V0ZXIsICcnXSA6IFtvdXRlciwgaW5uZXJdO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0Q29sb3JBQVBpdm90KG1vbm9tZXIgPSAnJywgc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAvL2NvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSBBQVBhbGV0dGVzLkdyb2tHcm91cHMoKTtcbiAgICAgICAgY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IHRoaXMuZ2V0UGFsZXR0ZShzY2hlbWUpO1xuICAgICAgICBsZXQgW291dGVyTW9ub21lciwgaW5uZXJNb25vbWVyXSA9IHRoaXMuZ2V0SW5uZXJPdXRlcihtb25vbWVyKTtcbiAgICAgICAgb3V0ZXJNb25vbWVyID0gKG91dGVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7b3V0ZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBvdXRlck1vbm9tZXIpO1xuICAgICAgICBpbm5lck1vbm9tZXIgPSAoaW5uZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtpbm5lck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IGlubmVyTW9ub21lcik7XG4gICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAxIHx8IG1vbm9tZXJbMV0gPT0gJygnKSB7XG4gICAgICAgICAgICBjb25zdCBhbWlubyA9IChfYSA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDFdIDpcbiAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDFdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVyWzBdID09ICdkJyAmJiBtb25vbWVyWzFdIGluIGNoZW1QYWxldHRlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAyIHx8IG1vbm9tZXJbMl0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2IgPSBtb25vbWVyWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDJdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMCwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMCwgMyldO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgM10gOlxuICAgICAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgoKF9jID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnRvTG93ZXJDYXNlKCkpID09IG1vbm9tZXJbMF0pIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLnN1YnN0cmluZygxLCAzKSBpbiB0aGlzLkFBRnVsbE5hbWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDQgfHwgbW9ub21lcls0XSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDEsIDMpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgNF0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCA0XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMF07XG4gICAgfVxufVxuQW1pbm9hY2lkcy5TZW1UeXBlID0gJ0FtaW5vYWNpZHMnO1xuQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnQW1pbm9hY2lkc011bHRpcGxlQWxpZ25tZW50JztcbkFtaW5vYWNpZHMudW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG5BbWlub2FjaWRzLk5hbWVzID0ge1xuICAgICdHJzogJ0dseWNpbmUnLFxuICAgICdMJzogJ0xldWNpbmUnLFxuICAgICdZJzogJ1R5cm9zaW5lJyxcbiAgICAnUyc6ICdTZXJpbmUnLFxuICAgICdFJzogJ0dsdXRhbWljIGFjaWQnLFxuICAgICdRJzogJ0dsdXRhbWluZScsXG4gICAgJ0QnOiAnQXNwYXJ0aWMgYWNpZCcsXG4gICAgJ04nOiAnQXNwYXJhZ2luZScsXG4gICAgJ0YnOiAnUGhlbnlsYWxhbmluZScsXG4gICAgJ0EnOiAnQWxhbmluZScsXG4gICAgJ0snOiAnTHlzaW5lJyxcbiAgICAnUic6ICdBcmdpbmluZScsXG4gICAgJ0gnOiAnSGlzdGlkaW5lJyxcbiAgICAnQyc6ICdDeXN0ZWluZScsXG4gICAgJ1YnOiAnVmFsaW5lJyxcbiAgICAnUCc6ICdQcm9saW5lJyxcbiAgICAnVyc6ICdUcnlwdG9waGFuJyxcbiAgICAnSSc6ICdJc29sZXVjaW5lJyxcbiAgICAnTSc6ICdNZXRoaW9uaW5lJyxcbiAgICAnVCc6ICdUaHJlb25pbmUnLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXMgPSB7XG4gICAgJ0cnOiAnTkNDKD1PKU8nLFxuICAgICdMJzogJ05bQ0BIXShDQyhDKUMpQyg9TylPJyxcbiAgICAnWSc6ICdOQyhDQzE9Q0M9QyhPKUM9QzEpQyg9TylPJyxcbiAgICAnUyc6ICdOQyhDTylDKD1PKU8nLFxuICAgICdFJzogJ05bQ0BASF0oQ0NDKE8pPU8pQyg9TylPJyxcbiAgICAnUSc6ICdOW0NAQEhdKENDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0QnOiAnTltDQEBIXShDQyhPKT1PKUMoPU8pTycsXG4gICAgJ04nOiAnTltDQEBIXShDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0YnOiAnTkMoQ0MxPUNDPUNDPUMxKUMoPU8pTycsXG4gICAgJ0EnOiAnTltDQEhdKEMpQyg9TylPJyxcbiAgICAnSyc6ICdOQyhDQ0NDTilDKD1PKU8nLFxuICAgICdSJzogJ05bQ0BIXShDQ0NOQyg9TilDKUMoPU8pTycsXG4gICAgJ0gnOiAnTkMoQ0MxPUNOPUNbTl0xKUMoPU8pTycsXG4gICAgJ0MnOiAnTltDQEBIXShDUylDKD1PKU8nLFxuICAgICdWJzogJ05DKEMoQylDKUMoPU8pTycsXG4gICAgJ1AnOiAnTihDQ0MxKUMxQyg9TylPJyxcbiAgICAnVyc6ICdOW0NAQEhdKENjMWMyY2NjY2MybihbSF0pYzEpQyg9TylPJyxcbiAgICAnSSc6ICdOW0NASF0oW0NASF0oQylDQylDKD1PKU8nLFxuICAgICdNJzogJ05DKENDU0MpQyg9TylPJyxcbiAgICAnVCc6ICdOQyhDKE8pQylDKD1PKU8nLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXNUcnVuY2F0ZWQgPSB7XG4gICAgJ0cnOiAnKkMqJyxcbiAgICAnTCc6ICdDQyhDKUNbQ0BIXSgqKSonLFxuICAgICdZJzogJ0MxPUNDKD1DQz1DMUNDKCopKilPJyxcbiAgICAnUyc6ICdPQ0MoKilDKicsXG4gICAgJ0UnOiAnKltDQEBIXShDQ0MoTyk9TykqJyxcbiAgICAnUSc6ICcqTltDQEBIXShDQ0MoTik9TykqJyxcbiAgICAnRCc6ICcqW0NAQEhdKENDKE8pPU8pKicsXG4gICAgJ04nOiAnKltDQEBIXShDQyhOKT1PKSonLFxuICAgICdGJzogJ0MxPUNDPUMoQz1DMSlDQygqKSonLFxuICAgICdBJzogJ0NbQ0BIXSgqKSonLFxuICAgICdLJzogJ0MoQ0NOKUNDKCopKicsXG4gICAgJ1InOiAnKltDQEhdKENDQ05DKD1OKUMpKicsXG4gICAgJ0gnOiAnQzE9QyhOQz1OMSlDQygqKSonLFxuICAgICdDJzogJ0MoW0NAQEhdKCopKilTJyxcbiAgICAnVic6ICdDQyhDKUMoKikqJyxcbiAgICAnUCc6ICdDMUNDTigqKUMxKicsXG4gICAgJ1cnOiAnKltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKSonLFxuICAgICdJJzogJ0NDW0NASF0oQylbQ0BIXSgqKSonLFxuICAgICdNJzogJ0NTQ0NDKCopKicsXG4gICAgJ1QnOiAnQ0MoTylDKCopKicsXG59O1xuLyoqIFRPRE86IEZ1bGw/XG4gKi9cbkFtaW5vYWNpZHMuQUFGdWxsTmFtZXMgPSB7XG4gICAgJ0FsYSc6ICdBJyxcbiAgICAnQXJnJzogJ1InLFxuICAgICdBc24nOiAnTicsXG4gICAgJ0FzcCc6ICdEJyxcbiAgICAnQ3lzJzogJ0MnLFxuICAgICdHbG4nOiAnUScsXG4gICAgJ0dsdSc6ICdFJyxcbiAgICAnR2x5JzogJ0cnLFxuICAgICdIaXMnOiAnSCcsXG4gICAgJ0lsZSc6ICdJJyxcbiAgICAnTGV1JzogJ0wnLFxuICAgICdMeXMnOiAnSycsXG4gICAgJ01ldCc6ICdNJyxcbiAgICAnUGhlJzogJ0YnLFxuICAgICdQcm8nOiAnUCcsXG4gICAgJ1Nlcic6ICdTJyxcbiAgICAnVGhyJzogJ1QnLFxuICAgICdUcnAnOiAnVycsXG4gICAgJ1R5cic6ICdZJyxcbiAgICAnVmFsJzogJ1YnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVlXMXBibTloWTJsa2N5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW1GdGFXNXZZV05wWkhNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTMEVzVDBGQlR5eEZRVUZoTEdOQlFXTXNSVUZCUXl4TlFVRk5MR2RDUVVGblFpeERRVUZETzBGQlJURkVMRTFCUVUwc1QwRkJUeXhyUWtGQmJVSXNVMEZCVVN4alFVRmpPMGxCUnpkRExFMUJRVTBzUzBGQlN5eEpRVUZKTzFGQlEzQkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eExRVUZMTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNN1owSkJRek5DTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRMmhETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRE5VUXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNVMEZCVXl4RFFVRkRPMmRDUVVNMVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF6dG5Ra0ZEYmtJc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4VlFVRlZMRU5CUVVNN1lVRkRla0lzUlVGQlJTeExRVUZMTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFRRVU12UWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dEpRVU51UWl4RFFVRkRPMGxCU1Uwc1RVRkJUU3hMUVVGTExGVkJRVlU3VVVGRE1VSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlF6bENMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXp0blFrRkRha01zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU03WjBKQlEzUkNMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRPMmRDUVVOdVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRka1FzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzV1VGQldTeERRVUZETzJkQ1FVTXZRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRGVrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRkZCUVZFc1EwRkJRenRoUVVOcVF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4clFrRkJhMElzUTBGQlF5eERRVUZETzFOQlF5OUNPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkpUU3hOUVVGTkxFdEJRVXNzVFVGQlRUdFJRVU4wUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzUzBGQlN5eERRVUZETEVWQlFVVTdXVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEd0Q1FVRnJRaXhEUVVGRE8yZENRVU51UXl4NVJFRkJlVVE3WjBKQlEzcEVMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xGRkJRVkVzUlVGQlJTeFRRVUZUTzJGQlEzQkNMRU5CUVVNc1EwRkJRenRUUVVOS08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUTNKQ0xFTkJRVU03UTBGRFJqdEJRVVZFTEUxQlFVMHNUMEZCVHl4VlFVRlZPMGxCY1Vka0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCYVVJc1RVRkJUVHRSUVVNNVF5eFJRVUZSTEUxQlFVMHNSVUZCUlR0WlFVTm9RaXhMUVVGTExFMUJRVTA3WjBKQlExUXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdXVUZEZGtNc1MwRkJTeXhOUVVGTk8yZENRVU5VTEU5QlFVOHNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEycERPMmRDUVVORkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNlVUpCUVhsQ0xFMUJRVTBzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRUUVVOeVJUdEpRVU5JTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlV6dFJRVU51UXl4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGFFSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMllzU1VGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUldZc1MwRkJTeXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdXVUZEY0VJc1NVRkJTU3hKUVVGSkxFbEJRVWtzUjBGQlJ6dG5Ra0ZEWWl4UFFVRlBMRVZCUVVVc1EwRkJRenRwUWtGRFVDeEpRVUZKTEVsQlFVa3NTVUZCU1N4SFFVRkhPMmRDUVVOc1FpeFBRVUZQTEVWQlFVVXNRMEZCUXp0cFFrRkRVQ3hKUVVGSkxFOUJRVTg3WjBKQlEyUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenM3WjBKQlJXUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenRUUVVOcVFqdFJRVVZFTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU5vUlN4RFFVRkRPMGxCUlUwc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eFZRVUZyUWl4RlFVRkZMRVZCUVVVc1UwRkJhVUlzVFVGQlRUczdVVUZEZWtVc2MwUkJRWE5FTzFGQlEzUkVMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU53UkN4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGREwwUXNXVUZCV1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZETTBZc1dVRkJXU3hIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkZNMFlzU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMWxCUXpWRExFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXd3UTBGQlJTeFhRVUZYTEVWQlFVY3NRMEZCUXp0WlFVTjZReXhQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNoRU8xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4dFFrRkJiVUlzUlVGQlJUdFpRVU16UkN4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVU3WjBKQlF6VkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFMUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl3d1EwRkJSU3hYUVVGWExFVkJRVWNzUTBGQlF6dG5Ra0ZEZWtNc1QwRkJUeXhMUVVGTExFbEJRVWtzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenR2UWtGRGJrTXNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNeFJDeERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1dVRkJXU3hGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTjRSRHRUUVVOR08xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMWxCUXk5RExFbEJRVWtzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlR0blFrRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40UkN4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMjlDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEzaEVPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVUVzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJTeExRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVNelF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1owSkJReTlETEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSVHR2UWtGRE5VTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTjRSQ3hQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8zZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVONFJEdGhRVU5HTzFOQlEwWTdVVUZGUkN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemxFTEVOQlFVTTdPMEZCY0V4bExHdENRVUZQTEVkQlFWY3NXVUZCV1N4RFFVRkRPMEZCUlM5Q0xHMURRVUYzUWl4SFFVRlhMRFpDUVVFMlFpeERRVUZETzBGQlJURkZMSGxDUVVGakxFZEJRVWNzYTBKQlFXdENMRU5CUVVNN1FVRkZOMElzWjBKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1UwRkJVenRKUVVOa0xFZEJRVWNzUlVGQlJTeFZRVUZWTzBsQlEyWXNSMEZCUnl4RlFVRkZMRkZCUVZFN1NVRkRZaXhIUVVGSExFVkJRVVVzWlVGQlpUdEpRVU53UWl4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNaVUZCWlR0SlFVTndRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1pVRkJaVHRKUVVOd1FpeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNXVUZCV1R0SlFVTnFRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1YwRkJWenREUVVOcVFpeERRVUZETzBGQlJWa3NiVUpCUVZFc1IwRkJjVUk3U1VGRGVrTXNSMEZCUnl4RlFVRkZMRlZCUVZVN1NVRkRaaXhIUVVGSExFVkJRVVVzYzBKQlFYTkNPMGxCUXpOQ0xFZEJRVWNzUlVGQlJTd3lRa0ZCTWtJN1NVRkRhRU1zUjBGQlJ5eEZRVUZGTEdOQlFXTTdTVUZEYmtJc1IwRkJSeXhGUVVGRkxIbENRVUY1UWp0SlFVTTVRaXhIUVVGSExFVkJRVVVzZVVKQlFYbENPMGxCUXpsQ0xFZEJRVWNzUlVGQlJTeDNRa0ZCZDBJN1NVRkROMElzUjBGQlJ5eEZRVUZGTEhkQ1FVRjNRanRKUVVNM1FpeEhRVUZITEVWQlFVVXNkMEpCUVhkQ08wbEJRemRDTEVkQlFVY3NSVUZCUlN4cFFrRkJhVUk3U1VGRGRFSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc01FSkJRVEJDTzBsQlF5OUNMRWRCUVVjc1JVRkJSU3gzUWtGQmQwSTdTVUZETjBJc1IwRkJSeXhGUVVGRkxHMUNRVUZ0UWp0SlFVTjRRaXhIUVVGSExFVkJRVVVzYVVKQlFXbENPMGxCUTNSQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEc5RFFVRnZRenRKUVVONlF5eEhRVUZITEVWQlFVVXNNRUpCUVRCQ08wbEJReTlDTEVkQlFVY3NSVUZCUlN4blFrRkJaMEk3U1VGRGNrSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdERRVU4yUWl4RFFVRkRPMEZCUlZrc05FSkJRV2xDTEVkQlFYRkNPMGxCUTJ4RUxFZEJRVWNzUlVGQlJTeExRVUZMTzBsQlExWXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc2MwSkJRWE5DTzBsQlF6TkNMRWRCUVVjc1JVRkJSU3hWUVVGVk8wbEJRMllzUjBGQlJ5eEZRVUZGTEc5Q1FVRnZRanRKUVVONlFpeEhRVUZITEVWQlFVVXNjVUpCUVhGQ08wbEJRekZDTEVkQlFVY3NSVUZCUlN4dFFrRkJiVUk3U1VGRGVFSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2NVSkJRWEZDTzBsQlF6RkNMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4alFVRmpPMGxCUTI1Q0xFZEJRVWNzUlVGQlJTeHhRa0ZCY1VJN1NVRkRNVUlzUjBGQlJ5eEZRVUZGTEcxQ1FVRnRRanRKUVVONFFpeEhRVUZITEVWQlFVVXNaMEpCUVdkQ08wbEJRM0pDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeGhRVUZoTzBsQlEyeENMRWRCUVVjc1JVRkJSU3dyUWtGQkswSTdTVUZEY0VNc1IwRkJSeXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXhRaXhIUVVGSExFVkJRVVVzVjBGQlZ6dEpRVU5vUWl4SFFVRkhMRVZCUVVVc1dVRkJXVHREUVVOc1FpeERRVUZETzBGQlJVWTdSMEZEUnp0QlFVTlhMSE5DUVVGWExFZEJRWEZDTzBsQlF6VkRMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdRMEZEV0N4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibHh1YVcxd2IzSjBJSHRUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdVc0lGTmxjVkJoYkdWMGRHVkNZWE5sZlNCbWNtOXRJQ2N1TDNObGNTMXdZV3hsZEhSbGN5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHeGxjMnM2SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnVEdWemF5Z3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVzWlhOcklEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWJHVnpheUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZEhKeXdnSjBFbkxDQW5VeWNzSUNkVUoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJQ0FnVzFzblF5Y3NJQ2RXSnl3Z0owa25MQ0FuVENjc0lDZFFKeXdnSjBZbkxDQW5XU2NzSUNkTkp5d2dKMWNuWFN3Z0oyRnNiRjluY21WbGJpZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkT0p5d2dKMUVuTENBblNDZGRMQ0FuYldGblpXNTBZU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKM0psWkNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRMSnl3Z0oxSW5YU3dnSjJGc2JGOWliSFZsSjEwc1hHNGdJQ0FnSUNCZExDQm1ZV3h6WlN3Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWektUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWJHVnphenRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR2R5YjJ0SGNtOTFjSE02SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnUjNKdmEwZHliM1Z3Y3lncE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NW5jbTlyUjNKdmRYQnpJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVaM0p2YTBkeWIzVndjeUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZERKeXdnSjFVblhTd2dKM2xsYkd4dmR5ZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkSEp5d2dKMUFuWFN3Z0ozSmxaQ2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEJKeXdnSjFZbkxDQW5TU2NzSUNkTUp5d2dKMDBuTENBblJpY3NJQ2RaSnl3Z0oxY25YU3dnSjJGc2JGOW5jbVZsYmlkZExGeHVJQ0FnSUNBZ0lDQmJXeWRTSnl3Z0owZ25MQ0FuU3lkZExDQW5iR2xuYUhSZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKMlJoY210ZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZFRKeXdnSjFRbkxDQW5UaWNzSUNkUkoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJRjBzSUdaaGJITmxMQ0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVuY205clIzSnZkWEJ6TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nY21GelRXOXNPaUJUWlhGUVlXeGxkSFJsTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBJRkpoYzAxdmJDZ3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV5WVhOTmIyd2dQVDA5SUhadmFXUWdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXlZWE5OYjJ3Z1BTQnVaWGNnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6S0h0Y2JpQWdJQ0FnSUNBZ0x5OGdhSFIwY0RvdkwyRmpZMlZ6TG1WdWN5MXNlVzl1TG1aeUwySnBiM1JwWXk5eVlYTjBiM0F2YUdWc2NDOWpiMnh2ZFhJdWFIUnRYRzRnSUNBZ0lDQWdJQ2RFSnpvZ0p5TkZOakJCTUVFbkxDQXZMeUJoYzNBc0lHRnpjR0Z5ZEdsaklHRmphV1FzSUdGemNGeHVJQ0FnSUNBZ0lDQW5SU2M2SUNjalJUWXdRVEJCSnl3Z0x5OGdaMngxTENCbmJIVjBZVzFwWXlCaFkybGtYRzRnSUNBZ0lDQWdJQ2RESnpvZ0p5TkZOa1UyTURBbkxDQXZMeUJqZVhNc0lHTjVjM1JsYVc1bFhHNGdJQ0FnSUNBZ0lDZE5Kem9nSnlORk5rVTJNREFuTENBdkx5QnRaWFFzSUcxbGRHaHBiMjVwYm1WY2JpQWdJQ0FnSUNBZ0owc25PaUFuSXpFME5VRkdSaWNzSUM4dklHeDVjeXdnYkhsemFXNWxYRzRnSUNBZ0lDQWdJQ2RTSnpvZ0p5TXhORFZCUmtZbkxDQXZMeUJoY21jc0lHRnlaMmx1YVc1bFhHNGdJQ0FnSUNBZ0lDZFRKem9nSnlOR1FUazJNREFuTENBdkx5QnpaWElzSUhObGNtbHVaVnh1SUNBZ0lDQWdJQ0FuVkNjNklDY2pSa0U1TmpBd0p5d2dMeThnZEdoeUxDQjBhSEpsYjI1cGJtVmNiaUFnSUNBZ0lDQWdKMFluT2lBbkl6TXlNekpCUVNjc0lDOHZJSEJvWlN3Z2NHaGxibmxzWVd4aGJtbHVaVnh1SUNBZ0lDQWdJQ0FuV1NjNklDY2pNekl6TWtGQkp5d2dMeThnZEhseUxDQjBlWEp2YzJsdVpWeHVJQ0FnSUNBZ0lDQW5UaWM2SUNjak1EQkVRMFJESnl3Z0x5OGdZWE51TENCaGMzQmhjbUZuYVc1bFhHNGdJQ0FnSUNBZ0lDZFJKem9nSnlNd01FUkRSRU1uTENBdkx5Qm5iRzRzSUdkc2RYUmhiV2x1WlZ4dUlDQWdJQ0FnSUNBblJ5YzZJQ2NqUlVKRlFrVkNKeXdnTHk4Z1oyeDVMQ0JuYkhsamFXNWxYRzRnSUNBZ0lDQWdJQ2RNSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJzWlhVc0lHeGxkV05wYm1WY2JpQWdJQ0FnSUNBZ0oxWW5PaUFuSXpCR09ESXdSaWNzSUM4dklIWmhiQ3dnZG1Gc2FXNWxYRzRnSUNBZ0lDQWdJQ2RKSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJwYkdVc0lHbHpiMnhsZFdOcGJtVmNiaUFnSUNBZ0lDQWdKMEVuT2lBbkkwTTRRemhET0Njc0lDOHZJR0ZzWVN3Z1lXeGhibWx1WlZ4dUlDQWdJQ0FnSUNBblZ5YzZJQ2NqUWpRMVFVSTBKeXdnTHk4Z2RISndMQ0IwY25sd2RHOXdhR0Z1WEc0Z0lDQWdJQ0FnSUNkSUp6b2dKeU00TWpneVJESW5MQ0F2THlCb2FYTXNJR2hwYzNScFpHbHVaVnh1SUNBZ0lDQWdJQ0FuVUNjNklDY2pSRU01TmpneUp5d2dMeThnY0hKdkxDQndjbTlzYVc1bFhHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5JMEpGUVRBMlJTY3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjbUZ6VFc5c08xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCQmJXbHViMkZqYVdSeklIdGNiaUFnYzNSaGRHbGpJSEpsWVdSdmJteDVJRk5sYlZSNWNHVTZJSE4wY21sdVp5QTlJQ2RCYldsdWIyRmphV1J6Snp0Y2JseHVJQ0J6ZEdGMGFXTWdjbVZoWkc5dWJIa2dVMlZ0Vkhsd1pVMTFiSFJwY0d4bFFXeHBaMjV0Wlc1ME9pQnpkSEpwYm1jZ1BTQW5RVzFwYm05aFkybGtjMDExYkhScGNHeGxRV3hwWjI1dFpXNTBKenRjYmx4dUlDQnpkR0YwYVdNZ2RXNWtaV1pwYm1Wa1EyOXNiM0lnUFNBbmNtZGlLREV3TUN3eE1EQXNNVEF3S1NjN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qk9ZVzFsY3pvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblJ5YzZJQ2RIYkhsamFXNWxKeXhjYmlBZ0lDQW5UQ2M2SUNkTVpYVmphVzVsSnl4Y2JpQWdJQ0FuV1NjNklDZFVlWEp2YzJsdVpTY3NYRzRnSUNBZ0oxTW5PaUFuVTJWeWFXNWxKeXhjYmlBZ0lDQW5SU2M2SUNkSGJIVjBZVzFwWXlCaFkybGtKeXhjYmlBZ0lDQW5VU2M2SUNkSGJIVjBZVzFwYm1VbkxGeHVJQ0FnSUNkRUp6b2dKMEZ6Y0dGeWRHbGpJR0ZqYVdRbkxGeHVJQ0FnSUNkT0p6b2dKMEZ6Y0dGeVlXZHBibVVuTEZ4dUlDQWdJQ2RHSnpvZ0oxQm9aVzU1YkdGc1lXNXBibVVuTEZ4dUlDQWdJQ2RCSnpvZ0owRnNZVzVwYm1VbkxGeHVJQ0FnSUNkTEp6b2dKMHg1YzJsdVpTY3NYRzRnSUNBZ0oxSW5PaUFuUVhKbmFXNXBibVVuTEZ4dUlDQWdJQ2RJSnpvZ0owaHBjM1JwWkdsdVpTY3NYRzRnSUNBZ0owTW5PaUFuUTNsemRHVnBibVVuTEZ4dUlDQWdJQ2RXSnpvZ0oxWmhiR2x1WlNjc1hHNGdJQ0FnSjFBbk9pQW5VSEp2YkdsdVpTY3NYRzRnSUNBZ0oxY25PaUFuVkhKNWNIUnZjR2hoYmljc1hHNGdJQ0FnSjBrbk9pQW5TWE52YkdWMVkybHVaU2NzWEc0Z0lDQWdKMDBuT2lBblRXVjBhR2x2Ym1sdVpTY3NYRzRnSUNBZ0oxUW5PaUFuVkdoeVpXOXVhVzVsSnl4Y2JpQWdmVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUVGQlUyMXBiR1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkSEp6b2dKMDVEUXlnOVR5bFBKeXhjYmlBZ0lDQW5UQ2M2SUNkT1cwTkFTRjBvUTBNb1F5bERLVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxa25PaUFuVGtNb1EwTXhQVU5EUFVNb1R5bERQVU14S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMU1uT2lBblRrTW9RMDhwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SU2M2SUNkT1cwTkFRRWhkS0VORFF5aFBLVDFQS1VNb1BVOHBUeWNzWEc0Z0lDQWdKMUVuT2lBblRsdERRRUJJWFNoRFEwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RFSnpvZ0owNWJRMEJBU0Ywb1EwTW9UeWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RPSnpvZ0owNWJRMEJBU0Ywb1EwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RHSnpvZ0owNURLRU5ETVQxRFF6MURRejFETVNsREtEMVBLVThuTEZ4dUlDQWdJQ2RCSnpvZ0owNWJRMEJJWFNoREtVTW9QVThwVHljc1hHNGdJQ0FnSjBzbk9pQW5Ua01vUTBORFEwNHBReWc5VHlsUEp5eGNiaUFnSUNBblVpYzZJQ2RPVzBOQVNGMG9RME5EVGtNb1BVNHBReWxES0QxUEtVOG5MRnh1SUNBZ0lDZElKem9nSjA1REtFTkRNVDFEVGoxRFcwNWRNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZERKem9nSjA1YlEwQkFTRjBvUTFNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVmljNklDZE9ReWhES0VNcFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkUUp6b2dKMDRvUTBORE1TbERNVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxY25PaUFuVGx0RFFFQklYU2hEWXpGak1tTmpZMk5qTW00b1cwaGRLV014S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMGtuT2lBblRsdERRRWhkS0Z0RFFFaGRLRU1wUTBNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVFNjNklDZE9ReWhEUTFOREtVTW9QVThwVHljc1hHNGdJQ0FnSjFRbk9pQW5Ua01vUXloUEtVTXBReWc5VHlsUEp5eGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFRkJVMjFwYkdWelZISjFibU5oZEdWa09pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEhKem9nSnlwREtpY3NYRzRnSUNBZ0owd25PaUFuUTBNb1F5bERXME5BU0Ywb0tpa3FKeXhjYmlBZ0lDQW5XU2M2SUNkRE1UMURReWc5UTBNOVF6RkRReWdxS1NvcFR5Y3NYRzRnSUNBZ0oxTW5PaUFuVDBOREtDb3BReW9uTEZ4dUlDQWdJQ2RGSnpvZ0p5cGJRMEJBU0Ywb1EwTkRLRThwUFU4cEtpY3NYRzRnSUNBZ0oxRW5PaUFuS2s1YlEwQkFTRjBvUTBOREtFNHBQVThwS2ljc1hHNGdJQ0FnSjBRbk9pQW5LbHREUUVCSVhTaERReWhQS1QxUEtTb25MRnh1SUNBZ0lDZE9Kem9nSnlwYlEwQkFTRjBvUTBNb1RpazlUeWtxSnl4Y2JpQWdJQ0FuUmljNklDZERNVDFEUXoxREtFTTlRekVwUTBNb0tpa3FKeXhjYmlBZ0lDQW5RU2M2SUNkRFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblN5YzZJQ2RES0VORFRpbERReWdxS1NvbkxGeHVJQ0FnSUNkU0p6b2dKeXBiUTBCSVhTaERRME5PUXlnOVRpbERLU29uTEZ4dUlDQWdJQ2RJSnpvZ0owTXhQVU1vVGtNOVRqRXBRME1vS2lrcUp5eGNiaUFnSUNBblF5YzZJQ2RES0Z0RFFFQklYU2dxS1NvcFV5Y3NYRzRnSUNBZ0oxWW5PaUFuUTBNb1F5bERLQ29wS2ljc1hHNGdJQ0FnSjFBbk9pQW5RekZEUTA0b0tpbERNU29uTEZ4dUlDQWdJQ2RYSnpvZ0p5cGJRMEJBU0Ywb1EyTXhZekpqWTJOall6SnVLRnRJWFNsak1Ta3FKeXhjYmlBZ0lDQW5TU2M2SUNkRFExdERRRWhkS0VNcFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblRTYzZJQ2REVTBORFF5Z3FLU29uTEZ4dUlDQWdJQ2RVSnpvZ0owTkRLRThwUXlncUtTb25MRnh1SUNCOU8xeHVYRzRnSUM4cUtpQlVUMFJQT2lCR2RXeHNQMXh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkJRVVoxYkd4T1lXMWxjem9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUh0Y2JpQWdJQ0FuUVd4aEp6b2dKMEVuTEZ4dUlDQWdJQ2RCY21jbk9pQW5VaWNzWEc0Z0lDQWdKMEZ6YmljNklDZE9KeXhjYmlBZ0lDQW5RWE53SnpvZ0owUW5MRnh1SUNBZ0lDZERlWE1uT2lBblF5Y3NYRzRnSUNBZ0owZHNiaWM2SUNkUkp5eGNiaUFnSUNBblIyeDFKem9nSjBVbkxGeHVJQ0FnSUNkSGJIa25PaUFuUnljc1hHNGdJQ0FnSjBocGN5YzZJQ2RJSnl4Y2JpQWdJQ0FuU1d4bEp6b2dKMGtuTEZ4dUlDQWdJQ2RNWlhVbk9pQW5UQ2NzWEc0Z0lDQWdKMHg1Y3ljNklDZExKeXhjYmlBZ0lDQW5UV1YwSnpvZ0owMG5MRnh1SUNBZ0lDZFFhR1VuT2lBblJpY3NYRzRnSUNBZ0oxQnlieWM2SUNkUUp5eGNiaUFnSUNBblUyVnlKem9nSjFNbkxGeHVJQ0FnSUNkVWFISW5PaUFuVkNjc1hHNGdJQ0FnSjFSeWNDYzZJQ2RYSnl4Y2JpQWdJQ0FuVkhseUp6b2dKMWtuTEZ4dUlDQWdJQ2RXWVd3bk9pQW5WaWNzWEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhSUVlXeGxkSFJsS0hOamFHVnRaVG9nYzNSeWFXNW5JRDBnSjJkeWIyc25LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYzNkcGRHTm9JQ2h6WTJobGJXVXBJSHRjYmlBZ0lDQmpZWE5sSUNkbmNtOXJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjenRjYmlBZ0lDQmpZWE5sSUNkc1pYTnJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVUR1Z6YXp0Y2JpQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkRhR1Z0VUdGc1pYUjBaVG9nYzJOb1pXMWxJRnhjWUNSN2MyTm9aVzFsZlZ4Y1lDQmtiMlZ6SUc1dmRDQmxlR2x6ZEdBcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHUnBkbWxrWldRZ1lXMXBibThnWVdOcFpDQjNhWFJvSUdsMGN5QmpiMjUwWlc1MElHbHVJSFJvWlNCaWNtRmphMlYwTENCcFppQjBhR1VnWTI5dWRHVnVkQ0JwY3lCdWRXMWlaWElzSUhSb1pXNGdhWFJ6SUc5dGFYUjBaV1JjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdNZ2NtRjNJR0Z0YVc1dlhHNGdJQ0FxSUVCeVpYUjFjbTRnZTF0emRISnBibWNzSUhOMGNtbHVaMTE5SUc5MWRHVnlJR0Z1WkNCcGJtNWxjaUJqYjI1MFpXNTBYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkRWx1Ym1WeVQzVjBaWElvWXpvZ2MzUnlhVzVuS1RvZ1czTjBjbWx1Wnl3Z2MzUnlhVzVuWFNCN1hHNGdJQ0FnYkdWMElHbHpTVzV1WlhJZ1BTQXdPMXh1SUNBZ0lHeGxkQ0JwYm01bGNpQTlJQ2NuTzF4dUlDQWdJR3hsZENCdmRYUmxjaUE5SUNjbk8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmphR0Z5SUc5bUlHTXBJSHRjYmlBZ0lDQWdJR2xtSUNoamFHRnlJRDA5SUNjb0p5bGNiaUFnSUNBZ0lDQWdhWE5KYm01bGNpc3JPMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9ZMmhoY2lBOVBTQW5LU2NwWEc0Z0lDQWdJQ0FnSUdselNXNXVaWEl0TFR0Y2JpQWdJQ0FnSUdWc2MyVWdhV1lnS0dselNXNXVaWElwWEc0Z0lDQWdJQ0FnSUdsdWJtVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUc5MWRHVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUNGcGMwNWhUaWh3WVhKelpVbHVkQ2hwYm01bGNpa3BJRDhnVzI5MWRHVnlMQ0FuSjEwZ09pQmJiM1YwWlhJc0lHbHVibVZ5WFR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFEyOXNiM0pCUVZCcGRtOTBLRzF2Ym05dFpYSTZJSE4wY21sdVp5QTlJQ2NuTENCelkyaGxiV1U2SUNkbmNtOXJKeUE5SUNkbmNtOXJKeWs2SUZ0emRISnBibWNzSUhOMGNtbHVaeXdnYzNSeWFXNW5MQ0J1ZFcxaVpYSmRJSHRjYmlBZ0lDQXZMMk52Ym5OMElHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQU0JCUVZCaGJHVjBkR1Z6TGtkeWIydEhjbTkxY0hNb0tUdGNiaUFnSUNCamIyNXpkQ0JqYUdWdFVHRnNaWFIwWlVsdWMzUmhibU5sSUQwZ2RHaHBjeTVuWlhSUVlXeGxkSFJsS0hOamFHVnRaU2s3WEc0Z0lDQWdiR1YwSUZ0dmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2wwZ1BTQjBhR2x6TG1kbGRFbHVibVZ5VDNWMFpYSW9iVzl1YjIxbGNpazdYRzRnSUNBZ2IzVjBaWEpOYjI1dmJXVnlJRDBnS0c5MWRHVnlUVzl1YjIxbGNpNXNaVzVuZEdnZ1BpQTJJRDhnWUNSN2IzVjBaWEpOYjI1dmJXVnlMbk5zYVdObEtEQXNJRE1wZlM0dUxtQWdPaUJ2ZFhSbGNrMXZibTl0WlhJcE8xeHVJQ0FnSUdsdWJtVnlUVzl1YjIxbGNpQTlJQ2hwYm01bGNrMXZibTl0WlhJdWJHVnVaM1JvSUQ0Z05pQS9JR0FrZTJsdWJtVnlUVzl1YjIxbGNpNXpiR2xqWlNnd0xDQXpLWDB1TGk1Z0lEb2dhVzV1WlhKTmIyNXZiV1Z5S1R0Y2JseHVJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQXhJSHg4SUcxdmJtOXRaWEpiTVYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JoYldsdWJ5QTlJRzF2Ym05dFpYSmJNRjAvTG5SdlZYQndaWEpEWVhObEtDa2hPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F4WFNBNlhHNGdJQ0FnSUNBZ0lGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTVYwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHMXZibTl0WlhKYk1GMGdQVDBnSjJRbklDWW1JRzF2Ym05dFpYSmJNVjBoSUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBeUlIeDhJRzF2Ym05dFpYSmJNbDBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0Z0YVc1dklEMGdiVzl1YjIxbGNsc3hYVDh1ZEc5VmNIQmxja05oYzJVb0tTRTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhiV2x1YnlCcGJpQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxJRDljYmlBZ0lDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBeVhTQTZYRzRnSUNBZ0lDQWdJQ0FnVzNSb2FYTXVkVzVrWldacGJtVmtRMjlzYjNJc0lHOTFkR1Z5VFc5dWIyMWxjaXdnYVc1dVpYSk5iMjV2YldWeUxDQXlYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYlc5dWIyMWxjaTV6ZFdKemRISnBibWNvTUN3Z015a2dhVzRnZEdocGN5NUJRVVoxYkd4T1lXMWxjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHMXZibTl0WlhJdWJHVnVaM1JvSUQwOUlETWdmSHdnYlc5dWIyMWxjbHN6WFNBOVBTQW5LQ2NwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWVcxcGJtOGdQU0IwYUdsekxrRkJSblZzYkU1aGJXVnpXMjF2Ym05dFpYSXVjM1ZpYzNSeWFXNW5LREFzSURNcFhUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0FnSUZ0amFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObExtZGxkQ2hoYldsdWJ5a3NJR0Z0YVc1dkxDQnBibTVsY2sxdmJtOXRaWElzSUROZElEcGNiaUFnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lETmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h0YjI1dmJXVnlXekJkUHk1MGIweHZkMlZ5UTJGelpTZ3BJRDA5SUcxdmJtOXRaWEpiTUYwcElIdGNiaUFnSUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbk4xWW5OMGNtbHVaeWd4TENBektTQnBiaUIwYUdsekxrRkJSblZzYkU1aGJXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQTBJSHg4SUcxdmJtOXRaWEpiTkYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1lXMXBibThnUFNCMGFHbHpMa0ZCUm5Wc2JFNWhiV1Z6VzIxdmJtOXRaWEl1YzNWaWMzUnlhVzVuS0RFc0lETXBYVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVcxcGJtOGdhVzRnWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlNBL1hHNGdJQ0FnSUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0EwWFNBNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lEUmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTUYwN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IENocm9tYXRvZ3JhbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hyb21hdG9ncmFtID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMuY2hyb21hdG9ncmFtID0gbmV3IE51Y2xlb3RpZGVzUGFsZXR0ZXMoe1xuICAgICAgICAgICAgICAgICdBJzogJ2dyZWVuJyxcbiAgICAgICAgICAgICAgICAnQyc6ICdibHVlJyxcbiAgICAgICAgICAgICAgICAnRyc6ICdibGFjaycsXG4gICAgICAgICAgICAgICAgJ1QnOiAncmVkJywgJ1UnOiAncmVkJyxcbiAgICAgICAgICAgICAgICAnb3RoZXJzJzogJ2dyYXknLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2hyb21hdG9ncmFtO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlcyB7XG59XG5OdWNsZW90aWRlcy5TZW1UeXBlID0gJ051Y2xlb3RpZGVzJztcbk51Y2xlb3RpZGVzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudCA9ICdOdWNsZW90aWRlc011bHRpcGxlQWxpZ25tZW50Jztcbk51Y2xlb3RpZGVzLk5hbWVzID0ge1xuICAgICdBJzogJ0FkZW5pbmUnLFxuICAgICdDJzogJ0N5dG9zaW5lJyxcbiAgICAnRyc6ICdHdWFuaW5lJyxcbiAgICAnVCc6ICdUaHltaW5lJyxcbiAgICAnVSc6ICdVcmFjaWwnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJuVmpiR1Z2ZEdsa1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKdWRXTnNaVzkwYVdSbGN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZMUVN4UFFVRlBMRVZCUVdFc1kwRkJZeXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkZNVVFzVFVGQlRTeFBRVUZQTEcxQ1FVRnZRaXhUUVVGUkxHTkJRV003U1VGSE9VTXNUVUZCVFN4TFFVRkxMRmxCUVZrN1VVRkROVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMmhETEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXp0blFrRkRNVU1zUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFMUJRVTA3WjBKQlExZ3NSMEZCUnl4RlFVRkZMRTlCUVU4N1owSkJRMW9zUjBGQlJ5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZCUVVVc1MwRkJTenRuUWtGRGRFSXNVVUZCVVN4RlFVRkZMRTFCUVUwN1lVRkRha0lzUTBGQlF5eERRVUZETzFOQlEwbzdVVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03U1VGRE0wSXNRMEZCUXp0RFFVTkdPMEZCUlVRc1RVRkJUU3hQUVVGUExGZEJRVmM3TzBGQlEwNHNiVUpCUVU4c1IwRkJWeXhoUVVGaExFTkJRVU03UVVGRmFFTXNiME5CUVhkQ0xFZEJRVmNzT0VKQlFUaENMRU5CUVVNN1FVRkZjRVVzYVVKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeFRRVUZUTzBsQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1NVRkRaQ3hIUVVGSExFVkJRVVVzVVVGQlVUdERRVU5rTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdlMU4wY21sdVowUnBZM1JwYjI1aGNubDlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3VTJWeFVHRnNaWFIwWlN3Z1UyVnhVR0ZzWlhSMFpVSmhjMlY5SUdaeWIyMGdKeTR2YzJWeExYQmhiR1YwZEdWekp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHTm9jbTl0WVhSdlozSmhiVG9nVTJWeFVHRnNaWFIwWlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkQ0JEYUhKdmJXRjBiMmR5WVcwb0tUb2dVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVZMmh5YjIxaGRHOW5jbUZ0SUQwOVBTQjJiMmxrSURBcElIdGNiaUFnSUNBZ0lIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMGdibVYzSUU1MVkyeGxiM1JwWkdWelVHRnNaWFIwWlhNb2UxeHVJQ0FnSUNBZ0lDQW5RU2M2SUNkbmNtVmxiaWNzWEc0Z0lDQWdJQ0FnSUNkREp6b2dKMkpzZFdVbkxGeHVJQ0FnSUNBZ0lDQW5SeWM2SUNkaWJHRmpheWNzSUM4dklHOXlZVzVuWlNBL1hHNGdJQ0FnSUNBZ0lDZFVKem9nSjNKbFpDY3NJQ2RWSnpvZ0ozSmxaQ2NzWEc0Z0lDQWdJQ0FnSUNkdmRHaGxjbk1uT2lBblozSmhlU2NzWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WTJoeWIyMWhkRzluY21GdE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCT2RXTnNaVzkwYVdSbGN5QjdYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxPaUJ6ZEhKcGJtY2dQU0FuVG5WamJHVnZkR2xrWlhNbk8xeHVYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxUWFZzZEdsd2JHVkJiR2xuYm0xbGJuUTZJSE4wY21sdVp5QTlJQ2RPZFdOc1pXOTBhV1JsYzAxMWJIUnBjR3hsUVd4cFoyNXRaVzUwSnp0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFNWhiV1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkQkp6b2dKMEZrWlc1cGJtVW5MRnh1SUNBZ0lDZERKem9nSjBONWRHOXphVzVsSnl4Y2JpQWdJQ0FuUnljNklDZEhkV0Z1YVc1bEp5eGNiaUFnSUNBblZDYzZJQ2RVYUhsdGFXNWxKeXhjYmlBZ0lDQW5WU2M2SUNkVmNtRmphV3duTEZ4dUlDQjlPMXh1ZlZ4dUlsMTkiLCJleHBvcnQgY2xhc3MgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhbGV0dGUpIHtcbiAgICAgICAgdGhpcy5fcGFsZXR0ZSA9IHBhbGV0dGU7XG4gICAgfVxuICAgIHN0YXRpYyBtYWtlUGFsZXR0ZShkdCwgc2ltcGxpZmllZCA9IGZhbHNlLCBQYWxldHRlVHlwZSA9IFNlcVBhbGV0dGVCYXNlKSB7XG4gICAgICAgIGNvbnN0IHBhbGV0dGUgPSB7fTtcbiAgICAgICAgZHQuZm9yRWFjaCgoY3ApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9iakxpc3QgPSBjcFswXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbG91ciA9IGNwWzFdO1xuICAgICAgICAgICAgb2JqTGlzdC5mb3JFYWNoKChvYmosIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIHBhbGV0dGVbb2JqXSA9IHRoaXMuY29sb3VyUGFsZXR0ZVtjb2xvdXJdW3NpbXBsaWZpZWQgPyAwIDogaW5kXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBQYWxldHRlVHlwZShwYWxldHRlKTtcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhbGV0dGVbbV07XG4gICAgfVxufVxuU2VxUGFsZXR0ZUJhc2UudW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG4vKiogUGFsZXR0ZSB3aXRoIHNoYWRlcyBvZiBwcmltYXJ5IGNvbG9ycyAqL1xuU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSA9IHtcbiAgICAnb3JhbmdlJzogWydyZ2IoMjU1LDE4NywxMjApJywgJ3JnYigyNDUsMTY3LDEwMCknLCAncmdiKDIzNSwxMzcsNzApJywgJ3JnYigyMDUsIDExMSwgNzEpJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknLCAncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLFxuICAgICAgICAncmdiKDI0LDExMCw3OSknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ2FsbF9ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxMjIsIDEwMiwgMTg5KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxNDEsIDEyNCwgMjE3KScsXG4gICAgICAgICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdtYWdlbnRhJzogWydyZ2IoMTYyLDEwNiwxOTIpJywgJ3JnYigxOTcsMTY1LDIyNCknLCAncmdiKDIwOCwxMTMsMjE4KSddLFxuICAgICdyZWQnOiBbJ3JnYigyMTQsMzksNDApJywgJ3JnYigyNTUsMTUyLDE1MCknXSxcbiAgICAnc3RfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDMxLDExOSwxODApJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxMDgsIDIxOCwgMjI5KScsICdyZ2IoMjMsMTkwLDIyNyknXSxcbiAgICAnbGlsYWNfYmx1ZSc6IFsncmdiKDEyNCwxMDIsMjExKScsICdyZ2IoMTQ5LDEzNCwyMTcpJywgJ3JnYig5NywgODEsIDE1MCknXSxcbiAgICAnZGFya19ncmVlbic6IFsncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLCAncmdiKDI0LDExMCw3OSknXSxcbiAgICAnZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ2xpZ2h0X2dyZWVuJzogWydyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnc3RfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDM5LCAxNzQsIDk2KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdwaW5rJzogWydyZ2IoMjQ3LDE4MiwyMTApJ10sXG4gICAgJ2Jyb3duJzogWydyZ2IoMTQwLDg2LDc1KScsICdyZ2IoMTAyLCA2MiwgNTQpJ10sXG4gICAgJ2dyYXknOiBbJ3JnYigxMjcsMTI3LDEyNyknLCAncmdiKDE5OSwxOTksMTk5KScsICdyZ2IoMTk2LDE1NiwxNDgpJywgJ3JnYigyMjIsIDIyMiwgMTgwKSddLFxuICAgICd5ZWxsb3cnOiBbJ3JnYigxODgsMTg5LDM0KSddLFxuICAgICd3aGl0ZSc6IFsncmdiKDIzMCwyMzAsMjMwKSddLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhMWEJoYkdWMGRHVnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMyVnhMWEJoYkdWMGRHVnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVdsQ1FTeE5RVUZOTEU5QlFVOHNZMEZCWXp0SlFUSkRla0lzV1VGQldTeFBRVUZuUXp0UlFVTXhReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJiRUpUTEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJkMElzUlVGRGJrUXNWVUZCVlN4SFFVRkhMRXRCUVVzc1JVRkJSU3hqUVVGeFF5eGpRVUZqTzFGQlJYWkZMRTFCUVUwc1QwRkJUeXhIUVVFNFFpeEZRVUZGTEVOQlFVTTdVVUZET1VNc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZPMWxCUTJoQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOMFFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0blFrRkRNMElzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFbEJRVWtzVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGUlRTeEhRVUZITEVOQlFVTXNRMEZCVXp0UlFVTnNRaXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVUlzUTBGQlF6czdRVUZvUkdFc05rSkJRV01zUjBGQlJ5eHJRa0ZCYTBJc1EwRkJRenRCUVVWc1JDdzBRMEZCTkVNN1FVRkRPVUlzTkVKQlFXRXNSMEZCWjBNN1NVRkRla1FzVVVGQlVTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNiVUpCUVcxQ0xFTkJRVU03U1VGRE1VWXNWMEZCVnl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ08xRkJRM0JITEdkQ1FVRm5RaXhGUVVGRkxHdENRVUZyUWl4RlFVRkZMRzlDUVVGdlFpeEZRVUZGTEc5Q1FVRnZRaXhEUVVGRE8wbEJRMjVHTEZWQlFWVXNSVUZCUlN4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxHOUNRVUZ2UWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEc5Q1FVRnZRanRSUVVNdlJ5eHRRa0ZCYlVJc1EwRkJRenRKUVVOMFFpeFRRVUZUTEVWQlFVVXNRMEZCUXl4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0SlFVTjJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0SlFVTTNReXhUUVVGVExFVkJRVVVzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4cFFrRkJhVUlzUTBGQlF6dEpRVU55UlN4WFFVRlhMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF6dEpRVU55UkN4WlFVRlpMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3hwUWtGQmFVSXNRMEZCUXp0SlFVTTVSaXhaUVVGWkxFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4clFrRkJhMElzUTBGQlF6dEpRVU14UlN4WlFVRlpMRVZCUVVVc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4blFrRkJaMElzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTjBSaXhQUVVGUExFVkJRVVVzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTTNReXhoUVVGaExFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU12UlN4VlFVRlZMRVZCUVVVc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTjRSaXhOUVVGTkxFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenRKUVVNMVFpeFBRVUZQTEVWQlFVVXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeHJRa0ZCYTBJc1EwRkJRenRKUVVNdlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU14Uml4UlFVRlJMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0SlFVTTNRaXhQUVVGUExFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenREUVVNNVFpeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUNvZ1lYTWdaM0p2YXlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlozSnZheWM3WEc1cGJYQnZjblFnS2lCaGN5QjFhU0JtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2ZFdrbk8xeHVhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCVFpYRlFZV3hsZEhSbElIdGNiaUFnTHk4Z1ZHaGxjbVVnWVhKbElIUnZieUJ0ZFdOb0lIQnliMkpzWlcwZ2QybDBhQ0JwYm1SbGVHVnlJSEJ5YjNCbGNuUjVJR2x1SUhSNWNHVnpZM0pwY0hRdVhHNGdJQzh2SUM4cUtseHVJQ0F2THlBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JTQk5iMjV2YldWeUlHTm9ZWEpoWTNSbGNseHVJQ0F2THlBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFTnZiRzl5WEc0Z0lDOHZJQ0FxTDF4dUlDQXZMeUJiYlRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuTzF4dUlDQXZLaW9nVFc5dWIyMWxjaUJqYjJ4dmNseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYlNCTmIyNXZiV1Z5WEc0Z0lDQXFMMXh1SUNCblpYUW9iVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVTJWeFVHRnNaWFIwWlVKaGMyVWdhVzF3YkdWdFpXNTBjeUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCMWJtUmxabWx1WldSRGIyeHZjaUE5SUNkeVoySW9NVEF3TERFd01Dd3hNREFwSnp0Y2JseHVJQ0F2S2lvZ1VHRnNaWFIwWlNCM2FYUm9JSE5vWVdSbGN5QnZaaUJ3Y21sdFlYSjVJR052Ykc5eWN5QXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR052Ykc5MWNsQmhiR1YwZEdVNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuVzEwZ2ZTQTlJSHRjYmlBZ0lDQW5iM0poYm1kbEp6b2dXeWR5WjJJb01qVTFMREU0Tnl3eE1qQXBKeXdnSjNKbllpZ3lORFVzTVRZM0xERXdNQ2tuTENBbmNtZGlLREl6TlN3eE16Y3NOekFwSnl3Z0ozSm5ZaWd5TURVc0lERXhNU3dnTnpFcEoxMHNYRzRnSUNBZ0oyRnNiRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtEYzBMREUyTUN3M05Da25MQ0FuY21kaUtESXpMREV3TXl3MU55a25MQ0FuY21kaUtETXdMREV4TUN3NU5pa25MQ0FuY21kaUtEWXdMREV6TVN3NU5Ta25MRnh1SUNBZ0lDQWdKM0puWWlneU5Dd3hNVEFzTnprcEp5d2dKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZGhiR3hmWW14MVpTYzZJRnNuY21kaUtETXhMREV4T1N3eE9EQXBKeXdnSjNKbllpZ3lNeXd4T1RBc01qQTNLU2NzSUNkeVoySW9NVEl5TENBeE1ESXNJREU0T1NrbkxDQW5jbWRpS0RFMU9Dd3lNVGdzTWpJNUtTY3NJQ2R5WjJJb01UUXhMQ0F4TWpRc0lESXhOeWtuTEZ4dUlDQWdJQ0FnSjNKbllpZ3pNU3dnTVRJd0xDQXhOVEFwSjEwc1hHNGdJQ0FnSjIxaFoyVnVkR0VuT2lCYkozSm5ZaWd4TmpJc01UQTJMREU1TWlrbkxDQW5jbWRpS0RFNU55d3hOalVzTWpJMEtTY3NJQ2R5WjJJb01qQTRMREV4TXl3eU1UZ3BKMTBzWEc0Z0lDQWdKM0psWkNjNklGc25jbWRpS0RJeE5Dd3pPU3cwTUNrbkxDQW5jbWRpS0RJMU5Td3hOVElzTVRVd0tTZGRMRnh1SUNBZ0lDZHpkRjlpYkhWbEp6b2dXeWR5WjJJb01qTXNNVGt3TERJd055a25MQ0FuY21kaUtERTFPQ3d5TVRnc01qSTVLU2NzSUNkeVoySW9NekVzTVRFNUxERTRNQ2tuWFN4Y2JpQWdJQ0FuWkdGeWExOWliSFZsSnpvZ1d5ZHlaMklvTXpFc01URTVMREU0TUNrbkxDQW5jbWRpS0RNeExDQXhNakFzSURFMU1Da25YU3hjYmlBZ0lDQW5iR2xuYUhSZllteDFaU2M2SUZzbmNtZGlLREl6TERFNU1Dd3lNRGNwSnl3Z0ozSm5ZaWd4TlRnc01qRTRMREl5T1NrbkxDQW5jbWRpS0RFd09Dd2dNakU0TENBeU1qa3BKeXdnSjNKbllpZ3lNeXd4T1RBc01qSTNLU2RkTEZ4dUlDQWdJQ2RzYVd4aFkxOWliSFZsSnpvZ1d5ZHlaMklvTVRJMExERXdNaXd5TVRFcEp5d2dKM0puWWlneE5Ea3NNVE0wTERJeE55a25MQ0FuY21kaUtEazNMQ0E0TVN3Z01UVXdLU2RkTEZ4dUlDQWdJQ2RrWVhKclgyZHlaV1Z1SnpvZ1d5ZHlaMklvTWpNc01UQXpMRFUzS1Njc0lDZHlaMklvTXpBc01URXdMRGsyS1Njc0lDZHlaMklvTmpBc01UTXhMRGsxS1Njc0lDZHlaMklvTWpRc01URXdMRGM1S1NkZExGeHVJQ0FnSUNkbmNtVmxiaWM2SUZzbmNtZGlLRFEwTERFMk1DdzBOQ2tuTENBbmNtZGlLRGMwTERFMk1DdzNOQ2tuWFN4Y2JpQWdJQ0FuYkdsbmFIUmZaM0psWlc0bk9pQmJKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZHpkRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtERTFNaXd5TWpNc01UTTRLU2NzSUNkeVoySW9NemtzSURFM05Dd2dPVFlwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSjEwc1hHNGdJQ0FnSjNCcGJtc25PaUJiSjNKbllpZ3lORGNzTVRneUxESXhNQ2tuWFN4Y2JpQWdJQ0FuWW5KdmQyNG5PaUJiSjNKbllpZ3hOREFzT0RZc056VXBKeXdnSjNKbllpZ3hNRElzSURZeUxDQTFOQ2tuWFN4Y2JpQWdJQ0FuWjNKaGVTYzZJRnNuY21kaUtERXlOeXd4TWpjc01USTNLU2NzSUNkeVoySW9NVGs1TERFNU9Td3hPVGtwSnl3Z0ozSm5ZaWd4T1RZc01UVTJMREUwT0NrbkxDQW5jbWRpS0RJeU1pd2dNakl5TENBeE9EQXBKMTBzWEc0Z0lDQWdKM2xsYkd4dmR5YzZJRnNuY21kaUtERTRPQ3d4T0Rrc016UXBKMTBzWEc0Z0lDQWdKM2RvYVhSbEp6b2dXeWR5WjJJb01qTXdMREl6TUN3eU16QXBKMTBzWEc0Z0lIMDdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lITjBZWFJwWXlCdFlXdGxVR0ZzWlhSMFpTaGtkRG9nVzNOMGNtbHVaMXRkTENCemRISnBibWRkVzEwc1hHNGdJQ0FnYzJsdGNHeHBabWxsWkNBOUlHWmhiSE5sTENCUVlXeGxkSFJsVkhsd1pUb2dkSGx3Wlc5bUlGTmxjVkJoYkdWMGRHVkNZWE5sSUQwZ1UyVnhVR0ZzWlhSMFpVSmhjMlZjYmlBZ0tTQjdYRzRnSUNBZ1kyOXVjM1FnY0dGc1pYUjBaVG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmU0E5SUh0OU8xeHVJQ0FnSUdSMExtWnZja1ZoWTJnb0tHTndLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J2WW1wTWFYTjBJRDBnWTNCYk1GMDdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyeHZkWElnUFNCamNGc3hYVHRjYmlBZ0lDQWdJRzlpYWt4cGMzUXVabTl5UldGamFDZ29iMkpxTENCcGJtUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2NHRnNaWFIwWlZ0dlltcGRJRDBnZEdocGN5NWpiMnh2ZFhKUVlXeGxkSFJsVzJOdmJHOTFjbDFiYzJsdGNHeHBabWxsWkNBL0lEQWdPaUJwYm1SZE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFZV3hsZEhSbFZIbHdaU2h3WVd4bGRIUmxLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDNCaGJHVjBkR1U2SUhzZ1cyMDZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLSEJoYkdWMGRHVTZJSHNnVzIwNklITjBjbWx1WjEwNklITjBjbWx1WnlCOUtTQjdYRzRnSUNBZ2RHaHBjeTVmY0dGc1pYUjBaU0E5SUhCaGJHVjBkR1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0JoYkdWMGRHVmJiVjA3WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5jbGFzcyBTaWRlQ2hhaW5TY2FsZXMge1xuICAgIHN0YXRpYyBnZXRBdmFpbGFibGVTY2FsZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnNjYWxlcykubWFwKChbaywgX10pID0+IGspO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0U2NhbGUobmFtZSkge1xuICAgICAgICBhc3NlcnQoISh0aGlzLnNjYWxlc1tuYW1lXSA9PT0gdW5kZWZpbmVkKSwgYFNjYWxlICcke25hbWV9JyB3YXMgbm90IGZvdW5kLmApO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZXNbbmFtZV07XG4gICAgfVxufVxuU2lkZUNoYWluU2NhbGVzLnNjYWxlcyA9IHtcbiAgICAvLyBXaW1sZXktV2hpdGUgaW50ZXJmYWNpYWwgaHlkcm9waG9iaWNpdHkgc2NhbGVcbiAgICAnV2ltbGV5V2hpdGUnOiB7XG4gICAgICAgICctJzogMCxcbiAgICAgICAgJ0EnOiAwLjE3LFxuICAgICAgICAnQyc6IC0wLjI0LFxuICAgICAgICAnRCc6IC0wLjA3LFxuICAgICAgICAnRSc6IC0wLjAxLFxuICAgICAgICAnRic6IC0xLjEzLFxuICAgICAgICAnRyc6IDAuMDEsXG4gICAgICAgICdIJzogMC4xNyxcbiAgICAgICAgJ0knOiAtMC4zMSxcbiAgICAgICAgJ0snOiAwLjk5LFxuICAgICAgICAnTCc6IC0wLjU2LFxuICAgICAgICAnTSc6IC0wLjIzLFxuICAgICAgICAnTic6IDAuNDIsXG4gICAgICAgICdQJzogMC40NSxcbiAgICAgICAgJ1EnOiAwLjU4LFxuICAgICAgICAnUic6IDAuODEsXG4gICAgICAgICdTJzogMC4xMyxcbiAgICAgICAgJ1QnOiAwLjE0LFxuICAgICAgICAnVic6IDAuMDcsXG4gICAgICAgICdXJzogLTEuODUsXG4gICAgICAgICdZJzogLTAuOTQsXG4gICAgfSxcbiAgICAnY2F0ZWdvcmlhbCc6IHtcbiAgICAgICAgJy0nOiAwLFxuICAgICAgICAnQSc6IDEsXG4gICAgICAgICdDJzogMixcbiAgICAgICAgJ0QnOiAzLFxuICAgICAgICAnRSc6IDQsXG4gICAgICAgICdGJzogNSxcbiAgICAgICAgJ0cnOiA2LFxuICAgICAgICAnSCc6IDcsXG4gICAgICAgICdJJzogOCxcbiAgICAgICAgJ0snOiA5LFxuICAgICAgICAnTCc6IDEwLFxuICAgICAgICAnTSc6IDExLFxuICAgICAgICAnTic6IDEyLFxuICAgICAgICAnUCc6IDEzLFxuICAgICAgICAnUSc6IDE0LFxuICAgICAgICAnUic6IDE1LFxuICAgICAgICAnUyc6IDE2LFxuICAgICAgICAnVCc6IDE3LFxuICAgICAgICAnVic6IDE4LFxuICAgICAgICAnVyc6IDE5LFxuICAgICAgICAnWSc6IDIwLFxuICAgIH0sXG59O1xuLyoqXG4gKiBDbGFzcyB0byBjYXRlZ29yaWFsIGVuY29kZS9kZWNvZGUgYWxpZ25lZCBhbWlubyBhY2lkIHJlc2lkdWVzIHNlcXVlbmNlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihzY2FsZSA9ICdjYXRlZ29yaWFsJykge1xuICAgICAgICB0aGlzLmFhMm51bSA9IFNpZGVDaGFpblNjYWxlcy5nZXRTY2FsZShzY2FsZSk7XG4gICAgICAgIHRoaXMubnVtMmFhID0ge307XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYWEybnVtKS5mb3JFYWNoKChbaywgdl0pID0+ICh0aGlzLm51bTJhYVt2XSA9IGspKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBUcnVuY2F0ZSBOSDIgYW5kIC1DT09IIHRlcm1pbmFscyBvZiB0aGUgZ2l2ZW4gc2VxdWVuY2UuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcSBUaGUgc2VxdWVuY2UgcHJvdmlkZWQuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRydW5jYXRlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX3RydW5jYXRlU2VxdWVuY2Uoc2VxKSB7XG4gICAgICAgIGxldCBzdGFydCA9IDA7XG4gICAgICAgIGxldCBlbmQgPSBzZXEubGVuZ3RoO1xuICAgICAgICBjb25zdCB0ZXJtaW5hID0gWydOSDInLCAnQ09PSCddO1xuICAgICAgICBpZiAoc2VxLnN0YXJ0c1dpdGgodGVybWluYVswXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzBdLmxlbmd0aDsgLy8gQ3V0IG9ubHkgJ05IMicgd2l0aG91dCBmb2xsb3dpbmcgJy0nLlxuICAgICAgICAgICAgYXNzZXJ0KHNlcVtsXSA9PSAnLScsIGBXcm9uZyBzZXF1ZW5jZSBmb3JtYXQ6ICR7dGVybWluYVswXX0gd2l0aG91dCBmb2xsb3dpbmcgJy0nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgc3RhcnQgPSBsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXEuZW5kc1dpdGgodGVybWluYVsxXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzFdLmxlbmd0aCArIDE7IC8vIEN1dCBib3RoICdDT09IJyBhbmQgcHJlY2VuZGluZyAnLScuXG4gICAgICAgICAgICBhc3NlcnQoc2VxW2VuZCAtIGxdID09ICctJywgYFdyb25nIHNlcXVlbmNlIGZvcm1hdDogJHt0ZXJtaW5hWzFdfSB3aXRob3V0ICctJyBwcmVjZW5kaW5nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgZW5kIC09IGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlcS5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogQ3V0cyBhdXhpbGlhcnkgZGVmaXNlcyBiZWZvcmUgYSByZXNpZHVlLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXEgVGhlIHNlcXVlbmNlIHRvIHByb2Nlc3MuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFByb2Nlc3NlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX2Ryb3BEZWZpc2VzKHNlcSkge1xuICAgICAgICByZXR1cm4gc2VxLnJlcGxhY2UoLygtKShbXi1dKykvZywgJyQyJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogUGVyZm9ybXMgdHJ1bmNhdGlvbiBhbmQgY3V0dGluZyBhdXhpbGlhcnkgZGVmaXNlcy5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlIHdvcmsgdW5kZXIgcHJvY2Vzcy5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gUmVzdWx0IG9mIGNsZWFuaW5nLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIHN0YXRpYyBjbGVhbihzZXF1ZW5jZSkge1xuICAgICAgICByZXR1cm4gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fZHJvcERlZmlzZXMoQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fdHJ1bmNhdGVTZXF1ZW5jZShzZXF1ZW5jZSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIENhdGVnb3JpYWwgZW5jb2RlIG9mIHRoZSBzZXF1ZW5jZSBwcm92aWRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlLlxuICAgICAgICogQHJldHVybiB7bnVtYmVyW119IEVuY29kZWQgdmVjdG9yLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIGVuY29kZShzZXF1ZW5jZSkge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSBzZXF1ZW5jZS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBBcnJheShuSXRlbXMpLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBzZXF1ZW5jZVtpXTtcbiAgICAgICAgICAgIGFzc2VydChjaGFyIGluIHRoaXMuYWEybnVtLCBgVW5rbm93biBjaGFyICcke2NoYXJ9JyBmb3VuZCBpbiBzZXF1ZW5jZSAnJHtzZXF1ZW5jZX0nYCk7XG4gICAgICAgICAgICB2YWx1ZXNbaV0gPSB0aGlzLmVuY29kZUxldHR0ZXIoY2hhcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgZW5jb2RlTGV0dHRlcihsZXR0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWEybnVtW2xldHRlcl07XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogRGVjb2RlIHRoZSBlbmNvZGVkIHZlY3RvciBpbnRvIHRoZSBzZXF1ZW5jZSBiYWNrLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyW119IHZhbHVlIFRoZSB2ZWN0b3IgZW5jb2RlZC5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gRGVjb2RlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBkZWNvZGUodmFsdWUpIHtcbiAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHZhbHVlW2ldO1xuICAgICAgICAgICAgYXNzZXJ0KGNvZGUgaW4gdGhpcy5udW0yYWEsIGBVbmtub3duIGNvZGUgJyR7Y29kZX0nIGZvdW5kIGluIHZlY3RvciAnJHt2YWx1ZX0nYCk7XG4gICAgICAgICAgICBzICs9IHRoaXMubnVtMmFhW2NvZGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhkV1Z1WTJVdFpXNWpiMlJsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbk5sY1hWbGJtTmxMV1Z1WTI5a1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRExFMUJRVTBzUlVGQlF5eE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJTM1pGTEUxQlFVMHNaVUZCWlR0SlFXMUVia0lzVFVGQlRTeERRVUZETEd0Q1FVRnJRanRSUVVOMlFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFJDeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGWk8xRkJRekZDTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4VFFVRlRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRSUVVNM1JTeFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wSXNRMEZCUXpzN1FVRjZSRTBzYzBKQlFVMHNSMEZCTmtJN1NVRkRlRU1zWjBSQlFXZEVPMGxCUTJoRUxHRkJRV0VzUlVGQlJUdFJRVU5pTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpPMUZCUTFZc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNUdFJRVU5XTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4SlFVRkpPMUZCUTFRc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNTVUZCU1R0UlFVTlVMRWRCUVVjc1JVRkJSU3hKUVVGSk8xRkJRMVFzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1R0TFFVTllPMGxCUTBRc1dVRkJXU3hGUVVGRk8xRkJRMW9zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOT0xFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEwNHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRUaXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5PTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFRpeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTk9MRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMDRzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNSMEZCUnl4RlFVRkZMRVZCUVVVN1VVRkRVQ3hIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU5RTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1IwRkJSeXhGUVVGRkxFVkJRVVU3VVVGRFVDeEhRVUZITEVWQlFVVXNSVUZCUlR0UlFVTlFMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRMUFzUjBGQlJ5eEZRVUZGTEVWQlFVVTdVVUZEVUN4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzB0QlExSTdRMEZEUml4RFFVRkRPMEZCV1VvN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzYzBKQlFYTkNPMGxCU1dwRExGbEJRVmtzVVVGQlowSXNXVUZCV1R0UlFVTjBReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE9VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGFrSXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hGTEVOQlFVTTdTVUZGUkRzN096czdPenRUUVU5TE8wbEJRMHdzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFZEJRVmM3VVVGRGJFTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMlFzU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOeVFpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVZvUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1dVRkRPVUlzVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEhkRFFVRjNRenRaUVVOeVJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTd3dRa0ZCTUVJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5dzRRa0ZCT0VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU5xUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRMWc3VVVGRFJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZETlVJc1RVRkJUU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHpRMEZCYzBNN1dVRkRja1VzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTERCQ1FVRXdRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEN0Q1FVRXJRaXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRFZqdFJRVU5FTEU5QlFVOHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYmtNc1EwRkJRenRKUVVWRU96czdPenM3TzFOQlQwczdTVUZEVEN4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVmM3VVVGRE4wSXNUMEZCVHl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3pzN096czdVMEZQU3p0SlFVTk1MRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlowSTdVVUZETTBJc1QwRkJUeXh6UWtGQmMwSXNRMEZCUXl4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSeXhEUVVGRE8wbEJSVVE3T3pzN096dFRRVTFMTzBsQlEwVXNUVUZCVFN4RFFVRkRMRkZCUVdkQ08xRkJRelZDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGREwwSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWHBETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRMMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSWHBDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeHBRa0ZCYVVJc1NVRkJTU3gzUWtGQmQwSXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVWMFJpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTjBRenRSUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZUU3hoUVVGaExFTkJRVU1zVFVGQll6dFJRVU5xUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZETjBJc1EwRkJRenRKUVVWRU96czdPenM3VTBGTlN6dEpRVU5GTEUxQlFVMHNRMEZCUXl4TFFVRmxPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXp0UlFVVnVRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZkRUlzVFVGQlRTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxHbENRVUZwUWl4SlFVRkpMSE5DUVVGelFpeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUldwR0xFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRM2hDTzFGQlEwUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRXQ3hEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJGemMyVnlkSDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZG1WamRHOXlMVzl3WlhKaGRHbHZibk1uTzF4dVhHNTBlWEJsSUZOcFpHVkRhR0ZwYmxOallXeGxJRDBnZTF0dVlXMWxPaUJ6ZEhKcGJtZGRPaUJ1ZFcxaVpYSjlPMXh1ZEhsd1pTQlRhV1JsUTJoaGFXNVRZMkZzWlVOdmJHeGxZM1JwYjI0Z1BTQjdXMjVoYldVNklITjBjbWx1WjEwNklGTnBaR1ZEYUdGcGJsTmpZV3hsZlR0Y2JseHVZMnhoYzNNZ1UybGtaVU5vWVdsdVUyTmhiR1Z6SUh0Y2JpQWdjM1JoZEdsaklITmpZV3hsY3pvZ1UybGtaVU5vWVdsdVUyTmhiR1ZEYjJ4c1pXTjBhVzl1SUQwZ2UxeHVJQ0FnSUM4dklGZHBiV3hsZVMxWGFHbDBaU0JwYm5SbGNtWmhZMmxoYkNCb2VXUnliM0JvYjJKcFkybDBlU0J6WTJGc1pWeHVJQ0FnSUNkWGFXMXNaWGxYYUdsMFpTYzZJSHRjYmlBZ0lDQWdJQ2N0SnpvZ01DeGNiaUFnSUNBZ0lDZEJKem9nTUM0eE55eGNiaUFnSUNBZ0lDZERKem9nTFRBdU1qUXNYRzRnSUNBZ0lDQW5SQ2M2SUMwd0xqQTNMQ0F2THlCQmMzQXRPaUF4TGpJelhHNGdJQ0FnSUNBblJTYzZJQzB3TGpBeExDQXZMeUJIYkhVdE9pQXlMakF5WEc0Z0lDQWdJQ0FuUmljNklDMHhMakV6TENBdkwxeHVJQ0FnSUNBZ0owY25PaUF3TGpBeExGeHVJQ0FnSUNBZ0owZ25PaUF3TGpFM0xDQXZMeUJJYVhNck9pQXdMamsyWEc0Z0lDQWdJQ0FuU1NjNklDMHdMak14TEZ4dUlDQWdJQ0FnSjBzbk9pQXdMams1TENBdkx5Qk1lWE1yWEc0Z0lDQWdJQ0FuVENjNklDMHdMalUyTEZ4dUlDQWdJQ0FnSjAwbk9pQXRNQzR5TXl4Y2JpQWdJQ0FnSUNkT0p6b2dNQzQwTWl4Y2JpQWdJQ0FnSUNkUUp6b2dNQzQwTlN4Y2JpQWdJQ0FnSUNkUkp6b2dNQzQxT0N4Y2JpQWdJQ0FnSUNkU0p6b2dNQzQ0TVN3Z0x5OGdRWEpuSzF4dUlDQWdJQ0FnSjFNbk9pQXdMakV6TEZ4dUlDQWdJQ0FnSjFRbk9pQXdMakUwTEZ4dUlDQWdJQ0FnSjFZbk9pQXdMakEzTEZ4dUlDQWdJQ0FnSjFjbk9pQXRNUzQ0TlN4Y2JpQWdJQ0FnSUNkWkp6b2dMVEF1T1RRc1hHNGdJQ0FnZlN4Y2JpQWdJQ0FuWTJGMFpXZHZjbWxoYkNjNklIdGNiaUFnSUNBZ0lDY3RKem9nTUN4Y2JpQWdJQ0FnSUNkQkp6b2dNU3hjYmlBZ0lDQWdJQ2RESnpvZ01peGNiaUFnSUNBZ0lDZEVKem9nTXl4Y2JpQWdJQ0FnSUNkRkp6b2dOQ3hjYmlBZ0lDQWdJQ2RHSnpvZ05TeGNiaUFnSUNBZ0lDZEhKem9nTml4Y2JpQWdJQ0FnSUNkSUp6b2dOeXhjYmlBZ0lDQWdJQ2RKSnpvZ09DeGNiaUFnSUNBZ0lDZExKem9nT1N4Y2JpQWdJQ0FnSUNkTUp6b2dNVEFzWEc0Z0lDQWdJQ0FuVFNjNklERXhMRnh1SUNBZ0lDQWdKMDRuT2lBeE1peGNiaUFnSUNBZ0lDZFFKem9nTVRNc1hHNGdJQ0FnSUNBblVTYzZJREUwTEZ4dUlDQWdJQ0FnSjFJbk9pQXhOU3hjYmlBZ0lDQWdJQ2RUSnpvZ01UWXNYRzRnSUNBZ0lDQW5WQ2M2SURFM0xGeHVJQ0FnSUNBZ0oxWW5PaUF4T0N4Y2JpQWdJQ0FnSUNkWEp6b2dNVGtzWEc0Z0lDQWdJQ0FuV1NjNklESXdMRnh1SUNBZ0lIMHNYRzRnSUgwN1hHNWNiaUFnYzNSaGRHbGpJR2RsZEVGMllXbHNZV0pzWlZOallXeGxjeWdwT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11YzJOaGJHVnpLUzV0WVhBb0tGdHJMQ0JmWFNrZ1BUNGdheWs3WEc0Z0lIMWNibHh1SUNCemRHRjBhV01nWjJWMFUyTmhiR1VvYm1GdFpUb2djM1J5YVc1bktUb2dVMmxrWlVOb1lXbHVVMk5oYkdVZ2UxeHVJQ0FnSUdGemMyVnlkQ2doS0hSb2FYTXVjMk5oYkdWelcyNWhiV1ZkSUQwOVBTQjFibVJsWm1sdVpXUXBMQ0JnVTJOaGJHVWdKeVI3Ym1GdFpYMG5JSGRoY3lCdWIzUWdabTkxYm1RdVlDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMk5oYkdWelcyNWhiV1ZkTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyeGhjM01nZEc4Z1kyRjBaV2R2Y21saGJDQmxibU52WkdVdlpHVmpiMlJsSUdGc2FXZHVaV1FnWVcxcGJtOGdZV05wWkNCeVpYTnBaSFZsY3lCelpYRjFaVzVqWlM1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFZMnhoYzNNZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCaFlUSnVkVzA2SUZOcFpHVkRhR0ZwYmxOallXeGxPMXh1SUNCd2NtOTBaV04wWldRZ2JuVnRNbUZoT2lCN1cyTnZaR1U2SUc1MWJXSmxjbDA2SUhOMGNtbHVaMzA3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYzJOaGJHVTZJSE4wY21sdVp5QTlJQ2RqWVhSbFoyOXlhV0ZzSnlrZ2UxeHVJQ0FnSUhSb2FYTXVZV0V5Ym5WdElEMGdVMmxrWlVOb1lXbHVVMk5oYkdWekxtZGxkRk5qWVd4bEtITmpZV3hsS1R0Y2JpQWdJQ0IwYUdsekxtNTFiVEpoWVNBOUlIdDlPMXh1SUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0hSb2FYTXVZV0V5Ym5WdEtTNW1iM0pGWVdOb0tDaGJheXdnZGwwcElEMCtJQ2gwYUdsekxtNTFiVEpoWVZ0MlhTQTlJR3NwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0lDQXFJRlJ5ZFc1allYUmxJRTVJTWlCaGJtUWdMVU5QVDBnZ2RHVnliV2x1WVd4eklHOW1JSFJvWlNCbmFYWmxiaUJ6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ6ZEdGMGFXTmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyVnhJRlJvWlNCelpYRjFaVzVqWlNCd2NtOTJhV1JsWkM1Y2JpQWdJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUZSeWRXNWpZWFJsWkNCelpYRjFaVzVqWlM1Y2JpQWdJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNBZ0lDQXFMMXh1SUNCemRHRjBhV01nWDNSeWRXNWpZWFJsVTJWeGRXVnVZMlVvYzJWeE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUd4bGRDQnpkR0Z5ZENBOUlEQTdYRzRnSUNBZ2JHVjBJR1Z1WkNBOUlITmxjUzVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnZEdWeWJXbHVZU0E5SUZzblRrZ3lKeXdnSjBOUFQwZ25YVHRjYmx4dUlDQWdJR2xtSUNoelpYRXVjM1JoY25SelYybDBhQ2gwWlhKdGFXNWhXekJkS1NrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYkNBOUlIUmxjbTFwYm1GYk1GMHViR1Z1WjNSb095QXZMeUJEZFhRZ2IyNXNlU0FuVGtneUp5QjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2N1WEc0Z0lDQWdJQ0JoYzNObGNuUW9jMlZ4VzJ4ZElEMDlJQ2N0Snl3Z1lGZHliMjVuSUhObGNYVmxibU5sSUdadmNtMWhkRG9nSkh0MFpYSnRhVzVoV3pCZGZTQjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2NnYVc0Z0p5UjdjMlZ4ZlNjdVlDazdYRzRnSUNBZ0lDQnpkR0Z5ZENBOUlHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHpaWEV1Wlc1a2MxZHBkR2dvZEdWeWJXbHVZVnN4WFNrcElIdGNiaUFnSUNBZ0lHTnZibk4wSUd3Z1BTQjBaWEp0YVc1aFd6RmRMbXhsYm1kMGFDc3hPeUF2THlCRGRYUWdZbTkwYUNBblEwOVBTQ2NnWVc1a0lIQnlaV05sYm1ScGJtY2dKeTBuTGx4dUlDQWdJQ0FnWVhOelpYSjBLSE5sY1Z0bGJtUXRiRjBnUFQwZ0p5MG5MQ0JnVjNKdmJtY2djMlZ4ZFdWdVkyVWdabTl5YldGME9pQWtlM1JsY20xcGJtRmJNVjE5SUhkcGRHaHZkWFFnSnkwbklIQnlaV05sYm1ScGJtY2dhVzRnSnlSN2MyVnhmU2N1WUNrN1hHNGdJQ0FnSUNCbGJtUWdMVDBnYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlITmxjUzV6ZFdKemRISnBibWNvYzNSaGNuUXNJR1Z1WkNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDQWdLaUJEZFhSeklHRjFlR2xzYVdGeWVTQmtaV1pwYzJWeklHSmxabTl5WlNCaElISmxjMmxrZFdVdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWMzUmhkR2xqWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY1NCVWFHVWdjMlZ4ZFdWdVkyVWdkRzhnY0hKdlkyVnpjeTVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRkJ5YjJObGMzTmxaQ0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBYldWdFltVnliMllnUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNseHVJQ0FnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdYMlJ5YjNCRVpXWnBjMlZ6S0hObGNUb2djM1J5YVc1bktUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnYzJWeExuSmxjR3hoWTJVb0x5Z3RLU2hiWGkxZEt5a3ZaeXdnSnlReUp5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ0FnS2lCUVpYSm1iM0p0Y3lCMGNuVnVZMkYwYVc5dUlHRnVaQ0JqZFhSMGFXNW5JR0YxZUdsc2FXRnllU0JrWldacGMyVnpMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSE4wWVhScFkxeHVJQ0FnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCelpYRjFaVzVqWlNCVWFHVWdjMlZ4ZFdWdVkyVWdkMjl5YXlCMWJtUmxjaUJ3Y205alpYTnpMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdVbVZ6ZFd4MElHOW1JR05zWldGdWFXNW5MbHh1SUNBZ0lDQXFJRUJ0WlcxaVpYSnZaaUJCYkdsbmJtVmtVMlZ4ZFdWdVkyVkZibU52WkdWeVhHNGdJQ0FnSUNvdlhHNGdJSE4wWVhScFl5QmpiR1ZoYmloelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZlpISnZjRVJsWm1selpYTW9RV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZmRISjFibU5oZEdWVFpYRjFaVzVqWlNoelpYRjFaVzVqWlNrcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQWdJQ29nUTJGMFpXZHZjbWxoYkNCbGJtTnZaR1VnYjJZZ2RHaGxJSE5sY1hWbGJtTmxJSEJ5YjNacFpHVmtMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlITmxjWFZsYm1ObElGUm9aU0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnUlc1amIyUmxaQ0IyWldOMGIzSXVYRzRnSUNBZ0lDb2dRRzFsYldKbGNtOW1JRUZzYVdkdVpXUlRaWEYxWlc1alpVVnVZMjlrWlhKY2JpQWdJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHVnVZMjlrWlNoelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0FnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSE5sY1hWbGJtTmxMbXhsYm1kMGFEdGNiaUFnSUNCamIyNXpkQ0IyWVd4MVpYTWdQU0J1WlhjZ1FYSnlZWGtvYmtsMFpXMXpLUzVtYVd4c0tEQXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTJoaGNpQTlJSE5sY1hWbGJtTmxXMmxkTzF4dVhHNGdJQ0FnSUNCaGMzTmxjblFvWTJoaGNpQnBiaUIwYUdsekxtRmhNbTUxYlN3Z1lGVnVhMjV2ZDI0Z1kyaGhjaUFuSkh0amFHRnlmU2NnWm05MWJtUWdhVzRnYzJWeGRXVnVZMlVnSnlSN2MyVnhkV1Z1WTJWOUoyQXBPMXh1WEc0Z0lDQWdJQ0IyWVd4MVpYTmJhVjBnUFNCMGFHbHpMbVZ1WTI5a1pVeGxkSFIwWlhJb1kyaGhjaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWlc1amIyUmxUR1YwZEhSbGNpaHNaWFIwWlhJNklITjBjbWx1WnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlXRXliblZ0VzJ4bGRIUmxjbDA3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNBZ0tpQkVaV052WkdVZ2RHaGxJR1Z1WTI5a1pXUWdkbVZqZEc5eUlHbHVkRzhnZEdobElITmxjWFZsYm1ObElHSmhZMnN1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNsdGRmU0IyWVd4MVpTQlVhR1VnZG1WamRHOXlJR1Z1WTI5a1pXUXVYRzRnSUNBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkVaV052WkdWa0lITmxjWFZsYm1ObExseHVJQ0FnSUNBcUlFQnRaVzFpWlhKdlppQkJiR2xuYm1Wa1UyVnhkV1Z1WTJWRmJtTnZaR1Z5WEc0Z0lDQWdJQ292WEc0Z0lIQjFZbXhwWXlCa1pXTnZaR1VvZG1Gc2RXVTZJRzUxYldKbGNsdGRLVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnNaWFFnY3pvZ2MzUnlhVzVuSUQwZ0p5YzdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFpoYkhWbExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMlJsSUQwZ2RtRnNkV1ZiYVYwN1hHNWNiaUFnSUNBZ0lHRnpjMlZ5ZENoamIyUmxJR2x1SUhSb2FYTXViblZ0TW1GaExDQmdWVzVyYm05M2JpQmpiMlJsSUNja2UyTnZaR1Y5SnlCbWIzVnVaQ0JwYmlCMlpXTjBiM0lnSnlSN2RtRnNkV1Y5SjJBcE8xeHVYRzRnSUNBZ0lDQnpJQ3M5SUhSb2FYTXViblZ0TW1GaFcyTnZaR1ZkTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2N6dGNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFN0cmluZ1V0aWxzIHtcbiAgICBzdGF0aWMgaGFzaENvZGUocykge1xuICAgICAgICBsZXQgaGFzaCA9IDA7XG4gICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBoYXNoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNociA9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIGNocjtcbiAgICAgICAgICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgfVxufVxuaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGUge1xufVxuZXhwb3J0IGNsYXNzIEdyYXlBbGxQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiAnIzY2NjY2Nic7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVua25vd25Db2xvclBhbGV0dGUgZXh0ZW5kcyBVbmtub3duU2VxUGFsZXR0ZSB7XG4gICAgc3RhdGljIGJ1aWxkUGFsZXR0ZSgpIHtcbiAgICAgICAgY29uc3QgcmVzID0gW10uY29uY2F0KC4uLk9iamVjdC52YWx1ZXMoU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSkpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBnZXQobSkge1xuICAgICAgICBjb25zdCBoYXNoID0gU3RyaW5nVXRpbHMuaGFzaENvZGUobSk7XG4gICAgICAgIGNvbnN0IHBJID0gaGFzaCAlIFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZS5sZW5ndGg7XG4gICAgICAgIHJldHVybiBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGVbcEldO1xuICAgIH1cbn1cblVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZSA9IFVua25vd25Db2xvclBhbGV0dGUuYnVpbGRQYWxldHRlKCk7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgR3JheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JheSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5ncmF5ID0gbmV3IEdyYXlBbGxQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgQ29sb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gbmV3IFVua25vd25Db2xvclBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1cmJtOTNiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhMjV2ZDI0dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTVUVzVFVGQlRTeFBRVUZQTEZkQlFWYzdTVUZEWml4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVk03VVVGRE9VSXNTVUZCU1N4SlFVRkpMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRE8xbEJRMmhDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMUZCUTJRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEZWtNc1RVRkJUU3hIUVVGSExFZEJRVmNzUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRiRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMREpDUVVFeVFqdFRRVU4yUXp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dERRVU5HTzBGQlJVUXNUMEZCVHl4RlFVRmhMR05CUVdNc1JVRkJReXhOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUlRGRUxFMUJRVTBzVDBGQlowSXNhVUpCUVdsQ08wTkJSWFJETzBGQlJVUXNUVUZCVFN4UFFVRlBMR05CUVdVc1UwRkJVU3hwUWtGQmFVSTdTVUZETlVNc1IwRkJSeXhEUVVGRExFTkJRVk03VVVGRGJFSXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dERRVU5HTzBGQlIwUXNUVUZCVFN4UFFVRlBMRzFDUVVGdlFpeFRRVUZSTEdsQ1FVRnBRanRKUVVkb1JDeE5RVUZOTEVOQlFVTXNXVUZCV1R0UlFVTjZRaXhOUVVGTkxFZEJRVWNzUjBGQlNTeEZRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1JpeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkZUU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU5zUWl4TlFVRk5MRWxCUVVrc1IwRkJWeXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNKRUxFOUJRVThzYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzcERMRU5CUVVNN08wRkJXR0VzTWtKQlFVOHNSMEZCWVN4dFFrRkJiVUlzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0QlFXTjJSU3hOUVVGTkxFOUJRVThzYTBKQlFXMUNMRk5CUVZFc1kwRkJZenRKUVVjM1F5eE5RVUZOTEV0QlFVc3NTVUZCU1R0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4alFVRmpMRVZCUVVVc1EwRkJRenRSUVVOdVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVWxOTEUxQlFVMHNTMEZCU3l4TFFVRkxPMUZCUTNKQ0xFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTMEZCU3l4TFFVRkxMRU5CUVVNN1dVRkRka0lzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdVVUZEZWtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHZHliMnNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJkeWIyc25PMXh1YVcxd2IzSjBJQ29nWVhNZ2RXa2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMM1ZwSnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlRkSEpwYm1kVmRHbHNjeUI3WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYUdGemFFTnZaR1VvY3pvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JzWlhRZ2FHRnphRG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdJQ0JwWmlBb2N5NXNaVzVuZEdnZ1BUMDlJREFwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyaHlPaUJ1ZFcxaVpYSWdQU0J6TG1Ob1lYSkRiMlJsUVhRb2FTazdYRzRnSUNBZ0lDQm9ZWE5vSUQwZ0tDaG9ZWE5vSUR3OElEVXBJQzBnYUdGemFDa2dLeUJqYUhJN1hHNGdJQ0FnSUNCb1lYTm9JSHc5SURBN0lDOHZJRU52Ym5abGNuUWdkRzhnTXpKaWFYUWdhVzUwWldkbGNseHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdmVnh1ZlZ4dVhHNXBiWEJ2Y25RZ2UxTmxjVkJoYkdWMGRHVXNJRk5sY1ZCaGJHVjBkR1ZDWVhObGZTQm1jbTl0SUNjdUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJWYm10dWIzZHVVMlZ4VUdGc1pYUjBaU0JwYlhCc1pXMWxiblJ6SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0J3ZFdKc2FXTWdZV0p6ZEhKaFkzUWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFZHlZWGxCYkd4UVlXeGxkSFJsSUdWNGRHVnVaSE1nVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1VnZTF4dUlDQndkV0pzYVdNZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlDY2pOalkyTmpZMkp6dGNiaUFnZlZ4dWZWeHVYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlZibXR1YjNkdVEyOXNiM0pRWVd4bGRIUmxJR1Y0ZEdWdVpITWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVWdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEJoYkdWMGRHVTZJSE4wY21sdVoxdGRJRDBnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1aWRXbHNaRkJoYkdWMGRHVW9LVHRjYmx4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCaWRXbHNaRkJoYkdWMGRHVW9LVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJR052Ym5OMElISmxjeUE5SUNoYlhTQmhjeUJ6ZEhKcGJtZGJYU2t1WTI5dVkyRjBLQzR1TGs5aWFtVmpkQzUyWVd4MVpYTW9VMlZ4VUdGc1pYUjBaVUpoYzJVdVkyOXNiM1Z5VUdGc1pYUjBaU2twTzF4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYUdGemFEb2diblZ0WW1WeUlEMGdVM1J5YVc1blZYUnBiSE11YUdGemFFTnZaR1VvYlNrN1hHNGdJQ0FnWTI5dWMzUWdjRWtnUFNCb1lYTm9JQ1VnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1d1lXeGxkSFJsTG14bGJtZDBhRHRjYmlBZ0lDQnlaWFIxY200Z1ZXNXJibTkzYmtOdmJHOXlVR0ZzWlhSMFpTNXdZV3hsZEhSbFczQkpYVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5Qm5jbUY1T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVkeVlYa29LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WjNKaGVTQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdkR2hwY3k1bmNtRjVJRDBnYm1WM0lFZHlZWGxCYkd4UVlXeGxkSFJsS0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVozSmhlVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR052Ykc5eU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFTnZiRzl5S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiRzl5SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNCMGFHbHpMbU52Ykc5eUlEMGdibVYzSUZWdWEyNXZkMjVEYjJ4dmNsQmhiR1YwZEdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiMnh2Y2p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCIvLyBEYXRhIHN0cnVjdHVyZXMgZm9yIFYtRG9tYWluIHJlZ2lvbnMgb2YgYW50aWJvZGllc1xuZXhwb3J0IHZhciBWZFJlZ2lvblR5cGU7XG4oZnVuY3Rpb24gKFZkUmVnaW9uVHlwZSkge1xuICAgIFZkUmVnaW9uVHlwZVtcIlVua25vd25cIl0gPSBcInVua25vd25cIjtcbiAgICBWZFJlZ2lvblR5cGVbXCJGUlwiXSA9IFwiZnJhbWV3b3JrXCI7XG4gICAgVmRSZWdpb25UeXBlW1wiQ0RSXCJdID0gXCJjZHJcIjtcbn0pKFZkUmVnaW9uVHlwZSB8fCAoVmRSZWdpb25UeXBlID0ge30pKTtcbi8qKiBEZXNjcmliZXMgVi1ET01BSU4gKElHIGFuZCBUUikgcmVnaW9uIChvZiBtdWx0aXBsZSBhbGlnbm1lbnQpXG4gKiBodHRwczovL3d3dy5pbWd0Lm9yZy9JTUdUU2NpZW50aWZpY0NoYXJ0L051bWJlcmluZy9JTUdUSUdWTHN1cGVyZmFtaWx5Lmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZkUmVnaW9uIHtcbiAgICAvKipcbiAgICAgKiBzdGFydCBhbmQgcG9zaXRpb24gYXJlIHN0cmluZ3MgYmVjYXVzZSB0aGV5IGNvcnJlc3BvbmQgdG8gcG9zaXRpb24gbmFtZXMgYXMgY29sdW1uIG5hbWVzIGluIEFOQVJDSSBvdXRwdXRcbiAgICAgKiBAcGFyYW0ge1ZkUmVnaW9uVHlwZX0gdHlwZSAgVHlwZSBvZiB0aGUgcmVnaW9uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgIE5hbWUgb2YgdGhlIHJlZ2lvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFpblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmRlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwb3NpdGlvblN0YXJ0TmFtZSAgUmVnaW9uIHN0YXJ0IHBvc2l0aW9uIChpbmNsdXNpdmUpXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBvc2l0aW9uRW5kTmFtZSAgUmVnaW9uIGVuZCBwb3NpdGlvbiAoaW5jbHVzaXZlKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHR5cGUsIG5hbWUsIGNoYWluLCBvcmRlciwgcG9zaXRpb25TdGFydE5hbWUsIHBvc2l0aW9uRW5kTmFtZSkge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNoYWluID0gY2hhaW47XG4gICAgICAgIHRoaXMub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgdGhpcy5wb3NpdGlvblN0YXJ0TmFtZSA9IHBvc2l0aW9uU3RhcnROYW1lO1xuICAgICAgICB0aGlzLnBvc2l0aW9uRW5kTmFtZSA9IHBvc2l0aW9uRW5kTmFtZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVF0Y21WbmFXOXVjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluWmtMWEpsWjJsdmJuTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc2NVUkJRWEZFTzBGQlJYSkVMRTFCUVUwc1EwRkJUaXhKUVVGWkxGbEJTVmc3UVVGS1JDeFhRVUZaTEZsQlFWazdTVUZEZEVJc2JVTkJRVzFDTEVOQlFVRTdTVUZEYmtJc1owTkJRV2RDTEVOQlFVRTdTVUZEYUVJc01rSkJRVmNzUTBGQlFUdEJRVU5pTEVOQlFVTXNSVUZLVnl4WlFVRlpMRXRCUVZvc1dVRkJXU3hSUVVsMlFqdEJRVVZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hQUVVGUExGRkJRVkU3U1VGUmJrSTdPenM3T3pzN08wOUJVVWM3U1VGRFNDeFpRVUZaTEVsQlFXdENMRVZCUVVVc1NVRkJXU3hGUVVGRkxFdEJRV0VzUlVGQlJTeExRVUZoTEVWQlEzaEZMR2xDUVVGNVFpeEZRVUZGTEdWQlFYVkNPMUZCUTJ4RUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXp0UlFVTXpReXhKUVVGSkxFTkJRVU1zWlVGQlpTeEhRVUZITEdWQlFXVXNRMEZCUXp0SlFVTjZReXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdkx5QkVZWFJoSUhOMGNuVmpkSFZ5WlhNZ1ptOXlJRll0Ukc5dFlXbHVJSEpsWjJsdmJuTWdiMllnWVc1MGFXSnZaR2xsYzF4dVhHNWxlSEJ2Y25RZ1pXNTFiU0JXWkZKbFoybHZibFI1Y0dVZ2UxeHVJQ0JWYm10dWIzZHVJRDBnSjNWdWEyNXZkMjRuTEZ4dUlDQkdVaUE5SUNkbWNtRnRaWGR2Y21zbkxGeHVJQ0JEUkZJZ1BTQW5ZMlJ5Snl4Y2JuMWNibHh1THlvcUlFUmxjMk55YVdKbGN5QldMVVJQVFVGSlRpQW9TVWNnWVc1a0lGUlNLU0J5WldkcGIyNGdLRzltSUcxMWJIUnBjR3hsSUdGc2FXZHViV1Z1ZENsY2JpQXFJR2gwZEhCek9pOHZkM2QzTG1sdFozUXViM0puTDBsTlIxUlRZMmxsYm5ScFptbGpRMmhoY25RdlRuVnRZbVZ5YVc1bkwwbE5SMVJKUjFaTWMzVndaWEptWVcxcGJIa3VhSFJ0YkZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZtUlNaV2RwYjI0Z2UxeHVJQ0IwZVhCbE9pQldaRkpsWjJsdmJsUjVjR1U3WEc0Z0lHNWhiV1U2SUhOMGNtbHVaenRjYmlBZ1kyaGhhVzQ2SUhOMGNtbHVaenRjYmlBZ2IzSmtaWEk2SUc1MWJXSmxjanRjYmlBZ2NHOXphWFJwYjI1VGRHRnlkRTVoYldVNklITjBjbWx1Wnp0Y2JpQWdjRzl6YVhScGIyNUZibVJPWVcxbE9pQnpkSEpwYm1jN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUhOMFlYSjBJR0Z1WkNCd2IzTnBkR2x2YmlCaGNtVWdjM1J5YVc1bmN5QmlaV05oZFhObElIUm9aWGtnWTI5eWNtVnpjRzl1WkNCMGJ5QndiM05wZEdsdmJpQnVZVzFsY3lCaGN5QmpiMngxYlc0Z2JtRnRaWE1nYVc0Z1FVNUJVa05KSUc5MWRIQjFkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmtVbVZuYVc5dVZIbHdaWDBnZEhsd1pTQWdWSGx3WlNCdlppQjBhR1VnY21WbmFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxJQ0JPWVcxbElHOW1JSFJvWlNCeVpXZHBiMjVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTm9ZV2x1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZjbVJsY2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVWdJRkpsWjJsdmJpQnpkR0Z5ZENCd2IzTnBkR2x2YmlBb2FXNWpiSFZ6YVhabEtWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0c5emFYUnBiMjVGYm1ST1lXMWxJQ0JTWldkcGIyNGdaVzVrSUhCdmMybDBhVzl1SUNocGJtTnNkWE5wZG1VcFhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWgwZVhCbE9pQldaRkpsWjJsdmJsUjVjR1VzSUc1aGJXVTZJSE4wY21sdVp5d2dZMmhoYVc0NklITjBjbWx1Wnl3Z2IzSmtaWEk2SUc1MWJXSmxjaXhjYmlBZ0lDQndiM05wZEdsdmJsTjBZWEowVG1GdFpUb2djM1J5YVc1bkxDQndiM05wZEdsdmJrVnVaRTVoYldVNklITjBjbWx1WnlrZ2UxeHVJQ0FnSUhSb2FYTXVkSGx3WlNBOUlIUjVjR1U3WEc0Z0lDQWdkR2hwY3k1dVlXMWxJRDBnYm1GdFpUdGNiaUFnSUNCMGFHbHpMbU5vWVdsdUlEMGdZMmhoYVc0N1hHNGdJQ0FnZEdocGN5NXZjbVJsY2lBOUlHOXlaR1Z5TzF4dUlDQWdJSFJvYVhNdWNHOXphWFJwYjI1VGRHRnlkRTVoYldVZ1BTQndiM05wZEdsdmJsTjBZWEowVG1GdFpUdGNiaUFnSUNCMGFHbHpMbkJ2YzJsMGFXOXVSVzVrVG1GdFpTQTlJSEJ2YzJsMGFXOXVSVzVrVG1GdFpUdGNiaUFnZlZ4dWZWeHVJbDE5IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQgKiBhcyByeGpzIGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgdmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgQW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzIH0gZnJvbSAnLi4vYW1pbm9hY2lkcyc7XG5pbXBvcnQgeyBOdWNsZW90aWRlcywgTnVjbGVvdGlkZXNQYWxldHRlcyB9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IFVua25vd25TZXFQYWxldHRlcyB9IGZyb20gJy4uL3Vua25vd24nO1xuSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLmdldEN1cnNvclBvc2l0aW9uID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIG5ldyBERy5Qb2ludChldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0LCBldmVudC5jbGllbnRZIC0gcmVjdC50b3ApO1xufTtcbkRHLlJlY3QucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICByZXR1cm4gdGhpcy5sZWZ0IDw9IHggJiYgeCA8PSB0aGlzLnJpZ2h0ICYmIHRoaXMudG9wIDw9IHkgJiYgeSA8PSB0aGlzLmJvdHRvbTtcbn07XG5leHBvcnQgY2xhc3MgUG9zaXRpb25Nb25vbWVySW5mbyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY291bnQgPSAwO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IG5ldyBERy5SZWN0KDAsIDAsIDAsIDApO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbkluZm8ge1xuICAgIC8qKiBmcmVxID0ge30sIHJvd0NvdW50ID0gMFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgcG9zaXRpb24gKCcxMTFBJywgJzExMS4xJywgZXRjKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5mcmVxID0ge307XG4gICAgICAgIHRoaXMucm93Q291bnQgPSAwO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBXZWJMb2dvIGV4dGVuZHMgREcuSnNWaWV3ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnZpZXdlcklkID0gLTE7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgLy8gcHJpdmF0ZSByZWFkb25seSBjb2xvclNjaGVtZTogQ29sb3JTY2hlbWUgPSBDb2xvclNjaGVtZXNbTnVjbGVvdGlkZXNXZWJMb2dvLnJlc2lkdWVzU2V0XTtcbiAgICAgICAgdGhpcy5jcCA9IG51bGw7XG4gICAgICAgIHRoaXMuYXhpc0hlaWdodCA9IDEyO1xuICAgICAgICB0aGlzLnNlcUNvbCA9IG51bGw7XG4gICAgICAgIHRoaXMuc3BsaXR0ZXIgPSBudWxsO1xuICAgICAgICAvLyBwcml2YXRlIG1heExlbmd0aDogbnVtYmVyID0gMTAwO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnJvd3NNYXNrZWQgPSAwO1xuICAgICAgICB0aGlzLnJvd3NOdWxsID0gMDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gW107XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gLTE7XG4gICAgICAgIHRoaXMudmlld1N1YnMgPSBbXTtcbiAgICAgICAgdGhpcy52aWV3ZXJJZCA9IFdlYkxvZ28udmlld2VyQ291bnQ7XG4gICAgICAgIFdlYkxvZ28udmlld2VyQ291bnQgKz0gMTtcbiAgICAgICAgdGhpcy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aCA9IHRoaXMuZmxvYXQoJ3Bvc2l0aW9uV2lkdGgnLCAxNiAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiA0LCBtYXg6IDY0LCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5taW5IZWlnaHQgPSB0aGlzLmZsb2F0KCdtaW5IZWlnaHQnLCA1MCAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiAyNTAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZmxvYXQoJ21heEhlaWdodCcsIDEwMCAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiA1MDAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgICAgICB0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcyA9IHRoaXMuYm9vbCgnY29uc2lkZXJOdWxsU2VxdWVuY2VzJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA9IHRoaXMuc3RyaW5nKCdzZXF1ZW5jZUNvbHVtbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdzdGFydFBvc2l0aW9uTmFtZScsIG51bGwpO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdlbmRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5maXhXaWR0aCA9IHRoaXMuYm9vbCgnZml4V2lkdGgnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMudmVydGljYWxBbGlnbm1lbnQgPSB0aGlzLnN0cmluZygndmVydGljYWxBbGlnbm1lbnQnLCAnbWlkZGxlJywgeyBjaG9pY2VzOiBbJ3RvcCcsICdtaWRkbGUnLCAnYm90dG9tJ10gfSk7XG4gICAgICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCA9IHRoaXMuc3RyaW5nKCdob3Jpem9udGFsQWxpZ25tZW50JywgJ2NlbnRlcicsIHsgY2hvaWNlczogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCddIH0pO1xuICAgICAgICB0aGlzLmZpdEFyZWEgPSB0aGlzLmJvb2woJ2ZpdEFyZWEnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zaHJpbmtFbXB0eVRhaWwgPSB0aGlzLmJvb2woJ3Nocmlua0VtcHR5VGFpbCcsIHRydWUpO1xuICAgICAgICB0aGlzLnNraXBFbXB0eVBvc2l0aW9ucyA9IHRoaXMuYm9vbCgnc2tpcEVtcHR5UG9zaXRpb25zJywgZmFsc2UpO1xuICAgIH1cbiAgICAvKiogRm9yIHN0YXJ0UG9zaXRpb24gZXF1YWxzIHRvIGVuZFBvc2l0aW9uIExlbmd0aCBpcyAxICovXG4gICAgZ2V0IExlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQb3NpdGlvbiA8PSB0aGlzLmVuZFBvc2l0aW9uID8gdGhpcy5lbmRQb3NpdGlvbiAtIHRoaXMuc3RhcnRQb3NpdGlvbiArIDEgOiAwO1xuICAgIH1cbiAgICBpbml0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdXZWJMb2dvIHNlY29uZCBpbml0aWFsaXphdGlvbiEnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaGVscFVybCA9ICcvaGVscC92aXN1YWxpemUvdmlld2Vycy93ZWItbG9nby5tZCc7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3QgPSB1aS5kaXYoJ05vIG1lc3NhZ2UnKTtcbiAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgdGhpcy5jYW52YXMgPSB1aS5jYW52YXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdWkuZGl2KFt0aGlzLm1zZ0hvc3QsIHRoaXMuY2FudmFzXSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlciA9IHVpLnJhbmdlU2xpZGVyKDAsIDIwLCAyLCA1KTtcbiAgICAgICAgICAgIC8vIHRoaXMuc2xpZGVyLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlci5yb290LnN0eWxlLmhlaWdodCA9ICcxMnB4JztcbiAgICAgICAgICAgIGNvbnN0IGdldE1vbm9tZXIgPSAocCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpQb3MgPSBNYXRoLmZsb29yKHAueCAvIHRoaXMuX3Bvc2l0aW9uV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG4gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uID09PSB2b2lkIDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9IE9iamVjdC5rZXlzKHBvc2l0aW9uLmZyZXEpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKChtKSA9PiBwb3NpdGlvbi5mcmVxW21dLmJvdW5kcy5jb250YWlucyhwLngsIHAueSkpO1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtqUG9zLCBtb25vbWVyLCBwb3NpdGlvbi5mcmVxW21vbm9tZXJdXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyB0aGlzLnN1YnMucHVzaChyeGpzLmZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmNhbnZhcywgJ21vdXNlb3ZlcicpLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHJ4anMuZnJvbUV2ZW50KHRoaXMuY2FudmFzLCAnbW91c2Vtb3ZlJykuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbnZhcylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiB0aGlzLnNwbGl0dGVyICYmIG1vbm9tZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdWkudG9vbHRpcC5zaG93Um93R3JvdXAodGhpcy5kYXRhRnJhbWUsIChpUm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXEgPSB0aGlzLnNlcUNvbC5nZXQoaVJvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXFNID0gc2VxID8gdGhpcy5zcGxpdHRlcihzZXEpW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXFNID09PSBtb25vbWVyICYmIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXQoaVJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGFyZ3MueCArIDE2LCBhcmdzLnkgKyAxNik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1aS50b29sdGlwLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQodGhpcy5jYW52YXMsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8IGUuYnV0dG9uICE9IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdzID0gZTtcbiAgICAgICAgICAgICAgICBjb25zdCBbalBvcywgbW9ub21lcl0gPSBnZXRNb25vbWVyKHRoaXMuY2FudmFzLmdldEN1cnNvclBvc2l0aW9uKGFyZ3MpKTtcbiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50cyBkZXNlbGVjdCBhbGwgcm93cyBpZiB3ZSBtaXNzIG1vbm9tZXIgYm91bmRzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lICYmIHRoaXMuc2VxQ29sICYmIHRoaXMuc3BsaXR0ZXIgJiYgbW9ub21lcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uaW5pdCgoaVJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2wuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IHRoaXMuc3BsaXR0ZXIoc2VxKVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VxTSA9PT0gbW9ub21lciAmJiB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLnB1c2godWkub25TaXplQ2hhbmdlZCh0aGlzLnJvb3QpLnN1YnNjcmliZSh0aGlzLnJvb3RPblNpemVDaGFuZ2VkLmJpbmQodGhpcykpKTtcbiAgICAgICAgICAgIHRoaXMucm9vdC5hcHBlbmQodGhpcy5ob3N0KTtcbiAgICAgICAgICAgIC8vIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLnNsaWRlci5yb290KTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcm9vdE9uU2l6ZUNoYW5nZWQoYXJncykge1xuICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nby5vblJvb3RTaXplQ2hhbmdlZCgpIGAgK1xuICAgICAgICAvLyAgIGByb290LndpZHRoPSR7dGhpcy5yb290LmNsaWVudFdpZHRofSwgcm9vdC5oZWlnaHQ9JHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fSwgYCArXG4gICAgICAgIC8vICAgYGNhbnZhcy53aWR0aD0ke3RoaXMuY2FudmFzLndpZHRofSwgY2FudmFzLmhlaWdodD0ke3RoaXMuY2FudmFzLmhlaWdodH0gLmApO1xuICAgIH1cbiAgICAvKiogQXNzaWducyB7QGxpbmsgc2VxQ29sfSBhbmQge0BsaW5rIGNwfSBiYXNlZCBvbiB7QGxpbmsgc2VxdWVuY2VDb2x1bW5OYW1lfSBhbmQgY2FsbHMge0BsaW5rIHJlbmRlcn0oKS5cbiAgICAgKi9cbiAgICB1cGRhdGVTZXFDb2woKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSkge1xuICAgICAgICAgICAgdGhpcy5zZXFDb2wgPSB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA/IHRoaXMuZGF0YUZyYW1lLmNvbCh0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcUNvbCA9IFdlYkxvZ28ucGlja1VwU2VxQ29sMih0aGlzLmRhdGFGcmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPSB0aGlzLnNlcUNvbCA/IHRoaXMuc2VxQ29sLm5hbWUgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5pdHMgPSB0aGlzLnNlcUNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5zZXFDb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNwbGl0dGVyID0gV2ViTG9nby5nZXRTcGxpdHRlcih1bml0cywgc2VwYXJhdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3AgPSBXZWJMb2dvLnBpY2tVcFBhbGV0dGUodGhpcy5zZXFDb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGxpdHRlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uID0gLTE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICAgIHVwZGF0ZVBvc2l0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlcUNvbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IGNhdGVnb3JpZXM7XG4gICAgICAgIGlmICh0aGlzLnNocmlua0VtcHR5VGFpbCkge1xuICAgICAgICAgICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQoQXJyYXkuZnJvbShBcnJheShpbmRpY2VzLmxlbmd0aCkua2V5cygpKS5tYXAoKGkpID0+IHRoaXMuc2VxQ29sLmdldChpbmRpY2VzW2ldKSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhdGVnb3JpZXMgPSB0aGlzLnNlcUNvbC5jYXRlZ29yaWVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IGNhdGVnb3JpZXMubGVuZ3RoID4gMCA/IE1hdGgubWF4KC4uLmNhdGVnb3JpZXMubWFwKChzKSA9PiBzICE9PSBudWxsID8gdGhpcy5zcGxpdHRlcihzKS5sZW5ndGggOiAwKSkgOiAwO1xuICAgICAgICAvLyBHZXQgcG9zaXRpb24gbmFtZXMgZnJvbSBkYXRhIGNvbHVtbiB0YWcgJ3Bvc2l0aW9uTmFtZXMnXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uTmFtZXNUeHQgPSB0aGlzLnNlcUNvbC5nZXRUYWcoJ3Bvc2l0aW9uTmFtZXMnKTtcbiAgICAgICAgLy8gRmFsbGJhY2sgaWYgJ3Bvc2l0aW9uTmFtZXMnIHRhZyBpcyBub3QgcHJvdmlkZWRcbiAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gcG9zaXRpb25OYW1lc1R4dCA/IHBvc2l0aW9uTmFtZXNUeHQuc3BsaXQoJywgJykubWFwKChuKSA9PiBuLnRyaW0oKSkgOlxuICAgICAgICAgICAgWy4uLkFycmF5KG1heExlbmd0aCkua2V5cygpXS5tYXAoKGpQb3MpID0+IGAke2pQb3MgKyAxfWApO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAodGhpcy5zdGFydFBvc2l0aW9uTmFtZSAmJiB0aGlzLnBvc2l0aW9uTmFtZXMgJiZcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmNsdWRlcyh0aGlzLnN0YXJ0UG9zaXRpb25OYW1lKSkgP1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluZGV4T2YodGhpcy5zdGFydFBvc2l0aW9uTmFtZSkgOiAwO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gKHRoaXMuZW5kUG9zaXRpb25OYW1lICYmIHRoaXMucG9zaXRpb25OYW1lcyAmJlxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluY2x1ZGVzKHRoaXMuZW5kUG9zaXRpb25OYW1lKSkgP1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluZGV4T2YodGhpcy5lbmRQb3NpdGlvbk5hbWUpIDogKG1heExlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSkge1xuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvLm9uUHJvcGVydHlDaGFuZ2VkKCAke3Byb3BlcnR5Lm5hbWV9ID0gJycgfSlgKTtcbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkpO1xuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5Lm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NvbnNpZGVyTnVsbFNlcXVlbmNlcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZXF1ZW5jZUNvbHVtbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGFydFBvc2l0aW9uTmFtZSc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VuZFBvc2l0aW9uTmFtZSc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Bvc2l0aW9uV2lkdGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGg7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW5IZWlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWF4SGVpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpeFdpZHRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsQWxpZ25tZW50JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvcml6b250YWxBbGlnbm1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZml0QXJlYSc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzaHJpbmtFbXB0eVRhaWwnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25UYWJsZUF0dGFjaGVkKCkge1xuICAgICAgICBjb25zdCBfc3VwZXIgPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgICAgICAgICAgIG9uVGFibGVBdHRhY2hlZDogeyBnZXQ6ICgpID0+IHN1cGVyLm9uVGFibGVBdHRhY2hlZCB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgZGF0YUZyYW1lVHh0ID0gdGhpcy5kYXRhRnJhbWUgPyAnZGF0YScgOiAnbnVsbCc7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCBkYXRhRnJhbWUgPSAke2RhdGFGcmFtZVR4dH0gKSBzdGFydGApO1xuICAgICAgICAgICAgX3N1cGVyLm9uVGFibGVBdHRhY2hlZC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzLnB1c2godGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHRoaXMucmVuZGVyKCkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmRhdGFGcmFtZS5maWx0ZXIub25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHlpZWxkIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCgpIGVuZGApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGV0YWNoKCkge1xuICAgICAgICBjb25zdCBfc3VwZXIgPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgICAgICAgICAgIGRldGFjaDogeyBnZXQ6ICgpID0+IHN1cGVyLmRldGFjaCB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgZGF0YUZyYW1lVHh0ID0gYCR7dGhpcy5kYXRhRnJhbWUgPyAnZGF0YScgOiAnbnVsbCd9YDtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoIGRhdGFGcmFtZSA9ICR7ZGF0YUZyYW1lVHh0fSApIHN0YXJ0YCk7XG4gICAgICAgICAgICBfc3VwZXIuZGV0YWNoLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5jYW52YXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmhvc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCkgZW5kYCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfbnVsbFNlcXVlbmNlKGZpbGxlclJlc2lkdWUgPSAnWCcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uc2lkZXJOdWxsU2VxdWVuY2VzKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheSh0aGlzLkxlbmd0aCkuZmlsbChmaWxsZXJSZXNpZHVlKS5qb2luKCcnKTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBfY2FsY3VsYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLmhvc3QgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5jYWxjU2l6ZSgpO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ldyBBcnJheSh0aGlzLkxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgcG9zTmFtZSA9IHRoaXMucG9zaXRpb25OYW1lc1t0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXTtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdID0gbmV3IFBvc2l0aW9uSW5mbyhwb3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAyMDIyLTA1LTA1IGFza2Fsa2luIGluc3RydWN0ZWQgdG8gc2hvdyBXZWJMb2dvIGJhc2VkIG9uIGZpbHRlciAobm90IHNlbGVjdGlvbilcbiAgICAgICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgICAgLy8gY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi50cnVlQ291bnQgPiAwID8gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldFNlbGVjdGVkSW5kZXhlcygpIDpcbiAgICAgICAgLy8gICB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgIHRoaXMucm93c01hc2tlZCA9IGluZGljZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLnJvd3NOdWxsID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluZGljZXMpIHtcbiAgICAgICAgICAgIGxldCBzID0gKHRoaXMuc2VxQ29sLmdldChpKSk7XG4gICAgICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICAgICAgICBzID0gdGhpcy5fbnVsbFNlcXVlbmNlKCk7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnJvd3NOdWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHRoaXMuc3BsaXR0ZXIocyk7XG4gICAgICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwbUluZm8gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBzZXFNW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIHx8ICctJztcbiAgICAgICAgICAgICAgICBpZiAoIShtIGluIHBtSW5mbykpXG4gICAgICAgICAgICAgICAgICAgIHBtSW5mb1ttXSA9IG5ldyBQb3NpdGlvbk1vbm9tZXJJbmZvKCk7XG4gICAgICAgICAgICAgICAgcG1JbmZvW21dLmNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8jcmVnaW9uIFBvbGlzaCBmcmVxIGNvdW50c1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIC8vIGRlbGV0ZSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxWyctJ107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG0gaW4gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSlcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCArPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxW21dLmNvdW50O1xuICAgICAgICB9XG4gICAgICAgIC8vI2VuZHJlZ2lvblxuICAgICAgICBjb25zdCByID0gd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuY2FudmFzLmhlaWdodCAtIHRoaXMuYXhpc0hlaWdodCAqIHI7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4uX2NhbGN1bGF0ZSgpIG1heEhlaWdodD0ke21heEhlaWdodH0uYCk7XG4gICAgICAgIC8vI3JlZ2lvbiBDYWxjdWxhdGUgc2NyZWVuXG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgZnJlcSA9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXE7XG4gICAgICAgICAgICBjb25zdCByb3dDb3VudCA9IHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50O1xuICAgICAgICAgICAgbGV0IHkgPSB0aGlzLmF4aXNIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZnJlcSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhWzBdICE9PSAnLScgJiYgYlswXSAhPT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYlsxXS5jb3VudCAtIGFbMV0uY291bnQ7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nICYmIGJbMF0gPT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgZWxzZSAvKiAoYlswXSA9PT0gJy0nKSAqL1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKzE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBtSW5mbyA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IG06IHN0cmluZyA9IGVudHJ5WzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGggPSBtYXhIZWlnaHQgKiBwbUluZm8uY291bnQgLyByb3dDb3VudDtcbiAgICAgICAgICAgICAgICBwbUluZm8uYm91bmRzID0gbmV3IERHLlJlY3QoalBvcyAqIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIHksIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIGgpO1xuICAgICAgICAgICAgICAgIHkgKz0gaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyNlbmRyZWdpb25cbiAgICB9XG4gICAgLy8gcmVmbGVjdCBjaGFuZ2VzIG1hZGUgdG8gZmlsdGVyL3NlbGVjdGlvblxuICAgIHJlbmRlcihyZWNhbGMgPSB0cnVlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHRoaXMubXNnSG9zdCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sICYmICF0aGlzLmNwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tc2dIb3N0LmlubmVyVGV4dCA9IGBVbmtub3duIHBhbGV0dGUgKGNvbHVtbiBzZW1UeXBlOiAnJHt0aGlzLnNlcUNvbC5zZW1UeXBlfScpLmA7XG4gICAgICAgICAgICAgICAgdGhpcy5tc2dIb3N0LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSB8fCAhdGhpcy5jcClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZyA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGlmICghZylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHJlY2FsYylcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZSgpO1xuICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ3doaXRlJztcbiAgICAgICAgZy5maWxsUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgZy50ZXh0QmFzZWxpbmUgPSB0aGlzLnRleHRCYXNlbGluZTtcbiAgICAgICAgLy8gUHJldmVudHMgZGl2aXNpb24gYnkgemVybyBvbiBMZW5ndGggPSAwXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0UG9zaXRpb24gPT09IC0xIHx8IHRoaXMuZW5kUG9zaXRpb24gPT09IC0xKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLyNyZWdpb24gUGxvdCBwb3NpdGlvbk5hbWVzXG4gICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgZy5maWxsU3R5bGUgPSAnYmxhY2snO1xuICAgICAgICBnLnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgICBnLmZvbnQgPSAnMTBweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgIGNvbnN0IHBvc05hbWVNYXhXaWR0aCA9IE1hdGgubWF4KC4uLnRoaXMucG9zaXRpb25zLm1hcCgocG9zKSA9PiBnLm1lYXN1cmVUZXh0KHBvcy5uYW1lKS53aWR0aCkpO1xuICAgICAgICBjb25zdCBoU2NhbGUgPSBwb3NOYW1lTWF4V2lkdGggPCAodGhpcy5fcG9zaXRpb25XaWR0aCAtIDIpID8gMSA6ICh0aGlzLl9wb3NpdGlvbldpZHRoIC0gMikgLyBwb3NOYW1lTWF4V2lkdGg7XG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgcG9zID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG4gICAgICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgICAgICBnLnNldFRyYW5zZm9ybShoU2NhbGUsIDAsIDAsIDEsIGpQb3MgKiB0aGlzLl9wb3NpdGlvbldpZHRoICsgdGhpcy5fcG9zaXRpb25XaWR0aCAvIDIsIDApO1xuICAgICAgICAgICAgZy5maWxsVGV4dChwb3MubmFtZSwgMCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW21vbm9tZXIsIHBtSW5mb10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lciAhPT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBwbUluZm8uYm91bmRzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb250U3R5bGUgPSAnMTZweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhhY2tzIHRvIHNjYWxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIHRvIHRhcmdldCByZWN0YW5nbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVyQXNjZW50ID0gMC4yNTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVySGVpZ2h0ID0gMTIuMjtcbiAgICAgICAgICAgICAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ2xpZ2h0Z3JheSc7XG4gICAgICAgICAgICAgICAgICAgIGcubGluZVdpZHRoID0gMTtcbiAgICAgICAgICAgICAgICAgICAgZy5yZWN0KGIubGVmdCwgYi50b3AsIGIud2lkdGgsIGIuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSAoX2EgPSB0aGlzLmNwLmdldChtb25vbWVyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5jcC5nZXQoJ290aGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGcudGV4dEFsaWduID0gJ2xlZnQnO1xuICAgICAgICAgICAgICAgICAgICBnLmZvbnQgPSBmb250U3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIC8vZy5maWxsUmVjdChiLmxlZnQsIGIudG9wLCBiLndpZHRoLCBiLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1UbSA9IGcubWVhc3VyZVRleHQobW9ub21lcik7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudCAhPSAwKVxuICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUuZGVidWcoYG06ICR7bX0sIG1NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50OiAke21NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50fWApO1xuICAgICAgICAgICAgICAgICAgICBnLnNldFRyYW5zZm9ybShiLndpZHRoIC8gbVRtLndpZHRoLCAwLCAwLCBiLmhlaWdodCAvIHVwcGVyY2FzZUxldHRlckhlaWdodCwgYi5sZWZ0LCBiLnRvcCk7XG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFRleHQobW9ub21lciwgMCwgLXVwcGVyY2FzZUxldHRlckFzY2VudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNhbGNTaXplKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLmhvc3QpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB3aWR0aCA9IHRoaXMuTGVuZ3RoICogdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5taW4odGhpcy5tYXhIZWlnaHQsIE1hdGgubWF4KHRoaXMubWluSGVpZ2h0LCB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0KSk7XG4gICAgICAgIGlmICh0aGlzLmZpdEFyZWEpIHtcbiAgICAgICAgICAgIGNvbnN0IHhTY2FsZSA9IHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCB5U2NhbGUgPSB0aGlzLnJvb3QuY2xpZW50V2lkdGggLyB3aWR0aDtcbiAgICAgICAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oeFNjYWxlLCB5U2NhbGUpKTtcbiAgICAgICAgICAgIHdpZHRoID0gd2lkdGggKiBzY2FsZTtcbiAgICAgICAgICAgIGhlaWdodCA9IGhlaWdodCAqIHNjYWxlO1xuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aCAqIHNjYWxlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSB3aWR0aCAqIHI7XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgICAgICAvLyBjb25zdCBjYW52YXNIZWlnaHQ6IG51bWJlciA9IHdpZHRoID4gdGhpcy5yb290LmNsaWVudFdpZHRoID8gaGVpZ2h0IC0gOCA6IGhlaWdodDtcbiAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHtoZWlnaHR9cHhgKTtcbiAgICAgICAgY29uc3QgY2FudmFzSGVpZ2h0ID0gdGhpcy5ob3N0LmNsaWVudEhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0ICogcjtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGAke2NhbnZhc0hlaWdodH1weGApO1xuICAgICAgICAvLyBBZGp1c3QgaG9zdCBhbmQgcm9vdCB3aWR0aFxuICAgICAgICBpZiAodGhpcy5maXhXaWR0aCkge1xuICAgICAgICAgICAgLy8gZnVsbCB3aWR0aCBmb3IgY2FudmFzIGhvc3QgYW5kIHJvb3RcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS53aWR0aCA9IHRoaXMuaG9zdC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBhbGxvdyBzY3JvbGwgY2FudmFzIGluIHJvb3RcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS53aWR0aCA9IHRoaXMuaG9zdC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5vdmVyZmxvd1ggPSAnYXV0byFpbXBvcnRhbnQnO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCd0ZXh0LWFsaWduJywgdGhpcy5ob3Jpem9udGFsQWxpZ25tZW50KTtcbiAgICAgICAgICAgIC8vIHZlcnRpY2FsIGFsaWdubWVudFxuICAgICAgICAgICAgbGV0IGhvc3RUb3BNYXJnaW4gPSAwO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICAgICAgICAgIGhvc3RUb3BNYXJnaW4gPSBNYXRoLm1heCgwLCAodGhpcy5yb290LmNsaWVudEhlaWdodCAtIGhlaWdodCkgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IE1hdGgubWF4KDAsIHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGAke2hvc3RUb3BNYXJnaW59cHhgLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgICAgICBpZiAodGhpcy5yb290LmNsaWVudEhlaWdodCA8IGhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7dGhpcy5yb290LmNsaWVudEhlaWdodH1weGApO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ2hpZGRlbicsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFxuICAgICAgICAvLyAgIGB0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0ID0gJHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmhvc3QuY2xpZW50SGVpZ2h0ID0gJHt0aGlzLmhvc3QuY2xpZW50SGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgICdcXG4nICtcbiAgICAgICAgLy8gICBgdGhpcy5jYW52YXMuaGVpZ2h0ICAgICAgID0gJHt0aGlzLmNhbnZhcy5oZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMuY2FudmFzLnN0eWxlLmhlaWdodCA9ICR7dGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0fWApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sIENvbHVtbiB0byBsb29rIGZvciBhIHBhbGV0dGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gIG1pbkxlbmd0aCBtaW5pbXVtIGxlbmd0aCBvZiBzZXF1ZW5jZSB0byBkZXRlY3QgcGFsZXR0ZSAoZW1wdHkgc3RyaW5ncyBhcmUgYWxsb3dlZClcbiAgICAgKiBAcmV0dXJuIHtTZXFQYWxldHRlfSBQYWxldHRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFscGhhYmV0IG9mIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIGNvbHVtblxuICAgICAqL1xuICAgIHN0YXRpYyBwaWNrVXBQYWxldHRlKHNlcUNvbCwgbWluTGVuZ3RoID0gNSkge1xuICAgICAgICBsZXQgcmVzID0gbnVsbDtcbiAgICAgICAgc3dpdGNoIChzZXFDb2wuc2VtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBBbWlub2FjaWRzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudDpcbiAgICAgICAgICAgICAgICByZXMgPSBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTnVjbGVvdGlkZXMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50OlxuICAgICAgICAgICAgICAgIHJlcyA9IE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXRzID0gV2ViTG9nby5nZXRTdGF0cyhzZXFDb2wsIG1pbkxlbmd0aCwgV2ViTG9nby5zcGxpdHRlckFzRmFzdGEpO1xuICAgICAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhOdWNsZW90aWRlcy5OYW1lcykpLCBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbV0sXG4gICAgICAgICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhBbWlub2FjaWRzLk5hbWVzKSksIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzXSxcbiAgICAgICAgXTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbSA9IGFscGhhYmV0Q2FuZGlkYXRlc1xuICAgICAgICAgICAgLm1hcCgoYykgPT4gV2ViTG9nby5nZXRBbHBoYWJldFNpbWlsYXJpdHkoc3RhdHMuZnJlcSwgY1swXSkpO1xuICAgICAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgICAgICBpZiAobWF4Q29zID4gMC42NSlcbiAgICAgICAgICAgIHJlcyA9IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVsxXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzID0gVW5rbm93blNlcVBhbGV0dGVzLkNvbG9yO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogU3RhdHMgb2Ygc2VxdWVuY2VzIHdpdGggc3BlY2lmaWVkIHNwbGl0dGVyIGZ1bmMsIHJldHVybnMgeyBmcmVxLCBzYW1lTGVuZ3RoIH0uXG4gICAgICogQHBhcmFtIHtERy5Db2x1bW59IHNlcUNvbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAgICAgKiBAcGFyYW0ge1NwbGl0dGVyRnVuY30gc3BsaXR0ZXJcbiAgICAgKiBAcmV0dXJuIHsgU2VxQ29sU3RhdHMgfSwgc2FtZUxlbmd0aDogYm9vbGVhbiB9IHN0YXRzIG9mIGNvbHVtbiBzZXF1ZW5jZXNcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIHNwbGl0dGVyKSB7XG4gICAgICAgIGNvbnN0IGZyZXEgPSB7fTtcbiAgICAgICAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICAgICAgICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IHNlcSBvZiBzZXFDb2wuY2F0ZWdvcmllcykge1xuICAgICAgICAgICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG4gICAgICAgICAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgICAgICAgICAgICBmaXJzdExlbmd0aCA9IG1TZXEubGVuZ3RoO1xuICAgICAgICAgICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgICAgICAgICAgIHNhbWVMZW5ndGggPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChtU2VxLmxlbmd0aCA+IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBtU2VxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKG0gaW4gZnJlcSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBmcmVxW21dID0gMDtcbiAgICAgICAgICAgICAgICAgICAgZnJlcVttXSArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBmcmVxOiBmcmVxLCBzYW1lTGVuZ3RoOiBzYW1lTGVuZ3RoIH07XG4gICAgfVxuICAgIHN0YXRpYyBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcSwgYWxwaGFiZXQsIGdhcFN5bWJvbCA9ICctJykge1xuICAgICAgICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4ubmV3IFNldChPYmplY3Qua2V5cyhmcmVxKSksIC4uLmFscGhhYmV0XSk7XG4gICAgICAgIGtleXMuZGVsZXRlKGdhcFN5bWJvbCk7XG4gICAgICAgIGNvbnN0IGZyZXFBID0gW107XG4gICAgICAgIGNvbnN0IGFscGhhYmV0QSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG0gb2Yga2V5cykge1xuICAgICAgICAgICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgICAgICAgICBhbHBoYWJldEEucHVzaChhbHBoYWJldC5oYXMobSkgPyAxIDogMCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gICAgICAgIGNvbnN0IGZyZXFWID0gbmV3IFZlY3RvcihmcmVxQSk7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0ViA9IG5ldyBWZWN0b3IoYWxwaGFiZXRBKTtcbiAgICAgICAgY29uc3QgY29zID0gdmVjdG9yRG90UHJvZHVjdChmcmVxViwgYWxwaGFiZXRWKSAvICh2ZWN0b3JMZW5ndGgoZnJlcVYpICogdmVjdG9yTGVuZ3RoKGFscGhhYmV0VikpO1xuICAgICAgICByZXR1cm4gY29zO1xuICAgIH1cbiAgICAvLyAvKiogRmlyc3QgdHJ5IHRvIGZpbmQgY29sdW1uIHdpdGggc2VtVHlwZSAnYWxpZ25lZFNlcXVlbmNlJy5cbiAgICAvLyAgKiBOZXh0IGxvb2sgZm9yIGNvbHVtbiB3aXRoIGRhdGEgYWxwaGFiZXQgY29ycmVzcG9uZGluZyB0byBhbnkgb2YgdGhlIGtub3duIHBhbGV0dGVzLlxuICAgIC8vICAqIEBwYXJhbSB7REcuRGF0YUZyYW1lfSBkYXRhRnJhbWVcbiAgICAvLyAgKiBAcmV0dXJuIHtERy5Db2x1bW59IFRoZSBjb2x1bW4gd2Ugd2VyZSBsb29raW5nIGZvciBvciBudWxsXG4gICAgLy8gICovXG4gICAgLy8gcHJpdmF0ZSBwaWNrVXBTZXFDb2woZGF0YUZyYW1lOiBERy5EYXRhRnJhbWUpOiBERy5Db2x1bW4gfCBudWxsIHtcbiAgICAvLyAgIGxldCByZXM6IERHLkNvbHVtbiB8IG51bGwgPSBkYXRhRnJhbWUuY29sdW1ucy5ieVNlbVR5cGUoJ2FsaWduZWRTZXF1ZW5jZScpO1xuICAgIC8vICAgaWYgKHJlcyA9PSBudWxsKSB7XG4gICAgLy8gICAgIGZvciAoY29uc3QgY29sIG9mIGRhdGFGcmFtZS5jb2x1bW5zKSB7XG4gICAgLy8gICAgICAgY29uc3QgY3AgPSBXZWJMb2dvLnBpY2tVcFBhbGV0dGUoY29sIGFzIERHLkNvbHVtbiwgNSk7XG4gICAgLy8gICAgICAgaWYgKGNwICE9PSBudWxsICYmICEoY3AgaW5zdGFuY2VvZiBVbmtub3duU2VxUGFsZXR0ZSkpIHtcbiAgICAvLyAgICAgICAgIHJlcyA9IGNvbDtcbiAgICAvLyAgICAgICAgIGJyZWFrO1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfVxuICAgIC8vICAgfVxuICAgIC8vICAgcmV0dXJuIHJlcztcbiAgICAvLyB9XG4gICAgc3RhdGljIHBpY2tVcFNlcUNvbDIoZGYpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBzZW1UeXBlQ29sTGlzdCA9IGRmLmNvbHVtbnMuYnlTZW1UeXBlQWxsKERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSk7XG4gICAgICAgIGxldCByZXNDb2wgPSAoX2EgPSBzZW1UeXBlQ29sTGlzdC5maW5kKChjb2wpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgICAgIHJldHVybiB1bml0cyA/IHVuaXRzLmluZGV4T2YoJ01TQScpICE9PSAtMSA6IGZhbHNlO1xuICAgICAgICB9KSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbDtcbiAgICAgICAgaWYgKCFyZXNDb2wgJiYgc2VtVHlwZUNvbExpc3QubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJlc0NvbCA9IHNlbVR5cGVDb2xMaXN0WzBdO1xuICAgICAgICByZXR1cm4gcmVzQ29sO1xuICAgIH1cbiAgICAvKiogU3BsaXQgc2VxdWVuY2UgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgbW9ub21lcnMsIHNxdWFyZSBicmFja2V0cyBtdWx0aWNoYXIgbW9ub21lciBuYW1lcyBvciBnYXAgc3ltYm9sLlxuICAgICAqIEBwYXJhbSB7YW55fSBzZXEgb2JqZWN0IHdpdGggc2VxdWVuY2VcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgbW9ub21lcnNcbiAgICAgKi9cbiAgICBzdGF0aWMgc3BsaXR0ZXJBc0Zhc3RhKHNlcSkge1xuICAgICAgICBjb25zdCByZXMgPSB3dShzZXEudG9TdHJpbmcoKS5tYXRjaEFsbChXZWJMb2dvLm1vbm9tZXJSZSkpXG4gICAgICAgICAgICAubWFwKChtYSkgPT4ge1xuICAgICAgICAgICAgbGV0IG1SZXM7XG4gICAgICAgICAgICBjb25zdCBtID0gbWFbMF07XG4gICAgICAgICAgICBpZiAobS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKG0gaW4gV2ViTG9nby5hYVN5bm9ueW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIG1SZXMgPSBXZWJMb2dvLmFhU3lub255bXNbbV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtUmVzID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYExvbmcgbW9ub21lciAnJHttfScgaGFzIG5vdCBhIHNob3J0IHN5bm9ueW0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbVJlcyA9IG07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbVJlcztcbiAgICAgICAgfSkudG9BcnJheSgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogR2V0cyBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2UgYnkgc2VwYXJhdG9yXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY31cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcikge1xuICAgICAgICByZXR1cm4gKHNlcSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNlcS5zcGxpdChzZXBhcmF0b3IpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdHNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yXG4gICAgICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRTcGxpdHRlcih1bml0cywgc2VwYXJhdG9yKSB7XG4gICAgICAgIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2Zhc3RhJykpXG4gICAgICAgICAgICByZXR1cm4gV2ViTG9nby5zcGxpdHRlckFzRmFzdGE7XG4gICAgICAgIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnc2VwYXJhdG9yJykpXG4gICAgICAgICAgICByZXR1cm4gV2ViTG9nby5nZXRTcGxpdHRlcldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yKTtcbiAgICAgICAgLypcbiAgICAgICAgZWxzZSBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdoZWxtJykpXG4gICAgICAgICAgcmV0dXJuIFdlYkxvZ28uc3BsaXR0ZXJBc0hlbG07XG4gICAgICAgIC8qKi9cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHVuaXRzICR7dW5pdHN9IC5gKTtcbiAgICAgICAgLy8gVE9ETzogU3BsaXR0ZXIgZm9yIEhFTE1cbiAgICB9XG4gICAgc3RhdGljIGdldFNwbGl0dGVyRm9yQ29sdW1uKGNvbCkge1xuICAgICAgICBpZiAoY29sLnNlbVR5cGUgIT09IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgR2V0IHNwbGl0dGVyIGZvciBzZW1UeXBlIFwiJHtERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEV9XCIgb25seS5gKTtcbiAgICAgICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSBjb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICAgICAgcmV0dXJuIFdlYkxvZ28uZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcik7XG4gICAgfVxufVxuV2ViTG9nby5yZXNpZHVlc1NldCA9ICdudWNsZW90aWRlcyc7XG5XZWJMb2dvLnZpZXdlckNvdW50ID0gLTE7XG5XZWJMb2dvLm1vbm9tZXJSZSA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG4vKiogT25seSBzb21lIG9mIHRoZSBzeW5vbnltcy4gVGhlc2Ugd2VyZSBvYnRhaW5lZCBmcm9tIHRoZSBjbHVzdGVyZWQgb2xpZ29wZXB0aWRlIGRhdGFzZXQuICovXG5XZWJMb2dvLmFhU3lub255bXMgPSB7XG4gICAgJ1tNZU5sZV0nOiAnTCcsXG4gICAgJ1tNZUFdJzogJ0EnLFxuICAgICdbTWVHXSc6ICdHJyxcbiAgICAnW01lRl0nOiAnRicsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZDJWaUxXeHZaMjh1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjNaV0l0Ykc5bmJ5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZEUVN4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUTNSRExFOUJRVThzUzBGQlN5eEZRVUZGTEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGRmRFTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1NVRkJTU3hEUVVGRE8wRkJRM0JDTEU5QlFVOHNTMEZCU3l4SlFVRkpMRTFCUVUwc1RVRkJUU3hEUVVGRE8wRkJSVGRDTEU5QlFVOHNSVUZCUXl4TlFVRk5MRVZCUVVNc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVTjJSU3hQUVVGUExFVkJRVU1zV1VGQldTeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRExFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkRMMFlzVDBGQlR5eEZRVUZETEZWQlFWVXNSVUZCUlN4clFrRkJhMElzUlVGQlF5eE5RVUZOTEdWQlFXVXNRMEZCUXp0QlFVTTNSQ3hQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRhRVVzVDBGQlR5eEZRVUZ2UWl4clFrRkJhMElzUlVGQlF5eE5RVUZOTEZsQlFWa3NRMEZCUXp0QlFXOUNha1VzYVVKQlFXbENMRU5CUVVNc1UwRkJVeXhEUVVGRExHbENRVUZwUWl4SFFVRkhMRlZCUVZNc1MwRkJhVUk3U1VGRGVFVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1NVRkRNVU1zVDBGQlR5eEpRVUZKTEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpORkxFTkJRVU1zUTBGQlF6dEJRVVZHTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUjBGQlJ5eFZRVUZUTEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUTNoRUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRhRVlzUTBGQlF5eERRVUZETzBGQlJVWXNUVUZCVFN4UFFVRlBMRzFDUVVGdFFqdEpRVk01UWp0UlFVTkZMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyWXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVNc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeFBRVUZQTEZsQlFWazdTVUZMZGtJN08wOUJSVWM3U1VGRFNDeFpRVUZaTEVsQlFWazdVVUZEZEVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEYWtJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEWml4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU53UWl4RFFVRkRPME5CUTBZN1FVRkZSQ3hOUVVGTkxFOUJRVThzVDBGQlVTeFRRVUZSTEVWQlFVVXNRMEZCUXl4UlFVRlJPMGxCZFVSMFF6dFJRVU5GTEV0QlFVc3NSVUZCUlN4RFFVRkRPMUZCY0VSR0xHRkJRVkVzUjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhuUWtGQlZ5eEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVVnlReXcwUmtGQk5FWTdVVUZEYkVZc1QwRkJSU3hIUVVGelFpeEpRVUZKTEVOQlFVTTdVVUZSTDBJc1pVRkJWU3hIUVVGWExFVkJRVVVzUTBGQlF6dFJRVVY0UWl4WFFVRk5MRWRCUVRaQ0xFbEJRVWtzUTBGQlF6dFJRVU40UXl4aFFVRlJMRWRCUVhkQ0xFbEJRVWtzUTBGQlF6dFJRVU0zUXl4dFEwRkJiVU03VVVGRE0wSXNZMEZCVXl4SFFVRnRRaXhGUVVGRkxFTkJRVU03VVVGRkwwSXNaVUZCVlN4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeGhRVUZSTEVkQlFWY3NRMEZCUXl4RFFVRkRPMUZCYTBKeVFpeHJRa0ZCWVN4SFFVRmhMRVZCUVVVc1EwRkJRenRSUVVVM1FpeHJRa0ZCWVN4SFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVE5DTEdkQ1FVRlhMRWRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGUGVrSXNZVUZCVVN4SFFVRnRRaXhGUVVGRkxFTkJRVU03VVVGTGNFTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlEzQkRMRTlCUVU4c1EwRkJReXhYUVVGWExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJYcENMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlJURkNMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzUlVGQlJTeEZRVUZGTEVOQlFVRTdPRVJCUTI1Q0xFTkJRVU1zUTBGQlF6dFJRVU40UkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRVZCUVVVc1EwRkJRVHRuUlVGRFlTeERRVUZETEVOQlFVTTdVVUZETVVRc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hIUVVGSExFTkJRVUU3WjBWQlExa3NRMEZCUXl4RFFVRkRPMUZCUlRGRUxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzWkZMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHOUNRVUZ2UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV3hGTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRzFDUVVGdFFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJoRkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVVMVJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRkRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEcxQ1FVRnRRaXhGUVVGRkxGRkJRVkVzUlVGRGFFVXNSVUZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4eFFrRkJjVUlzUlVGQlJTeFJRVUZSTEVWQlEzQkZMRVZCUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU03VVVGRE1VTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE1VUXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRia1VzUTBGQlF6dEpRWEpEUkN3d1JFRkJNRVE3U1VGRE1VUXNTVUZCV1N4TlFVRk5PMUZCUTJoQ0xFOUJRVThzU1VGQlNTeERRVUZETEdGQlFXRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRhRWNzUTBGQlF6dEpRVzlEWVN4SlFVRkpPenRaUVVOb1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1owSkJRM0JDTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1owTkJRV2RETEVOQlFVTXNRMEZCUXp0blFrRkRhRVFzVDBGQlR6dGhRVU5TTzFsQlJVUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXh4UTBGQmNVTXNRMEZCUXp0WlFVVnlSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03V1VGRGNFTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eEhRVUZITEUxQlFVMHNRMEZCUXp0WlFVVndReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVNeFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlJXcERMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZhRVFzTmtOQlFUWkRPMWxCUXpkRExIbERRVUY1UXp0WlFVTjZReXd3UTBGQk1FTTdXVUZGTVVNc1RVRkJUU3hWUVVGVkxFZEJRVWNzUTBGQlF5eERRVUZYTEVWQlFYVkVMRVZCUVVVN1owSkJRM1JHTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03WjBKQlEyNUVMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJSWFJETEVsQlFVa3NVVUZCVVN4TFFVRkxMRXRCUVVzc1EwRkJRenR2UWtGRGNrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUlRWQ0xFMUJRVTBzVDBGQlR5eEhRVUYxUWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTTdjVUpCUXpORUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6TkVMRWxCUVVrc1QwRkJUeXhMUVVGTExGTkJRVk03YjBKQlEzWkNMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVVMVFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRha1FzUTBGQlF5eERRVUZETzFsQlIwWXNjVWRCUVhGSE8xbEJRM0pITEU5QlFVODdXVUZGVUN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRmhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJZU3hGUVVGRkxFVkJRVVU3WjBKQlEyeEhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRUdHZRa0ZEWkN4UFFVRlBPMmRDUVVWVUxFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFXVXNRMEZCUXp0blFrRkROMElzVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVWNFJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SlFVRkpMRTlCUVU4c1JVRkJSVHR2UWtGRE4wUXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRk8zZENRVU12UXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenQzUWtGRGJrTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dDNRa0ZEZWtVc1QwRkJUeXhKUVVGSkxFdEJRVXNzVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0dlFrRkROMFFzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN2FVSkJRemxDTzNGQ1FVRk5PMjlDUVVOTUxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMjVDTzFsQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWS0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRV0VzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZoTEVWQlFVVXNSVUZCUlR0blFrRkRiRWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETzI5Q1FVTXZRaXhQUVVGUE8yZENRVVZVTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVdVc1EwRkJRenRuUWtGRE4wSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVVY0UlN4MVJFRkJkVVE3WjBKQlEzWkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzVDBGQlR5eEZRVUZGTzI5Q1FVTTNSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJUdDNRa0ZEY2tNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03ZDBKQlEyNURMRTFCUVUwc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTTdkMEpCUTNwRkxFOUJRVThzU1VGQlNTeExRVUZMTEU5QlFVOHNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN2IwSkJRemRFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOS08xbEJRMGdzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVktMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVVUzUml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzTWtOQlFUSkRPMWxCUlRORExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRjRUlzUTBGQlF6dExRVUZCTzBsQlJVOHNhVUpCUVdsQ0xFTkJRVU1zU1VGQlV6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXeENMR2xFUVVGcFJEdFJRVU5xUkN4eFJrRkJjVVk3VVVGRGNrWXNhVVpCUVdsR08wbEJRMjVHTEVOQlFVTTdTVUZGUkR0UFFVTkhPMGxCUTBzc1dVRkJXVHRSUVVOc1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1dVRkRiRUlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRNMFlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1JVRkJSVHRuUWtGRGRrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRuUWtGRGNFUXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03WVVGRGFrVTdXVUZEUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlEyWXNUVUZCVFN4TFFVRkxMRWRCUVZjc1NVRkJTU3hEUVVGRExFMUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtRc1RVRkJUU3hUUVVGVExFZEJRVmNzU1VGQlNTeERRVUZETEUxQlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03WjBKQlF6TkVMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03WjBKQlJYUkVMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGNrSXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlEzaENMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNoQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM1JDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRE8yRkJRMmhDTzFOQlEwWTdVVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVVlBMR1ZCUVdVN1VVRkRja0lzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5PMWxCUTJRc1QwRkJUenRSUVVWVUxFbEJRVWtzVlVGQk9FSXNRMEZCUXp0UlFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVWQlFVVTdXVUZEZUVJc1RVRkJUU3hQUVVGUExFZEJRV1VzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNRMEZCUXp0WlFVTjJSU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkROMElzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12Ump0aFFVRk5PMWxCUTB3c1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRPMU5CUTNKRE8xRkJRMFFzVFVGQlRTeFRRVUZUTEVkQlFVY3NWVUZCVlN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVU5zUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVWNlJDd3dSRUZCTUVRN1VVRkRNVVFzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJRenRSUVVNM1JDeHJSRUZCYTBRN1VVRkRiRVFzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42Uml4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJUVkVMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFbEJRVWtzU1VGQlNTeERRVUZETEdGQlFXRTdXVUZEYUVVc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSRUxFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGVrUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVsQlFVa3NTVUZCU1N4RFFVRkRMR0ZCUVdFN1dVRkROVVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTndSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pGTEVOQlFVTTdTVUZGWlN4cFFrRkJhVUlzUTBGQlF5eFJRVUZ4UWp0UlFVTnlSQ3gzUlVGQmQwVTdVVUZEZUVVc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJSV3hETEZGQlFWRXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOMlFpeExRVUZMTEhWQ1FVRjFRanRuUWtGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYkVJc1RVRkJUVHRaUVVOU0xFdEJRVXNzYjBKQlFXOUNPMmRDUVVOMlFpeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1owSkJRM0JDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRzFDUVVGdFFqdG5Ra0ZEZEVJc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzJkQ1FVTndRaXhOUVVGTk8xbEJRMUlzUzBGQlN5eHBRa0ZCYVVJN1owSkJRM0JDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRuUWtGRGNFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1pVRkJaVHRuUWtGRGJFSXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETzJkQ1FVTjZReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4WFFVRlhPMmRDUVVOa0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRmRCUVZjN1owSkJRMlFzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRGJFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1ZVRkJWVHRuUWtGRFlpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4TlFVRk5PMWxCUTFJc1MwRkJTeXh0UWtGQmJVSTdaMEpCUTNSQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMSEZDUVVGeFFqdG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NVMEZCVXp0blFrRkRXaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4cFFrRkJhVUk3WjBKQlEzQkNMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFRRVU5RTzBsQlEwZ3NRMEZCUXp0SlFVVnhRaXhsUVVGbE96czdPenRaUVVOdVF5eE5RVUZOTEZsQlFWa3NSMEZCVnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVNNVJDeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4clEwRkJhME1zV1VGQldTeFZRVUZWTEVOQlFVTXNRMEZCUXp0WlFVTnlSeXhQUVVGTkxHVkJRV1VzV1VGQlJ6dFpRVVY0UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03V1VGRmNFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzJkQ1FVTTNRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU51Uml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN2IwSkJRemRFTEVsQlFVa3NRMEZCUXl4bFFVRmxMRVZCUVVVc1EwRkJRenR2UWtGRGRrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5vUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMHc3V1VGRlJDeE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOc1FpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4NVFrRkJlVUlzUTBGQlF5eERRVUZETzFGQlEzaEZMRU5CUVVNN1MwRkJRVHRKUVVWeFFpeE5RVUZOT3pzN096dFpRVU14UWl4TlFVRk5MRmxCUVZrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdXVUZETTBRc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eG5Ra0ZCWjBJc1NVRkJTU3hEUVVGRExGRkJRVkVzYTBOQlFXdERMRmxCUVZrc1ZVRkJWU3hEUVVGRExFTkJRVU03V1VGRGNrY3NUMEZCVFN4TlFVRk5MRmxCUVVjN1dVRkZaaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRiRVFzU1VGQlNTeERRVUZETEVsQlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVOd1FpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVONFFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVONlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVWMFFpeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRXRCUVVzc1EwRkJRenRaUVVONlFpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4NVFrRkJlVUlzUTBGQlF5eERRVUZETzFGQlEzaEZMRU5CUVVNN1MwRkJRVHRKUVVWVExHRkJRV0VzUTBGQlF5eGhRVUZoTEVkQlFVY3NSMEZCUnp0UlFVTjZReXhKUVVGSkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJN1dVRkROVUlzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVVUzUkN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOYUxFTkJRVU03U1VGRlV5eFZRVUZWTzFGQlEyeENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVenRaUVVNdlJDeFBRVUZQTzFGQlJWUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xRkJSV2hDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFdEJRVXNzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUXpkRExFMUJRVTBzVDBGQlR5eEhRVUZYTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTjBSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFOQlEyeEVPMUZCUlVRc2FVWkJRV2xHTzFGQlEycEdMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEVOQlFVTTdVVUZETTBRc01rZEJRVEpITzFGQlF6TkhMR2RFUVVGblJEdFJRVVZvUkN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGYkVJc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVWQlFVVTdXVUZEZGtJc1NVRkJTU3hEUVVGRExFZEJRVzFDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVTNReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTk9MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdaMEpCUTNwQ0xFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0aFFVTnFRanRaUVVWRUxFMUJRVTBzU1VGQlNTeEhRVUZoTEVsQlFVa3NRMEZCUXl4UlFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrTXNTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3WjBKQlF6ZERMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU42UXl4TlFVRk5MRU5CUVVNc1IwRkJWeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU03WjBKQlEzcEVMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTTdiMEpCUTJoQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdaMEpCUTNoRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRoUVVOdVFqdFRRVU5HTzFGQlJVUXNORUpCUVRSQ08xRkJRelZDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEhsRFFVRjVRenRaUVVWNlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYkVNc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWs3WjBKQlEzWkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dFRRVU4yUlR0UlFVTkVMRmxCUVZrN1VVRkZXaXhOUVVGTkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03VVVGRGJFTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRE0wUXNiVVpCUVcxR08xRkJSVzVHTERCQ1FVRXdRanRSUVVNeFFpeExRVUZMTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSVHRaUVVNM1F5eE5RVUZOTEVsQlFVa3NSMEZCZVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkROMFVzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTTdXVUZGTDBNc1NVRkJTU3hEUVVGRExFZEJRVmNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVVm9ReXhOUVVGTkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGFrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSE8yOUNRVU01UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dHhRa0ZETlVJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVReXhQUVVGUExFTkJRVU1zUTBGQlF6dHhRa0ZEVGl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTlFMRzlDUVVGdlFqdHZRa0ZEZGtJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1MwRkJTeXhOUVVGTkxFdEJRVXNzU1VGQlNTeFBRVUZQTEVWQlFVVTdaMEpCUXpOQ0xFMUJRVTBzVFVGQlRTeEhRVUYzUWl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6ZERMRGhDUVVFNFFqdG5Ra0ZET1VJc1RVRkJUU3hEUVVGRExFZEJRVmNzVTBGQlV5eEhRVUZITEUxQlFVMHNRMEZCUXl4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8yZENRVVYwUkN4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtZc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dGhRVU5TTzFOQlEwWTdVVUZEUkN4WlFVRlpPMGxCUTJRc1EwRkJRenRKUVVWRUxESkRRVUV5UXp0SlFVTXpReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdPMUZCUTJ4Q0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlR0WlFVTm9RaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU16UWl4SlFVRkpMRU5CUVVNc1QwRkJVU3hEUVVGRExGTkJRVk1zUjBGQlJ5eHhRMEZCY1VNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0blFrRkRlRVlzU1VGQlNTeERRVUZETEU5QlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dGhRVU5zUXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNUMEZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzJGQlEzUkRPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRE4wUXNUMEZCVHp0UlFVVlVMRTFCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM1pETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUenRSUVVWbUxFbEJRVWtzVFVGQlRUdFpRVU5TTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVWd1FpeERRVUZETEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1VVRkRia0lzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVRc1EwRkJReXhEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUlc1RExEQkRRVUV3UXp0UlFVTXhReXhKUVVGSkxFbEJRVWtzUTBGQlF5eGhRVUZoTEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUzBGQlN5eERRVUZETEVOQlFVTTdXVUZEZEVRc1QwRkJUenRSUVVWVUxEUkNRVUUwUWp0UlFVTTFRaXhEUVVGRExFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdVVUZEYmtJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFBRVUZQTEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEZGtJc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eDFRMEZCZFVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRhRWNzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzWlVGQlpTeERRVUZETzFGQlJUZEhMRXRCUVVzc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTzFsQlF6ZERMRTFCUVUwc1IwRkJSeXhIUVVGcFFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJReTlETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRaUVVOdVFpeERRVUZETEVOQlFVTXNXVUZCV1N4RFFVTmFMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZEWml4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU16UkN4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRelZDTzFGQlEwUXNLMEpCUVN0Q08xRkJSUzlDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEV0QlFVc3NUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1owSkJRM3BGTEVsQlFVa3NUMEZCVHl4TFFVRkxMRWRCUVVjc1JVRkJSVHR2UWtGRGJrSXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dHZRa0ZGZUVJc1RVRkJUU3hUUVVGVExFZEJRVWNzZFVOQlFYVkRMRU5CUVVNN2IwSkJRekZFTERCRVFVRXdSRHR2UWtGRE1VUXNUVUZCVFN4eFFrRkJjVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTTdiMEpCUTI1RExFMUJRVTBzY1VKQlFYRkNMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVVZ1UXl4RFFVRkRMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU03YjBKQlEyNUNMRU5CUVVNc1EwRkJReXhYUVVGWExFZEJRVWNzVjBGQlZ5eERRVUZETzI5Q1FVTTFRaXhEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRhRUlzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdiMEpCUTNwRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NUVUZCUVN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNiVU5CUVVrc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN2IwSkJRek5FTEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1RVRkJUU3hEUVVGRE8yOUNRVU55UWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExGTkJRVk1zUTBGQlF6dHZRa0ZEYmtJc0swTkJRU3RETzI5Q1FVTXZReXhOUVVGTkxFZEJRVWNzUjBGQlowSXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dHZRa0ZGYUVRc2RVTkJRWFZETzI5Q1FVTjJReXg1UmtGQmVVWTdiMEpCUlhwR0xFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlExb3NRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eHhRa0ZCY1VJc1JVRkRNMFFzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03YjBKQlEycENMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdhVUpCUTJoRU8yRkJRMFk3VTBGRFJqdEpRVU5JTEVOQlFVTTdTVUZGVHl4UlFVRlJPMUZCUTJRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTVHRaUVVNMVFpeFBRVUZQTzFGQlJWUXNTVUZCU1N4TFFVRkxMRWRCUVZjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRPMUZCUTNKRUxFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWGhHTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSVHRaUVVOb1FpeE5RVUZOTEUxQlFVMHNSMEZCVnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eE5RVUZOTEVOQlFVTTdXVUZEZGtRc1RVRkJUU3hOUVVGTkxFZEJRVmNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1MwRkJTeXhEUVVGRE8xbEJRM0pFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY0VRc1MwRkJTeXhIUVVGSExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEZEVJc1RVRkJUU3hIUVVGSExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEZUVJc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRXRCUVVzc1EwRkJRenRUUVVOc1JEdFJRVVZFTEUxQlFVMHNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0UlFVTnNReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEV0QlFVc3NTVUZCU1N4RFFVRkRPMUZCUlhaRExHOUdRVUZ2Ump0UlFVTndSaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnlSQ3hOUVVGTkxGbEJRVmtzUjBGQlZ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVOd1JDeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1IwRkJSeXhaUVVGWkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJUZEVMRFpDUVVFMlFqdFJRVU0zUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3V1VGRGFrSXNjME5CUVhORE8xbEJRM1JETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzUjBGQlJ5eExRVUZMTEVsQlFVa3NRMEZCUXp0WlFVTTNSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF6dFpRVU4yUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNWVUZCVlN4RlFVRkZMRkZCUVZFc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dFRRVU5vUlR0aFFVRk5PMWxCUTB3c09FSkJRVGhDTzFsQlF6bENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUTNaRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1IwRkJSeXhuUWtGQlowSXNRMEZCUXp0WlFVTTNReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFsQlJUbERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4WlFVRlpMRVZCUVVVc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN1dVRkZjRVVzY1VKQlFYRkNPMWxCUTNKQ0xFbEJRVWtzWVVGQllTeEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTjBRaXhSUVVGUkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSVHRuUWtGRGFFTXNTMEZCU3l4TFFVRkxPMjlDUVVOU0xHRkJRV0VzUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTJ4Q0xFMUJRVTA3WjBKQlExSXNTMEZCU3l4UlFVRlJPMjlDUVVOWUxHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTnVSU3hOUVVGTk8yZENRVU5TTEV0QlFVc3NVVUZCVVR0dlFrRkRXQ3hoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNN2IwSkJRemRFTEUxQlFVMDdZVUZEVUR0WlFVTkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4WlFVRlpMRVZCUVVVc1IwRkJSeXhoUVVGaExFbEJRVWtzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0WlFVVTNSU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRTFCUVUwc1JVRkJSVHRuUWtGRGJrTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRja1VzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExGbEJRVmtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0aFFVTnFSRHRwUWtGQlRUdG5Ra0ZEVEN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNXVUZCV1N4RlFVRkZMRkZCUVZFc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dGhRVU5zUlR0VFFVTkdPMUZCUlVRc2FVSkJRV2xDTzFGQlEycENMRFpFUVVFMlJEdFJRVU0zUkN3MlJFRkJOa1E3VVVGRE4wUXNOa1JCUVRaRU8xRkJRemRFTERaRVFVRTJSRHRSUVVNM1JDeFhRVUZYTzFGQlExZ3NNa1JCUVRKRU8xRkJRek5FTEN0RVFVRXJSRHRKUVVOcVJTeERRVUZETzBsQlJVUTdPenM3VDBGSlJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1RVRkJhVUlzUlVGQlJTeFpRVUZ2UWl4RFFVRkRPMUZCUTJ4RkxFbEJRVWtzUjBGQlJ5eEhRVUZ6UWl4SlFVRkpMRU5CUVVNN1VVRkRiRU1zVVVGQlVTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZPMWxCUTNoQ0xFdEJRVXNzVlVGQlZTeERRVUZETEhkQ1FVRjNRanRuUWtGRGRFTXNSMEZCUnl4SFFVRkhMR3RDUVVGclFpeERRVUZETEZWQlFWVXNRMEZCUXp0blFrRkRjRU1zVFVGQlRUdFpRVU5TTEV0QlFVc3NWMEZCVnl4RFFVRkRMSGRDUVVGM1FqdG5Ra0ZEZGtNc1IwRkJSeXhIUVVGSExHMUNRVUZ0UWl4RFFVRkRMRmxCUVZrc1EwRkJRenRuUWtGRGRrTXNUVUZCVFR0VFFVTlFPMUZCUTBRc1RVRkJUU3hMUVVGTExFZEJRV2RDTEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxGTkJRVk1zUlVGQlJTeFBRVUZQTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkZlRVlzVFVGQlRTeHJRa0ZCYTBJc1IwRkJaME03V1VGRGRFUXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxHMUNRVUZ0UWl4RFFVRkRMRmxCUVZrc1EwRkJRenRaUVVNelJTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTXNWVUZCVlN4RFFVRkRPMU5CUTNoRkxFTkJRVU03VVVGRFJpeG5SRUZCWjBRN1VVRkRhRVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJZU3hyUWtGQmEwSTdZVUZEZGtRc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXk5RUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVazdXVUZEWml4SFFVRkhMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzFsQlJXNUZMRWRCUVVjc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkZha01zVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTQ3hOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFXbENMRVZCUVVVc1UwRkJhVUlzUlVGQlJTeFJRVUZ6UWp0UlFVTXhSU3hOUVVGTkxFbEJRVWtzUjBGQk5FSXNSVUZCUlN4RFFVRkRPMUZCUTNwRExFbEJRVWtzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjBRaXhKUVVGSkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZGZGtJc1MwRkJTeXhOUVVGTkxFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RlFVRkZPMWxCUTI1RExFMUJRVTBzU1VGQlNTeEhRVUZITEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVVelFpeEpRVUZKTEZkQlFWY3NTVUZCU1N4SlFVRkpPMmRDUVVOeVFpeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRwUWtGRGRrSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmM3WjBKQlEyeERMRlZCUVZVc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRmNrSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExGTkJRVk1zUlVGQlJUdG5Ra0ZETTBJc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVWQlFVVTdiMEpCUTNCQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNN2QwSkJRMlFzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRFpDeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8ybENRVU5rTzJGQlEwWTdVMEZEUmp0UlFVTkVMRTlCUVU4c1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEZWQlFWVXNSVUZCUlN4VlFVRlZMRVZCUVVNc1EwRkJRenRKUVVNNVF5eERRVUZETzBsQlJVMHNUVUZCVFN4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVsQlFXdENMRVZCUVVVc1VVRkJjVUlzUlVGQlJTeFpRVUZ2UWl4SFFVRkhPMUZCUTNCSExFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRlRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpORkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkZka0lzVFVGQlRTeExRVUZMTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFMUJRVTBzVTBGQlV5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTXZRaXhMUVVGTExFMUJRVTBzUTBGQlF5eEpRVUZKTEVsQlFVa3NSVUZCUlR0WlFVTndRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNFTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNwRE8xRkJRMFFzTUVaQlFUQkdPMUZCUXpGR0xFMUJRVTBzUzBGQlN5eEhRVUZYTEVsQlFVa3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRM2hETEUxQlFVMHNVMEZCVXl4SFFVRlhMRWxCUVVrc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEyaEVMRTFCUVUwc1IwRkJSeXhIUVVGWExHZENRVUZuUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjZSeXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEVOQlFVTTdTVUZGUkN3clJFRkJLMFE3U1VGREwwUXNlVVpCUVhsR08wbEJRM3BHTEhGRFFVRnhRenRKUVVOeVF5eG5SVUZCWjBVN1NVRkRhRVVzVFVGQlRUdEpRVU5PTEc5RlFVRnZSVHRKUVVOd1JTeG5Sa0ZCWjBZN1NVRkRhRVlzZFVKQlFYVkNPMGxCUTNaQ0xEWkRRVUUyUXp0SlFVTTNReXdyUkVGQkswUTdTVUZETDBRc2FVVkJRV2xGTzBsQlEycEZMSEZDUVVGeFFqdEpRVU55UWl4cFFrRkJhVUk3U1VGRGFrSXNWVUZCVlR0SlFVTldMRkZCUVZFN1NVRkRVaXhOUVVGTk8wbEJRMDRzWjBKQlFXZENPMGxCUTJoQ0xFbEJRVWs3U1VGRlJ5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVdkQ096dFJRVU14UXl4TlFVRk5MR05CUVdNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzFGQlEzcEZMRWxCUVVrc1RVRkJUU3hIUVVGeFFpeE5RVUZCTEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJUdFpRVU42UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRGVFTXNUMEZCVHl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTnlSQ3hEUVVGRExFTkJRVU1zYlVOQlFVa3NTVUZCU1N4RFFVRkRPMUZCUTFnc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeGpRVUZqTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNN1dVRkRkRU1zVFVGQlRTeEhRVUZITEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1FpeFBRVUZQTEUxQlFVMHNRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJTVVE3T3p0UFFVZEhPMGxCUTBrc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZSTzFGQlEzQkRMRTFCUVUwc1IwRkJSeXhIUVVGaExFVkJRVVVzUTBGQmJVSXNSMEZCUnl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1lVRkRia1lzUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCYjBJc1JVRkJSU3hGUVVGRk8xbEJRelZDTEVsQlFVa3NTVUZCV1N4RFFVRkRPMWxCUTJwQ0xFMUJRVTBzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU5vUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlZTeEZRVUZGTzI5Q1FVTXpRaXhKUVVGSkxFZEJRVWNzVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRE9VSTdjVUpCUVUwN2IwSkJRMHdzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXp0dlFrRkRWaXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExEUkNRVUUwUWl4RFFVRkRMRU5CUVVNN2FVSkJReTlFTzJGQlEwWTdhVUpCUVUwN1owSkJRMHdzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTldPMWxCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU03VVVGRFpDeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRSUVVWbUxFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNRMEZCUXp0SlFVVkVPenM3VDBGSFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFRRVUZwUWp0UlFVTjBSQ3hQUVVGUExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVWQlFVVTdXVUZEY2tJc1QwRkJUeXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFTkJRVU1zUTBGQlF6dEpRVU5LTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwa3NUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGaExFVkJRVVVzVTBGQmFVSTdVVUZEZUVRc1NVRkJTU3hMUVVGTExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTlCUVU4c1EwRkJRenRaUVVONlF5eFBRVUZQTEU5QlFVOHNRMEZCUXl4bFFVRmxMRU5CUVVNN1lVRkROVUlzU1VGQlNTeExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU5zUkN4UFFVRlBMRTlCUVU4c1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRSUVVOeVJEczdPMWxCUjBrN08xbEJSVVlzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4dlFrRkJiMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVnFSQ3d3UWtGQk1FSTdTVUZETlVJc1EwRkJRenRKUVVWTkxFMUJRVTBzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhIUVVGak8xRkJReTlETEVsQlFVa3NSMEZCUnl4RFFVRkRMRTlCUVU4c1MwRkJTeXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRTdXVUZETVVNc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5dzJRa0ZCTmtJc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUld4R0xFMUJRVTBzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTjRReXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8xRkJRekZETEU5QlFVOHNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGTExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdTVUZETDBNc1EwRkJRenM3UVVGMmRFSmhMRzFDUVVGWExFZEJRVWNzWVVGQllTeERRVUZETzBGQlF6TkNMRzFDUVVGWExFZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZ6Y0VKNlFpeHBRa0ZCVXl4SFFVRkhMSEZDUVVGeFFpeERRVUZETzBGQmEwVnFSQ3c0UmtGQk9FWTdRVUZETDBVc2EwSkJRVlVzUjBGQkswSTdTVUZEZEVRc1UwRkJVeXhGUVVGRkxFZEJRVWM3U1VGRFpDeFBRVUZQTEVWQlFVVXNSMEZCUnp0SlFVTmFMRTlCUVU4c1JVRkJSU3hIUVVGSE8wbEJRMW9zVDBGQlR5eEZRVUZGTEVkQlFVYzdRMEZEWWl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibHh1YVcxd2IzSjBJSGQxSUdaeWIyMGdKM2QxSnp0Y2JtbHRjRzl5ZENBcUlHRnpJSEo0YW5NZ1puSnZiU0FuY25ocWN5YzdYRzVjYm1sdGNHOXlkQ0I3Vm1WamRHOXlmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTNabFkzUnZja3hsYm1kMGFDd2dkbVZqZEc5eVJHOTBVSEp2WkhWamRIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRCYldsdWIyRmphV1J6TENCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhOOUlHWnliMjBnSnk0dUwyRnRhVzV2WVdOcFpITW5PMXh1YVcxd2IzSjBJSHRPZFdOc1pXOTBhV1JsY3l3Z1RuVmpiR1Z2ZEdsa1pYTlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZiblZqYkdWdmRHbGtaWE1uTzF4dWFXMXdiM0owSUh0VmJtdHViM2R1VTJWeFVHRnNaWFIwWlN3Z1ZXNXJibTkzYmxObGNWQmhiR1YwZEdWemZTQm1jbTl0SUNjdUxpOTFibXR1YjNkdUp6dGNibWx0Y0c5eWRDQjdVMlZ4VUdGc1pYUjBaWDBnWm5KdmJTQW5MaTR2YzJWeExYQmhiR1YwZEdWekp6dGNibWx0Y0c5eWRDQjdVM1ZpYzJOeWFYQjBhVzl1ZlNCbWNtOXRJQ2R5ZUdwekp6dGNibHh1WkdWamJHRnlaU0J0YjJSMWJHVWdKMlJoZEdGbmNtOXJMV0Z3YVM5emNtTXZaM0pwWkNjZ2UxeHVJQ0JwYm5SbGNtWmhZMlVnVW1WamRDQjdYRzRnSUNBZ1kyOXVkR0ZwYm5Nb2VEb2diblZ0WW1WeUxDQjVPaUJ1ZFcxaVpYSXBPaUJpYjI5c1pXRnVPMXh1SUNCOVhHNTlYRzVjYm1SbFkyeGhjbVVnWjJ4dlltRnNJSHRjYmlBZ2FXNTBaWEptWVdObElFaFVUVXhEWVc1MllYTkZiR1Z0Wlc1MElIdGNiaUFnSUNCblpYUkRkWEp6YjNKUWIzTnBkR2x2YmlobGRtVnVkRG9nVFc5MWMyVkZkbVZ1ZENrNklFUkhMbEJ2YVc1ME8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQjBlWEJsSUUxdmJtOXRaWEpHY21WeGN5QTlJSHNnVzIwNklITjBjbWx1WjEwNklHNTFiV0psY2lCOU8xeHVaWGh3YjNKMElIUjVjR1VnVTJWeFEyOXNVM1JoZEhNZ1BTQjdJR1p5WlhFNklFMXZibTl0WlhKR2NtVnhjeXdnYzJGdFpVeGxibWQwYURvZ1ltOXZiR1ZoYmlCOVhHNWxlSEJ2Y25RZ2RIbHdaU0JUY0d4cGRIUmxja1oxYm1NZ1BTQW9jMlZ4T2lCemRISnBibWNwSUQwK0lITjBjbWx1WjF0ZE8xeHVYRzVJVkUxTVEyRnVkbUZ6Uld4bGJXVnVkQzV3Y205MGIzUjVjR1V1WjJWMFEzVnljMjl5VUc5emFYUnBiMjRnUFNCbWRXNWpkR2x2YmlobGRtVnVkRG9nVFc5MWMyVkZkbVZ1ZENrNklFUkhMbEJ2YVc1MElIdGNiaUFnWTI5dWMzUWdjbVZqZENBOUlIUm9hWE11WjJWMFFtOTFibVJwYm1kRGJHbGxiblJTWldOMEtDazdYRzRnSUhKbGRIVnliaUJ1WlhjZ1JFY3VVRzlwYm5Rb1pYWmxiblF1WTJ4cFpXNTBXQ0F0SUhKbFkzUXViR1ZtZEN3Z1pYWmxiblF1WTJ4cFpXNTBXU0F0SUhKbFkzUXVkRzl3S1R0Y2JuMDdYRzVjYmtSSExsSmxZM1F1Y0hKdmRHOTBlWEJsTG1OdmJuUmhhVzV6SUQwZ1puVnVZM1JwYjI0b2VEb2diblZ0WW1WeUxDQjVPaUJ1ZFcxaVpYSXBPaUJpYjI5c1pXRnVJSHRjYmlBZ2NtVjBkWEp1SUhSb2FYTXViR1ZtZENBOFBTQjRJQ1ltSUhnZ1BEMGdkR2hwY3k1eWFXZG9kQ0FtSmlCMGFHbHpMblJ2Y0NBOFBTQjVJQ1ltSUhrZ1BEMGdkR2hwY3k1aWIzUjBiMjA3WEc1OU8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1VHOXphWFJwYjI1TmIyNXZiV1Z5U1c1bWJ5QjdYRzRnSUM4cUtpQlRaWEYxWlc1alpYTWdZMjkxYm5RZ2QybDBhQ0J0YjI1dmJXVnlJR2x1SUhCdmMybDBhVzl1WEc0Z0lDQXFMMXh1SUNCamIzVnVkRG9nYm5WdFltVnlPMXh1WEc0Z0lDOHFLaUJTWlcxbGJXSmxjaUJ6WTNKbFpXNGdZMjl2Y21SeklISmxZM1JjYmlBZ0lDb3ZYRzRnSUdKdmRXNWtjem9nUkVjdVVtVmpkRHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWdwSUh0Y2JpQWdJQ0IwYUdsekxtTnZkVzUwSUQwZ01EdGNiaUFnSUNCMGFHbHpMbUp2ZFc1a2N5QTlJRzVsZHlCRVJ5NVNaV04wS0RBc0lEQXNJREFzSURBcE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCUWIzTnBkR2x2YmtsdVptOGdlMXh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnYm1GdFpUb2djM1J5YVc1bk8xeHVJQ0JtY21WeE9pQjdJRnR0T2lCemRISnBibWRkT2lCUWIzTnBkR2x2YmsxdmJtOXRaWEpKYm1adklIMDdYRzRnSUhKdmQwTnZkVzUwT2lCdWRXMWlaWEk3WEc1Y2JpQWdMeW9xSUdaeVpYRWdQU0I3ZlN3Z2NtOTNRMjkxYm5RZ1BTQXdYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxJRTVoYldVZ2IyWWdjRzl6YVhScGIyNGdLQ2N4TVRGQkp5d2dKekV4TVM0eEp5d2daWFJqS1Z4dUlDQWdLaTljYmlBZ1kyOXVjM1J5ZFdOMGIzSW9ibUZ0WlRvZ2MzUnlhVzVuS1NCN1hHNGdJQ0FnZEdocGN5NXVZVzFsSUQwZ2JtRnRaVHRjYmlBZ0lDQjBhR2x6TG1aeVpYRWdQU0I3ZlR0Y2JpQWdJQ0IwYUdsekxuSnZkME52ZFc1MElEMGdNRHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWMlZpVEc5bmJ5QmxlSFJsYm1SeklFUkhMa3B6Vm1sbGQyVnlJSHRjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJ5WlhOcFpIVmxjMU5sZENBOUlDZHVkV05zWlc5MGFXUmxjeWM3WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUhacFpYZGxja052ZFc1ME9pQnVkVzFpWlhJZ1BTQXRNVHRjYmx4dUlDQndjbWwyWVhSbElIWnBaWGRsY2tsa09pQnVkVzFpWlhJZ1BTQXRNVHRjYmlBZ2NISnBkbUYwWlNCcGJtbDBhV0ZzYVhwbFpEb2dZbTl2YkdWaGJpQTlJR1poYkhObE8xeHVYRzRnSUM4dklIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1kyOXNiM0pUWTJobGJXVTZJRU52Ykc5eVUyTm9aVzFsSUQwZ1EyOXNiM0pUWTJobGJXVnpXMDUxWTJ4bGIzUnBaR1Z6VjJWaVRHOW5ieTV5WlhOcFpIVmxjMU5sZEYwN1hHNGdJSEJ5YjNSbFkzUmxaQ0JqY0RvZ1UyVnhVR0ZzWlhSMFpTQjhJRzUxYkd3Z1BTQnVkV3hzTzF4dVhHNGdJSEJ5YVhaaGRHVWdhRzl6ZEQ4NklFaFVUVXhFYVhaRmJHVnRaVzUwTzF4dUlDQndjbWwyWVhSbElHMXpaMGh2YzNRL09pQklWRTFNUld4bGJXVnVkRHRjYmlBZ2NISnBkbUYwWlNCallXNTJZWE0vT2lCSVZFMU1RMkZ1ZG1GelJXeGxiV1Z1ZER0Y2JpQWdjSEpwZG1GMFpTQnpiR2xrWlhJL09pQkVSeTVTWVc1blpWTnNhV1JsY2p0Y2JpQWdjSEpwZG1GMFpTQjBaWGgwUW1GelpXeHBibVU2SUVOaGJuWmhjMVJsZUhSQ1lYTmxiR2x1WlR0Y2JseHVJQ0J3Y21sMllYUmxJR0Y0YVhOSVpXbG5hSFE2SUc1MWJXSmxjaUE5SURFeU8xeHVYRzRnSUhCeWFYWmhkR1VnYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzQ4YzNSeWFXNW5QaUI4SUc1MWJHd2dQU0J1ZFd4c08xeHVJQ0J3Y21sMllYUmxJSE53YkdsMGRHVnlPaUJUY0d4cGRIUmxja1oxYm1NZ2ZDQnVkV3hzSUQwZ2JuVnNiRHRjYmlBZ0x5OGdjSEpwZG1GMFpTQnRZWGhNWlc1bmRHZzZJRzUxYldKbGNpQTlJREV3TUR0Y2JpQWdjSEpwZG1GMFpTQndiM05wZEdsdmJuTTZJRkJ2YzJsMGFXOXVTVzVtYjF0ZElEMGdXMTA3WEc1Y2JpQWdjSEpwZG1GMFpTQnliM2R6VFdGemEyVmtPaUJ1ZFcxaVpYSWdQU0F3TzF4dUlDQndjbWwyWVhSbElISnZkM05PZFd4c09pQnVkVzFpWlhJZ1BTQXdPMXh1WEc0Z0lDOHZJRlpwWlhkbGNpZHpJSEJ5YjNCbGNuUnBaWE1nS0d4cGEyVnNlU0IwYUdWNUlITm9iM1ZzWkNCaVpTQndkV0pzYVdNZ2MyOGdkR2hoZENCMGFHVjVJR05oYmlCaVpTQnpaWFFnYjNWMGMybGtaU2xjYmlBZ2NISnBkbUYwWlNCZmNHOXphWFJwYjI1WGFXUjBhRG9nYm5WdFltVnlPMXh1SUNCd2RXSnNhV01nY0c5emFYUnBiMjVYYVdSMGFEb2diblZ0WW1WeU8xeHVJQ0J3ZFdKc2FXTWdiV2x1U0dWcFoyaDBPaUJ1ZFcxaVpYSTdYRzRnSUhCMVlteHBZeUJ0WVhoSVpXbG5hSFE2SUc1MWJXSmxjanRjYmlBZ2NIVmliR2xqSUdOdmJuTnBaR1Z5VG5Wc2JGTmxjWFZsYm1ObGN6b2dZbTl2YkdWaGJqdGNiaUFnY0hWaWJHbGpJSE5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaVG9nYzNSeWFXNW5JSHdnYm5Wc2JEdGNiaUFnY0hWaWJHbGpJSE4wWVhKMFVHOXphWFJwYjI1T1lXMWxPaUJ6ZEhKcGJtY2dmQ0J1ZFd4c08xeHVJQ0J3ZFdKc2FXTWdaVzVrVUc5emFYUnBiMjVPWVcxbE9pQnpkSEpwYm1jZ2ZDQnVkV3hzTzF4dUlDQndkV0pzYVdNZ1ptbDRWMmxrZEdnNklHSnZiMnhsWVc0N1hHNGdJSEIxWW14cFl5QjJaWEowYVdOaGJFRnNhV2R1YldWdWREb2djM1J5YVc1bklId2diblZzYkR0Y2JpQWdjSFZpYkdsaklHaHZjbWw2YjI1MFlXeEJiR2xuYm0xbGJuUTZJSE4wY21sdVp5QjhJRzUxYkd3N1hHNGdJSEIxWW14cFl5Qm1hWFJCY21WaE9pQmliMjlzWldGdU8xeHVJQ0J3ZFdKc2FXTWdjMmh5YVc1clJXMXdkSGxVWVdsc09pQmliMjlzWldGdU8xeHVJQ0J3ZFdKc2FXTWdjMnRwY0VWdGNIUjVVRzl6YVhScGIyNXpPaUJpYjI5c1pXRnVPMXh1WEc0Z0lIQnlhWFpoZEdVZ2NHOXphWFJwYjI1T1lXMWxjem9nYzNSeWFXNW5XMTBnUFNCYlhUdGNibHh1SUNCd2NtbDJZWFJsSUhOMFlYSjBVRzl6YVhScGIyNDZJRzUxYldKbGNpQTlJQzB4TzF4dVhHNGdJSEJ5YVhaaGRHVWdaVzVrVUc5emFYUnBiMjQ2SUc1MWJXSmxjaUE5SUMweE8xeHVYRzRnSUM4cUtpQkdiM0lnYzNSaGNuUlFiM05wZEdsdmJpQmxjWFZoYkhNZ2RHOGdaVzVrVUc5emFYUnBiMjRnVEdWdVozUm9JR2x6SURFZ0tpOWNiaUFnY0hKcGRtRjBaU0JuWlhRZ1RHVnVaM1JvS0NrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiaUE4UFNCMGFHbHpMbVZ1WkZCdmMybDBhVzl1SUQ4Z2RHaHBjeTVsYm1SUWIzTnBkR2x2YmlBdElIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJpQXJJREVnT2lBd08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQjJhV1YzVTNWaWN6b2dVM1ZpYzJOeWFYQjBhVzl1VzEwZ1BTQmJYVHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWdwSUh0Y2JpQWdJQ0J6ZFhCbGNpZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1MmFXVjNaWEpKWkNBOUlGZGxZa3h2WjI4dWRtbGxkMlZ5UTI5MWJuUTdYRzRnSUNBZ1YyVmlURzluYnk1MmFXVjNaWEpEYjNWdWRDQXJQU0F4TzF4dVhHNGdJQ0FnZEdocGN5NTBaWGgwUW1GelpXeHBibVVnUFNBbmRHOXdKenRjYmx4dUlDQWdJSFJvYVhNdVgzQnZjMmwwYVc5dVYybGtkR2dnUFNCMGFHbHpMbkJ2YzJsMGFXOXVWMmxrZEdnZ1BTQjBhR2x6TG1ac2IyRjBLQ2R3YjNOcGRHbHZibGRwWkhSb0p5d2dNVFl2S2l4Y2JpQWdJQ0FnSUh0bFpHbDBiM0k2SUNkemJHbGtaWEluTENCdGFXNDZJRFFzSUcxaGVEb2dOalFzSUhCdmMzUm1hWGc2SUNkd2VDZDlLaThwTzF4dUlDQWdJSFJvYVhNdWJXbHVTR1ZwWjJoMElEMGdkR2hwY3k1bWJHOWhkQ2duYldsdVNHVnBaMmgwSnl3Z05UQXZLaXhjYmlBZ0lDQWdJSHRsWkdsMGIzSTZJQ2R6Ykdsa1pYSW5MQ0J0YVc0NklESTFMQ0J0WVhnNklESTFNQ3dnY0c5emRHWnBlRG9nSjNCNEozMHFMeWs3WEc0Z0lDQWdkR2hwY3k1dFlYaElaV2xuYUhRZ1BTQjBhR2x6TG1ac2IyRjBLQ2R0WVhoSVpXbG5hSFFuTENBeE1EQXZLaXhjYmlBZ0lDQWdJSHRsWkdsMGIzSTZJQ2R6Ykdsa1pYSW5MQ0J0YVc0NklESTFMQ0J0WVhnNklEVXdNQ3dnY0c5emRHWnBlRG9nSjNCNEozMHFMeWs3WEc1Y2JpQWdJQ0IwYUdsekxtTnZibk5wWkdWeVRuVnNiRk5sY1hWbGJtTmxjeUE5SUhSb2FYTXVZbTl2YkNnblkyOXVjMmxrWlhKT2RXeHNVMlZ4ZFdWdVkyVnpKeXdnWm1Gc2MyVXBPMXh1SUNBZ0lIUm9hWE11YzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsSUQwZ2RHaHBjeTV6ZEhKcGJtY29KM05sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU2NzSUc1MWJHd3BPMXh1WEc0Z0lDQWdkR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlNBOUlIUm9hWE11YzNSeWFXNW5LQ2R6ZEdGeWRGQnZjMmwwYVc5dVRtRnRaU2NzSUc1MWJHd3BPMXh1SUNBZ0lIUm9hWE11Wlc1a1VHOXphWFJwYjI1T1lXMWxJRDBnZEdocGN5NXpkSEpwYm1jb0oyVnVaRkJ2YzJsMGFXOXVUbUZ0WlNjc0lHNTFiR3dwTzF4dVhHNGdJQ0FnZEdocGN5NW1hWGhYYVdSMGFDQTlJSFJvYVhNdVltOXZiQ2duWm1sNFYybGtkR2duTENCbVlXeHpaU2s3WEc1Y2JpQWdJQ0IwYUdsekxuWmxjblJwWTJGc1FXeHBaMjV0Wlc1MElEMGdkR2hwY3k1emRISnBibWNvSjNabGNuUnBZMkZzUVd4cFoyNXRaVzUwSnl3Z0oyMXBaR1JzWlNjc1hHNGdJQ0FnSUNCN1kyaHZhV05sY3pvZ1d5ZDBiM0FuTENBbmJXbGtaR3hsSnl3Z0oySnZkSFJ2YlNkZGZTazdYRzRnSUNBZ2RHaHBjeTVvYjNKcGVtOXVkR0ZzUVd4cFoyNXRaVzUwSUQwZ2RHaHBjeTV6ZEhKcGJtY29KMmh2Y21sNmIyNTBZV3hCYkdsbmJtMWxiblFuTENBblkyVnVkR1Z5Snl4Y2JpQWdJQ0FnSUh0amFHOXBZMlZ6T2lCYkoyeGxablFuTENBblkyVnVkR1Z5Snl3Z0ozSnBaMmgwSjExOUtUdGNiaUFnSUNCMGFHbHpMbVpwZEVGeVpXRWdQU0IwYUdsekxtSnZiMndvSjJacGRFRnlaV0VuTENCMGNuVmxLVHRjYmlBZ0lDQjBhR2x6TG5Ob2NtbHVhMFZ0Y0hSNVZHRnBiQ0E5SUhSb2FYTXVZbTl2YkNnbmMyaHlhVzVyUlcxd2RIbFVZV2xzSnl3Z2RISjFaU2s3WEc0Z0lDQWdkR2hwY3k1emEybHdSVzF3ZEhsUWIzTnBkR2x2Ym5NZ1BTQjBhR2x6TG1KdmIyd29KM05yYVhCRmJYQjBlVkJ2YzJsMGFXOXVjeWNzSUdaaGJITmxLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdhVzVwZENncE9pQlFjbTl0YVhObFBIWnZhV1ErSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVwYm1sMGFXRnNhWHBsWkNrZ2UxeHVJQ0FnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWduVjJWaVRHOW5ieUJ6WldOdmJtUWdhVzVwZEdsaGJHbDZZWFJwYjI0aEp5azdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXBibWwwYVdGc2FYcGxaQ0E5SUhSeWRXVTdYRzRnSUNBZ2RHaHBjeTVvWld4d1ZYSnNJRDBnSnk5b1pXeHdMM1pwYzNWaGJHbDZaUzkyYVdWM1pYSnpMM2RsWWkxc2IyZHZMbTFrSnp0Y2JseHVJQ0FnSUhSb2FYTXViWE5uU0c5emRDQTlJSFZwTG1ScGRpZ25UbThnYldWemMyRm5aU2NwTzF4dUlDQWdJSFJvYVhNdWJYTm5TRzl6ZEM1emRIbHNaUzVrYVhOd2JHRjVJRDBnSjI1dmJtVW5PMXh1WEc0Z0lDQWdkR2hwY3k1allXNTJZWE1nUFNCMWFTNWpZVzUyWVhNb0tUdGNiaUFnSUNCMGFHbHpMbU5oYm5aaGN5NXpkSGxzWlM1M2FXUjBhQ0E5SUNjeE1EQWxKenRjYmx4dUlDQWdJSFJvYVhNdWFHOXpkQ0E5SUhWcExtUnBkaWhiZEdocGN5NXRjMmRJYjNOMExDQjBhR2x6TG1OaGJuWmhjMTBwTzF4dVhHNGdJQ0FnTHk4Z2RHaHBjeTV6Ykdsa1pYSWdQU0IxYVM1eVlXNW5aVk5zYVdSbGNpZ3dMQ0F5TUN3Z01pd2dOU2s3WEc0Z0lDQWdMeThnZEdocGN5NXpiR2xrWlhJdWNtOXZkQzV6ZEhsc1pTNTNhV1IwYUNBOUlDY3hNREFsSnp0Y2JpQWdJQ0F2THlCMGFHbHpMbk5zYVdSbGNpNXliMjkwTG5OMGVXeGxMbWhsYVdkb2RDQTlJQ2N4TW5CNEp6dGNibHh1SUNBZ0lHTnZibk4wSUdkbGRFMXZibTl0WlhJZ1BTQW9jRG9nUkVjdVVHOXBiblFwT2lCYmJuVnRZbVZ5TENCemRISnBibWNnZkNCdWRXeHNMQ0JRYjNOcGRHbHZiazF2Ym05dFpYSkpibVp2SUh3Z2JuVnNiRjBnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYWxCdmN5QTlJRTFoZEdndVpteHZiM0lvY0M1NElDOGdkR2hwY3k1ZmNHOXphWFJwYjI1WGFXUjBhQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQndiM05wZEdsdmJpQTlJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTzF4dVhHNGdJQ0FnSUNCcFppQW9jRzl6YVhScGIyNGdQVDA5SUhadmFXUWdNQ2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRnRxVUc5ekxDQnVkV3hzTENCdWRXeHNYVHRjYmx4dUlDQWdJQ0FnWTI5dWMzUWdiVzl1YjIxbGNqb2djM1J5YVc1bklId2dkVzVrWldacGJtVmtJRDBnVDJKcVpXTjBMbXRsZVhNb2NHOXphWFJwYjI0dVpuSmxjU2xjYmlBZ0lDQWdJQ0FnTG1acGJtUW9LRzBwSUQwK0lIQnZjMmwwYVc5dUxtWnlaWEZiYlYwdVltOTFibVJ6TG1OdmJuUmhhVzV6S0hBdWVDd2djQzU1S1NrN1hHNGdJQ0FnSUNCcFppQW9iVzl1YjIxbGNpQTlQVDBnZFc1a1pXWnBibVZrS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVzJwUWIzTXNJRzUxYkd3c0lHNTFiR3hkTzF4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnVzJwUWIzTXNJRzF2Ym05dFpYSXNJSEJ2YzJsMGFXOXVMbVp5WlhGYmJXOXViMjFsY2wxZE8xeHVJQ0FnSUgwN1hHNWNibHh1SUNBZ0lDOHZJSFJvYVhNdWMzVmljeTV3ZFhOb0tISjRhbk11Wm5KdmJVVjJaVzUwUEUxdmRYTmxSWFpsYm5RK0tIUm9hWE11WTJGdWRtRnpMQ0FuYlc5MWMyVnZkbVZ5SnlrdWMzVmljMk55YVdKbEtDaGxPaUJOYjNWelpVVjJaVzUwS1NBOVBpQjdYRzRnSUNBZ0x5OGdmU2twTzF4dVhHNGdJQ0FnZEdocGN5NTJhV1YzVTNWaWN5NXdkWE5vS0hKNGFuTXVabkp2YlVWMlpXNTBQRTF2ZFhObFJYWmxiblErS0hSb2FYTXVZMkZ1ZG1GekxDQW5iVzkxYzJWdGIzWmxKeWt1YzNWaWMyTnlhV0psS0NobE9pQk5iM1Z6WlVWMlpXNTBLU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9JWFJvYVhNdVkyRnVkbUZ6S1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR0Z5WjNNZ1BTQmxJR0Z6SUUxdmRYTmxSWFpsYm5RN1hHNGdJQ0FnSUNCamIyNXpkQ0JiYWxCdmN5d2diVzl1YjIxbGNsMGdQU0JuWlhSTmIyNXZiV1Z5S0hSb2FYTXVZMkZ1ZG1GekxtZGxkRU4xY25OdmNsQnZjMmwwYVc5dUtHRnlaM01wS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVpHRjBZVVp5WVcxbElDWW1JSFJvYVhNdWMyVnhRMjlzSUNZbUlIUm9hWE11YzNCc2FYUjBaWElnSmlZZ2JXOXViMjFsY2lrZ2UxeHVJQ0FnSUNBZ0lDQjFhUzUwYjI5c2RHbHdMbk5vYjNkU2IzZEhjbTkxY0NoMGFHbHpMbVJoZEdGR2NtRnRaU3dnS0dsU2IzY3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCelpYRWdQU0IwYUdsekxuTmxjVU52YkNFdVoyVjBLR2xTYjNjcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElITmxjVTBnUFNCelpYRWdQeUIwYUdsekxuTndiR2wwZEdWeUlTaHpaWEVwVzNSb2FYTXVjM1JoY25SUWIzTnBkR2x2YmlBcklHcFFiM05kSURvZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYzJWeFRTQTlQVDBnYlc5dWIyMWxjaUFtSmlCMGFHbHpMbVJoZEdGR2NtRnRaUzVtYVd4MFpYSXVaMlYwS0dsU2IzY3BPMXh1SUNBZ0lDQWdJQ0I5TENCaGNtZHpMbmdnS3lBeE5pd2dZWEpuY3k1NUlDc2dNVFlwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZFdrdWRHOXZiSFJwY0M1b2FXUmxLQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2twTzF4dVhHNGdJQ0FnZEdocGN5NTJhV1YzVTNWaWN5NXdkWE5vS0hKNGFuTXVabkp2YlVWMlpXNTBQRTF2ZFhObFJYWmxiblErS0hSb2FYTXVZMkZ1ZG1GekxDQW5iVzkxYzJWa2IzZHVKeWt1YzNWaWMyTnlhV0psS0NobE9pQk5iM1Z6WlVWMlpXNTBLU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9JWFJvYVhNdVkyRnVkbUZ6SUh4OElHVXVZblYwZEc5dUlDRTlJREFwWEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmx4dUlDQWdJQ0FnWTI5dWMzUWdZWEpuY3lBOUlHVWdZWE1nVFc5MWMyVkZkbVZ1ZER0Y2JpQWdJQ0FnSUdOdmJuTjBJRnRxVUc5ekxDQnRiMjV2YldWeVhTQTlJR2RsZEUxdmJtOXRaWElvZEdocGN5NWpZVzUyWVhNdVoyVjBRM1Z5YzI5eVVHOXphWFJwYjI0b1lYSm5jeWtwTzF4dVhHNGdJQ0FnSUNBdkx5QndjbVYyWlc1MGN5QmtaWE5sYkdWamRDQmhiR3dnY205M2N5QnBaaUIzWlNCdGFYTnpJRzF2Ym05dFpYSWdZbTkxYm1SelhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1a1lYUmhSbkpoYldVZ0ppWWdkR2hwY3k1elpYRkRiMndnSmlZZ2RHaHBjeTV6Y0d4cGRIUmxjaUFtSmlCdGIyNXZiV1Z5S1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WkdGMFlVWnlZVzFsTG5ObGJHVmpkR2x2Ymk1cGJtbDBLQ2hwVW05M0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzJWeElEMGdkR2hwY3k1elpYRkRiMndoTG1kbGRDaHBVbTkzS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCelpYRk5JRDBnYzJWeElEOGdkR2hwY3k1emNHeHBkSFJsY2lFb2MyVnhLVnQwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnS3lCcVVHOXpYU0E2SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSE5sY1UwZ1BUMDlJRzF2Ym05dFpYSWdKaVlnZEdocGN5NWtZWFJoUm5KaGJXVXVabWxzZEdWeUxtZGxkQ2hwVW05M0tUdGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2twTzF4dVhHNGdJQ0FnZEdocGN5NTJhV1YzVTNWaWN5NXdkWE5vS0hWcExtOXVVMmw2WlVOb1lXNW5aV1FvZEdocGN5NXliMjkwS1M1emRXSnpZM0pwWW1Vb2RHaHBjeTV5YjI5MFQyNVRhWHBsUTJoaGJtZGxaQzVpYVc1a0tIUm9hWE1wS1NrN1hHNWNiaUFnSUNCMGFHbHpMbkp2YjNRdVlYQndaVzVrS0hSb2FYTXVhRzl6ZENrN1hHNGdJQ0FnTHk4Z2RHaHBjeTV5YjI5MExtRndjR1Z1WkVOb2FXeGtLSFJvYVhNdWMyeHBaR1Z5TG5KdmIzUXBPMXh1WEc0Z0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJSEp2YjNSUGJsTnBlbVZEYUdGdVoyVmtLR0Z5WjNNNklHRnVlU2tnZTF4dUlDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1WEc0Z0lDQWdMeThnWTI5dWMyOXNaUzVrWldKMVp5aGdWMlZpVEc5bmJ5NXZibEp2YjNSVGFYcGxRMmhoYm1kbFpDZ3BJR0FnSzF4dUlDQWdJQzh2SUNBZ1lISnZiM1F1ZDJsa2RHZzlKSHQwYUdsekxuSnZiM1F1WTJ4cFpXNTBWMmxrZEdoOUxDQnliMjkwTG1obGFXZG9kRDBrZTNSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUjlMQ0JnSUN0Y2JpQWdJQ0F2THlBZ0lHQmpZVzUyWVhNdWQybGtkR2c5Skh0MGFHbHpMbU5oYm5aaGN5NTNhV1IwYUgwc0lHTmhiblpoY3k1b1pXbG5hSFE5Skh0MGFHbHpMbU5oYm5aaGN5NW9aV2xuYUhSOUlDNWdLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkJjM05wWjI1eklIdEFiR2x1YXlCelpYRkRiMng5SUdGdVpDQjdRR3hwYm1zZ1kzQjlJR0poYzJWa0lHOXVJSHRBYkdsdWF5QnpaWEYxWlc1alpVTnZiSFZ0Yms1aGJXVjlJR0Z1WkNCallXeHNjeUI3UUd4cGJtc2djbVZ1WkdWeWZTZ3BMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0IxY0dSaGRHVlRaWEZEYjJ3b0tUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WkdGMFlVWnlZVzFsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbk5sY1VOdmJDQTlJSFJvYVhNdWMyVnhkV1Z1WTJWRGIyeDFiVzVPWVcxbElEOGdkR2hwY3k1a1lYUmhSbkpoYldVdVkyOXNLSFJvYVhNdWMyVnhkV1Z1WTJWRGIyeDFiVzVPWVcxbEtTQTZJRzUxYkd3N1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1elpYRkRiMndnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sY1VOdmJDQTlJRmRsWWt4dloyOHVjR2xqYTFWd1UyVnhRMjlzTWloMGFHbHpMbVJoZEdGR2NtRnRaU2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlZ4ZFdWdVkyVkRiMngxYlc1T1lXMWxJRDBnZEdocGN5NXpaWEZEYjJ3Z1B5QjBhR2x6TG5ObGNVTnZiQzV1WVcxbElEb2diblZzYkR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG5ObGNVTnZiQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IxYm1sMGN6b2djM1J5YVc1bklEMGdkR2hwY3k1elpYRkRiMndoTG1kbGRGUmhaeWhFUnk1VVFVZFRMbFZPU1ZSVEtUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jZ1BTQjBhR2x6TG5ObGNVTnZiQ0V1WjJWMFZHRm5LQ2R6WlhCaGNtRjBiM0luS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6Y0d4cGRIUmxjaUE5SUZkbFlreHZaMjh1WjJWMFUzQnNhWFIwWlhJb2RXNXBkSE1zSUhObGNHRnlZWFJ2Y2lrN1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1MWNHUmhkR1ZRYjNOcGRHbHZibk1vS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqY0NBOUlGZGxZa3h2WjI4dWNHbGphMVZ3VUdGc1pYUjBaU2gwYUdsekxuTmxjVU52YkNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbk53YkdsMGRHVnlJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpJRDBnVzEwN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJpQTlJQzB4TzF4dUlDQWdJQ0FnSUNCMGFHbHpMbVZ1WkZCdmMybDBhVzl1SUQwZ0xURTdYRzRnSUNBZ0lDQWdJSFJvYVhNdVkzQWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxuSmxibVJsY2lncE8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQjFjR1JoZEdWUWIzTnBkR2x2Ym5Nb0tUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG5ObGNVTnZiQ2xjYmlBZ0lDQWdJSEpsZEhWeWJqdGNibHh1SUNBZ0lHeGxkQ0JqWVhSbFoyOXlhV1Z6T2lBb2MzUnlhVzVuSUh3Z2JuVnNiQ2tnVzEwN1hHNGdJQ0FnYVdZZ0tIUm9hWE11YzJoeWFXNXJSVzF3ZEhsVVlXbHNLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnBibVJwWTJWek9pQkpiblF6TWtGeWNtRjVJRDBnZEdocGN5NWtZWFJoUm5KaGJXVXVabWxzZEdWeUxtZGxkRk5sYkdWamRHVmtTVzVrWlhobGN5Z3BPMXh1SUNBZ0lDQWdZMkYwWldkdmNtbGxjeUE5SUVGeWNtRjVMbVp5YjIwb2JtVjNJRk5sZENoY2JpQWdJQ0FnSUNBZ1FYSnlZWGt1Wm5KdmJTaEJjbkpoZVNocGJtUnBZMlZ6TG14bGJtZDBhQ2t1YTJWNWN5Z3BLUzV0WVhBb0tHazZJRzUxYldKbGNpa2dQVDRnZEdocGN5NXpaWEZEYjJ3aExtZGxkQ2hwYm1ScFkyVnpXMmxkS1NrcEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWTJGMFpXZHZjbWxsY3lBOUlIUm9hWE11YzJWeFEyOXNMbU5oZEdWbmIzSnBaWE03WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk4wSUcxaGVFeGxibWQwYUNBOUlHTmhkR1ZuYjNKcFpYTXViR1Z1WjNSb0lENGdNQ0EvSUUxaGRHZ3ViV0Y0S0M0dUxtTmhkR1ZuYjNKcFpYTXViV0Z3S0Z4dUlDQWdJQ0FnS0hNcElEMCtJSE1nSVQwOUlHNTFiR3dnUHlCMGFHbHpMbk53YkdsMGRHVnlJU2h6S1M1c1pXNW5kR2dnT2lBd0tTa2dPaUF3TzF4dVhHNGdJQ0FnTHk4Z1IyVjBJSEJ2YzJsMGFXOXVJRzVoYldWeklHWnliMjBnWkdGMFlTQmpiMngxYlc0Z2RHRm5JQ2R3YjNOcGRHbHZiazVoYldWekoxeHVJQ0FnSUdOdmJuTjBJSEJ2YzJsMGFXOXVUbUZ0WlhOVWVIUWdQU0IwYUdsekxuTmxjVU52YkM1blpYUlVZV2NvSjNCdmMybDBhVzl1VG1GdFpYTW5LVHRjYmlBZ0lDQXZMeUJHWVd4c1ltRmpheUJwWmlBbmNHOXphWFJwYjI1T1lXMWxjeWNnZEdGbklHbHpJRzV2ZENCd2NtOTJhV1JsWkZ4dUlDQWdJSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjeUE5SUhCdmMybDBhVzl1VG1GdFpYTlVlSFFnUHlCd2IzTnBkR2x2Yms1aGJXVnpWSGgwTG5Od2JHbDBLQ2NzSUNjcExtMWhjQ2dvYmlrZ1BUNGdiaTUwY21sdEtDa3BJRHBjYmlBZ0lDQWdJRnN1TGk1QmNuSmhlU2h0WVhoTVpXNW5kR2dwTG10bGVYTW9LVjB1YldGd0tDaHFVRzl6S1NBOVBpQmdKSHRxVUc5eklDc2dNWDFnS1R0Y2JseHVJQ0FnSUhSb2FYTXVjM1JoY25SUWIzTnBkR2x2YmlBOUlDaDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNU9ZVzFsSUNZbUlIUm9hWE11Y0c5emFYUnBiMjVPWVcxbGN5QW1KbHh1SUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpMbWx1WTJ4MVpHVnpLSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiazVoYldVcEtTQS9YRzRnSUNBZ0lDQjBhR2x6TG5CdmMybDBhVzl1VG1GdFpYTXVhVzVrWlhoUFppaDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNU9ZVzFsS1NBNklEQTdYRzRnSUNBZ2RHaHBjeTVsYm1SUWIzTnBkR2x2YmlBOUlDaDBhR2x6TG1WdVpGQnZjMmwwYVc5dVRtRnRaU0FtSmlCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhNZ0ppWmNiaUFnSUNBZ0lIUm9hWE11Y0c5emFYUnBiMjVPWVcxbGN5NXBibU5zZFdSbGN5aDBhR2x6TG1WdVpGQnZjMmwwYVc5dVRtRnRaU2twSUQ5Y2JpQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3k1cGJtUmxlRTltS0hSb2FYTXVaVzVrVUc5emFYUnBiMjVPWVcxbEtTQTZJQ2h0WVhoTVpXNW5kR2dnTFNBeEtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnZkbVZ5Y21sa1pTQnZibEJ5YjNCbGNuUjVRMmhoYm1kbFpDaHdjbTl3WlhKMGVUb2dSRWN1VUhKdmNHVnlkSGtwT2lCMmIybGtJSHRjYmlBZ0lDQXZMeUJqYjI1emIyeGxMbVJsWW5WbktHQlhaV0pNYjJkdkxtOXVVSEp2Y0dWeWRIbERhR0Z1WjJWa0tDQWtlM0J5YjNCbGNuUjVMbTVoYldWOUlEMGdKeWNnZlNsZ0tUdGNiaUFnSUNCemRYQmxjaTV2YmxCeWIzQmxjblI1UTJoaGJtZGxaQ2h3Y205d1pYSjBlU2s3WEc1Y2JpQWdJQ0J6ZDJsMFkyZ2dLSEJ5YjNCbGNuUjVMbTVoYldVcElIdGNiaUFnSUNCallYTmxJQ2RqYjI1emFXUmxjazUxYkd4VFpYRjFaVzVqWlhNbk9seHVJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkelpYRjFaVzVqWlVOdmJIVnRiazVoYldVbk9seHVJQ0FnSUNBZ2RHaHBjeTUxY0dSaGRHVlRaWEZEYjJ3b0tUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0ozTjBZWEowVUc5emFYUnBiMjVPWVcxbEp6cGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxVMlZ4UTI5c0tDazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZGxibVJRYjNOcGRHbHZiazVoYldVbk9seHVJQ0FnSUNBZ2RHaHBjeTUxY0dSaGRHVlRaWEZEYjJ3b0tUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0ozQnZjMmwwYVc5dVYybGtkR2duT2x4dUlDQWdJQ0FnZEdocGN5NWZjRzl6YVhScGIyNVhhV1IwYUNBOUlIUm9hWE11Y0c5emFYUnBiMjVYYVdSMGFEdGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBbmJXbHVTR1ZwWjJoMEp6cGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBbmJXRjRTR1ZwWjJoMEp6cGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBblptbDRWMmxrZEdnbk9seHVJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkMlpYSjBhV05oYkVGc2FXZHViV1Z1ZENjNlhHNGdJQ0FnSUNCMGFHbHpMbkpsYm1SbGNpaDBjblZsS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnSjJodmNtbDZiMjUwWVd4QmJHbG5ibTFsYm5Rbk9seHVJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkbWFYUkJjbVZoSnpwY2JpQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuYzJoeWFXNXJSVzF3ZEhsVVlXbHNKenBjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsVUc5emFYUnBiMjV6S0NrN1hHNGdJQ0FnSUNCMGFHbHpMbkpsYm1SbGNpaDBjblZsS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnZkbVZ5Y21sa1pTQmhjM2x1WXlCdmJsUmhZbXhsUVhSMFlXTm9aV1FvS1NCN1hHNGdJQ0FnWTI5dWMzUWdaR0YwWVVaeVlXMWxWSGgwT2lCemRISnBibWNnUFNCMGFHbHpMbVJoZEdGR2NtRnRaU0EvSUNka1lYUmhKeUE2SUNkdWRXeHNKenRjYmlBZ0lDQmpiMjV6YjJ4bExtUmxZblZuS0dCaWFXODZJRmRsWWt4dloyODhKSHQwYUdsekxuWnBaWGRsY2tsa2ZUNHViMjVVWVdKc1pVRjBkR0ZqYUdWa0tDQmtZWFJoUm5KaGJXVWdQU0FrZTJSaGRHRkdjbUZ0WlZSNGRIMGdLU0J6ZEdGeWRHQXBPMXh1SUNBZ0lITjFjR1Z5TG05dVZHRmliR1ZCZEhSaFkyaGxaQ2dwTzF4dVhHNGdJQ0FnZEdocGN5NTFjR1JoZEdWVFpYRkRiMndvS1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG1SaGRHRkdjbUZ0WlNBaFBUMGdkbTlwWkNBd0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5OMVluTXVjSFZ6YUNoMGFHbHpMbVJoZEdGR2NtRnRaUzV6Wld4bFkzUnBiMjR1YjI1RGFHRnVaMlZrTG5OMVluTmpjbWxpWlNnb1h5a2dQVDRnZEdocGN5NXlaVzVrWlhJb0tTa3BPMXh1SUNBZ0lDQWdkR2hwY3k1emRXSnpMbkIxYzJnb2RHaHBjeTVrWVhSaFJuSmhiV1V1Wm1sc2RHVnlMbTl1UTJoaGJtZGxaQzV6ZFdKelkzSnBZbVVvS0Y4cElEMCtJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NTFjR1JoZEdWUWIzTnBkR2x2Ym5Nb0tUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1eVpXNWtaWElvS1R0Y2JpQWdJQ0FnSUgwcEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCaGQyRnBkQ0IwYUdsekxtbHVhWFFvS1R0Y2JpQWdJQ0JqYjI1emIyeGxMbVJsWW5WbktHQmlhVzg2SUZkbFlreHZaMjg4Skh0MGFHbHpMblpwWlhkbGNrbGtmVDR1YjI1VVlXSnNaVUYwZEdGamFHVmtLQ2tnWlc1a1lDazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdiM1psY25KcFpHVWdZWE41Ym1NZ1pHVjBZV05vS0NrZ2UxeHVJQ0FnSUdOdmJuTjBJR1JoZEdGR2NtRnRaVlI0ZENBOUlHQWtlM1JvYVhNdVpHRjBZVVp5WVcxbElEOGdKMlJoZEdFbklEb2dKMjUxYkd3bmZXQTdYRzRnSUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnWW1sdk9pQlhaV0pNYjJkdlBDUjdkR2hwY3k1MmFXVjNaWEpKWkgwK0xtOXVWR0ZpYkdWQmRIUmhZMmhsWkNnZ1pHRjBZVVp5WVcxbElEMGdKSHRrWVhSaFJuSmhiV1ZVZUhSOUlDa2djM1JoY25SZ0tUdGNiaUFnSUNCemRYQmxjaTVrWlhSaFkyZ29LVHRjYmx4dUlDQWdJSFJvYVhNdWRtbGxkMU4xWW5NdVptOXlSV0ZqYUNnb2MzVmlLU0E5UGlCemRXSXVkVzV6ZFdKelkzSnBZbVVvS1NrN1hHNGdJQ0FnZEdocGN5NW9iM04wSVM1eVpXMXZkbVVvS1R0Y2JpQWdJQ0IwYUdsekxtTmhiblpoY3lBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCMGFHbHpMbTF6WjBodmMzUWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdkR2hwY3k1b2IzTjBJRDBnZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnZEdocGN5NXBibWwwYVdGc2FYcGxaQ0E5SUdaaGJITmxPMXh1SUNBZ0lHTnZibk52YkdVdVpHVmlkV2NvWUdKcGJ6b2dWMlZpVEc5bmJ6d2tlM1JvYVhNdWRtbGxkMlZ5U1dSOVBpNXZibFJoWW14bFFYUjBZV05vWldRb0tTQmxibVJnS1R0Y2JpQWdmVnh1WEc0Z0lIQnliM1JsWTNSbFpDQmZiblZzYkZObGNYVmxibU5sS0dacGJHeGxjbEpsYzJsa2RXVWdQU0FuV0NjcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG1OdmJuTnBaR1Z5VG5Wc2JGTmxjWFZsYm1ObGN5bGNiaUFnSUNBZ0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb2RHaHBjeTVNWlc1bmRHZ3BMbVpwYkd3b1ptbHNiR1Z5VW1WemFXUjFaU2t1YW05cGJpZ25KeWs3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdKeWM3WEc0Z0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1gyTmhiR04xYkdGMFpTZ3BJSHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXVZMkZ1ZG1GeklIeDhJQ0YwYUdsekxtaHZjM1FnZkh3Z0lYUm9hWE11YzJWeFEyOXNJSHg4SUNGMGFHbHpMbVJoZEdGR2NtRnRaU2xjYmlBZ0lDQWdJSEpsZEhWeWJqdGNibHh1SUNBZ0lIUm9hWE11WTJGc1kxTnBlbVVvS1R0Y2JseHVJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNXpJRDBnYm1WM0lFRnljbUY1S0hSb2FYTXVUR1Z1WjNSb0tUdGNiaUFnSUNCbWIzSWdLR3hsZENCcVVHOXpJRDBnTURzZ2FsQnZjeUE4SUhSb2FYTXVUR1Z1WjNSb095QnFVRzl6S3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhCdmMwNWhiV1U2SUhOMGNtbHVaeUE5SUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsYzF0MGFHbHpMbk4wWVhKMFVHOXphWFJwYjI0Z0t5QnFVRzl6WFR0Y2JpQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZElEMGdibVYzSUZCdmMybDBhVzl1U1c1bWJ5aHdiM05PWVcxbEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QXlNREl5TFRBMUxUQTFJR0Z6YTJGc2EybHVJR2x1YzNSeWRXTjBaV1FnZEc4Z2MyaHZkeUJYWldKTWIyZHZJR0poYzJWa0lHOXVJR1pwYkhSbGNpQW9ibTkwSUhObGJHVmpkR2x2YmlsY2JpQWdJQ0JqYjI1emRDQnBibVJwWTJWeklEMGdkR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG1kbGRGTmxiR1ZqZEdWa1NXNWtaWGhsY3lncE8xeHVJQ0FnSUM4dklHTnZibk4wSUdsdVpHbGpaWE1nUFNCMGFHbHpMbVJoZEdGR2NtRnRaUzV6Wld4bFkzUnBiMjR1ZEhKMVpVTnZkVzUwSUQ0Z01DQS9JSFJvYVhNdVpHRjBZVVp5WVcxbExuTmxiR1ZqZEdsdmJpNW5aWFJUWld4bFkzUmxaRWx1WkdWNFpYTW9LU0E2WEc0Z0lDQWdMeThnSUNCMGFHbHpMbVJoZEdGR2NtRnRaUzVtYVd4MFpYSXVaMlYwVTJWc1pXTjBaV1JKYm1SbGVHVnpLQ2s3WEc1Y2JpQWdJQ0IwYUdsekxuSnZkM05OWVhOclpXUWdQU0JwYm1ScFkyVnpMbXhsYm1kMGFEdGNiaUFnSUNCMGFHbHpMbkp2ZDNOT2RXeHNJRDBnTUR0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2FTQnZaaUJwYm1ScFkyVnpLU0I3WEc0Z0lDQWdJQ0JzWlhRZ2N6b2djM1J5YVc1bklEMGdQSE4wY21sdVp6NG9kR2hwY3k1elpYRkRiMnd1WjJWMEtHa3BLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tDRnpLU0I3WEc0Z0lDQWdJQ0FnSUhNZ1BTQjBhR2x6TGw5dWRXeHNVMlZ4ZFdWdVkyVW9LVHRjYmlBZ0lDQWdJQ0FnS3l0MGFHbHpMbkp2ZDNOT2RXeHNPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JqYjI1emRDQnpaWEZOT2lCemRISnBibWRiWFNBOUlIUm9hWE11YzNCc2FYUjBaWEloS0hNcE8xeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FsQnZjeUE5SURBN0lHcFFiM01nUENCMGFHbHpMa3hsYm1kMGFEc2dhbEJ2Y3lzcktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElIQnRTVzVtYnlBOUlIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbVp5WlhFN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcwNklITjBjbWx1WnlBOUlITmxjVTFiZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1SUNzZ2FsQnZjMTBnZkh3Z0p5MG5PMXh1SUNBZ0lDQWdJQ0JwWmlBb0lTaHRJR2x1SUhCdFNXNW1ieWtwWEc0Z0lDQWdJQ0FnSUNBZ2NHMUpibVp2VzIxZElEMGdibVYzSUZCdmMybDBhVzl1VFc5dWIyMWxja2x1Wm04b0tUdGNiaUFnSUNBZ0lDQWdjRzFKYm1adlcyMWRMbU52ZFc1MEt5czdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGpjbVZuYVc5dUlGQnZiR2x6YUNCbWNtVnhJR052ZFc1MGMxeHVJQ0FnSUdadmNpQW9iR1YwSUdwUWIzTWdQU0F3T3lCcVVHOXpJRHdnZEdocGN5NU1aVzVuZEdnN0lHcFFiM01yS3lrZ2UxeHVJQ0FnSUNBZ0x5OGdaR1ZzWlhSbElIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbVp5WlhGYkp5MG5YVHRjYmx4dUlDQWdJQ0FnZEdocGN5NXdiM05wZEdsdmJuTmJhbEJ2YzEwdWNtOTNRMjkxYm5RZ1BTQXdPMXh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0J0SUdsdUlIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbVp5WlhFcFhHNGdJQ0FnSUNBZ0lIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbkp2ZDBOdmRXNTBJQ3M5SUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExtWnlaWEZiYlYwdVkyOTFiblE3WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJMlZ1WkhKbFoybHZibHh1WEc0Z0lDQWdZMjl1YzNRZ2NpQTlJSGRwYm1SdmR5NWtaWFpwWTJWUWFYaGxiRkpoZEdsdk8xeHVJQ0FnSUdOdmJuTjBJRzFoZUVobGFXZG9kQ0E5SUhSb2FYTXVZMkZ1ZG1GekxtaGxhV2RvZENBdElIUm9hWE11WVhocGMwaGxhV2RvZENBcUlISTdYRzRnSUNBZ0x5OGdZMjl1YzI5c1pTNWtaV0oxWnloZ1YyVmlURzluYnp3a2UzUm9hWE11ZG1sbGQyVnlTV1I5UGk1ZlkyRnNZM1ZzWVhSbEtDa2diV0Y0U0dWcFoyaDBQU1I3YldGNFNHVnBaMmgwZlM1Z0tUdGNibHh1SUNBZ0lDOHZJM0psWjJsdmJpQkRZV3hqZFd4aGRHVWdjMk55WldWdVhHNGdJQ0FnWm05eUlDaHNaWFFnYWxCdmN5QTlJREE3SUdwUWIzTWdQQ0IwYUdsekxreGxibWQwYURzZ2FsQnZjeXNyS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JtY21WeE9pQjdJRnRqT2lCemRISnBibWRkT2lCUWIzTnBkR2x2YmsxdmJtOXRaWEpKYm1adklIMGdQU0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1bWNtVnhPMXh1SUNBZ0lDQWdZMjl1YzNRZ2NtOTNRMjkxYm5RZ1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzV5YjNkRGIzVnVkRHRjYmx4dUlDQWdJQ0FnYkdWMElIazZJRzUxYldKbGNpQTlJSFJvYVhNdVlYaHBjMGhsYVdkb2REdGNibHh1SUNBZ0lDQWdZMjl1YzNRZ1pXNTBjbWxsY3lBOUlFOWlhbVZqZEM1bGJuUnlhV1Z6S0daeVpYRXBMbk52Y25Rb0tHRXNJR0lwSUQwK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0dGYk1GMGdJVDA5SUNjdEp5QW1KaUJpV3pCZElDRTlQU0FuTFNjcFhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHSmJNVjB1WTI5MWJuUWdMU0JoV3pGZExtTnZkVzUwTzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoaFd6QmRJRDA5UFNBbkxTY2dKaVlnWWxzd1hTQTlQVDBnSnkwbktWeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQXdPMXh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hoV3pCZElEMDlQU0FuTFNjcFhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDMHhPMXh1SUNBZ0lDQWdJQ0JsYkhObElDOHFJQ2hpV3pCZElEMDlQU0FuTFNjcElDb3ZYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ3N4TzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCbWIzSWdLR052Ym5OMElHVnVkSEo1SUc5bUlHVnVkSEpwWlhNcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NHMUpibVp2T2lCUWIzTnBkR2x2YmsxdmJtOXRaWEpKYm1adklEMGdaVzUwY25sYk1WMDdYRzRnSUNBZ0lDQWdJQzh2SUdOdmJuTjBJRzA2SUhOMGNtbHVaeUE5SUdWdWRISjVXekJkTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JvT2lCdWRXMWlaWElnUFNCdFlYaElaV2xuYUhRZ0tpQndiVWx1Wm04dVkyOTFiblFnTHlCeWIzZERiM1Z1ZER0Y2JseHVJQ0FnSUNBZ0lDQndiVWx1Wm04dVltOTFibVJ6SUQwZ2JtVjNJRVJITGxKbFkzUW9hbEJ2Y3lBcUlIUm9hWE11WDNCdmMybDBhVzl1VjJsa2RHZ3NJSGtzSUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnc0lHZ3BPMXh1SUNBZ0lDQWdJQ0I1SUNzOUlHZzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUM4dkkyVnVaSEpsWjJsdmJseHVJQ0I5WEc1Y2JpQWdMeThnY21WbWJHVmpkQ0JqYUdGdVoyVnpJRzFoWkdVZ2RHOGdabWxzZEdWeUwzTmxiR1ZqZEdsdmJseHVJQ0J5Wlc1a1pYSW9jbVZqWVd4aklEMGdkSEoxWlNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG0xelowaHZjM1FwSUh0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG5ObGNVTnZiQ0FtSmlBaGRHaHBjeTVqY0NrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xelowaHZjM1FoTG1sdWJtVnlWR1Y0ZENBOUlHQlZibXR1YjNkdUlIQmhiR1YwZEdVZ0tHTnZiSFZ0YmlCelpXMVVlWEJsT2lBbkpIdDBhR2x6TG5ObGNVTnZiQzV6WlcxVWVYQmxmU2NwTG1BN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YlhOblNHOXpkQ0V1YzNSNWJHVXVaR2x6Y0d4aGVTQTlJQ2NuTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXRjMmRJYjNOMElTNXpkSGxzWlM1a2FYTndiR0Y1SUQwZ0oyNXZibVVuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNnaGRHaHBjeTVqWVc1MllYTWdmSHdnSVhSb2FYTXVjMlZ4UTI5c0lIeDhJQ0YwYUdsekxtUmhkR0ZHY21GdFpTQjhmQ0FoZEdocGN5NWpjQ2xjYmlBZ0lDQWdJSEpsZEhWeWJqdGNibHh1SUNBZ0lHTnZibk4wSUdjZ1BTQjBhR2x6TG1OaGJuWmhjeTVuWlhSRGIyNTBaWGgwS0NjeVpDY3BPMXh1SUNBZ0lHbG1JQ2doWnlrZ2NtVjBkWEp1TzF4dVhHNGdJQ0FnYVdZZ0tISmxZMkZzWXlsY2JpQWdJQ0FnSUhSb2FYTXVYMk5oYkdOMWJHRjBaU2dwTzF4dVhHNGdJQ0FnWnk1eVpYTmxkRlJ5WVc1elptOXliU2dwTzF4dUlDQWdJR2N1Wm1sc2JGTjBlV3hsSUQwZ0ozZG9hWFJsSnp0Y2JpQWdJQ0JuTG1acGJHeFNaV04wS0RBc0lEQXNJSFJvYVhNdVkyRnVkbUZ6TG5kcFpIUm9MQ0IwYUdsekxtTmhiblpoY3k1b1pXbG5hSFFwTzF4dUlDQWdJR2N1ZEdWNGRFSmhjMlZzYVc1bElEMGdkR2hwY3k1MFpYaDBRbUZ6Wld4cGJtVTdYRzVjYmlBZ0lDQXZMeUJRY21WMlpXNTBjeUJrYVhacGMybHZiaUJpZVNCNlpYSnZJRzl1SUV4bGJtZDBhQ0E5SURCY2JpQWdJQ0JwWmlBb2RHaHBjeTV6ZEdGeWRGQnZjMmwwYVc5dUlEMDlQU0F0TVNCOGZDQjBhR2x6TG1WdVpGQnZjMmwwYVc5dUlEMDlQU0F0TVNsY2JpQWdJQ0FnSUhKbGRIVnlianRjYmx4dUlDQWdJQzh2STNKbFoybHZiaUJRYkc5MElIQnZjMmwwYVc5dVRtRnRaWE5jYmlBZ0lDQm5MbkpsYzJWMFZISmhibk5tYjNKdEtDazdYRzRnSUNBZ1p5NW1hV3hzVTNSNWJHVWdQU0FuWW14aFkyc25PMXh1SUNBZ0lHY3VkR1Y0ZEVGc2FXZHVJRDBnSjJObGJuUmxjaWM3WEc0Z0lDQWdaeTVtYjI1MElEMGdKekV3Y0hnZ1VtOWliM1J2TENCU2IySnZkRzhnVEc5allXd3NJSE5oYm5NdGMyVnlhV1luTzF4dUlDQWdJR052Ym5OMElIQnZjMDVoYldWTllYaFhhV1IwYUNBOUlFMWhkR2d1YldGNEtDNHVMblJvYVhNdWNHOXphWFJwYjI1ekxtMWhjQ2dvY0c5ektTQTlQaUJuTG0xbFlYTjFjbVZVWlhoMEtIQnZjeTV1WVcxbEtTNTNhV1IwYUNrcE8xeHVJQ0FnSUdOdmJuTjBJR2hUWTJGc1pTQTlJSEJ2YzA1aGJXVk5ZWGhYYVdSMGFDQThJQ2gwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUMwZ01pa2dQeUF4SURvZ0tIUm9hWE11WDNCdmMybDBhVzl1VjJsa2RHZ2dMU0F5S1NBdklIQnZjMDVoYldWTllYaFhhV1IwYUR0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdwUWIzTWdQU0F3T3lCcVVHOXpJRHdnZEdocGN5NU1aVzVuZEdnN0lHcFFiM01yS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnY0c5ek9pQlFiM05wZEdsdmJrbHVabThnUFNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhUdGNiaUFnSUNBZ0lHY3VjbVZ6WlhSVWNtRnVjMlp2Y20wb0tUdGNiaUFnSUNBZ0lHY3VjMlYwVkhKaGJuTm1iM0p0S0Z4dUlDQWdJQ0FnSUNCb1UyTmhiR1VzSURBc0lEQXNJREVzWEc0Z0lDQWdJQ0FnSUdwUWIzTWdLaUIwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUNzZ2RHaHBjeTVmY0c5emFYUnBiMjVYYVdSMGFDQXZJRElzSURBcE8xeHVJQ0FnSUNBZ1p5NW1hV3hzVkdWNGRDaHdiM011Ym1GdFpTd2dNQ3dnTUNrN1hHNGdJQ0FnZlZ4dUlDQWdJQzh2STJWdVpISmxaMmx2YmlCUWJHOTBJSEJ2YzJsMGFXOXVUbUZ0WlhOY2JseHVJQ0FnSUdadmNpQW9iR1YwSUdwUWIzTWdQU0F3T3lCcVVHOXpJRHdnZEdocGN5NU1aVzVuZEdnN0lHcFFiM01yS3lrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQmJiVzl1YjIxbGNpd2djRzFKYm1adlhTQnZaaUJQWW1wbFkzUXVaVzUwY21sbGN5aDBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeEtTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2JXOXViMjFsY2lBaFBUMGdKeTBuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1lpQTlJSEJ0U1c1bWJ5NWliM1Z1WkhNN1hHNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQm1iMjUwVTNSNWJHVWdQU0FuTVRad2VDQlNiMkp2ZEc4c0lGSnZZbTkwYnlCTWIyTmhiQ3dnYzJGdWN5MXpaWEpwWmljN1hHNGdJQ0FnSUNBZ0lDQWdMeThnU0dGamEzTWdkRzhnYzJOaGJHVWdkWEJ3WlhKallYTmxJR05vWVhKaFkzUmxjbk1nZEc4Z2RHRnlaMlYwSUhKbFkzUmhibWRzWlZ4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhWd2NHVnlZMkZ6WlV4bGRIUmxja0Z6WTJWdWRDQTlJREF1TWpVN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RYQndaWEpqWVhObFRHVjBkR1Z5U0dWcFoyaDBJRDBnTVRJdU1qdGNibHh1SUNBZ0lDQWdJQ0FnSUdjdWNtVnpaWFJVY21GdWMyWnZjbTBvS1R0Y2JpQWdJQ0FnSUNBZ0lDQm5Mbk4wY205clpWTjBlV3hsSUQwZ0oyeHBaMmgwWjNKaGVTYzdYRzRnSUNBZ0lDQWdJQ0FnWnk1c2FXNWxWMmxrZEdnZ1BTQXhPMXh1SUNBZ0lDQWdJQ0FnSUdjdWNtVmpkQ2hpTG14bFpuUXNJR0l1ZEc5d0xDQmlMbmRwWkhSb0xDQmlMbWhsYVdkb2RDazdYRzRnSUNBZ0lDQWdJQ0FnWnk1bWFXeHNVM1I1YkdVZ1BTQjBhR2x6TG1Od0xtZGxkQ2h0YjI1dmJXVnlLU0EvUHlCMGFHbHpMbU53TG1kbGRDZ25iM1JvWlhJbktUdGNiaUFnSUNBZ0lDQWdJQ0JuTG5SbGVIUkJiR2xuYmlBOUlDZHNaV1owSnp0Y2JpQWdJQ0FnSUNBZ0lDQm5MbVp2Ym5RZ1BTQm1iMjUwVTNSNWJHVTdYRzRnSUNBZ0lDQWdJQ0FnTHk5bkxtWnBiR3hTWldOMEtHSXViR1ZtZEN3Z1lpNTBiM0FzSUdJdWQybGtkR2dzSUdJdWFHVnBaMmgwS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdFZHMDZJRlJsZUhSTlpYUnlhV056SUQwZ1p5NXRaV0Z6ZFhKbFZHVjRkQ2h0YjI1dmJXVnlLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJR2xtSUNodFRTNWhZM1IxWVd4Q2IzVnVaR2x1WjBKdmVFRnpZMlZ1ZENBaFBTQXdLVnh1SUNBZ0lDQWdJQ0FnSUM4dklDQWdZMjl1YzI5c1pTNWtaV0oxWnloZ2JUb2dKSHR0ZlN3Z2JVMHVZV04wZFdGc1FtOTFibVJwYm1kQ2IzaEJjMk5sYm5RNklDUjdiVTB1WVdOMGRXRnNRbTkxYm1ScGJtZENiM2hCYzJObGJuUjlZQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQm5Mbk5sZEZSeVlXNXpabTl5YlNoY2JpQWdJQ0FnSUNBZ0lDQWdJR0l1ZDJsa2RHZ2dMeUJ0VkcwdWQybGtkR2dzSURBc0lEQXNJR0l1YUdWcFoyaDBJQzhnZFhCd1pYSmpZWE5sVEdWMGRHVnlTR1ZwWjJoMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnWWk1c1pXWjBMQ0JpTG5SdmNDazdYRzRnSUNBZ0lDQWdJQ0FnWnk1bWFXeHNWR1Y0ZENodGIyNXZiV1Z5TENBd0xDQXRkWEJ3WlhKallYTmxUR1YwZEdWeVFYTmpaVzUwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1kyRnNZMU5wZW1Vb0tTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtTmhiblpoY3lCOGZDQWhkR2hwY3k1b2IzTjBLVnh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVYRzRnSUNBZ2JHVjBJSGRwWkhSb09pQnVkVzFpWlhJZ1BTQjBhR2x6TGt4bGJtZDBhQ0FxSUhSb2FYTXVjRzl6YVhScGIyNVhhV1IwYUR0Y2JpQWdJQ0JzWlhRZ2FHVnBaMmgwSUQwZ1RXRjBhQzV0YVc0b2RHaHBjeTV0WVhoSVpXbG5hSFFzSUUxaGRHZ3ViV0Y0S0hSb2FYTXViV2x1U0dWcFoyaDBMQ0IwYUdsekxuSnZiM1F1WTJ4cFpXNTBTR1ZwWjJoMEtTazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NW1hWFJCY21WaEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCNFUyTmhiR1U2SUc1MWJXSmxjaUE5SUhSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUWdMeUJvWldsbmFIUTdYRzRnSUNBZ0lDQmpiMjV6ZENCNVUyTmhiR1U2SUc1MWJXSmxjaUE5SUhSb2FYTXVjbTl2ZEM1amJHbGxiblJYYVdSMGFDQXZJSGRwWkhSb08xeHVJQ0FnSUNBZ1kyOXVjM1FnYzJOaGJHVWdQU0JOWVhSb0xtMWhlQ2d4TENCTllYUm9MbTFwYmloNFUyTmhiR1VzSUhsVFkyRnNaU2twTzF4dUlDQWdJQ0FnZDJsa2RHZ2dQU0IzYVdSMGFDQXFJSE5qWVd4bE8xeHVJQ0FnSUNBZ2FHVnBaMmgwSUQwZ2FHVnBaMmgwSUNvZ2MyTmhiR1U3WEc0Z0lDQWdJQ0IwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUQwZ2RHaHBjeTV3YjNOcGRHbHZibGRwWkhSb0lDb2djMk5oYkdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjaUE5SUhkcGJtUnZkeTVrWlhacFkyVlFhWGhsYkZKaGRHbHZPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbmRwWkhSb0lEMGdkMmxrZEdnZ0tpQnlPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbk4wZVd4bExuZHBaSFJvSUQwZ1lDUjdkMmxrZEdoOWNIaGdPMXh1WEc0Z0lDQWdMeThnWTI5dWMzUWdZMkZ1ZG1GelNHVnBaMmgwT2lCdWRXMWlaWElnUFNCM2FXUjBhQ0ErSUhSb2FYTXVjbTl2ZEM1amJHbGxiblJYYVdSMGFDQS9JR2hsYVdkb2RDQXRJRGdnT2lCb1pXbG5hSFE3WEc0Z0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2RvWldsbmFIUW5MQ0JnSkh0b1pXbG5hSFI5Y0hoZ0tUdGNiaUFnSUNCamIyNXpkQ0JqWVc1MllYTklaV2xuYUhRNklHNTFiV0psY2lBOUlIUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFE3WEc0Z0lDQWdkR2hwY3k1allXNTJZWE11YUdWcFoyaDBJRDBnWTJGdWRtRnpTR1ZwWjJoMElDb2djanRjYmlBZ0lDQjBhR2x6TG1OaGJuWmhjeTV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYUdWcFoyaDBKeXdnWUNSN1kyRnVkbUZ6U0dWcFoyaDBmWEI0WUNrN1hHNWNiaUFnSUNBdkx5QkJaR3AxYzNRZ2FHOXpkQ0JoYm1RZ2NtOXZkQ0IzYVdSMGFGeHVJQ0FnSUdsbUlDaDBhR2x6TG1acGVGZHBaSFJvS1NCN1hHNGdJQ0FnSUNBdkx5Qm1kV3hzSUhkcFpIUm9JR1p2Y2lCallXNTJZWE1nYUc5emRDQmhibVFnY205dmRGeHVJQ0FnSUNBZ2RHaHBjeTV5YjI5MExuTjBlV3hsTG5kcFpIUm9JRDBnZEdocGN5NW9iM04wTG5OMGVXeGxMbmRwWkhSb0lEMGdZQ1I3ZDJsa2RHaDljSGhnTzF4dUlDQWdJQ0FnZEdocGN5NXliMjkwTG5OMGVXeGxMbWhsYVdkb2RDQTlJR0FrZTJobGFXZG9kSDF3ZUdBN1hHNGdJQ0FnSUNCMGFHbHpMbWh2YzNRdWMzUjViR1V1YzJWMFVISnZjR1Z5ZEhrb0oyOTJaWEptYkc5M0p5d2dKMmhwWkdSbGJpY3NJQ2RwYlhCdmNuUmhiblFuS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdMeThnWVd4c2IzY2djMk55YjJ4c0lHTmhiblpoY3lCcGJpQnliMjkwWEc0Z0lDQWdJQ0IwYUdsekxuSnZiM1F1YzNSNWJHVXVkMmxrZEdnZ1BTQjBhR2x6TG1odmMzUXVjM1I1YkdVdWQybGtkR2dnUFNBbk1UQXdKU2M3WEc0Z0lDQWdJQ0IwYUdsekxtaHZjM1F1YzNSNWJHVXViM1psY21ac2IzZFlJRDBnSjJGMWRHOGhhVzF3YjNKMFlXNTBKenRjYmlBZ0lDQWdJSFJvYVhNdWFHOXpkQzV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYjNabGNtWnNiM2NuTENCdWRXeHNLVHRjYmx4dUlDQWdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbk5sZEZCeWIzQmxjblI1S0NkMFpYaDBMV0ZzYVdkdUp5d2dkR2hwY3k1b2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1MEtUdGNibHh1SUNBZ0lDQWdMeThnZG1WeWRHbGpZV3dnWVd4cFoyNXRaVzUwWEc0Z0lDQWdJQ0JzWlhRZ2FHOXpkRlJ2Y0UxaGNtZHBiaUE5SURBN1hHNGdJQ0FnSUNCemQybDBZMmdnS0hSb2FYTXVkbVZ5ZEdsallXeEJiR2xuYm0xbGJuUXBJSHRjYmlBZ0lDQWdJR05oYzJVZ0ozUnZjQ2M2WEc0Z0lDQWdJQ0FnSUdodmMzUlViM0JOWVhKbmFXNGdQU0F3TzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ0oyMXBaR1JzWlNjNlhHNGdJQ0FnSUNBZ0lHaHZjM1JVYjNCTllYSm5hVzRnUFNCTllYUm9MbTFoZUNnd0xDQW9kR2hwY3k1eWIyOTBMbU5zYVdWdWRFaGxhV2RvZENBdElHaGxhV2RvZENrZ0x5QXlLVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUNkaWIzUjBiMjBuT2x4dUlDQWdJQ0FnSUNCb2IzTjBWRzl3VFdGeVoybHVJRDBnVFdGMGFDNXRZWGdvTUN3Z2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0F0SUdobGFXZG9kQ2s3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2R0WVhKbmFXNHRkRzl3Snl3Z1lDUjdhRzl6ZEZSdmNFMWhjbWRwYm4xd2VHQXNJQ2RwYlhCdmNuUmhiblFuS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWNtOXZkQzVqYkdsbGJuUklaV2xuYUhRZ1BDQm9aV2xuYUhRcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2RvWldsbmFIUW5MQ0JnSkh0MGFHbHpMbkp2YjNRdVkyeHBaVzUwU0dWcFoyaDBmWEI0WUNrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YUc5emRDNXpkSGxzWlM1elpYUlFjbTl3WlhKMGVTZ25iM1psY21ac2IzY3RlU2NzSUc1MWJHd3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2R2ZG1WeVpteHZkeTE1Snl3Z0oyaHBaR1JsYmljc0lDZHBiWEJ2Y25SaGJuUW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJqYjI1emIyeGxMbVJsWW5WbktGeHVJQ0FnSUM4dklDQWdZSFJvYVhNdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhRZ1BTQWtlM1JvYVhNdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhSOVhGeHVZQ0FyWEc0Z0lDQWdMeThnSUNCZ2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0E5SUNSN2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kSDFjWEc1Z0lDdGNiaUFnSUNBdkx5QWdJR0IwYUdsekxtaHZjM1F1YzNSNWJHVXVhR1ZwWjJoMElEMGdKSHQwYUdsekxtaHZjM1F1YzNSNWJHVXVhR1ZwWjJoMGZWeGNibUFnSzF4dUlDQWdJQzh2SUNBZ1lIUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFFnUFNBa2UzUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFI5WEZ4dVlDQXJYRzRnSUNBZ0x5OGdJQ0FuWEZ4dUp5QXJYRzRnSUNBZ0x5OGdJQ0JnZEdocGN5NWpZVzUyWVhNdWFHVnBaMmgwSUNBZ0lDQWdJRDBnSkh0MGFHbHpMbU5oYm5aaGN5NW9aV2xuYUhSOVhGeHVZQ0FyWEc0Z0lDQWdMeThnSUNCZ2RHaHBjeTVqWVc1MllYTXVjM1I1YkdVdWFHVnBaMmgwSUQwZ0pIdDBhR2x6TG1OaGJuWmhjeTV6ZEhsc1pTNW9aV2xuYUhSOVlDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUhObGNVTnZiQ0JEYjJ4MWJXNGdkRzhnYkc5dmF5Qm1iM0lnWVNCd1lXeGxkSFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQWdiV2x1VEdWdVozUm9JRzFwYm1sdGRXMGdiR1Z1WjNSb0lHOW1JSE5sY1hWbGJtTmxJSFJ2SUdSbGRHVmpkQ0J3WVd4bGRIUmxJQ2hsYlhCMGVTQnpkSEpwYm1keklHRnlaU0JoYkd4dmQyVmtLVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdFRaWEZRWVd4bGRIUmxmU0JRWVd4bGRIUmxJR052Y25KbGMzQnZibVJwYm1jZ2RHOGdkR2hsSUdGc2NHaGhZbVYwSUc5bUlIUm9aU0J6WlhGMVpXNWpaWE1nYVc0Z2RHaGxJR052YkhWdGJseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCd2FXTnJWWEJRWVd4bGRIUmxLSE5sY1VOdmJEb2dSRWN1UTI5c2RXMXVMQ0J0YVc1TVpXNW5kR2c2SUc1MWJXSmxjaUE5SURVcE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnNaWFFnY21Wek9pQlRaWEZRWVd4bGRIUmxJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNGdJQ0FnYzNkcGRHTm9JQ2h6WlhGRGIyd3VjMlZ0Vkhsd1pTa2dlMXh1SUNBZ0lHTmhjMlVnUVcxcGJtOWhZMmxrY3k1VFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2WEc0Z0lDQWdJQ0J5WlhNZ1BTQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjenRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdUblZqYkdWdmRHbGtaWE11VTJWdFZIbHdaVTExYkhScGNHeGxRV3hwWjI1dFpXNTBPbHh1SUNBZ0lDQWdjbVZ6SUQwZ1RuVmpiR1Z2ZEdsa1pYTlFZV3hsZEhSbGN5NURhSEp2YldGMGIyZHlZVzA3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWMzUWdjM1JoZEhNNklGTmxjVU52YkZOMFlYUnpJRDBnVjJWaVRHOW5ieTVuWlhSVGRHRjBjeWh6WlhGRGIyd3NJRzFwYmt4bGJtZDBhQ3dnVjJWaVRHOW5ieTV6Y0d4cGRIUmxja0Z6Um1GemRHRXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1lXeHdhR0ZpWlhSRFlXNWthV1JoZEdWek9pQmJVMlYwUEhOMGNtbHVaejRzSUZObGNWQmhiR1YwZEdWZFcxMGdQU0JiWEc0Z0lDQWdJQ0JiYm1WM0lGTmxkQ2hQWW1wbFkzUXVhMlY1Y3loT2RXTnNaVzkwYVdSbGN5NU9ZVzFsY3lrcExDQk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpMa05vY205dFlYUnZaM0poYlYwc1hHNGdJQ0FnSUNCYmJtVjNJRk5sZENoUFltcGxZM1F1YTJWNWN5aEJiV2x1YjJGamFXUnpMazVoYldWektTa3NJRUZ0YVc1dllXTnBaSE5RWVd4bGRIUmxjeTVIY205clIzSnZkWEJ6WFN4Y2JpQWdJQ0JkTzF4dUlDQWdJQzh2SUVOaGJHTjFiR0YwWlNCc2FXdGxiR2xvYjI5a2N5Qm1iM0lnWVd4d2FHRmlaWFJmWTJGdVpHbGtZWFJsYzF4dUlDQWdJR052Ym5OMElHRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGMxTnBiVG9nYm5WdFltVnlXMTBnUFNCaGJIQm9ZV0psZEVOaGJtUnBaR0YwWlhOY2JpQWdJQ0FnSUM1dFlYQW9LR01wSUQwK0lGZGxZa3h2WjI4dVoyVjBRV3h3YUdGaVpYUlRhVzFwYkdGeWFYUjVLSE4wWVhSekxtWnlaWEVzSUdOYk1GMHBLVHRjYmlBZ0lDQmpiMjV6ZENCdFlYaERiM01nUFNCTllYUm9MbTFoZUNndUxpNWhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTlRhVzBwTzF4dUlDQWdJR2xtSUNodFlYaERiM01nUGlBd0xqWTFLVnh1SUNBZ0lDQWdjbVZ6SUQwZ1lXeHdhR0ZpWlhSRFlXNWthV1JoZEdWelcyRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGMxTnBiUzVwYm1SbGVFOW1LRzFoZUVOdmN5bGRXekZkTzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhKbGN5QTlJRlZ1YTI1dmQyNVRaWEZRWVd4bGRIUmxjeTVEYjJ4dmNqdGNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1UzUmhkSE1nYjJZZ2MyVnhkV1Z1WTJWeklIZHBkR2dnYzNCbFkybG1hV1ZrSUhOd2JHbDBkR1Z5SUdaMWJtTXNJSEpsZEhWeWJuTWdleUJtY21WeExDQnpZVzFsVEdWdVozUm9JSDB1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRWN1UTI5c2RXMXVmU0J6WlhGRGIyeGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUcxcGJreGxibWQwYUZ4dUlDQWdLaUJBY0dGeVlXMGdlMU53YkdsMGRHVnlSblZ1WTMwZ2MzQnNhWFIwWlhKY2JpQWdJQ29nUUhKbGRIVnliaUI3SUZObGNVTnZiRk4wWVhSeklIMHNJSE5oYldWTVpXNW5kR2c2SUdKdmIyeGxZVzRnZlNCemRHRjBjeUJ2WmlCamIyeDFiVzRnYzJWeGRXVnVZMlZ6WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMFUzUmhkSE1vYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzSUcxcGJreGxibWQwYURvZ2JuVnRZbVZ5TENCemNHeHBkSFJsY2pvZ1UzQnNhWFIwWlhKR2RXNWpLVG9nVTJWeFEyOXNVM1JoZEhNZ2UxeHVJQ0FnSUdOdmJuTjBJR1p5WlhFNklIc2dXMjA2SUhOMGNtbHVaMTA2SUc1MWJXSmxjaUI5SUQwZ2UzMDdYRzRnSUNBZ2JHVjBJSE5oYldWTVpXNW5kR2dnUFNCMGNuVmxPMXh1SUNBZ0lHeGxkQ0JtYVhKemRFeGxibWQwYUNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUhObGNTQnZaaUJ6WlhGRGIyd3VZMkYwWldkdmNtbGxjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdiVk5sY1NBOUlITndiR2wwZEdWeUtITmxjU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaG1hWEp6ZEV4bGJtZDBhQ0E5UFNCdWRXeHNLVnh1SUNBZ0lDQWdJQ0JtYVhKemRFeGxibWQwYUNBOUlHMVRaWEV1YkdWdVozUm9PMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9iVk5sY1M1c1pXNW5kR2dnSVQwOUlHWnBjbk4wVEdWdVozUm9LVnh1SUNBZ0lDQWdJQ0J6WVcxbFRHVnVaM1JvSUQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0FnSUdsbUlDaHRVMlZ4TG14bGJtZDBhQ0ErSUcxcGJreGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJRzBnYjJZZ2JWTmxjU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2doS0cwZ2FXNGdabkpsY1NrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JtY21WeFcyMWRJRDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQm1jbVZ4VzIxZElDczlJREU3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIdG1jbVZ4T2lCbWNtVnhMQ0J6WVcxbFRHVnVaM1JvT2lCellXMWxUR1Z1WjNSb2ZUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBRV3h3YUdGaVpYUlRhVzFwYkdGeWFYUjVLR1p5WlhFNklFMXZibTl0WlhKR2NtVnhjeXdnWVd4d2FHRmlaWFE2SUZObGREeHpkSEpwYm1jK0xDQm5ZWEJUZVcxaWIydzZJSE4wY21sdVp5QTlJQ2N0SnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnWTI5dWMzUWdhMlY1Y3lBOUlHNWxkeUJUWlhROGMzUnlhVzVuUGloYkxpNHVibVYzSUZObGRDaFBZbXBsWTNRdWEyVjVjeWhtY21WeEtTa3NJQzR1TG1Gc2NHaGhZbVYwWFNrN1hHNGdJQ0FnYTJWNWN5NWtaV3hsZEdVb1oyRndVM2x0WW05c0tUdGNibHh1SUNBZ0lHTnZibk4wSUdaeVpYRkJPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0FnSUdOdmJuTjBJR0ZzY0doaFltVjBRVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR052Ym5OMElHMGdiMllnYTJWNWN5a2dlMXh1SUNBZ0lDQWdabkpsY1VFdWNIVnphQ2h0SUdsdUlHWnlaWEVnUHlCbWNtVnhXMjFkSURvZ01DazdYRzRnSUNBZ0lDQmhiSEJvWVdKbGRFRXVjSFZ6YUNoaGJIQm9ZV0psZEM1b1lYTW9iU2tnUHlBeElEb2dNQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHFJRlJvWlhKbElIZGxjbVVnWVNCbVpYY2dhV1JsWVhNNklHTm9hUzF6Y1hWaGNtVmtMQ0J3WldGeWMyOXVJR052Y25KbGJHRjBhVzl1SUNoMllYSnBZVzVqWlQ4cExDQnpZMkZzWVhJZ2NISnZaSFZqZENBcUwxeHVJQ0FnSUdOdmJuTjBJR1p5WlhGV09pQldaV04wYjNJZ1BTQnVaWGNnVm1WamRHOXlLR1p5WlhGQktUdGNiaUFnSUNCamIyNXpkQ0JoYkhCb1lXSmxkRlk2SUZabFkzUnZjaUE5SUc1bGR5QldaV04wYjNJb1lXeHdhR0ZpWlhSQktUdGNiaUFnSUNCamIyNXpkQ0JqYjNNNklHNTFiV0psY2lBOUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb1puSmxjVllzSUdGc2NHaGhZbVYwVmlrZ0x5QW9kbVZqZEc5eVRHVnVaM1JvS0daeVpYRldLU0FxSUhabFkzUnZja3hsYm1kMGFDaGhiSEJvWVdKbGRGWXBLVHRjYmlBZ0lDQnlaWFIxY200Z1kyOXpPMXh1SUNCOVhHNWNiaUFnTHk4Z0x5b3FJRVpwY25OMElIUnllU0IwYnlCbWFXNWtJR052YkhWdGJpQjNhWFJvSUhObGJWUjVjR1VnSjJGc2FXZHVaV1JUWlhGMVpXNWpaU2N1WEc0Z0lDOHZJQ0FxSUU1bGVIUWdiRzl2YXlCbWIzSWdZMjlzZFcxdUlIZHBkR2dnWkdGMFlTQmhiSEJvWVdKbGRDQmpiM0p5WlhOd2IyNWthVzVuSUhSdklHRnVlU0J2WmlCMGFHVWdhMjV2ZDI0Z2NHRnNaWFIwWlhNdVhHNGdJQzh2SUNBcUlFQndZWEpoYlNCN1JFY3VSR0YwWVVaeVlXMWxmU0JrWVhSaFJuSmhiV1ZjYmlBZ0x5OGdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNCVWFHVWdZMjlzZFcxdUlIZGxJSGRsY21VZ2JHOXZhMmx1WnlCbWIzSWdiM0lnYm5Wc2JGeHVJQ0F2THlBZ0tpOWNiaUFnTHk4Z2NISnBkbUYwWlNCd2FXTnJWWEJUWlhGRGIyd29aR0YwWVVaeVlXMWxPaUJFUnk1RVlYUmhSbkpoYldVcE9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lIdGNiaUFnTHk4Z0lDQnNaWFFnY21Wek9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lEMGdaR0YwWVVaeVlXMWxMbU52YkhWdGJuTXVZbmxUWlcxVWVYQmxLQ2RoYkdsbmJtVmtVMlZ4ZFdWdVkyVW5LVHRjYmlBZ0x5OGdJQ0JwWmlBb2NtVnpJRDA5SUc1MWJHd3BJSHRjYmlBZ0x5OGdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyOXNJRzltSUdSaGRHRkdjbUZ0WlM1amIyeDFiVzV6S1NCN1hHNGdJQzh2SUNBZ0lDQWdJR052Ym5OMElHTndJRDBnVjJWaVRHOW5ieTV3YVdOclZYQlFZV3hsZEhSbEtHTnZiQ0JoY3lCRVJ5NURiMngxYlc0c0lEVXBPMXh1SUNBdkx5QWdJQ0FnSUNCcFppQW9ZM0FnSVQwOUlHNTFiR3dnSmlZZ0lTaGpjQ0JwYm5OMFlXNWpaVzltSUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsS1NrZ2UxeHVJQ0F2THlBZ0lDQWdJQ0FnSUhKbGN5QTlJR052YkR0Y2JpQWdMeThnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnTHk4Z0lDQWdJQ0FnZlZ4dUlDQXZMeUFnSUNBZ2ZWeHVJQ0F2THlBZ0lIMWNiaUFnTHk4Z0lDQnlaWFIxY200Z2NtVnpPMXh1SUNBdkx5QjlYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJ3YVdOclZYQlRaWEZEYjJ3eUtHUm1PaUJFUnk1RVlYUmhSbkpoYldVcE9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lIdGNiaUFnSUNCamIyNXpkQ0J6WlcxVWVYQmxRMjlzVEdsemRDQTlJR1JtTG1OdmJIVnRibk11WW5sVFpXMVVlWEJsUVd4c0tFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlNrN1hHNGdJQ0FnYkdWMElISmxjME52YkRvZ1JFY3VRMjlzZFcxdUlId2diblZzYkNBOUlITmxiVlI1Y0dWRGIyeE1hWE4wTG1acGJtUW9LR052YkNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RXNXBkSE1nUFNCamIyd3VaMlYwVkdGbktFUkhMbFJCUjFNdVZVNUpWRk1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJSFZ1YVhSeklEOGdkVzVwZEhNdWFXNWtaWGhQWmlnblRWTkJKeWtnSVQwOUlDMHhJRG9nWm1Gc2MyVTdYRzRnSUNBZ2ZTa2dQejhnYm5Wc2JEdGNiaUFnSUNCcFppQW9JWEpsYzBOdmJDQW1KaUJ6WlcxVWVYQmxRMjlzVEdsemRDNXNaVzVuZEdnZ1BpQXdLVnh1SUNBZ0lDQWdjbVZ6UTI5c0lEMGdjMlZ0Vkhsd1pVTnZiRXhwYzNSYk1GMDdYRzRnSUNBZ2NtVjBkWEp1SUhKbGMwTnZiRHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJRzF2Ym05dFpYSlNaU0E5SUM5Y1hGc29YRngzS3lsY1hGMThLRnhjZHlsOEtDMHBMMmM3WEc1Y2JpQWdMeW9xSUZOd2JHbDBJSE5sY1hWbGJtTmxJR1p2Y2lCemFXNW5iR1VnWTJoaGNtRmpkR1Z5SUcxdmJtOXRaWEp6TENCemNYVmhjbVVnWW5KaFkydGxkSE1nYlhWc2RHbGphR0Z5SUcxdmJtOXRaWElnYm1GdFpYTWdiM0lnWjJGd0lITjViV0p2YkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sOUlITmxjU0J2WW1wbFkzUWdkMmwwYUNCelpYRjFaVzVqWlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnWVhKeVlYa2diMllnYlc5dWIyMWxjbk5jYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdjM0JzYVhSMFpYSkJjMFpoYzNSaEtITmxjVG9nWVc1NUtUb2djM1J5YVc1blcxMGdlMXh1SUNBZ0lHTnZibk4wSUhKbGN6b2djM1J5YVc1blcxMGdQU0IzZFR4U1pXZEZlSEJOWVhSamFFRnljbUY1UGloelpYRXVkRzlUZEhKcGJtY29LUzV0WVhSamFFRnNiQ2hYWldKTWIyZHZMbTF2Ym05dFpYSlNaU2twWEc0Z0lDQWdJQ0F1YldGd0tDaHRZVG9nVW1WblJYaHdUV0YwWTJoQmNuSmhlU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnNaWFFnYlZKbGN6b2djM1J5YVc1bk8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdE9pQnpkSEpwYm1jZ1BTQnRZVnN3WFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzB1YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNodElHbHVJRmRsWWt4dloyOHVZV0ZUZVc1dmJubHRjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiVkpsY3lBOUlGZGxZa3h2WjI4dVlXRlRlVzV2Ym5sdGMxdHRYVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiVkpsY3lBOUlDY25PMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnVEc5dVp5QnRiMjV2YldWeUlDY2tlMjE5SnlCb1lYTWdibTkwSUdFZ2MyaHZjblFnYzNsdWIyNTViUzVnS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYlZKbGN5QTlJRzA3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxU1pYTTdYRzRnSUNBZ0lDQjlLUzUwYjBGeWNtRjVLQ2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6TzF4dUlDQjlYRzVjYmlBZ0x5b3FJRWRsZEhNZ2JXVjBhRzlrSUhSdklITndiR2wwSUhObGNYVmxibU5sSUdKNUlITmxjR0Z5WVhSdmNseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYzJWd1lYSmhkRzl5WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMU53YkdsMGRHVnlSblZ1WTMxY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFUzQnNhWFIwWlhKWGFYUm9VMlZ3WVhKaGRHOXlLSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5LVG9nVTNCc2FYUjBaWEpHZFc1aklIdGNiaUFnSUNCeVpYUjFjbTRnS0hObGNUb2djM1J5YVc1bktTQTlQaUI3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjMlZ4TG5Od2JHbDBLSE5sY0dGeVlYUnZjaWs3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkhaWFFnYzNCc2FYUjBaWElnYldWMGFHOWtJSFJ2SUhOd2JHbDBJSE5sY1hWbGJtTmxjeUIwYnlCdGIyNXZiV1Z5YzF4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkVzVwZEhOY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY0dGeVlYUnZjbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFRjR3hwZEhSbGNrWjFibU45WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEZOd2JHbDBkR1Z5S0hWdWFYUnpPaUJ6ZEhKcGJtY3NJSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5LVG9nVTNCc2FYUjBaWEpHZFc1aklIdGNiaUFnSUNCcFppQW9kVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzV6ZEdGeWRITlhhWFJvS0NkbVlYTjBZU2NwS1Z4dUlDQWdJQ0FnY21WMGRYSnVJRmRsWWt4dloyOHVjM0JzYVhSMFpYSkJjMFpoYzNSaE8xeHVJQ0FnSUdWc2MyVWdhV1lnS0hWdWFYUnpMblJ2VEc5M1pYSkRZWE5sS0NrdWMzUmhjblJ6VjJsMGFDZ25jMlZ3WVhKaGRHOXlKeWtwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdWMlZpVEc5bmJ5NW5aWFJUY0d4cGRIUmxjbGRwZEdoVFpYQmhjbUYwYjNJb2MyVndZWEpoZEc5eUtUdGNiaUFnSUNBdktseHVJQ0FnSUdWc2MyVWdhV1lnS0hWdWFYUnpMblJ2VEc5M1pYSkRZWE5sS0NrdWMzUmhjblJ6VjJsMGFDZ25hR1ZzYlNjcEtWeHVJQ0FnSUNBZ2NtVjBkWEp1SUZkbFlreHZaMjh1YzNCc2FYUjBaWEpCYzBobGJHMDdYRzRnSUNBZ0x5b3FMMXh1SUNBZ0lHVnNjMlZjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdWVzVsZUhCbFkzUmxaQ0IxYm1sMGN5QWtlM1Z1YVhSemZTQXVZQ2s3WEc1Y2JpQWdJQ0F2THlCVVQwUlBPaUJUY0d4cGRIUmxjaUJtYjNJZ1NFVk1UVnh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJUY0d4cGRIUmxja1p2Y2tOdmJIVnRiaWhqYjJ3NklFUkhMa052YkhWdGJpazZJRk53YkdsMGRHVnlSblZ1WXlCN1hHNGdJQ0FnYVdZZ0tHTnZiQzV6WlcxVWVYQmxJQ0U5UFNCRVJ5NVRSVTFVV1ZCRkxrMUJRMUpQVFU5TVJVTlZURVVwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRWRsZENCemNHeHBkSFJsY2lCbWIzSWdjMlZ0Vkhsd1pTQmNJaVI3UkVjdVUwVk5WRmxRUlM1TlFVTlNUMDFQVEVWRFZVeEZmVndpSUc5dWJIa3VZQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQjFibWwwY3lBOUlHTnZiQzVuWlhSVVlXY29SRWN1VkVGSFV5NVZUa2xVVXlrN1hHNGdJQ0FnWTI5dWMzUWdjMlZ3WVhKaGRHOXlJRDBnWTI5c0xtZGxkRlJoWnlnbmMyVndZWEpoZEc5eUp5azdYRzRnSUNBZ2NtVjBkWEp1SUZkbFlreHZaMjh1WjJWMFUzQnNhWFIwWlhJb2RXNXBkSE1zSUhObGNHRnlZWFJ2Y2lrN1hHNGdJSDFjYmx4dUlDQXZLaW9nVDI1c2VTQnpiMjFsSUc5bUlIUm9aU0J6ZVc1dmJubHRjeTRnVkdobGMyVWdkMlZ5WlNCdlluUmhhVzVsWkNCbWNtOXRJSFJvWlNCamJIVnpkR1Z5WldRZ2IyeHBaMjl3WlhCMGFXUmxJR1JoZEdGelpYUXVJQ292WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUdGaFUzbHViMjU1YlhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklITjBjbWx1WnlCOUlEMGdlMXh1SUNBZ0lDZGJUV1ZPYkdWZEp6b2dKMHduTENBdkx5Qk9iR1VnTFNCdWIzSnNaWFZqYVc1bFhHNGdJQ0FnSjF0TlpVRmRKem9nSjBFbkxGeHVJQ0FnSUNkYlRXVkhYU2M2SUNkSEp5eGNiaUFnSUNBblcwMWxSbDBuT2lBblJpY3NYRzRnSUgwN1hHNTlYRzRpWFgwPSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyIH0gZnJvbSAnLi93b3JrZXJzL2RpbWVuc2lvbmFsaXR5LXJlZHVjaW5nLXdvcmtlci1jcmVhdG9yJztcbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24oZGF0YUNvbCwgbWV0aG9kTmFtZSwgc2ltaWxhcml0eU1ldHJpYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzID0geWllbGQgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyKHsgZGF0YTogZGF0YUNvbCwgbWV0cmljOiBzaW1pbGFyaXR5TWV0cmljIH0sIG1ldGhvZE5hbWUsIG9wdGlvbnMpO1xuICAgICAgICBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcgPSBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcubWFwKGl0ID0+IG5vcm1hbGl6ZShpdCkpO1xuICAgICAgICByZXR1cm4gZGltZW5zaW9uYWxpdHlSZWR1Y2VSZXM7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4ZFdWdVkyVXRjM0JoWTJVdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp6WlhGMVpXNWpaUzF6Y0dGalpTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZGUVN4UFFVRlBMRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkhOVVVzVDBGQlR5eEZRVUZGTEdsRFFVRnBReXhGUVVFclFpeE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJSMnhKTEUxQlFVMHNWVUZCWjBJc2IwTkJRVzlETEVOQlEzUkVMRTlCUVhGRExFVkJRM0pETEZWQlFXdENMRVZCUTJ4Q0xHZENRVUUyUkN4RlFVTTNSQ3hQUVVGaE96dFJRVVZpTEUxQlFVMHNkVUpCUVhWQ0xFZEJRM3BDTEUxQlFVMHNhVU5CUVdsRExFTkJRMjVETEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzWjBKQlFXZENMRVZCUVdkQ0xFVkJRM3BFTEZWQlFWVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVVM1FpeDFRa0ZCZFVJc1EwRkJReXhUUVVGVExFZEJRVWNzZFVKQlFYVkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTlCUVU4c2RVSkJRWFZDTEVOQlFVTTdTVUZEYmtNc1EwRkJRenREUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElFSnBkRUZ5Y21GNUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwySnBkQzFoY25KaGVTYzdYRzVwYlhCdmNuUWdleUJOWVhSeWFYZ3NJRlpsWTNSdmNpQjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3SUc1dmNtMWhiR2w2WlNCOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzWmxZM1J2Y2kxdmNHVnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1cGJYQnZjblFnZXlCQ2FYUkJjbkpoZVUxbGRISnBZM01zSUZOMGNtbHVaMDFsZEhKcFkzTXNJRlpoYkdsa1ZIbHdaWE1zSUZabFkzUnZjazFsZEhKcFkzTWdmU0JtY205dElDY3VMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVhVzF3YjNKMElIc2dZM0psWVhSbFJHbHRaVzV6YVc1aGJHbDBlVkpsWkhWamFXNW5WMjl5YTJWeUxDQkpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUWdmU0JtY205dElDY3VMM2R2Y210bGNuTXZaR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05wYm1jdGQyOXlhMlZ5TFdOeVpXRjBiM0luTzF4dVhHNWNibVY0Y0c5eWRDQmhjM2x1WXlCbWRXNWpkR2x2YmlCeVpXUjFZMlZFYVcxbGJuTnBibUZzYVhSNVYybDBhRTV2Y20xaGJHbDZZWFJwYjI0b1hHNGdJQ0FnWkdGMFlVTnZiRG9nUW1sMFFYSnlZWGxiWFh4V1pXTjBiM0piWFh4emRISnBibWRiWFN3Z1hHNGdJQ0FnYldWMGFHOWtUbUZ0WlRvZ2MzUnlhVzVuTENCY2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJDYVhSQmNuSmhlVTFsZEhKcFkzTjhWbVZqZEc5eVRXVjBjbWxqYzN4VGRISnBibWROWlhSeWFXTnpMRnh1SUNBZ0lHOXdkR2x2Ym5NL09pQmhibmtwT2lCUWNtOXRhWE5sUEVsU1pXUjFZMlZFYVcxbGJuTnBiMjVoYkdsMGVWSmxjM1ZzZEQ0Z2UxeHVYRzRnSUNBZ1kyOXVjM1FnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTTZJRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkQ0E5WEc0Z0lDQWdJQ0FnSUdGM1lXbDBJR055WldGMFpVUnBiV1Z1YzJsdVlXeHBkSGxTWldSMVkybHVaMWR2Y210bGNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUhzZ1pHRjBZVG9nWkdGMFlVTnZiQ3dnYldWMGNtbGpPaUJ6YVcxcGJHRnlhWFI1VFdWMGNtbGpJSDBnWVhNZ1ZtRnNhV1JVZVhCbGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUcxbGRHaHZaRTVoYldVc0lHOXdkR2x2Ym5NcE8xeHVYRzRnSUNBZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuSUQwZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuTG0xaGNDaHBkQ0E5UGlCdWIzSnRZV3hwZW1Vb2FYUXBLVHRjYmlBZ0lDQnlaWFIxY200Z1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE03WEc1OUlsMTkiLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZGlzdGFuY2VNZXRyaWNzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuZXhwb3J0IGNvbnN0IEF2YWlsYWJsZU1ldHJpY3MgPSB7XG4gICAgJ1ZlY3Rvcic6IHtcbiAgICAgICAgJ0V1Y2xpZGVhbkRpc3RhbmNlJzogY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsXG4gICAgfSxcbiAgICAnU3RyaW5nJzoge1xuICAgICAgICAnTGV2ZW5zaHRlaW4nOiBmbC5kaXN0YW5jZSxcbiAgICAgICAgJ0phcm8tV2lua2xlcic6IGphcm9XaW5rbGVyLFxuICAgIH0sXG4gICAgJ0JpdEFycmF5Jzoge1xuICAgICAgICAnVGFuaW1vdG8nOiBkaXN0YW5jZU1ldHJpY3NbJ1Rhbmltb3RvJ10sXG4gICAgICAgICdEaWNlJzogZGlzdGFuY2VNZXRyaWNzWydEaWNlJ10sXG4gICAgICAgICdBc3ltbWV0cmljJzogZGlzdGFuY2VNZXRyaWNzWydBc3ltbWV0cmljJ10sXG4gICAgICAgICdCcmF1bi1CbGFucXVldCc6IGRpc3RhbmNlTWV0cmljc1snQnJhdW4tQmxhbnF1ZXQnXSxcbiAgICAgICAgJ0Nvc2luZSc6IGRpc3RhbmNlTWV0cmljc1snQ29zaW5lJ10sXG4gICAgICAgICdLdWxjenluc2tpJzogZGlzdGFuY2VNZXRyaWNzWydLdWxjenluc2tpJ10sXG4gICAgICAgICdNYy1Db25uYXVnaGV5JzogZGlzdGFuY2VNZXRyaWNzWydNYy1Db25uYXVnaGV5J10sXG4gICAgICAgICdSb2dvdC1Hb2xkYmVyZyc6IGRpc3RhbmNlTWV0cmljc1snUm9nb3QtR29sZGJlcmcnXSxcbiAgICAgICAgJ1J1c3NlbCc6IGRpc3RhbmNlTWV0cmljc1snUnVzc2VsJ10sXG4gICAgICAgICdTb2thbCc6IGRpc3RhbmNlTWV0cmljc1snU29rYWwnXSxcbiAgICB9LFxufTtcbmV4cG9ydCBjb25zdCBNZXRyaWNUb0RhdGFUeXBlID0gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcylcbiAgICAucmVkdWNlKChyZXQsIGtleSkgPT4ge1xuICAgIGZvciAoY29uc3QgdmFsIG9mIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3Nba2V5XSkpIHtcbiAgICAgICAgcmV0W3ZhbF0gPSBrZXk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59LCB7fSk7XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdTdHJpbmcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQml0QXJyYXlNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdCaXRBcnJheSc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdWZWN0b3InO1xufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEByZXR1cm4ge0Rpc3RhbmNlTWV0cmljfSBDYWxsYmFjayBvZiB0aGUgbWVhc3VyZSBjaG9zZW4uXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgZ2V0TWVhc3VyZSgpIHtcbiAgICAgICAgY29uc3QgZGljdCA9IEF2YWlsYWJsZU1ldHJpY3M7XG4gICAgICAgIHJldHVybiBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWVhc3VyZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WldRdGJXVjBjbWxqY3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblI1Y0dWa0xXMWxkSEpwWTNNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4eFFrRkJjVUlzUTBGQlF6dEJRVU14UXl4UFFVRlBMRVZCUVVNc1YwRkJWeXhGUVVGRExFMUJRVTBzZVVKQlFYbENMRU5CUVVNN1FVRkZjRVFzVDBGQlR5eEZRVUZETEdWQlFXVXNSVUZCUXl4TlFVRk5MR3RFUVVGclJDeERRVUZETzBGQlEycEdMRTlCUVU4c1JVRkJReXd3UWtGQk1FSXNSVUZCUXl4TlFVRk5MR2xFUVVGcFJDeERRVUZETzBGQlNUTkdMRTFCUVUwc1EwRkJReXhOUVVGTkxHZENRVUZuUWl4SFFVRkhPMGxCUXpsQ0xGRkJRVkVzUlVGQlJUdFJRVU5TTEcxQ1FVRnRRaXhGUVVGRkxEQkNRVUV3UWp0TFFVTm9SRHRKUVVORUxGRkJRVkVzUlVGQlJUdFJRVU5TTEdGQlFXRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVVHRSUVVNeFFpeGpRVUZqTEVWQlFVVXNWMEZCVnp0TFFVTTFRanRKUVVORUxGVkJRVlVzUlVGQlJUdFJRVU5XTEZWQlFWVXNSVUZCUlN4bFFVRmxMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRM1pETEUxQlFVMHNSVUZCUlN4bFFVRmxMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJReTlDTEZsQlFWa3NSVUZCUlN4bFFVRmxMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRek5ETEdkQ1FVRm5RaXhGUVVGRkxHVkJRV1VzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRSUVVOdVJDeFJRVUZSTEVWQlFVVXNaVUZCWlN4RFFVRkRMRkZCUVZFc1EwRkJRenRSUVVOdVF5eFpRVUZaTEVWQlFVVXNaVUZCWlN4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVNelF5eGxRVUZsTEVWQlFVVXNaVUZCWlN4RFFVRkRMR1ZCUVdVc1EwRkJRenRSUVVOcVJDeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbExFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1VVRkRia1FzVVVGQlVTeEZRVUZGTEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkRia01zVDBGQlR5eEZRVUZGTEdWQlFXVXNRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRiRU03UTBGRFJpeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc1owSkJRV2RDTEVkQlFYRkNMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1MwRkROVVVzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCY1VJc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJUdEpRVU55UXl4TFFVRkxMRTFCUVUwc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUjBGQmVVSXNRMEZCUXl4RFFVRkRMRVZCUVVVN1VVRkRNVVVzUjBGQlJ5eERRVUZETEVkQlFYbENMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03UzBGRGRFTTdTVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFWZFVMRTFCUVUwc1ZVRkJWU3hqUVVGakxFTkJRVU1zU1VGQmEwSTdTVUZETDBNc1QwRkJUeXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hSUVVGUkxFTkJRVU03UVVGRE5VTXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4SlFVRnJRanRKUVVOcVJDeFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZWQlFWVXNRMEZCUXp0QlFVTTVReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SlFVRnJRanRKUVVNdlF5eFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZGQlFWRXNRMEZCUXp0QlFVTTFReXhEUVVGRE8wRkJSVVFzTkVSQlFUUkVPMEZCUXpWRUxFMUJRVTBzVDBGQlR5eFBRVUZQTzBsQlNXeENPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTFCUVc5Q08xRkJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRjFRaXhEUVVGRE8wbEJRMnBGTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwa3NWVUZCVlR0UlFVTm1MRTFCUVUwc1NVRkJTU3hIUVVGelJDeG5Ra0ZCWjBJc1EwRkJRenRSUVVOcVJpeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUXpGRExFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eFJRVUUwUWp0UlFVTTFSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSQ3hEUVVGRE8wbEJSVVE3TzAxQlJVVTdTVUZEUml4TlFVRk5MRXRCUVVzc2FVSkJRV2xDTzFGQlF6RkNMRTlCUVU4c1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdRMEZEUmlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR1pzSUdaeWIyMGdKMlpoYzNSbGMzUXRiR1YyWlc1emFIUmxhVzRuTzF4dWFXMXdiM0owSUh0cVlYSnZWMmx1YTJ4bGNuMGdabkp2YlNBbmFtRnlieTEzYVc1cmJHVnlMWFI1Y0dWelkzSnBjSFFuTzF4dWFXMXdiM0owSUh0RWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0a2FYTjBZVzVqWlUxbGRISnBZM045SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNOcGJXbHNZWEpwZEhrdGJXVjBjbWxqY3ljN1hHNXBiWEJ2Y25RZ2UyTmhiR04xYkdGMFpVVjFZMnhwWkdWaGJrUnBjM1JoYm1ObGZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTJaV04wYjNJdGIzQmxjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZZbWwwTFdGeWNtRjVKenRjYm1sdGNHOXlkQ0I3Vm1WamRHOXlMQ0JUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JCZG1GcGJHRmliR1ZOWlhSeWFXTnpJRDBnZTF4dUlDQW5WbVZqZEc5eUp6b2dlMXh1SUNBZ0lDZEZkV05zYVdSbFlXNUVhWE4wWVc1alpTYzZJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1SUNCOUxGeHVJQ0FuVTNSeWFXNW5Kem9nZTF4dUlDQWdJQ2RNWlhabGJuTm9kR1ZwYmljNklHWnNMbVJwYzNSaGJtTmxMRnh1SUNBZ0lDZEtZWEp2TFZkcGJtdHNaWEluT2lCcVlYSnZWMmx1YTJ4bGNpeGNiaUFnZlN4Y2JpQWdKMEpwZEVGeWNtRjVKem9nZTF4dUlDQWdJQ2RVWVc1cGJXOTBieWM2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVkdGdWFXMXZkRzhuWFN4Y2JpQWdJQ0FuUkdsalpTYzZJR1JwYzNSaGJtTmxUV1YwY21samMxc25SR2xqWlNkZExGeHVJQ0FnSUNkQmMzbHRiV1YwY21sakp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZEJjM2x0YldWMGNtbGpKMTBzWEc0Z0lDQWdKMEp5WVhWdUxVSnNZVzV4ZFdWMEp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZENjbUYxYmkxQ2JHRnVjWFZsZENkZExGeHVJQ0FnSUNkRGIzTnBibVVuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjBOdmMybHVaU2RkTEZ4dUlDQWdJQ2RMZFd4amVubHVjMnRwSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkTGRXeGplbmx1YzJ0cEoxMHNYRzRnSUNBZ0owMWpMVU52Ym01aGRXZG9aWGtuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjAxakxVTnZibTVoZFdkb1pYa25YU3hjYmlBZ0lDQW5VbTluYjNRdFIyOXNaR0psY21jbk9pQmthWE4wWVc1alpVMWxkSEpwWTNOYkoxSnZaMjkwTFVkdmJHUmlaWEpuSjEwc1hHNGdJQ0FnSjFKMWMzTmxiQ2M2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVW5WemMyVnNKMTBzWEc0Z0lDQWdKMU52YTJGc0p6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZFRiMnRoYkNkZExGeHVJQ0I5TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElFMWxkSEpwWTFSdlJHRjBZVlI1Y0dVNklGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZOWlhSeWFXTnpLVnh1SUNBdWNtVmtkV05sS0NoeVpYUTZJRk4wY21sdVowUnBZM1JwYjI1aGNua3NJR3RsZVNrZ1BUNGdlMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdkbUZzSUc5bUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJhMlY1SUdGeklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMxMHBLU0I3WEc0Z0lDQWdJQ0J5WlhSYmRtRnNJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwZ1BTQnJaWGs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgwc0lIdDlLVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdRWFpoYVd4aFlteGxSR0YwWVZSNWNHVnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNWxlSEJ2Y25RZ2RIbHdaU0JUZEhKcGJtZE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFOMGNtbHVaeWRkTzF4dVpYaHdiM0owSUhSNWNHVWdRbWwwUVhKeVlYbE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjBKcGRFRnljbUY1SjEwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JXWldOMGIzSk5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFabFkzUnZjaWRkTzF4dVpYaHdiM0owSUhSNWNHVWdTMjV2ZDI1TlpYUnlhV056SUQwZ1UzUnlhVzVuVFdWMGNtbGpjeUI4SUVKcGRFRnljbUY1VFdWMGNtbGpjeUI4SUZabFkzUnZjazFsZEhKcFkzTTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGWmhiR2xrVkhsd1pYTWdQU0I3WkdGMFlUb2djM1J5YVc1blcxMHNJRzFsZEhKcFl6b2dVM1J5YVc1blRXVjBjbWxqYzMwZ2ZDQjdaR0YwWVRvZ1ZtVmpkRzl5VzEwc0lHMWxkSEpwWXpvZ1ZtVmpkRzl5VFdWMGNtbGpjMzBnZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh0a1lYUmhPaUJDYVhSQmNuSmhlVnRkTENCdFpYUnlhV002SUVKcGRFRnljbUY1VFdWMGNtbGpjMzA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjBjbWx1WjAxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ0oxTjBjbWx1WnljN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzBKcGRFRnljbUY1VFdWMGNtbGpLRzVoYldVNklFdHViM2R1VFdWMGNtbGpjeWtnZTF4dUlDQnlaWFIxY200Z1RXVjBjbWxqVkc5RVlYUmhWSGx3WlZ0dVlXMWxYU0E5UFNBblFtbDBRWEp5WVhrbk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOV1pXTjBiM0pOWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkV1pXTjBiM0luTzF4dWZWeHVYRzR2S2lvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElITjBjbWx1WnlCdFpXRnpkWEpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTlpXRnpkWEpsSUh0Y2JpQWdjSEp2ZEdWamRHVmtJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056TzF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVZSNWNHVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCTlpXRnpkWEpsSUhkcGRHZ2dMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXVjBhRzlrSUUxbGRHaHZaQ0IwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCemRISnBibWR6TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lDQWdkR2hwY3k1dFpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdkR2hwY3k1a1lYUmhWSGx3WlNBOUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJXVjBhRzlrWFNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJqZFhOMGIyMGdjM1J5YVc1bklHUnBjM1JoYm1ObElHWjFibU4wYVc5dUlITndaV05wWm1sbFpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHbHpkR0Z1WTJWTlpYUnlhV045SUVOaGJHeGlZV05ySUc5bUlIUm9aU0J0WldGemRYSmxJR05vYjNObGJpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlFMWxZWE4xY21WeVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBUV1ZoYzNWeVpTZ3BPaUJFYVhOMFlXNWpaVTFsZEhKcFl5QjdYRzRnSUNBZ1kyOXVjM1FnWkdsamREb2dlMXRyWlhrNklITjBjbWx1WjEwNklIdGJhMlY1TWpvZ2MzUnlhVzVuWFRvZ1JHbHpkR0Z1WTJWTlpYUnlhV045ZlNBOUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNGdJQ0FnY21WMGRYSnVJR1JwWTNSYmRHaHBjeTVrWVhSaFZIbHdaVjFiZEdocGN5NXRaWFJvYjJSZE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdZM1Z6ZEc5dElITjBjbWx1WnlCa2FYTjBZVzVqWlNCaWVTQjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdaR0YwWVZSNWNHVWdUV1YwY21sakozTWdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQk5aWFJ5YVdNZ2JtRnRaWE1nZDJocFkyZ2daWGh3WldOMGN5QjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUk5aWFJ5YVdOQ2VVUmhkR0ZVZVhCbEtHUmhkR0ZVZVhCbE9pQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTXBPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJaR0YwWVZSNWNHVmRLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQlNaWFIxY201eklHMWxkSEpwWXlCdVlXMWxjeUJoZG1GcGJHRmliR1V1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwSUdGMllXbHNZV0pzWlUxbFlYTjFjbVZ6S0NrNklITjBjbWx1WjF0ZElIdGNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbXRsZVhNb1FYWmhhV3hoWW14bFRXVjBjbWxqY3lrN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5sZXQgem9vbSA9IGZhbHNlO1xuLy8gU2VhcmNoZXMgZm9yIGFjdGl2aXR5IGNsaWZmcyBpbiBhIGNoZW1pY2FsIGRhdGFzZXQgYnkgc2VsZWN0ZWQgY3V0b2ZmXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZpdHlDbGlmZnMoZGYsIHNlcUNvbCwgYXhlc05hbWVzLCBzY2F0dGVyVGl0bGUsIGFjdGl2aXRpZXMsIHNpbWlsYXJpdHksIHNpbWlsYXJpdHlNZXRyaWMsIG1ldGhvZE5hbWUsIHNlbVR5cGUsIHVuaXRzLCBzZXFTcGFjZUZ1bmMsIHNpbUZ1bmMsIHRvb2x0aXBEcmF3RnVuYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGF1dG9tYXRpY1NpbWlsYXJpdHlMaW1pdCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBNSU5fU0lNSUxBUklUWSA9IDgwO1xuICAgICAgICBjb25zdCBpbml0aWFsU2ltaWxhcml0eUxpbWl0ID0gYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID8gTUlOX1NJTUlMQVJJVFkgOiBzaW1pbGFyaXR5IC8gMTAwO1xuICAgICAgICBjb25zdCB7IGRpc3RhbmNlLCBjb29yZGluYXRlcyB9ID0geWllbGQgc2VxU3BhY2VGdW5jKHtcbiAgICAgICAgICAgIHNlcUNvbDogc2VxQ29sLFxuICAgICAgICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgICAgICAgICBlbWJlZEF4ZXNOYW1lczogYXhlc05hbWVzLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29vcmRpbmF0ZXMpXG4gICAgICAgICAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuICAgICAgICBjb25zdCBkZlNlcSA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCAnc2VxJywgc2VxQ29sLnRvTGlzdCgpKV0pO1xuICAgICAgICBjb25zdCBkaW0gPSBzZXFDb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBzaW1BcnIgPSBBcnJheShkaW0gLSAxKTtcbiAgICAgICAgaWYgKCFkaXN0YW5jZSlcbiAgICAgICAgICAgIHlpZWxkIGdldFNpbWlsYXJpdGllc01hcml4KGRpbSwgc2VxQ29sLCBkZlNlcSwgc2ltQXJyLCBzaW1GdW5jKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZ2V0U2ltaWxhcml0aWVzTWFyaXhGcm9tRGlzdGFuY2VzKGRpbSwgZGlzdGFuY2UsIHNpbUFycik7XG4gICAgICAgIGNvbnN0IG9wdFNpbWlsYXJpdHlMaW1pdCA9IGluaXRpYWxTaW1pbGFyaXR5TGltaXQ7XG4gICAgICAgIGNvbnN0IHNpbVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2FsaVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3QgbjEgPSBbXTtcbiAgICAgICAgY29uc3QgbjIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiAhPSBkaW0gLSAxIC0gaTsgKytqKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2ltID0gc2ltQXJyW2ldLmdldChqKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltID49IG9wdFNpbWlsYXJpdHlMaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICBuMS5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICBuMi5wdXNoKGkgKyBqICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIHNpbVZhbHMucHVzaChzaW0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQoaSkgLSBhY3Rpdml0aWVzLmdldChpICsgaiArIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpbSAhPSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChkaWZmIC8gKDEgLSBzaW0pKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChJbmZpbml0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhbGlWYWxzV2l0aG91dEluZmluaXR5ID0gc2FsaVZhbHMuZmlsdGVyKGl0ID0+IGl0ICE9PSBJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNaW4gPSBNYXRoLm1pbiguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNYXggPSBNYXRoLm1heCguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlPcGFjaXR5Q29lZiA9IDAuOCAvIChzYWxpTWF4IC0gc2FsaU1pbik7XG4gICAgICAgIGNvbnN0IG5laWdoYm91cnNDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNhbGlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IG4xLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjFbaV1dICs9IDE7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjJbaV1dICs9IDE7XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjFbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjJbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBpZiAoc2FsaVZhbHNbaV0gIT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdGllcy5nZXQobjFbaV0pID4gYWN0aXZpdGllcy5nZXQobjJbaV0pKVxuICAgICAgICAgICAgICAgICAgICBzYWxpQ291bnRbbjFbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgc2FsaUNvdW50W24yW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzYWxpID0gREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBgc2FsaV8ke2F4ZXNOYW1lc1swXS5zdWJzdHJpbmcoYXhlc05hbWVzWzBdLmxhc3RJbmRleE9mKCdfJykpfWAsIHNhbGlDb3VudCk7XG4gICAgICAgIGRmLmNvbHVtbnMuYWRkKHNhbGkpO1xuICAgICAgICBjb25zdCB2aWV3ID0gZ3Jvay5zaGVsbC5nZXRUYWJsZVZpZXcoZGYubmFtZSk7XG4gICAgICAgIGNvbnN0IHNwID0gdmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7XG4gICAgICAgICAgICB4Q29sdW1uTmFtZTogYXhlc05hbWVzWzBdLFxuICAgICAgICAgICAgeUNvbHVtbk5hbWU6IGF4ZXNOYW1lc1sxXSxcbiAgICAgICAgICAgIHNpemU6IHNhbGkubmFtZSxcbiAgICAgICAgICAgIGNvbG9yOiBhY3Rpdml0aWVzLm5hbWUsXG4gICAgICAgICAgICBzaG93WFNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dZU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd1NpemVTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93Q29sb3JTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBtYXJrZXJNaW5TaXplOiA1LFxuICAgICAgICAgICAgbWFya2VyTWF4U2l6ZTogMjUsXG4gICAgICAgICAgICB0aXRsZTogc2NhdHRlclRpdGxlXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3QgY2FudmFzID0gc3AuZ2V0SW5mbygpWydjYW52YXMnXTtcbiAgICAgICAgY29uc3QgbGluZXNSZXMgPSBjcmVhdGVMaW5lcyhuMSwgbjIsIHNlcUNvbCwgYWN0aXZpdGllcywgc2FsaVZhbHMsIHNlbVR5cGUsIHVuaXRzKTtcbiAgICAgICAgY29uc3QgdG9vbHRpcHMgPSB7fTtcbiAgICAgICAgbGluZXNSZXMubGluZXNEZi5vbkN1cnJlbnRDZWxsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE1vbElkeCA9IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudENvbCAmJiBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wubmFtZSA9PT0gJzJfc2VxJyA/IDEgOiAwO1xuICAgICAgICAgICAgc3AuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPVxuICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gLTEgPyBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdLm1vbHNbY3VycmVudE1vbElkeF0gOiAtMTtcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLm9uU2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHhdO1xuICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpbmVzRGZHcmlkID0gbGluZXNSZXMubGluZXNEZi5wbG90LmdyaWQoKS5zb3J0KFsnYWN0X2RpZmYnXSwgW2ZhbHNlXSk7XG4gICAgICAgIGxpbmVzRGZHcmlkLm9uQ2VsbENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB6b29tID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpc3RDbGlmZnNMaW5rID0gdWkuYnV0dG9uKGAke2xpbmVzUmVzLmxpbmVzRGYucm93Q291bnR9IGNsaWZmc2AsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWZmc0RpYWxvZyA9IHVpLmRpYWxvZyh7IHRpdGxlOiAnQWN0aXZpdHkgY2xpZmZzJyB9KVxuICAgICAgICAgICAgICAgIC5hZGQobGluZXNEZkdyaWQucm9vdClcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgY2xpZmZzRGlhbG9nLnJvb3QuaWQgPSAnY2xpZmZzX2RpYWxvZyc7XG4gICAgICAgIH0pO1xuICAgICAgICBsaXN0Q2xpZmZzTGluay5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnRvcCA9ICcxMHB4JztcbiAgICAgICAgbGlzdENsaWZmc0xpbmsuc3R5bGUucmlnaHQgPSAnMTBweCc7XG4gICAgICAgIHNwLnJvb3QuYXBwZW5kKGxpc3RDbGlmZnNMaW5rKTtcbiAgICAgICAgbGV0IHRpbWVyO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgICAgdGltZXIgPSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdG9vbHRpcHNbbGluZS5pZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRyYXdUb29sdGlwUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB0b29sdGlwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmOiBkZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwRHJhd0Z1bmMoZHJhd1Rvb2x0aXBQYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvdyh0b29sdGlwc1tsaW5lLmlkXSwgZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgICAgICAgICAgaWYgKGxpbmUgJiYgZGYubW91c2VPdmVyUm93SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXNEZi5zZWxlY3Rpb24uc2V0KGxpbmUuaWQsIGxpbmUuc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggIT09IGxpbmUuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA9IGxpbmUuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5jdXJyZW50Um93SWR4ID0gbGluZS5tb2xzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCAhbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzcC5vbkV2ZW50KCdkNC1iZWZvcmUtZHJhdy1zY2VuZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHJlbmRlckxpbmVzKHNwLCBheGVzTmFtZXNbMF0sIGF4ZXNOYW1lc1sxXSwgbGluZXNSZXMsIHNhbGlWYWxzLCBzYWxpT3BhY2l0eUNvZWYsIHNhbGlNaW4pO1xuICAgICAgICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TGluZSA9IGxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF07XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHgxID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMF0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5MSA9IHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzFdLCBjdXJyZW50TGluZS5tb2xzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeDIgPSBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1sxXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHkyID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMV0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4RGlmZiA9IE1hdGguYWJzKHgxIC0geDIpICogNTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeURpZmYgPSBNYXRoLmFicyh5MSAtIHkyKSAqIDU7XG4gICAgICAgICAgICAgICAgICAgIHNwLnpvb20oeDEgPCB4MiA/IHgxIC0geERpZmYgOiB4MiAtIHhEaWZmLCB5MSA+IHkyID8geTEgKyB5RGlmZiA6IHkyICsgeURpZmYsIHgxID4geDIgPyB4MSArIHhEaWZmIDogeDIgKyB4RGlmZiwgeTEgPCB5MiA/IHkxIC0geURpZmYgOiB5MiAtIHlEaWZmKTtcbiAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgIHpvb20gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNwLmFkZFByb3BlcnR5KCdzaW1pbGFyaXR5TGltaXQnLCAnZG91YmxlJywgb3B0U2ltaWxhcml0eUxpbWl0KTtcbiAgICAgICAgcmV0dXJuIHNwO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXMpIHtcbiAgICBjb25zdCByZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0O1xuICAgIGNvbnN0IHkgPSBldmVudC5jbGllbnRZIC0gcmVjdC50b3A7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgIGNvbnN0IGRpc3QgPSBNYXRoLmFicyhNYXRoLmh5cG90KGxpbmUuYVswXSAtIHgsIGxpbmUuYVsxXSAtIHkpICtcbiAgICAgICAgICAgIE1hdGguaHlwb3QobGluZS5iWzBdIC0geCwgbGluZS5iWzFdIC0geSkgLSBNYXRoLmh5cG90KGxpbmUuYVswXSAtIGxpbmUuYlswXSwgbGluZS5hWzFdIC0gbGluZS5iWzFdKSk7XG4gICAgICAgIGlmIChkaXN0IDwgMilcbiAgICAgICAgICAgIHJldHVybiBsaW5lO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHJlbmRlckxpbmVzKHNwLCB4QXhpcywgeUF4aXMsIGxpbmVzUmVzLCBzYWxpVmFscywgc2FsaU9wYWNpdHlDb2VmLCBzYWxpTWluKSB7XG4gICAgY29uc3QgbGluZXMgPSBsaW5lc1Jlcy5saW5lcztcbiAgICBjb25zdCBjYW52YXMgPSBzcC5nZXRJbmZvKClbJ2NhbnZhcyddO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNvbnN0IHggPSBzcC5kYXRhRnJhbWUuY29sdW1ucy5ieU5hbWUoeEF4aXMpO1xuICAgIGNvbnN0IHkgPSBzcC5kYXRhRnJhbWUuY29sdW1ucy5ieU5hbWUoeUF4aXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcG9pbnRGcm9tID0gc3Aud29ybGRUb1NjcmVlbih4LmdldChsaW5lc1tpXS5tb2xzWzBdKSwgeS5nZXQobGluZXNbaV0ubW9sc1swXSkpO1xuICAgICAgICBjb25zdCBwb2ludFRvID0gc3Aud29ybGRUb1NjcmVlbih4LmdldChsaW5lc1tpXS5tb2xzWzFdKSwgeS5nZXQobGluZXNbaV0ubW9sc1sxXSkpO1xuICAgICAgICBsaW5lc1tpXS5hID0gW3BvaW50RnJvbS54LCBwb2ludEZyb20ueV07XG4gICAgICAgIGxpbmVzW2ldLmIgPSBbcG9pbnRUby54LCBwb2ludFRvLnldO1xuICAgICAgICBjb25zdCBsaW5lID0gbmV3IFBhdGgyRCgpO1xuICAgICAgICBsaW5lLm1vdmVUbyhsaW5lc1tpXS5hWzBdLCBsaW5lc1tpXS5hWzFdKTtcbiAgICAgICAgY29uc3QgY29sb3IgPSBsaW5lc1tpXS5zZWxlY3RlZCA/ICcyNTUsMjU1LDAnIDogJzAsMTI4LDAnO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gc2FsaVZhbHNbaV0gPT09IEluZmluaXR5ID8gMSA6IDAuMiArIChzYWxpVmFsc1tpXSAtIHNhbGlNaW4pICogc2FsaU9wYWNpdHlDb2VmO1xuICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBgcmdiYSgke2NvbG9yfSwke29wYWNpdHl9KWA7XG4gICAgICAgIGN0eC5saW5lV2lkdGggPSBsaW5lc1tpXS5pZCA9PT0gbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ID8gMyA6IDE7XG4gICAgICAgIGxpbmUubGluZVRvKGxpbmVzW2ldLmJbMF0sIGxpbmVzW2ldLmJbMV0pO1xuICAgICAgICBjdHguc3Ryb2tlKGxpbmUpO1xuICAgIH1cbiAgICByZXR1cm4gbGluZXM7XG59XG5mdW5jdGlvbiBjcmVhdGVMaW5lcyhuMSwgbjIsIHNlcSwgYWN0aXZpdGllcywgc2FsaVZhbHMsIHNlbVR5cGUsIHVuaXRzKSB7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG4xLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG51bTEgPSBuMVtpXTtcbiAgICAgICAgY29uc3QgbnVtMiA9IG4yW2ldO1xuICAgICAgICBsaW5lcy5wdXNoKHsgaWQ6IGksIG1vbHM6IFtudW0xLCBudW0yXSwgc2VsZWN0ZWQ6IGZhbHNlLCBhOiBbXSwgYjogW10gfSk7XG4gICAgfVxuICAgIGNvbnN0IGxpbmVzRGYgPSBERy5EYXRhRnJhbWUuY3JlYXRlKGxpbmVzLmxlbmd0aCk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld1N0cmluZygnMV9zZXEnKS5pbml0KChpKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3U3RyaW5nKCcyX3NlcScpLmluaXQoKGkpID0+IHNlcS5nZXQobGluZXNbaV0ubW9sc1sxXSkpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdGbG9hdCgnYWN0X2RpZmYnKVxuICAgICAgICAuaW5pdCgoaSkgPT4gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQobGluZXNbaV0ubW9sc1swXSkgLSBhY3Rpdml0aWVzLmdldChsaW5lc1tpXS5tb2xzWzFdKSkpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdJbnQoJ2xpbmVfaW5kZXgnKS5pbml0KChpKSA9PiBpKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ3NhbGknKS5pbml0KChpKSA9PiBzYWxpVmFsc1tpXSk7XG4gICAgbGluZXNEZi5jb2woJzFfc2VxJykudGFnc1tERy5UQUdTLlVOSVRTXSA9IHVuaXRzO1xuICAgIGxpbmVzRGYuY29sKCcyX3NlcScpLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgICBsaW5lc0RmLmNvbCgnMV9zZXEnKS5zZW1UeXBlID0gc2VtVHlwZTtcbiAgICBsaW5lc0RmLmNvbCgnMl9zZXEnKS5zZW1UeXBlID0gc2VtVHlwZTtcbiAgICByZXR1cm4geyBsaW5lcywgbGluZXNEZiB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc01hcml4KGRpbSwgc2VxQ29sLCBkZlNlcSwgc2ltQXJyLCBzaW1GdW5jKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBtb2wgPSBzZXFDb2wuZ2V0KGkpO1xuICAgICAgICAgICAgZGZTZXEucm93cy5yZW1vdmVBdCgwLCAxLCBmYWxzZSk7XG4gICAgICAgICAgICBzaW1BcnJbaV0gPSAoeWllbGQgc2ltRnVuYyhkZlNlcS5jb2woJ3NlcScpLCBtb2wpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2ltQXJyO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc01hcml4RnJvbURpc3RhbmNlcyhkaW0sIGRpc3RhbmNlcywgc2ltQXJyKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW0gLSAxOyArK2kpIHtcbiAgICAgICAgY29uc3Qgc2ltaWxhcml0eUFyciA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBkaW07ICsrailcbiAgICAgICAgICAgIHNpbWlsYXJpdHlBcnIucHVzaChnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGRpc3RhbmNlc1tpXVtqXSkpO1xuICAgICAgICBzaW1BcnJbaV0gPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSgnc2ltaWxhcml0eScsIEZsb2F0MzJBcnJheS5mcm9tKHNpbWlsYXJpdHlBcnIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbUFycjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVlXTjBhWFpwZEhrdFkyeHBabVp6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lZV04wYVhacGRIa3RZMnhwWm1aekxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096dEJRVUZCTEU5QlFVOHNTMEZCU3l4SlFVRkpMRTFCUVUwc2JVSkJRVzFDTEVOQlFVTTdRVUZETVVNc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHBRa0ZCYVVJc1EwRkJRenRCUVVOMFF5eFBRVUZQTEV0QlFVc3NSVUZCUlN4TlFVRk5MR2xDUVVGcFFpeERRVUZETzBGQlJYUkRMRTlCUVU4c1JVRkJSU3g1UWtGQmVVSXNSVUZCUlN4TlFVRk5MR3RFUVVGclJDeERRVUZETzBGQmMwTTNSaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZGYWtJc2QwVkJRWGRGTzBGQlEzaEZMRTFCUVUwc1ZVRkJaMElzYVVKQlFXbENMRU5CUTI1RExFVkJRV2RDTEVWQlEyaENMRTFCUVdsQ0xFVkJRMnBDTEZOQlFXMUNMRVZCUTI1Q0xGbEJRVzlDTEVWQlEzQkNMRlZCUVhGQ0xFVkJRM0pDTEZWQlFXdENMRVZCUTJ4Q0xHZENRVUYzUWl4RlFVTjRRaXhWUVVGclFpeEZRVU5zUWl4UFFVRmxMRVZCUTJZc1MwRkJZU3hGUVVOaUxGbEJRVFpGTEVWQlF6ZEZMRTlCUVcxRkxFVkJRMjVGTEdWQlFYRkVMRVZCUTNKRUxFOUJRV0U3TzFGQlEyWXNUVUZCVFN4M1FrRkJkMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdVVUZEZGtNc1RVRkJUU3hqUVVGakxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlJURkNMRTFCUVUwc2MwSkJRWE5DTEVkQlFVY3NkMEpCUVhkQ0xFTkJRVU1zUTBGQlF5eERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hIUVVGSExFZEJRVWNzUTBGQlF6dFJRVVUxUml4TlFVRk5MRVZCUVVNc1VVRkJVU3hGUVVGRkxGZEJRVmNzUlVGQlF5eEhRVUZITEUxQlFVMHNXVUZCV1N4RFFVRkRPMWxCUTJwRUxFMUJRVTBzUlVGQlJTeE5RVUZOTzFsQlEyUXNWVUZCVlN4RlFVRkZMRlZCUVZVN1dVRkRkRUlzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTzFsQlEyeERMR05CUVdNc1JVRkJSU3hUUVVGVE8xbEJRM3BDTEU5QlFVOHNSVUZCUlN4UFFVRlBPMU5CUTJwQ0xFTkJRVU1zUTBGQlF6dFJRVVZJTEV0QlFVc3NUVUZCVFN4SFFVRkhMRWxCUVVrc1YwRkJWenRaUVVNelFpeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVYwUWl4TlFVRk5MRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXk5R0xFMUJRVTBzUjBGQlJ5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRNVUlzVFVGQlRTeE5RVUZOTEVkQlFXZENMRXRCUVVzc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGTTBNc1NVRkJTU3hEUVVGRExGRkJRVkU3V1VGRFdDeE5RVUZOTEc5Q1FVRnZRaXhEUVVGRExFZEJRVWNzUlVGQlJTeE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6czdXVUZGYUVVc2FVTkJRV2xETEVOQlFVTXNSMEZCUnl4RlFVRkZMRkZCUVZFc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVV6UkN4TlFVRk5MR3RDUVVGclFpeEhRVUZITEhOQ1FVRnpRaXhEUVVGRE8xRkJSV3hFTEUxQlFVMHNUMEZCVHl4SFFVRmhMRVZCUVVVc1EwRkJRenRSUVVNM1FpeE5RVUZOTEZGQlFWRXNSMEZCWVN4RlFVRkZMRU5CUVVNN1VVRkRPVUlzVFVGQlRTeEZRVUZGTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUTNoQ0xFMUJRVTBzUlVGQlJTeEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVVjRRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnFReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1owSkJRM0pETEUxQlFVMHNSMEZCUnl4SFFVRlhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJSWEpETEVsQlFVa3NSMEZCUnl4SlFVRkpMR3RDUVVGclFpeEZRVUZGTzI5Q1FVTTNRaXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOWUxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZEYmtJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRiRUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU55UlN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE8zZENRVU5XTEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN08zZENRVVZvUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzJsQ1FVTXpRanRoUVVOR08xTkJRMFk3VVVGRlJDeE5RVUZOTEhWQ1FVRjFRaXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFdEJRVXNzVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEZGtVc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZEY2tRc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZEY2tRc1RVRkJUU3hsUVVGbExFZEJRVWNzUjBGQlJ5eEhRVUZETEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJSMmhFTEUxQlFVMHNaVUZCWlN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNdlF5eE5RVUZOTEdWQlFXVXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRMME1zVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhwRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTI1RExHVkJRV1VzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRE5VSXNaVUZCWlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTTFRaXhsUVVGbExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkRMR1ZCUVdVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrTXNTVUZCU1N4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVVVGQlVTeEZRVUZGTzJkQ1FVTXpRaXhKUVVGSkxGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlF5OURMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzI5Q1FVVm9ReXhUUVVGVExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEyNURPMU5CUTBZN1VVRkZSQ3hOUVVGTkxFbEJRVWtzUjBGQll5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhSUVVGUkxFVkJRVVVzVVVGQlVTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUldwSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSWEpDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zV1VGQldTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNNVF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOc1JDeFhRVUZYTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONlFpeFhRVUZYTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONlFpeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrN1dVRkRaaXhMUVVGTExFVkJRVVVzVlVGQlZTeERRVUZETEVsQlFVazdXVUZEZEVJc1lVRkJZU3hGUVVGRkxFdEJRVXM3V1VGRGNFSXNZVUZCWVN4RlFVRkZMRXRCUVVzN1dVRkRjRUlzWjBKQlFXZENMRVZCUVVVc1MwRkJTenRaUVVOMlFpeHBRa0ZCYVVJc1JVRkJSU3hMUVVGTE8xbEJRM2hDTEdGQlFXRXNSVUZCUlN4RFFVRkRPMWxCUTJoQ0xHRkJRV0VzUlVGQlJTeEZRVUZGTzFsQlEycENMRXRCUVVzc1JVRkJSU3haUVVGWk8xTkJRM0JDTEVOQlFVTXNRMEZCZVVJc1EwRkJRenRSUVVVMVFpeE5RVUZOTEUxQlFVMHNSMEZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETDBNc1RVRkJUU3hSUVVGUkxFZEJRVWNzVjBGQlZ5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1RVRkJUU3hGUVVGRkxGVkJRVlVzUlVGQlJTeFJRVUZSTEVWQlFVVXNUMEZCVHl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRMjVHTEUxQlFVMHNVVUZCVVN4SFFVRlJMRVZCUVVVc1EwRkJRenRSUVVWNlFpeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVN1dVRkRia1FzVFVGQlRTeGhRVUZoTEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFbEJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hMUVVGTExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE1VY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhoUVVGaE8yZENRVU40UWl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJFZ3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1dVRkRNMFFzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFsQlF6RkVMRmRCUVZjc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVU16UWl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVWSUxGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRiRVFzU1VGQlNTeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR1ZCUVdVc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJUdG5Ra0ZETTBNc1RVRkJUU3hKUVVGSkxFZEJRVWNzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzJkQ1FVTTVSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenRuUWtGREwwSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUk8yOUNRVU5vUWl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0aFFVTTVRanRaUVVORUxGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlF6TkNMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkU3YjBKQlExb3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1YwRkJWeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzFGQlF6TkNMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzVFVGQlRTeFhRVUZYTEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRkRkxGZEJRVmNzUTBGQlF5eFhRVUZYTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1JVRkJSVHRaUVVOeVF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJRc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRlNDeE5RVUZOTEdOQlFXTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRk5CUVZNc1JVRkJSU3hIUVVGSExFVkJRVVU3V1VGRE0wVXNUVUZCVFN4WlFVRlpMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZETEV0QlFVc3NSVUZCUlN4cFFrRkJhVUlzUlVGQlF5eERRVUZETzJsQ1FVTjJSQ3hIUVVGSExFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXp0cFFrRkRja0lzU1VGQlNTeEZRVUZGTEVOQlFVTTdXVUZEVml4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eGxRVUZsTEVOQlFVTTdVVUZEZWtNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeGpRVUZqTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1IwRkJSeXhWUVVGVkxFTkJRVU03VVVGRE0wTXNZMEZCWXl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETzFGQlEyeERMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXp0UlFVTndReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRSUVVVdlFpeEpRVUZKTEV0QlFYRkNMRU5CUVVNN1VVRkRNVUlzVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExGZEJRVmNzUlVGQlJTeFZRVUZWTEV0QlFXbENPMWxCUXpsRUxGbEJRVmtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTndRaXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXp0blFrRkRlRUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03WjBKQlF6bEVMRWxCUVVrc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eGxRVUZsTEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVN2IwSkJRM0pETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTzNkQ1FVTjBRaXhOUVVGTkxHbENRVUZwUWl4SFFVRkhPelJDUVVONFFpeFJRVUZSTEVWQlFVVXNVVUZCVVRzMFFrRkRiRUlzU1VGQlNTeEZRVUZGTEVsQlFVazdORUpCUTFZc1JVRkJSU3hGUVVGRkxFVkJRVVU3TkVKQlEwNHNUVUZCVFN4RlFVRkZMRTFCUVUwN05FSkJRMlFzVVVGQlVTeEZRVUZGTEZWQlFWVTdORUpCUTNCQ0xFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNUMEZCVHpzMFFrRkRhRUlzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4UFFVRlBPM2xDUVVOcVFpeERRVUZCTzNkQ1FVTkVMR1ZCUVdVc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPM0ZDUVVOd1F6dHZRa0ZEUkN4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8ybENRVU5zUlR0WlFVTklMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU5ZTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRmRCUVZjc1JVRkJSU3hWUVVGVExFdEJRV2xDTzFsQlF6ZEVMRTFCUVUwc1NVRkJTU3hIUVVGSExHbENRVUZwUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUXpsRUxFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4bFFVRmxMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3WjBKQlEzSkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJUdHZRa0ZEYWtJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN2IwSkJReTlDTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dHZRa0ZGZGtRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTzNkQ1FVTm9RaXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenR2UWtGRk4wSXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0M1FrRkRNMElzU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVRzMFFrRkRXaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTNKRUxFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTktPM0ZDUVVGTk8yOUNRVU5NTEVsQlFVa3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhoUVVGaExFdEJRVXNzU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlR0M1FrRkRPVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF6dDNRa0ZEZWtNc1JVRkJSU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8zZENRVU5vUXl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPM2RDUVVOcVJDeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dHhRa0ZEYWtRN2FVSkJRMFk3WVVGRFJqdFJRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eHpRa0ZCYzBJc1EwRkJRenRoUVVNdlFpeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVObUxFMUJRVTBzUzBGQlN5eEhRVUZITEZkQlFWY3NRMEZCUXl4RlFVRkZMRVZCUXpGQ0xGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4bFFVRmxMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRE5VVXNTVUZCU1N4SlFVRkpMRVZCUVVVN1owSkJRMUlzVFVGQlRTeFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdaMEpCUXpGRUxGVkJRVlVzUTBGQlF5eEhRVUZGTEVWQlFVVTdiMEpCUTJJc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETDBRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETDBRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETDBRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETDBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFZEJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTnNReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTJ4RExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUlVGRGRrTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSkxFdEJRVXNzUlVGRGJFTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUlVGRGFrTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETzJkQ1FVTjJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUTFJc1NVRkJTU3hIUVVGSExFdEJRVXNzUTBGQlF6dGhRVU5rTzFGQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZUQ3hGUVVGRkxFTkJRVU1zVjBGQlZ5eERRVUZETEdsQ1FVRnBRaXhGUVVGRkxGRkJRVkVzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xRkJRMmhGTEU5QlFVOHNSVUZCUlN4RFFVRkRPMGxCUTFvc1EwRkJRenREUVVGQk8wRkJSVVFzVTBGQlV5eHBRa0ZCYVVJc1EwRkJReXhMUVVGVkxFVkJRVVVzVFVGQlZ5eEZRVUZGTEV0QlFXTTdTVUZEYUVVc1RVRkJUU3hKUVVGSkxFZEJRVWNzVFVGQlRTeERRVUZETEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03U1VGRE5VTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNCRExFMUJRVTBzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF6dEpRVU51UXl4TFFVRkxMRTFCUVUwc1NVRkJTU3hKUVVGSkxFdEJRVXNzUlVGQlJUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1IwRkRVaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRha1FzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtjc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF6dFpRVU5XTEU5QlFVOHNTVUZCU1N4RFFVRkRPMHRCUTJZN1NVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5rTEVOQlFVTTdRVUZGUkN4VFFVRlRMRmRCUVZjc1EwRkJReXhGUVVGM1FpeEZRVU16UXl4TFFVRmhMRVZCUVVVc1MwRkJZU3hGUVVGRkxGRkJRWGRDTEVWQlFVVXNVVUZCYTBJc1JVRkJSU3hsUVVGMVFpeEZRVUZGTEU5QlFXVTdTVUZEY0Vnc1RVRkJUU3hMUVVGTExFZEJRVWNzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXp0SlFVTTNRaXhOUVVGTkxFMUJRVTBzUjBGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRTRRaXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEyNUZMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRTJRaXhEUVVGRE8wbEJRMmhGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhUUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVNNVF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1UwRkJWU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRPVU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1VVRkRja01zVFVGQlRTeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkdMRTFCUVUwc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOdVJpeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGVFTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzVFVGQlRTeEZRVUZGTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXhReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJRenRSUVVNeFJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zUjBGQlF5eGxRVUZsTEVOQlFVTTdVVUZETjBZc1IwRkJSeXhEUVVGRExGZEJRVmNzUjBGQlJ5eFJRVUZSTEV0QlFVc3NTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJRenRSUVVNNVF5eEhRVUZITEVOQlFVTXNVMEZCVXl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM1pGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE1VTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU5zUWp0SlFVTkVMRTlCUVU4c1MwRkJTeXhEUVVGRE8wRkJRMllzUTBGQlF6dEJRVVZFTEZOQlFWTXNWMEZCVnl4RFFVTnNRaXhGUVVGWkxFVkJRMW9zUlVGQldTeEZRVU5hTEVkQlFXTXNSVUZEWkN4VlFVRnhRaXhGUVVOeVFpeFJRVUZyUWl4RlFVTnNRaXhQUVVGbExFVkJRMllzUzBGQllUdEpRVU5pTEUxQlFVMHNTMEZCU3l4SFFVRlpMRVZCUVVVc1EwRkJRenRKUVVNeFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRSUVVOc1F5eE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGJrSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyNUNMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4UlFVRlJMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU03UzBGRGVFVTdTVUZEUkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGJFUXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM0pHTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOeVJpeFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhWUVVGVkxFTkJRVU03VTBGRGNFTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4wUnl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXk5RUxFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFWTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEY2tVc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkRiRVFzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03U1VGRGJFUXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVVVzUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRPMGxCUTNoRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkZMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF6dEpRVU40UXl4UFFVRlBMRVZCUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlF5eERRVUZETzBGQlF6RkNMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRV2RDTEc5Q1FVRnZRaXhEUVVOMFF5eEhRVUZYTEVWQlExZ3NUVUZCYVVJc1JVRkRha0lzUzBGQmJVSXNSVUZEYmtJc1RVRkJiVUlzUlVGRGJrSXNUMEZCYlVVN08xRkJSM0pGTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRMnBETEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETVVJc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU5xUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkZMRU5CUVVNN1UwRkRkRVE3VVVGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0SlFVTm9RaXhEUVVGRE8wTkJRVUU3UVVGRlJDeE5RVUZOTEZWQlFWVXNhVU5CUVdsRExFTkJRVU1zUjBGQlZ5eEZRVUZGTEZOQlFXbENMRVZCUVVVc1RVRkJiVUk3U1VGRmJrY3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGFFTXNUVUZCVFN4aFFVRmhMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRM3BDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJRenRaUVVNNVFpeGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMSGxDUVVGNVFpeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNXVUZCV1N4RlFVRkZMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTjRSanRKUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUhzZ1RXRjBjbWw0SUgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIc2daMlYwVTJsdGFXeGhjbWwwZVVaeWIyMUVhWE4wWVc1alpTQjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM05wYldsc1lYSnBkSGt0YldWMGNtbGpjeWM3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1NVeHBibVVnZTF4dUlDQnBaRG9nYm5WdFltVnlPMXh1SUNCdGIyeHpPaUJ1ZFcxaVpYSmJYVHRjYmlBZ2MyVnNaV04wWldRNklHSnZiMnhsWVc0N1hHNGdJR0U2SUc1MWJXSmxjbHRkT3lBdkx5QmJlQ3dnZVYxY2JpQWdZam9nYm5WdFltVnlXMTA3SUM4dklGdDRMQ0I1WFZ4dWZWeHVYRzVwYm5SbGNtWmhZMlVnU1ZKbGJtUmxjbVZrVEdsdVpYTWdlMXh1SUNCc2FXNWxjem9nU1V4cGJtVmJYVHRjYmlBZ2JHbHVaWE5FWmpvZ1JFY3VSR0YwWVVaeVlXMWxPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbFRaWEYxWlc1alpWTndZV05sVUdGeVlXMXpJSHRjYmlBZ0lDQnpaWEZEYjJ3NklFUkhMa052YkhWdGJpeGNiaUFnSUNCdFpYUm9iMlJPWVcxbE9pQnpkSEpwYm1jc1hHNGdJQ0FnYzJsdGFXeGhjbWwwZVUxbGRISnBZem9nYzNSeWFXNW5MRnh1SUNBZ0lHVnRZbVZrUVhobGMwNWhiV1Z6T2lCemRISnBibWRiWFN4Y2JpQWdJQ0J2Y0hScGIyNXpQem9nWVc1NVhHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnU1ZObGNYVmxibU5sVTNCaFkyVlNaWE4xYkhRZ2UxeHVJQ0FnSUdScGMzUmhibU5sT2lCTllYUnlhWGc3WEc0Z0lDQWdZMjl2Y21ScGJtRjBaWE02SUVSSExrTnZiSFZ0Ymt4cGMzUTdYRzRnSUgxY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpSSEpoZDFSdmIyeDBhWEJRWVhKaGJYTWdlMXh1SUNCMGIyOXNkR2x3Y3pvZ1lXNTVMRnh1SUNCc2FXNWxPaUJKVEdsdVpTeGNiaUFnWkdZNklFUkhMa1JoZEdGR2NtRnRaU3hjYmlBZ2MyVnhRMjlzT2lCRVJ5NURiMngxYlc0c1hHNGdJR0ZqZEdsMmFYUjVPaUJFUnk1RGIyeDFiVzRzWEc0Z0lIZzZJRzUxYldKbGNpeGNiaUFnZVRvZ2JuVnRZbVZ5WEc1OVhHNWNibXhsZENCNmIyOXRJRDBnWm1Gc2MyVTdYRzVjYmk4dklGTmxZWEpqYUdWeklHWnZjaUJoWTNScGRtbDBlU0JqYkdsbVpuTWdhVzRnWVNCamFHVnRhV05oYkNCa1lYUmhjMlYwSUdKNUlITmxiR1ZqZEdWa0lHTjFkRzltWmx4dVpYaHdiM0owSUdGemVXNWpJR1oxYm1OMGFXOXVJR2RsZEVGamRHbDJhWFI1UTJ4cFptWnpLRnh1SUNBZ0lHUm1PaUJFUnk1RVlYUmhSbkpoYldVc0lGeHVJQ0FnSUhObGNVTnZiRG9nUkVjdVEyOXNkVzF1TENCY2JpQWdJQ0JoZUdWelRtRnRaWE02SUhOMGNtbHVaMXRkTEZ4dUlDQWdJSE5qWVhSMFpYSlVhWFJzWlRvZ2MzUnlhVzVuTEZ4dUlDQWdJR0ZqZEdsMmFYUnBaWE02SUVSSExrTnZiSFZ0Yml3Z1hHNGdJQ0FnYzJsdGFXeGhjbWwwZVRvZ2JuVnRZbVZ5TEZ4dUlDQWdJSE5wYldsc1lYSnBkSGxOWlhSeWFXTTZJSE4wY21sdVp5d2dYRzRnSUNBZ2JXVjBhRzlrVG1GdFpUb2djM1J5YVc1bkxDQmNiaUFnSUNCelpXMVVlWEJsT2lCemRISnBibWNzWEc0Z0lDQWdkVzVwZEhNNklITjBjbWx1Wnl4Y2JpQWdJQ0J6WlhGVGNHRmpaVVoxYm1NNklDaHdZWEpoYlhNNklFbFRaWEYxWlc1alpWTndZV05sVUdGeVlXMXpLU0E5UGlCUWNtOXRhWE5sUEVsVFpYRjFaVzVqWlZOd1lXTmxVbVZ6ZFd4MFBpeGNiaUFnSUNCemFXMUdkVzVqT2lBb1kyOXNPaUJFUnk1RGIyeDFiVzRzSUcxdmJEb2djM1J5YVc1bktTQTlQaUJRY205dGFYTmxQRVJITGtOdmJIVnRiaUI4SUc1MWJHdytMRnh1SUNBZ0lIUnZiMngwYVhCRWNtRjNSblZ1WXpvZ0tIQmhjbUZ0Y3pvZ1NVUnlZWGRVYjI5c2RHbHdVR0Z5WVcxektTQTlQaUIyYjJsa0xGeHVJQ0FnSUc5d2RHbHZibk0vT2lCaGJua3BJRG9nVUhKdmJXbHpaVHhFUnk1V2FXVjNaWEkrSUh0Y2JpQWdZMjl1YzNRZ1lYVjBiMjFoZEdsalUybHRhV3hoY21sMGVVeHBiV2wwSUQwZ1ptRnNjMlU3WEc0Z0lHTnZibk4wSUUxSlRsOVRTVTFKVEVGU1NWUlpJRDBnT0RBN1hHNWNiaUFnWTI5dWMzUWdhVzVwZEdsaGJGTnBiV2xzWVhKcGRIbE1hVzFwZENBOUlHRjFkRzl0WVhScFkxTnBiV2xzWVhKcGRIbE1hVzFwZENBL0lFMUpUbDlUU1UxSlRFRlNTVlJaSURvZ2MybHRhV3hoY21sMGVTQXZJREV3TUR0Y2JseHVJQ0JqYjI1emRDQjdaR2x6ZEdGdVkyVXNJR052YjNKa2FXNWhkR1Z6ZlNBOUlHRjNZV2wwSUhObGNWTndZV05sUm5WdVl5aDdYRzRnSUNBZ2MyVnhRMjlzT2lCelpYRkRiMndzWEc0Z0lDQWdiV1YwYUc5a1RtRnRaVG9nYldWMGFHOWtUbUZ0WlN4Y2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJ6YVcxcGJHRnlhWFI1VFdWMGNtbGpMRnh1SUNBZ0lHVnRZbVZrUVhobGMwNWhiV1Z6T2lCaGVHVnpUbUZ0WlhNc1hHNGdJQ0FnYjNCMGFXOXVjem9nYjNCMGFXOXVjMXh1SUNCOUtUdGNibHh1SUNCbWIzSWdLR052Ym5OMElHTnZiQ0J2WmlCamIyOXlaR2x1WVhSbGN5bGNiaUFnSUNCa1ppNWpiMngxYlc1ekxtRmtaQ2hqYjJ3cE8xeHVYRzRnSUdOdmJuTjBJR1JtVTJWeElEMGdSRWN1UkdGMFlVWnlZVzFsTG1aeWIyMURiMngxYlc1ektGdEVSeTVEYjJ4MWJXNHVabkp2YlV4cGMzUW9KM04wY21sdVp5Y3NJQ2R6WlhFbkxDQnpaWEZEYjJ3dWRHOU1hWE4wS0NrcFhTazdYRzRnSUdOdmJuTjBJR1JwYlNBOUlITmxjVU52YkM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUhOcGJVRnljam9nUkVjdVEyOXNkVzF1VzEwZ1BTQkJjbkpoZVNoa2FXMGdMU0F4S1R0Y2JseHVJQ0JwWmlBb0lXUnBjM1JoYm1ObEtWeHVJQ0FnSUdGM1lXbDBJR2RsZEZOcGJXbHNZWEpwZEdsbGMwMWhjbWw0S0dScGJTd2djMlZ4UTI5c0xDQmtabE5sY1N3Z2MybHRRWEp5TENCemFXMUdkVzVqS1R0Y2JpQWdaV3h6WlZ4dUlDQWdJR2RsZEZOcGJXbHNZWEpwZEdsbGMwMWhjbWw0Um5KdmJVUnBjM1JoYm1ObGN5aGthVzBzSUdScGMzUmhibU5sTENCemFXMUJjbklwTzF4dVhHNGdJR052Ym5OMElHOXdkRk5wYldsc1lYSnBkSGxNYVcxcGRDQTlJR2x1YVhScFlXeFRhVzFwYkdGeWFYUjVUR2x0YVhRN1hHNWNiaUFnWTI5dWMzUWdjMmx0Vm1Gc2N6b2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdZMjl1YzNRZ2MyRnNhVlpoYkhNNklHNTFiV0psY2x0ZElEMGdXMTA3WEc0Z0lHTnZibk4wSUc0eE9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQmpiMjV6ZENCdU1qb2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0FoUFNCa2FXMGdMU0F4T3lBcksya3BJSHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnTURzZ2FpQWhQU0JrYVcwZ0xTQXhJQzBnYVRzZ0t5dHFLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnphVzA2SUc1MWJXSmxjaUE5SUhOcGJVRnljbHRwWFM1blpYUW9haWs3WEc1Y2JpQWdJQ0FnSUdsbUlDaHphVzBnUGowZ2IzQjBVMmx0YVd4aGNtbDBlVXhwYldsMEtTQjdYRzRnSUNBZ0lDQWdJRzR4TG5CMWMyZ29hU2s3WEc0Z0lDQWdJQ0FnSUc0eUxuQjFjMmdvYVNBcklHb2dLeUF4S1R0Y2JpQWdJQ0FnSUNBZ2MybHRWbUZzY3k1d2RYTm9LSE5wYlNrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdScFptWWdQU0JOWVhSb0xtRmljeWhoWTNScGRtbDBhV1Z6TG1kbGRDaHBLU0F0SUdGamRHbDJhWFJwWlhNdVoyVjBLR2tnS3lCcUlDc2dNU2twTzF4dUlDQWdJQ0FnSUNCcFppQW9jMmx0SUNFOUlERXBYRzRnSUNBZ0lDQWdJQ0FnYzJGc2FWWmhiSE11Y0hWemFDaGthV1ptSUM4Z0tERWdMU0J6YVcwcEtUdGNiaUFnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lITmhiR2xXWVd4ekxuQjFjMmdvU1c1bWFXNXBkSGtwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdOdmJuTjBJSE5oYkdsV1lXeHpWMmwwYUc5MWRFbHVabWx1YVhSNUlEMGdjMkZzYVZaaGJITXVabWxzZEdWeUtHbDBJRDArSUdsMElDRTlQU0JKYm1acGJtbDBlU2s3WEc0Z0lHTnZibk4wSUhOaGJHbE5hVzRnUFNCTllYUm9MbTFwYmlndUxpNXpZV3hwVm1Gc2MxZHBkR2h2ZFhSSmJtWnBibWwwZVNrN1hHNGdJR052Ym5OMElITmhiR2xOWVhnZ1BTQk5ZWFJvTG0xaGVDZ3VMaTV6WVd4cFZtRnNjMWRwZEdodmRYUkpibVpwYm1sMGVTazdYRzRnSUdOdmJuTjBJSE5oYkdsUGNHRmphWFI1UTI5bFppQTlJREF1T0M4b2MyRnNhVTFoZUNBdElITmhiR2xOYVc0cE8xeHVYRzVjYmlBZ1kyOXVjM1FnYm1WcFoyaGliM1Z5YzBOdmRXNTBJRDBnYm1WM0lFRnljbUY1S0dScGJTa3VabWxzYkNnd0tUdGNiaUFnWTI5dWMzUWdjMmx0YVd4aGNtbDBlVU52ZFc1MElEMGdibVYzSUVGeWNtRjVLR1JwYlNrdVptbHNiQ2d3S1R0Y2JpQWdZMjl1YzNRZ2MyRnNhVU52ZFc1MElEMGdibVYzSUVGeWNtRjVLR1JwYlNrdVptbHNiQ2d3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0FoUFNCdU1TNXNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJRzVsYVdkb1ltOTFjbk5EYjNWdWRGdHVNVnRwWFYwZ0t6MGdNVHRjYmlBZ0lDQnVaV2xuYUdKdmRYSnpRMjkxYm5SYmJqSmJhVjFkSUNzOUlERTdYRzRnSUNBZ2MybHRhV3hoY21sMGVVTnZkVzUwVzI0eFcybGRYU0FyUFNCemFXMVdZV3h6VzJsZE8xeHVJQ0FnSUhOcGJXbHNZWEpwZEhsRGIzVnVkRnR1TWx0cFhWMGdLejBnYzJsdFZtRnNjMXRwWFR0Y2JpQWdJQ0JwWmlBb2MyRnNhVlpoYkhOYmFWMGdJVDBnU1c1bWFXNXBkSGtwSUh0Y2JpQWdJQ0FnSUdsbUlDaGhZM1JwZG1sMGFXVnpMbWRsZENodU1WdHBYU2tnUGlCaFkzUnBkbWwwYVdWekxtZGxkQ2h1TWx0cFhTa3BYRzRnSUNBZ0lDQWdJSE5oYkdsRGIzVnVkRnR1TVZ0cFhWMGdLejBnYzJGc2FWWmhiSE5iYVYwN1hHNGdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJSE5oYkdsRGIzVnVkRnR1TWx0cFhWMGdLejBnYzJGc2FWWmhiSE5iYVYwN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ1kyOXVjM1FnYzJGc2FUb2dSRWN1UTI5c2RXMXVJRDBnUkVjdVEyOXNkVzF1TG1aeWIyMU1hWE4wS0Nka2IzVmliR1VuTENCZ2MyRnNhVjhrZTJGNFpYTk9ZVzFsYzFzd1hTNXpkV0p6ZEhKcGJtY29ZWGhsYzA1aGJXVnpXekJkTG14aGMzUkpibVJsZUU5bUtDZGZKeWtwZldBc0lITmhiR2xEYjNWdWRDazdYRzVjYmlBZ1pHWXVZMjlzZFcxdWN5NWhaR1FvYzJGc2FTazdYRzVjYmlBZ1kyOXVjM1FnZG1sbGR5QTlJR2R5YjJzdWMyaGxiR3d1WjJWMFZHRmliR1ZXYVdWM0tHUm1MbTVoYldVcE8xeHVJQ0JqYjI1emRDQnpjQ0E5SUhacFpYY3VZV1JrVm1sbGQyVnlLRVJITGxacFpYZGxjaTV6WTJGMGRHVnlVR3h2ZENoa1ppd2dlMXh1SUNBZ0lIaERiMngxYlc1T1lXMWxPaUJoZUdWelRtRnRaWE5iTUYwc1hHNGdJQ0FnZVVOdmJIVnRiazVoYldVNklHRjRaWE5PWVcxbGMxc3hYU3hjYmlBZ0lDQnphWHBsT2lCellXeHBMbTVoYldVc1hHNGdJQ0FnWTI5c2IzSTZJR0ZqZEdsMmFYUnBaWE11Ym1GdFpTeGNiaUFnSUNCemFHOTNXRk5sYkdWamRHOXlPaUJtWVd4elpTeGNiaUFnSUNCemFHOTNXVk5sYkdWamRHOXlPaUJtWVd4elpTeGNiaUFnSUNCemFHOTNVMmw2WlZObGJHVmpkRzl5T2lCbVlXeHpaU3hjYmlBZ0lDQnphRzkzUTI5c2IzSlRaV3hsWTNSdmNqb2dabUZzYzJVc1hHNGdJQ0FnYldGeWEyVnlUV2x1VTJsNlpUb2dOU3hjYmlBZ0lDQnRZWEpyWlhKTllYaFRhWHBsT2lBeU5TeGNiaUFnSUNCMGFYUnNaVG9nYzJOaGRIUmxjbFJwZEd4bFhHNGdJSDBwS1NCaGN5QkVSeTVUWTJGMGRHVnlVR3h2ZEZacFpYZGxjanRjYmx4dUlDQmpiMjV6ZENCallXNTJZWE1nUFNBb2MzQXVaMlYwU1c1bWJ5Z3BJR0Z6SUdGdWVTbGJKMk5oYm5aaGN5ZGRPMXh1SUNCamIyNXpkQ0JzYVc1bGMxSmxjeUE5SUdOeVpXRjBaVXhwYm1WektHNHhMQ0J1TWl3Z2MyVnhRMjlzTENCaFkzUnBkbWwwYVdWekxDQnpZV3hwVm1Gc2N5d2djMlZ0Vkhsd1pTd2dkVzVwZEhNcE8xeHVJQ0JqYjI1emRDQjBiMjlzZEdsd2N6b2dZVzU1SUQwZ2UzMDdYRzVjYmlBZ2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1dmJrTjFjbkpsYm5SRFpXeHNRMmhoYm1kbFpDNXpkV0p6WTNKcFltVW9LQ2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR04xY25KbGJuUk5iMnhKWkhnZ1BTQnNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SRGIyd2dKaVlnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTVqZFhKeVpXNTBRMjlzTG01aGJXVWdQVDA5SUNjeVgzTmxjU2NnUHlBeElEb2dNRHRjYmlBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1WTNWeWNtVnVkRkp2ZDBsa2VDQTlYRzRnSUNBZ0lDQnNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SU2IzZEpaSGdnSVQwOUlDMHhJRDhnYkdsdVpYTlNaWE11YkdsdVpYTmJiR2x1WlhOU1pYTXViR2x1WlhORVppNWpkWEp5Wlc1MFVtOTNTV1I0WFM1dGIyeHpXMk4xY25KbGJuUk5iMnhKWkhoZElEb2dMVEU3WEc0Z0lDQWdjM0F1WkdGMFlVWnlZVzFsTG5ObGJHVmpkR2x2Ymk1elpYUW9NQ3dnSVd4cGJtVnpVbVZ6TG14cGJtVnpXekJkTG5ObGJHVmpkR1ZrS1R0Y2JpQWdJQ0J6Y0M1a1lYUmhSbkpoYldVdWMyVnNaV04wYVc5dUxuTmxkQ2d3TENCc2FXNWxjMUpsY3k1c2FXNWxjMXN3WFM1elpXeGxZM1JsWkNrN1hHNGdJQ0FnYkdsdVpYTkVaa2R5YVdRdWFXNTJZV3hwWkdGMFpTZ3BPMXh1SUNCOUtUdGNibHh1SUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG05dVUyVnNaV04wYVc5dVEyaGhibWRsWkM1emRXSnpZM0pwWW1Vb0tGOHBJRDArSUh0Y2JpQWdJQ0JwWmlBb2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1dGIzVnpaVTkyWlhKU2IzZEpaSGdnSVQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnNhVzVsSUQwZ2JHbHVaWE5TWlhNdWJHbHVaWE5iYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV0YjNWelpVOTJaWEpTYjNkSlpIaGRPMXh1SUNBZ0lDQWdiR2x1WlM1elpXeGxZM1JsWkNBOUlDRnNhVzVsTG5ObGJHVmpkR1ZrTzF4dUlDQWdJQ0FnYVdZZ0tDRnNhVzVsTG5ObGJHVmpkR1ZrS1Z4dUlDQWdJQ0FnSUNCa1ppNXpaV3hsWTNScGIyNHVjMlYwUVd4c0tHWmhiSE5sS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdiR2x1WlhOU1pYTXViR2x1WlhNdVptOXlSV0ZqYUNnb2JDa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tHd3VjMlZzWldOMFpXUXBYRzRnSUNBZ0lDQWdJR3d1Ylc5c2N5NW1iM0pGWVdOb0tDaHRLU0E5UGlCa1ppNXpaV3hsWTNScGIyNHVjMlYwS0cwc0lIUnlkV1VwS1R0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0JzYVc1bGMwUm1SM0pwWkM1cGJuWmhiR2xrWVhSbEtDazdYRzRnSUgwcE8xeHVYRzRnSUdOdmJuTjBJR3hwYm1WelJHWkhjbWxrSUQwZ2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1d2JHOTBMbWR5YVdRb0tTNXpiM0owS0ZzbllXTjBYMlJwWm1ZblhTd2dXMlpoYkhObFhTazdYRzVjYmlBZ2JHbHVaWE5FWmtkeWFXUXViMjVEWld4c1EyeHBZMnN1YzNWaWMyTnlhV0psS0NncElEMCtJSHRjYmlBZ0lDQjZiMjl0SUQwZ2RISjFaVHRjYmlBZ2ZTazdYRzVjYmlBZ1kyOXVjM1FnYkdsemRFTnNhV1ptYzB4cGJtc2dQU0IxYVM1aWRYUjBiMjRvWUNSN2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1eWIzZERiM1Z1ZEgwZ1kyeHBabVp6WUN3Z0tDa2dQVDRnZTF4dUlDQWdJR052Ym5OMElHTnNhV1ptYzBScFlXeHZaeUE5SUhWcExtUnBZV3h2WnloN2RHbDBiR1U2SUNkQlkzUnBkbWwwZVNCamJHbG1abk1uZlNsY2JpQWdJQ0FnSUM1aFpHUW9iR2x1WlhORVprZHlhV1F1Y205dmRDbGNiaUFnSUNBZ0lDNXphRzkzS0NrN1hHNGdJQ0FnWTJ4cFptWnpSR2xoYkc5bkxuSnZiM1F1YVdRZ1BTQW5ZMnhwWm1aelgyUnBZV3h2WnljN1hHNGdJSDBwTzF4dUlDQnNhWE4wUTJ4cFptWnpUR2x1YXk1emRIbHNaUzV3YjNOcGRHbHZiaUE5SUNkaFluTnZiSFYwWlNjN1hHNGdJR3hwYzNSRGJHbG1abk5NYVc1ckxuTjBlV3hsTG5SdmNDQTlJQ2N4TUhCNEp6dGNiaUFnYkdsemRFTnNhV1ptYzB4cGJtc3VjM1I1YkdVdWNtbG5hSFFnUFNBbk1UQndlQ2M3WEc0Z0lITndMbkp2YjNRdVlYQndaVzVrS0d4cGMzUkRiR2xtWm5OTWFXNXJLVHRjYmx4dUlDQnNaWFFnZEdsdFpYSTZJRTV2WkdWS1V5NVVhVzFsYjNWME8xeHVJQ0JqWVc1MllYTXVZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ25iVzkxYzJWdGIzWmxKeXdnWm5WdVkzUnBiMjRnS0dWMlpXNTBPaUJOYjNWelpVVjJaVzUwS1NCN1hHNGdJQ0FnWTJ4bFlYSlVhVzFsYjNWMEtIUnBiV1Z5S1R0Y2JpQWdJQ0IwYVcxbGNpQTlJR2RzYjJKaGJDNXpaWFJVYVcxbGIzVjBLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR3hwYm1VZ1BTQmphR1ZqYTBOMWNuTnZjazl1VEdsdVpTaGxkbVZ1ZEN3Z1kyRnVkbUZ6TENCc2FXNWxjMUpsY3k1c2FXNWxjeWs3WEc0Z0lDQWdJQ0JwWmlBb2JHbHVaU0FtSmlCa1ppNXRiM1Z6WlU5MlpYSlNiM2RKWkhnZ1BUMDlJQzB4S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doZEc5dmJIUnBjSE5iYkdsdVpTNXBaRjBwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCa2NtRjNWRzl2YkhScGNGQmhjbUZ0Y3lBOUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSdmIyeDBhWEJ6T2lCMGIyOXNkR2x3Y3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hwYm1VNklHeHBibVVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaam9nWkdZc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6WlhGRGIydzZJSE5sY1VOdmJDeGNiaUFnSUNBZ0lDQWdJQ0FnSUdGamRHbDJhWFI1T2lCaFkzUnBkbWwwYVdWekxGeHVJQ0FnSUNBZ0lDQWdJQ0FnZURvZ1pYWmxiblF1WTJ4cFpXNTBXQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIazZJR1YyWlc1MExtTnNhV1Z1ZEZsY2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZEc5dmJIUnBjRVJ5WVhkR2RXNWpLR1J5WVhkVWIyOXNkR2x3VUdGeVlXMXpLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCMWFTNTBiMjlzZEdsd0xuTm9iM2NvZEc5dmJIUnBjSE5iYkdsdVpTNXBaRjBzSUdWMlpXNTBMbU5zYVdWdWRGZ3NJR1YyWlc1MExtTnNhV1Z1ZEZrcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwc0lERXdNREFwTzF4dUlDQjlLVHRjYmx4dUlDQmpZVzUyWVhNdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lnbmJXOTFjMlZrYjNkdUp5d2dablZ1WTNScGIyNG9aWFpsYm5RNklFMXZkWE5sUlhabGJuUXBJSHRjYmlBZ0lDQmpiMjV6ZENCc2FXNWxJRDBnWTJobFkydERkWEp6YjNKUGJreHBibVVvWlhabGJuUXNJR05oYm5aaGN5d2diR2x1WlhOU1pYTXViR2x1WlhNcE8xeHVJQ0FnSUdsbUlDaHNhVzVsSUNZbUlHUm1MbTF2ZFhObFQzWmxjbEp2ZDBsa2VDQTlQVDBnTFRFcElIdGNiaUFnSUNBZ0lHbG1JQ2hsZG1WdWRDNWpkSEpzUzJWNUtTQjdYRzRnSUNBZ0lDQWdJR3hwYm1VdWMyVnNaV04wWldRZ1BTQWhiR2x1WlM1elpXeGxZM1JsWkR0Y2JpQWdJQ0FnSUNBZ2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1elpXeGxZM1JwYjI0dWMyVjBLR3hwYm1VdWFXUXNJR3hwYm1VdWMyVnNaV04wWldRcE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNnaGJHbHVaUzV6Wld4bFkzUmxaQ2xjYmlBZ0lDQWdJQ0FnSUNCa1ppNXpaV3hsWTNScGIyNHVjMlYwUVd4c0tHWmhiSE5sS1R0Y2JseHVJQ0FnSUNBZ0lDQnNhVzVsYzFKbGN5NXNhVzVsY3k1bWIzSkZZV05vS0Noc0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR3d1YzJWc1pXTjBaV1FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnNMbTF2YkhNdVptOXlSV0ZqYUNnb2JTa2dQVDRnWkdZdWMyVnNaV04wYVc5dUxuTmxkQ2h0TENCMGNuVmxLU2s3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR3hwYm1WelVtVnpMbXhwYm1WelJHWXVZM1Z5Y21WdWRGSnZkMGxrZUNBaFBUMGdiR2x1WlM1cFpDa2dlMXh1SUNBZ0lDQWdJQ0FnSUd4cGJtVnpVbVZ6TG14cGJtVnpSR1l1WTNWeWNtVnVkRkp2ZDBsa2VDQTlJR3hwYm1VdWFXUTdYRzRnSUNBZ0lDQWdJQ0FnWkdZdVkzVnljbVZ1ZEZKdmQwbGtlQ0E5SUd4cGJtVXViVzlzYzFzd1hUdGNiaUFnSUNBZ0lDQWdJQ0JrWmk1elpXeGxZM1JwYjI0dWMyVjBLREFzSUNGc2FXNWxjMUpsY3k1c2FXNWxjMXN3WFM1elpXeGxZM1JsWkNrN1hHNGdJQ0FnSUNBZ0lDQWdaR1l1YzJWc1pXTjBhVzl1TG5ObGRDZ3dMQ0JzYVc1bGMxSmxjeTVzYVc1bGMxc3dYUzV6Wld4bFkzUmxaQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMHBPMXh1WEc0Z0lITndMbTl1UlhabGJuUW9KMlEwTFdKbFptOXlaUzFrY21GM0xYTmpaVzVsSnlsY2JpQWdJQ0F1YzNWaWMyTnlhV0psS0NoZktTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQnNhVzVsY3lBOUlISmxibVJsY2t4cGJtVnpLSE53TEZ4dUlDQWdJQ0FnSUNCaGVHVnpUbUZ0WlhOYk1GMHNJR0Y0WlhOT1lXMWxjMXN4WFN3Z2JHbHVaWE5TWlhNc0lITmhiR2xXWVd4ekxDQnpZV3hwVDNCaFkybDBlVU52WldZc0lITmhiR2xOYVc0cE8xeHVJQ0FnSUNBZ2FXWWdLSHB2YjIwcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1kzVnljbVZ1ZEV4cGJtVWdQU0JzYVc1bGMxdHNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SU2IzZEpaSGhkTzF4dUlDQWdJQ0FnSUNCelpYUlVhVzFsYjNWMEtDZ3BQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhneElEMGdjM0F1WkdGMFlVWnlZVzFsTG1kbGRDaGhlR1Z6VG1GdFpYTmJNRjBzSUdOMWNuSmxiblJNYVc1bExtMXZiSE5iTUYwcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIa3hJRDBnYzNBdVpHRjBZVVp5WVcxbExtZGxkQ2hoZUdWelRtRnRaWE5iTVYwc0lHTjFjbkpsYm5STWFXNWxMbTF2YkhOYk1GMHBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSGd5SUQwZ2MzQXVaR0YwWVVaeVlXMWxMbWRsZENoaGVHVnpUbUZ0WlhOYk1GMHNJR04xY25KbGJuUk1hVzVsTG0xdmJITmJNVjBwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhreUlEMGdjM0F1WkdGMFlVWnlZVzFsTG1kbGRDaGhlR1Z6VG1GdFpYTmJNVjBzSUdOMWNuSmxiblJNYVc1bExtMXZiSE5iTVYwcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIaEVhV1ptSUQwZ1RXRjBhQzVoWW5Nb2VERWdMU0I0TWlrcU5UdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQjVSR2xtWmlBOUlFMWhkR2d1WVdKektIa3hJQzBnZVRJcEtqVTdYRzRnSUNBZ0lDQWdJQ0FnYzNBdWVtOXZiU2g0TVNBOElIZ3lJRDhnZURFZ0xTQjRSR2xtWmlBNklIZ3lJQzBnZUVScFptWXNYRzRnSUNBZ0lDQWdJQ0FnSUNCNU1TQStJSGt5SUQ4Z2VURWdLeUI1UkdsbVppQTZJSGt5SUNBcklIbEVhV1ptTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdlREVnUGlCNE1pQS9JSGd4SUNzZ2VFUnBabVlnT2lCNE1pQXJJSGhFYVdabUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnZVRFZ1BDQjVNaUEvSUhreElDMGdlVVJwWm1ZZ09pQjVNaUF0SUhsRWFXWm1LVHRjYmlBZ0lDQWdJQ0FnZlN3Z016QXdLVHRjYmlBZ0lDQWdJQ0FnZW05dmJTQTlJR1poYkhObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzRnSUhOd0xtRmtaRkJ5YjNCbGNuUjVLQ2R6YVcxcGJHRnlhWFI1VEdsdGFYUW5MQ0FuWkc5MVlteGxKeXdnYjNCMFUybHRhV3hoY21sMGVVeHBiV2wwS1R0Y2JpQWdjbVYwZFhKdUlITndPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmphR1ZqYTBOMWNuTnZjazl1VEdsdVpTaGxkbVZ1ZERvZ1lXNTVMQ0JqWVc1MllYTTZJR0Z1ZVN3Z2JHbHVaWE02SUVsTWFXNWxXMTBwT2lCSlRHbHVaU0I4SUc1MWJHd2dlMXh1SUNCamIyNXpkQ0J5WldOMElEMGdZMkZ1ZG1GekxtZGxkRUp2ZFc1a2FXNW5RMnhwWlc1MFVtVmpkQ2dwTzF4dUlDQmpiMjV6ZENCNElEMGdaWFpsYm5RdVkyeHBaVzUwV0NBdElISmxZM1F1YkdWbWREdGNiaUFnWTI5dWMzUWdlU0E5SUdWMlpXNTBMbU5zYVdWdWRGa2dMU0J5WldOMExuUnZjRHRjYmlBZ1ptOXlJQ2hqYjI1emRDQnNhVzVsSUc5bUlHeHBibVZ6S1NCN1hHNGdJQ0FnWTI5dWMzUWdaR2x6ZENBOVhHNGdJQ0FnSUNCTllYUm9MbUZpY3loTllYUm9MbWg1Y0c5MEtHeHBibVV1WVZzd1hTQXRJSGdzSUd4cGJtVXVZVnN4WFNBdElIa3BJQ3RjYmlBZ0lDQWdJRTFoZEdndWFIbHdiM1FvYkdsdVpTNWlXekJkSUMwZ2VDd2diR2x1WlM1aVd6RmRJQzBnZVNrZ0xTQk5ZWFJvTG1oNWNHOTBLR3hwYm1VdVlWc3dYU0F0SUd4cGJtVXVZbHN3WFN3Z2JHbHVaUzVoV3pGZElDMGdiR2x1WlM1aVd6RmRLU2s3WEc0Z0lDQWdhV1lnS0dScGMzUWdQQ0F5S1Z4dUlDQWdJQ0FnY21WMGRYSnVJR3hwYm1VN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUc1MWJHdzdYRzU5WEc1Y2JtWjFibU4wYVc5dUlISmxibVJsY2t4cGJtVnpLSE53T2lCRVJ5NVRZMkYwZEdWeVVHeHZkRlpwWlhkbGNpeGNiaUFnZUVGNGFYTTZJSE4wY21sdVp5d2dlVUY0YVhNNklITjBjbWx1Wnl3Z2JHbHVaWE5TWlhNNklFbFNaVzVrWlhKbFpFeHBibVZ6TENCellXeHBWbUZzY3pvZ2JuVnRZbVZ5VzEwc0lITmhiR2xQY0dGamFYUjVRMjlsWmpvZ2JuVnRZbVZ5TENCellXeHBUV2x1T2lCdWRXMWlaWElwT2lCSlRHbHVaU0JiWFNCN1hHNGdJR052Ym5OMElHeHBibVZ6SUQwZ2JHbHVaWE5TWlhNdWJHbHVaWE03WEc0Z0lHTnZibk4wSUdOaGJuWmhjeUE5SUNoemNDNW5aWFJKYm1adktDa2dZWE1nZTF0cGJtUmxlRG9nYzNSeWFXNW5YU0E2SUdGdWVYMHBXeWRqWVc1MllYTW5YVHRjYmlBZ1kyOXVjM1FnWTNSNElEMGdZMkZ1ZG1GekxtZGxkRU52Ym5SbGVIUW9KekprSnlrZ1lYTWdRMkZ1ZG1GelVtVnVaR1Z5YVc1blEyOXVkR1Y0ZERKRU8xeHVJQ0JqYjI1emRDQjRJRDBnYzNBdVpHRjBZVVp5WVcxbElTNWpiMngxYlc1ekxtSjVUbUZ0WlNoNFFYaHBjeWs3WEc0Z0lHTnZibk4wSUhrZ1BTQnpjQzVrWVhSaFJuSmhiV1VoTG1OdmJIVnRibk11WW5sT1lXMWxLSGxCZUdsektUdGNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCc2FXNWxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUdOdmJuTjBJSEJ2YVc1MFJuSnZiU0E5SUhOd0xuZHZjbXhrVkc5VFkzSmxaVzRvZUM1blpYUW9iR2x1WlhOYmFWMHViVzlzYzFzd1hTa3NJSGt1WjJWMEtHeHBibVZ6VzJsZExtMXZiSE5iTUYwcEtUdGNiaUFnSUNCamIyNXpkQ0J3YjJsdWRGUnZJRDBnYzNBdWQyOXliR1JVYjFOamNtVmxiaWg0TG1kbGRDaHNhVzVsYzF0cFhTNXRiMnh6V3pGZEtTd2dlUzVuWlhRb2JHbHVaWE5iYVYwdWJXOXNjMXN4WFNrcE8xeHVJQ0FnSUd4cGJtVnpXMmxkTG1FZ1BTQmJjRzlwYm5SR2NtOXRMbmdzSUhCdmFXNTBSbkp2YlM1NVhUdGNiaUFnSUNCc2FXNWxjMXRwWFM1aUlEMGdXM0J2YVc1MFZHOHVlQ3dnY0c5cGJuUlVieTU1WFR0Y2JpQWdJQ0JqYjI1emRDQnNhVzVsSUQwZ2JtVjNJRkJoZEdneVJDZ3BPMXh1SUNBZ0lHeHBibVV1Ylc5MlpWUnZLR3hwYm1WelcybGRMbUZiTUYwc0lHeHBibVZ6VzJsZExtRmJNVjBwTzF4dUlDQWdJR052Ym5OMElHTnZiRzl5SUQwZ2JHbHVaWE5iYVYwdWMyVnNaV04wWldRZ1B5QW5NalUxTERJMU5Td3dKeUE2SUNjd0xERXlPQ3d3Snp0Y2JpQWdJQ0JqYjI1emRDQnZjR0ZqYVhSNUlEMGdjMkZzYVZaaGJITmJhVjBnUFQwOUlFbHVabWx1YVhSNUlEOGdNU0E2SURBdU1pQXJJQ2h6WVd4cFZtRnNjMXRwWFNBdElITmhiR2xOYVc0cEtuTmhiR2xQY0dGamFYUjVRMjlsWmp0Y2JpQWdJQ0JqZEhndWMzUnliMnRsVTNSNWJHVWdQU0JnY21kaVlTZ2tlMk52Ykc5eWZTd2tlMjl3WVdOcGRIbDlLV0E3WEc0Z0lDQWdZM1I0TG14cGJtVlhhV1IwYUNBOUlHeHBibVZ6VzJsZExtbGtJRDA5UFNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG1OMWNuSmxiblJTYjNkSlpIZ2dQeUF6SURvZ01UdGNiaUFnSUNCc2FXNWxMbXhwYm1WVWJ5aHNhVzVsYzF0cFhTNWlXekJkTENCc2FXNWxjMXRwWFM1aVd6RmRLVHRjYmlBZ0lDQmpkSGd1YzNSeWIydGxLR3hwYm1VcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCc2FXNWxjenRjYm4xY2JseHVablZ1WTNScGIyNGdZM0psWVhSbFRHbHVaWE1vWEc0Z0lHNHhPaUJ1ZFcxaVpYSmJYU3dnWEc0Z0lHNHlPaUJ1ZFcxaVpYSmJYU3dnWEc0Z0lITmxjVG9nUkVjdVEyOXNkVzF1TENCY2JpQWdZV04wYVhacGRHbGxjem9nUkVjdVEyOXNkVzF1TENCY2JpQWdjMkZzYVZaaGJITTZJRzUxYldKbGNsdGRMRnh1SUNCelpXMVVlWEJsT2lCemRISnBibWNzWEc0Z0lIVnVhWFJ6T2lCemRISnBibWNwSURvZ1NWSmxibVJsY21Wa1RHbHVaWE1nZTF4dUlDQmpiMjV6ZENCc2FXNWxjem9nU1V4cGJtVmJYU0E5SUZ0ZE8xeHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc0eExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JuVnRNU0E5SUc0eFcybGRPMXh1SUNBZ0lHTnZibk4wSUc1MWJUSWdQU0J1TWx0cFhUdGNiaUFnSUNCc2FXNWxjeTV3ZFhOb0tIdHBaRG9nYVN3Z2JXOXNjem9nVzI1MWJURXNJRzUxYlRKZExDQnpaV3hsWTNSbFpEb2dabUZzYzJVc0lHRTZJRnRkTENCaU9pQmJYWDBwTzF4dUlDQjlYRzRnSUdOdmJuTjBJR3hwYm1WelJHWWdQU0JFUnk1RVlYUmhSbkpoYldVdVkzSmxZWFJsS0d4cGJtVnpMbXhsYm1kMGFDazdYRzRnSUd4cGJtVnpSR1l1WTI5c2RXMXVjeTVoWkdST1pYZFRkSEpwYm1jb0p6RmZjMlZ4SnlrdWFXNXBkQ2dvYVRvZ2JuVnRZbVZ5S1NBOVBpQnpaWEV1WjJWMEtHeHBibVZ6VzJsZExtMXZiSE5iTUYwcEtUdGNiaUFnYkdsdVpYTkVaaTVqYjJ4MWJXNXpMbUZrWkU1bGQxTjBjbWx1Wnlnbk1sOXpaWEVuS1M1cGJtbDBLQ2hwT2lCdWRXMWlaWElwSUQwK0lITmxjUzVuWlhRb2JHbHVaWE5iYVYwdWJXOXNjMXN4WFNrcE8xeHVJQ0JzYVc1bGMwUm1MbU52YkhWdGJuTXVZV1JrVG1WM1JteHZZWFFvSjJGamRGOWthV1ptSnlsY2JpQWdJQ0F1YVc1cGRDZ29hVG9nYm5WdFltVnlLU0E5UGlCTllYUm9MbUZpY3loaFkzUnBkbWwwYVdWekxtZGxkQ2hzYVc1bGMxdHBYUzV0YjJ4eld6QmRLU0F0SUdGamRHbDJhWFJwWlhNdVoyVjBLR3hwYm1WelcybGRMbTF2YkhOYk1WMHBLU2s3WEc0Z0lHeHBibVZ6UkdZdVkyOXNkVzF1Y3k1aFpHUk9aWGRKYm5Rb0oyeHBibVZmYVc1a1pYZ25LUzVwYm1sMEtDaHBPaUJ1ZFcxaVpYSXBJRDArSUdrcE8xeHVJQ0JzYVc1bGMwUm1MbU52YkhWdGJuTXVZV1JrVG1WM1JteHZZWFFvSjNOaGJHa25LUzVwYm1sMEtDaHBPaUJ1ZFcxaVpYSXBJRDArSUhOaGJHbFdZV3h6VzJsZEtUdGNiaUFnYkdsdVpYTkVaaTVqYjJ3b0p6RmZjMlZ4SnlraExuUmhaM05iUkVjdVZFRkhVeTVWVGtsVVUxMGdQU0IxYm1sMGN6dGNiaUFnYkdsdVpYTkVaaTVqYjJ3b0p6SmZjMlZ4SnlraExuUmhaM05iUkVjdVZFRkhVeTVWVGtsVVUxMGdQU0IxYm1sMGN6dGNiaUFnYkdsdVpYTkVaaTVqYjJ3b0p6RmZjMlZ4SnlraExuTmxiVlI1Y0dVZ1BTQnpaVzFVZVhCbE8xeHVJQ0JzYVc1bGMwUm1MbU52YkNnbk1sOXpaWEVuS1NFdWMyVnRWSGx3WlNBOUlITmxiVlI1Y0dVN1hHNGdJSEpsZEhWeWJpQjdiR2x1WlhNc0lHeHBibVZ6UkdaOU8xeHVmVnh1WEc1bGVIQnZjblFnWVhONWJtTWdablZ1WTNScGIyNGdaMlYwVTJsdGFXeGhjbWwwYVdWelRXRnlhWGdvWEc0Z0lDQWdaR2x0T2lCdWRXMWlaWElzSUZ4dUlDQWdJSE5sY1VOdmJEb2dSRWN1UTI5c2RXMXVMQ0JjYmlBZ0lDQmtabE5sY1RvZ1JFY3VSR0YwWVVaeVlXMWxMQ0JjYmlBZ0lDQnphVzFCY25JNklFUkhMa052YkhWdGJsdGRMRnh1SUNBZ0lITnBiVVoxYm1NNklDaGpiMnc2SUVSSExrTnZiSFZ0Yml3Z2JXOXNPaUJ6ZEhKcGJtY3BJRDArSUZCeWIyMXBjMlU4UkVjdVEyOXNkVzF1SUh3Z2JuVnNiRDVjYmlBZ0lDQXBYRzRnSURvZ1VISnZiV2x6WlR4RVJ5NURiMngxYlc1YlhUNGdlMXh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBaFBTQmthVzBnTFNBeE95QXJLMmtwSUh0Y2JpQWdJQ0JqYjI1emRDQnRiMndnUFNCelpYRkRiMnd1WjJWMEtHa3BPMXh1SUNBZ0lHUm1VMlZ4TG5KdmQzTXVjbVZ0YjNabFFYUW9NQ3dnTVN3Z1ptRnNjMlVwTzF4dUlDQWdJSE5wYlVGeWNsdHBYU0E5SUNoaGQyRnBkQ0J6YVcxR2RXNWpLR1JtVTJWeExtTnZiQ2duYzJWeEp5a2hMQ0J0YjJ3cEtTRTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlITnBiVUZ5Y2p0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEZOcGJXbHNZWEpwZEdsbGMwMWhjbWw0Um5KdmJVUnBjM1JoYm1ObGN5aGthVzA2SUc1MWJXSmxjaXdnWkdsemRHRnVZMlZ6T2lCTllYUnlhWGdzSUhOcGJVRnljam9nUkVjdVEyOXNkVzF1VzEwcFhHNGdJRG9nUkVjdVEyOXNkVzF1VzEwZ2UxeHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdScGJTQXRJREU3SUNzcmFTa2dlMXh1SUNBZ0lHTnZibk4wSUhOcGJXbHNZWEpwZEhsQmNuSWdQU0JiWFR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ2FTQXJJREU3SUdvZ1BDQmthVzA3SUNzcmFpbGNiaUFnSUNBZ0lITnBiV2xzWVhKcGRIbEJjbkl1Y0hWemFDaG5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHUnBjM1JoYm1ObGMxdHBYVnRxWFNrcE8xeHVJQ0FnSUhOcGJVRnljbHRwWFNBOUlFUkhMa052YkhWdGJpNW1jbTl0Um14dllYUXpNa0Z5Y21GNUtDZHphVzFwYkdGeWFYUjVKeXdnUm14dllYUXpNa0Z5Y21GNUxtWnliMjBvYzJsdGFXeGhjbWwwZVVGeWNpa3BPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnphVzFCY25JN1hHNTlJbDE5IiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpbWVuc2luYWxpdHlSZWR1Y2luZ1dvcmtlcihkYXRhTWV0cmljLCBtZXRob2QsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuL2RpbWVuc2lvbmFsaXR5LXJlZHVjZXInLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIGNvbHVtbkRhdGE6IGRhdGFNZXRyaWMuZGF0YSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICAgICAgbWVhc3VyZTogZGF0YU1ldHJpYy5tZXRyaWMsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgZGlzdGFuY2UsIGVtYmVkZGluZyB9IH0pID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoeyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iZWRkaW5nIH0pO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkdsdFpXNXphVzl1WVd4cGRIa3RjbVZrZFdOcGJtY3RkMjl5YTJWeUxXTnlaV0YwYjNJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUprYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJsdVp5MTNiM0pyWlhJdFkzSmxZWFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRnBRa0VzVFVGQlRTeFZRVUZWTEdsRFFVRnBReXhEUVVGRExGVkJRWE5DTEVWQlFVVXNUVUZCWXl4RlFVTnNSaXhQUVVGaE8wbEJSV3BDTEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJVeXhQUVVGUE8xRkJRMnBETEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETERCQ1FVRXdRaXhGUVVGRkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOb1JpeE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNTVUZCU1R0WlFVTXpRaXhOUVVGTkxFVkJRVVVzVFVGQlRUdFpRVU5rTEU5QlFVOHNSVUZCUlN4VlFVRlZMRU5CUVVNc1RVRkJUVHRaUVVNeFFpeFBRVUZQTEVWQlFVVXNUMEZCVHp0VFFVTnFRaXhEUVVGRExFTkJRVU03VVVGRFNDeE5RVUZOTEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1JVRkJReXhKUVVGSkxFVkJRVVVzUlVGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRk8xbEJRM0JFTEU5QlFVOHNRMEZCUXl4RlFVRkRMRkZCUVZFc1JVRkJSU3hSUVVGUkxFVkJRVVVzVTBGQlV5eEZRVUZGTEZOQlFWTXNSVUZCUXl4RFFVRkRMRU5CUVVNN1VVRkRja1FzUTBGQlF5eERRVUZETzBsQlEwb3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRUQ3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dUV0YwY21sNElIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRXWVd4cFpGUjVjR1Z6ZlNCbWNtOXRJQ2N1TGk5MGVYQmxaQzF0WlhSeWFXTnpKenRjYmx4dUx5b3FYRzRnS2lCQklIZHZjbXRsY2lCMGJ5QndaWEptYjNKdElHUnBiV1Z1YzJsdmJtRnNhWFI1SUhKbFpIVmpkR2x2Ymk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFaaGJHbGtWSGx3WlhOOUlHUmhkR0ZOWlhSeWFXTWdWR2hsSUdSaGRHRWdkRzhnY0hKdlkyVnpjeTVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdFpYUm9iMlFnUVNCdFpYUm9iMlFnYjJZZ1pHbHRaVzV6YVc5dVlXeHBkSGtnY21Wa2RXTjBhVzl1TGx4dUlDb2dRSEJoY21GdElHOXdkR2x2Ym5NZ0xTQnJaWGt0ZG1Gc2RXVWdjR0ZwY25OY2JpQXFJRUJ3WVhKaGJTQnlaWFIxY201RWFYTjBZVzVqWlUxaGRISnBlRnh1SUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4SlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRK2ZTQlNaWE4xYkhScGJtY2daVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGd1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVkpsWkhWalpVUnBiV1Z1YzJsdmJtRnNhWFI1VW1WemRXeDBJSHRjYmlBZ1pHbHpkR0Z1WTJVNklFMWhkSEpwZUR0Y2JpQWdaVzFpWldSa2FXNW5PaUJOWVhSeWFYZzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamNtVmhkR1ZFYVcxbGJuTnBibUZzYVhSNVVtVmtkV05wYm1kWGIzSnJaWElvWkdGMFlVMWxkSEpwWXpvZ1ZtRnNhV1JVZVhCbGN5d2diV1YwYUc5a09pQnpkSEpwYm1jc1hHNGdJQ0FnSUNCdmNIUnBiMjV6UHpvZ1lXNTVLVG9nVUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErSUh0Y2JseHVJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWm5WdVkzUnBiMjRvY21WemIyeDJaU2tnZTF4dUlDQWdJR052Ym5OMElIZHZjbXRsY2lBOUlHNWxkeUJYYjNKclpYSW9ibVYzSUZWU1RDZ25MaTlrYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJWeUp5d2dhVzF3YjNKMExtMWxkR0V1ZFhKc0tTazdYRzRnSUNBZ2QyOXlhMlZ5TG5CdmMzUk5aWE56WVdkbEtIdGNiaUFnSUNBZ0lHTnZiSFZ0YmtSaGRHRTZJR1JoZEdGTlpYUnlhV011WkdGMFlTeGNiaUFnSUNBZ0lHMWxkR2h2WkRvZ2JXVjBhRzlrTEZ4dUlDQWdJQ0FnYldWaGMzVnlaVG9nWkdGMFlVMWxkSEpwWXk1dFpYUnlhV01zWEc0Z0lDQWdJQ0J2Y0hScGIyNXpPaUJ2Y0hScGIyNXpMRnh1SUNBZ0lIMHBPMXh1SUNBZ0lIZHZjbXRsY2k1dmJtMWxjM05oWjJVZ1BTQW9lMlJoZEdFNklIdGthWE4wWVc1alpTd2daVzFpWldSa2FXNW5mWDBwSUQwK0lIdGNiaUFnSUNBZ2NtVnpiMngyWlNoN1pHbHpkR0Z1WTJVNklHUnBjM1JoYm1ObExDQmxiV0psWkdScGJtYzZJR1Z0WW1Wa1pHbHVaMzBwTzF4dUlDQWdJSDA3WEc0Z0lIMHBPMXh1ZlZ4dUlsMTkiLCIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG5leHBvcnQgY29uc3Qgc2ltaWxhcml0eU1ldHJpYyA9IHtcbiAgICAnVGFuaW1vdG8nOiB0YW5pbW90b1NpbWlsYXJpdHksXG4gICAgJ0RpY2UnOiBkaWNlU2ltaWxhcml0eSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNTaW1pbGFyaXR5LFxuICAgICdCcmF1bi1CbGFucXVldCc6IGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5LFxuICAgICdDb3NpbmUnOiBjb3NpbmVTaW1pbGFyaXR5LFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraVNpbWlsYXJpdHksXG4gICAgJ01jLUNvbm5hdWdoZXknOiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5LFxuICAgICdSb2dvdC1Hb2xkYmVyZyc6IHJvZ290R29sZGJlcmdTaW1pbGFyaXR5LFxuICAgICdSdXNzZWwnOiBydXNzZWxTaW1pbGFyaXR5LFxuICAgICdTb2thbCc6IHNva2FsU2ltaWxhcml0eSxcbiAgICAnSGFtbWluZyc6IGhhbW1pbmdTaW1pbGFyaXR5LFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5TaW1pbGFyaXR5LFxufTtcbmV4cG9ydCBjb25zdCBkaXN0YW5jZU1ldHJpY3MgPSB7XG4gICAgJ1Rhbmltb3RvJzogdGFuaW1vdG9EaXN0YW5jZSxcbiAgICAnRGljZSc6IGRpY2VEaXN0YW5jZSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNEaXN0YW5jZSxcbiAgICAnQnJhdW4tQmxhbnF1ZXQnOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgJ0Nvc2luZSc6IGNvc2luZURpc3RhbmNlLFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraURpc3RhbmNlLFxuICAgICdNYy1Db25uYXVnaGV5JzogbWNDb25uYXVnaGV5RGlzdGFuY2UsXG4gICAgJ1JvZ290LUdvbGRiZXJnJzogcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLFxuICAgICdSdXNzZWwnOiBydXNzZWxEaXN0YW5jZSxcbiAgICAnU29rYWwnOiBzb2thbERpc3RhbmNlLFxuICAgICdIYW1taW5nJzogaGFtbWluZ0Rpc3RhbmNlLFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQ0hFTV9TSU1JTEFSSVRZX01FVFJJQ1MgPSBbJ1Rhbmltb3RvJywgJ0RpY2UnLCAnQ29zaW5lJywgJ0hhbW1pbmcnLCAnRXVjbGlkZWFuJ107XG5leHBvcnQgZnVuY3Rpb24gdGFuaW1vdG9TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKHRvdGFsIC0gY29tbW9uKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0YW5pbW90b0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eSh0YW5pbW90b1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gMiAqIGNvbW1vbiAvIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoZGljZVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBNYXRoLnNxcnQodG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShjb3NpbmVTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW5TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShldWNsaWRlYW5EaXN0YW5jZSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXVjbGlkZWFuRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBNYXRoLnNxcnQoeC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCkgLSAyICogeC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoaGFtbWluZ0Rpc3RhbmNlKHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKSAtIDIgKiB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gc29rYWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKDIgKiB0b3RhbCAtIDMgKiBjb21tb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNva2FsRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHNva2FsU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24ga3VsY3p5bnNraVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgdG90YWxQcm9kID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsUHJvZCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gKGNvbW1vbiAqIHRvdGFsKSAvICgyICogdG90YWxQcm9kKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBrdWxjenluc2tpRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGt1bGN6eW5za2lTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IHRvdGFsUHJvZCA9IHgudHJ1ZUNvdW50KCkgKiB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbFByb2QgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIChjb21tb24gKiB0b3RhbCAtIHRvdGFsUHJvZCkgLyB0b3RhbFByb2Q7XG59XG5leHBvcnQgZnVuY3Rpb24gbWNDb25uYXVnaGV5RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KG1jQ29ubmF1Z2hleVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzeW1tZXRyaWNTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBtaW4gPSBNYXRoLm1pbih4LnRydWVDb3VudCgpLCB5LnRydWVDb3VudCgpKTtcbiAgICBpZiAobWluID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBtaW47XG59XG5leHBvcnQgZnVuY3Rpb24gYXN5bW1ldHJpY0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShhc3ltbWV0cmljU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYnJhdW5CbGFucXVldFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHgudHJ1ZUNvdW50KCksIHkudHJ1ZUNvdW50KCkpO1xuICAgIGlmIChtYXggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIG1heDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicmF1bkJsYW5xdWV0RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBydXNzZWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBpZiAoeC5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIHgubGVuZ3RoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1c3NlbERpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShydXNzZWxTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByb2dvdEdvbGRiZXJnU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIGNvbnN0IHRvdGFsID0geC5jb3VudEJpdHModHJ1ZSkgKyB5LmNvdW50Qml0cyh0cnVlKTtcbiAgICBjb25zdCBsZW4gPSB4Lmxlbmd0aDtcbiAgICBjb25zdCBkaWZmID0gbGVuIC0gdG90YWwgKyBjb21tb247XG4gICAgaWYgKChjb21tb24gPT0gbGVuKSB8fCAoZGlmZiA9PSBsZW4pKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGNvbW1vbiAvIHRvdGFsICsgZGlmZiAvICgyICogbGVuIC0gdG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJvZ290R29sZGJlcmdEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkocm9nb3RHb2xkYmVyZ1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoZGlzdGFuY2UpIHtcbiAgICByZXR1cm4gMSAvICgxICsgZGlzdGFuY2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoc2ltaWxhcml0eSkge1xuICAgIHJldHVybiAxIC8gc2ltaWxhcml0eSAtIDE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJsdGFXeGhjbWwwZVMxdFpYUnlhV056TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGQlF5eFRRVUZUTEVWQlFVTXNUVUZCVFN4VlFVRlZMRU5CUVVNN1FVRkZia01zVFVGQlRTeERRVUZETEUxQlFVMHNaMEpCUVdkQ0xFZEJRVEpFTzBsQlEzUkdMRlZCUVZVc1JVRkJSU3hyUWtGQmEwSTdTVUZET1VJc1RVRkJUU3hGUVVGRkxHTkJRV003U1VGRGRFSXNXVUZCV1N4RlFVRkZMRzlDUVVGdlFqdEpRVU5zUXl4blFrRkJaMElzUlVGQlJTeDFRa0ZCZFVJN1NVRkRla01zVVVGQlVTeEZRVUZGTEdkQ1FVRm5RanRKUVVNeFFpeFpRVUZaTEVWQlFVVXNiMEpCUVc5Q08wbEJRMnhETEdWQlFXVXNSVUZCUlN4elFrRkJjMEk3U1VGRGRrTXNaMEpCUVdkQ0xFVkJRVVVzZFVKQlFYVkNPMGxCUTNwRExGRkJRVkVzUlVGQlJTeG5Ra0ZCWjBJN1NVRkRNVUlzVDBGQlR5eEZRVUZGTEdWQlFXVTdTVUZEZUVJc1UwRkJVeXhGUVVGRkxHbENRVUZwUWp0SlFVTTFRaXhYUVVGWExFVkJRVVVzYlVKQlFXMUNPME5CUTJwRExFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN4bFFVRmxMRWRCUVRKRU8wbEJRM0pHTEZWQlFWVXNSVUZCUlN4blFrRkJaMEk3U1VGRE5VSXNUVUZCVFN4RlFVRkZMRmxCUVZrN1NVRkRjRUlzV1VGQldTeEZRVUZGTEd0Q1FVRnJRanRKUVVOb1F5eG5Ra0ZCWjBJc1JVRkJSU3h4UWtGQmNVSTdTVUZEZGtNc1VVRkJVU3hGUVVGRkxHTkJRV003U1VGRGVFSXNXVUZCV1N4RlFVRkZMR3RDUVVGclFqdEpRVU5vUXl4bFFVRmxMRVZCUVVVc2IwSkJRVzlDTzBsQlEzSkRMR2RDUVVGblFpeEZRVUZGTEhGQ1FVRnhRanRKUVVOMlF5eFJRVUZSTEVWQlFVVXNZMEZCWXp0SlFVTjRRaXhQUVVGUExFVkJRVVVzWVVGQllUdEpRVU4wUWl4VFFVRlRMRVZCUVVVc1pVRkJaVHRKUVVNeFFpeFhRVUZYTEVWQlFVVXNhVUpCUVdsQ08wTkJReTlDTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3gxUWtGQmRVSXNSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEZOQlFWTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVVNVJpeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZWtRc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU0xUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRE8xRkJRMW9zVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkRMRTlCUVU4c1RVRkJUU3hIUVVGSExFTkJRVU1zUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNM1JDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRelZETEVsQlFVa3NTMEZCU3l4SlFVRkpMRU5CUVVNN1VVRkRXaXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU0xUWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnVSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzWkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNTVUZCU1N4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVOYUxFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNZMEZCWXl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM0pFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETTBRc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHRRa0ZCYlVJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU14UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpWRUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZUVRc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkRMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5zUml4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHbENRVUZwUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM2hFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRekZFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1pVRkJaU3hEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzUkVMRTlCUVU4c1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFZEJRVU1zUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTjJSU3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOMFJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUXpWRExFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXpReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOd1JDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNeFJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMRzlDUVVGdlFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpORUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU5vUkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hEUVVGRE8xRkJRMmhDTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETzBGQlF6VkRMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYTBKQlFXdENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGVrUXNUMEZCVHl4NVFrRkJlVUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhOQ1FVRnpRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6ZEVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVOb1JDeEpRVUZKTEZOQlFWTXNTVUZCU1N4RFFVRkRPMUZCUTJoQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkRiRVFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4dlFrRkJiMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTXpSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMSE5DUVVGelFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMnBGTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2IwSkJRVzlDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRNMFFzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJrUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOV0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRGRFSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hyUWtGQmEwSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVONlJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF5OUVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzZFVKQlFYVkNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE9VUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtRc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5XTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHhRa0ZCY1VJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU0xUkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJ4RkxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTTdVVUZEWml4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpORUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZET1VRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRjRVFzVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVOeVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dEpRVU5zUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJRenRSUVVGRkxFOUJRVThzUjBGQlJ5eERRVUZET3p0UlFVTTFReXhQUVVGUExFMUJRVTBzUjBGQlJ5eExRVUZMTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjRSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhGQ1FVRnhRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6VkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRiRVVzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4NVFrRkJlVUlzUTBGQlF5eFJRVUZuUWp0SlFVTjRSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZGTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNM1FpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSGxDUVVGNVFpeERRVUZETEZWQlFXdENPMGxCUXpGRUxFOUJRVThzUTBGQlF5eEhRVUZITEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkROVUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eE5RVUZqTEVWQlFVVXNRMEZCVXl4RlFVRkZMRWxCUVhkRE8wbEJRMnhITEZOQlFWTXNTMEZCU3l4RFFVRkRMRTFCUVdkRExFVkJRVVVzVDBGQk9FSTdVVUZETjBVc1NVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYwUWl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVU0xUWl4TlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEpRVUZKTEdOQlFXTXNSMEZCUnl4VlFVRlZMRVZCUVVVN1owSkJRM0pFTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNN1owSkJRMjVDTEZWQlFWVXNSMEZCUnl4alFVRmpMRU5CUVVNN1lVRkROMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUlRkQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkRaaXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUU0UWl4RlFVTXZReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJVeXhIUVVGSExFVkJRVVVzUzBGQlN6dFpRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRVQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRlRUk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnUW1sMFFYSnlZWGtnWm5KdmJTQW5MaTlpYVhRdFlYSnlZWGtuTzF4dWFXMXdiM0owSUh0eVlXNWtiMjFKYm5SOUlHWnliMjBnSnk0dmNtRnVaRzl0Snp0Y2JseHVaWGh3YjNKMElHTnZibk4wSUhOcGJXbHNZWEpwZEhsTlpYUnlhV002SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2tnUFQ0Z2JuVnRZbVZ5ZlNBOUlIdGNiaUFnSjFSaGJtbHRiM1J2SnpvZ2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUkdsalpTYzZJR1JwWTJWVGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUVhONWJXMWxkSEpwWXljNklHRnplVzF0WlhSeWFXTlRhVzFwYkdGeWFYUjVMRnh1SUNBblFuSmhkVzR0UW14aGJuRjFaWFFuT2lCaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU3hjYmlBZ0owTnZjMmx1WlNjNklHTnZjMmx1WlZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RMZFd4amVubHVjMnRwSnpvZ2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa3NYRzRnSUNkTll5MURiMjV1WVhWbmFHVjVKem9nYldORGIyNXVZWFZuYUdWNVUybHRhV3hoY21sMGVTeGNiaUFnSjFKdloyOTBMVWR2YkdSaVpYSm5Kem9nY205bmIzUkhiMnhrWW1WeVoxTnBiV2xzWVhKcGRIa3NYRzRnSUNkU2RYTnpaV3duT2lCeWRYTnpaV3hUYVcxcGJHRnlhWFI1TEZ4dUlDQW5VMjlyWVd3bk9pQnpiMnRoYkZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMU5wYldsc1lYSnBkSGtzWEc0Z0lDZEZkV05zYVdSbFlXNG5PaUJsZFdOc2FXUmxZVzVUYVcxcGJHRnlhWFI1TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHUnBjM1JoYm1ObFRXVjBjbWxqY3pvZ2UxdHVZVzFsT2lCemRISnBibWRkT2lBb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1NBOVBpQnVkVzFpWlhKOUlEMGdlMXh1SUNBblZHRnVhVzF2ZEc4bk9pQjBZVzVwYlc5MGIwUnBjM1JoYm1ObExGeHVJQ0FuUkdsalpTYzZJR1JwWTJWRWFYTjBZVzVqWlN4Y2JpQWdKMEZ6ZVcxdFpYUnlhV01uT2lCaGMzbHRiV1YwY21salJHbHpkR0Z1WTJVc1hHNGdJQ2RDY21GMWJpMUNiR0Z1Y1hWbGRDYzZJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlN4Y2JpQWdKME52YzJsdVpTYzZJR052YzJsdVpVUnBjM1JoYm1ObExGeHVJQ0FuUzNWc1kzcDVibk5yYVNjNklHdDFiR042ZVc1emEybEVhWE4wWVc1alpTeGNiaUFnSjAxakxVTnZibTVoZFdkb1pYa25PaUJ0WTBOdmJtNWhkV2RvWlhsRWFYTjBZVzVqWlN4Y2JpQWdKMUp2WjI5MExVZHZiR1JpWlhKbkp6b2djbTluYjNSSGIyeGtZbVZ5WjBScGMzUmhibU5sTEZ4dUlDQW5VblZ6YzJWc0p6b2djblZ6YzJWc1JHbHpkR0Z1WTJVc1hHNGdJQ2RUYjJ0aGJDYzZJSE52YTJGc1JHbHpkR0Z1WTJVc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMFJwYzNSaGJtTmxMRnh1SUNBblJYVmpiR2xrWldGdUp6b2daWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnUTBoRlRWOVRTVTFKVEVGU1NWUlpYMDFGVkZKSlExTWdQU0JiSjFSaGJtbHRiM1J2Snl3Z0owUnBZMlVuTENBblEyOXphVzVsSnl3Z0owaGhiVzFwYm1jbkxDQW5SWFZqYkdsa1pXRnVKMTA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMFlXNXBiVzkwYjFOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnYVdZZ0tIUnZkR0ZzSUQwOUlEQXBYRzRnSUNBZ2NtVjBkWEp1SURFdU1EdGNiaUFnWTI5dWMzUWdZMjl0Ylc5dUlEMGdlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1SUNCeVpYUjFjbTRnWTI5dGJXOXVJQzhnS0hSdmRHRnNJQzBnWTI5dGJXOXVLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIUmhibWx0YjNSdlJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FySUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkNBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SURJZ0tpQmpiMjF0YjI0Z0x5QjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoa2FXTmxVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRTFoZEdndWMzRnlkQ2gwYjNSaGJDazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hqYjNOcGJtVlRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWMVkyeHBaR1ZoYmxOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRk5wYldsc1lYSnBkSGxHY205dFJHbHpkR0Z1WTJVb1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2VDd2dlU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2g0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1NBdElESXFlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHaGhiVzFwYm1kVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHaGhiVzFwYm1kRWFYTjBZVzVqWlNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm9ZVzF0YVc1blJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlIZ3VkSEoxWlVOdmRXNTBLQ2tnS3lCNUxuUnlkV1ZEYjNWdWRDZ3BJQzBnTWlwNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6YjJ0aGJGTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnWTI5dGJXOXVJRDBnZUM1aGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hrc0lIUnlkV1VwTzF4dUlDQnlaWFIxY200Z1kyOXRiVzl1SUM4Z0tESWdLaUIwYjNSaGJDQXRJRE1nS2lCamIyMXRiMjRwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjMjlyWVd4RWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoemIydGhiRk5wYldsc1lYSnBkSGtvZUN3Z2VTa3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnZEc5MFlXeFFjbTlrSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FxSUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkZCeWIyUWdQVDBnTUNsY2JpQWdJQ0J5WlhSMWNtNGdNQzR3TzF4dUlDQmpiMjV6ZENCamIyMXRiMjRnUFNCNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNGdJSEpsZEhWeWJpQW9ZMjl0Ylc5dUlDb2dkRzkwWVd3cElDOGdLRElnS2lCMGIzUmhiRkJ5YjJRcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYTNWc1kzcDVibk5yYVVScGMzUmhibU5sS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCblpYUkVhWE4wWVc1alpVWnliMjFUYVcxcGJHRnlhWFI1S0d0MWJHTjZlVzV6YTJsVGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzFqUTI5dWJtRjFaMmhsZVZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnWTI5dWMzUWdkRzkwWVd4UWNtOWtJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiRkJ5YjJRZ1BUMGdNQ2xjYmlBZ0lDQnlaWFIxY200Z01DNHdPMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lISmxkSFZ5YmlBb1kyOXRiVzl1SUNvZ2RHOTBZV3dnTFNCMGIzUmhiRkJ5YjJRcElDOGdkRzkwWVd4UWNtOWtPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JXTkRiMjV1WVhWbmFHVjVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29iV05EYjI1dVlYVm5hR1Y1VTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmhjM2x0YldWMGNtbGpVMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0J0YVc0Z1BTQk5ZWFJvTG0xcGJpaDRMblJ5ZFdWRGIzVnVkQ2dwTENCNUxuUnlkV1ZEYjNWdWRDZ3BLVHRjYmlBZ2FXWWdLRzFwYmlBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUcxcGJqdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdGemVXMXRaWFJ5YVdORWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaGMzbHRiV1YwY21salUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJpY21GMWJrSnNZVzV4ZFdWMFUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQnRZWGdnUFNCTllYUm9MbTFoZUNoNExuUnlkV1ZEYjNWdWRDZ3BMQ0I1TG5SeWRXVkRiM1Z1ZENncEtUdGNiaUFnYVdZZ0tHMWhlQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRzFoZUR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWRYTnpaV3hUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2g0TG14bGJtZDBhQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJSGd1YkdWdVozUm9PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NuVnpjMlZzUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvY25WemMyVnNVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWIyZHZkRWR2YkdSaVpYSm5VMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1amIzVnVkRUpwZEhNb2RISjFaU2tnS3lCNUxtTnZkVzUwUW1sMGN5aDBjblZsS1R0Y2JpQWdZMjl1YzNRZ2JHVnVJRDBnZUM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUdScFptWWdQU0JzWlc0Z0xTQjBiM1JoYkNBcklHTnZiVzF2Ymp0Y2JpQWdhV1lnS0NoamIyMXRiMjRnUFQwZ2JHVnVLU0I4ZkNBb1pHbG1aaUE5UFNCc1pXNHBLU0J5WlhSMWNtNGdNUzR3TzF4dUlDQmxiSE5sSUhKbGRIVnliaUJqYjIxdGIyNGdMeUIwYjNSaGJDQXJJR1JwWm1ZZ0x5QW9NaUFxSUd4bGJpQXRJSFJ2ZEdGc0tUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKdloyOTBSMjlzWkdKbGNtZEVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaHliMmR2ZEVkdmJHUmlaWEpuVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHUnBjM1JoYm1ObE9pQnVkVzFpWlhJcElIdGNiaUFnY21WMGRYSnVJREVnTHlBb0lERWdLeUJrYVhOMFlXNWpaU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJFYVhOMFlXNWpaVVp5YjIxVGFXMXBiR0Z5YVhSNUtITnBiV2xzWVhKcGRIazZJRzUxYldKbGNpa2dlMXh1SUNCeVpYUjFjbTRnTVNBdklITnBiV2xzWVhKcGRIa2dMU0F4TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUkdsMlpYSnpaVk4xWW5ObGRDaHNaVzVuZEdnNklHNTFiV0psY2l3Z2Jqb2diblZ0WW1WeUxDQmthWE4wT2lBb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJR1oxYm1OMGFXOXVJRzFoZUVKNUtIWmhiSFZsY3pvZ1NYUmxjbUZpYkdWSmRHVnlZWFJ2Y2p4dWRXMWlaWEkrTENCdmNtUmxja0o1T2lBb2FUb2diblZ0WW1WeUtTQTlQaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQnNaWFFnYldGNFZtRnNkV1VnUFNCdWRXeHNPMXh1SUNBZ0lHeGxkQ0J0WVhoUGNtUmxja0o1SUQwZ2JuVnNiRHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWld4bGJXVnVkQ0J2WmlCMllXeDFaWE1wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1ZzWlcxbGJuUlBjbVJsY2tKNUlEMGdiM0prWlhKQ2VTaGxiR1Z0Wlc1MEtUdGNiaUFnSUNBZ0lHbG1JQ2h0WVhoUGNtUmxja0o1SUQwOUlHNTFiR3dnZkh3Z1pXeGxiV1Z1ZEU5eVpHVnlRbmtnUGlCdFlYaFBjbVJsY2tKNUtTQjdYRzRnSUNBZ0lDQWdJRzFoZUZaaGJIVmxJRDBnWld4bGJXVnVkRHRjYmlBZ0lDQWdJQ0FnYldGNFQzSmtaWEpDZVNBOUlHVnNaVzFsYm5SUGNtUmxja0o1TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JXRjRWbUZzZFdVN1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCemRXSnpaWFFnUFNCYmNtRnVaRzl0U1c1MEtHeGxibWQwYUNBdElERXBYVHRjYmlBZ1kyOXVjM1FnWTI5dGNHeGxiV1Z1ZENBOUlHNWxkeUJUWlhRb0tUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHeGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdhV1lnS0NGemRXSnpaWFF1YVc1amJIVmtaWE1vYVNrcFhHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtRmtaQ2hwS1R0Y2JpQWdmVnh1WEc0Z0lIZG9hV3hsSUNoemRXSnpaWFF1YkdWdVozUm9JRHdnYmlrZ2UxeHVJQ0FnSUdOdmJuTjBJR2xrZUNBOUlHMWhlRUo1S0Z4dUlDQWdJQ0FnWTI5dGNHeGxiV1Z1ZEM1MllXeDFaWE1vS1NCaGN5QkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c1hHNGdJQ0FnSUNBb2FTa2dQVDRnVFdGMGFDNXRhVzR1WVhCd2JIa29UV0YwYUN3Z2MzVmljMlYwTG0xaGNDaG1kVzVqZEdsdmJpaDJZV3dzSUdsdVpHVjRLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrYVhOMEtHa3NJSFpoYkNrN1hHNGdJQ0FnSUNCOUtTa3BPMXh1SUNBZ0lHbG1JQ2hwWkhncElIdGNiaUFnSUNBZ0lITjFZbk5sZEM1d2RYTm9LR2xrZUNrN1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtUmxiR1YwWlNocFpIZ3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z2MzVmljMlYwTzF4dWZWeHVJbDE5IiwiLyoqXG4gKiBEZW5vdGVzIGEgdmVjdG9yIG9mIGZsb2F0aW5nIHBvaXQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JcbiAqIEBleHRlbmRzIHtGbG9hdDMyQXJyYXl9XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3IgZXh0ZW5kcyBGbG9hdDMyQXJyYXkge1xufVxuLyoqXG4gKiBEZW5vdGVzIGEgdHdvLWRpbWVuc2lvbmFsIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgTWF0cml4XG4gKiBAZXh0ZW5kcyB7QXJyYXk8VmVjdG9yPn1cbiAqL1xuZXhwb3J0IGNsYXNzIE1hdHJpeCBleHRlbmRzIEFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBjYXJ0ZXNpYW4gY29vcmRpbmF0ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIENvb3JkaW5hdGVzXG4gKiBAZXh0ZW5kcyB7TWF0cml4fVxuICovXG5leHBvcnQgY2xhc3MgQ29vcmRpbmF0ZXMgZXh0ZW5kcyBNYXRyaXgge1xufVxuLyoqXG4gKiBEZW5vdGVzIGFuIGFycmF5IG9mIGFyYml0cmFyeS10eXBlZCB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JzXG4gKiBAZXh0ZW5kcyB7QXJyYXk8YW55Pn1cbiAqL1xuZXhwb3J0IGNsYXNzIFZlY3RvcnMgZXh0ZW5kcyBBcnJheSB7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRmxCUVZrN1EwRkJSenRCUVVVelF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1RVRkJUeXhUUVVGUkxFdEJRV0U3UTBGQlJ6dEJRVVUxUXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVjBGQldTeFRRVUZSTEUxQlFVMDdRMEZCUnp0QlFVVXhRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUMEZCVVN4VFFVRlJMRXRCUVZVN1EwRkJSeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUhabFkzUnZjaUJ2WmlCbWJHOWhkR2x1WnlCd2IybDBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdWbVZqZEc5eVhHNGdLaUJBWlhoMFpXNWtjeUI3Um14dllYUXpNa0Z5Y21GNWZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbVZqZEc5eUlHVjRkR1Z1WkhNZ1JteHZZWFF6TWtGeWNtRjVJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCdFlYUnlhWGd1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUUxaGRISnBlRnh1SUNvZ1FHVjRkR1Z1WkhNZ2UwRnljbUY1UEZabFkzUnZjajU5WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTllYUnlhWGdnWlhoMFpXNWtjeUJCY25KaGVUeFdaV04wYjNJK0lIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJqWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlhNdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFTnZiM0prYVc1aGRHVnpYRzRnS2lCQVpYaDBaVzVrY3lCN1RXRjBjbWw0ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1EyOXZjbVJwYm1GMFpYTWdaWGgwWlc1a2N5Qk5ZWFJ5YVhnZ2UzMWNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0Z1SUdGeWNtRjVJRzltSUdGeVltbDBjbUZ5ZVMxMGVYQmxaQ0IyWldOMGIzSnpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCamJHRnpjeUJXWldOMGIzSnpYRzRnS2lCQVpYaDBaVzVrY3lCN1FYSnlZWGs4WVc1NVBuMWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpsWTNSdmNuTWdaWGgwWlc1a2N5QkJjbkpoZVR4aGJuaytJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElHUnBZM1JwYjI1aGNua2dZMjl1ZEdGcGJtbHVaeUJtZFc1amRHbHZiaUJ2Y0hScGIyNXpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCMGVYQmxJRTl3ZEdsdmJuTmNiaUFxTDF4dVpYaHdiM0owSUhSNWNHVWdUM0IwYVc5dWN5QTlJSHRiYm1GdFpUb2djM1J5YVc1blhUb2dZVzU1ZlR0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHTjFjM1J2YlNCa2FYTjBZVzVqWlNCdFpYUnlhV01nWW1WMGQyVmxiaUIwYUdVZ2RIZHZJR2RwZG1WdUlIWmxZM1J2Y25NdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSFI1Y0dVZ1JHbHpkR0Z1WTJWTlpYUnlhV05jYmlBcUlFQndZWEpoYlNCN1lXNTVmU0IyTVNCVWFHVWdabWx5YzNRZ2RtVmpkRzl5TGx4dUlDb2dRSEJoY21GdElIdGhibmw5SUhZeUlGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlhObElIUjNieUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JFYVhOMFlXNWpaVTFsZEhKcFl5QTlJQ2gyTVRvZ1lXNTVMQ0IyTWpvZ1lXNTVLU0E5UGlBb2JuVnRZbVZ5S1R0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHRWdjMmx0Y0d4bElITjBjbWx1WnlCMGJ5QnpkSEpwYm1jZ1pHbGpkR2x2Ym1GeWVTNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBZEhsd1pTQlRkSEpwYm1kRWFXTjBhVzl1WVhKNVhHNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQjdXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuZlR0Y2JpSmRmUT09IiwiaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21GbG9hdCwgcmFuZG9tSW50IH0gZnJvbSAnLi9yYW5kb20nO1xuLyoqXG4gKiBBc3NlcnRzIGEgY29uZGl0aW9uIGJ5IHRocm93aW5nIGFuIEVycm9yLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NvbmRpdGlvbj1mYWxzZV0gQ29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZT0nQXNzZXJ0aW9uIGVycm9yLiddIE1lc3NhZ2UgdG8gb3V0cHV0LlxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uID0gZmFsc2UsIG1lc3NhZ2UgPSAnQXNzZXJ0aW9uIGVycm9yLicpIHtcbiAgICBpZiAoIWNvbmRpdGlvbilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xufVxuLyoqXG4gKiBDcmVhdGVzIG5ldyB0d28tZGltZW5zaW9uYWwgYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2Ygcm93cykuXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiBjb2x1bW5zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZmlsbD0wXSBBIHZhbHVlIHRvIGZpbGwgdGhlIGNvb3JkaW5hdGVzIHdpdGguXG4gKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQSB0d28tZGltZW5zaW9uYWwgZmlsbGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmZ1bmN0aW9uIGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBmaWxsID0gMCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkoZGltZW5zaW9uMSkuZmlsbChmaWxsKS5tYXAoKCkgPT4gKG5ldyBWZWN0b3IoZGltZW5zaW9uMikuZmlsbChmaWxsKSkpO1xufVxuLyoqXG4gKiBUcmFuc3Bvc2UgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXggVGhlIG1hdHJpeCB0byBiZSB0cmFuc3Bvc2VkLlxuICogQHJldHVybiB7TWF0cml4fSBUcmFuc3Bvc2VkIG1hdHJpeC5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlTWF0cml4KG1hdHJpeCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkobWF0cml4WzBdLmxlbmd0aCkuZmlsbCgwKVxuICAgICAgICAubWFwKChfLCBpKSA9PiAobmV3IFZlY3RvcihtYXRyaXgubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaikgPT4gKG1hdHJpeFtqXVtpXSkpKSk7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlY3RvcnMgd2l0aCB0aGUgc2Vjb25kIG9uZSB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBnaXZlbiByYXRpby5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbXVsdGlwbGllcj0xXSBBIG11bHRpcGxpZXIgdG8gYmUgdXNlZCBiZWZvcmUgdGhlIHNlY29uZCB2ZWN0b3IgaXMgYWRkZWQuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IE5ldyB2ZWN0b3IgY29udGFpbmVkIHRoZSByZXN1bHQgb2Ygb3BlcmF0aW9uIHArbXVsdGlwbGllcipxLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yQWRkKHAsIHEsIG11bHRpcGxpZXIgPSAxKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gcC5sZW5ndGg7XG4gICAgYXNzZXJ0KG5JdGVtcyA9PSBxLmxlbmd0aCwgJ1ZlY3RvciBsZW5ndGhzIGRvIG5vdCBtYXRjaC4nKTtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gcFtpXSArIG11bHRpcGxpZXIgKiBxW2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VtcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBiZSBzdW1tZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZWN0b3IncyBpdGVtcyBzdW0uXG4gKi9cbmZ1bmN0aW9uIGl0ZW1zU3VtKHYpIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWwgKz0gdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1cWFyZXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gc3F1YXJlLlxuICogQHJldHVybiB7VmVjdG9yfSBBIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgb3JpZ2luYWwncyBpdGVtcyBzcXVhcmVkLlxuICovXG5mdW5jdGlvbiB2ZWN0b3JTcXVhcmUodikge1xuICAgIGNvbnN0IG5JdGVtcyA9IHYubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yTGVuZ3RoKHYpIHtcbiAgICBsZXQgc3FyU3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspXG4gICAgICAgIHNxclN1bSArPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxclN1bSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yRG90UHJvZHVjdCh2MSwgdjIpIHtcbiAgICBpZiAodjEubGVuZ3RoICE9IHYyLmxlbmd0aClcbiAgICAgICAgdGhyb3cgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKiogR2VuZXJhdGVzIGFycmF5IGZyb20gYSByYW5nZSBbYmVnaW47IGVuZF0gb3IgW2JlZ2luOyBlbmQpIGlmIGVuZEV4Y2x1c2l2ZS4gKiovXG5leHBvcnQgZnVuY3Rpb24gZ2VuUmFuZ2UoYmVnaW4sIGVuZCwgZW5kRXhjbHVzaXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBlbmQgLSBiZWdpbiArIChlbmRFeGNsdXNpdmUgPyAwIDogMSk7XG4gICAgY29uc3Qgc2VyaWVzID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgICAgICBzZXJpZXNbaV0gPSBiZWdpbiArIGk7XG4gICAgcmV0dXJuIHNlcmllcztcbn1cbi8qKlxuKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4qXG4qIEBleHBvcnRcbiogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXZlcnNlPWZhbHNlXSBXaGV0aGVyIHRvIHJldHVybiByZXZlcnNlZCBvcmRlci5cbiogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRXRCUVVzc1EwRkJReXc0UTBGQk9FTXNRMEZCUXl4RFFVRkRPMGxCUXpsRUxFbEJRVWtzU1VGQlNTeEhRVUZYTEVOQlFVTXNRMEZCUXp0SlFVTnlRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZYTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEZUVNc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVE3T3pzN096czdPMGRCVVVjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1ZVRkJhMElzUlVGQlJTeFZRVUZyUWl4RlFVRkZMRkZCUVdkQ0xFVkJRVVU3U1VGRGVrWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXp0SlFVVjJSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEyNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRMnBETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRja003U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3d3UWtGQk1FSXNRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVenRKUVVNM1JDeE5RVUZOTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJwRExFMUJRVTBzVFVGQlRTeEhRVUZITEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOc1F5eE5RVUZOTEZWQlFWVXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGNFTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlF5OUNMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR3RDUVVGclFpeERRVUZETEVsQlFXRXNSVUZCUlN4UlFVRjNRanRKUVVONFJTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRek5DTEUxQlFVMHNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUld4RUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtNc1RVRkJUU3hEUVVGRExFZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14Uml4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTnFRenRMUVVOR08wbEJRMFFzVDBGQlR5eE5RVUZOTEVOQlFVTTdRVUZEYUVJc1EwRkJRenRCUVVWRUxHdEdRVUZyUmp0QlFVTnNSaXhOUVVGTkxGVkJRVlVzVVVGQlVTeERRVUZETEV0QlFXRXNSVUZCUlN4SFFVRlhMRVZCUVVVc1dVRkJXU3hIUVVGSExFdEJRVXM3U1VGRGRrVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVXNzUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVWMFF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTTNRaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVWNFFpeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVUU3T3pzN096czdSVUZQUlR0QlFVTklMRTFCUVUwc1ZVRkJWU3hQUVVGUExFTkJRVU1zVFVGQllTeEZRVUZGTEU5QlFVOHNSMEZCUnl4TFFVRkxPMGxCUTNCRUxFMUJRVTBzVFVGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUnl4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVTBzUlVGQlJTeERRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNjVUpCUVhGQ08wbEJRMnhGTEUxQlFVMHNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXh0UWtGQmJVSTdTVUZEZGtRc1RVRkJUU3hSUVVGUkxFZEJRVWNzUTBGQlF5eEhRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTXhSU3hQUVVGUExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4TlFVRmpMRVZCUVVVc1EwRkJVeXhGUVVGRkxFbEJRWGRETzBsQlEyeEhMRk5CUVZNc1MwRkJTeXhEUVVGRExFMUJRV2RETEVWQlFVVXNUMEZCT0VJN1VVRkROMFVzU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVVjBRaXhMUVVGTExFMUJRVTBzVDBGQlR5eEpRVUZKTEUxQlFVMHNSVUZCUlR0WlFVTTFRaXhOUVVGTkxHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeFZRVUZWTEVsQlFVa3NTVUZCU1N4SlFVRkpMR05CUVdNc1IwRkJSeXhWUVVGVkxFVkJRVVU3WjBKQlEzSkVMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU03WjBKQlEyNUNMRlZCUVZVc1IwRkJSeXhqUVVGakxFTkJRVU03WVVGRE4wSTdVMEZEUmp0UlFVTkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSVGRDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pDTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGNrSTdTVUZGUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGRFppeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRTRRaXhGUVVNdlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlV5eEhRVUZITEVWQlFVVXNTMEZCU3p0WlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFBc1NVRkJTU3hIUVVGSExFVkJRVVU3V1VGRFVDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnBDTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VTBGRGVFSTdTMEZEUmp0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTTdRVUZGUkRzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNVMEZCVXl4RFFVRkRMRWxCUVZrN1NVRkRjRU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJJc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJWb3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmJFSXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRmNFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVVTNReXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlJXNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzBsQlJXNURMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVUdEpRVU01UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRRaXhQUVVGUExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzSkZMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UwMWhkSEpwZUN3Z1ZtVmpkRzl5TENCRGIyOXlaR2x1WVhSbGN5d2dWbVZqZEc5eWN5d2dSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlHWnliMjBnSnk0dmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdHlZVzVrYjIxR2JHOWhkQ3dnY21GdVpHOXRTVzUwZlNCbWNtOXRJQ2N1TDNKaGJtUnZiU2M3WEc1Y2JpOHFLbHh1SUNvZ1FYTnpaWEowY3lCaElHTnZibVJwZEdsdmJpQmllU0IwYUhKdmQybHVaeUJoYmlCRmNuSnZjaTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0amIyNWthWFJwYjI0OVptRnNjMlZkSUVOdmJtUnBkR2x2YmlCMGJ5QmhjM05sY25RdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjFsYzNOaFoyVTlKMEZ6YzJWeWRHbHZiaUJsY25KdmNpNG5YU0JOWlhOellXZGxJSFJ2SUc5MWRIQjFkQzVjYmlBcUlFQjBhSEp2ZDNNZ2UwVnljbTl5ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZWE56WlhKMEtHTnZibVJwZEdsdmJqb2dZbTl2YkdWaGJpQTlJR1poYkhObExDQnRaWE56WVdkbE9pQnpkSEpwYm1jZ1BTQW5RWE56WlhKMGFXOXVJR1Z5Y205eUxpY3BJSHRjYmlBZ2FXWWdLQ0ZqYjI1a2FYUnBiMjRwWEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHMWxjM05oWjJVcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nYm1WM0lIUjNieTFrYVcxbGJuTnBiMjVoYkNCaGNuSmhlU0JoYm1RZ1ptbHNiSE1nYVhRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHUnBiV1Z1YzJsdmJqRWdWR2hsSUdacGNuTjBJR1JwYldWdWMybHZiaUJ2WmlCMGFHVWdZMjl2Y21ScGJtRjBaWE1nS0c1MWJXSmxjaUJ2WmlCeWIzZHpLUzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCa2FXMWxibk5wYjI0eUlGUm9aU0J6WldOdmJtUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQmpiMjl5WkdsdVlYUmxjeUFvYm5WdFltVnlJRzltSUdOdmJIVnRibk1wTGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdG1hV3hzUFRCZElFRWdkbUZzZFdVZ2RHOGdabWxzYkNCMGFHVWdZMjl2Y21ScGJtRjBaWE1nZDJsMGFDNWNiaUFxSUVCeVpYUjFjbTRnZTBOdmIzSmthVzVoZEdWemZTQkJJSFIzYnkxa2FXMWxibk5wYjI1aGJDQm1hV3hzWldRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2lCQWRHOWtieUJOYVdkb2RDQmlaU0J6Ykc5M0lITnBibU5sSUhWelpXUWdRWEp5WVhrdWJXRndMaUJRY205aVlXSnNlU0J1WldWa2N5QndaWEptYjNKdFlXNWpaU0J5WlhacGMybHZiaTVjYmlBcUwxeHVablZ1WTNScGIyNGdhVzVwZEVOdmIzSmthVzVoZEdWektHUnBiV1Z1YzJsdmJqRTZJRzUxYldKbGNpd2daR2x0Wlc1emFXOXVNam9nYm5WdFltVnlMQ0JtYVd4c09pQnVkVzFpWlhJZ1BTQXdLVG9nUTI5dmNtUnBibUYwWlhNZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLR1JwYldWdWMybHZiakVwTG1acGJHd29abWxzYkNrdWJXRndLQ2dwSUQwK0lDaHVaWGNnVm1WamRHOXlLR1JwYldWdWMybHZiaklwTG1acGJHd29abWxzYkNrcEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCVWNtRnVjM0J2YzJVZ2JXRjBjbWw0TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1RXRjBjbWw0ZlNCdFlYUnlhWGdnVkdobElHMWhkSEpwZUNCMGJ5QmlaU0IwY21GdWMzQnZjMlZrTGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQlVjbUZ1YzNCdmMyVmtJRzFoZEhKcGVDNWNiaUFxSUVCMGIyUnZJRTFwWjJoMElHSmxJSE5zYjNjZ2MybHVZMlVnZFhObFpDQkJjbkpoZVM1dFlYQXVJRkJ5YjJKaFlteDVJRzVsWldSeklIQmxjbVp2Y20xaGJtTmxJSEpsZG1semFXOXVMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RISmhibk53YjNObFRXRjBjbWw0S0cxaGRISnBlRG9nVFdGMGNtbDRLVG9nVFdGMGNtbDRJSHRjYmlBZ2NtVjBkWEp1SUc1bGR5QkJjbkpoZVNodFlYUnlhWGhiTUYwdWJHVnVaM1JvS1M1bWFXeHNLREFwWEc0Z0lDQWdMbTFoY0Nnb1h5d2dhU2tnUFQ0Z0tHNWxkeUJXWldOMGIzSW9iV0YwY21sNExteGxibWQwYUNrdVptbHNiQ2d3S1M1dFlYQW9LRjhzSUdvcElEMCtJQ2h0WVhSeWFYaGJhbDFiYVYwcEtTa3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFRmtaSE1nZEhkdklIWmxZM1J2Y25NZ2QybDBhQ0IwYUdVZ2MyVmpiMjVrSUc5dVpTQjBieUJpWlNCdGRXeDBhWEJzYVdWa0lHSjVJSFJvWlNCbmFYWmxiaUJ5WVhScGJ5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlJSFJ2SUdGa1pDNWNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0J4SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5SUhSdklHRmtaQzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmJYVnNkR2x3YkdsbGNqMHhYU0JCSUcxMWJIUnBjR3hwWlhJZ2RHOGdZbVVnZFhObFpDQmlaV1p2Y21VZ2RHaGxJSE5sWTI5dVpDQjJaV04wYjNJZ2FYTWdZV1JrWldRdVhHNGdLaUJBY21WMGRYSnVJSHRXWldOMGIzSjlJRTVsZHlCMlpXTjBiM0lnWTI5dWRHRnBibVZrSUhSb1pTQnlaWE4xYkhRZ2IyWWdiM0JsY21GMGFXOXVJSEFyYlhWc2RHbHdiR2xsY2lweExseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZG1WamRHOXlRV1JrS0hBNklGWmxZM1J2Y2l3Z2NUb2dWbVZqZEc5eUxDQnRkV3gwYVhCc2FXVnlPaUJ1ZFcxaVpYSWdQU0F4S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2NDNXNaVzVuZEdnN1hHNWNiaUFnWVhOelpYSjBLRzVKZEdWdGN5QTlQU0J4TG14bGJtZDBhQ3dnSjFabFkzUnZjaUJzWlc1bmRHaHpJR1J2SUc1dmRDQnRZWFJqYUM0bktUdGNibHh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSEF1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCd1cybGRJQ3NnYlhWc2RHbHdiR2xsY2lBcUlIRmJhVjA3WEc1Y2JpQWdjbVYwZFhKdUlIUnZkR0ZzTzF4dWZWeHVYRzR2S2lwY2JpQXFJRk4xYlhNZ2RHaGxJSFpsWTNSdmNpZHpJR2wwWlcxekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCMklGUm9aU0IyWldOMGIzSWdkRzhnWW1VZ2MzVnRiV1ZrTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQlVhR1VnZG1WamRHOXlKM01nYVhSbGJYTWdjM1Z0TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJwZEdWdGMxTjFiU2gyT2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQnNaWFFnZEc5MFlXd2dQU0F3TzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCMGIzUmhiQ0FyUFNCMlcybGRPMXh1WEc0Z0lISmxkSFZ5YmlCMGIzUmhiRHRjYm4xY2JseHVMeW9xWEc0Z0tpQlRkWEZoY21WeklIUm9aU0IyWldOMGIzSW5jeUJwZEdWdGN5NWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2RpQlVhR1VnZG1WamRHOXlJSFJ2SUhOeGRXRnlaUzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1FTQnVaWGNnZG1WamRHOXlJR052Ym5SaGFXNXBibWNnZEdobElHOXlhV2RwYm1Gc0ozTWdhWFJsYlhNZ2MzRjFZWEpsWkM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZG1WamRHOXlVM0YxWVhKbEtIWTZJRlpsWTNSdmNpazZJRlpsWTNSdmNpQjdYRzRnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSFl1YkdWdVozUm9PMXh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCMlcybGRJQ29nZGx0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pNWlc1bmRHZ29kam9nVm1WamRHOXlLVG9nYm5WdFltVnlJSHRjYmlBZ2JHVjBJSE54Y2xOMWJUb2diblZ0WW1WeUlEMGdNRHRjYmlBZ1ptOXlJQ2hzWlhRZ2FUb2diblZ0WW1WeUlEMGdNRHNnYVNBOElIWXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdjM0Z5VTNWdElDczlJSFpiYVYwZ0tpQjJXMmxkTzF4dUlDQnlaWFIxY200Z1RXRjBhQzV6Y1hKMEtITnhjbE4xYlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSkViM1JRY205a2RXTjBLSFl4T2lCV1pXTjBiM0lzSUhZeU9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JwWmlBb2RqRXViR1Z1WjNSb0lDRTlJSFl5TG14bGJtZDBhQ2xjYmlBZ0lDQjBhSEp2ZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JrYVdabUlEMGdkbVZqZEc5eVFXUmtLSEFzSUhFc0lDMHhLVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1JRDBnZG1WamRHOXlVM0YxWVhKbEtHUnBabVlwTzF4dUlDQmpiMjV6ZENCemNXUnBabVpUZFcxdElEMGdhWFJsYlhOVGRXMG9jM0ZrYVdabUtUdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h6Y1dScFptWlRkVzF0S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWkdsemRHRnVZMlVnYldGMGNtbDRJSFZ6YVc1bklHRWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWMzMGdaR0YwWVNCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNdVhHNGdLaUJBY0dGeVlXMGdlMFJwYzNSaGJtTmxUV1YwY21samZTQmthWE4wWVc1alpTQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRU5oYkdOMWJHRjBaV1FnWTNWemRHOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1SmRHVnRjenNnS3l0cEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJR2tnS3lBeE95QnFJRHdnYmtsMFpXMXpPeUFySzJvcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdRNklHNTFiV0psY2lBOUlDaGtZWFJoVzJsZElEMDlJRzUxYkd3cElIeDhJQ2hrWVhSaFcycGRJRDA5SUc1MWJHd3BJRDhnTUNBNklHUnBjM1JoYm1ObEtHUmhkR0ZiYVYwc0lHUmhkR0ZiYWwwcE8xeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnYldGMGNtbDRXMnBkVzJsZElEMGdaRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHMWhkSEpwZUR0Y2JuMWNibHh1THlvcUlFZGxibVZ5WVhSbGN5QmhjbkpoZVNCbWNtOXRJR0VnY21GdVoyVWdXMkpsWjJsdU95QmxibVJkSUc5eUlGdGlaV2RwYmpzZ1pXNWtLU0JwWmlCbGJtUkZlR05zZFhOcGRtVXVJQ29xTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGJsSmhibWRsS0dKbFoybHVPaUJ1ZFcxaVpYSXNJR1Z1WkRvZ2JuVnRZbVZ5TENCbGJtUkZlR05zZFhOcGRtVWdQU0JtWVd4elpTazZJRWx1ZERNeVFYSnlZWGtnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCbGJtUWdMU0JpWldkcGJpQXJJQ2hsYm1SRmVHTnNkWE5wZG1VZ1B5QXdJRG9nTVNrN1hHNGdJR052Ym5OMElITmxjbWxsY3lBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0c1SmRHVnRjeWs3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNsY2JpQWdJQ0J6WlhKcFpYTmJhVjBnUFNCaVpXZHBiaUFySUdrN1hHNWNiaUFnY21WMGRYSnVJSE5sY21sbGN6dGNibjFjYmx4dUlDOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCdmNtUmxjaUJ2WmlCMllXeDFaWE1nWVhNZ2FXWWdkR2hsZVNCaGNtVWdjMjl5ZEdWa0xseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlIWmhiSFZsY3lCSmJuQjFkQ0JoY25KaGVTNWNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNKbGRtVnljMlU5Wm1Gc2MyVmRJRmRvWlhSb1pYSWdkRzhnY21WMGRYSnVJSEpsZG1WeWMyVmtJRzl5WkdWeUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlXMTE5SUZSb1pTQnZjbVJsY2lCamIyMXdkWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0Z5WjFOdmNuUW9kbUZzZFdWek9pQmhibmxiWFN3Z2NtVjJaWEp6WlNBOUlHWmhiSE5sS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JqYjI1emRDQnpiM0owWm00Z1BTQnlaWFpsY25ObElEOGdLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2tnUFQ0Z0tHSmJNRjBnTFNCaFd6QmRLU0E2SUNoaE9pQmhibmxiWFN3Z1lqb2dZVzU1VzEwcElEMCtJQ2hoV3pCZElDMGdZbHN3WFNrN1hHNGdJR052Ym5OMElHUmxZMjl5SUQwZ0tIWTZJR0Z1ZVN3Z2FUb2diblZ0WW1WeUtTQTlQaUJiZGl3Z2FWMDdJQzh2SUhObGRDQnBibVJsZUNCMGJ5QjJZV3gxWlZ4dUlDQmpiMjV6ZENCMWJtUmxZMjl5SUQwZ0tHRTZJR0Z1ZVZ0ZEtTQTlQaUJoV3pGZE95QXZMeUJzWldGMlpTQnZibXg1SUdsdVpHVjRYRzRnSUdOdmJuTjBJRjloY21kemIzSjBJRDBnS0dGeWNqb2dZVzU1VzEwcElEMCtJR0Z5Y2k1dFlYQW9aR1ZqYjNJcExuTnZjblFvYzI5eWRHWnVLUzV0WVhBb2RXNWtaV052Y2lrN1hHNGdJSEpsZEhWeWJpQmZZWEpuYzI5eWRDaDJZV3gxWlhNcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZKbGRIVnlibk1nZEdobElHbHVaR1Y0WlhNZ2IyWWdkR2hsSUcxdmMzUWdaR2wyWlhKelpTQnZZbXBsWTNSeklHRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1pHbHpkQ0JtZFc1amRHbHZibHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUd4bGJtZDBhQ0IwYjNSaGJDQnVkVzFpWlhJZ2IyWWdiMkpxWldOMGMxeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzRnYm5WdFltVnlJRzltSUdScGRtVnljMlVnWld4bGJXVnVkSE1nZEc4Z1ptbHVaRnh1SUNvZ1FIQmhjbUZ0SUhzb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5ZlNCa2FYTjBJR0VnWm5WdVkzUnBiMjRnZDJocFkyZ2dZMkZzWTNWc1lYUmxjeUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSGR2SUc5aWFtVmpkSE1nZFhOcGJtY2dkR2hsYVhJZ2FXNWtaWGhsYzF4dUlDb2dRSEpsZEhWeWJuTWdlMjUxYldKbGNsdGRmU0JVYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhOY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVScGRtVnljMlZUZFdKelpYUW9iR1Z1WjNSb09pQnVkVzFpWlhJc0lHNDZJRzUxYldKbGNpd2daR2x6ZERvZ0tHa3hPaUJ1ZFcxaVpYSXNJR2t5T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lrNklHNTFiV0psY2x0ZElIdGNiaUFnWm5WdVkzUnBiMjRnYldGNFFua29kbUZzZFdWek9pQkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c0lHOXlaR1Z5UW5rNklDaHBPaUJ1ZFcxaVpYSXBJRDArSUc1MWJXSmxjaWtnZTF4dUlDQWdJR3hsZENCdFlYaFdZV3gxWlNBOUlHNTFiR3c3WEc0Z0lDQWdiR1YwSUcxaGVFOXlaR1Z5UW5rZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCbGJHVnRaVzUwSUc5bUlIWmhiSFZsY3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWld4bGJXVnVkRTl5WkdWeVFua2dQU0J2Y21SbGNrSjVLR1ZzWlcxbGJuUXBPMXh1SUNBZ0lDQWdhV1lnS0cxaGVFOXlaR1Z5UW5rZ1BUMGdiblZzYkNCOGZDQmxiR1Z0Wlc1MFQzSmtaWEpDZVNBK0lHMWhlRTl5WkdWeVFua3BJSHRjYmlBZ0lDQWdJQ0FnYldGNFZtRnNkV1VnUFNCbGJHVnRaVzUwTzF4dUlDQWdJQ0FnSUNCdFlYaFBjbVJsY2tKNUlEMGdaV3hsYldWdWRFOXlaR1Z5UW5rN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnRZWGhXWVd4MVpUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElITjFZbk5sZENBOUlGdHlZVzVrYjIxSmJuUW9iR1Z1WjNSb0lDMGdNU2xkTzF4dUlDQmpiMjV6ZENCamIyMXdiR1Z0Wlc1MElEMGdibVYzSUZObGRDZ3BPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2diR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0JwWmlBb0lYTjFZbk5sZEM1cGJtTnNkV1JsY3locEtTbGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVZV1JrS0drcE8xeHVJQ0I5WEc1Y2JpQWdkMmhwYkdVZ0tITjFZbk5sZEM1c1pXNW5kR2dnUENCdUtTQjdYRzRnSUNBZ1kyOXVjM1FnYVdSNElEMGdiV0Y0UW5rb1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExuWmhiSFZsY3lncElHRnpJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpeGNiaUFnSUNBZ0lDaHBLU0E5UGlCTllYUm9MbTFwYmk1aGNIQnNlU2hOWVhSb0xDQnpkV0p6WlhRdWJXRndLR1oxYm1OMGFXOXVLSFpoYkN3Z2FXNWtaWGdwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdScGMzUW9hU3dnZG1Gc0tUdGNiaUFnSUNBZ0lIMHBLU2s3WEc0Z0lDQWdhV1lnS0dsa2VDa2dlMXh1SUNBZ0lDQWdjM1ZpYzJWMExuQjFjMmdvYVdSNEtUdGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVaR1ZzWlhSbEtHbGtlQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnpkV0p6WlhRN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUJ1YjNKdFlXeHBlbVZrSUhabFkzUnZjbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUdSaGRHRWdiblZ0WlhKcFkyRnNJR0Z5Y21GNVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNKdFlXeHBlbVVvWkdGMFlUb2dWbVZqZEc5eUtUb2dWbVZqZEc5eUlIdGNiaUFnYkdWMElHMWxZVzRnUFNBd08xeHVJQ0JzWlhRZ2MzUmtJRDBnTUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdiV1ZoYmlBclBTQmtZWFJoVzJsZE8xeHVYRzRnSUcxbFlXNGdMejBnWkdGMFlTNXNaVzVuZEdnN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSE4wWkNBclBTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDb2dLR1JoZEdGYmFWMGdMU0J0WldGdUtUdGNibHh1SUNCemRHUWdQU0JOWVhSb0xuTnhjblFvYzNSa0lDOGdaR0YwWVM1c1pXNW5kR2dwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlTNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQmtZWFJoVzJsZElEMGdLR1JoZEdGYmFWMGdMU0J0WldGdUtTQXZJSE4wWkR0Y2JseHVJQ0J5WlhSMWNtNGdaR0YwWVR0Y2JuMWNibHh1THlvcVhHNGdLaUJHYVc1a2N5QnpaWFFnWkdsbVptVnlaVzVqWlNCaVpYUjNaV1Z1SUhSM2J5QnNhWE4wY3k1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHRWdWR2hsSUdacGNuTjBJR3hwYzNRdVhHNGdLaUJBY0dGeVlXMGdlMkZ1ZVZ0ZGZTQmlJRlJvWlNCelpXTnZibVFnYkdsemRDNWNiaUFxSUVCeVpYUjFjbTRnZTJGdWVWdGRmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyVjBSR2xtWm1WeVpXNWpaU2hoT2lCaGJubGJYU3dnWWpvZ1lXNTVXMTBwT2lCaGJubGJYU0I3WEc0Z0lHTnZibk4wSUdKVFpYUWdQU0J1WlhjZ1UyVjBLR0lwTzF4dUlDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHVaWGNnVTJWMEtHRXVabWxzZEdWeUtDaDRLU0E5UGlBaFlsTmxkQzVvWVhNb2VDa3BLUzUyWVd4MVpYTW9LU2s3WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5jb25zdCBwZXEgPSBuZXcgVWludDMyQXJyYXkoMHgxMDAwMCk7XG5jb25zdCBteWVyc18zMiA9IChhLCBiKSA9PiB7XG4gIGNvbnN0IG4gPSBhLmxlbmd0aDtcbiAgY29uc3QgbSA9IGIubGVuZ3RoO1xuICBjb25zdCBsc3QgPSAxIDw8IChuIC0gMSk7XG4gIGxldCBwdiA9IC0xO1xuICBsZXQgbXYgPSAwO1xuICBsZXQgc2MgPSBuO1xuICBsZXQgaSA9IG47XG4gIHdoaWxlIChpLS0pIHtcbiAgICBwZXFbYS5jaGFyQ29kZUF0KGkpXSB8PSAxIDw8IGk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IG07IGkrKykge1xuICAgIGxldCBlcSA9IHBlcVtiLmNoYXJDb2RlQXQoaSldO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBlcSB8PSAoKGVxICYgcHYpICsgcHYpIF4gcHY7XG4gICAgbXYgfD0gfihlcSB8IHB2KTtcbiAgICBwdiAmPSBlcTtcbiAgICBpZiAobXYgJiBsc3QpIHtcbiAgICAgIHNjKys7XG4gICAgfVxuICAgIGlmIChwdiAmIGxzdCkge1xuICAgICAgc2MtLTtcbiAgICB9XG4gICAgbXYgPSAobXYgPDwgMSkgfCAxO1xuICAgIHB2ID0gKHB2IDw8IDEpIHwgfih4diB8IG12KTtcbiAgICBtdiAmPSB4djtcbiAgfVxuICBpID0gbjtcbiAgd2hpbGUgKGktLSkge1xuICAgIHBlcVthLmNoYXJDb2RlQXQoaSldID0gMDtcbiAgfVxuICByZXR1cm4gc2M7XG59O1xuXG5jb25zdCBteWVyc194ID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbiA9IGEubGVuZ3RoO1xuICBjb25zdCBtID0gYi5sZW5ndGg7XG4gIGNvbnN0IG1oYyA9IFtdO1xuICBjb25zdCBwaGMgPSBbXTtcbiAgY29uc3QgaHNpemUgPSBNYXRoLmNlaWwobiAvIDMyKTtcbiAgY29uc3QgdnNpemUgPSBNYXRoLmNlaWwobSAvIDMyKTtcbiAgbGV0IHNjb3JlID0gbTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoc2l6ZTsgaSsrKSB7XG4gICAgcGhjW2ldID0gLTE7XG4gICAgbWhjW2ldID0gMDtcbiAgfVxuICBsZXQgaiA9IDA7XG4gIGZvciAoOyBqIDwgdnNpemUgLSAxOyBqKyspIHtcbiAgICBsZXQgbXYgPSAwO1xuICAgIGxldCBwdiA9IC0xO1xuICAgIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKDMyLCBtKSArIHN0YXJ0O1xuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gICAgfVxuICAgIHNjb3JlID0gbTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgY29uc3QgZXEgPSBwZXFbYS5jaGFyQ29kZUF0KGkpXTtcbiAgICAgIGNvbnN0IHBiID0gKHBoY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgICAgY29uc3QgeHYgPSBlcSB8IG12O1xuICAgICAgY29uc3QgeGggPSAoKCgoZXEgfCBtYikgJiBwdikgKyBwdikgXiBwdikgfCBlcSB8IG1iO1xuICAgICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgICAgbGV0IG1oID0gcHYgJiB4aDtcbiAgICAgIGlmICgocGggPj4+IDMxKSBeIHBiKSB7XG4gICAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIGlmICgobWggPj4+IDMxKSBeIG1iKSB7XG4gICAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgICBtdiA9IHBoICYgeHY7XG4gICAgfVxuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgfVxuICB9XG4gIGxldCBtdiA9IDA7XG4gIGxldCBwdiA9IC0xO1xuICBjb25zdCBzdGFydCA9IGogKiAzMjtcbiAgY29uc3QgZW5kID0gTWF0aC5taW4oMzIsIG0gLSBzdGFydCkgKyBzdGFydDtcbiAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gIH1cbiAgc2NvcmUgPSBtO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIGNvbnN0IGVxID0gcGVxW2EuY2hhckNvZGVBdChpKV07XG4gICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgIGxldCBtaCA9IHB2ICYgeGg7XG4gICAgc2NvcmUgKz0gKHBoID4+PiAobSAtIDEpKSAmIDE7XG4gICAgc2NvcmUgLT0gKG1oID4+PiAobSAtIDEpKSAmIDE7XG4gICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgaWYgKChtaCA+Pj4gMzEpIF4gbWIpIHtcbiAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgcGggPSAocGggPDwgMSkgfCBwYjtcbiAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgIHB2ID0gbWggfCB+KHh2IHwgcGgpO1xuICAgIG12ID0gcGggJiB4djtcbiAgfVxuICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCBlbmQ7IGsrKykge1xuICAgIHBlcVtiLmNoYXJDb2RlQXQoayldID0gMDtcbiAgfVxuICByZXR1cm4gc2NvcmU7XG59O1xuXG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiB7XG4gIGlmIChhLmxlbmd0aCA+IGIubGVuZ3RoKSB7XG4gICAgY29uc3QgdG1wID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gdG1wO1xuICB9XG4gIGlmIChhLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiLmxlbmd0aDtcbiAgfVxuICBpZiAoYS5sZW5ndGggPD0gMzIpIHtcbiAgICByZXR1cm4gbXllcnNfMzIoYSwgYik7XG4gIH1cbiAgcmV0dXJuIG15ZXJzX3goYSwgYik7XG59O1xuXG5jb25zdCBjbG9zZXN0ID0gKHN0ciwgYXJyKSA9PiB7XG4gIGxldCBtaW5fZGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgbGV0IG1pbl9pbmRleCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKHN0ciwgYXJyW2ldKTtcbiAgICBpZiAoZGlzdCA8IG1pbl9kaXN0YW5jZSkge1xuICAgICAgbWluX2Rpc3RhbmNlID0gZGlzdDtcbiAgICAgIG1pbl9pbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJbbWluX2luZGV4XTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjbG9zZXN0LCBkaXN0YW5jZVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBSZWZlcmVuY2U6IGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL2phcm8tYW5kLWphcm8td2lua2xlci1zaW1pbGFyaXR5L1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5qYXJvV2lua2xlciA9IGV4cG9ydHMuamFybyA9IHZvaWQgMDtcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFybyhzdHIxLCBzdHIyLCBvcHRpb25zKSB7XG4gICAgLy8gRXhpdCBlYXJseSBpZiBlaXRoZXIgYXJlIGVtcHR5LlxuICAgIGlmIChzdHIxLmxlbmd0aCA9PT0gMCB8fCBzdHIyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0byB1cHBlciBpZiBjYXNlLXNlbnNpdGl2ZSBpcyBmYWxzZS5cbiAgICBpZiAob3B0aW9ucyAmJiAhb3B0aW9ucy5jYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIHN0cjEgPSBzdHIxLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHN0cjIgPSBzdHIyLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIC8vIEV4YWN0IG1hdGNoXG4gICAgaWYgKHN0cjEgPT09IHN0cjIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIC8vIE51bWJlciBvZiBtYXRjaGVzXG4gICAgdmFyIG0gPSAwO1xuICAgIC8vIExlbmd0aCBvZiB0d28gU3RyaW5nc1xuICAgIHZhciBsZW4xID0gc3RyMS5sZW5ndGg7XG4gICAgdmFyIGxlbjIgPSBzdHIyLmxlbmd0aDtcbiAgICAvLyBNYXhpbXVtIGRpc3RhbmNlXG4gICAgdmFyIHdpbmRvdyA9IE1hdGguZmxvb3IoTWF0aC5tYXgobGVuMSwgbGVuMikgLyAyKSAtIDE7XG4gICAgLy8gSGFzaCBmb3IgbWF0Y2hlc1xuICAgIHZhciBzdHIxSGFzaCA9IG5ldyBBcnJheShsZW4xKTtcbiAgICB2YXIgc3RyMkhhc2ggPSBuZXcgQXJyYXkobGVuMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGkgLSB3aW5kb3cpOyBqIDw9IE1hdGgubWluKGxlbjIsIGkgKyB3aW5kb3cgKyAxKTsgaisrKSB7XG4gICAgICAgICAgICBpZiAoIXN0cjFIYXNoW2ldICYmICFzdHIySGFzaFtqXSAmJiBzdHIxW2ldID09PSBzdHIyW2pdKSB7XG4gICAgICAgICAgICAgICAgKyttO1xuICAgICAgICAgICAgICAgIHN0cjFIYXNoW2ldID0gc3RyMkhhc2hbal0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEV4aXQgZWFybHkgaWYgbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kLlxuICAgIGlmIChtID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBDb3VudCB0aGUgdHJhbnNwb3NpdGlvbnMuXG4gICAgdmFyIHQgPSAwO1xuICAgIHZhciBwb2ludCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgaWYgKHN0cjFIYXNoW2ldKSB7XG4gICAgICAgICAgICB3aGlsZSAoIXN0cjJIYXNoW3BvaW50XSkge1xuICAgICAgICAgICAgICAgIHBvaW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RyMS5jaGFyQXQoaSkgIT09IHN0cjIuY2hhckF0KHBvaW50KyspKSB7XG4gICAgICAgICAgICAgICAgdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHQgLz0gMjtcbiAgICByZXR1cm4gKG0gLyBsZW4xICsgbSAvIGxlbjIgKyAobSAtIHQpIC8gbSkgLyAzO1xufVxuZXhwb3J0cy5qYXJvID0gamFybztcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFyb1dpbmtsZXIoc3RyMSwgc3RyMiwgb3B0aW9ucykge1xuICAgIC8vIEphcm8gRGlzdGFuY2VcbiAgICB2YXIgamFyb0Rpc3QgPSBqYXJvKHN0cjEsIHN0cjIsIG9wdGlvbnMpO1xuICAgIC8vIFNhbWUgcHJlZml4IGxlbmd0aCwgbWF4aXVtIGlzIDRcbiAgICB2YXIgcHJlZml4ID0gMDtcbiAgICBpZiAoamFyb0Rpc3QgPiAwLjcpIHtcbiAgICAgICAgdmFyIG1pbkluZGV4ID0gTWF0aC5taW4oc3RyMS5sZW5ndGgsIHN0cjIubGVuZ3RoKTtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoc3RyMVtpXSA9PT0gc3RyMltpXSAmJiBpIDwgNCAmJiBpIDwgbWluSW5kZXgpIHtcbiAgICAgICAgICAgICsrcHJlZml4O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGphcm9EaXN0ICs9IDAuMSAqIHByZWZpeCAqICgxIC0gamFyb0Rpc3QpO1xuICAgIH1cbiAgICByZXR1cm4gamFyb0Rpc3Q7XG59XG5leHBvcnRzLmphcm9XaW5rbGVyID0gamFyb1dpbmtsZXI7XG4iLCJjbGFzcyBDZWxsIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGFyZW50SSA9IDA7XG4gICAgICAgIHRoaXMucGFyZW50SiA9IDA7XG4gICAgfVxufVxuO1xuZXhwb3J0IGNsYXNzIEFsaWduZWQge1xuICAgIGNvbnN0cnVjdG9yKHNlcTFfLCBzZXEyXywgc2NvcmVfKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9IHNlcTFfO1xuICAgICAgICB0aGlzLnNlcTIgPSBzZXEyXztcbiAgICAgICAgdGhpcy5zY29yZSA9IHNjb3JlXztcbiAgICB9XG59XG47XG5leHBvcnQgY2xhc3MgU2VxdWVuY2VBbGlnbm1lbnQge1xuICAgIGNvbnN0cnVjdG9yKHNlcTFfLCBzZXEyXywgZ2FwXywgYWxpZ25HcmlkXyA9IFwiXCIpIHtcbiAgICAgICAgdGhpcy5zZXExID0gJyc7XG4gICAgICAgIHRoaXMuc2VxMiA9ICcnO1xuICAgICAgICB0aGlzLmdhcCA9IDE7XG4gICAgICAgIHRoaXMubGVuMSA9IDA7XG4gICAgICAgIHRoaXMubGVuMiA9IDA7XG4gICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgIHRoaXMuYWxpZ25HcmlkID0gW107XG4gICAgICAgIHRoaXMuc2NvcmVzID0gW107XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB7fTtcbiAgICAgICAgdGhpcy5CTE9TVU00NSA9IFtbNSwgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDAsIC0yLCAtMiwgMCwgLTEsIC0xLCAwLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDcsIDAsIC0xLCAtMywgMSwgMCwgLTIsIDAsIC0zLCAtMiwgMywgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMiwgLTEsIC0yLCAtMSwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgNiwgMiwgLTIsIDAsIDAsIDAsIDEsIC0yLCAtMywgMCwgLTIsIC0yLCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgNCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDIsIDcsIC0zLCAwLCAyLCAtMSwgMCwgLTQsIC0zLCAwLCAtMywgLTQsIC0xLCAwLCAtMSwgLTQsIC0yLCAtMywgNSwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0yLCAtMywgMTIsIC0zLCAtMywgLTMsIC0zLCAtMywgLTIsIC0zLCAtMiwgLTIsIC00LCAtMSwgLTEsIC01LCAtMywgLTEsIC0yLCAtMywgLTIsIC01XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDYsIDIsIC0yLCAxLCAtMiwgLTIsIDEsIDAsIC00LCAtMSwgMCwgLTEsIC0yLCAtMSwgLTMsIDAsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC0zLCAyLCA2LCAtMiwgMCwgLTMsIC0yLCAxLCAtMiwgLTMsIDAsIDAsIC0xLCAtMywgLTIsIC0zLCAxLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMSwgLTMsIC0yLCAtMiwgNywgLTIsIC00LCAtMywgLTIsIC0yLCAtMywgLTIsIDAsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDAsIDEsIDAsIC0zLCAxLCAwLCAtMiwgMTAsIC0zLCAtMiwgLTEsIDAsIC0yLCAtMiwgLTEsIC0yLCAtMywgMiwgLTMsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTQsIC0zLCAtMiwgLTMsIC00LCAtMywgNSwgMiwgLTMsIDIsIDAsIC0yLCAtMiwgLTEsIC0yLCAwLCAzLCAtMywgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMywgLTMsIC0yLCAtMiwgLTIsIC0zLCAtMiwgMiwgNSwgLTMsIDIsIDEsIC0zLCAtMywgLTEsIC0yLCAwLCAxLCAtMywgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDMsIDAsIDAsIC0zLCAxLCAxLCAtMiwgLTEsIC0zLCAtMywgNSwgLTEsIC0zLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0yLCAwLCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTIsIC0zLCAtMiwgMCwgLTIsIC0yLCAwLCAyLCAyLCAtMSwgNiwgMCwgLTIsIC0yLCAtMSwgLTIsIDAsIDEsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC0yLCAtNCwgLTIsIC00LCAtMywgLTMsIC0yLCAwLCAxLCAtMywgMCwgOCwgLTMsIC0yLCAtMSwgMSwgMywgMCwgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0xLCAtNCwgLTEsIDAsIC0yLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0zLCA5LCAtMSwgLTEsIC0zLCAtMywgLTMsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIDAsIDAsIC0xLCAtMiwgLTMsIC0xLCAtMiwgLTIsIC0xLCA0LCAyLCAtNCwgLTIsIC0xLCAwLCAwLCAwLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDIsIDUsIC0zLCAtMSwgMCwgMCwgLTEsIDAsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC00LCAtNCwgLTUsIC0yLCAtMywgLTIsIC0zLCAtMiwgLTIsIC0yLCAtMiwgMSwgLTMsIC00LCAtMywgMTUsIDMsIC0zLCAtNCwgLTIsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0zLCAyLCAwLCAwLCAtMSwgMCwgMywgLTMsIC0yLCAtMSwgMywgOCwgLTEsIC0yLCAtMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMiwgLTMsIC0zLCAtMSwgLTMsIC0zLCAtMywgLTMsIDMsIDEsIC0yLCAxLCAwLCAtMywgLTEsIDAsIC0zLCAtMSwgNSwgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgNCwgNSwgLTIsIDAsIDEsIC0xLCAwLCAtMywgLTMsIDAsIC0yLCAtMywgLTIsIDAsIDAsIC00LCAtMiwgLTMsIDQsIDIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDEsIC0zLCA0LCA0LCAtMiwgMCwgLTMsIC0yLCAxLCAtMSwgLTMsIC0xLCAwLCAtMSwgLTIsIC0yLCAtMywgMiwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDAsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU01MCA9IFtbNSwgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMywgLTEsIDEsIDAsIC0zLCAtMiwgMCwgLTIsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCA3LCAtMSwgLTIsIC00LCAxLCAwLCAtMywgMCwgLTQsIC0zLCAzLCAtMiwgLTMsIC0zLCAtMSwgLTEsIC0zLCAtMSwgLTMsIC0xLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgNywgMiwgLTIsIDAsIDAsIDAsIDEsIC0zLCAtNCwgMCwgLTIsIC00LCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgNCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDIsIDgsIC00LCAwLCAyLCAtMSwgLTEsIC00LCAtNCwgLTEsIC00LCAtNSwgLTEsIDAsIC0xLCAtNSwgLTMsIC00LCA1LCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtNCwgLTIsIC00LCAxMywgLTMsIC0zLCAtMywgLTMsIC0yLCAtMiwgLTMsIC0yLCAtMiwgLTQsIC0xLCAtMSwgLTUsIC0zLCAtMSwgLTMsIC0zLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAwLCAtMywgNywgMiwgLTIsIDEsIC0zLCAtMiwgMiwgMCwgLTQsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMywgMCwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMiwgLTMsIDIsIDYsIC0zLCAwLCAtNCwgLTMsIDEsIC0yLCAtMywgLTEsIC0xLCAtMSwgLTMsIC0yLCAtMywgMSwgNSwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMywgMCwgLTEsIC0zLCAtMiwgLTMsIDgsIC0yLCAtNCwgLTQsIC0yLCAtMywgLTQsIC0yLCAwLCAtMiwgLTMsIC0zLCAtNCwgLTEsIC0yLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAtMSwgLTMsIDEsIDAsIC0yLCAxMCwgLTQsIC0zLCAwLCAtMSwgLTEsIC0yLCAtMSwgLTIsIC0zLCAyLCAtNCwgMCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTQsIC0zLCAtNCwgLTIsIC0zLCAtNCwgLTQsIC00LCA1LCAyLCAtMywgMiwgMCwgLTMsIC0zLCAtMSwgLTMsIC0xLCA0LCAtNCwgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTQsIC0yLCAtMiwgLTMsIC00LCAtMywgMiwgNSwgLTMsIDMsIDEsIC00LCAtMywgLTEsIC0yLCAtMSwgMSwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAtMSwgLTMsIDIsIDEsIC0yLCAwLCAtMywgLTMsIDYsIC0yLCAtNCwgLTEsIDAsIC0xLCAtMywgLTIsIC0zLCAwLCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC00LCAtMiwgMCwgLTIsIC0zLCAtMSwgMiwgMywgLTIsIDcsIDAsIC0zLCAtMiwgLTEsIC0xLCAwLCAxLCAtMywgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtNCwgLTUsIC0yLCAtNCwgLTMsIC00LCAtMSwgMCwgMSwgLTQsIDAsIDgsIC00LCAtMywgLTIsIDEsIDQsIC0xLCAtNCwgLTQsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTEsIC00LCAtMSwgLTEsIC0yLCAtMiwgLTMsIC00LCAtMSwgLTMsIC00LCAxMCwgLTEsIC0xLCAtNCwgLTMsIC0zLCAtMiwgLTEsIC0yLCAtNV0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIDAsIC0xLCAwLCAtMSwgMCwgLTEsIC0zLCAtMywgMCwgLTIsIC0zLCAtMSwgNSwgMiwgLTQsIC0yLCAtMiwgMCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMiwgNSwgLTMsIC0yLCAwLCAwLCAtMSwgMCwgLTVdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC01LCAtNSwgLTEsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTMsIC0xLCAxLCAtNCwgLTQsIC0zLCAxNSwgMiwgLTMsIC01LCAtMiwgLTMsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTMsIDIsIC0xLCAtMSwgLTIsIDAsIDQsIC0zLCAtMiwgLTIsIDIsIDgsIC0xLCAtMywgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTMsIC0zLCAtNCwgLTEsIC0zLCAtMywgLTQsIC00LCA0LCAxLCAtMywgMSwgLTEsIC0zLCAtMiwgMCwgLTMsIC0xLCA1LCAtNCwgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCA0LCA1LCAtMywgMCwgMSwgLTEsIDAsIC00LCAtNCwgMCwgLTMsIC00LCAtMiwgMCwgMCwgLTUsIC0zLCAtNCwgNSwgMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMSwgLTMsIDQsIDUsIC0yLCAwLCAtMywgLTMsIDEsIC0xLCAtNCwgLTEsIDAsIC0xLCAtMiwgLTIsIC0zLCAyLCA1LCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAwLCAtMywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNNjIgPSBbWzQsIC0xLCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDAsIC0zLCAtMiwgMCwgLTIsIC0xLCAwLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDUsIDAsIC0yLCAtMywgMSwgMCwgLTIsIDAsIC0zLCAtMiwgMiwgLTEsIC0zLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0zLCAtMSwgMCwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgMCwgNiwgMSwgLTMsIDAsIDAsIDAsIDEsIC0zLCAtMywgMCwgLTIsIC0zLCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgMywgMCwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDEsIDYsIC0zLCAwLCAyLCAtMSwgLTEsIC0zLCAtNCwgLTEsIC0zLCAtMywgLTEsIDAsIC0xLCAtNCwgLTMsIC0zLCA0LCAxLCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTMsIDksIC0zLCAtNCwgLTMsIC0zLCAtMSwgLTEsIC0zLCAtMSwgLTIsIC0zLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0zLCAtMywgLTIsIC00XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDUsIDIsIC0yLCAwLCAtMywgLTIsIDEsIDAsIC0zLCAtMSwgMCwgLTEsIC0yLCAtMSwgLTIsIDAsIDMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC00LCAyLCA1LCAtMiwgMCwgLTMsIC0zLCAxLCAtMiwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMSwgNCwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTEsIC0zLCAtMiwgLTIsIDYsIC0yLCAtNCwgLTQsIC0yLCAtMywgLTMsIC0yLCAwLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAtMSwgLTMsIDAsIDAsIC0yLCA4LCAtMywgLTMsIC0xLCAtMiwgLTEsIC0yLCAtMSwgLTIsIC0yLCAyLCAtMywgMCwgMCwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0zLCAtMywgLTEsIC0zLCAtMywgLTQsIC0zLCA0LCAyLCAtMywgMSwgMCwgLTMsIC0yLCAtMSwgLTMsIC0xLCAzLCAtMywgLTMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMywgLTQsIC0xLCAtMiwgLTMsIC00LCAtMywgMiwgNCwgLTIsIDIsIDAsIC0zLCAtMiwgLTEsIC0yLCAtMSwgMSwgLTQsIC0zLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAyLCAwLCAtMSwgLTMsIDEsIDEsIC0yLCAtMSwgLTMsIC0yLCA1LCAtMSwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0yLCAtMywgLTEsIDAsIC0yLCAtMywgLTIsIDEsIDIsIC0xLCA1LCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIDEsIC0zLCAtMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtMywgLTIsIC0zLCAtMywgLTMsIC0xLCAwLCAwLCAtMywgMCwgNiwgLTQsIC0yLCAtMiwgMSwgMywgLTEsIC0zLCAtMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMSwgLTMsIC0xLCAtMSwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTQsIDcsIC0xLCAtMSwgLTQsIC0zLCAtMiwgLTIsIC0xLCAtMiwgLTRdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgMCwgMCwgLTEsIC0yLCAtMiwgMCwgLTEsIC0yLCAtMSwgNCwgMSwgLTMsIC0yLCAtMiwgMCwgMCwgMCwgLTRdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCA1LCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTRdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC00LCAtMiwgLTIsIC0zLCAtMiwgLTIsIC0zLCAtMiwgLTMsIC0xLCAxLCAtNCwgLTMsIC0yLCAxMSwgMiwgLTMsIC00LCAtMywgLTIsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC0yLCAtMywgLTIsIC0xLCAtMiwgLTMsIDIsIC0xLCAtMSwgLTIsIC0xLCAzLCAtMywgLTIsIC0yLCAyLCA3LCAtMSwgLTMsIC0yLCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTMsIC0xLCAtMiwgLTIsIC0zLCAtMywgMywgMSwgLTIsIDEsIC0xLCAtMiwgLTIsIDAsIC0zLCAtMSwgNCwgLTMsIC0yLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAtMSwgMywgNCwgLTMsIDAsIDEsIC0xLCAwLCAtMywgLTQsIDAsIC0zLCAtMywgLTIsIDAsIC0xLCAtNCwgLTMsIC0zLCA0LCAxLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAxLCAtMywgMywgNCwgLTIsIDAsIC0zLCAtMywgMSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDEsIDQsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0yLCAwLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNODAgPSBbWzcsIC0zLCAtMywgLTMsIC0xLCAtMiwgLTIsIDAsIC0zLCAtMywgLTMsIC0xLCAtMiwgLTQsIC0xLCAyLCAwLCAtNSwgLTQsIC0xLCAtMywgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTMsIDksIC0xLCAtMywgLTYsIDEsIC0xLCAtNCwgMCwgLTUsIC00LCAzLCAtMywgLTUsIC0zLCAtMiwgLTIsIC01LCAtNCwgLTQsIC0yLCAwLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtMSwgOSwgMiwgLTUsIDAsIC0xLCAtMSwgMSwgLTYsIC02LCAwLCAtNCwgLTYsIC00LCAxLCAwLCAtNywgLTQsIC01LCA1LCAtMSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTMsIDIsIDEwLCAtNywgLTEsIDIsIC0zLCAtMiwgLTcsIC03LCAtMiwgLTYsIC02LCAtMywgLTEsIC0yLCAtOCwgLTYsIC02LCA2LCAxLCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtNiwgLTUsIC03LCAxMywgLTUsIC03LCAtNiwgLTcsIC0yLCAtMywgLTYsIC0zLCAtNCwgLTYsIC0yLCAtMiwgLTUsIC01LCAtMiwgLTYsIC03LCAtNCwgLThdLFxuICAgICAgICAgICAgWy0yLCAxLCAwLCAtMSwgLTUsIDksIDMsIC00LCAxLCAtNSwgLTQsIDIsIC0xLCAtNSwgLTMsIC0xLCAtMSwgLTQsIC0zLCAtNCwgLTEsIDUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMSwgMiwgLTcsIDMsIDgsIC00LCAwLCAtNiwgLTYsIDEsIC00LCAtNiwgLTIsIC0xLCAtMiwgLTYsIC01LCAtNCwgMSwgNiwgLTIsIC04XSxcbiAgICAgICAgICAgIFswLCAtNCwgLTEsIC0zLCAtNiwgLTQsIC00LCA5LCAtNCwgLTcsIC03LCAtMywgLTUsIC02LCAtNSwgLTEsIC0zLCAtNiwgLTYsIC02LCAtMiwgLTQsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTMsIDAsIDEsIC0yLCAtNywgMSwgMCwgLTQsIDEyLCAtNiwgLTUsIC0xLCAtNCwgLTIsIC00LCAtMiwgLTMsIC00LCAzLCAtNSwgLTEsIDAsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC01LCAtNiwgLTcsIC0yLCAtNSwgLTYsIC03LCAtNiwgNywgMiwgLTUsIDIsIC0xLCAtNSwgLTQsIC0yLCAtNSwgLTMsIDQsIC02LCAtNiwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC02LCAtNywgLTMsIC00LCAtNiwgLTcsIC01LCAyLCA2LCAtNCwgMywgMCwgLTUsIC00LCAtMywgLTQsIC0yLCAxLCAtNywgLTUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDMsIDAsIC0yLCAtNiwgMiwgMSwgLTMsIC0xLCAtNSwgLTQsIDgsIC0zLCAtNSwgLTIsIC0xLCAtMSwgLTYsIC00LCAtNCwgLTEsIDEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTYsIC0zLCAtMSwgLTQsIC01LCAtNCwgMiwgMywgLTMsIDksIDAsIC00LCAtMywgLTEsIC0zLCAtMywgMSwgLTUsIC0zLCAtMiwgLThdLFxuICAgICAgICAgICAgWy00LCAtNSwgLTYsIC02LCAtNCwgLTUsIC02LCAtNiwgLTIsIC0xLCAwLCAtNSwgMCwgMTAsIC02LCAtNCwgLTQsIDAsIDQsIC0yLCAtNiwgLTYsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtNCwgLTMsIC02LCAtMywgLTIsIC01LCAtNCwgLTUsIC01LCAtMiwgLTQsIC02LCAxMiwgLTIsIC0zLCAtNywgLTYsIC00LCAtNCwgLTIsIC0zLCAtOF0sXG4gICAgICAgICAgICBbMiwgLTIsIDEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTIsIC00LCAtNCwgLTEsIC0zLCAtNCwgLTIsIDcsIDIsIC02LCAtMywgLTMsIDAsIC0xLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMiwgLTIsIC0xLCAtMiwgLTMsIC0zLCAtMiwgLTMsIC0xLCAtMSwgLTQsIC0zLCAyLCA4LCAtNSwgLTMsIDAsIC0xLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC03LCAtOCwgLTUsIC00LCAtNiwgLTYsIC00LCAtNSwgLTQsIC02LCAtMywgMCwgLTcsIC02LCAtNSwgMTYsIDMsIC01LCAtOCwgLTUsIC01LCAtOF0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNCwgLTYsIC01LCAtMywgLTUsIC02LCAzLCAtMywgLTIsIC00LCAtMywgNCwgLTYsIC0zLCAtMywgMywgMTEsIC0zLCAtNSwgLTQsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC00LCAtNSwgLTYsIC0yLCAtNCwgLTQsIC02LCAtNSwgNCwgMSwgLTQsIDEsIC0yLCAtNCwgLTMsIDAsIC01LCAtMywgNywgLTYsIC00LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtMiwgNSwgNiwgLTYsIC0xLCAxLCAtMiwgLTEsIC02LCAtNywgLTEsIC01LCAtNiwgLTQsIDAsIC0xLCAtOCwgLTUsIC02LCA2LCAwLCAtMywgLThdLFxuICAgICAgICAgICAgWy0yLCAwLCAtMSwgMSwgLTcsIDUsIDYsIC00LCAwLCAtNiwgLTUsIDEsIC0zLCAtNiwgLTIsIC0xLCAtMiwgLTUsIC00LCAtNCwgMCwgNiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMywgLTQsIC0yLCAtMiwgLTMsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTEsIC01LCAtMywgLTIsIC0zLCAtMSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU05MCA9IFtbNSwgLTIsIC0yLCAtMywgLTEsIC0xLCAtMSwgMCwgLTIsIC0yLCAtMiwgLTEsIC0yLCAtMywgLTEsIDEsIDAsIC00LCAtMywgLTEsIC0yLCAtMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMiwgNiwgLTEsIC0zLCAtNSwgMSwgLTEsIC0zLCAwLCAtNCwgLTMsIDIsIC0yLCAtNCwgLTMsIC0xLCAtMiwgLTQsIC0zLCAtMywgLTIsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0xLCA3LCAxLCAtNCwgMCwgLTEsIC0xLCAwLCAtNCwgLTQsIDAsIC0zLCAtNCwgLTMsIDAsIDAsIC01LCAtMywgLTQsIDQsIC0xLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0zLCAtMywgMSwgNywgLTUsIC0xLCAxLCAtMiwgLTIsIC01LCAtNSwgLTEsIC00LCAtNSwgLTMsIC0xLCAtMiwgLTYsIC00LCAtNSwgNCwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTUsIC00LCAtNSwgOSwgLTQsIC02LCAtNCwgLTUsIC0yLCAtMiwgLTQsIC0yLCAtMywgLTQsIC0yLCAtMiwgLTQsIC00LCAtMiwgLTQsIC01LCAtMywgLTZdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAtMSwgLTQsIDcsIDIsIC0zLCAxLCAtNCwgLTMsIDEsIDAsIC00LCAtMiwgLTEsIC0xLCAtMywgLTMsIC0zLCAtMSwgNCwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0xLCAxLCAtNiwgMiwgNiwgLTMsIC0xLCAtNCwgLTQsIDAsIC0zLCAtNSwgLTIsIC0xLCAtMSwgLTUsIC00LCAtMywgMCwgNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFswLCAtMywgLTEsIC0yLCAtNCwgLTMsIC0zLCA2LCAtMywgLTUsIC01LCAtMiwgLTQsIC01LCAtMywgLTEsIC0zLCAtNCwgLTUsIC01LCAtMiwgLTMsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIDAsIDAsIC0yLCAtNSwgMSwgLTEsIC0zLCA4LCAtNCwgLTQsIC0xLCAtMywgLTIsIC0zLCAtMiwgLTIsIC0zLCAxLCAtNCwgLTEsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC00LCAtNCwgLTUsIC0yLCAtNCwgLTQsIC01LCAtNCwgNSwgMSwgLTQsIDEsIC0xLCAtNCwgLTMsIC0xLCAtNCwgLTIsIDMsIC01LCAtNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC00LCAtNSwgLTIsIC0zLCAtNCwgLTUsIC00LCAxLCA1LCAtMywgMiwgMCwgLTQsIC0zLCAtMiwgLTMsIC0yLCAwLCAtNSwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIDIsIDAsIC0xLCAtNCwgMSwgMCwgLTIsIC0xLCAtNCwgLTMsIDYsIC0yLCAtNCwgLTIsIC0xLCAtMSwgLTUsIC0zLCAtMywgLTEsIDEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMywgLTQsIC0yLCAwLCAtMywgLTQsIC0zLCAxLCAyLCAtMiwgNywgLTEsIC0zLCAtMiwgLTEsIC0yLCAtMiwgMCwgLTQsIC0yLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTQsIC01LCAtMywgLTQsIC01LCAtNSwgLTIsIC0xLCAwLCAtNCwgLTEsIDcsIC00LCAtMywgLTMsIDAsIDMsIC0yLCAtNCwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMywgLTMsIC00LCAtMiwgLTIsIC0zLCAtMywgLTQsIC00LCAtMiwgLTMsIC00LCA4LCAtMiwgLTIsIC01LCAtNCwgLTMsIC0zLCAtMiwgLTIsIC02XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMCwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0zLCAtMiwgNSwgMSwgLTQsIC0zLCAtMiwgMCwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0yLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMywgLTIsIDEsIDYsIC00LCAtMiwgLTEsIC0xLCAtMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFstNCwgLTQsIC01LCAtNiwgLTQsIC0zLCAtNSwgLTQsIC0zLCAtNCwgLTMsIC01LCAtMiwgMCwgLTUsIC00LCAtNCwgMTEsIDIsIC0zLCAtNiwgLTQsIC0zLCAtNl0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtMywgLTQsIC00LCAtMywgLTQsIC01LCAxLCAtMiwgLTIsIC0zLCAtMiwgMywgLTQsIC0zLCAtMiwgMiwgOCwgLTMsIC00LCAtMywgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC00LCAtNSwgLTIsIC0zLCAtMywgLTUsIC00LCAzLCAwLCAtMywgMCwgLTIsIC0zLCAtMiwgLTEsIC0zLCAtMywgNSwgLTQsIC0zLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMiwgNCwgNCwgLTQsIC0xLCAwLCAtMiwgLTEsIC01LCAtNSwgLTEsIC00LCAtNCwgLTMsIDAsIC0xLCAtNiwgLTQsIC00LCA0LCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAwLCAtMSwgMCwgLTUsIDQsIDQsIC0zLCAwLCAtNCwgLTQsIDEsIC0yLCAtNCwgLTIsIC0xLCAtMSwgLTQsIC0zLCAtMywgMCwgNCwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMiwgLTMsIC0xLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0zLCAtMiwgLTIsIC0yLCAtMSwgLTIsIC02XSxcbiAgICAgICAgICAgIFstNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIDFdXTtcbiAgICAgICAgdGhpcy5OVUNMRU9USURFUyA9IFtbMSwgLTEsIC0xLCAtMV0sXG4gICAgICAgICAgICBbLTEsIDEsIC0xLCAtMV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAxLCAtMV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMSwgMV1dO1xuICAgICAgICB0aGlzLlBBTTMwID0gW1s2LCAtNywgLTQsIC0zLCAtNiwgLTQsIC0yLCAtMiwgLTcsIC01LCAtNiwgLTcsIC01LCAtOCwgLTIsIDAsIC0xLCAtMTMsIC04LCAtMiwgLTMsIC0zLCAtMywgLTE3XSxcbiAgICAgICAgICAgIFstNywgOCwgLTYsIC0xMCwgLTgsIC0yLCAtOSwgLTksIC0yLCAtNSwgLTgsIDAsIC00LCAtOSwgLTQsIC0zLCAtNiwgLTIsIC0xMCwgLTgsIC03LCAtNCwgLTYsIC0xN10sXG4gICAgICAgICAgICBbLTQsIC02LCA4LCAyLCAtMTEsIC0zLCAtMiwgLTMsIDAsIC01LCAtNywgLTEsIC05LCAtOSwgLTYsIDAsIC0yLCAtOCwgLTQsIC04LCA2LCAtMywgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC0xMCwgMiwgOCwgLTE0LCAtMiwgMiwgLTMsIC00LCAtNywgLTEyLCAtNCwgLTExLCAtMTUsIC04LCAtNCwgLTUsIC0xNSwgLTExLCAtOCwgNiwgMSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTYsIC04LCAtMTEsIC0xNCwgMTAsIC0xNCwgLTE0LCAtOSwgLTcsIC02LCAtMTUsIC0xNCwgLTEzLCAtMTMsIC04LCAtMywgLTgsIC0xNSwgLTQsIC02LCAtMTIsIC0xNCwgLTksIC0xN10sXG4gICAgICAgICAgICBbLTQsIC0yLCAtMywgLTIsIC0xNCwgOCwgMSwgLTcsIDEsIC04LCAtNSwgLTMsIC00LCAtMTMsIC0zLCAtNSwgLTUsIC0xMywgLTEyLCAtNywgLTMsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOSwgLTIsIDIsIC0xNCwgMSwgOCwgLTQsIC01LCAtNSwgLTksIC00LCAtNywgLTE0LCAtNSwgLTQsIC02LCAtMTcsIC04LCAtNiwgMSwgNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC05LCAtMywgLTMsIC05LCAtNywgLTQsIDYsIC05LCAtMTEsIC0xMCwgLTcsIC04LCAtOSwgLTYsIC0yLCAtNiwgLTE1LCAtMTQsIC01LCAtMywgLTUsIC01LCAtMTddLFxuICAgICAgICAgICAgWy03LCAtMiwgMCwgLTQsIC03LCAxLCAtNSwgLTksIDksIC05LCAtNiwgLTYsIC0xMCwgLTYsIC00LCAtNiwgLTcsIC03LCAtMywgLTYsIC0xLCAtMSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTcsIC02LCAtOCwgLTUsIC0xMSwgLTksIDgsIC0xLCAtNiwgLTEsIC0yLCAtOCwgLTcsIC0yLCAtMTQsIC02LCAyLCAtNiwgLTYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy02LCAtOCwgLTcsIC0xMiwgLTE1LCAtNSwgLTksIC0xMCwgLTYsIC0xLCA3LCAtOCwgMSwgLTMsIC03LCAtOCwgLTcsIC02LCAtNywgLTIsIC05LCAtNywgLTYsIC0xN10sXG4gICAgICAgICAgICBbLTcsIDAsIC0xLCAtNCwgLTE0LCAtMywgLTQsIC03LCAtNiwgLTYsIC04LCA3LCAtMiwgLTE0LCAtNiwgLTQsIC0zLCAtMTIsIC05LCAtOSwgLTIsIC00LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNSwgLTQsIC05LCAtMTEsIC0xMywgLTQsIC03LCAtOCwgLTEwLCAtMSwgMSwgLTIsIDExLCAtNCwgLTgsIC01LCAtNCwgLTEzLCAtMTEsIC0xLCAtMTAsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstOCwgLTksIC05LCAtMTUsIC0xMywgLTEzLCAtMTQsIC05LCAtNiwgLTIsIC0zLCAtMTQsIC00LCA5LCAtMTAsIC02LCAtOSwgLTQsIDIsIC04LCAtMTAsIC0xMywgLTgsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC00LCAtNiwgLTgsIC04LCAtMywgLTUsIC02LCAtNCwgLTgsIC03LCAtNiwgLTgsIC0xMCwgOCwgLTIsIC00LCAtMTQsIC0xMywgLTYsIC03LCAtNCwgLTUsIC0xN10sXG4gICAgICAgICAgICBbMCwgLTMsIDAsIC00LCAtMywgLTUsIC00LCAtMiwgLTYsIC03LCAtOCwgLTQsIC01LCAtNiwgLTIsIDYsIDAsIC01LCAtNywgLTYsIC0xLCAtNSwgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTEsIC02LCAtMiwgLTUsIC04LCAtNSwgLTYsIC02LCAtNywgLTIsIC03LCAtMywgLTQsIC05LCAtNCwgMCwgNywgLTEzLCAtNiwgLTMsIC0zLCAtNiwgLTQsIC0xN10sXG4gICAgICAgICAgICBbLTEzLCAtMiwgLTgsIC0xNSwgLTE1LCAtMTMsIC0xNywgLTE1LCAtNywgLTE0LCAtNiwgLTEyLCAtMTMsIC00LCAtMTQsIC01LCAtMTMsIDEzLCAtNSwgLTE1LCAtMTAsIC0xNCwgLTExLCAtMTddLFxuICAgICAgICAgICAgWy04LCAtMTAsIC00LCAtMTEsIC00LCAtMTIsIC04LCAtMTQsIC0zLCAtNiwgLTcsIC05LCAtMTEsIDIsIC0xMywgLTcsIC02LCAtNSwgMTAsIC03LCAtNiwgLTksIC03LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOCwgLTgsIC04LCAtNiwgLTcsIC02LCAtNSwgLTYsIDIsIC0yLCAtOSwgLTEsIC04LCAtNiwgLTYsIC0zLCAtMTUsIC03LCA3LCAtOCwgLTYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNywgNiwgNiwgLTEyLCAtMywgMSwgLTMsIC0xLCAtNiwgLTksIC0yLCAtMTAsIC0xMCwgLTcsIC0xLCAtMywgLTEwLCAtNiwgLTgsIDYsIDAsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTMsIDEsIC0xNCwgNiwgNiwgLTUsIC0xLCAtNiwgLTcsIC00LCAtNSwgLTEzLCAtNCwgLTUsIC02LCAtMTQsIC05LCAtNiwgMCwgNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC02LCAtMywgLTUsIC05LCAtNSwgLTUsIC01LCAtNSwgLTUsIC02LCAtNSwgLTUsIC04LCAtNSwgLTMsIC00LCAtMTEsIC03LCAtNSwgLTUsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgMV1dO1xuICAgICAgICB0aGlzLlBBTTcwID0gW1s1LCAtNCwgLTIsIC0xLCAtNCwgLTIsIC0xLCAwLCAtNCwgLTIsIC00LCAtNCwgLTMsIC02LCAwLCAxLCAxLCAtOSwgLTUsIC0xLCAtMSwgLTEsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy00LCA4LCAtMywgLTYsIC01LCAwLCAtNSwgLTYsIDAsIC0zLCAtNiwgMiwgLTIsIC03LCAtMiwgLTEsIC00LCAwLCAtNywgLTUsIC00LCAtMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIC0zLCA2LCAzLCAtNywgLTEsIDAsIC0xLCAxLCAtMywgLTUsIDAsIC01LCAtNiwgLTMsIDEsIDAsIC02LCAtMywgLTUsIDUsIC0xLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTYsIDMsIDYsIC05LCAwLCAzLCAtMSwgLTEsIC01LCAtOCwgLTIsIC03LCAtMTAsIC00LCAtMSwgLTIsIC0xMCwgLTcsIC01LCA1LCAyLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNCwgLTUsIC03LCAtOSwgOSwgLTksIC05LCAtNiwgLTUsIC00LCAtMTAsIC05LCAtOSwgLTgsIC01LCAtMSwgLTUsIC0xMSwgLTIsIC00LCAtOCwgLTksIC02LCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAwLCAtMSwgMCwgLTksIDcsIDIsIC00LCAyLCAtNSwgLTMsIC0xLCAtMiwgLTksIC0xLCAtMywgLTMsIC04LCAtOCwgLTQsIC0xLCA1LCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTUsIDAsIDMsIC05LCAyLCA2LCAtMiwgLTIsIC00LCAtNiwgLTIsIC00LCAtOSwgLTMsIC0yLCAtMywgLTExLCAtNiwgLTQsIDIsIDUsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWzAsIC02LCAtMSwgLTEsIC02LCAtNCwgLTIsIDYsIC02LCAtNiwgLTcsIC01LCAtNiwgLTcsIC0zLCAwLCAtMywgLTEwLCAtOSwgLTMsIC0xLCAtMywgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIDAsIDEsIC0xLCAtNSwgMiwgLTIsIC02LCA4LCAtNiwgLTQsIC0zLCAtNiwgLTQsIC0yLCAtMywgLTQsIC01LCAtMSwgLTQsIDAsIDEsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTMsIC01LCAtNCwgLTUsIC00LCAtNiwgLTYsIDcsIDEsIC00LCAxLCAwLCAtNSwgLTQsIC0xLCAtOSwgLTQsIDMsIC00LCAtNCwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIC02LCAtNSwgLTgsIC0xMCwgLTMsIC02LCAtNywgLTQsIDEsIDYsIC01LCAyLCAtMSwgLTUsIC02LCAtNCwgLTQsIC00LCAwLCAtNiwgLTQsIC00LCAtMTFdLFxuICAgICAgICAgICAgWy00LCAyLCAwLCAtMiwgLTksIC0xLCAtMiwgLTUsIC0zLCAtNCwgLTUsIDYsIDAsIC05LCAtNCwgLTIsIC0xLCAtNywgLTcsIC02LCAtMSwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0zLCAtMiwgLTUsIC03LCAtOSwgLTIsIC00LCAtNiwgLTYsIDEsIDIsIDAsIDEwLCAtMiwgLTUsIC0zLCAtMiwgLTgsIC03LCAwLCAtNiwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy02LCAtNywgLTYsIC0xMCwgLTgsIC05LCAtOSwgLTcsIC00LCAwLCAtMSwgLTksIC0yLCA4LCAtNywgLTQsIC02LCAtMiwgNCwgLTUsIC03LCAtOSwgLTUsIC0xMV0sXG4gICAgICAgICAgICBbMCwgLTIsIC0zLCAtNCwgLTUsIC0xLCAtMywgLTMsIC0yLCAtNSwgLTUsIC00LCAtNSwgLTcsIDcsIDAsIC0yLCAtOSwgLTksIC0zLCAtNCwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAtMSwgLTEsIC0zLCAtMiwgMCwgLTMsIC00LCAtNiwgLTIsIC0zLCAtNCwgMCwgNSwgMiwgLTMsIC01LCAtMywgMCwgLTIsIC0xLCAtMTFdLFxuICAgICAgICAgICAgWzEsIC00LCAwLCAtMiwgLTUsIC0zLCAtMywgLTMsIC00LCAtMSwgLTQsIC0xLCAtMiwgLTYsIC0yLCAyLCA2LCAtOCwgLTQsIC0xLCAtMSwgLTMsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy05LCAwLCAtNiwgLTEwLCAtMTEsIC04LCAtMTEsIC0xMCwgLTUsIC05LCAtNCwgLTcsIC04LCAtMiwgLTksIC0zLCAtOCwgMTMsIC0zLCAtMTAsIC03LCAtMTAsIC03LCAtMTFdLFxuICAgICAgICAgICAgWy01LCAtNywgLTMsIC03LCAtMiwgLTgsIC02LCAtOSwgLTEsIC00LCAtNCwgLTcsIC03LCA0LCAtOSwgLTUsIC00LCAtMywgOSwgLTUsIC00LCAtNywgLTUsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC01LCAtNSwgLTUsIC00LCAtNCwgLTQsIC0zLCAtNCwgMywgMCwgLTYsIDAsIC01LCAtMywgLTMsIC0xLCAtMTAsIC01LCA2LCAtNSwgLTQsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNCwgNSwgNSwgLTgsIC0xLCAyLCAtMSwgMCwgLTQsIC02LCAtMSwgLTYsIC03LCAtNCwgMCwgLTEsIC03LCAtNCwgLTUsIDUsIDEsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTEsIDIsIC05LCA1LCA1LCAtMywgMSwgLTQsIC00LCAtMiwgLTMsIC05LCAtMiwgLTIsIC0zLCAtMTAsIC03LCAtNCwgMSwgNSwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMiwgLTMsIC02LCAtMiwgLTMsIC0zLCAtMywgLTMsIC00LCAtMywgLTMsIC01LCAtMywgLTEsIC0yLCAtNywgLTUsIC0yLCAtMiwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAxXV07XG4gICAgICAgIHRoaXMuUEFNMjUwID0gW1syLCAtMiwgMCwgMCwgLTIsIDAsIDAsIDEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTMsIDEsIDEsIDEsIC02LCAtMywgMCwgMCwgMCwgMCwgLThdLFxuICAgICAgICAgICAgWy0yLCA2LCAwLCAtMSwgLTQsIDEsIC0xLCAtMywgMiwgLTIsIC0zLCAzLCAwLCAtNCwgMCwgMCwgLTEsIDIsIC00LCAtMiwgLTEsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgMCwgMiwgMiwgLTQsIDEsIDEsIDAsIDIsIC0yLCAtMywgMSwgLTIsIC0zLCAwLCAxLCAwLCAtNCwgLTIsIC0yLCAyLCAxLCAwLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDIsIDQsIC01LCAyLCAzLCAxLCAxLCAtMiwgLTQsIDAsIC0zLCAtNiwgLTEsIDAsIDAsIC03LCAtNCwgLTIsIDMsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC00LCAtNCwgLTUsIDEyLCAtNSwgLTUsIC0zLCAtMywgLTIsIC02LCAtNSwgLTUsIC00LCAtMywgMCwgLTIsIC04LCAwLCAtMiwgLTQsIC01LCAtMywgLThdLFxuICAgICAgICAgICAgWzAsIDEsIDEsIDIsIC01LCA0LCAyLCAtMSwgMywgLTIsIC0yLCAxLCAtMSwgLTUsIDAsIC0xLCAtMSwgLTUsIC00LCAtMiwgMSwgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMSwgMywgLTUsIDIsIDQsIDAsIDEsIC0yLCAtMywgMCwgLTIsIC01LCAtMSwgMCwgMCwgLTcsIC00LCAtMiwgMywgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFsxLCAtMywgMCwgMSwgLTMsIC0xLCAwLCA1LCAtMiwgLTMsIC00LCAtMiwgLTMsIC01LCAwLCAxLCAwLCAtNywgLTUsIC0xLCAwLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAyLCAyLCAxLCAtMywgMywgMSwgLTIsIDYsIC0yLCAtMiwgMCwgLTIsIC0yLCAwLCAtMSwgLTEsIC0zLCAwLCAtMiwgMSwgMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTMsIC0yLCA1LCAyLCAtMiwgMiwgMSwgLTIsIC0xLCAwLCAtNSwgLTEsIDQsIC0yLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtNCwgLTYsIC0yLCAtMywgLTQsIC0yLCAyLCA2LCAtMywgNCwgMiwgLTMsIC0zLCAtMiwgLTIsIC0xLCAyLCAtMywgLTMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDMsIDEsIDAsIC01LCAxLCAwLCAtMiwgMCwgLTIsIC0zLCA1LCAwLCAtNSwgLTEsIDAsIDAsIC0zLCAtNCwgLTIsIDEsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDAsIC0yLCAtMywgLTUsIC0xLCAtMiwgLTMsIC0yLCAyLCA0LCAwLCA2LCAwLCAtMiwgLTIsIC0xLCAtNCwgLTIsIDIsIC0yLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0zLCAtNiwgLTQsIC01LCAtNSwgLTUsIC0yLCAxLCAyLCAtNSwgMCwgOSwgLTUsIC0zLCAtMywgMCwgNywgLTEsIC00LCAtNSwgLTIsIC04XSxcbiAgICAgICAgICAgIFsxLCAwLCAwLCAtMSwgLTMsIDAsIC0xLCAwLCAwLCAtMiwgLTMsIC0xLCAtMiwgLTUsIDYsIDEsIDAsIC02LCAtNSwgLTEsIC0xLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWzEsIDAsIDEsIDAsIDAsIC0xLCAwLCAxLCAtMSwgLTEsIC0zLCAwLCAtMiwgLTMsIDEsIDIsIDEsIC0yLCAtMywgLTEsIDAsIDAsIDAsIC04XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMCwgMCwgLTIsIC0xLCAwLCAwLCAtMSwgMCwgLTIsIDAsIC0xLCAtMywgMCwgMSwgMywgLTUsIC0zLCAwLCAwLCAtMSwgMCwgLThdLFxuICAgICAgICAgICAgWy02LCAyLCAtNCwgLTcsIC04LCAtNSwgLTcsIC03LCAtMywgLTUsIC0yLCAtMywgLTQsIDAsIC02LCAtMiwgLTUsIDE3LCAwLCAtNiwgLTUsIC02LCAtNCwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTIsIC00LCAwLCAtNCwgLTQsIC01LCAwLCAtMSwgLTEsIC00LCAtMiwgNywgLTUsIC0zLCAtMywgMCwgMTAsIC0yLCAtMywgLTQsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTEsIC0yLCA0LCAyLCAtMiwgMiwgLTEsIC0xLCAtMSwgMCwgLTYsIC0yLCA0LCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDIsIDMsIC00LCAxLCAzLCAwLCAxLCAtMiwgLTMsIDEsIC0yLCAtNCwgLTEsIDAsIDAsIC01LCAtMywgLTIsIDMsIDIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgMCwgMSwgMywgLTUsIDMsIDMsIDAsIDIsIC0yLCAtMywgMCwgLTIsIC01LCAwLCAwLCAtMSwgLTYsIC00LCAtMiwgMiwgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0zLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMCwgMCwgLTQsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLThdLFxuICAgICAgICAgICAgWy04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgMV1dO1xuICAgICAgICB0aGlzLlNDSE5FSURFUiA9IFtbMTEuNiwgLTIuNywgOS43LCAtMS43LCAtMi43LCAtNi40LCAtMy45LCAtNS42LCA1LjEsIC01LjAsIDMuNiwgLTQuMiwgLTYuMywgLTEzLjAsIC03LjEsIC0xMS41LCAwLjQsIC02LjAsIC0xLjksIC01LjMsIC04LjUsIC0xMS4yLCAtOC45LCAtMTAuOCwgMi4xLCAwLjAsIDEuNCwgMC4yLCAtMTAuMiwgLTEzLjUsIC0xMy4wLCAtMTIuNSwgLTIuNiwgLTguNSwgLTUuMCwgLTguMSwgLTYuMywgLTkuOSwgLTcuNSwgLTkuMCwgLTcuMSwgLTEwLjIsIC04LjIsIC05LjIsIC04LjIsIC0xMi41LCAtMTEuMSwgLTExLjQsIC01MC4wLCAtMTQuOCwgLTUwLjAsIC0xMy44LCAtNy4zLCAtMTAuMSwgLTguNCwgLTkuMSwgLTUwLjAsIC0xMy4wLCAtMTMuNSwgLTEyLjQsIC0xMC43LCAtMTguMSwgLTExLjgsIC0xNy4yLF0sXG4gICAgICAgICAgICBbLTIuNywgMTMuMCwgLTMuMywgMTAuOSwgLTMuNSwgLTAuNCwgLTMuMywgLTEuOCwgLTUuNCwgNC42LCAtNS41LCAzLjAsIC0xMC4yLCAtNy45LCAtOS45LCAtOS42LCAtNS4wLCAwLjUsIC01LjUsIC0xLjAsIC0xMC4zLCAtOC4xLCAtOS40LCAtOS42LCAtOC4xLCAtNS4wLCAtNy4zLCAtNi4zLCAtMTMuNCwgLTExLjMsIC0xNC40LCAtMTIuOSwgLTYuMywgMC44LCAtNi40LCAtMS4xLCAtNy40LCAtNS4wLCAtNi4yLCAtNi41LCAtNS42LCAtMS42LCAtNC43LCAtMy4wLCAtMTAuOCwgLTguNywgLTExLjksIC0xMC4wLCAtNTAuMCwgLTYuMiwgLTUwLjAsIC03LjUsIC02LjMsIC00LjMsIC02LjIsIC01LjQsIC01MC4wLCAtNy4wLCAtMTYuMywgLTguMiwgLTEzLjIsIC0xMi4zLCAtMTMuMSwgLTEzLjMsXSxcbiAgICAgICAgICAgIFs5LjcsIC0zLjMsIDExLjYsIC0yLjgsIC00LjUsIC02LjcsIC0zLjEsIC02LjksIDMuMywgLTUuNSwgNC44LCAtNS4xLCAtOC45LCAtMTMuMiwgLTUuNywgLTEyLjYsIC0xLjUsIC02LjEsIC0wLjYsIC02LjEsIC0xMC4wLCAtMTEuOCwgLTguNiwgLTExLjksIDEuMiwgMC41LCAyLjIsIDAuMSwgLTExLjgsIC0xNC4wLCAtMTEuOSwgLTEzLjQsIC00LjksIC05LjEsIC0zLjQsIC04LjksIC04LjAsIC0xMC4wLCAtNy4yLCAtMTAuMCwgLTkuMSwgLTEwLjIsIC03LjEsIC05LjksIC0xMC4xLCAtMTMuMCwgLTEwLjYsIC0xMi43LCAtNTAuMCwgLTE0LjksIC01MC4wLCAtMTQuNCwgLTguOSwgLTEwLjgsIC04LjksIC0xMC40LCAtNTAuMCwgLTEzLjEsIC0xMS44LCAtMTMuMCwgLTEyLjQsIC0xOS40LCAtMTEuNSwgLTE3LjgsXSxcbiAgICAgICAgICAgIFstMS43LCAxMC45LCAtMi44LCAxMi45LCAtMi43LCAtMi4yLCAtMi44LCAwLjIsIC00LjgsIDIuOSwgLTUuMiwgNS4yLCAtOS4xLCAtOS41LCAtOS4wLCAtNy4wLCAtNC4wLCAtMS4wLCAtNS4wLCAxLjAsIC05LjAsIC04LjgsIC04LjksIC03LjcsIC03LjAsIC02LjgsIC03LjEsIC00LjMsIC0xMi40LCAtMTIuOSwgLTEzLjksIC0xMC4wLCAtNC45LCAtMC43LCAtNS42LCAxLjQsIC02LjAsIC02LjUsIC02LjIsIC00LjgsIC01LjEsIC0zLjIsIC01LjAsIC0xLjIsIC05LjgsIC05LjksIC0xMS4zLCAtOC4yLCAtNTAuMCwgLTcuNiwgLTUwLjAsIC01LjEsIC01LjUsIC01LjgsIC01LjksIC00LjIsIC01MC4wLCAtOC4zLCAtMTUuNSwgLTUuOSwgLTExLjYsIC0xNC4yLCAtMTIuMCwgLTExLjYsXSxcbiAgICAgICAgICAgIFstMi43LCAtMy41LCAtNC41LCAtMi43LCAxMS43LCA5LjAsIDEwLjYsIDkuNiwgLTMuMiwgLTAuNywgLTUuMSwgLTAuNCwgMC43LCAtNC42LCAtMC40LCAtMy42LCAtNC44LCAtOC45LCAtNi41LCAtNy44LCAtMS40LCAtNC4xLCAtMi45LCAtMy4zLCAtOC4wLCAtOS4xLCAtOC4wLCAtOC4yLCAtNi4wLCAtOS4zLCAtNy43LCAtOC41LCAtNi40LCAtMTAuMSwgLTcuNSwgLTguNiwgMi44LCAtMC43LCAwLjksIDAuMSwgLTUuOSwgLTcuMywgLTYuNSwgLTYuNSwgLTAuNCwgLTMuOSwgLTIuNiwgLTMuMSwgLTUwLjAsIC0xNC42LCAtNTAuMCwgLTEyLjYsIDIuOSwgMC4xLCAxLjgsIDEuMCwgLTUwLjAsIC05LjIsIC0xMy42LCAtNy43LCAtNC44LCAtMTIuMiwgLTYuMiwgLTExLjAsXSxcbiAgICAgICAgICAgIFstNi40LCAtMC40LCAtNi43LCAtMi4yLCA5LjAsIDEyLjMsIDkuOCwgOS42LCAtNy4xLCAyLjQsIC03LjIsIDAuMywgLTIuOSwgLTEuMiwgLTMuMCwgLTMuMywgLTcuNiwgLTYuNywgLTguMSwgLTcuOSwgLTQuOSwgLTEuOSwgLTQuNSwgLTMuOCwgLTkuNSwgLTcuOCwgLTkuMywgLTguOSwgLTkuNCwgLTcuMSwgLTkuMCwgLTkuMCwgLTkuNCwgLTcuNSwgLTkuMywgLTkuMiwgLTAuNywgMi42LCAwLjIsIC0wLjEsIC04LjAsIC00LjYsIC03LjcsIC02LjEsIC0zLjYsIC0xLjAsIC00LjEsIC0zLjEsIC01MC4wLCAtMTEuNiwgLTUwLjAsIC0xMS42LCAwLjIsIDIuMywgMC40LCAwLjUsIC01MC4wLCAtNi41LCAtMTUuMywgLTcuOCwgLTguNCwgLTkuNSwgLTguMywgLTExLjEsXSxcbiAgICAgICAgICAgIFstMy45LCAtMy4zLCAtMy4xLCAtMi44LCAxMC42LCA5LjgsIDEyLjIsIDkuOCwgLTQuOSwgMC4xLCAtMy42LCAtMC4yLCAtMS43LCAtNC4xLCAwLjksIC0zLjUsIC01LjksIC04LjksIC01LjYsIC04LjUsIC0zLjksIC0zLjksIC0yLjIsIC00LjUsIC03LjMsIC03LjUsIC02LjQsIC04LjUsIC03LjEsIC04LjIsIC02LjcsIC03LjgsIC03LjksIC05LjEsIC03LjEsIC05LjQsIDAuOSwgLTAuMiwgMi41LCAtMC4zLCAtNi45LCAtNi41LCAtNS41LCAtNi44LCAtMS43LCAtMy40LCAtMS43LCAtMi44LCAtNTAuMCwgLTEzLjAsIC01MC4wLCAtMTEuNSwgMS41LCAwLjcsIDIuNywgMC42LCAtNTAuMCwgLTguOSwgLTEyLjEsIC03LjQsIC02LjEsIC0xMS41LCAtNS40LCAtMTAuNCxdLFxuICAgICAgICAgICAgWy01LjYsIC0xLjgsIC02LjksIDAuMiwgOS42LCA5LjYsIDkuOCwgMTEuNiwgLTYuNiwgMC45LCAtNy4yLCAyLjUsIC0yLjMsIC0zLjQsIC0yLjMsIC0wLjYsIC02LjUsIC04LjIsIC04LjAsIC02LjMsIC0zLjcsIC0zLjUsIC0zLjksIC0xLjYsIC05LjksIC04LjksIC05LjYsIC03LjAsIC04LjYsIC04LjksIC04LjgsIC02LjgsIC04LjYsIC04LjIsIC04LjgsIC02LjgsIDAuMywgMC4xLCAwLjIsIDIuNCwgLTcuNCwgLTYuMiwgLTYuOSwgLTQuNCwgLTIuOSwgLTIuOSwgLTMuNSwgLTAuOSwgLTUwLjAsIC0xMi4yLCAtNTAuMCwgLTEwLjEsIDEuMiwgMC42LCAxLjIsIDIuNCwgLTUwLjAsIC03LjYsIC0xNi4xLCAtNS44LCAtNy4yLCAtMTAuOCwgLTcuNCwgLTkuMCxdLFxuICAgICAgICAgICAgWzUuMSwgLTUuNCwgMy4zLCAtNC44LCAtMy4yLCAtNy4xLCAtNC45LCAtNi42LCAxMy4zLCAtMi44LCAxMS4yLCAtMS45LCAtNS43LCAtMTIuNSwgLTcuMiwgLTExLjYsIC0wLjcsIC00LjgsIC0zLjEsIC00LjMsIC0xMC4wLCAtMTEuNiwgLTguOCwgLTExLjcsIDEwLjUsIDcuNywgOS4xLCA4LjUsIC05LjgsIC0xMi43LCAtMTEuNywgLTExLjgsIC02LjMsIC0xMS40LCAtOC44LCAtMTEuMCwgLTcuNSwgLTEwLjMsIC04LjMsIC05LjksIC0xLjksIC02LjcsIC00LjEsIC02LjQsIC03LjksIC0xMi41LCAtMTEuNCwgLTExLjcsIC01MC4wLCAtMTQuMCwgLTUwLjAsIC0xMy4yLCAtOC41LCAtMTAuNCwgLTkuMSwgLTkuNiwgLTUwLjAsIC05LjgsIC03LjcsIC04LjgsIC0xMC4zLCAtMTcuOSwgLTExLjgsIC0xNi4wLF0sXG4gICAgICAgICAgICBbLTUuMCwgNC42LCAtNS41LCAyLjksIC0wLjcsIDIuNCwgMC4xLCAwLjksIC0yLjgsIDEyLjgsIC0yLjYsIDExLjAsIC04LjQsIC02LjMsIC04LjMsIC03LjcsIC02LjEsIC0yLjksIC02LjUsIC00LjIsIC04LjUsIC01LjksIC03LjUsIC03LjcsIC01LjUsIC0yLjQsIC01LjUsIC00LjEsIC0xMi45LCAtMTAuMywgLTEyLjcsIC0xMS4zLCAtNy40LCAtMy4xLCAtNy40LCAtNC45LCAtNC40LCAtMS44LCAtMy41LCAtMy41LCAtMS42LCAzLjAsIC0wLjgsIDAuOSwgLTguNCwgLTYuMywgLTkuNiwgLTcuMywgLTUwLjAsIC05LjAsIC01MC4wLCAtOS43LCAtMi4zLCAtMC4yLCAtMS4yLCAtMS41LCAtNTAuMCwgLTAuNywgLTEzLjMsIC0yLjAsIC0xMS44LCAtMTEuOSwgLTEyLjMsIC0xMi43LF0sXG4gICAgICAgICAgICBbMy42LCAtNS41LCA0LjgsIC01LjIsIC01LjEsIC03LjIsIC0zLjYsIC03LjIsIDExLjIsIC0yLjYsIDEzLjQsIC0yLjEsIC03LjcsIC0xMi41LCAtNS4zLCAtMTEuOSwgLTIuMiwgLTQuNCwgLTEuOSwgLTQuOCwgLTEwLjIsIC0xMS41LCAtOC4xLCAtMTIuMCwgOS4zLCA4LjIsIDEwLjAsIDguMCwgLTEwLjgsIC0xMS45LCAtMTAuNywgLTEyLjQsIC04LjIsIC0xMS44LCAtNi45LCAtMTEuNSwgLTguNCwgLTkuOSwgLTcuMSwgLTEwLjYsIC00LjcsIC02LjgsIC0xLjIsIC03LjAsIC05LjgsIC0xMS42LCAtOS42LCAtMTIuMSwgLTUwLjAsIC0xNC4xLCAtNTAuMCwgLTEyLjcsIC0xMC4wLCAtMTAuOCwgLTguOCwgLTEwLjUsIC01MC4wLCAtOS4yLCAtNC4yLCAtOS4zLCAtMTEuMCwgLTE4LjIsIC0xMS4xLCAtMTYuMSxdLFxuICAgICAgICAgICAgWy00LjIsIDMuMCwgLTUuMSwgNS4yLCAtMC40LCAwLjMsIC0wLjIsIDIuNSwgLTEuOSwgMTEuMCwgLTIuMSwgMTMuMiwgLTcuNiwgLTguNSwgLTguMCwgLTUuMywgLTUuNiwgLTQuNSwgLTYuOCwgLTIuNCwgLTcuOCwgLTcuOSwgLTcuOSwgLTYuMiwgLTUuNywgLTUuMSwgLTUuNCwgLTIuMSwgLTEyLjQsIC0xMi4zLCAtMTMuMSwgLTEwLjEsIC02LjYsIC00LjQsIC02LjksIC0yLjYsIC0zLjYsIC0zLjgsIC0zLjcsIC0yLjAsIC0xLjQsIDAuOCwgLTAuOSwgMy4wLCAtOC4yLCAtOC4xLCAtOS4yLCAtNS44LCAtNTAuMCwgLTEwLjEsIC01MC4wLCAtNy40LCAtMS43LCAtMi4wLCAtMS41LCAtMC41LCAtNTAuMCwgLTIuMSwgLTEyLjYsIC0wLjQsIC0xMS42LCAtMTMuOSwgLTExLjQsIC0xMS4xLF0sXG4gICAgICAgICAgICBbLTYuMywgLTEwLjIsIC04LjksIC05LjEsIDAuNywgLTIuOSwgLTEuNywgLTIuMywgLTUuNywgLTguNCwgLTcuNywgLTcuNiwgMTMuMiwgOS42LCAzLjUsIDkuNywgLTguNywgLTEyLjQsIC0xMC43LCAtMTAuNywgLTcuOCwgLTEwLjIsIC04LjgsIC05LjYsIC05LjUsIC0xMS45LCAtMTAuOSwgLTEwLjUsIDIuMywgLTAuNCwgLTAuMiwgLTAuMywgLTkuNywgLTE1LjUsIC0xMS40LCAtMTMuNywgLTMuMCwgLTYuNCwgLTQuMSwgLTUuNCwgLTkuNiwgLTExLjksIC0xMC41LCAtMTEuOCwgNi4yLCAzLjMsIDMuNywgMy42LCAtNTAuMCwgLTEzLjYsIC01MC4wLCAtMTEuOSwgLTUuNiwgLTguOCwgLTcuMiwgLTguOSwgLTUwLjAsIC0xMi40LCAtMTQuMSwgLTExLjYsIDIuOCwgLTYuNCwgMC41LCAtNS4yLF0sXG4gICAgICAgICAgICBbLTEzLjAsIC03LjksIC0xMy4yLCAtOS41LCAtNC42LCAtMS4yLCAtNC4xLCAtMy40LCAtMTIuNSwgLTYuMywgLTEyLjUsIC04LjUsIDkuNiwgMTIuNywgMC4yLCAxMC41LCAtMTIuNCwgLTExLjYsIC0xMy4yLCAtMTIuMCwgLTEyLjQsIC0xMC4xLCAtMTEuNiwgLTEyLjAsIC0xNS4xLCAtMTMuMSwgLTE0LjMsIC0xMy40LCAtMS40LCAxLjQsIC0xLjYsIC0wLjUsIC0xNC45LCAtMTQuMywgLTE1LjIsIC0xNi44LCAtNy43LCAtNC43LCAtNi4zLCAtNi42LCAtMTQuNiwgLTEwLjgsIC0xMi44LCAtMTMuMCwgMi4zLCA2LjAsIDIuNSwgMy42LCAtNTAuMCwgLTExLjIsIC01MC4wLCAtMTEuOSwgLTEwLjUsIC05LjIsIC0xMC41LCAtMTAuNSwgLTUwLjAsIC0xMC4zLCAtMTYuMiwgLTExLjMsIC0xLjcsIC0zLjcsIC0yLjUsIC01LjQsXSxcbiAgICAgICAgICAgIFstNy4xLCAtOS45LCAtNS43LCAtOS4wLCAtMC40LCAtMy4wLCAwLjksIC0yLjMsIC03LjIsIC04LjMsIC01LjMsIC04LjAsIDMuNSwgMC4yLCAxNC4zLCAxLjAsIC03LjMsIC0xMS4yLCAtNi45LCAtOS43LCAtOC41LCAtMTAuMiwgLTcuNywgLTkuOCwgLTEwLjAsIC0xMC40LCAtOC40LCAtMTAuMiwgMS4wLCAtMC42LCAxLjcsIC0wLjUsIC0xMS4xLCAtMTQuOCwgLTkuNywgLTE0LjUsIC0zLjcsIC01LjgsIC0zLjEsIC01LjYsIC0xMC40LCAtMTEuNSwgLTguMiwgLTExLjEsIDAuNiwgLTEuNiwgMS42LCAtMS4xLCAtNTAuMCwgLTEyLjQsIC01MC4wLCAtMTEuNSwgLTUuNSwgLTguMCwgLTQuOSwgLTcuMiwgLTUwLjAsIC0xMi40LCAtMTAuMywgLTExLjYsIDAuNywgLTYuOCwgMi40LCAtNi4wLF0sXG4gICAgICAgICAgICBbLTExLjUsIC05LjYsIC0xMi42LCAtNy4wLCAtMy42LCAtMy4zLCAtMy41LCAtMC42LCAtMTEuNiwgLTcuNywgLTExLjksIC01LjMsIDkuNywgMTAuNSwgMS4wLCAxMi42LCAtMTIuMCwgLTEyLjIsIC0xMi41LCAtOS43LCAtMTEuMSwgLTExLjIsIC0xMS45LCAtOS40LCAtMTIuOSwgLTE0LjMsIC0xNC4wLCAtMTEuOSwgLTEuMCwgLTAuNCwgLTEuNiwgMS4yLCAtMTMuOSwgLTE1LjQsIC0xMy43LCAtMTIuNiwgLTYuMiwgLTYuNywgLTYuMywgLTQuNCwgLTEzLjAsIC0xMi4yLCAtMTMuMCwgLTEwLjQsIDIuOSwgMy44LCAyLjUsIDUuOCwgLTUwLjAsIC0xMi41LCAtNTAuMCwgLTEwLjIsIC05LjYsIC05LjcsIC05LjYsIC04LjMsIC01MC4wLCAtMTEuNiwgLTE1LjQsIC05LjQsIC0xLjEsIC01LjQsIC0xLjYsIC0zLjMsXSxcbiAgICAgICAgICAgIFswLjQsIC01LjAsIC0xLjUsIC00LjAsIC00LjgsIC03LjYsIC01LjksIC02LjUsIC0wLjcsIC02LjEsIC0yLjIsIC01LjYsIC04LjcsIC0xMi40LCAtNy4zLCAtMTIuMCwgMTIuOCwgMi4zLCAxMC4yLCAzLjAsIDAuMCwgLTMuNCwgLTAuNywgLTMuMiwgMi41LCAtMC44LCAwLjksIDAuMiwgLTMuMCwgLTcuMiwgLTUuNywgLTYuMSwgLTAuMiwgLTYuNiwgLTEuOCwgLTYuMCwgLTUuMywgLTguMiwgLTUuNywgLTcuNiwgLTYuNywgLTkuNiwgLTcuNSwgLTkuMywgLTcuMSwgLTEwLjUsIC05LjYsIC05LjQsIC01MC4wLCAtOC4xLCAtNTAuMCwgLTcuMiwgLTQuMywgLTYuOCwgLTUuNywgLTYuMywgLTUwLjAsIC05LjUsIC05LjYsIC04LjksIC02LjIsIC0xMi44LCAtNi44LCAtMTEuOCxdLFxuICAgICAgICAgICAgWy02LjAsIDAuNSwgLTYuMSwgLTEuMCwgLTguOSwgLTYuNywgLTguOSwgLTguMiwgLTQuOCwgLTIuOSwgLTQuNCwgLTQuNSwgLTEyLjQsIC0xMS42LCAtMTEuMiwgLTEyLjIsIDIuMywgMTQuNiwgMS45LCAxMi45LCAtNS41LCAtMi42LCAtNC4xLCAtNC43LCAtMS4yLCAzLjAsIC0xLjEsIDEuNiwgLTguMCwgLTQuNywgLTguNywgLTYuMCwgLTguMiwgLTQuNywgLTcuOCwgLTYuNywgLTEwLjAsIC04LjMsIC04LjksIC05LjksIC0xMC44LCAtNy4xLCAtMTAuMCwgLTkuMiwgLTExLjYsIC0xMC4xLCAtMTIuMywgLTExLjksIC01MC4wLCAyLjIsIC01MC4wLCAwLjksIC03LjksIC01LjksIC03LjQsIC02LjksIC01MC4wLCAtNC42LCAtMTEuNiwgLTUuNiwgLTkuNywgLTUuOSwgLTkuOSwgLTcuMyxdLFxuICAgICAgICAgICAgWy0xLjksIC01LjUsIC0wLjYsIC01LjAsIC02LjUsIC04LjEsIC01LjYsIC04LjAsIC0zLjEsIC02LjUsIC0xLjksIC02LjgsIC0xMC43LCAtMTMuMiwgLTYuOSwgLTEyLjUsIDEwLjIsIDEuOSwgMTEuOSwgMi4xLCAtMi4zLCAtNC4xLCAtMC41LCAtNC42LCAtMC4xLCAtMC45LCAyLjQsIC0wLjgsIC01LjEsIC02LjksIC00LjgsIC02LjcsIC0yLjMsIC03LjEsIC0wLjgsIC03LjIsIC03LjIsIC04LjAsIC01LjYsIC04LjUsIC05LjQsIC05LjcsIC03LjIsIC05LjgsIC05LjIsIC0xMS4xLCAtOS41LCAtMTAuNywgLTUwLjAsIC04LjcsIC01MC4wLCAtOC42LCAtNi4xLCAtNy41LCAtNS41LCAtNy43LCAtNTAuMCwgLTEwLjQsIC03LjcsIC0xMC4wLCAtNy4zLCAtMTMuNiwgLTYuNCwgLTEzLjMsXSxcbiAgICAgICAgICAgIFstNS4zLCAtMS4wLCAtNi4xLCAxLjAsIC03LjgsIC03LjksIC04LjUsIC02LjMsIC00LjMsIC00LjIsIC00LjgsIC0yLjQsIC0xMC43LCAtMTIuMCwgLTkuNywgLTkuNywgMy4wLCAxMi45LCAyLjEsIDE0LjcsIC00LjksIC0zLjgsIC00LjAsIC0yLjQsIC0xLjAsIDAuOCwgLTEuMywgMy40LCAtNy42LCAtNS43LCAtOC4xLCAtMy41LCAtNi44LCAtNS44LCAtNy4yLCAtNC4yLCAtOC45LCAtMTAuMiwgLTguNCwgLTguMiwgLTkuOSwgLTguNCwgLTkuNywgLTYuNCwgLTExLjEsIC0xMS4xLCAtMTEuOCwgLTEwLjAsIC01MC4wLCAwLjQsIC01MC4wLCAyLjYsIC03LjIsIC03LjAsIC03LjQsIC01LjEsIC01MC4wLCAtNS43LCAtOS44LCAtMy4yLCAtOC40LCAtNy40LCAtOC45LCAtNS45LF0sXG4gICAgICAgICAgICBbLTguNSwgLTEwLjMsIC0xMC4wLCAtOS4wLCAtMS40LCAtNC45LCAtMy45LCAtMy43LCAtMTAuMCwgLTguNSwgLTEwLjIsIC03LjgsIC03LjgsIC0xMi40LCAtOC41LCAtMTEuMSwgMC4wLCAtNS41LCAtMi4zLCAtNC45LCAxMi42LCAxMC4wLCAxMS4xLCAxMC41LCAtNi4wLCAtOC4zLCAtNi45LCAtNy41LCAtMi4yLCAtNy40LCAtNS4zLCAtNS45LCAtOC45LCAtMTIuNSwgLTkuNCwgLTExLjYsIC0wLjcsIC0zLjksIC0yLjMsIC0zLjAsIC05LjEsIC05LjgsIC05LjIsIC05LjUsIC01LjYsIC05LjAsIC04LjAsIC04LjUsIC01MC4wLCAtMTUuMywgLTUwLjAsIC0xNC4xLCAyLjMsIC0xLjQsIDAuMywgLTAuNSwgLTUwLjAsIC0xMy42LCAtMTQuMywgLTExLjUsIC01LjMsIC0xMy43LCAtNi4xLCAtMTIuNyxdLFxuICAgICAgICAgICAgWy0xMS4yLCAtOC4xLCAtMTEuOCwgLTguOCwgLTQuMSwgLTEuOSwgLTMuOSwgLTMuNSwgLTExLjYsIC01LjksIC0xMS41LCAtNy45LCAtMTAuMiwgLTEwLjEsIC0xMC4yLCAtMTEuMiwgLTMuNCwgLTIuNiwgLTQuMSwgLTMuOCwgMTAuMCwgMTMuMSwgMTAuNywgMTAuNiwgLTguMSwgLTUuMiwgLTguMCwgLTYuNywgLTYuMSwgLTMuNywgLTcuNSwgLTUuNiwgLTExLjEsIC0xMC4zLCAtMTAuNiwgLTExLjksIC0zLjIsIC0xLjAsIC0yLjIsIC0yLjgsIC0xMC41LCAtOC4xLCAtOS40LCAtOS41LCAtOC4zLCAtNi45LCAtOS40LCAtOC44LCAtNTAuMCwgLTExLjMsIC01MC4wLCAtMTIuOCwgLTAuNiwgMi4yLCAtMC4zLCAwLjEsIC01MC4wLCAtMTAuMSwgLTE3LjUsIC0xMS4xLCAtOC42LCAtOS45LCAtOC42LCAtMTEuOSxdLFxuICAgICAgICAgICAgWy04LjksIC05LjQsIC04LjYsIC04LjksIC0yLjksIC00LjUsIC0yLjIsIC0zLjksIC04LjgsIC03LjUsIC04LjEsIC03LjksIC04LjgsIC0xMS42LCAtNy43LCAtMTEuOSwgLTAuNywgLTQuMSwgLTAuNSwgLTQuMCwgMTEuMSwgMTAuNywgMTMuMiwgMTAuNCwgLTUuNywgLTUuOCwgLTMuNSwgLTYuMSwgLTMuNiwgLTYuNSwgLTMuMywgLTUuNSwgLTkuNCwgLTExLjAsIC04LjcsIC0xMS4yLCAtMS44LCAtMi43LCAwLjcsIC0zLjAsIC05LjEsIC04LjIsIC03LjMsIC05LjQsIC03LjIsIC04LjIsIC03LjIsIC04LjIsIC01MC4wLCAtMTMuMiwgLTUwLjAsIC0xMy4zLCAwLjUsIC0wLjksIDEuOCwgLTAuNiwgLTUwLjAsIC0xMS40LCAtMTEuMSwgLTEwLjUsIC02LjEsIC0xMi45LCAtNS4wLCAtMTEuOSxdLFxuICAgICAgICAgICAgWy0xMC44LCAtOS42LCAtMTEuOSwgLTcuNywgLTMuMywgLTMuOCwgLTQuNSwgLTEuNiwgLTExLjcsIC03LjcsIC0xMi4wLCAtNi4yLCAtOS42LCAtMTIuMCwgLTkuOCwgLTkuNCwgLTMuMiwgLTQuNywgLTQuNiwgLTIuNCwgMTAuNSwgMTAuNiwgMTAuNCwgMTIuNiwgLTguMiwgLTcuOSwgLTkuMCwgLTQuNywgLTYuMSwgLTYuMCwgLTcuNSwgLTIuOSwgLTEwLjksIC0xMi4yLCAtMTEuMiwgLTEwLjksIC0yLjQsIC0yLjksIC0yLjcsIC0wLjksIC0xMC40LCAtOS43LCAtMTAuMiwgLTguMCwgLTguNCwgLTkuMSwgLTkuMywgLTYuNSwgLTUwLjAsIC0xMy4zLCAtNTAuMCwgLTExLjAsIC0wLjAsIC0wLjQsIC0wLjQsIDIuMywgLTUwLjAsIC0xMC45LCAtMTcuMiwgLTguMywgLTguMywgLTEyLjcsIC03LjgsIC05LjMsXSxcbiAgICAgICAgICAgIFsyLjEsIC04LjEsIDEuMiwgLTcuMCwgLTguMCwgLTkuNSwgLTcuMywgLTkuOSwgMTAuNSwgLTUuNSwgOS4zLCAtNS43LCAtOS41LCAtMTUuMSwgLTEwLjAsIC0xMi45LCAyLjUsIC0xLjIsIC0wLjEsIC0xLjAsIC02LjAsIC04LjEsIC01LjcsIC04LjIsIDEzLjgsIDExLjMsIDExLjgsIDEyLjEsIC02LjAsIC05LjEsIC05LjAsIC05LjUsIC04LjksIC0xMy40LCAtMTAuMCwgLTEzLjEsIC05LjksIC0xMS43LCAtOS44LCAtMTIuOCwgLTUuOSwgLTkuNCwgLTYuNSwgLTguMSwgLTEwLjcsIC0xNC4wLCAtMTMuMywgLTEzLjksIC01MC4wLCAtMTEuOSwgLTUwLjAsIC05LjcsIC04LjksIC0xMC44LCAtOS4wLCAtMTEuMSwgLTUwLjAsIC02LjUsIC01LjMsIC02LjMsIC0xMC41LCAtMTYuMiwgLTEwLjQsIC0xNS4yLF0sXG4gICAgICAgICAgICBbMC4wLCAtNS4wLCAwLjUsIC02LjgsIC05LjEsIC03LjgsIC03LjUsIC04LjksIDcuNywgLTIuNCwgOC4yLCAtNS4xLCAtMTEuOSwgLTEzLjEsIC0xMC40LCAtMTQuMywgLTAuOCwgMy4wLCAtMC45LCAwLjgsIC04LjMsIC01LjIsIC01LjgsIC03LjksIDExLjMsIDE1LjAsIDExLjIsIDEyLjgsIC05LjcsIC01LjMsIC05LjIsIC03LjgsIC0xMS43LCAtMTAuNiwgLTEwLjEsIC0xMi4yLCAtMTEuNywgLTguOCwgLTguOSwgLTExLjgsIC05LjMsIC01LjAsIC04LjAsIC04LjIsIC0xMy42LCAtMTEuNCwgLTEyLjgsIC0xMy4wLCAtNTAuMCwgLTcuMiwgLTUwLjAsIC04LjQsIC0xMS4wLCAtNy43LCAtOC43LCAtMTAuMiwgLTUwLjAsIC0xLjUsIC03LjEsIC00LjksIC0xMS4yLCAtMTEuNiwgLTExLjYsIC0xNS4wLF0sXG4gICAgICAgICAgICBbMS40LCAtNy4zLCAyLjIsIC03LjEsIC04LjAsIC05LjMsIC02LjQsIC05LjYsIDkuMSwgLTUuNSwgMTAuMCwgLTUuNCwgLTEwLjksIC0xNC4zLCAtOC40LCAtMTQuMCwgMC45LCAtMS4xLCAyLjQsIC0xLjMsIC02LjksIC04LjAsIC0zLjUsIC05LjAsIDExLjgsIDExLjIsIDEzLjQsIDExLjQsIC03LjMsIC04LjgsIC02LjUsIC04LjUsIC0xMC4wLCAtMTIuNSwgLTcuOCwgLTEyLjUsIC05LjYsIC0xMS4wLCAtNy4xLCAtMTAuNywgLTcuOSwgLTguMCwgLTQuMywgLTkuNCwgLTExLjQsIC0xMi4zLCAtMTAuOSwgLTEyLjksIC01MC4wLCAtMTEuOCwgLTUwLjAsIC0xMS4yLCAtOS40LCAtOS44LCAtNy4zLCAtMTAuNSwgLTUwLjAsIC02LjIsIC0yLjIsIC02LjcsIC05LjgsIC0xNS4yLCAtOC41LCAtMTQuOSxdLFxuICAgICAgICAgICAgWzAuMiwgLTYuMywgMC4xLCAtNC4zLCAtOC4yLCAtOC45LCAtOC41LCAtNy4wLCA4LjUsIC00LjEsIDguMCwgLTIuMSwgLTEwLjUsIC0xMy40LCAtMTAuMiwgLTExLjksIDAuMiwgMS42LCAtMC44LCAzLjQsIC03LjUsIC02LjcsIC02LjEsIC00LjcsIDEyLjEsIDEyLjgsIDExLjQsIDE0LjcsIC04LjcsIC03LjQsIC05LjQsIC01LjMsIC05LjksIC0xMS44LCAtMTAuNSwgLTEwLjMsIC05LjksIC0xMC4xLCAtOS4zLCAtOS4zLCAtOC4xLCAtNy4yLCAtOC4wLCAtNS4yLCAtMTIuMCwgLTEyLjEsIC0xMi42LCAtMTAuOSwgLTUwLjAsIC03LjksIC01MC4wLCAtNS4zLCAtOS4zLCAtOC44LCAtOC45LCAtNy4wLCAtNTAuMCwgLTMuNiwgLTcuMSwgLTEuMiwgLTEwLjIsIC0xMi43LCAtOS45LCAtMTEuMCxdLFxuICAgICAgICAgICAgWy0xMC4yLCAtMTMuNCwgLTExLjgsIC0xMi40LCAtNi4wLCAtOS40LCAtNy4xLCAtOC42LCAtOS44LCAtMTIuOSwgLTEwLjgsIC0xMi40LCAyLjMsIC0xLjQsIDEuMCwgLTEuMCwgLTMuMCwgLTguMCwgLTUuMSwgLTcuNiwgLTIuMiwgLTYuMSwgLTMuNiwgLTYuMSwgLTYuMCwgLTkuNywgLTcuMywgLTguNywgMTEuMiwgNy45LCA4LjksIDguMSwgLTEyLjEsIC0xNy40LCAtMTMuMiwgLTE2LjgsIC02LjMsIC05LjUsIC03LjUsIC04LjgsIC0xMi43LCAtMTUuMiwgLTEzLjEsIC0xNC4yLCAwLjAsIC0zLjEsIC0xLjgsIC0zLjEsIC01MC4wLCAtMTAuNywgLTUwLjAsIC05LjMsIC00LjYsIC04LjksIC01LjksIC04LjMsIC01MC4wLCAtMTIuOCwgLTkuNiwgLTEwLjYsIDkuNSwgLTMuMiwgOC4yLCAtMi44LF0sXG4gICAgICAgICAgICBbLTEzLjUsIC0xMS4zLCAtMTQuMCwgLTEyLjksIC05LjMsIC03LjEsIC04LjIsIC04LjksIC0xMi43LCAtMTAuMywgLTExLjksIC0xMi4zLCAtMC40LCAxLjQsIC0wLjYsIC0wLjQsIC03LjIsIC00LjcsIC02LjksIC01LjcsIC03LjQsIC0zLjcsIC02LjUsIC02LjAsIC05LjEsIC01LjMsIC04LjgsIC03LjQsIDcuOSwgMTEuOSwgNy44LCA5LjMsIC0xNS4yLCAtMTUuMSwgLTE0LjYsIC0xNy4yLCAtOS43LCAtNy4zLCAtOC4yLCAtOS4yLCAtMTUuMCwgLTEyLjgsIC0xNC4xLCAtMTQuOSwgLTIuOCwgMC4yLCAtMi45LCAtMi4zLCAtNTAuMCwgLTcuNCwgLTUwLjAsIC04LjcsIC05LjQsIC03LjMsIC05LjQsIC05LjQsIC01MC4wLCAtOC4wLCAtMTEuOSwgLTkuNywgNi41LCAwLjUsIDYuNCwgLTEuOCxdLFxuICAgICAgICAgICAgWy0xMy4wLCAtMTQuNCwgLTExLjksIC0xMy45LCAtNy43LCAtOS4wLCAtNi43LCAtOC44LCAtMTEuNywgLTEyLjcsIC0xMC43LCAtMTMuMSwgLTAuMiwgLTEuNiwgMS43LCAtMS42LCAtNS43LCAtOC43LCAtNC44LCAtOC4xLCAtNS4zLCAtNy41LCAtMy4zLCAtNy41LCAtOS4wLCAtOS4yLCAtNi41LCAtOS40LCA4LjksIDcuOCwgMTAuMSwgNy44LCAtMTQuMywgLTE3LjcsIC0xMy4wLCAtMTcuOCwgLTguMCwgLTkuNCwgLTYuMiwgLTkuMiwgLTE1LjEsIC0xNC45LCAtMTIuMiwgLTE0LjksIC0xLjgsIC0zLjIsIC0wLjgsIC0zLjIsIC01MC4wLCAtMTAuOCwgLTUwLjAsIC05LjksIC03LjMsIC05LjYsIC02LjQsIC05LjQsIC01MC4wLCAtMTIuMywgLTguNywgLTExLjMsIDcuNiwgLTMuMywgOC43LCAtMi45LF0sXG4gICAgICAgICAgICBbLTEyLjUsIC0xMi45LCAtMTMuNCwgLTEwLjAsIC04LjUsIC05LjAsIC03LjgsIC02LjgsIC0xMS44LCAtMTEuMywgLTEyLjQsIC0xMC4xLCAtMC4zLCAtMC41LCAtMC41LCAxLjIsIC02LjEsIC02LjAsIC02LjcsIC0zLjUsIC01LjksIC01LjYsIC01LjUsIC0yLjksIC05LjUsIC03LjgsIC04LjUsIC01LjMsIDguMSwgOS4zLCA3LjgsIDExLjgsIC0xNC40LCAtMTUuNywgLTE0LjUsIC0xNC42LCAtOC40LCAtOC43LCAtNy45LCAtNy4xLCAtMTQuMywgLTEzLjgsIC0xMy44LCAtMTIuMywgLTIuNCwgLTIuMiwgLTIuOSwgLTAuMiwgLTUwLjAsIC04LjksIC01MC4wLCAtNy4xLCAtOC4xLCAtOS4xLCAtOC43LCAtNi42LCAtNTAuMCwgLTkuNywgLTExLjQsIC04LjAsIDYuOCwgLTEuOCwgNi45LCAwLjQsXSxcbiAgICAgICAgICAgIFstMi42LCAtNi4zLCAtNC45LCAtNC45LCAtNi40LCAtOS40LCAtNy45LCAtOC42LCAtNi4zLCAtNy40LCAtOC4yLCAtNi42LCAtOS43LCAtMTQuOSwgLTExLjEsIC0xMy45LCAtMC4yLCAtOC4yLCAtMi4zLCAtNi44LCAtOC45LCAtMTEuMSwgLTkuNCwgLTEwLjksIC04LjksIC0xMS43LCAtMTAuMCwgLTkuOSwgLTEyLjEsIC0xNS4yLCAtMTQuMywgLTE0LjQsIDExLjEsIDIuOSwgOS4yLCAzLjUsIC0zLjAsIC03LjAsIC00LjMsIC02LjIsIC0yLjIsIC02LjYsIC0zLjcsIC01LjcsIC02LjAsIC0xMC40LCAtOC42LCAtOS41LCAtNTAuMCwgLTE1LjUsIC01MC4wLCAtMTMuOSwgLTcuOCwgLTEwLjUsIC04LjcsIC05LjYsIC01MC4wLCAtMTYuNSwgLTE3LjEsIC0xNC44LCAtMTIuMSwgLTE4LjksIC0xMi40LCAtMTcuNCxdLFxuICAgICAgICAgICAgWy04LjUsIDAuOCwgLTkuMSwgLTAuNywgLTEwLjEsIC03LjUsIC05LjEsIC04LjIsIC0xMS40LCAtMy4xLCAtMTEuOCwgLTQuNCwgLTE1LjUsIC0xNC4zLCAtMTQuOCwgLTE1LjQsIC02LjYsIC00LjcsIC03LjEsIC01LjgsIC0xMi41LCAtMTAuMywgLTExLjAsIC0xMi4yLCAtMTMuNCwgLTEwLjYsIC0xMi41LCAtMTEuOCwgLTE3LjQsIC0xNS4xLCAtMTcuNywgLTE1LjcsIDIuOSwgMTIuNSwgMy4xLCAxMC4zLCAtNy43LCAtNS4yLCAtNi4yLCAtNy4zLCAtNS40LCAtMS43LCAtNS40LCAtMy43LCAtMTEuNiwgLTkuMSwgLTEzLjAsIC0xMC44LCAtNTAuMCwgLTEwLjMsIC01MC4wLCAtMTEuMiwgLTkuOCwgLTguMywgLTkuMSwgLTkuNywgLTUwLjAsIC0xMi43LCAtMjAuNiwgLTEzLjEsIC0xNi4wLCAtMTYuNiwgLTE3LjAsIC0xOC40LF0sXG4gICAgICAgICAgICBbLTUuMCwgLTYuNCwgLTMuNCwgLTUuNiwgLTcuNSwgLTkuMywgLTcuMSwgLTguOCwgLTguOCwgLTcuNCwgLTYuOSwgLTYuOSwgLTExLjQsIC0xNS4yLCAtOS43LCAtMTMuNywgLTEuOCwgLTcuOCwgLTAuOCwgLTcuMiwgLTkuNCwgLTEwLjYsIC04LjcsIC0xMS4yLCAtMTAuMCwgLTEwLjEsIC03LjgsIC0xMC41LCAtMTMuMiwgLTE0LjYsIC0xMy4wLCAtMTQuNSwgOS4yLCAzLjEsIDEwLjgsIDMuMCwgLTQuNSwgLTYuNywgLTIuNywgLTYuNywgLTUuMCwgLTYuOCwgLTIuNSwgLTYuNywgLTcuNSwgLTEwLjQsIC03LjQsIC0xMC4yLCAtNTAuMCwgLTE1LjUsIC01MC4wLCAtMTQuMiwgLTguOSwgLTEwLjIsIC04LjUsIC0xMC4wLCAtNTAuMCwgLTE1LjYsIC0xNS4zLCAtMTUuNSwgLTEzLjAsIC0xOC44LCAtMTIuNiwgLTE4LjMsXSxcbiAgICAgICAgICAgIFstOC4xLCAtMS4xLCAtOC45LCAxLjQsIC04LjYsIC05LjIsIC05LjQsIC02LjgsIC0xMS4wLCAtNC45LCAtMTEuNSwgLTIuNiwgLTEzLjcsIC0xNi44LCAtMTQuNSwgLTEyLjYsIC02LjAsIC02LjcsIC03LjIsIC00LjIsIC0xMS42LCAtMTEuOSwgLTExLjIsIC0xMC45LCAtMTMuMSwgLTEyLjIsIC0xMi41LCAtMTAuMywgLTE2LjgsIC0xNy4yLCAtMTcuOCwgLTE0LjYsIDMuNSwgMTAuMywgMy4wLCAxMi40LCAtNi45LCAtNy41LCAtNi44LCAtNC45LCAtNS40LCAtNC4yLCAtNS40LCAtMS4zLCAtMTAuOCwgLTExLjUsIC0xMi40LCAtOC4yLCAtNTAuMCwgLTEyLjUsIC01MC4wLCAtOC45LCAtOS4yLCAtMTAuMCwgLTkuNCwgLTcuOSwgLTUwLjAsIC0xNC4zLCAtMTkuOSwgLTExLjQsIC0xNi4yLCAtMTkuMiwgLTE1LjgsIC0xNS45LF0sXG4gICAgICAgICAgICBbLTYuMywgLTcuNCwgLTguMCwgLTYuMCwgMi44LCAtMC43LCAwLjksIDAuMywgLTcuNSwgLTQuNCwgLTguNCwgLTMuNiwgLTMuMCwgLTcuNywgLTMuNywgLTYuMiwgLTUuMywgLTEwLjAsIC03LjIsIC04LjksIC0wLjcsIC0zLjIsIC0xLjgsIC0yLjQsIC05LjksIC0xMS43LCAtOS42LCAtOS45LCAtNi4zLCAtOS43LCAtOC4wLCAtOC40LCAtMy4wLCAtNy43LCAtNC41LCAtNi45LCAxMS4zLCA4LjIsIDkuNCwgOS4xLCAtMS4wLCAtMy4zLCAtMS44LCAtMi40LCAxLjUsIC0yLjEsIC0wLjQsIC0xLjEsIC01MC4wLCAtMTQuNSwgLTUwLjAsIC0xMi45LCAyLjgsIC0wLjAsIDEuNCwgMC43LCAtNTAuMCwgLTguNywgLTE0LjEsIC03LjUsIC01LjIsIC0xMi41LCAtNi41LCAtMTAuNyxdLFxuICAgICAgICAgICAgWy05LjksIC01LjAsIC0xMC4wLCAtNi41LCAtMC43LCAyLjYsIC0wLjIsIDAuMSwgLTEwLjMsIC0xLjgsIC05LjksIC0zLjgsIC02LjQsIC00LjcsIC01LjgsIC02LjcsIC04LjIsIC04LjMsIC04LjAsIC0xMC4yLCAtMy45LCAtMS4wLCAtMi43LCAtMi45LCAtMTEuNywgLTguOCwgLTExLjAsIC0xMC4xLCAtOS41LCAtNy4zLCAtOS40LCAtOC43LCAtNy4wLCAtNS4yLCAtNi43LCAtNy41LCA4LjIsIDExLjYsIDguOCwgOS4xLCAtMy43LCAtMC45LCAtMy4xLCAtMy4wLCAtMi4wLCAxLjIsIC0yLjMsIC0xLjMsIC01MC4wLCAtMTIuMSwgLTUwLjAsIC0xMi42LCAwLjEsIDIuNSwgMC43LCAwLjYsIC01MC4wLCAtNi4wLCAtMTQuOCwgLTcuNSwgLTguNiwgLTkuNCwgLTguNSwgLTExLjIsXSxcbiAgICAgICAgICAgIFstNy41LCAtNi4yLCAtNy4yLCAtNi4yLCAwLjksIDAuMiwgMi41LCAwLjIsIC04LjMsIC0zLjUsIC03LjEsIC0zLjcsIC00LjEsIC02LjMsIC0zLjEsIC02LjMsIC01LjcsIC04LjksIC01LjYsIC04LjQsIC0yLjMsIC0yLjIsIDAuNywgLTIuNywgLTkuOCwgLTguOSwgLTcuMSwgLTkuMywgLTcuNSwgLTguMiwgLTYuMiwgLTcuOSwgLTQuMywgLTYuMiwgLTIuNywgLTYuOCwgOS40LCA4LjgsIDEyLjEsIDguOCwgLTIuMSwgLTIuMCwgMC4xLCAtMi40LCAwLjAsIC0xLjEsIDEuMywgLTAuOCwgLTUwLjAsIC0xMS45LCAtNTAuMCwgLTEyLjYsIDEuMiwgMC43LCAzLjUsIDAuOCwgLTUwLjAsIC03LjEsIC0xMi40LCAtNy4xLCAtNy4xLCAtMTAuNiwgLTUuMCwgLTEwLjYsXSxcbiAgICAgICAgICAgIFstOS4wLCAtNi41LCAtMTAuMCwgLTQuOCwgMC4xLCAtMC4xLCAtMC4zLCAyLjQsIC05LjksIC0zLjUsIC0xMC42LCAtMi4wLCAtNS40LCAtNi42LCAtNS42LCAtNC40LCAtNy42LCAtOS45LCAtOC41LCAtOC4yLCAtMy4wLCAtMi44LCAtMy4wLCAtMC45LCAtMTIuOCwgLTExLjgsIC0xMC43LCAtOS4zLCAtOC44LCAtOS4yLCAtOS4yLCAtNy4xLCAtNi4yLCAtNy4zLCAtNi43LCAtNC45LCA5LjEsIDkuMSwgOC44LCAxMS4yLCAtMy4xLCAtMy4wLCAtMy4zLCAtMS4wLCAtMS4xLCAtMS40LCAtMi4wLCAxLjIsIC01MC4wLCAtMTIuOCwgLTUwLjAsIC0xMC45LCAwLjgsIDAuNSwgMC43LCAyLjMsIC01MC4wLCAtNy41LCAtMTYuNSwgLTUuOSwgLTcuOCwgLTExLjEsIC03LjgsIC05LjAsXSxcbiAgICAgICAgICAgIFstNy4xLCAtNS42LCAtOS4xLCAtNS4xLCAtNS45LCAtOC4wLCAtNi45LCAtNy40LCAtMS45LCAtMS42LCAtNC43LCAtMS40LCAtOS42LCAtMTQuNiwgLTEwLjQsIC0xMy4wLCAtNi43LCAtMTAuOCwgLTkuNCwgLTkuOSwgLTkuMSwgLTEwLjUsIC05LjEsIC0xMC40LCAtNS45LCAtOS4zLCAtNy45LCAtOC4xLCAtMTIuNywgLTE1LjAsIC0xNS4xLCAtMTQuMywgLTIuMiwgLTUuNCwgLTUuMCwgLTUuNCwgLTEuMCwgLTMuNywgLTIuMSwgLTMuMSwgMTIuOCwgOS42LCAxMS4xLCAxMC4xLCAtNC44LCAtOS40LCAtOC4xLCAtOC42LCAtNTAuMCwgLTE4LjMsIC01MC4wLCAtMTUuNCwgLTUuOSwgLTcuNSwgLTYuNiwgLTcuMSwgLTUwLjAsIC05LjUsIC0xMS43LCAtOC40LCAtMTIuNSwgLTE3LjMsIC0xMy4yLCAtMTUuNCxdLFxuICAgICAgICAgICAgWy0xMC4yLCAtMS42LCAtMTAuMiwgLTMuMiwgLTcuMywgLTQuNiwgLTYuNSwgLTYuMiwgLTYuNywgMy4wLCAtNi44LCAwLjgsIC0xMS45LCAtMTAuOCwgLTExLjUsIC0xMi4yLCAtOS42LCAtNy4xLCAtOS43LCAtOC40LCAtOS44LCAtOC4xLCAtOC4yLCAtOS43LCAtOS40LCAtNS4wLCAtOC4wLCAtNy4yLCAtMTUuMiwgLTEyLjgsIC0xNC45LCAtMTMuOCwgLTYuNiwgLTEuNywgLTYuOCwgLTQuMiwgLTMuMywgLTAuOSwgLTIuMCwgLTMuMCwgOS42LCAxMi44LCA5LjcsIDEwLjUsIC04LjUsIC01LjYsIC05LjMsIC03LjgsIC01MC4wLCAtMTIuNywgLTUwLjAsIC0xMy44LCAtNi44LCAtNS4xLCAtNS4zLCAtNi41LCAtNTAuMCwgLTQuMSwgLTEyLjgsIC01LjgsIC0xNC40LCAtMTQuMSwgLTEzLjYsIC0xNC44LF0sXG4gICAgICAgICAgICBbLTguMiwgLTQuNywgLTcuMSwgLTUuMCwgLTYuNSwgLTcuNywgLTUuNSwgLTYuOSwgLTQuMSwgLTAuOCwgLTEuMiwgLTAuOSwgLTEwLjUsIC0xMi44LCAtOC4yLCAtMTMuMCwgLTcuNSwgLTEwLjAsIC03LjIsIC05LjcsIC05LjIsIC05LjQsIC03LjMsIC0xMC4yLCAtNi41LCAtOC4wLCAtNC4zLCAtOC4wLCAtMTMuMSwgLTE0LjEsIC0xMi4yLCAtMTMuOCwgLTMuNywgLTUuNCwgLTIuNSwgLTUuNCwgLTEuOCwgLTMuMSwgMC4xLCAtMy4zLCAxMS4xLCA5LjcsIDEyLjksIDkuOCwgLTUuNSwgLTguMSwgLTUuNCwgLTcuOCwgLTUwLjAsIC0xNi40LCAtNTAuMCwgLTE0LjgsIC01LjksIC03LjEsIC00LjcsIC03LjIsIC01MC4wLCAtOC40LCAtNi40LCAtOC4xLCAtMTIuMSwgLTE2LjIsIC0xMC4zLCAtMTUuOCxdLFxuICAgICAgICAgICAgWy05LjIsIC0zLjAsIC05LjksIC0xLjIsIC02LjUsIC02LjEsIC02LjgsIC00LjQsIC02LjQsIDAuOSwgLTcuMCwgMy4wLCAtMTEuOCwgLTEzLjAsIC0xMS4xLCAtMTAuNCwgLTkuMywgLTkuMiwgLTkuOCwgLTYuNCwgLTkuNSwgLTkuNSwgLTkuNCwgLTguMCwgLTguMSwgLTguMiwgLTkuNCwgLTUuMiwgLTE0LjIsIC0xNC45LCAtMTQuOSwgLTEyLjMsIC01LjcsIC0zLjcsIC02LjcsIC0xLjMsIC0yLjQsIC0zLjAsIC0yLjQsIC0xLjAsIDEwLjEsIDEwLjUsIDkuOCwgMTMuMSwgLTcuMiwgLTguMCwgLTguNCwgLTUuMCwgLTUwLjAsIC0xNC43LCAtNTAuMCwgLTExLjQsIC02LjMsIC02LjcsIC01LjgsIC01LjAsIC01MC4wLCAtNi4xLCAtMTMuNCwgLTMuNiwgLTEzLjAsIC0xNi4wLCAtMTMuNywgLTEzLjMsXSxcbiAgICAgICAgICAgIFstOC4yLCAtMTAuOCwgLTEwLjEsIC05LjgsIC0wLjQsIC0zLjYsIC0xLjcsIC0yLjksIC03LjksIC04LjQsIC05LjgsIC04LjIsIDYuMiwgMi4zLCAwLjYsIDIuOSwgLTcuMSwgLTExLjYsIC05LjIsIC0xMS4xLCAtNS42LCAtOC4zLCAtNy4yLCAtOC40LCAtMTAuNywgLTEzLjYsIC0xMS40LCAtMTIuMCwgMC4wLCAtMi44LCAtMS44LCAtMi40LCAtNi4wLCAtMTEuNiwgLTcuNSwgLTEwLjgsIDEuNSwgLTIuMCwgMC4wLCAtMS4xLCAtNC44LCAtOC41LCAtNS41LCAtNy4yLCAxMS45LCA4LjYsIDEwLjAsIDkuMCwgLTUwLjAsIC0xNC4yLCAtNTAuMCwgLTEyLjgsIC00LjEsIC03LjQsIC01LjcsIC02LjUsIC01MC4wLCAtMTEuMCwgLTE0LjMsIC05LjksIDEuNCwgLTcuOSwgLTAuNywgLTYuOCxdLFxuICAgICAgICAgICAgWy0xMi41LCAtOC43LCAtMTMuMCwgLTkuOSwgLTMuOSwgLTEuMCwgLTMuNCwgLTIuOSwgLTEyLjUsIC02LjMsIC0xMS42LCAtOC4xLCAzLjMsIDYuMCwgLTEuNiwgMy44LCAtMTAuNSwgLTEwLjEsIC0xMS4xLCAtMTEuMSwgLTkuMCwgLTYuOSwgLTguMiwgLTkuMSwgLTE0LjAsIC0xMS40LCAtMTIuMywgLTEyLjEsIC0zLjEsIDAuMiwgLTMuMiwgLTIuMiwgLTEwLjQsIC05LjEsIC0xMC40LCAtMTEuNSwgLTIuMSwgMS4yLCAtMS4xLCAtMS40LCAtOS40LCAtNS42LCAtOC4xLCAtOC4wLCA4LjYsIDEyLjQsIDguNiwgOS41LCAtNTAuMCwgLTEwLjQsIC01MC4wLCAtMTEuNiwgLTcuMiwgLTUuNywgLTcuNSwgLTcuNCwgLTUwLjAsIC04LjYsIC0xNS43LCAtOS43LCAtMy4wLCAtMy43LCAtMy4yLCAtNS45LF0sXG4gICAgICAgICAgICBbLTExLjEsIC0xMS45LCAtMTAuNiwgLTExLjMsIC0yLjYsIC00LjEsIC0xLjcsIC0zLjUsIC0xMS40LCAtOS42LCAtOS42LCAtOS4yLCAzLjcsIDIuNSwgMS42LCAyLjUsIC05LjYsIC0xMi4zLCAtOS41LCAtMTEuOCwgLTguMCwgLTkuNCwgLTcuMiwgLTkuMywgLTEzLjMsIC0xMi44LCAtMTAuOSwgLTEyLjYsIC0xLjgsIC0yLjksIC0wLjgsIC0yLjksIC04LjYsIC0xMy4wLCAtNy40LCAtMTIuNCwgLTAuNCwgLTIuMywgMS4zLCAtMi4wLCAtOC4xLCAtOS4zLCAtNS40LCAtOC40LCAxMC4wLCA4LjYsIDExLjQsIDguOSwgLTUwLjAsIC0xMy43LCAtNTAuMCwgLTEzLjIsIC02LjEsIC04LjEsIC01LjUsIC03LjUsIC01MC4wLCAtMTEuMywgLTEyLjcsIC0xMC4xLCAtMS42LCAtNy44LCAtMC4zLCAtNy4yLF0sXG4gICAgICAgICAgICBbLTExLjQsIC0xMC4wLCAtMTIuNywgLTguMiwgLTMuMSwgLTMuMSwgLTIuOCwgLTAuOSwgLTExLjcsIC03LjMsIC0xMi4xLCAtNS44LCAzLjYsIDMuNiwgLTEuMSwgNS44LCAtOS40LCAtMTEuOSwgLTEwLjcsIC0xMC4wLCAtOC41LCAtOC44LCAtOC4yLCAtNi41LCAtMTMuOSwgLTEzLjAsIC0xMi45LCAtMTAuOSwgLTMuMSwgLTIuMywgLTMuMiwgLTAuMiwgLTkuNSwgLTEwLjgsIC0xMC4yLCAtOC4yLCAtMS4xLCAtMS4zLCAtMC44LCAxLjIsIC04LjYsIC03LjgsIC03LjgsIC01LjAsIDkuMCwgOS41LCA4LjksIDEyLjAsIC01MC4wLCAtMTMuMCwgLTUwLjAsIC0xMC4zLCAtNi4yLCAtNy4wLCAtNy4xLCAtNS40LCAtNTAuMCwgLTkuMywgLTE0LjAsIC04LjIsIC0yLjQsIC02LjMsIC0yLjQsIC0zLjksXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMy4zLCAtNTAuMCwgMzAuNiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOS4yLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xNC44LCAtNi4yLCAtMTQuOSwgLTcuNiwgLTE0LjYsIC0xMS42LCAtMTMuMCwgLTEyLjIsIC0xNC4wLCAtOS4wLCAtMTQuMSwgLTEwLjEsIC0xMy42LCAtMTEuMiwgLTEyLjQsIC0xMi41LCAtOC4xLCAyLjIsIC04LjcsIDAuNCwgLTE1LjMsIC0xMS4zLCAtMTMuMiwgLTEzLjMsIC0xMS45LCAtNy4yLCAtMTEuOCwgLTcuOSwgLTEwLjcsIC03LjQsIC0xMC44LCAtOC45LCAtMTUuNSwgLTEwLjMsIC0xNS41LCAtMTIuNSwgLTE0LjUsIC0xMi4xLCAtMTEuOSwgLTEyLjgsIC0xOC4zLCAtMTIuNywgLTE2LjQsIC0xNC43LCAtMTQuMiwgLTEwLjQsIC0xMy43LCAtMTMuMCwgLTUwLjAsIDE1LjEsIC01MC4wLCAxMy4zLCAtOS45LCAtNS44LCAtOC45LCAtNy42LCAtNTAuMCwgLTEuNSwgLTcuOCwgLTMuMCwgLTguMSwgMy42LCAtOS40LCAyLjAsXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMC42LCAtNTAuMCwgMzUuMiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOC41LCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xMy44LCAtNy41LCAtMTQuNCwgLTUuMSwgLTEyLjYsIC0xMS42LCAtMTEuNSwgLTEwLjEsIC0xMy4yLCAtOS43LCAtMTIuNywgLTcuNCwgLTExLjksIC0xMS45LCAtMTEuNSwgLTEwLjIsIC03LjIsIDAuOSwgLTguNiwgMi42LCAtMTQuMSwgLTEyLjgsIC0xMy4zLCAtMTEuMCwgLTkuNywgLTguNCwgLTExLjIsIC01LjMsIC05LjMsIC04LjcsIC05LjksIC03LjEsIC0xMy45LCAtMTEuMiwgLTE0LjIsIC04LjksIC0xMi45LCAtMTIuNiwgLTEyLjYsIC0xMC45LCAtMTUuNCwgLTEzLjgsIC0xNC44LCAtMTEuNCwgLTEyLjgsIC0xMS42LCAtMTMuMiwgLTEwLjMsIC01MC4wLCAxMy4zLCAtNTAuMCwgMTUuMiwgLTguNiwgLTcuMCwgLTguNCwgLTQuOCwgLTUwLjAsIC0zLjAsIC03LjEsIC0wLjEsIC03LjMsIDIuMywgLTguNywgMy45LF0sXG4gICAgICAgICAgICBbLTcuMywgLTYuMywgLTguOSwgLTUuNSwgMi45LCAwLjIsIDEuNSwgMS4yLCAtOC41LCAtMi4zLCAtMTAuMCwgLTEuNywgLTUuNiwgLTEwLjUsIC01LjUsIC05LjYsIC00LjMsIC03LjksIC02LjEsIC03LjIsIDIuMywgLTAuNiwgMC41LCAtMC4wLCAtOC45LCAtMTEuMCwgLTkuNCwgLTkuMywgLTQuNiwgLTkuNCwgLTcuMywgLTguMSwgLTcuOCwgLTkuOCwgLTguOSwgLTkuMiwgMi44LCAwLjEsIDEuMiwgMC44LCAtNS45LCAtNi44LCAtNS45LCAtNi4zLCAtNC4xLCAtNy4yLCAtNi4xLCAtNi4yLCAtNTAuMCwgLTkuOSwgLTUwLjAsIC04LjYsIDEyLjUsIDkuNCwgMTEuMCwgOS44LCAtNTAuMCwgLTQuOCwgLTguNywgLTMuNSwgLTAuMCwgLTguNiwgLTIuMSwgLTcuMCxdLFxuICAgICAgICAgICAgWy0xMC4xLCAtNC4zLCAtMTAuOCwgLTUuOCwgMC4xLCAyLjMsIDAuNywgMC42LCAtMTAuNCwgLTAuMiwgLTEwLjgsIC0yLjAsIC04LjgsIC05LjIsIC04LjAsIC05LjcsIC02LjgsIC01LjksIC03LjUsIC03LjAsIC0xLjQsIDIuMiwgLTAuOSwgLTAuNCwgLTEwLjgsIC03LjcsIC05LjgsIC04LjgsIC04LjksIC03LjMsIC05LjYsIC05LjEsIC0xMC41LCAtOC4zLCAtMTAuMiwgLTEwLjAsIC0wLjAsIDIuNSwgMC43LCAwLjUsIC03LjUsIC01LjEsIC03LjEsIC02LjcsIC03LjQsIC01LjcsIC04LjEsIC03LjAsIC01MC4wLCAtNS44LCAtNTAuMCwgLTcuMCwgOS40LCAxMi43LCAxMC4xLCAxMC4wLCAtNTAuMCwgLTEuNSwgLTExLjMsIC0zLjMsIC01LjQsIC00LjIsIC01LjYsIC02LjgsXSxcbiAgICAgICAgICAgIFstOC40LCAtNi4yLCAtOC45LCAtNS45LCAxLjgsIDAuNCwgMi43LCAxLjIsIC05LjEsIC0xLjIsIC04LjgsIC0xLjUsIC03LjIsIC0xMC41LCAtNC45LCAtOS42LCAtNS43LCAtNy40LCAtNS41LCAtNy40LCAwLjMsIC0wLjMsIDEuOCwgLTAuNCwgLTkuMCwgLTguNywgLTcuMywgLTguOSwgLTUuOSwgLTkuNCwgLTYuNCwgLTguNywgLTguNywgLTkuMSwgLTguNSwgLTkuNCwgMS40LCAwLjcsIDMuNSwgMC43LCAtNi42LCAtNS4zLCAtNC43LCAtNS44LCAtNS43LCAtNy41LCAtNS41LCAtNy4xLCAtNTAuMCwgLTguOSwgLTUwLjAsIC04LjQsIDExLjAsIDEwLjEsIDEzLjIsIDEwLjIsIC01MC4wLCAtNC4yLCAtNi4xLCAtMy42LCAtMy41LCAtOC40LCAtMS4yLCAtNi44LF0sXG4gICAgICAgICAgICBbLTkuMSwgLTUuNCwgLTEwLjQsIC00LjIsIDEuMCwgMC41LCAwLjYsIDIuNCwgLTkuNiwgLTEuNSwgLTEwLjUsIC0wLjUsIC04LjksIC0xMC41LCAtNy4yLCAtOC4zLCAtNi4zLCAtNi45LCAtNy43LCAtNS4xLCAtMC41LCAwLjEsIC0wLjYsIDIuMywgLTExLjEsIC0xMC4yLCAtMTAuNSwgLTcuMCwgLTguMywgLTkuNCwgLTkuNCwgLTYuNiwgLTkuNiwgLTkuNywgLTEwLjAsIC03LjksIDAuNywgMC42LCAwLjgsIDIuMywgLTcuMSwgLTYuNSwgLTcuMiwgLTUuMCwgLTYuNSwgLTcuNCwgLTcuNSwgLTUuNCwgLTUwLjAsIC03LjYsIC01MC4wLCAtNC44LCA5LjgsIDEwLjAsIDEwLjIsIDEyLjEsIC01MC4wLCAtMy4xLCAtMTEuNCwgLTAuNywgLTQuNiwgLTYuNiwgLTQuOSwgLTMuOSxdLFxuICAgICAgICAgICAgWy01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDI5LjIsIC01MC4wLCAyOC41LCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDMzLjMsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLF0sXG4gICAgICAgICAgICBbLTEzLjAsIC03LjAsIC0xMy4xLCAtOC4zLCAtOS4yLCAtNi41LCAtOC45LCAtNy42LCAtOS44LCAtMC43LCAtOS4yLCAtMi4xLCAtMTIuNCwgLTEwLjMsIC0xMi40LCAtMTEuNiwgLTkuNSwgLTQuNiwgLTEwLjQsIC01LjcsIC0xMy42LCAtMTAuMSwgLTExLjQsIC0xMC45LCAtNi41LCAtMS41LCAtNi4yLCAtMy42LCAtMTIuOCwgLTguMCwgLTEyLjMsIC05LjcsIC0xNi41LCAtMTIuNywgLTE1LjYsIC0xNC4zLCAtOC43LCAtNi4wLCAtNy4xLCAtNy41LCAtOS41LCAtNC4xLCAtOC40LCAtNi4xLCAtMTEuMCwgLTguNiwgLTExLjMsIC05LjMsIC01MC4wLCAtMS41LCAtNTAuMCwgLTMuMCwgLTQuOCwgLTEuNSwgLTQuMiwgLTMuMSwgLTUwLjAsIDE2LjQsIC01LjEsIDE0LjIsIC0xMC4xLCAtNC4zLCAtMTAuMCwgLTUuNCxdLFxuICAgICAgICAgICAgWy0xMy41LCAtMTYuMywgLTExLjgsIC0xNS41LCAtMTMuNiwgLTE1LjMsIC0xMi4xLCAtMTYuMSwgLTcuNywgLTEzLjMsIC00LjIsIC0xMi42LCAtMTQuMSwgLTE2LjIsIC0xMC4zLCAtMTUuNCwgLTkuNiwgLTExLjYsIC03LjcsIC05LjgsIC0xNC4zLCAtMTcuNSwgLTExLjEsIC0xNy4yLCAtNS4zLCAtNy4xLCAtMi4yLCAtNy4xLCAtOS42LCAtMTEuOSwgLTguNywgLTExLjQsIC0xNy4xLCAtMjAuNiwgLTE1LjMsIC0xOS45LCAtMTQuMSwgLTE0LjgsIC0xMi40LCAtMTYuNSwgLTExLjcsIC0xMi44LCAtNi40LCAtMTMuNCwgLTE0LjMsIC0xNS43LCAtMTIuNywgLTE0LjAsIC01MC4wLCAtNy44LCAtNTAuMCwgLTcuMSwgLTguNywgLTExLjMsIC02LjEsIC0xMS40LCAtNTAuMCwgLTUuMSwgMTguNiwgLTQuOCwgLTguNiwgLTguMSwgLTQuNSwgLTcuMyxdLFxuICAgICAgICAgICAgWy0xMi40LCAtOC4yLCAtMTMuMCwgLTUuOSwgLTcuNywgLTcuOCwgLTcuNCwgLTUuOCwgLTguOCwgLTIuMCwgLTkuMywgLTAuNCwgLTExLjYsIC0xMS4zLCAtMTEuNiwgLTkuNCwgLTguOSwgLTUuNiwgLTEwLjAsIC0zLjIsIC0xMS41LCAtMTEuMSwgLTEwLjUsIC04LjMsIC02LjMsIC00LjksIC02LjcsIC0xLjIsIC0xMC42LCAtOS43LCAtMTEuMywgLTguMCwgLTE0LjgsIC0xMy4xLCAtMTUuNSwgLTExLjQsIC03LjUsIC03LjUsIC03LjEsIC01LjksIC04LjQsIC01LjgsIC04LjEsIC0zLjYsIC05LjksIC05LjcsIC0xMC4xLCAtOC4yLCAtNTAuMCwgLTMuMCwgLTUwLjAsIC0wLjEsIC0zLjUsIC0zLjMsIC0zLjYsIC0wLjcsIC01MC4wLCAxNC4yLCAtNC44LCAxNi40LCAtOC45LCAtNS44LCAtOC45LCAtMy40LF0sXG4gICAgICAgICAgICBbLTEwLjcsIC0xMy4yLCAtMTIuNCwgLTExLjYsIC00LjgsIC04LjQsIC02LjEsIC03LjIsIC0xMC4zLCAtMTEuOCwgLTExLjAsIC0xMS42LCAyLjgsIC0xLjcsIDAuNywgLTEuMSwgLTYuMiwgLTkuNywgLTcuMywgLTguNCwgLTUuMywgLTguNiwgLTYuMSwgLTguMywgLTEwLjUsIC0xMS4yLCAtOS44LCAtMTAuMiwgOS41LCA2LjUsIDcuNiwgNi44LCAtMTIuMSwgLTE2LjAsIC0xMy4wLCAtMTYuMiwgLTUuMiwgLTguNiwgLTcuMSwgLTcuOCwgLTEyLjUsIC0xNC40LCAtMTIuMSwgLTEzLjAsIDEuNCwgLTMuMCwgLTEuNiwgLTIuNCwgLTUwLjAsIC04LjEsIC01MC4wLCAtNy4zLCAtMC4wLCAtNS40LCAtMy41LCAtNC42LCAtNTAuMCwgLTEwLjEsIC04LjYsIC04LjksIDEzLjIsIC0wLjksIDkuNywgLTAuMyxdLFxuICAgICAgICAgICAgWy0xOC4xLCAtMTIuMywgLTE5LjQsIC0xNC4yLCAtMTIuMiwgLTkuNSwgLTExLjUsIC0xMC44LCAtMTcuOSwgLTExLjksIC0xOC4yLCAtMTMuOSwgLTYuNCwgLTMuNywgLTYuOCwgLTUuNCwgLTEyLjgsIC01LjksIC0xMy42LCAtNy40LCAtMTMuNywgLTkuOSwgLTEyLjksIC0xMi43LCAtMTYuMiwgLTExLjYsIC0xNS4yLCAtMTIuNywgLTMuMiwgMC41LCAtMy4zLCAtMS44LCAtMTguOSwgLTE2LjYsIC0xOC44LCAtMTkuMiwgLTEyLjUsIC05LjQsIC0xMC42LCAtMTEuMSwgLTE3LjMsIC0xNC4xLCAtMTYuMiwgLTE2LjAsIC03LjksIC0zLjcsIC03LjgsIC02LjMsIC01MC4wLCAzLjYsIC01MC4wLCAyLjMsIC04LjYsIC00LjIsIC04LjQsIC02LjYsIC01MC4wLCAtNC4zLCAtOC4xLCAtNS44LCAtMC45LCAxNC4yLCAtMS44LCAxMS42LF0sXG4gICAgICAgICAgICBbLTExLjgsIC0xMy4xLCAtMTEuNSwgLTEyLjAsIC02LjIsIC04LjMsIC01LjQsIC03LjQsIC0xMS44LCAtMTIuMywgLTExLjEsIC0xMS40LCAwLjUsIC0yLjUsIDIuNCwgLTEuNiwgLTYuOCwgLTkuOSwgLTYuNCwgLTguOSwgLTYuMSwgLTguNiwgLTUuMCwgLTcuOCwgLTEwLjQsIC0xMS42LCAtOC41LCAtOS45LCA4LjIsIDYuNCwgOC43LCA2LjksIC0xMi40LCAtMTcuMCwgLTEyLjYsIC0xNS44LCAtNi41LCAtOC41LCAtNS4wLCAtNy44LCAtMTMuMiwgLTEzLjYsIC0xMC4zLCAtMTMuNywgLTAuNywgLTMuMiwgLTAuMywgLTIuNCwgLTUwLjAsIC05LjQsIC01MC4wLCAtOC43LCAtMi4xLCAtNS42LCAtMS4yLCAtNC45LCAtNTAuMCwgLTEwLjAsIC00LjUsIC04LjksIDkuNywgLTEuOCwgMTEuMywgLTAuOSxdLFxuICAgICAgICAgICAgWy0xNy4yLCAtMTMuMywgLTE3LjgsIC0xMS42LCAtMTEuMCwgLTExLjEsIC0xMC40LCAtOS4wLCAtMTYuMCwgLTEyLjcsIC0xNi4xLCAtMTEuMSwgLTUuMiwgLTUuNCwgLTYuMCwgLTMuMywgLTExLjgsIC03LjMsIC0xMy4zLCAtNS45LCAtMTIuNywgLTExLjksIC0xMS45LCAtOS4zLCAtMTUuMiwgLTE1LjAsIC0xNC45LCAtMTEuMCwgLTIuOCwgLTEuOCwgLTIuOSwgMC40LCAtMTcuNCwgLTE4LjQsIC0xOC4zLCAtMTUuOSwgLTEwLjcsIC0xMS4yLCAtMTAuNiwgLTkuMCwgLTE1LjQsIC0xNC44LCAtMTUuOCwgLTEzLjMsIC02LjgsIC01LjksIC03LjIsIC0zLjksIC01MC4wLCAyLjAsIC01MC4wLCAzLjksIC03LjAsIC02LjgsIC02LjgsIC0zLjksIC01MC4wLCAtNS40LCAtNy4zLCAtMy40LCAtMC4zLCAxMS42LCAtMC45LCAxNC4xLF1dO1xuICAgICAgICB0aGlzLlRSQU5TID0gW1s1LCAwLCAwLCA0XSxcbiAgICAgICAgICAgIFswLCA1LCA0LCAwXSxcbiAgICAgICAgICAgIFswLCA0LCA1LCAwXSxcbiAgICAgICAgICAgIFs0LCAwLCAwLCA1XV07XG4gICAgICAgIHRoaXMuQ09OQkxPID0geyAnQSc6IDAsICdSJzogMSwgJ04nOiAyLCAnRCc6IDMsICdDJzogNCwgJ1EnOiA1LCAnRSc6IDYsICdHJzogNywgJ0gnOiA4LCAnSSc6IDksICdMJzogMTAsICdLJzogMTEsICdNJzogMTIsICdGJzogMTMsICdQJzogMTQsICdTJzogMTUsICdUJzogMTYsICdXJzogMTcsICdZJzogMTgsICdWJzogMTksICdCJzogMjAsICdaJzogMjEsICdYJzogMjIsICcqJzogMjMgfTtcbiAgICAgICAgdGhpcy5DT05OVUNMID0geyAnQSc6IDAsICdUJzogMSwgJ0MnOiAyLCAnRyc6IDMgfTtcbiAgICAgICAgdGhpcy5DT05TQ0hOID0geyAnQUFBJzogMCwgJ0FBQyc6IDEsICdBQUcnOiAyLCAnQUFUJzogMywgJ0FDQSc6IDQsICdBQ0MnOiA1LCAnQUNHJzogNiwgJ0FDVCc6IDcsICdBR0EnOiA4LCAnQUdDJzogOSwgJ0FHRyc6IDEwLCAnQUdUJzogMTEsICdBVEEnOiAxMiwgJ0FUQyc6IDEzLCAnQVRHJzogMTQsICdBVFQnOiAxNSwgJ0NBQSc6IDE2LCAnQ0FDJzogMTcsICdDQUcnOiAxOCwgJ0NBVCc6IDE5LCAnQ0NBJzogMjAsICdDQ0MnOiAyMSwgJ0NDRyc6IDIyLCAnQ0NUJzogMjMsICdDR0EnOiAyNCwgJ0NHQyc6IDI1LCAnQ0dHJzogMjYsICdDR1QnOiAyNywgJ0NUQSc6IDI4LCAnQ1RDJzogMjksICdDVEcnOiAzMCwgJ0NUVCc6IDMxLCAnR0FBJzogMzIsICdHQUMnOiAzMywgJ0dBRyc6IDM0LCAnR0FUJzogMzUsICdHQ0EnOiAzNiwgJ0dDQyc6IDM3LCAnR0NHJzogMzgsICdHQ1QnOiAzOSwgJ0dHQSc6IDQwLCAnR0dDJzogNDEsICdHR0cnOiA0MiwgJ0dHVCc6IDQzLCAnR1RBJzogNDQsICdHVEMnOiA0NSwgJ0dURyc6IDQ2LCAnR1RUJzogNDcsICdUQUEnOiA0OCwgJ1RBQyc6IDQ5LCAnVEFHJzogNTAsICdUQVQnOiA1MSwgJ1RDQSc6IDUyLCAnVENDJzogNTMsICdUQ0cnOiA1NCwgJ1RDVCc6IDU1LCAnVEdBJzogNTYsICdUR0MnOiA1NywgJ1RHRyc6IDU4LCAnVEdUJzogNTksICdUVEEnOiA2MCwgJ1RUQyc6IDYxLCAnVFRHJzogNjIsICdUVFQnOiA2MyB9O1xuICAgICAgICB0aGlzLnNldE1ldGhvZChhbGlnbkdyaWRfKTtcbiAgICAgICAgdGhpcy5zZXRTZXF1ZW5jZXMoc2VxMV8sIHNlcTJfKTtcbiAgICAgICAgdGhpcy5zZXRHYXAoZ2FwXyk7XG4gICAgfVxuICAgIGZpbGxOZWVkbGVtYW4oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVswXS52YWx1ZSA9IC1pICogdGhpcy5nYXA7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVswXS5wYXJlbnRJID0gaSAtIDE7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVswXS5wYXJlbnRKID0gMDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmxlbjI7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0udmFsdWUgPSAtaSAqIHRoaXMuZ2FwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFswXVtpXS5wYXJlbnRKID0gaSAtIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmlsbE9uZShpLCBqKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID0gTWF0aC5tYXgodGhpcy5kcEdyaWRbaSAtIDFdW2ogLSAxXS52YWx1ZSArIHRoaXMuc2NvcmVzW2kgLSAxXVtqIC0gMV0sIE1hdGgubWF4KHRoaXMuZHBHcmlkW2kgLSAxXVtqXS52YWx1ZSAtIHRoaXMuZ2FwLCB0aGlzLmRwR3JpZFtpXVtqIC0gMV0udmFsdWUgLSB0aGlzLmdhcCkpO1xuICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPT0gdGhpcy5kcEdyaWRbaSAtIDFdW2ogLSAxXS52YWx1ZSArIHRoaXMuc2NvcmVzW2kgLSAxXVtqIC0gMV0pIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSBpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqIC0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9PSB0aGlzLmRwR3JpZFtpIC0gMV1bal0udmFsdWUgLSB0aGlzLmdhcCkge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IGkgLSAxO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IGo7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gaTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqIC0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBncmlkRnJvbU5hbWUocGF0aCkge1xuICAgICAgICBzd2l0Y2ggKHBhdGgpIHtcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTQ1JzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNNDU7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU01MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTUwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNNjInOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU02MjtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTgwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNODA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU05MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTkwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFNMzAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5QQU0zMDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBTTcwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNNzA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQU0yNTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5QQU0yNTA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdOVUNMRU9USURFUyc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLk5VQ0xFT1RJREVTO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTk5VQ0w7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1RSQU5TJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuVFJBTlM7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OTlVDTDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU0NITkVJREVSJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuU0NITkVJREVSO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTlNDSE47XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGxTY29yZXMoKTtcbiAgICB9XG4gICAgY29uc3RydWN0UmVzdWx0KGksIGopIHtcbiAgICAgICAgbGV0IHJlczEgPSBcIlwiLCByZXMyID0gXCJcIiwgZ2FwUyA9IFwiXCI7XG4gICAgICAgIGxldCB0b3RhbCA9IHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RlcDsgaSsrKSB7XG4gICAgICAgICAgICBnYXBTICs9ICd8JztcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaSA+IDAgfHwgaiA+IDApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID09IGkpIHtcbiAgICAgICAgICAgICAgICByZXMxID0gZ2FwUyArIHJlczE7XG4gICAgICAgICAgICAgICAgcmVzMiA9IHRoaXMuc2VxMi5zdWJzdHIoKGogLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID09IGopIHtcbiAgICAgICAgICAgICAgICByZXMyID0gZ2FwUyArIHJlczI7XG4gICAgICAgICAgICAgICAgcmVzMSA9IHRoaXMuc2VxMS5zdWJzdHIoKGkgLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaSAtIDEgPj0gMClcbiAgICAgICAgICAgICAgICAgICAgcmVzMSA9IHRoaXMuc2VxMS5zdWJzdHIoKGkgLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXMxID0gZ2FwUyArIHJlczE7XG4gICAgICAgICAgICAgICAgaWYgKGogLSAxID49IDApXG4gICAgICAgICAgICAgICAgICAgIHJlczIgPSB0aGlzLnNlcTIuc3Vic3RyKChqIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMyO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzMiA9IGdhcFMgKyByZXMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRlbXBJID0gaTtcbiAgICAgICAgICAgIGkgPSB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJO1xuICAgICAgICAgICAgaiA9IHRoaXMuZHBHcmlkW3RlbXBJXVtqXS5wYXJlbnRKO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQWxpZ25lZChyZXMxLCByZXMyLCB0b3RhbCk7XG4gICAgfVxuICAgIGZpbGxTY29yZXMoKSB7XG4gICAgICAgIHRoaXMuc2NvcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2NvcmVzLnB1c2goW10pO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmxlbjI7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NvcmVzW2ldLnB1c2godGhpcy5hbGlnbkdyaWRbdGhpcy5jb25uZWN0aW9uc1t0aGlzLnNlcTEuc3Vic3RyKGkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCldXVt0aGlzLmNvbm5lY3Rpb25zW3RoaXMuc2VxMi5zdWJzdHIoaiAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB0eXBlUmVjKCkge1xuICAgICAgICBpZiAoL1tBVEdDXSovLnRlc3QodGhpcy5zZXExKSAmJiAvW0FUR0NdKi8udGVzdCh0aGlzLnNlcTIpKVxuICAgICAgICAgICAgcmV0dXJuIFwiTlVDTEVPVElERVNcIjtcbiAgICAgICAgaWYgKC9bQVJORENRRUdISUxLTUZQU1RXWVZCWlgqXSovLnRlc3QodGhpcy5zZXExKSAmJiAvW0FSTkRDUUVHSElMS01GUFNUV1lWQlpYKl0qLy50ZXN0KHRoaXMuc2VxMikpXG4gICAgICAgICAgICByZXR1cm4gXCJCTE9TVU02MlwiO1xuICAgICAgICB0aHJvdyBFcnJvcihcIkNhbid0IHJlY29nbml6ZSBzZXF1ZW5jZSB0eXBlXCIpO1xuICAgIH1cbiAgICBuZWVkbGVtYW5XdW5jaCgpIHtcbiAgICAgICAgdGhpcy5kcEdyaWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbjEgKyAxOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yICsgMTsgaisrKVxuICAgICAgICAgICAgICAgIHJvdy5wdXNoKG5ldyBDZWxsKCkpO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWQucHVzaChyb3cpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsbE5lZWRsZW1hbigpO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPD0gdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGxPbmUoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0UmVzdWx0KHRoaXMubGVuMSwgdGhpcy5sZW4yKTtcbiAgICB9XG4gICAgc21pdGhXYXRlcm1hbigpIHtcbiAgICAgICAgdGhpcy5kcEdyaWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbjEgKyAxOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yICsgMTsgaisrKVxuICAgICAgICAgICAgICAgIHJvdy5wdXNoKG5ldyBDZWxsKCkpO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWQucHVzaChyb3cpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBiZXN0VmFsID0gMDtcbiAgICAgICAgbGV0IGJlc3RJID0gMCwgYmVzdEogPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPD0gdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGxPbmUoaSwgaik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZHBHcmlkW3RoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEldW3RoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEpdLnZhbHVlID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPiBiZXN0VmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RWYWwgPSB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEkgPSBpO1xuICAgICAgICAgICAgICAgICAgICBiZXN0SiA9IGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdFJlc3VsdChiZXN0SSwgYmVzdEopO1xuICAgIH1cbiAgICBzZXRTZXF1ZW5jZXMoc2VxMV8sIHNlcTJfKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9IHNlcTFfO1xuICAgICAgICB0aGlzLnNlcTIgPSBzZXEyXztcbiAgICAgICAgdGhpcy5sZW4xID0gdGhpcy5zZXExLmxlbmd0aCAvIHRoaXMuc3RlcDtcbiAgICAgICAgdGhpcy5sZW4yID0gdGhpcy5zZXEyLmxlbmd0aCAvIHRoaXMuc3RlcDtcbiAgICAgICAgdGhpcy5maWxsU2NvcmVzKCk7XG4gICAgfVxuICAgIHNldEdhcChnYXBfKSB7XG4gICAgICAgIHRoaXMuZ2FwID0gZ2FwXztcbiAgICB9XG4gICAgc2V0TWV0aG9kKGFsaWduR3JpZF8gPSBcIlwiKSB7XG4gICAgICAgIGlmIChhbGlnbkdyaWRfID09IFwiQVVUT1wiKSB7XG4gICAgICAgICAgICBhbGlnbkdyaWRfID0gdGhpcy50eXBlUmVjKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkRnJvbU5hbWUoYWxpZ25HcmlkXyk7XG4gICAgfVxufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRNYWNyb01vbChtb25vbWVycykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgY29uc3QgbW9kdWxlUmRraXQgPSB5aWVsZCBncm9rLmZ1bmN0aW9ucy5jYWxsKCdDaGVtOmdldFJkS2l0TW9kdWxlJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9ub21lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbW9ub21lcnNbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2wgPSBtb2R1bGVSZGtpdC5nZXRfbW9sKG1vbm9tZXJzW2ldW2pdWydtb2xmaWxlJ10pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBtb2wuZ2V0X3YzS21vbGJsb2NrKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kaWNlcyA9IGdldEluZGljZXMobW9ub21lcnNbaV1bal0sIGEpO1xuICAgICAgICAgICAgICAgIG1vbm9tZXJzW2ldW2pdWydpbmRpY2VzJ10gPSBpbmRpY2VzO1xuICAgICAgICAgICAgICAgIG1vbm9tZXJzW2ldW2pdWydtb2xmaWxlJ10gPSB5aWVsZCByb3RhdGVCYWNrYm9uZVYzMDAwKGEsIGluZGljZXMpO1xuICAgICAgICAgICAgICAgIG1vbCA9PT0gbnVsbCB8fCBtb2wgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vbC5kZWxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGxpbmtWMzAwMChtb25vbWVyc1tpXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXRJbmRpY2VzKG1vbm9tZXIsIG1vbFYzMDAwKSB7XG4gICAgY29uc3QgbW9sZmlsZSA9IG1vbm9tZXJbXCJtb2xmaWxlXCJdO1xuICAgIGxldCBpbmRleFN0YXJ0ID0gbW9sZmlsZS5pbmRleE9mKCdNICBSR1AnLCAwKSArIDg7XG4gICAgbGV0IGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleFN0YXJ0KTtcbiAgICBjb25zdCBpbmRpY2VzRGF0YSA9IG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4U3RhcnQsIGluZGV4RW5kKS5yZXBsYWNlQWxsKCcgICcsICcgJykucmVwbGFjZUFsbCgnICAnLCAnICcpO1xuICAgIGxldCBwYXJzZWREYXRhID0gaW5kaWNlc0RhdGEuc3BsaXQoJyAnKTtcbiAgICBjb25zdCByZW1GaXJzdCA9IHBhcnNlZERhdGFbMl0gPT0gJzEnID8gcGFyc2VJbnQocGFyc2VkRGF0YVsxXSkgOiBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICBjb25zdCByZW1MYXN0ID0gcGFyc2VkRGF0YVsyXSA9PSAnMicgPyBwYXJzZUludChwYXJzZWREYXRhWzFdKSA6IHBhcnNlSW50KHBhcnNlZERhdGFbM10pO1xuICAgIGNvbnN0IG51bWJlcnMgPSBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xWMzAwMCk7XG4gICAgbGV0IGluZGV4Qm9uZHMgPSBtb2xWMzAwMC5pbmRleE9mKCdNICBWMzAgQkVHSU4gQk9ORCcpOyAvLyBWMzAwMCBpbmRleCBmb3IgYm9uZHNcbiAgICBpbmRleEJvbmRzID0gbW9sVjMwMDAuaW5kZXhPZignXFxuJywgaW5kZXhCb25kcyk7XG4gICAgaW5kZXhTdGFydCA9IGluZGV4Qm9uZHM7XG4gICAgaW5kZXhFbmQgPSBpbmRleEJvbmRzO1xuICAgIGxldCBmaXJzdCA9IDA7XG4gICAgbGV0IGxhc3QgPSAwO1xuICAgIGxldCByZW1Cb25kRmlyc3QgPSAwO1xuICAgIGxldCByZW1Cb25kTGFzdCA9IDA7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1iZXJzLm5ib25kOyBqKyspIHtcbiAgICAgICAgaWYgKGZpcnN0ID09IDAgfHwgbGFzdCA9PSAwKSB7XG4gICAgICAgICAgICBpbmRleFN0YXJ0ID0gbW9sVjMwMDAuaW5kZXhPZignVjMwJywgaW5kZXhTdGFydCkgKyA0O1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xWMzAwMC5pbmRleE9mKCdcXG4nLCBpbmRleFN0YXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IGJvbmREYXRhID0gbW9sVjMwMDAuc3Vic3RyaW5nKGluZGV4U3RhcnQsIGluZGV4RW5kKS5yZXBsYWNlQWxsKCcgICcsICcgJykucmVwbGFjZUFsbCgnICAnLCAnICcpO1xuICAgICAgICAgICAgcGFyc2VkRGF0YSA9IGJvbmREYXRhLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICBpZiAocGFyc2VJbnQocGFyc2VkRGF0YVsyXSkgPT0gcmVtRmlyc3QpIHtcbiAgICAgICAgICAgICAgICBmaXJzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbM10pO1xuICAgICAgICAgICAgICAgIHJlbUJvbmRGaXJzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VJbnQocGFyc2VkRGF0YVszXSkgPT0gcmVtRmlyc3QpIHtcbiAgICAgICAgICAgICAgICBmaXJzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMl0pO1xuICAgICAgICAgICAgICAgIHJlbUJvbmRGaXJzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VJbnQocGFyc2VkRGF0YVsyXSkgPT0gcmVtTGFzdCkge1xuICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kTGFzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VJbnQocGFyc2VkRGF0YVszXSkgPT0gcmVtTGFzdCkge1xuICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzJdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kTGFzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGZpcnN0LCBsYXN0LCByZW1GaXJzdCwgcmVtTGFzdCwgcmVtQm9uZEZpcnN0LCByZW1Cb25kTGFzdCB9O1xufVxuZnVuY3Rpb24gcm90YXRlQmFja2JvbmVWMzAwMChtb2xCbG9jaywgaW5kaWNlcykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZXh0cmFjdEF0b21EYXRhVjMwMDAobW9sQmxvY2spO1xuICAgICAgICBjb25zdCBuYXRvbSA9IGNvb3JkaW5hdGVzLmF0b21JbmRleC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gaW5kaWNlc1snZmlyc3QnXTtcbiAgICAgICAgY29uc3QgbGFzdCA9IGluZGljZXNbJ2xhc3QnXTtcbiAgICAgICAgY29uc3QgeENlbnRlciA9IChjb29yZGluYXRlcy54W2xhc3RdICsgY29vcmRpbmF0ZXMueFtmaXJzdF0pIC8gMjtcbiAgICAgICAgY29uc3QgeUNlbnRlciA9IChjb29yZGluYXRlcy55W2xhc3RdICsgY29vcmRpbmF0ZXMueVtmaXJzdF0pIC8gMjtcbiAgICAgICAgLy9wbGFjZSB0byBjZW50ZXJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKSB7XG4gICAgICAgICAgICBjb29yZGluYXRlcy54W2ldIC09IHhDZW50ZXI7XG4gICAgICAgICAgICBjb29yZGluYXRlcy55W2ldIC09IHlDZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFuZ2xlID0gMDtcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzLnhbZmlyc3RdID09IDApXG4gICAgICAgICAgICBhbmdsZSA9IGNvb3JkaW5hdGVzLnlbZmlyc3RdID4gY29vcmRpbmF0ZXMueVtsYXN0XSA/IE1hdGguUEkgLyAyIDogMyAqIE1hdGguUEkgLyAyO1xuICAgICAgICBlbHNlIGlmIChjb29yZGluYXRlcy55W2ZpcnN0XSA9PSAwKVxuICAgICAgICAgICAgYW5nbGUgPSBjb29yZGluYXRlcy54W2ZpcnN0XSA+IGNvb3JkaW5hdGVzLnhbbGFzdF0gPyBNYXRoLlBJIDogMDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkZXJpdmF0aXZlID0gY29vcmRpbmF0ZXMueVtmaXJzdF0gLyBjb29yZGluYXRlcy54W2ZpcnN0XTtcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlcy54W2ZpcnN0XSA8IGNvb3JkaW5hdGVzLnhbbGFzdF0pXG4gICAgICAgICAgICAgICAgYW5nbGUgPSBkZXJpdmF0aXZlID4gMCA/IE1hdGguUEkgLSBNYXRoLmF0YW4oZGVyaXZhdGl2ZSkgOiBNYXRoLmF0YW4oZGVyaXZhdGl2ZSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYW5nbGUgPSBkZXJpdmF0aXZlID4gMCA/IE1hdGguYXRhbihkZXJpdmF0aXZlKSA6IE1hdGguUEkgLSBNYXRoLmF0YW4oZGVyaXZhdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29zID0gTWF0aC5jb3MoYW5nbGUpO1xuICAgICAgICBjb25zdCBzaW4gPSBNYXRoLnNpbihhbmdsZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKykge1xuICAgICAgICAgICAgY29uc3QgeEFkZCA9IGNvb3JkaW5hdGVzLnhbaV07XG4gICAgICAgICAgICBjb29yZGluYXRlcy54W2ldID0geEFkZCAqIGNvcyAtIGNvb3JkaW5hdGVzLnlbaV0gKiBzaW47XG4gICAgICAgICAgICBjb29yZGluYXRlcy55W2ldID0geEFkZCAqIHNpbiArIGNvb3JkaW5hdGVzLnlbaV0gKiBjb3M7XG4gICAgICAgIH1cbiAgICAgICAgLy9wbGFjZSB0byByaWdodFxuICAgICAgICBjb25zdCB4U2hpZnQgPSBjb29yZGluYXRlcy54W2ZpcnN0XTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKVxuICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSAtPSB4U2hpZnQ7XG4gICAgICAgIC8vcmV3cml0ZSBtb2xCbG9ja1xuICAgICAgICBsZXQgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdNICBWMzAgQkVHSU4gQVRPTScpOyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgY29vcmRpbmF0ZXNcbiAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCk7XG4gICAgICAgIGxldCBpbmRleEVuZCA9IGluZGV4O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hdG9tOyBpKyspIHtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4RW5kKTtcbiAgICAgICAgICAgIG1vbEJsb2NrID0gbW9sQmxvY2suc2xpY2UoMCwgaW5kZXgpICtcbiAgICAgICAgICAgICAgICBjb29yZGluYXRlcy54W2ldICsgJyAnICsgY29vcmRpbmF0ZXMueVtpXSArXG4gICAgICAgICAgICAgICAgbW9sQmxvY2suc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2xCbG9jaztcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3RBdG9tRGF0YVYzMDAwKG1vbEJsb2NrKSB7XG4gICAgY29uc3QgbnVtYmVycyA9IGV4dHJhY3RBdG9tc0JvbmRzTnVtYmVyc1YzMDAwKG1vbEJsb2NrKTtcbiAgICBsZXQgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdNICBWMzAgQkVHSU4gQVRPTScpOyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgY29vcmRpbmF0ZXNcbiAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1xcbicsIGluZGV4KTtcbiAgICBsZXQgaW5kZXhFbmQgPSBpbmRleDtcbiAgICBjb25zdCBpbmRleGVzID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgY29uc3QgdHlwZXMgPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBjb25zdCB4ID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgY29uc3QgeSA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVycy5uYXRvbTsgaSsrKSB7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICBpbmRleGVzW2ldID0gcGFyc2VJbnQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICB0eXBlc1tpXSA9IG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpO1xuICAgICAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICB4W2ldID0gcGFyc2VGbG9hdChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhFbmQgKyAxO1xuICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgIHlbaV0gPSBwYXJzZUZsb2F0KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgIH1cbiAgICByZXR1cm4geyBhdG9tSW5kZXg6IGluZGV4ZXMsIGF0b21UeXBlOiB0eXBlcywgeDogeCwgeTogeSB9O1xufVxuZnVuY3Rpb24gbGlua1YzMDAwKG1vbm9tZXJzKSB7XG4gICAgbGV0IG1hY3JvTW9sQmxvY2sgPSAnXFxuRGF0YWdyb2sgbWFjcm9tb2xlY3VsZSBoYW5kbGVyXFxuXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICcgIDAgIDAgIDAgIDAgIDAgIDAgICAgICAgICAgICA5OTkgVjMwMDBcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBDVEFCXFxuJztcbiAgICBsZXQgYXRvbUJsb2NrID0gJyc7XG4gICAgbGV0IGJvbmRCbG9jayA9ICcnO1xuICAgIGxldCBjb2xsZWN0aW9uQmxvY2sgPSAnJztcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gW107XG4gICAgbGV0IG5hdG9tID0gMDtcbiAgICBsZXQgbmJvbmQgPSAwO1xuICAgIGxldCB4U2hpZnQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9ub21lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG1vbGZpbGUgPSBtb25vbWVyc1tpXVsnbW9sZmlsZSddO1xuICAgICAgICBjb25zdCBmaXJzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ2ZpcnN0J107XG4gICAgICAgIGNvbnN0IGxhc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydsYXN0J107XG4gICAgICAgIGNvbnN0IHJlbUZpcnN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsncmVtRmlyc3QnXTtcbiAgICAgICAgY29uc3QgcmVtTGFzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUxhc3QnXTtcbiAgICAgICAgY29uc3QgcmVtQm9uZEZpcnN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsncmVtQm9uZEZpcnN0J107XG4gICAgICAgIGNvbnN0IHJlbUJvbmRMYXN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsncmVtQm9uZExhc3QnXTtcbiAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUucmVwbGFjZUFsbCgnKC1cXG5NICBWMzAgJywgJygnKVxuICAgICAgICAgICAgLnJlcGxhY2VBbGwoJy1cXG5NICBWMzAgJywgJycpLnJlcGxhY2VBbGwoJyApJywgJyknKTtcbiAgICAgICAgY29uc3QgbnVtYmVycyA9IGV4dHJhY3RBdG9tc0JvbmRzTnVtYmVyc1YzMDAwKG1vbGZpbGUpO1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGV4dHJhY3RBdG9tRGF0YVYzMDAwKG1vbGZpbGUpO1xuICAgICAgICBsZXQgaW5kZXhBdG9tcyA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgICAgIGluZGV4QXRvbXMgPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4QXRvbXMpO1xuICAgICAgICBsZXQgaW5kZXggPSBpbmRleEF0b21zO1xuICAgICAgICBsZXQgaW5kZXhFbmQgPSBpbmRleEF0b21zO1xuICAgICAgICBjb25zdCB0b3RhbFNoaWZ0ID0geFNoaWZ0IC0gY29vcmRpbmF0ZXMueFtmaXJzdCAtIDFdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bWJlcnMubmF0b207IGorKykge1xuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzLmF0b21JbmRleFtqXSAhPSByZW1GaXJzdCAmJiBjb29yZGluYXRlcy5hdG9tSW5kZXhbal0gIT0gcmVtTGFzdCkgeyAvL3x8IGkgPT0gMCkge1xuICAgICAgICAgICAgICAgIC8vcmV3cml0ZSBhdG9tIG51bWJlclxuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdWMzAnLCBpbmRleCkgKyA0O1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGxldCBhdG9tTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICAgICAgYXRvbU51bWJlciA9IChhdG9tTnVtYmVyID4gcmVtRmlyc3QgJiYgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDIgOlxuICAgICAgICAgICAgICAgICAgICAoYXRvbU51bWJlciA+IHJlbUZpcnN0IHx8IGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAxIDogYXRvbU51bWJlcjtcbiAgICAgICAgICAgICAgICBhdG9tTnVtYmVyICs9IG5hdG9tO1xuICAgICAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGF0b21OdW1iZXIgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgICAgICAvL3Jld3JpdGUgY29vcmRpbmF0ZXNcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGxldCBjb29yZGluYXRlID0gTWF0aC5yb3VuZCgxMDAwMCAqIChwYXJzZUZsb2F0KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpICsgdG90YWxTaGlmdCkpIC8gMTAwMDA7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgY29vcmRpbmF0ZSArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBjb29yZGluYXRlID0gTWF0aC5yb3VuZCgxMDAwMCAqIChwYXJzZUZsb2F0KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpKSkgLyAxMDAwMDtcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBjb29yZGluYXRlICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwJywgaW5kZXgpIC0gMTtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleEF0b21zRW5kID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgRU5EIEFUT00nKTtcbiAgICAgICAgYXRvbUJsb2NrICs9IG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4QXRvbXMgKyAxLCBpbmRleEF0b21zRW5kKTtcbiAgICAgICAgbGV0IGluZGV4Qm9uZHMgPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBCT05EJyk7IC8vIFYzMDAwIGluZGV4IGZvciBib25kc1xuICAgICAgICBpbmRleEJvbmRzID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleEJvbmRzKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEJvbmRzO1xuICAgICAgICBpbmRleEVuZCA9IGluZGV4Qm9uZHM7XG4gICAgICAgIGxldCBib25kTnVtYmVyID0gMDtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1iZXJzLm5ib25kOyBqKyspIHtcbiAgICAgICAgICAgIC8vcmV3cml0ZSBib25kIG51bWJlclxuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgIGJvbmROdW1iZXIgPSBwYXJzZUludChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgICAgIGlmIChib25kTnVtYmVyID09IHJlbUJvbmRGaXJzdCB8fCBib25kTnVtYmVyID09IHJlbUJvbmRMYXN0KSB7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXggLT0gNztcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJvbmROdW1iZXIgPSAoYm9uZE51bWJlciA+IHJlbUJvbmRGaXJzdCAmJiBib25kTnVtYmVyID4gcmVtQm9uZExhc3QpID8gYm9uZE51bWJlciAtIDIgOlxuICAgICAgICAgICAgICAgIChib25kTnVtYmVyID4gcmVtQm9uZEZpcnN0IHx8IGJvbmROdW1iZXIgPiByZW1Cb25kTGFzdCkgPyBib25kTnVtYmVyIC0gMSA6IGJvbmROdW1iZXI7XG4gICAgICAgICAgICBib25kTnVtYmVyICs9IG5ib25kO1xuICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgYm9uZE51bWJlciArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgLy9yZXdyaXRlIGF0b20gcGFpciBpbiBib25kXG4gICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgIGxldCBhdG9tTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICBhdG9tTnVtYmVyID0gKGF0b21OdW1iZXIgPiByZW1GaXJzdCAmJiBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMiA6XG4gICAgICAgICAgICAgICAgKGF0b21OdW1iZXIgPiByZW1GaXJzdCB8fCBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMSA6IGF0b21OdW1iZXI7XG4gICAgICAgICAgICBhdG9tTnVtYmVyICs9IG5hdG9tO1xuICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgYXRvbU51bWJlciArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBNYXRoLm1pbihtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4KSwgbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpKTtcbiAgICAgICAgICAgIGF0b21OdW1iZXIgPSBwYXJzZUludChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgICAgIGF0b21OdW1iZXIgPSAoYXRvbU51bWJlciA+IHJlbUZpcnN0ICYmIGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAyIDpcbiAgICAgICAgICAgICAgICAoYXRvbU51bWJlciA+IHJlbUZpcnN0IHx8IGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAxIDogYXRvbU51bWJlcjtcbiAgICAgICAgICAgIGF0b21OdW1iZXIgKz0gbmF0b207XG4gICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBhdG9tTnVtYmVyICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleEJvbmRFbmQgPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBFTkQgQk9ORCcpO1xuICAgICAgICBib25kQmxvY2sgKz0gbW9sZmlsZS5zdWJzdHJpbmcoaW5kZXhCb25kcyArIDEsIGluZGV4Qm9uZEVuZCk7XG4gICAgICAgIC8vbGV0IGluZGV4Q29sbGVjdGlvbiA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIE1ETFYzMC9TVEVBQlMgQVRPTVM9KCcpOyAvLyBWMzAwMCBpbmRleCBmb3IgY29sbGVjdGlvbnNcbiAgICAgICAgLy8gd2hpbGUgKGluZGV4Q29sbGVjdGlvbiAhPSAtMSkge1xuICAgICAgICAvLyAgIGluZGV4Q29sbGVjdGlvbiArPSAyODtcbiAgICAgICAgLy8gICBjb25zdCBjb2xsZWN0aW9uRW5kID0gbW9sZmlsZS5pbmRleE9mKCcpJywgaW5kZXhDb2xsZWN0aW9uKTtcbiAgICAgICAgLy8gICBjb25zdCBjb2xsZWN0aW9uRW50cmllcyA9IG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4Q29sbGVjdGlvbiwgY29sbGVjdGlvbkVuZCkuc3BsaXQoJyAnKS5zbGljZSgxKTtcbiAgICAgICAgLy8gICBjb2xsZWN0aW9uRW50cmllcy5mb3JFYWNoKChlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gICAgIGNvbGxlY3Rpb24ucHVzaChwYXJzZUludChlKSArIG5hdG9tKTtcbiAgICAgICAgLy8gICB9KTtcbiAgICAgICAgLy8gICBpbmRleENvbGxlY3Rpb24gPSBjb2xsZWN0aW9uRW5kO1xuICAgICAgICAvLyAgIGluZGV4Q29sbGVjdGlvbiA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIE1ETFYzMC9TVEVBQlMgQVRPTVM9KCcsIGluZGV4Q29sbGVjdGlvbik7XG4gICAgICAgIC8vIH1cbiAgICAgICAgbmF0b20gKz0gbnVtYmVycy5uYXRvbSAtIDI7XG4gICAgICAgIG5ib25kICs9IG51bWJlcnMubmJvbmQgLSAyO1xuICAgICAgICB4U2hpZnQgKz0gY29vcmRpbmF0ZXMueFtsYXN0XSAtIGNvb3JkaW5hdGVzLnhbZmlyc3RdICsgMTtcbiAgICAgICAgaWYgKGkgPT0gbW9ub21lcnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgbmF0b20rKztcbiAgICAgICAgICAgIGNvbnN0IHNoaWZ0ID0geFNoaWZ0ICsgMC4yO1xuICAgICAgICAgICAgYXRvbUJsb2NrICs9ICdNICBWMzAgJyArIG5hdG9tICsgJyBPICcgKyBzaGlmdCArICcgMCAwLjAwMDAwMCAwXFxuJztcbiAgICAgICAgfVxuICAgICAgICBuYm9uZCsrO1xuICAgICAgICBpZiAoaSA9PSBtb25vbWVycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCByaWdodFRlcm1pbmFsID0gKGxhc3QgPiByZW1GaXJzdCAmJiBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMyA6XG4gICAgICAgICAgICAgICAgKGxhc3QgPiByZW1GaXJzdCB8fCBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMiA6XG4gICAgICAgICAgICAgICAgICAgIGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMikgLSAxO1xuICAgICAgICAgICAgYm9uZEJsb2NrICs9ICdNICBWMzAgJyArIG5ib25kICsgJyAxICcgKyByaWdodFRlcm1pbmFsICsgJyAnICsgbmF0b20gKyAnXFxuJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VGVybWluYWwgPSAobGFzdCA+IHJlbUZpcnN0ICYmIGxhc3QgPiByZW1MYXN0KSA/IGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMikgLSAyIDpcbiAgICAgICAgICAgICAgICAobGFzdCA+IHJlbUZpcnN0IHx8IGxhc3QgPiByZW1MYXN0KSA/IGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMikgLSAxIDpcbiAgICAgICAgICAgICAgICAgICAgbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBtb25vbWVyc1tpICsgMV1bJ2luZGljZXMnXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRGaXJzdCA9IG5leHRbJ2ZpcnN0J107XG4gICAgICAgICAgICBjb25zdCBuZXh0UmVtRmlyc3QgPSBuZXh0WydyZW1GaXJzdCddO1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlbUxhc3QgPSBuZXh0WydyZW1MYXN0J107XG4gICAgICAgICAgICBjb25zdCBsZWZ0VGVybWluYWwgPSAobmV4dEZpcnN0ID4gbmV4dFJlbUZpcnN0ICYmIG5leHRGaXJzdCA+IG5leHRSZW1MYXN0KSA/IG5leHRGaXJzdCArIG5hdG9tIC0gMiA6XG4gICAgICAgICAgICAgICAgKG5leHRGaXJzdCA+IG5leHRSZW1GaXJzdCB8fCBuZXh0Rmlyc3QgPiBuZXh0UmVtTGFzdCkgPyBuZXh0Rmlyc3QgKyBuYXRvbSAtIDEgOlxuICAgICAgICAgICAgICAgICAgICBuZXh0Rmlyc3QgKyBuYXRvbTtcbiAgICAgICAgICAgIGJvbmRCbG9jayArPSAnTSAgVjMwICcgKyBuYm9uZCArICcgMSAnICsgcmlnaHRUZXJtaW5hbCArICcgJyArIGxlZnRUZXJtaW5hbCArICdcXG4nO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGNvbnN0IGVudHJpZXMgPSA0O1xuICAgIC8vIGNvbnN0IGNvbGxOdW1iZXIgPSBNYXRoLmNlaWwoY29sbGVjdGlvbi5sZW5ndGggLyBlbnRyaWVzKTtcbiAgICAvLyBjb2xsZWN0aW9uQmxvY2sgKz0gJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnICsgY29sbGVjdGlvbi5sZW5ndGggKyAnIC1cXG4nO1xuICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgY29sbE51bWJlcjsgaSsrKSB7XG4gICAgLy8gICBjb2xsZWN0aW9uQmxvY2sgKz0gJ00gIFYzMCAnO1xuICAgIC8vICAgY29uc3QgZW50cmllc0N1cnJlbnQgPSBpICsgMSA9PSBjb2xsTnVtYmVyID8gY29sbGVjdGlvbi5sZW5ndGggLSAoY29sbE51bWJlciAtIDEpKmVudHJpZXMgOiBlbnRyaWVzO1xuICAgIC8vICAgZm9yIChsZXQgaiA9IDA7IGogPCBlbnRyaWVzQ3VycmVudDsgaisrKSB7XG4gICAgLy8gICAgIGNvbGxlY3Rpb25CbG9jayArPSAoaiArIDEgPT0gZW50cmllc0N1cnJlbnQpID9cbiAgICAvLyAgICAgICAoaSA9PSBjb2xsTnVtYmVyIC0gMSA/IGNvbGxlY3Rpb25bZW50cmllcyppICsgal0gKyAnKVxcbicgOiBjb2xsZWN0aW9uW2VudHJpZXMqaSArIGpdICsgJyAtXFxuJykgOlxuICAgIC8vICAgICAgIGNvbGxlY3Rpb25bZW50cmllcyppICsgal0gKyAnICc7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIC8vZ2VuZXJhdGUgZmlsZVxuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBDT1VOVFMgJyArIG5hdG9tICsgJyAnICsgbmJvbmQgKyAnIDAgMCAwXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQVRPTVxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSBhdG9tQmxvY2s7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBBVE9NXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQk9ORFxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSBib25kQmxvY2s7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBCT05EXFxuJztcbiAgICAvL21hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBDT0xMRUNUSU9OXFxuJztcbiAgICAvL21hY3JvTW9sQmxvY2sgKz0gY29sbGVjdGlvbkJsb2NrO1xuICAgIC8vbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBDT0xMRUNUSU9OXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgRU5EIENUQUJcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIEVORFxcbic7XG4gICAgcmV0dXJuIG1hY3JvTW9sQmxvY2s7XG59XG5mdW5jdGlvbiBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xCbG9jaykge1xuICAgIG1vbEJsb2NrID0gbW9sQmxvY2sucmVwbGFjZUFsbCgnXFxyJywgJycpOyAvL2VxdWFsaXplIG9sZCBhbmQgbmV3IHNkZiBzdGFuZGFyZHNcbiAgICBsZXQgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdDT1VOVFMnKSArIDc7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBhbmQgYm9uZHMgbnVtYmVyXG4gICAgbGV0IGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICBjb25zdCBhdG9tc051bWJlciA9IHBhcnNlSW50KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgY29uc3QgYm9uZHNOdW1iZXIgPSBwYXJzZUludChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgcmV0dXJuIHsgbmF0b206IGF0b21zTnVtYmVyLCBuYm9uZDogYm9uZHNOdW1iZXIgfTtcbn1cbiIsImltcG9ydCAqIGFzIEMgZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgQW1pbm9hY2lkc1BhbGV0dGVzIH0gZnJvbSBcIkBkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzXCI7XG5pbXBvcnQgeyBOdWNsZW90aWRlc1BhbGV0dGVzIH0gZnJvbSBcIkBkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9udWNsZW90aWRlc1wiO1xuaW1wb3J0IHsgVW5rbm93blNlcVBhbGV0dGVzIH0gZnJvbSBcIkBkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91bmtub3duXCI7XG5pbXBvcnQgeyBXZWJMb2dvIH0gZnJvbSBcIkBkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvXCI7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuY29uc3QgbHJ1ID0gbmV3IERHLkxydUNhY2hlKCk7XG5jb25zdCB1bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbmZ1bmN0aW9uIGdldFBhbGxldGVCeVR5cGUocGFsZXR0ZVR5cGUpIHtcbiAgICBzd2l0Y2ggKHBhbGV0dGVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ1BUJzpcbiAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgY2FzZSAnTlQnOlxuICAgICAgICAgICAgcmV0dXJuIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICAvLyBvdGhlclxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFVua25vd25TZXFQYWxldHRlcy5Db2xvcjtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1NlcXVlbmNlKHN1YlBhcnRzKSB7XG4gICAgY29uc3Qgc2ltcGxpZmllZCA9ICFzdWJQYXJ0cy5zb21lKChhbWlubywgaW5kZXgpID0+IGFtaW5vLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgaW5kZXggIT0gMCAmJlxuICAgICAgICBpbmRleCAhPSBzdWJQYXJ0cy5sZW5ndGggLSAxKTtcbiAgICBjb25zdCB0ZXh0ID0gW107XG4gICAgY29uc3QgZ2FwID0gc2ltcGxpZmllZCA/ICcnIDogJyAnO1xuICAgIHN1YlBhcnRzLmZvckVhY2goKGFtaW5vLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPCBzdWJQYXJ0cy5sZW5ndGgpXG4gICAgICAgICAgICBhbWlubyArPSBgJHthbWlubyA/ICcnIDogJy0nfSR7Z2FwfWA7XG4gICAgICAgIHRleHQucHVzaChhbWlubyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFt0ZXh0LCBzaW1wbGlmaWVkXTtcbn1cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHByaW50cyBhIHN0cmluZyBhbGlnbmVkIHRvIGxlZnQgb3IgY2VudGVyZWQuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHggeCBjb29yZGluYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IHkgeSBjb29yZGluYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IHcgV2lkdGguXG4gKiBAcGFyYW0ge251bWJlcn0gaCBIZWlnaHQuXG4gKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gZyBDYW52YXMgcmVuZGVyaW5nIGNvbnRleHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gcyBTdHJpbmcgdG8gcHJpbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvbG9yPXVuZGVmaW5lZENvbG9yXSBTdHJpbmcgY29sb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gW3Bpdm90PTBdIFBpcnZvdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xlZnQ9ZmFsc2VdIElzIGxlZnQgYWxpZ25lZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2hpZGVNb2Q9ZmFsc2VdIEhpZGUgYW1pbm8gYWNpZCByZWRpZHVlIG1vZGlmaWNhdGlvbnMuXG4gKiBAcGFyYW0ge251bWJlcn0gW3RyYW5zcGFyZW5jeVJhdGU9MC4wXSBUcmFuc3BhcmVuY3kgcmF0ZSB3aGVyZSAxLjAgaXMgZnVsbHkgdHJhbnNwYXJlbnRcbiAqIEByZXR1cm4ge251bWJlcn0geCBjb29yZGluYXRlIHRvIHN0YXJ0IHByaW50aW5nIGF0LlxuICovXG5mdW5jdGlvbiBwcmludExlZnRPckNlbnRlcmVkKHgsIHksIHcsIGgsIGcsIHMsIGNvbG9yID0gdW5kZWZpbmVkQ29sb3IsIHBpdm90ID0gMCwgbGVmdCA9IGZhbHNlLCBoaWRlTW9kID0gZmFsc2UsIHRyYW5zcGFyZW5jeVJhdGUgPSAxLjAsIHNlcGFyYXRvciA9ICcnLCBsYXN0ID0gZmFsc2UpIHtcbiAgICBnLnRleHRBbGlnbiA9ICdzdGFydCc7XG4gICAgbGV0IGNvbG9yUGFydCA9IHMuc3Vic3RyaW5nKDApO1xuICAgIGxldCBncmF5UGFydCA9IHNlcGFyYXRvcjtcbiAgICBpZiAobGFzdCkge1xuICAgICAgICBncmF5UGFydCA9ICcnO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0U2l6ZSA9IGcubWVhc3VyZVRleHQoY29sb3JQYXJ0ICsgZ3JheVBhcnQpO1xuICAgIGNvbnN0IGluZGVudCA9IDU7XG4gICAgY29uc3QgY29sb3JUZXh0U2l6ZSA9IGcubWVhc3VyZVRleHQoY29sb3JQYXJ0KTtcbiAgICBjb25zdCBkeSA9ICh0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hBc2NlbnQgKyB0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hEZXNjZW50KSAvIDI7XG4gICAgZnVuY3Rpb24gZHJhdyhkeDEsIGR4Mikge1xuICAgICAgICBnLmZpbGxTdHlsZSA9IGNvbG9yO1xuICAgICAgICBnLmdsb2JhbEFscGhhID0gdHJhbnNwYXJlbmN5UmF0ZTtcbiAgICAgICAgZy5maWxsVGV4dChjb2xvclBhcnQsIHggKyBkeDEsIHkgKyBkeSk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gJyM4MDgwODAnO1xuICAgICAgICBnLmZpbGxUZXh0KGdyYXlQYXJ0LCB4ICsgZHgyLCB5ICsgZHkpO1xuICAgIH1cbiAgICBpZiAobGVmdCB8fCB0ZXh0U2l6ZS53aWR0aCA+IHcpIHtcbiAgICAgICAgZHJhdyhpbmRlbnQsIGluZGVudCArIGNvbG9yVGV4dFNpemUud2lkdGgpO1xuICAgICAgICByZXR1cm4geCArIGNvbG9yVGV4dFNpemUud2lkdGggKyBnLm1lYXN1cmVUZXh0KGdyYXlQYXJ0KS53aWR0aDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGR4ID0gKHcgLSB0ZXh0U2l6ZS53aWR0aCkgLyAyO1xuICAgICAgICBkcmF3KGR4LCBkeCArIGNvbG9yVGV4dFNpemUud2lkdGgpO1xuICAgICAgICByZXR1cm4geCArIGR4ICsgY29sb3JUZXh0U2l6ZS53aWR0aDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyIGV4dGVuZHMgREcuR3JpZENlbGxSZW5kZXJlciB7XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiAnbWFjcm9tb2xlY3VsZVNlcXVlbmNlJzsgfVxuICAgIGdldCBjZWxsVHlwZSgpIHsgcmV0dXJuIEMuU0VNX1RZUEVTLk1hY3JvX01vbGVjdWxlOyB9XG4gICAgZ2V0IGRlZmF1bHRIZWlnaHQoKSB7IHJldHVybiAzMDsgfVxuICAgIGdldCBkZWZhdWx0V2lkdGgoKSB7IHJldHVybiAyMzA7IH1cbiAgICAvKipcbiAgICAgKiBDZWxsIHJlbmRlcmVyIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3IHdpZHRoIG9mIHRoZSBjZWxsLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoIGhlaWdodCBvZiB0aGUgY2VsbC5cbiAgICAgKiBAcGFyYW0ge0RHLkdyaWRDZWxsfSBncmlkQ2VsbCBHcmlkIGNlbGwuXG4gICAgICogQHBhcmFtIHtERy5HcmlkQ2VsbFN0eWxlfSBjZWxsU3R5bGUgQ2VsbCBzdHlsZS5cbiAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlQ2VsbFJlbmRlcmVyXG4gICAgICovXG4gICAgcmVuZGVyKGcsIHgsIHksIHcsIGgsIGdyaWRDZWxsLCBjZWxsU3R5bGUpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgZ3JpZCA9IGdyaWRDZWxsLmdyaWQ7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBncmlkQ2VsbC5jZWxsO1xuICAgICAgICBjb25zdCB0YWcgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIGlmICh0YWcgPT09ICdIRUxNJykge1xuICAgICAgICAgICAgbGV0IGhvc3QgPSB1aS5kaXYoW10sIHsgc3R5bGU6IHsgd2lkdGg6IGAke3d9cHhgLCBoZWlnaHQ6IGAke2h9cHhgIH0gfSk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YWZvcm1hdCcsICdoZWxtJyk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YScsIGdyaWRDZWxsLmNlbGwudmFsdWUpO1xuICAgICAgICAgICAgZ3JpZENlbGwuZWxlbWVudCA9IGhvc3Q7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIHZhciBjYW52YXMgPSBuZXcgSlNEcmF3Mi5FZGl0b3IoaG9zdCwgeyB3aWR0aDogdywgaGVpZ2h0OiBoLCBza2luOiBcInc4XCIsIHZpZXdvbmx5OiB0cnVlIH0pO1xuICAgICAgICAgICAgdmFyIGZvcm11bGEgPSBjYW52YXMuZ2V0Rm9ybXVsYSh0cnVlKTtcbiAgICAgICAgICAgIGlmICghZm9ybXVsYSkge1xuICAgICAgICAgICAgICAgIGdyaWRDZWxsLmVsZW1lbnQgPSB1aS5kaXZUZXh0KGdyaWRDZWxsLmNlbGwudmFsdWUsIHsgc3R5bGU6IHsgY29sb3I6ICdyZWQnIH0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBncmlkQ2VsbC5lbGVtZW50ID0gaG9zdDtcbiAgICAgICAgICAgICAgICB2YXIgbW9sV2VpZ2h0ID0gTWF0aC5yb3VuZChjYW52YXMuZ2V0TW9sV2VpZ2h0KCkgKiAxMDApIC8gMTAwO1xuICAgICAgICAgICAgICAgIHZhciBjb2VmID0gTWF0aC5yb3VuZChjYW52YXMuZ2V0RXh0aW5jdGlvbkNvZWZmaWNpZW50KHRydWUpICogMTAwKSAvIDEwMDtcbiAgICAgICAgICAgICAgICB2YXIgbW9sZmlsZSA9IGNhbnZhcy5nZXRNb2xmaWxlKCk7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGZvcm11bGEgKyAnLCAnICsgbW9sV2VpZ2h0ICsgJywgJyArIGNvZWYgKyAnLCAnICsgbW9sZmlsZTtcbiAgICAgICAgICAgICAgICBscnUuc2V0KGdyaWRDZWxsLmNlbGwudmFsdWUsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBbdHlwZSwgc3VidHlwZSwgcGFsZXR0ZVR5cGVdID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKERHLlRBR1MuVU5JVFMpLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgICAgIHcgPSBncmlkID8gTWF0aC5taW4oZ3JpZC5jYW52YXMud2lkdGggLSB4LCB3KSA6IGcuY2FudmFzLndpZHRoIC0geDtcbiAgICAgICAgICAgIGcuc2F2ZSgpO1xuICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIGcucmVjdCh4LCB5LCB3LCBoKTtcbiAgICAgICAgICAgIGcuY2xpcCgpO1xuICAgICAgICAgICAgZy5mb250ID0gJzEycHggbW9ub3NwYWNlJztcbiAgICAgICAgICAgIGcudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCBzID0gKF9hID0gY2VsbC52YWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAvL1RPRE86IGNhbiB0aGlzIGJlIHJlcGxhY2VkL21lcmdlZCB3aXRoIHNwbGl0U2VxdWVuY2U/XG4gICAgICAgICAgICBjb25zdCB1bml0cyA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgICAgIGNvbnN0IHBhbGV0dGUgPSBnZXRQYWxsZXRlQnlUeXBlKHBhbGV0dGVUeXBlKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IChfYiA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZygnc2VwYXJhdG9yJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnO1xuICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZXJGdW5jID0gV2ViTG9nby5nZXRTcGxpdHRlcih1bml0cywgZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKCdzZXBhcmF0b3InKSk7IC8vIHNwbGl0dGVyLFxuICAgICAgICAgICAgY29uc3Qgc3ViUGFydHMgPSBzcGxpdHRlckZ1bmMoY2VsbC52YWx1ZSk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhzdWJQYXJ0cyk7XG4gICAgICAgICAgICBjb25zdCB0ZXh0U2l6ZSA9IGcubWVhc3VyZVRleHQoc3ViUGFydHMuam9pbignJykpO1xuICAgICAgICAgICAgbGV0IHgxID0geDtcbiAgICAgICAgICAgIGxldCBjb2xvciA9IHVuZGVmaW5lZENvbG9yO1xuICAgICAgICAgICAgc3ViUGFydHMuZm9yRWFjaCgoYW1pbm8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29sb3IgPSBwYWxldHRlLmdldChhbWlubyk7XG4gICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSB1bmRlZmluZWRDb2xvcjtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gc3ViUGFydHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeDEgPSBwcmludExlZnRPckNlbnRlcmVkKHgxLCB5LCB3LCBoLCBnLCBhbWlubywgY29sb3IsIDAsIHRydWUsIGZhbHNlLCAxLjAsIHNlcGFyYXRvciwgbGFzdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGcucmVzdG9yZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiZXhwb3J0IHZhciBDT0xVTU5TX05BTUVTO1xuKGZ1bmN0aW9uIChDT0xVTU5TX05BTUVTKSB7XG4gICAgQ09MVU1OU19OQU1FU1tcIlNQTElUX0NPTFwiXSA9IFwifnNwbGl0XCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFDVElWSVRZXCJdID0gXCJ+YWN0aXZpdHlcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQUNUSVZJVFlfU0NBTEVEXCJdID0gXCJhY3Rpdml0eV9zY2FsZWRcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQUxJR05FRF9TRVFVRU5DRVwiXSA9IFwifmFsaWduZWRfc2VxdWVuY2VcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQU1JTk9fQUNJRF9SRVNJRFVFXCJdID0gXCJBQVJcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiUE9TSVRJT05cIl0gPSBcIlBvc1wiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJQX1ZBTFVFXCJdID0gXCJwVmFsdWVcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiTUVBTl9ESUZGRVJFTkNFXCJdID0gXCJNZWFuIGRpZmZlcmVuY2VcIjtcbn0pKENPTFVNTlNfTkFNRVMgfHwgKENPTFVNTlNfTkFNRVMgPSB7fSkpO1xuZXhwb3J0IHZhciBDQVRFR09SSUVTO1xuKGZ1bmN0aW9uIChDQVRFR09SSUVTKSB7XG4gICAgQ0FURUdPUklFU1tcIk9USEVSXCJdID0gXCJPdGhlclwiO1xuICAgIENBVEVHT1JJRVNbXCJBTExcIl0gPSBcIkFsbFwiO1xufSkoQ0FURUdPUklFUyB8fCAoQ0FURUdPUklFUyA9IHt9KSk7XG5leHBvcnQgdmFyIFRBR1M7XG4oZnVuY3Rpb24gKFRBR1MpIHtcbiAgICBUQUdTW1wiQUFSXCJdID0gXCJBQVJcIjtcbiAgICBUQUdTW1wiUE9TSVRJT05cIl0gPSBcIlBvc1wiO1xuICAgIFRBR1NbXCJTRVBBUkFUT1JcIl0gPSBcIm1vbm9tZXItc2VwYXJhdG9yXCI7XG4gICAgVEFHU1tcIlNFTEVDVElPTlwiXSA9IFwic2VsZWN0aW9uXCI7XG59KShUQUdTIHx8IChUQUdTID0ge30pKTtcbmV4cG9ydCB2YXIgU0VNX1RZUEVTO1xuKGZ1bmN0aW9uIChTRU1fVFlQRVMpIHtcbiAgICBTRU1fVFlQRVNbXCJBTUlOT19BQ0lEU1wiXSA9IFwiYW1pbm9BY2lkc1wiO1xuICAgIFNFTV9UWVBFU1tcIkFMSUdORURfU0VRVUVOQ0VcIl0gPSBcImFsaWduZWRTZXF1ZW5jZVwiO1xuICAgIFNFTV9UWVBFU1tcIkFMSUdORURfU0VRVUVOQ0VfRElGRkVSRU5DRVwiXSA9IFwiYWxpZ25lZFNlcXVlbmNlRGlmZmVyZW5jZVwiO1xuICAgIFNFTV9UWVBFU1tcIkFDVElWSVRZXCJdID0gXCJhY3Rpdml0eVwiO1xuICAgIFNFTV9UWVBFU1tcIkFDVElWSVRZX1NDQUxFRFwiXSA9IFwiYWN0aXZpdHlTY2FsZWRcIjtcbiAgICBTRU1fVFlQRVNbXCJNYWNyb19Nb2xlY3VsZVwiXSA9IFwiTWFjcm9tb2xlY3VsZVwiO1xufSkoU0VNX1RZUEVTIHx8IChTRU1fVFlQRVMgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IFNUQVRTID0gJ3N0YXRzJztcbmV4cG9ydCBjb25zdCBFTUJFRERJTkdfU1RBVFVTID0gJ2VtYmVkZGluZ1N0YXR1cyc7XG5leHBvcnQgY29uc3QgUEVQVElERVNfQU5BTFlTSVMgPSAnaXNQZXB0aWRlc0FuYWx5c2lzJztcbmV4cG9ydCB2YXIgRkxBR1M7XG4oZnVuY3Rpb24gKEZMQUdTKSB7XG4gICAgRkxBR1NbXCJDRUxMX0NIQU5HSU5HXCJdID0gXCJpc0NlbGxDaGFuZ2luZ1wiO1xufSkoRkxBR1MgfHwgKEZMQUdTID0ge30pKTtcbmV4cG9ydCBjb25zdCBhYXJHcm91cHMgPSB7XG4gICAgJ1InOiAnUEMnLCAnSCc6ICdQQycsICdLJzogJ1BDJyxcbiAgICAnRCc6ICdOQycsICdFJzogJ05DJyxcbiAgICAnUyc6ICdVJywgJ1QnOiAnVScsICdOJzogJ1UnLCAnUSc6ICdVJyxcbiAgICAnQyc6ICdTQycsICdVJzogJ1NDJywgJ0cnOiAnU0MnLCAnUCc6ICdTQycsXG4gICAgJ0EnOiAnSCcsICdWJzogJ0gnLCAnSSc6ICdIJywgJ0wnOiAnSCcsICdNJzogJ0gnLCAnRic6ICdIJywgJ1knOiAnSCcsICdXJzogJ0gnLFxuICAgICctJzogJy0nLFxufTtcbmV4cG9ydCBjb25zdCBncm91cERlc2NyaXB0aW9uID0ge1xuICAgICdQQyc6IHsgJ2Rlc2NyaXB0aW9uJzogJ1Bvc2l0aXZlIEFtaW5vIEFjaWRzLCB3aXRoIEVsZWN0cmljYWxseSBDaGFyZ2VkIFNpZGUgQ2hhaW5zJywgJ2FtaW5vQWNpZHMnOiBbJ1InLCAnSCcsICdLJ10gfSxcbiAgICAnTkMnOiB7ICdkZXNjcmlwdGlvbic6ICdOZWdhdGl2ZSBBbWlubyBBY2lkcywgd2l0aCBFbGVjdHJpY2FsbHkgQ2hhcmdlZCBTaWRlIENoYWlucycsICdhbWlub0FjaWRzJzogWydEJywgJ0UnXSB9LFxuICAgICdVJzogeyAnZGVzY3JpcHRpb24nOiAnQW1pbm8gQWNpZHMgd2l0aCBQb2xhciBVbmNoYXJnZWQgU2lkZSBDaGFpbnMnLCAnYW1pbm9BY2lkcyc6IFsnUycsICdUJywgJ04nLCAnUSddIH0sXG4gICAgJ1NDJzogeyAnZGVzY3JpcHRpb24nOiAnU3BlY2lhbCBDYXNlcycsICdhbWlub0FjaWRzJzogWydDJywgJ1UnLCAnRycsICdQJ10gfSxcbiAgICAnSCc6IHtcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FtaW5vIEFjaWRzIHdpdGggSHlkcm9waG9iaWMgU2lkZSBDaGFpbicsXG4gICAgICAgICdhbWlub0FjaWRzJzogWydBJywgJ1YnLCAnSScsICdMJywgJ00nLCAnRicsICdZJywgJ1cnXSxcbiAgICB9LFxuICAgICctJzogeyAnZGVzY3JpcHRpb24nOiAnVW5rbm93biBBbWlubyBBY2lkJywgJ2FtaW5vQWNpZHMnOiBbJy0nXSB9LFxufTtcbiIsImltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBOb3RhdGlvbkNvbnZlcnRlciB9IGZyb20gJy4vbm90YXRpb24tY29udmVydGVyJztcbi8qKlxuICogQ29udmVydHMgbm90YXRpb25zIG9mIGEgTWFjcm9tb2xlY3VsZSBjb2x1bW5cbiAqXG4gKiBAcGFyYW0ge0RHLmNvbHVtbn0gY29sIENvbHVtbiB3aXRoICdNYWNyb21vbGVjdWxlJyBzZW1hbnRpYyB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0KGNvbCkge1xuICAgIGNvbnN0IGNvbnZlcnRlciA9IG5ldyBOb3RhdGlvbkNvbnZlcnRlcihjb2wpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBjb252ZXJ0ZXIuc291cmNlTm90YXRpb247XG4gICAgLy9UT0RPOiByZWFkIGFsbCBub3RhdGlvbnNcbiAgICBjb25zdCBub3RhdGlvbnMgPSBbXG4gICAgICAgIFwiRkFTVEFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLyxcbiAgICAgICAgXCJTRVBBUkFUT1JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8sXG4gICAgICAgIFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi9cbiAgICBdO1xuICAgIGNvbnN0IHNlcGFyYXRvckFycmF5ID0gWyctJywgJy4nLCAnLyddO1xuICAgIGNvbnN0IGZpbHRlcmVkTm90YXRpb25zID0gbm90YXRpb25zLmZpbHRlcigoZSkgPT4gZSAhPT0gY3VycmVudCk7XG4gICAgY29uc3QgdGFyZ2V0Tm90YXRpb25JbnB1dCA9IHVpLmNob2ljZUlucHV0KCdDb252ZXJ0IHRvJywgZmlsdGVyZWROb3RhdGlvbnNbMF0sIGZpbHRlcmVkTm90YXRpb25zKTtcbiAgICBjb25zdCBzZXBhcmF0b3JJbnB1dCA9IHVpLmNob2ljZUlucHV0KCdDaG9vc2Ugc2VwYXJhdG9yJywgc2VwYXJhdG9yQXJyYXlbMF0sIHNlcGFyYXRvckFycmF5KTtcbiAgICB1aS5kaWFsb2coJ0NvbnZlcnQgc2VxdWVuY2Ugbm90YXRpb24nKVxuICAgICAgICAuYWRkKHVpLmRpdihbXG4gICAgICAgIHVpLmgxKCdDdXJyZW50IG5vdGF0aW9uOiAnICsgY3VycmVudCksXG4gICAgICAgIHRhcmdldE5vdGF0aW9uSW5wdXQucm9vdCxcbiAgICAgICAgLy8gVE9ETzogY29uZGl0aW9uYWwgc2VwYXJhdG9yIGlucHV0XG4gICAgICAgIHNlcGFyYXRvcklucHV0LnJvb3RcbiAgICBdKSlcbiAgICAgICAgLm9uT0soKCkgPT4ge1xuICAgICAgICAvL1RPRE86IGNyZWF0ZSBuZXcgY29udmVydGVkIGNvbHVtblxuICAgICAgICBjb25zdCB0YXJnZXROb3RhdGlvbiA9IHRhcmdldE5vdGF0aW9uSW5wdXQudmFsdWU7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHNlcGFyYXRvcklucHV0LnZhbHVlO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBjb252ZXJ0ZXIuY29udmVydCh0YXJnZXROb3RhdGlvbiwgc2VwYXJhdG9yKTtcbiAgICAgICAgY29sLmRhdGFGcmFtZS5jb2x1bW5zLmFkZChuZXdDb2x1bW4pO1xuICAgIH0pXG4gICAgICAgIC5zaG93KCk7XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG4vL0B0cy1pZ25vcmVcbmltcG9ydCBBaW9saSBmcm9tICdAYmlvd2FzbS9haW9saSc7XG5pbXBvcnQgeyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcXVlbmNlLWVuY29kZXInO1xuLyoqXG4gKiBDb252ZXJ0cyBhcnJheSBvZiBzZXF1ZW5jZXMgaW50byBzaW1wbGUgZmFzdGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nW119IHNlcXVlbmNlcyBJbnB1dCBsaXN0IG9mIHNlcXVlbmNlcy5cbiAqIEByZXR1cm4ge3N0cmluZ30gRmFzdGEtZm9ybWF0dGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcykge1xuICAgIHJldHVybiBzZXF1ZW5jZXMucmVkdWNlKChhLCB2LCBpKSA9PiBhICsgYD5zYW1wbGUke2kgKyAxfVxcbiR7dn1cXG5gLCAnJyk7XG59XG4vKipcbiAqIEV4dHJhY3RzIGFycmF5IG9mIHNlcXVlbmNlcyBmcm9tIHNpbXBsZSBmYXN0YSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZhc3RhIEZhc3RhLWZvcm1hdHRlZCBzdHJpbmcuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gT3V0cHV0IGxpc3Qgb2Ygc2VxdWVuY2VzLlxuICovXG5mdW5jdGlvbiBfZmFzdGFUb1N0cmluZ3MoZmFzdGEpIHtcbiAgICByZXR1cm4gZmFzdGEucmVwbGFjZSgvPnNhbXBsZVxcZCsoXFxyXFxufFxccnxcXG4pL2csICcnKS5zcGxpdCgnXFxuJyk7XG59XG4vKipcbiAqIFJ1bnMgQWlvbGkgZW52aXJvbm1lbnQgd2l0aCBrYWxpZ24gdG9vbC5cbiAqXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc3JjQ29sIENvbHVtbiB3aXRoIHNlcXVlbmNlcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNBbGlnbmVkIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBhbGlnbmVkLlxuICogQHJldHVybiB7UHJvbWlzZTxERy5Db2x1bW4+fSBBbGlnbmVkIHNlcXVlbmNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkthbGlnbihzcmNDb2wsIGlzQWxpZ25lZCA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHNlcXVlbmNlcyA9IHNyY0NvbC50b0xpc3QoKTtcbiAgICAgICAgaWYgKGlzQWxpZ25lZClcbiAgICAgICAgICAgIHNlcXVlbmNlcyA9IHNlcXVlbmNlcy5tYXAoKHYsIF8pID0+IEFsaWduZWRTZXF1ZW5jZUVuY29kZXIuY2xlYW4odikucmVwbGFjZSgvXFwtL2csICcnKSk7XG4gICAgICAgIGNvbnN0IGZhc3RhID0gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcyk7XG4gICAgICAgIGNvbnN0IENMSSA9IHlpZWxkIG5ldyBBaW9saSh7XG4gICAgICAgICAgICB0b29sOiAna2FsaWduJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczLjMuMScsXG4gICAgICAgICAgICByZWluaXQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZyhbJ2Zhc3RhLmxlbmd0aCA9JywgZmFzdGEubGVuZ3RoXSk7XG4gICAgICAgIHlpZWxkIENMSS5mcy53cml0ZUZpbGUoJ2lucHV0LmZhJywgZmFzdGEpO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSB5aWVsZCBDTEkuZXhlYygna2FsaWduIGlucHV0LmZhIC1mIGZhc3RhIC1vIHJlc3VsdC5mYXN0YScpO1xuICAgICAgICBjb25zb2xlLndhcm4ob3V0cHV0KTtcbiAgICAgICAgY29uc3QgYnVmID0geWllbGQgQ0xJLmNhdCgncmVzdWx0LmZhc3RhJyk7XG4gICAgICAgIGlmICghYnVmKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBrYWxpZ24gb3V0cHV0IG5vIHJlc3VsdGApO1xuICAgICAgICBjb25zdCBhbGlnbmVkID0gX2Zhc3RhVG9TdHJpbmdzKGJ1Zikuc2xpY2UoMCwgc2VxdWVuY2VzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHRndENvbCA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncyhgbXNhKCR7c3JjQ29sLm5hbWV9KWAsIGFsaWduZWQpO1xuICAgICAgICAvLyB1bml0c1xuICAgICAgICBjb25zdCBzcmNVbml0cyA9IHNyY0NvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIGNvbnN0IHRndFVuaXRzID0gc3JjVW5pdHMuc3BsaXQoJzonKS5tYXAoKHAsIGkpID0+IGkgPT0gMSA/IHAgKyAnLk1TQScgOiBwKS5qb2luKCc6Jyk7XG4gICAgICAgIHRndENvbC5zZXRUYWcoREcuVEFHUy5VTklUUywgdGd0VW5pdHMpO1xuICAgICAgICB0Z3RDb2wuc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICAgICAgcmV0dXJuIHRndENvbDtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0TVNBRW5vdWdoTWVtb3J5KGNvbCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlc0NvdW50ID0gY29sLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVsdGEgPSBzZXF1ZW5jZXNDb3VudCAvIDEwMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRlbHRhOyBpIDwgc2VxdWVuY2VzQ291bnQ7IGkgKz0gZGVsdGEpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgcnVuS2FsaWduKERHLkNvbHVtbi5mcm9tU3RyaW5ncyhjb2wubmFtZSwgY29sLnRvTGlzdCgpLnNsaWNlKDAsIE1hdGgucm91bmQoaSkpKSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJ1bkthbGlnbiBzdWNjZWVkZWQgb24gJHtpfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJ1bkthbGlnbiBmYWlsZWQgb24gJHtpfSB3aXRoICcke2Vycm9yfSdgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuIiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nbyc7XG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIGNvbnZlcnNpb24gb2Ygbm90YXRpb24gc3lzdGVtcyBpbiBNYWNyb21vbGVjdWxlIGNvbHVtbnMgKi9cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciB7XG4gICAgY29uc3RydWN0b3IoY29sKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZUNvbHVtbiA9IGNvbDtcbiAgICAgICAgdGhpcy5fc291cmNlVW5pdHMgPSB0aGlzLl9zb3VyY2VDb2x1bW4udGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgICAgICAgdGhpcy5fc291cmNlTm90YXRpb24gPSB0aGlzLmRldGVybWluZVNvdXJjZU5vdGF0aW9uKCk7XG4gICAgfVxuICAgIGdldCBzb3VyY2VVbml0cygpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZVVuaXRzOyB9XG4gICAgZ2V0IHNvdXJjZUNvbHVtbigpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZUNvbHVtbjsgfVxuICAgIGdldCBzb3VyY2VOb3RhdGlvbigpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZU5vdGF0aW9uOyB9XG4gICAgaXNGYXN0YSgpIHsgcmV0dXJuIHRoaXMuc291cmNlTm90YXRpb24gPT09IFwiRkFTVEFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLzsgfVxuICAgIGlzU2VwYXJhdG9yKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gXCJTRVBBUkFUT1JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87IH1cbiAgICBpc0hlbG0oKSB7IHJldHVybiB0aGlzLnNvdXJjZU5vdGF0aW9uID09PSBcIkhFTE1cIiAvKiBOT1RBVElPTi5IRUxNICovOyB9XG4gICAgdG9GYXN0YSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiRkFTVEFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLzsgfVxuICAgIHRvU2VwYXJhdG9yKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJTRVBBUkFUT1JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87IH1cbiAgICB0b0hlbG0odGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcIkhFTE1cIiAvKiBOT1RBVElPTi5IRUxNICovOyB9XG4gICAgaXNSbmEoKSB7IHJldHVybiB0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ3JuYScpOyB9XG4gICAgaXNEbmEoKSB7IHJldHVybiB0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ2RuYScpOyB9XG4gICAgaXNQZXB0aWRlKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdwdCcpOyB9XG4gICAgLyoqIEFzc29jaWF0ZSBub3RhdGlvbiB0eXBlcyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHVuaXRzICovXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Tk9UQVRJT059ICAgICBOb3RhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHVuaXRzIHR5cGVcbiAgICAgKi9cbiAgICBkZXRlcm1pbmVTb3VyY2VOb3RhdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmYXN0YScpKVxuICAgICAgICAgICAgcmV0dXJuIFwiRkFTVEFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLztcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3NlcGFyYXRvcicpKVxuICAgICAgICAgICAgcmV0dXJuIFwiU0VQQVJBVE9SXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICAvLyBUT0RPOiBoYW5kbGUgcG9zc2libGUgZXhjZXB0aW9uc1xuICAgICAgICAgICAgcmV0dXJuIFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERldGVybWluZSB0aGUgc2VwYXJhdG9yIHVzZWQgaW4gU0VQQVJBVE9SIGNvbHVtblxuICAgICAqXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZGV0ZWN0ZWQgc2VwYXJhdG9yXG4gICAgICovXG4gICAgZGV0ZXJtaW5lU2VwYXJhdG9yKCkge1xuICAgICAgICAvLyAgIFRPRE86IGZpZ3VyZSBvdXQgaG93IHRvIGRldGVybWluZSB0aGUgc2VwYXJhdG9yIGVmZmljaWVudGx5XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuc291cmNlQ29sdW1uO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGNvbnN0IHJlID0gL1teYS16XS87XG4gICAgICAgIHdoaWxlIChpIDwgY29sLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbW9sZWN1bGUgPSBjb2wuZ2V0KGkpO1xuICAgICAgICAgICAgY29uc3QgZm91bmRTZXBhcmF0b3IgPSBtb2xlY3VsZS50b0xvd2VyQ2FzZSgpLm1hdGNoKHJlKTtcbiAgICAgICAgICAgIGlmIChmb3VuZFNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRTZXBhcmF0b3JbMF07XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBzZXBhcmF0b3JzIGZvdW5kJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBlbXB0eSBjb2x1bW4gb2YgdGhlIHNwZWNpZmllZCBub3RhdGlvbiB0eXBlIGFuZCB0aGUgc2FtZVxuICAgICAqIGxlbmd0aCBhcyBzb3VyY2VDb2x1bW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tk9UQVRJT059IHRhcmdldE5vdGF0aW9uXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIGdldE5ld0NvbHVtbih0YXJnZXROb3RhdGlvbikge1xuICAgICAgICBjb25zdCBjb2wgPSB0aGlzLnNvdXJjZUNvbHVtbjtcbiAgICAgICAgY29uc3QgbGVuID0gY29sLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRhcmdldE5vdGF0aW9uICsgJygnICsgY29sLm5hbWUgKyAnKSc7XG4gICAgICAgIGNvbnN0IG5ld0NvbE5hbWUgPSBjb2wuZGF0YUZyYW1lLmNvbHVtbnMuZ2V0VW51c2VkTmFtZShuYW1lKTtcbiAgICAgICAgLy8gZHVtbXkgY29kZVxuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsIG5ld0NvbE5hbWUsIG5ldyBBcnJheShsZW4pLmZpbGwoJycpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSAnTWFjcm9tb2xlY3VsZSc7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgdGhpcy5zb3VyY2VVbml0cy5yZXBsYWNlKHRoaXMuc291cmNlTm90YXRpb24udG9Mb3dlckNhc2UoKS50b1N0cmluZygpLCB0YXJnZXROb3RhdGlvbi50b0xvd2VyQ2FzZSgpLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgLy8gVE9ETzogc3BlY2lmeSBjZWxsIHJlbmRlcmVycyBmb3IgYWxsIGNhc2VzXG4gICAgICAgIGlmICh0aGlzLnRvRmFzdGEodGFyZ2V0Tm90YXRpb24pKSB7XG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuQ0VMTF9SRU5ERVJFUiwgJ01hY3JvbW9sZWN1bGUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgTWFjcm9tb2xlY3VsZSBjb2x1bW4gZnJvbSBGQVNUQSB0byBTRVBBUkFUT1Igbm90YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgIEEgc3BlY2lmaWMgc2VwYXJhdG9yIHRvIGJlIHVzZWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZ2FwU3ltYm9sICBHYXAgc3ltYm9sIGluIEZBU1RBLCAnLScgYnkgZGVmYXVsdFxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgIEEgbmV3IGNvbHVtbiBpbiBTRVBBUkFUT1Igbm90YXRpb25cbiAgICAgKi9cbiAgICBjb252ZXJ0RmFzdGFUb1NlcGFyYXRvcihzZXBhcmF0b3IsIGdhcFN5bWJvbCA9ICctJykge1xuICAgICAgICAvLyBhIGZ1bmN0aW9uIHNwbGl0dGluZyBGQVNUQSBzZXF1ZW5jZSBpbnRvIGFuIGFycmF5IG9mIG1vbm9tZXJzOlxuICAgICAgICBjb25zdCBzcGxpdHRlckFzRmFzdGEgPSBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oXCJTRVBBUkFUT1JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgbmV3bHkgY3JlYXRlZCBlbXB0eSBjb2x1bW5cbiAgICAgICAgbmV3Q29sdW1uLmluaXQoKGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmFzdGFQb2x5bWVyID0gdGhpcy5zb3VyY2VDb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAgICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXkgPSBzcGxpdHRlckFzRmFzdGEoZmFzdGFQb2x5bWVyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmFzdGFNb25vbWVyc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZhc3RhTW9ub21lcnNBcnJheVtpXSA9PT0gZ2FwU3ltYm9sKVxuICAgICAgICAgICAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYXN0YU1vbm9tZXJzQXJyYXkuam9pbihzZXBhcmF0b3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIE1hY3JvbW9sZWN1bGUgY29sdW1uIGZyb20gRkFTVEEgdG8gSEVMTVxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZhc3RhR2FwU3ltYm9sICAgT3B0aW9uYWwgZmFzdGEgZ2FwIHN5bWJvbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBoZWxtR2FwU3ltYm9sICAgIE9wdGlvbmFsIGhlbG0gZ2FwIHN5bWJvbFxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgICAgICAgIEEgbmV3IGNvbHVtbiBpbiBIRUxNIG5vdGF0aW9uXG4gICAgICovXG4gICAgY29udmVydEZhc3RhVG9IZWxtKGZhc3RhR2FwU3ltYm9sID0gJy0nLCBoZWxtR2FwU3ltYm9sID0gJyonKSB7XG4gICAgICAgIC8vIGEgZnVuY3Rpb24gc3BsaXR0aW5nIEZBU1RBIHNlcXVlbmNlIGludG8gYW4gYXJyYXkgb2YgbW9ub21lcnNcbiAgICAgICAgY29uc3Qgc3BsaXR0ZXJBc0Zhc3RhID0gV2ViTG9nby5zcGxpdHRlckFzRmFzdGE7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9ICh0aGlzLmlzRG5hKCkpID8gJ0ROQTF7JyA6XG4gICAgICAgICAgICAodGhpcy5pc1JuYSgpKSA/ICdSTkExeycgOlxuICAgICAgICAgICAgICAgICh0aGlzLmlzUGVwdGlkZSgpKSA/ICdQRVBUSURFMXsnIDpcbiAgICAgICAgICAgICAgICAgICAgJ1Vua25vd24nOyAvLyB0aGlzIGNhc2Ugc2hvdWxkIGJlIGhhbmRsZWQgYXMgZXhjZXB0aW9uYWxcbiAgICAgICAgaWYgKHByZWZpeCA9PT0gJ1Vua25vd24nKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZWl0aGVyIHBlcHRpZGUsIG5vciBudWNsZW90aWRlJyk7XG4gICAgICAgIGNvbnN0IHBvc3RmaXggPSAnfSQkJCc7XG4gICAgICAgIGNvbnN0IGxlZnRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSkgPyAnRCgnIDpcbiAgICAgICAgICAgICh0aGlzLmlzUm5hKCkpID8gJ1IoJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgICAgICBjb25zdCByaWdodFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpIHx8IHRoaXMuaXNSbmEoKSkgPyAnKVAnIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhUG9seW1lciA9IHRoaXMuc291cmNlQ29sdW1uLmdldChpZHgpO1xuICAgICAgICAgICAgY29uc3QgZmFzdGFNb25vbWVyc0FycmF5ID0gc3BsaXR0ZXJBc0Zhc3RhKGZhc3RhUG9seW1lcik7XG4gICAgICAgICAgICBjb25zdCBoZWxtQXJyYXkgPSBbcHJlZml4XTtcbiAgICAgICAgICAgIGxldCBmaXJzdEl0ZXJhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZhc3RhTW9ub21lcnNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPT09IGZhc3RhR2FwU3ltYm9sKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgZ2FwIHN5bWJvbHMgaGFuZGxpbmdcbiAgICAgICAgICAgICAgICAgICAgaGVsbUFycmF5LnB1c2goaGVsbUdhcFN5bWJvbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3QgPSBmaXJzdEl0ZXJhdGlvbiA/ICcnIDogJy4nO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gW2RvdCwgbGVmdFdyYXBwZXIsIGZhc3RhTW9ub21lcnNBcnJheVtpXSwgcmlnaHRXcmFwcGVyXTtcbiAgICAgICAgICAgICAgICAgICAgaGVsbUFycmF5LnB1c2goaXRlbS5qb2luKCcnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoZWxtQXJyYXkucHVzaChwb3N0Zml4KTtcbiAgICAgICAgICAgIHJldHVybiBoZWxtQXJyYXkuam9pbignJyk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICBoYW5kbGVTZXBhcmF0b3JJdGVtRm9yRmFzdGEoaWR4LCBzZXBhcmF0b3JJdGVtc0FycmF5LCBzZXBhcmF0b3IsIGdhcFN5bWJvbCwgZmFzdGFNb25vbWVyc0FycmF5KSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZXBhcmF0b3JJdGVtc0FycmF5W2lkeF07XG4gICAgICAgIGlmIChpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIC8vIHRoZSBjYXNlIG9mIGEgbXVsdGktY2hhcmFjdGVyIG1vbm9tZXJcbiAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSAnWycgKyBpdGVtICsgJ10nO1xuICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2gobW9ub21lcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0gPT09IHNlcGFyYXRvcikge1xuICAgICAgICAgICAgaWYgKGlkeCAhPT0gMCAmJiBzZXBhcmF0b3JJdGVtc0FycmF5W2lkeCAtIDFdID09PSBzZXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2goZ2FwU3ltYm9sKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb252ZXJ0U2VwYXJhdG9yVG9GYXN0YShzZXBhcmF0b3IgPSBudWxsLCBnYXBTeW1ib2wgPSAnLScpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb25cbiAgICAgICAgLy8gKiBzaW1pbGFybHkgdG8gZmFzdGEyc2VwYXJhdG9yLCBkaXZpZGUgc3RyaW5nIGludG8gbW9ub21lcnNcbiAgICAgICAgLy8gKiBhZGphY2VudCBzZXBhcmF0b3JzIGlzIGEgZ2FwIChzeW1ib2wgdG8gYmUgc3BlY2lmaWVkKVxuICAgICAgICAvLyAqIHRoZSBtb25vbWVycyBNVVNUIGJlIHNpbmdsZS1jaGFyYWN0ZXIgb25sZXMsIG90aGVyd2lzZSBmb3JiaWRcbiAgICAgICAgLy8gKiBOTywgdGhleSBjYW4gYmUgbXVsdGktY2hhcmFjdGVyc1xuICAgICAgICAvLyBjb252ZXJzaW9uXG4gICAgICAgIC8vICogY29uc2lkZXIgYXV0b21hdGljIGRldGVybWluaW5nIHRoZSBzZXBhcmF0b3JcbiAgICAgICAgLy8gaWYgKHNlcGFyYXRvciA9PT0gbnVsbClcbiAgICAgICAgLy8gICBzZXBhcmF0b3IgPSB0aGlzLmRldGVybWluZVNlcGFyYXRvcigpO1xuICAgICAgICAvLyBhIGZ1bmN0aW9uIHNwbGl0dGluZyBGQVNUQSBzZXF1ZW5jZSBpbnRvIGFuIGFycmF5IG9mIG1vbm9tZXJzXG4gICAgICAgIC8vY29uc3Qgc3BsaXR0ZXJBc1NlcGFyYXRvciA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHNwbGl0dGVyID0gV2ViTG9nby5nZXRTcGxpdHRlckZvckNvbHVtbih0aGlzLl9zb3VyY2VDb2x1bW4pO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcIkZBU1RBXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvclBvbHltZXIgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBzZXBhcmF0b3JzXG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJdGVtc0FycmF5ID0gc3BsaXR0ZXIoc2VwYXJhdG9yUG9seW1lcik7XG4gICAgICAgICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VwYXJhdG9ySXRlbXNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBzZXBhcmF0b3JJdGVtc0FycmF5W2ldO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChnYXBTeW1ib2wpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2gobW9ub21lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oJycpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgY29udmVydFNlcGFyYXRvclRvSGVsbShmYXN0YUdhcFN5bWJvbCA9ICctJywgaGVsbUdhcFN5bWJvbCA9ICcqJykge1xuICAgICAgICAvLyBhIGZ1bmN0aW9uIHNwbGl0dGluZyBGQVNUQSBzZXF1ZW5jZSBpbnRvIGFuIGFycmF5IG9mIG1vbm9tZXJzXG4gICAgICAgIGNvbnN0IHNwbGl0dGVyID0gV2ViTG9nby5nZXRTcGxpdHRlckZvckNvbHVtbih0aGlzLl9zb3VyY2VDb2x1bW4pO1xuICAgICAgICBjb25zdCBwcmVmaXggPSAodGhpcy5pc0RuYSgpKSA/ICdETkExeycgOlxuICAgICAgICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUk5BMXsnIDpcbiAgICAgICAgICAgICAgICAodGhpcy5pc1BlcHRpZGUoKSkgPyAnUEVQVElERTF7JyA6XG4gICAgICAgICAgICAgICAgICAgICdVbmtub3duJzsgLy8gdGhpcyBjYXNlIHNob3VsZCBiZSBoYW5kbGVkIGFzIGV4Y2VwdGlvbmFsXG4gICAgICAgIGlmIChwcmVmaXggPT09ICdVbmtub3duJylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTmVpdGhlciBwZXB0aWRlLCBub3IgbnVjbGVvdGlkZScpO1xuICAgICAgICBjb25zdCBwb3N0Zml4ID0gJ30kJCQnO1xuICAgICAgICBjb25zdCBsZWZ0V3JhcHBlciA9ICh0aGlzLmlzRG5hKCkpID8gJ0QoJyA6XG4gICAgICAgICAgICAodGhpcy5pc1JuYSgpKSA/ICdSKCcgOiAnJzsgLy8gbm8gd3JhcHBlciBmb3IgcGVwdGlkZXNcbiAgICAgICAgY29uc3QgcmlnaHRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSB8fCB0aGlzLmlzUm5hKCkpID8gJylQJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcIkhFTE1cIiAvKiBOT1RBVElPTi5IRUxNICovKTtcbiAgICAgICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYXN0YVBvbHltZXIgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IHNwbGl0dGVyKGZhc3RhUG9seW1lcik7XG4gICAgICAgICAgICBjb25zdCBoZWxtQXJyYXkgPSBbcHJlZml4XTtcbiAgICAgICAgICAgIGxldCBmaXJzdEl0ZXJhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZhc3RhTW9ub21lcnNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPT09IGZhc3RhR2FwU3ltYm9sKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgZ2FwIHN5bWJvbHMgaGFuZGxpbmdcbiAgICAgICAgICAgICAgICAgICAgaGVsbUFycmF5LnB1c2goaGVsbUdhcFN5bWJvbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3QgPSBmaXJzdEl0ZXJhdGlvbiA/ICcnIDogJy4nO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gW2RvdCwgbGVmdFdyYXBwZXIsIGZhc3RhTW9ub21lcnNBcnJheVtpXSwgcmlnaHRXcmFwcGVyXTtcbiAgICAgICAgICAgICAgICAgICAgaGVsbUFycmF5LnB1c2goaXRlbS5qb2luKCcnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoZWxtQXJyYXkucHVzaChwb3N0Zml4KTtcbiAgICAgICAgICAgIHJldHVybiBoZWxtQXJyYXkuam9pbignJyk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICBjb252ZXJ0SGVsbVRvRmFzdGEoKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9uXG4gICAgICAgIHJldHVybiB0aGlzLmdldE5ld0NvbHVtbihcIkZBU1RBXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgIH1cbiAgICBjb252ZXJ0SGVsbVRvU2VwYXJhdG9yKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE5ld0NvbHVtbihcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgfVxuICAgIC8qKiBEaXNwYXRjaGVyIG1ldGhvZCBmb3Igbm90YXRpb24gY29udmVyc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHtOT1RBVElPTn0gdGFyZ2V0Tm90YXRpb24gICBOb3RhdGlvbiB3ZSB3YW50IHRvIGNvbnZlcnQgdG9cbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHRndFNlcGFyYXRvciAgIFBvc3NpYmxlIHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgICAgICAgICAgQ29udmVydGVkIGNvbHVtblxuICAgICAqL1xuICAgIGNvbnZlcnQodGFyZ2V0Tm90YXRpb24sIHRndFNlcGFyYXRvciA9IG51bGwpIHtcbiAgICAgICAgLy8gcG9zc2libGUgZXhjZXB0aW9uc1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gdGFyZ2V0Tm90YXRpb24pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhcmdldCBub3RhdGlvbiBpcyBpbnZhbGlkJyk7XG4gICAgICAgIGlmICh0aGlzLnRvU2VwYXJhdG9yKHRhcmdldE5vdGF0aW9uKSAmJiB0Z3RTZXBhcmF0b3IgPT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhcmdldCBzZXBhcmF0b3IgaXMgbm90IHNwZWNpZmllZCcpO1xuICAgICAgICBpZiAodGhpcy5pc0Zhc3RhKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0YXJnZXROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9TZXBhcmF0b3IodGd0U2VwYXJhdG9yKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc0Zhc3RhKCkgJiYgdGhpcy50b0hlbG0odGFyZ2V0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9IZWxtKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXNTZXBhcmF0b3IoKSAmJiB0aGlzLnRvRmFzdGEodGFyZ2V0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFNlcGFyYXRvclRvRmFzdGEodGd0U2VwYXJhdG9yKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9IZWxtKHRhcmdldE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRTZXBhcmF0b3JUb0hlbG0oKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc0hlbG0oKSAmJiB0aGlzLnRvRmFzdGEodGFyZ2V0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG1Ub0Zhc3RhKCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKTtcbiAgICB9XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5pbXBvcnQgeyBBdmFpbGFibGVNZXRyaWNzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcyc7XG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VHZXRTaW1pbGFyaXRpZXMoY29sLCBzZXEpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBzdHJpbmdBcnJheSA9IGNvbC50b0xpc3QoKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VzID0gbmV3IEFycmF5KHN0cmluZ0FycmF5Lmxlbmd0aCkuZmlsbCgwLjApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ0FycmF5Lmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgZGlzdGFuY2VzW2ldID0gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShBdmFpbGFibGVNZXRyaWNzWydTdHJpbmcnXVsnTGV2ZW5zaHRlaW4nXShzdHJpbmdBcnJheVtpXSwgc2VxKSk7XG4gICAgICAgIHJldHVybiBERy5Db2x1bW4uZnJvbUxpc3QoREcuQ09MVU1OX1RZUEUuRkxPQVQsICdkaXN0YW5jZXMnLCBkaXN0YW5jZXMpO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdUb29sdGlwKHBhcmFtcykge1xuICAgIHBhcmFtcy50b29sdGlwc1twYXJhbXMubGluZS5pZF0gPSB1aS5kaXZIKFtdKTtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IHVpLmRpdlYoW1xuICAgICAgICB1aS5kaXZUZXh0KCdzZXF1ZW5zZScpLFxuICAgICAgICB1aS5kaXZUZXh0KHBhcmFtcy5hY3Rpdml0eS5uYW1lKSxcbiAgICBdKTtcbiAgICBjb2x1bW5OYW1lcy5zdHlsZS5mb250V2VpZ2h0ID0gJ2JvbGQnO1xuICAgIGNvbHVtbk5hbWVzLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgY29sdW1uTmFtZXMuc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnc3BhY2UtYmV0d2Vlbic7XG4gICAgcGFyYW1zLnRvb2x0aXBzW3BhcmFtcy5saW5lLmlkXS5hcHBlbmQoY29sdW1uTmFtZXMpO1xuICAgIHBhcmFtcy5saW5lLm1vbHMuZm9yRWFjaCgobW9sKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlcSA9IHVpLmRpdlRleHQocGFyYW1zLmRmLmdldChwYXJhbXMuc2VxQ29sLm5hbWUsIG1vbCkpO1xuICAgICAgICBjb25zdCBhY3Rpdml0eSA9IHVpLmRpdlRleHQocGFyYW1zLmRmLmdldChwYXJhbXMuYWN0aXZpdHkubmFtZSwgbW9sKS50b0ZpeGVkKDIpKTtcbiAgICAgICAgYWN0aXZpdHkuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgYWN0aXZpdHkuc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnbGVmdCc7XG4gICAgICAgIGFjdGl2aXR5LnN0eWxlLnBhZGRpbmdMZWZ0ID0gJzMwcHgnO1xuICAgICAgICBwYXJhbXMudG9vbHRpcHNbcGFyYW1zLmxpbmUuaWRdLmFwcGVuZCh1aS5kaXZWKFtcbiAgICAgICAgICAgIHNlcSxcbiAgICAgICAgICAgIGFjdGl2aXR5LFxuICAgICAgICBdLCB7IHN0eWxlOiB7IHBhZGRpbmdMZWZ0OiAnNXB4JyB9IH0pKTtcbiAgICB9KTtcbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IEF2YWlsYWJsZU1ldHJpY3MgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzJztcbmltcG9ydCB7IHJlZHVjZURpbWVuc2luYWxpdHlXaXRoTm9ybWFsaXphdGlvbiB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3NlcXVlbmNlLXNwYWNlJztcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZVNwYWNlKHNwYWNlUGFyYW1zKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHByZXBhcmVkRGF0YTtcbiAgICAgICAgaWYgKCEoc3BhY2VQYXJhbXMuc2VxQ29sLnRhZ3NbREcuVEFHUy5VTklUU10gPT09ICdIRUxNJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcCA9IHNwYWNlUGFyYW1zLnNlcUNvbC5nZXRUYWcoJ3NlcGFyYXRvcicpO1xuICAgICAgICAgICAgY29uc3Qgc2VwRmluYWwgPSBzZXAgPyBzZXAgPT09ICcuJyA/ICdcXFxcXFwuJyA6IHNlcCA6ICctJztcbiAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChzZXBGaW5hbCwgJ2cnKTtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzWydTdHJpbmcnXSkuaW5jbHVkZXMoc3BhY2VQYXJhbXMuc2ltaWxhcml0eU1ldHJpYykpXG4gICAgICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpLm1hcCgodikgPT4gdi5yZXBsYWNlKHJlZ2V4LCAnJykpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHByZXBhcmVkRGF0YSA9IHNwYWNlUGFyYW1zLnNlcUNvbC50b0xpc3QoKS5tYXAoKHYpID0+IHYucmVwbGFjZShyZWdleCwgJycpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByZXBhcmVkRGF0YSA9IHNwYWNlUGFyYW1zLnNlcUNvbC50b0xpc3QoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXF1ZW5jZVNwYWNlUmVzdWx0ID0geWllbGQgcmVkdWNlRGltZW5zaW5hbGl0eVdpdGhOb3JtYWxpemF0aW9uKHByZXBhcmVkRGF0YSwgc3BhY2VQYXJhbXMubWV0aG9kTmFtZSwgc3BhY2VQYXJhbXMuc2ltaWxhcml0eU1ldHJpYywgc3BhY2VQYXJhbXMub3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBzcGFjZVBhcmFtcy5lbWJlZEF4ZXNOYW1lcy5tYXAoKG5hbWUsIGluZGV4KSA9PiBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheShuYW1lLCBzZXF1ZW5jZVNwYWNlUmVzdWx0LmVtYmVkZGluZ1tpbmRleF0pKTtcbiAgICAgICAgcmV0dXJuIHsgZGlzdGFuY2U6IHNlcXVlbmNlU3BhY2VSZXN1bHQuZGlzdGFuY2UsIGNvb3JkaW5hdGVzOiBuZXcgREcuQ29sdW1uTGlzdChjb2xzKSB9O1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEVtYmVkZGluZ0NvbHNOYW1lcyhkZikge1xuICAgIGNvbnN0IGF4ZXMgPSBbJ0VtYmVkX1gnLCAnRW1iZWRfWSddO1xuICAgIGNvbnN0IGNvbE5hbWVJbmQgPSBkZi5jb2x1bW5zLm5hbWVzKCkuZmlsdGVyKChpdCkgPT4gaXQuaW5jbHVkZXMoYXhlc1swXSkpLmxlbmd0aCArIDE7XG4gICAgcmV0dXJuIGF4ZXMubWFwKChpdCkgPT4gYCR7aXR9XyR7Y29sTmFtZUluZH1gKTtcbn1cbiIsImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBXZWJMb2dvIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvd2ViLWxvZ28nO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0xJQl9GSUxFTkFNRSA9ICcvc2FtcGxlcy9IRUxNQ29yZUxpYnJhcnkuanNvbic7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0xJQl9NT05PTUVSX1NZTUJPTCA9ICdzeW1ib2wnO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9MSUJfTU9MRklMRSA9ICdtb2xmaWxlJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfRklFTERTID0gWydzeW1ib2wnLCAnbW9sZmlsZScsICdyZ3JvdXBzJywgJ25hbWUnXTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2xmaWxlc0Zyb21TZXEoY29sLCBtb25vbWVyc0xpYk9iamVjdCkge1xuICAgIGNvbnN0IHVuaXRzID0gY29sLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgY29uc3Qgc2VwID0gY29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgY29uc3Qgc3BsaXR0ZXJGdW5jID0gV2ViTG9nby5nZXRTcGxpdHRlcih1bml0cywgc2VwKTtcbiAgICBjb25zdCBtb25vbWVyc0RpY3QgPSBjcmVhdGVNb21vbWVyc01vbERpY3QobW9ub21lcnNMaWJPYmplY3QpO1xuICAgIGNvbnN0IG1vbEZpbGVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2wubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgbW9ub21lcnMgPSBzcGxpdHRlckZ1bmMoY29sLmdldChpKSk7XG4gICAgICAgIGNvbnN0IG1vbEZpbGVzRm9yU2VxID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbW9ub21lcnMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyc1tqXSkge1xuICAgICAgICAgICAgICAgIGlmICghbW9ub21lcnNEaWN0W21vbm9tZXJzW2pdXSkge1xuICAgICAgICAgICAgICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcoYE1vbm9tZXIgJHttb25vbWVyc1tqXX0gaXMgbWlzc2luZyBpbiBIRUxNIGxpYnJhcnkuIFN0cnVjdHVyZSBjYW5ub3QgYmUgY3JlYXRlZGApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbW9sRmlsZXNGb3JTZXEucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbW9sRmlsZXMucHVzaChtb2xGaWxlc0ZvclNlcSk7XG4gICAgfVxuICAgIHJldHVybiBtb2xGaWxlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb21vbWVyc01vbERpY3QobGliKSB7XG4gICAgY29uc3QgZGljdCA9IHt9O1xuICAgIGxpYi5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICBpZiAoaXRbJ3BvbHltZXJUeXBlJ10gPT09ICdQRVBUSURFJykge1xuICAgICAgICAgICAgY29uc3QgbW9ub21lck9iamVjdCA9IHt9O1xuICAgICAgICAgICAgSEVMTV9DT1JFX0ZJRUxEUy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIG1vbm9tZXJPYmplY3RbZmllbGRdID0gaXRbZmllbGRdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaWN0W2l0W0hFTE1fQ09SRV9MSUJfTU9OT01FUl9TWU1CT0xdXSA9IG1vbm9tZXJPYmplY3Q7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGljdDtcbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBWZFJlZ2lvblR5cGUgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmQtcmVnaW9ucyc7XG5jb25zdCB2cnQgPSBWZFJlZ2lvblR5cGU7XG4vLyBQb3NpdGlvbnMgb2YgcmVnaW9ucyBmb3IgbnVtYmVyaW5nIHNjaGVtZXNcbi8vIGh0dHA6Ly93d3cuYmlvaW5mLm9yZy51ay9hYnMvaW5mby5odG1sXG4vLyBjb25zdCBpbWd0UmVnaW9uczogVmRSZWdpb25bXSA9IFtcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMScsICdMaWdodCcsIDEsICcxJywgJzI2JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjEnLCAnSGVhdnknLCAxLCAnMScsICcyNicpLFxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIxJywgJ0xpZ2h0JywgMiwgJzI3JywgJzM4JyksIC8vIDI3LTMyXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuQ0RSLCAnQ0RSMScsICdIZWF2eScsIDIsICcyNycsICczOCcpLCAvLyAyNy0zMlxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMicsICdMaWdodCcsIDMsICczOScsICc1NScpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIyJywgJ0hlYXZ5JywgMywgJzM5JywgJzU1JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjInLCAnTGlnaHQnLCA0LCAnNTYnLCAnNjUnKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIyJywgJ0hlYXZ5JywgNCwgJzU2JywgJzY1JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIzJywgJ0xpZ2h0JywgNSwgJzY2JywgJzEwNCcpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIzJywgJ0hlYXZ5JywgNSwgJzY2JywgJzEwNCcpLFxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIzJywgJ0xpZ2h0JywgNiwgJzEwNScsICcxMTcnKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIzJywgJ0hlYXZ5JywgNiwgJzEwNScsICcxMTcnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjQnLCAnTGlnaHQnLCA3LCAnMTE4JywgbnVsbC8qMTI3Ki8pLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlI0JywgJ0hlYXZ5JywgNywgJzExOCcsIG51bGwvKjEyOCovKSxcbi8vIF07XG4vKiogVmlld2VyIHdpdGggdGFicyBiYXNlZCBvbiBkZXNjcmlwdGlvbiBvZiBjaGFpbiByZWdpb25zLlxuICogIFVzZWQgdG8gZGVmaW5lIHJlZ2lvbnMgb2YgYW4gaW1tdW5vZ2xvYnVsaW4gTEMuXG4gKi9cbmV4cG9ydCBjbGFzcyBWZFJlZ2lvbnNWaWV3ZXIgZXh0ZW5kcyBERy5Kc1ZpZXdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8vIHByaXZhdGUgcmVnaW9uc0RmOiBERy5EYXRhRnJhbWU7XG4gICAgICAgIHRoaXMucmVnaW9uc0ZnID0gbnVsbDtcbiAgICAgICAgLy8gcHJpdmF0ZSByZWdpb25zVFY6IERHLlRhYmxlVmlldztcbiAgICAgICAgdGhpcy5yZWdpb25zUm9vdCA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wYW5lbE5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLnJlZ2lvbnMgPSBbXTtcbiAgICAgICAgLy8gI3JlZ2lvbiAtLSBIYW5kbGUgY29udHJvbHMnIGV2ZW50cyAtLVxuICAgICAgICB0aGlzLnJlc2l6aW5nID0gZmFsc2U7XG4gICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgLy8jcmVnaW9uIC0tIFZpZXcgLS1cbiAgICAgICAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5tYWluTGF5b3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sb2dvcyA9IFtdO1xuICAgICAgICAvLyBUbyBwcmV2ZW50IGFtYmlndW91cyBudW1iZXJpbmcgc2NoZW1lIGluIE1MQlxuICAgICAgICB0aGlzLnJlZ2lvblR5cGVzID0gdGhpcy5zdHJpbmdMaXN0KCdyZWdpb25UeXBlcycsIFt2cnQuQ0RSXSwgeyBjaG9pY2VzOiBPYmplY3QudmFsdWVzKHZydCkuZmlsdGVyKCh0KSA9PiB0ICE9IHZydC5Vbmtub3duKSB9KTtcbiAgICAgICAgdGhpcy5jaGFpbnMgPSB0aGlzLnN0cmluZ0xpc3QoJ2NoYWlucycsIFsnSGVhdnknLCAnTGlnaHQnXSwgeyBjaG9pY2VzOiBbJ0hlYXZ5JywgJ0xpZ2h0J10gfSk7XG4gICAgICAgIHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lUG9zdGZpeCA9IHRoaXMuc3RyaW5nKCdzZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4JywgJ2NoYWluIHNlcXVlbmNlJyk7XG4gICAgfVxuICAgIGdldCBkZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZyYW1lO1xuICAgIH1cbiAgICAvLyBUT0RPOiAub25UYWJsZUF0dGFjaGVkIGlzIG5vdCBjYWxsaW5nIG9uIGRhdGFGcmFtZSBzZXQsIG9uUHJvcGVydHlDaGFuZ2VkICBhbHNvIG5vdCBjYWxsaW5nXG4gICAgc2V0RGYodmFsdWUsIHJlZ2lvbnMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1ZkUmVnaW9uc1ZpZXdlci5zZXREZigpJyk7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmRlc3Ryb3lWaWV3KCk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lvbnMgPSByZWdpb25zO1xuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuYnVpbGRWaWV3KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpbml0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgLy8jcmVnaW9uIHJlZ2lvbnNERiB3aXRoIGZpbHRlclxuICAgICAgICAgICAgLy8gdGhpcy5yZWdpb25zRGYgPSBERy5EYXRhRnJhbWUuZnJvbU9iamVjdHModGhpcy5yZWdpb25zKTtcbiAgICAgICAgICAgIC8vIHRoaXMucmVnaW9uc0RmLnJvd3MuZmlsdGVyKChyb3cpID0+IHJvdy5uYW1lID09ICdDRFIxJyk7XG4gICAgICAgICAgICAvLyAvLyBUbyBhdmFpbGFibGUgb3B0aW9ucyAvXG4gICAgICAgICAgICAvLyB0aGlzLnJlZ2lvbnNGZyA9IChhd2FpdCB0aGlzLnJlZ2lvbnNEZi5wbG90LmZyb21UeXBlKERHLlZJRVdFUi5GSUxURVJTLCB7XG4gICAgICAgICAgICAvLyAgIC8vIGNvbHVtbk5hbWVzOiBbJ25hbWUnLF0sXG4gICAgICAgICAgICAvLyAgIHNob3dGaWx0ZXJDb3VudHNJbmRpY2F0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgc2hvd0hlYWRlcjogZmFsc2UsXG4gICAgICAgICAgICAvLyAgIHNob3dTZWFyY2hCb3g6IGZhbHNlLFxuICAgICAgICAgICAgLy8gICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAvLyAgICAge3R5cGU6IERHLkZJTFRFUl9UWVBFLkNBVEVHT1JJQ0FMLCBjb2x1bW46ICd0eXBlJywgbGFiZWw6ICdSZWdpb24gbmFtZScsIHNob3dIaXN0b2dyYW06IGZhbHNlfSxcbiAgICAgICAgICAgIC8vICAgICB7dHlwZTogREcuRklMVEVSX1RZUEUuQ0FURUdPUklDQUwsIGNvbHVtbjogJ25hbWUnLCBsYWJlbDogJ1JlZ2lvbiB0eXBlJywgc2hvd0hpc3RvZ3JhbTogZmFsc2V9LFxuICAgICAgICAgICAgLy8gICBdLFxuICAgICAgICAgICAgLy8gICB0aXRsZTogJ1JlZ2lvbnMgZmlsdGVyJyxcbiAgICAgICAgICAgIC8vICAgc2hvd1RpdGxlOiB0cnVlLFxuICAgICAgICAgICAgLy8gICBkZXNjcmlwdGlvbjogJ0ZpbHRlciBmb3IgcmVnaW9ucyBvZiBtdWx0aXBsZSBhbGlnbm1lbnQgYnkgSU1HVCBub21lbmNsYXR1cmUnLFxuICAgICAgICAgICAgLy8gICBzb21lUHJvcGVydHk6ICdIZWxsbycsXG4gICAgICAgICAgICAvLyB9KSkgYXMgREcuRmlsdGVyR3JvdXA7XG4gICAgICAgICAgICAvLyNlbmRyZWdpb24gcmVnaW9uc0RGIHdpdGggZmlsdGVyXG4gICAgICAgICAgICAvLyB0aGlzLm1sYlZpZXcuZG9ja01hbmFnZXIuZG9jayh0aGlzLnJlZ2lvbnNGZy5yb290LCBERy5ET0NLX1RZUEUuTEVGVCwgcm9vdE5vZGUsICdGaWx0ZXIgcmVnaW9ucycsIDAuMik7XG4gICAgICAgICAgICB0aGlzLnN1YnMucHVzaCh1aS5vblNpemVDaGFuZ2VkKHRoaXMucm9vdCkuc3Vic2NyaWJlKHRoaXMucm9vdE9uU2l6ZUNoYW5nZWQuYmluZCh0aGlzKSkpO1xuICAgICAgICAgICAgLy8gcnhqcy5mcm9tRXZlbnQodGhpcy5yb290LCAnbW91c2Vtb3ZlJykuc3Vic2NyaWJlKHRoaXMub25Nb3VzZU1vdmVSb290LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGhpcy5yb290LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSb290LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5idWlsZFZpZXcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuaW5pdCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkpIHtcbiAgICAgICAgY29uc3QgX3N1cGVyID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgICAgICAgICBvblByb3BlcnR5Q2hhbmdlZDogeyBnZXQ6ICgpID0+IHN1cGVyLm9uUHJvcGVydHlDaGFuZ2VkIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBfc3VwZXIub25Qcm9wZXJ0eUNoYW5nZWQuY2FsbCh0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVnaW9uVHlwZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NoYWlucyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VxdWVuY2VDb2x1bW5OYW1lUG9zdGZpeCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9wZW4obWxiVmlldykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lbE5vZGUgPSBtbGJWaWV3LmRvY2tNYW5hZ2VyLmRvY2sodGhpcy5yb290LCBERy5ET0NLX1RZUEUuVE9QLCBudWxsLCAnUmVnaW9ucycsIDAuMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaG93KG1sYlZpZXcpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJvb3RPblNpemVDaGFuZ2VkKGFyZ3MpIHtcbiAgICAgICAgdGhpcy5jYWxjU2l6ZSgpO1xuICAgIH1cbiAgICBkZXN0cm95VmlldygpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IFVuc3Vic2NyaWJlIGZyb20gYW5kIHJlbW92ZSBhbGwgdmlldyBlbGVtZW50c1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgVmRSZWdpb25zVmlld2VyLmRlc3Ryb3lWaWV3KCBtYWluTGF5b3V0ID0gJHshdGhpcy5tYWluTGF5b3V0ID8gJ25vbmUnIDogJ3ZhbHVlJ30gKWApO1xuICAgICAgICAgICAgaWYgKHRoaXMubWFpbkxheW91dCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5yb290LnJlbW92ZUNoaWxkKHRoaXMuaG9zdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYWluTGF5b3V0LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMubWFpbkxheW91dCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBidWlsZFZpZXcoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdWZFJlZ2lvbnNWaWV3ZXIuYnVpbGRWaWV3KCkgc3RhcnQnKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbE5hbWVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4udGhpcy5jaGFpbnMubWFwKChjaGFpbikgPT4gKHsgW2NoYWluXTogYCR7Y2hhaW59ICR7dGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4fWAgfSkpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlZ2lvbnNGaWx0ZXJlZCA9IHRoaXMucmVnaW9ucy5maWx0ZXIoKHIpID0+IHRoaXMucmVnaW9uVHlwZXMuaW5jbHVkZXMoci50eXBlKSk7XG4gICAgICAgICAgICBjb25zdCBvcmRlckxpc3QgPSBBcnJheS5mcm9tKG5ldyBTZXQocmVnaW9uc0ZpbHRlcmVkLm1hcCgocikgPT4gci5vcmRlcikpKS5zb3J0KCk7XG4gICAgICAgICAgICB0aGlzLmxvZ29zID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBvcmRlckkgPSAwOyBvcmRlckkgPCBvcmRlckxpc3QubGVuZ3RoOyBvcmRlckkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lvbkNoYWlucyA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hhaW4gb2YgdGhpcy5jaGFpbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnaW9uID0gcmVnaW9uc0ZpbHRlcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgocikgPT4gci5vcmRlciA9PSBvcmRlckxpc3Rbb3JkZXJJXSAmJiByLmNoYWluID09IGNoYWluKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uQ2hhaW5zW2NoYWluXSA9ICh5aWVsZCB0aGlzLmRhdGFGcmFtZS5wbG90LmZyb21UeXBlKCdXZWJMb2dvJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VDb2x1bW5OYW1lOiBjb2xOYW1lc1tjaGFpbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uTmFtZTogcmVnaW9uLnBvc2l0aW9uU3RhcnROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kUG9zaXRpb25OYW1lOiByZWdpb24ucG9zaXRpb25FbmROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZml4V2lkdGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2ViTG9nbyBjcmVhdGlvbiBmaXJlcyBvblJvb3RTaXplQ2hhbmdlZCBldmVudCBldmVuIGJlZm9yZSBjb250cm9sIGJlaW5nIGFkZGVkIHRvIHRoaXMubG9nb3NcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ29zW29yZGVySV0gPSByZWdpb25DaGFpbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB1aS50YWJsZUZyb21NYXAoKVxuICAgICAgICAgICAgLy8gREcuSHRtbFRhYmxlLmNyZWF0ZSgpXG4gICAgICAgICAgICB0aGlzLm1haW5MYXlvdXQgPSB1aS50YWJsZSh0aGlzLmNoYWlucywgKGNoYWluKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBbXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgY2hhaW4gbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgLi4uKG9yZGVyTGlzdC5sZW5ndGggPiAwID8gW3VpLmRpdihjaGFpbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgtOTBkZWcpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJzEycHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogJzZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSldIDogW10pLFxuICAgICAgICAgICAgICAgICAgICAvLyBMaXN0IHdpdGggY29udHJvbHMgZm9yIHJlZ2lvbnNcbiAgICAgICAgICAgICAgICAgICAgLi4uWy4uLkFycmF5KG9yZGVyTGlzdC5sZW5ndGgpLmtleXMoKV0ubWFwKChvcmRlckkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdsID0gdGhpcy5sb2dvc1tvcmRlckldW2NoYWluXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdsLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzRGl2ID0gdWkuZGl2KFt3bC5yb290XSAvKmAke2NoYWlufSAke3JlZ2lvbnNGaWx0ZXJlZFtySV19YCovLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzRGl2O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgICAgICAgICAgfSwgWycnLCAuLi5bLi4uQXJyYXkob3JkZXJMaXN0Lmxlbmd0aCkua2V5cygpXS5tYXAoKG9yZGVySSkgPT4gcmVnaW9uc0ZpbHRlcmVkLmZpbmQoKHIpID0+IHIub3JkZXIgPT0gb3JkZXJMaXN0W29yZGVySV0gJiYgci5jaGFpbiA9PSB0aGlzLmNoYWluc1swXSkubmFtZSB8fCAnTmFtZScpXSk7XG4gICAgICAgICAgICB0aGlzLm1haW5MYXlvdXQuY2xhc3NOYW1lID0gJ21sYi12ZC1yZWdpb25zLXZpZXdlci10YWJsZTInO1xuICAgICAgICAgICAgLy8gdGhpcy5tYWluTGF5b3V0LnN0eWxlLmJhY2tncm91bmQgPSAnI0VFRUVGRic7XG4gICAgICAgICAgICAvLyB0aGlzLm1haW5MYXlvdXQuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICAgICAgLy8gdGhpcy5tYWluTGF5b3V0LnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgYmxhY2snO1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSBgI2ZmYmIke01hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMjU1KS50b1N0cmluZygxNil9YDtcbiAgICAgICAgICAgIHRoaXMuaG9zdCA9IHVpLmJveCh0aGlzLm1haW5MYXlvdXQsIHsgLypzdHlsZToge2JhY2tncm91bmRDb2xvcjogY29sb3J9Ki99KTtcbiAgICAgICAgICAgIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLmhvc3QpO1xuICAgICAgICAgICAgdGhpcy5yb290LnN0eWxlLm92ZXJmbG93WCA9ICdhdXRvJztcbiAgICAgICAgICAgIHRoaXMuY2FsY1NpemUoKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1ZkUmVnaW9uc1ZpZXdlci5idWlsZFZpZXcoKSBlbmQnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNhbGNTaXplKCkge1xuICAgICAgICBjb25zdCBsb2dvSGVpZ2h0ID0gKHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSA1NCkgLyB0aGlzLmNoYWlucy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgubWluKGxvZ29IZWlnaHQsIE1hdGgubWF4KC4uLnRoaXMubG9nb3MubWFwKCh3bERpY3QpID0+IE1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXMod2xEaWN0KS5tYXAoKHdsKSA9PiB3bC5tYXhIZWlnaHQpKSkpKTtcbiAgICAgICAgZm9yIChsZXQgb3JkZXJJID0gMDsgb3JkZXJJIDwgdGhpcy5sb2dvcy5sZW5ndGg7IG9yZGVySSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBjaGFpbkkgPSAwOyBjaGFpbkkgPCB0aGlzLmNoYWlucy5sZW5ndGg7IGNoYWluSSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hhaW4gPSB0aGlzLmNoYWluc1tjaGFpbkldO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nb3Nbb3JkZXJJXVtjaGFpbl0ucm9vdC5zdHlsZS5oZWlnaHQgPSBgJHttYXhIZWlnaHR9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvbiAtLSBWaWV3IC0tXG4gICAgb25Nb3VzZU1vdmVSb290KGUpIHtcbiAgICAgICAgLy8gdWkudG9vbHRpcC5zaG93KCd0ZXh0JywgZS54ICsgOCwgZS55ICsgOCwpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgb25Nb3VzZU1vdmVSb290LiggeDogJHtlLnh9LCB5OiAke2UueX0gKWApO1xuICAgIH1cbn1cbiIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInd1XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInd1XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge30sXG4vKioqKioqLyBcdFx0XHRpZDogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4vKioqKioqLyBcdFx0fTtcblxuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cblxuXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfdG9Db25zdW1hYmxlQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX3NsaWNlZFRvQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9TeW1ib2wkaXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9nZXRJdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNDApW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX3JlZ2VuZXJhdG9yUnVudGltZSA9IF9fd2VicGFja19yZXF1aXJlX18oNTQpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX09iamVjdCRrZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfU2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfUHJvbWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgd3UgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHd1KGl0ZXJhYmxlKSB7XG5cdCAgaWYgKCFpc0l0ZXJhYmxlKGl0ZXJhYmxlKSkge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKFwid3U6IGBcIiArIGl0ZXJhYmxlICsgXCJgIGlzIG5vdCBpdGVyYWJsZSFcIik7XG5cdCAgfVxuXHQgIHJldHVybiBuZXcgV3UoaXRlcmFibGUpO1xuXHR9O1xuXG5cdGZ1bmN0aW9uIFd1KGl0ZXJhYmxlKSB7XG5cdCAgdmFyIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoaXRlcmFibGUpO1xuXHQgIHRoaXMubmV4dCA9IGl0ZXJhdG9yLm5leHQuYmluZChpdGVyYXRvcik7XG5cdH1cblx0d3UucHJvdG90eXBlID0gV3UucHJvdG90eXBlO1xuXG5cdHd1LnByb3RvdHlwZVtfU3ltYm9sJGl0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHtcblx0ICByZXR1cm4gdGhpcztcblx0fTtcblxuXHQvKlxuXHQgKiBJbnRlcm5hbCB1dGlsaXRpZXNcblx0ICovXG5cblx0Ly8gQW4gaW50ZXJuYWwgcGxhY2Vob2xkZXIgdmFsdWUuXG5cdHZhciBNSVNTSU5HID0ge307XG5cblx0Ly8gUmV0dXJuIHdoZXRoZXIgYSB0aGluZyBpcyBpdGVyYWJsZS5cblx0dmFyIGlzSXRlcmFibGUgPSBmdW5jdGlvbiBpc0l0ZXJhYmxlKHRoaW5nKSB7XG5cdCAgcmV0dXJuIHRoaW5nICYmIHR5cGVvZiB0aGluZ1tfU3ltYm9sJGl0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiO1xuXHR9O1xuXG5cdC8vIEdldCB0aGUgaXRlcmF0b3IgZm9yIHRoZSB0aGluZyBvciB0aHJvdyBhbiBlcnJvci5cblx0dmFyIGdldEl0ZXJhdG9yID0gZnVuY3Rpb24gZ2V0SXRlcmF0b3IodGhpbmcpIHtcblx0ICBpZiAoaXNJdGVyYWJsZSh0aGluZykpIHtcblx0ICAgIHJldHVybiBfZ2V0SXRlcmF0b3IodGhpbmcpO1xuXHQgIH1cblx0ICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTm90IGl0ZXJhYmxlOiBcIiArIHRoaW5nKTtcblx0fTtcblxuXHQvLyBEZWZpbmUgYSBzdGF0aWMgbWV0aG9kIG9uIGB3dWAgYW5kIHNldCBpdHMgcHJvdG90eXBlIHRvIHRoZSBzaGFyZWRcblx0Ly8gYFd1LnByb3RvdHlwZWAuXG5cdHZhciBzdGF0aWNNZXRob2QgPSBmdW5jdGlvbiBzdGF0aWNNZXRob2QobmFtZSwgZm4pIHtcblx0ICBmbi5wcm90b3R5cGUgPSBXdS5wcm90b3R5cGU7XG5cdCAgd3VbbmFtZV0gPSBmbjtcblx0fTtcblxuXHQvLyBEZWZpbmUgYSBmdW5jdGlvbiB0aGF0IGlzIGF0dGFjaGVkIGFzIGJvdGggYSBgV3UucHJvdG90eXBlYCBtZXRob2QgYW5kIGFcblx0Ly8gY3VycnlhYmxlIHN0YXRpYyBtZXRob2Qgb24gYHd1YCBkaXJlY3RseSB0aGF0IHRha2VzIGFuIGl0ZXJhYmxlIGFzIGl0cyBsYXN0XG5cdC8vIHBhcmFtZXRlci5cblx0dmFyIHByb3RvdHlwZUFuZFN0YXRpYyA9IGZ1bmN0aW9uIHByb3RvdHlwZUFuZFN0YXRpYyhuYW1lLCBmbikge1xuXHQgIHZhciBleHBlY3RlZEFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBmbi5sZW5ndGggOiBhcmd1bWVudHNbMl07XG5cdCAgcmV0dXJuIChmdW5jdGlvbiAoKSB7XG5cdCAgICBmbi5wcm90b3R5cGUgPSBXdS5wcm90b3R5cGU7XG5cdCAgICBXdS5wcm90b3R5cGVbbmFtZV0gPSBmbjtcblxuXHQgICAgLy8gKzEgZm9yIHRoZSBpdGVyYWJsZSwgd2hpY2ggaXMgdGhlIGB0aGlzYCB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gc28gaXRcblx0ICAgIC8vIGlzbid0IHJlZmxlY3RlZCBieSB0aGUgbGVuZ3RoIHByb3BlcnR5LlxuXHQgICAgZXhwZWN0ZWRBcmdzICs9IDE7XG5cblx0ICAgIHd1W25hbWVdID0gd3UuY3VycnlhYmxlKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgdmFyIF93dTtcblxuXHQgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgICAgIH1cblxuXHQgICAgICB2YXIgaXRlcmFibGUgPSBhcmdzLnBvcCgpO1xuXHQgICAgICByZXR1cm4gKF93dSA9IHd1KGl0ZXJhYmxlKSlbbmFtZV0uYXBwbHkoX3d1LCBhcmdzKTtcblx0ICAgIH0sIGV4cGVjdGVkQXJncyk7XG5cdCAgfSkoKTtcblx0fTtcblxuXHQvLyBBIGRlY29yYXRvciBmb3IgcmV3cmFwcGluZyBhIG1ldGhvZCdzIHJldHVybmVkIGl0ZXJhYmxlIGluIHd1IHRvIG1haW50YWluXG5cdC8vIGNoYWluYWJpbGl0eS5cblx0dmFyIHJld3JhcCA9IGZ1bmN0aW9uIHJld3JhcChmbikge1xuXHQgIHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdCAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuXHQgICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiB3dShmbi5jYWxsLmFwcGx5KGZuLCBbdGhpc10uY29uY2F0KGFyZ3MpKSk7XG5cdCAgfTtcblx0fTtcblxuXHR2YXIgcmV3cmFwU3RhdGljTWV0aG9kID0gZnVuY3Rpb24gcmV3cmFwU3RhdGljTWV0aG9kKG5hbWUsIGZuKSB7XG5cdCAgcmV0dXJuIHN0YXRpY01ldGhvZChuYW1lLCByZXdyYXAoZm4pKTtcblx0fTtcblx0dmFyIHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyA9IGZ1bmN0aW9uIHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhuYW1lLCBmbiwgZXhwZWN0ZWRBcmdzKSB7XG5cdCAgcmV0dXJuIHByb3RvdHlwZUFuZFN0YXRpYyhuYW1lLCByZXdyYXAoZm4pLCBleHBlY3RlZEFyZ3MpO1xuXHR9O1xuXG5cdC8vIFJldHVybiBhIHdyYXBwZWQgdmVyc2lvbiBvZiBgZm5gIGJvdW5kIHdpdGggdGhlIGluaXRpYWwgYXJndW1lbnRzXG5cdC8vIGAuLi5hcmdzYC5cblx0ZnVuY3Rpb24gY3VycnkoZm4sIGFyZ3MpIHtcblx0ICByZXR1cm4gZnVuY3Rpb24gKCkge1xuXHQgICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBtb3JlQXJncyA9IEFycmF5KF9sZW4zKSwgX2tleTMgPSAwOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG5cdCAgICAgIG1vcmVBcmdzW19rZXkzXSA9IGFyZ3VtZW50c1tfa2V5M107XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBmbi5jYWxsLmFwcGx5KGZuLCBbdGhpc10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShhcmdzKSwgbW9yZUFyZ3MpKTtcblx0ICB9O1xuXHR9XG5cblx0Lypcblx0ICogUHVibGljIHV0aWxpdGllc1xuXHQgKi9cblxuXHRzdGF0aWNNZXRob2QoXCJjdXJyeWFibGVcIiwgZnVuY3Rpb24gKGZuKSB7XG5cdCAgdmFyIGV4cGVjdGVkID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gZm4ubGVuZ3RoIDogYXJndW1lbnRzWzFdO1xuXHQgIHJldHVybiAoZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIGYoKSB7XG5cdCAgICAgIGZvciAodmFyIF9sZW40ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW40KSwgX2tleTQgPSAwOyBfa2V5NCA8IF9sZW40OyBfa2V5NCsrKSB7XG5cdCAgICAgICAgYXJnc1tfa2V5NF0gPSBhcmd1bWVudHNbX2tleTRdO1xuXHQgICAgICB9XG5cblx0ICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoID49IGV4cGVjdGVkID8gZm4uYXBwbHkodGhpcywgYXJncykgOiBjdXJyeShmLCBhcmdzKTtcblx0ICAgIH07XG5cdCAgfSkoKTtcblx0fSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiZW50cmllc1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChvYmopIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiwgX2RpZEl0ZXJhdG9yRXJyb3IsIF9pdGVyYXRvckVycm9yLCBfaXRlcmF0b3IsIF9zdGVwLCBrO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yID0gX2dldEl0ZXJhdG9yKF9PYmplY3Qka2V5cyhvYmopKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSAoX3N0ZXAgPSBfaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBrID0gX3N0ZXAudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIFtrLCBvYmpba11dO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uICYmIF9pdGVyYXRvcltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcImtleXNcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAob2JqKSB7XG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF9PYmplY3Qka2V5cyhvYmopLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJ2YWx1ZXNcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAob2JqKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yLCBfZGlkSXRlcmF0b3JFcnJvcjIsIF9pdGVyYXRvckVycm9yMiwgX2l0ZXJhdG9yMiwgX3N0ZXAyLCBrO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMiA9IF9nZXRJdGVyYXRvcihfT2JqZWN0JGtleXMob2JqKSk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IChfc3RlcDIgPSBfaXRlcmF0b3IyLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgayA9IF9zdGVwMi52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICByZXR1cm4gb2JqW2tdO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiAmJiBfaXRlcmF0b3IyW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0Lypcblx0ICogSW5maW5pdGUgaXRlcmF0b3JzXG5cdCAqL1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImN5Y2xlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBzYXZlZCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMsIF9kaWRJdGVyYXRvckVycm9yMywgX2l0ZXJhdG9yRXJyb3IzLCBfaXRlcmF0b3IzLCBfc3RlcDMsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgc2F2ZWQgPSBbXTtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IzID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IzID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0O1xuXHQgICAgICAgIF9pdGVyYXRvcjMgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IChfc3RlcDMgPSBfaXRlcmF0b3IzLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMy52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBzYXZlZC5wdXNoKHgpO1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIwO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE2O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg0KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjMgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMyA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgJiYgX2l0ZXJhdG9yM1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yM1tcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IzKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjM7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIzKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgaWYgKCFzYXZlZCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoc2F2ZWQsIFwidDFcIiwgMzApO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMzI6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNCwgMTYsIDIwLCAyOF0sIFsyMSwsIDIzLCAyN11dKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcImNvdW50XCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBzdGFydCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDAgOiBhcmd1bWVudHNbMF07XG5cdCAgdmFyIHN0ZXAgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyAxIDogYXJndW1lbnRzWzFdO1xuXHQgIHZhciBuO1xuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBuID0gc3RhcnQ7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDtcblx0ICAgICAgICByZXR1cm4gbjtcblxuXHQgICAgICBjYXNlIDQ6XG5cdCAgICAgICAgbiArPSBzdGVwO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJyZXBlYXRcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAodGhpbmcpIHtcblx0ICB2YXIgdGltZXMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBJbmZpbml0eSA6IGFyZ3VtZW50c1sxXTtcblx0ICB2YXIgaTtcblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaWYgKCEodGltZXMgPT09IEluZmluaXR5KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDtcblx0ICAgICAgICByZXR1cm4gdGhpbmc7XG5cblx0ICAgICAgY2FzZSA0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA4OlxuXHQgICAgICAgIGkgPSAwO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBpZiAoIShpIDwgdGltZXMpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgcmV0dXJuIHRoaW5nO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgaSsrO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0Lypcblx0ICogSXRlcmF0b3JzIHRoYXQgdGVybWluYXRlIG9uY2UgdGhlIGlucHV0IHNlcXVlbmNlIGhhcyBiZWVuIGV4aGF1c3RlZFxuXHQgKi9cblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJjaGFpblwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQsXG5cdCAgICAgIF9kaWRJdGVyYXRvckVycm9yNCxcblx0ICAgICAgX2l0ZXJhdG9yRXJyb3I0LFxuXHQgICAgICBfbGVuNSxcblx0ICAgICAgaXRlcmFibGVzLFxuXHQgICAgICBfa2V5NSxcblx0ICAgICAgX2l0ZXJhdG9yNCxcblx0ICAgICAgX3N0ZXA0LFxuXHQgICAgICBpdCxcblx0ICAgICAgYXJncyQxJDAgPSBhcmd1bWVudHM7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblxuXHQgICAgICAgIGZvciAoX2xlbjUgPSBhcmdzJDEkMC5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW41KSwgX2tleTUgPSAwOyBfa2V5NSA8IF9sZW41OyBfa2V5NSsrKSB7XG5cdCAgICAgICAgICBpdGVyYWJsZXNbX2tleTVdID0gYXJncyQxJDBbX2tleTVdO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIF9pdGVyYXRvcjQgPSBfZ2V0SXRlcmF0b3IoaXRlcmFibGVzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ID0gKF9zdGVwNCA9IF9pdGVyYXRvcjQubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpdCA9IF9zdGVwNC52YWx1ZTtcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChpdCwgXCJ0MFwiLCA5KTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQxID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjQgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNCA9IGNvbnRleHQkMSQwLnQxO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgJiYgX2l0ZXJhdG9yNFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yNFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I0KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjQ7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImNodW5rXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gMiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBpdGVtcywgaW5kZXgsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241LCBfZGlkSXRlcmF0b3JFcnJvcjUsIF9pdGVyYXRvckVycm9yNSwgX2l0ZXJhdG9yNSwgX3N0ZXA1LCBpdGVtO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGl0ZW1zID0gW107XG5cdCAgICAgICAgaW5kZXggPSAwO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjUgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjUgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDU7XG5cdCAgICAgICAgX2l0ZXJhdG9yNSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDc6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ID0gKF9zdGVwNSA9IF9pdGVyYXRvcjUubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpdGVtID0gX3N0ZXA1LnZhbHVlO1xuXG5cdCAgICAgICAgaXRlbXNbaW5kZXgrK10gPSBpdGVtO1xuXG5cdCAgICAgICAgaWYgKCEoaW5kZXggPT09IG4pKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgcmV0dXJuIGl0ZW1zO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgaXRlbXMgPSBbXTtcblx0ICAgICAgICBpbmRleCA9IDA7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDUpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I1ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI1O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNSAmJiBfaXRlcmF0b3I1W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I1W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI3O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjcpO1xuXG5cdCAgICAgIGNhc2UgMzE6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNCk7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgICBpZiAoIWluZGV4KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzU7XG5cdCAgICAgICAgcmV0dXJuIGl0ZW1zO1xuXG5cdCAgICAgIGNhc2UgMzU6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNSwgMjAsIDI0LCAzMl0sIFsyNSwsIDI3LCAzMV1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImNvbmNhdE1hcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiwgX2RpZEl0ZXJhdG9yRXJyb3I2LCBfaXRlcmF0b3JFcnJvcjYsIF9pdGVyYXRvcjYsIF9zdGVwNiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I2ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I2ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjYgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiA9IChfc3RlcDYgPSBfaXRlcmF0b3I2Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDExO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwNi52YWx1ZTtcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChmbih4KSwgXCJ0MFwiLCA4KTtcblxuXHQgICAgICBjYXNlIDg6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjYgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE3O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDEzO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQxID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjYgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNiA9IGNvbnRleHQkMSQwLnQxO1xuXG5cdCAgICAgIGNhc2UgMTc6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE3O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjYgJiYgX2l0ZXJhdG9yNltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yNltcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I2KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjY7XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIwKTtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTcpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTMsIDE3LCAyNV0sIFsxOCwsIDIwLCAyNF1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImRyb3BcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAobikge1xuXHQgIHZhciBpLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNywgX2RpZEl0ZXJhdG9yRXJyb3I3LCBfaXRlcmF0b3JFcnJvcjcsIF9pdGVyYXRvcjcsIF9zdGVwNywgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpID0gMDtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I3ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I3ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0O1xuXHQgICAgICAgIF9pdGVyYXRvcjcgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNyA9IChfc3RlcDcgPSBfaXRlcmF0b3I3Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE2O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwNy52YWx1ZTtcblxuXHQgICAgICAgIGlmICghKGkrKyA8IG4pKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiY29udGludWVcIiwgMTMpO1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDE2KTtcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNCk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I3ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjcgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ICYmIF9pdGVyYXRvcjdbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjdbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjU7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yNykge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I3O1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNSk7XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKHRoaXMsIFwidDFcIiwgMzEpO1xuXG5cdCAgICAgIGNhc2UgMzE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNCwgMTgsIDIyLCAzMF0sIFsyMywsIDI1LCAyOV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImRyb3BXaGlsZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244LCBfZGlkSXRlcmF0b3JFcnJvcjgsIF9pdGVyYXRvckVycm9yOCwgX2l0ZXJhdG9yOCwgX3N0ZXA4LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjggPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjggPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yOCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244ID0gKF9zdGVwOCA9IF9pdGVyYXRvcjgubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA4LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCFmbih4KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiY29udGludWVcIiwgMTIpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTUpO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTc6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE3O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjggPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOCA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggJiYgX2l0ZXJhdG9yOFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yOFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNDtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I4KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjc7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjg7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI0KTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQodGhpcywgXCJ0MVwiLCAzMCk7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNywgMjEsIDI5XSwgWzIyLCwgMjQsIDI4XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZW51bWVyYXRlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChfemlwKFt0aGlzLCB3dS5jb3VudCgpXSksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImZpbHRlclwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb245LCBfZGlkSXRlcmF0b3JFcnJvcjksIF9pdGVyYXRvckVycm9yOSwgX2l0ZXJhdG9yOSwgX3N0ZXA5LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb245ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjkgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjkgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yOSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb245ID0gKF9zdGVwOSA9IF9pdGVyYXRvcjkubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA5LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCFmbih4KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE1O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjkgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOSA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTk6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgJiYgX2l0ZXJhdG9yOVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yOVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I5KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTkpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTUsIDE5LCAyN10sIFsyMCwsIDIyLCAyNl1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImZsYXR0ZW5cIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHNoYWxsb3cgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTAsIF9kaWRJdGVyYXRvckVycm9yMTAsIF9pdGVyYXRvckVycm9yMTAsIF9pdGVyYXRvcjEwLCBfc3RlcDEwLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTAgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTAgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTAgPSAoX3N0ZXAxMCA9IF9pdGVyYXRvcjEwLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE2O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTAudmFsdWU7XG5cblx0ICAgICAgICBpZiAoISh0eXBlb2YgeCAhPT0gXCJzdHJpbmdcIiAmJiBpc0l0ZXJhYmxlKHgpKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDExO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoc2hhbGxvdyA/IHggOiB3dSh4KS5mbGF0dGVuKCksIFwidDBcIiwgOSk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjI7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTAgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTAgPSBjb250ZXh0JDEkMC50MTtcblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCAmJiBfaXRlcmF0b3IxMFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTBbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjU7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTApIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTA7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI1KTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTgsIDIyLCAzMF0sIFsyMywsIDI1LCAyOV1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImludm9rZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChuYW1lKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMSxcblx0ICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMSxcblx0ICAgICAgX2l0ZXJhdG9yRXJyb3IxMSxcblx0ICAgICAgX2xlbjYsXG5cdCAgICAgIGFyZ3MsXG5cdCAgICAgIF9rZXk2LFxuXHQgICAgICBfaXRlcmF0b3IxMSxcblx0ICAgICAgX3N0ZXAxMSxcblx0ICAgICAgeCxcblx0ICAgICAgYXJncyQxJDAgPSBhcmd1bWVudHM7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjExID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblxuXHQgICAgICAgIGZvciAoX2xlbjYgPSBhcmdzJDEkMC5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuNiA+IDEgPyBfbGVuNiAtIDEgOiAwKSwgX2tleTYgPSAxOyBfa2V5NiA8IF9sZW42OyBfa2V5NisrKSB7XG5cdCAgICAgICAgICBhcmdzW19rZXk2IC0gMV0gPSBhcmdzJDEkMFtfa2V5Nl07XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX2l0ZXJhdG9yMTEgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgPSAoX3N0ZXAxMSA9IF9pdGVyYXRvcjExLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTEudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgIHJldHVybiB4W25hbWVdLmFwcGx5KHgsIGFyZ3MpO1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxOTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNTtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMSA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTk6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExICYmIF9pdGVyYXRvcjExW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxMVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxMSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOSk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNSwgMTksIDI3XSwgWzIwLCwgMjIsIDI2XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwibWFwXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiwgX2RpZEl0ZXJhdG9yRXJyb3IxMiwgX2l0ZXJhdG9yRXJyb3IxMiwgX2l0ZXJhdG9yMTIsIF9zdGVwMTIsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEyID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IxMiA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiA9IChfc3RlcDEyID0gX2l0ZXJhdG9yMTIubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxMi52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICByZXR1cm4gZm4oeCk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTIgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTIgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiAmJiBfaXRlcmF0b3IxMltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTJbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTIpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTI7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInBsdWNrXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG5hbWUpIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEzLCBfZGlkSXRlcmF0b3JFcnJvcjEzLCBfaXRlcmF0b3JFcnJvcjEzLCBfaXRlcmF0b3IxMywgX3N0ZXAxMywgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTMgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEzID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjEzID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEzID0gKF9zdGVwMTMgPSBfaXRlcmF0b3IxMy5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDEzLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiB4W25hbWVdO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEzID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEzID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgJiYgX2l0ZXJhdG9yMTNbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjEzW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjEzKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjEzO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE4KTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE0LCAxOCwgMjZdLCBbMTksLCAyMSwgMjVdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJyZWR1Y3Rpb25zXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgdmFyIGluaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgdmFsLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQsIF9kaWRJdGVyYXRvckVycm9yMTQsIF9pdGVyYXRvckVycm9yMTQsIF9pdGVyYXRvcjE0LCBfc3RlcDE0LCB4LCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUsIF9kaWRJdGVyYXRvckVycm9yMTUsIF9pdGVyYXRvckVycm9yMTUsIF9pdGVyYXRvcjE1LCBfc3RlcDE1O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHZhbCA9IGluaXRpYWw7XG5cblx0ICAgICAgICBpZiAoISh2YWwgPT09IHVuZGVmaW5lZCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTQgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDU7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTQgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA3OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQgPSAoX3N0ZXAxNCA9IF9pdGVyYXRvcjE0Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTQudmFsdWU7XG5cblx0ICAgICAgICB2YWwgPSB4O1xuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNCk7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA3O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIwO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE2O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg1KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE0ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE0ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQgJiYgX2l0ZXJhdG9yMTRbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE0W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE0KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE0O1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMyk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIwKTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzMDtcblx0ICAgICAgICByZXR1cm4gdmFsO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE1ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMzM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTUgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSAzNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ID0gKF9zdGVwMTUgPSBfaXRlcmF0b3IxNS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0Mjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDE1LnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzOTtcblx0ICAgICAgICByZXR1cm4gdmFsID0gZm4odmFsLCB4KTtcblxuXHQgICAgICBjYXNlIDM5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDM1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNDI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQ4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNDQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQxID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNSA9IGNvbnRleHQkMSQwLnQxO1xuXG5cdCAgICAgIGNhc2UgNDg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0OTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ICYmIF9pdGVyYXRvcjE1W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxNVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDUxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA1MTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxNSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxNTtcblxuXHQgICAgICBjYXNlIDU0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goNTEpO1xuXG5cdCAgICAgIGNhc2UgNTU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCg0OCk7XG5cblx0ICAgICAgY2FzZSA1Njpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIsIHZhbCk7XG5cblx0ICAgICAgY2FzZSA1Nzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s1LCAxNiwgMjAsIDI4XSwgWzIxLCwgMjMsIDI3XSwgWzMzLCA0NCwgNDgsIDU2XSwgWzQ5LCwgNTEsIDU1XV0pO1xuXHR9KSwgMik7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwicmVqZWN0XCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE2LCBfZGlkSXRlcmF0b3JFcnJvcjE2LCBfaXRlcmF0b3JFcnJvcjE2LCBfaXRlcmF0b3IxNiwgX3N0ZXAxNiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTYgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE2ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjE2ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE2ID0gKF9zdGVwMTYgPSBfaXRlcmF0b3IxNi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDE2LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKGZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE1O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE2ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE2ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgJiYgX2l0ZXJhdG9yMTZbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE2W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE2KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE2O1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE5KTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE1LCAxOSwgMjddLCBbMjAsLCAyMiwgMjZdXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJzbGljZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc3RhcnQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAwIDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBzdG9wID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gSW5maW5pdHkgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE3LCBfZGlkSXRlcmF0b3JFcnJvcjE3LCBfaXRlcmF0b3JFcnJvcjE3LCBfaXRlcmF0b3IxNywgX3N0ZXAxNywgX3N0ZXAxNyR2YWx1ZSwgeCwgaTtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpZiAoIShzdG9wIDwgc3RhcnQpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwicGFyYW1ldGVyIGBzdG9wYCAoPSBcIiArIHN0b3AgKyBcIikgbXVzdCBiZSA+PSBgc3RhcnRgICg9IFwiICsgc3RhcnQgKyBcIilcIik7XG5cblx0ICAgICAgY2FzZSAyOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNyA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDU7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTcgPSBfZ2V0SXRlcmF0b3IodGhpcy5lbnVtZXJhdGUoKSk7XG5cblx0ICAgICAgY2FzZSA3OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgPSAoX3N0ZXAxNyA9IF9pdGVyYXRvcjE3Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX3N0ZXAxNyR2YWx1ZSA9IF9zbGljZWRUb0FycmF5KF9zdGVwMTcudmFsdWUsIDIpO1xuXHQgICAgICAgIHggPSBfc3RlcDE3JHZhbHVlWzBdO1xuXHQgICAgICAgIGkgPSBfc3RlcDE3JHZhbHVlWzFdO1xuXG5cdCAgICAgICAgaWYgKCEoaSA8IHN0YXJ0KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImNvbnRpbnVlXCIsIDE3KTtcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGlmICghKGkgPj0gc3RvcCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAyMCk7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTc7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA3O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg1KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE3ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE3ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjY7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI3O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgJiYgX2l0ZXJhdG9yMTdbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE3W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI5O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE3KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE3O1xuXG5cdCAgICAgIGNhc2UgMzI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyOSk7XG5cblx0ICAgICAgY2FzZSAzMzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI2KTtcblxuXHQgICAgICBjYXNlIDM0OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzUsIDIyLCAyNiwgMzRdLCBbMjcsLCAyOSwgMzNdXSk7XG5cdH0pLCAyKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJzcHJlYWRNYXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4LCBfZGlkSXRlcmF0b3JFcnJvcjE4LCBfaXRlcmF0b3JFcnJvcjE4LCBfaXRlcmF0b3IxOCwgX3N0ZXAxOCwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTggPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE4ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjE4ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4ID0gKF9zdGVwMTggPSBfaXRlcmF0b3IxOC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDE4LnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiBmbi5hcHBseSh1bmRlZmluZWQsIF90b0NvbnN1bWFibGVBcnJheSh4KSk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTggPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTggPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCAmJiBfaXRlcmF0b3IxOFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMThbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTg7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInRha2VcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAobikge1xuXHQgIHZhciBpLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTksIF9kaWRJdGVyYXRvckVycm9yMTksIF9pdGVyYXRvckVycm9yMTksIF9pdGVyYXRvcjE5LCBfc3RlcDE5LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGlmICghKG4gPCAxKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIpO1xuXG5cdCAgICAgIGNhc2UgMjpcblx0ICAgICAgICBpID0gMDtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTkgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTkgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE5ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA2O1xuXHQgICAgICAgIF9pdGVyYXRvcjE5ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgODpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ID0gKF9zdGVwMTkgPSBfaXRlcmF0b3IxOS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDE5LnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGlmICghKCsraSA+PSBuKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDE3KTtcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDYpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTkgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTkgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjQ7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSAmJiBfaXRlcmF0b3IxOVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTlbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjY7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyOTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTk7XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI2KTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjMpO1xuXG5cdCAgICAgIGNhc2UgMzE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNiwgMTksIDIzLCAzMV0sIFsyNCwsIDI2LCAzMF1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInRha2VXaGlsZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCwgX2RpZEl0ZXJhdG9yRXJyb3IyMCwgX2l0ZXJhdG9yRXJyb3IyMCwgX2l0ZXJhdG9yMjAsIF9zdGVwMjAsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIwID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IyMCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCA9IChfc3RlcDIwID0gX2l0ZXJhdG9yMjAubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAyMC52YWx1ZTtcblxuXHQgICAgICAgIGlmIChmbih4KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTQpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIwO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE2O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIwID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIwID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAgJiYgX2l0ZXJhdG9yMjBbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjIwW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIwKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIwO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMyk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIwKTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE2LCAyMCwgMjhdLCBbMjEsLCAyMywgMjddXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJ0YXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gY29uc29sZS5sb2cuYmluZChjb25zb2xlKSA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjEsIF9kaWRJdGVyYXRvckVycm9yMjEsIF9pdGVyYXRvckVycm9yMjEsIF9pdGVyYXRvcjIxLCBfc3RlcDIxLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjEgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjEgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjEgPSAoX3N0ZXAyMSA9IF9pdGVyYXRvcjIxLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMjEudmFsdWU7XG5cblx0ICAgICAgICBmbih4KTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjEgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE1O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIxID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIxID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjEgJiYgX2l0ZXJhdG9yMjFbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjIxW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIxKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIxO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE5KTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE1LCAxOSwgMjddLCBbMjAsLCAyMiwgMjZdXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJ1bmlxdWVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHNlZW4sIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiwgX2RpZEl0ZXJhdG9yRXJyb3IyMiwgX2l0ZXJhdG9yRXJyb3IyMiwgX2l0ZXJhdG9yMjIsIF9zdGVwMjIsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgc2VlbiA9IG5ldyBfU2V0KCk7XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIyID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDtcblx0ICAgICAgICBfaXRlcmF0b3IyMiA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiA9IChfc3RlcDIyID0gX2l0ZXJhdG9yMjIubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAyMi52YWx1ZTtcblxuXHQgICAgICAgIGlmIChzZWVuLmhhcyh4KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDExO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgc2Vlbi5hZGQoeCk7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTc6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE3O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg0KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIyID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIyID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIgJiYgX2l0ZXJhdG9yMjJbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjIyW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI0O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIyKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjc7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIyO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNCk7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHNlZW4uY2xlYXIoKTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzQsIDE3LCAyMSwgMjldLCBbMjIsLCAyNCwgMjhdXSk7XG5cdH0pKTtcblxuXHR2YXIgX3ppcCA9IHJld3JhcChfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChpdGVyYWJsZXMpIHtcblx0ICB2YXIgbG9uZ2VzdCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogYXJndW1lbnRzWzFdO1xuXG5cdCAgdmFyIGl0ZXJzLCBudW1JdGVycywgbnVtRmluaXNoZWQsIGZpbmlzaGVkLCB6aXBwZWQsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMywgX2RpZEl0ZXJhdG9yRXJyb3IyMywgX2l0ZXJhdG9yRXJyb3IyMywgX2l0ZXJhdG9yMjMsIF9zdGVwMjMsIGl0LCBfaXQkbmV4dCwgdmFsdWUsIGRvbmU7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaWYgKGl0ZXJhYmxlcy5sZW5ndGgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcInJldHVyblwiKTtcblxuXHQgICAgICBjYXNlIDI6XG5cdCAgICAgICAgaXRlcnMgPSBpdGVyYWJsZXMubWFwKGdldEl0ZXJhdG9yKTtcblx0ICAgICAgICBudW1JdGVycyA9IGl0ZXJhYmxlcy5sZW5ndGg7XG5cdCAgICAgICAgbnVtRmluaXNoZWQgPSAwO1xuXHQgICAgICAgIGZpbmlzaGVkID0gZmFsc2U7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChmaW5pc2hlZCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQ0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgemlwcGVkID0gW107XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIzID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTE7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjMgPSBfZ2V0SXRlcmF0b3IoaXRlcnMpO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMyA9IChfc3RlcDIzID0gX2l0ZXJhdG9yMjMubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpdCA9IF9zdGVwMjMudmFsdWU7XG5cdCAgICAgICAgX2l0JG5leHQgPSBpdC5uZXh0KCk7XG5cdCAgICAgICAgdmFsdWUgPSBfaXQkbmV4dC52YWx1ZTtcblx0ICAgICAgICBkb25lID0gX2l0JG5leHQuZG9uZTtcblxuXHQgICAgICAgIGlmICghZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKGxvbmdlc3QpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBpZiAoKytudW1GaW5pc2hlZCA9PSBudW1JdGVycykge1xuXHQgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAvLyBMZWF2ZSBhIGhvbGUgaW4gdGhlIGFycmF5IHNvIHRoYXQgeW91IGNhbiBkaXN0aW5ndWlzaCBhbiBpdGVyYWJsZVxuXHQgICAgICAgICAgLy8gdGhhdCdzIGRvbmUgKHZpYSBgaW5kZXggaW4gYXJyYXkgPT0gZmFsc2VgKSBmcm9tIGFuIGl0ZXJhYmxlXG5cdCAgICAgICAgICAvLyB5aWVsZGluZyBgdW5kZWZpbmVkYC5cblx0ICAgICAgICAgIHppcHBlZC5sZW5ndGgrKztcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgemlwcGVkLnB1c2godmFsdWUpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMyO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgxMSk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMyA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMyA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMzI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDMyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzMztcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzICYmIF9pdGVyYXRvcjIzW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyM1tcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDM1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzNTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IyMykge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDM4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyMztcblxuXHQgICAgICBjYXNlIDM4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMzUpO1xuXG5cdCAgICAgIGNhc2UgMzk6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgzMik7XG5cblx0ICAgICAgY2FzZSA0MDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDI7XG5cdCAgICAgICAgcmV0dXJuIHppcHBlZDtcblxuXHQgICAgICBjYXNlIDQyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNDQ6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMTEsIDI4LCAzMiwgNDBdLCBbMzMsLCAzNSwgMzldXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJ6aXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgZm9yICh2YXIgX2xlbjcgPSBhcmd1bWVudHMubGVuZ3RoLCBpdGVyYWJsZXMgPSBBcnJheShfbGVuNyksIF9rZXk3ID0gMDsgX2tleTcgPCBfbGVuNzsgX2tleTcrKykge1xuXHQgICAgaXRlcmFibGVzW19rZXk3XSA9IGFyZ3VtZW50c1tfa2V5N107XG5cdCAgfVxuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF96aXAoaXRlcmFibGVzKSwgXCJ0MFwiLCAxKTtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiemlwTG9uZ2VzdFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICBmb3IgKHZhciBfbGVuOCA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW44KSwgX2tleTggPSAwOyBfa2V5OCA8IF9sZW44OyBfa2V5OCsrKSB7XG5cdCAgICBpdGVyYWJsZXNbX2tleThdID0gYXJndW1lbnRzW19rZXk4XTtcblx0ICB9XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX3ppcChpdGVyYWJsZXMsIHRydWUpLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJ6aXBXaXRoXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgZm9yICh2YXIgX2xlbjkgPSBhcmd1bWVudHMubGVuZ3RoLCBpdGVyYWJsZXMgPSBBcnJheShfbGVuOSA+IDEgPyBfbGVuOSAtIDEgOiAwKSwgX2tleTkgPSAxOyBfa2V5OSA8IF9sZW45OyBfa2V5OSsrKSB7XG5cdCAgICBpdGVyYWJsZXNbX2tleTkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5OV07XG5cdCAgfVxuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF96aXAoaXRlcmFibGVzKS5zcHJlYWRNYXAoZm4pLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHQvKlxuXHQgKiBGdW5jdGlvbnMgdGhhdCBmb3JjZSBpdGVyYXRpb24gdG8gY29tcGxldGlvbiBhbmQgcmV0dXJuIGEgdmFsdWUuXG5cdCAqL1xuXG5cdC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgd2Ugd2lsbCBibG9jayB0aGUgbWFpbiB0aHJlYWQgYXQgYSB0aW1lXG5cdC8vIHdoaWxlIGluIGBhc3luY0VhY2hgLlxuXHR3dS5NQVhfQkxPQ0sgPSAxNTtcblx0Ly8gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8geWllbGQgdG8gdGhlIG1haW4gdGhyZWFkIGJldHdlZW4gYnVyc3RzIG9mXG5cdC8vIHdvcmsuXG5cdHd1LlRJTUVPVVQgPSAxO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcImFzeW5jRWFjaFwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgbWF4QmxvY2sgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB3dS5NQVhfQkxPQ0sgOiBhcmd1bWVudHNbMV07XG5cdCAgdmFyIHRpbWVvdXQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyB3dS5USU1FT1VUIDogYXJndW1lbnRzWzJdO1xuXG5cdCAgdmFyIGl0ZXIgPSBnZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgIHJldHVybiBuZXcgX1Byb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXHQgICAgKGZ1bmN0aW9uIGxvb3AoKSB7XG5cdCAgICAgIHZhciBzdGFydCA9IERhdGUubm93KCk7XG5cblx0ICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCA9IHRydWU7XG5cdCAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI0ID0gZmFsc2U7XG5cdCAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjI0ID0gdW5kZWZpbmVkO1xuXG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjQgPSBfZ2V0SXRlcmF0b3IoaXRlciksIF9zdGVwMjQ7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI0ID0gKF9zdGVwMjQgPSBfaXRlcmF0b3IyNC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgPSB0cnVlKSB7XG5cdCAgICAgICAgICB2YXIgeCA9IF9zdGVwMjQudmFsdWU7XG5cblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIGZuKHgpO1xuXHQgICAgICAgICAgfSBjYXRjaCAoZSkge1xuXHQgICAgICAgICAgICByZWplY3QoZSk7XG5cdCAgICAgICAgICAgIHJldHVybjtcblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgaWYgKERhdGUubm93KCkgLSBzdGFydCA+IG1heEJsb2NrKSB7XG5cdCAgICAgICAgICAgIHNldFRpbWVvdXQobG9vcCwgdGltZW91dCk7XG5cdCAgICAgICAgICAgIHJldHVybjtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjQgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjQgPSBlcnI7XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI0ICYmIF9pdGVyYXRvcjI0W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICAgIF9pdGVyYXRvcjI0W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI0KSB7XG5cdCAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjQ7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgcmVzb2x2ZSgpO1xuXHQgICAgfSkoKTtcblx0ICB9KTtcblx0fSwgMyk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiZXZlcnlcIiwgZnVuY3Rpb24gKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSA9IHRydWU7XG5cdCAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjUgPSBmYWxzZTtcblx0ICB2YXIgX2l0ZXJhdG9yRXJyb3IyNSA9IHVuZGVmaW5lZDtcblxuXHQgIHRyeSB7XG5cdCAgICBmb3IgKHZhciBfaXRlcmF0b3IyNSA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyNTsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjUgPSAoX3N0ZXAyNSA9IF9pdGVyYXRvcjI1Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSA9IHRydWUpIHtcblx0ICAgICAgdmFyIHggPSBfc3RlcDI1LnZhbHVlO1xuXG5cdCAgICAgIGlmICghZm4oeCkpIHtcblx0ICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMjUgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IyNSA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjUgJiYgX2l0ZXJhdG9yMjVbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IyNVtcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyNSkge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICByZXR1cm4gdHJ1ZTtcblx0fSwgMSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiZmluZFwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNiA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI2ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI2ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI2OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNiA9IChfc3RlcDI2ID0gX2l0ZXJhdG9yMjYubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjYudmFsdWU7XG5cblx0ICAgICAgaWYgKGZuKHgpKSB7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMjYgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IyNiA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgJiYgX2l0ZXJhdG9yMjZbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IyNltcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyNikge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjY7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH0pO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcImZvckVhY2hcIiwgZnVuY3Rpb24gKGZuKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyA9IHRydWU7XG5cdCAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjcgPSBmYWxzZTtcblx0ICB2YXIgX2l0ZXJhdG9yRXJyb3IyNyA9IHVuZGVmaW5lZDtcblxuXHQgIHRyeSB7XG5cdCAgICBmb3IgKHZhciBfaXRlcmF0b3IyNyA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyNzsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjcgPSAoX3N0ZXAyNyA9IF9pdGVyYXRvcjI3Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyA9IHRydWUpIHtcblx0ICAgICAgdmFyIHggPSBfc3RlcDI3LnZhbHVlO1xuXG5cdCAgICAgIGZuKHgpO1xuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNyA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjI3ID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyAmJiBfaXRlcmF0b3IyN1tcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjI3W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI3KSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNztcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiaGFzXCIsIGZ1bmN0aW9uICh0aGluZykge1xuXHQgIHJldHVybiB0aGlzLnNvbWUoZnVuY3Rpb24gKHgpIHtcblx0ICAgIHJldHVybiB4ID09PSB0aGluZztcblx0ICB9KTtcblx0fSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwicmVkdWNlXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBpbml0aWFsID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuXG5cdCAgdmFyIHZhbCA9IGluaXRpYWw7XG5cdCAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI4ID0gdHJ1ZTtcblx0ICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI4ID0gZmFsc2U7XG5cdCAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyOCA9IHVuZGVmaW5lZDtcblxuXHQgICAgdHJ5IHtcblx0ICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjggPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMjg7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI4ID0gKF9zdGVwMjggPSBfaXRlcmF0b3IyOC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggPSB0cnVlKSB7XG5cdCAgICAgICAgdmFyIHggPSBfc3RlcDI4LnZhbHVlO1xuXG5cdCAgICAgICAgdmFsID0geDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgfVxuXHQgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgIF9kaWRJdGVyYXRvckVycm9yMjggPSB0cnVlO1xuXHQgICAgICBfaXRlcmF0b3JFcnJvcjI4ID0gZXJyO1xuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOCAmJiBfaXRlcmF0b3IyOFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjhbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjgpIHtcblx0ICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjg7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOSA9IHRydWU7XG5cdCAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjkgPSBmYWxzZTtcblx0ICB2YXIgX2l0ZXJhdG9yRXJyb3IyOSA9IHVuZGVmaW5lZDtcblxuXHQgIHRyeSB7XG5cdCAgICBmb3IgKHZhciBfaXRlcmF0b3IyOSA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyOTsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkgPSAoX3N0ZXAyOSA9IF9pdGVyYXRvcjI5Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOSA9IHRydWUpIHtcblx0ICAgICAgdmFyIHggPSBfc3RlcDI5LnZhbHVlO1xuXG5cdCAgICAgIHZhbCA9IGZuKHZhbCwgeCk7XG5cdCAgICB9XG5cdCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICBfZGlkSXRlcmF0b3JFcnJvcjI5ID0gdHJ1ZTtcblx0ICAgIF9pdGVyYXRvckVycm9yMjkgPSBlcnI7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ICYmIF9pdGVyYXRvcjI5W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjlbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfVxuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjkpIHtcblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI5O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgcmV0dXJuIHZhbDtcblx0fSwgMik7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwic29tZVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzMCA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjMwID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjMwID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDMwOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMCA9IChfc3RlcDMwID0gX2l0ZXJhdG9yMzAubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMzAudmFsdWU7XG5cblx0ICAgICAgaWYgKGZuKHgpKSB7XG5cdCAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMzAgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IzMCA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgJiYgX2l0ZXJhdG9yMzBbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IzMFtcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IzMCkge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMzA7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICByZXR1cm4gZmFsc2U7XG5cdH0sIDEpO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInRvQXJyYXlcIiwgZnVuY3Rpb24gKCkge1xuXHQgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHRoaXMpKTtcblx0fSk7XG5cblx0Lypcblx0ICogTWV0aG9kcyB0aGF0IHJldHVybiBhbiBhcnJheSBvZiBpdGVyYWJsZXMuXG5cdCAqL1xuXG5cdHZhciBNQVhfQ0FDSEUgPSA1MDA7XG5cblx0dmFyIF90ZWUgPSByZXdyYXAoX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoaXRlcmF0b3IsIGNhY2hlKSB7XG5cdCAgdmFyIGl0ZW1zLCBpbmRleCwgX2l0ZXJhdG9yJG5leHQsIGRvbmUsIHZhbHVlO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGl0ZW1zID0gY2FjaGUuaXRlbXM7XG5cdCAgICAgICAgaW5kZXggPSAwO1xuXG5cdCAgICAgIGNhc2UgMjpcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGlmICghKGluZGV4ID09PSBpdGVtcy5sZW5ndGgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfaXRlcmF0b3IkbmV4dCA9IGl0ZXJhdG9yLm5leHQoKTtcblx0ICAgICAgICBkb25lID0gX2l0ZXJhdG9yJG5leHQuZG9uZTtcblx0ICAgICAgICB2YWx1ZSA9IF9pdGVyYXRvciRuZXh0LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCFkb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAoY2FjaGUucmV0dXJuZWQgPT09IE1JU1NJTkcpIHtcblx0ICAgICAgICAgIGNhY2hlLnJldHVybmVkID0gdmFsdWU7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAyNSk7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgcmV0dXJuIGl0ZW1zW2luZGV4KytdID0gdmFsdWU7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBpZiAoIShpbmRleCA9PT0gY2FjaGUudGFpbCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHZhbHVlID0gaXRlbXNbaW5kZXhdO1xuXG5cdCAgICAgICAgaWYgKGluZGV4ID09PSBNQVhfQ0FDSEUpIHtcblx0ICAgICAgICAgIGl0ZW1zID0gY2FjaGUuaXRlbXMgPSBpdGVtcy5zbGljZShpbmRleCk7XG5cdCAgICAgICAgICBpbmRleCA9IDA7XG5cdCAgICAgICAgICBjYWNoZS50YWlsID0gMDtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgaXRlbXNbaW5kZXhdID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgY2FjaGUudGFpbCA9ICsraW5kZXg7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxOTtcblx0ICAgICAgICByZXR1cm4gdmFsdWU7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgcmV0dXJuIGl0ZW1zW2luZGV4KytdO1xuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyNTpcblxuXHQgICAgICAgIGlmIChjYWNoZS50YWlsID09PSBpbmRleCkge1xuXHQgICAgICAgICAgaXRlbXMubGVuZ3RoID0gMDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIsIGNhY2hlLnJldHVybmVkKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXHRfdGVlLnByb3RvdHlwZSA9IFd1LnByb3RvdHlwZTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJ0ZWVcIiwgZnVuY3Rpb24gKCkge1xuXHQgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gMiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBpdGVyYWJsZXMgPSBuZXcgQXJyYXkobik7XG5cdCAgdmFyIGNhY2hlID0geyB0YWlsOiAwLCBpdGVtczogW10sIHJldHVybmVkOiBNSVNTSU5HIH07XG5cblx0ICB3aGlsZSAobi0tKSB7XG5cdCAgICBpdGVyYWJsZXNbbl0gPSBfdGVlKHRoaXMsIGNhY2hlKTtcblx0ICB9XG5cblx0ICByZXR1cm4gaXRlcmFibGVzO1xuXHR9LCAxKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJ1bnppcFwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAyIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgcmV0dXJuIHRoaXMudGVlKG4pLm1hcChmdW5jdGlvbiAoaXRlciwgaSkge1xuXHQgICAgcmV0dXJuIGl0ZXIucGx1Y2soaSk7XG5cdCAgfSk7XG5cdH0sIDEpO1xuXG5cdC8qXG5cdCAqIE51bWJlciBvZiBjaGFtYmVycy5cblx0ICovXG5cblx0d3UudGFuZyA9IHsgY2xhbjogMzYgfTtcblxuXHQvLyBXZSBkb24ndCBoYXZlIGEgY2FjaGVkIGl0ZW0gZm9yIHRoaXMgaW5kZXgsIHdlIG5lZWQgdG8gZm9yY2UgaXRzXG5cdC8vIGV2YWx1YXRpb24uXG5cblx0Ly8gSWYgd2UgYXJlIHRoZSBsYXN0IGl0ZXJhdG9yIHRvIHVzZSBhIGNhY2hlZCB2YWx1ZSwgY2xlYW4gdXAgYWZ0ZXJcblx0Ly8gb3Vyc2VsdmVzLlxuXG5cdC8vIFdlIGhhdmUgYW4gaXRlbSBpbiB0aGUgY2FjaGUgZm9yIHRoaXMgaW5kZXgsIHNvIHlpZWxkIGl0LlxuXG4vKioqLyB9LFxuLyogMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9BcnJheSRmcm9tID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKVtcImRlZmF1bHRcIl07XG5cblx0ZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBmdW5jdGlvbiAoYXJyKSB7XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuXHQgICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgYXJyMltpXSA9IGFycltpXTtcblxuXHQgICAgcmV0dXJuIGFycjI7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBfQXJyYXkkZnJvbShhcnIpO1xuXHQgIH1cblx0fTtcblxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG4vKioqLyB9LFxuLyogMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5BcnJheS5mcm9tO1xuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJGF0ICA9IF9fd2VicGFja19yZXF1aXJlX18oNSkodHJ1ZSk7XG5cblx0Ly8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uKGl0ZXJhdGVkKXtcblx0ICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG5cdCAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcblx0Ly8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxuXHR9LCBmdW5jdGlvbigpe1xuXHQgIHZhciBPICAgICA9IHRoaXMuX3Rcblx0ICAgICwgaW5kZXggPSB0aGlzLl9pXG5cdCAgICAsIHBvaW50O1xuXHQgIGlmKGluZGV4ID49IE8ubGVuZ3RoKXJldHVybiB7dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZX07XG5cdCAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuXHQgIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuXHQgIHJldHVybiB7dmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZX07XG5cdH0pO1xuXG4vKioqLyB9LFxuLyogNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG5cdC8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxuXHR2YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KVxuXHQgICwgZGVmaW5lZCAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihUT19TVFJJTkcpe1xuXHQgIHJldHVybiBmdW5jdGlvbih0aGF0LCBwb3Mpe1xuXHQgICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSlcblx0ICAgICAgLCBpID0gdG9JbnRlZ2VyKHBvcylcblx0ICAgICAgLCBsID0gcy5sZW5ndGhcblx0ICAgICAgLCBhLCBiO1xuXHQgICAgaWYoaSA8IDAgfHwgaSA+PSBsKXJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcblx0ICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG5cdCAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsXG5cdCAgICAgIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuXHQgICAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG5cdCAgICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIDcuMS40IFRvSW50ZWdlclxuXHR2YXIgY2VpbCAgPSBNYXRoLmNlaWxcblx0ICAsIGZsb29yID0gTWF0aC5mbG9vcjtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICBpZihpdCA9PSB1bmRlZmluZWQpdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIExJQlJBUlkgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oOSlcblx0ICAsICRkZWYgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgLCAkcmVkZWYgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKVxuXHQgICwgaGlkZSAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNClcblx0ICAsIGhhcyAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpXG5cdCAgLCBTWU1CT0xfSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKVxuXHQgICwgSXRlcmF0b3JzICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMylcblx0ICAsIEJVR0dZICAgICAgICAgICA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKSAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG5cdCAgLCBGRl9JVEVSQVRPUiAgICAgPSAnQEBpdGVyYXRvcidcblx0ICAsIEtFWVMgICAgICAgICAgICA9ICdrZXlzJ1xuXHQgICwgVkFMVUVTICAgICAgICAgID0gJ3ZhbHVlcyc7XG5cdHZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH07XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0Upe1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMjQpKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcblx0ICB2YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24oa2luZCl7XG5cdCAgICBzd2l0Y2goa2luZCl7XG5cdCAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcblx0ICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcblx0ICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcblx0ICB9O1xuXHQgIHZhciBUQUcgICAgICA9IE5BTUUgKyAnIEl0ZXJhdG9yJ1xuXHQgICAgLCBwcm90byAgICA9IEJhc2UucHJvdG90eXBlXG5cdCAgICAsIF9uYXRpdmUgID0gcHJvdG9bU1lNQk9MX0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXVxuXHQgICAgLCBfZGVmYXVsdCA9IF9uYXRpdmUgfHwgY3JlYXRlTWV0aG9kKERFRkFVTFQpXG5cdCAgICAsIG1ldGhvZHMsIGtleTtcblx0ICAvLyBGaXggbmF0aXZlXG5cdCAgaWYoX25hdGl2ZSl7XG5cdCAgICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KS5nZXRQcm90byhfZGVmYXVsdC5jYWxsKG5ldyBCYXNlKSk7XG5cdCAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KShJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcblx0ICAgIC8vIEZGIGZpeFxuXHQgICAgaWYoIUxJQlJBUlkgJiYgaGFzKHByb3RvLCBGRl9JVEVSQVRPUikpaGlkZShJdGVyYXRvclByb3RvdHlwZSwgU1lNQk9MX0lURVJBVE9SLCByZXR1cm5UaGlzKTtcblx0ICB9XG5cdCAgLy8gRGVmaW5lIGl0ZXJhdG9yXG5cdCAgaWYoIUxJQlJBUlkgfHwgRk9SQ0UpaGlkZShwcm90bywgU1lNQk9MX0lURVJBVE9SLCBfZGVmYXVsdCk7XG5cdCAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuXHQgIEl0ZXJhdG9yc1tOQU1FXSA9IF9kZWZhdWx0O1xuXHQgIEl0ZXJhdG9yc1tUQUddICA9IHJldHVyblRoaXM7XG5cdCAgaWYoREVGQVVMVCl7XG5cdCAgICBtZXRob2RzID0ge1xuXHQgICAgICBrZXlzOiAgICBJU19TRVQgICAgICAgICAgICA/IF9kZWZhdWx0IDogY3JlYXRlTWV0aG9kKEtFWVMpLFxuXHQgICAgICB2YWx1ZXM6ICBERUZBVUxUID09IFZBTFVFUyA/IF9kZWZhdWx0IDogY3JlYXRlTWV0aG9kKFZBTFVFUyksXG5cdCAgICAgIGVudHJpZXM6IERFRkFVTFQgIT0gVkFMVUVTID8gX2RlZmF1bHQgOiBjcmVhdGVNZXRob2QoJ2VudHJpZXMnKVxuXHQgICAgfTtcblx0ICAgIGlmKEZPUkNFKWZvcihrZXkgaW4gbWV0aG9kcyl7XG5cdCAgICAgIGlmKCEoa2V5IGluIHByb3RvKSkkcmVkZWYocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcblx0ICAgIH0gZWxzZSAkZGVmKCRkZWYuUCArICRkZWYuRiAqIEJVR0dZLCBOQU1FLCBtZXRob2RzKTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cbi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGdsb2JhbCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5cdCAgLCBjb3JlICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKVxuXHQgICwgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cdHZhciBjdHggPSBmdW5jdGlvbihmbiwgdGhhdCl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uKCl7XG5cdCAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcblx0ICB9O1xuXHR9O1xuXHR2YXIgJGRlZiA9IGZ1bmN0aW9uKHR5cGUsIG5hbWUsIHNvdXJjZSl7XG5cdCAgdmFyIGtleSwgb3duLCBvdXQsIGV4cFxuXHQgICAgLCBpc0dsb2JhbCA9IHR5cGUgJiAkZGVmLkdcblx0ICAgICwgaXNQcm90byAgPSB0eXBlICYgJGRlZi5QXG5cdCAgICAsIHRhcmdldCAgID0gaXNHbG9iYWwgPyBnbG9iYWwgOiB0eXBlICYgJGRlZi5TXG5cdCAgICAgICAgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdXG5cdCAgICAsIGV4cG9ydHMgID0gaXNHbG9iYWwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcblx0ICBpZihpc0dsb2JhbClzb3VyY2UgPSBuYW1lO1xuXHQgIGZvcihrZXkgaW4gc291cmNlKXtcblx0ICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuXHQgICAgb3duID0gISh0eXBlICYgJGRlZi5GKSAmJiB0YXJnZXQgJiYga2V5IGluIHRhcmdldDtcblx0ICAgIGlmKG93biAmJiBrZXkgaW4gZXhwb3J0cyljb250aW51ZTtcblx0ICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG5cdCAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuXHQgICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG5cdCAgICBpZihpc0dsb2JhbCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJylleHAgPSBzb3VyY2Vba2V5XTtcblx0ICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG5cdCAgICBlbHNlIGlmKHR5cGUgJiAkZGVmLkIgJiYgb3duKWV4cCA9IGN0eChvdXQsIGdsb2JhbCk7XG5cdCAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFyeVxuXHQgICAgZWxzZSBpZih0eXBlICYgJGRlZi5XICYmIHRhcmdldFtrZXldID09IG91dCkhZnVuY3Rpb24oQyl7XG5cdCAgICAgIGV4cCA9IGZ1bmN0aW9uKHBhcmFtKXtcblx0ICAgICAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEMgPyBuZXcgQyhwYXJhbSkgOiBDKHBhcmFtKTtcblx0ICAgICAgfTtcblx0ICAgICAgZXhwW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG5cdCAgICB9KG91dCk7XG5cdCAgICBlbHNlIGV4cCA9IGlzUHJvdG8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG5cdCAgICAvLyBleHBvcnRcblx0ICAgIGV4cG9ydHNba2V5XSA9IGV4cDtcblx0ICAgIGlmKGlzUHJvdG8pKGV4cG9ydHNbUFJPVE9UWVBFXSB8fCAoZXhwb3J0c1tQUk9UT1RZUEVdID0ge30pKVtrZXldID0gb3V0O1xuXHQgIH1cblx0fTtcblx0Ly8gdHlwZSBiaXRtYXBcblx0JGRlZi5GID0gMTsgIC8vIGZvcmNlZFxuXHQkZGVmLkcgPSAyOyAgLy8gZ2xvYmFsXG5cdCRkZWYuUyA9IDQ7ICAvLyBzdGF0aWNcblx0JGRlZi5QID0gODsgIC8vIHByb3RvXG5cdCRkZWYuQiA9IDE2OyAvLyBiaW5kXG5cdCRkZWYuVyA9IDMyOyAvLyB3cmFwXG5cdG1vZHVsZS5leHBvcnRzID0gJGRlZjtcblxuLyoqKi8gfSxcbi8qIDExICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxuXHR2YXIgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cdHZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gVU5ERUZJTkVEICYmIHdpbmRvdy5NYXRoID09IE1hdGhcblx0ICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9IFVOREVGSU5FRCAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGYgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHRpZih0eXBlb2YgX19nID09ICdudW1iZXInKV9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4vKioqLyB9LFxuLyogMTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdHZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7dmVyc2lvbjogJzEuMi4wJ307XG5cdGlmKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4vKioqLyB9LFxuLyogMTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cbi8qKiovIH0sXG4vKiAxNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyICQgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgY3JlYXRlRGVzYyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpID8gZnVuY3Rpb24ob2JqZWN0LCBrZXksIHZhbHVlKXtcblx0ICByZXR1cm4gJC5zZXREZXNjKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG5cdH0gOiBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuXHQgIG9iamVjdFtrZXldID0gdmFsdWU7XG5cdCAgcmV0dXJuIG9iamVjdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgJE9iamVjdCA9IE9iamVjdDtcblx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgY3JlYXRlOiAgICAgJE9iamVjdC5jcmVhdGUsXG5cdCAgZ2V0UHJvdG86ICAgJE9iamVjdC5nZXRQcm90b3R5cGVPZixcblx0ICBpc0VudW06ICAgICB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxcblx0ICBnZXREZXNjOiAgICAkT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixcblx0ICBzZXREZXNjOiAgICAkT2JqZWN0LmRlZmluZVByb3BlcnR5LFxuXHQgIHNldERlc2NzOiAgICRPYmplY3QuZGVmaW5lUHJvcGVydGllcyxcblx0ICBnZXRLZXlzOiAgICAkT2JqZWN0LmtleXMsXG5cdCAgZ2V0TmFtZXM6ICAgJE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLFxuXHQgIGdldFN5bWJvbHM6ICRPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuXHQgIGVhY2g6ICAgICAgIFtdLmZvckVhY2hcblx0fTtcblxuLyoqKi8gfSxcbi8qIDE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGJpdG1hcCwgdmFsdWUpe1xuXHQgIHJldHVybiB7XG5cdCAgICBlbnVtZXJhYmxlICA6ICEoYml0bWFwICYgMSksXG5cdCAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG5cdCAgICB3cml0YWJsZSAgICA6ICEoYml0bWFwICYgNCksXG5cdCAgICB2YWx1ZSAgICAgICA6IHZhbHVlXG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5cdG1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oMTgpKGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7Z2V0OiBmdW5jdGlvbigpeyByZXR1cm4gNzsgfX0pLmEgIT0gNztcblx0fSk7XG5cbi8qKiovIH0sXG4vKiAxOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihleGVjKXtcblx0ICB0cnkge1xuXHQgICAgcmV0dXJuICEhZXhlYygpO1xuXHQgIH0gY2F0Y2goZSl7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiAxOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIGtleSl7XG5cdCAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIHN0b3JlICA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpKCd3a3MnKVxuXHQgICwgU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSkuU3ltYm9sO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG5hbWUpe1xuXHQgIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuXHQgICAgU3ltYm9sICYmIFN5bWJvbFtuYW1lXSB8fCAoU3ltYm9sIHx8IF9fd2VicGFja19yZXF1aXJlX18oMjIpKSgnU3ltYm9sLicgKyBuYW1lKSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5cdCAgLCBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJ1xuXHQgICwgc3RvcmUgID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG5cdCAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB7fSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIGlkID0gMFxuXHQgICwgcHggPSBNYXRoLnJhbmRvbSgpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG5cdCAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vKioqLyB9LFxuLyogMjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuXHQvLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KShJdGVyYXRvclByb3RvdHlwZSwgX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzOyB9KTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KXtcblx0ICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSAkLmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwge25leHQ6IF9fd2VicGFja19yZXF1aXJlX18oMTYpKDEsbmV4dCl9KTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KShDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDI1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgaGFzICA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpXG5cdCAgLCBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNClcblx0ICAsIFRBRyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgndG9TdHJpbmdUYWcnKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCB0YWcsIHN0YXQpe1xuXHQgIGlmKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpaGlkZShpdCwgVEFHLCB0YWcpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIGN0eCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsICRkZWYgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsIHRvT2JqZWN0ICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSlcblx0ICAsIGNhbGwgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMClcblx0ICAsIGlzQXJyYXlJdGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMylcblx0ICAsIHRvTGVuZ3RoICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNClcblx0ICAsIGdldEl0ZXJGbiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogIV9fd2VicGFja19yZXF1aXJlX18oMzgpKGZ1bmN0aW9uKGl0ZXIpeyBBcnJheS5mcm9tKGl0ZXIpOyB9KSwgJ0FycmF5Jywge1xuXHQgIC8vIDIyLjEuMi4xIEFycmF5LmZyb20oYXJyYXlMaWtlLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZClcblx0ICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZS8qLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCovKXtcblx0ICAgIHZhciBPICAgICAgID0gdG9PYmplY3QoYXJyYXlMaWtlKVxuXHQgICAgICAsIEMgICAgICAgPSB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5XG5cdCAgICAgICwgbWFwZm4gICA9IGFyZ3VtZW50c1sxXVxuXHQgICAgICAsIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkXG5cdCAgICAgICwgaW5kZXggICA9IDBcblx0ICAgICAgLCBpdGVyRm4gID0gZ2V0SXRlckZuKE8pXG5cdCAgICAgICwgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuXHQgICAgaWYobWFwcGluZyltYXBmbiA9IGN0eChtYXBmbiwgYXJndW1lbnRzWzJdLCAyKTtcblx0ICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuXHQgICAgaWYoaXRlckZuICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXIoaXRlckZuKSkpe1xuXHQgICAgICBmb3IoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEM7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKyl7XG5cdCAgICAgICAgcmVzdWx0W2luZGV4XSA9IG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG5cdCAgICAgIGZvcihyZXN1bHQgPSBuZXcgQyhsZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKyl7XG5cdCAgICAgICAgcmVzdWx0W2luZGV4XSA9IG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcblx0ICAgIHJldHVybiByZXN1bHQ7XG5cdCAgfVxuXHR9KTtcblxuXG4vKioqLyB9LFxuLyogMjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xuXHR2YXIgYUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm4sIHRoYXQsIGxlbmd0aCl7XG5cdCAgYUZ1bmN0aW9uKGZuKTtcblx0ICBpZih0aGF0ID09PSB1bmRlZmluZWQpcmV0dXJuIGZuO1xuXHQgIHN3aXRjaChsZW5ndGgpe1xuXHQgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24oYSl7XG5cdCAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuXHQgICAgfTtcblx0ICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uKGEsIGIpe1xuXHQgICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcblx0ICAgIH07XG5cdCAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbihhLCBiLCBjKXtcblx0ICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG5cdCAgICB9O1xuXHQgIH1cblx0ICByZXR1cm4gZnVuY3Rpb24oLyogLi4uYXJncyAqLyl7XG5cdCAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKXRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcblx0dmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDMwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG5cdHZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpe1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuXHQgIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG5cdCAgfSBjYXRjaChlKXtcblx0ICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG5cdCAgICBpZihyZXQgIT09IHVuZGVmaW5lZClhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuXHQgICAgdGhyb3cgZTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKCFpc09iamVjdChpdCkpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDMyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3Jcblx0dmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpXG5cdCAgLCBJVEVSQVRPUiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIChJdGVyYXRvcnMuQXJyYXkgfHwgQXJyYXkucHJvdG90eXBlW0lURVJBVE9SXSkgPT09IGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDcuMS4xNSBUb0xlbmd0aFxuXHR2YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KVxuXHQgICwgbWluICAgICAgID0gTWF0aC5taW47XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGNsYXNzb2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzYpXG5cdCAgLCBJVEVSQVRPUiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKVxuXHQgICwgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYoaXQgIT0gdW5kZWZpbmVkKXJldHVybiBpdFtJVEVSQVRPUl0gfHwgaXRbJ0BAaXRlcmF0b3InXSB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG5cdHZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KVxuXHQgICwgVEFHID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ3RvU3RyaW5nVGFnJylcblx0ICAvLyBFUzMgd3JvbmcgaGVyZVxuXHQgICwgQVJHID0gY29mKGZ1bmN0aW9uKCl7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgdmFyIE8sIFQsIEI7XG5cdCAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG5cdCAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2Vcblx0ICAgIDogdHlwZW9mIChUID0gKE8gPSBPYmplY3QoaXQpKVtUQUddKSA9PSAnc3RyaW5nJyA/IFRcblx0ICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuXHQgICAgOiBBUkcgPyBjb2YoTylcblx0ICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcblx0ICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdHZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIFNZTUJPTF9JVEVSQVRPUiA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpXG5cdCAgLCBTQUZFX0NMT1NJTkcgICAgPSBmYWxzZTtcblx0dHJ5IHtcblx0ICB2YXIgcml0ZXIgPSBbN11bU1lNQk9MX0lURVJBVE9SXSgpO1xuXHQgIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uKCl7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07XG5cdCAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24oKXsgdGhyb3cgMjsgfSk7XG5cdH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihleGVjKXtcblx0ICBpZighU0FGRV9DTE9TSU5HKXJldHVybiBmYWxzZTtcblx0ICB2YXIgc2FmZSA9IGZhbHNlO1xuXHQgIHRyeSB7XG5cdCAgICB2YXIgYXJyICA9IFs3XVxuXHQgICAgICAsIGl0ZXIgPSBhcnJbU1lNQk9MX0lURVJBVE9SXSgpO1xuXHQgICAgaXRlci5uZXh0ID0gZnVuY3Rpb24oKXsgc2FmZSA9IHRydWU7IH07XG5cdCAgICBhcnJbU1lNQk9MX0lURVJBVE9SXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyOyB9O1xuXHQgICAgZXhlYyhhcnIpO1xuXHQgIH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cblx0ICByZXR1cm4gc2FmZTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2dldEl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfaXNJdGVyYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDkpW1wiZGVmYXVsdFwiXTtcblxuXHRleHBvcnRzW1wiZGVmYXVsdFwiXSA9IChmdW5jdGlvbiAoKSB7XG5cdCAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHtcblx0ICAgIHZhciBfYXJyID0gW107XG5cdCAgICB2YXIgX24gPSB0cnVlO1xuXHQgICAgdmFyIF9kID0gZmFsc2U7XG5cdCAgICB2YXIgX2UgPSB1bmRlZmluZWQ7XG5cblx0ICAgIHRyeSB7XG5cdCAgICAgIGZvciAodmFyIF9pID0gX2dldEl0ZXJhdG9yKGFyciksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7XG5cdCAgICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuXHQgICAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcblx0ICAgICAgfVxuXHQgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgIF9kID0gdHJ1ZTtcblx0ICAgICAgX2UgPSBlcnI7XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0pIF9pW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gX2Fycjtcblx0ICB9XG5cblx0ICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkge1xuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuXHQgICAgICByZXR1cm4gYXJyO1xuXHQgICAgfSBlbHNlIGlmIChfaXNJdGVyYWJsZShPYmplY3QoYXJyKSkpIHtcblx0ICAgICAgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpO1xuXHQgICAgfVxuXHQgIH07XG5cdH0pKCk7XG5cblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuLyoqKi8gfSxcbi8qIDQwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNDEpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA0MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OCk7XG5cbi8qKiovIH0sXG4vKiA0MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Myk7XG5cdHZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0SXRlcmF0b3JzLk5vZGVMaXN0ID0gSXRlcmF0b3JzLkhUTUxDb2xsZWN0aW9uID0gSXRlcmF0b3JzLkFycmF5O1xuXG4vKioqLyB9LFxuLyogNDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIHNldFVuc2NvcGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ0KVxuXHQgICwgc3RlcCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpXG5cdCAgLCBJdGVyYXRvcnMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMylcblx0ICAsIHRvSU9iamVjdCAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KTtcblxuXHQvLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG5cdC8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG5cdC8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcblx0Ly8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5cdF9fd2VicGFja19yZXF1aXJlX18oOCkoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcblx0ICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG5cdCAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcblx0ICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuXHQvLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcblx0fSwgZnVuY3Rpb24oKXtcblx0ICB2YXIgTyAgICAgPSB0aGlzLl90XG5cdCAgICAsIGtpbmQgID0gdGhpcy5fa1xuXHQgICAgLCBpbmRleCA9IHRoaXMuX2krKztcblx0ICBpZighTyB8fCBpbmRleCA+PSBPLmxlbmd0aCl7XG5cdCAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuXHQgICAgcmV0dXJuIHN0ZXAoMSk7XG5cdCAgfVxuXHQgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuXHQgIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuXHQgIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcblx0fSwgJ3ZhbHVlcycpO1xuXG5cdC8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcblx0SXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuXHRzZXRVbnNjb3BlKCdrZXlzJyk7XG5cdHNldFVuc2NvcGUoJ3ZhbHVlcycpO1xuXHRzZXRVbnNjb3BlKCdlbnRyaWVzJyk7XG5cbi8qKiovIH0sXG4vKiA0NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpeyAvKiBlbXB0eSAqLyB9O1xuXG4vKioqLyB9LFxuLyogNDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZG9uZSwgdmFsdWUpe1xuXHQgIHJldHVybiB7dmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmV9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xyXG5cdHZhciBJT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NylcclxuXHQgICwgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XHJcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XHJcblx0ICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XHJcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBpbmRleGVkIG9iamVjdCwgZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG5cdHZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTtcblx0bW9kdWxlLmV4cG9ydHMgPSAwIGluIE9iamVjdCgneicpID8gT2JqZWN0IDogZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgZ2V0ICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5nZXRJdGVyYXRvciA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgaXRlckZuID0gZ2V0KGl0KTtcblx0ICBpZih0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG5cdCAgcmV0dXJuIGFuT2JqZWN0KGl0ZXJGbi5jYWxsKGl0KSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA0OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogNTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNTEpO1xuXG4vKioqLyB9LFxuLyogNTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBjbGFzc29mICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KVxuXHQgICwgSVRFUkFUT1IgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJylcblx0ICAsIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLmlzSXRlcmFibGUgPSBmdW5jdGlvbihpdCl7XG5cdCAgdmFyIE8gPSBPYmplY3QoaXQpO1xuXHQgIHJldHVybiBJVEVSQVRPUiBpbiBPIHx8ICdAQGl0ZXJhdG9yJyBpbiBPIHx8IEl0ZXJhdG9ycy5oYXNPd25Qcm9wZXJ0eShjbGFzc29mKE8pKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDUyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNTMpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA1MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJyk7XG5cbi8qKiovIH0sXG4vKiA1NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkgey8vIFRoaXMgbWV0aG9kIG9mIG9idGFpbmluZyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdCBuZWVkcyB0byBiZVxuXHQvLyBrZXB0IGlkZW50aWNhbCB0byB0aGUgd2F5IGl0IGlzIG9idGFpbmVkIGluIHJ1bnRpbWUuanNcblx0dmFyIGcgPVxuXHQgIHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuXHQgIHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIgPyB3aW5kb3cgOlxuXHQgIHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiID8gc2VsZiA6IHRoaXM7XG5cblx0Ly8gVXNlIGBnZXRPd25Qcm9wZXJ0eU5hbWVzYCBiZWNhdXNlIG5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCBjYWxsaW5nXG5cdC8vIGBoYXNPd25Qcm9wZXJ0eWAgb24gdGhlIGdsb2JhbCBgc2VsZmAgb2JqZWN0IGluIGEgd29ya2VyLiBTZWUgIzE4My5cblx0dmFyIGhhZFJ1bnRpbWUgPSBnLnJlZ2VuZXJhdG9yUnVudGltZSAmJlxuXHQgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGcpLmluZGV4T2YoXCJyZWdlbmVyYXRvclJ1bnRpbWVcIikgPj0gMDtcblxuXHQvLyBTYXZlIHRoZSBvbGQgcmVnZW5lcmF0b3JSdW50aW1lIGluIGNhc2UgaXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgbGF0ZXIuXG5cdHZhciBvbGRSdW50aW1lID0gaGFkUnVudGltZSAmJiBnLnJlZ2VuZXJhdG9yUnVudGltZTtcblxuXHQvLyBGb3JjZSByZWV2YWx1dGF0aW9uIG9mIHJ1bnRpbWUuanMuXG5cdGcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG5cblx0aWYgKGhhZFJ1bnRpbWUpIHtcblx0ICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBydW50aW1lLlxuXHQgIGcucmVnZW5lcmF0b3JSdW50aW1lID0gb2xkUnVudGltZTtcblx0fSBlbHNlIHtcblx0ICAvLyBSZW1vdmUgdGhlIGdsb2JhbCBwcm9wZXJ0eSBhZGRlZCBieSBydW50aW1lLmpzLlxuXHQgIHRyeSB7XG5cdCAgICBkZWxldGUgZy5yZWdlbmVyYXRvclJ1bnRpbWU7XG5cdCAgfSBjYXRjaChlKSB7XG5cdCAgICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDtcblx0ICB9XG5cdH1cblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IG1vZHVsZS5leHBvcnRzLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSkpKVxuXG4vKioqLyB9LFxuLyogNTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwsIHByb2Nlc3MpIHsvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDE0LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9tYXN0ZXIvTElDRU5TRSBmaWxlLiBBblxuXHQgKiBhZGRpdGlvbmFsIGdyYW50IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW5cblx0ICogdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX1N5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1N5bWJvbCRpdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX09iamVjdCRjcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYzKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9Qcm9taXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NSlbXCJkZWZhdWx0XCJdO1xuXG5cdCEoZnVuY3Rpb24gKGdsb2JhbCkge1xuXHQgIFwidXNlIHN0cmljdFwiO1xuXG5cdCAgdmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cdCAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG5cdCAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gdHlwZW9mIF9TeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBfU3ltYm9sJGl0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuXG5cdCAgdmFyIGluTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIjtcblx0ICB2YXIgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWU7XG5cdCAgaWYgKHJ1bnRpbWUpIHtcblx0ICAgIGlmIChpbk1vZHVsZSkge1xuXHQgICAgICAvLyBJZiByZWdlbmVyYXRvclJ1bnRpbWUgaXMgZGVmaW5lZCBnbG9iYWxseSBhbmQgd2UncmUgaW4gYSBtb2R1bGUsXG5cdCAgICAgIC8vIG1ha2UgdGhlIGV4cG9ydHMgb2JqZWN0IGlkZW50aWNhbCB0byByZWdlbmVyYXRvclJ1bnRpbWUuXG5cdCAgICAgIG1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcblx0ICAgIH1cblx0ICAgIC8vIERvbid0IGJvdGhlciBldmFsdWF0aW5nIHRoZSByZXN0IG9mIHRoaXMgZmlsZSBpZiB0aGUgcnVudGltZSB3YXNcblx0ICAgIC8vIGFscmVhZHkgZGVmaW5lZCBnbG9iYWxseS5cblx0ICAgIHJldHVybjtcblx0ICB9XG5cblx0ICAvLyBEZWZpbmUgdGhlIHJ1bnRpbWUgZ2xvYmFsbHkgKGFzIGV4cGVjdGVkIGJ5IGdlbmVyYXRlZCBjb2RlKSBhcyBlaXRoZXJcblx0ICAvLyBtb2R1bGUuZXhwb3J0cyAoaWYgd2UncmUgaW4gYSBtb2R1bGUpIG9yIGEgbmV3LCBlbXB0eSBvYmplY3QuXG5cdCAgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUgPSBpbk1vZHVsZSA/IG1vZHVsZS5leHBvcnRzIDoge307XG5cblx0ICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG5cdCAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuXHQgICAgdmFyIGdlbmVyYXRvciA9IF9PYmplY3QkY3JlYXRlKChvdXRlckZuIHx8IEdlbmVyYXRvcikucHJvdG90eXBlKTtcblxuXHQgICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYgfHwgbnVsbCwgbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pKTtcblxuXHQgICAgcmV0dXJuIGdlbmVyYXRvcjtcblx0ICB9XG5cdCAgcnVudGltZS53cmFwID0gd3JhcDtcblxuXHQgIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuXHQgIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuXHQgIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuXHQgIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2Vcblx0ICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG5cdCAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuXHQgIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG5cdCAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG5cdCAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuXHQgIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cblx0ICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcblx0ICAgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG5cdCAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG5cdCAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcblx0ICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG5cdCAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuXHQgIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cblx0ICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG5cdCAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG5cdCAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG5cdCAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcblx0ICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuXHQgIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG5cdCAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuXHQgIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuXHQgIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9IEdlbmVyYXRvci5wcm90b3R5cGU7XG5cdCAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcblx0ICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuXHQgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG5cdCAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcblx0ICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuXHQgIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcblx0ICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcblx0ICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoYXJnKSB7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG5cdCAgICAgIH07XG5cdCAgICB9KTtcblx0ICB9XG5cblx0ICBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAoZ2VuRnVuKSB7XG5cdCAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG5cdCAgICByZXR1cm4gY3RvciA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG5cdCAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG5cdCAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG5cdCAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCIgOiBmYWxzZTtcblx0ICB9O1xuXG5cdCAgcnVudGltZS5tYXJrID0gZnVuY3Rpb24gKGdlbkZ1bikge1xuXHQgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuXHQgICAgZ2VuRnVuLnByb3RvdHlwZSA9IF9PYmplY3QkY3JlYXRlKEdwKTtcblx0ICAgIHJldHVybiBnZW5GdW47XG5cdCAgfTtcblxuXHQgIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuXHQgIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG5cdCAgLy8gYHZhbHVlIGluc3RhbmNlb2YgQXdhaXRBcmd1bWVudGAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG5cdCAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC4gU29tZSBtYXkgY29uc2lkZXIgdGhlIG5hbWUgb2YgdGhpcyBtZXRob2QgdG9vXG5cdCAgLy8gY3V0ZXN5LCBidXQgdGhleSBhcmUgY3VybXVkZ2VvbnMuXG5cdCAgcnVudGltZS5hd3JhcCA9IGZ1bmN0aW9uIChhcmcpIHtcblx0ICAgIHJldHVybiBuZXcgQXdhaXRBcmd1bWVudChhcmcpO1xuXHQgIH07XG5cblx0ICBmdW5jdGlvbiBBd2FpdEFyZ3VtZW50KGFyZykge1xuXHQgICAgdGhpcy5hcmcgPSBhcmc7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IpIHtcblx0ICAgIC8vIFRoaXMgaW52b2tlIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gaW4gYSBzdHlsZSB0aGF0IGFzc3VtZXMgc29tZVxuXHQgICAgLy8gY2FsbGluZyBmdW5jdGlvbiAob3IgUHJvbWlzZSkgd2lsbCBoYW5kbGUgZXhjZXB0aW9ucy5cblx0ICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuXHQgICAgICB2YXIgcmVzdWx0ID0gZ2VuZXJhdG9yW21ldGhvZF0oYXJnKTtcblx0ICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuXHQgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBBd2FpdEFyZ3VtZW50ID8gX1Byb21pc2UucmVzb2x2ZSh2YWx1ZS5hcmcpLnRoZW4oaW52b2tlTmV4dCwgaW52b2tlVGhyb3cpIDogX1Byb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbiAodW53cmFwcGVkKSB7XG5cdCAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcblx0ICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcblx0ICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi4gSWYgdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQsIGhvd2V2ZXIsIHRoZVxuXHQgICAgICAgIC8vIHJlc3VsdCBmb3IgdGhpcyBpdGVyYXRpb24gd2lsbCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lXG5cdCAgICAgICAgLy8gcmVhc29uLiBOb3RlIHRoYXQgcmVqZWN0aW9ucyBvZiB5aWVsZGVkIFByb21pc2VzIGFyZSBub3Rcblx0ICAgICAgICAvLyB0aHJvd24gYmFjayBpbnRvIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIGFzIGlzIHRoZSBjYXNlXG5cdCAgICAgICAgLy8gd2hlbiBhbiBhd2FpdGVkIFByb21pc2UgaXMgcmVqZWN0ZWQuIFRoaXMgZGlmZmVyZW5jZSBpblxuXHQgICAgICAgIC8vIGJlaGF2aW9yIGJldHdlZW4geWllbGQgYW5kIGF3YWl0IGlzIGltcG9ydGFudCwgYmVjYXVzZSBpdFxuXHQgICAgICAgIC8vIGFsbG93cyB0aGUgY29uc3VtZXIgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGUgeWllbGRlZFxuXHQgICAgICAgIC8vIHJlamVjdGlvbiAoc3dhbGxvdyBpdCBhbmQgY29udGludWUsIG1hbnVhbGx5IC50aHJvdyBpdCBiYWNrXG5cdCAgICAgICAgLy8gaW50byB0aGUgZ2VuZXJhdG9yLCBhYmFuZG9uIGl0ZXJhdGlvbiwgd2hhdGV2ZXIpLiBXaXRoXG5cdCAgICAgICAgLy8gYXdhaXQsIGJ5IGNvbnRyYXN0LCB0aGVyZSBpcyBubyBvcHBvcnR1bml0eSB0byBleGFtaW5lIHRoZVxuXHQgICAgICAgIC8vIHJlamVjdGlvbiByZWFzb24gb3V0c2lkZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBzbyB0aGVcblx0ICAgICAgICAvLyBvbmx5IG9wdGlvbiBpcyB0byB0aHJvdyBpdCBmcm9tIHRoZSBhd2FpdCBleHByZXNzaW9uLCBhbmRcblx0ICAgICAgICAvLyBsZXQgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBoYW5kbGUgdGhlIGV4Y2VwdGlvbi5cblx0ICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG5cdCAgICAgICAgcmV0dXJuIHJlc3VsdDtcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIGlmICh0eXBlb2YgcHJvY2VzcyA9PT0gXCJvYmplY3RcIiAmJiBwcm9jZXNzLmRvbWFpbikge1xuXHQgICAgICBpbnZva2UgPSBwcm9jZXNzLmRvbWFpbi5iaW5kKGludm9rZSk7XG5cdCAgICB9XG5cblx0ICAgIHZhciBpbnZva2VOZXh0ID0gaW52b2tlLmJpbmQoZ2VuZXJhdG9yLCBcIm5leHRcIik7XG5cdCAgICB2YXIgaW52b2tlVGhyb3cgPSBpbnZva2UuYmluZChnZW5lcmF0b3IsIFwidGhyb3dcIik7XG5cdCAgICB2YXIgaW52b2tlUmV0dXJuID0gaW52b2tlLmJpbmQoZ2VuZXJhdG9yLCBcInJldHVyblwiKTtcblx0ICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cblx0ICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcblx0ICAgICAgdmFyIGVucXVldWVSZXN1bHQgPVxuXHQgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG5cdCAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuXHQgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG5cdCAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG5cdCAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuXHQgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuXHQgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG5cdCAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG5cdCAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG5cdCAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG5cdCAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG5cdCAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cblx0ICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiBpbnZva2UobWV0aG9kLCBhcmcpO1xuXHQgICAgICB9KSA6IG5ldyBfUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXHQgICAgICAgIHJlc29sdmUoaW52b2tlKG1ldGhvZCwgYXJnKSk7XG5cdCAgICAgIH0pO1xuXG5cdCAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGVucXVldWVSZXN1bHQgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnlcblx0ICAgICAgLy8gbGF0ZXIgaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuXHQgICAgICBwcmV2aW91c1Byb21pc2UgPSBlbnF1ZXVlUmVzdWx0W1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGlnbm9yZWQpIHt9KTtcblxuXHQgICAgICByZXR1cm4gZW5xdWV1ZVJlc3VsdDtcblx0ICAgIH1cblxuXHQgICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcblx0ICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuXHQgICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcblx0ICB9XG5cblx0ICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuXG5cdCAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuXHQgIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuXHQgIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuXHQgIHJ1bnRpbWUuYXN5bmMgPSBmdW5jdGlvbiAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcblx0ICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3Iod3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkpO1xuXG5cdCAgICByZXR1cm4gcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG5cdCAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuXHQgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcblx0ICAgIH0pO1xuXHQgIH07XG5cblx0ICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcblx0ICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cblx0ICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcblx0ICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuXHQgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG5cdCAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICB0aHJvdyBhcmc7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcblx0ICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG5cdCAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHdoaWxlICh0cnVlKSB7XG5cdCAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcblx0ICAgICAgICBpZiAoZGVsZWdhdGUpIHtcblx0ICAgICAgICAgIGlmIChtZXRob2QgPT09IFwicmV0dXJuXCIgfHwgbWV0aG9kID09PSBcInRocm93XCIgJiYgZGVsZWdhdGUuaXRlcmF0b3JbbWV0aG9kXSA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAgIC8vIEEgcmV0dXJuIG9yIHRocm93ICh3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gdGhyb3dcblx0ICAgICAgICAgICAgLy8gbWV0aG9kKSBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG5cdCAgICAgICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG5cdCAgICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcblx0ICAgICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuXHQgICAgICAgICAgICB2YXIgcmV0dXJuTWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl07XG5cdCAgICAgICAgICAgIGlmIChyZXR1cm5NZXRob2QpIHtcblx0ICAgICAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gocmV0dXJuTWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgYXJnKTtcblx0ICAgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJldHVybiBtZXRob2QgdGhyZXcgYW4gZXhjZXB0aW9uLCBsZXQgdGhhdFxuXHQgICAgICAgICAgICAgICAgLy8gZXhjZXB0aW9uIHByZXZhaWwgb3ZlciB0aGUgb3JpZ2luYWwgcmV0dXJuIG9yIHRocm93LlxuXHQgICAgICAgICAgICAgICAgbWV0aG9kID0gXCJ0aHJvd1wiO1xuXHQgICAgICAgICAgICAgICAgYXJnID0gcmVjb3JkLmFyZztcblx0ICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIGlmIChtZXRob2QgPT09IFwicmV0dXJuXCIpIHtcblx0ICAgICAgICAgICAgICAvLyBDb250aW51ZSB3aXRoIHRoZSBvdXRlciByZXR1cm4sIG5vdyB0aGF0IHRoZSBkZWxlZ2F0ZVxuXHQgICAgICAgICAgICAgIC8vIGl0ZXJhdG9yIGhhcyBiZWVuIHRlcm1pbmF0ZWQuXG5cdCAgICAgICAgICAgICAgY29udGludWU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGRlbGVnYXRlLml0ZXJhdG9yW21ldGhvZF0sIGRlbGVnYXRlLml0ZXJhdG9yLCBhcmcpO1xuXG5cdCAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuXHQgICAgICAgICAgICAvLyBMaWtlIHJldHVybmluZyBnZW5lcmF0b3IudGhyb3codW5jYXVnaHQpLCBidXQgd2l0aG91dCB0aGVcblx0ICAgICAgICAgICAgLy8gb3ZlcmhlYWQgb2YgYW4gZXh0cmEgZnVuY3Rpb24gY2FsbC5cblx0ICAgICAgICAgICAgbWV0aG9kID0gXCJ0aHJvd1wiO1xuXHQgICAgICAgICAgICBhcmcgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgICAgICBjb250aW51ZTtcblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgLy8gRGVsZWdhdGUgZ2VuZXJhdG9yIHJhbiBhbmQgaGFuZGxlZCBpdHMgb3duIGV4Y2VwdGlvbnMgc29cblx0ICAgICAgICAgIC8vIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgbWV0aG9kIHdhcywgd2UgY29udGludWUgYXMgaWYgaXQgaXNcblx0ICAgICAgICAgIC8vIFwibmV4dFwiIHdpdGggYW4gdW5kZWZpbmVkIGFyZy5cblx0ICAgICAgICAgIG1ldGhvZCA9IFwibmV4dFwiO1xuXHQgICAgICAgICAgYXJnID0gdW5kZWZpbmVkO1xuXG5cdCAgICAgICAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgICBpZiAoaW5mby5kb25lKSB7XG5cdCAgICAgICAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXHQgICAgICAgICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXHQgICAgICAgICAgICByZXR1cm4gaW5mbztcblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcblx0ICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCkge1xuXHQgICAgICAgICAgICBjb250ZXh0LnNlbnQgPSBhcmc7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBjb250ZXh0LnNlbnQgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG5cdCAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG5cdCAgICAgICAgICAgIHRocm93IGFyZztcblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgaWYgKGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oYXJnKSkge1xuXHQgICAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuXHQgICAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuXHQgICAgICAgICAgICBtZXRob2QgPSBcIm5leHRcIjtcblx0ICAgICAgICAgICAgYXJnID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSBcInJldHVyblwiKSB7XG5cdCAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBhcmcpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cblx0ICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cdCAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG5cdCAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG5cdCAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG5cdCAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZSA/IEdlblN0YXRlQ29tcGxldGVkIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuXHQgICAgICAgICAgdmFyIGluZm8gPSB7XG5cdCAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuXHQgICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcblx0ICAgICAgICAgIH07XG5cblx0ICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG5cdCAgICAgICAgICAgIGlmIChjb250ZXh0LmRlbGVnYXRlICYmIG1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcblx0ICAgICAgICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuXHQgICAgICAgICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cblx0ICAgICAgICAgICAgICBhcmcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIHJldHVybiBpbmZvO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcblx0ICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcblx0ICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oYXJnKSBjYWxsIGFib3ZlLlxuXHQgICAgICAgICAgbWV0aG9kID0gXCJ0aHJvd1wiO1xuXHQgICAgICAgICAgYXJnID0gcmVjb3JkLmFyZztcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH07XG5cdCAgfVxuXG5cdCAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcblx0ICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG5cdCAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuXHQgIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiB0aGlzO1xuXHQgIH07XG5cblx0ICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuXHQgIH07XG5cblx0ICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuXHQgICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuXHQgICAgaWYgKDEgaW4gbG9jcykge1xuXHQgICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG5cdCAgICB9XG5cblx0ICAgIGlmICgyIGluIGxvY3MpIHtcblx0ICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG5cdCAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcblx0ICAgIH1cblxuXHQgICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcblx0ICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuXHQgICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuXHQgICAgZGVsZXRlIHJlY29yZC5hcmc7XG5cdCAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcblx0ICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuXHQgICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuXHQgICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuXHQgICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcblx0ICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcblx0ICAgIHRoaXMucmVzZXQodHJ1ZSk7XG5cdCAgfVxuXG5cdCAgcnVudGltZS5rZXlzID0gZnVuY3Rpb24gKG9iamVjdCkge1xuXHQgICAgdmFyIGtleXMgPSBbXTtcblx0ICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcblx0ICAgICAga2V5cy5wdXNoKGtleSk7XG5cdCAgICB9XG5cdCAgICBrZXlzLnJldmVyc2UoKTtcblxuXHQgICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcblx0ICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG5cdCAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcblx0ICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG5cdCAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG5cdCAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcblx0ICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG5cdCAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcblx0ICAgICAgICAgIHJldHVybiBuZXh0O1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuXHQgICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuXHQgICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cblx0ICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblx0ICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICB9O1xuXHQgIH07XG5cblx0ICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcblx0ICAgIGlmIChpdGVyYWJsZSkge1xuXHQgICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG5cdCAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuXHQgICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdCAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG5cdCAgICAgICAgdmFyIGkgPSAtMSxcblx0ICAgICAgICAgICAgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG5cdCAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG5cdCAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcblx0ICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG5cdCAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cblx0ICAgICAgICAgIHJldHVybiBuZXh0O1xuXHQgICAgICAgIH07XG5cblx0ICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG5cdCAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG5cdCAgfVxuXHQgIHJ1bnRpbWUudmFsdWVzID0gdmFsdWVzO1xuXG5cdCAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcblx0ICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcblx0ICB9XG5cblx0ICBDb250ZXh0LnByb3RvdHlwZSA9IHtcblx0ICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG5cdCAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoc2tpcFRlbXBSZXNldCkge1xuXHQgICAgICB0aGlzLnByZXYgPSAwO1xuXHQgICAgICB0aGlzLm5leHQgPSAwO1xuXHQgICAgICB0aGlzLnNlbnQgPSB1bmRlZmluZWQ7XG5cdCAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuXHQgICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuXHQgICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuXHQgICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcblx0ICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcblx0ICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG5cdCAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcblx0ICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cblx0ICAgIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7XG5cdCAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cblx0ICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcblx0ICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcblx0ICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG5cdCAgICAgIH1cblxuXHQgICAgICByZXR1cm4gdGhpcy5ydmFsO1xuXHQgICAgfSxcblxuXHQgICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIGRpc3BhdGNoRXhjZXB0aW9uKGV4Y2VwdGlvbikge1xuXHQgICAgICBpZiAodGhpcy5kb25lKSB7XG5cdCAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuXHQgICAgICB9XG5cblx0ICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuXHQgICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcblx0ICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcblx0ICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuXHQgICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblx0ICAgICAgICByZXR1cm4gISFjYXVnaHQ7XG5cdCAgICAgIH1cblxuXHQgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdCAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuXHQgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG5cdCAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcblx0ICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG5cdCAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cblx0ICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG5cdCAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG5cdCAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcblx0ICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuXHQgICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG5cdCAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuXHQgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuXHQgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgYWJydXB0OiBmdW5jdGlvbiBhYnJ1cHQodHlwZSwgYXJnKSB7XG5cdCAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG5cdCAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJiB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAoZmluYWxseUVudHJ5ICYmICh0eXBlID09PSBcImJyZWFrXCIgfHwgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJiBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJiBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcblx0ICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG5cdCAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuXHQgICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG5cdCAgICAgIH1cblxuXHQgICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcblx0ICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuXHQgICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG5cdCAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcblx0ICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG5cdCAgICAgIH1cblxuXHQgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcblx0ICAgIH0sXG5cblx0ICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZWNvcmQsIGFmdGVyTG9jKSB7XG5cdCAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcblx0ICAgICAgfVxuXG5cdCAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8IHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcblx0ICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuXHQgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG5cdCAgICAgICAgdGhpcy5ydmFsID0gcmVjb3JkLmFyZztcblx0ICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuXHQgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG5cdCAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cblx0ICAgIGZpbmlzaDogZnVuY3Rpb24gZmluaXNoKGZpbmFsbHlMb2MpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcblx0ICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuXHQgICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG5cdCAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcblx0ICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgXCJjYXRjaFwiOiBmdW5jdGlvbiBfY2F0Y2godHJ5TG9jKSB7XG5cdCAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG5cdCAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG5cdCAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblx0ICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuXHQgICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIHJldHVybiB0aHJvd247XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG5cdCAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuXHQgICAgfSxcblxuXHQgICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24gZGVsZWdhdGVZaWVsZChpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuXHQgICAgICB0aGlzLmRlbGVnYXRlID0ge1xuXHQgICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuXHQgICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG5cdCAgICAgICAgbmV4dExvYzogbmV4dExvY1xuXHQgICAgICB9O1xuXG5cdCAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuXHQgICAgfVxuXHQgIH07XG5cdH0pKFxuXHQvLyBBbW9uZyB0aGUgdmFyaW91cyB0cmlja3MgZm9yIG9idGFpbmluZyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsXG5cdC8vIG9iamVjdCwgdGhpcyBzZWVtcyB0byBiZSB0aGUgbW9zdCByZWxpYWJsZSB0ZWNobmlxdWUgdGhhdCBkb2VzIG5vdFxuXHQvLyB1c2UgaW5kaXJlY3QgZXZhbCAod2hpY2ggdmlvbGF0ZXMgQ29udGVudCBTZWN1cml0eSBQb2xpY3kpLlxuXHR0eXBlb2YgZ2xvYmFsID09PSBcIm9iamVjdFwiID8gZ2xvYmFsIDogdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiID8gc2VsZiA6IHVuZGVmaW5lZCk7XG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KSkpXG5cbi8qKiovIH0sXG4vKiA1NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG5cblx0dmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXHR2YXIgcXVldWUgPSBbXTtcblx0dmFyIGRyYWluaW5nID0gZmFsc2U7XG5cdHZhciBjdXJyZW50UXVldWU7XG5cdHZhciBxdWV1ZUluZGV4ID0gLTE7XG5cblx0ZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuXHQgICAgZHJhaW5pbmcgPSBmYWxzZTtcblx0ICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG5cdCAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuXHQgICAgfVxuXHQgICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuXHQgICAgICAgIGRyYWluUXVldWUoKTtcblx0ICAgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG5cdCAgICBpZiAoZHJhaW5pbmcpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcblx0ICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuXHQgICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcblx0ICAgIHdoaWxlKGxlbikge1xuXHQgICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuXHQgICAgICAgIHF1ZXVlID0gW107XG5cdCAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuXHQgICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG5cdCAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuXHQgICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcblx0ICAgIH1cblx0ICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG5cdCAgICBkcmFpbmluZyA9IGZhbHNlO1xuXHQgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuXHR9XG5cblx0cHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcblx0ICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcblx0ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuXHQgICAgICAgIH1cblx0ICAgIH1cblx0ICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG5cdCAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuXHQgICAgICAgIHNldFRpbWVvdXQoZHJhaW5RdWV1ZSwgMCk7XG5cdCAgICB9XG5cdH07XG5cblx0Ly8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuXHRmdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcblx0ICAgIHRoaXMuZnVuID0gZnVuO1xuXHQgICAgdGhpcy5hcnJheSA9IGFycmF5O1xuXHR9XG5cdEl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xuXHR9O1xuXHRwcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xuXHRwcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xuXHRwcm9jZXNzLmVudiA9IHt9O1xuXHRwcm9jZXNzLmFyZ3YgPSBbXTtcblx0cHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5cdHByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuXHRmdW5jdGlvbiBub29wKCkge31cblxuXHRwcm9jZXNzLm9uID0gbm9vcDtcblx0cHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5cdHByb2Nlc3Mub25jZSA9IG5vb3A7XG5cdHByb2Nlc3Mub2ZmID0gbm9vcDtcblx0cHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5cdHByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcblx0cHJvY2Vzcy5lbWl0ID0gbm9vcDtcblxuXHRwcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xuXHR9O1xuXG5cdHByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5cdHByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xuXHR9O1xuXHRwcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuXG5cbi8qKiovIH0sXG4vKiA1NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDU4KSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogNTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNTkpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLlN5bWJvbDtcblxuLyoqKi8gfSxcbi8qIDU5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdC8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cblx0dmFyICQgICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIGdsb2JhbCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIGhhcyAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIFNVUFBPUlRfREVTQyAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNylcblx0ICAsICRkZWYgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsICRyZWRlZiAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMylcblx0ICAsICRmYWlscyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOClcblx0ICAsIHNoYXJlZCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSlcblx0ICAsIHNldFRhZyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSlcblx0ICAsIHVpZCAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMilcblx0ICAsIHdrcyAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMClcblx0ICAsIGtleU9mICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MClcblx0ICAsICRuYW1lcyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MSlcblx0ICAsIGVudW1LZXlzICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Milcblx0ICAsIGlzT2JqZWN0ICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGFuT2JqZWN0ICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIHRvSU9iamVjdCAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nilcblx0ICAsIGNyZWF0ZURlc2MgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNilcblx0ICAsIGdldERlc2MgICAgICAgID0gJC5nZXREZXNjXG5cdCAgLCBzZXREZXNjICAgICAgICA9ICQuc2V0RGVzY1xuXHQgICwgX2NyZWF0ZSAgICAgICAgPSAkLmNyZWF0ZVxuXHQgICwgZ2V0TmFtZXMgICAgICAgPSAkbmFtZXMuZ2V0XG5cdCAgLCAkU3ltYm9sICAgICAgICA9IGdsb2JhbC5TeW1ib2xcblx0ICAsIHNldHRlciAgICAgICAgID0gZmFsc2Vcblx0ICAsIEhJRERFTiAgICAgICAgID0gd2tzKCdfaGlkZGVuJylcblx0ICAsIGlzRW51bSAgICAgICAgID0gJC5pc0VudW1cblx0ICAsIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKVxuXHQgICwgQWxsU3ltYm9scyAgICAgPSBzaGFyZWQoJ3N5bWJvbHMnKVxuXHQgICwgdXNlTmF0aXZlICAgICAgPSB0eXBlb2YgJFN5bWJvbCA9PSAnZnVuY3Rpb24nXG5cdCAgLCBPYmplY3RQcm90byAgICA9IE9iamVjdC5wcm90b3R5cGU7XG5cblx0Ly8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG5cdHZhciBzZXRTeW1ib2xEZXNjID0gU1VQUE9SVF9ERVNDICYmICRmYWlscyhmdW5jdGlvbigpe1xuXHQgIHJldHVybiBfY3JlYXRlKHNldERlc2Moe30sICdhJywge1xuXHQgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gc2V0RGVzYyh0aGlzLCAnYScsIHt2YWx1ZTogN30pLmE7IH1cblx0ICB9KSkuYSAhPSA3O1xuXHR9KSA/IGZ1bmN0aW9uKGl0LCBrZXksIEQpe1xuXHQgIHZhciBwcm90b0Rlc2MgPSBnZXREZXNjKE9iamVjdFByb3RvLCBrZXkpO1xuXHQgIGlmKHByb3RvRGVzYylkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcblx0ICBzZXREZXNjKGl0LCBrZXksIEQpO1xuXHQgIGlmKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pc2V0RGVzYyhPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xuXHR9IDogc2V0RGVzYztcblxuXHR2YXIgd3JhcCA9IGZ1bmN0aW9uKHRhZyl7XG5cdCAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbC5wcm90b3R5cGUpO1xuXHQgIHN5bS5fayA9IHRhZztcblx0ICBTVVBQT1JUX0RFU0MgJiYgc2V0dGVyICYmIHNldFN5bWJvbERlc2MoT2JqZWN0UHJvdG8sIHRhZywge1xuXHQgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuXHQgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSl7XG5cdCAgICAgIGlmKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcblx0ICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcblx0ICAgIH1cblx0ICB9KTtcblx0ICByZXR1cm4gc3ltO1xuXHR9O1xuXG5cdHZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBEKXtcblx0ICBpZihEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpKXtcblx0ICAgIGlmKCFELmVudW1lcmFibGUpe1xuXHQgICAgICBpZighaGFzKGl0LCBISURERU4pKXNldERlc2MoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpO1xuXHQgICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgaWYoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSlpdFtISURERU5dW2tleV0gPSBmYWxzZTtcblx0ICAgICAgRCA9IF9jcmVhdGUoRCwge2VudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpfSk7XG5cdCAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuXHQgIH0gcmV0dXJuIHNldERlc2MoaXQsIGtleSwgRCk7XG5cdH07XG5cdHZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApe1xuXHQgIGFuT2JqZWN0KGl0KTtcblx0ICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpXG5cdCAgICAsIGkgICAgPSAwXG5cdCAgICAsIGwgPSBrZXlzLmxlbmd0aFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobCA+IGkpJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXHR2YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCl7XG5cdCAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApO1xuXHR9O1xuXHR2YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KXtcblx0ICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSk7XG5cdCAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XVxuXHQgICAgPyBFIDogdHJ1ZTtcblx0fTtcblx0dmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSl7XG5cdCAgdmFyIEQgPSBnZXREZXNjKGl0ID0gdG9JT2JqZWN0KGl0KSwga2V5KTtcblx0ICBpZihEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpRC5lbnVtZXJhYmxlID0gdHJ1ZTtcblx0ICByZXR1cm4gRDtcblx0fTtcblx0dmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCl7XG5cdCAgdmFyIG5hbWVzICA9IGdldE5hbWVzKHRvSU9iamVjdChpdCkpXG5cdCAgICAsIHJlc3VsdCA9IFtdXG5cdCAgICAsIGkgICAgICA9IDBcblx0ICAgICwga2V5O1xuXHQgIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpaWYoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOKXJlc3VsdC5wdXNoKGtleSk7XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fTtcblx0dmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpe1xuXHQgIHZhciBuYW1lcyAgPSBnZXROYW1lcyh0b0lPYmplY3QoaXQpKVxuXHQgICAgLCByZXN1bHQgPSBbXVxuXHQgICAgLCBpICAgICAgPSAwXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShuYW1lcy5sZW5ndGggPiBpKWlmKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSlyZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuXHQgIHJldHVybiByZXN1bHQ7XG5cdH07XG5cblx0Ly8gMTkuNC4xLjEgU3ltYm9sKFtkZXNjcmlwdGlvbl0pXG5cdGlmKCF1c2VOYXRpdmUpe1xuXHQgICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKXtcblx0ICAgIGlmKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKXRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7XG5cdCAgICByZXR1cm4gd3JhcCh1aWQoYXJndW1lbnRzWzBdKSk7XG5cdCAgfTtcblx0ICAkcmVkZWYoJFN5bWJvbC5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCl7XG5cdCAgICByZXR1cm4gdGhpcy5faztcblx0ICB9KTtcblxuXHQgICQuY3JlYXRlICAgICA9ICRjcmVhdGU7XG5cdCAgJC5pc0VudW0gICAgID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXHQgICQuZ2V0RGVzYyAgICA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cdCAgJC5zZXREZXNjICAgID0gJGRlZmluZVByb3BlcnR5O1xuXHQgICQuc2V0RGVzY3MgICA9ICRkZWZpbmVQcm9wZXJ0aWVzO1xuXHQgICQuZ2V0TmFtZXMgICA9ICRuYW1lcy5nZXQgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcblx0ICAkLmdldFN5bWJvbHMgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG5cdCAgaWYoU1VQUE9SVF9ERVNDICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKDkpKXtcblx0ICAgICRyZWRlZihPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcblx0ICB9XG5cdH1cblxuXHQvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuXHRpZighdXNlTmF0aXZlIHx8ICRmYWlscyhmdW5jdGlvbigpe1xuXHQgIHJldHVybiBKU09OLnN0cmluZ2lmeShbJFN5bWJvbCgpXSkgIT0gJ1tudWxsXSc7XG5cdH0pKSRyZWRlZigkU3ltYm9sLnByb3RvdHlwZSwgJ3RvSlNPTicsIGZ1bmN0aW9uIHRvSlNPTigpe1xuXHQgIGlmKHVzZU5hdGl2ZSAmJiBpc09iamVjdCh0aGlzKSlyZXR1cm4gdGhpcztcblx0fSk7XG5cblx0dmFyIHN5bWJvbFN0YXRpY3MgPSB7XG5cdCAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG5cdCAgJ2Zvcic6IGZ1bmN0aW9uKGtleSl7XG5cdCAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG5cdCAgICAgID8gU3ltYm9sUmVnaXN0cnlba2V5XVxuXHQgICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG5cdCAgfSxcblx0ICAvLyAxOS40LjIuNSBTeW1ib2wua2V5Rm9yKHN5bSlcblx0ICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihrZXkpe1xuXHQgICAgcmV0dXJuIGtleU9mKFN5bWJvbFJlZ2lzdHJ5LCBrZXkpO1xuXHQgIH0sXG5cdCAgdXNlU2V0dGVyOiBmdW5jdGlvbigpeyBzZXR0ZXIgPSB0cnVlOyB9LFxuXHQgIHVzZVNpbXBsZTogZnVuY3Rpb24oKXsgc2V0dGVyID0gZmFsc2U7IH1cblx0fTtcblx0Ly8gMTkuNC4yLjIgU3ltYm9sLmhhc0luc3RhbmNlXG5cdC8vIDE5LjQuMi4zIFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGVcblx0Ly8gMTkuNC4yLjQgU3ltYm9sLml0ZXJhdG9yXG5cdC8vIDE5LjQuMi42IFN5bWJvbC5tYXRjaFxuXHQvLyAxOS40LjIuOCBTeW1ib2wucmVwbGFjZVxuXHQvLyAxOS40LjIuOSBTeW1ib2wuc2VhcmNoXG5cdC8vIDE5LjQuMi4xMCBTeW1ib2wuc3BlY2llc1xuXHQvLyAxOS40LjIuMTEgU3ltYm9sLnNwbGl0XG5cdC8vIDE5LjQuMi4xMiBTeW1ib2wudG9QcmltaXRpdmVcblx0Ly8gMTkuNC4yLjEzIFN5bWJvbC50b1N0cmluZ1RhZ1xuXHQvLyAxOS40LjIuMTQgU3ltYm9sLnVuc2NvcGFibGVzXG5cdCQuZWFjaC5jYWxsKChcblx0ICAgICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsJyArXG5cdCAgICAnc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcblx0ICApLnNwbGl0KCcsJyksIGZ1bmN0aW9uKGl0KXtcblx0ICAgIHZhciBzeW0gPSB3a3MoaXQpO1xuXHQgICAgc3ltYm9sU3RhdGljc1tpdF0gPSB1c2VOYXRpdmUgPyBzeW0gOiB3cmFwKHN5bSk7XG5cdCAgfVxuXHQpO1xuXG5cdHNldHRlciA9IHRydWU7XG5cblx0JGRlZigkZGVmLkcgKyAkZGVmLlcsIHtTeW1ib2w6ICRTeW1ib2x9KTtcblxuXHQkZGVmKCRkZWYuUywgJ1N5bWJvbCcsIHN5bWJvbFN0YXRpY3MpO1xuXG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogIXVzZU5hdGl2ZSwgJ09iamVjdCcsIHtcblx0ICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG5cdCAgY3JlYXRlOiAkY3JlYXRlLFxuXHQgIC8vIDE5LjEuMi40IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuXHQgIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG5cdCAgLy8gMTkuMS4yLjMgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcblx0ICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcblx0ICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG5cdCAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHQgIC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG5cdCAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG5cdCAgLy8gMTkuMS4yLjggT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhPKVxuXHQgIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xuXHR9KTtcblxuXHQvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5cdHNldFRhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG5cdC8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cblx0c2V0VGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG5cdC8vIDI0LjMuMyBKU09OW0BAdG9TdHJpbmdUYWddXG5cdHNldFRhZyhnbG9iYWwuSlNPTiwgJ0pTT04nLCB0cnVlKTtcblxuLyoqKi8gfSxcbi8qIDYwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgJCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iamVjdCwgZWwpe1xuXHQgIHZhciBPICAgICAgPSB0b0lPYmplY3Qob2JqZWN0KVxuXHQgICAgLCBrZXlzICAgPSAkLmdldEtleXMoTylcblx0ICAgICwgbGVuZ3RoID0ga2V5cy5sZW5ndGhcblx0ICAgICwgaW5kZXggID0gMFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobGVuZ3RoID4gaW5kZXgpaWYoT1trZXkgPSBrZXlzW2luZGV4KytdXSA9PT0gZWwpcmV0dXJuIGtleTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG5cdHZhciB0b1N0cmluZyAgPSB7fS50b1N0cmluZ1xuXHQgICwgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nilcblx0ICAsIGdldE5hbWVzICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLmdldE5hbWVzO1xuXG5cdHZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcblx0ICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxuXHR2YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbihpdCl7XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBnZXROYW1lcyhpdCk7XG5cdCAgfSBjYXRjaChlKXtcblx0ICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuXHQgIH1cblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cy5nZXQgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcblx0ICBpZih3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJylyZXR1cm4gZ2V0V2luZG93TmFtZXMoaXQpO1xuXHQgIHJldHVybiBnZXROYW1lcyh0b0lPYmplY3QoaXQpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBhbGwgZW51bWVyYWJsZSBvYmplY3Qga2V5cywgaW5jbHVkZXMgc3ltYm9sc1xuXHR2YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIga2V5cyAgICAgICA9ICQuZ2V0S2V5cyhpdClcblx0ICAgICwgZ2V0U3ltYm9scyA9ICQuZ2V0U3ltYm9scztcblx0ICBpZihnZXRTeW1ib2xzKXtcblx0ICAgIHZhciBzeW1ib2xzID0gZ2V0U3ltYm9scyhpdClcblx0ICAgICAgLCBpc0VudW0gID0gJC5pc0VudW1cblx0ICAgICAgLCBpICAgICAgID0gMFxuXHQgICAgICAsIGtleTtcblx0ICAgIHdoaWxlKHN5bWJvbHMubGVuZ3RoID4gaSlpZihpc0VudW0uY2FsbChpdCwga2V5ID0gc3ltYm9sc1tpKytdKSlrZXlzLnB1c2goa2V5KTtcblx0ICB9XG5cdCAgcmV0dXJuIGtleXM7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDY0KSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogNjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlKFAsIEQpe1xuXHQgIHJldHVybiAkLmNyZWF0ZShQLCBEKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDY1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNjYpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA2NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5Qcm9taXNlO1xuXG4vKioqLyB9LFxuLyogNjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdFxuXG4vKioqLyB9LFxuLyogNjggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgTElCUkFSWSAgICA9IF9fd2VicGFja19yZXF1aXJlX18oOSlcblx0ICAsIGdsb2JhbCAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgY3R4ICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpXG5cdCAgLCBjbGFzc29mICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNilcblx0ICAsICRkZWYgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgaXNPYmplY3QgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBhbk9iamVjdCAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIGFGdW5jdGlvbiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KVxuXHQgICwgc3RyaWN0TmV3ICA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpXG5cdCAgLCBmb3JPZiAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIHNldFByb3RvICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcxKS5zZXRcblx0ICAsIHNhbWUgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcyKVxuXHQgICwgc3BlY2llcyAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzMpXG5cdCAgLCBTUEVDSUVTICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ3NwZWNpZXMnKVxuXHQgICwgUkVDT1JEICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpKCdyZWNvcmQnKVxuXHQgICwgYXNhcCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzQpXG5cdCAgLCBQUk9NSVNFICAgID0gJ1Byb21pc2UnXG5cdCAgLCBwcm9jZXNzICAgID0gZ2xvYmFsLnByb2Nlc3Ncblx0ICAsIGlzTm9kZSAgICAgPSBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJ1xuXHQgICwgUCAgICAgICAgICA9IGdsb2JhbFtQUk9NSVNFXVxuXHQgICwgV3JhcHBlcjtcblxuXHR2YXIgdGVzdFJlc29sdmUgPSBmdW5jdGlvbihzdWIpe1xuXHQgIHZhciB0ZXN0ID0gbmV3IFAoZnVuY3Rpb24oKXt9KTtcblx0ICBpZihzdWIpdGVzdC5jb25zdHJ1Y3RvciA9IE9iamVjdDtcblx0ICByZXR1cm4gUC5yZXNvbHZlKHRlc3QpID09PSB0ZXN0O1xuXHR9O1xuXG5cdHZhciB1c2VOYXRpdmUgPSBmdW5jdGlvbigpe1xuXHQgIHZhciB3b3JrcyA9IGZhbHNlO1xuXHQgIGZ1bmN0aW9uIFAyKHgpe1xuXHQgICAgdmFyIHNlbGYgPSBuZXcgUCh4KTtcblx0ICAgIHNldFByb3RvKHNlbGYsIFAyLnByb3RvdHlwZSk7XG5cdCAgICByZXR1cm4gc2VsZjtcblx0ICB9XG5cdCAgdHJ5IHtcblx0ICAgIHdvcmtzID0gUCAmJiBQLnJlc29sdmUgJiYgdGVzdFJlc29sdmUoKTtcblx0ICAgIHNldFByb3RvKFAyLCBQKTtcblx0ICAgIFAyLnByb3RvdHlwZSA9ICQuY3JlYXRlKFAucHJvdG90eXBlLCB7Y29uc3RydWN0b3I6IHt2YWx1ZTogUDJ9fSk7XG5cdCAgICAvLyBhY3R1YWwgRmlyZWZveCBoYXMgYnJva2VuIHN1YmNsYXNzIHN1cHBvcnQsIHRlc3QgdGhhdFxuXHQgICAgaWYoIShQMi5yZXNvbHZlKDUpLnRoZW4oZnVuY3Rpb24oKXt9KSBpbnN0YW5jZW9mIFAyKSl7XG5cdCAgICAgIHdvcmtzID0gZmFsc2U7XG5cdCAgICB9XG5cdCAgICAvLyBhY3R1YWwgVjggYnVnLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDE2MlxuXHQgICAgaWYod29ya3MgJiYgX193ZWJwYWNrX3JlcXVpcmVfXygxNykpe1xuXHQgICAgICB2YXIgdGhlbmFibGVUaGVuR290dGVuID0gZmFsc2U7XG5cdCAgICAgIFAucmVzb2x2ZSgkLnNldERlc2Moe30sICd0aGVuJywge1xuXHQgICAgICAgIGdldDogZnVuY3Rpb24oKXsgdGhlbmFibGVUaGVuR290dGVuID0gdHJ1ZTsgfVxuXHQgICAgICB9KSk7XG5cdCAgICAgIHdvcmtzID0gdGhlbmFibGVUaGVuR290dGVuO1xuXHQgICAgfVxuXHQgIH0gY2F0Y2goZSl7IHdvcmtzID0gZmFsc2U7IH1cblx0ICByZXR1cm4gd29ya3M7XG5cdH0oKTtcblxuXHQvLyBoZWxwZXJzXG5cdHZhciBpc1Byb21pc2UgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiAodXNlTmF0aXZlID8gY2xhc3NvZihpdCkgPT0gJ1Byb21pc2UnIDogUkVDT1JEIGluIGl0KTtcblx0fTtcblx0dmFyIHNhbWVDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uKGEsIGIpe1xuXHQgIC8vIGxpYnJhcnkgd3JhcHBlciBzcGVjaWFsIGNhc2Vcblx0ICBpZihMSUJSQVJZICYmIGEgPT09IFAgJiYgYiA9PT0gV3JhcHBlcilyZXR1cm4gdHJ1ZTtcblx0ICByZXR1cm4gc2FtZShhLCBiKTtcblx0fTtcblx0dmFyIGdldENvbnN0cnVjdG9yID0gZnVuY3Rpb24oQyl7XG5cdCAgdmFyIFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXTtcblx0ICByZXR1cm4gUyAhPSB1bmRlZmluZWQgPyBTIDogQztcblx0fTtcblx0dmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbihpdCl7XG5cdCAgdmFyIHRoZW47XG5cdCAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xuXHR9O1xuXHR2YXIgbm90aWZ5ID0gZnVuY3Rpb24ocmVjb3JkLCBpc1JlamVjdCl7XG5cdCAgaWYocmVjb3JkLm4pcmV0dXJuO1xuXHQgIHJlY29yZC5uID0gdHJ1ZTtcblx0ICB2YXIgY2hhaW4gPSByZWNvcmQuYztcblx0ICBhc2FwKGZ1bmN0aW9uKCl7XG5cdCAgICB2YXIgdmFsdWUgPSByZWNvcmQudlxuXHQgICAgICAsIG9rICAgID0gcmVjb3JkLnMgPT0gMVxuXHQgICAgICAsIGkgICAgID0gMDtcblx0ICAgIHZhciBydW4gPSBmdW5jdGlvbihyZWFjdCl7XG5cdCAgICAgIHZhciBjYiA9IG9rID8gcmVhY3Qub2sgOiByZWFjdC5mYWlsXG5cdCAgICAgICAgLCByZXQsIHRoZW47XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgaWYoY2Ipe1xuXHQgICAgICAgICAgaWYoIW9rKXJlY29yZC5oID0gdHJ1ZTtcblx0ICAgICAgICAgIHJldCA9IGNiID09PSB0cnVlID8gdmFsdWUgOiBjYih2YWx1ZSk7XG5cdCAgICAgICAgICBpZihyZXQgPT09IHJlYWN0LlApe1xuXHQgICAgICAgICAgICByZWFjdC5yZWooVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuXHQgICAgICAgICAgfSBlbHNlIGlmKHRoZW4gPSBpc1RoZW5hYmxlKHJldCkpe1xuXHQgICAgICAgICAgICB0aGVuLmNhbGwocmV0LCByZWFjdC5yZXMsIHJlYWN0LnJlaik7XG5cdCAgICAgICAgICB9IGVsc2UgcmVhY3QucmVzKHJldCk7XG5cdCAgICAgICAgfSBlbHNlIHJlYWN0LnJlaih2YWx1ZSk7XG5cdCAgICAgIH0gY2F0Y2goZXJyKXtcblx0ICAgICAgICByZWFjdC5yZWooZXJyKTtcblx0ICAgICAgfVxuXHQgICAgfTtcblx0ICAgIHdoaWxlKGNoYWluLmxlbmd0aCA+IGkpcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuXHQgICAgY2hhaW4ubGVuZ3RoID0gMDtcblx0ICAgIHJlY29yZC5uID0gZmFsc2U7XG5cdCAgICBpZihpc1JlamVjdClzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG5cdCAgICAgIHZhciBwcm9taXNlID0gcmVjb3JkLnBcblx0ICAgICAgICAsIGhhbmRsZXIsIGNvbnNvbGU7XG5cdCAgICAgIGlmKGlzVW5oYW5kbGVkKHByb21pc2UpKXtcblx0ICAgICAgICBpZihpc05vZGUpe1xuXHQgICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG5cdCAgICAgICAgfSBlbHNlIGlmKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pe1xuXHQgICAgICAgICAgaGFuZGxlcih7cHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZX0pO1xuXHQgICAgICAgIH0gZWxzZSBpZigoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKXtcblx0ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gcmVjb3JkLmEgPSB1bmRlZmluZWQ7XG5cdCAgICB9LCAxKTtcblx0ICB9KTtcblx0fTtcblx0dmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24ocHJvbWlzZSl7XG5cdCAgdmFyIHJlY29yZCA9IHByb21pc2VbUkVDT1JEXVxuXHQgICAgLCBjaGFpbiAgPSByZWNvcmQuYSB8fCByZWNvcmQuY1xuXHQgICAgLCBpICAgICAgPSAwXG5cdCAgICAsIHJlYWN0O1xuXHQgIGlmKHJlY29yZC5oKXJldHVybiBmYWxzZTtcblx0ICB3aGlsZShjaGFpbi5sZW5ndGggPiBpKXtcblx0ICAgIHJlYWN0ID0gY2hhaW5baSsrXTtcblx0ICAgIGlmKHJlYWN0LmZhaWwgfHwgIWlzVW5oYW5kbGVkKHJlYWN0LlApKXJldHVybiBmYWxzZTtcblx0ICB9IHJldHVybiB0cnVlO1xuXHR9O1xuXHR2YXIgJHJlamVjdCA9IGZ1bmN0aW9uKHZhbHVlKXtcblx0ICB2YXIgcmVjb3JkID0gdGhpcztcblx0ICBpZihyZWNvcmQuZClyZXR1cm47XG5cdCAgcmVjb3JkLmQgPSB0cnVlO1xuXHQgIHJlY29yZCA9IHJlY29yZC5yIHx8IHJlY29yZDsgLy8gdW53cmFwXG5cdCAgcmVjb3JkLnYgPSB2YWx1ZTtcblx0ICByZWNvcmQucyA9IDI7XG5cdCAgcmVjb3JkLmEgPSByZWNvcmQuYy5zbGljZSgpO1xuXHQgIG5vdGlmeShyZWNvcmQsIHRydWUpO1xuXHR9O1xuXHR2YXIgJHJlc29sdmUgPSBmdW5jdGlvbih2YWx1ZSl7XG5cdCAgdmFyIHJlY29yZCA9IHRoaXNcblx0ICAgICwgdGhlbjtcblx0ICBpZihyZWNvcmQuZClyZXR1cm47XG5cdCAgcmVjb3JkLmQgPSB0cnVlO1xuXHQgIHJlY29yZCA9IHJlY29yZC5yIHx8IHJlY29yZDsgLy8gdW53cmFwXG5cdCAgdHJ5IHtcblx0ICAgIGlmKHRoZW4gPSBpc1RoZW5hYmxlKHZhbHVlKSl7XG5cdCAgICAgIGFzYXAoZnVuY3Rpb24oKXtcblx0ICAgICAgICB2YXIgd3JhcHBlciA9IHtyOiByZWNvcmQsIGQ6IGZhbHNlfTsgLy8gd3JhcFxuXHQgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG5cdCAgICAgICAgfSBjYXRjaChlKXtcblx0ICAgICAgICAgICRyZWplY3QuY2FsbCh3cmFwcGVyLCBlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmVjb3JkLnYgPSB2YWx1ZTtcblx0ICAgICAgcmVjb3JkLnMgPSAxO1xuXHQgICAgICBub3RpZnkocmVjb3JkLCBmYWxzZSk7XG5cdCAgICB9XG5cdCAgfSBjYXRjaChlKXtcblx0ICAgICRyZWplY3QuY2FsbCh7cjogcmVjb3JkLCBkOiBmYWxzZX0sIGUpOyAvLyB3cmFwXG5cdCAgfVxuXHR9O1xuXG5cdC8vIGNvbnN0cnVjdG9yIHBvbHlmaWxsXG5cdGlmKCF1c2VOYXRpdmUpe1xuXHQgIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG5cdCAgUCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3Ipe1xuXHQgICAgYUZ1bmN0aW9uKGV4ZWN1dG9yKTtcblx0ICAgIHZhciByZWNvcmQgPSB7XG5cdCAgICAgIHA6IHN0cmljdE5ldyh0aGlzLCBQLCBQUk9NSVNFKSwgICAgICAgICAvLyA8LSBwcm9taXNlXG5cdCAgICAgIGM6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBhd2FpdGluZyByZWFjdGlvbnNcblx0ICAgICAgYTogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGNoZWNrZWQgaW4gaXNVbmhhbmRsZWQgcmVhY3Rpb25zXG5cdCAgICAgIHM6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBzdGF0ZVxuXHQgICAgICBkOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gZG9uZVxuXHQgICAgICB2OiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWVcblx0ICAgICAgaDogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGhhbmRsZWQgcmVqZWN0aW9uXG5cdCAgICAgIG46IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBub3RpZnlcblx0ICAgIH07XG5cdCAgICB0aGlzW1JFQ09SRF0gPSByZWNvcmQ7XG5cdCAgICB0cnkge1xuXHQgICAgICBleGVjdXRvcihjdHgoJHJlc29sdmUsIHJlY29yZCwgMSksIGN0eCgkcmVqZWN0LCByZWNvcmQsIDEpKTtcblx0ICAgIH0gY2F0Y2goZXJyKXtcblx0ICAgICAgJHJlamVjdC5jYWxsKHJlY29yZCwgZXJyKTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oNzkpKFAucHJvdG90eXBlLCB7XG5cdCAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuXHQgICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCl7XG5cdCAgICAgIHZhciBTID0gYW5PYmplY3QoYW5PYmplY3QodGhpcykuY29uc3RydWN0b3IpW1NQRUNJRVNdO1xuXHQgICAgICB2YXIgcmVhY3QgPSB7XG5cdCAgICAgICAgb2s6ICAgdHlwZW9mIG9uRnVsZmlsbGVkID09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IHRydWUsXG5cdCAgICAgICAgZmFpbDogdHlwZW9mIG9uUmVqZWN0ZWQgPT0gJ2Z1bmN0aW9uJyAgPyBvblJlamVjdGVkICA6IGZhbHNlXG5cdCAgICAgIH07XG5cdCAgICAgIHZhciBwcm9taXNlID0gcmVhY3QuUCA9IG5ldyAoUyAhPSB1bmRlZmluZWQgPyBTIDogUCkoZnVuY3Rpb24ocmVzLCByZWope1xuXHQgICAgICAgIHJlYWN0LnJlcyA9IHJlcztcblx0ICAgICAgICByZWFjdC5yZWogPSByZWo7XG5cdCAgICAgIH0pO1xuXHQgICAgICBhRnVuY3Rpb24ocmVhY3QucmVzKTtcblx0ICAgICAgYUZ1bmN0aW9uKHJlYWN0LnJlaik7XG5cdCAgICAgIHZhciByZWNvcmQgPSB0aGlzW1JFQ09SRF07XG5cdCAgICAgIHJlY29yZC5jLnB1c2gocmVhY3QpO1xuXHQgICAgICBpZihyZWNvcmQuYSlyZWNvcmQuYS5wdXNoKHJlYWN0KTtcblx0ICAgICAgaWYocmVjb3JkLnMpbm90aWZ5KHJlY29yZCwgZmFsc2UpO1xuXHQgICAgICByZXR1cm4gcHJvbWlzZTtcblx0ICAgIH0sXG5cdCAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuXHQgICAgJ2NhdGNoJzogZnVuY3Rpb24ob25SZWplY3RlZCl7XG5cdCAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcblx0ICAgIH1cblx0ICB9KTtcblx0fVxuXG5cdC8vIGV4cG9ydFxuXHQkZGVmKCRkZWYuRyArICRkZWYuVyArICRkZWYuRiAqICF1c2VOYXRpdmUsIHtQcm9taXNlOiBQfSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oMjUpKFAsIFBST01JU0UpO1xuXHRzcGVjaWVzKFApO1xuXHRzcGVjaWVzKFdyYXBwZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKVtQUk9NSVNFXSk7XG5cblx0Ly8gc3RhdGljc1xuXHQkZGVmKCRkZWYuUyArICRkZWYuRiAqICF1c2VOYXRpdmUsIFBST01JU0UsIHtcblx0ICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuXHQgIHJlamVjdDogZnVuY3Rpb24gcmVqZWN0KHIpe1xuXHQgICAgcmV0dXJuIG5ldyB0aGlzKGZ1bmN0aW9uKHJlcywgcmVqKXsgcmVqKHIpOyB9KTtcblx0ICB9XG5cdH0pO1xuXHQkZGVmKCRkZWYuUyArICRkZWYuRiAqICghdXNlTmF0aXZlIHx8IHRlc3RSZXNvbHZlKHRydWUpKSwgUFJPTUlTRSwge1xuXHQgIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuXHQgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCl7XG5cdCAgICByZXR1cm4gaXNQcm9taXNlKHgpICYmIHNhbWVDb25zdHJ1Y3Rvcih4LmNvbnN0cnVjdG9yLCB0aGlzKVxuXHQgICAgICA/IHggOiBuZXcgdGhpcyhmdW5jdGlvbihyZXMpeyByZXMoeCk7IH0pO1xuXHQgIH1cblx0fSk7XG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogISh1c2VOYXRpdmUgJiYgX193ZWJwYWNrX3JlcXVpcmVfXygzOCkoZnVuY3Rpb24oaXRlcil7XG5cdCAgUC5hbGwoaXRlcilbJ2NhdGNoJ10oZnVuY3Rpb24oKXt9KTtcblx0fSkpLCBQUk9NSVNFLCB7XG5cdCAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG5cdCAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpe1xuXHQgICAgdmFyIEMgICAgICA9IGdldENvbnN0cnVjdG9yKHRoaXMpXG5cdCAgICAgICwgdmFsdWVzID0gW107XG5cdCAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24ocmVzLCByZWope1xuXHQgICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIHZhbHVlcy5wdXNoLCB2YWx1ZXMpO1xuXHQgICAgICB2YXIgcmVtYWluaW5nID0gdmFsdWVzLmxlbmd0aFxuXHQgICAgICAgICwgcmVzdWx0cyAgID0gQXJyYXkocmVtYWluaW5nKTtcblx0ICAgICAgaWYocmVtYWluaW5nKSQuZWFjaC5jYWxsKHZhbHVlcywgZnVuY3Rpb24ocHJvbWlzZSwgaW5kZXgpe1xuXHQgICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGZ1bmN0aW9uKHZhbHVlKXtcblx0ICAgICAgICAgIHJlc3VsdHNbaW5kZXhdID0gdmFsdWU7XG5cdCAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXMocmVzdWx0cyk7XG5cdCAgICAgICAgfSwgcmVqKTtcblx0ICAgICAgfSk7XG5cdCAgICAgIGVsc2UgcmVzKHJlc3VsdHMpO1xuXHQgICAgfSk7XG5cdCAgfSxcblx0ICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG5cdCAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSl7XG5cdCAgICB2YXIgQyA9IGdldENvbnN0cnVjdG9yKHRoaXMpO1xuXHQgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uKHJlcywgcmVqKXtcblx0ICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbihwcm9taXNlKXtcblx0ICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihyZXMsIHJlaik7XG5cdCAgICAgIH0pO1xuXHQgICAgfSk7XG5cdCAgfVxuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDY5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSl7XG5cdCAgaWYoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSl0aHJvdyBUeXBlRXJyb3IobmFtZSArIFwiOiB1c2UgdGhlICduZXcnIG9wZXJhdG9yIVwiKTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGN0eCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsIGNhbGwgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMClcblx0ICAsIGlzQXJyYXlJdGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMylcblx0ICAsIGFuT2JqZWN0ICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIHRvTGVuZ3RoICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNClcblx0ICAsIGdldEl0ZXJGbiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0KXtcblx0ICB2YXIgaXRlckZuID0gZ2V0SXRlckZuKGl0ZXJhYmxlKVxuXHQgICAgLCBmICAgICAgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSlcblx0ICAgICwgaW5kZXggID0gMFxuXHQgICAgLCBsZW5ndGgsIHN0ZXAsIGl0ZXJhdG9yO1xuXHQgIGlmKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcblx0ICAvLyBmYXN0IGNhc2UgZm9yIGFycmF5cyB3aXRoIGRlZmF1bHQgaXRlcmF0b3Jcblx0ICBpZihpc0FycmF5SXRlcihpdGVyRm4pKWZvcihsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKyl7XG5cdCAgICBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7XG5cdCAgfSBlbHNlIGZvcihpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyApe1xuXHQgICAgY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7XG5cdCAgfVxuXHR9O1xuXG4vKioqLyB9LFxuLyogNzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuXHQvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXHR2YXIgZ2V0RGVzYyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KS5nZXREZXNjXG5cdCAgLCBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpO1xuXHR2YXIgY2hlY2sgPSBmdW5jdGlvbihPLCBwcm90byl7XG5cdCAgYW5PYmplY3QoTyk7XG5cdCAgaWYoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCl0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG5cdH07XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG9cblx0ICAgIGZ1bmN0aW9uKHRlc3QsIGJ1Z2d5LCBzZXQpe1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIHNldCA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpKEZ1bmN0aW9uLmNhbGwsIGdldERlc2MoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLnNldCwgMik7XG5cdCAgICAgICAgc2V0KHRlc3QsIFtdKTtcblx0ICAgICAgICBidWdneSA9ICEodGVzdCBpbnN0YW5jZW9mIEFycmF5KTtcblx0ICAgICAgfSBjYXRjaChlKXsgYnVnZ3kgPSB0cnVlOyB9XG5cdCAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90byl7XG5cdCAgICAgICAgY2hlY2soTywgcHJvdG8pO1xuXHQgICAgICAgIGlmKGJ1Z2d5KU8uX19wcm90b19fID0gcHJvdG87XG5cdCAgICAgICAgZWxzZSBzZXQoTywgcHJvdG8pO1xuXHQgICAgICAgIHJldHVybiBPO1xuXHQgICAgICB9O1xuXHQgICAgfSh7fSwgZmFsc2UpIDogdW5kZWZpbmVkKSxcblx0ICBjaGVjazogY2hlY2tcblx0fTtcblxuLyoqKi8gfSxcbi8qIDcyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5pcyB8fCBmdW5jdGlvbiBpcyh4LCB5KXtcblx0ICByZXR1cm4geCA9PT0geSA/IHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5IDogeCAhPSB4ICYmIHkgIT0geTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDczICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIFNQRUNJRVMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnc3BlY2llcycpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEMpe1xuXHQgIGlmKF9fd2VicGFja19yZXF1aXJlX18oMTcpICYmICEoU1BFQ0lFUyBpbiBDKSkkLnNldERlc2MoQywgU1BFQ0lFUywge1xuXHQgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuXHQgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfVxuXHQgIH0pO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBnbG9iYWwgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxyXG5cdCAgLCBtYWNyb3Rhc2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc1KS5zZXRcclxuXHQgICwgT2JzZXJ2ZXIgID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXJcclxuXHQgICwgcHJvY2VzcyAgID0gZ2xvYmFsLnByb2Nlc3NcclxuXHQgICwgaXNOb2RlICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnXHJcblx0ICAsIGhlYWQsIGxhc3QsIG5vdGlmeTtcclxuXHJcblx0dmFyIGZsdXNoID0gZnVuY3Rpb24oKXtcclxuXHQgIHZhciBwYXJlbnQsIGRvbWFpbjtcclxuXHQgIGlmKGlzTm9kZSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKXtcclxuXHQgICAgcHJvY2Vzcy5kb21haW4gPSBudWxsO1xyXG5cdCAgICBwYXJlbnQuZXhpdCgpO1xyXG5cdCAgfVxyXG5cdCAgd2hpbGUoaGVhZCl7XHJcblx0ICAgIGRvbWFpbiA9IGhlYWQuZG9tYWluO1xyXG5cdCAgICBpZihkb21haW4pZG9tYWluLmVudGVyKCk7XHJcblx0ICAgIGhlYWQuZm4uY2FsbCgpOyAvLyA8LSBjdXJyZW50bHkgd2UgdXNlIGl0IG9ubHkgZm9yIFByb21pc2UgLSB0cnkgLyBjYXRjaCBub3QgcmVxdWlyZWRcclxuXHQgICAgaWYoZG9tYWluKWRvbWFpbi5leGl0KCk7XHJcblx0ICAgIGhlYWQgPSBoZWFkLm5leHQ7XHJcblx0ICB9IGxhc3QgPSB1bmRlZmluZWQ7XHJcblx0ICBpZihwYXJlbnQpcGFyZW50LmVudGVyKCk7XHJcblx0fVxyXG5cclxuXHQvLyBOb2RlLmpzXHJcblx0aWYoaXNOb2RlKXtcclxuXHQgIG5vdGlmeSA9IGZ1bmN0aW9uKCl7XHJcblx0ICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xyXG5cdCAgfTtcclxuXHQvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJcclxuXHR9IGVsc2UgaWYoT2JzZXJ2ZXIpe1xyXG5cdCAgdmFyIHRvZ2dsZSA9IDFcclxuXHQgICAgLCBub2RlICAgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XHJcblx0ICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcclxuXHQgIG5vdGlmeSA9IGZ1bmN0aW9uKCl7XHJcblx0ICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9IC10b2dnbGU7XHJcblx0ICB9O1xyXG5cdC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XHJcblx0Ly8gLSBzZXRJbW1lZGlhdGVcclxuXHQvLyAtIE1lc3NhZ2VDaGFubmVsXHJcblx0Ly8gLSB3aW5kb3cucG9zdE1lc3NhZ1xyXG5cdC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXHJcblx0Ly8gLSBzZXRUaW1lb3V0XHJcblx0fSBlbHNlIHtcclxuXHQgIG5vdGlmeSA9IGZ1bmN0aW9uKCl7XHJcblx0ICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcclxuXHQgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XHJcblx0ICB9O1xyXG5cdH1cclxuXHJcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBhc2FwKGZuKXtcclxuXHQgIHZhciB0YXNrID0ge2ZuOiBmbiwgbmV4dDogdW5kZWZpbmVkLCBkb21haW46IGlzTm9kZSAmJiBwcm9jZXNzLmRvbWFpbn07XHJcblx0ICBpZihsYXN0KWxhc3QubmV4dCA9IHRhc2s7XHJcblx0ICBpZighaGVhZCl7XHJcblx0ICAgIGhlYWQgPSB0YXNrO1xyXG5cdCAgICBub3RpZnkoKTtcclxuXHQgIH0gbGFzdCA9IHRhc2s7XHJcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciBjdHggICAgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgaW52b2tlICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nilcblx0ICAsIGh0bWwgICAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzcpXG5cdCAgLCBjZWwgICAgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc4KVxuXHQgICwgZ2xvYmFsICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIHByb2Nlc3MgICAgICAgICAgICA9IGdsb2JhbC5wcm9jZXNzXG5cdCAgLCBzZXRUYXNrICAgICAgICAgICAgPSBnbG9iYWwuc2V0SW1tZWRpYXRlXG5cdCAgLCBjbGVhclRhc2sgICAgICAgICAgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGVcblx0ICAsIE1lc3NhZ2VDaGFubmVsICAgICA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbFxuXHQgICwgY291bnRlciAgICAgICAgICAgID0gMFxuXHQgICwgcXVldWUgICAgICAgICAgICAgID0ge31cblx0ICAsIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnXG5cdCAgLCBkZWZlciwgY2hhbm5lbCwgcG9ydDtcblx0dmFyIHJ1biA9IGZ1bmN0aW9uKCl7XG5cdCAgdmFyIGlkID0gK3RoaXM7XG5cdCAgaWYocXVldWUuaGFzT3duUHJvcGVydHkoaWQpKXtcblx0ICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcblx0ICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG5cdCAgICBmbigpO1xuXHQgIH1cblx0fTtcblx0dmFyIGxpc3RuZXIgPSBmdW5jdGlvbihldmVudCl7XG5cdCAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG5cdH07XG5cdC8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcblx0aWYoIXNldFRhc2sgfHwgIWNsZWFyVGFzayl7XG5cdCAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbil7XG5cdCAgICB2YXIgYXJncyA9IFtdLCBpID0gMTtcblx0ICAgIHdoaWxlKGFyZ3VtZW50cy5sZW5ndGggPiBpKWFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG5cdCAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24oKXtcblx0ICAgICAgaW52b2tlKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbiksIGFyZ3MpO1xuXHQgICAgfTtcblx0ICAgIGRlZmVyKGNvdW50ZXIpO1xuXHQgICAgcmV0dXJuIGNvdW50ZXI7XG5cdCAgfTtcblx0ICBjbGVhclRhc2sgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShpZCl7XG5cdCAgICBkZWxldGUgcXVldWVbaWRdO1xuXHQgIH07XG5cdCAgLy8gTm9kZS5qcyAwLjgtXG5cdCAgaWYoX193ZWJwYWNrX3JlcXVpcmVfXygzNykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnKXtcblx0ICAgIGRlZmVyID0gZnVuY3Rpb24oaWQpe1xuXHQgICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG5cdCAgICB9O1xuXHQgIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcblx0ICB9IGVsc2UgaWYoTWVzc2FnZUNoYW5uZWwpe1xuXHQgICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDtcblx0ICAgIHBvcnQgICAgPSBjaGFubmVsLnBvcnQyO1xuXHQgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0bmVyO1xuXHQgICAgZGVmZXIgPSBjdHgocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCwgMSk7XG5cdCAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG5cdCAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcblx0ICB9IGVsc2UgaWYoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHQpe1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuXHQgICAgfTtcblx0ICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdG5lciwgZmFsc2UpO1xuXHQgIC8vIElFOC1cblx0ICB9IGVsc2UgaWYoT05SRUFEWVNUQVRFQ0hBTkdFIGluIGNlbCgnc2NyaXB0Jykpe1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIGh0bWwuYXBwZW5kQ2hpbGQoY2VsKCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcblx0ICAgICAgICBydW4uY2FsbChpZCk7XG5cdCAgICAgIH07XG5cdCAgICB9O1xuXHQgIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG5cdCAgfSBlbHNlIHtcblx0ICAgIGRlZmVyID0gZnVuY3Rpb24oaWQpe1xuXHQgICAgICBzZXRUaW1lb3V0KGN0eChydW4sIGlkLCAxKSwgMCk7XG5cdCAgICB9O1xuXHQgIH1cblx0fVxuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBzZXQ6ICAgc2V0VGFzayxcblx0ICBjbGVhcjogY2xlYXJUYXNrXG5cdH07XG5cbi8qKiovIH0sXG4vKiA3NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm4sIGFyZ3MsIHRoYXQpe1xuXHQgIHZhciB1biA9IHRoYXQgPT09IHVuZGVmaW5lZDtcblx0ICBzd2l0Y2goYXJncy5sZW5ndGgpe1xuXHQgICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCk7XG5cdCAgICBjYXNlIDE6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0pXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG5cdCAgICBjYXNlIDI6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0pXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSk7XG5cdCAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG5cdCAgICBjYXNlIDQ6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG5cdCAgfSByZXR1cm4gICAgICAgICAgICAgIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSkuZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4vKioqLyB9LFxuLyogNzggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpLmRvY3VtZW50XG5cdCAgLy8gaW4gb2xkIElFIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnXG5cdCAgLCBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgJHJlZGVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odGFyZ2V0LCBzcmMpe1xuXHQgIGZvcih2YXIga2V5IGluIHNyYykkcmVkZWYodGFyZ2V0LCBrZXksIHNyY1trZXldKTtcblx0ICByZXR1cm4gdGFyZ2V0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogODAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg4MSksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDgxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDgyKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5PYmplY3Qua2V5cztcblxuLyoqKi8gfSxcbi8qIDgyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyAxOS4xLjIuMTQgT2JqZWN0LmtleXMoTylcblx0dmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4MykoJ2tleXMnLCBmdW5jdGlvbigka2V5cyl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpe1xuXHQgICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG5cdCAgfTtcblx0fSk7XG5cbi8qKiovIH0sXG4vKiA4MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oS0VZLCBleGVjKXtcblx0ICB2YXIgJGRlZiA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgICAsIGZuICAgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygxMikuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldXG5cdCAgICAsIGV4cCAgPSB7fTtcblx0ICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuXHQgICRkZWYoJGRlZi5TICsgJGRlZi5GICogX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDg0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oODUpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA4NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDg2KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4OSk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuU2V0O1xuXG4vKioqLyB9LFxuLyogODYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIHN0cm9uZyA9IF9fd2VicGFja19yZXF1aXJlX18oODcpO1xuXG5cdC8vIDIzLjIgU2V0IE9iamVjdHNcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4OCkoJ1NldCcsIGZ1bmN0aW9uKGdldCl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50c1swXSk7IH07XG5cdH0sIHtcblx0ICAvLyAyMy4yLjMuMSBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSlcblx0ICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSl7XG5cdCAgICByZXR1cm4gc3Ryb25nLmRlZih0aGlzLCB2YWx1ZSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlLCB2YWx1ZSk7XG5cdCAgfVxuXHR9LCBzdHJvbmcpO1xuXG4vKioqLyB9LFxuLyogODcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBoaWRlICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgY3R4ICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsIHNwZWNpZXMgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzMpXG5cdCAgLCBzdHJpY3ROZXcgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KVxuXHQgICwgZGVmaW5lZCAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KVxuXHQgICwgZm9yT2YgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIHN0ZXAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpXG5cdCAgLCBJRCAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKSgnaWQnKVxuXHQgICwgJGhhcyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIGlzT2JqZWN0ICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlIHx8IGlzT2JqZWN0XG5cdCAgLCBTVVBQT1JUX0RFU0MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KVxuXHQgICwgU0laRSAgICAgICAgID0gU1VQUE9SVF9ERVNDID8gJ19zJyA6ICdzaXplJ1xuXHQgICwgaWQgICAgICAgICAgID0gMDtcblxuXHR2YXIgZmFzdEtleSA9IGZ1bmN0aW9uKGl0LCBjcmVhdGUpe1xuXHQgIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcblx0ICBpZighaXNPYmplY3QoaXQpKXJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG5cdCAgaWYoISRoYXMoaXQsIElEKSl7XG5cdCAgICAvLyBjYW4ndCBzZXQgaWQgdG8gZnJvemVuIG9iamVjdFxuXHQgICAgaWYoIWlzRXh0ZW5zaWJsZShpdCkpcmV0dXJuICdGJztcblx0ICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIGlkXG5cdCAgICBpZighY3JlYXRlKXJldHVybiAnRSc7XG5cdCAgICAvLyBhZGQgbWlzc2luZyBvYmplY3QgaWRcblx0ICAgIGhpZGUoaXQsIElELCArK2lkKTtcblx0ICAvLyByZXR1cm4gb2JqZWN0IGlkIHdpdGggcHJlZml4XG5cdCAgfSByZXR1cm4gJ08nICsgaXRbSURdO1xuXHR9O1xuXG5cdHZhciBnZXRFbnRyeSA9IGZ1bmN0aW9uKHRoYXQsIGtleSl7XG5cdCAgLy8gZmFzdCBjYXNlXG5cdCAgdmFyIGluZGV4ID0gZmFzdEtleShrZXkpLCBlbnRyeTtcblx0ICBpZihpbmRleCAhPT0gJ0YnKXJldHVybiB0aGF0Ll9pW2luZGV4XTtcblx0ICAvLyBmcm96ZW4gb2JqZWN0IGNhc2Vcblx0ICBmb3IoZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKXtcblx0ICAgIGlmKGVudHJ5LmsgPT0ga2V5KXJldHVybiBlbnRyeTtcblx0ICB9XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpe1xuXHQgICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRoYXQsIGl0ZXJhYmxlKXtcblx0ICAgICAgc3RyaWN0TmV3KHRoYXQsIEMsIE5BTUUpO1xuXHQgICAgICB0aGF0Ll9pID0gJC5jcmVhdGUobnVsbCk7IC8vIGluZGV4XG5cdCAgICAgIHRoYXQuX2YgPSB1bmRlZmluZWQ7ICAgICAgLy8gZmlyc3QgZW50cnlcblx0ICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgICAgICAvLyBsYXN0IGVudHJ5XG5cdCAgICAgIHRoYXRbU0laRV0gPSAwOyAgICAgICAgICAgLy8gc2l6ZVxuXHQgICAgICBpZihpdGVyYWJsZSAhPSB1bmRlZmluZWQpZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuXHQgICAgfSk7XG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KShDLnByb3RvdHlwZSwge1xuXHQgICAgICAvLyAyMy4xLjMuMSBNYXAucHJvdG90eXBlLmNsZWFyKClcblx0ICAgICAgLy8gMjMuMi4zLjIgU2V0LnByb3RvdHlwZS5jbGVhcigpXG5cdCAgICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpe1xuXHQgICAgICAgIGZvcih2YXIgdGhhdCA9IHRoaXMsIGRhdGEgPSB0aGF0Ll9pLCBlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pe1xuXHQgICAgICAgICAgZW50cnkuciA9IHRydWU7XG5cdCAgICAgICAgICBpZihlbnRyeS5wKWVudHJ5LnAgPSBlbnRyeS5wLm4gPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICBkZWxldGUgZGF0YVtlbnRyeS5pXTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhhdC5fZiA9IHRoYXQuX2wgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgdGhhdFtTSVpFXSA9IDA7XG5cdCAgICAgIH0sXG5cdCAgICAgIC8vIDIzLjEuMy4zIE1hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcblx0ICAgICAgLy8gMjMuMi4zLjQgU2V0LnByb3RvdHlwZS5kZWxldGUodmFsdWUpXG5cdCAgICAgICdkZWxldGUnOiBmdW5jdGlvbihrZXkpe1xuXHQgICAgICAgIHZhciB0aGF0ICA9IHRoaXNcblx0ICAgICAgICAgICwgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuXHQgICAgICAgIGlmKGVudHJ5KXtcblx0ICAgICAgICAgIHZhciBuZXh0ID0gZW50cnkublxuXHQgICAgICAgICAgICAsIHByZXYgPSBlbnRyeS5wO1xuXHQgICAgICAgICAgZGVsZXRlIHRoYXQuX2lbZW50cnkuaV07XG5cdCAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcblx0ICAgICAgICAgIGlmKHByZXYpcHJldi5uID0gbmV4dDtcblx0ICAgICAgICAgIGlmKG5leHQpbmV4dC5wID0gcHJldjtcblx0ICAgICAgICAgIGlmKHRoYXQuX2YgPT0gZW50cnkpdGhhdC5fZiA9IG5leHQ7XG5cdCAgICAgICAgICBpZih0aGF0Ll9sID09IGVudHJ5KXRoYXQuX2wgPSBwcmV2O1xuXHQgICAgICAgICAgdGhhdFtTSVpFXS0tO1xuXHQgICAgICAgIH0gcmV0dXJuICEhZW50cnk7XG5cdCAgICAgIH0sXG5cdCAgICAgIC8vIDIzLjIuMy42IFNldC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuXHQgICAgICAvLyAyMy4xLjMuNSBNYXAucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcblx0ICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qLCB0aGF0ID0gdW5kZWZpbmVkICovKXtcblx0ICAgICAgICB2YXIgZiA9IGN0eChjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0sIDMpXG5cdCAgICAgICAgICAsIGVudHJ5O1xuXHQgICAgICAgIHdoaWxlKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhpcy5fZil7XG5cdCAgICAgICAgICBmKGVudHJ5LnYsIGVudHJ5LmssIHRoaXMpO1xuXHQgICAgICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG5cdCAgICAgICAgICB3aGlsZShlbnRyeSAmJiBlbnRyeS5yKWVudHJ5ID0gZW50cnkucDtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sXG5cdCAgICAgIC8vIDIzLjEuMy43IE1hcC5wcm90b3R5cGUuaGFzKGtleSlcblx0ICAgICAgLy8gMjMuMi4zLjcgU2V0LnByb3RvdHlwZS5oYXModmFsdWUpXG5cdCAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSl7XG5cdCAgICAgICAgcmV0dXJuICEhZ2V0RW50cnkodGhpcywga2V5KTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgICBpZihTVVBQT1JUX0RFU0MpJC5zZXREZXNjKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcblx0ICAgICAgZ2V0OiBmdW5jdGlvbigpe1xuXHQgICAgICAgIHJldHVybiBkZWZpbmVkKHRoaXNbU0laRV0pO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIHJldHVybiBDO1xuXHQgIH0sXG5cdCAgZGVmOiBmdW5jdGlvbih0aGF0LCBrZXksIHZhbHVlKXtcblx0ICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSlcblx0ICAgICAgLCBwcmV2LCBpbmRleDtcblx0ICAgIC8vIGNoYW5nZSBleGlzdGluZyBlbnRyeVxuXHQgICAgaWYoZW50cnkpe1xuXHQgICAgICBlbnRyeS52ID0gdmFsdWU7XG5cdCAgICAvLyBjcmVhdGUgbmV3IGVudHJ5XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aGF0Ll9sID0gZW50cnkgPSB7XG5cdCAgICAgICAgaTogaW5kZXggPSBmYXN0S2V5KGtleSwgdHJ1ZSksIC8vIDwtIGluZGV4XG5cdCAgICAgICAgazoga2V5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGtleVxuXHQgICAgICAgIHY6IHZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAvLyA8LSB2YWx1ZVxuXHQgICAgICAgIHA6IHByZXYgPSB0aGF0Ll9sLCAgICAgICAgICAgICAvLyA8LSBwcmV2aW91cyBlbnRyeVxuXHQgICAgICAgIG46IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAvLyA8LSBuZXh0IGVudHJ5XG5cdCAgICAgICAgcjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHJlbW92ZWRcblx0ICAgICAgfTtcblx0ICAgICAgaWYoIXRoYXQuX2YpdGhhdC5fZiA9IGVudHJ5O1xuXHQgICAgICBpZihwcmV2KXByZXYubiA9IGVudHJ5O1xuXHQgICAgICB0aGF0W1NJWkVdKys7XG5cdCAgICAgIC8vIGFkZCB0byBpbmRleFxuXHQgICAgICBpZihpbmRleCAhPT0gJ0YnKXRoYXQuX2lbaW5kZXhdID0gZW50cnk7XG5cdCAgICB9IHJldHVybiB0aGF0O1xuXHQgIH0sXG5cdCAgZ2V0RW50cnk6IGdldEVudHJ5LFxuXHQgIHNldFN0cm9uZzogZnVuY3Rpb24oQywgTkFNRSwgSVNfTUFQKXtcblx0ICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXVxuXHQgICAgLy8gMjMuMS4zLjQsIDIzLjEuMy44LCAyMy4xLjMuMTEsIDIzLjEuMy4xMiwgMjMuMi4zLjUsIDIzLjIuMy44LCAyMy4yLjMuMTAsIDIzLjIuMy4xMVxuXHQgICAgX193ZWJwYWNrX3JlcXVpcmVfXyg4KShDLCBOQU1FLCBmdW5jdGlvbihpdGVyYXRlZCwga2luZCl7XG5cdCAgICAgIHRoaXMuX3QgPSBpdGVyYXRlZDsgIC8vIHRhcmdldFxuXHQgICAgICB0aGlzLl9rID0ga2luZDsgICAgICAvLyBraW5kXG5cdCAgICAgIHRoaXMuX2wgPSB1bmRlZmluZWQ7IC8vIHByZXZpb3VzXG5cdCAgICB9LCBmdW5jdGlvbigpe1xuXHQgICAgICB2YXIgdGhhdCAgPSB0aGlzXG5cdCAgICAgICAgLCBraW5kICA9IHRoYXQuX2tcblx0ICAgICAgICAsIGVudHJ5ID0gdGhhdC5fbDtcblx0ICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG5cdCAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuXHQgICAgICAvLyBnZXQgbmV4dCBlbnRyeVxuXHQgICAgICBpZighdGhhdC5fdCB8fCAhKHRoYXQuX2wgPSBlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoYXQuX3QuX2YpKXtcblx0ICAgICAgICAvLyBvciBmaW5pc2ggdGhlIGl0ZXJhdGlvblxuXHQgICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgcmV0dXJuIHN0ZXAoMSk7XG5cdCAgICAgIH1cblx0ICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZFxuXHQgICAgICBpZihraW5kID09ICdrZXlzJyAgKXJldHVybiBzdGVwKDAsIGVudHJ5LmspO1xuXHQgICAgICBpZihraW5kID09ICd2YWx1ZXMnKXJldHVybiBzdGVwKDAsIGVudHJ5LnYpO1xuXHQgICAgICByZXR1cm4gc3RlcCgwLCBbZW50cnkuaywgZW50cnkudl0pO1xuXHQgICAgfSwgSVNfTUFQID8gJ2VudHJpZXMnIDogJ3ZhbHVlcycgLCAhSVNfTUFQLCB0cnVlKTtcblxuXHQgICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjJcblx0ICAgIHNwZWNpZXMoQyk7XG5cdCAgICBzcGVjaWVzKF9fd2VicGFja19yZXF1aXJlX18oMTIpW05BTUVdKTsgLy8gZm9yIHdyYXBwZXJcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiA4OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCAkZGVmICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsIGhpZGUgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgZm9yT2YgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBzdHJpY3ROZXcgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSk7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihOQU1FLCB3cmFwcGVyLCBtZXRob2RzLCBjb21tb24sIElTX01BUCwgSVNfV0VBSyl7XG5cdCAgdmFyIEJhc2UgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlbTkFNRV1cblx0ICAgICwgQyAgICAgPSBCYXNlXG5cdCAgICAsIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJ1xuXHQgICAgLCBwcm90byA9IEMgJiYgQy5wcm90b3R5cGVcblx0ICAgICwgTyAgICAgPSB7fTtcblx0ICBpZighX193ZWJwYWNrX3JlcXVpcmVfXygxNykgfHwgdHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJ1xuXHQgICAgfHwgIShJU19XRUFLIHx8IHByb3RvLmZvckVhY2ggJiYgIV9fd2VicGFja19yZXF1aXJlX18oMTgpKGZ1bmN0aW9uKCl7IG5ldyBDKCkuZW50cmllcygpLm5leHQoKTsgfSkpXG5cdCAgKXtcblx0ICAgIC8vIGNyZWF0ZSBjb2xsZWN0aW9uIGNvbnN0cnVjdG9yXG5cdCAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuXHQgICAgX193ZWJwYWNrX3JlcXVpcmVfXyg3OSkoQy5wcm90b3R5cGUsIG1ldGhvZHMpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBDID0gd3JhcHBlcihmdW5jdGlvbih0YXJnZXQsIGl0ZXJhYmxlKXtcblx0ICAgICAgc3RyaWN0TmV3KHRhcmdldCwgQywgTkFNRSk7XG5cdCAgICAgIHRhcmdldC5fYyA9IG5ldyBCYXNlO1xuXHQgICAgICBpZihpdGVyYWJsZSAhPSB1bmRlZmluZWQpZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGFyZ2V0W0FEREVSXSwgdGFyZ2V0KTtcblx0ICAgIH0pO1xuXHQgICAgJC5lYWNoLmNhbGwoJ2FkZCxjbGVhcixkZWxldGUsZm9yRWFjaCxnZXQsaGFzLHNldCxrZXlzLHZhbHVlcyxlbnRyaWVzJy5zcGxpdCgnLCcpLGZ1bmN0aW9uKEtFWSl7XG5cdCAgICAgIHZhciBjaGFpbiA9IEtFWSA9PSAnYWRkJyB8fCBLRVkgPT0gJ3NldCc7XG5cdCAgICAgIGlmKEtFWSBpbiBwcm90byAmJiAhKElTX1dFQUsgJiYgS0VZID09ICdjbGVhcicpKWhpZGUoQy5wcm90b3R5cGUsIEtFWSwgZnVuY3Rpb24oYSwgYil7XG5cdCAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2NbS0VZXShhID09PSAwID8gMCA6IGEsIGIpO1xuXHQgICAgICAgIHJldHVybiBjaGFpbiA/IHRoaXMgOiByZXN1bHQ7XG5cdCAgICAgIH0pO1xuXHQgICAgfSk7XG5cdCAgICBpZignc2l6ZScgaW4gcHJvdG8pJC5zZXREZXNjKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcblx0ICAgICAgZ2V0OiBmdW5jdGlvbigpe1xuXHQgICAgICAgIHJldHVybiB0aGlzLl9jLnNpemU7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgIH1cblxuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMjUpKEMsIE5BTUUpO1xuXG5cdCAgT1tOQU1FXSA9IEM7XG5cdCAgJGRlZigkZGVmLkcgKyAkZGVmLlcgKyAkZGVmLkYsIE8pO1xuXG5cdCAgaWYoIUlTX1dFQUspY29tbW9uLnNldFN0cm9uZyhDLCBOQU1FLCBJU19NQVApO1xuXG5cdCAgcmV0dXJuIEM7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA4OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxuXHR2YXIgJGRlZiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblxuXHQkZGVmKCRkZWYuUCwgJ1NldCcsIHt0b0pTT046IF9fd2VicGFja19yZXF1aXJlX18oOTApKCdTZXQnKX0pO1xuXG4vKioqLyB9LFxuLyogOTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cblx0dmFyIGZvck9mICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oMzYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUpe1xuXHQgIHJldHVybiBmdW5jdGlvbiB0b0pTT04oKXtcblx0ICAgIGlmKGNsYXNzb2YodGhpcykgIT0gTkFNRSl0aHJvdyBUeXBlRXJyb3IoTkFNRSArIFwiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO1xuXHQgICAgdmFyIGFyciA9IFtdO1xuXHQgICAgZm9yT2YodGhpcywgZmFsc2UsIGFyci5wdXNoLCBhcnIpO1xuXHQgICAgcmV0dXJuIGFycjtcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9XG4vKioqKioqLyBdKVxufSk7XG47IiwibW9kdWxlLmV4cG9ydHMgPSBERzsiLCJtb2R1bGUuZXhwb3J0cyA9IGdyb2s7IiwibW9kdWxlLmV4cG9ydHMgPSByeGpzOyIsIm1vZHVsZS5leHBvcnRzID0gdWk7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmpzXCI7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyY1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHNjcmlwdFVybCA9IHNjcmlwdHNbc2NyaXB0cy5sZW5ndGggLSAxXS5zcmNcblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gZG9jdW1lbnQuYmFzZVVSSSB8fCBzZWxmLmxvY2F0aW9uLmhyZWY7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJwYWNrYWdlXCI6IDBcbn07XG5cbi8vIG5vIGNodW5rIG9uIGRlbWFuZCBsb2FkaW5nXG5cbi8vIG5vIHByZWZldGNoaW5nXG5cbi8vIG5vIHByZWxvYWRlZFxuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0XG5cbi8vIG5vIG9uIGNodW5rcyBsb2FkZWRcblxuLy8gbm8ganNvbnAgZnVuY3Rpb24iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbi8qIERvIG5vdCBjaGFuZ2UgdGhlc2UgaW1wb3J0IGxpbmVzIHRvIG1hdGNoIGV4dGVybmFsIG1vZHVsZXMgaW4gd2VicGFjayBjb25maWd1cmF0aW9uICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5leHBvcnQgY29uc3QgX3BhY2thZ2UgPSBuZXcgREcuUGFja2FnZSgpO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcbmltcG9ydCB7IFZkUmVnaW9uc1ZpZXdlciB9IGZyb20gJy4vdmlld2Vycy92ZC1yZWdpb25zLXZpZXdlcic7XG5pbXBvcnQgeyBydW5LYWxpZ24gfSBmcm9tICcuL3V0aWxzL211bHRpcGxlLXNlcXVlbmNlLWFsaWdubWVudCc7XG5pbXBvcnQgeyBTZXF1ZW5jZUFsaWdubWVudCB9IGZyb20gJy4vc2VxX2FsaWduJztcbmltcG9ydCB7IGNvbnZlcnQgfSBmcm9tICcuL3V0aWxzL2NvbnZlcnQnO1xuaW1wb3J0IHsgZ2V0RW1iZWRkaW5nQ29sc05hbWVzLCBzZXF1ZW5jZVNwYWNlIH0gZnJvbSAnLi91dGlscy9zZXF1ZW5jZS1zcGFjZSc7XG5pbXBvcnQgeyBnZXRBY3Rpdml0eUNsaWZmcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3ZpZXdlcnMvYWN0aXZpdHktY2xpZmZzJztcbmltcG9ydCB7IHNlcXVlbmNlR2V0U2ltaWxhcml0aWVzLCBkcmF3VG9vbHRpcCB9IGZyb20gJy4vdXRpbHMvc2VxdWVuY2UtYWN0aXZpdHktY2xpZmZzJztcbmltcG9ydCB7IGdldE1vbGZpbGVzRnJvbVNlcSwgSEVMTV9DT1JFX0xJQl9GSUxFTkFNRSB9IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TWFjcm9Nb2wgfSBmcm9tICcuL3V0aWxzL2F0b21pYy13b3Jrcyc7XG5pbXBvcnQgeyBNYWNyb21vbGVjdWxlU2VxdWVuY2VDZWxsUmVuZGVyZXIgfSBmcm9tICcuL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuLy90YWdzOiBpbml0XG5leHBvcnQgZnVuY3Rpb24gaW5pdEJpbygpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBhcHBhcmVudGx5IEhFTE1XZWJFZGl0b3IgcmVxdWlyZXMgZG9qbyB0byBiZSBpbml0aWFsaXplZCBmaXJzdFxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZG9qby5yZWFkeShmdW5jdGlvbiAoKSB7IHJlc29sdmUobnVsbCk7IH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbi8vbmFtZTogbWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyXG4vL3RhZ3M6IGNlbGxSZW5kZXJlclxuLy9tZXRhLmNlbGxUeXBlOiBNYWNyb21vbGVjdWxlXG4vL291dHB1dDogZ3JpZF9jZWxsX3JlbmRlcmVyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIG1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlcigpIHtcbiAgICByZXR1cm4gbmV3IE1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlcigpO1xufVxuZnVuY3Rpb24gY2hlY2tJbnB1dENvbHVtbihjb2wsIG5hbWUsIGFsbG93ZWROb3RhdGlvbnMgPSBbXSwgYWxsb3dlZEFscGhhYmV0cyA9IFtdKSB7XG4gICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgIGlmIChjb2wuc2VtVHlwZSAhPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKSB7XG4gICAgICAgIGdyb2suc2hlbGwud2FybmluZyhuYW1lICsgJyBhbmFseXNpcyBpcyBhbGxvd2VkIGZvciBNYWNyb21vbGVjdWxlcyBzZW1hbnRpYyB0eXBlJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKGFsbG93ZWRBbHBoYWJldHMubGVuZ3RoID4gMCAmJlxuICAgICAgICAhYWxsb3dlZEFscGhhYmV0cy5zb21lKChhKSA9PiB1bml0cy50b1VwcGVyQ2FzZSgpLmVuZHNXaXRoKGEudG9VcHBlckNhc2UoKSkpKSB8fFxuICAgICAgICAoYWxsb3dlZE5vdGF0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAhYWxsb3dlZE5vdGF0aW9ucy5zb21lKChuKSA9PiB1bml0cy50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgobi50b1VwcGVyQ2FzZSgpKSkpKSB7XG4gICAgICAgIGNvbnN0IG5vdGF0aW9uQWRkID0gYWxsb3dlZE5vdGF0aW9ucy5sZW5ndGggPT0gMCA/ICdhbnkgbm90YXRpb24nIDpcbiAgICAgICAgICAgIChgbm90YXRpb24ke2FsbG93ZWROb3RhdGlvbnMubGVuZ3RoID4gMSA/ICdzJyA6ICcnfSAke2FsbG93ZWROb3RhdGlvbnMubWFwKChuKSA9PiBgXCIke259XCJgKS5qb2luKCcsICcpfSBgKTtcbiAgICAgICAgY29uc3QgYWxwaGFiZXRBZGQgPSBhbGxvd2VkTm90YXRpb25zLmxlbmd0aCA9PSAwID8gJ2FueSBhbHBoYWJldCcgOlxuICAgICAgICAgICAgKGBhbHBoYWJldCR7YWxsb3dlZEFscGhhYmV0cy5sZW5ndGggPiAxID8gJ3MnIDogJyd9ICR7YWxsb3dlZEFscGhhYmV0cy5tYXAoKGEpID0+IGBcIiR7YX1cImApLmpvaW4oJywgJyl9LmApO1xuICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcobmFtZSArICcgYW5hbHlzaXMgaXMgYWxsb3dlZCBmb3IgTWFjcm9tb2xlY3VsZXMgd2l0aCAnICsgbm90YXRpb25BZGQgKyAnIGFuZCAnICsgYWxwaGFiZXRBZGQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy9uYW1lOiBzZXF1ZW5jZUFsaWdubWVudFxuLy9pbnB1dDogc3RyaW5nIGFsaWduVHlwZSB7Y2hvaWNlczogWydMb2NhbCBhbGlnbm1lbnQnLCAnR2xvYmFsIGFsaWdubWVudCddfVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbi8vaW5wdXQ6IHN0cmluZyBhbGlnblRhYmxlIHtjaG9pY2VzOiBbJ0FVVE8nLCAnTlVDTEVPVElERVMnLCAnQkxPU1VNNDUnLCAnQkxPU1VNNTAnLCdCTE9TVU02MicsJ0JMT1NVTTgwJywnQkxPU1VNOTAnLCdQQU0zMCcsJ1BBTTcwJywnUEFNMjUwJywnU0NITkVJREVSJywnVFJBTlMnXX1cbi8vaW5wdXQ6IGRvdWJsZSBnYXBcbi8vaW5wdXQ6IHN0cmluZyBzZXExXG4vL2lucHV0OiBzdHJpbmcgc2VxMlxuLy9vdXRwdXQ6IG9iamVjdCByZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZUFsaWdubWVudChhbGlnblR5cGUsIGFsaWduVGFibGUsIGdhcCwgc2VxMSwgc2VxMikge1xuICAgIGNvbnN0IHRvQWxpZ24gPSBuZXcgU2VxdWVuY2VBbGlnbm1lbnQoc2VxMSwgc2VxMiwgZ2FwLCBhbGlnblRhYmxlKTtcbiAgICBjb25zdCByZXMgPSBhbGlnblR5cGUgPT0gJ0xvY2FsIGFsaWdubWVudCcgPyB0b0FsaWduLnNtaXRoV2F0ZXJtYW4oKSA6IHRvQWxpZ24ubmVlZGxlbWFuV3VuY2goKTtcbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBXZWJMb2dvXG4vL2Rlc2NyaXB0aW9uOiBXZWJMb2dvIHZpZXdlclxuLy90YWdzOiB2aWV3ZXIsIHBhbmVsXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHdlYkxvZ29WaWV3ZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBXZWJMb2dvKCk7XG59XG4vL25hbWU6IFZkUmVnaW9uc1xuLy9kZXNjcmlwdGlvbjogVi1Eb21haW4gcmVnaW9ucyB2aWV3ZXJcbi8vdGFnczogdmlld2VyLCBwYW5lbFxuLy9vdXRwdXQ6IHZpZXdlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiB2ZFJlZ2lvblZpZXdlcigpIHtcbiAgICByZXR1cm4gbmV3IFZkUmVnaW9uc1ZpZXdlcigpO1xufVxuLy90b3AtbWVudTogQmlvIHwgU2VxdWVuY2UgQWN0aXZpdHkgQ2xpZmZzLi4uXG4vL25hbWU6IFNlcXVlbmNlIEFjdGl2aXR5IENsaWZmc1xuLy9kZXNjcmlwdGlvbjogZGV0ZWN0IGFjdGl2aXR5IGNsaWZmc1xuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlIFtJbnB1dCBkYXRhIHRhYmxlXVxuLy9pbnB1dDogY29sdW1uIG1hY3JvTW9sZWN1bGUge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG4vL2lucHV0OiBjb2x1bW4gYWN0aXZpdGllc1xuLy9pbnB1dDogZG91YmxlIHNpbWlsYXJpdHkgPSA4MCBbU2ltaWxhcml0eSBjdXRvZmZdXG4vL2lucHV0OiBzdHJpbmcgbWV0aG9kTmFtZSB7IGNob2ljZXM6W1wiVU1BUFwiLCBcInQtU05FXCIsIFwiU1BFXCJdIH1cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpdml0eUNsaWZmcyhkZiwgbWFjcm9Nb2xlY3VsZSwgYWN0aXZpdGllcywgc2ltaWxhcml0eSwgbWV0aG9kTmFtZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghY2hlY2tJbnB1dENvbHVtbihtYWNyb01vbGVjdWxlLCAnQWN0aXZpdHkgQ2xpZmZzJykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGF4ZXNOYW1lcyA9IGdldEVtYmVkZGluZ0NvbHNOYW1lcyhkZik7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAnU1BFJzogeyBjeWNsZXM6IDIwMDAsIGxhbWJkYTogMS4wLCBkbGFtYmRhOiAwLjAwMDUgfSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdW5pdHMgPSBtYWNyb01vbGVjdWxlLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIHlpZWxkIGdldEFjdGl2aXR5Q2xpZmZzKGRmLCBtYWNyb01vbGVjdWxlLCBheGVzTmFtZXMsICdBY3Rpdml0eSBjbGlmZnMnLCBhY3Rpdml0aWVzLCBzaW1pbGFyaXR5LCAnTGV2ZW5zaHRlaW4nLCBtZXRob2ROYW1lLCBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUsIHVuaXRzLCBzZXF1ZW5jZVNwYWNlLCBzZXF1ZW5jZUdldFNpbWlsYXJpdGllcywgZHJhd1Rvb2x0aXAsIG9wdGlvbnNbbWV0aG9kTmFtZV0pO1xuICAgIH0pO1xufVxuLy90b3AtbWVudTogQmlvIHwgU2VxdWVuY2UgU3BhY2UuLi5cbi8vbmFtZTogU2VxdWVuY2UgU3BhY2Vcbi8vaW5wdXQ6IGRhdGFmcmFtZSB0YWJsZVxuLy9pbnB1dDogY29sdW1uIG1hY3JvTW9sZWN1bGUgeyBzZW1UeXBlOiBNYWNyb21vbGVjdWxlIH1cbi8vaW5wdXQ6IHN0cmluZyBtZXRob2ROYW1lIHsgY2hvaWNlczpbXCJVTUFQXCIsIFwidC1TTkVcIiwgXCJTUEVcIl0gfVxuLy9pbnB1dDogc3RyaW5nIHNpbWlsYXJpdHlNZXRyaWMgeyBjaG9pY2VzOltcIkxldmVuc2h0ZWluXCIsIFwiVGFuaW1vdG9cIl0gfVxuLy9pbnB1dDogYm9vbCBwbG90RW1iZWRkaW5ncyA9IHRydWVcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZVNwYWNlVG9wTWVudSh0YWJsZSwgbWFjcm9Nb2xlY3VsZSwgbWV0aG9kTmFtZSwgc2ltaWxhcml0eU1ldHJpYyA9ICdMZXZlbnNodGVpbicsIHBsb3RFbWJlZGRpbmdzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCFjaGVja0lucHV0Q29sdW1uKG1hY3JvTW9sZWN1bGUsICdBY3Rpdml0eSBDbGlmZnMnKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZW1iZWRDb2xzTmFtZXMgPSBnZXRFbWJlZGRpbmdDb2xzTmFtZXModGFibGUpO1xuICAgICAgICBjb25zdCBjaGVtU3BhY2VQYXJhbXMgPSB7XG4gICAgICAgICAgICBzZXFDb2w6IG1hY3JvTW9sZWN1bGUsXG4gICAgICAgICAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuICAgICAgICAgICAgc2ltaWxhcml0eU1ldHJpYzogc2ltaWxhcml0eU1ldHJpYyxcbiAgICAgICAgICAgIGVtYmVkQXhlc05hbWVzOiBlbWJlZENvbHNOYW1lc1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzZXF1ZW5jZVNwYWNlUmVzID0geWllbGQgc2VxdWVuY2VTcGFjZShjaGVtU3BhY2VQYXJhbXMpO1xuICAgICAgICBjb25zdCBlbWJlZGRpbmdzID0gc2VxdWVuY2VTcGFjZVJlcy5jb29yZGluYXRlcztcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgZW1iZWRkaW5ncylcbiAgICAgICAgICAgIHRhYmxlLmNvbHVtbnMuYWRkKGNvbCk7XG4gICAgICAgIGlmIChwbG90RW1iZWRkaW5ncykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIGdyb2suc2hlbGwudmlld3MpIHtcbiAgICAgICAgICAgICAgICBpZiAodi5uYW1lID09PSB0YWJsZS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICB2LnNjYXR0ZXJQbG90KHsgeDogZW1iZWRDb2xzTmFtZXNbMF0sIHk6IGVtYmVkQ29sc05hbWVzWzFdLCB0aXRsZTogJ1NlcXVlbmNlIHNwYWNlJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuO1xuLy90b3AtbWVudTogQmlvIHwgVG8gQXRvbWljIExldmVsLi4uXG4vL25hbWU6IFRvIEF0b21pYyBMZXZlbFxuLy9kZXNjcmlwdGlvbjogcmV0dXJucyBtb2xmaWxlcyBmb3IgZWFjaCBtb25vbWVyIGZyb20gSEVMTSBsaWJyYXJ5XG4vL2lucHV0OiBkYXRhZnJhbWUgZGYgW0lucHV0IGRhdGEgdGFibGVdXG4vL2lucHV0OiBjb2x1bW4gbWFjcm9Nb2xlY3VsZSB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbmV4cG9ydCBmdW5jdGlvbiB0b0F0b21pY0xldmVsKGRmLCBtYWNyb01vbGVjdWxlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKERHLkZ1bmMuZmluZCh7IHBhY2thZ2U6ICdDaGVtJywgbmFtZTogJ2dldFJkS2l0TW9kdWxlJyB9KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGdyb2suc2hlbGwud2FybmluZygnVHJhbnNmb3JtYXRpb24gdG8gYXRvbWljIGxldmVsIHJlcXVpcmVzIHBhY2thZ2UgXCJDaGVtXCIgaW5zdGFsbGVkLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hlY2tJbnB1dENvbHVtbihtYWNyb01vbGVjdWxlLCAnVG8gQXRvbWljIExldmVsJykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG1vbm9tZXJzTGliRmlsZSA9IHlpZWxkIF9wYWNrYWdlLmZpbGVzLnJlYWRBc1RleHQoSEVMTV9DT1JFX0xJQl9GSUxFTkFNRSk7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJzTGliT2JqZWN0ID0gSlNPTi5wYXJzZShtb25vbWVyc0xpYkZpbGUpO1xuICAgICAgICBjb25zdCBhdG9taWNDb2RlcyA9IGdldE1vbGZpbGVzRnJvbVNlcShtYWNyb01vbGVjdWxlLCBtb25vbWVyc0xpYk9iamVjdCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIGdldE1hY3JvTW9sKGF0b21pY0NvZGVzKTtcbiAgICAgICAgY29uc3QgY29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdyZWdlbmVyYXRlZCcsIHJlc3VsdCk7XG4gICAgICAgIGNvbC5zZW1UeXBlID0gREcuU0VNVFlQRS5NT0xFQ1VMRTtcbiAgICAgICAgY29sLnRhZ3NbREcuVEFHUy5VTklUU10gPSAnbW9sYmxvY2snO1xuICAgICAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuICAgIH0pO1xufVxuLy90b3AtbWVudTogQmlvIHwgTVNBLi4uXG4vL25hbWU6IE1TQVxuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlXG4vL2lucHV0OiBjb2x1bW4gc2VxdWVuY2UgeyBzZW1UeXBlOiBNYWNyb21vbGVjdWxlIH1cbi8vb3V0cHV0OiBjb2x1bW4gcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbGVTZXF1ZW5jZUFsaWdubWVudEFueSh0YWJsZSwgY29sKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCFjaGVja0lucHV0Q29sdW1uKGNvbCwgJ01TQScsIFsnZmFzdGEnXSwgWydETkEnLCAnUk5BJywgJ1BUJ10pKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IG1zYUNvbCA9IHlpZWxkIHJ1bkthbGlnbihjb2wsIGZhbHNlKTtcbiAgICAgICAgdGFibGUuY29sdW1ucy5hZGQobXNhQ29sKTtcbiAgICAgICAgLy8gVGhpcyBjYWxsIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBjZWxsIHJlbmRlcmVyIGFjdGl2YXRpb25cbiAgICAgICAgeWllbGQgZ3Jvay5kYXRhLmRldGVjdFNlbWFudGljVHlwZXModGFibGUpO1xuICAgICAgICAvLyBjb25zdCB0djogREcuVGFibGVWaWV3ID0gZ3Jvay5zaGVsbC50djtcbiAgICAgICAgLy8gdHYuZ3JpZC5pbnZhbGlkYXRlKCk7XG4gICAgICAgIHJldHVybiBtc2FDb2w7XG4gICAgfSk7XG59XG4vL25hbWU6IENvbXBvc2l0aW9uIEFuYWx5c2lzXG4vL3RvcC1tZW51OiBCaW8gfCBDb21wb3NpdGlvbiBBbmFseXNpc1xuLy9vdXRwdXQ6IHZpZXdlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NpdGlvbkFuYWx5c2lzKCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIEhpZ2hlciBwcmlvcml0eSBmb3IgY29sdW1ucyB3aXRoIE1TQSBkYXRhIHRvIHNob3cgd2l0aCBXZWJMb2dvLlxuICAgICAgICBjb25zdCB0diA9IGdyb2suc2hlbGwudHY7XG4gICAgICAgIGNvbnN0IGRmID0gdHYuZGF0YUZyYW1lO1xuICAgICAgICBjb25zdCBjb2wgPSBXZWJMb2dvLnBpY2tVcFNlcUNvbDIoZGYpO1xuICAgICAgICBpZiAoIWNvbCkge1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC5lcnJvcignQ3VycmVudCB0YWJsZSBkb2VzIG5vdCBjb250YWluIHNlcXVlbmNlcycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hlY2tJbnB1dENvbHVtbihjb2wsICdDb21wb3NpdGlvbicpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBhbGxvd2VkTm90YXRpb25zID0gWydmYXN0YScsICdzZXBhcmF0b3InXTtcbiAgICAgICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICBpZiAoIWFsbG93ZWROb3RhdGlvbnMuc29tZSgobikgPT4gdW5pdHMudG9VcHBlckNhc2UoKS5zdGFydHNXaXRoKG4udG9VcHBlckNhc2UoKSkpKSB7XG4gICAgICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcoJ0NvbXBvc2l0aW9uIGFuYWx5c2lzIGlzIGFsbG93ZWQgZm9yICcgK1xuICAgICAgICAgICAgICAgIGBub3RhdGlvbiR7YWxsb3dlZE5vdGF0aW9ucy5sZW5ndGggPiAxID8gJ3MnIDogJyd9ICR7YWxsb3dlZE5vdGF0aW9ucy5tYXAoKG4pID0+IGBcIiR7bn1cImApLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHR2LmFkZFZpZXdlcignV2ViTG9nbycsIHsgc2VxdWVuY2VDb2x1bW5OYW1lOiBjb2wubmFtZSB9KTtcbiAgICB9KTtcbn1cbi8vIGhlbHBlciBmdW5jdGlvbiBmb3IgaW1wb3J0RmFzdGFcbmZ1bmN0aW9uIHBhcnNlTWFjcm9tb2xlY3VsZShmaWxlQ29udGVudCwgc3RhcnRPZlNlcXVlbmNlLCBlbmRPZlNlcXVlbmNlKSB7XG4gICAgY29uc3Qgc2VxID0gZmlsZUNvbnRlbnQuc2xpY2Uoc3RhcnRPZlNlcXVlbmNlLCBlbmRPZlNlcXVlbmNlKTtcbiAgICBjb25zdCBzZXFBcnJheSA9IHNlcS5zcGxpdCgvXFxzLyk7XG4gICAgcmV0dXJuIHNlcUFycmF5LmpvaW4oJycpO1xufVxuLy9uYW1lOiBpbXBvcnRGYXN0YVxuLy9kZXNjcmlwdGlvbjogT3BlbnMgRkFTVEEgZmlsZVxuLy90YWdzOiBmaWxlLWhhbmRsZXJcbi8vbWV0YS5leHQ6IGZhc3RhLCBmbmEsIGZmbiwgZmFhLCBmcm4sIGZhLCBmc3Rcbi8vaW5wdXQ6IHN0cmluZyBmaWxlQ29udGVudFxuLy9vdXRwdXQ6IGxpc3QgdGFibGVzXG5leHBvcnQgZnVuY3Rpb24gaW1wb3J0RmFzdGEoZmlsZUNvbnRlbnQpIHtcbiAgICBjb25zdCByZWdleCA9IC9ePiguKikkL2dtOyAvLyBtYXRjaCBsaW5lcyBzdGFydGluZyB3aXRoID5cbiAgICBjb25zdCBkZXNjcmlwdGlvbnNBcnJheSA9IFtdO1xuICAgIGNvbnN0IHNlcXVlbmNlc0FycmF5ID0gW107XG4gICAgbGV0IHN0YXJ0T2ZTZXF1ZW5jZSA9IDA7XG4gICAgbGV0IG1hdGNoOyAvLyBtYXRjaC5pbmRleCBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBtYXRjaGVkIGxpbmVcbiAgICB3aGlsZSAobWF0Y2ggPSByZWdleC5leGVjKGZpbGVDb250ZW50KSkge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGZpbGVDb250ZW50LnN1YnN0cmluZyhtYXRjaC5pbmRleCArIDEsIHJlZ2V4Lmxhc3RJbmRleCk7XG4gICAgICAgIGRlc2NyaXB0aW9uc0FycmF5LnB1c2goZGVzY3JpcHRpb24pO1xuICAgICAgICBpZiAoc3RhcnRPZlNlcXVlbmNlICE9PSAwKVxuICAgICAgICAgICAgc2VxdWVuY2VzQXJyYXkucHVzaChwYXJzZU1hY3JvbW9sZWN1bGUoZmlsZUNvbnRlbnQsIHN0YXJ0T2ZTZXF1ZW5jZSwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgc3RhcnRPZlNlcXVlbmNlID0gcmVnZXgubGFzdEluZGV4ICsgMTtcbiAgICB9XG4gICAgc2VxdWVuY2VzQXJyYXkucHVzaChwYXJzZU1hY3JvbW9sZWN1bGUoZmlsZUNvbnRlbnQsIHN0YXJ0T2ZTZXF1ZW5jZSwgLTEpKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbnNBcnJheUNvbCA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncygnZGVzY3JpcHRpb24nLCBkZXNjcmlwdGlvbnNBcnJheSk7XG4gICAgY29uc3Qgc2VxdWVuY2VDb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ3NlcXVlbmNlJywgc2VxdWVuY2VzQXJyYXkpO1xuICAgIHNlcXVlbmNlQ29sLnNlbVR5cGUgPSAnTWFjcm9tb2xlY3VsZSc7XG4gICAgY29uc3Qgc3RhdHMgPSBXZWJMb2dvLmdldFN0YXRzKHNlcXVlbmNlQ29sLCA1LCBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YSk7XG4gICAgY29uc3Qgc2VxVHlwZSA9IHN0YXRzLnNhbWVMZW5ndGggPyAnU0VRLk1TQScgOiAnU0VRJztcbiAgICBjb25zdCBQZXB0aWRlRmFzdGFBbHBoYWJldCA9IG5ldyBTZXQoW1xuICAgICAgICAnRycsICdMJywgJ1knLCAnUycsICdFJywgJ1EnLCAnRCcsICdOJywgJ0YnLCAnQScsXG4gICAgICAgICdLJywgJ1InLCAnSCcsICdDJywgJ1YnLCAnUCcsICdXJywgJ0knLCAnTScsICdUJyxcbiAgICBdKTtcbiAgICBjb25zdCBEbmFGYXN0YUFscGhhYmV0ID0gbmV3IFNldChbJ0EnLCAnQycsICdHJywgJ1QnXSk7XG4gICAgY29uc3QgUm5hRmFzdGFBbHBoYWJldCA9IG5ldyBTZXQoWydBJywgJ0MnLCAnRycsICdVJ10pO1xuICAgIC8vY29uc3QgU21pbGVzUmF3QWxwaGFiZXQgPSBuZXcgU2V0KFtcbiAgICAvLyAgJ08nLCAnQycsICdjJywgJ04nLCAnUycsICdGJywgJygnLCAnKScsXG4gICAgLy8gICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JyxcbiAgICAvLyAgJysnLCAnLScsICdAJywgJ1snLCAnXScsICcvJywgJ1xcXFwnLCAnIycsICc9J10pO1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlcyA9IFtcbiAgICAgICAgWydQVCcsIFBlcHRpZGVGYXN0YUFscGhhYmV0XSxcbiAgICAgICAgWydETkEnLCBEbmFGYXN0YUFscGhhYmV0XSxcbiAgICAgICAgWydSTkEnLCBSbmFGYXN0YUFscGhhYmV0XSxcbiAgICBdO1xuICAgIC8vY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzOiBbc3RyaW5nLCBTZXQ8c3RyaW5nPl1bXSA9IFtcbiAgICAvLyAgWydOVCcsIG5ldyBTZXQoT2JqZWN0LmtleXMoTnVjbGVvdGlkZXMuTmFtZXMpKV0sXG4gICAgLy8gIFsnUFQnLCBuZXcgU2V0KE9iamVjdC5rZXlzKEFtaW5vYWNpZHMuTmFtZXMpKV0sXG4gICAgLy9dO1xuICAgIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbSA9IGFscGhhYmV0Q2FuZGlkYXRlcy5tYXAoKGMpID0+IFdlYkxvZ28uZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMV0pKTtcbiAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgIGNvbnN0IGFscGhhYmV0ID0gbWF4Q29zID4gMC42NSA/IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVswXSA6ICdVTic7XG4gICAgc2VxdWVuY2VDb2wuc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICBjb25zdCB1bml0cyA9IGBmYXN0YToke3NlcVR5cGV9OiR7YWxwaGFiZXR9YDtcbiAgICBzZXF1ZW5jZUNvbC5zZXRUYWcoREcuVEFHUy5VTklUUywgdW5pdHMpO1xuICAgIHJldHVybiBbREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uc0FycmF5Q29sLFxuICAgICAgICAgICAgc2VxdWVuY2VDb2wsXG4gICAgICAgIF0pXTtcbn1cbi8vbmFtZTogQmlvIHwgQ29udmVydFxuLy9mcmllbmRseS1uYW1lOiBCaW8gfCBDb252ZXJ0XG4vL3RhZ3M6IHBhbmVsLCBiaW9cbi8vaW5wdXQ6IGNvbHVtbiBjb2wge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG5leHBvcnQgZnVuY3Rpb24gY29udmVydFBhbmVsKGNvbCkge1xuICAgIGNvbnZlcnQoY29sKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
10865
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxFQUFFLEtBQTREO0FBQzlELEVBQUUsQ0FDbUQ7QUFDckQsQ0FBQyxzQkFBc0I7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGVBQWU7QUFDakM7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLE9BQU87QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGlCQUFpQixrQkFBa0IsVUFBVTtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZUFBZTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QixXQUFXO0FBQ1g7QUFDQTtBQUNBLDJEQUEyRCxnQkFBZ0IsSUFBSTtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLFdBQVc7QUFDWCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLHFCQUFxQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLElBQUk7QUFDN0MsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGFBQWEsU0FBUyxZQUFZO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRTtBQUMvRTs7QUFFQSwrRkFBK0YsNkJBQTZCO0FBQzVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsV0FBVztBQUNwRSw2REFBNkQsV0FBVztBQUN4RTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsZ0NBQWdDOztBQUU5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsdUVBQXVFO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsQ0FBQztBQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNyZGdEO0FBQ3pDLGlDQUFpQyx5REFBYztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxPQUFPO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZ0JBQWdCLGtCQUFrQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCx5QkFBeUI7QUFDOUUscURBQXFELHlCQUF5QjtBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2pPSztBQUN6QyxrQ0FBa0MseURBQWM7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7OztBQzFCcEM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOzs7Ozs7Ozs7Ozs7Ozs7O0FDM0M4QjtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1RkFBTSwrQ0FBK0MsS0FBSztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGtCQUFrQixRQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDLFlBQVksdUZBQU0sMENBQTBDLFlBQVksNEJBQTRCLElBQUk7QUFDeEc7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDLFlBQVksdUZBQU0sZ0RBQWdELFlBQVksNkJBQTZCLElBQUk7QUFDL0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGtCQUFrQixRQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCLGtCQUFrQixRQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixrQkFBa0IsVUFBVTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFlBQVk7QUFDcEM7QUFDQSxZQUFZLHVGQUFNLHVDQUF1QyxLQUFLLHVCQUF1QixTQUFTO0FBQzlGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFVBQVU7QUFDM0Isa0JBQWtCLFFBQVE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0EsWUFBWSx1RkFBTSx1Q0FBdUMsS0FBSyxxQkFBcUIsTUFBTTtBQUN6RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFKcEM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixjQUFjO0FBQ3RDO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDZ0Q7QUFDekM7QUFDUDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsK0NBQStDLHVFQUE0QjtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxpQ0FBaUMseURBQWM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7Ozs7Ozs7Ozs7Ozs7OztBQzdDM0M7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxvQ0FBb0M7QUFDckM7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsZUFBZSxjQUFjO0FBQzdCLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkIsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdCM0MsaUJBQWlCLFNBQUksSUFBSSxTQUFJO0FBQzdCLDRCQUE0QiwrREFBK0QsaUJBQWlCO0FBQzVHO0FBQ0Esb0NBQW9DLE1BQU0sK0JBQStCLFlBQVk7QUFDckYsbUNBQW1DLE1BQU0sbUNBQW1DLFlBQVk7QUFDeEYsZ0NBQWdDO0FBQ2hDO0FBQ0EsS0FBSztBQUNMO0FBQ3NDO0FBQ0E7QUFDbEI7QUFDUztBQUM0QztBQUN3QjtBQUNsQztBQUNHO0FBQ2xCO0FBQ2hEO0FBQ0E7QUFDQSxlQUFlLGtEQUFRO0FBQ3ZCO0FBQ0Esb0VBQTBCO0FBQzFCO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSwwQkFBMEIsaURBQU87QUFDakM7QUFDQTtBQUNPO0FBQ1AsaUJBQWlCO0FBQ2pCLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLHNCQUFzQixxREFBVztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlEQUFpRDtBQUM1RDtBQUNBLFdBQVcsbURBQW1EO0FBQzlEO0FBQ0EsV0FBVyxtREFBbUQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhFQUE4RSxzQ0FBc0M7QUFDcEgsa0ZBQWtGLHNDQUFzQztBQUN4SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixnREFBTTtBQUNqQztBQUNBLDBCQUEwQixtREFBUztBQUNuQztBQUNBLHdCQUF3QixnREFBTTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIsK0JBQStCLDJDQUFjO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUVBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0Esb0JBQW9CLHlEQUFlO0FBQ25DO0FBQ0EsYUFBYTtBQUNiLCtCQUErQiwyQ0FBYztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLGFBQWE7QUFDYiwrQkFBK0IsMERBQWdCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixzQkFBc0IsZ0JBQWdCLHVCQUF1QjtBQUN4Riw2QkFBNkIsa0JBQWtCLGtCQUFrQixvQkFBb0I7QUFDckY7QUFDQSxpQkFBaUIsY0FBYyxLQUFLLFVBQVUsVUFBVSwwQkFBMEIsV0FBVyxhQUFhO0FBQzFHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCx1REFBYTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxTQUFTO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsZUFBZSxNQUFNO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0IsU0FBUztBQUNUO0FBQ0E7QUFDQSwwQ0FBMEMsY0FBYyxpQ0FBaUMsY0FBYztBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsMENBQTBDLGNBQWM7QUFDeEQsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QixTQUFTO0FBQ1Q7QUFDQSxvQ0FBb0MsaUNBQWlDO0FBQ3JFLDBDQUEwQyxjQUFjLGlDQUFpQyxjQUFjO0FBQ3ZHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLGNBQWM7QUFDeEQsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLG9CQUFvQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG9CQUFvQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLGNBQWMsMkJBQTJCLFVBQVU7QUFDdkY7QUFDQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxpREFBTztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhFQUE4RSxvQkFBb0I7QUFDbEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG9CQUFvQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsRUFBRSxnQ0FBZ0MsMkJBQTJCO0FBQzFHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxNQUFNO0FBQzNDO0FBQ0EsaURBQWlELE9BQU87QUFDeEQ7QUFDQTtBQUNBLG1EQUFtRCxhQUFhO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxNQUFNO0FBQ3JFLHdDQUF3QyxPQUFPO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxjQUFjO0FBQ3ZFO0FBQ0EseURBQXlELHVCQUF1QjtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyx1QkFBdUI7QUFDaEUseUNBQXlDLHVCQUF1QjtBQUNoRSx5Q0FBeUMsdUJBQXVCO0FBQ2hFLHlDQUF5Qyx1QkFBdUI7QUFDaEU7QUFDQSwyQ0FBMkMsbUJBQW1CO0FBQzlELDJDQUEyQyx5QkFBeUI7QUFDcEU7QUFDQTtBQUNBLGVBQWUsV0FBVztBQUMxQixlQUFlLFNBQVM7QUFDeEIsZ0JBQWdCLFlBQVk7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNEVBQW1DO0FBQ3BELHNCQUFzQixzRUFBNkI7QUFDbkQ7QUFDQSxpQkFBaUIsOEVBQW9DO0FBQ3JELHNCQUFzQiwwRUFBZ0M7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsMkRBQWlCLElBQUksMEVBQWdDO0FBQ3RGLGlDQUFpQyx5REFBZ0IsSUFBSSxzRUFBNkI7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw4REFBd0I7QUFDMUM7QUFDQTtBQUNBLG1FQUFtRSxrQkFBa0I7QUFDckYsZUFBZSxXQUFXO0FBQzFCLGVBQWUsUUFBUTtBQUN2QixlQUFlLGNBQWM7QUFDN0IsaUJBQWlCLGFBQWEsd0JBQXdCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsbUZBQU07QUFDaEMsOEJBQThCLG1GQUFNO0FBQ3BDLG9CQUFvQixpR0FBZ0Isc0JBQXNCLDZGQUFZLFVBQVUsNkZBQVk7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsY0FBYztBQUNoQyxtQkFBbUIsV0FBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxrRUFBd0I7QUFDL0U7QUFDQSxxQ0FBcUMsdURBQWE7QUFDbEQ7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsS0FBSztBQUNwQixnQkFBZ0IsVUFBVTtBQUMxQjtBQUNBO0FBQ0Esb0JBQW9CLHlDQUFFO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxFQUFFO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsUUFBUTtBQUN2QixnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxPQUFPO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrRUFBd0I7QUFDcEQseURBQXlELGtFQUF3QixDQUFDO0FBQ2xGLGlDQUFpQyx1REFBYTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2hwQjNDLGlCQUFpQixTQUFJLElBQUksU0FBSTtBQUM3Qiw0QkFBNEIsK0RBQStELGlCQUFpQjtBQUM1RztBQUNBLG9DQUFvQyxNQUFNLCtCQUErQixZQUFZO0FBQ3JGLG1DQUFtQyxNQUFNLG1DQUFtQyxZQUFZO0FBQ3hGLGdDQUFnQztBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUM0RTtBQUN5QjtBQUM5RjtBQUNQO0FBQ0EsOENBQThDLGtIQUFpQyxHQUFHLHlDQUF5QztBQUMzSCx3RkFBd0YsMEZBQVM7QUFDakc7QUFDQSxLQUFLO0FBQ0w7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQkQ7QUFDWTtBQUM2QjtBQUNVO0FBQ3RGO0FBQ1A7QUFDQSw2QkFBNkIsdUdBQTBCO0FBQ3ZELEtBQUs7QUFDTDtBQUNBLHVCQUF1Qix5REFBVztBQUNsQyx3QkFBd0IsZ0VBQVc7QUFDbkMsS0FBSztBQUNMO0FBQ0Esb0JBQW9CLHNHQUEyQjtBQUMvQyxnQkFBZ0Isa0dBQXVCO0FBQ3ZDLHNCQUFzQix3R0FBNkI7QUFDbkQsMEJBQTBCLCtHQUFpQztBQUMzRCxrQkFBa0Isb0dBQXlCO0FBQzNDLHNCQUFzQix3R0FBNkI7QUFDbkQseUJBQXlCLDhHQUFnQztBQUN6RCwwQkFBMEIsK0dBQWlDO0FBQzNELGtCQUFrQixvR0FBeUI7QUFDM0MsaUJBQWlCLG1HQUF3QjtBQUN6QyxLQUFLO0FBQ0w7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLElBQUk7QUFDRTtBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdCQUFnQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxvQkFBb0I7QUFDbkMsZ0JBQWdCLFVBQVU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3RTNDLGlCQUFpQixTQUFJLElBQUksU0FBSTtBQUM3Qiw0QkFBNEIsK0RBQStELGlCQUFpQjtBQUM1RztBQUNBLG9DQUFvQyxNQUFNLCtCQUErQixZQUFZO0FBQ3JGLG1DQUFtQyxNQUFNLG1DQUFtQyxZQUFZO0FBQ3hGLGdDQUFnQztBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUMwQztBQUNKO0FBQ0E7QUFDdUQ7QUFDN0Y7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isd0JBQXdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHNCQUFzQixrRUFBd0IsRUFBRSw0REFBa0I7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixjQUFjO0FBQ3RDLDRCQUE0QixrQkFBa0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw0REFBa0IsbUJBQW1CLHNEQUFzRDtBQUNoSDtBQUNBLHFCQUFxQixpRUFBdUI7QUFDNUMsa0NBQWtDLCtEQUFxQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCwrQkFBK0IsbURBQVMsSUFBSSwyQkFBMkI7QUFDdkUsaUNBQWlDLG1EQUFTLEdBQUcsMEJBQTBCO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixxQkFBTTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHlEQUFlO0FBQ25DO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwyQ0FBMkM7QUFDdkU7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxNQUFNLEdBQUcsUUFBUTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGVBQWU7QUFDbkM7QUFDQTtBQUNBLHFCQUFxQiwwREFBMEQ7QUFDL0U7QUFDQSxvQkFBb0IsNkRBQW1CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix1REFBYTtBQUMzQyw4QkFBOEIsdURBQWE7QUFDM0M7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ087QUFDUCxvQkFBb0IsYUFBYTtBQUNqQztBQUNBLDRCQUE0QixTQUFTO0FBQ3JDLCtCQUErQiwyR0FBeUI7QUFDeEQsb0JBQW9CLG9FQUEwQjtBQUM5QztBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7OztBQ3ZScEM7QUFDUDtBQUNBLDBDQUEwQyw0S0FBMkM7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCw4QkFBOEIsUUFBUSx1QkFBdUI7QUFDN0Qsc0JBQXNCLDBDQUEwQztBQUNoRTtBQUNBLEtBQUs7QUFDTDtBQUNBLDJDQUEyQzs7Ozs7Ozs7Ozs7Ozs7OztBQ2QzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZLFFBQVE7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZLFFBQVE7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCTjtBQUM5QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0RBQVM7QUFDN0I7QUFDQSxvQkFBb0IsWUFBWTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BMM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcENFO0FBQ0s7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWSxhQUFhO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxzREFBTTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ087QUFDUDtBQUNBLDRCQUE0QixzREFBTTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWSxRQUFRO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0Esc0JBQXNCLHNEQUFNO0FBQzVCLG9CQUFvQixjQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isc0RBQU07QUFDNUIsb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLG9CQUFvQixjQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGVBQWU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixZQUFZLFFBQVE7QUFDcEI7QUFDTztBQUNQO0FBQ0Esb0JBQW9CLGdCQUFnQjtBQUNwQyx3QkFBd0IsZ0JBQWdCO0FBQ3hDLDJCQUEyQixvREFBVztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWSxRQUFRO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxnQkFBZ0I7QUFDM0IsWUFBWSxRQUFRO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0Esb0JBQW9CLFlBQVk7QUFDaEMsNEJBQTRCLFlBQVk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGdCQUFnQjtBQUNsRDtBQUNQO0FBQ0E7QUFDQSxvQkFBb0IsWUFBWTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsT0FBTztBQUNqQixVQUFVLFNBQVM7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCO0FBQ087QUFDUDtBQUNBLG9DQUFvQztBQUNwQyxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxvQ0FBb0M7QUFDL0M7QUFDQSxhQUFhLFVBQVU7QUFDdkI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrREFBUztBQUM3QjtBQUNBLG9CQUFvQixZQUFZO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOzs7Ozs7Ozs7OztBQ3hPOUI7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsV0FBVztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsZUFBZTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLFNBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLE9BQU87QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixTQUFTO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGdCQUFnQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDbEphO0FBQ2I7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsbUJBQW1CLEdBQUcsWUFBWTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsVUFBVTtBQUM5Qiw4Q0FBOEMscUNBQXFDO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsVUFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEZuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4Qix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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O0FBQ0E7QUFDQSwwRUFBMEUsZUFBZTtBQUN6RjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxLQUFLLEVBQUUsRUFHVjs7QUFFVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLEtBQUssRUFBRSxFQUdWOztBQUVWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRFQUE0RSxlQUFlO0FBQzNGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJGQUEyRixlQUFlO0FBQzFHO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0EsMkVBQTJFLGVBQWU7QUFDMUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0EsMkVBQTJFLGVBQWU7QUFDMUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0EsK0ZBQStGLGVBQWU7QUFDOUc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2REFBNkQsc0VBQXNFO0FBQ25JOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQsc0VBQXNF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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0EsY0FBYztBQUNkOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0RBQWdELFFBQVE7QUFDeEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0EsZ0RBQWdELFFBQVE7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0EsZ0RB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSx1R0FBNkI7QUFDN0Y7QUFDQTtBQUNBLDBCQUEwQixrRUFBd0I7QUFDbEQsMkJBQTJCLFFBQVEsR0FBRyxTQUFTO0FBQy9DLHVCQUF1Qix1REFBYTtBQUNwQyxZQUFZLGtFQUF3QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNkO0FBQ1AsSUFBSSx1REFBTztBQUNYIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BiaW93YXNtL2Fpb2xpL2Rpc3QvYWlvbGkuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvbnVjbGVvdGlkZXMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXEtcGFsZXR0ZXMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXF1ZW5jZS1lbmNvZGVyLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdW5rbm93bi5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZkLXJlZ2lvbnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9zZXF1ZW5jZS1zcGFjZS5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdmlld2Vycy9hY3Rpdml0eS1jbGlmZnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3dvcmtlcnMvZGltZW5zaW9uYWxpdHktcmVkdWNpbmctd29ya2VyLWNyZWF0b3IuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3JhbmRvbS5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL2Zhc3Rlc3QtbGV2ZW5zaHRlaW4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL2phcm8td2lua2xlci10eXBlc2NyaXB0L2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvc2VxX2FsaWduLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9hdG9taWMtd29ya3MudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXIudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvY29udmVydC50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvbXVsdGlwbGUtc2VxdWVuY2UtYWxpZ25tZW50LnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3NlcXVlbmNlLWFjdGl2aXR5LWNsaWZmcy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvc2VxdWVuY2Utc3BhY2UudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3V0aWxzLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyLnRzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy93dS9kaXN0L3d1LmpzIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJER1wiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJncm9rXCIiLCJ3ZWJwYWNrOi8vYmlvL2V4dGVybmFsIHZhciBcInJ4anNcIiIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwidWlcIiIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2Jpby8uL3NyYy9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuQWlvbGkgPSBmYWN0b3J5KCkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgdmFyIG5hbWUgPSBcIkBiaW93YXNtL2Fpb2xpXCI7XG4gIHZhciB2ZXJzaW9uID0gXCIyLjQuMC1yYzJcIjtcbiAgdmFyIGRlc2NyaXB0aW9uID0gXCJBIGZyYW1ld29yayBmb3IgYnVpbGRpbmcgV2ViQXNzZW1ibHktYmFzZWQgZ2Vub21pY3MgdG9vbHNcIjtcbiAgdmFyIGJyb3dzZXIgPSBcImRpc3QvYWlvbGkuanNcIjtcbiAgdmFyIHdvcmtlciA9IFwiZGlzdC9haW9saS53b3JrZXIuanNcIjtcbiAgdmFyIG1haW4gPSBcImFpb2xpLmpzXCI7XG4gIHZhciByZXBvc2l0b3J5ID0ge1xuICBcdHR5cGU6IFwiZ2l0XCIsXG4gIFx0dXJsOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vYmlvd2FzbS9haW9saS5naXRcIlxuICB9O1xuICB2YXIgYXV0aG9yID0gXCJSb2JlcnQgQWJvdWtoYWxpbFwiO1xuICB2YXIgbGljZW5zZSA9IFwiTUlUXCI7XG4gIHZhciBkZXBlbmRlbmNpZXMgPSB7XG4gIFx0Y29tbGluazogXCJeNC4zLjFcIixcbiAgXHRcIndhc20tZmVhdHVyZS1kZXRlY3RcIjogXCJeMS4yLjExXCJcbiAgfTtcbiAgdmFyIGRldkRlcGVuZGVuY2llcyA9IHtcbiAgXHRcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCI6IFwiXjExLjAuMVwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tanNvblwiOiBcIl40LjEuMFwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tbm9kZS1yZXNvbHZlXCI6IFwiXjcuMC4wXCIsXG4gIFx0Y3lwcmVzczogXCJeOC4wLjBcIixcbiAgXHRyb2xsdXA6IFwiXjEuMjkuMFwiLFxuICBcdFwicm9sbHVwLXBsdWdpbi10ZXJzZXJcIjogXCJeNy4wLjJcIlxuICB9O1xuICB2YXIgc2NyaXB0cyA9IHtcbiAgXHRidWlsZDogXCJyb2xsdXAgLWNcIixcbiAgXHRkZXY6IFwicm9sbHVwIC1jIC13XCIsXG4gIFx0dGVzdDogXCJjeXByZXNzIHJ1blwiLFxuICBcdFwidGVzdC1vcGVuXCI6IFwiY3lwcmVzcyBvcGVuXCJcbiAgfTtcbiAgdmFyIGZpbGVzID0gW1xuICBcdFwiZGlzdFwiXG4gIF07XG4gIHZhciBwa2cgPSB7XG4gIFx0bmFtZTogbmFtZSxcbiAgXHR2ZXJzaW9uOiB2ZXJzaW9uLFxuICBcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgXHRicm93c2VyOiBicm93c2VyLFxuICBcdHdvcmtlcjogd29ya2VyLFxuICBcdG1haW46IG1haW4sXG4gIFx0cmVwb3NpdG9yeTogcmVwb3NpdG9yeSxcbiAgXHRhdXRob3I6IGF1dGhvcixcbiAgXHRsaWNlbnNlOiBsaWNlbnNlLFxuICBcdGRlcGVuZGVuY2llczogZGVwZW5kZW5jaWVzLFxuICBcdGRldkRlcGVuZGVuY2llczogZGV2RGVwZW5kZW5jaWVzLFxuICBcdHNjcmlwdHM6IHNjcmlwdHMsXG4gIFx0ZmlsZXM6IGZpbGVzXG4gIH07XG5cbiAgLyoqXHJcbiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAgICovXHJcbiAgY29uc3QgcHJveHlNYXJrZXIgPSBTeW1ib2woXCJDb21saW5rLnByb3h5XCIpO1xyXG4gIGNvbnN0IGNyZWF0ZUVuZHBvaW50ID0gU3ltYm9sKFwiQ29tbGluay5lbmRwb2ludFwiKTtcclxuICBjb25zdCByZWxlYXNlUHJveHkgPSBTeW1ib2woXCJDb21saW5rLnJlbGVhc2VQcm94eVwiKTtcclxuICBjb25zdCB0aHJvd01hcmtlciA9IFN5bWJvbChcIkNvbWxpbmsudGhyb3duXCIpO1xyXG4gIGNvbnN0IGlzT2JqZWN0ID0gKHZhbCkgPT4gKHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIgJiYgdmFsICE9PSBudWxsKSB8fCB0eXBlb2YgdmFsID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgLyoqXHJcbiAgICogSW50ZXJuYWwgdHJhbnNmZXIgaGFuZGxlIHRvIGhhbmRsZSBvYmplY3RzIG1hcmtlZCB0byBwcm94eS5cclxuICAgKi9cclxuICBjb25zdCBwcm94eVRyYW5zZmVySGFuZGxlciA9IHtcclxuICAgICAgY2FuSGFuZGxlOiAodmFsKSA9PiBpc09iamVjdCh2YWwpICYmIHZhbFtwcm94eU1hcmtlcl0sXHJcbiAgICAgIHNlcmlhbGl6ZShvYmopIHtcclxuICAgICAgICAgIGNvbnN0IHsgcG9ydDEsIHBvcnQyIH0gPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcclxuICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQxKTtcclxuICAgICAgICAgIHJldHVybiBbcG9ydDIsIFtwb3J0Ml1dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShwb3J0KSB7XHJcbiAgICAgICAgICBwb3J0LnN0YXJ0KCk7XHJcbiAgICAgICAgICByZXR1cm4gd3JhcChwb3J0KTtcclxuICAgICAgfSxcclxuICB9O1xyXG4gIC8qKlxyXG4gICAqIEludGVybmFsIHRyYW5zZmVyIGhhbmRsZXIgdG8gaGFuZGxlIHRocm93biBleGNlcHRpb25zLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRocm93VHJhbnNmZXJIYW5kbGVyID0ge1xyXG4gICAgICBjYW5IYW5kbGU6ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpICYmIHRocm93TWFya2VyIGluIHZhbHVlLFxyXG4gICAgICBzZXJpYWxpemUoeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgICBsZXQgc2VyaWFsaXplZDtcclxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHtcclxuICAgICAgICAgICAgICAgICAgaXNFcnJvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBzZXJpYWxpemVkID0geyBpc0Vycm9yOiBmYWxzZSwgdmFsdWUgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBbc2VyaWFsaXplZCwgW11dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShzZXJpYWxpemVkKSB7XHJcbiAgICAgICAgICBpZiAoc2VyaWFsaXplZC5pc0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3Ioc2VyaWFsaXplZC52YWx1ZS5tZXNzYWdlKSwgc2VyaWFsaXplZC52YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aHJvdyBzZXJpYWxpemVkLnZhbHVlO1xyXG4gICAgICB9LFxyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIGN1c3RvbWl6aW5nIHRoZSBzZXJpYWxpemF0aW9uIG9mIGNlcnRhaW4gdmFsdWVzLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRyYW5zZmVySGFuZGxlcnMgPSBuZXcgTWFwKFtcclxuICAgICAgW1wicHJveHlcIiwgcHJveHlUcmFuc2ZlckhhbmRsZXJdLFxyXG4gICAgICBbXCJ0aHJvd1wiLCB0aHJvd1RyYW5zZmVySGFuZGxlcl0sXHJcbiAgXSk7XHJcbiAgZnVuY3Rpb24gZXhwb3NlKG9iaiwgZXAgPSBzZWxmKSB7XHJcbiAgICAgIGVwLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGZ1bmN0aW9uIGNhbGxiYWNrKGV2KSB7XHJcbiAgICAgICAgICBpZiAoIWV2IHx8ICFldi5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgeyBpZCwgdHlwZSwgcGF0aCB9ID0gT2JqZWN0LmFzc2lnbih7IHBhdGg6IFtdIH0sIGV2LmRhdGEpO1xyXG4gICAgICAgICAgY29uc3QgYXJndW1lbnRMaXN0ID0gKGV2LmRhdGEuYXJndW1lbnRMaXN0IHx8IFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICBsZXQgcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguc2xpY2UoMCwgLTEpLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBwYXRoLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJHRVRcIiAvKiBHRVQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByYXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiU0VUXCIgLyogU0VUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFtwYXRoLnNsaWNlKC0xKVswXV0gPSBmcm9tV2lyZVZhbHVlKGV2LmRhdGEudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQVBQTFlcIiAvKiBBUFBMWSAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJhd1ZhbHVlLmFwcGx5KHBhcmVudCwgYXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQ09OU1RSVUNUXCIgLyogQ09OU1RSVUNUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbmV3IHJhd1ZhbHVlKC4uLmFyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBwcm94eSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkVORFBPSU5UXCIgLyogRU5EUE9JTlQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwb3J0MSwgcG9ydDIgfSA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRyYW5zZmVyKHBvcnQxLCBbcG9ydDFdKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAodmFsdWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyZXR1cm5WYWx1ZSlcclxuICAgICAgICAgICAgICAuY2F0Y2goKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLnRoZW4oKHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgW3dpcmVWYWx1ZSwgdHJhbnNmZXJhYmxlc10gPSB0b1dpcmVWYWx1ZShyZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgZXAucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB3aXJlVmFsdWUpLCB7IGlkIH0pLCB0cmFuc2ZlcmFibGVzKTtcclxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJSRUxFQVNFXCIgLyogUkVMRUFTRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAvLyBkZXRhY2ggYW5kIGRlYWN0aXZlIGFmdGVyIHNlbmRpbmcgcmVsZWFzZSByZXNwb25zZSBhYm92ZS5cclxuICAgICAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgY2FsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChlcC5zdGFydCkge1xyXG4gICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBpc01lc3NhZ2VQb3J0KGVuZHBvaW50KSB7XHJcbiAgICAgIHJldHVybiBlbmRwb2ludC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIk1lc3NhZ2VQb3J0XCI7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQoZW5kcG9pbnQpIHtcclxuICAgICAgaWYgKGlzTWVzc2FnZVBvcnQoZW5kcG9pbnQpKVxyXG4gICAgICAgICAgZW5kcG9pbnQuY2xvc2UoKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gd3JhcChlcCwgdGFyZ2V0KSB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgW10sIHRhcmdldCk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUmVsZWFzZWQpIHtcclxuICAgICAgaWYgKGlzUmVsZWFzZWQpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZVwiKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBjcmVhdGVQcm94eShlcCwgcGF0aCA9IFtdLCB0YXJnZXQgPSBmdW5jdGlvbiAoKSB7IH0pIHtcclxuICAgICAgbGV0IGlzUHJveHlSZWxlYXNlZCA9IGZhbHNlO1xyXG4gICAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIHtcclxuICAgICAgICAgIGdldChfdGFyZ2V0LCBwcm9wKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gcmVsZWFzZVByb3h5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Byb3h5UmVsZWFzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChwcm9wID09PSBcInRoZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHRoZW46ICgpID0+IHByb3h5IH07XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIgLyogR0VUICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIH0pLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiByLnRoZW4uYmluZChyKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVByb3h5KGVwLCBbLi4ucGF0aCwgcHJvcF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNldChfdGFyZ2V0LCBwcm9wLCByYXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgLy8gRklYTUU6IEVTNiBQcm94eSBIYW5kbGVyIGBzZXRgIG1ldGhvZHMgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBhXHJcbiAgICAgICAgICAgICAgLy8gYm9vbGVhbi4gVG8gc2hvdyBnb29kIHdpbGwsIHdlIHJldHVybiB0cnVlIGFzeW5jaHJvbm91c2x5IMKvXFxfKOODhClfL8KvXHJcbiAgICAgICAgICAgICAgY29uc3QgW3ZhbHVlLCB0cmFuc2ZlcmFibGVzXSA9IHRvV2lyZVZhbHVlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIlNFVFwiIC8qIFNFVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhdGgsIHByb3BdLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBhcHBseShfdGFyZ2V0LCBfdGhpc0FyZywgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICAgIGlmIChsYXN0ID09PSBjcmVhdGVFbmRwb2ludCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFTkRQT0lOVFwiIC8qIEVORFBPSU5UICovLFxyXG4gICAgICAgICAgICAgICAgICB9KS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBXZSBqdXN0IHByZXRlbmQgdGhhdCBgYmluZCgpYCBkaWRu4oCZdCBoYXBwZW4uXHJcbiAgICAgICAgICAgICAgaWYgKGxhc3QgPT09IFwiYmluZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgcGF0aC5zbGljZSgwLCAtMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkFQUExZXCIgLyogQVBQTFkgKi8sXHJcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICBhcmd1bWVudExpc3QsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJ1Y3QoX3RhcmdldCwgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkNPTlNUUlVDVFwiIC8qIENPTlNUUlVDVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIGFyZ3VtZW50TGlzdCxcclxuICAgICAgICAgICAgICB9LCB0cmFuc2ZlcmFibGVzKS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBwcm94eTtcclxuICB9XHJcbiAgZnVuY3Rpb24gbXlGbGF0KGFycikge1xyXG4gICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJyKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyhhcmd1bWVudExpc3QpIHtcclxuICAgICAgY29uc3QgcHJvY2Vzc2VkID0gYXJndW1lbnRMaXN0Lm1hcCh0b1dpcmVWYWx1ZSk7XHJcbiAgICAgIHJldHVybiBbcHJvY2Vzc2VkLm1hcCgodikgPT4gdlswXSksIG15RmxhdChwcm9jZXNzZWQubWFwKCh2KSA9PiB2WzFdKSldO1xyXG4gIH1cclxuICBjb25zdCB0cmFuc2ZlckNhY2hlID0gbmV3IFdlYWtNYXAoKTtcclxuICBmdW5jdGlvbiB0cmFuc2ZlcihvYmosIHRyYW5zZmVycykge1xyXG4gICAgICB0cmFuc2ZlckNhY2hlLnNldChvYmosIHRyYW5zZmVycyk7XHJcbiAgICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHByb3h5KG9iaikge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihvYmosIHsgW3Byb3h5TWFya2VyXTogdHJ1ZSB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gdG9XaXJlVmFsdWUodmFsdWUpIHtcclxuICAgICAgZm9yIChjb25zdCBbbmFtZSwgaGFuZGxlcl0gb2YgdHJhbnNmZXJIYW5kbGVycykge1xyXG4gICAgICAgICAgaWYgKGhhbmRsZXIuY2FuSGFuZGxlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IFtzZXJpYWxpemVkVmFsdWUsIHRyYW5zZmVyYWJsZXNdID0gaGFuZGxlci5zZXJpYWxpemUodmFsdWUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiSEFORExFUlwiIC8qIEhBTkRMRVIgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNmZXJhYmxlcyxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogXCJSQVdcIiAvKiBSQVcgKi8sXHJcbiAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdHJhbnNmZXJDYWNoZS5nZXQodmFsdWUpIHx8IFtdLFxyXG4gICAgICBdO1xyXG4gIH1cclxuICBmdW5jdGlvbiBmcm9tV2lyZVZhbHVlKHZhbHVlKSB7XHJcbiAgICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcIkhBTkRMRVJcIiAvKiBIQU5ETEVSICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFuc2ZlckhhbmRsZXJzLmdldCh2YWx1ZS5uYW1lKS5kZXNlcmlhbGl6ZSh2YWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgICBjYXNlIFwiUkFXXCIgLyogUkFXICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCBtc2csIHRyYW5zZmVycykge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlkID0gZ2VuZXJhdGVVVUlEKCk7XHJcbiAgICAgICAgICBlcC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBmdW5jdGlvbiBsKGV2KSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFldi5kYXRhIHx8ICFldi5kYXRhLmlkIHx8IGV2LmRhdGEuaWQgIT09IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbCk7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShldi5kYXRhKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGVwLnN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVwLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oeyBpZCB9LCBtc2cpLCB0cmFuc2ZlcnMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKCkge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5KDQpXHJcbiAgICAgICAgICAuZmlsbCgwKVxyXG4gICAgICAgICAgLm1hcCgoKSA9PiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKVxyXG4gICAgICAgICAgLmpvaW4oXCItXCIpO1xyXG4gIH1cbiAgLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29tbGluay5tanMubWFwXG5cbiAgLy8gQ29uc3RhbnRzXG4gIGNvbnN0IFVSTF9DRE5fUk9PVCA9IFwiaHR0cHM6Ly9jZG4uYmlvd2FzbS5jb20vdjJcIjtcbiAgY29uc3QgQ09ORklHX0RFRkFVTFRTID0ge1xuICBcdC8vIEJpb3dhc20gQ0ROIFVSTHNcbiAgXHR1cmxDRE46IFVSTF9DRE5fUk9PVCxcbiAgXHQvLyBHZXQgdGhlIFdvcmtlciBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbnQgQWlvbGkgdmVyc2lvblxuICBcdHVybEFpb2xpOiBgJHtVUkxfQ0ROX1JPT1R9L2Fpb2xpLyR7cGtnLnZlcnNpb259L2Fpb2xpLndvcmtlci5qc2AsXG4gIFx0Ly8gV2hlcmUgd2UgY2FuIGZpbmQgdGhlIGJhc2UgYmlvd2FzbSBtb2R1bGUgKG9ubHkgbW9kaWZ5IHRoaXMgZm9yIGxvY2FsIGRldmVsb3BtZW50KVxuICBcdHVybEJhc2VNb2R1bGU6IG51bGwsXG5cbiAgXHQvLyBGb2xkZXIgdG8gdXNlIGZvciBtb3VudGluZyB0aGUgc2hhcmVkIGZpbGVzeXN0ZW1cbiAgXHRkaXJTaGFyZWQ6IFwiL3NoYXJlZFwiLFxuICBcdC8vIEZvbGRlciB0byB1c2UgZm9yIG1vdW50aW5nIEZpbGUvQmxvYiBvYmplY3RzIHRvIHRoZSB2aXJ0dWFsIGZpbGUgc3lzdGVtXG4gIFx0ZGlyTW91bnRlZDogXCIvbW50XCIsXG4gIFx0Ly8gRm9sZGVyIHRvIHVzZSBmb3Igc3ltbGlua3MgKGJhc2ljYWxseSwgd2UgbWFrZSBhIHN5bWxpbmsgdG8gZWFjaCBmaWxlIG1vdW50ZWQgb24gV09SS0VSRlNcbiAgXHQvLyBzbyB0aGF0IG9wZXJhdGlvbnMgbGlrZSBcInNhbXRvb2xzIGluZGV4XCIgZG9uJ3QgY3Jhc2ggZHVlIHRvIHRoZSByZWFkLW9ubHkgbmF0dXJlIG9mIFdPUktFUlMpLlxuICBcdC8vIEFsc28gbW91bnQgVVJMcyBsYXppbHkgaW4gdGhhdCBmb2xkZXIuXG4gIFx0ZGlyRGF0YTogXCIvZGF0YVwiLFxuICBcdC8vIEludGVybGVhdmUgc3Rkb3V0L3N0ZGVyci4gSWYgc2V0IHRvIGZhbHNlLCBgLmV4ZWMoKWAgcmV0dXJucyBhbiBvYmplY3QgeyBcInN0ZG91dFwiOiA8dGV4dD4sIFwic3RkZXJyXCI6IDx0ZXh0PiB9XG4gIFx0cHJpbnRJbnRlcmxlYXZlZDogdHJ1ZSxcblxuICBcdC8vIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biB3aGVuZXZlciB3ZSByZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBXZWJXb3JrZXIgd2l0aCBwYXlsb2FkIHsgdHlwZTogXCJiaW93YXNtXCIsIHZhbHVlOiAuLi4gfS5cbiAgXHQvLyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9iaW93YXNtL2Jpb3dhc20vdHJlZS9tYWluL3Rvb2xzL2JodHNuZT4gZm9yIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgY2FuIGJlIHVzZWQgdG8gc2VuZCByZWd1bGFyIHVwZGF0ZXNcbiAgXHQvLyBiYWNrIHRvIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgY2FsbE1haW4oKSBpcyBkb25lIHJ1bm5pbmcuXG4gIFx0Y2FsbGJhY2s6IG51bGwsXG5cbiAgXHQvLyBEZWJ1Z2dpbmdcbiAgXHRkZWJ1ZzogZmFsc2UsXG4gIFx0ZW52OiBcInByZFwiXG4gIH07XG5cbiAgLy8gQ2xhc3M6IDEgb2JqZWN0ID0gMSB3b3JrZXI7IHVzZXIgY2FuIGRlY2lkZSBpZiB0aGV5IHdhbnQgdG9vbHMgcnVubmluZyBpbiBzZXBhcmF0ZSB0aHJlYWRzIG9yIGFsbCBvZiB0aGVtIGluIG9uZVxuICBjbGFzcyBBaW9saVxuICB7XG4gIFx0Y29uc3RydWN0b3IodG9vbHMsIGNvbmZpZz17fSlcbiAgXHR7XG4gIFx0XHRpZih0b29scyA9PSBudWxsKVxuICBcdFx0XHR0aHJvdyBcIkV4cGVjdGluZyBhcnJheSBvZiB0b29scyBhcyBpbnB1dCB0byBBaW9saSBjb25zdHJ1Y3Rvci5cIjtcblxuICBcdFx0Ly8gUGFyc2UgdXNlciBpbnB1dFxuICBcdFx0aWYoIUFycmF5LmlzQXJyYXkodG9vbHMpKVxuICBcdFx0XHR0b29scyA9IFsgdG9vbHMgXTtcbiAgXHRcdC8vIE92ZXJ3cml0ZSBkZWZhdWx0IGNvbmZpZyBpZiBzcGVjaWZpZWRcbiAgXHRcdGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIENPTkZJR19ERUZBVUxUUywgY29uZmlnKTtcbiAgXHRcdC8vIEZvciBjb252ZW5pZW5jZSwgc3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBvciBcIjx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+XCIgaW5zdGVhZCBvZiBvYmplY3QgY29uZmlnXG4gIFx0XHR0b29scyA9IHRvb2xzLm1hcCh0aGlzLl9wYXJzZVRvb2wpO1xuICBcdFx0Ly8gSWYgdGVzdGluZyB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudCBlLmcuIGNkbi1zdGcuYmlvd2FzbS5jb21cbiAgXHRcdGlmKGNvbmZpZy5lbnYgIT0gXCJwcmRcIikge1xuICBcdFx0XHRjb25maWcudXJsQ0ROID0gY29uZmlnLnVybENETi5yZXBsYWNlKFwiY2RuXCIsIGBjZG4tJHtjb25maWcuZW52fWApO1xuICBcdFx0XHRjb25maWcudXJsQWlvbGkgPSBjb25maWcudXJsQWlvbGkucmVwbGFjZShcImNkblwiLCBgY2RuLSR7Y29uZmlnLmVudn1gKTtcbiAgXHRcdH1cblxuICBcdFx0Ly8gQWRkIGJpb3dhc20gYmFzZSBtb2R1bGUgdG8gbGlzdCBvZiB0b29scyB0byBpbml0aWFsaXplIChuZWVkIHRoaXMgZm9yIHRoZSBzaGFyZWQgdmlydHVhbCBmaWxlc3lzdGVtKVxuICBcdFx0dG9vbHMgPSBbe1xuICBcdFx0XHR0b29sOiBcImJhc2VcIixcbiAgXHRcdFx0dmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIFx0XHRcdHVybFByZWZpeDogY29uZmlnLnVybEJhc2VNb2R1bGVcbiAgXHRcdH0sIC4uLnRvb2xzXTtcblxuICBcdFx0Ly8gU2V0IHN0YXRlXG4gIFx0XHR0aGlzLnRvb2xzID0gdG9vbHM7XG4gIFx0XHR0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICBcdFx0Ly8gSGFuZGxlIGNhbGxiYWNrIChkZWxldGUgaXQgYmVjYXVzZSB3ZSBjYW4ndCBzZW5kIGEgZnVuY3Rpb24gdG8gdGhlIFdlYldvcmtlcilcbiAgXHRcdGlmKHRoaXMuY29uZmlnLmNhbGxiYWNrICE9IG51bGwpXG4gIFx0XHRcdHRoaXMuY2FsbGJhY2sgPSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcbiAgXHRcdGRlbGV0ZSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcblxuICBcdFx0cmV0dXJuIHRoaXMuaW5pdCgpO1xuICBcdH1cblxuICBcdC8vIEluaXRpYWxpemUgdGhlIFdlYldvcmtlciBhbmQgdGhlIFdlYkFzc2VtYmx5IG1vZHVsZXMgd2l0aGluIGl0XG4gIFx0YXN5bmMgaW5pdCgpIHtcbiAgXHRcdC8vIE5vdGU6IFdlIGNhbiBvbmx5IGNyZWF0ZSBhIFdlYldvcmtlciB1c2luZyBhIFVSTCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGFwcCBydW5uaW5nIGl0LCBpLmUuIHdlXG4gIFx0XHQvLyBjYW4ndCBkbyBgbmV3IFdvcmtlcihcImh0dHBzOi8vY2RuLmJpb3dhc20uY29tL3YyLy4uLlwiKWAsIHNvIGluc3RlYWQgd2UgbmVlZCB0byBmZXRjaCB0aGUgY29udGVudHMgb2YgdGhhdFxuICBcdFx0Ly8gVVJMIGZpcnN0LCBhbmQgdGhlbiBjcmVhdGUgdGhlIFdlYldvcmtlci4gU2VlIDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjAwMTU4OTg+LlxuICBcdFx0Y29uc3QgbW9kdWxlSlMgPSBhd2FpdCAoYXdhaXQgZmV0Y2godGhpcy5jb25maWcudXJsQWlvbGkpKS50ZXh0KCk7XG4gIFx0XHRjb25zdCBtb2R1bGVCbG9iID0gbmV3IEJsb2IoW21vZHVsZUpTXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiB9KTtcblxuICBcdFx0Ly8gQ3JlYXRlIHRoZSBXZWJXb3JrZXJcbiAgXHRcdGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChtb2R1bGVCbG9iKSk7XG4gIFx0XHQvLyBMaXN0ZW4gZm9yIFwiYmlvd2FzbVwiIG1lc3NhZ2VzIGZyb20gdGhlIFdlYldvcmtlclxuICBcdFx0aWYodGhpcy5jYWxsYmFjaylcbiAgXHRcdFx0d29ya2VyLm9ubWVzc2FnZSA9IGUgPT4ge1xuICBcdFx0XHRcdGlmKGUuZGF0YS50eXBlID09IFwiYmlvd2FzbVwiKVxuICBcdFx0XHRcdFx0dGhpcy5jYWxsYmFjayhlLmRhdGEudmFsdWUpO1xuICBcdFx0XHR9O1xuXG4gIFx0XHRjb25zdCBhaW9saSA9IHdyYXAod29ya2VyKTtcbiAgXHRcdGFpb2xpLnRvb2xzID0gdGhpcy50b29scztcbiAgXHRcdGFpb2xpLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuXG4gIFx0XHQvLyBJbml0aWFsaXplIHRoZSB0b29scyBpbnNpZGUgdGhlIFdlYldvcmtlclxuICBcdFx0YXdhaXQgYWlvbGkuaW5pdCgpO1xuXG4gIFx0XHRyZXR1cm4gYWlvbGk7XG4gIFx0fVxuXG4gIFx0Ly8gUGFyc2UgXCI8dG9vbD4vPHZlcnNpb24+XCIgYW5kIFwiPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj5cIiBpbnRvIHsgXCJ0b29sXCI6IDx0b29sPiwgXCJwcm9ncmFtXCI6IDxwcm9ncmFtPiwgXCJ2ZXJzaW9uXCI6IDx2ZXJzaW9uPiB9XG4gIFx0X3BhcnNlVG9vbCh0b29sKVxuICBcdHtcbiAgXHRcdC8vIElmIG5vdCBhIHN0cmluZywgbGVhdmUgaXQgYXMgaXNcbiAgXHRcdGlmKHR5cGVvZiB0b29sICE9PSBcInN0cmluZ1wiKVxuICBcdFx0XHRyZXR1cm4gdG9vbDtcblxuICBcdFx0Ly8gU3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBhbmQgXCI8dG9vbD4vPHByb2dyYW0+Lzx2ZXJzaW9uPlwiXG4gIFx0XHRjb25zdCB0b29sU3BsaXQgPSB0b29sLnNwbGl0KFwiL1wiKTtcbiAgXHRcdGlmKHRvb2xTcGxpdC5sZW5ndGggIT0gMiAmJiB0b29sU3BsaXQubGVuZ3RoICE9IDMpXG4gIFx0XHRcdHRocm93IFwiRXhwZWN0aW5nICc8dG9vbD4vPHZlcnNpb24+JyBvciAnPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj4nXCI7XG5cbiAgXHRcdHJldHVybiB7XG4gIFx0XHRcdHRvb2w6IHRvb2xTcGxpdFswXSxcbiAgXHRcdFx0cHJvZ3JhbTogdG9vbFNwbGl0Lmxlbmd0aCA9PSAzID8gdG9vbFNwbGl0WzFdIDogdG9vbFNwbGl0WzBdLFxuICBcdFx0XHR2ZXJzaW9uOiB0b29sU3BsaXRbdG9vbFNwbGl0Lmxlbmd0aCAtIDFdXG4gIFx0XHR9O1xuICBcdH1cbiAgfVxuXG4gIHJldHVybiBBaW9saTtcblxufSkpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFpb2xpLmpzLm1hcFxuIiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgTGVzaygpIHtcbiAgICAgICAgaWYgKHRoaXMubGVzayA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmxlc2sgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydHJywgJ0EnLCAnUycsICdUJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snTicsICdRJywgJ0gnXSwgJ21hZ2VudGEnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgICAgICAgIF0sIGZhbHNlLCBBbWlub2FjaWRzUGFsZXR0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxlc2s7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgR3Jva0dyb3VwcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3Jva0dyb3VwcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb2tHcm91cHMgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydDJywgJ1UnXSwgJ3llbGxvdyddLFxuICAgICAgICAgICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydSJywgJ0gnLCAnSyddLCAnbGlnaHRfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snUycsICdUJywgJ04nLCAnUSddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncm9rR3JvdXBzO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IFJhc01vbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmFzTW9sID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMucmFzTW9sID0gbmV3IEFtaW5vYWNpZHNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICAgICAgICAgJ0QnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0UnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0MnOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ00nOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ0snOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1InOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1MnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ1QnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ0YnOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ1knOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ04nOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ1EnOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ0cnOiAnI0VCRUJFQicsXG4gICAgICAgICAgICAgICAgJ0wnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ1YnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0knOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0EnOiAnI0M4QzhDOCcsXG4gICAgICAgICAgICAgICAgJ1cnOiAnI0I0NUFCNCcsXG4gICAgICAgICAgICAgICAgJ0gnOiAnIzgyODJEMicsXG4gICAgICAgICAgICAgICAgJ1AnOiAnI0RDOTY4MicsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICcjQkVBMDZFJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhc01vbDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkcyB7XG4gICAgc3RhdGljIGdldFBhbGV0dGUoc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHN3aXRjaCAoc2NoZW1lKSB7XG4gICAgICAgICAgICBjYXNlICdncm9rJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgICAgICBjYXNlICdsZXNrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkxlc2s7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hlbVBhbGV0dGU6IHNjaGVtZSBcXGAke3NjaGVtZX1cXGAgZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRpdmlkZWQgYW1pbm8gYWNpZCB3aXRoIGl0cyBjb250ZW50IGluIHRoZSBicmFja2V0LCBpZiB0aGUgY29udGVudCBpcyBudW1iZXIsIHRoZW4gaXRzIG9taXR0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjIHJhdyBhbWlub1xuICAgICAqIEByZXR1cm4ge1tzdHJpbmcsIHN0cmluZ119IG91dGVyIGFuZCBpbm5lciBjb250ZW50XG4gICAgICovXG4gICAgc3RhdGljIGdldElubmVyT3V0ZXIoYykge1xuICAgICAgICBsZXQgaXNJbm5lciA9IDA7XG4gICAgICAgIGxldCBpbm5lciA9ICcnO1xuICAgICAgICBsZXQgb3V0ZXIgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBjaGFyIG9mIGMpIHtcbiAgICAgICAgICAgIGlmIChjaGFyID09ICcoJylcbiAgICAgICAgICAgICAgICBpc0lubmVyKys7XG4gICAgICAgICAgICBlbHNlIGlmIChjaGFyID09ICcpJylcbiAgICAgICAgICAgICAgICBpc0lubmVyLS07XG4gICAgICAgICAgICBlbHNlIGlmIChpc0lubmVyKVxuICAgICAgICAgICAgICAgIGlubmVyICs9IGNoYXI7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3V0ZXIgKz0gY2hhcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzTmFOKHBhcnNlSW50KGlubmVyKSkgPyBbb3V0ZXIsICcnXSA6IFtvdXRlciwgaW5uZXJdO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0Q29sb3JBQVBpdm90KG1vbm9tZXIgPSAnJywgc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAvL2NvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSBBQVBhbGV0dGVzLkdyb2tHcm91cHMoKTtcbiAgICAgICAgY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IHRoaXMuZ2V0UGFsZXR0ZShzY2hlbWUpO1xuICAgICAgICBsZXQgW291dGVyTW9ub21lciwgaW5uZXJNb25vbWVyXSA9IHRoaXMuZ2V0SW5uZXJPdXRlcihtb25vbWVyKTtcbiAgICAgICAgb3V0ZXJNb25vbWVyID0gKG91dGVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7b3V0ZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBvdXRlck1vbm9tZXIpO1xuICAgICAgICBpbm5lck1vbm9tZXIgPSAoaW5uZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtpbm5lck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IGlubmVyTW9ub21lcik7XG4gICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAxIHx8IG1vbm9tZXJbMV0gPT0gJygnKSB7XG4gICAgICAgICAgICBjb25zdCBhbWlubyA9IChfYSA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDFdIDpcbiAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDFdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVyWzBdID09ICdkJyAmJiBtb25vbWVyWzFdIGluIGNoZW1QYWxldHRlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAyIHx8IG1vbm9tZXJbMl0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2IgPSBtb25vbWVyWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDJdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMCwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMCwgMyldO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgM10gOlxuICAgICAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgoKF9jID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnRvTG93ZXJDYXNlKCkpID09IG1vbm9tZXJbMF0pIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLnN1YnN0cmluZygxLCAzKSBpbiB0aGlzLkFBRnVsbE5hbWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDQgfHwgbW9ub21lcls0XSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDEsIDMpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgNF0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCA0XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMF07XG4gICAgfVxufVxuQW1pbm9hY2lkcy5TZW1UeXBlID0gJ0FtaW5vYWNpZHMnO1xuQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnQW1pbm9hY2lkc011bHRpcGxlQWxpZ25tZW50JztcbkFtaW5vYWNpZHMudW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG5BbWlub2FjaWRzLk5hbWVzID0ge1xuICAgICdHJzogJ0dseWNpbmUnLFxuICAgICdMJzogJ0xldWNpbmUnLFxuICAgICdZJzogJ1R5cm9zaW5lJyxcbiAgICAnUyc6ICdTZXJpbmUnLFxuICAgICdFJzogJ0dsdXRhbWljIGFjaWQnLFxuICAgICdRJzogJ0dsdXRhbWluZScsXG4gICAgJ0QnOiAnQXNwYXJ0aWMgYWNpZCcsXG4gICAgJ04nOiAnQXNwYXJhZ2luZScsXG4gICAgJ0YnOiAnUGhlbnlsYWxhbmluZScsXG4gICAgJ0EnOiAnQWxhbmluZScsXG4gICAgJ0snOiAnTHlzaW5lJyxcbiAgICAnUic6ICdBcmdpbmluZScsXG4gICAgJ0gnOiAnSGlzdGlkaW5lJyxcbiAgICAnQyc6ICdDeXN0ZWluZScsXG4gICAgJ1YnOiAnVmFsaW5lJyxcbiAgICAnUCc6ICdQcm9saW5lJyxcbiAgICAnVyc6ICdUcnlwdG9waGFuJyxcbiAgICAnSSc6ICdJc29sZXVjaW5lJyxcbiAgICAnTSc6ICdNZXRoaW9uaW5lJyxcbiAgICAnVCc6ICdUaHJlb25pbmUnLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXMgPSB7XG4gICAgJ0cnOiAnTkNDKD1PKU8nLFxuICAgICdMJzogJ05bQ0BIXShDQyhDKUMpQyg9TylPJyxcbiAgICAnWSc6ICdOQyhDQzE9Q0M9QyhPKUM9QzEpQyg9TylPJyxcbiAgICAnUyc6ICdOQyhDTylDKD1PKU8nLFxuICAgICdFJzogJ05bQ0BASF0oQ0NDKE8pPU8pQyg9TylPJyxcbiAgICAnUSc6ICdOW0NAQEhdKENDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0QnOiAnTltDQEBIXShDQyhPKT1PKUMoPU8pTycsXG4gICAgJ04nOiAnTltDQEBIXShDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0YnOiAnTkMoQ0MxPUNDPUNDPUMxKUMoPU8pTycsXG4gICAgJ0EnOiAnTltDQEhdKEMpQyg9TylPJyxcbiAgICAnSyc6ICdOQyhDQ0NDTilDKD1PKU8nLFxuICAgICdSJzogJ05bQ0BIXShDQ0NOQyg9TilDKUMoPU8pTycsXG4gICAgJ0gnOiAnTkMoQ0MxPUNOPUNbTl0xKUMoPU8pTycsXG4gICAgJ0MnOiAnTltDQEBIXShDUylDKD1PKU8nLFxuICAgICdWJzogJ05DKEMoQylDKUMoPU8pTycsXG4gICAgJ1AnOiAnTihDQ0MxKUMxQyg9TylPJyxcbiAgICAnVyc6ICdOW0NAQEhdKENjMWMyY2NjY2MybihbSF0pYzEpQyg9TylPJyxcbiAgICAnSSc6ICdOW0NASF0oW0NASF0oQylDQylDKD1PKU8nLFxuICAgICdNJzogJ05DKENDU0MpQyg9TylPJyxcbiAgICAnVCc6ICdOQyhDKE8pQylDKD1PKU8nLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXNUcnVuY2F0ZWQgPSB7XG4gICAgJ0cnOiAnKkMqJyxcbiAgICAnTCc6ICdDQyhDKUNbQ0BIXSgqKSonLFxuICAgICdZJzogJ0MxPUNDKD1DQz1DMUNDKCopKilPJyxcbiAgICAnUyc6ICdPQ0MoKilDKicsXG4gICAgJ0UnOiAnKltDQEBIXShDQ0MoTyk9TykqJyxcbiAgICAnUSc6ICcqTltDQEBIXShDQ0MoTik9TykqJyxcbiAgICAnRCc6ICcqW0NAQEhdKENDKE8pPU8pKicsXG4gICAgJ04nOiAnKltDQEBIXShDQyhOKT1PKSonLFxuICAgICdGJzogJ0MxPUNDPUMoQz1DMSlDQygqKSonLFxuICAgICdBJzogJ0NbQ0BIXSgqKSonLFxuICAgICdLJzogJ0MoQ0NOKUNDKCopKicsXG4gICAgJ1InOiAnKltDQEhdKENDQ05DKD1OKUMpKicsXG4gICAgJ0gnOiAnQzE9QyhOQz1OMSlDQygqKSonLFxuICAgICdDJzogJ0MoW0NAQEhdKCopKilTJyxcbiAgICAnVic6ICdDQyhDKUMoKikqJyxcbiAgICAnUCc6ICdDMUNDTigqKUMxKicsXG4gICAgJ1cnOiAnKltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKSonLFxuICAgICdJJzogJ0NDW0NASF0oQylbQ0BIXSgqKSonLFxuICAgICdNJzogJ0NTQ0NDKCopKicsXG4gICAgJ1QnOiAnQ0MoTylDKCopKicsXG59O1xuLyoqIFRPRE86IEZ1bGw/XG4gKi9cbkFtaW5vYWNpZHMuQUFGdWxsTmFtZXMgPSB7XG4gICAgJ0FsYSc6ICdBJyxcbiAgICAnQXJnJzogJ1InLFxuICAgICdBc24nOiAnTicsXG4gICAgJ0FzcCc6ICdEJyxcbiAgICAnQ3lzJzogJ0MnLFxuICAgICdHbG4nOiAnUScsXG4gICAgJ0dsdSc6ICdFJyxcbiAgICAnR2x5JzogJ0cnLFxuICAgICdIaXMnOiAnSCcsXG4gICAgJ0lsZSc6ICdJJyxcbiAgICAnTGV1JzogJ0wnLFxuICAgICdMeXMnOiAnSycsXG4gICAgJ01ldCc6ICdNJyxcbiAgICAnUGhlJzogJ0YnLFxuICAgICdQcm8nOiAnUCcsXG4gICAgJ1Nlcic6ICdTJyxcbiAgICAnVGhyJzogJ1QnLFxuICAgICdUcnAnOiAnVycsXG4gICAgJ1R5cic6ICdZJyxcbiAgICAnVmFsJzogJ1YnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVlXMXBibTloWTJsa2N5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW1GdGFXNXZZV05wWkhNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTMEVzVDBGQlR5eEZRVUZoTEdOQlFXTXNSVUZCUXl4TlFVRk5MR2RDUVVGblFpeERRVUZETzBGQlJURkVMRTFCUVUwc1QwRkJUeXhyUWtGQmJVSXNVMEZCVVN4alFVRmpPMGxCUnpkRExFMUJRVTBzUzBGQlN5eEpRVUZKTzFGQlEzQkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eExRVUZMTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNN1owSkJRek5DTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRMmhETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRE5VUXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNVMEZCVXl4RFFVRkRPMmRDUVVNMVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF6dG5Ra0ZEYmtJc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4VlFVRlZMRU5CUVVNN1lVRkRla0lzUlVGQlJTeExRVUZMTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFRRVU12UWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dEpRVU51UWl4RFFVRkRPMGxCU1Uwc1RVRkJUU3hMUVVGTExGVkJRVlU3VVVGRE1VSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlF6bENMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXp0blFrRkRha01zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU03WjBKQlEzUkNMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRPMmRDUVVOdVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRka1FzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzV1VGQldTeERRVUZETzJkQ1FVTXZRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRGVrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRkZCUVZFc1EwRkJRenRoUVVOcVF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4clFrRkJhMElzUTBGQlF5eERRVUZETzFOQlF5OUNPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkpUU3hOUVVGTkxFdEJRVXNzVFVGQlRUdFJRVU4wUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzUzBGQlN5eERRVUZETEVWQlFVVTdXVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEd0Q1FVRnJRaXhEUVVGRE8yZENRVU51UXl4NVJFRkJlVVE3WjBKQlEzcEVMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xGRkJRVkVzUlVGQlJTeFRRVUZUTzJGQlEzQkNMRU5CUVVNc1EwRkJRenRUUVVOS08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUTNKQ0xFTkJRVU03UTBGRFJqdEJRVVZFTEUxQlFVMHNUMEZCVHl4VlFVRlZPMGxCY1Vka0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCYVVJc1RVRkJUVHRSUVVNNVF5eFJRVUZSTEUxQlFVMHNSVUZCUlR0WlFVTm9RaXhMUVVGTExFMUJRVTA3WjBKQlExUXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdXVUZEZGtNc1MwRkJTeXhOUVVGTk8yZENRVU5VTEU5QlFVOHNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEycERPMmRDUVVORkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNlVUpCUVhsQ0xFMUJRVTBzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRUUVVOeVJUdEpRVU5JTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlV6dFJRVU51UXl4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGFFSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMllzU1VGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUldZc1MwRkJTeXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdXVUZEY0VJc1NVRkJTU3hKUVVGSkxFbEJRVWtzUjBGQlJ6dG5Ra0ZEWWl4UFFVRlBMRVZCUVVVc1EwRkJRenRwUWtGRFVDeEpRVUZKTEVsQlFVa3NTVUZCU1N4SFFVRkhPMmRDUVVOc1FpeFBRVUZQTEVWQlFVVXNRMEZCUXp0cFFrRkRVQ3hKUVVGSkxFOUJRVTg3WjBKQlEyUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenM3WjBKQlJXUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenRUUVVOcVFqdFJRVVZFTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU5vUlN4RFFVRkRPMGxCUlUwc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eFZRVUZyUWl4RlFVRkZMRVZCUVVVc1UwRkJhVUlzVFVGQlRUczdVVUZEZWtVc2MwUkJRWE5FTzFGQlEzUkVMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU53UkN4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGREwwUXNXVUZCV1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZETTBZc1dVRkJXU3hIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkZNMFlzU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMWxCUXpWRExFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXd3UTBGQlJTeFhRVUZYTEVWQlFVY3NRMEZCUXp0WlFVTjZReXhQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNoRU8xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4dFFrRkJiVUlzUlVGQlJUdFpRVU16UkN4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVU3WjBKQlF6VkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFMUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl3d1EwRkJSU3hYUVVGWExFVkJRVWNzUTBGQlF6dG5Ra0ZEZWtNc1QwRkJUeXhMUVVGTExFbEJRVWtzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenR2UWtGRGJrTXNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNeFJDeERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1dVRkJXU3hGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTjRSRHRUUVVOR08xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMWxCUXk5RExFbEJRVWtzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlR0blFrRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40UkN4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMjlDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEzaEVPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVUVzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJTeExRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVNelF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1owSkJReTlETEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSVHR2UWtGRE5VTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTjRSQ3hQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8zZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVONFJEdGhRVU5HTzFOQlEwWTdVVUZGUkN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemxFTEVOQlFVTTdPMEZCY0V4bExHdENRVUZQTEVkQlFWY3NXVUZCV1N4RFFVRkRPMEZCUlM5Q0xHMURRVUYzUWl4SFFVRlhMRFpDUVVFMlFpeERRVUZETzBGQlJURkZMSGxDUVVGakxFZEJRVWNzYTBKQlFXdENMRU5CUVVNN1FVRkZOMElzWjBKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1UwRkJVenRKUVVOa0xFZEJRVWNzUlVGQlJTeFZRVUZWTzBsQlEyWXNSMEZCUnl4RlFVRkZMRkZCUVZFN1NVRkRZaXhIUVVGSExFVkJRVVVzWlVGQlpUdEpRVU53UWl4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNaVUZCWlR0SlFVTndRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1pVRkJaVHRKUVVOd1FpeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNXVUZCV1R0SlFVTnFRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1YwRkJWenREUVVOcVFpeERRVUZETzBGQlJWa3NiVUpCUVZFc1IwRkJjVUk3U1VGRGVrTXNSMEZCUnl4RlFVRkZMRlZCUVZVN1NVRkRaaXhIUVVGSExFVkJRVVVzYzBKQlFYTkNPMGxCUXpOQ0xFZEJRVWNzUlVGQlJTd3lRa0ZCTWtJN1NVRkRhRU1zUjBGQlJ5eEZRVUZGTEdOQlFXTTdTVUZEYmtJc1IwRkJSeXhGUVVGRkxIbENRVUY1UWp0SlFVTTVRaXhIUVVGSExFVkJRVVVzZVVKQlFYbENPMGxCUXpsQ0xFZEJRVWNzUlVGQlJTeDNRa0ZCZDBJN1NVRkROMElzUjBGQlJ5eEZRVUZGTEhkQ1FVRjNRanRKUVVNM1FpeEhRVUZITEVWQlFVVXNkMEpCUVhkQ08wbEJRemRDTEVkQlFVY3NSVUZCUlN4cFFrRkJhVUk3U1VGRGRFSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc01FSkJRVEJDTzBsQlF5OUNMRWRCUVVjc1JVRkJSU3gzUWtGQmQwSTdTVUZETjBJc1IwRkJSeXhGUVVGRkxHMUNRVUZ0UWp0SlFVTjRRaXhIUVVGSExFVkJRVVVzYVVKQlFXbENPMGxCUTNSQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEc5RFFVRnZRenRKUVVONlF5eEhRVUZITEVWQlFVVXNNRUpCUVRCQ08wbEJReTlDTEVkQlFVY3NSVUZCUlN4blFrRkJaMEk3U1VGRGNrSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdERRVU4yUWl4RFFVRkRPMEZCUlZrc05FSkJRV2xDTEVkQlFYRkNPMGxCUTJ4RUxFZEJRVWNzUlVGQlJTeExRVUZMTzBsQlExWXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc2MwSkJRWE5DTzBsQlF6TkNMRWRCUVVjc1JVRkJSU3hWUVVGVk8wbEJRMllzUjBGQlJ5eEZRVUZGTEc5Q1FVRnZRanRKUVVONlFpeEhRVUZITEVWQlFVVXNjVUpCUVhGQ08wbEJRekZDTEVkQlFVY3NSVUZCUlN4dFFrRkJiVUk3U1VGRGVFSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2NVSkJRWEZDTzBsQlF6RkNMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4alFVRmpPMGxCUTI1Q0xFZEJRVWNzUlVGQlJTeHhRa0ZCY1VJN1NVRkRNVUlzUjBGQlJ5eEZRVUZGTEcxQ1FVRnRRanRKUVVONFFpeEhRVUZITEVWQlFVVXNaMEpCUVdkQ08wbEJRM0pDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeGhRVUZoTzBsQlEyeENMRWRCUVVjc1JVRkJSU3dyUWtGQkswSTdTVUZEY0VNc1IwRkJSeXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXhRaXhIUVVGSExFVkJRVVVzVjBGQlZ6dEpRVU5vUWl4SFFVRkhMRVZCUVVVc1dVRkJXVHREUVVOc1FpeERRVUZETzBGQlJVWTdSMEZEUnp0QlFVTlhMSE5DUVVGWExFZEJRWEZDTzBsQlF6VkRMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdRMEZEV0N4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibHh1YVcxd2IzSjBJSHRUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdVc0lGTmxjVkJoYkdWMGRHVkNZWE5sZlNCbWNtOXRJQ2N1TDNObGNTMXdZV3hsZEhSbGN5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHeGxjMnM2SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnVEdWemF5Z3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVzWlhOcklEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWJHVnpheUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZEhKeXdnSjBFbkxDQW5VeWNzSUNkVUoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJQ0FnVzFzblF5Y3NJQ2RXSnl3Z0owa25MQ0FuVENjc0lDZFFKeXdnSjBZbkxDQW5XU2NzSUNkTkp5d2dKMWNuWFN3Z0oyRnNiRjluY21WbGJpZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkT0p5d2dKMUVuTENBblNDZGRMQ0FuYldGblpXNTBZU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKM0psWkNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRMSnl3Z0oxSW5YU3dnSjJGc2JGOWliSFZsSjEwc1hHNGdJQ0FnSUNCZExDQm1ZV3h6WlN3Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWektUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWJHVnphenRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR2R5YjJ0SGNtOTFjSE02SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnUjNKdmEwZHliM1Z3Y3lncE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NW5jbTlyUjNKdmRYQnpJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVaM0p2YTBkeWIzVndjeUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZERKeXdnSjFVblhTd2dKM2xsYkd4dmR5ZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkSEp5d2dKMUFuWFN3Z0ozSmxaQ2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEJKeXdnSjFZbkxDQW5TU2NzSUNkTUp5d2dKMDBuTENBblJpY3NJQ2RaSnl3Z0oxY25YU3dnSjJGc2JGOW5jbVZsYmlkZExGeHVJQ0FnSUNBZ0lDQmJXeWRTSnl3Z0owZ25MQ0FuU3lkZExDQW5iR2xuYUhSZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKMlJoY210ZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZFRKeXdnSjFRbkxDQW5UaWNzSUNkUkoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJRjBzSUdaaGJITmxMQ0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVuY205clIzSnZkWEJ6TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nY21GelRXOXNPaUJUWlhGUVlXeGxkSFJsTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBJRkpoYzAxdmJDZ3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV5WVhOTmIyd2dQVDA5SUhadmFXUWdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXlZWE5OYjJ3Z1BTQnVaWGNnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6S0h0Y2JpQWdJQ0FnSUNBZ0x5OGdhSFIwY0RvdkwyRmpZMlZ6TG1WdWN5MXNlVzl1TG1aeUwySnBiM1JwWXk5eVlYTjBiM0F2YUdWc2NDOWpiMnh2ZFhJdWFIUnRYRzRnSUNBZ0lDQWdJQ2RFSnpvZ0p5TkZOakJCTUVFbkxDQXZMeUJoYzNBc0lHRnpjR0Z5ZEdsaklHRmphV1FzSUdGemNGeHVJQ0FnSUNBZ0lDQW5SU2M2SUNjalJUWXdRVEJCSnl3Z0x5OGdaMngxTENCbmJIVjBZVzFwWXlCaFkybGtYRzRnSUNBZ0lDQWdJQ2RESnpvZ0p5TkZOa1UyTURBbkxDQXZMeUJqZVhNc0lHTjVjM1JsYVc1bFhHNGdJQ0FnSUNBZ0lDZE5Kem9nSnlORk5rVTJNREFuTENBdkx5QnRaWFFzSUcxbGRHaHBiMjVwYm1WY2JpQWdJQ0FnSUNBZ0owc25PaUFuSXpFME5VRkdSaWNzSUM4dklHeDVjeXdnYkhsemFXNWxYRzRnSUNBZ0lDQWdJQ2RTSnpvZ0p5TXhORFZCUmtZbkxDQXZMeUJoY21jc0lHRnlaMmx1YVc1bFhHNGdJQ0FnSUNBZ0lDZFRKem9nSnlOR1FUazJNREFuTENBdkx5QnpaWElzSUhObGNtbHVaVnh1SUNBZ0lDQWdJQ0FuVkNjNklDY2pSa0U1TmpBd0p5d2dMeThnZEdoeUxDQjBhSEpsYjI1cGJtVmNiaUFnSUNBZ0lDQWdKMFluT2lBbkl6TXlNekpCUVNjc0lDOHZJSEJvWlN3Z2NHaGxibmxzWVd4aGJtbHVaVnh1SUNBZ0lDQWdJQ0FuV1NjNklDY2pNekl6TWtGQkp5d2dMeThnZEhseUxDQjBlWEp2YzJsdVpWeHVJQ0FnSUNBZ0lDQW5UaWM2SUNjak1EQkVRMFJESnl3Z0x5OGdZWE51TENCaGMzQmhjbUZuYVc1bFhHNGdJQ0FnSUNBZ0lDZFJKem9nSnlNd01FUkRSRU1uTENBdkx5Qm5iRzRzSUdkc2RYUmhiV2x1WlZ4dUlDQWdJQ0FnSUNBblJ5YzZJQ2NqUlVKRlFrVkNKeXdnTHk4Z1oyeDVMQ0JuYkhsamFXNWxYRzRnSUNBZ0lDQWdJQ2RNSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJzWlhVc0lHeGxkV05wYm1WY2JpQWdJQ0FnSUNBZ0oxWW5PaUFuSXpCR09ESXdSaWNzSUM4dklIWmhiQ3dnZG1Gc2FXNWxYRzRnSUNBZ0lDQWdJQ2RKSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJwYkdVc0lHbHpiMnhsZFdOcGJtVmNiaUFnSUNBZ0lDQWdKMEVuT2lBbkkwTTRRemhET0Njc0lDOHZJR0ZzWVN3Z1lXeGhibWx1WlZ4dUlDQWdJQ0FnSUNBblZ5YzZJQ2NqUWpRMVFVSTBKeXdnTHk4Z2RISndMQ0IwY25sd2RHOXdhR0Z1WEc0Z0lDQWdJQ0FnSUNkSUp6b2dKeU00TWpneVJESW5MQ0F2THlCb2FYTXNJR2hwYzNScFpHbHVaVnh1SUNBZ0lDQWdJQ0FuVUNjNklDY2pSRU01TmpneUp5d2dMeThnY0hKdkxDQndjbTlzYVc1bFhHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5JMEpGUVRBMlJTY3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjbUZ6VFc5c08xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCQmJXbHViMkZqYVdSeklIdGNiaUFnYzNSaGRHbGpJSEpsWVdSdmJteDVJRk5sYlZSNWNHVTZJSE4wY21sdVp5QTlJQ2RCYldsdWIyRmphV1J6Snp0Y2JseHVJQ0J6ZEdGMGFXTWdjbVZoWkc5dWJIa2dVMlZ0Vkhsd1pVMTFiSFJwY0d4bFFXeHBaMjV0Wlc1ME9pQnpkSEpwYm1jZ1BTQW5RVzFwYm05aFkybGtjMDExYkhScGNHeGxRV3hwWjI1dFpXNTBKenRjYmx4dUlDQnpkR0YwYVdNZ2RXNWtaV1pwYm1Wa1EyOXNiM0lnUFNBbmNtZGlLREV3TUN3eE1EQXNNVEF3S1NjN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qk9ZVzFsY3pvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblJ5YzZJQ2RIYkhsamFXNWxKeXhjYmlBZ0lDQW5UQ2M2SUNkTVpYVmphVzVsSnl4Y2JpQWdJQ0FuV1NjNklDZFVlWEp2YzJsdVpTY3NYRzRnSUNBZ0oxTW5PaUFuVTJWeWFXNWxKeXhjYmlBZ0lDQW5SU2M2SUNkSGJIVjBZVzFwWXlCaFkybGtKeXhjYmlBZ0lDQW5VU2M2SUNkSGJIVjBZVzFwYm1VbkxGeHVJQ0FnSUNkRUp6b2dKMEZ6Y0dGeWRHbGpJR0ZqYVdRbkxGeHVJQ0FnSUNkT0p6b2dKMEZ6Y0dGeVlXZHBibVVuTEZ4dUlDQWdJQ2RHSnpvZ0oxQm9aVzU1YkdGc1lXNXBibVVuTEZ4dUlDQWdJQ2RCSnpvZ0owRnNZVzVwYm1VbkxGeHVJQ0FnSUNkTEp6b2dKMHg1YzJsdVpTY3NYRzRnSUNBZ0oxSW5PaUFuUVhKbmFXNXBibVVuTEZ4dUlDQWdJQ2RJSnpvZ0owaHBjM1JwWkdsdVpTY3NYRzRnSUNBZ0owTW5PaUFuUTNsemRHVnBibVVuTEZ4dUlDQWdJQ2RXSnpvZ0oxWmhiR2x1WlNjc1hHNGdJQ0FnSjFBbk9pQW5VSEp2YkdsdVpTY3NYRzRnSUNBZ0oxY25PaUFuVkhKNWNIUnZjR2hoYmljc1hHNGdJQ0FnSjBrbk9pQW5TWE52YkdWMVkybHVaU2NzWEc0Z0lDQWdKMDBuT2lBblRXVjBhR2x2Ym1sdVpTY3NYRzRnSUNBZ0oxUW5PaUFuVkdoeVpXOXVhVzVsSnl4Y2JpQWdmVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUVGQlUyMXBiR1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkSEp6b2dKMDVEUXlnOVR5bFBKeXhjYmlBZ0lDQW5UQ2M2SUNkT1cwTkFTRjBvUTBNb1F5bERLVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxa25PaUFuVGtNb1EwTXhQVU5EUFVNb1R5bERQVU14S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMU1uT2lBblRrTW9RMDhwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SU2M2SUNkT1cwTkFRRWhkS0VORFF5aFBLVDFQS1VNb1BVOHBUeWNzWEc0Z0lDQWdKMUVuT2lBblRsdERRRUJJWFNoRFEwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RFSnpvZ0owNWJRMEJBU0Ywb1EwTW9UeWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RPSnpvZ0owNWJRMEJBU0Ywb1EwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RHSnpvZ0owNURLRU5ETVQxRFF6MURRejFETVNsREtEMVBLVThuTEZ4dUlDQWdJQ2RCSnpvZ0owNWJRMEJJWFNoREtVTW9QVThwVHljc1hHNGdJQ0FnSjBzbk9pQW5Ua01vUTBORFEwNHBReWc5VHlsUEp5eGNiaUFnSUNBblVpYzZJQ2RPVzBOQVNGMG9RME5EVGtNb1BVNHBReWxES0QxUEtVOG5MRnh1SUNBZ0lDZElKem9nSjA1REtFTkRNVDFEVGoxRFcwNWRNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZERKem9nSjA1YlEwQkFTRjBvUTFNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVmljNklDZE9ReWhES0VNcFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkUUp6b2dKMDRvUTBORE1TbERNVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxY25PaUFuVGx0RFFFQklYU2hEWXpGak1tTmpZMk5qTW00b1cwaGRLV014S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMGtuT2lBblRsdERRRWhkS0Z0RFFFaGRLRU1wUTBNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVFNjNklDZE9ReWhEUTFOREtVTW9QVThwVHljc1hHNGdJQ0FnSjFRbk9pQW5Ua01vUXloUEtVTXBReWc5VHlsUEp5eGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFRkJVMjFwYkdWelZISjFibU5oZEdWa09pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEhKem9nSnlwREtpY3NYRzRnSUNBZ0owd25PaUFuUTBNb1F5bERXME5BU0Ywb0tpa3FKeXhjYmlBZ0lDQW5XU2M2SUNkRE1UMURReWc5UTBNOVF6RkRReWdxS1NvcFR5Y3NYRzRnSUNBZ0oxTW5PaUFuVDBOREtDb3BReW9uTEZ4dUlDQWdJQ2RGSnpvZ0p5cGJRMEJBU0Ywb1EwTkRLRThwUFU4cEtpY3NYRzRnSUNBZ0oxRW5PaUFuS2s1YlEwQkFTRjBvUTBOREtFNHBQVThwS2ljc1hHNGdJQ0FnSjBRbk9pQW5LbHREUUVCSVhTaERReWhQS1QxUEtTb25MRnh1SUNBZ0lDZE9Kem9nSnlwYlEwQkFTRjBvUTBNb1RpazlUeWtxSnl4Y2JpQWdJQ0FuUmljNklDZERNVDFEUXoxREtFTTlRekVwUTBNb0tpa3FKeXhjYmlBZ0lDQW5RU2M2SUNkRFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblN5YzZJQ2RES0VORFRpbERReWdxS1NvbkxGeHVJQ0FnSUNkU0p6b2dKeXBiUTBCSVhTaERRME5PUXlnOVRpbERLU29uTEZ4dUlDQWdJQ2RJSnpvZ0owTXhQVU1vVGtNOVRqRXBRME1vS2lrcUp5eGNiaUFnSUNBblF5YzZJQ2RES0Z0RFFFQklYU2dxS1NvcFV5Y3NYRzRnSUNBZ0oxWW5PaUFuUTBNb1F5bERLQ29wS2ljc1hHNGdJQ0FnSjFBbk9pQW5RekZEUTA0b0tpbERNU29uTEZ4dUlDQWdJQ2RYSnpvZ0p5cGJRMEJBU0Ywb1EyTXhZekpqWTJOall6SnVLRnRJWFNsak1Ta3FKeXhjYmlBZ0lDQW5TU2M2SUNkRFExdERRRWhkS0VNcFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblRTYzZJQ2REVTBORFF5Z3FLU29uTEZ4dUlDQWdJQ2RVSnpvZ0owTkRLRThwUXlncUtTb25MRnh1SUNCOU8xeHVYRzRnSUM4cUtpQlVUMFJQT2lCR2RXeHNQMXh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkJRVVoxYkd4T1lXMWxjem9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUh0Y2JpQWdJQ0FuUVd4aEp6b2dKMEVuTEZ4dUlDQWdJQ2RCY21jbk9pQW5VaWNzWEc0Z0lDQWdKMEZ6YmljNklDZE9KeXhjYmlBZ0lDQW5RWE53SnpvZ0owUW5MRnh1SUNBZ0lDZERlWE1uT2lBblF5Y3NYRzRnSUNBZ0owZHNiaWM2SUNkUkp5eGNiaUFnSUNBblIyeDFKem9nSjBVbkxGeHVJQ0FnSUNkSGJIa25PaUFuUnljc1hHNGdJQ0FnSjBocGN5YzZJQ2RJSnl4Y2JpQWdJQ0FuU1d4bEp6b2dKMGtuTEZ4dUlDQWdJQ2RNWlhVbk9pQW5UQ2NzWEc0Z0lDQWdKMHg1Y3ljNklDZExKeXhjYmlBZ0lDQW5UV1YwSnpvZ0owMG5MRnh1SUNBZ0lDZFFhR1VuT2lBblJpY3NYRzRnSUNBZ0oxQnlieWM2SUNkUUp5eGNiaUFnSUNBblUyVnlKem9nSjFNbkxGeHVJQ0FnSUNkVWFISW5PaUFuVkNjc1hHNGdJQ0FnSjFSeWNDYzZJQ2RYSnl4Y2JpQWdJQ0FuVkhseUp6b2dKMWtuTEZ4dUlDQWdJQ2RXWVd3bk9pQW5WaWNzWEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhSUVlXeGxkSFJsS0hOamFHVnRaVG9nYzNSeWFXNW5JRDBnSjJkeWIyc25LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYzNkcGRHTm9JQ2h6WTJobGJXVXBJSHRjYmlBZ0lDQmpZWE5sSUNkbmNtOXJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjenRjYmlBZ0lDQmpZWE5sSUNkc1pYTnJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVUR1Z6YXp0Y2JpQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkRhR1Z0VUdGc1pYUjBaVG9nYzJOb1pXMWxJRnhjWUNSN2MyTm9aVzFsZlZ4Y1lDQmtiMlZ6SUc1dmRDQmxlR2x6ZEdBcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHUnBkbWxrWldRZ1lXMXBibThnWVdOcFpDQjNhWFJvSUdsMGN5QmpiMjUwWlc1MElHbHVJSFJvWlNCaWNtRmphMlYwTENCcFppQjBhR1VnWTI5dWRHVnVkQ0JwY3lCdWRXMWlaWElzSUhSb1pXNGdhWFJ6SUc5dGFYUjBaV1JjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdNZ2NtRjNJR0Z0YVc1dlhHNGdJQ0FxSUVCeVpYUjFjbTRnZTF0emRISnBibWNzSUhOMGNtbHVaMTE5SUc5MWRHVnlJR0Z1WkNCcGJtNWxjaUJqYjI1MFpXNTBYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkRWx1Ym1WeVQzVjBaWElvWXpvZ2MzUnlhVzVuS1RvZ1czTjBjbWx1Wnl3Z2MzUnlhVzVuWFNCN1hHNGdJQ0FnYkdWMElHbHpTVzV1WlhJZ1BTQXdPMXh1SUNBZ0lHeGxkQ0JwYm01bGNpQTlJQ2NuTzF4dUlDQWdJR3hsZENCdmRYUmxjaUE5SUNjbk8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmphR0Z5SUc5bUlHTXBJSHRjYmlBZ0lDQWdJR2xtSUNoamFHRnlJRDA5SUNjb0p5bGNiaUFnSUNBZ0lDQWdhWE5KYm01bGNpc3JPMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9ZMmhoY2lBOVBTQW5LU2NwWEc0Z0lDQWdJQ0FnSUdselNXNXVaWEl0TFR0Y2JpQWdJQ0FnSUdWc2MyVWdhV1lnS0dselNXNXVaWElwWEc0Z0lDQWdJQ0FnSUdsdWJtVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUc5MWRHVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUNGcGMwNWhUaWh3WVhKelpVbHVkQ2hwYm01bGNpa3BJRDhnVzI5MWRHVnlMQ0FuSjEwZ09pQmJiM1YwWlhJc0lHbHVibVZ5WFR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFEyOXNiM0pCUVZCcGRtOTBLRzF2Ym05dFpYSTZJSE4wY21sdVp5QTlJQ2NuTENCelkyaGxiV1U2SUNkbmNtOXJKeUE5SUNkbmNtOXJKeWs2SUZ0emRISnBibWNzSUhOMGNtbHVaeXdnYzNSeWFXNW5MQ0J1ZFcxaVpYSmRJSHRjYmlBZ0lDQXZMMk52Ym5OMElHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQU0JCUVZCaGJHVjBkR1Z6TGtkeWIydEhjbTkxY0hNb0tUdGNiaUFnSUNCamIyNXpkQ0JqYUdWdFVHRnNaWFIwWlVsdWMzUmhibU5sSUQwZ2RHaHBjeTVuWlhSUVlXeGxkSFJsS0hOamFHVnRaU2s3WEc0Z0lDQWdiR1YwSUZ0dmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2wwZ1BTQjBhR2x6TG1kbGRFbHVibVZ5VDNWMFpYSW9iVzl1YjIxbGNpazdYRzRnSUNBZ2IzVjBaWEpOYjI1dmJXVnlJRDBnS0c5MWRHVnlUVzl1YjIxbGNpNXNaVzVuZEdnZ1BpQTJJRDhnWUNSN2IzVjBaWEpOYjI1dmJXVnlMbk5zYVdObEtEQXNJRE1wZlM0dUxtQWdPaUJ2ZFhSbGNrMXZibTl0WlhJcE8xeHVJQ0FnSUdsdWJtVnlUVzl1YjIxbGNpQTlJQ2hwYm01bGNrMXZibTl0WlhJdWJHVnVaM1JvSUQ0Z05pQS9JR0FrZTJsdWJtVnlUVzl1YjIxbGNpNXpiR2xqWlNnd0xDQXpLWDB1TGk1Z0lEb2dhVzV1WlhKTmIyNXZiV1Z5S1R0Y2JseHVJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQXhJSHg4SUcxdmJtOXRaWEpiTVYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JoYldsdWJ5QTlJRzF2Ym05dFpYSmJNRjAvTG5SdlZYQndaWEpEWVhObEtDa2hPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F4WFNBNlhHNGdJQ0FnSUNBZ0lGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTVYwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHMXZibTl0WlhKYk1GMGdQVDBnSjJRbklDWW1JRzF2Ym05dFpYSmJNVjBoSUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBeUlIeDhJRzF2Ym05dFpYSmJNbDBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0Z0YVc1dklEMGdiVzl1YjIxbGNsc3hYVDh1ZEc5VmNIQmxja05oYzJVb0tTRTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhiV2x1YnlCcGJpQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxJRDljYmlBZ0lDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBeVhTQTZYRzRnSUNBZ0lDQWdJQ0FnVzNSb2FYTXVkVzVrWldacGJtVmtRMjlzYjNJc0lHOTFkR1Z5VFc5dWIyMWxjaXdnYVc1dVpYSk5iMjV2YldWeUxDQXlYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYlc5dWIyMWxjaTV6ZFdKemRISnBibWNvTUN3Z015a2dhVzRnZEdocGN5NUJRVVoxYkd4T1lXMWxjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHMXZibTl0WlhJdWJHVnVaM1JvSUQwOUlETWdmSHdnYlc5dWIyMWxjbHN6WFNBOVBTQW5LQ2NwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWVcxcGJtOGdQU0IwYUdsekxrRkJSblZzYkU1aGJXVnpXMjF2Ym05dFpYSXVjM1ZpYzNSeWFXNW5LREFzSURNcFhUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0FnSUZ0amFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObExtZGxkQ2hoYldsdWJ5a3NJR0Z0YVc1dkxDQnBibTVsY2sxdmJtOXRaWElzSUROZElEcGNiaUFnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lETmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h0YjI1dmJXVnlXekJkUHk1MGIweHZkMlZ5UTJGelpTZ3BJRDA5SUcxdmJtOXRaWEpiTUYwcElIdGNiaUFnSUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbk4xWW5OMGNtbHVaeWd4TENBektTQnBiaUIwYUdsekxrRkJSblZzYkU1aGJXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQTBJSHg4SUcxdmJtOXRaWEpiTkYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1lXMXBibThnUFNCMGFHbHpMa0ZCUm5Wc2JFNWhiV1Z6VzIxdmJtOXRaWEl1YzNWaWMzUnlhVzVuS0RFc0lETXBYVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVcxcGJtOGdhVzRnWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlNBL1hHNGdJQ0FnSUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0EwWFNBNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lEUmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTUYwN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IENocm9tYXRvZ3JhbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hyb21hdG9ncmFtID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMuY2hyb21hdG9ncmFtID0gbmV3IE51Y2xlb3RpZGVzUGFsZXR0ZXMoe1xuICAgICAgICAgICAgICAgICdBJzogJ2dyZWVuJyxcbiAgICAgICAgICAgICAgICAnQyc6ICdibHVlJyxcbiAgICAgICAgICAgICAgICAnRyc6ICdibGFjaycsXG4gICAgICAgICAgICAgICAgJ1QnOiAncmVkJywgJ1UnOiAncmVkJyxcbiAgICAgICAgICAgICAgICAnb3RoZXJzJzogJ2dyYXknLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2hyb21hdG9ncmFtO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlcyB7XG59XG5OdWNsZW90aWRlcy5TZW1UeXBlID0gJ051Y2xlb3RpZGVzJztcbk51Y2xlb3RpZGVzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudCA9ICdOdWNsZW90aWRlc011bHRpcGxlQWxpZ25tZW50Jztcbk51Y2xlb3RpZGVzLk5hbWVzID0ge1xuICAgICdBJzogJ0FkZW5pbmUnLFxuICAgICdDJzogJ0N5dG9zaW5lJyxcbiAgICAnRyc6ICdHdWFuaW5lJyxcbiAgICAnVCc6ICdUaHltaW5lJyxcbiAgICAnVSc6ICdVcmFjaWwnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJuVmpiR1Z2ZEdsa1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKdWRXTnNaVzkwYVdSbGN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZMUVN4UFFVRlBMRVZCUVdFc1kwRkJZeXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkZNVVFzVFVGQlRTeFBRVUZQTEcxQ1FVRnZRaXhUUVVGUkxHTkJRV003U1VGSE9VTXNUVUZCVFN4TFFVRkxMRmxCUVZrN1VVRkROVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMmhETEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXp0blFrRkRNVU1zUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFMUJRVTA3WjBKQlExZ3NSMEZCUnl4RlFVRkZMRTlCUVU4N1owSkJRMW9zUjBGQlJ5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZCUVVVc1MwRkJTenRuUWtGRGRFSXNVVUZCVVN4RlFVRkZMRTFCUVUwN1lVRkRha0lzUTBGQlF5eERRVUZETzFOQlEwbzdVVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03U1VGRE0wSXNRMEZCUXp0RFFVTkdPMEZCUlVRc1RVRkJUU3hQUVVGUExGZEJRVmM3TzBGQlEwNHNiVUpCUVU4c1IwRkJWeXhoUVVGaExFTkJRVU03UVVGRmFFTXNiME5CUVhkQ0xFZEJRVmNzT0VKQlFUaENMRU5CUVVNN1FVRkZjRVVzYVVKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeFRRVUZUTzBsQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1NVRkRaQ3hIUVVGSExFVkJRVVVzVVVGQlVUdERRVU5rTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdlMU4wY21sdVowUnBZM1JwYjI1aGNubDlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3VTJWeFVHRnNaWFIwWlN3Z1UyVnhVR0ZzWlhSMFpVSmhjMlY5SUdaeWIyMGdKeTR2YzJWeExYQmhiR1YwZEdWekp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHTm9jbTl0WVhSdlozSmhiVG9nVTJWeFVHRnNaWFIwWlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkQ0JEYUhKdmJXRjBiMmR5WVcwb0tUb2dVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVZMmh5YjIxaGRHOW5jbUZ0SUQwOVBTQjJiMmxrSURBcElIdGNiaUFnSUNBZ0lIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMGdibVYzSUU1MVkyeGxiM1JwWkdWelVHRnNaWFIwWlhNb2UxeHVJQ0FnSUNBZ0lDQW5RU2M2SUNkbmNtVmxiaWNzWEc0Z0lDQWdJQ0FnSUNkREp6b2dKMkpzZFdVbkxGeHVJQ0FnSUNBZ0lDQW5SeWM2SUNkaWJHRmpheWNzSUM4dklHOXlZVzVuWlNBL1hHNGdJQ0FnSUNBZ0lDZFVKem9nSjNKbFpDY3NJQ2RWSnpvZ0ozSmxaQ2NzWEc0Z0lDQWdJQ0FnSUNkdmRHaGxjbk1uT2lBblozSmhlU2NzWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WTJoeWIyMWhkRzluY21GdE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCT2RXTnNaVzkwYVdSbGN5QjdYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxPaUJ6ZEhKcGJtY2dQU0FuVG5WamJHVnZkR2xrWlhNbk8xeHVYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxUWFZzZEdsd2JHVkJiR2xuYm0xbGJuUTZJSE4wY21sdVp5QTlJQ2RPZFdOc1pXOTBhV1JsYzAxMWJIUnBjR3hsUVd4cFoyNXRaVzUwSnp0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFNWhiV1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkQkp6b2dKMEZrWlc1cGJtVW5MRnh1SUNBZ0lDZERKem9nSjBONWRHOXphVzVsSnl4Y2JpQWdJQ0FuUnljNklDZEhkV0Z1YVc1bEp5eGNiaUFnSUNBblZDYzZJQ2RVYUhsdGFXNWxKeXhjYmlBZ0lDQW5WU2M2SUNkVmNtRmphV3duTEZ4dUlDQjlPMXh1ZlZ4dUlsMTkiLCJleHBvcnQgY2xhc3MgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhbGV0dGUpIHtcbiAgICAgICAgdGhpcy5fcGFsZXR0ZSA9IHBhbGV0dGU7XG4gICAgfVxuICAgIHN0YXRpYyBtYWtlUGFsZXR0ZShkdCwgc2ltcGxpZmllZCA9IGZhbHNlLCBQYWxldHRlVHlwZSA9IFNlcVBhbGV0dGVCYXNlKSB7XG4gICAgICAgIGNvbnN0IHBhbGV0dGUgPSB7fTtcbiAgICAgICAgZHQuZm9yRWFjaCgoY3ApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9iakxpc3QgPSBjcFswXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbG91ciA9IGNwWzFdO1xuICAgICAgICAgICAgb2JqTGlzdC5mb3JFYWNoKChvYmosIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIHBhbGV0dGVbb2JqXSA9IHRoaXMuY29sb3VyUGFsZXR0ZVtjb2xvdXJdW3NpbXBsaWZpZWQgPyAwIDogaW5kXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBQYWxldHRlVHlwZShwYWxldHRlKTtcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhbGV0dGVbbV07XG4gICAgfVxufVxuU2VxUGFsZXR0ZUJhc2UudW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG4vKiogUGFsZXR0ZSB3aXRoIHNoYWRlcyBvZiBwcmltYXJ5IGNvbG9ycyAqL1xuU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSA9IHtcbiAgICAnb3JhbmdlJzogWydyZ2IoMjU1LDE4NywxMjApJywgJ3JnYigyNDUsMTY3LDEwMCknLCAncmdiKDIzNSwxMzcsNzApJywgJ3JnYigyMDUsIDExMSwgNzEpJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknLCAncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLFxuICAgICAgICAncmdiKDI0LDExMCw3OSknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ2FsbF9ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxMjIsIDEwMiwgMTg5KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxNDEsIDEyNCwgMjE3KScsXG4gICAgICAgICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdtYWdlbnRhJzogWydyZ2IoMTYyLDEwNiwxOTIpJywgJ3JnYigxOTcsMTY1LDIyNCknLCAncmdiKDIwOCwxMTMsMjE4KSddLFxuICAgICdyZWQnOiBbJ3JnYigyMTQsMzksNDApJywgJ3JnYigyNTUsMTUyLDE1MCknXSxcbiAgICAnc3RfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDMxLDExOSwxODApJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxMDgsIDIxOCwgMjI5KScsICdyZ2IoMjMsMTkwLDIyNyknXSxcbiAgICAnbGlsYWNfYmx1ZSc6IFsncmdiKDEyNCwxMDIsMjExKScsICdyZ2IoMTQ5LDEzNCwyMTcpJywgJ3JnYig5NywgODEsIDE1MCknXSxcbiAgICAnZGFya19ncmVlbic6IFsncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLCAncmdiKDI0LDExMCw3OSknXSxcbiAgICAnZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ2xpZ2h0X2dyZWVuJzogWydyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnc3RfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDM5LCAxNzQsIDk2KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdwaW5rJzogWydyZ2IoMjQ3LDE4MiwyMTApJ10sXG4gICAgJ2Jyb3duJzogWydyZ2IoMTQwLDg2LDc1KScsICdyZ2IoMTAyLCA2MiwgNTQpJ10sXG4gICAgJ2dyYXknOiBbJ3JnYigxMjcsMTI3LDEyNyknLCAncmdiKDE5OSwxOTksMTk5KScsICdyZ2IoMTk2LDE1NiwxNDgpJywgJ3JnYigyMjIsIDIyMiwgMTgwKSddLFxuICAgICd5ZWxsb3cnOiBbJ3JnYigxODgsMTg5LDM0KSddLFxuICAgICd3aGl0ZSc6IFsncmdiKDIzMCwyMzAsMjMwKSddLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhMWEJoYkdWMGRHVnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMyVnhMWEJoYkdWMGRHVnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVdsQ1FTeE5RVUZOTEU5QlFVOHNZMEZCWXp0SlFUSkRla0lzV1VGQldTeFBRVUZuUXp0UlFVTXhReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJiRUpUTEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJkMElzUlVGRGJrUXNWVUZCVlN4SFFVRkhMRXRCUVVzc1JVRkJSU3hqUVVGeFF5eGpRVUZqTzFGQlJYWkZMRTFCUVUwc1QwRkJUeXhIUVVFNFFpeEZRVUZGTEVOQlFVTTdVVUZET1VNc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZPMWxCUTJoQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOMFFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0blFrRkRNMElzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFbEJRVWtzVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGUlRTeEhRVUZITEVOQlFVTXNRMEZCVXp0UlFVTnNRaXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVUlzUTBGQlF6czdRVUZvUkdFc05rSkJRV01zUjBGQlJ5eHJRa0ZCYTBJc1EwRkJRenRCUVVWc1JDdzBRMEZCTkVNN1FVRkRPVUlzTkVKQlFXRXNSMEZCWjBNN1NVRkRla1FzVVVGQlVTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNiVUpCUVcxQ0xFTkJRVU03U1VGRE1VWXNWMEZCVnl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ08xRkJRM0JITEdkQ1FVRm5RaXhGUVVGRkxHdENRVUZyUWl4RlFVRkZMRzlDUVVGdlFpeEZRVUZGTEc5Q1FVRnZRaXhEUVVGRE8wbEJRMjVHTEZWQlFWVXNSVUZCUlN4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxHOUNRVUZ2UWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEc5Q1FVRnZRanRSUVVNdlJ5eHRRa0ZCYlVJc1EwRkJRenRKUVVOMFFpeFRRVUZUTEVWQlFVVXNRMEZCUXl4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0SlFVTjJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0SlFVTTNReXhUUVVGVExFVkJRVVVzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4cFFrRkJhVUlzUTBGQlF6dEpRVU55UlN4WFFVRlhMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF6dEpRVU55UkN4WlFVRlpMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3hwUWtGQmFVSXNRMEZCUXp0SlFVTTVSaXhaUVVGWkxFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4clFrRkJhMElzUTBGQlF6dEpRVU14UlN4WlFVRlpMRVZCUVVVc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4blFrRkJaMElzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTjBSaXhQUVVGUExFVkJRVVVzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTTNReXhoUVVGaExFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU12UlN4VlFVRlZMRVZCUVVVc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTjRSaXhOUVVGTkxFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenRKUVVNMVFpeFBRVUZQTEVWQlFVVXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeHJRa0ZCYTBJc1EwRkJRenRKUVVNdlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU14Uml4UlFVRlJMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0SlFVTTNRaXhQUVVGUExFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenREUVVNNVFpeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUNvZ1lYTWdaM0p2YXlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlozSnZheWM3WEc1cGJYQnZjblFnS2lCaGN5QjFhU0JtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2ZFdrbk8xeHVhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCVFpYRlFZV3hsZEhSbElIdGNiaUFnTHk4Z1ZHaGxjbVVnWVhKbElIUnZieUJ0ZFdOb0lIQnliMkpzWlcwZ2QybDBhQ0JwYm1SbGVHVnlJSEJ5YjNCbGNuUjVJR2x1SUhSNWNHVnpZM0pwY0hRdVhHNGdJQzh2SUM4cUtseHVJQ0F2THlBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JTQk5iMjV2YldWeUlHTm9ZWEpoWTNSbGNseHVJQ0F2THlBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFTnZiRzl5WEc0Z0lDOHZJQ0FxTDF4dUlDQXZMeUJiYlRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuTzF4dUlDQXZLaW9nVFc5dWIyMWxjaUJqYjJ4dmNseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYlNCTmIyNXZiV1Z5WEc0Z0lDQXFMMXh1SUNCblpYUW9iVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVTJWeFVHRnNaWFIwWlVKaGMyVWdhVzF3YkdWdFpXNTBjeUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCMWJtUmxabWx1WldSRGIyeHZjaUE5SUNkeVoySW9NVEF3TERFd01Dd3hNREFwSnp0Y2JseHVJQ0F2S2lvZ1VHRnNaWFIwWlNCM2FYUm9JSE5vWVdSbGN5QnZaaUJ3Y21sdFlYSjVJR052Ykc5eWN5QXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR052Ykc5MWNsQmhiR1YwZEdVNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuVzEwZ2ZTQTlJSHRjYmlBZ0lDQW5iM0poYm1kbEp6b2dXeWR5WjJJb01qVTFMREU0Tnl3eE1qQXBKeXdnSjNKbllpZ3lORFVzTVRZM0xERXdNQ2tuTENBbmNtZGlLREl6TlN3eE16Y3NOekFwSnl3Z0ozSm5ZaWd5TURVc0lERXhNU3dnTnpFcEoxMHNYRzRnSUNBZ0oyRnNiRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtEYzBMREUyTUN3M05Da25MQ0FuY21kaUtESXpMREV3TXl3MU55a25MQ0FuY21kaUtETXdMREV4TUN3NU5pa25MQ0FuY21kaUtEWXdMREV6TVN3NU5Ta25MRnh1SUNBZ0lDQWdKM0puWWlneU5Dd3hNVEFzTnprcEp5d2dKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZGhiR3hmWW14MVpTYzZJRnNuY21kaUtETXhMREV4T1N3eE9EQXBKeXdnSjNKbllpZ3lNeXd4T1RBc01qQTNLU2NzSUNkeVoySW9NVEl5TENBeE1ESXNJREU0T1NrbkxDQW5jbWRpS0RFMU9Dd3lNVGdzTWpJNUtTY3NJQ2R5WjJJb01UUXhMQ0F4TWpRc0lESXhOeWtuTEZ4dUlDQWdJQ0FnSjNKbllpZ3pNU3dnTVRJd0xDQXhOVEFwSjEwc1hHNGdJQ0FnSjIxaFoyVnVkR0VuT2lCYkozSm5ZaWd4TmpJc01UQTJMREU1TWlrbkxDQW5jbWRpS0RFNU55d3hOalVzTWpJMEtTY3NJQ2R5WjJJb01qQTRMREV4TXl3eU1UZ3BKMTBzWEc0Z0lDQWdKM0psWkNjNklGc25jbWRpS0RJeE5Dd3pPU3cwTUNrbkxDQW5jbWRpS0RJMU5Td3hOVElzTVRVd0tTZGRMRnh1SUNBZ0lDZHpkRjlpYkhWbEp6b2dXeWR5WjJJb01qTXNNVGt3TERJd055a25MQ0FuY21kaUtERTFPQ3d5TVRnc01qSTVLU2NzSUNkeVoySW9NekVzTVRFNUxERTRNQ2tuWFN4Y2JpQWdJQ0FuWkdGeWExOWliSFZsSnpvZ1d5ZHlaMklvTXpFc01URTVMREU0TUNrbkxDQW5jbWRpS0RNeExDQXhNakFzSURFMU1Da25YU3hjYmlBZ0lDQW5iR2xuYUhSZllteDFaU2M2SUZzbmNtZGlLREl6TERFNU1Dd3lNRGNwSnl3Z0ozSm5ZaWd4TlRnc01qRTRMREl5T1NrbkxDQW5jbWRpS0RFd09Dd2dNakU0TENBeU1qa3BKeXdnSjNKbllpZ3lNeXd4T1RBc01qSTNLU2RkTEZ4dUlDQWdJQ2RzYVd4aFkxOWliSFZsSnpvZ1d5ZHlaMklvTVRJMExERXdNaXd5TVRFcEp5d2dKM0puWWlneE5Ea3NNVE0wTERJeE55a25MQ0FuY21kaUtEazNMQ0E0TVN3Z01UVXdLU2RkTEZ4dUlDQWdJQ2RrWVhKclgyZHlaV1Z1SnpvZ1d5ZHlaMklvTWpNc01UQXpMRFUzS1Njc0lDZHlaMklvTXpBc01URXdMRGsyS1Njc0lDZHlaMklvTmpBc01UTXhMRGsxS1Njc0lDZHlaMklvTWpRc01URXdMRGM1S1NkZExGeHVJQ0FnSUNkbmNtVmxiaWM2SUZzbmNtZGlLRFEwTERFMk1DdzBOQ2tuTENBbmNtZGlLRGMwTERFMk1DdzNOQ2tuWFN4Y2JpQWdJQ0FuYkdsbmFIUmZaM0psWlc0bk9pQmJKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZHpkRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtERTFNaXd5TWpNc01UTTRLU2NzSUNkeVoySW9NemtzSURFM05Dd2dPVFlwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSjEwc1hHNGdJQ0FnSjNCcGJtc25PaUJiSjNKbllpZ3lORGNzTVRneUxESXhNQ2tuWFN4Y2JpQWdJQ0FuWW5KdmQyNG5PaUJiSjNKbllpZ3hOREFzT0RZc056VXBKeXdnSjNKbllpZ3hNRElzSURZeUxDQTFOQ2tuWFN4Y2JpQWdJQ0FuWjNKaGVTYzZJRnNuY21kaUtERXlOeXd4TWpjc01USTNLU2NzSUNkeVoySW9NVGs1TERFNU9Td3hPVGtwSnl3Z0ozSm5ZaWd4T1RZc01UVTJMREUwT0NrbkxDQW5jbWRpS0RJeU1pd2dNakl5TENBeE9EQXBKMTBzWEc0Z0lDQWdKM2xsYkd4dmR5YzZJRnNuY21kaUtERTRPQ3d4T0Rrc016UXBKMTBzWEc0Z0lDQWdKM2RvYVhSbEp6b2dXeWR5WjJJb01qTXdMREl6TUN3eU16QXBKMTBzWEc0Z0lIMDdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lITjBZWFJwWXlCdFlXdGxVR0ZzWlhSMFpTaGtkRG9nVzNOMGNtbHVaMXRkTENCemRISnBibWRkVzEwc1hHNGdJQ0FnYzJsdGNHeHBabWxsWkNBOUlHWmhiSE5sTENCUVlXeGxkSFJsVkhsd1pUb2dkSGx3Wlc5bUlGTmxjVkJoYkdWMGRHVkNZWE5sSUQwZ1UyVnhVR0ZzWlhSMFpVSmhjMlZjYmlBZ0tTQjdYRzRnSUNBZ1kyOXVjM1FnY0dGc1pYUjBaVG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmU0E5SUh0OU8xeHVJQ0FnSUdSMExtWnZja1ZoWTJnb0tHTndLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J2WW1wTWFYTjBJRDBnWTNCYk1GMDdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyeHZkWElnUFNCamNGc3hYVHRjYmlBZ0lDQWdJRzlpYWt4cGMzUXVabTl5UldGamFDZ29iMkpxTENCcGJtUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2NHRnNaWFIwWlZ0dlltcGRJRDBnZEdocGN5NWpiMnh2ZFhKUVlXeGxkSFJsVzJOdmJHOTFjbDFiYzJsdGNHeHBabWxsWkNBL0lEQWdPaUJwYm1SZE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFZV3hsZEhSbFZIbHdaU2h3WVd4bGRIUmxLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDNCaGJHVjBkR1U2SUhzZ1cyMDZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLSEJoYkdWMGRHVTZJSHNnVzIwNklITjBjbWx1WjEwNklITjBjbWx1WnlCOUtTQjdYRzRnSUNBZ2RHaHBjeTVmY0dGc1pYUjBaU0E5SUhCaGJHVjBkR1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0JoYkdWMGRHVmJiVjA3WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5jbGFzcyBTaWRlQ2hhaW5TY2FsZXMge1xuICAgIHN0YXRpYyBnZXRBdmFpbGFibGVTY2FsZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnNjYWxlcykubWFwKChbaywgX10pID0+IGspO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0U2NhbGUobmFtZSkge1xuICAgICAgICBhc3NlcnQoISh0aGlzLnNjYWxlc1tuYW1lXSA9PT0gdW5kZWZpbmVkKSwgYFNjYWxlICcke25hbWV9JyB3YXMgbm90IGZvdW5kLmApO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZXNbbmFtZV07XG4gICAgfVxufVxuU2lkZUNoYWluU2NhbGVzLnNjYWxlcyA9IHtcbiAgICAvLyBXaW1sZXktV2hpdGUgaW50ZXJmYWNpYWwgaHlkcm9waG9iaWNpdHkgc2NhbGVcbiAgICAnV2ltbGV5V2hpdGUnOiB7XG4gICAgICAgICctJzogMCxcbiAgICAgICAgJ0EnOiAwLjE3LFxuICAgICAgICAnQyc6IC0wLjI0LFxuICAgICAgICAnRCc6IC0wLjA3LFxuICAgICAgICAnRSc6IC0wLjAxLFxuICAgICAgICAnRic6IC0xLjEzLFxuICAgICAgICAnRyc6IDAuMDEsXG4gICAgICAgICdIJzogMC4xNyxcbiAgICAgICAgJ0knOiAtMC4zMSxcbiAgICAgICAgJ0snOiAwLjk5LFxuICAgICAgICAnTCc6IC0wLjU2LFxuICAgICAgICAnTSc6IC0wLjIzLFxuICAgICAgICAnTic6IDAuNDIsXG4gICAgICAgICdQJzogMC40NSxcbiAgICAgICAgJ1EnOiAwLjU4LFxuICAgICAgICAnUic6IDAuODEsXG4gICAgICAgICdTJzogMC4xMyxcbiAgICAgICAgJ1QnOiAwLjE0LFxuICAgICAgICAnVic6IDAuMDcsXG4gICAgICAgICdXJzogLTEuODUsXG4gICAgICAgICdZJzogLTAuOTQsXG4gICAgfSxcbiAgICAnY2F0ZWdvcmlhbCc6IHtcbiAgICAgICAgJy0nOiAwLFxuICAgICAgICAnQSc6IDEsXG4gICAgICAgICdDJzogMixcbiAgICAgICAgJ0QnOiAzLFxuICAgICAgICAnRSc6IDQsXG4gICAgICAgICdGJzogNSxcbiAgICAgICAgJ0cnOiA2LFxuICAgICAgICAnSCc6IDcsXG4gICAgICAgICdJJzogOCxcbiAgICAgICAgJ0snOiA5LFxuICAgICAgICAnTCc6IDEwLFxuICAgICAgICAnTSc6IDExLFxuICAgICAgICAnTic6IDEyLFxuICAgICAgICAnUCc6IDEzLFxuICAgICAgICAnUSc6IDE0LFxuICAgICAgICAnUic6IDE1LFxuICAgICAgICAnUyc6IDE2LFxuICAgICAgICAnVCc6IDE3LFxuICAgICAgICAnVic6IDE4LFxuICAgICAgICAnVyc6IDE5LFxuICAgICAgICAnWSc6IDIwLFxuICAgIH0sXG59O1xuLyoqXG4gKiBDbGFzcyB0byBjYXRlZ29yaWFsIGVuY29kZS9kZWNvZGUgYWxpZ25lZCBhbWlubyBhY2lkIHJlc2lkdWVzIHNlcXVlbmNlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihzY2FsZSA9ICdjYXRlZ29yaWFsJykge1xuICAgICAgICB0aGlzLmFhMm51bSA9IFNpZGVDaGFpblNjYWxlcy5nZXRTY2FsZShzY2FsZSk7XG4gICAgICAgIHRoaXMubnVtMmFhID0ge307XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYWEybnVtKS5mb3JFYWNoKChbaywgdl0pID0+ICh0aGlzLm51bTJhYVt2XSA9IGspKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBUcnVuY2F0ZSBOSDIgYW5kIC1DT09IIHRlcm1pbmFscyBvZiB0aGUgZ2l2ZW4gc2VxdWVuY2UuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcSBUaGUgc2VxdWVuY2UgcHJvdmlkZWQuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRydW5jYXRlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX3RydW5jYXRlU2VxdWVuY2Uoc2VxKSB7XG4gICAgICAgIGxldCBzdGFydCA9IDA7XG4gICAgICAgIGxldCBlbmQgPSBzZXEubGVuZ3RoO1xuICAgICAgICBjb25zdCB0ZXJtaW5hID0gWydOSDInLCAnQ09PSCddO1xuICAgICAgICBpZiAoc2VxLnN0YXJ0c1dpdGgodGVybWluYVswXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzBdLmxlbmd0aDsgLy8gQ3V0IG9ubHkgJ05IMicgd2l0aG91dCBmb2xsb3dpbmcgJy0nLlxuICAgICAgICAgICAgYXNzZXJ0KHNlcVtsXSA9PSAnLScsIGBXcm9uZyBzZXF1ZW5jZSBmb3JtYXQ6ICR7dGVybWluYVswXX0gd2l0aG91dCBmb2xsb3dpbmcgJy0nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgc3RhcnQgPSBsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXEuZW5kc1dpdGgodGVybWluYVsxXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzFdLmxlbmd0aCArIDE7IC8vIEN1dCBib3RoICdDT09IJyBhbmQgcHJlY2VuZGluZyAnLScuXG4gICAgICAgICAgICBhc3NlcnQoc2VxW2VuZCAtIGxdID09ICctJywgYFdyb25nIHNlcXVlbmNlIGZvcm1hdDogJHt0ZXJtaW5hWzFdfSB3aXRob3V0ICctJyBwcmVjZW5kaW5nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgZW5kIC09IGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlcS5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogQ3V0cyBhdXhpbGlhcnkgZGVmaXNlcyBiZWZvcmUgYSByZXNpZHVlLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXEgVGhlIHNlcXVlbmNlIHRvIHByb2Nlc3MuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFByb2Nlc3NlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX2Ryb3BEZWZpc2VzKHNlcSkge1xuICAgICAgICByZXR1cm4gc2VxLnJlcGxhY2UoLygtKShbXi1dKykvZywgJyQyJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogUGVyZm9ybXMgdHJ1bmNhdGlvbiBhbmQgY3V0dGluZyBhdXhpbGlhcnkgZGVmaXNlcy5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlIHdvcmsgdW5kZXIgcHJvY2Vzcy5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gUmVzdWx0IG9mIGNsZWFuaW5nLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIHN0YXRpYyBjbGVhbihzZXF1ZW5jZSkge1xuICAgICAgICByZXR1cm4gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fZHJvcERlZmlzZXMoQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fdHJ1bmNhdGVTZXF1ZW5jZShzZXF1ZW5jZSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIENhdGVnb3JpYWwgZW5jb2RlIG9mIHRoZSBzZXF1ZW5jZSBwcm92aWRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlLlxuICAgICAgICogQHJldHVybiB7bnVtYmVyW119IEVuY29kZWQgdmVjdG9yLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIGVuY29kZShzZXF1ZW5jZSkge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSBzZXF1ZW5jZS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBBcnJheShuSXRlbXMpLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBzZXF1ZW5jZVtpXTtcbiAgICAgICAgICAgIGFzc2VydChjaGFyIGluIHRoaXMuYWEybnVtLCBgVW5rbm93biBjaGFyICcke2NoYXJ9JyBmb3VuZCBpbiBzZXF1ZW5jZSAnJHtzZXF1ZW5jZX0nYCk7XG4gICAgICAgICAgICB2YWx1ZXNbaV0gPSB0aGlzLmVuY29kZUxldHR0ZXIoY2hhcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgZW5jb2RlTGV0dHRlcihsZXR0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWEybnVtW2xldHRlcl07XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogRGVjb2RlIHRoZSBlbmNvZGVkIHZlY3RvciBpbnRvIHRoZSBzZXF1ZW5jZSBiYWNrLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyW119IHZhbHVlIFRoZSB2ZWN0b3IgZW5jb2RlZC5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gRGVjb2RlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBkZWNvZGUodmFsdWUpIHtcbiAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHZhbHVlW2ldO1xuICAgICAgICAgICAgYXNzZXJ0KGNvZGUgaW4gdGhpcy5udW0yYWEsIGBVbmtub3duIGNvZGUgJyR7Y29kZX0nIGZvdW5kIGluIHZlY3RvciAnJHt2YWx1ZX0nYCk7XG4gICAgICAgICAgICBzICs9IHRoaXMubnVtMmFhW2NvZGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhkV1Z1WTJVdFpXNWpiMlJsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbk5sY1hWbGJtTmxMV1Z1WTI5a1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRExFMUJRVTBzUlVGQlF5eE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJTM1pGTEUxQlFVMHNaVUZCWlR0SlFXMUVia0lzVFVGQlRTeERRVUZETEd0Q1FVRnJRanRSUVVOMlFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFJDeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGWk8xRkJRekZDTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4VFFVRlRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRSUVVNM1JTeFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wSXNRMEZCUXpzN1FVRjZSRTBzYzBKQlFVMHNSMEZCTmtJN1NVRkRlRU1zWjBSQlFXZEVPMGxCUTJoRUxHRkJRV0VzUlVGQlJUdFJRVU5pTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpPMUZCUTFZc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNUdFJRVU5XTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4SlFVRkpPMUZCUTFRc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNTVUZCU1R0UlFVTlVMRWRCUVVjc1JVRkJSU3hKUVVGSk8xRkJRMVFzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1R0TFFVTllPMGxCUTBRc1dVRkJXU3hGUVVGRk8xRkJRMW9zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOT0xFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEwNHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRUaXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5PTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFRpeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTk9MRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMDRzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNSMEZCUnl4RlFVRkZMRVZCUVVVN1VVRkRVQ3hIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU5RTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1IwRkJSeXhGUVVGRkxFVkJRVVU3VVVGRFVDeEhRVUZITEVWQlFVVXNSVUZCUlR0UlFVTlFMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRMUFzUjBGQlJ5eEZRVUZGTEVWQlFVVTdVVUZEVUN4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzB0QlExSTdRMEZEUml4RFFVRkRPMEZCV1VvN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzYzBKQlFYTkNPMGxCU1dwRExGbEJRVmtzVVVGQlowSXNXVUZCV1R0UlFVTjBReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE9VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGFrSXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hGTEVOQlFVTTdTVUZGUkRzN096czdPenRUUVU5TE8wbEJRMHdzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFZEJRVmM3VVVGRGJFTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMlFzU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOeVFpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVZvUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1dVRkRPVUlzVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEhkRFFVRjNRenRaUVVOeVJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTd3dRa0ZCTUVJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5dzRRa0ZCT0VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU5xUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRMWc3VVVGRFJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZETlVJc1RVRkJUU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHpRMEZCYzBNN1dVRkRja1VzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTERCQ1FVRXdRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEN0Q1FVRXJRaXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRFZqdFJRVU5FTEU5QlFVOHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYmtNc1EwRkJRenRKUVVWRU96czdPenM3TzFOQlQwczdTVUZEVEN4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVmM3VVVGRE4wSXNUMEZCVHl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3pzN096czdVMEZQU3p0SlFVTk1MRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlowSTdVVUZETTBJc1QwRkJUeXh6UWtGQmMwSXNRMEZCUXl4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSeXhEUVVGRE8wbEJSVVE3T3pzN096dFRRVTFMTzBsQlEwVXNUVUZCVFN4RFFVRkRMRkZCUVdkQ08xRkJRelZDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGREwwSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWHBETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRMMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSWHBDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeHBRa0ZCYVVJc1NVRkJTU3gzUWtGQmQwSXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVWMFJpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTjBRenRSUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZUU3hoUVVGaExFTkJRVU1zVFVGQll6dFJRVU5xUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZETjBJc1EwRkJRenRKUVVWRU96czdPenM3VTBGTlN6dEpRVU5GTEUxQlFVMHNRMEZCUXl4TFFVRmxPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXp0UlFVVnVRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZkRUlzVFVGQlRTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxHbENRVUZwUWl4SlFVRkpMSE5DUVVGelFpeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUldwR0xFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRM2hDTzFGQlEwUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRXQ3hEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJGemMyVnlkSDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZG1WamRHOXlMVzl3WlhKaGRHbHZibk1uTzF4dVhHNTBlWEJsSUZOcFpHVkRhR0ZwYmxOallXeGxJRDBnZTF0dVlXMWxPaUJ6ZEhKcGJtZGRPaUJ1ZFcxaVpYSjlPMXh1ZEhsd1pTQlRhV1JsUTJoaGFXNVRZMkZzWlVOdmJHeGxZM1JwYjI0Z1BTQjdXMjVoYldVNklITjBjbWx1WjEwNklGTnBaR1ZEYUdGcGJsTmpZV3hsZlR0Y2JseHVZMnhoYzNNZ1UybGtaVU5vWVdsdVUyTmhiR1Z6SUh0Y2JpQWdjM1JoZEdsaklITmpZV3hsY3pvZ1UybGtaVU5vWVdsdVUyTmhiR1ZEYjJ4c1pXTjBhVzl1SUQwZ2UxeHVJQ0FnSUM4dklGZHBiV3hsZVMxWGFHbDBaU0JwYm5SbGNtWmhZMmxoYkNCb2VXUnliM0JvYjJKcFkybDBlU0J6WTJGc1pWeHVJQ0FnSUNkWGFXMXNaWGxYYUdsMFpTYzZJSHRjYmlBZ0lDQWdJQ2N0SnpvZ01DeGNiaUFnSUNBZ0lDZEJKem9nTUM0eE55eGNiaUFnSUNBZ0lDZERKem9nTFRBdU1qUXNYRzRnSUNBZ0lDQW5SQ2M2SUMwd0xqQTNMQ0F2THlCQmMzQXRPaUF4TGpJelhHNGdJQ0FnSUNBblJTYzZJQzB3TGpBeExDQXZMeUJIYkhVdE9pQXlMakF5WEc0Z0lDQWdJQ0FuUmljNklDMHhMakV6TENBdkwxeHVJQ0FnSUNBZ0owY25PaUF3TGpBeExGeHVJQ0FnSUNBZ0owZ25PaUF3TGpFM0xDQXZMeUJJYVhNck9pQXdMamsyWEc0Z0lDQWdJQ0FuU1NjNklDMHdMak14TEZ4dUlDQWdJQ0FnSjBzbk9pQXdMams1TENBdkx5Qk1lWE1yWEc0Z0lDQWdJQ0FuVENjNklDMHdMalUyTEZ4dUlDQWdJQ0FnSjAwbk9pQXRNQzR5TXl4Y2JpQWdJQ0FnSUNkT0p6b2dNQzQwTWl4Y2JpQWdJQ0FnSUNkUUp6b2dNQzQwTlN4Y2JpQWdJQ0FnSUNkUkp6b2dNQzQxT0N4Y2JpQWdJQ0FnSUNkU0p6b2dNQzQ0TVN3Z0x5OGdRWEpuSzF4dUlDQWdJQ0FnSjFNbk9pQXdMakV6TEZ4dUlDQWdJQ0FnSjFRbk9pQXdMakUwTEZ4dUlDQWdJQ0FnSjFZbk9pQXdMakEzTEZ4dUlDQWdJQ0FnSjFjbk9pQXRNUzQ0TlN4Y2JpQWdJQ0FnSUNkWkp6b2dMVEF1T1RRc1hHNGdJQ0FnZlN4Y2JpQWdJQ0FuWTJGMFpXZHZjbWxoYkNjNklIdGNiaUFnSUNBZ0lDY3RKem9nTUN4Y2JpQWdJQ0FnSUNkQkp6b2dNU3hjYmlBZ0lDQWdJQ2RESnpvZ01peGNiaUFnSUNBZ0lDZEVKem9nTXl4Y2JpQWdJQ0FnSUNkRkp6b2dOQ3hjYmlBZ0lDQWdJQ2RHSnpvZ05TeGNiaUFnSUNBZ0lDZEhKem9nTml4Y2JpQWdJQ0FnSUNkSUp6b2dOeXhjYmlBZ0lDQWdJQ2RKSnpvZ09DeGNiaUFnSUNBZ0lDZExKem9nT1N4Y2JpQWdJQ0FnSUNkTUp6b2dNVEFzWEc0Z0lDQWdJQ0FuVFNjNklERXhMRnh1SUNBZ0lDQWdKMDRuT2lBeE1peGNiaUFnSUNBZ0lDZFFKem9nTVRNc1hHNGdJQ0FnSUNBblVTYzZJREUwTEZ4dUlDQWdJQ0FnSjFJbk9pQXhOU3hjYmlBZ0lDQWdJQ2RUSnpvZ01UWXNYRzRnSUNBZ0lDQW5WQ2M2SURFM0xGeHVJQ0FnSUNBZ0oxWW5PaUF4T0N4Y2JpQWdJQ0FnSUNkWEp6b2dNVGtzWEc0Z0lDQWdJQ0FuV1NjNklESXdMRnh1SUNBZ0lIMHNYRzRnSUgwN1hHNWNiaUFnYzNSaGRHbGpJR2RsZEVGMllXbHNZV0pzWlZOallXeGxjeWdwT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11YzJOaGJHVnpLUzV0WVhBb0tGdHJMQ0JmWFNrZ1BUNGdheWs3WEc0Z0lIMWNibHh1SUNCemRHRjBhV01nWjJWMFUyTmhiR1VvYm1GdFpUb2djM1J5YVc1bktUb2dVMmxrWlVOb1lXbHVVMk5oYkdVZ2UxeHVJQ0FnSUdGemMyVnlkQ2doS0hSb2FYTXVjMk5oYkdWelcyNWhiV1ZkSUQwOVBTQjFibVJsWm1sdVpXUXBMQ0JnVTJOaGJHVWdKeVI3Ym1GdFpYMG5JSGRoY3lCdWIzUWdabTkxYm1RdVlDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMk5oYkdWelcyNWhiV1ZkTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyeGhjM01nZEc4Z1kyRjBaV2R2Y21saGJDQmxibU52WkdVdlpHVmpiMlJsSUdGc2FXZHVaV1FnWVcxcGJtOGdZV05wWkNCeVpYTnBaSFZsY3lCelpYRjFaVzVqWlM1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFZMnhoYzNNZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCaFlUSnVkVzA2SUZOcFpHVkRhR0ZwYmxOallXeGxPMXh1SUNCd2NtOTBaV04wWldRZ2JuVnRNbUZoT2lCN1cyTnZaR1U2SUc1MWJXSmxjbDA2SUhOMGNtbHVaMzA3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYzJOaGJHVTZJSE4wY21sdVp5QTlJQ2RqWVhSbFoyOXlhV0ZzSnlrZ2UxeHVJQ0FnSUhSb2FYTXVZV0V5Ym5WdElEMGdVMmxrWlVOb1lXbHVVMk5oYkdWekxtZGxkRk5qWVd4bEtITmpZV3hsS1R0Y2JpQWdJQ0IwYUdsekxtNTFiVEpoWVNBOUlIdDlPMXh1SUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0hSb2FYTXVZV0V5Ym5WdEtTNW1iM0pGWVdOb0tDaGJheXdnZGwwcElEMCtJQ2gwYUdsekxtNTFiVEpoWVZ0MlhTQTlJR3NwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0lDQXFJRlJ5ZFc1allYUmxJRTVJTWlCaGJtUWdMVU5QVDBnZ2RHVnliV2x1WVd4eklHOW1JSFJvWlNCbmFYWmxiaUJ6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ6ZEdGMGFXTmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyVnhJRlJvWlNCelpYRjFaVzVqWlNCd2NtOTJhV1JsWkM1Y2JpQWdJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUZSeWRXNWpZWFJsWkNCelpYRjFaVzVqWlM1Y2JpQWdJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNBZ0lDQXFMMXh1SUNCemRHRjBhV01nWDNSeWRXNWpZWFJsVTJWeGRXVnVZMlVvYzJWeE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUd4bGRDQnpkR0Z5ZENBOUlEQTdYRzRnSUNBZ2JHVjBJR1Z1WkNBOUlITmxjUzVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnZEdWeWJXbHVZU0E5SUZzblRrZ3lKeXdnSjBOUFQwZ25YVHRjYmx4dUlDQWdJR2xtSUNoelpYRXVjM1JoY25SelYybDBhQ2gwWlhKdGFXNWhXekJkS1NrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYkNBOUlIUmxjbTFwYm1GYk1GMHViR1Z1WjNSb095QXZMeUJEZFhRZ2IyNXNlU0FuVGtneUp5QjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2N1WEc0Z0lDQWdJQ0JoYzNObGNuUW9jMlZ4VzJ4ZElEMDlJQ2N0Snl3Z1lGZHliMjVuSUhObGNYVmxibU5sSUdadmNtMWhkRG9nSkh0MFpYSnRhVzVoV3pCZGZTQjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2NnYVc0Z0p5UjdjMlZ4ZlNjdVlDazdYRzRnSUNBZ0lDQnpkR0Z5ZENBOUlHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHpaWEV1Wlc1a2MxZHBkR2dvZEdWeWJXbHVZVnN4WFNrcElIdGNiaUFnSUNBZ0lHTnZibk4wSUd3Z1BTQjBaWEp0YVc1aFd6RmRMbXhsYm1kMGFDc3hPeUF2THlCRGRYUWdZbTkwYUNBblEwOVBTQ2NnWVc1a0lIQnlaV05sYm1ScGJtY2dKeTBuTGx4dUlDQWdJQ0FnWVhOelpYSjBLSE5sY1Z0bGJtUXRiRjBnUFQwZ0p5MG5MQ0JnVjNKdmJtY2djMlZ4ZFdWdVkyVWdabTl5YldGME9pQWtlM1JsY20xcGJtRmJNVjE5SUhkcGRHaHZkWFFnSnkwbklIQnlaV05sYm1ScGJtY2dhVzRnSnlSN2MyVnhmU2N1WUNrN1hHNGdJQ0FnSUNCbGJtUWdMVDBnYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlITmxjUzV6ZFdKemRISnBibWNvYzNSaGNuUXNJR1Z1WkNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDQWdLaUJEZFhSeklHRjFlR2xzYVdGeWVTQmtaV1pwYzJWeklHSmxabTl5WlNCaElISmxjMmxrZFdVdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWMzUmhkR2xqWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY1NCVWFHVWdjMlZ4ZFdWdVkyVWdkRzhnY0hKdlkyVnpjeTVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRkJ5YjJObGMzTmxaQ0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBYldWdFltVnliMllnUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNseHVJQ0FnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdYMlJ5YjNCRVpXWnBjMlZ6S0hObGNUb2djM1J5YVc1bktUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnYzJWeExuSmxjR3hoWTJVb0x5Z3RLU2hiWGkxZEt5a3ZaeXdnSnlReUp5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ0FnS2lCUVpYSm1iM0p0Y3lCMGNuVnVZMkYwYVc5dUlHRnVaQ0JqZFhSMGFXNW5JR0YxZUdsc2FXRnllU0JrWldacGMyVnpMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSE4wWVhScFkxeHVJQ0FnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCelpYRjFaVzVqWlNCVWFHVWdjMlZ4ZFdWdVkyVWdkMjl5YXlCMWJtUmxjaUJ3Y205alpYTnpMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdVbVZ6ZFd4MElHOW1JR05zWldGdWFXNW5MbHh1SUNBZ0lDQXFJRUJ0WlcxaVpYSnZaaUJCYkdsbmJtVmtVMlZ4ZFdWdVkyVkZibU52WkdWeVhHNGdJQ0FnSUNvdlhHNGdJSE4wWVhScFl5QmpiR1ZoYmloelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZlpISnZjRVJsWm1selpYTW9RV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZmRISjFibU5oZEdWVFpYRjFaVzVqWlNoelpYRjFaVzVqWlNrcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQWdJQ29nUTJGMFpXZHZjbWxoYkNCbGJtTnZaR1VnYjJZZ2RHaGxJSE5sY1hWbGJtTmxJSEJ5YjNacFpHVmtMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlITmxjWFZsYm1ObElGUm9aU0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnUlc1amIyUmxaQ0IyWldOMGIzSXVYRzRnSUNBZ0lDb2dRRzFsYldKbGNtOW1JRUZzYVdkdVpXUlRaWEYxWlc1alpVVnVZMjlrWlhKY2JpQWdJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHVnVZMjlrWlNoelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0FnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSE5sY1hWbGJtTmxMbXhsYm1kMGFEdGNiaUFnSUNCamIyNXpkQ0IyWVd4MVpYTWdQU0J1WlhjZ1FYSnlZWGtvYmtsMFpXMXpLUzVtYVd4c0tEQXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTJoaGNpQTlJSE5sY1hWbGJtTmxXMmxkTzF4dVhHNGdJQ0FnSUNCaGMzTmxjblFvWTJoaGNpQnBiaUIwYUdsekxtRmhNbTUxYlN3Z1lGVnVhMjV2ZDI0Z1kyaGhjaUFuSkh0amFHRnlmU2NnWm05MWJtUWdhVzRnYzJWeGRXVnVZMlVnSnlSN2MyVnhkV1Z1WTJWOUoyQXBPMXh1WEc0Z0lDQWdJQ0IyWVd4MVpYTmJhVjBnUFNCMGFHbHpMbVZ1WTI5a1pVeGxkSFIwWlhJb1kyaGhjaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWlc1amIyUmxUR1YwZEhSbGNpaHNaWFIwWlhJNklITjBjbWx1WnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlXRXliblZ0VzJ4bGRIUmxjbDA3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNBZ0tpQkVaV052WkdVZ2RHaGxJR1Z1WTI5a1pXUWdkbVZqZEc5eUlHbHVkRzhnZEdobElITmxjWFZsYm1ObElHSmhZMnN1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNsdGRmU0IyWVd4MVpTQlVhR1VnZG1WamRHOXlJR1Z1WTI5a1pXUXVYRzRnSUNBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkVaV052WkdWa0lITmxjWFZsYm1ObExseHVJQ0FnSUNBcUlFQnRaVzFpWlhKdlppQkJiR2xuYm1Wa1UyVnhkV1Z1WTJWRmJtTnZaR1Z5WEc0Z0lDQWdJQ292WEc0Z0lIQjFZbXhwWXlCa1pXTnZaR1VvZG1Gc2RXVTZJRzUxYldKbGNsdGRLVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnNaWFFnY3pvZ2MzUnlhVzVuSUQwZ0p5YzdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFpoYkhWbExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMlJsSUQwZ2RtRnNkV1ZiYVYwN1hHNWNiaUFnSUNBZ0lHRnpjMlZ5ZENoamIyUmxJR2x1SUhSb2FYTXViblZ0TW1GaExDQmdWVzVyYm05M2JpQmpiMlJsSUNja2UyTnZaR1Y5SnlCbWIzVnVaQ0JwYmlCMlpXTjBiM0lnSnlSN2RtRnNkV1Y5SjJBcE8xeHVYRzRnSUNBZ0lDQnpJQ3M5SUhSb2FYTXViblZ0TW1GaFcyTnZaR1ZkTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2N6dGNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFN0cmluZ1V0aWxzIHtcbiAgICBzdGF0aWMgaGFzaENvZGUocykge1xuICAgICAgICBsZXQgaGFzaCA9IDA7XG4gICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBoYXNoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNociA9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIGNocjtcbiAgICAgICAgICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgfVxufVxuaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGUge1xufVxuZXhwb3J0IGNsYXNzIEdyYXlBbGxQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiAnIzY2NjY2Nic7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVua25vd25Db2xvclBhbGV0dGUgZXh0ZW5kcyBVbmtub3duU2VxUGFsZXR0ZSB7XG4gICAgc3RhdGljIGJ1aWxkUGFsZXR0ZSgpIHtcbiAgICAgICAgY29uc3QgcmVzID0gW10uY29uY2F0KC4uLk9iamVjdC52YWx1ZXMoU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSkpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBnZXQobSkge1xuICAgICAgICBjb25zdCBoYXNoID0gU3RyaW5nVXRpbHMuaGFzaENvZGUobSk7XG4gICAgICAgIGNvbnN0IHBJID0gaGFzaCAlIFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZS5sZW5ndGg7XG4gICAgICAgIHJldHVybiBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGVbcEldO1xuICAgIH1cbn1cblVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZSA9IFVua25vd25Db2xvclBhbGV0dGUuYnVpbGRQYWxldHRlKCk7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgR3JheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JheSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5ncmF5ID0gbmV3IEdyYXlBbGxQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgQ29sb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gbmV3IFVua25vd25Db2xvclBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1cmJtOTNiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhMjV2ZDI0dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTVUVzVFVGQlRTeFBRVUZQTEZkQlFWYzdTVUZEWml4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVk03VVVGRE9VSXNTVUZCU1N4SlFVRkpMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRE8xbEJRMmhDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMUZCUTJRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEZWtNc1RVRkJUU3hIUVVGSExFZEJRVmNzUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRiRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMREpDUVVFeVFqdFRRVU4yUXp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dERRVU5HTzBGQlJVUXNUMEZCVHl4RlFVRmhMR05CUVdNc1JVRkJReXhOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUlRGRUxFMUJRVTBzVDBGQlowSXNhVUpCUVdsQ08wTkJSWFJETzBGQlJVUXNUVUZCVFN4UFFVRlBMR05CUVdVc1UwRkJVU3hwUWtGQmFVSTdTVUZETlVNc1IwRkJSeXhEUVVGRExFTkJRVk03VVVGRGJFSXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dERRVU5HTzBGQlIwUXNUVUZCVFN4UFFVRlBMRzFDUVVGdlFpeFRRVUZSTEdsQ1FVRnBRanRKUVVkb1JDeE5RVUZOTEVOQlFVTXNXVUZCV1R0UlFVTjZRaXhOUVVGTkxFZEJRVWNzUjBGQlNTeEZRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1JpeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkZUU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU5zUWl4TlFVRk5MRWxCUVVrc1IwRkJWeXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNKRUxFOUJRVThzYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzcERMRU5CUVVNN08wRkJXR0VzTWtKQlFVOHNSMEZCWVN4dFFrRkJiVUlzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0QlFXTjJSU3hOUVVGTkxFOUJRVThzYTBKQlFXMUNMRk5CUVZFc1kwRkJZenRKUVVjM1F5eE5RVUZOTEV0QlFVc3NTVUZCU1R0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4alFVRmpMRVZCUVVVc1EwRkJRenRSUVVOdVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVWxOTEUxQlFVMHNTMEZCU3l4TFFVRkxPMUZCUTNKQ0xFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTMEZCU3l4TFFVRkxMRU5CUVVNN1dVRkRka0lzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdVVUZEZWtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHZHliMnNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJkeWIyc25PMXh1YVcxd2IzSjBJQ29nWVhNZ2RXa2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMM1ZwSnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlRkSEpwYm1kVmRHbHNjeUI3WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYUdGemFFTnZaR1VvY3pvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JzWlhRZ2FHRnphRG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdJQ0JwWmlBb2N5NXNaVzVuZEdnZ1BUMDlJREFwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyaHlPaUJ1ZFcxaVpYSWdQU0J6TG1Ob1lYSkRiMlJsUVhRb2FTazdYRzRnSUNBZ0lDQm9ZWE5vSUQwZ0tDaG9ZWE5vSUR3OElEVXBJQzBnYUdGemFDa2dLeUJqYUhJN1hHNGdJQ0FnSUNCb1lYTm9JSHc5SURBN0lDOHZJRU52Ym5abGNuUWdkRzhnTXpKaWFYUWdhVzUwWldkbGNseHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdmVnh1ZlZ4dVhHNXBiWEJ2Y25RZ2UxTmxjVkJoYkdWMGRHVXNJRk5sY1ZCaGJHVjBkR1ZDWVhObGZTQm1jbTl0SUNjdUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJWYm10dWIzZHVVMlZ4VUdGc1pYUjBaU0JwYlhCc1pXMWxiblJ6SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0J3ZFdKc2FXTWdZV0p6ZEhKaFkzUWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFZHlZWGxCYkd4UVlXeGxkSFJsSUdWNGRHVnVaSE1nVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1VnZTF4dUlDQndkV0pzYVdNZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlDY2pOalkyTmpZMkp6dGNiaUFnZlZ4dWZWeHVYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlZibXR1YjNkdVEyOXNiM0pRWVd4bGRIUmxJR1Y0ZEdWdVpITWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVWdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEJoYkdWMGRHVTZJSE4wY21sdVoxdGRJRDBnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1aWRXbHNaRkJoYkdWMGRHVW9LVHRjYmx4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCaWRXbHNaRkJoYkdWMGRHVW9LVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJR052Ym5OMElISmxjeUE5SUNoYlhTQmhjeUJ6ZEhKcGJtZGJYU2t1WTI5dVkyRjBLQzR1TGs5aWFtVmpkQzUyWVd4MVpYTW9VMlZ4VUdGc1pYUjBaVUpoYzJVdVkyOXNiM1Z5VUdGc1pYUjBaU2twTzF4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYUdGemFEb2diblZ0WW1WeUlEMGdVM1J5YVc1blZYUnBiSE11YUdGemFFTnZaR1VvYlNrN1hHNGdJQ0FnWTI5dWMzUWdjRWtnUFNCb1lYTm9JQ1VnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1d1lXeGxkSFJsTG14bGJtZDBhRHRjYmlBZ0lDQnlaWFIxY200Z1ZXNXJibTkzYmtOdmJHOXlVR0ZzWlhSMFpTNXdZV3hsZEhSbFczQkpYVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5Qm5jbUY1T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVkeVlYa29LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WjNKaGVTQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdkR2hwY3k1bmNtRjVJRDBnYm1WM0lFZHlZWGxCYkd4UVlXeGxkSFJsS0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVozSmhlVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR052Ykc5eU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFTnZiRzl5S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiRzl5SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNCMGFHbHpMbU52Ykc5eUlEMGdibVYzSUZWdWEyNXZkMjVEYjJ4dmNsQmhiR1YwZEdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiMnh2Y2p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCIvLyBEYXRhIHN0cnVjdHVyZXMgZm9yIFYtRG9tYWluIHJlZ2lvbnMgb2YgYW50aWJvZGllc1xuZXhwb3J0IHZhciBWZFJlZ2lvblR5cGU7XG4oZnVuY3Rpb24gKFZkUmVnaW9uVHlwZSkge1xuICAgIFZkUmVnaW9uVHlwZVtcIlVua25vd25cIl0gPSBcInVua25vd25cIjtcbiAgICBWZFJlZ2lvblR5cGVbXCJGUlwiXSA9IFwiZnJhbWV3b3JrXCI7XG4gICAgVmRSZWdpb25UeXBlW1wiQ0RSXCJdID0gXCJjZHJcIjtcbn0pKFZkUmVnaW9uVHlwZSB8fCAoVmRSZWdpb25UeXBlID0ge30pKTtcbi8qKiBEZXNjcmliZXMgVi1ET01BSU4gKElHIGFuZCBUUikgcmVnaW9uIChvZiBtdWx0aXBsZSBhbGlnbm1lbnQpXG4gKiBodHRwczovL3d3dy5pbWd0Lm9yZy9JTUdUU2NpZW50aWZpY0NoYXJ0L051bWJlcmluZy9JTUdUSUdWTHN1cGVyZmFtaWx5Lmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZkUmVnaW9uIHtcbiAgICAvKipcbiAgICAgKiBzdGFydCBhbmQgcG9zaXRpb24gYXJlIHN0cmluZ3MgYmVjYXVzZSB0aGV5IGNvcnJlc3BvbmQgdG8gcG9zaXRpb24gbmFtZXMgYXMgY29sdW1uIG5hbWVzIGluIEFOQVJDSSBvdXRwdXRcbiAgICAgKiBAcGFyYW0ge1ZkUmVnaW9uVHlwZX0gdHlwZSAgVHlwZSBvZiB0aGUgcmVnaW9uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgIE5hbWUgb2YgdGhlIHJlZ2lvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFpblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmRlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwb3NpdGlvblN0YXJ0TmFtZSAgUmVnaW9uIHN0YXJ0IHBvc2l0aW9uIChpbmNsdXNpdmUpXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBvc2l0aW9uRW5kTmFtZSAgUmVnaW9uIGVuZCBwb3NpdGlvbiAoaW5jbHVzaXZlKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHR5cGUsIG5hbWUsIGNoYWluLCBvcmRlciwgcG9zaXRpb25TdGFydE5hbWUsIHBvc2l0aW9uRW5kTmFtZSkge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNoYWluID0gY2hhaW47XG4gICAgICAgIHRoaXMub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgdGhpcy5wb3NpdGlvblN0YXJ0TmFtZSA9IHBvc2l0aW9uU3RhcnROYW1lO1xuICAgICAgICB0aGlzLnBvc2l0aW9uRW5kTmFtZSA9IHBvc2l0aW9uRW5kTmFtZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVF0Y21WbmFXOXVjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluWmtMWEpsWjJsdmJuTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc2NVUkJRWEZFTzBGQlJYSkVMRTFCUVUwc1EwRkJUaXhKUVVGWkxGbEJTVmc3UVVGS1JDeFhRVUZaTEZsQlFWazdTVUZEZEVJc2JVTkJRVzFDTEVOQlFVRTdTVUZEYmtJc1owTkJRV2RDTEVOQlFVRTdTVUZEYUVJc01rSkJRVmNzUTBGQlFUdEJRVU5pTEVOQlFVTXNSVUZLVnl4WlFVRlpMRXRCUVZvc1dVRkJXU3hSUVVsMlFqdEJRVVZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hQUVVGUExGRkJRVkU3U1VGUmJrSTdPenM3T3pzN08wOUJVVWM3U1VGRFNDeFpRVUZaTEVsQlFXdENMRVZCUVVVc1NVRkJXU3hGUVVGRkxFdEJRV0VzUlVGQlJTeExRVUZoTEVWQlEzaEZMR2xDUVVGNVFpeEZRVUZGTEdWQlFYVkNPMUZCUTJ4RUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXp0UlFVTXpReXhKUVVGSkxFTkJRVU1zWlVGQlpTeEhRVUZITEdWQlFXVXNRMEZCUXp0SlFVTjZReXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdkx5QkVZWFJoSUhOMGNuVmpkSFZ5WlhNZ1ptOXlJRll0Ukc5dFlXbHVJSEpsWjJsdmJuTWdiMllnWVc1MGFXSnZaR2xsYzF4dVhHNWxlSEJ2Y25RZ1pXNTFiU0JXWkZKbFoybHZibFI1Y0dVZ2UxeHVJQ0JWYm10dWIzZHVJRDBnSjNWdWEyNXZkMjRuTEZ4dUlDQkdVaUE5SUNkbWNtRnRaWGR2Y21zbkxGeHVJQ0JEUkZJZ1BTQW5ZMlJ5Snl4Y2JuMWNibHh1THlvcUlFUmxjMk55YVdKbGN5QldMVVJQVFVGSlRpQW9TVWNnWVc1a0lGUlNLU0J5WldkcGIyNGdLRzltSUcxMWJIUnBjR3hsSUdGc2FXZHViV1Z1ZENsY2JpQXFJR2gwZEhCek9pOHZkM2QzTG1sdFozUXViM0puTDBsTlIxUlRZMmxsYm5ScFptbGpRMmhoY25RdlRuVnRZbVZ5YVc1bkwwbE5SMVJKUjFaTWMzVndaWEptWVcxcGJIa3VhSFJ0YkZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZtUlNaV2RwYjI0Z2UxeHVJQ0IwZVhCbE9pQldaRkpsWjJsdmJsUjVjR1U3WEc0Z0lHNWhiV1U2SUhOMGNtbHVaenRjYmlBZ1kyaGhhVzQ2SUhOMGNtbHVaenRjYmlBZ2IzSmtaWEk2SUc1MWJXSmxjanRjYmlBZ2NHOXphWFJwYjI1VGRHRnlkRTVoYldVNklITjBjbWx1Wnp0Y2JpQWdjRzl6YVhScGIyNUZibVJPWVcxbE9pQnpkSEpwYm1jN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUhOMFlYSjBJR0Z1WkNCd2IzTnBkR2x2YmlCaGNtVWdjM1J5YVc1bmN5QmlaV05oZFhObElIUm9aWGtnWTI5eWNtVnpjRzl1WkNCMGJ5QndiM05wZEdsdmJpQnVZVzFsY3lCaGN5QmpiMngxYlc0Z2JtRnRaWE1nYVc0Z1FVNUJVa05KSUc5MWRIQjFkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmtVbVZuYVc5dVZIbHdaWDBnZEhsd1pTQWdWSGx3WlNCdlppQjBhR1VnY21WbmFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxJQ0JPWVcxbElHOW1JSFJvWlNCeVpXZHBiMjVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTm9ZV2x1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZjbVJsY2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVWdJRkpsWjJsdmJpQnpkR0Z5ZENCd2IzTnBkR2x2YmlBb2FXNWpiSFZ6YVhabEtWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0c5emFYUnBiMjVGYm1ST1lXMWxJQ0JTWldkcGIyNGdaVzVrSUhCdmMybDBhVzl1SUNocGJtTnNkWE5wZG1VcFhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWgwZVhCbE9pQldaRkpsWjJsdmJsUjVjR1VzSUc1aGJXVTZJSE4wY21sdVp5d2dZMmhoYVc0NklITjBjbWx1Wnl3Z2IzSmtaWEk2SUc1MWJXSmxjaXhjYmlBZ0lDQndiM05wZEdsdmJsTjBZWEowVG1GdFpUb2djM1J5YVc1bkxDQndiM05wZEdsdmJrVnVaRTVoYldVNklITjBjbWx1WnlrZ2UxeHVJQ0FnSUhSb2FYTXVkSGx3WlNBOUlIUjVjR1U3WEc0Z0lDQWdkR2hwY3k1dVlXMWxJRDBnYm1GdFpUdGNiaUFnSUNCMGFHbHpMbU5vWVdsdUlEMGdZMmhoYVc0N1hHNGdJQ0FnZEdocGN5NXZjbVJsY2lBOUlHOXlaR1Z5TzF4dUlDQWdJSFJvYVhNdWNHOXphWFJwYjI1VGRHRnlkRTVoYldVZ1BTQndiM05wZEdsdmJsTjBZWEowVG1GdFpUdGNiaUFnSUNCMGFHbHpMbkJ2YzJsMGFXOXVSVzVrVG1GdFpTQTlJSEJ2YzJsMGFXOXVSVzVrVG1GdFpUdGNiaUFnZlZ4dWZWeHVJbDE5IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQgKiBhcyByeGpzIGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgdmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgQW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzIH0gZnJvbSAnLi4vYW1pbm9hY2lkcyc7XG5pbXBvcnQgeyBOdWNsZW90aWRlcywgTnVjbGVvdGlkZXNQYWxldHRlcyB9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IFVua25vd25TZXFQYWxldHRlcyB9IGZyb20gJy4uL3Vua25vd24nO1xuSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLmdldEN1cnNvclBvc2l0aW9uID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIG5ldyBERy5Qb2ludChldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0LCBldmVudC5jbGllbnRZIC0gcmVjdC50b3ApO1xufTtcbkRHLlJlY3QucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICByZXR1cm4gdGhpcy5sZWZ0IDw9IHggJiYgeCA8PSB0aGlzLnJpZ2h0ICYmIHRoaXMudG9wIDw9IHkgJiYgeSA8PSB0aGlzLmJvdHRvbTtcbn07XG5leHBvcnQgY2xhc3MgUG9zaXRpb25Nb25vbWVySW5mbyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY291bnQgPSAwO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IG5ldyBERy5SZWN0KDAsIDAsIDAsIDApO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbkluZm8ge1xuICAgIC8qKiBmcmVxID0ge30sIHJvd0NvdW50ID0gMFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgcG9zaXRpb24gKCcxMTFBJywgJzExMS4xJywgZXRjKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5mcmVxID0ge307XG4gICAgICAgIHRoaXMucm93Q291bnQgPSAwO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBXZWJMb2dvIGV4dGVuZHMgREcuSnNWaWV3ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnZpZXdlcklkID0gLTE7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgLy8gcHJpdmF0ZSByZWFkb25seSBjb2xvclNjaGVtZTogQ29sb3JTY2hlbWUgPSBDb2xvclNjaGVtZXNbTnVjbGVvdGlkZXNXZWJMb2dvLnJlc2lkdWVzU2V0XTtcbiAgICAgICAgdGhpcy5jcCA9IG51bGw7XG4gICAgICAgIHRoaXMuYXhpc0hlaWdodCA9IDEyO1xuICAgICAgICB0aGlzLnNlcUNvbCA9IG51bGw7XG4gICAgICAgIHRoaXMuc3BsaXR0ZXIgPSBudWxsO1xuICAgICAgICAvLyBwcml2YXRlIG1heExlbmd0aDogbnVtYmVyID0gMTAwO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnJvd3NNYXNrZWQgPSAwO1xuICAgICAgICB0aGlzLnJvd3NOdWxsID0gMDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gW107XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gLTE7XG4gICAgICAgIHRoaXMudmlld1N1YnMgPSBbXTtcbiAgICAgICAgdGhpcy52aWV3ZXJJZCA9IFdlYkxvZ28udmlld2VyQ291bnQ7XG4gICAgICAgIFdlYkxvZ28udmlld2VyQ291bnQgKz0gMTtcbiAgICAgICAgdGhpcy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aCA9IHRoaXMuZmxvYXQoJ3Bvc2l0aW9uV2lkdGgnLCAxNiAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiA0LCBtYXg6IDY0LCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5taW5IZWlnaHQgPSB0aGlzLmZsb2F0KCdtaW5IZWlnaHQnLCA1MCAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiAyNTAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZmxvYXQoJ21heEhlaWdodCcsIDEwMCAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiA1MDAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgICAgICB0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcyA9IHRoaXMuYm9vbCgnY29uc2lkZXJOdWxsU2VxdWVuY2VzJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA9IHRoaXMuc3RyaW5nKCdzZXF1ZW5jZUNvbHVtbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdzdGFydFBvc2l0aW9uTmFtZScsIG51bGwpO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdlbmRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5maXhXaWR0aCA9IHRoaXMuYm9vbCgnZml4V2lkdGgnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMudmVydGljYWxBbGlnbm1lbnQgPSB0aGlzLnN0cmluZygndmVydGljYWxBbGlnbm1lbnQnLCAnbWlkZGxlJywgeyBjaG9pY2VzOiBbJ3RvcCcsICdtaWRkbGUnLCAnYm90dG9tJ10gfSk7XG4gICAgICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCA9IHRoaXMuc3RyaW5nKCdob3Jpem9udGFsQWxpZ25tZW50JywgJ2NlbnRlcicsIHsgY2hvaWNlczogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCddIH0pO1xuICAgICAgICB0aGlzLmZpdEFyZWEgPSB0aGlzLmJvb2woJ2ZpdEFyZWEnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zaHJpbmtFbXB0eVRhaWwgPSB0aGlzLmJvb2woJ3Nocmlua0VtcHR5VGFpbCcsIHRydWUpO1xuICAgICAgICB0aGlzLnNraXBFbXB0eVBvc2l0aW9ucyA9IHRoaXMuYm9vbCgnc2tpcEVtcHR5UG9zaXRpb25zJywgZmFsc2UpO1xuICAgIH1cbiAgICAvKiogRm9yIHN0YXJ0UG9zaXRpb24gZXF1YWxzIHRvIGVuZFBvc2l0aW9uIExlbmd0aCBpcyAxICovXG4gICAgZ2V0IExlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQb3NpdGlvbiA8PSB0aGlzLmVuZFBvc2l0aW9uID8gdGhpcy5lbmRQb3NpdGlvbiAtIHRoaXMuc3RhcnRQb3NpdGlvbiArIDEgOiAwO1xuICAgIH1cbiAgICBpbml0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdXZWJMb2dvIHNlY29uZCBpbml0aWFsaXphdGlvbiEnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaGVscFVybCA9ICcvaGVscC92aXN1YWxpemUvdmlld2Vycy93ZWItbG9nby5tZCc7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3QgPSB1aS5kaXYoJ05vIG1lc3NhZ2UnKTtcbiAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgdGhpcy5jYW52YXMgPSB1aS5jYW52YXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdWkuZGl2KFt0aGlzLm1zZ0hvc3QsIHRoaXMuY2FudmFzXSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlciA9IHVpLnJhbmdlU2xpZGVyKDAsIDIwLCAyLCA1KTtcbiAgICAgICAgICAgIC8vIHRoaXMuc2xpZGVyLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlci5yb290LnN0eWxlLmhlaWdodCA9ICcxMnB4JztcbiAgICAgICAgICAgIGNvbnN0IGdldE1vbm9tZXIgPSAocCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpQb3MgPSBNYXRoLmZsb29yKHAueCAvIHRoaXMuX3Bvc2l0aW9uV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG4gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uID09PSB2b2lkIDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9IE9iamVjdC5rZXlzKHBvc2l0aW9uLmZyZXEpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKChtKSA9PiBwb3NpdGlvbi5mcmVxW21dLmJvdW5kcy5jb250YWlucyhwLngsIHAueSkpO1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtqUG9zLCBtb25vbWVyLCBwb3NpdGlvbi5mcmVxW21vbm9tZXJdXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyB0aGlzLnN1YnMucHVzaChyeGpzLmZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmNhbnZhcywgJ21vdXNlb3ZlcicpLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHJ4anMuZnJvbUV2ZW50KHRoaXMuY2FudmFzLCAnbW91c2Vtb3ZlJykuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbnZhcylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiB0aGlzLnNwbGl0dGVyICYmIG1vbm9tZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdWkudG9vbHRpcC5zaG93Um93R3JvdXAodGhpcy5kYXRhRnJhbWUsIChpUm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXEgPSB0aGlzLnNlcUNvbC5nZXQoaVJvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXFNID0gc2VxID8gdGhpcy5zcGxpdHRlcihzZXEpW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXFNID09PSBtb25vbWVyICYmIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXQoaVJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGFyZ3MueCArIDE2LCBhcmdzLnkgKyAxNik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1aS50b29sdGlwLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQodGhpcy5jYW52YXMsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8IGUuYnV0dG9uICE9IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdzID0gZTtcbiAgICAgICAgICAgICAgICBjb25zdCBbalBvcywgbW9ub21lcl0gPSBnZXRNb25vbWVyKHRoaXMuY2FudmFzLmdldEN1cnNvclBvc2l0aW9uKGFyZ3MpKTtcbiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50cyBkZXNlbGVjdCBhbGwgcm93cyBpZiB3ZSBtaXNzIG1vbm9tZXIgYm91bmRzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lICYmIHRoaXMuc2VxQ29sICYmIHRoaXMuc3BsaXR0ZXIgJiYgbW9ub21lcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uaW5pdCgoaVJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2wuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IHRoaXMuc3BsaXR0ZXIoc2VxKVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VxTSA9PT0gbW9ub21lciAmJiB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLnB1c2godWkub25TaXplQ2hhbmdlZCh0aGlzLnJvb3QpLnN1YnNjcmliZSh0aGlzLnJvb3RPblNpemVDaGFuZ2VkLmJpbmQodGhpcykpKTtcbiAgICAgICAgICAgIHRoaXMucm9vdC5hcHBlbmQodGhpcy5ob3N0KTtcbiAgICAgICAgICAgIC8vIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLnNsaWRlci5yb290KTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcm9vdE9uU2l6ZUNoYW5nZWQoYXJncykge1xuICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nby5vblJvb3RTaXplQ2hhbmdlZCgpIGAgK1xuICAgICAgICAvLyAgIGByb290LndpZHRoPSR7dGhpcy5yb290LmNsaWVudFdpZHRofSwgcm9vdC5oZWlnaHQ9JHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fSwgYCArXG4gICAgICAgIC8vICAgYGNhbnZhcy53aWR0aD0ke3RoaXMuY2FudmFzLndpZHRofSwgY2FudmFzLmhlaWdodD0ke3RoaXMuY2FudmFzLmhlaWdodH0gLmApO1xuICAgIH1cbiAgICAvKiogQXNzaWducyB7QGxpbmsgc2VxQ29sfSBhbmQge0BsaW5rIGNwfSBiYXNlZCBvbiB7QGxpbmsgc2VxdWVuY2VDb2x1bW5OYW1lfSBhbmQgY2FsbHMge0BsaW5rIHJlbmRlcn0oKS5cbiAgICAgKi9cbiAgICB1cGRhdGVTZXFDb2woKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSkge1xuICAgICAgICAgICAgdGhpcy5zZXFDb2wgPSB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA/IHRoaXMuZGF0YUZyYW1lLmNvbCh0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcUNvbCA9IFdlYkxvZ28ucGlja1VwU2VxQ29sMih0aGlzLmRhdGFGcmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPSB0aGlzLnNlcUNvbCA/IHRoaXMuc2VxQ29sLm5hbWUgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5pdHMgPSB0aGlzLnNlcUNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5zZXFDb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNwbGl0dGVyID0gV2ViTG9nby5nZXRTcGxpdHRlcih1bml0cywgc2VwYXJhdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3AgPSBXZWJMb2dvLnBpY2tVcFBhbGV0dGUodGhpcy5zZXFDb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGxpdHRlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uID0gLTE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICAgIHVwZGF0ZVBvc2l0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlcUNvbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IGNhdGVnb3JpZXM7XG4gICAgICAgIGlmICh0aGlzLnNocmlua0VtcHR5VGFpbCkge1xuICAgICAgICAgICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQoQXJyYXkuZnJvbShBcnJheShpbmRpY2VzLmxlbmd0aCkua2V5cygpKS5tYXAoKGkpID0+IHRoaXMuc2VxQ29sLmdldChpbmRpY2VzW2ldKSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhdGVnb3JpZXMgPSB0aGlzLnNlcUNvbC5jYXRlZ29yaWVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IGNhdGVnb3JpZXMubGVuZ3RoID4gMCA/IE1hdGgubWF4KC4uLmNhdGVnb3JpZXMubWFwKChzKSA9PiBzICE9PSBudWxsID8gdGhpcy5zcGxpdHRlcihzKS5sZW5ndGggOiAwKSkgOiAwO1xuICAgICAgICAvLyBHZXQgcG9zaXRpb24gbmFtZXMgZnJvbSBkYXRhIGNvbHVtbiB0YWcgJ3Bvc2l0aW9uTmFtZXMnXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uTmFtZXNUeHQgPSB0aGlzLnNlcUNvbC5nZXRUYWcoJ3Bvc2l0aW9uTmFtZXMnKTtcbiAgICAgICAgLy8gRmFsbGJhY2sgaWYgJ3Bvc2l0aW9uTmFtZXMnIHRhZyBpcyBub3QgcHJvdmlkZWRcbiAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gcG9zaXRpb25OYW1lc1R4dCA/IHBvc2l0aW9uTmFtZXNUeHQuc3BsaXQoJywgJykubWFwKChuKSA9PiBuLnRyaW0oKSkgOlxuICAgICAgICAgICAgWy4uLkFycmF5KG1heExlbmd0aCkua2V5cygpXS5tYXAoKGpQb3MpID0+IGAke2pQb3MgKyAxfWApO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAodGhpcy5zdGFydFBvc2l0aW9uTmFtZSAmJiB0aGlzLnBvc2l0aW9uTmFtZXMgJiZcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmNsdWRlcyh0aGlzLnN0YXJ0UG9zaXRpb25OYW1lKSkgP1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluZGV4T2YodGhpcy5zdGFydFBvc2l0aW9uTmFtZSkgOiAwO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gKHRoaXMuZW5kUG9zaXRpb25OYW1lICYmIHRoaXMucG9zaXRpb25OYW1lcyAmJlxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluY2x1ZGVzKHRoaXMuZW5kUG9zaXRpb25OYW1lKSkgP1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluZGV4T2YodGhpcy5lbmRQb3NpdGlvbk5hbWUpIDogKG1heExlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSkge1xuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvLm9uUHJvcGVydHlDaGFuZ2VkKCAke3Byb3BlcnR5Lm5hbWV9ID0gJycgfSlgKTtcbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkpO1xuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5Lm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NvbnNpZGVyTnVsbFNlcXVlbmNlcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZXF1ZW5jZUNvbHVtbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGFydFBvc2l0aW9uTmFtZSc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VuZFBvc2l0aW9uTmFtZSc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Bvc2l0aW9uV2lkdGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGg7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW5IZWlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWF4SGVpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpeFdpZHRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsQWxpZ25tZW50JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvcml6b250YWxBbGlnbm1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZml0QXJlYSc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzaHJpbmtFbXB0eVRhaWwnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25UYWJsZUF0dGFjaGVkKCkge1xuICAgICAgICBjb25zdCBfc3VwZXIgPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgICAgICAgICAgIG9uVGFibGVBdHRhY2hlZDogeyBnZXQ6ICgpID0+IHN1cGVyLm9uVGFibGVBdHRhY2hlZCB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgZGF0YUZyYW1lVHh0ID0gdGhpcy5kYXRhRnJhbWUgPyAnZGF0YScgOiAnbnVsbCc7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCBkYXRhRnJhbWUgPSAke2RhdGFGcmFtZVR4dH0gKSBzdGFydGApO1xuICAgICAgICAgICAgX3N1cGVyLm9uVGFibGVBdHRhY2hlZC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzLnB1c2godGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHRoaXMucmVuZGVyKCkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmRhdGFGcmFtZS5maWx0ZXIub25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHlpZWxkIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCgpIGVuZGApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGV0YWNoKCkge1xuICAgICAgICBjb25zdCBfc3VwZXIgPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgICAgICAgICAgIGRldGFjaDogeyBnZXQ6ICgpID0+IHN1cGVyLmRldGFjaCB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgZGF0YUZyYW1lVHh0ID0gYCR7dGhpcy5kYXRhRnJhbWUgPyAnZGF0YScgOiAnbnVsbCd9YDtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoIGRhdGFGcmFtZSA9ICR7ZGF0YUZyYW1lVHh0fSApIHN0YXJ0YCk7XG4gICAgICAgICAgICBfc3VwZXIuZGV0YWNoLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5jYW52YXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmhvc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCkgZW5kYCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfbnVsbFNlcXVlbmNlKGZpbGxlclJlc2lkdWUgPSAnWCcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uc2lkZXJOdWxsU2VxdWVuY2VzKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheSh0aGlzLkxlbmd0aCkuZmlsbChmaWxsZXJSZXNpZHVlKS5qb2luKCcnKTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBfY2FsY3VsYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLmhvc3QgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5jYWxjU2l6ZSgpO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ldyBBcnJheSh0aGlzLkxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgcG9zTmFtZSA9IHRoaXMucG9zaXRpb25OYW1lc1t0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXTtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdID0gbmV3IFBvc2l0aW9uSW5mbyhwb3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAyMDIyLTA1LTA1IGFza2Fsa2luIGluc3RydWN0ZWQgdG8gc2hvdyBXZWJMb2dvIGJhc2VkIG9uIGZpbHRlciAobm90IHNlbGVjdGlvbilcbiAgICAgICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgICAgLy8gY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi50cnVlQ291bnQgPiAwID8gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldFNlbGVjdGVkSW5kZXhlcygpIDpcbiAgICAgICAgLy8gICB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgIHRoaXMucm93c01hc2tlZCA9IGluZGljZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLnJvd3NOdWxsID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluZGljZXMpIHtcbiAgICAgICAgICAgIGxldCBzID0gKHRoaXMuc2VxQ29sLmdldChpKSk7XG4gICAgICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICAgICAgICBzID0gdGhpcy5fbnVsbFNlcXVlbmNlKCk7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnJvd3NOdWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHRoaXMuc3BsaXR0ZXIocyk7XG4gICAgICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwbUluZm8gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBzZXFNW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIHx8ICctJztcbiAgICAgICAgICAgICAgICBpZiAoIShtIGluIHBtSW5mbykpXG4gICAgICAgICAgICAgICAgICAgIHBtSW5mb1ttXSA9IG5ldyBQb3NpdGlvbk1vbm9tZXJJbmZvKCk7XG4gICAgICAgICAgICAgICAgcG1JbmZvW21dLmNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8jcmVnaW9uIFBvbGlzaCBmcmVxIGNvdW50c1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIC8vIGRlbGV0ZSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxWyctJ107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG0gaW4gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSlcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCArPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxW21dLmNvdW50O1xuICAgICAgICB9XG4gICAgICAgIC8vI2VuZHJlZ2lvblxuICAgICAgICBjb25zdCByID0gd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuY2FudmFzLmhlaWdodCAtIHRoaXMuYXhpc0hlaWdodCAqIHI7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4uX2NhbGN1bGF0ZSgpIG1heEhlaWdodD0ke21heEhlaWdodH0uYCk7XG4gICAgICAgIC8vI3JlZ2lvbiBDYWxjdWxhdGUgc2NyZWVuXG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgZnJlcSA9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXE7XG4gICAgICAgICAgICBjb25zdCByb3dDb3VudCA9IHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50O1xuICAgICAgICAgICAgbGV0IHkgPSB0aGlzLmF4aXNIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZnJlcSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhWzBdICE9PSAnLScgJiYgYlswXSAhPT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYlsxXS5jb3VudCAtIGFbMV0uY291bnQ7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nICYmIGJbMF0gPT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgZWxzZSAvKiAoYlswXSA9PT0gJy0nKSAqL1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKzE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBtSW5mbyA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IG06IHN0cmluZyA9IGVudHJ5WzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGggPSBtYXhIZWlnaHQgKiBwbUluZm8uY291bnQgLyByb3dDb3VudDtcbiAgICAgICAgICAgICAgICBwbUluZm8uYm91bmRzID0gbmV3IERHLlJlY3QoalBvcyAqIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIHksIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIGgpO1xuICAgICAgICAgICAgICAgIHkgKz0gaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyNlbmRyZWdpb25cbiAgICB9XG4gICAgLy8gcmVmbGVjdCBjaGFuZ2VzIG1hZGUgdG8gZmlsdGVyL3NlbGVjdGlvblxuICAgIHJlbmRlcihyZWNhbGMgPSB0cnVlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHRoaXMubXNnSG9zdCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sICYmICF0aGlzLmNwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tc2dIb3N0LmlubmVyVGV4dCA9IGBVbmtub3duIHBhbGV0dGUgKGNvbHVtbiBzZW1UeXBlOiAnJHt0aGlzLnNlcUNvbC5zZW1UeXBlfScpLmA7XG4gICAgICAgICAgICAgICAgdGhpcy5tc2dIb3N0LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSB8fCAhdGhpcy5jcClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZyA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGlmICghZylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHJlY2FsYylcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZSgpO1xuICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ3doaXRlJztcbiAgICAgICAgZy5maWxsUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgZy50ZXh0QmFzZWxpbmUgPSB0aGlzLnRleHRCYXNlbGluZTtcbiAgICAgICAgLy8gUHJldmVudHMgZGl2aXNpb24gYnkgemVybyBvbiBMZW5ndGggPSAwXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0UG9zaXRpb24gPT09IC0xIHx8IHRoaXMuZW5kUG9zaXRpb24gPT09IC0xKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLyNyZWdpb24gUGxvdCBwb3NpdGlvbk5hbWVzXG4gICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgZy5maWxsU3R5bGUgPSAnYmxhY2snO1xuICAgICAgICBnLnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgICBnLmZvbnQgPSAnMTBweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgIGNvbnN0IHBvc05hbWVNYXhXaWR0aCA9IE1hdGgubWF4KC4uLnRoaXMucG9zaXRpb25zLm1hcCgocG9zKSA9PiBnLm1lYXN1cmVUZXh0KHBvcy5uYW1lKS53aWR0aCkpO1xuICAgICAgICBjb25zdCBoU2NhbGUgPSBwb3NOYW1lTWF4V2lkdGggPCAodGhpcy5fcG9zaXRpb25XaWR0aCAtIDIpID8gMSA6ICh0aGlzLl9wb3NpdGlvbldpZHRoIC0gMikgLyBwb3NOYW1lTWF4V2lkdGg7XG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgcG9zID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG4gICAgICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgICAgICBnLnNldFRyYW5zZm9ybShoU2NhbGUsIDAsIDAsIDEsIGpQb3MgKiB0aGlzLl9wb3NpdGlvbldpZHRoICsgdGhpcy5fcG9zaXRpb25XaWR0aCAvIDIsIDApO1xuICAgICAgICAgICAgZy5maWxsVGV4dChwb3MubmFtZSwgMCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW21vbm9tZXIsIHBtSW5mb10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lciAhPT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBwbUluZm8uYm91bmRzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb250U3R5bGUgPSAnMTZweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhhY2tzIHRvIHNjYWxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIHRvIHRhcmdldCByZWN0YW5nbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVyQXNjZW50ID0gMC4yNTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVySGVpZ2h0ID0gMTIuMjtcbiAgICAgICAgICAgICAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ2xpZ2h0Z3JheSc7XG4gICAgICAgICAgICAgICAgICAgIGcubGluZVdpZHRoID0gMTtcbiAgICAgICAgICAgICAgICAgICAgZy5yZWN0KGIubGVmdCwgYi50b3AsIGIud2lkdGgsIGIuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSAoX2EgPSB0aGlzLmNwLmdldChtb25vbWVyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5jcC5nZXQoJ290aGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGcudGV4dEFsaWduID0gJ2xlZnQnO1xuICAgICAgICAgICAgICAgICAgICBnLmZvbnQgPSBmb250U3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIC8vZy5maWxsUmVjdChiLmxlZnQsIGIudG9wLCBiLndpZHRoLCBiLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1UbSA9IGcubWVhc3VyZVRleHQobW9ub21lcik7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudCAhPSAwKVxuICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUuZGVidWcoYG06ICR7bX0sIG1NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50OiAke21NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50fWApO1xuICAgICAgICAgICAgICAgICAgICBnLnNldFRyYW5zZm9ybShiLndpZHRoIC8gbVRtLndpZHRoLCAwLCAwLCBiLmhlaWdodCAvIHVwcGVyY2FzZUxldHRlckhlaWdodCwgYi5sZWZ0LCBiLnRvcCk7XG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFRleHQobW9ub21lciwgMCwgLXVwcGVyY2FzZUxldHRlckFzY2VudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNhbGNTaXplKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLmhvc3QpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB3aWR0aCA9IHRoaXMuTGVuZ3RoICogdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5taW4odGhpcy5tYXhIZWlnaHQsIE1hdGgubWF4KHRoaXMubWluSGVpZ2h0LCB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0KSk7XG4gICAgICAgIGlmICh0aGlzLmZpdEFyZWEpIHtcbiAgICAgICAgICAgIGNvbnN0IHhTY2FsZSA9IHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCB5U2NhbGUgPSB0aGlzLnJvb3QuY2xpZW50V2lkdGggLyB3aWR0aDtcbiAgICAgICAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oeFNjYWxlLCB5U2NhbGUpKTtcbiAgICAgICAgICAgIHdpZHRoID0gd2lkdGggKiBzY2FsZTtcbiAgICAgICAgICAgIGhlaWdodCA9IGhlaWdodCAqIHNjYWxlO1xuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aCAqIHNjYWxlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSB3aWR0aCAqIHI7XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgICAgICAvLyBjb25zdCBjYW52YXNIZWlnaHQ6IG51bWJlciA9IHdpZHRoID4gdGhpcy5yb290LmNsaWVudFdpZHRoID8gaGVpZ2h0IC0gOCA6IGhlaWdodDtcbiAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHtoZWlnaHR9cHhgKTtcbiAgICAgICAgY29uc3QgY2FudmFzSGVpZ2h0ID0gdGhpcy5ob3N0LmNsaWVudEhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0ICogcjtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGAke2NhbnZhc0hlaWdodH1weGApO1xuICAgICAgICAvLyBBZGp1c3QgaG9zdCBhbmQgcm9vdCB3aWR0aFxuICAgICAgICBpZiAodGhpcy5maXhXaWR0aCkge1xuICAgICAgICAgICAgLy8gZnVsbCB3aWR0aCBmb3IgY2FudmFzIGhvc3QgYW5kIHJvb3RcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS53aWR0aCA9IHRoaXMuaG9zdC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBhbGxvdyBzY3JvbGwgY2FudmFzIGluIHJvb3RcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS53aWR0aCA9IHRoaXMuaG9zdC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5vdmVyZmxvd1ggPSAnYXV0byFpbXBvcnRhbnQnO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCd0ZXh0LWFsaWduJywgdGhpcy5ob3Jpem9udGFsQWxpZ25tZW50KTtcbiAgICAgICAgICAgIC8vIHZlcnRpY2FsIGFsaWdubWVudFxuICAgICAgICAgICAgbGV0IGhvc3RUb3BNYXJnaW4gPSAwO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICAgICAgICAgIGhvc3RUb3BNYXJnaW4gPSBNYXRoLm1heCgwLCAodGhpcy5yb290LmNsaWVudEhlaWdodCAtIGhlaWdodCkgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IE1hdGgubWF4KDAsIHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGAke2hvc3RUb3BNYXJnaW59cHhgLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgICAgICBpZiAodGhpcy5yb290LmNsaWVudEhlaWdodCA8IGhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7dGhpcy5yb290LmNsaWVudEhlaWdodH1weGApO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ2hpZGRlbicsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFxuICAgICAgICAvLyAgIGB0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0ID0gJHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmhvc3QuY2xpZW50SGVpZ2h0ID0gJHt0aGlzLmhvc3QuY2xpZW50SGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgICdcXG4nICtcbiAgICAgICAgLy8gICBgdGhpcy5jYW52YXMuaGVpZ2h0ICAgICAgID0gJHt0aGlzLmNhbnZhcy5oZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMuY2FudmFzLnN0eWxlLmhlaWdodCA9ICR7dGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0fWApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sIENvbHVtbiB0byBsb29rIGZvciBhIHBhbGV0dGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gIG1pbkxlbmd0aCBtaW5pbXVtIGxlbmd0aCBvZiBzZXF1ZW5jZSB0byBkZXRlY3QgcGFsZXR0ZSAoZW1wdHkgc3RyaW5ncyBhcmUgYWxsb3dlZClcbiAgICAgKiBAcmV0dXJuIHtTZXFQYWxldHRlfSBQYWxldHRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFscGhhYmV0IG9mIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIGNvbHVtblxuICAgICAqL1xuICAgIHN0YXRpYyBwaWNrVXBQYWxldHRlKHNlcUNvbCwgbWluTGVuZ3RoID0gNSkge1xuICAgICAgICBsZXQgcmVzID0gbnVsbDtcbiAgICAgICAgc3dpdGNoIChzZXFDb2wuc2VtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBBbWlub2FjaWRzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudDpcbiAgICAgICAgICAgICAgICByZXMgPSBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTnVjbGVvdGlkZXMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50OlxuICAgICAgICAgICAgICAgIHJlcyA9IE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXRzID0gV2ViTG9nby5nZXRTdGF0cyhzZXFDb2wsIG1pbkxlbmd0aCwgV2ViTG9nby5zcGxpdHRlckFzRmFzdGEpO1xuICAgICAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhOdWNsZW90aWRlcy5OYW1lcykpLCBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbV0sXG4gICAgICAgICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhBbWlub2FjaWRzLk5hbWVzKSksIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzXSxcbiAgICAgICAgXTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbSA9IGFscGhhYmV0Q2FuZGlkYXRlc1xuICAgICAgICAgICAgLm1hcCgoYykgPT4gV2ViTG9nby5nZXRBbHBoYWJldFNpbWlsYXJpdHkoc3RhdHMuZnJlcSwgY1swXSkpO1xuICAgICAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgICAgICBpZiAobWF4Q29zID4gMC42NSlcbiAgICAgICAgICAgIHJlcyA9IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVsxXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzID0gVW5rbm93blNlcVBhbGV0dGVzLkNvbG9yO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogU3RhdHMgb2Ygc2VxdWVuY2VzIHdpdGggc3BlY2lmaWVkIHNwbGl0dGVyIGZ1bmMsIHJldHVybnMgeyBmcmVxLCBzYW1lTGVuZ3RoIH0uXG4gICAgICogQHBhcmFtIHtERy5Db2x1bW59IHNlcUNvbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAgICAgKiBAcGFyYW0ge1NwbGl0dGVyRnVuY30gc3BsaXR0ZXJcbiAgICAgKiBAcmV0dXJuIHsgU2VxQ29sU3RhdHMgfSwgc2FtZUxlbmd0aDogYm9vbGVhbiB9IHN0YXRzIG9mIGNvbHVtbiBzZXF1ZW5jZXNcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIHNwbGl0dGVyKSB7XG4gICAgICAgIGNvbnN0IGZyZXEgPSB7fTtcbiAgICAgICAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICAgICAgICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IHNlcSBvZiBzZXFDb2wuY2F0ZWdvcmllcykge1xuICAgICAgICAgICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG4gICAgICAgICAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgICAgICAgICAgICBmaXJzdExlbmd0aCA9IG1TZXEubGVuZ3RoO1xuICAgICAgICAgICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgICAgICAgICAgIHNhbWVMZW5ndGggPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChtU2VxLmxlbmd0aCA+IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBtU2VxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKG0gaW4gZnJlcSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBmcmVxW21dID0gMDtcbiAgICAgICAgICAgICAgICAgICAgZnJlcVttXSArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBmcmVxOiBmcmVxLCBzYW1lTGVuZ3RoOiBzYW1lTGVuZ3RoIH07XG4gICAgfVxuICAgIHN0YXRpYyBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcSwgYWxwaGFiZXQsIGdhcFN5bWJvbCA9ICctJykge1xuICAgICAgICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4ubmV3IFNldChPYmplY3Qua2V5cyhmcmVxKSksIC4uLmFscGhhYmV0XSk7XG4gICAgICAgIGtleXMuZGVsZXRlKGdhcFN5bWJvbCk7XG4gICAgICAgIGNvbnN0IGZyZXFBID0gW107XG4gICAgICAgIGNvbnN0IGFscGhhYmV0QSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG0gb2Yga2V5cykge1xuICAgICAgICAgICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgICAgICAgICBhbHBoYWJldEEucHVzaChhbHBoYWJldC5oYXMobSkgPyAxIDogMCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gICAgICAgIGNvbnN0IGZyZXFWID0gbmV3IFZlY3RvcihmcmVxQSk7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0ViA9IG5ldyBWZWN0b3IoYWxwaGFiZXRBKTtcbiAgICAgICAgY29uc3QgY29zID0gdmVjdG9yRG90UHJvZHVjdChmcmVxViwgYWxwaGFiZXRWKSAvICh2ZWN0b3JMZW5ndGgoZnJlcVYpICogdmVjdG9yTGVuZ3RoKGFscGhhYmV0VikpO1xuICAgICAgICByZXR1cm4gY29zO1xuICAgIH1cbiAgICAvLyAvKiogRmlyc3QgdHJ5IHRvIGZpbmQgY29sdW1uIHdpdGggc2VtVHlwZSAnYWxpZ25lZFNlcXVlbmNlJy5cbiAgICAvLyAgKiBOZXh0IGxvb2sgZm9yIGNvbHVtbiB3aXRoIGRhdGEgYWxwaGFiZXQgY29ycmVzcG9uZGluZyB0byBhbnkgb2YgdGhlIGtub3duIHBhbGV0dGVzLlxuICAgIC8vICAqIEBwYXJhbSB7REcuRGF0YUZyYW1lfSBkYXRhRnJhbWVcbiAgICAvLyAgKiBAcmV0dXJuIHtERy5Db2x1bW59IFRoZSBjb2x1bW4gd2Ugd2VyZSBsb29raW5nIGZvciBvciBudWxsXG4gICAgLy8gICovXG4gICAgLy8gcHJpdmF0ZSBwaWNrVXBTZXFDb2woZGF0YUZyYW1lOiBERy5EYXRhRnJhbWUpOiBERy5Db2x1bW4gfCBudWxsIHtcbiAgICAvLyAgIGxldCByZXM6IERHLkNvbHVtbiB8IG51bGwgPSBkYXRhRnJhbWUuY29sdW1ucy5ieVNlbVR5cGUoJ2FsaWduZWRTZXF1ZW5jZScpO1xuICAgIC8vICAgaWYgKHJlcyA9PSBudWxsKSB7XG4gICAgLy8gICAgIGZvciAoY29uc3QgY29sIG9mIGRhdGFGcmFtZS5jb2x1bW5zKSB7XG4gICAgLy8gICAgICAgY29uc3QgY3AgPSBXZWJMb2dvLnBpY2tVcFBhbGV0dGUoY29sIGFzIERHLkNvbHVtbiwgNSk7XG4gICAgLy8gICAgICAgaWYgKGNwICE9PSBudWxsICYmICEoY3AgaW5zdGFuY2VvZiBVbmtub3duU2VxUGFsZXR0ZSkpIHtcbiAgICAvLyAgICAgICAgIHJlcyA9IGNvbDtcbiAgICAvLyAgICAgICAgIGJyZWFrO1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfVxuICAgIC8vICAgfVxuICAgIC8vICAgcmV0dXJuIHJlcztcbiAgICAvLyB9XG4gICAgc3RhdGljIHBpY2tVcFNlcUNvbDIoZGYpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBzZW1UeXBlQ29sTGlzdCA9IGRmLmNvbHVtbnMuYnlTZW1UeXBlQWxsKERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSk7XG4gICAgICAgIGxldCByZXNDb2wgPSAoX2EgPSBzZW1UeXBlQ29sTGlzdC5maW5kKChjb2wpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgICAgIHJldHVybiB1bml0cyA/IHVuaXRzLmluZGV4T2YoJ01TQScpICE9PSAtMSA6IGZhbHNlO1xuICAgICAgICB9KSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbDtcbiAgICAgICAgaWYgKCFyZXNDb2wgJiYgc2VtVHlwZUNvbExpc3QubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJlc0NvbCA9IHNlbVR5cGVDb2xMaXN0WzBdO1xuICAgICAgICByZXR1cm4gcmVzQ29sO1xuICAgIH1cbiAgICAvKiogU3BsaXQgc2VxdWVuY2UgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgbW9ub21lcnMsIHNxdWFyZSBicmFja2V0cyBtdWx0aWNoYXIgbW9ub21lciBuYW1lcyBvciBnYXAgc3ltYm9sLlxuICAgICAqIEBwYXJhbSB7YW55fSBzZXEgb2JqZWN0IHdpdGggc2VxdWVuY2VcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgbW9ub21lcnNcbiAgICAgKi9cbiAgICBzdGF0aWMgc3BsaXR0ZXJBc0Zhc3RhKHNlcSkge1xuICAgICAgICBjb25zdCByZXMgPSB3dShzZXEudG9TdHJpbmcoKS5tYXRjaEFsbChXZWJMb2dvLm1vbm9tZXJSZSkpXG4gICAgICAgICAgICAubWFwKChtYSkgPT4ge1xuICAgICAgICAgICAgbGV0IG1SZXM7XG4gICAgICAgICAgICBjb25zdCBtID0gbWFbMF07XG4gICAgICAgICAgICBpZiAobS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKG0gaW4gV2ViTG9nby5hYVN5bm9ueW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIG1SZXMgPSBXZWJMb2dvLmFhU3lub255bXNbbV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtUmVzID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYExvbmcgbW9ub21lciAnJHttfScgaGFzIG5vdCBhIHNob3J0IHN5bm9ueW0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbVJlcyA9IG07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbVJlcztcbiAgICAgICAgfSkudG9BcnJheSgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogR2V0cyBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2UgYnkgc2VwYXJhdG9yXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY31cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcikge1xuICAgICAgICByZXR1cm4gKHNlcSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNlcS5zcGxpdChzZXBhcmF0b3IpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdHNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yXG4gICAgICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRTcGxpdHRlcih1bml0cywgc2VwYXJhdG9yKSB7XG4gICAgICAgIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2Zhc3RhJykpXG4gICAgICAgICAgICByZXR1cm4gV2ViTG9nby5zcGxpdHRlckFzRmFzdGE7XG4gICAgICAgIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnc2VwYXJhdG9yJykpXG4gICAgICAgICAgICByZXR1cm4gV2ViTG9nby5nZXRTcGxpdHRlcldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yKTtcbiAgICAgICAgLypcbiAgICAgICAgZWxzZSBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdoZWxtJykpXG4gICAgICAgICAgcmV0dXJuIFdlYkxvZ28uc3BsaXR0ZXJBc0hlbG07XG4gICAgICAgIC8qKi9cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHVuaXRzICR7dW5pdHN9IC5gKTtcbiAgICAgICAgLy8gVE9ETzogU3BsaXR0ZXIgZm9yIEhFTE1cbiAgICB9XG4gICAgc3RhdGljIGdldFNwbGl0dGVyRm9yQ29sdW1uKGNvbCkge1xuICAgICAgICBpZiAoY29sLnNlbVR5cGUgIT09IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgR2V0IHNwbGl0dGVyIGZvciBzZW1UeXBlIFwiJHtERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEV9XCIgb25seS5gKTtcbiAgICAgICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSBjb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICAgICAgcmV0dXJuIFdlYkxvZ28uZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcik7XG4gICAgfVxufVxuV2ViTG9nby5yZXNpZHVlc1NldCA9ICdudWNsZW90aWRlcyc7XG5XZWJMb2dvLnZpZXdlckNvdW50ID0gLTE7XG5XZWJMb2dvLm1vbm9tZXJSZSA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG4vKiogT25seSBzb21lIG9mIHRoZSBzeW5vbnltcy4gVGhlc2Ugd2VyZSBvYnRhaW5lZCBmcm9tIHRoZSBjbHVzdGVyZWQgb2xpZ29wZXB0aWRlIGRhdGFzZXQuICovXG5XZWJMb2dvLmFhU3lub255bXMgPSB7XG4gICAgJ1tNZU5sZV0nOiAnTCcsXG4gICAgJ1tNZUFdJzogJ0EnLFxuICAgICdbTWVHXSc6ICdHJyxcbiAgICAnW01lRl0nOiAnRicsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZDJWaUxXeHZaMjh1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjNaV0l0Ykc5bmJ5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZEUVN4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUTNSRExFOUJRVThzUzBGQlN5eEZRVUZGTEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGRmRFTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1NVRkJTU3hEUVVGRE8wRkJRM0JDTEU5QlFVOHNTMEZCU3l4SlFVRkpMRTFCUVUwc1RVRkJUU3hEUVVGRE8wRkJSVGRDTEU5QlFVOHNSVUZCUXl4TlFVRk5MRVZCUVVNc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVTjJSU3hQUVVGUExFVkJRVU1zV1VGQldTeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRExFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkRMMFlzVDBGQlR5eEZRVUZETEZWQlFWVXNSVUZCUlN4clFrRkJhMElzUlVGQlF5eE5RVUZOTEdWQlFXVXNRMEZCUXp0QlFVTTNSQ3hQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRhRVVzVDBGQlR5eEZRVUZ2UWl4clFrRkJhMElzUlVGQlF5eE5RVUZOTEZsQlFWa3NRMEZCUXp0QlFXOUNha1VzYVVKQlFXbENMRU5CUVVNc1UwRkJVeXhEUVVGRExHbENRVUZwUWl4SFFVRkhMRlZCUVZNc1MwRkJhVUk3U1VGRGVFVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1NVRkRNVU1zVDBGQlR5eEpRVUZKTEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpORkxFTkJRVU1zUTBGQlF6dEJRVVZHTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUjBGQlJ5eFZRVUZUTEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUTNoRUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRhRVlzUTBGQlF5eERRVUZETzBGQlJVWXNUVUZCVFN4UFFVRlBMRzFDUVVGdFFqdEpRVk01UWp0UlFVTkZMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyWXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVNc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeFBRVUZQTEZsQlFWazdTVUZMZGtJN08wOUJSVWM3U1VGRFNDeFpRVUZaTEVsQlFWazdVVUZEZEVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEYWtJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEWml4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU53UWl4RFFVRkRPME5CUTBZN1FVRkZSQ3hOUVVGTkxFOUJRVThzVDBGQlVTeFRRVUZSTEVWQlFVVXNRMEZCUXl4UlFVRlJPMGxCZFVSMFF6dFJRVU5GTEV0QlFVc3NSVUZCUlN4RFFVRkRPMUZCY0VSR0xHRkJRVkVzUjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhuUWtGQlZ5eEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVVnlReXcwUmtGQk5FWTdVVUZEYkVZc1QwRkJSU3hIUVVGelFpeEpRVUZKTEVOQlFVTTdVVUZSTDBJc1pVRkJWU3hIUVVGWExFVkJRVVVzUTBGQlF6dFJRVVY0UWl4WFFVRk5MRWRCUVRaQ0xFbEJRVWtzUTBGQlF6dFJRVU40UXl4aFFVRlJMRWRCUVhkQ0xFbEJRVWtzUTBGQlF6dFJRVU0zUXl4dFEwRkJiVU03VVVGRE0wSXNZMEZCVXl4SFFVRnRRaXhGUVVGRkxFTkJRVU03VVVGRkwwSXNaVUZCVlN4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeGhRVUZSTEVkQlFWY3NRMEZCUXl4RFFVRkRPMUZCYTBKeVFpeHJRa0ZCWVN4SFFVRmhMRVZCUVVVc1EwRkJRenRSUVVVM1FpeHJRa0ZCWVN4SFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVE5DTEdkQ1FVRlhMRWRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGUGVrSXNZVUZCVVN4SFFVRnRRaXhGUVVGRkxFTkJRVU03VVVGTGNFTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlEzQkRMRTlCUVU4c1EwRkJReXhYUVVGWExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJYcENMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlJURkNMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzUlVGQlJTeEZRVUZGTEVOQlFVRTdPRVJCUTI1Q0xFTkJRVU1zUTBGQlF6dFJRVU40UkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRVZCUVVVc1EwRkJRVHRuUlVGRFlTeERRVUZETEVOQlFVTTdVVUZETVVRc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hIUVVGSExFTkJRVUU3WjBWQlExa3NRMEZCUXl4RFFVRkRPMUZCUlRGRUxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzWkZMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHOUNRVUZ2UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV3hGTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRzFDUVVGdFFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJoRkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVVMVJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRkRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEcxQ1FVRnRRaXhGUVVGRkxGRkJRVkVzUlVGRGFFVXNSVUZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4eFFrRkJjVUlzUlVGQlJTeFJRVUZSTEVWQlEzQkZMRVZCUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU03VVVGRE1VTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE1VUXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRia1VzUTBGQlF6dEpRWEpEUkN3d1JFRkJNRVE3U1VGRE1VUXNTVUZCV1N4TlFVRk5PMUZCUTJoQ0xFOUJRVThzU1VGQlNTeERRVUZETEdGQlFXRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRhRWNzUTBGQlF6dEpRVzlEWVN4SlFVRkpPenRaUVVOb1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1owSkJRM0JDTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1owTkJRV2RETEVOQlFVTXNRMEZCUXp0blFrRkRhRVFzVDBGQlR6dGhRVU5TTzFsQlJVUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXh4UTBGQmNVTXNRMEZCUXp0WlFVVnlSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03V1VGRGNFTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eEhRVUZITEUxQlFVMHNRMEZCUXp0WlFVVndReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVNeFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlJXcERMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZhRVFzTmtOQlFUWkRPMWxCUXpkRExIbERRVUY1UXp0WlFVTjZReXd3UTBGQk1FTTdXVUZGTVVNc1RVRkJUU3hWUVVGVkxFZEJRVWNzUTBGQlF5eERRVUZYTEVWQlFYVkVMRVZCUVVVN1owSkJRM1JHTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03WjBKQlEyNUVMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJSWFJETEVsQlFVa3NVVUZCVVN4TFFVRkxMRXRCUVVzc1EwRkJRenR2UWtGRGNrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUlRWQ0xFMUJRVTBzVDBGQlR5eEhRVUYxUWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTTdjVUpCUXpORUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6TkVMRWxCUVVrc1QwRkJUeXhMUVVGTExGTkJRVk03YjBKQlEzWkNMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVVMVFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRha1FzUTBGQlF5eERRVUZETzFsQlIwWXNjVWRCUVhGSE8xbEJRM0pITEU5QlFVODdXVUZGVUN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRmhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJZU3hGUVVGRkxFVkJRVVU3WjBKQlEyeEhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRUdHZRa0ZEWkN4UFFVRlBPMmRDUVVWVUxFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFXVXNRMEZCUXp0blFrRkROMElzVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVWNFJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SlFVRkpMRTlCUVU4c1JVRkJSVHR2UWtGRE4wUXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRk8zZENRVU12UXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenQzUWtGRGJrTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dDNRa0ZEZWtVc1QwRkJUeXhKUVVGSkxFdEJRVXNzVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0dlFrRkROMFFzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN2FVSkJRemxDTzNGQ1FVRk5PMjlDUVVOTUxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMjVDTzFsQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWS0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRV0VzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZoTEVWQlFVVXNSVUZCUlR0blFrRkRiRWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETzI5Q1FVTXZRaXhQUVVGUE8yZENRVVZVTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVdVc1EwRkJRenRuUWtGRE4wSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVVY0UlN4MVJFRkJkVVE3WjBKQlEzWkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzVDBGQlR5eEZRVUZGTzI5Q1FVTTNSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJUdDNRa0ZEY2tNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03ZDBKQlEyNURMRTFCUVUwc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTTdkMEpCUTNwRkxFOUJRVThzU1VGQlNTeExRVUZMTEU5QlFVOHNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN2IwSkJRemRFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOS08xbEJRMGdzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVktMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVVUzUml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzTWtOQlFUSkRPMWxCUlRORExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRjRUlzUTBGQlF6dExRVUZCTzBsQlJVOHNhVUpCUVdsQ0xFTkJRVU1zU1VGQlV6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXeENMR2xFUVVGcFJEdFJRVU5xUkN4eFJrRkJjVVk3VVVGRGNrWXNhVVpCUVdsR08wbEJRMjVHTEVOQlFVTTdTVUZGUkR0UFFVTkhPMGxCUTBzc1dVRkJXVHRSUVVOc1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1dVRkRiRUlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRNMFlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1JVRkJSVHRuUWtGRGRrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRuUWtGRGNFUXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03WVVGRGFrVTdXVUZEUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlEyWXNUVUZCVFN4TFFVRkxMRWRCUVZjc1NVRkJTU3hEUVVGRExFMUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtRc1RVRkJUU3hUUVVGVExFZEJRVmNzU1VGQlNTeERRVUZETEUxQlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03WjBKQlF6TkVMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03WjBKQlJYUkVMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGNrSXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlEzaENMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNoQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM1JDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRE8yRkJRMmhDTzFOQlEwWTdVVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVVlBMR1ZCUVdVN1VVRkRja0lzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5PMWxCUTJRc1QwRkJUenRSUVVWVUxFbEJRVWtzVlVGQk9FSXNRMEZCUXp0UlFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVWQlFVVTdXVUZEZUVJc1RVRkJUU3hQUVVGUExFZEJRV1VzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNRMEZCUXp0WlFVTjJSU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkROMElzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12Ump0aFFVRk5PMWxCUTB3c1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRPMU5CUTNKRE8xRkJRMFFzVFVGQlRTeFRRVUZUTEVkQlFVY3NWVUZCVlN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVU5zUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVWNlJDd3dSRUZCTUVRN1VVRkRNVVFzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJRenRSUVVNM1JDeHJSRUZCYTBRN1VVRkRiRVFzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42Uml4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJUVkVMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFbEJRVWtzU1VGQlNTeERRVUZETEdGQlFXRTdXVUZEYUVVc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSRUxFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGVrUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVsQlFVa3NTVUZCU1N4RFFVRkRMR0ZCUVdFN1dVRkROVVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTndSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pGTEVOQlFVTTdTVUZGWlN4cFFrRkJhVUlzUTBGQlF5eFJRVUZ4UWp0UlFVTnlSQ3gzUlVGQmQwVTdVVUZEZUVVc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJSV3hETEZGQlFWRXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOMlFpeExRVUZMTEhWQ1FVRjFRanRuUWtGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYkVJc1RVRkJUVHRaUVVOU0xFdEJRVXNzYjBKQlFXOUNPMmRDUVVOMlFpeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1owSkJRM0JDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRzFDUVVGdFFqdG5Ra0ZEZEVJc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzJkQ1FVTndRaXhOUVVGTk8xbEJRMUlzUzBGQlN5eHBRa0ZCYVVJN1owSkJRM0JDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRuUWtGRGNFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1pVRkJaVHRuUWtGRGJFSXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETzJkQ1FVTjZReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4WFFVRlhPMmRDUVVOa0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRmRCUVZjN1owSkJRMlFzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRGJFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1ZVRkJWVHRuUWtGRFlpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4TlFVRk5PMWxCUTFJc1MwRkJTeXh0UWtGQmJVSTdaMEpCUTNSQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMSEZDUVVGeFFqdG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NVMEZCVXp0blFrRkRXaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4cFFrRkJhVUk3WjBKQlEzQkNMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFRRVU5RTzBsQlEwZ3NRMEZCUXp0SlFVVnhRaXhsUVVGbE96czdPenRaUVVOdVF5eE5RVUZOTEZsQlFWa3NSMEZCVnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVNNVJDeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4clEwRkJhME1zV1VGQldTeFZRVUZWTEVOQlFVTXNRMEZCUXp0WlFVTnlSeXhQUVVGTkxHVkJRV1VzV1VGQlJ6dFpRVVY0UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03V1VGRmNFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzJkQ1FVTTNRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU51Uml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN2IwSkJRemRFTEVsQlFVa3NRMEZCUXl4bFFVRmxMRVZCUVVVc1EwRkJRenR2UWtGRGRrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5vUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMHc3V1VGRlJDeE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOc1FpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4NVFrRkJlVUlzUTBGQlF5eERRVUZETzFGQlEzaEZMRU5CUVVNN1MwRkJRVHRKUVVWeFFpeE5RVUZOT3pzN096dFpRVU14UWl4TlFVRk5MRmxCUVZrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdXVUZETTBRc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eG5Ra0ZCWjBJc1NVRkJTU3hEUVVGRExGRkJRVkVzYTBOQlFXdERMRmxCUVZrc1ZVRkJWU3hEUVVGRExFTkJRVU03V1VGRGNrY3NUMEZCVFN4TlFVRk5MRmxCUVVjN1dVRkZaaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRiRVFzU1VGQlNTeERRVUZETEVsQlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVOd1FpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVONFFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVONlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVWMFFpeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRXRCUVVzc1EwRkJRenRaUVVONlFpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4NVFrRkJlVUlzUTBGQlF5eERRVUZETzFGQlEzaEZMRU5CUVVNN1MwRkJRVHRKUVVWVExHRkJRV0VzUTBGQlF5eGhRVUZoTEVkQlFVY3NSMEZCUnp0UlFVTjZReXhKUVVGSkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJN1dVRkROVUlzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVVUzUkN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOYUxFTkJRVU03U1VGRlV5eFZRVUZWTzFGQlEyeENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVenRaUVVNdlJDeFBRVUZQTzFGQlJWUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xRkJSV2hDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFdEJRVXNzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUXpkRExFMUJRVTBzVDBGQlR5eEhRVUZYTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTjBSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFOQlEyeEVPMUZCUlVRc2FVWkJRV2xHTzFGQlEycEdMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEVOQlFVTTdVVUZETTBRc01rZEJRVEpITzFGQlF6TkhMR2RFUVVGblJEdFJRVVZvUkN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGYkVJc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVWQlFVVTdXVUZEZGtJc1NVRkJTU3hEUVVGRExFZEJRVzFDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVTNReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTk9MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdaMEpCUTNwQ0xFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0aFFVTnFRanRaUVVWRUxFMUJRVTBzU1VGQlNTeEhRVUZoTEVsQlFVa3NRMEZCUXl4UlFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrTXNTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3WjBKQlF6ZERMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU42UXl4TlFVRk5MRU5CUVVNc1IwRkJWeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU03WjBKQlEzcEVMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTTdiMEpCUTJoQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdaMEpCUTNoRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRoUVVOdVFqdFRRVU5HTzFGQlJVUXNORUpCUVRSQ08xRkJRelZDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEhsRFFVRjVRenRaUVVWNlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYkVNc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWs3WjBKQlEzWkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dFRRVU4yUlR0UlFVTkVMRmxCUVZrN1VVRkZXaXhOUVVGTkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03VVVGRGJFTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRE0wUXNiVVpCUVcxR08xRkJSVzVHTERCQ1FVRXdRanRSUVVNeFFpeExRVUZMTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSVHRaUVVNM1F5eE5RVUZOTEVsQlFVa3NSMEZCZVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkROMFVzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTTdXVUZGTDBNc1NVRkJTU3hEUVVGRExFZEJRVmNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVVm9ReXhOUVVGTkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGFrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSE8yOUNRVU01UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dHhRa0ZETlVJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVReXhQUVVGUExFTkJRVU1zUTBGQlF6dHhRa0ZEVGl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTlFMRzlDUVVGdlFqdHZRa0ZEZGtJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1MwRkJTeXhOUVVGTkxFdEJRVXNzU1VGQlNTeFBRVUZQTEVWQlFVVTdaMEpCUXpOQ0xFMUJRVTBzVFVGQlRTeEhRVUYzUWl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6ZERMRGhDUVVFNFFqdG5Ra0ZET1VJc1RVRkJUU3hEUVVGRExFZEJRVmNzVTBGQlV5eEhRVUZITEUxQlFVMHNRMEZCUXl4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8yZENRVVYwUkN4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtZc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dGhRVU5TTzFOQlEwWTdVVUZEUkN4WlFVRlpPMGxCUTJRc1EwRkJRenRKUVVWRUxESkRRVUV5UXp0SlFVTXpReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdPMUZCUTJ4Q0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlR0WlFVTm9RaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU16UWl4SlFVRkpMRU5CUVVNc1QwRkJVU3hEUVVGRExGTkJRVk1zUjBGQlJ5eHhRMEZCY1VNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0blFrRkRlRVlzU1VGQlNTeERRVUZETEU5QlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dGhRVU5zUXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNUMEZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzJGQlEzUkRPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRE4wUXNUMEZCVHp0UlFVVlVMRTFCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM1pETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUenRSUVVWbUxFbEJRVWtzVFVGQlRUdFpRVU5TTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVWd1FpeERRVUZETEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1VVRkRia0lzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVRc1EwRkJReXhEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUlc1RExEQkRRVUV3UXp0UlFVTXhReXhKUVVGSkxFbEJRVWtzUTBGQlF5eGhRVUZoTEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUzBGQlN5eERRVUZETEVOQlFVTTdXVUZEZEVRc1QwRkJUenRSUVVWVUxEUkNRVUUwUWp0UlFVTTFRaXhEUVVGRExFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdVVUZEYmtJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFBRVUZQTEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEZGtJc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eDFRMEZCZFVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRhRWNzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzWlVGQlpTeERRVUZETzFGQlJUZEhMRXRCUVVzc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTzFsQlF6ZERMRTFCUVUwc1IwRkJSeXhIUVVGcFFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJReTlETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRaUVVOdVFpeERRVUZETEVOQlFVTXNXVUZCV1N4RFFVTmFMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZEWml4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU16UkN4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRelZDTzFGQlEwUXNLMEpCUVN0Q08xRkJSUzlDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEV0QlFVc3NUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1owSkJRM3BGTEVsQlFVa3NUMEZCVHl4TFFVRkxMRWRCUVVjc1JVRkJSVHR2UWtGRGJrSXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dHZRa0ZGZUVJc1RVRkJUU3hUUVVGVExFZEJRVWNzZFVOQlFYVkRMRU5CUVVNN2IwSkJRekZFTERCRVFVRXdSRHR2UWtGRE1VUXNUVUZCVFN4eFFrRkJjVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTTdiMEpCUTI1RExFMUJRVTBzY1VKQlFYRkNMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVVZ1UXl4RFFVRkRMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU03YjBKQlEyNUNMRU5CUVVNc1EwRkJReXhYUVVGWExFZEJRVWNzVjBGQlZ5eERRVUZETzI5Q1FVTTFRaXhEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRhRUlzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdiMEpCUTNwRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NUVUZCUVN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNiVU5CUVVrc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN2IwSkJRek5FTEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1RVRkJUU3hEUVVGRE8yOUNRVU55UWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExGTkJRVk1zUTBGQlF6dHZRa0ZEYmtJc0swTkJRU3RETzI5Q1FVTXZReXhOUVVGTkxFZEJRVWNzUjBGQlowSXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dHZRa0ZGYUVRc2RVTkJRWFZETzI5Q1FVTjJReXg1UmtGQmVVWTdiMEpCUlhwR0xFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlExb3NRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eHhRa0ZCY1VJc1JVRkRNMFFzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03YjBKQlEycENMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdhVUpCUTJoRU8yRkJRMFk3VTBGRFJqdEpRVU5JTEVOQlFVTTdTVUZGVHl4UlFVRlJPMUZCUTJRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTVHRaUVVNMVFpeFBRVUZQTzFGQlJWUXNTVUZCU1N4TFFVRkxMRWRCUVZjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRPMUZCUTNKRUxFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWGhHTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSVHRaUVVOb1FpeE5RVUZOTEUxQlFVMHNSMEZCVnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eE5RVUZOTEVOQlFVTTdXVUZEZGtRc1RVRkJUU3hOUVVGTkxFZEJRVmNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1MwRkJTeXhEUVVGRE8xbEJRM0pFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY0VRc1MwRkJTeXhIUVVGSExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEZEVJc1RVRkJUU3hIUVVGSExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEZUVJc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRXRCUVVzc1EwRkJRenRUUVVOc1JEdFJRVVZFTEUxQlFVMHNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0UlFVTnNReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEV0QlFVc3NTVUZCU1N4RFFVRkRPMUZCUlhaRExHOUdRVUZ2Ump0UlFVTndSaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnlSQ3hOUVVGTkxGbEJRVmtzUjBGQlZ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVOd1JDeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzUkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1IwRkJSeXhaUVVGWkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJUZEVMRFpDUVVFMlFqdFJRVU0zUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3V1VGRGFrSXNjME5CUVhORE8xbEJRM1JETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzUjBGQlJ5eExRVUZMTEVsQlFVa3NRMEZCUXp0WlFVTTNSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF6dFpRVU4yUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNWVUZCVlN4RlFVRkZMRkZCUVZFc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dFRRVU5vUlR0aFFVRk5PMWxCUTB3c09FSkJRVGhDTzFsQlF6bENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUTNaRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1IwRkJSeXhuUWtGQlowSXNRMEZCUXp0WlFVTTNReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFsQlJUbERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4WlFVRlpMRVZCUVVVc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN1dVRkZjRVVzY1VKQlFYRkNPMWxCUTNKQ0xFbEJRVWtzWVVGQllTeEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTjBRaXhSUVVGUkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSVHRuUWtGRGFFTXNTMEZCU3l4TFFVRkxPMjlDUVVOU0xHRkJRV0VzUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTJ4Q0xFMUJRVTA3WjBKQlExSXNTMEZCU3l4UlFVRlJPMjlDUVVOWUxHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTnVSU3hOUVVGTk8yZENRVU5TTEV0QlFVc3NVVUZCVVR0dlFrRkRXQ3hoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNN2IwSkJRemRFTEUxQlFVMDdZVUZEVUR0WlFVTkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4WlFVRlpMRVZCUVVVc1IwRkJSeXhoUVVGaExFbEJRVWtzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0WlFVVTNSU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRTFCUVUwc1JVRkJSVHRuUWtGRGJrTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRja1VzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExGbEJRVmtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0aFFVTnFSRHRwUWtGQlRUdG5Ra0ZEVEN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNXVUZCV1N4RlFVRkZMRkZCUVZFc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dGhRVU5zUlR0VFFVTkdPMUZCUlVRc2FVSkJRV2xDTzFGQlEycENMRFpFUVVFMlJEdFJRVU0zUkN3MlJFRkJOa1E3VVVGRE4wUXNOa1JCUVRaRU8xRkJRemRFTERaRVFVRTJSRHRSUVVNM1JDeFhRVUZYTzFGQlExZ3NNa1JCUVRKRU8xRkJRek5FTEN0RVFVRXJSRHRKUVVOcVJTeERRVUZETzBsQlJVUTdPenM3VDBGSlJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1RVRkJhVUlzUlVGQlJTeFpRVUZ2UWl4RFFVRkRPMUZCUTJ4RkxFbEJRVWtzUjBGQlJ5eEhRVUZ6UWl4SlFVRkpMRU5CUVVNN1VVRkRiRU1zVVVGQlVTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZPMWxCUTNoQ0xFdEJRVXNzVlVGQlZTeERRVUZETEhkQ1FVRjNRanRuUWtGRGRFTXNSMEZCUnl4SFFVRkhMR3RDUVVGclFpeERRVUZETEZWQlFWVXNRMEZCUXp0blFrRkRjRU1zVFVGQlRUdFpRVU5TTEV0QlFVc3NWMEZCVnl4RFFVRkRMSGRDUVVGM1FqdG5Ra0ZEZGtNc1IwRkJSeXhIUVVGSExHMUNRVUZ0UWl4RFFVRkRMRmxCUVZrc1EwRkJRenRuUWtGRGRrTXNUVUZCVFR0VFFVTlFPMUZCUTBRc1RVRkJUU3hMUVVGTExFZEJRV2RDTEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxGTkJRVk1zUlVGQlJTeFBRVUZQTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkZlRVlzVFVGQlRTeHJRa0ZCYTBJc1IwRkJaME03V1VGRGRFUXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxHMUNRVUZ0UWl4RFFVRkRMRmxCUVZrc1EwRkJRenRaUVVNelJTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTXNWVUZCVlN4RFFVRkRPMU5CUTNoRkxFTkJRVU03VVVGRFJpeG5SRUZCWjBRN1VVRkRhRVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJZU3hyUWtGQmEwSTdZVUZEZGtRc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXk5RUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVazdXVUZEWml4SFFVRkhMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzFsQlJXNUZMRWRCUVVjc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkZha01zVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTQ3hOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFXbENMRVZCUVVVc1UwRkJhVUlzUlVGQlJTeFJRVUZ6UWp0UlFVTXhSU3hOUVVGTkxFbEJRVWtzUjBGQk5FSXNSVUZCUlN4RFFVRkRPMUZCUTNwRExFbEJRVWtzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjBRaXhKUVVGSkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZGZGtJc1MwRkJTeXhOUVVGTkxFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RlFVRkZPMWxCUTI1RExFMUJRVTBzU1VGQlNTeEhRVUZITEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVVelFpeEpRVUZKTEZkQlFWY3NTVUZCU1N4SlFVRkpPMmRDUVVOeVFpeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRwUWtGRGRrSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hMUVVGTExGZEJRVmM3WjBKQlEyeERMRlZCUVZVc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRmNrSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExGTkJRVk1zUlVGQlJUdG5Ra0ZETTBJc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVWQlFVVTdiMEpCUTNCQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNN2QwSkJRMlFzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRFpDeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8ybENRVU5rTzJGQlEwWTdVMEZEUmp0UlFVTkVMRTlCUVU4c1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEZWQlFWVXNSVUZCUlN4VlFVRlZMRVZCUVVNc1EwRkJRenRKUVVNNVF5eERRVUZETzBsQlJVMHNUVUZCVFN4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVsQlFXdENMRVZCUVVVc1VVRkJjVUlzUlVGQlJTeFpRVUZ2UWl4SFFVRkhPMUZCUTNCSExFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRlRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpORkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkZka0lzVFVGQlRTeExRVUZMTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFMUJRVTBzVTBGQlV5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTXZRaXhMUVVGTExFMUJRVTBzUTBGQlF5eEpRVUZKTEVsQlFVa3NSVUZCUlR0WlFVTndRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNFTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNwRE8xRkJRMFFzTUVaQlFUQkdPMUZCUXpGR0xFMUJRVTBzUzBGQlN5eEhRVUZYTEVsQlFVa3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRM2hETEUxQlFVMHNVMEZCVXl4SFFVRlhMRWxCUVVrc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEyaEVMRTFCUVUwc1IwRkJSeXhIUVVGWExHZENRVUZuUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjZSeXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEVOQlFVTTdTVUZGUkN3clJFRkJLMFE3U1VGREwwUXNlVVpCUVhsR08wbEJRM3BHTEhGRFFVRnhRenRKUVVOeVF5eG5SVUZCWjBVN1NVRkRhRVVzVFVGQlRUdEpRVU5PTEc5RlFVRnZSVHRKUVVOd1JTeG5Sa0ZCWjBZN1NVRkRhRVlzZFVKQlFYVkNPMGxCUTNaQ0xEWkRRVUUyUXp0SlFVTTNReXdyUkVGQkswUTdTVUZETDBRc2FVVkJRV2xGTzBsQlEycEZMSEZDUVVGeFFqdEpRVU55UWl4cFFrRkJhVUk3U1VGRGFrSXNWVUZCVlR0SlFVTldMRkZCUVZFN1NVRkRVaXhOUVVGTk8wbEJRMDRzWjBKQlFXZENPMGxCUTJoQ0xFbEJRVWs3U1VGRlJ5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVdkQ096dFJRVU14UXl4TlFVRk5MR05CUVdNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzFGQlEzcEZMRWxCUVVrc1RVRkJUU3hIUVVGeFFpeE5RVUZCTEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJUdFpRVU42UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRGVFTXNUMEZCVHl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTnlSQ3hEUVVGRExFTkJRVU1zYlVOQlFVa3NTVUZCU1N4RFFVRkRPMUZCUTFnc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeGpRVUZqTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNN1dVRkRkRU1zVFVGQlRTeEhRVUZITEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1FpeFBRVUZQTEUxQlFVMHNRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJTVVE3T3p0UFFVZEhPMGxCUTBrc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZSTzFGQlEzQkRMRTFCUVUwc1IwRkJSeXhIUVVGaExFVkJRVVVzUTBGQmJVSXNSMEZCUnl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1lVRkRia1lzUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCYjBJc1JVRkJSU3hGUVVGRk8xbEJRelZDTEVsQlFVa3NTVUZCV1N4RFFVRkRPMWxCUTJwQ0xFMUJRVTBzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU5vUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlZTeEZRVUZGTzI5Q1FVTXpRaXhKUVVGSkxFZEJRVWNzVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRE9VSTdjVUpCUVUwN2IwSkJRMHdzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXp0dlFrRkRWaXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExEUkNRVUUwUWl4RFFVRkRMRU5CUVVNN2FVSkJReTlFTzJGQlEwWTdhVUpCUVUwN1owSkJRMHdzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTldPMWxCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU03VVVGRFpDeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRSUVVWbUxFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNRMEZCUXp0SlFVVkVPenM3VDBGSFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFRRVUZwUWp0UlFVTjBSQ3hQUVVGUExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVWQlFVVTdXVUZEY2tJc1QwRkJUeXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFTkJRVU1zUTBGQlF6dEpRVU5LTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwa3NUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGaExFVkJRVVVzVTBGQmFVSTdVVUZEZUVRc1NVRkJTU3hMUVVGTExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTlCUVU4c1EwRkJRenRaUVVONlF5eFBRVUZQTEU5QlFVOHNRMEZCUXl4bFFVRmxMRU5CUVVNN1lVRkROVUlzU1VGQlNTeExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU5zUkN4UFFVRlBMRTlCUVU4c1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRSUVVOeVJEczdPMWxCUjBrN08xbEJSVVlzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4dlFrRkJiMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVnFSQ3d3UWtGQk1FSTdTVUZETlVJc1EwRkJRenRKUVVWTkxFMUJRVTBzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhIUVVGak8xRkJReTlETEVsQlFVa3NSMEZCUnl4RFFVRkRMRTlCUVU4c1MwRkJTeXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRTdXVUZETVVNc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5dzJRa0ZCTmtJc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUld4R0xFMUJRVTBzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTjRReXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8xRkJRekZETEU5QlFVOHNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGTExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdTVUZETDBNc1EwRkJRenM3UVVGMmRFSmhMRzFDUVVGWExFZEJRVWNzWVVGQllTeERRVUZETzBGQlF6TkNMRzFDUVVGWExFZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZ6Y0VKNlFpeHBRa0ZCVXl4SFFVRkhMSEZDUVVGeFFpeERRVUZETzBGQmEwVnFSQ3c0UmtGQk9FWTdRVUZETDBVc2EwSkJRVlVzUjBGQkswSTdTVUZEZEVRc1UwRkJVeXhGUVVGRkxFZEJRVWM3U1VGRFpDeFBRVUZQTEVWQlFVVXNSMEZCUnp0SlFVTmFMRTlCUVU4c1JVRkJSU3hIUVVGSE8wbEJRMW9zVDBGQlR5eEZRVUZGTEVkQlFVYzdRMEZEWWl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibHh1YVcxd2IzSjBJSGQxSUdaeWIyMGdKM2QxSnp0Y2JtbHRjRzl5ZENBcUlHRnpJSEo0YW5NZ1puSnZiU0FuY25ocWN5YzdYRzVjYm1sdGNHOXlkQ0I3Vm1WamRHOXlmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTNabFkzUnZja3hsYm1kMGFDd2dkbVZqZEc5eVJHOTBVSEp2WkhWamRIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRCYldsdWIyRmphV1J6TENCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhOOUlHWnliMjBnSnk0dUwyRnRhVzV2WVdOcFpITW5PMXh1YVcxd2IzSjBJSHRPZFdOc1pXOTBhV1JsY3l3Z1RuVmpiR1Z2ZEdsa1pYTlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZiblZqYkdWdmRHbGtaWE1uTzF4dWFXMXdiM0owSUh0VmJtdHViM2R1VTJWeFVHRnNaWFIwWlN3Z1ZXNXJibTkzYmxObGNWQmhiR1YwZEdWemZTQm1jbTl0SUNjdUxpOTFibXR1YjNkdUp6dGNibWx0Y0c5eWRDQjdVMlZ4VUdGc1pYUjBaWDBnWm5KdmJTQW5MaTR2YzJWeExYQmhiR1YwZEdWekp6dGNibWx0Y0c5eWRDQjdVM1ZpYzJOeWFYQjBhVzl1ZlNCbWNtOXRJQ2R5ZUdwekp6dGNibHh1WkdWamJHRnlaU0J0YjJSMWJHVWdKMlJoZEdGbmNtOXJMV0Z3YVM5emNtTXZaM0pwWkNjZ2UxeHVJQ0JwYm5SbGNtWmhZMlVnVW1WamRDQjdYRzRnSUNBZ1kyOXVkR0ZwYm5Nb2VEb2diblZ0WW1WeUxDQjVPaUJ1ZFcxaVpYSXBPaUJpYjI5c1pXRnVPMXh1SUNCOVhHNTlYRzVjYm1SbFkyeGhjbVVnWjJ4dlltRnNJSHRjYmlBZ2FXNTBaWEptWVdObElFaFVUVXhEWVc1MllYTkZiR1Z0Wlc1MElIdGNiaUFnSUNCblpYUkRkWEp6YjNKUWIzTnBkR2x2YmlobGRtVnVkRG9nVFc5MWMyVkZkbVZ1ZENrNklFUkhMbEJ2YVc1ME8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQjBlWEJsSUUxdmJtOXRaWEpHY21WeGN5QTlJSHNnVzIwNklITjBjbWx1WjEwNklHNTFiV0psY2lCOU8xeHVaWGh3YjNKMElIUjVjR1VnVTJWeFEyOXNVM1JoZEhNZ1BTQjdJR1p5WlhFNklFMXZibTl0WlhKR2NtVnhjeXdnYzJGdFpVeGxibWQwYURvZ1ltOXZiR1ZoYmlCOVhHNWxlSEJ2Y25RZ2RIbHdaU0JUY0d4cGRIUmxja1oxYm1NZ1BTQW9jMlZ4T2lCemRISnBibWNwSUQwK0lITjBjbWx1WjF0ZE8xeHVYRzVJVkUxTVEyRnVkbUZ6Uld4bGJXVnVkQzV3Y205MGIzUjVjR1V1WjJWMFEzVnljMjl5VUc5emFYUnBiMjRnUFNCbWRXNWpkR2x2YmlobGRtVnVkRG9nVFc5MWMyVkZkbVZ1ZENrNklFUkhMbEJ2YVc1MElIdGNiaUFnWTI5dWMzUWdjbVZqZENBOUlIUm9hWE11WjJWMFFtOTFibVJwYm1kRGJHbGxiblJTWldOMEtDazdYRzRnSUhKbGRIVnliaUJ1WlhjZ1JFY3VVRzlwYm5Rb1pYWmxiblF1WTJ4cFpXNTBXQ0F0SUhKbFkzUXViR1ZtZEN3Z1pYWmxiblF1WTJ4cFpXNTBXU0F0SUhKbFkzUXVkRzl3S1R0Y2JuMDdYRzVjYmtSSExsSmxZM1F1Y0hKdmRHOTBlWEJsTG1OdmJuUmhhVzV6SUQwZ1puVnVZM1JwYjI0b2VEb2diblZ0WW1WeUxDQjVPaUJ1ZFcxaVpYSXBPaUJpYjI5c1pXRnVJSHRjYmlBZ2NtVjBkWEp1SUhSb2FYTXViR1ZtZENBOFBTQjRJQ1ltSUhnZ1BEMGdkR2hwY3k1eWFXZG9kQ0FtSmlCMGFHbHpMblJ2Y0NBOFBTQjVJQ1ltSUhrZ1BEMGdkR2hwY3k1aWIzUjBiMjA3WEc1OU8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1VHOXphWFJwYjI1TmIyNXZiV1Z5U1c1bWJ5QjdYRzRnSUM4cUtpQlRaWEYxWlc1alpYTWdZMjkxYm5RZ2QybDBhQ0J0YjI1dmJXVnlJR2x1SUhCdmMybDBhVzl1WEc0Z0lDQXFMMXh1SUNCamIzVnVkRG9nYm5WdFltVnlPMXh1WEc0Z0lDOHFLaUJTWlcxbGJXSmxjaUJ6WTNKbFpXNGdZMjl2Y21SeklISmxZM1JjYmlBZ0lDb3ZYRzRnSUdKdmRXNWtjem9nUkVjdVVtVmpkRHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWdwSUh0Y2JpQWdJQ0IwYUdsekxtTnZkVzUwSUQwZ01EdGNiaUFnSUNCMGFHbHpMbUp2ZFc1a2N5QTlJRzVsZHlCRVJ5NVNaV04wS0RBc0lEQXNJREFzSURBcE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCUWIzTnBkR2x2YmtsdVptOGdlMXh1SUNCd2RXSnNhV01nY21WaFpHOXViSGtnYm1GdFpUb2djM1J5YVc1bk8xeHVJQ0JtY21WeE9pQjdJRnR0T2lCemRISnBibWRkT2lCUWIzTnBkR2x2YmsxdmJtOXRaWEpKYm1adklIMDdYRzRnSUhKdmQwTnZkVzUwT2lCdWRXMWlaWEk3WEc1Y2JpQWdMeW9xSUdaeVpYRWdQU0I3ZlN3Z2NtOTNRMjkxYm5RZ1BTQXdYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxJRTVoYldVZ2IyWWdjRzl6YVhScGIyNGdLQ2N4TVRGQkp5d2dKekV4TVM0eEp5d2daWFJqS1Z4dUlDQWdLaTljYmlBZ1kyOXVjM1J5ZFdOMGIzSW9ibUZ0WlRvZ2MzUnlhVzVuS1NCN1hHNGdJQ0FnZEdocGN5NXVZVzFsSUQwZ2JtRnRaVHRjYmlBZ0lDQjBhR2x6TG1aeVpYRWdQU0I3ZlR0Y2JpQWdJQ0IwYUdsekxuSnZkME52ZFc1MElEMGdNRHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWMlZpVEc5bmJ5QmxlSFJsYm1SeklFUkhMa3B6Vm1sbGQyVnlJSHRjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJ5WlhOcFpIVmxjMU5sZENBOUlDZHVkV05zWlc5MGFXUmxjeWM3WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUhacFpYZGxja052ZFc1ME9pQnVkVzFpWlhJZ1BTQXRNVHRjYmx4dUlDQndjbWwyWVhSbElIWnBaWGRsY2tsa09pQnVkVzFpWlhJZ1BTQXRNVHRjYmlBZ2NISnBkbUYwWlNCcGJtbDBhV0ZzYVhwbFpEb2dZbTl2YkdWaGJpQTlJR1poYkhObE8xeHVYRzRnSUM4dklIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ1kyOXNiM0pUWTJobGJXVTZJRU52Ykc5eVUyTm9aVzFsSUQwZ1EyOXNiM0pUWTJobGJXVnpXMDUxWTJ4bGIzUnBaR1Z6VjJWaVRHOW5ieTV5WlhOcFpIVmxjMU5sZEYwN1hHNGdJSEJ5YjNSbFkzUmxaQ0JqY0RvZ1UyVnhVR0ZzWlhSMFpTQjhJRzUxYkd3Z1BTQnVkV3hzTzF4dVhHNGdJSEJ5YVhaaGRHVWdhRzl6ZEQ4NklFaFVUVXhFYVhaRmJHVnRaVzUwTzF4dUlDQndjbWwyWVhSbElHMXpaMGh2YzNRL09pQklWRTFNUld4bGJXVnVkRHRjYmlBZ2NISnBkbUYwWlNCallXNTJZWE0vT2lCSVZFMU1RMkZ1ZG1GelJXeGxiV1Z1ZER0Y2JpQWdjSEpwZG1GMFpTQnpiR2xrWlhJL09pQkVSeTVTWVc1blpWTnNhV1JsY2p0Y2JpQWdjSEpwZG1GMFpTQjBaWGgwUW1GelpXeHBibVU2SUVOaGJuWmhjMVJsZUhSQ1lYTmxiR2x1WlR0Y2JseHVJQ0J3Y21sMllYUmxJR0Y0YVhOSVpXbG5hSFE2SUc1MWJXSmxjaUE5SURFeU8xeHVYRzRnSUhCeWFYWmhkR1VnYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzQ4YzNSeWFXNW5QaUI4SUc1MWJHd2dQU0J1ZFd4c08xeHVJQ0J3Y21sMllYUmxJSE53YkdsMGRHVnlPaUJUY0d4cGRIUmxja1oxYm1NZ2ZDQnVkV3hzSUQwZ2JuVnNiRHRjYmlBZ0x5OGdjSEpwZG1GMFpTQnRZWGhNWlc1bmRHZzZJRzUxYldKbGNpQTlJREV3TUR0Y2JpQWdjSEpwZG1GMFpTQndiM05wZEdsdmJuTTZJRkJ2YzJsMGFXOXVTVzVtYjF0ZElEMGdXMTA3WEc1Y2JpQWdjSEpwZG1GMFpTQnliM2R6VFdGemEyVmtPaUJ1ZFcxaVpYSWdQU0F3TzF4dUlDQndjbWwyWVhSbElISnZkM05PZFd4c09pQnVkVzFpWlhJZ1BTQXdPMXh1WEc0Z0lDOHZJRlpwWlhkbGNpZHpJSEJ5YjNCbGNuUnBaWE1nS0d4cGEyVnNlU0IwYUdWNUlITm9iM1ZzWkNCaVpTQndkV0pzYVdNZ2MyOGdkR2hoZENCMGFHVjVJR05oYmlCaVpTQnpaWFFnYjNWMGMybGtaU2xjYmlBZ2NISnBkbUYwWlNCZmNHOXphWFJwYjI1WGFXUjBhRG9nYm5WdFltVnlPMXh1SUNCd2RXSnNhV01nY0c5emFYUnBiMjVYYVdSMGFEb2diblZ0WW1WeU8xeHVJQ0J3ZFdKc2FXTWdiV2x1U0dWcFoyaDBPaUJ1ZFcxaVpYSTdYRzRnSUhCMVlteHBZeUJ0WVhoSVpXbG5hSFE2SUc1MWJXSmxjanRjYmlBZ2NIVmliR2xqSUdOdmJuTnBaR1Z5VG5Wc2JGTmxjWFZsYm1ObGN6b2dZbTl2YkdWaGJqdGNiaUFnY0hWaWJHbGpJSE5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaVG9nYzNSeWFXNW5JSHdnYm5Wc2JEdGNiaUFnY0hWaWJHbGpJSE4wWVhKMFVHOXphWFJwYjI1T1lXMWxPaUJ6ZEhKcGJtY2dmQ0J1ZFd4c08xeHVJQ0J3ZFdKc2FXTWdaVzVrVUc5emFYUnBiMjVPWVcxbE9pQnpkSEpwYm1jZ2ZDQnVkV3hzTzF4dUlDQndkV0pzYVdNZ1ptbDRWMmxrZEdnNklHSnZiMnhsWVc0N1hHNGdJSEIxWW14cFl5QjJaWEowYVdOaGJFRnNhV2R1YldWdWREb2djM1J5YVc1bklId2diblZzYkR0Y2JpQWdjSFZpYkdsaklHaHZjbWw2YjI1MFlXeEJiR2xuYm0xbGJuUTZJSE4wY21sdVp5QjhJRzUxYkd3N1hHNGdJSEIxWW14cFl5Qm1hWFJCY21WaE9pQmliMjlzWldGdU8xeHVJQ0J3ZFdKc2FXTWdjMmh5YVc1clJXMXdkSGxVWVdsc09pQmliMjlzWldGdU8xeHVJQ0J3ZFdKc2FXTWdjMnRwY0VWdGNIUjVVRzl6YVhScGIyNXpPaUJpYjI5c1pXRnVPMXh1WEc0Z0lIQnlhWFpoZEdVZ2NHOXphWFJwYjI1T1lXMWxjem9nYzNSeWFXNW5XMTBnUFNCYlhUdGNibHh1SUNCd2NtbDJZWFJsSUhOMFlYSjBVRzl6YVhScGIyNDZJRzUxYldKbGNpQTlJQzB4TzF4dVhHNGdJSEJ5YVhaaGRHVWdaVzVrVUc5emFYUnBiMjQ2SUc1MWJXSmxjaUE5SUMweE8xeHVYRzRnSUM4cUtpQkdiM0lnYzNSaGNuUlFiM05wZEdsdmJpQmxjWFZoYkhNZ2RHOGdaVzVrVUc5emFYUnBiMjRnVEdWdVozUm9JR2x6SURFZ0tpOWNiaUFnY0hKcGRtRjBaU0JuWlhRZ1RHVnVaM1JvS0NrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiaUE4UFNCMGFHbHpMbVZ1WkZCdmMybDBhVzl1SUQ4Z2RHaHBjeTVsYm1SUWIzTnBkR2x2YmlBdElIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJpQXJJREVnT2lBd08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQjJhV1YzVTNWaWN6b2dVM1ZpYzJOeWFYQjBhVzl1VzEwZ1BTQmJYVHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWdwSUh0Y2JpQWdJQ0J6ZFhCbGNpZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1MmFXVjNaWEpKWkNBOUlGZGxZa3h2WjI4dWRtbGxkMlZ5UTI5MWJuUTdYRzRnSUNBZ1YyVmlURzluYnk1MmFXVjNaWEpEYjNWdWRDQXJQU0F4TzF4dVhHNGdJQ0FnZEdocGN5NTBaWGgwUW1GelpXeHBibVVnUFNBbmRHOXdKenRjYmx4dUlDQWdJSFJvYVhNdVgzQnZjMmwwYVc5dVYybGtkR2dnUFNCMGFHbHpMbkJ2YzJsMGFXOXVWMmxrZEdnZ1BTQjBhR2x6TG1ac2IyRjBLQ2R3YjNOcGRHbHZibGRwWkhSb0p5d2dNVFl2S2l4Y2JpQWdJQ0FnSUh0bFpHbDBiM0k2SUNkemJHbGtaWEluTENCdGFXNDZJRFFzSUcxaGVEb2dOalFzSUhCdmMzUm1hWGc2SUNkd2VDZDlLaThwTzF4dUlDQWdJSFJvYVhNdWJXbHVTR1ZwWjJoMElEMGdkR2hwY3k1bWJHOWhkQ2duYldsdVNHVnBaMmgwSnl3Z05UQXZLaXhjYmlBZ0lDQWdJSHRsWkdsMGIzSTZJQ2R6Ykdsa1pYSW5MQ0J0YVc0NklESTFMQ0J0WVhnNklESTFNQ3dnY0c5emRHWnBlRG9nSjNCNEozMHFMeWs3WEc0Z0lDQWdkR2hwY3k1dFlYaElaV2xuYUhRZ1BTQjBhR2x6TG1ac2IyRjBLQ2R0WVhoSVpXbG5hSFFuTENBeE1EQXZLaXhjYmlBZ0lDQWdJSHRsWkdsMGIzSTZJQ2R6Ykdsa1pYSW5MQ0J0YVc0NklESTFMQ0J0WVhnNklEVXdNQ3dnY0c5emRHWnBlRG9nSjNCNEozMHFMeWs3WEc1Y2JpQWdJQ0IwYUdsekxtTnZibk5wWkdWeVRuVnNiRk5sY1hWbGJtTmxjeUE5SUhSb2FYTXVZbTl2YkNnblkyOXVjMmxrWlhKT2RXeHNVMlZ4ZFdWdVkyVnpKeXdnWm1Gc2MyVXBPMXh1SUNBZ0lIUm9hWE11YzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsSUQwZ2RHaHBjeTV6ZEhKcGJtY29KM05sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU2NzSUc1MWJHd3BPMXh1WEc0Z0lDQWdkR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlNBOUlIUm9hWE11YzNSeWFXNW5LQ2R6ZEdGeWRGQnZjMmwwYVc5dVRtRnRaU2NzSUc1MWJHd3BPMXh1SUNBZ0lIUm9hWE11Wlc1a1VHOXphWFJwYjI1T1lXMWxJRDBnZEdocGN5NXpkSEpwYm1jb0oyVnVaRkJ2YzJsMGFXOXVUbUZ0WlNjc0lHNTFiR3dwTzF4dVhHNGdJQ0FnZEdocGN5NW1hWGhYYVdSMGFDQTlJSFJvYVhNdVltOXZiQ2duWm1sNFYybGtkR2duTENCbVlXeHpaU2s3WEc1Y2JpQWdJQ0IwYUdsekxuWmxjblJwWTJGc1FXeHBaMjV0Wlc1MElEMGdkR2hwY3k1emRISnBibWNvSjNabGNuUnBZMkZzUVd4cFoyNXRaVzUwSnl3Z0oyMXBaR1JzWlNjc1hHNGdJQ0FnSUNCN1kyaHZhV05sY3pvZ1d5ZDBiM0FuTENBbmJXbGtaR3hsSnl3Z0oySnZkSFJ2YlNkZGZTazdYRzRnSUNBZ2RHaHBjeTVvYjNKcGVtOXVkR0ZzUVd4cFoyNXRaVzUwSUQwZ2RHaHBjeTV6ZEhKcGJtY29KMmh2Y21sNmIyNTBZV3hCYkdsbmJtMWxiblFuTENBblkyVnVkR1Z5Snl4Y2JpQWdJQ0FnSUh0amFHOXBZMlZ6T2lCYkoyeGxablFuTENBblkyVnVkR1Z5Snl3Z0ozSnBaMmgwSjExOUtUdGNiaUFnSUNCMGFHbHpMbVpwZEVGeVpXRWdQU0IwYUdsekxtSnZiMndvSjJacGRFRnlaV0VuTENCMGNuVmxLVHRjYmlBZ0lDQjBhR2x6TG5Ob2NtbHVhMFZ0Y0hSNVZHRnBiQ0E5SUhSb2FYTXVZbTl2YkNnbmMyaHlhVzVyUlcxd2RIbFVZV2xzSnl3Z2RISjFaU2s3WEc0Z0lDQWdkR2hwY3k1emEybHdSVzF3ZEhsUWIzTnBkR2x2Ym5NZ1BTQjBhR2x6TG1KdmIyd29KM05yYVhCRmJYQjBlVkJ2YzJsMGFXOXVjeWNzSUdaaGJITmxLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdhVzVwZENncE9pQlFjbTl0YVhObFBIWnZhV1ErSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVwYm1sMGFXRnNhWHBsWkNrZ2UxeHVJQ0FnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWduVjJWaVRHOW5ieUJ6WldOdmJtUWdhVzVwZEdsaGJHbDZZWFJwYjI0aEp5azdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXBibWwwYVdGc2FYcGxaQ0E5SUhSeWRXVTdYRzRnSUNBZ2RHaHBjeTVvWld4d1ZYSnNJRDBnSnk5b1pXeHdMM1pwYzNWaGJHbDZaUzkyYVdWM1pYSnpMM2RsWWkxc2IyZHZMbTFrSnp0Y2JseHVJQ0FnSUhSb2FYTXViWE5uU0c5emRDQTlJSFZwTG1ScGRpZ25UbThnYldWemMyRm5aU2NwTzF4dUlDQWdJSFJvYVhNdWJYTm5TRzl6ZEM1emRIbHNaUzVrYVhOd2JHRjVJRDBnSjI1dmJtVW5PMXh1WEc0Z0lDQWdkR2hwY3k1allXNTJZWE1nUFNCMWFTNWpZVzUyWVhNb0tUdGNiaUFnSUNCMGFHbHpMbU5oYm5aaGN5NXpkSGxzWlM1M2FXUjBhQ0E5SUNjeE1EQWxKenRjYmx4dUlDQWdJSFJvYVhNdWFHOXpkQ0E5SUhWcExtUnBkaWhiZEdocGN5NXRjMmRJYjNOMExDQjBhR2x6TG1OaGJuWmhjMTBwTzF4dVhHNGdJQ0FnTHk4Z2RHaHBjeTV6Ykdsa1pYSWdQU0IxYVM1eVlXNW5aVk5zYVdSbGNpZ3dMQ0F5TUN3Z01pd2dOU2s3WEc0Z0lDQWdMeThnZEdocGN5NXpiR2xrWlhJdWNtOXZkQzV6ZEhsc1pTNTNhV1IwYUNBOUlDY3hNREFsSnp0Y2JpQWdJQ0F2THlCMGFHbHpMbk5zYVdSbGNpNXliMjkwTG5OMGVXeGxMbWhsYVdkb2RDQTlJQ2N4TW5CNEp6dGNibHh1SUNBZ0lHTnZibk4wSUdkbGRFMXZibTl0WlhJZ1BTQW9jRG9nUkVjdVVHOXBiblFwT2lCYmJuVnRZbVZ5TENCemRISnBibWNnZkNCdWRXeHNMQ0JRYjNOcGRHbHZiazF2Ym05dFpYSkpibVp2SUh3Z2JuVnNiRjBnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYWxCdmN5QTlJRTFoZEdndVpteHZiM0lvY0M1NElDOGdkR2hwY3k1ZmNHOXphWFJwYjI1WGFXUjBhQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQndiM05wZEdsdmJpQTlJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTzF4dVhHNGdJQ0FnSUNCcFppQW9jRzl6YVhScGIyNGdQVDA5SUhadmFXUWdNQ2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRnRxVUc5ekxDQnVkV3hzTENCdWRXeHNYVHRjYmx4dUlDQWdJQ0FnWTI5dWMzUWdiVzl1YjIxbGNqb2djM1J5YVc1bklId2dkVzVrWldacGJtVmtJRDBnVDJKcVpXTjBMbXRsZVhNb2NHOXphWFJwYjI0dVpuSmxjU2xjYmlBZ0lDQWdJQ0FnTG1acGJtUW9LRzBwSUQwK0lIQnZjMmwwYVc5dUxtWnlaWEZiYlYwdVltOTFibVJ6TG1OdmJuUmhhVzV6S0hBdWVDd2djQzU1S1NrN1hHNGdJQ0FnSUNCcFppQW9iVzl1YjIxbGNpQTlQVDBnZFc1a1pXWnBibVZrS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVzJwUWIzTXNJRzUxYkd3c0lHNTFiR3hkTzF4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnVzJwUWIzTXNJRzF2Ym05dFpYSXNJSEJ2YzJsMGFXOXVMbVp5WlhGYmJXOXViMjFsY2wxZE8xeHVJQ0FnSUgwN1hHNWNibHh1SUNBZ0lDOHZJSFJvYVhNdWMzVmljeTV3ZFhOb0tISjRhbk11Wm5KdmJVVjJaVzUwUEUxdmRYTmxSWFpsYm5RK0tIUm9hWE11WTJGdWRtRnpMQ0FuYlc5MWMyVnZkbVZ5SnlrdWMzVmljMk55YVdKbEtDaGxPaUJOYjNWelpVVjJaVzUwS1NBOVBpQjdYRzRnSUNBZ0x5OGdmU2twTzF4dVhHNGdJQ0FnZEdocGN5NTJhV1YzVTNWaWN5NXdkWE5vS0hKNGFuTXVabkp2YlVWMlpXNTBQRTF2ZFhObFJYWmxiblErS0hSb2FYTXVZMkZ1ZG1GekxDQW5iVzkxYzJWdGIzWmxKeWt1YzNWaWMyTnlhV0psS0NobE9pQk5iM1Z6WlVWMlpXNTBLU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9JWFJvYVhNdVkyRnVkbUZ6S1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR0Z5WjNNZ1BTQmxJR0Z6SUUxdmRYTmxSWFpsYm5RN1hHNGdJQ0FnSUNCamIyNXpkQ0JiYWxCdmN5d2diVzl1YjIxbGNsMGdQU0JuWlhSTmIyNXZiV1Z5S0hSb2FYTXVZMkZ1ZG1GekxtZGxkRU4xY25OdmNsQnZjMmwwYVc5dUtHRnlaM01wS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVpHRjBZVVp5WVcxbElDWW1JSFJvYVhNdWMyVnhRMjlzSUNZbUlIUm9hWE11YzNCc2FYUjBaWElnSmlZZ2JXOXViMjFsY2lrZ2UxeHVJQ0FnSUNBZ0lDQjFhUzUwYjI5c2RHbHdMbk5vYjNkU2IzZEhjbTkxY0NoMGFHbHpMbVJoZEdGR2NtRnRaU3dnS0dsU2IzY3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCelpYRWdQU0IwYUdsekxuTmxjVU52YkNFdVoyVjBLR2xTYjNjcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElITmxjVTBnUFNCelpYRWdQeUIwYUdsekxuTndiR2wwZEdWeUlTaHpaWEVwVzNSb2FYTXVjM1JoY25SUWIzTnBkR2x2YmlBcklHcFFiM05kSURvZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYzJWeFRTQTlQVDBnYlc5dWIyMWxjaUFtSmlCMGFHbHpMbVJoZEdGR2NtRnRaUzVtYVd4MFpYSXVaMlYwS0dsU2IzY3BPMXh1SUNBZ0lDQWdJQ0I5TENCaGNtZHpMbmdnS3lBeE5pd2dZWEpuY3k1NUlDc2dNVFlwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZFdrdWRHOXZiSFJwY0M1b2FXUmxLQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2twTzF4dVhHNGdJQ0FnZEdocGN5NTJhV1YzVTNWaWN5NXdkWE5vS0hKNGFuTXVabkp2YlVWMlpXNTBQRTF2ZFhObFJYWmxiblErS0hSb2FYTXVZMkZ1ZG1GekxDQW5iVzkxYzJWa2IzZHVKeWt1YzNWaWMyTnlhV0psS0NobE9pQk5iM1Z6WlVWMlpXNTBLU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9JWFJvYVhNdVkyRnVkbUZ6SUh4OElHVXVZblYwZEc5dUlDRTlJREFwWEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmx4dUlDQWdJQ0FnWTI5dWMzUWdZWEpuY3lBOUlHVWdZWE1nVFc5MWMyVkZkbVZ1ZER0Y2JpQWdJQ0FnSUdOdmJuTjBJRnRxVUc5ekxDQnRiMjV2YldWeVhTQTlJR2RsZEUxdmJtOXRaWElvZEdocGN5NWpZVzUyWVhNdVoyVjBRM1Z5YzI5eVVHOXphWFJwYjI0b1lYSm5jeWtwTzF4dVhHNGdJQ0FnSUNBdkx5QndjbVYyWlc1MGN5QmtaWE5sYkdWamRDQmhiR3dnY205M2N5QnBaaUIzWlNCdGFYTnpJRzF2Ym05dFpYSWdZbTkxYm1SelhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1a1lYUmhSbkpoYldVZ0ppWWdkR2hwY3k1elpYRkRiMndnSmlZZ2RHaHBjeTV6Y0d4cGRIUmxjaUFtSmlCdGIyNXZiV1Z5S1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WkdGMFlVWnlZVzFsTG5ObGJHVmpkR2x2Ymk1cGJtbDBLQ2hwVW05M0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzJWeElEMGdkR2hwY3k1elpYRkRiMndoTG1kbGRDaHBVbTkzS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCelpYRk5JRDBnYzJWeElEOGdkR2hwY3k1emNHeHBkSFJsY2lFb2MyVnhLVnQwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnS3lCcVVHOXpYU0E2SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSE5sY1UwZ1BUMDlJRzF2Ym05dFpYSWdKaVlnZEdocGN5NWtZWFJoUm5KaGJXVXVabWxzZEdWeUxtZGxkQ2hwVW05M0tUdGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2twTzF4dVhHNGdJQ0FnZEdocGN5NTJhV1YzVTNWaWN5NXdkWE5vS0hWcExtOXVVMmw2WlVOb1lXNW5aV1FvZEdocGN5NXliMjkwS1M1emRXSnpZM0pwWW1Vb2RHaHBjeTV5YjI5MFQyNVRhWHBsUTJoaGJtZGxaQzVpYVc1a0tIUm9hWE1wS1NrN1hHNWNiaUFnSUNCMGFHbHpMbkp2YjNRdVlYQndaVzVrS0hSb2FYTXVhRzl6ZENrN1hHNGdJQ0FnTHk4Z2RHaHBjeTV5YjI5MExtRndjR1Z1WkVOb2FXeGtLSFJvYVhNdWMyeHBaR1Z5TG5KdmIzUXBPMXh1WEc0Z0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJSEp2YjNSUGJsTnBlbVZEYUdGdVoyVmtLR0Z5WjNNNklHRnVlU2tnZTF4dUlDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1WEc0Z0lDQWdMeThnWTI5dWMyOXNaUzVrWldKMVp5aGdWMlZpVEc5bmJ5NXZibEp2YjNSVGFYcGxRMmhoYm1kbFpDZ3BJR0FnSzF4dUlDQWdJQzh2SUNBZ1lISnZiM1F1ZDJsa2RHZzlKSHQwYUdsekxuSnZiM1F1WTJ4cFpXNTBWMmxrZEdoOUxDQnliMjkwTG1obGFXZG9kRDBrZTNSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUjlMQ0JnSUN0Y2JpQWdJQ0F2THlBZ0lHQmpZVzUyWVhNdWQybGtkR2c5Skh0MGFHbHpMbU5oYm5aaGN5NTNhV1IwYUgwc0lHTmhiblpoY3k1b1pXbG5hSFE5Skh0MGFHbHpMbU5oYm5aaGN5NW9aV2xuYUhSOUlDNWdLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkJjM05wWjI1eklIdEFiR2x1YXlCelpYRkRiMng5SUdGdVpDQjdRR3hwYm1zZ1kzQjlJR0poYzJWa0lHOXVJSHRBYkdsdWF5QnpaWEYxWlc1alpVTnZiSFZ0Yms1aGJXVjlJR0Z1WkNCallXeHNjeUI3UUd4cGJtc2djbVZ1WkdWeWZTZ3BMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0IxY0dSaGRHVlRaWEZEYjJ3b0tUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WkdGMFlVWnlZVzFsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbk5sY1VOdmJDQTlJSFJvYVhNdWMyVnhkV1Z1WTJWRGIyeDFiVzVPWVcxbElEOGdkR2hwY3k1a1lYUmhSbkpoYldVdVkyOXNLSFJvYVhNdWMyVnhkV1Z1WTJWRGIyeDFiVzVPWVcxbEtTQTZJRzUxYkd3N1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1elpYRkRiMndnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sY1VOdmJDQTlJRmRsWWt4dloyOHVjR2xqYTFWd1UyVnhRMjlzTWloMGFHbHpMbVJoZEdGR2NtRnRaU2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlZ4ZFdWdVkyVkRiMngxYlc1T1lXMWxJRDBnZEdocGN5NXpaWEZEYjJ3Z1B5QjBhR2x6TG5ObGNVTnZiQzV1WVcxbElEb2diblZzYkR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG5ObGNVTnZiQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IxYm1sMGN6b2djM1J5YVc1bklEMGdkR2hwY3k1elpYRkRiMndoTG1kbGRGUmhaeWhFUnk1VVFVZFRMbFZPU1ZSVEtUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jZ1BTQjBhR2x6TG5ObGNVTnZiQ0V1WjJWMFZHRm5LQ2R6WlhCaGNtRjBiM0luS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6Y0d4cGRIUmxjaUE5SUZkbFlreHZaMjh1WjJWMFUzQnNhWFIwWlhJb2RXNXBkSE1zSUhObGNHRnlZWFJ2Y2lrN1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1MWNHUmhkR1ZRYjNOcGRHbHZibk1vS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqY0NBOUlGZGxZa3h2WjI4dWNHbGphMVZ3VUdGc1pYUjBaU2gwYUdsekxuTmxjVU52YkNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbk53YkdsMGRHVnlJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpJRDBnVzEwN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJpQTlJQzB4TzF4dUlDQWdJQ0FnSUNCMGFHbHpMbVZ1WkZCdmMybDBhVzl1SUQwZ0xURTdYRzRnSUNBZ0lDQWdJSFJvYVhNdVkzQWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxuSmxibVJsY2lncE8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQjFjR1JoZEdWUWIzTnBkR2x2Ym5Nb0tUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG5ObGNVTnZiQ2xjYmlBZ0lDQWdJSEpsZEhWeWJqdGNibHh1SUNBZ0lHeGxkQ0JqWVhSbFoyOXlhV1Z6T2lBb2MzUnlhVzVuSUh3Z2JuVnNiQ2tnVzEwN1hHNGdJQ0FnYVdZZ0tIUm9hWE11YzJoeWFXNXJSVzF3ZEhsVVlXbHNLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnBibVJwWTJWek9pQkpiblF6TWtGeWNtRjVJRDBnZEdocGN5NWtZWFJoUm5KaGJXVXVabWxzZEdWeUxtZGxkRk5sYkdWamRHVmtTVzVrWlhobGN5Z3BPMXh1SUNBZ0lDQWdZMkYwWldkdmNtbGxjeUE5SUVGeWNtRjVMbVp5YjIwb2JtVjNJRk5sZENoY2JpQWdJQ0FnSUNBZ1FYSnlZWGt1Wm5KdmJTaEJjbkpoZVNocGJtUnBZMlZ6TG14bGJtZDBhQ2t1YTJWNWN5Z3BLUzV0WVhBb0tHazZJRzUxYldKbGNpa2dQVDRnZEdocGN5NXpaWEZEYjJ3aExtZGxkQ2hwYm1ScFkyVnpXMmxkS1NrcEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWTJGMFpXZHZjbWxsY3lBOUlIUm9hWE11YzJWeFEyOXNMbU5oZEdWbmIzSnBaWE03WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk4wSUcxaGVFeGxibWQwYUNBOUlHTmhkR1ZuYjNKcFpYTXViR1Z1WjNSb0lENGdNQ0EvSUUxaGRHZ3ViV0Y0S0M0dUxtTmhkR1ZuYjNKcFpYTXViV0Z3S0Z4dUlDQWdJQ0FnS0hNcElEMCtJSE1nSVQwOUlHNTFiR3dnUHlCMGFHbHpMbk53YkdsMGRHVnlJU2h6S1M1c1pXNW5kR2dnT2lBd0tTa2dPaUF3TzF4dVhHNGdJQ0FnTHk4Z1IyVjBJSEJ2YzJsMGFXOXVJRzVoYldWeklHWnliMjBnWkdGMFlTQmpiMngxYlc0Z2RHRm5JQ2R3YjNOcGRHbHZiazVoYldWekoxeHVJQ0FnSUdOdmJuTjBJSEJ2YzJsMGFXOXVUbUZ0WlhOVWVIUWdQU0IwYUdsekxuTmxjVU52YkM1blpYUlVZV2NvSjNCdmMybDBhVzl1VG1GdFpYTW5LVHRjYmlBZ0lDQXZMeUJHWVd4c1ltRmpheUJwWmlBbmNHOXphWFJwYjI1T1lXMWxjeWNnZEdGbklHbHpJRzV2ZENCd2NtOTJhV1JsWkZ4dUlDQWdJSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjeUE5SUhCdmMybDBhVzl1VG1GdFpYTlVlSFFnUHlCd2IzTnBkR2x2Yms1aGJXVnpWSGgwTG5Od2JHbDBLQ2NzSUNjcExtMWhjQ2dvYmlrZ1BUNGdiaTUwY21sdEtDa3BJRHBjYmlBZ0lDQWdJRnN1TGk1QmNuSmhlU2h0WVhoTVpXNW5kR2dwTG10bGVYTW9LVjB1YldGd0tDaHFVRzl6S1NBOVBpQmdKSHRxVUc5eklDc2dNWDFnS1R0Y2JseHVJQ0FnSUhSb2FYTXVjM1JoY25SUWIzTnBkR2x2YmlBOUlDaDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNU9ZVzFsSUNZbUlIUm9hWE11Y0c5emFYUnBiMjVPWVcxbGN5QW1KbHh1SUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpMbWx1WTJ4MVpHVnpLSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiazVoYldVcEtTQS9YRzRnSUNBZ0lDQjBhR2x6TG5CdmMybDBhVzl1VG1GdFpYTXVhVzVrWlhoUFppaDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNU9ZVzFsS1NBNklEQTdYRzRnSUNBZ2RHaHBjeTVsYm1SUWIzTnBkR2x2YmlBOUlDaDBhR2x6TG1WdVpGQnZjMmwwYVc5dVRtRnRaU0FtSmlCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhNZ0ppWmNiaUFnSUNBZ0lIUm9hWE11Y0c5emFYUnBiMjVPWVcxbGN5NXBibU5zZFdSbGN5aDBhR2x6TG1WdVpGQnZjMmwwYVc5dVRtRnRaU2twSUQ5Y2JpQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3k1cGJtUmxlRTltS0hSb2FYTXVaVzVrVUc5emFYUnBiMjVPWVcxbEtTQTZJQ2h0WVhoTVpXNW5kR2dnTFNBeEtUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnZkbVZ5Y21sa1pTQnZibEJ5YjNCbGNuUjVRMmhoYm1kbFpDaHdjbTl3WlhKMGVUb2dSRWN1VUhKdmNHVnlkSGtwT2lCMmIybGtJSHRjYmlBZ0lDQXZMeUJqYjI1emIyeGxMbVJsWW5WbktHQlhaV0pNYjJkdkxtOXVVSEp2Y0dWeWRIbERhR0Z1WjJWa0tDQWtlM0J5YjNCbGNuUjVMbTVoYldWOUlEMGdKeWNnZlNsZ0tUdGNiaUFnSUNCemRYQmxjaTV2YmxCeWIzQmxjblI1UTJoaGJtZGxaQ2h3Y205d1pYSjBlU2s3WEc1Y2JpQWdJQ0J6ZDJsMFkyZ2dLSEJ5YjNCbGNuUjVMbTVoYldVcElIdGNiaUFnSUNCallYTmxJQ2RqYjI1emFXUmxjazUxYkd4VFpYRjFaVzVqWlhNbk9seHVJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkelpYRjFaVzVqWlVOdmJIVnRiazVoYldVbk9seHVJQ0FnSUNBZ2RHaHBjeTUxY0dSaGRHVlRaWEZEYjJ3b0tUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0ozTjBZWEowVUc5emFYUnBiMjVPWVcxbEp6cGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxVMlZ4UTI5c0tDazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZGxibVJRYjNOcGRHbHZiazVoYldVbk9seHVJQ0FnSUNBZ2RHaHBjeTUxY0dSaGRHVlRaWEZEYjJ3b0tUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0ozQnZjMmwwYVc5dVYybGtkR2duT2x4dUlDQWdJQ0FnZEdocGN5NWZjRzl6YVhScGIyNVhhV1IwYUNBOUlIUm9hWE11Y0c5emFYUnBiMjVYYVdSMGFEdGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBbmJXbHVTR1ZwWjJoMEp6cGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBbmJXRjRTR1ZwWjJoMEp6cGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBblptbDRWMmxrZEdnbk9seHVJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkMlpYSjBhV05oYkVGc2FXZHViV1Z1ZENjNlhHNGdJQ0FnSUNCMGFHbHpMbkpsYm1SbGNpaDBjblZsS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnSjJodmNtbDZiMjUwWVd4QmJHbG5ibTFsYm5Rbk9seHVJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkbWFYUkJjbVZoSnpwY2JpQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuYzJoeWFXNXJSVzF3ZEhsVVlXbHNKenBjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsVUc5emFYUnBiMjV6S0NrN1hHNGdJQ0FnSUNCMGFHbHpMbkpsYm1SbGNpaDBjblZsS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnZkbVZ5Y21sa1pTQmhjM2x1WXlCdmJsUmhZbXhsUVhSMFlXTm9aV1FvS1NCN1hHNGdJQ0FnWTI5dWMzUWdaR0YwWVVaeVlXMWxWSGgwT2lCemRISnBibWNnUFNCMGFHbHpMbVJoZEdGR2NtRnRaU0EvSUNka1lYUmhKeUE2SUNkdWRXeHNKenRjYmlBZ0lDQmpiMjV6YjJ4bExtUmxZblZuS0dCaWFXODZJRmRsWWt4dloyODhKSHQwYUdsekxuWnBaWGRsY2tsa2ZUNHViMjVVWVdKc1pVRjBkR0ZqYUdWa0tDQmtZWFJoUm5KaGJXVWdQU0FrZTJSaGRHRkdjbUZ0WlZSNGRIMGdLU0J6ZEdGeWRHQXBPMXh1SUNBZ0lITjFjR1Z5TG05dVZHRmliR1ZCZEhSaFkyaGxaQ2dwTzF4dVhHNGdJQ0FnZEdocGN5NTFjR1JoZEdWVFpYRkRiMndvS1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG1SaGRHRkdjbUZ0WlNBaFBUMGdkbTlwWkNBd0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5OMVluTXVjSFZ6YUNoMGFHbHpMbVJoZEdGR2NtRnRaUzV6Wld4bFkzUnBiMjR1YjI1RGFHRnVaMlZrTG5OMVluTmpjbWxpWlNnb1h5a2dQVDRnZEdocGN5NXlaVzVrWlhJb0tTa3BPMXh1SUNBZ0lDQWdkR2hwY3k1emRXSnpMbkIxYzJnb2RHaHBjeTVrWVhSaFJuSmhiV1V1Wm1sc2RHVnlMbTl1UTJoaGJtZGxaQzV6ZFdKelkzSnBZbVVvS0Y4cElEMCtJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NTFjR1JoZEdWUWIzTnBkR2x2Ym5Nb0tUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1eVpXNWtaWElvS1R0Y2JpQWdJQ0FnSUgwcEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCaGQyRnBkQ0IwYUdsekxtbHVhWFFvS1R0Y2JpQWdJQ0JqYjI1emIyeGxMbVJsWW5WbktHQmlhVzg2SUZkbFlreHZaMjg4Skh0MGFHbHpMblpwWlhkbGNrbGtmVDR1YjI1VVlXSnNaVUYwZEdGamFHVmtLQ2tnWlc1a1lDazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdiM1psY25KcFpHVWdZWE41Ym1NZ1pHVjBZV05vS0NrZ2UxeHVJQ0FnSUdOdmJuTjBJR1JoZEdGR2NtRnRaVlI0ZENBOUlHQWtlM1JvYVhNdVpHRjBZVVp5WVcxbElEOGdKMlJoZEdFbklEb2dKMjUxYkd3bmZXQTdYRzRnSUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnWW1sdk9pQlhaV0pNYjJkdlBDUjdkR2hwY3k1MmFXVjNaWEpKWkgwK0xtOXVWR0ZpYkdWQmRIUmhZMmhsWkNnZ1pHRjBZVVp5WVcxbElEMGdKSHRrWVhSaFJuSmhiV1ZVZUhSOUlDa2djM1JoY25SZ0tUdGNiaUFnSUNCemRYQmxjaTVrWlhSaFkyZ29LVHRjYmx4dUlDQWdJSFJvYVhNdWRtbGxkMU4xWW5NdVptOXlSV0ZqYUNnb2MzVmlLU0E5UGlCemRXSXVkVzV6ZFdKelkzSnBZbVVvS1NrN1hHNGdJQ0FnZEdocGN5NW9iM04wSVM1eVpXMXZkbVVvS1R0Y2JpQWdJQ0IwYUdsekxtTmhiblpoY3lBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCMGFHbHpMbTF6WjBodmMzUWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdkR2hwY3k1b2IzTjBJRDBnZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnZEdocGN5NXBibWwwYVdGc2FYcGxaQ0E5SUdaaGJITmxPMXh1SUNBZ0lHTnZibk52YkdVdVpHVmlkV2NvWUdKcGJ6b2dWMlZpVEc5bmJ6d2tlM1JvYVhNdWRtbGxkMlZ5U1dSOVBpNXZibFJoWW14bFFYUjBZV05vWldRb0tTQmxibVJnS1R0Y2JpQWdmVnh1WEc0Z0lIQnliM1JsWTNSbFpDQmZiblZzYkZObGNYVmxibU5sS0dacGJHeGxjbEpsYzJsa2RXVWdQU0FuV0NjcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG1OdmJuTnBaR1Z5VG5Wc2JGTmxjWFZsYm1ObGN5bGNiaUFnSUNBZ0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb2RHaHBjeTVNWlc1bmRHZ3BMbVpwYkd3b1ptbHNiR1Z5VW1WemFXUjFaU2t1YW05cGJpZ25KeWs3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdKeWM3WEc0Z0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1gyTmhiR04xYkdGMFpTZ3BJSHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXVZMkZ1ZG1GeklIeDhJQ0YwYUdsekxtaHZjM1FnZkh3Z0lYUm9hWE11YzJWeFEyOXNJSHg4SUNGMGFHbHpMbVJoZEdGR2NtRnRaU2xjYmlBZ0lDQWdJSEpsZEhWeWJqdGNibHh1SUNBZ0lIUm9hWE11WTJGc1kxTnBlbVVvS1R0Y2JseHVJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNXpJRDBnYm1WM0lFRnljbUY1S0hSb2FYTXVUR1Z1WjNSb0tUdGNiaUFnSUNCbWIzSWdLR3hsZENCcVVHOXpJRDBnTURzZ2FsQnZjeUE4SUhSb2FYTXVUR1Z1WjNSb095QnFVRzl6S3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhCdmMwNWhiV1U2SUhOMGNtbHVaeUE5SUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsYzF0MGFHbHpMbk4wWVhKMFVHOXphWFJwYjI0Z0t5QnFVRzl6WFR0Y2JpQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZElEMGdibVYzSUZCdmMybDBhVzl1U1c1bWJ5aHdiM05PWVcxbEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QXlNREl5TFRBMUxUQTFJR0Z6YTJGc2EybHVJR2x1YzNSeWRXTjBaV1FnZEc4Z2MyaHZkeUJYWldKTWIyZHZJR0poYzJWa0lHOXVJR1pwYkhSbGNpQW9ibTkwSUhObGJHVmpkR2x2YmlsY2JpQWdJQ0JqYjI1emRDQnBibVJwWTJWeklEMGdkR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG1kbGRGTmxiR1ZqZEdWa1NXNWtaWGhsY3lncE8xeHVJQ0FnSUM4dklHTnZibk4wSUdsdVpHbGpaWE1nUFNCMGFHbHpMbVJoZEdGR2NtRnRaUzV6Wld4bFkzUnBiMjR1ZEhKMVpVTnZkVzUwSUQ0Z01DQS9JSFJvYVhNdVpHRjBZVVp5WVcxbExuTmxiR1ZqZEdsdmJpNW5aWFJUWld4bFkzUmxaRWx1WkdWNFpYTW9LU0E2WEc0Z0lDQWdMeThnSUNCMGFHbHpMbVJoZEdGR2NtRnRaUzVtYVd4MFpYSXVaMlYwVTJWc1pXTjBaV1JKYm1SbGVHVnpLQ2s3WEc1Y2JpQWdJQ0IwYUdsekxuSnZkM05OWVhOclpXUWdQU0JwYm1ScFkyVnpMbXhsYm1kMGFEdGNiaUFnSUNCMGFHbHpMbkp2ZDNOT2RXeHNJRDBnTUR0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2FTQnZaaUJwYm1ScFkyVnpLU0I3WEc0Z0lDQWdJQ0JzWlhRZ2N6b2djM1J5YVc1bklEMGdQSE4wY21sdVp6NG9kR2hwY3k1elpYRkRiMnd1WjJWMEtHa3BLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tDRnpLU0I3WEc0Z0lDQWdJQ0FnSUhNZ1BTQjBhR2x6TGw5dWRXeHNVMlZ4ZFdWdVkyVW9LVHRjYmlBZ0lDQWdJQ0FnS3l0MGFHbHpMbkp2ZDNOT2RXeHNPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JqYjI1emRDQnpaWEZOT2lCemRISnBibWRiWFNBOUlIUm9hWE11YzNCc2FYUjBaWEloS0hNcE8xeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FsQnZjeUE5SURBN0lHcFFiM01nUENCMGFHbHpMa3hsYm1kMGFEc2dhbEJ2Y3lzcktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElIQnRTVzVtYnlBOUlIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbVp5WlhFN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcwNklITjBjbWx1WnlBOUlITmxjVTFiZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1SUNzZ2FsQnZjMTBnZkh3Z0p5MG5PMXh1SUNBZ0lDQWdJQ0JwWmlBb0lTaHRJR2x1SUhCdFNXNW1ieWtwWEc0Z0lDQWdJQ0FnSUNBZ2NHMUpibVp2VzIxZElEMGdibVYzSUZCdmMybDBhVzl1VFc5dWIyMWxja2x1Wm04b0tUdGNiaUFnSUNBZ0lDQWdjRzFKYm1adlcyMWRMbU52ZFc1MEt5czdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGpjbVZuYVc5dUlGQnZiR2x6YUNCbWNtVnhJR052ZFc1MGMxeHVJQ0FnSUdadmNpQW9iR1YwSUdwUWIzTWdQU0F3T3lCcVVHOXpJRHdnZEdocGN5NU1aVzVuZEdnN0lHcFFiM01yS3lrZ2UxeHVJQ0FnSUNBZ0x5OGdaR1ZzWlhSbElIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbVp5WlhGYkp5MG5YVHRjYmx4dUlDQWdJQ0FnZEdocGN5NXdiM05wZEdsdmJuTmJhbEJ2YzEwdWNtOTNRMjkxYm5RZ1BTQXdPMXh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0J0SUdsdUlIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbVp5WlhFcFhHNGdJQ0FnSUNBZ0lIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbkp2ZDBOdmRXNTBJQ3M5SUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExtWnlaWEZiYlYwdVkyOTFiblE3WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJMlZ1WkhKbFoybHZibHh1WEc0Z0lDQWdZMjl1YzNRZ2NpQTlJSGRwYm1SdmR5NWtaWFpwWTJWUWFYaGxiRkpoZEdsdk8xeHVJQ0FnSUdOdmJuTjBJRzFoZUVobGFXZG9kQ0E5SUhSb2FYTXVZMkZ1ZG1GekxtaGxhV2RvZENBdElIUm9hWE11WVhocGMwaGxhV2RvZENBcUlISTdYRzRnSUNBZ0x5OGdZMjl1YzI5c1pTNWtaV0oxWnloZ1YyVmlURzluYnp3a2UzUm9hWE11ZG1sbGQyVnlTV1I5UGk1ZlkyRnNZM1ZzWVhSbEtDa2diV0Y0U0dWcFoyaDBQU1I3YldGNFNHVnBaMmgwZlM1Z0tUdGNibHh1SUNBZ0lDOHZJM0psWjJsdmJpQkRZV3hqZFd4aGRHVWdjMk55WldWdVhHNGdJQ0FnWm05eUlDaHNaWFFnYWxCdmN5QTlJREE3SUdwUWIzTWdQQ0IwYUdsekxreGxibWQwYURzZ2FsQnZjeXNyS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JtY21WeE9pQjdJRnRqT2lCemRISnBibWRkT2lCUWIzTnBkR2x2YmsxdmJtOXRaWEpKYm1adklIMGdQU0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1bWNtVnhPMXh1SUNBZ0lDQWdZMjl1YzNRZ2NtOTNRMjkxYm5RZ1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzV5YjNkRGIzVnVkRHRjYmx4dUlDQWdJQ0FnYkdWMElIazZJRzUxYldKbGNpQTlJSFJvYVhNdVlYaHBjMGhsYVdkb2REdGNibHh1SUNBZ0lDQWdZMjl1YzNRZ1pXNTBjbWxsY3lBOUlFOWlhbVZqZEM1bGJuUnlhV1Z6S0daeVpYRXBMbk52Y25Rb0tHRXNJR0lwSUQwK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0dGYk1GMGdJVDA5SUNjdEp5QW1KaUJpV3pCZElDRTlQU0FuTFNjcFhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHSmJNVjB1WTI5MWJuUWdMU0JoV3pGZExtTnZkVzUwTzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoaFd6QmRJRDA5UFNBbkxTY2dKaVlnWWxzd1hTQTlQVDBnSnkwbktWeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQXdPMXh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hoV3pCZElEMDlQU0FuTFNjcFhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDMHhPMXh1SUNBZ0lDQWdJQ0JsYkhObElDOHFJQ2hpV3pCZElEMDlQU0FuTFNjcElDb3ZYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ3N4TzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCbWIzSWdLR052Ym5OMElHVnVkSEo1SUc5bUlHVnVkSEpwWlhNcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NHMUpibVp2T2lCUWIzTnBkR2x2YmsxdmJtOXRaWEpKYm1adklEMGdaVzUwY25sYk1WMDdYRzRnSUNBZ0lDQWdJQzh2SUdOdmJuTjBJRzA2SUhOMGNtbHVaeUE5SUdWdWRISjVXekJkTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JvT2lCdWRXMWlaWElnUFNCdFlYaElaV2xuYUhRZ0tpQndiVWx1Wm04dVkyOTFiblFnTHlCeWIzZERiM1Z1ZER0Y2JseHVJQ0FnSUNBZ0lDQndiVWx1Wm04dVltOTFibVJ6SUQwZ2JtVjNJRVJITGxKbFkzUW9hbEJ2Y3lBcUlIUm9hWE11WDNCdmMybDBhVzl1VjJsa2RHZ3NJSGtzSUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnc0lHZ3BPMXh1SUNBZ0lDQWdJQ0I1SUNzOUlHZzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUM4dkkyVnVaSEpsWjJsdmJseHVJQ0I5WEc1Y2JpQWdMeThnY21WbWJHVmpkQ0JqYUdGdVoyVnpJRzFoWkdVZ2RHOGdabWxzZEdWeUwzTmxiR1ZqZEdsdmJseHVJQ0J5Wlc1a1pYSW9jbVZqWVd4aklEMGdkSEoxWlNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG0xelowaHZjM1FwSUh0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG5ObGNVTnZiQ0FtSmlBaGRHaHBjeTVqY0NrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xelowaHZjM1FoTG1sdWJtVnlWR1Y0ZENBOUlHQlZibXR1YjNkdUlIQmhiR1YwZEdVZ0tHTnZiSFZ0YmlCelpXMVVlWEJsT2lBbkpIdDBhR2x6TG5ObGNVTnZiQzV6WlcxVWVYQmxmU2NwTG1BN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YlhOblNHOXpkQ0V1YzNSNWJHVXVaR2x6Y0d4aGVTQTlJQ2NuTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXRjMmRJYjNOMElTNXpkSGxzWlM1a2FYTndiR0Y1SUQwZ0oyNXZibVVuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNnaGRHaHBjeTVqWVc1MllYTWdmSHdnSVhSb2FYTXVjMlZ4UTI5c0lIeDhJQ0YwYUdsekxtUmhkR0ZHY21GdFpTQjhmQ0FoZEdocGN5NWpjQ2xjYmlBZ0lDQWdJSEpsZEhWeWJqdGNibHh1SUNBZ0lHTnZibk4wSUdjZ1BTQjBhR2x6TG1OaGJuWmhjeTVuWlhSRGIyNTBaWGgwS0NjeVpDY3BPMXh1SUNBZ0lHbG1JQ2doWnlrZ2NtVjBkWEp1TzF4dVhHNGdJQ0FnYVdZZ0tISmxZMkZzWXlsY2JpQWdJQ0FnSUhSb2FYTXVYMk5oYkdOMWJHRjBaU2dwTzF4dVhHNGdJQ0FnWnk1eVpYTmxkRlJ5WVc1elptOXliU2dwTzF4dUlDQWdJR2N1Wm1sc2JGTjBlV3hsSUQwZ0ozZG9hWFJsSnp0Y2JpQWdJQ0JuTG1acGJHeFNaV04wS0RBc0lEQXNJSFJvYVhNdVkyRnVkbUZ6TG5kcFpIUm9MQ0IwYUdsekxtTmhiblpoY3k1b1pXbG5hSFFwTzF4dUlDQWdJR2N1ZEdWNGRFSmhjMlZzYVc1bElEMGdkR2hwY3k1MFpYaDBRbUZ6Wld4cGJtVTdYRzVjYmlBZ0lDQXZMeUJRY21WMlpXNTBjeUJrYVhacGMybHZiaUJpZVNCNlpYSnZJRzl1SUV4bGJtZDBhQ0E5SURCY2JpQWdJQ0JwWmlBb2RHaHBjeTV6ZEdGeWRGQnZjMmwwYVc5dUlEMDlQU0F0TVNCOGZDQjBhR2x6TG1WdVpGQnZjMmwwYVc5dUlEMDlQU0F0TVNsY2JpQWdJQ0FnSUhKbGRIVnlianRjYmx4dUlDQWdJQzh2STNKbFoybHZiaUJRYkc5MElIQnZjMmwwYVc5dVRtRnRaWE5jYmlBZ0lDQm5MbkpsYzJWMFZISmhibk5tYjNKdEtDazdYRzRnSUNBZ1p5NW1hV3hzVTNSNWJHVWdQU0FuWW14aFkyc25PMXh1SUNBZ0lHY3VkR1Y0ZEVGc2FXZHVJRDBnSjJObGJuUmxjaWM3WEc0Z0lDQWdaeTVtYjI1MElEMGdKekV3Y0hnZ1VtOWliM1J2TENCU2IySnZkRzhnVEc5allXd3NJSE5oYm5NdGMyVnlhV1luTzF4dUlDQWdJR052Ym5OMElIQnZjMDVoYldWTllYaFhhV1IwYUNBOUlFMWhkR2d1YldGNEtDNHVMblJvYVhNdWNHOXphWFJwYjI1ekxtMWhjQ2dvY0c5ektTQTlQaUJuTG0xbFlYTjFjbVZVWlhoMEtIQnZjeTV1WVcxbEtTNTNhV1IwYUNrcE8xeHVJQ0FnSUdOdmJuTjBJR2hUWTJGc1pTQTlJSEJ2YzA1aGJXVk5ZWGhYYVdSMGFDQThJQ2gwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUMwZ01pa2dQeUF4SURvZ0tIUm9hWE11WDNCdmMybDBhVzl1VjJsa2RHZ2dMU0F5S1NBdklIQnZjMDVoYldWTllYaFhhV1IwYUR0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdwUWIzTWdQU0F3T3lCcVVHOXpJRHdnZEdocGN5NU1aVzVuZEdnN0lHcFFiM01yS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnY0c5ek9pQlFiM05wZEdsdmJrbHVabThnUFNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhUdGNiaUFnSUNBZ0lHY3VjbVZ6WlhSVWNtRnVjMlp2Y20wb0tUdGNiaUFnSUNBZ0lHY3VjMlYwVkhKaGJuTm1iM0p0S0Z4dUlDQWdJQ0FnSUNCb1UyTmhiR1VzSURBc0lEQXNJREVzWEc0Z0lDQWdJQ0FnSUdwUWIzTWdLaUIwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUNzZ2RHaHBjeTVmY0c5emFYUnBiMjVYYVdSMGFDQXZJRElzSURBcE8xeHVJQ0FnSUNBZ1p5NW1hV3hzVkdWNGRDaHdiM011Ym1GdFpTd2dNQ3dnTUNrN1hHNGdJQ0FnZlZ4dUlDQWdJQzh2STJWdVpISmxaMmx2YmlCUWJHOTBJSEJ2YzJsMGFXOXVUbUZ0WlhOY2JseHVJQ0FnSUdadmNpQW9iR1YwSUdwUWIzTWdQU0F3T3lCcVVHOXpJRHdnZEdocGN5NU1aVzVuZEdnN0lHcFFiM01yS3lrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQmJiVzl1YjIxbGNpd2djRzFKYm1adlhTQnZaaUJQWW1wbFkzUXVaVzUwY21sbGN5aDBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeEtTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2JXOXViMjFsY2lBaFBUMGdKeTBuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1lpQTlJSEJ0U1c1bWJ5NWliM1Z1WkhNN1hHNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQm1iMjUwVTNSNWJHVWdQU0FuTVRad2VDQlNiMkp2ZEc4c0lGSnZZbTkwYnlCTWIyTmhiQ3dnYzJGdWN5MXpaWEpwWmljN1hHNGdJQ0FnSUNBZ0lDQWdMeThnU0dGamEzTWdkRzhnYzJOaGJHVWdkWEJ3WlhKallYTmxJR05vWVhKaFkzUmxjbk1nZEc4Z2RHRnlaMlYwSUhKbFkzUmhibWRzWlZ4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhWd2NHVnlZMkZ6WlV4bGRIUmxja0Z6WTJWdWRDQTlJREF1TWpVN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RYQndaWEpqWVhObFRHVjBkR1Z5U0dWcFoyaDBJRDBnTVRJdU1qdGNibHh1SUNBZ0lDQWdJQ0FnSUdjdWNtVnpaWFJVY21GdWMyWnZjbTBvS1R0Y2JpQWdJQ0FnSUNBZ0lDQm5Mbk4wY205clpWTjBlV3hsSUQwZ0oyeHBaMmgwWjNKaGVTYzdYRzRnSUNBZ0lDQWdJQ0FnWnk1c2FXNWxWMmxrZEdnZ1BTQXhPMXh1SUNBZ0lDQWdJQ0FnSUdjdWNtVmpkQ2hpTG14bFpuUXNJR0l1ZEc5d0xDQmlMbmRwWkhSb0xDQmlMbWhsYVdkb2RDazdYRzRnSUNBZ0lDQWdJQ0FnWnk1bWFXeHNVM1I1YkdVZ1BTQjBhR2x6TG1Od0xtZGxkQ2h0YjI1dmJXVnlLU0EvUHlCMGFHbHpMbU53TG1kbGRDZ25iM1JvWlhJbktUdGNiaUFnSUNBZ0lDQWdJQ0JuTG5SbGVIUkJiR2xuYmlBOUlDZHNaV1owSnp0Y2JpQWdJQ0FnSUNBZ0lDQm5MbVp2Ym5RZ1BTQm1iMjUwVTNSNWJHVTdYRzRnSUNBZ0lDQWdJQ0FnTHk5bkxtWnBiR3hTWldOMEtHSXViR1ZtZEN3Z1lpNTBiM0FzSUdJdWQybGtkR2dzSUdJdWFHVnBaMmgwS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdFZHMDZJRlJsZUhSTlpYUnlhV056SUQwZ1p5NXRaV0Z6ZFhKbFZHVjRkQ2h0YjI1dmJXVnlLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJR2xtSUNodFRTNWhZM1IxWVd4Q2IzVnVaR2x1WjBKdmVFRnpZMlZ1ZENBaFBTQXdLVnh1SUNBZ0lDQWdJQ0FnSUM4dklDQWdZMjl1YzI5c1pTNWtaV0oxWnloZ2JUb2dKSHR0ZlN3Z2JVMHVZV04wZFdGc1FtOTFibVJwYm1kQ2IzaEJjMk5sYm5RNklDUjdiVTB1WVdOMGRXRnNRbTkxYm1ScGJtZENiM2hCYzJObGJuUjlZQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQm5Mbk5sZEZSeVlXNXpabTl5YlNoY2JpQWdJQ0FnSUNBZ0lDQWdJR0l1ZDJsa2RHZ2dMeUJ0VkcwdWQybGtkR2dzSURBc0lEQXNJR0l1YUdWcFoyaDBJQzhnZFhCd1pYSmpZWE5sVEdWMGRHVnlTR1ZwWjJoMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnWWk1c1pXWjBMQ0JpTG5SdmNDazdYRzRnSUNBZ0lDQWdJQ0FnWnk1bWFXeHNWR1Y0ZENodGIyNXZiV1Z5TENBd0xDQXRkWEJ3WlhKallYTmxUR1YwZEdWeVFYTmpaVzUwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1kyRnNZMU5wZW1Vb0tTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtTmhiblpoY3lCOGZDQWhkR2hwY3k1b2IzTjBLVnh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVYRzRnSUNBZ2JHVjBJSGRwWkhSb09pQnVkVzFpWlhJZ1BTQjBhR2x6TGt4bGJtZDBhQ0FxSUhSb2FYTXVjRzl6YVhScGIyNVhhV1IwYUR0Y2JpQWdJQ0JzWlhRZ2FHVnBaMmgwSUQwZ1RXRjBhQzV0YVc0b2RHaHBjeTV0WVhoSVpXbG5hSFFzSUUxaGRHZ3ViV0Y0S0hSb2FYTXViV2x1U0dWcFoyaDBMQ0IwYUdsekxuSnZiM1F1WTJ4cFpXNTBTR1ZwWjJoMEtTazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NW1hWFJCY21WaEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCNFUyTmhiR1U2SUc1MWJXSmxjaUE5SUhSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUWdMeUJvWldsbmFIUTdYRzRnSUNBZ0lDQmpiMjV6ZENCNVUyTmhiR1U2SUc1MWJXSmxjaUE5SUhSb2FYTXVjbTl2ZEM1amJHbGxiblJYYVdSMGFDQXZJSGRwWkhSb08xeHVJQ0FnSUNBZ1kyOXVjM1FnYzJOaGJHVWdQU0JOWVhSb0xtMWhlQ2d4TENCTllYUm9MbTFwYmloNFUyTmhiR1VzSUhsVFkyRnNaU2twTzF4dUlDQWdJQ0FnZDJsa2RHZ2dQU0IzYVdSMGFDQXFJSE5qWVd4bE8xeHVJQ0FnSUNBZ2FHVnBaMmgwSUQwZ2FHVnBaMmgwSUNvZ2MyTmhiR1U3WEc0Z0lDQWdJQ0IwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUQwZ2RHaHBjeTV3YjNOcGRHbHZibGRwWkhSb0lDb2djMk5oYkdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjaUE5SUhkcGJtUnZkeTVrWlhacFkyVlFhWGhsYkZKaGRHbHZPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbmRwWkhSb0lEMGdkMmxrZEdnZ0tpQnlPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbk4wZVd4bExuZHBaSFJvSUQwZ1lDUjdkMmxrZEdoOWNIaGdPMXh1WEc0Z0lDQWdMeThnWTI5dWMzUWdZMkZ1ZG1GelNHVnBaMmgwT2lCdWRXMWlaWElnUFNCM2FXUjBhQ0ErSUhSb2FYTXVjbTl2ZEM1amJHbGxiblJYYVdSMGFDQS9JR2hsYVdkb2RDQXRJRGdnT2lCb1pXbG5hSFE3WEc0Z0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2RvWldsbmFIUW5MQ0JnSkh0b1pXbG5hSFI5Y0hoZ0tUdGNiaUFnSUNCamIyNXpkQ0JqWVc1MllYTklaV2xuYUhRNklHNTFiV0psY2lBOUlIUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFE3WEc0Z0lDQWdkR2hwY3k1allXNTJZWE11YUdWcFoyaDBJRDBnWTJGdWRtRnpTR1ZwWjJoMElDb2djanRjYmlBZ0lDQjBhR2x6TG1OaGJuWmhjeTV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYUdWcFoyaDBKeXdnWUNSN1kyRnVkbUZ6U0dWcFoyaDBmWEI0WUNrN1hHNWNiaUFnSUNBdkx5QkJaR3AxYzNRZ2FHOXpkQ0JoYm1RZ2NtOXZkQ0IzYVdSMGFGeHVJQ0FnSUdsbUlDaDBhR2x6TG1acGVGZHBaSFJvS1NCN1hHNGdJQ0FnSUNBdkx5Qm1kV3hzSUhkcFpIUm9JR1p2Y2lCallXNTJZWE1nYUc5emRDQmhibVFnY205dmRGeHVJQ0FnSUNBZ2RHaHBjeTV5YjI5MExuTjBlV3hsTG5kcFpIUm9JRDBnZEdocGN5NW9iM04wTG5OMGVXeGxMbmRwWkhSb0lEMGdZQ1I3ZDJsa2RHaDljSGhnTzF4dUlDQWdJQ0FnZEdocGN5NXliMjkwTG5OMGVXeGxMbWhsYVdkb2RDQTlJR0FrZTJobGFXZG9kSDF3ZUdBN1hHNGdJQ0FnSUNCMGFHbHpMbWh2YzNRdWMzUjViR1V1YzJWMFVISnZjR1Z5ZEhrb0oyOTJaWEptYkc5M0p5d2dKMmhwWkdSbGJpY3NJQ2RwYlhCdmNuUmhiblFuS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdMeThnWVd4c2IzY2djMk55YjJ4c0lHTmhiblpoY3lCcGJpQnliMjkwWEc0Z0lDQWdJQ0IwYUdsekxuSnZiM1F1YzNSNWJHVXVkMmxrZEdnZ1BTQjBhR2x6TG1odmMzUXVjM1I1YkdVdWQybGtkR2dnUFNBbk1UQXdKU2M3WEc0Z0lDQWdJQ0IwYUdsekxtaHZjM1F1YzNSNWJHVXViM1psY21ac2IzZFlJRDBnSjJGMWRHOGhhVzF3YjNKMFlXNTBKenRjYmlBZ0lDQWdJSFJvYVhNdWFHOXpkQzV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYjNabGNtWnNiM2NuTENCdWRXeHNLVHRjYmx4dUlDQWdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbk5sZEZCeWIzQmxjblI1S0NkMFpYaDBMV0ZzYVdkdUp5d2dkR2hwY3k1b2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1MEtUdGNibHh1SUNBZ0lDQWdMeThnZG1WeWRHbGpZV3dnWVd4cFoyNXRaVzUwWEc0Z0lDQWdJQ0JzWlhRZ2FHOXpkRlJ2Y0UxaGNtZHBiaUE5SURBN1hHNGdJQ0FnSUNCemQybDBZMmdnS0hSb2FYTXVkbVZ5ZEdsallXeEJiR2xuYm0xbGJuUXBJSHRjYmlBZ0lDQWdJR05oYzJVZ0ozUnZjQ2M2WEc0Z0lDQWdJQ0FnSUdodmMzUlViM0JOWVhKbmFXNGdQU0F3TzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ0oyMXBaR1JzWlNjNlhHNGdJQ0FnSUNBZ0lHaHZjM1JVYjNCTllYSm5hVzRnUFNCTllYUm9MbTFoZUNnd0xDQW9kR2hwY3k1eWIyOTBMbU5zYVdWdWRFaGxhV2RvZENBdElHaGxhV2RvZENrZ0x5QXlLVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUNkaWIzUjBiMjBuT2x4dUlDQWdJQ0FnSUNCb2IzTjBWRzl3VFdGeVoybHVJRDBnVFdGMGFDNXRZWGdvTUN3Z2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0F0SUdobGFXZG9kQ2s3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2R0WVhKbmFXNHRkRzl3Snl3Z1lDUjdhRzl6ZEZSdmNFMWhjbWRwYm4xd2VHQXNJQ2RwYlhCdmNuUmhiblFuS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWNtOXZkQzVqYkdsbGJuUklaV2xuYUhRZ1BDQm9aV2xuYUhRcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2RvWldsbmFIUW5MQ0JnSkh0MGFHbHpMbkp2YjNRdVkyeHBaVzUwU0dWcFoyaDBmWEI0WUNrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YUc5emRDNXpkSGxzWlM1elpYUlFjbTl3WlhKMGVTZ25iM1psY21ac2IzY3RlU2NzSUc1MWJHd3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2R2ZG1WeVpteHZkeTE1Snl3Z0oyaHBaR1JsYmljc0lDZHBiWEJ2Y25SaGJuUW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJqYjI1emIyeGxMbVJsWW5WbktGeHVJQ0FnSUM4dklDQWdZSFJvYVhNdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhRZ1BTQWtlM1JvYVhNdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhSOVhGeHVZQ0FyWEc0Z0lDQWdMeThnSUNCZ2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0E5SUNSN2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kSDFjWEc1Z0lDdGNiaUFnSUNBdkx5QWdJR0IwYUdsekxtaHZjM1F1YzNSNWJHVXVhR1ZwWjJoMElEMGdKSHQwYUdsekxtaHZjM1F1YzNSNWJHVXVhR1ZwWjJoMGZWeGNibUFnSzF4dUlDQWdJQzh2SUNBZ1lIUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFFnUFNBa2UzUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFI5WEZ4dVlDQXJYRzRnSUNBZ0x5OGdJQ0FuWEZ4dUp5QXJYRzRnSUNBZ0x5OGdJQ0JnZEdocGN5NWpZVzUyWVhNdWFHVnBaMmgwSUNBZ0lDQWdJRDBnSkh0MGFHbHpMbU5oYm5aaGN5NW9aV2xuYUhSOVhGeHVZQ0FyWEc0Z0lDQWdMeThnSUNCZ2RHaHBjeTVqWVc1MllYTXVjM1I1YkdVdWFHVnBaMmgwSUQwZ0pIdDBhR2x6TG1OaGJuWmhjeTV6ZEhsc1pTNW9aV2xuYUhSOVlDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUhObGNVTnZiQ0JEYjJ4MWJXNGdkRzhnYkc5dmF5Qm1iM0lnWVNCd1lXeGxkSFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQWdiV2x1VEdWdVozUm9JRzFwYm1sdGRXMGdiR1Z1WjNSb0lHOW1JSE5sY1hWbGJtTmxJSFJ2SUdSbGRHVmpkQ0J3WVd4bGRIUmxJQ2hsYlhCMGVTQnpkSEpwYm1keklHRnlaU0JoYkd4dmQyVmtLVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdFRaWEZRWVd4bGRIUmxmU0JRWVd4bGRIUmxJR052Y25KbGMzQnZibVJwYm1jZ2RHOGdkR2hsSUdGc2NHaGhZbVYwSUc5bUlIUm9aU0J6WlhGMVpXNWpaWE1nYVc0Z2RHaGxJR052YkhWdGJseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCd2FXTnJWWEJRWVd4bGRIUmxLSE5sY1VOdmJEb2dSRWN1UTI5c2RXMXVMQ0J0YVc1TVpXNW5kR2c2SUc1MWJXSmxjaUE5SURVcE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnNaWFFnY21Wek9pQlRaWEZRWVd4bGRIUmxJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNGdJQ0FnYzNkcGRHTm9JQ2h6WlhGRGIyd3VjMlZ0Vkhsd1pTa2dlMXh1SUNBZ0lHTmhjMlVnUVcxcGJtOWhZMmxrY3k1VFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2WEc0Z0lDQWdJQ0J5WlhNZ1BTQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjenRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdUblZqYkdWdmRHbGtaWE11VTJWdFZIbHdaVTExYkhScGNHeGxRV3hwWjI1dFpXNTBPbHh1SUNBZ0lDQWdjbVZ6SUQwZ1RuVmpiR1Z2ZEdsa1pYTlFZV3hsZEhSbGN5NURhSEp2YldGMGIyZHlZVzA3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWMzUWdjM1JoZEhNNklGTmxjVU52YkZOMFlYUnpJRDBnVjJWaVRHOW5ieTVuWlhSVGRHRjBjeWh6WlhGRGIyd3NJRzFwYmt4bGJtZDBhQ3dnVjJWaVRHOW5ieTV6Y0d4cGRIUmxja0Z6Um1GemRHRXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1lXeHdhR0ZpWlhSRFlXNWthV1JoZEdWek9pQmJVMlYwUEhOMGNtbHVaejRzSUZObGNWQmhiR1YwZEdWZFcxMGdQU0JiWEc0Z0lDQWdJQ0JiYm1WM0lGTmxkQ2hQWW1wbFkzUXVhMlY1Y3loT2RXTnNaVzkwYVdSbGN5NU9ZVzFsY3lrcExDQk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpMa05vY205dFlYUnZaM0poYlYwc1hHNGdJQ0FnSUNCYmJtVjNJRk5sZENoUFltcGxZM1F1YTJWNWN5aEJiV2x1YjJGamFXUnpMazVoYldWektTa3NJRUZ0YVc1dllXTnBaSE5RWVd4bGRIUmxjeTVIY205clIzSnZkWEJ6WFN4Y2JpQWdJQ0JkTzF4dUlDQWdJQzh2SUVOaGJHTjFiR0YwWlNCc2FXdGxiR2xvYjI5a2N5Qm1iM0lnWVd4d2FHRmlaWFJmWTJGdVpHbGtZWFJsYzF4dUlDQWdJR052Ym5OMElHRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGMxTnBiVG9nYm5WdFltVnlXMTBnUFNCaGJIQm9ZV0psZEVOaGJtUnBaR0YwWlhOY2JpQWdJQ0FnSUM1dFlYQW9LR01wSUQwK0lGZGxZa3h2WjI4dVoyVjBRV3h3YUdGaVpYUlRhVzFwYkdGeWFYUjVLSE4wWVhSekxtWnlaWEVzSUdOYk1GMHBLVHRjYmlBZ0lDQmpiMjV6ZENCdFlYaERiM01nUFNCTllYUm9MbTFoZUNndUxpNWhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTlRhVzBwTzF4dUlDQWdJR2xtSUNodFlYaERiM01nUGlBd0xqWTFLVnh1SUNBZ0lDQWdjbVZ6SUQwZ1lXeHdhR0ZpWlhSRFlXNWthV1JoZEdWelcyRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGMxTnBiUzVwYm1SbGVFOW1LRzFoZUVOdmN5bGRXekZkTzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhKbGN5QTlJRlZ1YTI1dmQyNVRaWEZRWVd4bGRIUmxjeTVEYjJ4dmNqdGNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1UzUmhkSE1nYjJZZ2MyVnhkV1Z1WTJWeklIZHBkR2dnYzNCbFkybG1hV1ZrSUhOd2JHbDBkR1Z5SUdaMWJtTXNJSEpsZEhWeWJuTWdleUJtY21WeExDQnpZVzFsVEdWdVozUm9JSDB1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRWN1UTI5c2RXMXVmU0J6WlhGRGIyeGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUcxcGJreGxibWQwYUZ4dUlDQWdLaUJBY0dGeVlXMGdlMU53YkdsMGRHVnlSblZ1WTMwZ2MzQnNhWFIwWlhKY2JpQWdJQ29nUUhKbGRIVnliaUI3SUZObGNVTnZiRk4wWVhSeklIMHNJSE5oYldWTVpXNW5kR2c2SUdKdmIyeGxZVzRnZlNCemRHRjBjeUJ2WmlCamIyeDFiVzRnYzJWeGRXVnVZMlZ6WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMFUzUmhkSE1vYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzSUcxcGJreGxibWQwYURvZ2JuVnRZbVZ5TENCemNHeHBkSFJsY2pvZ1UzQnNhWFIwWlhKR2RXNWpLVG9nVTJWeFEyOXNVM1JoZEhNZ2UxeHVJQ0FnSUdOdmJuTjBJR1p5WlhFNklIc2dXMjA2SUhOMGNtbHVaMTA2SUc1MWJXSmxjaUI5SUQwZ2UzMDdYRzRnSUNBZ2JHVjBJSE5oYldWTVpXNW5kR2dnUFNCMGNuVmxPMXh1SUNBZ0lHeGxkQ0JtYVhKemRFeGxibWQwYUNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUhObGNTQnZaaUJ6WlhGRGIyd3VZMkYwWldkdmNtbGxjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdiVk5sY1NBOUlITndiR2wwZEdWeUtITmxjU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaG1hWEp6ZEV4bGJtZDBhQ0E5UFNCdWRXeHNLVnh1SUNBZ0lDQWdJQ0JtYVhKemRFeGxibWQwYUNBOUlHMVRaWEV1YkdWdVozUm9PMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9iVk5sY1M1c1pXNW5kR2dnSVQwOUlHWnBjbk4wVEdWdVozUm9LVnh1SUNBZ0lDQWdJQ0J6WVcxbFRHVnVaM1JvSUQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0FnSUdsbUlDaHRVMlZ4TG14bGJtZDBhQ0ErSUcxcGJreGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJRzBnYjJZZ2JWTmxjU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2doS0cwZ2FXNGdabkpsY1NrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JtY21WeFcyMWRJRDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQm1jbVZ4VzIxZElDczlJREU3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIdG1jbVZ4T2lCbWNtVnhMQ0J6WVcxbFRHVnVaM1JvT2lCellXMWxUR1Z1WjNSb2ZUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBRV3h3YUdGaVpYUlRhVzFwYkdGeWFYUjVLR1p5WlhFNklFMXZibTl0WlhKR2NtVnhjeXdnWVd4d2FHRmlaWFE2SUZObGREeHpkSEpwYm1jK0xDQm5ZWEJUZVcxaWIydzZJSE4wY21sdVp5QTlJQ2N0SnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnWTI5dWMzUWdhMlY1Y3lBOUlHNWxkeUJUWlhROGMzUnlhVzVuUGloYkxpNHVibVYzSUZObGRDaFBZbXBsWTNRdWEyVjVjeWhtY21WeEtTa3NJQzR1TG1Gc2NHaGhZbVYwWFNrN1hHNGdJQ0FnYTJWNWN5NWtaV3hsZEdVb1oyRndVM2x0WW05c0tUdGNibHh1SUNBZ0lHTnZibk4wSUdaeVpYRkJPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0FnSUdOdmJuTjBJR0ZzY0doaFltVjBRVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR052Ym5OMElHMGdiMllnYTJWNWN5a2dlMXh1SUNBZ0lDQWdabkpsY1VFdWNIVnphQ2h0SUdsdUlHWnlaWEVnUHlCbWNtVnhXMjFkSURvZ01DazdYRzRnSUNBZ0lDQmhiSEJvWVdKbGRFRXVjSFZ6YUNoaGJIQm9ZV0psZEM1b1lYTW9iU2tnUHlBeElEb2dNQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHFJRlJvWlhKbElIZGxjbVVnWVNCbVpYY2dhV1JsWVhNNklHTm9hUzF6Y1hWaGNtVmtMQ0J3WldGeWMyOXVJR052Y25KbGJHRjBhVzl1SUNoMllYSnBZVzVqWlQ4cExDQnpZMkZzWVhJZ2NISnZaSFZqZENBcUwxeHVJQ0FnSUdOdmJuTjBJR1p5WlhGV09pQldaV04wYjNJZ1BTQnVaWGNnVm1WamRHOXlLR1p5WlhGQktUdGNiaUFnSUNCamIyNXpkQ0JoYkhCb1lXSmxkRlk2SUZabFkzUnZjaUE5SUc1bGR5QldaV04wYjNJb1lXeHdhR0ZpWlhSQktUdGNiaUFnSUNCamIyNXpkQ0JqYjNNNklHNTFiV0psY2lBOUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb1puSmxjVllzSUdGc2NHaGhZbVYwVmlrZ0x5QW9kbVZqZEc5eVRHVnVaM1JvS0daeVpYRldLU0FxSUhabFkzUnZja3hsYm1kMGFDaGhiSEJvWVdKbGRGWXBLVHRjYmlBZ0lDQnlaWFIxY200Z1kyOXpPMXh1SUNCOVhHNWNiaUFnTHk4Z0x5b3FJRVpwY25OMElIUnllU0IwYnlCbWFXNWtJR052YkhWdGJpQjNhWFJvSUhObGJWUjVjR1VnSjJGc2FXZHVaV1JUWlhGMVpXNWpaU2N1WEc0Z0lDOHZJQ0FxSUU1bGVIUWdiRzl2YXlCbWIzSWdZMjlzZFcxdUlIZHBkR2dnWkdGMFlTQmhiSEJvWVdKbGRDQmpiM0p5WlhOd2IyNWthVzVuSUhSdklHRnVlU0J2WmlCMGFHVWdhMjV2ZDI0Z2NHRnNaWFIwWlhNdVhHNGdJQzh2SUNBcUlFQndZWEpoYlNCN1JFY3VSR0YwWVVaeVlXMWxmU0JrWVhSaFJuSmhiV1ZjYmlBZ0x5OGdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNCVWFHVWdZMjlzZFcxdUlIZGxJSGRsY21VZ2JHOXZhMmx1WnlCbWIzSWdiM0lnYm5Wc2JGeHVJQ0F2THlBZ0tpOWNiaUFnTHk4Z2NISnBkbUYwWlNCd2FXTnJWWEJUWlhGRGIyd29aR0YwWVVaeVlXMWxPaUJFUnk1RVlYUmhSbkpoYldVcE9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lIdGNiaUFnTHk4Z0lDQnNaWFFnY21Wek9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lEMGdaR0YwWVVaeVlXMWxMbU52YkhWdGJuTXVZbmxUWlcxVWVYQmxLQ2RoYkdsbmJtVmtVMlZ4ZFdWdVkyVW5LVHRjYmlBZ0x5OGdJQ0JwWmlBb2NtVnpJRDA5SUc1MWJHd3BJSHRjYmlBZ0x5OGdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyOXNJRzltSUdSaGRHRkdjbUZ0WlM1amIyeDFiVzV6S1NCN1hHNGdJQzh2SUNBZ0lDQWdJR052Ym5OMElHTndJRDBnVjJWaVRHOW5ieTV3YVdOclZYQlFZV3hsZEhSbEtHTnZiQ0JoY3lCRVJ5NURiMngxYlc0c0lEVXBPMXh1SUNBdkx5QWdJQ0FnSUNCcFppQW9ZM0FnSVQwOUlHNTFiR3dnSmlZZ0lTaGpjQ0JwYm5OMFlXNWpaVzltSUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsS1NrZ2UxeHVJQ0F2THlBZ0lDQWdJQ0FnSUhKbGN5QTlJR052YkR0Y2JpQWdMeThnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnTHk4Z0lDQWdJQ0FnZlZ4dUlDQXZMeUFnSUNBZ2ZWeHVJQ0F2THlBZ0lIMWNiaUFnTHk4Z0lDQnlaWFIxY200Z2NtVnpPMXh1SUNBdkx5QjlYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJ3YVdOclZYQlRaWEZEYjJ3eUtHUm1PaUJFUnk1RVlYUmhSbkpoYldVcE9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lIdGNiaUFnSUNCamIyNXpkQ0J6WlcxVWVYQmxRMjlzVEdsemRDQTlJR1JtTG1OdmJIVnRibk11WW5sVFpXMVVlWEJsUVd4c0tFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlNrN1hHNGdJQ0FnYkdWMElISmxjME52YkRvZ1JFY3VRMjlzZFcxdUlId2diblZzYkNBOUlITmxiVlI1Y0dWRGIyeE1hWE4wTG1acGJtUW9LR052YkNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RXNXBkSE1nUFNCamIyd3VaMlYwVkdGbktFUkhMbFJCUjFNdVZVNUpWRk1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJSFZ1YVhSeklEOGdkVzVwZEhNdWFXNWtaWGhQWmlnblRWTkJKeWtnSVQwOUlDMHhJRG9nWm1Gc2MyVTdYRzRnSUNBZ2ZTa2dQejhnYm5Wc2JEdGNiaUFnSUNCcFppQW9JWEpsYzBOdmJDQW1KaUJ6WlcxVWVYQmxRMjlzVEdsemRDNXNaVzVuZEdnZ1BpQXdLVnh1SUNBZ0lDQWdjbVZ6UTI5c0lEMGdjMlZ0Vkhsd1pVTnZiRXhwYzNSYk1GMDdYRzRnSUNBZ2NtVjBkWEp1SUhKbGMwTnZiRHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJRzF2Ym05dFpYSlNaU0E5SUM5Y1hGc29YRngzS3lsY1hGMThLRnhjZHlsOEtDMHBMMmM3WEc1Y2JpQWdMeW9xSUZOd2JHbDBJSE5sY1hWbGJtTmxJR1p2Y2lCemFXNW5iR1VnWTJoaGNtRmpkR1Z5SUcxdmJtOXRaWEp6TENCemNYVmhjbVVnWW5KaFkydGxkSE1nYlhWc2RHbGphR0Z5SUcxdmJtOXRaWElnYm1GdFpYTWdiM0lnWjJGd0lITjViV0p2YkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sOUlITmxjU0J2WW1wbFkzUWdkMmwwYUNCelpYRjFaVzVqWlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnWVhKeVlYa2diMllnYlc5dWIyMWxjbk5jYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdjM0JzYVhSMFpYSkJjMFpoYzNSaEtITmxjVG9nWVc1NUtUb2djM1J5YVc1blcxMGdlMXh1SUNBZ0lHTnZibk4wSUhKbGN6b2djM1J5YVc1blcxMGdQU0IzZFR4U1pXZEZlSEJOWVhSamFFRnljbUY1UGloelpYRXVkRzlUZEhKcGJtY29LUzV0WVhSamFFRnNiQ2hYWldKTWIyZHZMbTF2Ym05dFpYSlNaU2twWEc0Z0lDQWdJQ0F1YldGd0tDaHRZVG9nVW1WblJYaHdUV0YwWTJoQmNuSmhlU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnNaWFFnYlZKbGN6b2djM1J5YVc1bk8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdE9pQnpkSEpwYm1jZ1BTQnRZVnN3WFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzB1YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNodElHbHVJRmRsWWt4dloyOHVZV0ZUZVc1dmJubHRjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiVkpsY3lBOUlGZGxZa3h2WjI4dVlXRlRlVzV2Ym5sdGMxdHRYVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiVkpsY3lBOUlDY25PMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnVEc5dVp5QnRiMjV2YldWeUlDY2tlMjE5SnlCb1lYTWdibTkwSUdFZ2MyaHZjblFnYzNsdWIyNTViUzVnS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYlZKbGN5QTlJRzA3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxU1pYTTdYRzRnSUNBZ0lDQjlLUzUwYjBGeWNtRjVLQ2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6TzF4dUlDQjlYRzVjYmlBZ0x5b3FJRWRsZEhNZ2JXVjBhRzlrSUhSdklITndiR2wwSUhObGNYVmxibU5sSUdKNUlITmxjR0Z5WVhSdmNseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYzJWd1lYSmhkRzl5WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMU53YkdsMGRHVnlSblZ1WTMxY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFUzQnNhWFIwWlhKWGFYUm9VMlZ3WVhKaGRHOXlLSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5LVG9nVTNCc2FYUjBaWEpHZFc1aklIdGNiaUFnSUNCeVpYUjFjbTRnS0hObGNUb2djM1J5YVc1bktTQTlQaUI3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjMlZ4TG5Od2JHbDBLSE5sY0dGeVlYUnZjaWs3WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkhaWFFnYzNCc2FYUjBaWElnYldWMGFHOWtJSFJ2SUhOd2JHbDBJSE5sY1hWbGJtTmxjeUIwYnlCdGIyNXZiV1Z5YzF4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkVzVwZEhOY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY0dGeVlYUnZjbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdFRjR3hwZEhSbGNrWjFibU45WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEZOd2JHbDBkR1Z5S0hWdWFYUnpPaUJ6ZEhKcGJtY3NJSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5LVG9nVTNCc2FYUjBaWEpHZFc1aklIdGNiaUFnSUNCcFppQW9kVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzV6ZEdGeWRITlhhWFJvS0NkbVlYTjBZU2NwS1Z4dUlDQWdJQ0FnY21WMGRYSnVJRmRsWWt4dloyOHVjM0JzYVhSMFpYSkJjMFpoYzNSaE8xeHVJQ0FnSUdWc2MyVWdhV1lnS0hWdWFYUnpMblJ2VEc5M1pYSkRZWE5sS0NrdWMzUmhjblJ6VjJsMGFDZ25jMlZ3WVhKaGRHOXlKeWtwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdWMlZpVEc5bmJ5NW5aWFJUY0d4cGRIUmxjbGRwZEdoVFpYQmhjbUYwYjNJb2MyVndZWEpoZEc5eUtUdGNiaUFnSUNBdktseHVJQ0FnSUdWc2MyVWdhV1lnS0hWdWFYUnpMblJ2VEc5M1pYSkRZWE5sS0NrdWMzUmhjblJ6VjJsMGFDZ25hR1ZzYlNjcEtWeHVJQ0FnSUNBZ2NtVjBkWEp1SUZkbFlreHZaMjh1YzNCc2FYUjBaWEpCYzBobGJHMDdYRzRnSUNBZ0x5b3FMMXh1SUNBZ0lHVnNjMlZjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdWVzVsZUhCbFkzUmxaQ0IxYm1sMGN5QWtlM1Z1YVhSemZTQXVZQ2s3WEc1Y2JpQWdJQ0F2THlCVVQwUlBPaUJUY0d4cGRIUmxjaUJtYjNJZ1NFVk1UVnh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJUY0d4cGRIUmxja1p2Y2tOdmJIVnRiaWhqYjJ3NklFUkhMa052YkhWdGJpazZJRk53YkdsMGRHVnlSblZ1WXlCN1hHNGdJQ0FnYVdZZ0tHTnZiQzV6WlcxVWVYQmxJQ0U5UFNCRVJ5NVRSVTFVV1ZCRkxrMUJRMUpQVFU5TVJVTlZURVVwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRWRsZENCemNHeHBkSFJsY2lCbWIzSWdjMlZ0Vkhsd1pTQmNJaVI3UkVjdVUwVk5WRmxRUlM1TlFVTlNUMDFQVEVWRFZVeEZmVndpSUc5dWJIa3VZQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQjFibWwwY3lBOUlHTnZiQzVuWlhSVVlXY29SRWN1VkVGSFV5NVZUa2xVVXlrN1hHNGdJQ0FnWTI5dWMzUWdjMlZ3WVhKaGRHOXlJRDBnWTI5c0xtZGxkRlJoWnlnbmMyVndZWEpoZEc5eUp5azdYRzRnSUNBZ2NtVjBkWEp1SUZkbFlreHZaMjh1WjJWMFUzQnNhWFIwWlhJb2RXNXBkSE1zSUhObGNHRnlZWFJ2Y2lrN1hHNGdJSDFjYmx4dUlDQXZLaW9nVDI1c2VTQnpiMjFsSUc5bUlIUm9aU0J6ZVc1dmJubHRjeTRnVkdobGMyVWdkMlZ5WlNCdlluUmhhVzVsWkNCbWNtOXRJSFJvWlNCamJIVnpkR1Z5WldRZ2IyeHBaMjl3WlhCMGFXUmxJR1JoZEdGelpYUXVJQ292WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUdGaFUzbHViMjU1YlhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklITjBjbWx1WnlCOUlEMGdlMXh1SUNBZ0lDZGJUV1ZPYkdWZEp6b2dKMHduTENBdkx5Qk9iR1VnTFNCdWIzSnNaWFZqYVc1bFhHNGdJQ0FnSjF0TlpVRmRKem9nSjBFbkxGeHVJQ0FnSUNkYlRXVkhYU2M2SUNkSEp5eGNiaUFnSUNBblcwMWxSbDBuT2lBblJpY3NYRzRnSUgwN1hHNTlYRzRpWFgwPSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyIH0gZnJvbSAnLi93b3JrZXJzL2RpbWVuc2lvbmFsaXR5LXJlZHVjaW5nLXdvcmtlci1jcmVhdG9yJztcbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24oZGF0YUNvbCwgbWV0aG9kTmFtZSwgc2ltaWxhcml0eU1ldHJpYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzID0geWllbGQgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyKHsgZGF0YTogZGF0YUNvbCwgbWV0cmljOiBzaW1pbGFyaXR5TWV0cmljIH0sIG1ldGhvZE5hbWUsIG9wdGlvbnMpO1xuICAgICAgICBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcgPSBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcubWFwKGl0ID0+IG5vcm1hbGl6ZShpdCkpO1xuICAgICAgICByZXR1cm4gZGltZW5zaW9uYWxpdHlSZWR1Y2VSZXM7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4ZFdWdVkyVXRjM0JoWTJVdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp6WlhGMVpXNWpaUzF6Y0dGalpTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZGUVN4UFFVRlBMRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkhOVVVzVDBGQlR5eEZRVUZGTEdsRFFVRnBReXhGUVVFclFpeE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJSMnhKTEUxQlFVMHNWVUZCWjBJc2IwTkJRVzlETEVOQlEzUkVMRTlCUVhGRExFVkJRM0pETEZWQlFXdENMRVZCUTJ4Q0xHZENRVUUyUkN4RlFVTTNSQ3hQUVVGaE96dFJRVVZpTEUxQlFVMHNkVUpCUVhWQ0xFZEJRM3BDTEUxQlFVMHNhVU5CUVdsRExFTkJRMjVETEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzWjBKQlFXZENMRVZCUVdkQ0xFVkJRM3BFTEZWQlFWVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVVM1FpeDFRa0ZCZFVJc1EwRkJReXhUUVVGVExFZEJRVWNzZFVKQlFYVkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTlCUVU4c2RVSkJRWFZDTEVOQlFVTTdTVUZEYmtNc1EwRkJRenREUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElFSnBkRUZ5Y21GNUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwySnBkQzFoY25KaGVTYzdYRzVwYlhCdmNuUWdleUJOWVhSeWFYZ3NJRlpsWTNSdmNpQjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3SUc1dmNtMWhiR2w2WlNCOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzWmxZM1J2Y2kxdmNHVnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1cGJYQnZjblFnZXlCQ2FYUkJjbkpoZVUxbGRISnBZM01zSUZOMGNtbHVaMDFsZEhKcFkzTXNJRlpoYkdsa1ZIbHdaWE1zSUZabFkzUnZjazFsZEhKcFkzTWdmU0JtY205dElDY3VMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVhVzF3YjNKMElIc2dZM0psWVhSbFJHbHRaVzV6YVc1aGJHbDBlVkpsWkhWamFXNW5WMjl5YTJWeUxDQkpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUWdmU0JtY205dElDY3VMM2R2Y210bGNuTXZaR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05wYm1jdGQyOXlhMlZ5TFdOeVpXRjBiM0luTzF4dVhHNWNibVY0Y0c5eWRDQmhjM2x1WXlCbWRXNWpkR2x2YmlCeVpXUjFZMlZFYVcxbGJuTnBibUZzYVhSNVYybDBhRTV2Y20xaGJHbDZZWFJwYjI0b1hHNGdJQ0FnWkdGMFlVTnZiRG9nUW1sMFFYSnlZWGxiWFh4V1pXTjBiM0piWFh4emRISnBibWRiWFN3Z1hHNGdJQ0FnYldWMGFHOWtUbUZ0WlRvZ2MzUnlhVzVuTENCY2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJDYVhSQmNuSmhlVTFsZEhKcFkzTjhWbVZqZEc5eVRXVjBjbWxqYzN4VGRISnBibWROWlhSeWFXTnpMRnh1SUNBZ0lHOXdkR2x2Ym5NL09pQmhibmtwT2lCUWNtOXRhWE5sUEVsU1pXUjFZMlZFYVcxbGJuTnBiMjVoYkdsMGVWSmxjM1ZzZEQ0Z2UxeHVYRzRnSUNBZ1kyOXVjM1FnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTTZJRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkQ0E5WEc0Z0lDQWdJQ0FnSUdGM1lXbDBJR055WldGMFpVUnBiV1Z1YzJsdVlXeHBkSGxTWldSMVkybHVaMWR2Y210bGNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUhzZ1pHRjBZVG9nWkdGMFlVTnZiQ3dnYldWMGNtbGpPaUJ6YVcxcGJHRnlhWFI1VFdWMGNtbGpJSDBnWVhNZ1ZtRnNhV1JVZVhCbGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUcxbGRHaHZaRTVoYldVc0lHOXdkR2x2Ym5NcE8xeHVYRzRnSUNBZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuSUQwZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuTG0xaGNDaHBkQ0E5UGlCdWIzSnRZV3hwZW1Vb2FYUXBLVHRjYmlBZ0lDQnlaWFIxY200Z1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE03WEc1OUlsMTkiLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZGlzdGFuY2VNZXRyaWNzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuZXhwb3J0IGNvbnN0IEF2YWlsYWJsZU1ldHJpY3MgPSB7XG4gICAgJ1ZlY3Rvcic6IHtcbiAgICAgICAgJ0V1Y2xpZGVhbkRpc3RhbmNlJzogY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsXG4gICAgfSxcbiAgICAnU3RyaW5nJzoge1xuICAgICAgICAnTGV2ZW5zaHRlaW4nOiBmbC5kaXN0YW5jZSxcbiAgICAgICAgJ0phcm8tV2lua2xlcic6IGphcm9XaW5rbGVyLFxuICAgIH0sXG4gICAgJ0JpdEFycmF5Jzoge1xuICAgICAgICAnVGFuaW1vdG8nOiBkaXN0YW5jZU1ldHJpY3NbJ1Rhbmltb3RvJ10sXG4gICAgICAgICdEaWNlJzogZGlzdGFuY2VNZXRyaWNzWydEaWNlJ10sXG4gICAgICAgICdBc3ltbWV0cmljJzogZGlzdGFuY2VNZXRyaWNzWydBc3ltbWV0cmljJ10sXG4gICAgICAgICdCcmF1bi1CbGFucXVldCc6IGRpc3RhbmNlTWV0cmljc1snQnJhdW4tQmxhbnF1ZXQnXSxcbiAgICAgICAgJ0Nvc2luZSc6IGRpc3RhbmNlTWV0cmljc1snQ29zaW5lJ10sXG4gICAgICAgICdLdWxjenluc2tpJzogZGlzdGFuY2VNZXRyaWNzWydLdWxjenluc2tpJ10sXG4gICAgICAgICdNYy1Db25uYXVnaGV5JzogZGlzdGFuY2VNZXRyaWNzWydNYy1Db25uYXVnaGV5J10sXG4gICAgICAgICdSb2dvdC1Hb2xkYmVyZyc6IGRpc3RhbmNlTWV0cmljc1snUm9nb3QtR29sZGJlcmcnXSxcbiAgICAgICAgJ1J1c3NlbCc6IGRpc3RhbmNlTWV0cmljc1snUnVzc2VsJ10sXG4gICAgICAgICdTb2thbCc6IGRpc3RhbmNlTWV0cmljc1snU29rYWwnXSxcbiAgICB9LFxufTtcbmV4cG9ydCBjb25zdCBNZXRyaWNUb0RhdGFUeXBlID0gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcylcbiAgICAucmVkdWNlKChyZXQsIGtleSkgPT4ge1xuICAgIGZvciAoY29uc3QgdmFsIG9mIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3Nba2V5XSkpIHtcbiAgICAgICAgcmV0W3ZhbF0gPSBrZXk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59LCB7fSk7XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdTdHJpbmcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQml0QXJyYXlNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdCaXRBcnJheSc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdWZWN0b3InO1xufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEByZXR1cm4ge0Rpc3RhbmNlTWV0cmljfSBDYWxsYmFjayBvZiB0aGUgbWVhc3VyZSBjaG9zZW4uXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgZ2V0TWVhc3VyZSgpIHtcbiAgICAgICAgY29uc3QgZGljdCA9IEF2YWlsYWJsZU1ldHJpY3M7XG4gICAgICAgIHJldHVybiBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWVhc3VyZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WldRdGJXVjBjbWxqY3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblI1Y0dWa0xXMWxkSEpwWTNNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4eFFrRkJjVUlzUTBGQlF6dEJRVU14UXl4UFFVRlBMRVZCUVVNc1YwRkJWeXhGUVVGRExFMUJRVTBzZVVKQlFYbENMRU5CUVVNN1FVRkZjRVFzVDBGQlR5eEZRVUZETEdWQlFXVXNSVUZCUXl4TlFVRk5MR3RFUVVGclJDeERRVUZETzBGQlEycEdMRTlCUVU4c1JVRkJReXd3UWtGQk1FSXNSVUZCUXl4TlFVRk5MR2xFUVVGcFJDeERRVUZETzBGQlNUTkdMRTFCUVUwc1EwRkJReXhOUVVGTkxHZENRVUZuUWl4SFFVRkhPMGxCUXpsQ0xGRkJRVkVzUlVGQlJUdFJRVU5TTEcxQ1FVRnRRaXhGUVVGRkxEQkNRVUV3UWp0TFFVTm9SRHRKUVVORUxGRkJRVkVzUlVGQlJUdFJRVU5TTEdGQlFXRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVVHRSUVVNeFFpeGpRVUZqTEVWQlFVVXNWMEZCVnp0TFFVTTFRanRKUVVORUxGVkJRVlVzUlVGQlJUdFJRVU5XTEZWQlFWVXNSVUZCUlN4bFFVRmxMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRM1pETEUxQlFVMHNSVUZCUlN4bFFVRmxMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJReTlDTEZsQlFWa3NSVUZCUlN4bFFVRmxMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRek5ETEdkQ1FVRm5RaXhGUVVGRkxHVkJRV1VzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRSUVVOdVJDeFJRVUZSTEVWQlFVVXNaVUZCWlN4RFFVRkRMRkZCUVZFc1EwRkJRenRSUVVOdVF5eFpRVUZaTEVWQlFVVXNaVUZCWlN4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVNelF5eGxRVUZsTEVWQlFVVXNaVUZCWlN4RFFVRkRMR1ZCUVdVc1EwRkJRenRSUVVOcVJDeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbExFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1VVRkRia1FzVVVGQlVTeEZRVUZGTEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkRia01zVDBGQlR5eEZRVUZGTEdWQlFXVXNRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRiRU03UTBGRFJpeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc1owSkJRV2RDTEVkQlFYRkNMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1MwRkROVVVzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCY1VJc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJUdEpRVU55UXl4TFFVRkxMRTFCUVUwc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUjBGQmVVSXNRMEZCUXl4RFFVRkRMRVZCUVVVN1VVRkRNVVVzUjBGQlJ5eERRVUZETEVkQlFYbENMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03UzBGRGRFTTdTVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFWZFVMRTFCUVUwc1ZVRkJWU3hqUVVGakxFTkJRVU1zU1VGQmEwSTdTVUZETDBNc1QwRkJUeXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hSUVVGUkxFTkJRVU03UVVGRE5VTXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4SlFVRnJRanRKUVVOcVJDeFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZWQlFWVXNRMEZCUXp0QlFVTTVReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SlFVRnJRanRKUVVNdlF5eFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZGQlFWRXNRMEZCUXp0QlFVTTFReXhEUVVGRE8wRkJSVVFzTkVSQlFUUkVPMEZCUXpWRUxFMUJRVTBzVDBGQlR5eFBRVUZQTzBsQlNXeENPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTFCUVc5Q08xRkJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRjFRaXhEUVVGRE8wbEJRMnBGTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwa3NWVUZCVlR0UlFVTm1MRTFCUVUwc1NVRkJTU3hIUVVGelJDeG5Ra0ZCWjBJc1EwRkJRenRSUVVOcVJpeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUXpGRExFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eFJRVUUwUWp0UlFVTTFSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSQ3hEUVVGRE8wbEJSVVE3TzAxQlJVVTdTVUZEUml4TlFVRk5MRXRCUVVzc2FVSkJRV2xDTzFGQlF6RkNMRTlCUVU4c1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdRMEZEUmlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR1pzSUdaeWIyMGdKMlpoYzNSbGMzUXRiR1YyWlc1emFIUmxhVzRuTzF4dWFXMXdiM0owSUh0cVlYSnZWMmx1YTJ4bGNuMGdabkp2YlNBbmFtRnlieTEzYVc1cmJHVnlMWFI1Y0dWelkzSnBjSFFuTzF4dWFXMXdiM0owSUh0RWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0a2FYTjBZVzVqWlUxbGRISnBZM045SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNOcGJXbHNZWEpwZEhrdGJXVjBjbWxqY3ljN1hHNXBiWEJ2Y25RZ2UyTmhiR04xYkdGMFpVVjFZMnhwWkdWaGJrUnBjM1JoYm1ObGZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTJaV04wYjNJdGIzQmxjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZZbWwwTFdGeWNtRjVKenRjYm1sdGNHOXlkQ0I3Vm1WamRHOXlMQ0JUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JCZG1GcGJHRmliR1ZOWlhSeWFXTnpJRDBnZTF4dUlDQW5WbVZqZEc5eUp6b2dlMXh1SUNBZ0lDZEZkV05zYVdSbFlXNUVhWE4wWVc1alpTYzZJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1SUNCOUxGeHVJQ0FuVTNSeWFXNW5Kem9nZTF4dUlDQWdJQ2RNWlhabGJuTm9kR1ZwYmljNklHWnNMbVJwYzNSaGJtTmxMRnh1SUNBZ0lDZEtZWEp2TFZkcGJtdHNaWEluT2lCcVlYSnZWMmx1YTJ4bGNpeGNiaUFnZlN4Y2JpQWdKMEpwZEVGeWNtRjVKem9nZTF4dUlDQWdJQ2RVWVc1cGJXOTBieWM2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVkdGdWFXMXZkRzhuWFN4Y2JpQWdJQ0FuUkdsalpTYzZJR1JwYzNSaGJtTmxUV1YwY21samMxc25SR2xqWlNkZExGeHVJQ0FnSUNkQmMzbHRiV1YwY21sakp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZEJjM2x0YldWMGNtbGpKMTBzWEc0Z0lDQWdKMEp5WVhWdUxVSnNZVzV4ZFdWMEp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZENjbUYxYmkxQ2JHRnVjWFZsZENkZExGeHVJQ0FnSUNkRGIzTnBibVVuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjBOdmMybHVaU2RkTEZ4dUlDQWdJQ2RMZFd4amVubHVjMnRwSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkTGRXeGplbmx1YzJ0cEoxMHNYRzRnSUNBZ0owMWpMVU52Ym01aGRXZG9aWGtuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjAxakxVTnZibTVoZFdkb1pYa25YU3hjYmlBZ0lDQW5VbTluYjNRdFIyOXNaR0psY21jbk9pQmthWE4wWVc1alpVMWxkSEpwWTNOYkoxSnZaMjkwTFVkdmJHUmlaWEpuSjEwc1hHNGdJQ0FnSjFKMWMzTmxiQ2M2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVW5WemMyVnNKMTBzWEc0Z0lDQWdKMU52YTJGc0p6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZFRiMnRoYkNkZExGeHVJQ0I5TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElFMWxkSEpwWTFSdlJHRjBZVlI1Y0dVNklGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZOWlhSeWFXTnpLVnh1SUNBdWNtVmtkV05sS0NoeVpYUTZJRk4wY21sdVowUnBZM1JwYjI1aGNua3NJR3RsZVNrZ1BUNGdlMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdkbUZzSUc5bUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJhMlY1SUdGeklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMxMHBLU0I3WEc0Z0lDQWdJQ0J5WlhSYmRtRnNJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwZ1BTQnJaWGs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgwc0lIdDlLVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdRWFpoYVd4aFlteGxSR0YwWVZSNWNHVnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNWxlSEJ2Y25RZ2RIbHdaU0JUZEhKcGJtZE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFOMGNtbHVaeWRkTzF4dVpYaHdiM0owSUhSNWNHVWdRbWwwUVhKeVlYbE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjBKcGRFRnljbUY1SjEwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JXWldOMGIzSk5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFabFkzUnZjaWRkTzF4dVpYaHdiM0owSUhSNWNHVWdTMjV2ZDI1TlpYUnlhV056SUQwZ1UzUnlhVzVuVFdWMGNtbGpjeUI4SUVKcGRFRnljbUY1VFdWMGNtbGpjeUI4SUZabFkzUnZjazFsZEhKcFkzTTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGWmhiR2xrVkhsd1pYTWdQU0I3WkdGMFlUb2djM1J5YVc1blcxMHNJRzFsZEhKcFl6b2dVM1J5YVc1blRXVjBjbWxqYzMwZ2ZDQjdaR0YwWVRvZ1ZtVmpkRzl5VzEwc0lHMWxkSEpwWXpvZ1ZtVmpkRzl5VFdWMGNtbGpjMzBnZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh0a1lYUmhPaUJDYVhSQmNuSmhlVnRkTENCdFpYUnlhV002SUVKcGRFRnljbUY1VFdWMGNtbGpjMzA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjBjbWx1WjAxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ0oxTjBjbWx1WnljN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzBKcGRFRnljbUY1VFdWMGNtbGpLRzVoYldVNklFdHViM2R1VFdWMGNtbGpjeWtnZTF4dUlDQnlaWFIxY200Z1RXVjBjbWxqVkc5RVlYUmhWSGx3WlZ0dVlXMWxYU0E5UFNBblFtbDBRWEp5WVhrbk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOV1pXTjBiM0pOWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkV1pXTjBiM0luTzF4dWZWeHVYRzR2S2lvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElITjBjbWx1WnlCdFpXRnpkWEpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTlpXRnpkWEpsSUh0Y2JpQWdjSEp2ZEdWamRHVmtJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056TzF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVZSNWNHVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCTlpXRnpkWEpsSUhkcGRHZ2dMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXVjBhRzlrSUUxbGRHaHZaQ0IwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCemRISnBibWR6TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lDQWdkR2hwY3k1dFpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdkR2hwY3k1a1lYUmhWSGx3WlNBOUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJXVjBhRzlrWFNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJqZFhOMGIyMGdjM1J5YVc1bklHUnBjM1JoYm1ObElHWjFibU4wYVc5dUlITndaV05wWm1sbFpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHbHpkR0Z1WTJWTlpYUnlhV045SUVOaGJHeGlZV05ySUc5bUlIUm9aU0J0WldGemRYSmxJR05vYjNObGJpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlFMWxZWE4xY21WeVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBUV1ZoYzNWeVpTZ3BPaUJFYVhOMFlXNWpaVTFsZEhKcFl5QjdYRzRnSUNBZ1kyOXVjM1FnWkdsamREb2dlMXRyWlhrNklITjBjbWx1WjEwNklIdGJhMlY1TWpvZ2MzUnlhVzVuWFRvZ1JHbHpkR0Z1WTJWTlpYUnlhV045ZlNBOUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNGdJQ0FnY21WMGRYSnVJR1JwWTNSYmRHaHBjeTVrWVhSaFZIbHdaVjFiZEdocGN5NXRaWFJvYjJSZE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdZM1Z6ZEc5dElITjBjbWx1WnlCa2FYTjBZVzVqWlNCaWVTQjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdaR0YwWVZSNWNHVWdUV1YwY21sakozTWdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQk5aWFJ5YVdNZ2JtRnRaWE1nZDJocFkyZ2daWGh3WldOMGN5QjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUk5aWFJ5YVdOQ2VVUmhkR0ZVZVhCbEtHUmhkR0ZVZVhCbE9pQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTXBPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJaR0YwWVZSNWNHVmRLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQlNaWFIxY201eklHMWxkSEpwWXlCdVlXMWxjeUJoZG1GcGJHRmliR1V1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwSUdGMllXbHNZV0pzWlUxbFlYTjFjbVZ6S0NrNklITjBjbWx1WjF0ZElIdGNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbXRsZVhNb1FYWmhhV3hoWW14bFRXVjBjbWxqY3lrN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5sZXQgem9vbSA9IGZhbHNlO1xuLy8gU2VhcmNoZXMgZm9yIGFjdGl2aXR5IGNsaWZmcyBpbiBhIGNoZW1pY2FsIGRhdGFzZXQgYnkgc2VsZWN0ZWQgY3V0b2ZmXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZpdHlDbGlmZnMoZGYsIHNlcUNvbCwgYXhlc05hbWVzLCBzY2F0dGVyVGl0bGUsIGFjdGl2aXRpZXMsIHNpbWlsYXJpdHksIHNpbWlsYXJpdHlNZXRyaWMsIG1ldGhvZE5hbWUsIHNlbVR5cGUsIHVuaXRzLCBzZXFTcGFjZUZ1bmMsIHNpbUZ1bmMsIHRvb2x0aXBEcmF3RnVuYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGF1dG9tYXRpY1NpbWlsYXJpdHlMaW1pdCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBNSU5fU0lNSUxBUklUWSA9IDgwO1xuICAgICAgICBjb25zdCBpbml0aWFsU2ltaWxhcml0eUxpbWl0ID0gYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID8gTUlOX1NJTUlMQVJJVFkgOiBzaW1pbGFyaXR5IC8gMTAwO1xuICAgICAgICBjb25zdCB7IGRpc3RhbmNlLCBjb29yZGluYXRlcyB9ID0geWllbGQgc2VxU3BhY2VGdW5jKHtcbiAgICAgICAgICAgIHNlcUNvbDogc2VxQ29sLFxuICAgICAgICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgICAgICAgICBlbWJlZEF4ZXNOYW1lczogYXhlc05hbWVzLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29vcmRpbmF0ZXMpXG4gICAgICAgICAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuICAgICAgICBjb25zdCBkZlNlcSA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCAnc2VxJywgc2VxQ29sLnRvTGlzdCgpKV0pO1xuICAgICAgICBjb25zdCBkaW0gPSBzZXFDb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBzaW1BcnIgPSBBcnJheShkaW0gLSAxKTtcbiAgICAgICAgaWYgKCFkaXN0YW5jZSlcbiAgICAgICAgICAgIHlpZWxkIGdldFNpbWlsYXJpdGllc01hcml4KGRpbSwgc2VxQ29sLCBkZlNlcSwgc2ltQXJyLCBzaW1GdW5jKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZ2V0U2ltaWxhcml0aWVzTWFyaXhGcm9tRGlzdGFuY2VzKGRpbSwgZGlzdGFuY2UsIHNpbUFycik7XG4gICAgICAgIGNvbnN0IG9wdFNpbWlsYXJpdHlMaW1pdCA9IGluaXRpYWxTaW1pbGFyaXR5TGltaXQ7XG4gICAgICAgIGNvbnN0IHNpbVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2FsaVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3QgbjEgPSBbXTtcbiAgICAgICAgY29uc3QgbjIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiAhPSBkaW0gLSAxIC0gaTsgKytqKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2ltID0gc2ltQXJyW2ldLmdldChqKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltID49IG9wdFNpbWlsYXJpdHlMaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICBuMS5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICBuMi5wdXNoKGkgKyBqICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIHNpbVZhbHMucHVzaChzaW0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQoaSkgLSBhY3Rpdml0aWVzLmdldChpICsgaiArIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpbSAhPSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChkaWZmIC8gKDEgLSBzaW0pKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChJbmZpbml0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhbGlWYWxzV2l0aG91dEluZmluaXR5ID0gc2FsaVZhbHMuZmlsdGVyKGl0ID0+IGl0ICE9PSBJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNaW4gPSBNYXRoLm1pbiguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNYXggPSBNYXRoLm1heCguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlPcGFjaXR5Q29lZiA9IDAuOCAvIChzYWxpTWF4IC0gc2FsaU1pbik7XG4gICAgICAgIGNvbnN0IG5laWdoYm91cnNDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNhbGlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IG4xLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjFbaV1dICs9IDE7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjJbaV1dICs9IDE7XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjFbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjJbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBpZiAoc2FsaVZhbHNbaV0gIT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdGllcy5nZXQobjFbaV0pID4gYWN0aXZpdGllcy5nZXQobjJbaV0pKVxuICAgICAgICAgICAgICAgICAgICBzYWxpQ291bnRbbjFbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgc2FsaUNvdW50W24yW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzYWxpID0gREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBgc2FsaV8ke2F4ZXNOYW1lc1swXS5zdWJzdHJpbmcoYXhlc05hbWVzWzBdLmxhc3RJbmRleE9mKCdfJykpfWAsIHNhbGlDb3VudCk7XG4gICAgICAgIGRmLmNvbHVtbnMuYWRkKHNhbGkpO1xuICAgICAgICBjb25zdCB2aWV3ID0gZ3Jvay5zaGVsbC5nZXRUYWJsZVZpZXcoZGYubmFtZSk7XG4gICAgICAgIGNvbnN0IHNwID0gdmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7XG4gICAgICAgICAgICB4Q29sdW1uTmFtZTogYXhlc05hbWVzWzBdLFxuICAgICAgICAgICAgeUNvbHVtbk5hbWU6IGF4ZXNOYW1lc1sxXSxcbiAgICAgICAgICAgIHNpemU6IHNhbGkubmFtZSxcbiAgICAgICAgICAgIGNvbG9yOiBhY3Rpdml0aWVzLm5hbWUsXG4gICAgICAgICAgICBzaG93WFNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dZU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd1NpemVTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93Q29sb3JTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBtYXJrZXJNaW5TaXplOiA1LFxuICAgICAgICAgICAgbWFya2VyTWF4U2l6ZTogMjUsXG4gICAgICAgICAgICB0aXRsZTogc2NhdHRlclRpdGxlXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3QgY2FudmFzID0gc3AuZ2V0SW5mbygpWydjYW52YXMnXTtcbiAgICAgICAgY29uc3QgbGluZXNSZXMgPSBjcmVhdGVMaW5lcyhuMSwgbjIsIHNlcUNvbCwgYWN0aXZpdGllcywgc2FsaVZhbHMsIHNlbVR5cGUsIHVuaXRzKTtcbiAgICAgICAgY29uc3QgdG9vbHRpcHMgPSB7fTtcbiAgICAgICAgbGluZXNSZXMubGluZXNEZi5vbkN1cnJlbnRDZWxsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE1vbElkeCA9IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudENvbCAmJiBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wubmFtZSA9PT0gJzJfc2VxJyA/IDEgOiAwO1xuICAgICAgICAgICAgc3AuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPVxuICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gLTEgPyBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdLm1vbHNbY3VycmVudE1vbElkeF0gOiAtMTtcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLm9uU2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHhdO1xuICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpbmVzRGZHcmlkID0gbGluZXNSZXMubGluZXNEZi5wbG90LmdyaWQoKS5zb3J0KFsnYWN0X2RpZmYnXSwgW2ZhbHNlXSk7XG4gICAgICAgIGxpbmVzRGZHcmlkLm9uQ2VsbENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB6b29tID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpc3RDbGlmZnNMaW5rID0gdWkuYnV0dG9uKGAke2xpbmVzUmVzLmxpbmVzRGYucm93Q291bnR9IGNsaWZmc2AsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWZmc0RpYWxvZyA9IHVpLmRpYWxvZyh7IHRpdGxlOiAnQWN0aXZpdHkgY2xpZmZzJyB9KVxuICAgICAgICAgICAgICAgIC5hZGQobGluZXNEZkdyaWQucm9vdClcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgY2xpZmZzRGlhbG9nLnJvb3QuaWQgPSAnY2xpZmZzX2RpYWxvZyc7XG4gICAgICAgIH0pO1xuICAgICAgICBsaXN0Q2xpZmZzTGluay5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnRvcCA9ICcxMHB4JztcbiAgICAgICAgbGlzdENsaWZmc0xpbmsuc3R5bGUucmlnaHQgPSAnMTBweCc7XG4gICAgICAgIHNwLnJvb3QuYXBwZW5kKGxpc3RDbGlmZnNMaW5rKTtcbiAgICAgICAgbGV0IHRpbWVyO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgICAgdGltZXIgPSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdG9vbHRpcHNbbGluZS5pZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRyYXdUb29sdGlwUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB0b29sdGlwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmOiBkZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwRHJhd0Z1bmMoZHJhd1Rvb2x0aXBQYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvdyh0b29sdGlwc1tsaW5lLmlkXSwgZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgICAgICAgICAgaWYgKGxpbmUgJiYgZGYubW91c2VPdmVyUm93SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXNEZi5zZWxlY3Rpb24uc2V0KGxpbmUuaWQsIGxpbmUuc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggIT09IGxpbmUuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA9IGxpbmUuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5jdXJyZW50Um93SWR4ID0gbGluZS5tb2xzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCAhbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzcC5vbkV2ZW50KCdkNC1iZWZvcmUtZHJhdy1zY2VuZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHJlbmRlckxpbmVzKHNwLCBheGVzTmFtZXNbMF0sIGF4ZXNOYW1lc1sxXSwgbGluZXNSZXMsIHNhbGlWYWxzLCBzYWxpT3BhY2l0eUNvZWYsIHNhbGlNaW4pO1xuICAgICAgICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TGluZSA9IGxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF07XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgem9vbUxlZnQsIHpvb21SaWdodCwgem9vbVRvcCwgem9vbUJvdHRvbSB9ID0gZ2V0Wm9vbUNvb3JkaW5hdGVzKHNwLnZpZXdwb3J0LndpZHRoLCBzcC52aWV3cG9ydC5oZWlnaHQsIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzBdLCBjdXJyZW50TGluZS5tb2xzWzBdKSwgc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pLCBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1sxXSksIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzFdLCBjdXJyZW50TGluZS5tb2xzWzFdKSk7XG4gICAgICAgICAgICAgICAgICAgIHNwLnpvb20oem9vbUxlZnQsIHpvb21Ub3AsIHpvb21SaWdodCwgem9vbUJvdHRvbSk7XG4gICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICB6b29tID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzcC5hZGRQcm9wZXJ0eSgnc2ltaWxhcml0eUxpbWl0JywgJ2RvdWJsZScsIG9wdFNpbWlsYXJpdHlMaW1pdCk7XG4gICAgICAgIHJldHVybiBzcDtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldFpvb21Db29yZGluYXRlcyhXMCwgSDAsIHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgY29uc3QgVzEgPSBNYXRoLmFicyh4MSAtIHgyKTtcbiAgICBjb25zdCBIMSA9IE1hdGguYWJzKHkxIC0geTIpO1xuICAgIGNvbnN0IHNjYWxlVyA9IFcwIC8gVzE7XG4gICAgY29uc3Qgc2NhbGVIID0gSDAgLyBIMTtcbiAgICBjb25zdCBzY2FsZSA9IE1hdGgubWluKHNjYWxlVywgc2NhbGVIKTtcbiAgICBjb25zdCBXMiA9IChXMCAvIHNjYWxlKSAqIDU7XG4gICAgY29uc3QgSDIgPSAoSDAgLyBzY2FsZSkgKiA1O1xuICAgIGNvbnN0IGxlZnQgPSB4MSA8IHgyID8geDEgOiB4MjtcbiAgICBjb25zdCB0b3AgPSB5MSA+IHkyID8geTEgOiB5MjtcbiAgICBjb25zdCB6b29tTGVmdCA9IChsZWZ0ICsgVzEgLyAyKSAtIFcyIC8gMjtcbiAgICBjb25zdCB6b29tUmlnaHQgPSB6b29tTGVmdCArIFcyO1xuICAgIGNvbnN0IHpvb21Ub3AgPSAodG9wIC0gSDEgLyAyKSArIEgyIC8gMjtcbiAgICBjb25zdCB6b29tQm90dG9tID0gem9vbVRvcCAtIEgyO1xuICAgIHJldHVybiB7IHpvb21MZWZ0OiB6b29tTGVmdCwgem9vbVJpZ2h0OiB6b29tUmlnaHQsIHpvb21Ub3A6IHpvb21Ub3AsIHpvb21Cb3R0b206IHpvb21Cb3R0b20gfTtcbn1cbmZ1bmN0aW9uIGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzKSB7XG4gICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgICBjb25zdCB5ID0gZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBjb25zdCBkaXN0ID0gTWF0aC5hYnMoTWF0aC5oeXBvdChsaW5lLmFbMF0gLSB4LCBsaW5lLmFbMV0gLSB5KSArXG4gICAgICAgICAgICBNYXRoLmh5cG90KGxpbmUuYlswXSAtIHgsIGxpbmUuYlsxXSAtIHkpIC0gTWF0aC5oeXBvdChsaW5lLmFbMF0gLSBsaW5lLmJbMF0sIGxpbmUuYVsxXSAtIGxpbmUuYlsxXSkpO1xuICAgICAgICBpZiAoZGlzdCA8IDIpXG4gICAgICAgICAgICByZXR1cm4gbGluZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiByZW5kZXJMaW5lcyhzcCwgeEF4aXMsIHlBeGlzLCBsaW5lc1Jlcywgc2FsaVZhbHMsIHNhbGlPcGFjaXR5Q29lZiwgc2FsaU1pbikge1xuICAgIGNvbnN0IGxpbmVzID0gbGluZXNSZXMubGluZXM7XG4gICAgY29uc3QgY2FudmFzID0gc3AuZ2V0SW5mbygpWydjYW52YXMnXTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjb25zdCB4ID0gc3AuZGF0YUZyYW1lLmNvbHVtbnMuYnlOYW1lKHhBeGlzKTtcbiAgICBjb25zdCB5ID0gc3AuZGF0YUZyYW1lLmNvbHVtbnMuYnlOYW1lKHlBeGlzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBvaW50RnJvbSA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1swXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgICAgICAgY29uc3QgcG9pbnRUbyA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1sxXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICAgICAgbGluZXNbaV0uYSA9IFtwb2ludEZyb20ueCwgcG9pbnRGcm9tLnldO1xuICAgICAgICBsaW5lc1tpXS5iID0gW3BvaW50VG8ueCwgcG9pbnRUby55XTtcbiAgICAgICAgY29uc3QgbGluZSA9IG5ldyBQYXRoMkQoKTtcbiAgICAgICAgbGluZS5tb3ZlVG8obGluZXNbaV0uYVswXSwgbGluZXNbaV0uYVsxXSk7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gbGluZXNbaV0uc2VsZWN0ZWQgPyAnMjU1LDI1NSwwJyA6ICcwLDEyOCwwJztcbiAgICAgICAgY29uc3Qgb3BhY2l0eSA9IHNhbGlWYWxzW2ldID09PSBJbmZpbml0eSA/IDEgOiAwLjIgKyAoc2FsaVZhbHNbaV0gLSBzYWxpTWluKSAqIHNhbGlPcGFjaXR5Q29lZjtcbiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gYHJnYmEoJHtjb2xvcn0sJHtvcGFjaXR5fSlgO1xuICAgICAgICBjdHgubGluZVdpZHRoID0gbGluZXNbaV0uaWQgPT09IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA/IDMgOiAxO1xuICAgICAgICBsaW5lLmxpbmVUbyhsaW5lc1tpXS5iWzBdLCBsaW5lc1tpXS5iWzFdKTtcbiAgICAgICAgY3R4LnN0cm9rZShsaW5lKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xufVxuZnVuY3Rpb24gY3JlYXRlTGluZXMobjEsIG4yLCBzZXEsIGFjdGl2aXRpZXMsIHNhbGlWYWxzLCBzZW1UeXBlLCB1bml0cykge1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBudW0xID0gbjFbaV07XG4gICAgICAgIGNvbnN0IG51bTIgPSBuMltpXTtcbiAgICAgICAgbGluZXMucHVzaCh7IGlkOiBpLCBtb2xzOiBbbnVtMSwgbnVtMl0sIHNlbGVjdGVkOiBmYWxzZSwgYTogW10sIGI6IFtdIH0pO1xuICAgIH1cbiAgICBjb25zdCBsaW5lc0RmID0gREcuRGF0YUZyYW1lLmNyZWF0ZShsaW5lcy5sZW5ndGgpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzFfc2VxJykuaW5pdCgoaSkgPT4gc2VxLmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld1N0cmluZygnMl9zZXEnKS5pbml0KChpKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ2FjdF9kaWZmJylcbiAgICAgICAgLmluaXQoKGkpID0+IE1hdGguYWJzKGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pIC0gYWN0aXZpdGllcy5nZXQobGluZXNbaV0ubW9sc1sxXSkpKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3SW50KCdsaW5lX2luZGV4JykuaW5pdCgoaSkgPT4gaSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdzYWxpJykuaW5pdCgoaSkgPT4gc2FsaVZhbHNbaV0pO1xuICAgIGxpbmVzRGYuY29sKCcxX3NlcScpLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgICBsaW5lc0RmLmNvbCgnMl9zZXEnKS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gICAgbGluZXNEZi5jb2woJzFfc2VxJykuc2VtVHlwZSA9IHNlbVR5cGU7XG4gICAgbGluZXNEZi5jb2woJzJfc2VxJykuc2VtVHlwZSA9IHNlbVR5cGU7XG4gICAgcmV0dXJuIHsgbGluZXMsIGxpbmVzRGYgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeChkaW0sIHNlcUNvbCwgZGZTZXEsIHNpbUFyciwgc2ltRnVuYykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGRpbSAtIDE7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgbW9sID0gc2VxQ29sLmdldChpKTtcbiAgICAgICAgICAgIGRmU2VxLnJvd3MucmVtb3ZlQXQoMCwgMSwgZmFsc2UpO1xuICAgICAgICAgICAgc2ltQXJyW2ldID0gKHlpZWxkIHNpbUZ1bmMoZGZTZXEuY29sKCdzZXEnKSwgbW9sKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNpbUFycjtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeEZyb21EaXN0YW5jZXMoZGltLCBkaXN0YW5jZXMsIHNpbUFycikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltIC0gMTsgKytpKSB7XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlBcnIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgZGltOyArK2opXG4gICAgICAgICAgICBzaW1pbGFyaXR5QXJyLnB1c2goZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZXNbaV1bal0pKTtcbiAgICAgICAgc2ltQXJyW2ldID0gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoJ3NpbWlsYXJpdHknLCBGbG9hdDMyQXJyYXkuZnJvbShzaW1pbGFyaXR5QXJyKSk7XG4gICAgfVxuICAgIHJldHVybiBzaW1BcnI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZV04wYVhacGRIa3RZMnhwWm1aekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWVdOMGFYWnBkSGt0WTJ4cFptWnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenRCUVVGQkxFOUJRVThzUzBGQlN5eEpRVUZKTEUxQlFVMHNiVUpCUVcxQ0xFTkJRVU03UVVGRE1VTXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3hwUWtGQmFVSXNRMEZCUXp0QlFVTjBReXhQUVVGUExFdEJRVXNzUlVGQlJTeE5RVUZOTEdsQ1FVRnBRaXhEUVVGRE8wRkJSWFJETEU5QlFVOHNSVUZCUlN4NVFrRkJlVUlzUlVGQlJTeE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJjME0zUml4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGRmFrSXNkMFZCUVhkRk8wRkJRM2hGTEUxQlFVMHNWVUZCWjBJc2FVSkJRV2xDTEVOQlEyNURMRVZCUVdkQ0xFVkJRMmhDTEUxQlFXbENMRVZCUTJwQ0xGTkJRVzFDTEVWQlEyNUNMRmxCUVc5Q0xFVkJRM0JDTEZWQlFYRkNMRVZCUTNKQ0xGVkJRV3RDTEVWQlEyeENMR2RDUVVGM1FpeEZRVU40UWl4VlFVRnJRaXhGUVVOc1FpeFBRVUZsTEVWQlEyWXNTMEZCWVN4RlFVTmlMRmxCUVRaRkxFVkJRemRGTEU5QlFXMUZMRVZCUTI1RkxHVkJRWEZFTEVWQlEzSkVMRTlCUVdFN08xRkJRMllzVFVGQlRTeDNRa0ZCZDBJc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRGRrTXNUVUZCVFN4alFVRmpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJSVEZDTEUxQlFVMHNjMEpCUVhOQ0xFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1EwRkJReXhEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVVMVJpeE5RVUZOTEVWQlFVTXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJReXhIUVVGSExFMUJRVTBzV1VGQldTeERRVUZETzFsQlEycEVMRTFCUVUwc1JVRkJSU3hOUVVGTk8xbEJRMlFzVlVGQlZTeEZRVUZGTEZWQlFWVTdXVUZEZEVJc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ08xbEJRMnhETEdOQlFXTXNSVUZCUlN4VFFVRlRPMWxCUTNwQ0xFOUJRVThzUlVGQlJTeFBRVUZQTzFOQlEycENMRU5CUVVNc1EwRkJRenRSUVVWSUxFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NWMEZCVnp0WlFVTXpRaXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVWMFFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeExRVUZMTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hOUVVGTkxFZEJRV2RDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk0wTXNTVUZCU1N4RFFVRkRMRkZCUVZFN1dVRkRXQ3hOUVVGTkxHOUNRVUZ2UWl4RFFVRkRMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenM3V1VGRmFFVXNhVU5CUVdsRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVVelJDeE5RVUZOTEd0Q1FVRnJRaXhIUVVGSExITkNRVUZ6UWl4RFFVRkRPMUZCUld4RUxFMUJRVTBzVDBGQlR5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTTNRaXhOUVVGTkxGRkJRVkVzUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZET1VJc1RVRkJUU3hGUVVGRkxFZEJRV0VzUlVGQlJTeERRVUZETzFGQlEzaENMRTFCUVUwc1JVRkJSU3hIUVVGaExFVkJRVVVzUTBGQlF6dFJRVVY0UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU5xUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdaMEpCUTNKRExFMUJRVTBzUjBGQlJ5eEhRVUZYTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUlhKRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEd0Q1FVRnJRaXhGUVVGRk8yOUNRVU0zUWl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTllMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGJrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYkVJc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOeVJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPM2RDUVVOV0xGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdPM2RDUVVWb1F5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8ybENRVU16UWp0aFFVTkdPMU5CUTBZN1VVRkZSQ3hOUVVGTkxIVkNRVUYxUWl4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRGRrVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNrUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNrUXNUVUZCVFN4bFFVRmxMRWRCUVVjc1IwRkJSeXhIUVVGRExFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUjJoRUxFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXZReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETDBNc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYcERMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEyNURMR1ZCUVdVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzWlVGQlpTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU0xUWl4bFFVRmxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pETEdWQlFXVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRja01zU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1VVRkJVU3hGUVVGRk8yZENRVU16UWl4SlFVRkpMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJReTlETEZOQlFWTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08yOUNRVVZvUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMjVETzFOQlEwWTdVVUZGUkN4TlFVRk5MRWxCUVVrc1IwRkJZeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4UlFVRlJMRVZCUVVVc1VVRkJVU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlJXcEpMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlhKQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTTVReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnNSQ3hYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVazdXVUZEWml4TFFVRkxMRVZCUVVVc1ZVRkJWU3hEUVVGRExFbEJRVWs3V1VGRGRFSXNZVUZCWVN4RlFVRkZMRXRCUVVzN1dVRkRjRUlzWVVGQllTeEZRVUZGTEV0QlFVczdXVUZEY0VJc1owSkJRV2RDTEVWQlFVVXNTMEZCU3p0WlFVTjJRaXhwUWtGQmFVSXNSVUZCUlN4TFFVRkxPMWxCUTNoQ0xHRkJRV0VzUlVGQlJTeERRVUZETzFsQlEyaENMR0ZCUVdFc1JVRkJSU3hGUVVGRk8xbEJRMnBDTEV0QlFVc3NSVUZCUlN4WlFVRlpPMU5CUTNCQ0xFTkJRVU1zUTBGQmVVSXNRMEZCUXp0UlFVVTFRaXhOUVVGTkxFMUJRVTBzUjBGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGREwwTXNUVUZCVFN4UlFVRlJMRWRCUVVjc1YwRkJWeXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNUVUZCVFN4RlFVRkZMRlZCUVZVc1JVRkJSU3hSUVVGUkxFVkJRVVVzVDBGQlR5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTI1R0xFMUJRVTBzVVVGQlVTeEhRVUZSTEVWQlFVVXNRMEZCUXp0UlFVVjZRaXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVTdXVUZEYmtRc1RVRkJUU3hoUVVGaExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRWxCUVVrc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4TFFVRkxMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRNVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4aFFVRmhPMmRDUVVONFFpeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRiRWdzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdXVUZETTBRc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xbEJRekZFTEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVNelFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEYkVRc1NVRkJTU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdWQlFXVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSVHRuUWtGRE0wTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8yZENRVU01UkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0blFrRkRMMElzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJPMjlDUVVOb1FpeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dGhRVU01UWp0WlFVTkVMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEVsQlFVa3NRMEZCUXl4RFFVRkRMRkZCUVZFN2IwSkJRMW9zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKRUxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEwZ3NWMEZCVnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8xRkJRek5DTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1RVRkJUU3hYUVVGWExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJUZEZMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlR0WlFVTnlReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZTQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEZOQlFWTXNSVUZCUlN4SFFVRkhMRVZCUVVVN1dVRkRNMFVzVFVGQlRTeFpRVUZaTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRExFdEJRVXNzUlVGQlJTeHBRa0ZCYVVJc1JVRkJReXhEUVVGRE8ybENRVU4yUkN4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF6dHBRa0ZEY2tJc1NVRkJTU3hGUVVGRkxFTkJRVU03V1VGRFZpeFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhsUVVGbExFTkJRVU03VVVGRGVrTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hqUVVGakxFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNSMEZCUnl4VlFVRlZMRU5CUVVNN1VVRkRNME1zWTBGQll5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRMnhETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dFJRVU53UXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0UlFVVXZRaXhKUVVGSkxFdEJRWEZDTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRmRCUVZjc1JVRkJSU3hWUVVGVkxFdEJRV2xDTzFsQlF6bEVMRmxCUVZrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU53UWl4TFFVRkxMRWRCUVVjc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF6dG5Ra0ZEZUVJc1RVRkJUU3hKUVVGSkxFZEJRVWNzYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRemxFTEVsQlFVa3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhsUVVGbExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdiMEpCUTNKRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRk8zZENRVU4wUWl4TlFVRk5MR2xDUVVGcFFpeEhRVUZIT3pSQ1FVTjRRaXhSUVVGUkxFVkJRVVVzVVVGQlVUczBRa0ZEYkVJc1NVRkJTU3hGUVVGRkxFbEJRVWs3TkVKQlExWXNSVUZCUlN4RlFVRkZMRVZCUVVVN05FSkJRMDRzVFVGQlRTeEZRVUZGTEUxQlFVMDdORUpCUTJRc1VVRkJVU3hGUVVGRkxGVkJRVlU3TkVKQlEzQkNMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zVDBGQlR6czBRa0ZEYUVJc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTzNsQ1FVTnFRaXhEUVVGQk8zZENRVU5FTEdWQlFXVXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzNGQ1FVTndRenR2UWtGRFJDeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMmxDUVVOc1JUdFpRVU5JTEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOWUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETEZkQlFWY3NSVUZCUlN4VlFVRlRMRXRCUVdsQ08xbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMR2xDUVVGcFFpeERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF6bEVMRWxCUVVrc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eGxRVUZsTEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVN1owSkJRM0pETEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSVHR2UWtGRGFrSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdiMEpCUXk5Q0xGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR2UWtGRmRrUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUk8zZENRVU5vUWl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0dlFrRkZOMElzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJUdDNRa0ZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zVVVGQlVUczBRa0ZEV2l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzSkVMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU5LTzNGQ1FVRk5PMjlDUVVOTUxFbEJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhMRXRCUVVzc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJUdDNRa0ZET1VNc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenQzUWtGRGVrTXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVOb1F5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzNkQ1FVTnFSQ3hGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR4UWtGRGFrUTdhVUpCUTBZN1lVRkRSanRSUVVOSUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXh6UWtGQmMwSXNRMEZCUXp0aFFVTXZRaXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTm1MRTFCUVUwc1MwRkJTeXhIUVVGSExGZEJRVmNzUTBGQlF5eEZRVUZGTEVWQlF6RkNMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hGUVVGRkxGRkJRVkVzUlVGQlJTeGxRVUZsTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkROVVVzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTFJc1RVRkJUU3hYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03WjBKQlF6RkVMRlZCUVZVc1EwRkJReXhIUVVGRkxFVkJRVVU3YjBKQlEySXNUVUZCVFN4RlFVRkRMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzVDBGQlR5eEZRVUZGTEZWQlFWVXNSVUZCUXl4SFFVRkhMR3RDUVVGclFpeERRVU51UlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUlVGRGFrSXNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFVkJRMnhDTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlEyNUVMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTI1RUxFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMjVFTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlEzQkVMRU5CUVVFN2IwSkJRMFFzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUTJRc1QwRkJUeXhGUVVOUUxGTkJRVk1zUlVGRFZDeFZRVUZWTEVOQlFVTXNRMEZCUXp0blFrRkRhRUlzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVOU0xFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdZVUZEWkR0UlFVTklMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVXdzUlVGQlJTeERRVUZETEZkQlFWY3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeFJRVUZSTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFJRVU5vUlN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOYUxFTkJRVU03UTBGQlFUdEJRVVZFTEZOQlFWTXNhMEpCUVd0Q0xFTkJRVU1zUlVGQlZTeEZRVUZGTEVWQlFWVXNSVUZCUlN4RlFVRlZMRVZCUVVVc1JVRkJWU3hGUVVGRkxFVkJRVlVzUlVGQlJTeEZRVUZWTzBsQlEyaEhMRTFCUVUwc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRemRDTEUxQlFVMHNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRka0lzVFVGQlRTeE5RVUZOTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOMlFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRE5VSXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpWQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXk5Q0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsQ0xFMUJRVTBzVVVGQlVTeEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpGRExFMUJRVTBzVTBGQlV5eEhRVUZITEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRhRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRlRU1zVFVGQlRTeFZRVUZWTEVkQlFVY3NUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOb1F5eFBRVUZQTEVWQlFVTXNVVUZCVVN4RlFVRkZMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETzBGQlF6bEdMRU5CUVVNN1FVRkZSQ3hUUVVGVExHbENRVUZwUWl4RFFVRkRMRXRCUVZVc1JVRkJSU3hOUVVGWExFVkJRVVVzUzBGQll6dEpRVU5vUlN4TlFVRk5MRWxCUVVrc1IwRkJSeXhOUVVGTkxFTkJRVU1zY1VKQlFYRkNMRVZCUVVVc1EwRkJRenRKUVVNMVF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdTVUZEY0VNc1RVRkJUU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8wbEJRMjVETEV0QlFVc3NUVUZCVFN4SlFVRkpMRWxCUVVrc1MwRkJTeXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNTVUZCU1N4SFFVTlNMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnFSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUnl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRE8xbEJRMVlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTMEZEWmp0SlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFTEZOQlFWTXNWMEZCVnl4RFFVRkRMRVZCUVhkQ0xFVkJRek5ETEV0QlFXRXNSVUZCUlN4TFFVRmhMRVZCUVVVc1VVRkJkMElzUlVGQlJTeFJRVUZyUWl4RlFVRkZMR1ZCUVhWQ0xFVkJRVVVzVDBGQlpUdEpRVU53U0N4TlFVRk5MRXRCUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlF6ZENMRTFCUVUwc1RVRkJUU3hIUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFUaENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03U1VGRGJrVXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFUWkNMRU5CUVVNN1NVRkRhRVVzVFVGQlRTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZVc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUXpsRExFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4VFFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTTVReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTnlReXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNrWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1R0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNFTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hOUVVGTkxFVkJRVVVzUTBGQlF6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUXpGRUxFMUJRVTBzVDBGQlR5eEhRVUZITEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGRExHVkJRV1VzUTBGQlF6dFJRVU0zUml4SFFVRkhMRU5CUVVNc1YwRkJWeXhIUVVGSExGRkJRVkVzUzBGQlN5eEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRPMUZCUXpsRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka1VzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRMnhDTzBsQlEwUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVFzVTBGQlV5eFhRVUZYTEVOQlEyeENMRVZCUVZrc1JVRkRXaXhGUVVGWkxFVkJRMW9zUjBGQll5eEZRVU5rTEZWQlFYRkNMRVZCUTNKQ0xGRkJRV3RDTEVWQlEyeENMRTlCUVdVc1JVRkRaaXhMUVVGaE8wbEJRMklzVFVGQlRTeExRVUZMTEVkQlFWa3NSVUZCUlN4RFFVRkRPMGxCUXpGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTJ4RExFMUJRVTBzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOdVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGJrSXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJRenRMUVVONFJUdEpRVU5FTEUxQlFVMHNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOc1JDeFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRja1lzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNKR0xFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRlZCUVZVc1EwRkJRenRUUVVOd1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1JITEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETDBRc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55UlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTnNSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRKUVVOc1JDeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJSU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTTdTVUZEZUVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVVXNRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wbEJRM2hETEU5QlFVOHNSVUZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRExFTkJRVU03UVVGRE1VSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJaMElzYjBKQlFXOUNMRU5CUTNSRExFZEJRVmNzUlVGRFdDeE5RVUZwUWl4RlFVTnFRaXhMUVVGdFFpeEZRVU51UWl4TlFVRnRRaXhGUVVOdVFpeFBRVUZ0UlRzN1VVRkhja1VzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRha01zVFVGQlRTeEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14UWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRMnBETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVVXNRMEZCUXp0VFFVTjBSRHRSUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1EwRkJRVHRCUVVWRUxFMUJRVTBzVlVGQlZTeHBRMEZCYVVNc1EwRkJReXhIUVVGWExFVkJRVVVzVTBGQmFVSXNSVUZCUlN4TlFVRnRRanRKUVVWdVJ5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVOb1F5eE5RVUZOTEdGQlFXRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRla0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRPMWxCUXpsQ0xHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUTBGQlF5eFpRVUZaTEVWQlFVVXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETzB0QlEzaEdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnZXlCTllYUnlhWGdnZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2V5Qm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObElIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZjMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpKenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSlRHbHVaU0I3WEc0Z0lHbGtPaUJ1ZFcxaVpYSTdYRzRnSUcxdmJITTZJRzUxYldKbGNsdGRPMXh1SUNCelpXeGxZM1JsWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdZVG9nYm5WdFltVnlXMTA3SUM4dklGdDRMQ0I1WFZ4dUlDQmlPaUJ1ZFcxaVpYSmJYVHNnTHk4Z1czZ3NJSGxkWEc1OVhHNWNibWx1ZEdWeVptRmpaU0JKVW1WdVpHVnlaV1JNYVc1bGN5QjdYRzRnSUd4cGJtVnpPaUJKVEdsdVpWdGRPMXh1SUNCc2FXNWxjMFJtT2lCRVJ5NUVZWFJoUm5KaGJXVTdYRzU5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1NWTmxjWFZsYm1ObFUzQmhZMlZRWVhKaGJYTWdlMXh1SUNBZ0lITmxjVU52YkRvZ1JFY3VRMjlzZFcxdUxGeHVJQ0FnSUcxbGRHaHZaRTVoYldVNklITjBjbWx1Wnl4Y2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJ6ZEhKcGJtY3NYRzRnSUNBZ1pXMWlaV1JCZUdWelRtRnRaWE02SUhOMGNtbHVaMXRkTEZ4dUlDQWdJRzl3ZEdsdmJuTS9PaUJoYm5sY2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JKVTJWeGRXVnVZMlZUY0dGalpWSmxjM1ZzZENCN1hHNGdJQ0FnWkdsemRHRnVZMlU2SUUxaGRISnBlRHRjYmlBZ0lDQmpiMjl5WkdsdVlYUmxjem9nUkVjdVEyOXNkVzF1VEdsemREdGNiaUFnZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbEVjbUYzVkc5dmJIUnBjRkJoY21GdGN5QjdYRzRnSUhSdmIyeDBhWEJ6T2lCaGJua3NYRzRnSUd4cGJtVTZJRWxNYVc1bExGeHVJQ0JrWmpvZ1JFY3VSR0YwWVVaeVlXMWxMRnh1SUNCelpYRkRiMnc2SUVSSExrTnZiSFZ0Yml4Y2JpQWdZV04wYVhacGRIazZJRVJITGtOdmJIVnRiaXhjYmlBZ2VEb2diblZ0WW1WeUxGeHVJQ0I1T2lCdWRXMWlaWEpjYm4xY2JseHViR1YwSUhwdmIyMGdQU0JtWVd4elpUdGNibHh1THk4Z1UyVmhjbU5vWlhNZ1ptOXlJR0ZqZEdsMmFYUjVJR05zYVdabWN5QnBiaUJoSUdOb1pXMXBZMkZzSUdSaGRHRnpaWFFnWW5rZ2MyVnNaV04wWldRZ1kzVjBiMlptWEc1bGVIQnZjblFnWVhONWJtTWdablZ1WTNScGIyNGdaMlYwUVdOMGFYWnBkSGxEYkdsbVpuTW9YRzRnSUNBZ1pHWTZJRVJITGtSaGRHRkdjbUZ0WlN3Z1hHNGdJQ0FnYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzSUZ4dUlDQWdJR0Y0WlhOT1lXMWxjem9nYzNSeWFXNW5XMTBzWEc0Z0lDQWdjMk5oZEhSbGNsUnBkR3hsT2lCemRISnBibWNzWEc0Z0lDQWdZV04wYVhacGRHbGxjem9nUkVjdVEyOXNkVzF1TENCY2JpQWdJQ0J6YVcxcGJHRnlhWFI1T2lCdWRXMWlaWElzWEc0Z0lDQWdjMmx0YVd4aGNtbDBlVTFsZEhKcFl6b2djM1J5YVc1bkxDQmNiaUFnSUNCdFpYUm9iMlJPWVcxbE9pQnpkSEpwYm1jc0lGeHVJQ0FnSUhObGJWUjVjR1U2SUhOMGNtbHVaeXhjYmlBZ0lDQjFibWwwY3pvZ2MzUnlhVzVuTEZ4dUlDQWdJSE5sY1ZOd1lXTmxSblZ1WXpvZ0tIQmhjbUZ0Y3pvZ1NWTmxjWFZsYm1ObFUzQmhZMlZRWVhKaGJYTXBJRDArSUZCeWIyMXBjMlU4U1ZObGNYVmxibU5sVTNCaFkyVlNaWE4xYkhRK0xGeHVJQ0FnSUhOcGJVWjFibU02SUNoamIydzZJRVJITGtOdmJIVnRiaXdnYlc5c09pQnpkSEpwYm1jcElEMCtJRkJ5YjIxcGMyVThSRWN1UTI5c2RXMXVJSHdnYm5Wc2JENHNYRzRnSUNBZ2RHOXZiSFJwY0VSeVlYZEdkVzVqT2lBb2NHRnlZVzF6T2lCSlJISmhkMVJ2YjJ4MGFYQlFZWEpoYlhNcElEMCtJSFp2YVdRc1hHNGdJQ0FnYjNCMGFXOXVjejg2SUdGdWVTa2dPaUJRY205dGFYTmxQRVJITGxacFpYZGxjajRnZTF4dUlDQmpiMjV6ZENCaGRYUnZiV0YwYVdOVGFXMXBiR0Z5YVhSNVRHbHRhWFFnUFNCbVlXeHpaVHRjYmlBZ1kyOXVjM1FnVFVsT1gxTkpUVWxNUVZKSlZGa2dQU0E0TUR0Y2JseHVJQ0JqYjI1emRDQnBibWwwYVdGc1UybHRhV3hoY21sMGVVeHBiV2wwSUQwZ1lYVjBiMjFoZEdsalUybHRhV3hoY21sMGVVeHBiV2wwSUQ4Z1RVbE9YMU5KVFVsTVFWSkpWRmtnT2lCemFXMXBiR0Z5YVhSNUlDOGdNVEF3TzF4dVhHNGdJR052Ym5OMElIdGthWE4wWVc1alpTd2dZMjl2Y21ScGJtRjBaWE45SUQwZ1lYZGhhWFFnYzJWeFUzQmhZMlZHZFc1aktIdGNiaUFnSUNCelpYRkRiMnc2SUhObGNVTnZiQ3hjYmlBZ0lDQnRaWFJvYjJST1lXMWxPaUJ0WlhSb2IyUk9ZVzFsTEZ4dUlDQWdJSE5wYldsc1lYSnBkSGxOWlhSeWFXTTZJSE5wYldsc1lYSnBkSGxOWlhSeWFXTXNYRzRnSUNBZ1pXMWlaV1JCZUdWelRtRnRaWE02SUdGNFpYTk9ZVzFsY3l4Y2JpQWdJQ0J2Y0hScGIyNXpPaUJ2Y0hScGIyNXpYRzRnSUgwcE8xeHVYRzRnSUdadmNpQW9ZMjl1YzNRZ1kyOXNJRzltSUdOdmIzSmthVzVoZEdWektWeHVJQ0FnSUdSbUxtTnZiSFZ0Ym5NdVlXUmtLR052YkNrN1hHNWNiaUFnWTI5dWMzUWdaR1pUWlhFZ1BTQkVSeTVFWVhSaFJuSmhiV1V1Wm5KdmJVTnZiSFZ0Ym5Nb1cwUkhMa052YkhWdGJpNW1jbTl0VEdsemRDZ25jM1J5YVc1bkp5d2dKM05sY1Njc0lITmxjVU52YkM1MGIweHBjM1FvS1NsZEtUdGNiaUFnWTI5dWMzUWdaR2x0SUQwZ2MyVnhRMjlzTG14bGJtZDBhRHRjYmlBZ1kyOXVjM1FnYzJsdFFYSnlPaUJFUnk1RGIyeDFiVzViWFNBOUlFRnljbUY1S0dScGJTQXRJREVwTzF4dVhHNGdJR2xtSUNnaFpHbHpkR0Z1WTJVcFhHNGdJQ0FnWVhkaGFYUWdaMlYwVTJsdGFXeGhjbWwwYVdWelRXRnlhWGdvWkdsdExDQnpaWEZEYjJ3c0lHUm1VMlZ4TENCemFXMUJjbklzSUhOcGJVWjFibU1wTzF4dUlDQmxiSE5sWEc0Z0lDQWdaMlYwVTJsdGFXeGhjbWwwYVdWelRXRnlhWGhHY205dFJHbHpkR0Z1WTJWektHUnBiU3dnWkdsemRHRnVZMlVzSUhOcGJVRnljaWs3WEc1Y2JpQWdZMjl1YzNRZ2IzQjBVMmx0YVd4aGNtbDBlVXhwYldsMElEMGdhVzVwZEdsaGJGTnBiV2xzWVhKcGRIbE1hVzFwZER0Y2JseHVJQ0JqYjI1emRDQnphVzFXWVd4ek9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQmpiMjV6ZENCellXeHBWbUZzY3pvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1kyOXVjM1FnYmpFNklHNTFiV0psY2x0ZElEMGdXMTA3WEc0Z0lHTnZibk4wSUc0eU9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJQ0U5SUdScGJTQXRJREU3SUNzcmFTa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlDRTlJR1JwYlNBdElERWdMU0JwT3lBcksyb3BJSHRjYmlBZ0lDQWdJR052Ym5OMElITnBiVG9nYm5WdFltVnlJRDBnYzJsdFFYSnlXMmxkTG1kbGRDaHFLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tITnBiU0ErUFNCdmNIUlRhVzFwYkdGeWFYUjVUR2x0YVhRcElIdGNiaUFnSUNBZ0lDQWdiakV1Y0hWemFDaHBLVHRjYmlBZ0lDQWdJQ0FnYmpJdWNIVnphQ2hwSUNzZ2FpQXJJREVwTzF4dUlDQWdJQ0FnSUNCemFXMVdZV3h6TG5CMWMyZ29jMmx0S1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsbVppQTlJRTFoZEdndVlXSnpLR0ZqZEdsMmFYUnBaWE11WjJWMEtHa3BJQzBnWVdOMGFYWnBkR2xsY3k1blpYUW9hU0FySUdvZ0t5QXhLU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaHphVzBnSVQwZ01TbGNiaUFnSUNBZ0lDQWdJQ0J6WVd4cFZtRnNjeTV3ZFhOb0tHUnBabVlnTHlBb01TQXRJSE5wYlNrcE8xeHVJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ2MyRnNhVlpoYkhNdWNIVnphQ2hKYm1acGJtbDBlU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjMkZzYVZaaGJITlhhWFJvYjNWMFNXNW1hVzVwZEhrZ1BTQnpZV3hwVm1Gc2N5NW1hV3gwWlhJb2FYUWdQVDRnYVhRZ0lUMDlJRWx1Wm1sdWFYUjVLVHRjYmlBZ1kyOXVjM1FnYzJGc2FVMXBiaUE5SUUxaGRHZ3ViV2x1S0M0dUxuTmhiR2xXWVd4elYybDBhRzkxZEVsdVptbHVhWFI1S1R0Y2JpQWdZMjl1YzNRZ2MyRnNhVTFoZUNBOUlFMWhkR2d1YldGNEtDNHVMbk5oYkdsV1lXeHpWMmwwYUc5MWRFbHVabWx1YVhSNUtUdGNiaUFnWTI5dWMzUWdjMkZzYVU5d1lXTnBkSGxEYjJWbUlEMGdNQzQ0THloellXeHBUV0Y0SUMwZ2MyRnNhVTFwYmlrN1hHNWNibHh1SUNCamIyNXpkQ0J1WldsbmFHSnZkWEp6UTI5MWJuUWdQU0J1WlhjZ1FYSnlZWGtvWkdsdEtTNW1hV3hzS0RBcE8xeHVJQ0JqYjI1emRDQnphVzFwYkdGeWFYUjVRMjkxYm5RZ1BTQnVaWGNnUVhKeVlYa29aR2x0S1M1bWFXeHNLREFwTzF4dUlDQmpiMjV6ZENCellXeHBRMjkxYm5RZ1BTQnVaWGNnUVhKeVlYa29aR2x0S1M1bWFXeHNLREFwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJQ0U5SUc0eExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdibVZwWjJoaWIzVnljME52ZFc1MFcyNHhXMmxkWFNBclBTQXhPMXh1SUNBZ0lHNWxhV2RvWW05MWNuTkRiM1Z1ZEZ0dU1sdHBYVjBnS3owZ01UdGNiaUFnSUNCemFXMXBiR0Z5YVhSNVEyOTFiblJiYmpGYmFWMWRJQ3M5SUhOcGJWWmhiSE5iYVYwN1hHNGdJQ0FnYzJsdGFXeGhjbWwwZVVOdmRXNTBXMjR5VzJsZFhTQXJQU0J6YVcxV1lXeHpXMmxkTzF4dUlDQWdJR2xtSUNoellXeHBWbUZzYzF0cFhTQWhQU0JKYm1acGJtbDBlU2tnZTF4dUlDQWdJQ0FnYVdZZ0tHRmpkR2wyYVhScFpYTXVaMlYwS0c0eFcybGRLU0ErSUdGamRHbDJhWFJwWlhNdVoyVjBLRzR5VzJsZEtTbGNiaUFnSUNBZ0lDQWdjMkZzYVVOdmRXNTBXMjR4VzJsZFhTQXJQU0J6WVd4cFZtRnNjMXRwWFR0Y2JpQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdjMkZzYVVOdmRXNTBXMjR5VzJsZFhTQXJQU0J6WVd4cFZtRnNjMXRwWFR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0J6WVd4cE9pQkVSeTVEYjJ4MWJXNGdQU0JFUnk1RGIyeDFiVzR1Wm5KdmJVeHBjM1FvSjJSdmRXSnNaU2NzSUdCellXeHBYeVI3WVhobGMwNWhiV1Z6V3pCZExuTjFZbk4wY21sdVp5aGhlR1Z6VG1GdFpYTmJNRjB1YkdGemRFbHVaR1Y0VDJZb0oxOG5LU2w5WUN3Z2MyRnNhVU52ZFc1MEtUdGNibHh1SUNCa1ppNWpiMngxYlc1ekxtRmtaQ2h6WVd4cEtUdGNibHh1SUNCamIyNXpkQ0IyYVdWM0lEMGdaM0p2YXk1emFHVnNiQzVuWlhSVVlXSnNaVlpwWlhjb1pHWXVibUZ0WlNrN1hHNGdJR052Ym5OMElITndJRDBnZG1sbGR5NWhaR1JXYVdWM1pYSW9SRWN1Vm1sbGQyVnlMbk5qWVhSMFpYSlFiRzkwS0dSbUxDQjdYRzRnSUNBZ2VFTnZiSFZ0Yms1aGJXVTZJR0Y0WlhOT1lXMWxjMXN3WFN4Y2JpQWdJQ0I1UTI5c2RXMXVUbUZ0WlRvZ1lYaGxjMDVoYldWeld6RmRMRnh1SUNBZ0lITnBlbVU2SUhOaGJHa3VibUZ0WlN4Y2JpQWdJQ0JqYjJ4dmNqb2dZV04wYVhacGRHbGxjeTV1WVcxbExGeHVJQ0FnSUhOb2IzZFlVMlZzWldOMGIzSTZJR1poYkhObExGeHVJQ0FnSUhOb2IzZFpVMlZzWldOMGIzSTZJR1poYkhObExGeHVJQ0FnSUhOb2IzZFRhWHBsVTJWc1pXTjBiM0k2SUdaaGJITmxMRnh1SUNBZ0lITm9iM2REYjJ4dmNsTmxiR1ZqZEc5eU9pQm1ZV3h6WlN4Y2JpQWdJQ0J0WVhKclpYSk5hVzVUYVhwbE9pQTFMRnh1SUNBZ0lHMWhjbXRsY2sxaGVGTnBlbVU2SURJMUxGeHVJQ0FnSUhScGRHeGxPaUJ6WTJGMGRHVnlWR2wwYkdWY2JpQWdmU2twSUdGeklFUkhMbE5qWVhSMFpYSlFiRzkwVm1sbGQyVnlPMXh1WEc0Z0lHTnZibk4wSUdOaGJuWmhjeUE5SUNoemNDNW5aWFJKYm1adktDa2dZWE1nWVc1NUtWc25ZMkZ1ZG1GekoxMDdYRzRnSUdOdmJuTjBJR3hwYm1WelVtVnpJRDBnWTNKbFlYUmxUR2x1WlhNb2JqRXNJRzR5TENCelpYRkRiMndzSUdGamRHbDJhWFJwWlhNc0lITmhiR2xXWVd4ekxDQnpaVzFVZVhCbExDQjFibWwwY3lrN1hHNGdJR052Ym5OMElIUnZiMngwYVhCek9pQmhibmtnUFNCN2ZUdGNibHh1SUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG05dVEzVnljbVZ1ZEVObGJHeERhR0Z1WjJWa0xuTjFZbk5qY21saVpTZ29LU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdZM1Z5Y21WdWRFMXZiRWxrZUNBOUlHeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEVOdmJDQW1KaUJzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbU4xY25KbGJuUkRiMnd1Ym1GdFpTQTlQVDBnSnpKZmMyVnhKeUEvSURFZ09pQXdPMXh1SUNBZ0lITndMbVJoZEdGR2NtRnRaUzVqZFhKeVpXNTBVbTkzU1dSNElEMWNiaUFnSUNBZ0lHeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEZKdmQwbGtlQ0FoUFQwZ0xURWdQeUJzYVc1bGMxSmxjeTVzYVc1bGMxdHNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SU2IzZEpaSGhkTG0xdmJITmJZM1Z5Y21WdWRFMXZiRWxrZUYwZ09pQXRNVHRjYmlBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1YzJWc1pXTjBhVzl1TG5ObGRDZ3dMQ0FoYkdsdVpYTlNaWE11YkdsdVpYTmJNRjB1YzJWc1pXTjBaV1FwTzF4dUlDQWdJSE53TG1SaGRHRkdjbUZ0WlM1elpXeGxZM1JwYjI0dWMyVjBLREFzSUd4cGJtVnpVbVZ6TG14cGJtVnpXekJkTG5ObGJHVmpkR1ZrS1R0Y2JpQWdJQ0JzYVc1bGMwUm1SM0pwWkM1cGJuWmhiR2xrWVhSbEtDazdYRzRnSUgwcE8xeHVYRzRnSUd4cGJtVnpVbVZ6TG14cGJtVnpSR1l1YjI1VFpXeGxZM1JwYjI1RGFHRnVaMlZrTG5OMVluTmpjbWxpWlNnb1h5a2dQVDRnZTF4dUlDQWdJR2xtSUNoc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG0xdmRYTmxUM1psY2xKdmQwbGtlQ0FoUFQwZ0xURXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHeHBibVVnUFNCc2FXNWxjMUpsY3k1c2FXNWxjMXRzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbTF2ZFhObFQzWmxjbEp2ZDBsa2VGMDdYRzRnSUNBZ0lDQnNhVzVsTG5ObGJHVmpkR1ZrSUQwZ0lXeHBibVV1YzJWc1pXTjBaV1E3WEc0Z0lDQWdJQ0JwWmlBb0lXeHBibVV1YzJWc1pXTjBaV1FwWEc0Z0lDQWdJQ0FnSUdSbUxuTmxiR1ZqZEdsdmJpNXpaWFJCYkd3b1ptRnNjMlVwTzF4dUlDQWdJSDFjYmlBZ0lDQnNhVzVsYzFKbGN5NXNhVzVsY3k1bWIzSkZZV05vS0Noc0tTQTlQaUI3WEc0Z0lDQWdJQ0JwWmlBb2JDNXpaV3hsWTNSbFpDbGNiaUFnSUNBZ0lDQWdiQzV0YjJ4ekxtWnZja1ZoWTJnb0tHMHBJRDArSUdSbUxuTmxiR1ZqZEdsdmJpNXpaWFFvYlN3Z2RISjFaU2twTzF4dUlDQWdJSDBwTzF4dUlDQWdJR3hwYm1WelJHWkhjbWxrTG1sdWRtRnNhV1JoZEdVb0tUdGNiaUFnZlNrN1hHNWNiaUFnWTI5dWMzUWdiR2x1WlhORVprZHlhV1FnUFNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG5Cc2IzUXVaM0pwWkNncExuTnZjblFvV3lkaFkzUmZaR2xtWmlkZExDQmJabUZzYzJWZEtUdGNibHh1SUNCc2FXNWxjMFJtUjNKcFpDNXZia05sYkd4RGJHbGpheTV6ZFdKelkzSnBZbVVvS0NrZ1BUNGdlMXh1SUNBZ0lIcHZiMjBnUFNCMGNuVmxPMXh1SUNCOUtUdGNibHh1SUNCamIyNXpkQ0JzYVhOMFEyeHBabVp6VEdsdWF5QTlJSFZwTG1KMWRIUnZiaWhnSkh0c2FXNWxjMUpsY3k1c2FXNWxjMFJtTG5KdmQwTnZkVzUwZlNCamJHbG1abk5nTENBb0tTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ1kyeHBabVp6UkdsaGJHOW5JRDBnZFdrdVpHbGhiRzluS0h0MGFYUnNaVG9nSjBGamRHbDJhWFI1SUdOc2FXWm1jeWQ5S1Z4dUlDQWdJQ0FnTG1Ga1pDaHNhVzVsYzBSbVIzSnBaQzV5YjI5MEtWeHVJQ0FnSUNBZ0xuTm9iM2NvS1R0Y2JpQWdJQ0JqYkdsbVpuTkVhV0ZzYjJjdWNtOXZkQzVwWkNBOUlDZGpiR2xtWm5OZlpHbGhiRzluSnp0Y2JpQWdmU2s3WEc0Z0lHeHBjM1JEYkdsbVpuTk1hVzVyTG5OMGVXeGxMbkJ2YzJsMGFXOXVJRDBnSjJGaWMyOXNkWFJsSnp0Y2JpQWdiR2x6ZEVOc2FXWm1jMHhwYm1zdWMzUjViR1V1ZEc5d0lEMGdKekV3Y0hnbk8xeHVJQ0JzYVhOMFEyeHBabVp6VEdsdWF5NXpkSGxzWlM1eWFXZG9kQ0E5SUNjeE1IQjRKenRjYmlBZ2MzQXVjbTl2ZEM1aGNIQmxibVFvYkdsemRFTnNhV1ptYzB4cGJtc3BPMXh1WEc0Z0lHeGxkQ0IwYVcxbGNqb2dUbTlrWlVwVExsUnBiV1Z2ZFhRN1hHNGdJR05oYm5aaGN5NWhaR1JGZG1WdWRFeHBjM1JsYm1WeUtDZHRiM1Z6WlcxdmRtVW5MQ0JtZFc1amRHbHZiaUFvWlhabGJuUTZJRTF2ZFhObFJYWmxiblFwSUh0Y2JpQWdJQ0JqYkdWaGNsUnBiV1Z2ZFhRb2RHbHRaWElwTzF4dUlDQWdJSFJwYldWeUlEMGdaMnh2WW1Gc0xuTmxkRlJwYldWdmRYUW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdiR2x1WlNBOUlHTm9aV05yUTNWeWMyOXlUMjVNYVc1bEtHVjJaVzUwTENCallXNTJZWE1zSUd4cGJtVnpVbVZ6TG14cGJtVnpLVHRjYmlBZ0lDQWdJR2xtSUNoc2FXNWxJQ1ltSUdSbUxtMXZkWE5sVDNabGNsSnZkMGxrZUNBOVBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0YwYjI5c2RHbHdjMXRzYVc1bExtbGtYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdSeVlYZFViMjlzZEdsd1VHRnlZVzF6SUQwZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEc5dmJIUnBjSE02SUhSdmIyeDBhWEJ6TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdiR2x1WlRvZ2JHbHVaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHUm1PaUJrWml4Y2JpQWdJQ0FnSUNBZ0lDQWdJSE5sY1VOdmJEb2djMlZ4UTI5c0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnWVdOMGFYWnBkSGs2SUdGamRHbDJhWFJwWlhNc1hHNGdJQ0FnSUNBZ0lDQWdJQ0I0T2lCbGRtVnVkQzVqYkdsbGJuUllMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2VUb2daWFpsYm5RdVkyeHBaVzUwV1Z4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0IwYjI5c2RHbHdSSEpoZDBaMWJtTW9aSEpoZDFSdmIyeDBhWEJRWVhKaGJYTXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhWcExuUnZiMngwYVhBdWMyaHZkeWgwYjI5c2RHbHdjMXRzYVc1bExtbGtYU3dnWlhabGJuUXVZMnhwWlc1MFdDd2daWFpsYm5RdVkyeHBaVzUwV1NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN3Z01UQXdNQ2s3WEc0Z0lIMHBPMXh1WEc0Z0lHTmhiblpoY3k1aFpHUkZkbVZ1ZEV4cGMzUmxibVZ5S0NkdGIzVnpaV1J2ZDI0bkxDQm1kVzVqZEdsdmJpaGxkbVZ1ZERvZ1RXOTFjMlZGZG1WdWRDa2dlMXh1SUNBZ0lHTnZibk4wSUd4cGJtVWdQU0JqYUdWamEwTjFjbk52Y2s5dVRHbHVaU2hsZG1WdWRDd2dZMkZ1ZG1GekxDQnNhVzVsYzFKbGN5NXNhVzVsY3lrN1hHNGdJQ0FnYVdZZ0tHeHBibVVnSmlZZ1pHWXViVzkxYzJWUGRtVnlVbTkzU1dSNElEMDlQU0F0TVNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR1YyWlc1MExtTjBjbXhMWlhrcElIdGNiaUFnSUNBZ0lDQWdiR2x1WlM1elpXeGxZM1JsWkNBOUlDRnNhVzVsTG5ObGJHVmpkR1ZrTzF4dUlDQWdJQ0FnSUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG5ObGJHVmpkR2x2Ymk1elpYUW9iR2x1WlM1cFpDd2diR2x1WlM1elpXeGxZM1JsWkNrN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0NGc2FXNWxMbk5sYkdWamRHVmtLVnh1SUNBZ0lDQWdJQ0FnSUdSbUxuTmxiR1ZqZEdsdmJpNXpaWFJCYkd3b1ptRnNjMlVwTzF4dVhHNGdJQ0FnSUNBZ0lHeHBibVZ6VW1WekxteHBibVZ6TG1admNrVmhZMmdvS0d3cElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9iQzV6Wld4bFkzUmxaQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lHd3ViVzlzY3k1bWIzSkZZV05vS0NodEtTQTlQaUJrWmk1elpXeGxZM1JwYjI0dWMyVjBLRzBzSUhSeWRXVXBLVHRjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCcFppQW9iR2x1WlhOU1pYTXViR2x1WlhORVppNWpkWEp5Wlc1MFVtOTNTV1I0SUNFOVBTQnNhVzVsTG1sa0tTQjdYRzRnSUNBZ0lDQWdJQ0FnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTVqZFhKeVpXNTBVbTkzU1dSNElEMGdiR2x1WlM1cFpEdGNiaUFnSUNBZ0lDQWdJQ0JrWmk1amRYSnlaVzUwVW05M1NXUjRJRDBnYkdsdVpTNXRiMnh6V3pCZE8xeHVJQ0FnSUNBZ0lDQWdJR1JtTG5ObGJHVmpkR2x2Ymk1elpYUW9NQ3dnSVd4cGJtVnpVbVZ6TG14cGJtVnpXekJkTG5ObGJHVmpkR1ZrS1R0Y2JpQWdJQ0FnSUNBZ0lDQmtaaTV6Wld4bFkzUnBiMjR1YzJWMEtEQXNJR3hwYm1WelVtVnpMbXhwYm1Weld6QmRMbk5sYkdWamRHVmtLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTazdYRzVjYmlBZ2MzQXViMjVGZG1WdWRDZ25aRFF0WW1WbWIzSmxMV1J5WVhjdGMyTmxibVVuS1Z4dUlDQWdJQzV6ZFdKelkzSnBZbVVvS0Y4cElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHeHBibVZ6SUQwZ2NtVnVaR1Z5VEdsdVpYTW9jM0FzWEc0Z0lDQWdJQ0FnSUdGNFpYTk9ZVzFsYzFzd1hTd2dZWGhsYzA1aGJXVnpXekZkTENCc2FXNWxjMUpsY3l3Z2MyRnNhVlpoYkhNc0lITmhiR2xQY0dGamFYUjVRMjlsWml3Z2MyRnNhVTFwYmlrN1hHNGdJQ0FnSUNCcFppQW9lbTl2YlNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCamRYSnlaVzUwVEdsdVpTQTlJR3hwYm1WelcyeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEZKdmQwbGtlRjA3WEc0Z0lDQWdJQ0FnSUhObGRGUnBiV1Z2ZFhRb0tDazlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZTNwdmIyMU1aV1owTENCNmIyOXRVbWxuYUhRc0lIcHZiMjFVYjNBc0lIcHZiMjFDYjNSMGIyMTlJRDBnWjJWMFdtOXZiVU52YjNKa2FXNWhkR1Z6S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdjM0F1ZG1sbGQzQnZjblF1ZDJsa2RHZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNCemNDNTJhV1YzY0c5eWRDNW9aV2xuYUhRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6Y0M1a1lYUmhSbkpoYldVdVoyVjBLR0Y0WlhOT1lXMWxjMXN3WFN3Z1kzVnljbVZ1ZEV4cGJtVXViVzlzYzFzd1hTa3NYRzRnSUNBZ0lDQWdJQ0FnSUNCemNDNWtZWFJoUm5KaGJXVXVaMlYwS0dGNFpYTk9ZVzFsYzFzeFhTd2dZM1Z5Y21WdWRFeHBibVV1Ylc5c2Mxc3dYU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1WjJWMEtHRjRaWE5PWVcxbGMxc3dYU3dnWTNWeWNtVnVkRXhwYm1VdWJXOXNjMXN4WFNrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6Y0M1a1lYUmhSbkpoYldVdVoyVjBLR0Y0WlhOT1lXMWxjMXN4WFN3Z1kzVnljbVZ1ZEV4cGJtVXViVzlzYzFzeFhTbGNiaUFnSUNBZ0lDQWdJQ0FwSUNBZ0lDQWdJQ0JjYmlBZ0lDQWdJQ0FnSUNCemNDNTZiMjl0S0hwdmIyMU1aV1owTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdlbTl2YlZSdmNDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhwdmIyMVNhV2RvZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSHB2YjIxQ2IzUjBiMjBwTzF4dUlDQWdJQ0FnSUNCOUxDQXpNREFwTzF4dUlDQWdJQ0FnSUNCNmIyOXRJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzVjYmlBZ2MzQXVZV1JrVUhKdmNHVnlkSGtvSjNOcGJXbHNZWEpwZEhsTWFXMXBkQ2NzSUNka2IzVmliR1VuTENCdmNIUlRhVzFwYkdGeWFYUjVUR2x0YVhRcE8xeHVJQ0J5WlhSMWNtNGdjM0E3WEc1OVhHNWNibVoxYm1OMGFXOXVJR2RsZEZwdmIyMURiMjl5WkdsdVlYUmxjeWhYTURvZ2JuVnRZbVZ5TENCSU1Eb2diblZ0WW1WeUxDQjRNVG9nYm5WdFltVnlMQ0I1TVRvZ2JuVnRZbVZ5TENCNE1qb2diblZ0WW1WeUxDQjVNam9nYm5WdFltVnlLU0I3WEc0Z0lHTnZibk4wSUZjeElEMGdUV0YwYUM1aFluTW9lREVnTFNCNE1pazdYRzRnSUdOdmJuTjBJRWd4SUQwZ1RXRjBhQzVoWW5Nb2VURWdMU0I1TWlrN1hHNGdJR052Ym5OMElITmpZV3hsVnlBOUlGY3dJQzhnVnpFN1hHNGdJR052Ym5OMElITmpZV3hsU0NBOUlFZ3dJQzhnU0RFN1hHNGdJR052Ym5OMElITmpZV3hsSUQwZ1RXRjBhQzV0YVc0b2MyTmhiR1ZYTENCelkyRnNaVWdwTzF4dUlDQmpiMjV6ZENCWE1pQTlJQ2hYTUNBdklITmpZV3hsS1NBcUlEVTdYRzRnSUdOdmJuTjBJRWd5SUQwZ0tFZ3dJQzhnYzJOaGJHVXBJQ29nTlR0Y2JpQWdZMjl1YzNRZ2JHVm1kQ0E5SUhneElEd2dlRElnUHlCNE1TQTZJSGd5TzF4dUlDQmpiMjV6ZENCMGIzQWdQU0I1TVNBK0lIa3lJRDhnZVRFZ09pQjVNanRjYmlBZ1kyOXVjM1FnZW05dmJVeGxablFnUFNBb2JHVm1kQ0FySUZjeElDOGdNaWtnTFNCWE1pQXZJREk3WEc0Z0lHTnZibk4wSUhwdmIyMVNhV2RvZENBOUlIcHZiMjFNWldaMElDc2dWekk3WEc0Z0lHTnZibk4wSUhwdmIyMVViM0FnUFNBb2RHOXdJQzBnU0RFZ0x5QXlLU0FySUVneUlDOGdNanRjYmlBZ1kyOXVjM1FnZW05dmJVSnZkSFJ2YlNBOUlIcHZiMjFVYjNBZ0xTQklNanRjYmlBZ2NtVjBkWEp1SUh0NmIyOXRUR1ZtZERvZ2VtOXZiVXhsWm5Rc0lIcHZiMjFTYVdkb2REb2dlbTl2YlZKcFoyaDBMQ0I2YjI5dFZHOXdPaUI2YjI5dFZHOXdMQ0I2YjI5dFFtOTBkRzl0T2lCNmIyOXRRbTkwZEc5dGZUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1kyaGxZMnREZFhKemIzSlBia3hwYm1Vb1pYWmxiblE2SUdGdWVTd2dZMkZ1ZG1Gek9pQmhibmtzSUd4cGJtVnpPaUJKVEdsdVpWdGRLVG9nU1V4cGJtVWdmQ0J1ZFd4c0lIdGNiaUFnWTI5dWMzUWdjbVZqZENBOUlHTmhiblpoY3k1blpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUW9LVHRjYmlBZ1kyOXVjM1FnZUNBOUlHVjJaVzUwTG1Oc2FXVnVkRmdnTFNCeVpXTjBMbXhsWm5RN1hHNGdJR052Ym5OMElIa2dQU0JsZG1WdWRDNWpiR2xsYm5SWklDMGdjbVZqZEM1MGIzQTdYRzRnSUdadmNpQW9ZMjl1YzNRZ2JHbHVaU0J2WmlCc2FXNWxjeWtnZTF4dUlDQWdJR052Ym5OMElHUnBjM1FnUFZ4dUlDQWdJQ0FnVFdGMGFDNWhZbk1vVFdGMGFDNW9lWEJ2ZENoc2FXNWxMbUZiTUYwZ0xTQjRMQ0JzYVc1bExtRmJNVjBnTFNCNUtTQXJYRzRnSUNBZ0lDQk5ZWFJvTG1oNWNHOTBLR3hwYm1VdVlsc3dYU0F0SUhnc0lHeHBibVV1WWxzeFhTQXRJSGtwSUMwZ1RXRjBhQzVvZVhCdmRDaHNhVzVsTG1GYk1GMGdMU0JzYVc1bExtSmJNRjBzSUd4cGJtVXVZVnN4WFNBdElHeHBibVV1WWxzeFhTa3BPMXh1SUNBZ0lHbG1JQ2hrYVhOMElEd2dNaWxjYmlBZ0lDQWdJSEpsZEhWeWJpQnNhVzVsTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ1ZFd4c08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCeVpXNWtaWEpNYVc1bGN5aHpjRG9nUkVjdVUyTmhkSFJsY2xCc2IzUldhV1YzWlhJc1hHNGdJSGhCZUdsek9pQnpkSEpwYm1jc0lIbEJlR2x6T2lCemRISnBibWNzSUd4cGJtVnpVbVZ6T2lCSlVtVnVaR1Z5WldSTWFXNWxjeXdnYzJGc2FWWmhiSE02SUc1MWJXSmxjbHRkTENCellXeHBUM0JoWTJsMGVVTnZaV1k2SUc1MWJXSmxjaXdnYzJGc2FVMXBiam9nYm5WdFltVnlLVG9nU1V4cGJtVWdXMTBnZTF4dUlDQmpiMjV6ZENCc2FXNWxjeUE5SUd4cGJtVnpVbVZ6TG14cGJtVnpPMXh1SUNCamIyNXpkQ0JqWVc1MllYTWdQU0FvYzNBdVoyVjBTVzVtYnlncElHRnpJSHRiYVc1a1pYZzZJSE4wY21sdVoxMGdPaUJoYm5sOUtWc25ZMkZ1ZG1GekoxMDdYRzRnSUdOdmJuTjBJR04wZUNBOUlHTmhiblpoY3k1blpYUkRiMjUwWlhoMEtDY3laQ2NwSUdGeklFTmhiblpoYzFKbGJtUmxjbWx1WjBOdmJuUmxlSFF5UkR0Y2JpQWdZMjl1YzNRZ2VDQTlJSE53TG1SaGRHRkdjbUZ0WlNFdVkyOXNkVzF1Y3k1aWVVNWhiV1VvZUVGNGFYTXBPMXh1SUNCamIyNXpkQ0I1SUQwZ2MzQXVaR0YwWVVaeVlXMWxJUzVqYjJ4MWJXNXpMbUo1VG1GdFpTaDVRWGhwY3lrN1hHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYkdsdVpYTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0JqYjI1emRDQndiMmx1ZEVaeWIyMGdQU0J6Y0M1M2IzSnNaRlJ2VTJOeVpXVnVLSGd1WjJWMEtHeHBibVZ6VzJsZExtMXZiSE5iTUYwcExDQjVMbWRsZENoc2FXNWxjMXRwWFM1dGIyeHpXekJkS1NrN1hHNGdJQ0FnWTI5dWMzUWdjRzlwYm5SVWJ5QTlJSE53TG5kdmNteGtWRzlUWTNKbFpXNG9lQzVuWlhRb2JHbHVaWE5iYVYwdWJXOXNjMXN4WFNrc0lIa3VaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNVjBwS1R0Y2JpQWdJQ0JzYVc1bGMxdHBYUzVoSUQwZ1czQnZhVzUwUm5KdmJTNTRMQ0J3YjJsdWRFWnliMjB1ZVYwN1hHNGdJQ0FnYkdsdVpYTmJhVjB1WWlBOUlGdHdiMmx1ZEZSdkxuZ3NJSEJ2YVc1MFZHOHVlVjA3WEc0Z0lDQWdZMjl1YzNRZ2JHbHVaU0E5SUc1bGR5QlFZWFJvTWtRb0tUdGNiaUFnSUNCc2FXNWxMbTF2ZG1WVWJ5aHNhVzVsYzF0cFhTNWhXekJkTENCc2FXNWxjMXRwWFM1aFd6RmRLVHRjYmlBZ0lDQmpiMjV6ZENCamIyeHZjaUE5SUd4cGJtVnpXMmxkTG5ObGJHVmpkR1ZrSUQ4Z0p6STFOU3d5TlRVc01DY2dPaUFuTUN3eE1qZ3NNQ2M3WEc0Z0lDQWdZMjl1YzNRZ2IzQmhZMmwwZVNBOUlITmhiR2xXWVd4elcybGRJRDA5UFNCSmJtWnBibWwwZVNBL0lERWdPaUF3TGpJZ0t5QW9jMkZzYVZaaGJITmJhVjBnTFNCellXeHBUV2x1S1NwellXeHBUM0JoWTJsMGVVTnZaV1k3WEc0Z0lDQWdZM1I0TG5OMGNtOXJaVk4wZVd4bElEMGdZSEpuWW1Fb0pIdGpiMnh2Y24wc0pIdHZjR0ZqYVhSNWZTbGdPMXh1SUNBZ0lHTjBlQzVzYVc1bFYybGtkR2dnUFNCc2FXNWxjMXRwWFM1cFpDQTlQVDBnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTVqZFhKeVpXNTBVbTkzU1dSNElEOGdNeUE2SURFN1hHNGdJQ0FnYkdsdVpTNXNhVzVsVkc4b2JHbHVaWE5iYVYwdVlsc3dYU3dnYkdsdVpYTmJhVjB1WWxzeFhTazdYRzRnSUNBZ1kzUjRMbk4wY205clpTaHNhVzVsS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnYkdsdVpYTTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHTnlaV0YwWlV4cGJtVnpLRnh1SUNCdU1Ub2diblZ0WW1WeVcxMHNJRnh1SUNCdU1qb2diblZ0WW1WeVcxMHNJRnh1SUNCelpYRTZJRVJITGtOdmJIVnRiaXdnWEc0Z0lHRmpkR2wyYVhScFpYTTZJRVJITGtOdmJIVnRiaXdnWEc0Z0lITmhiR2xXWVd4ek9pQnVkVzFpWlhKYlhTeGNiaUFnYzJWdFZIbHdaVG9nYzNSeWFXNW5MRnh1SUNCMWJtbDBjem9nYzNSeWFXNW5LU0E2SUVsU1pXNWtaWEpsWkV4cGJtVnpJSHRjYmlBZ1kyOXVjM1FnYkdsdVpYTTZJRWxNYVc1bFcxMGdQU0JiWFR0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1TVM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHTnZibk4wSUc1MWJURWdQU0J1TVZ0cFhUdGNiaUFnSUNCamIyNXpkQ0J1ZFcweUlEMGdiakpiYVYwN1hHNGdJQ0FnYkdsdVpYTXVjSFZ6YUNoN2FXUTZJR2tzSUcxdmJITTZJRnR1ZFcweExDQnVkVzB5WFN3Z2MyVnNaV04wWldRNklHWmhiSE5sTENCaE9pQmJYU3dnWWpvZ1cxMTlLVHRjYmlBZ2ZWeHVJQ0JqYjI1emRDQnNhVzVsYzBSbUlEMGdSRWN1UkdGMFlVWnlZVzFsTG1OeVpXRjBaU2hzYVc1bGN5NXNaVzVuZEdncE8xeHVJQ0JzYVc1bGMwUm1MbU52YkhWdGJuTXVZV1JrVG1WM1UzUnlhVzVuS0NjeFgzTmxjU2NwTG1sdWFYUW9LR2s2SUc1MWJXSmxjaWtnUFQ0Z2MyVnhMbWRsZENoc2FXNWxjMXRwWFM1dGIyeHpXekJkS1NrN1hHNGdJR3hwYm1WelJHWXVZMjlzZFcxdWN5NWhaR1JPWlhkVGRISnBibWNvSnpKZmMyVnhKeWt1YVc1cGRDZ29hVG9nYm5WdFltVnlLU0E5UGlCelpYRXVaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNVjBwS1R0Y2JpQWdiR2x1WlhORVppNWpiMngxYlc1ekxtRmtaRTVsZDBac2IyRjBLQ2RoWTNSZlpHbG1aaWNwWEc0Z0lDQWdMbWx1YVhRb0tHazZJRzUxYldKbGNpa2dQVDRnVFdGMGFDNWhZbk1vWVdOMGFYWnBkR2xsY3k1blpYUW9iR2x1WlhOYmFWMHViVzlzYzFzd1hTa2dMU0JoWTNScGRtbDBhV1Z6TG1kbGRDaHNhVzVsYzF0cFhTNXRiMnh6V3pGZEtTa3BPMXh1SUNCc2FXNWxjMFJtTG1OdmJIVnRibk11WVdSa1RtVjNTVzUwS0Nkc2FXNWxYMmx1WkdWNEp5a3VhVzVwZENnb2FUb2diblZ0WW1WeUtTQTlQaUJwS1R0Y2JpQWdiR2x1WlhORVppNWpiMngxYlc1ekxtRmtaRTVsZDBac2IyRjBLQ2R6WVd4cEp5a3VhVzVwZENnb2FUb2diblZ0WW1WeUtTQTlQaUJ6WVd4cFZtRnNjMXRwWFNrN1hHNGdJR3hwYm1WelJHWXVZMjlzS0NjeFgzTmxjU2NwSVM1MFlXZHpXMFJITGxSQlIxTXVWVTVKVkZOZElEMGdkVzVwZEhNN1hHNGdJR3hwYm1WelJHWXVZMjlzS0NjeVgzTmxjU2NwSVM1MFlXZHpXMFJITGxSQlIxTXVWVTVKVkZOZElEMGdkVzVwZEhNN1hHNGdJR3hwYm1WelJHWXVZMjlzS0NjeFgzTmxjU2NwSVM1elpXMVVlWEJsSUQwZ2MyVnRWSGx3WlR0Y2JpQWdiR2x1WlhORVppNWpiMndvSnpKZmMyVnhKeWtoTG5ObGJWUjVjR1VnUFNCelpXMVVlWEJsTzF4dUlDQnlaWFIxY200Z2UyeHBibVZ6TENCc2FXNWxjMFJtZlR0Y2JuMWNibHh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlHZGxkRk5wYldsc1lYSnBkR2xsYzAxaGNtbDRLRnh1SUNBZ0lHUnBiVG9nYm5WdFltVnlMQ0JjYmlBZ0lDQnpaWEZEYjJ3NklFUkhMa052YkhWdGJpd2dYRzRnSUNBZ1pHWlRaWEU2SUVSSExrUmhkR0ZHY21GdFpTd2dYRzRnSUNBZ2MybHRRWEp5T2lCRVJ5NURiMngxYlc1YlhTeGNiaUFnSUNCemFXMUdkVzVqT2lBb1kyOXNPaUJFUnk1RGIyeDFiVzRzSUcxdmJEb2djM1J5YVc1bktTQTlQaUJRY205dGFYTmxQRVJITGtOdmJIVnRiaUI4SUc1MWJHdytYRzRnSUNBZ0tWeHVJQ0E2SUZCeWIyMXBjMlU4UkVjdVEyOXNkVzF1VzEwK0lIdGNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnSVQwZ1pHbHRJQzBnTVRzZ0t5dHBLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JXOXNJRDBnYzJWeFEyOXNMbWRsZENocEtUdGNiaUFnSUNCa1psTmxjUzV5YjNkekxuSmxiVzkyWlVGMEtEQXNJREVzSUdaaGJITmxLVHRjYmlBZ0lDQnphVzFCY25KYmFWMGdQU0FvWVhkaGFYUWdjMmx0Um5WdVl5aGtabE5sY1M1amIyd29KM05sY1NjcElTd2diVzlzS1NraE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemFXMUJjbkk3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJUYVcxcGJHRnlhWFJwWlhOTllYSnBlRVp5YjIxRWFYTjBZVzVqWlhNb1pHbHRPaUJ1ZFcxaVpYSXNJR1JwYzNSaGJtTmxjem9nVFdGMGNtbDRMQ0J6YVcxQmNuSTZJRVJITGtOdmJIVnRibHRkS1Z4dUlDQTZJRVJITGtOdmJIVnRibHRkSUh0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrYVcwZ0xTQXhPeUFySzJrcElIdGNiaUFnSUNCamIyNXpkQ0J6YVcxcGJHRnlhWFI1UVhKeUlEMGdXMTA3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SUdrZ0t5QXhPeUJxSUR3Z1pHbHRPeUFySzJvcFhHNGdJQ0FnSUNCemFXMXBiR0Z5YVhSNVFYSnlMbkIxYzJnb1oyVjBVMmx0YVd4aGNtbDBlVVp5YjIxRWFYTjBZVzVqWlNoa2FYTjBZVzVqWlhOYmFWMWJhbDBwS1R0Y2JpQWdJQ0J6YVcxQmNuSmJhVjBnUFNCRVJ5NURiMngxYlc0dVpuSnZiVVpzYjJGME16SkJjbkpoZVNnbmMybHRhV3hoY21sMGVTY3NJRVpzYjJGME16SkJjbkpoZVM1bWNtOXRLSE5wYldsc1lYSnBkSGxCY25JcEtUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2MybHRRWEp5TzF4dWZTSmRmUT09IiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpbWVuc2luYWxpdHlSZWR1Y2luZ1dvcmtlcihkYXRhTWV0cmljLCBtZXRob2QsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuL2RpbWVuc2lvbmFsaXR5LXJlZHVjZXInLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIGNvbHVtbkRhdGE6IGRhdGFNZXRyaWMuZGF0YSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICAgICAgbWVhc3VyZTogZGF0YU1ldHJpYy5tZXRyaWMsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgZGlzdGFuY2UsIGVtYmVkZGluZyB9IH0pID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoeyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iZWRkaW5nIH0pO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkdsdFpXNXphVzl1WVd4cGRIa3RjbVZrZFdOcGJtY3RkMjl5YTJWeUxXTnlaV0YwYjNJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUprYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJsdVp5MTNiM0pyWlhJdFkzSmxZWFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRnBRa0VzVFVGQlRTeFZRVUZWTEdsRFFVRnBReXhEUVVGRExGVkJRWE5DTEVWQlFVVXNUVUZCWXl4RlFVTnNSaXhQUVVGaE8wbEJSV3BDTEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJVeXhQUVVGUE8xRkJRMnBETEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETERCQ1FVRXdRaXhGUVVGRkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOb1JpeE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNTVUZCU1R0WlFVTXpRaXhOUVVGTkxFVkJRVVVzVFVGQlRUdFpRVU5rTEU5QlFVOHNSVUZCUlN4VlFVRlZMRU5CUVVNc1RVRkJUVHRaUVVNeFFpeFBRVUZQTEVWQlFVVXNUMEZCVHp0VFFVTnFRaXhEUVVGRExFTkJRVU03VVVGRFNDeE5RVUZOTEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1JVRkJReXhKUVVGSkxFVkJRVVVzUlVGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRk8xbEJRM0JFTEU5QlFVOHNRMEZCUXl4RlFVRkRMRkZCUVZFc1JVRkJSU3hSUVVGUkxFVkJRVVVzVTBGQlV5eEZRVUZGTEZOQlFWTXNSVUZCUXl4RFFVRkRMRU5CUVVNN1VVRkRja1FzUTBGQlF5eERRVUZETzBsQlEwb3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRUQ3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dUV0YwY21sNElIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRXWVd4cFpGUjVjR1Z6ZlNCbWNtOXRJQ2N1TGk5MGVYQmxaQzF0WlhSeWFXTnpKenRjYmx4dUx5b3FYRzRnS2lCQklIZHZjbXRsY2lCMGJ5QndaWEptYjNKdElHUnBiV1Z1YzJsdmJtRnNhWFI1SUhKbFpIVmpkR2x2Ymk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFaaGJHbGtWSGx3WlhOOUlHUmhkR0ZOWlhSeWFXTWdWR2hsSUdSaGRHRWdkRzhnY0hKdlkyVnpjeTVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdFpYUm9iMlFnUVNCdFpYUm9iMlFnYjJZZ1pHbHRaVzV6YVc5dVlXeHBkSGtnY21Wa2RXTjBhVzl1TGx4dUlDb2dRSEJoY21GdElHOXdkR2x2Ym5NZ0xTQnJaWGt0ZG1Gc2RXVWdjR0ZwY25OY2JpQXFJRUJ3WVhKaGJTQnlaWFIxY201RWFYTjBZVzVqWlUxaGRISnBlRnh1SUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4SlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRK2ZTQlNaWE4xYkhScGJtY2daVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGd1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVkpsWkhWalpVUnBiV1Z1YzJsdmJtRnNhWFI1VW1WemRXeDBJSHRjYmlBZ1pHbHpkR0Z1WTJVNklFMWhkSEpwZUR0Y2JpQWdaVzFpWldSa2FXNW5PaUJOWVhSeWFYZzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamNtVmhkR1ZFYVcxbGJuTnBibUZzYVhSNVVtVmtkV05wYm1kWGIzSnJaWElvWkdGMFlVMWxkSEpwWXpvZ1ZtRnNhV1JVZVhCbGN5d2diV1YwYUc5a09pQnpkSEpwYm1jc1hHNGdJQ0FnSUNCdmNIUnBiMjV6UHpvZ1lXNTVLVG9nVUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErSUh0Y2JseHVJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWm5WdVkzUnBiMjRvY21WemIyeDJaU2tnZTF4dUlDQWdJR052Ym5OMElIZHZjbXRsY2lBOUlHNWxkeUJYYjNKclpYSW9ibVYzSUZWU1RDZ25MaTlrYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJWeUp5d2dhVzF3YjNKMExtMWxkR0V1ZFhKc0tTazdYRzRnSUNBZ2QyOXlhMlZ5TG5CdmMzUk5aWE56WVdkbEtIdGNiaUFnSUNBZ0lHTnZiSFZ0YmtSaGRHRTZJR1JoZEdGTlpYUnlhV011WkdGMFlTeGNiaUFnSUNBZ0lHMWxkR2h2WkRvZ2JXVjBhRzlrTEZ4dUlDQWdJQ0FnYldWaGMzVnlaVG9nWkdGMFlVMWxkSEpwWXk1dFpYUnlhV01zWEc0Z0lDQWdJQ0J2Y0hScGIyNXpPaUJ2Y0hScGIyNXpMRnh1SUNBZ0lIMHBPMXh1SUNBZ0lIZHZjbXRsY2k1dmJtMWxjM05oWjJVZ1BTQW9lMlJoZEdFNklIdGthWE4wWVc1alpTd2daVzFpWldSa2FXNW5mWDBwSUQwK0lIdGNiaUFnSUNBZ2NtVnpiMngyWlNoN1pHbHpkR0Z1WTJVNklHUnBjM1JoYm1ObExDQmxiV0psWkdScGJtYzZJR1Z0WW1Wa1pHbHVaMzBwTzF4dUlDQWdJSDA3WEc0Z0lIMHBPMXh1ZlZ4dUlsMTkiLCIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG5leHBvcnQgY29uc3Qgc2ltaWxhcml0eU1ldHJpYyA9IHtcbiAgICAnVGFuaW1vdG8nOiB0YW5pbW90b1NpbWlsYXJpdHksXG4gICAgJ0RpY2UnOiBkaWNlU2ltaWxhcml0eSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNTaW1pbGFyaXR5LFxuICAgICdCcmF1bi1CbGFucXVldCc6IGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5LFxuICAgICdDb3NpbmUnOiBjb3NpbmVTaW1pbGFyaXR5LFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraVNpbWlsYXJpdHksXG4gICAgJ01jLUNvbm5hdWdoZXknOiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5LFxuICAgICdSb2dvdC1Hb2xkYmVyZyc6IHJvZ290R29sZGJlcmdTaW1pbGFyaXR5LFxuICAgICdSdXNzZWwnOiBydXNzZWxTaW1pbGFyaXR5LFxuICAgICdTb2thbCc6IHNva2FsU2ltaWxhcml0eSxcbiAgICAnSGFtbWluZyc6IGhhbW1pbmdTaW1pbGFyaXR5LFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5TaW1pbGFyaXR5LFxufTtcbmV4cG9ydCBjb25zdCBkaXN0YW5jZU1ldHJpY3MgPSB7XG4gICAgJ1Rhbmltb3RvJzogdGFuaW1vdG9EaXN0YW5jZSxcbiAgICAnRGljZSc6IGRpY2VEaXN0YW5jZSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNEaXN0YW5jZSxcbiAgICAnQnJhdW4tQmxhbnF1ZXQnOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgJ0Nvc2luZSc6IGNvc2luZURpc3RhbmNlLFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraURpc3RhbmNlLFxuICAgICdNYy1Db25uYXVnaGV5JzogbWNDb25uYXVnaGV5RGlzdGFuY2UsXG4gICAgJ1JvZ290LUdvbGRiZXJnJzogcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLFxuICAgICdSdXNzZWwnOiBydXNzZWxEaXN0YW5jZSxcbiAgICAnU29rYWwnOiBzb2thbERpc3RhbmNlLFxuICAgICdIYW1taW5nJzogaGFtbWluZ0Rpc3RhbmNlLFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQ0hFTV9TSU1JTEFSSVRZX01FVFJJQ1MgPSBbJ1Rhbmltb3RvJywgJ0RpY2UnLCAnQ29zaW5lJywgJ0hhbW1pbmcnLCAnRXVjbGlkZWFuJ107XG5leHBvcnQgZnVuY3Rpb24gdGFuaW1vdG9TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKHRvdGFsIC0gY29tbW9uKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0YW5pbW90b0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eSh0YW5pbW90b1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gMiAqIGNvbW1vbiAvIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoZGljZVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBNYXRoLnNxcnQodG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShjb3NpbmVTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW5TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShldWNsaWRlYW5EaXN0YW5jZSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXVjbGlkZWFuRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBNYXRoLnNxcnQoeC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCkgLSAyICogeC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoaGFtbWluZ0Rpc3RhbmNlKHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKSAtIDIgKiB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gc29rYWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKDIgKiB0b3RhbCAtIDMgKiBjb21tb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNva2FsRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHNva2FsU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24ga3VsY3p5bnNraVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgdG90YWxQcm9kID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsUHJvZCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gKGNvbW1vbiAqIHRvdGFsKSAvICgyICogdG90YWxQcm9kKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBrdWxjenluc2tpRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGt1bGN6eW5za2lTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IHRvdGFsUHJvZCA9IHgudHJ1ZUNvdW50KCkgKiB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbFByb2QgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIChjb21tb24gKiB0b3RhbCAtIHRvdGFsUHJvZCkgLyB0b3RhbFByb2Q7XG59XG5leHBvcnQgZnVuY3Rpb24gbWNDb25uYXVnaGV5RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KG1jQ29ubmF1Z2hleVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzeW1tZXRyaWNTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBtaW4gPSBNYXRoLm1pbih4LnRydWVDb3VudCgpLCB5LnRydWVDb3VudCgpKTtcbiAgICBpZiAobWluID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBtaW47XG59XG5leHBvcnQgZnVuY3Rpb24gYXN5bW1ldHJpY0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShhc3ltbWV0cmljU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYnJhdW5CbGFucXVldFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHgudHJ1ZUNvdW50KCksIHkudHJ1ZUNvdW50KCkpO1xuICAgIGlmIChtYXggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIG1heDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicmF1bkJsYW5xdWV0RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBydXNzZWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBpZiAoeC5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIHgubGVuZ3RoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1c3NlbERpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShydXNzZWxTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByb2dvdEdvbGRiZXJnU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIGNvbnN0IHRvdGFsID0geC5jb3VudEJpdHModHJ1ZSkgKyB5LmNvdW50Qml0cyh0cnVlKTtcbiAgICBjb25zdCBsZW4gPSB4Lmxlbmd0aDtcbiAgICBjb25zdCBkaWZmID0gbGVuIC0gdG90YWwgKyBjb21tb247XG4gICAgaWYgKChjb21tb24gPT0gbGVuKSB8fCAoZGlmZiA9PSBsZW4pKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGNvbW1vbiAvIHRvdGFsICsgZGlmZiAvICgyICogbGVuIC0gdG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJvZ290R29sZGJlcmdEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkocm9nb3RHb2xkYmVyZ1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoZGlzdGFuY2UpIHtcbiAgICByZXR1cm4gMSAvICgxICsgZGlzdGFuY2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoc2ltaWxhcml0eSkge1xuICAgIHJldHVybiAxIC8gc2ltaWxhcml0eSAtIDE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJsdGFXeGhjbWwwZVMxdFpYUnlhV056TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGQlF5eFRRVUZUTEVWQlFVTXNUVUZCVFN4VlFVRlZMRU5CUVVNN1FVRkZia01zVFVGQlRTeERRVUZETEUxQlFVMHNaMEpCUVdkQ0xFZEJRVEpFTzBsQlEzUkdMRlZCUVZVc1JVRkJSU3hyUWtGQmEwSTdTVUZET1VJc1RVRkJUU3hGUVVGRkxHTkJRV003U1VGRGRFSXNXVUZCV1N4RlFVRkZMRzlDUVVGdlFqdEpRVU5zUXl4blFrRkJaMElzUlVGQlJTeDFRa0ZCZFVJN1NVRkRla01zVVVGQlVTeEZRVUZGTEdkQ1FVRm5RanRKUVVNeFFpeFpRVUZaTEVWQlFVVXNiMEpCUVc5Q08wbEJRMnhETEdWQlFXVXNSVUZCUlN4elFrRkJjMEk3U1VGRGRrTXNaMEpCUVdkQ0xFVkJRVVVzZFVKQlFYVkNPMGxCUTNwRExGRkJRVkVzUlVGQlJTeG5Ra0ZCWjBJN1NVRkRNVUlzVDBGQlR5eEZRVUZGTEdWQlFXVTdTVUZEZUVJc1UwRkJVeXhGUVVGRkxHbENRVUZwUWp0SlFVTTFRaXhYUVVGWExFVkJRVVVzYlVKQlFXMUNPME5CUTJwRExFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN4bFFVRmxMRWRCUVRKRU8wbEJRM0pHTEZWQlFWVXNSVUZCUlN4blFrRkJaMEk3U1VGRE5VSXNUVUZCVFN4RlFVRkZMRmxCUVZrN1NVRkRjRUlzV1VGQldTeEZRVUZGTEd0Q1FVRnJRanRKUVVOb1F5eG5Ra0ZCWjBJc1JVRkJSU3h4UWtGQmNVSTdTVUZEZGtNc1VVRkJVU3hGUVVGRkxHTkJRV003U1VGRGVFSXNXVUZCV1N4RlFVRkZMR3RDUVVGclFqdEpRVU5vUXl4bFFVRmxMRVZCUVVVc2IwSkJRVzlDTzBsQlEzSkRMR2RDUVVGblFpeEZRVUZGTEhGQ1FVRnhRanRKUVVOMlF5eFJRVUZSTEVWQlFVVXNZMEZCWXp0SlFVTjRRaXhQUVVGUExFVkJRVVVzWVVGQllUdEpRVU4wUWl4VFFVRlRMRVZCUVVVc1pVRkJaVHRKUVVNeFFpeFhRVUZYTEVWQlFVVXNhVUpCUVdsQ08wTkJReTlDTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3gxUWtGQmRVSXNSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEZOQlFWTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVVNVJpeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZWtRc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU0xUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRE8xRkJRMW9zVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkRMRTlCUVU4c1RVRkJUU3hIUVVGSExFTkJRVU1zUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNM1JDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRelZETEVsQlFVa3NTMEZCU3l4SlFVRkpMRU5CUVVNN1VVRkRXaXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU0xUWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnVSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzWkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNTVUZCU1N4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVOYUxFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNZMEZCWXl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM0pFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETTBRc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHRRa0ZCYlVJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU14UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpWRUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZUVRc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkRMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5zUml4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHbENRVUZwUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM2hFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRekZFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1pVRkJaU3hEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzUkVMRTlCUVU4c1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFZEJRVU1zUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTjJSU3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOMFJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUXpWRExFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXpReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOd1JDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNeFJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMRzlDUVVGdlFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpORUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU5vUkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hEUVVGRE8xRkJRMmhDTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETzBGQlF6VkRMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYTBKQlFXdENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGVrUXNUMEZCVHl4NVFrRkJlVUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhOQ1FVRnpRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6ZEVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVOb1JDeEpRVUZKTEZOQlFWTXNTVUZCU1N4RFFVRkRPMUZCUTJoQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkRiRVFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4dlFrRkJiMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTXpSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMSE5DUVVGelFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMnBGTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2IwSkJRVzlDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRNMFFzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJrUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOV0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRGRFSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hyUWtGQmEwSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVONlJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF5OUVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzZFVKQlFYVkNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE9VUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtRc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5XTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHhRa0ZCY1VJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU0xUkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJ4RkxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTTdVVUZEWml4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpORUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZET1VRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRjRVFzVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVOeVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dEpRVU5zUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJRenRSUVVGRkxFOUJRVThzUjBGQlJ5eERRVUZET3p0UlFVTTFReXhQUVVGUExFMUJRVTBzUjBGQlJ5eExRVUZMTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjRSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhGQ1FVRnhRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6VkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRiRVVzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4NVFrRkJlVUlzUTBGQlF5eFJRVUZuUWp0SlFVTjRSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZGTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNM1FpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSGxDUVVGNVFpeERRVUZETEZWQlFXdENPMGxCUXpGRUxFOUJRVThzUTBGQlF5eEhRVUZITEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkROVUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eE5RVUZqTEVWQlFVVXNRMEZCVXl4RlFVRkZMRWxCUVhkRE8wbEJRMnhITEZOQlFWTXNTMEZCU3l4RFFVRkRMRTFCUVdkRExFVkJRVVVzVDBGQk9FSTdVVUZETjBVc1NVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYwUWl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVU0xUWl4TlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEpRVUZKTEdOQlFXTXNSMEZCUnl4VlFVRlZMRVZCUVVVN1owSkJRM0pFTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNN1owSkJRMjVDTEZWQlFWVXNSMEZCUnl4alFVRmpMRU5CUVVNN1lVRkROMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUlRkQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkRaaXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUU0UWl4RlFVTXZReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJVeXhIUVVGSExFVkJRVVVzUzBGQlN6dFpRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRVQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRlRUk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnUW1sMFFYSnlZWGtnWm5KdmJTQW5MaTlpYVhRdFlYSnlZWGtuTzF4dWFXMXdiM0owSUh0eVlXNWtiMjFKYm5SOUlHWnliMjBnSnk0dmNtRnVaRzl0Snp0Y2JseHVaWGh3YjNKMElHTnZibk4wSUhOcGJXbHNZWEpwZEhsTlpYUnlhV002SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2tnUFQ0Z2JuVnRZbVZ5ZlNBOUlIdGNiaUFnSjFSaGJtbHRiM1J2SnpvZ2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUkdsalpTYzZJR1JwWTJWVGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUVhONWJXMWxkSEpwWXljNklHRnplVzF0WlhSeWFXTlRhVzFwYkdGeWFYUjVMRnh1SUNBblFuSmhkVzR0UW14aGJuRjFaWFFuT2lCaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU3hjYmlBZ0owTnZjMmx1WlNjNklHTnZjMmx1WlZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RMZFd4amVubHVjMnRwSnpvZ2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa3NYRzRnSUNkTll5MURiMjV1WVhWbmFHVjVKem9nYldORGIyNXVZWFZuYUdWNVUybHRhV3hoY21sMGVTeGNiaUFnSjFKdloyOTBMVWR2YkdSaVpYSm5Kem9nY205bmIzUkhiMnhrWW1WeVoxTnBiV2xzWVhKcGRIa3NYRzRnSUNkU2RYTnpaV3duT2lCeWRYTnpaV3hUYVcxcGJHRnlhWFI1TEZ4dUlDQW5VMjlyWVd3bk9pQnpiMnRoYkZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMU5wYldsc1lYSnBkSGtzWEc0Z0lDZEZkV05zYVdSbFlXNG5PaUJsZFdOc2FXUmxZVzVUYVcxcGJHRnlhWFI1TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHUnBjM1JoYm1ObFRXVjBjbWxqY3pvZ2UxdHVZVzFsT2lCemRISnBibWRkT2lBb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1NBOVBpQnVkVzFpWlhKOUlEMGdlMXh1SUNBblZHRnVhVzF2ZEc4bk9pQjBZVzVwYlc5MGIwUnBjM1JoYm1ObExGeHVJQ0FuUkdsalpTYzZJR1JwWTJWRWFYTjBZVzVqWlN4Y2JpQWdKMEZ6ZVcxdFpYUnlhV01uT2lCaGMzbHRiV1YwY21salJHbHpkR0Z1WTJVc1hHNGdJQ2RDY21GMWJpMUNiR0Z1Y1hWbGRDYzZJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlN4Y2JpQWdKME52YzJsdVpTYzZJR052YzJsdVpVUnBjM1JoYm1ObExGeHVJQ0FuUzNWc1kzcDVibk5yYVNjNklHdDFiR042ZVc1emEybEVhWE4wWVc1alpTeGNiaUFnSjAxakxVTnZibTVoZFdkb1pYa25PaUJ0WTBOdmJtNWhkV2RvWlhsRWFYTjBZVzVqWlN4Y2JpQWdKMUp2WjI5MExVZHZiR1JpWlhKbkp6b2djbTluYjNSSGIyeGtZbVZ5WjBScGMzUmhibU5sTEZ4dUlDQW5VblZ6YzJWc0p6b2djblZ6YzJWc1JHbHpkR0Z1WTJVc1hHNGdJQ2RUYjJ0aGJDYzZJSE52YTJGc1JHbHpkR0Z1WTJVc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMFJwYzNSaGJtTmxMRnh1SUNBblJYVmpiR2xrWldGdUp6b2daWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnUTBoRlRWOVRTVTFKVEVGU1NWUlpYMDFGVkZKSlExTWdQU0JiSjFSaGJtbHRiM1J2Snl3Z0owUnBZMlVuTENBblEyOXphVzVsSnl3Z0owaGhiVzFwYm1jbkxDQW5SWFZqYkdsa1pXRnVKMTA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMFlXNXBiVzkwYjFOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnYVdZZ0tIUnZkR0ZzSUQwOUlEQXBYRzRnSUNBZ2NtVjBkWEp1SURFdU1EdGNiaUFnWTI5dWMzUWdZMjl0Ylc5dUlEMGdlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1SUNCeVpYUjFjbTRnWTI5dGJXOXVJQzhnS0hSdmRHRnNJQzBnWTI5dGJXOXVLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIUmhibWx0YjNSdlJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FySUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkNBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SURJZ0tpQmpiMjF0YjI0Z0x5QjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoa2FXTmxVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRTFoZEdndWMzRnlkQ2gwYjNSaGJDazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hqYjNOcGJtVlRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWMVkyeHBaR1ZoYmxOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRk5wYldsc1lYSnBkSGxHY205dFJHbHpkR0Z1WTJVb1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2VDd2dlU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2g0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1NBdElESXFlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHaGhiVzFwYm1kVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHaGhiVzFwYm1kRWFYTjBZVzVqWlNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm9ZVzF0YVc1blJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlIZ3VkSEoxWlVOdmRXNTBLQ2tnS3lCNUxuUnlkV1ZEYjNWdWRDZ3BJQzBnTWlwNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6YjJ0aGJGTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnWTI5dGJXOXVJRDBnZUM1aGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hrc0lIUnlkV1VwTzF4dUlDQnlaWFIxY200Z1kyOXRiVzl1SUM4Z0tESWdLaUIwYjNSaGJDQXRJRE1nS2lCamIyMXRiMjRwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjMjlyWVd4RWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoemIydGhiRk5wYldsc1lYSnBkSGtvZUN3Z2VTa3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnZEc5MFlXeFFjbTlrSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FxSUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkZCeWIyUWdQVDBnTUNsY2JpQWdJQ0J5WlhSMWNtNGdNQzR3TzF4dUlDQmpiMjV6ZENCamIyMXRiMjRnUFNCNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNGdJSEpsZEhWeWJpQW9ZMjl0Ylc5dUlDb2dkRzkwWVd3cElDOGdLRElnS2lCMGIzUmhiRkJ5YjJRcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYTNWc1kzcDVibk5yYVVScGMzUmhibU5sS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCblpYUkVhWE4wWVc1alpVWnliMjFUYVcxcGJHRnlhWFI1S0d0MWJHTjZlVzV6YTJsVGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzFqUTI5dWJtRjFaMmhsZVZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnWTI5dWMzUWdkRzkwWVd4UWNtOWtJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiRkJ5YjJRZ1BUMGdNQ2xjYmlBZ0lDQnlaWFIxY200Z01DNHdPMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lISmxkSFZ5YmlBb1kyOXRiVzl1SUNvZ2RHOTBZV3dnTFNCMGIzUmhiRkJ5YjJRcElDOGdkRzkwWVd4UWNtOWtPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JXTkRiMjV1WVhWbmFHVjVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29iV05EYjI1dVlYVm5hR1Y1VTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmhjM2x0YldWMGNtbGpVMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0J0YVc0Z1BTQk5ZWFJvTG0xcGJpaDRMblJ5ZFdWRGIzVnVkQ2dwTENCNUxuUnlkV1ZEYjNWdWRDZ3BLVHRjYmlBZ2FXWWdLRzFwYmlBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUcxcGJqdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdGemVXMXRaWFJ5YVdORWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaGMzbHRiV1YwY21salUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJpY21GMWJrSnNZVzV4ZFdWMFUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQnRZWGdnUFNCTllYUm9MbTFoZUNoNExuUnlkV1ZEYjNWdWRDZ3BMQ0I1TG5SeWRXVkRiM1Z1ZENncEtUdGNiaUFnYVdZZ0tHMWhlQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRzFoZUR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWRYTnpaV3hUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2g0TG14bGJtZDBhQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJSGd1YkdWdVozUm9PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NuVnpjMlZzUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvY25WemMyVnNVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWIyZHZkRWR2YkdSaVpYSm5VMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1amIzVnVkRUpwZEhNb2RISjFaU2tnS3lCNUxtTnZkVzUwUW1sMGN5aDBjblZsS1R0Y2JpQWdZMjl1YzNRZ2JHVnVJRDBnZUM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUdScFptWWdQU0JzWlc0Z0xTQjBiM1JoYkNBcklHTnZiVzF2Ymp0Y2JpQWdhV1lnS0NoamIyMXRiMjRnUFQwZ2JHVnVLU0I4ZkNBb1pHbG1aaUE5UFNCc1pXNHBLU0J5WlhSMWNtNGdNUzR3TzF4dUlDQmxiSE5sSUhKbGRIVnliaUJqYjIxdGIyNGdMeUIwYjNSaGJDQXJJR1JwWm1ZZ0x5QW9NaUFxSUd4bGJpQXRJSFJ2ZEdGc0tUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKdloyOTBSMjlzWkdKbGNtZEVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaHliMmR2ZEVkdmJHUmlaWEpuVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHUnBjM1JoYm1ObE9pQnVkVzFpWlhJcElIdGNiaUFnY21WMGRYSnVJREVnTHlBb0lERWdLeUJrYVhOMFlXNWpaU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJFYVhOMFlXNWpaVVp5YjIxVGFXMXBiR0Z5YVhSNUtITnBiV2xzWVhKcGRIazZJRzUxYldKbGNpa2dlMXh1SUNCeVpYUjFjbTRnTVNBdklITnBiV2xzWVhKcGRIa2dMU0F4TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUkdsMlpYSnpaVk4xWW5ObGRDaHNaVzVuZEdnNklHNTFiV0psY2l3Z2Jqb2diblZ0WW1WeUxDQmthWE4wT2lBb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJR1oxYm1OMGFXOXVJRzFoZUVKNUtIWmhiSFZsY3pvZ1NYUmxjbUZpYkdWSmRHVnlZWFJ2Y2p4dWRXMWlaWEkrTENCdmNtUmxja0o1T2lBb2FUb2diblZ0WW1WeUtTQTlQaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQnNaWFFnYldGNFZtRnNkV1VnUFNCdWRXeHNPMXh1SUNBZ0lHeGxkQ0J0WVhoUGNtUmxja0o1SUQwZ2JuVnNiRHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWld4bGJXVnVkQ0J2WmlCMllXeDFaWE1wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1ZzWlcxbGJuUlBjbVJsY2tKNUlEMGdiM0prWlhKQ2VTaGxiR1Z0Wlc1MEtUdGNiaUFnSUNBZ0lHbG1JQ2h0WVhoUGNtUmxja0o1SUQwOUlHNTFiR3dnZkh3Z1pXeGxiV1Z1ZEU5eVpHVnlRbmtnUGlCdFlYaFBjbVJsY2tKNUtTQjdYRzRnSUNBZ0lDQWdJRzFoZUZaaGJIVmxJRDBnWld4bGJXVnVkRHRjYmlBZ0lDQWdJQ0FnYldGNFQzSmtaWEpDZVNBOUlHVnNaVzFsYm5SUGNtUmxja0o1TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JXRjRWbUZzZFdVN1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCemRXSnpaWFFnUFNCYmNtRnVaRzl0U1c1MEtHeGxibWQwYUNBdElERXBYVHRjYmlBZ1kyOXVjM1FnWTI5dGNHeGxiV1Z1ZENBOUlHNWxkeUJUWlhRb0tUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHeGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdhV1lnS0NGemRXSnpaWFF1YVc1amJIVmtaWE1vYVNrcFhHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtRmtaQ2hwS1R0Y2JpQWdmVnh1WEc0Z0lIZG9hV3hsSUNoemRXSnpaWFF1YkdWdVozUm9JRHdnYmlrZ2UxeHVJQ0FnSUdOdmJuTjBJR2xrZUNBOUlHMWhlRUo1S0Z4dUlDQWdJQ0FnWTI5dGNHeGxiV1Z1ZEM1MllXeDFaWE1vS1NCaGN5QkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c1hHNGdJQ0FnSUNBb2FTa2dQVDRnVFdGMGFDNXRhVzR1WVhCd2JIa29UV0YwYUN3Z2MzVmljMlYwTG0xaGNDaG1kVzVqZEdsdmJpaDJZV3dzSUdsdVpHVjRLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrYVhOMEtHa3NJSFpoYkNrN1hHNGdJQ0FnSUNCOUtTa3BPMXh1SUNBZ0lHbG1JQ2hwWkhncElIdGNiaUFnSUNBZ0lITjFZbk5sZEM1d2RYTm9LR2xrZUNrN1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtUmxiR1YwWlNocFpIZ3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z2MzVmljMlYwTzF4dWZWeHVJbDE5IiwiLyoqXG4gKiBEZW5vdGVzIGEgdmVjdG9yIG9mIGZsb2F0aW5nIHBvaXQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JcbiAqIEBleHRlbmRzIHtGbG9hdDMyQXJyYXl9XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3IgZXh0ZW5kcyBGbG9hdDMyQXJyYXkge1xufVxuLyoqXG4gKiBEZW5vdGVzIGEgdHdvLWRpbWVuc2lvbmFsIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgTWF0cml4XG4gKiBAZXh0ZW5kcyB7QXJyYXk8VmVjdG9yPn1cbiAqL1xuZXhwb3J0IGNsYXNzIE1hdHJpeCBleHRlbmRzIEFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBjYXJ0ZXNpYW4gY29vcmRpbmF0ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIENvb3JkaW5hdGVzXG4gKiBAZXh0ZW5kcyB7TWF0cml4fVxuICovXG5leHBvcnQgY2xhc3MgQ29vcmRpbmF0ZXMgZXh0ZW5kcyBNYXRyaXgge1xufVxuLyoqXG4gKiBEZW5vdGVzIGFuIGFycmF5IG9mIGFyYml0cmFyeS10eXBlZCB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JzXG4gKiBAZXh0ZW5kcyB7QXJyYXk8YW55Pn1cbiAqL1xuZXhwb3J0IGNsYXNzIFZlY3RvcnMgZXh0ZW5kcyBBcnJheSB7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRmxCUVZrN1EwRkJSenRCUVVVelF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1RVRkJUeXhUUVVGUkxFdEJRV0U3UTBGQlJ6dEJRVVUxUXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVjBGQldTeFRRVUZSTEUxQlFVMDdRMEZCUnp0QlFVVXhRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUMEZCVVN4VFFVRlJMRXRCUVZVN1EwRkJSeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUhabFkzUnZjaUJ2WmlCbWJHOWhkR2x1WnlCd2IybDBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdWbVZqZEc5eVhHNGdLaUJBWlhoMFpXNWtjeUI3Um14dllYUXpNa0Z5Y21GNWZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbVZqZEc5eUlHVjRkR1Z1WkhNZ1JteHZZWFF6TWtGeWNtRjVJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCdFlYUnlhWGd1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUUxaGRISnBlRnh1SUNvZ1FHVjRkR1Z1WkhNZ2UwRnljbUY1UEZabFkzUnZjajU5WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTllYUnlhWGdnWlhoMFpXNWtjeUJCY25KaGVUeFdaV04wYjNJK0lIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJqWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlhNdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFTnZiM0prYVc1aGRHVnpYRzRnS2lCQVpYaDBaVzVrY3lCN1RXRjBjbWw0ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1EyOXZjbVJwYm1GMFpYTWdaWGgwWlc1a2N5Qk5ZWFJ5YVhnZ2UzMWNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0Z1SUdGeWNtRjVJRzltSUdGeVltbDBjbUZ5ZVMxMGVYQmxaQ0IyWldOMGIzSnpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCamJHRnpjeUJXWldOMGIzSnpYRzRnS2lCQVpYaDBaVzVrY3lCN1FYSnlZWGs4WVc1NVBuMWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpsWTNSdmNuTWdaWGgwWlc1a2N5QkJjbkpoZVR4aGJuaytJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElHUnBZM1JwYjI1aGNua2dZMjl1ZEdGcGJtbHVaeUJtZFc1amRHbHZiaUJ2Y0hScGIyNXpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCMGVYQmxJRTl3ZEdsdmJuTmNiaUFxTDF4dVpYaHdiM0owSUhSNWNHVWdUM0IwYVc5dWN5QTlJSHRiYm1GdFpUb2djM1J5YVc1blhUb2dZVzU1ZlR0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHTjFjM1J2YlNCa2FYTjBZVzVqWlNCdFpYUnlhV01nWW1WMGQyVmxiaUIwYUdVZ2RIZHZJR2RwZG1WdUlIWmxZM1J2Y25NdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSFI1Y0dVZ1JHbHpkR0Z1WTJWTlpYUnlhV05jYmlBcUlFQndZWEpoYlNCN1lXNTVmU0IyTVNCVWFHVWdabWx5YzNRZ2RtVmpkRzl5TGx4dUlDb2dRSEJoY21GdElIdGhibmw5SUhZeUlGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlhObElIUjNieUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JFYVhOMFlXNWpaVTFsZEhKcFl5QTlJQ2gyTVRvZ1lXNTVMQ0IyTWpvZ1lXNTVLU0E5UGlBb2JuVnRZbVZ5S1R0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHRWdjMmx0Y0d4bElITjBjbWx1WnlCMGJ5QnpkSEpwYm1jZ1pHbGpkR2x2Ym1GeWVTNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBZEhsd1pTQlRkSEpwYm1kRWFXTjBhVzl1WVhKNVhHNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQjdXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuZlR0Y2JpSmRmUT09IiwiaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21GbG9hdCwgcmFuZG9tSW50IH0gZnJvbSAnLi9yYW5kb20nO1xuLyoqXG4gKiBBc3NlcnRzIGEgY29uZGl0aW9uIGJ5IHRocm93aW5nIGFuIEVycm9yLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NvbmRpdGlvbj1mYWxzZV0gQ29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZT0nQXNzZXJ0aW9uIGVycm9yLiddIE1lc3NhZ2UgdG8gb3V0cHV0LlxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uID0gZmFsc2UsIG1lc3NhZ2UgPSAnQXNzZXJ0aW9uIGVycm9yLicpIHtcbiAgICBpZiAoIWNvbmRpdGlvbilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xufVxuLyoqXG4gKiBDcmVhdGVzIG5ldyB0d28tZGltZW5zaW9uYWwgYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2Ygcm93cykuXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiBjb2x1bW5zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZmlsbD0wXSBBIHZhbHVlIHRvIGZpbGwgdGhlIGNvb3JkaW5hdGVzIHdpdGguXG4gKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQSB0d28tZGltZW5zaW9uYWwgZmlsbGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmZ1bmN0aW9uIGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBmaWxsID0gMCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkoZGltZW5zaW9uMSkuZmlsbChmaWxsKS5tYXAoKCkgPT4gKG5ldyBWZWN0b3IoZGltZW5zaW9uMikuZmlsbChmaWxsKSkpO1xufVxuLyoqXG4gKiBUcmFuc3Bvc2UgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXggVGhlIG1hdHJpeCB0byBiZSB0cmFuc3Bvc2VkLlxuICogQHJldHVybiB7TWF0cml4fSBUcmFuc3Bvc2VkIG1hdHJpeC5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlTWF0cml4KG1hdHJpeCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkobWF0cml4WzBdLmxlbmd0aCkuZmlsbCgwKVxuICAgICAgICAubWFwKChfLCBpKSA9PiAobmV3IFZlY3RvcihtYXRyaXgubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaikgPT4gKG1hdHJpeFtqXVtpXSkpKSk7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlY3RvcnMgd2l0aCB0aGUgc2Vjb25kIG9uZSB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBnaXZlbiByYXRpby5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbXVsdGlwbGllcj0xXSBBIG11bHRpcGxpZXIgdG8gYmUgdXNlZCBiZWZvcmUgdGhlIHNlY29uZCB2ZWN0b3IgaXMgYWRkZWQuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IE5ldyB2ZWN0b3IgY29udGFpbmVkIHRoZSByZXN1bHQgb2Ygb3BlcmF0aW9uIHArbXVsdGlwbGllcipxLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yQWRkKHAsIHEsIG11bHRpcGxpZXIgPSAxKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gcC5sZW5ndGg7XG4gICAgYXNzZXJ0KG5JdGVtcyA9PSBxLmxlbmd0aCwgJ1ZlY3RvciBsZW5ndGhzIGRvIG5vdCBtYXRjaC4nKTtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gcFtpXSArIG11bHRpcGxpZXIgKiBxW2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VtcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBiZSBzdW1tZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZWN0b3IncyBpdGVtcyBzdW0uXG4gKi9cbmZ1bmN0aW9uIGl0ZW1zU3VtKHYpIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWwgKz0gdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1cWFyZXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gc3F1YXJlLlxuICogQHJldHVybiB7VmVjdG9yfSBBIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgb3JpZ2luYWwncyBpdGVtcyBzcXVhcmVkLlxuICovXG5mdW5jdGlvbiB2ZWN0b3JTcXVhcmUodikge1xuICAgIGNvbnN0IG5JdGVtcyA9IHYubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yTGVuZ3RoKHYpIHtcbiAgICBsZXQgc3FyU3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspXG4gICAgICAgIHNxclN1bSArPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxclN1bSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yRG90UHJvZHVjdCh2MSwgdjIpIHtcbiAgICBpZiAodjEubGVuZ3RoICE9IHYyLmxlbmd0aClcbiAgICAgICAgdGhyb3cgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKiogR2VuZXJhdGVzIGFycmF5IGZyb20gYSByYW5nZSBbYmVnaW47IGVuZF0gb3IgW2JlZ2luOyBlbmQpIGlmIGVuZEV4Y2x1c2l2ZS4gKiovXG5leHBvcnQgZnVuY3Rpb24gZ2VuUmFuZ2UoYmVnaW4sIGVuZCwgZW5kRXhjbHVzaXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBlbmQgLSBiZWdpbiArIChlbmRFeGNsdXNpdmUgPyAwIDogMSk7XG4gICAgY29uc3Qgc2VyaWVzID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgICAgICBzZXJpZXNbaV0gPSBiZWdpbiArIGk7XG4gICAgcmV0dXJuIHNlcmllcztcbn1cbi8qKlxuKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4qXG4qIEBleHBvcnRcbiogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXZlcnNlPWZhbHNlXSBXaGV0aGVyIHRvIHJldHVybiByZXZlcnNlZCBvcmRlci5cbiogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRXRCUVVzc1EwRkJReXc0UTBGQk9FTXNRMEZCUXl4RFFVRkRPMGxCUXpsRUxFbEJRVWtzU1VGQlNTeEhRVUZYTEVOQlFVTXNRMEZCUXp0SlFVTnlRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZYTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEZUVNc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVE3T3pzN096czdPMGRCVVVjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1ZVRkJhMElzUlVGQlJTeFZRVUZyUWl4RlFVRkZMRkZCUVdkQ0xFVkJRVVU3U1VGRGVrWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXp0SlFVVjJSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEyNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRMnBETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRja003U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3d3UWtGQk1FSXNRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVenRKUVVNM1JDeE5RVUZOTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJwRExFMUJRVTBzVFVGQlRTeEhRVUZITEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOc1F5eE5RVUZOTEZWQlFWVXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGNFTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlF5OUNMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR3RDUVVGclFpeERRVUZETEVsQlFXRXNSVUZCUlN4UlFVRjNRanRKUVVONFJTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRek5DTEUxQlFVMHNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUld4RUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtNc1RVRkJUU3hEUVVGRExFZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14Uml4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTnFRenRMUVVOR08wbEJRMFFzVDBGQlR5eE5RVUZOTEVOQlFVTTdRVUZEYUVJc1EwRkJRenRCUVVWRUxHdEdRVUZyUmp0QlFVTnNSaXhOUVVGTkxGVkJRVlVzVVVGQlVTeERRVUZETEV0QlFXRXNSVUZCUlN4SFFVRlhMRVZCUVVVc1dVRkJXU3hIUVVGSExFdEJRVXM3U1VGRGRrVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVXNzUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVWMFF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTTNRaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVWNFFpeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVUU3T3pzN096czdSVUZQUlR0QlFVTklMRTFCUVUwc1ZVRkJWU3hQUVVGUExFTkJRVU1zVFVGQllTeEZRVUZGTEU5QlFVOHNSMEZCUnl4TFFVRkxPMGxCUTNCRUxFMUJRVTBzVFVGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUnl4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVTBzUlVGQlJTeERRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNjVUpCUVhGQ08wbEJRMnhGTEUxQlFVMHNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXh0UWtGQmJVSTdTVUZEZGtRc1RVRkJUU3hSUVVGUkxFZEJRVWNzUTBGQlF5eEhRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTXhSU3hQUVVGUExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4TlFVRmpMRVZCUVVVc1EwRkJVeXhGUVVGRkxFbEJRWGRETzBsQlEyeEhMRk5CUVZNc1MwRkJTeXhEUVVGRExFMUJRV2RETEVWQlFVVXNUMEZCT0VJN1VVRkROMFVzU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVVjBRaXhMUVVGTExFMUJRVTBzVDBGQlR5eEpRVUZKTEUxQlFVMHNSVUZCUlR0WlFVTTFRaXhOUVVGTkxHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeFZRVUZWTEVsQlFVa3NTVUZCU1N4SlFVRkpMR05CUVdNc1IwRkJSeXhWUVVGVkxFVkJRVVU3WjBKQlEzSkVMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU03WjBKQlEyNUNMRlZCUVZVc1IwRkJSeXhqUVVGakxFTkJRVU03WVVGRE4wSTdVMEZEUmp0UlFVTkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSVGRDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pDTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGNrSTdTVUZGUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGRFppeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRTRRaXhGUVVNdlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlV5eEhRVUZITEVWQlFVVXNTMEZCU3p0WlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFBc1NVRkJTU3hIUVVGSExFVkJRVVU3V1VGRFVDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnBDTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VTBGRGVFSTdTMEZEUmp0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTTdRVUZGUkRzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNVMEZCVXl4RFFVRkRMRWxCUVZrN1NVRkRjRU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJJc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJWb3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmJFSXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRmNFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVVTNReXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlJXNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzBsQlJXNURMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVUdEpRVU01UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRRaXhQUVVGUExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzSkZMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UwMWhkSEpwZUN3Z1ZtVmpkRzl5TENCRGIyOXlaR2x1WVhSbGN5d2dWbVZqZEc5eWN5d2dSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlHWnliMjBnSnk0dmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdHlZVzVrYjIxR2JHOWhkQ3dnY21GdVpHOXRTVzUwZlNCbWNtOXRJQ2N1TDNKaGJtUnZiU2M3WEc1Y2JpOHFLbHh1SUNvZ1FYTnpaWEowY3lCaElHTnZibVJwZEdsdmJpQmllU0IwYUhKdmQybHVaeUJoYmlCRmNuSnZjaTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0amIyNWthWFJwYjI0OVptRnNjMlZkSUVOdmJtUnBkR2x2YmlCMGJ5QmhjM05sY25RdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjFsYzNOaFoyVTlKMEZ6YzJWeWRHbHZiaUJsY25KdmNpNG5YU0JOWlhOellXZGxJSFJ2SUc5MWRIQjFkQzVjYmlBcUlFQjBhSEp2ZDNNZ2UwVnljbTl5ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZWE56WlhKMEtHTnZibVJwZEdsdmJqb2dZbTl2YkdWaGJpQTlJR1poYkhObExDQnRaWE56WVdkbE9pQnpkSEpwYm1jZ1BTQW5RWE56WlhKMGFXOXVJR1Z5Y205eUxpY3BJSHRjYmlBZ2FXWWdLQ0ZqYjI1a2FYUnBiMjRwWEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHMWxjM05oWjJVcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nYm1WM0lIUjNieTFrYVcxbGJuTnBiMjVoYkNCaGNuSmhlU0JoYm1RZ1ptbHNiSE1nYVhRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHUnBiV1Z1YzJsdmJqRWdWR2hsSUdacGNuTjBJR1JwYldWdWMybHZiaUJ2WmlCMGFHVWdZMjl2Y21ScGJtRjBaWE1nS0c1MWJXSmxjaUJ2WmlCeWIzZHpLUzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCa2FXMWxibk5wYjI0eUlGUm9aU0J6WldOdmJtUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQmpiMjl5WkdsdVlYUmxjeUFvYm5WdFltVnlJRzltSUdOdmJIVnRibk1wTGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdG1hV3hzUFRCZElFRWdkbUZzZFdVZ2RHOGdabWxzYkNCMGFHVWdZMjl2Y21ScGJtRjBaWE1nZDJsMGFDNWNiaUFxSUVCeVpYUjFjbTRnZTBOdmIzSmthVzVoZEdWemZTQkJJSFIzYnkxa2FXMWxibk5wYjI1aGJDQm1hV3hzWldRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2lCQWRHOWtieUJOYVdkb2RDQmlaU0J6Ykc5M0lITnBibU5sSUhWelpXUWdRWEp5WVhrdWJXRndMaUJRY205aVlXSnNlU0J1WldWa2N5QndaWEptYjNKdFlXNWpaU0J5WlhacGMybHZiaTVjYmlBcUwxeHVablZ1WTNScGIyNGdhVzVwZEVOdmIzSmthVzVoZEdWektHUnBiV1Z1YzJsdmJqRTZJRzUxYldKbGNpd2daR2x0Wlc1emFXOXVNam9nYm5WdFltVnlMQ0JtYVd4c09pQnVkVzFpWlhJZ1BTQXdLVG9nUTI5dmNtUnBibUYwWlhNZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLR1JwYldWdWMybHZiakVwTG1acGJHd29abWxzYkNrdWJXRndLQ2dwSUQwK0lDaHVaWGNnVm1WamRHOXlLR1JwYldWdWMybHZiaklwTG1acGJHd29abWxzYkNrcEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCVWNtRnVjM0J2YzJVZ2JXRjBjbWw0TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1RXRjBjbWw0ZlNCdFlYUnlhWGdnVkdobElHMWhkSEpwZUNCMGJ5QmlaU0IwY21GdWMzQnZjMlZrTGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQlVjbUZ1YzNCdmMyVmtJRzFoZEhKcGVDNWNiaUFxSUVCMGIyUnZJRTFwWjJoMElHSmxJSE5zYjNjZ2MybHVZMlVnZFhObFpDQkJjbkpoZVM1dFlYQXVJRkJ5YjJKaFlteDVJRzVsWldSeklIQmxjbVp2Y20xaGJtTmxJSEpsZG1semFXOXVMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RISmhibk53YjNObFRXRjBjbWw0S0cxaGRISnBlRG9nVFdGMGNtbDRLVG9nVFdGMGNtbDRJSHRjYmlBZ2NtVjBkWEp1SUc1bGR5QkJjbkpoZVNodFlYUnlhWGhiTUYwdWJHVnVaM1JvS1M1bWFXeHNLREFwWEc0Z0lDQWdMbTFoY0Nnb1h5d2dhU2tnUFQ0Z0tHNWxkeUJXWldOMGIzSW9iV0YwY21sNExteGxibWQwYUNrdVptbHNiQ2d3S1M1dFlYQW9LRjhzSUdvcElEMCtJQ2h0WVhSeWFYaGJhbDFiYVYwcEtTa3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFRmtaSE1nZEhkdklIWmxZM1J2Y25NZ2QybDBhQ0IwYUdVZ2MyVmpiMjVrSUc5dVpTQjBieUJpWlNCdGRXeDBhWEJzYVdWa0lHSjVJSFJvWlNCbmFYWmxiaUJ5WVhScGJ5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlJSFJ2SUdGa1pDNWNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0J4SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5SUhSdklHRmtaQzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmJYVnNkR2x3YkdsbGNqMHhYU0JCSUcxMWJIUnBjR3hwWlhJZ2RHOGdZbVVnZFhObFpDQmlaV1p2Y21VZ2RHaGxJSE5sWTI5dVpDQjJaV04wYjNJZ2FYTWdZV1JrWldRdVhHNGdLaUJBY21WMGRYSnVJSHRXWldOMGIzSjlJRTVsZHlCMlpXTjBiM0lnWTI5dWRHRnBibVZrSUhSb1pTQnlaWE4xYkhRZ2IyWWdiM0JsY21GMGFXOXVJSEFyYlhWc2RHbHdiR2xsY2lweExseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZG1WamRHOXlRV1JrS0hBNklGWmxZM1J2Y2l3Z2NUb2dWbVZqZEc5eUxDQnRkV3gwYVhCc2FXVnlPaUJ1ZFcxaVpYSWdQU0F4S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2NDNXNaVzVuZEdnN1hHNWNiaUFnWVhOelpYSjBLRzVKZEdWdGN5QTlQU0J4TG14bGJtZDBhQ3dnSjFabFkzUnZjaUJzWlc1bmRHaHpJR1J2SUc1dmRDQnRZWFJqYUM0bktUdGNibHh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSEF1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCd1cybGRJQ3NnYlhWc2RHbHdiR2xsY2lBcUlIRmJhVjA3WEc1Y2JpQWdjbVYwZFhKdUlIUnZkR0ZzTzF4dWZWeHVYRzR2S2lwY2JpQXFJRk4xYlhNZ2RHaGxJSFpsWTNSdmNpZHpJR2wwWlcxekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCMklGUm9aU0IyWldOMGIzSWdkRzhnWW1VZ2MzVnRiV1ZrTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQlVhR1VnZG1WamRHOXlKM01nYVhSbGJYTWdjM1Z0TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJwZEdWdGMxTjFiU2gyT2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQnNaWFFnZEc5MFlXd2dQU0F3TzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCMGIzUmhiQ0FyUFNCMlcybGRPMXh1WEc0Z0lISmxkSFZ5YmlCMGIzUmhiRHRjYm4xY2JseHVMeW9xWEc0Z0tpQlRkWEZoY21WeklIUm9aU0IyWldOMGIzSW5jeUJwZEdWdGN5NWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2RpQlVhR1VnZG1WamRHOXlJSFJ2SUhOeGRXRnlaUzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1FTQnVaWGNnZG1WamRHOXlJR052Ym5SaGFXNXBibWNnZEdobElHOXlhV2RwYm1Gc0ozTWdhWFJsYlhNZ2MzRjFZWEpsWkM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZG1WamRHOXlVM0YxWVhKbEtIWTZJRlpsWTNSdmNpazZJRlpsWTNSdmNpQjdYRzRnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSFl1YkdWdVozUm9PMXh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCMlcybGRJQ29nZGx0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pNWlc1bmRHZ29kam9nVm1WamRHOXlLVG9nYm5WdFltVnlJSHRjYmlBZ2JHVjBJSE54Y2xOMWJUb2diblZ0WW1WeUlEMGdNRHRjYmlBZ1ptOXlJQ2hzWlhRZ2FUb2diblZ0WW1WeUlEMGdNRHNnYVNBOElIWXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdjM0Z5VTNWdElDczlJSFpiYVYwZ0tpQjJXMmxkTzF4dUlDQnlaWFIxY200Z1RXRjBhQzV6Y1hKMEtITnhjbE4xYlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSkViM1JRY205a2RXTjBLSFl4T2lCV1pXTjBiM0lzSUhZeU9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JwWmlBb2RqRXViR1Z1WjNSb0lDRTlJSFl5TG14bGJtZDBhQ2xjYmlBZ0lDQjBhSEp2ZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JrYVdabUlEMGdkbVZqZEc5eVFXUmtLSEFzSUhFc0lDMHhLVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1JRDBnZG1WamRHOXlVM0YxWVhKbEtHUnBabVlwTzF4dUlDQmpiMjV6ZENCemNXUnBabVpUZFcxdElEMGdhWFJsYlhOVGRXMG9jM0ZrYVdabUtUdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h6Y1dScFptWlRkVzF0S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWkdsemRHRnVZMlVnYldGMGNtbDRJSFZ6YVc1bklHRWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWMzMGdaR0YwWVNCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNdVhHNGdLaUJBY0dGeVlXMGdlMFJwYzNSaGJtTmxUV1YwY21samZTQmthWE4wWVc1alpTQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRU5oYkdOMWJHRjBaV1FnWTNWemRHOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1SmRHVnRjenNnS3l0cEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJR2tnS3lBeE95QnFJRHdnYmtsMFpXMXpPeUFySzJvcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdRNklHNTFiV0psY2lBOUlDaGtZWFJoVzJsZElEMDlJRzUxYkd3cElIeDhJQ2hrWVhSaFcycGRJRDA5SUc1MWJHd3BJRDhnTUNBNklHUnBjM1JoYm1ObEtHUmhkR0ZiYVYwc0lHUmhkR0ZiYWwwcE8xeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnYldGMGNtbDRXMnBkVzJsZElEMGdaRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHMWhkSEpwZUR0Y2JuMWNibHh1THlvcUlFZGxibVZ5WVhSbGN5QmhjbkpoZVNCbWNtOXRJR0VnY21GdVoyVWdXMkpsWjJsdU95QmxibVJkSUc5eUlGdGlaV2RwYmpzZ1pXNWtLU0JwWmlCbGJtUkZlR05zZFhOcGRtVXVJQ29xTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGJsSmhibWRsS0dKbFoybHVPaUJ1ZFcxaVpYSXNJR1Z1WkRvZ2JuVnRZbVZ5TENCbGJtUkZlR05zZFhOcGRtVWdQU0JtWVd4elpTazZJRWx1ZERNeVFYSnlZWGtnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCbGJtUWdMU0JpWldkcGJpQXJJQ2hsYm1SRmVHTnNkWE5wZG1VZ1B5QXdJRG9nTVNrN1hHNGdJR052Ym5OMElITmxjbWxsY3lBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0c1SmRHVnRjeWs3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNsY2JpQWdJQ0J6WlhKcFpYTmJhVjBnUFNCaVpXZHBiaUFySUdrN1hHNWNiaUFnY21WMGRYSnVJSE5sY21sbGN6dGNibjFjYmx4dUlDOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCdmNtUmxjaUJ2WmlCMllXeDFaWE1nWVhNZ2FXWWdkR2hsZVNCaGNtVWdjMjl5ZEdWa0xseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlIWmhiSFZsY3lCSmJuQjFkQ0JoY25KaGVTNWNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNKbGRtVnljMlU5Wm1Gc2MyVmRJRmRvWlhSb1pYSWdkRzhnY21WMGRYSnVJSEpsZG1WeWMyVmtJRzl5WkdWeUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlXMTE5SUZSb1pTQnZjbVJsY2lCamIyMXdkWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0Z5WjFOdmNuUW9kbUZzZFdWek9pQmhibmxiWFN3Z2NtVjJaWEp6WlNBOUlHWmhiSE5sS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JqYjI1emRDQnpiM0owWm00Z1BTQnlaWFpsY25ObElEOGdLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2tnUFQ0Z0tHSmJNRjBnTFNCaFd6QmRLU0E2SUNoaE9pQmhibmxiWFN3Z1lqb2dZVzU1VzEwcElEMCtJQ2hoV3pCZElDMGdZbHN3WFNrN1hHNGdJR052Ym5OMElHUmxZMjl5SUQwZ0tIWTZJR0Z1ZVN3Z2FUb2diblZ0WW1WeUtTQTlQaUJiZGl3Z2FWMDdJQzh2SUhObGRDQnBibVJsZUNCMGJ5QjJZV3gxWlZ4dUlDQmpiMjV6ZENCMWJtUmxZMjl5SUQwZ0tHRTZJR0Z1ZVZ0ZEtTQTlQaUJoV3pGZE95QXZMeUJzWldGMlpTQnZibXg1SUdsdVpHVjRYRzRnSUdOdmJuTjBJRjloY21kemIzSjBJRDBnS0dGeWNqb2dZVzU1VzEwcElEMCtJR0Z5Y2k1dFlYQW9aR1ZqYjNJcExuTnZjblFvYzI5eWRHWnVLUzV0WVhBb2RXNWtaV052Y2lrN1hHNGdJSEpsZEhWeWJpQmZZWEpuYzI5eWRDaDJZV3gxWlhNcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZKbGRIVnlibk1nZEdobElHbHVaR1Y0WlhNZ2IyWWdkR2hsSUcxdmMzUWdaR2wyWlhKelpTQnZZbXBsWTNSeklHRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1pHbHpkQ0JtZFc1amRHbHZibHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUd4bGJtZDBhQ0IwYjNSaGJDQnVkVzFpWlhJZ2IyWWdiMkpxWldOMGMxeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzRnYm5WdFltVnlJRzltSUdScGRtVnljMlVnWld4bGJXVnVkSE1nZEc4Z1ptbHVaRnh1SUNvZ1FIQmhjbUZ0SUhzb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5ZlNCa2FYTjBJR0VnWm5WdVkzUnBiMjRnZDJocFkyZ2dZMkZzWTNWc1lYUmxjeUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSGR2SUc5aWFtVmpkSE1nZFhOcGJtY2dkR2hsYVhJZ2FXNWtaWGhsYzF4dUlDb2dRSEpsZEhWeWJuTWdlMjUxYldKbGNsdGRmU0JVYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhOY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVScGRtVnljMlZUZFdKelpYUW9iR1Z1WjNSb09pQnVkVzFpWlhJc0lHNDZJRzUxYldKbGNpd2daR2x6ZERvZ0tHa3hPaUJ1ZFcxaVpYSXNJR2t5T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lrNklHNTFiV0psY2x0ZElIdGNiaUFnWm5WdVkzUnBiMjRnYldGNFFua29kbUZzZFdWek9pQkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c0lHOXlaR1Z5UW5rNklDaHBPaUJ1ZFcxaVpYSXBJRDArSUc1MWJXSmxjaWtnZTF4dUlDQWdJR3hsZENCdFlYaFdZV3gxWlNBOUlHNTFiR3c3WEc0Z0lDQWdiR1YwSUcxaGVFOXlaR1Z5UW5rZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCbGJHVnRaVzUwSUc5bUlIWmhiSFZsY3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWld4bGJXVnVkRTl5WkdWeVFua2dQU0J2Y21SbGNrSjVLR1ZzWlcxbGJuUXBPMXh1SUNBZ0lDQWdhV1lnS0cxaGVFOXlaR1Z5UW5rZ1BUMGdiblZzYkNCOGZDQmxiR1Z0Wlc1MFQzSmtaWEpDZVNBK0lHMWhlRTl5WkdWeVFua3BJSHRjYmlBZ0lDQWdJQ0FnYldGNFZtRnNkV1VnUFNCbGJHVnRaVzUwTzF4dUlDQWdJQ0FnSUNCdFlYaFBjbVJsY2tKNUlEMGdaV3hsYldWdWRFOXlaR1Z5UW5rN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnRZWGhXWVd4MVpUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElITjFZbk5sZENBOUlGdHlZVzVrYjIxSmJuUW9iR1Z1WjNSb0lDMGdNU2xkTzF4dUlDQmpiMjV6ZENCamIyMXdiR1Z0Wlc1MElEMGdibVYzSUZObGRDZ3BPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2diR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0JwWmlBb0lYTjFZbk5sZEM1cGJtTnNkV1JsY3locEtTbGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVZV1JrS0drcE8xeHVJQ0I5WEc1Y2JpQWdkMmhwYkdVZ0tITjFZbk5sZEM1c1pXNW5kR2dnUENCdUtTQjdYRzRnSUNBZ1kyOXVjM1FnYVdSNElEMGdiV0Y0UW5rb1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExuWmhiSFZsY3lncElHRnpJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpeGNiaUFnSUNBZ0lDaHBLU0E5UGlCTllYUm9MbTFwYmk1aGNIQnNlU2hOWVhSb0xDQnpkV0p6WlhRdWJXRndLR1oxYm1OMGFXOXVLSFpoYkN3Z2FXNWtaWGdwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdScGMzUW9hU3dnZG1Gc0tUdGNiaUFnSUNBZ0lIMHBLU2s3WEc0Z0lDQWdhV1lnS0dsa2VDa2dlMXh1SUNBZ0lDQWdjM1ZpYzJWMExuQjFjMmdvYVdSNEtUdGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVaR1ZzWlhSbEtHbGtlQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnpkV0p6WlhRN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUJ1YjNKdFlXeHBlbVZrSUhabFkzUnZjbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUdSaGRHRWdiblZ0WlhKcFkyRnNJR0Z5Y21GNVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNKdFlXeHBlbVVvWkdGMFlUb2dWbVZqZEc5eUtUb2dWbVZqZEc5eUlIdGNiaUFnYkdWMElHMWxZVzRnUFNBd08xeHVJQ0JzWlhRZ2MzUmtJRDBnTUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdiV1ZoYmlBclBTQmtZWFJoVzJsZE8xeHVYRzRnSUcxbFlXNGdMejBnWkdGMFlTNXNaVzVuZEdnN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSE4wWkNBclBTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDb2dLR1JoZEdGYmFWMGdMU0J0WldGdUtUdGNibHh1SUNCemRHUWdQU0JOWVhSb0xuTnhjblFvYzNSa0lDOGdaR0YwWVM1c1pXNW5kR2dwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlTNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQmtZWFJoVzJsZElEMGdLR1JoZEdGYmFWMGdMU0J0WldGdUtTQXZJSE4wWkR0Y2JseHVJQ0J5WlhSMWNtNGdaR0YwWVR0Y2JuMWNibHh1THlvcVhHNGdLaUJHYVc1a2N5QnpaWFFnWkdsbVptVnlaVzVqWlNCaVpYUjNaV1Z1SUhSM2J5QnNhWE4wY3k1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHRWdWR2hsSUdacGNuTjBJR3hwYzNRdVhHNGdLaUJBY0dGeVlXMGdlMkZ1ZVZ0ZGZTQmlJRlJvWlNCelpXTnZibVFnYkdsemRDNWNiaUFxSUVCeVpYUjFjbTRnZTJGdWVWdGRmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyVjBSR2xtWm1WeVpXNWpaU2hoT2lCaGJubGJYU3dnWWpvZ1lXNTVXMTBwT2lCaGJubGJYU0I3WEc0Z0lHTnZibk4wSUdKVFpYUWdQU0J1WlhjZ1UyVjBLR0lwTzF4dUlDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHVaWGNnVTJWMEtHRXVabWxzZEdWeUtDaDRLU0E5UGlBaFlsTmxkQzVvWVhNb2VDa3BLUzUyWVd4MVpYTW9LU2s3WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5jb25zdCBwZXEgPSBuZXcgVWludDMyQXJyYXkoMHgxMDAwMCk7XG5jb25zdCBteWVyc18zMiA9IChhLCBiKSA9PiB7XG4gIGNvbnN0IG4gPSBhLmxlbmd0aDtcbiAgY29uc3QgbSA9IGIubGVuZ3RoO1xuICBjb25zdCBsc3QgPSAxIDw8IChuIC0gMSk7XG4gIGxldCBwdiA9IC0xO1xuICBsZXQgbXYgPSAwO1xuICBsZXQgc2MgPSBuO1xuICBsZXQgaSA9IG47XG4gIHdoaWxlIChpLS0pIHtcbiAgICBwZXFbYS5jaGFyQ29kZUF0KGkpXSB8PSAxIDw8IGk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IG07IGkrKykge1xuICAgIGxldCBlcSA9IHBlcVtiLmNoYXJDb2RlQXQoaSldO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBlcSB8PSAoKGVxICYgcHYpICsgcHYpIF4gcHY7XG4gICAgbXYgfD0gfihlcSB8IHB2KTtcbiAgICBwdiAmPSBlcTtcbiAgICBpZiAobXYgJiBsc3QpIHtcbiAgICAgIHNjKys7XG4gICAgfVxuICAgIGlmIChwdiAmIGxzdCkge1xuICAgICAgc2MtLTtcbiAgICB9XG4gICAgbXYgPSAobXYgPDwgMSkgfCAxO1xuICAgIHB2ID0gKHB2IDw8IDEpIHwgfih4diB8IG12KTtcbiAgICBtdiAmPSB4djtcbiAgfVxuICBpID0gbjtcbiAgd2hpbGUgKGktLSkge1xuICAgIHBlcVthLmNoYXJDb2RlQXQoaSldID0gMDtcbiAgfVxuICByZXR1cm4gc2M7XG59O1xuXG5jb25zdCBteWVyc194ID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbiA9IGEubGVuZ3RoO1xuICBjb25zdCBtID0gYi5sZW5ndGg7XG4gIGNvbnN0IG1oYyA9IFtdO1xuICBjb25zdCBwaGMgPSBbXTtcbiAgY29uc3QgaHNpemUgPSBNYXRoLmNlaWwobiAvIDMyKTtcbiAgY29uc3QgdnNpemUgPSBNYXRoLmNlaWwobSAvIDMyKTtcbiAgbGV0IHNjb3JlID0gbTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoc2l6ZTsgaSsrKSB7XG4gICAgcGhjW2ldID0gLTE7XG4gICAgbWhjW2ldID0gMDtcbiAgfVxuICBsZXQgaiA9IDA7XG4gIGZvciAoOyBqIDwgdnNpemUgLSAxOyBqKyspIHtcbiAgICBsZXQgbXYgPSAwO1xuICAgIGxldCBwdiA9IC0xO1xuICAgIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKDMyLCBtKSArIHN0YXJ0O1xuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gICAgfVxuICAgIHNjb3JlID0gbTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgY29uc3QgZXEgPSBwZXFbYS5jaGFyQ29kZUF0KGkpXTtcbiAgICAgIGNvbnN0IHBiID0gKHBoY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgICAgY29uc3QgeHYgPSBlcSB8IG12O1xuICAgICAgY29uc3QgeGggPSAoKCgoZXEgfCBtYikgJiBwdikgKyBwdikgXiBwdikgfCBlcSB8IG1iO1xuICAgICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgICAgbGV0IG1oID0gcHYgJiB4aDtcbiAgICAgIGlmICgocGggPj4+IDMxKSBeIHBiKSB7XG4gICAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIGlmICgobWggPj4+IDMxKSBeIG1iKSB7XG4gICAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgICBtdiA9IHBoICYgeHY7XG4gICAgfVxuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgfVxuICB9XG4gIGxldCBtdiA9IDA7XG4gIGxldCBwdiA9IC0xO1xuICBjb25zdCBzdGFydCA9IGogKiAzMjtcbiAgY29uc3QgZW5kID0gTWF0aC5taW4oMzIsIG0gLSBzdGFydCkgKyBzdGFydDtcbiAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gIH1cbiAgc2NvcmUgPSBtO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIGNvbnN0IGVxID0gcGVxW2EuY2hhckNvZGVBdChpKV07XG4gICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgIGxldCBtaCA9IHB2ICYgeGg7XG4gICAgc2NvcmUgKz0gKHBoID4+PiAobSAtIDEpKSAmIDE7XG4gICAgc2NvcmUgLT0gKG1oID4+PiAobSAtIDEpKSAmIDE7XG4gICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgaWYgKChtaCA+Pj4gMzEpIF4gbWIpIHtcbiAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgcGggPSAocGggPDwgMSkgfCBwYjtcbiAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgIHB2ID0gbWggfCB+KHh2IHwgcGgpO1xuICAgIG12ID0gcGggJiB4djtcbiAgfVxuICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCBlbmQ7IGsrKykge1xuICAgIHBlcVtiLmNoYXJDb2RlQXQoayldID0gMDtcbiAgfVxuICByZXR1cm4gc2NvcmU7XG59O1xuXG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiB7XG4gIGlmIChhLmxlbmd0aCA+IGIubGVuZ3RoKSB7XG4gICAgY29uc3QgdG1wID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gdG1wO1xuICB9XG4gIGlmIChhLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiLmxlbmd0aDtcbiAgfVxuICBpZiAoYS5sZW5ndGggPD0gMzIpIHtcbiAgICByZXR1cm4gbXllcnNfMzIoYSwgYik7XG4gIH1cbiAgcmV0dXJuIG15ZXJzX3goYSwgYik7XG59O1xuXG5jb25zdCBjbG9zZXN0ID0gKHN0ciwgYXJyKSA9PiB7XG4gIGxldCBtaW5fZGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgbGV0IG1pbl9pbmRleCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKHN0ciwgYXJyW2ldKTtcbiAgICBpZiAoZGlzdCA8IG1pbl9kaXN0YW5jZSkge1xuICAgICAgbWluX2Rpc3RhbmNlID0gZGlzdDtcbiAgICAgIG1pbl9pbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJbbWluX2luZGV4XTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjbG9zZXN0LCBkaXN0YW5jZVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBSZWZlcmVuY2U6IGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL2phcm8tYW5kLWphcm8td2lua2xlci1zaW1pbGFyaXR5L1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5qYXJvV2lua2xlciA9IGV4cG9ydHMuamFybyA9IHZvaWQgMDtcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFybyhzdHIxLCBzdHIyLCBvcHRpb25zKSB7XG4gICAgLy8gRXhpdCBlYXJseSBpZiBlaXRoZXIgYXJlIGVtcHR5LlxuICAgIGlmIChzdHIxLmxlbmd0aCA9PT0gMCB8fCBzdHIyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0byB1cHBlciBpZiBjYXNlLXNlbnNpdGl2ZSBpcyBmYWxzZS5cbiAgICBpZiAob3B0aW9ucyAmJiAhb3B0aW9ucy5jYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIHN0cjEgPSBzdHIxLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHN0cjIgPSBzdHIyLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIC8vIEV4YWN0IG1hdGNoXG4gICAgaWYgKHN0cjEgPT09IHN0cjIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIC8vIE51bWJlciBvZiBtYXRjaGVzXG4gICAgdmFyIG0gPSAwO1xuICAgIC8vIExlbmd0aCBvZiB0d28gU3RyaW5nc1xuICAgIHZhciBsZW4xID0gc3RyMS5sZW5ndGg7XG4gICAgdmFyIGxlbjIgPSBzdHIyLmxlbmd0aDtcbiAgICAvLyBNYXhpbXVtIGRpc3RhbmNlXG4gICAgdmFyIHdpbmRvdyA9IE1hdGguZmxvb3IoTWF0aC5tYXgobGVuMSwgbGVuMikgLyAyKSAtIDE7XG4gICAgLy8gSGFzaCBmb3IgbWF0Y2hlc1xuICAgIHZhciBzdHIxSGFzaCA9IG5ldyBBcnJheShsZW4xKTtcbiAgICB2YXIgc3RyMkhhc2ggPSBuZXcgQXJyYXkobGVuMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGkgLSB3aW5kb3cpOyBqIDw9IE1hdGgubWluKGxlbjIsIGkgKyB3aW5kb3cgKyAxKTsgaisrKSB7XG4gICAgICAgICAgICBpZiAoIXN0cjFIYXNoW2ldICYmICFzdHIySGFzaFtqXSAmJiBzdHIxW2ldID09PSBzdHIyW2pdKSB7XG4gICAgICAgICAgICAgICAgKyttO1xuICAgICAgICAgICAgICAgIHN0cjFIYXNoW2ldID0gc3RyMkhhc2hbal0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEV4aXQgZWFybHkgaWYgbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kLlxuICAgIGlmIChtID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBDb3VudCB0aGUgdHJhbnNwb3NpdGlvbnMuXG4gICAgdmFyIHQgPSAwO1xuICAgIHZhciBwb2ludCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgaWYgKHN0cjFIYXNoW2ldKSB7XG4gICAgICAgICAgICB3aGlsZSAoIXN0cjJIYXNoW3BvaW50XSkge1xuICAgICAgICAgICAgICAgIHBvaW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RyMS5jaGFyQXQoaSkgIT09IHN0cjIuY2hhckF0KHBvaW50KyspKSB7XG4gICAgICAgICAgICAgICAgdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHQgLz0gMjtcbiAgICByZXR1cm4gKG0gLyBsZW4xICsgbSAvIGxlbjIgKyAobSAtIHQpIC8gbSkgLyAzO1xufVxuZXhwb3J0cy5qYXJvID0gamFybztcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFyb1dpbmtsZXIoc3RyMSwgc3RyMiwgb3B0aW9ucykge1xuICAgIC8vIEphcm8gRGlzdGFuY2VcbiAgICB2YXIgamFyb0Rpc3QgPSBqYXJvKHN0cjEsIHN0cjIsIG9wdGlvbnMpO1xuICAgIC8vIFNhbWUgcHJlZml4IGxlbmd0aCwgbWF4aXVtIGlzIDRcbiAgICB2YXIgcHJlZml4ID0gMDtcbiAgICBpZiAoamFyb0Rpc3QgPiAwLjcpIHtcbiAgICAgICAgdmFyIG1pbkluZGV4ID0gTWF0aC5taW4oc3RyMS5sZW5ndGgsIHN0cjIubGVuZ3RoKTtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoc3RyMVtpXSA9PT0gc3RyMltpXSAmJiBpIDwgNCAmJiBpIDwgbWluSW5kZXgpIHtcbiAgICAgICAgICAgICsrcHJlZml4O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGphcm9EaXN0ICs9IDAuMSAqIHByZWZpeCAqICgxIC0gamFyb0Rpc3QpO1xuICAgIH1cbiAgICByZXR1cm4gamFyb0Rpc3Q7XG59XG5leHBvcnRzLmphcm9XaW5rbGVyID0gamFyb1dpbmtsZXI7XG4iLCJjbGFzcyBDZWxsIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGFyZW50SSA9IDA7XG4gICAgICAgIHRoaXMucGFyZW50SiA9IDA7XG4gICAgfVxufVxuO1xuZXhwb3J0IGNsYXNzIEFsaWduZWQge1xuICAgIGNvbnN0cnVjdG9yKHNlcTFfLCBzZXEyXywgc2NvcmVfKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9IHNlcTFfO1xuICAgICAgICB0aGlzLnNlcTIgPSBzZXEyXztcbiAgICAgICAgdGhpcy5zY29yZSA9IHNjb3JlXztcbiAgICB9XG59XG47XG5leHBvcnQgY2xhc3MgU2VxdWVuY2VBbGlnbm1lbnQge1xuICAgIGNvbnN0cnVjdG9yKHNlcTFfLCBzZXEyXywgZ2FwXywgYWxpZ25HcmlkXyA9IFwiXCIpIHtcbiAgICAgICAgdGhpcy5zZXExID0gJyc7XG4gICAgICAgIHRoaXMuc2VxMiA9ICcnO1xuICAgICAgICB0aGlzLmdhcCA9IDE7XG4gICAgICAgIHRoaXMubGVuMSA9IDA7XG4gICAgICAgIHRoaXMubGVuMiA9IDA7XG4gICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgIHRoaXMuYWxpZ25HcmlkID0gW107XG4gICAgICAgIHRoaXMuc2NvcmVzID0gW107XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB7fTtcbiAgICAgICAgdGhpcy5CTE9TVU00NSA9IFtbNSwgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDAsIC0yLCAtMiwgMCwgLTEsIC0xLCAwLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDcsIDAsIC0xLCAtMywgMSwgMCwgLTIsIDAsIC0zLCAtMiwgMywgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMiwgLTEsIC0yLCAtMSwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgNiwgMiwgLTIsIDAsIDAsIDAsIDEsIC0yLCAtMywgMCwgLTIsIC0yLCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgNCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDIsIDcsIC0zLCAwLCAyLCAtMSwgMCwgLTQsIC0zLCAwLCAtMywgLTQsIC0xLCAwLCAtMSwgLTQsIC0yLCAtMywgNSwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0yLCAtMywgMTIsIC0zLCAtMywgLTMsIC0zLCAtMywgLTIsIC0zLCAtMiwgLTIsIC00LCAtMSwgLTEsIC01LCAtMywgLTEsIC0yLCAtMywgLTIsIC01XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDYsIDIsIC0yLCAxLCAtMiwgLTIsIDEsIDAsIC00LCAtMSwgMCwgLTEsIC0yLCAtMSwgLTMsIDAsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC0zLCAyLCA2LCAtMiwgMCwgLTMsIC0yLCAxLCAtMiwgLTMsIDAsIDAsIC0xLCAtMywgLTIsIC0zLCAxLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMSwgLTMsIC0yLCAtMiwgNywgLTIsIC00LCAtMywgLTIsIC0yLCAtMywgLTIsIDAsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDAsIDEsIDAsIC0zLCAxLCAwLCAtMiwgMTAsIC0zLCAtMiwgLTEsIDAsIC0yLCAtMiwgLTEsIC0yLCAtMywgMiwgLTMsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTQsIC0zLCAtMiwgLTMsIC00LCAtMywgNSwgMiwgLTMsIDIsIDAsIC0yLCAtMiwgLTEsIC0yLCAwLCAzLCAtMywgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMywgLTMsIC0yLCAtMiwgLTIsIC0zLCAtMiwgMiwgNSwgLTMsIDIsIDEsIC0zLCAtMywgLTEsIC0yLCAwLCAxLCAtMywgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDMsIDAsIDAsIC0zLCAxLCAxLCAtMiwgLTEsIC0zLCAtMywgNSwgLTEsIC0zLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0yLCAwLCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTIsIC0zLCAtMiwgMCwgLTIsIC0yLCAwLCAyLCAyLCAtMSwgNiwgMCwgLTIsIC0yLCAtMSwgLTIsIDAsIDEsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC0yLCAtNCwgLTIsIC00LCAtMywgLTMsIC0yLCAwLCAxLCAtMywgMCwgOCwgLTMsIC0yLCAtMSwgMSwgMywgMCwgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0xLCAtNCwgLTEsIDAsIC0yLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0zLCA5LCAtMSwgLTEsIC0zLCAtMywgLTMsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIDAsIDAsIC0xLCAtMiwgLTMsIC0xLCAtMiwgLTIsIC0xLCA0LCAyLCAtNCwgLTIsIC0xLCAwLCAwLCAwLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDIsIDUsIC0zLCAtMSwgMCwgMCwgLTEsIDAsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC00LCAtNCwgLTUsIC0yLCAtMywgLTIsIC0zLCAtMiwgLTIsIC0yLCAtMiwgMSwgLTMsIC00LCAtMywgMTUsIDMsIC0zLCAtNCwgLTIsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0zLCAyLCAwLCAwLCAtMSwgMCwgMywgLTMsIC0yLCAtMSwgMywgOCwgLTEsIC0yLCAtMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMiwgLTMsIC0zLCAtMSwgLTMsIC0zLCAtMywgLTMsIDMsIDEsIC0yLCAxLCAwLCAtMywgLTEsIDAsIC0zLCAtMSwgNSwgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgNCwgNSwgLTIsIDAsIDEsIC0xLCAwLCAtMywgLTMsIDAsIC0yLCAtMywgLTIsIDAsIDAsIC00LCAtMiwgLTMsIDQsIDIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDEsIC0zLCA0LCA0LCAtMiwgMCwgLTMsIC0yLCAxLCAtMSwgLTMsIC0xLCAwLCAtMSwgLTIsIC0yLCAtMywgMiwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDAsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU01MCA9IFtbNSwgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMywgLTEsIDEsIDAsIC0zLCAtMiwgMCwgLTIsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCA3LCAtMSwgLTIsIC00LCAxLCAwLCAtMywgMCwgLTQsIC0zLCAzLCAtMiwgLTMsIC0zLCAtMSwgLTEsIC0zLCAtMSwgLTMsIC0xLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgNywgMiwgLTIsIDAsIDAsIDAsIDEsIC0zLCAtNCwgMCwgLTIsIC00LCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgNCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDIsIDgsIC00LCAwLCAyLCAtMSwgLTEsIC00LCAtNCwgLTEsIC00LCAtNSwgLTEsIDAsIC0xLCAtNSwgLTMsIC00LCA1LCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtNCwgLTIsIC00LCAxMywgLTMsIC0zLCAtMywgLTMsIC0yLCAtMiwgLTMsIC0yLCAtMiwgLTQsIC0xLCAtMSwgLTUsIC0zLCAtMSwgLTMsIC0zLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAwLCAtMywgNywgMiwgLTIsIDEsIC0zLCAtMiwgMiwgMCwgLTQsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMywgMCwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMiwgLTMsIDIsIDYsIC0zLCAwLCAtNCwgLTMsIDEsIC0yLCAtMywgLTEsIC0xLCAtMSwgLTMsIC0yLCAtMywgMSwgNSwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMywgMCwgLTEsIC0zLCAtMiwgLTMsIDgsIC0yLCAtNCwgLTQsIC0yLCAtMywgLTQsIC0yLCAwLCAtMiwgLTMsIC0zLCAtNCwgLTEsIC0yLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAtMSwgLTMsIDEsIDAsIC0yLCAxMCwgLTQsIC0zLCAwLCAtMSwgLTEsIC0yLCAtMSwgLTIsIC0zLCAyLCAtNCwgMCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTQsIC0zLCAtNCwgLTIsIC0zLCAtNCwgLTQsIC00LCA1LCAyLCAtMywgMiwgMCwgLTMsIC0zLCAtMSwgLTMsIC0xLCA0LCAtNCwgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTQsIC0yLCAtMiwgLTMsIC00LCAtMywgMiwgNSwgLTMsIDMsIDEsIC00LCAtMywgLTEsIC0yLCAtMSwgMSwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAtMSwgLTMsIDIsIDEsIC0yLCAwLCAtMywgLTMsIDYsIC0yLCAtNCwgLTEsIDAsIC0xLCAtMywgLTIsIC0zLCAwLCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC00LCAtMiwgMCwgLTIsIC0zLCAtMSwgMiwgMywgLTIsIDcsIDAsIC0zLCAtMiwgLTEsIC0xLCAwLCAxLCAtMywgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtNCwgLTUsIC0yLCAtNCwgLTMsIC00LCAtMSwgMCwgMSwgLTQsIDAsIDgsIC00LCAtMywgLTIsIDEsIDQsIC0xLCAtNCwgLTQsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTEsIC00LCAtMSwgLTEsIC0yLCAtMiwgLTMsIC00LCAtMSwgLTMsIC00LCAxMCwgLTEsIC0xLCAtNCwgLTMsIC0zLCAtMiwgLTEsIC0yLCAtNV0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIDAsIC0xLCAwLCAtMSwgMCwgLTEsIC0zLCAtMywgMCwgLTIsIC0zLCAtMSwgNSwgMiwgLTQsIC0yLCAtMiwgMCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMiwgNSwgLTMsIC0yLCAwLCAwLCAtMSwgMCwgLTVdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC01LCAtNSwgLTEsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTMsIC0xLCAxLCAtNCwgLTQsIC0zLCAxNSwgMiwgLTMsIC01LCAtMiwgLTMsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTMsIDIsIC0xLCAtMSwgLTIsIDAsIDQsIC0zLCAtMiwgLTIsIDIsIDgsIC0xLCAtMywgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTMsIC0zLCAtNCwgLTEsIC0zLCAtMywgLTQsIC00LCA0LCAxLCAtMywgMSwgLTEsIC0zLCAtMiwgMCwgLTMsIC0xLCA1LCAtNCwgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCA0LCA1LCAtMywgMCwgMSwgLTEsIDAsIC00LCAtNCwgMCwgLTMsIC00LCAtMiwgMCwgMCwgLTUsIC0zLCAtNCwgNSwgMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMSwgLTMsIDQsIDUsIC0yLCAwLCAtMywgLTMsIDEsIC0xLCAtNCwgLTEsIDAsIC0xLCAtMiwgLTIsIC0zLCAyLCA1LCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAwLCAtMywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNNjIgPSBbWzQsIC0xLCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDAsIC0zLCAtMiwgMCwgLTIsIC0xLCAwLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDUsIDAsIC0yLCAtMywgMSwgMCwgLTIsIDAsIC0zLCAtMiwgMiwgLTEsIC0zLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0zLCAtMSwgMCwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgMCwgNiwgMSwgLTMsIDAsIDAsIDAsIDEsIC0zLCAtMywgMCwgLTIsIC0zLCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgMywgMCwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDEsIDYsIC0zLCAwLCAyLCAtMSwgLTEsIC0zLCAtNCwgLTEsIC0zLCAtMywgLTEsIDAsIC0xLCAtNCwgLTMsIC0zLCA0LCAxLCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTMsIDksIC0zLCAtNCwgLTMsIC0zLCAtMSwgLTEsIC0zLCAtMSwgLTIsIC0zLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0zLCAtMywgLTIsIC00XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDUsIDIsIC0yLCAwLCAtMywgLTIsIDEsIDAsIC0zLCAtMSwgMCwgLTEsIC0yLCAtMSwgLTIsIDAsIDMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC00LCAyLCA1LCAtMiwgMCwgLTMsIC0zLCAxLCAtMiwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMSwgNCwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTEsIC0zLCAtMiwgLTIsIDYsIC0yLCAtNCwgLTQsIC0yLCAtMywgLTMsIC0yLCAwLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAtMSwgLTMsIDAsIDAsIC0yLCA4LCAtMywgLTMsIC0xLCAtMiwgLTEsIC0yLCAtMSwgLTIsIC0yLCAyLCAtMywgMCwgMCwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0zLCAtMywgLTEsIC0zLCAtMywgLTQsIC0zLCA0LCAyLCAtMywgMSwgMCwgLTMsIC0yLCAtMSwgLTMsIC0xLCAzLCAtMywgLTMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMywgLTQsIC0xLCAtMiwgLTMsIC00LCAtMywgMiwgNCwgLTIsIDIsIDAsIC0zLCAtMiwgLTEsIC0yLCAtMSwgMSwgLTQsIC0zLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAyLCAwLCAtMSwgLTMsIDEsIDEsIC0yLCAtMSwgLTMsIC0yLCA1LCAtMSwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0yLCAtMywgLTEsIDAsIC0yLCAtMywgLTIsIDEsIDIsIC0xLCA1LCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIDEsIC0zLCAtMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtMywgLTIsIC0zLCAtMywgLTMsIC0xLCAwLCAwLCAtMywgMCwgNiwgLTQsIC0yLCAtMiwgMSwgMywgLTEsIC0zLCAtMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMSwgLTMsIC0xLCAtMSwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTQsIDcsIC0xLCAtMSwgLTQsIC0zLCAtMiwgLTIsIC0xLCAtMiwgLTRdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgMCwgMCwgLTEsIC0yLCAtMiwgMCwgLTEsIC0yLCAtMSwgNCwgMSwgLTMsIC0yLCAtMiwgMCwgMCwgMCwgLTRdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCA1LCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTRdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC00LCAtMiwgLTIsIC0zLCAtMiwgLTIsIC0zLCAtMiwgLTMsIC0xLCAxLCAtNCwgLTMsIC0yLCAxMSwgMiwgLTMsIC00LCAtMywgLTIsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC0yLCAtMywgLTIsIC0xLCAtMiwgLTMsIDIsIC0xLCAtMSwgLTIsIC0xLCAzLCAtMywgLTIsIC0yLCAyLCA3LCAtMSwgLTMsIC0yLCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTMsIC0xLCAtMiwgLTIsIC0zLCAtMywgMywgMSwgLTIsIDEsIC0xLCAtMiwgLTIsIDAsIC0zLCAtMSwgNCwgLTMsIC0yLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAtMSwgMywgNCwgLTMsIDAsIDEsIC0xLCAwLCAtMywgLTQsIDAsIC0zLCAtMywgLTIsIDAsIC0xLCAtNCwgLTMsIC0zLCA0LCAxLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAxLCAtMywgMywgNCwgLTIsIDAsIC0zLCAtMywgMSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDEsIDQsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0yLCAwLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNODAgPSBbWzcsIC0zLCAtMywgLTMsIC0xLCAtMiwgLTIsIDAsIC0zLCAtMywgLTMsIC0xLCAtMiwgLTQsIC0xLCAyLCAwLCAtNSwgLTQsIC0xLCAtMywgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTMsIDksIC0xLCAtMywgLTYsIDEsIC0xLCAtNCwgMCwgLTUsIC00LCAzLCAtMywgLTUsIC0zLCAtMiwgLTIsIC01LCAtNCwgLTQsIC0yLCAwLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtMSwgOSwgMiwgLTUsIDAsIC0xLCAtMSwgMSwgLTYsIC02LCAwLCAtNCwgLTYsIC00LCAxLCAwLCAtNywgLTQsIC01LCA1LCAtMSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTMsIDIsIDEwLCAtNywgLTEsIDIsIC0zLCAtMiwgLTcsIC03LCAtMiwgLTYsIC02LCAtMywgLTEsIC0yLCAtOCwgLTYsIC02LCA2LCAxLCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtNiwgLTUsIC03LCAxMywgLTUsIC03LCAtNiwgLTcsIC0yLCAtMywgLTYsIC0zLCAtNCwgLTYsIC0yLCAtMiwgLTUsIC01LCAtMiwgLTYsIC03LCAtNCwgLThdLFxuICAgICAgICAgICAgWy0yLCAxLCAwLCAtMSwgLTUsIDksIDMsIC00LCAxLCAtNSwgLTQsIDIsIC0xLCAtNSwgLTMsIC0xLCAtMSwgLTQsIC0zLCAtNCwgLTEsIDUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMSwgMiwgLTcsIDMsIDgsIC00LCAwLCAtNiwgLTYsIDEsIC00LCAtNiwgLTIsIC0xLCAtMiwgLTYsIC01LCAtNCwgMSwgNiwgLTIsIC04XSxcbiAgICAgICAgICAgIFswLCAtNCwgLTEsIC0zLCAtNiwgLTQsIC00LCA5LCAtNCwgLTcsIC03LCAtMywgLTUsIC02LCAtNSwgLTEsIC0zLCAtNiwgLTYsIC02LCAtMiwgLTQsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTMsIDAsIDEsIC0yLCAtNywgMSwgMCwgLTQsIDEyLCAtNiwgLTUsIC0xLCAtNCwgLTIsIC00LCAtMiwgLTMsIC00LCAzLCAtNSwgLTEsIDAsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC01LCAtNiwgLTcsIC0yLCAtNSwgLTYsIC03LCAtNiwgNywgMiwgLTUsIDIsIC0xLCAtNSwgLTQsIC0yLCAtNSwgLTMsIDQsIC02LCAtNiwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC02LCAtNywgLTMsIC00LCAtNiwgLTcsIC01LCAyLCA2LCAtNCwgMywgMCwgLTUsIC00LCAtMywgLTQsIC0yLCAxLCAtNywgLTUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDMsIDAsIC0yLCAtNiwgMiwgMSwgLTMsIC0xLCAtNSwgLTQsIDgsIC0zLCAtNSwgLTIsIC0xLCAtMSwgLTYsIC00LCAtNCwgLTEsIDEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTYsIC0zLCAtMSwgLTQsIC01LCAtNCwgMiwgMywgLTMsIDksIDAsIC00LCAtMywgLTEsIC0zLCAtMywgMSwgLTUsIC0zLCAtMiwgLThdLFxuICAgICAgICAgICAgWy00LCAtNSwgLTYsIC02LCAtNCwgLTUsIC02LCAtNiwgLTIsIC0xLCAwLCAtNSwgMCwgMTAsIC02LCAtNCwgLTQsIDAsIDQsIC0yLCAtNiwgLTYsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtNCwgLTMsIC02LCAtMywgLTIsIC01LCAtNCwgLTUsIC01LCAtMiwgLTQsIC02LCAxMiwgLTIsIC0zLCAtNywgLTYsIC00LCAtNCwgLTIsIC0zLCAtOF0sXG4gICAgICAgICAgICBbMiwgLTIsIDEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTIsIC00LCAtNCwgLTEsIC0zLCAtNCwgLTIsIDcsIDIsIC02LCAtMywgLTMsIDAsIC0xLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMiwgLTIsIC0xLCAtMiwgLTMsIC0zLCAtMiwgLTMsIC0xLCAtMSwgLTQsIC0zLCAyLCA4LCAtNSwgLTMsIDAsIC0xLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC03LCAtOCwgLTUsIC00LCAtNiwgLTYsIC00LCAtNSwgLTQsIC02LCAtMywgMCwgLTcsIC02LCAtNSwgMTYsIDMsIC01LCAtOCwgLTUsIC01LCAtOF0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNCwgLTYsIC01LCAtMywgLTUsIC02LCAzLCAtMywgLTIsIC00LCAtMywgNCwgLTYsIC0zLCAtMywgMywgMTEsIC0zLCAtNSwgLTQsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC00LCAtNSwgLTYsIC0yLCAtNCwgLTQsIC02LCAtNSwgNCwgMSwgLTQsIDEsIC0yLCAtNCwgLTMsIDAsIC01LCAtMywgNywgLTYsIC00LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtMiwgNSwgNiwgLTYsIC0xLCAxLCAtMiwgLTEsIC02LCAtNywgLTEsIC01LCAtNiwgLTQsIDAsIC0xLCAtOCwgLTUsIC02LCA2LCAwLCAtMywgLThdLFxuICAgICAgICAgICAgWy0yLCAwLCAtMSwgMSwgLTcsIDUsIDYsIC00LCAwLCAtNiwgLTUsIDEsIC0zLCAtNiwgLTIsIC0xLCAtMiwgLTUsIC00LCAtNCwgMCwgNiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMywgLTQsIC0yLCAtMiwgLTMsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTEsIC01LCAtMywgLTIsIC0zLCAtMSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU05MCA9IFtbNSwgLTIsIC0yLCAtMywgLTEsIC0xLCAtMSwgMCwgLTIsIC0yLCAtMiwgLTEsIC0yLCAtMywgLTEsIDEsIDAsIC00LCAtMywgLTEsIC0yLCAtMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMiwgNiwgLTEsIC0zLCAtNSwgMSwgLTEsIC0zLCAwLCAtNCwgLTMsIDIsIC0yLCAtNCwgLTMsIC0xLCAtMiwgLTQsIC0zLCAtMywgLTIsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0xLCA3LCAxLCAtNCwgMCwgLTEsIC0xLCAwLCAtNCwgLTQsIDAsIC0zLCAtNCwgLTMsIDAsIDAsIC01LCAtMywgLTQsIDQsIC0xLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0zLCAtMywgMSwgNywgLTUsIC0xLCAxLCAtMiwgLTIsIC01LCAtNSwgLTEsIC00LCAtNSwgLTMsIC0xLCAtMiwgLTYsIC00LCAtNSwgNCwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTUsIC00LCAtNSwgOSwgLTQsIC02LCAtNCwgLTUsIC0yLCAtMiwgLTQsIC0yLCAtMywgLTQsIC0yLCAtMiwgLTQsIC00LCAtMiwgLTQsIC01LCAtMywgLTZdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAtMSwgLTQsIDcsIDIsIC0zLCAxLCAtNCwgLTMsIDEsIDAsIC00LCAtMiwgLTEsIC0xLCAtMywgLTMsIC0zLCAtMSwgNCwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0xLCAxLCAtNiwgMiwgNiwgLTMsIC0xLCAtNCwgLTQsIDAsIC0zLCAtNSwgLTIsIC0xLCAtMSwgLTUsIC00LCAtMywgMCwgNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFswLCAtMywgLTEsIC0yLCAtNCwgLTMsIC0zLCA2LCAtMywgLTUsIC01LCAtMiwgLTQsIC01LCAtMywgLTEsIC0zLCAtNCwgLTUsIC01LCAtMiwgLTMsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIDAsIDAsIC0yLCAtNSwgMSwgLTEsIC0zLCA4LCAtNCwgLTQsIC0xLCAtMywgLTIsIC0zLCAtMiwgLTIsIC0zLCAxLCAtNCwgLTEsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC00LCAtNCwgLTUsIC0yLCAtNCwgLTQsIC01LCAtNCwgNSwgMSwgLTQsIDEsIC0xLCAtNCwgLTMsIC0xLCAtNCwgLTIsIDMsIC01LCAtNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC00LCAtNSwgLTIsIC0zLCAtNCwgLTUsIC00LCAxLCA1LCAtMywgMiwgMCwgLTQsIC0zLCAtMiwgLTMsIC0yLCAwLCAtNSwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIDIsIDAsIC0xLCAtNCwgMSwgMCwgLTIsIC0xLCAtNCwgLTMsIDYsIC0yLCAtNCwgLTIsIC0xLCAtMSwgLTUsIC0zLCAtMywgLTEsIDEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMywgLTQsIC0yLCAwLCAtMywgLTQsIC0zLCAxLCAyLCAtMiwgNywgLTEsIC0zLCAtMiwgLTEsIC0yLCAtMiwgMCwgLTQsIC0yLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTQsIC01LCAtMywgLTQsIC01LCAtNSwgLTIsIC0xLCAwLCAtNCwgLTEsIDcsIC00LCAtMywgLTMsIDAsIDMsIC0yLCAtNCwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMywgLTMsIC00LCAtMiwgLTIsIC0zLCAtMywgLTQsIC00LCAtMiwgLTMsIC00LCA4LCAtMiwgLTIsIC01LCAtNCwgLTMsIC0zLCAtMiwgLTIsIC02XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMCwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0zLCAtMiwgNSwgMSwgLTQsIC0zLCAtMiwgMCwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0yLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMywgLTIsIDEsIDYsIC00LCAtMiwgLTEsIC0xLCAtMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFstNCwgLTQsIC01LCAtNiwgLTQsIC0zLCAtNSwgLTQsIC0zLCAtNCwgLTMsIC01LCAtMiwgMCwgLTUsIC00LCAtNCwgMTEsIDIsIC0zLCAtNiwgLTQsIC0zLCAtNl0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtMywgLTQsIC00LCAtMywgLTQsIC01LCAxLCAtMiwgLTIsIC0zLCAtMiwgMywgLTQsIC0zLCAtMiwgMiwgOCwgLTMsIC00LCAtMywgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC00LCAtNSwgLTIsIC0zLCAtMywgLTUsIC00LCAzLCAwLCAtMywgMCwgLTIsIC0zLCAtMiwgLTEsIC0zLCAtMywgNSwgLTQsIC0zLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMiwgNCwgNCwgLTQsIC0xLCAwLCAtMiwgLTEsIC01LCAtNSwgLTEsIC00LCAtNCwgLTMsIDAsIC0xLCAtNiwgLTQsIC00LCA0LCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAwLCAtMSwgMCwgLTUsIDQsIDQsIC0zLCAwLCAtNCwgLTQsIDEsIC0yLCAtNCwgLTIsIC0xLCAtMSwgLTQsIC0zLCAtMywgMCwgNCwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMiwgLTMsIC0xLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0zLCAtMiwgLTIsIC0yLCAtMSwgLTIsIC02XSxcbiAgICAgICAgICAgIFstNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIDFdXTtcbiAgICAgICAgdGhpcy5OVUNMRU9USURFUyA9IFtbMSwgLTEsIC0xLCAtMV0sXG4gICAgICAgICAgICBbLTEsIDEsIC0xLCAtMV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAxLCAtMV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMSwgMV1dO1xuICAgICAgICB0aGlzLlBBTTMwID0gW1s2LCAtNywgLTQsIC0zLCAtNiwgLTQsIC0yLCAtMiwgLTcsIC01LCAtNiwgLTcsIC01LCAtOCwgLTIsIDAsIC0xLCAtMTMsIC04LCAtMiwgLTMsIC0zLCAtMywgLTE3XSxcbiAgICAgICAgICAgIFstNywgOCwgLTYsIC0xMCwgLTgsIC0yLCAtOSwgLTksIC0yLCAtNSwgLTgsIDAsIC00LCAtOSwgLTQsIC0zLCAtNiwgLTIsIC0xMCwgLTgsIC03LCAtNCwgLTYsIC0xN10sXG4gICAgICAgICAgICBbLTQsIC02LCA4LCAyLCAtMTEsIC0zLCAtMiwgLTMsIDAsIC01LCAtNywgLTEsIC05LCAtOSwgLTYsIDAsIC0yLCAtOCwgLTQsIC04LCA2LCAtMywgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC0xMCwgMiwgOCwgLTE0LCAtMiwgMiwgLTMsIC00LCAtNywgLTEyLCAtNCwgLTExLCAtMTUsIC04LCAtNCwgLTUsIC0xNSwgLTExLCAtOCwgNiwgMSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTYsIC04LCAtMTEsIC0xNCwgMTAsIC0xNCwgLTE0LCAtOSwgLTcsIC02LCAtMTUsIC0xNCwgLTEzLCAtMTMsIC04LCAtMywgLTgsIC0xNSwgLTQsIC02LCAtMTIsIC0xNCwgLTksIC0xN10sXG4gICAgICAgICAgICBbLTQsIC0yLCAtMywgLTIsIC0xNCwgOCwgMSwgLTcsIDEsIC04LCAtNSwgLTMsIC00LCAtMTMsIC0zLCAtNSwgLTUsIC0xMywgLTEyLCAtNywgLTMsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOSwgLTIsIDIsIC0xNCwgMSwgOCwgLTQsIC01LCAtNSwgLTksIC00LCAtNywgLTE0LCAtNSwgLTQsIC02LCAtMTcsIC04LCAtNiwgMSwgNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC05LCAtMywgLTMsIC05LCAtNywgLTQsIDYsIC05LCAtMTEsIC0xMCwgLTcsIC04LCAtOSwgLTYsIC0yLCAtNiwgLTE1LCAtMTQsIC01LCAtMywgLTUsIC01LCAtMTddLFxuICAgICAgICAgICAgWy03LCAtMiwgMCwgLTQsIC03LCAxLCAtNSwgLTksIDksIC05LCAtNiwgLTYsIC0xMCwgLTYsIC00LCAtNiwgLTcsIC03LCAtMywgLTYsIC0xLCAtMSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTcsIC02LCAtOCwgLTUsIC0xMSwgLTksIDgsIC0xLCAtNiwgLTEsIC0yLCAtOCwgLTcsIC0yLCAtMTQsIC02LCAyLCAtNiwgLTYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy02LCAtOCwgLTcsIC0xMiwgLTE1LCAtNSwgLTksIC0xMCwgLTYsIC0xLCA3LCAtOCwgMSwgLTMsIC03LCAtOCwgLTcsIC02LCAtNywgLTIsIC05LCAtNywgLTYsIC0xN10sXG4gICAgICAgICAgICBbLTcsIDAsIC0xLCAtNCwgLTE0LCAtMywgLTQsIC03LCAtNiwgLTYsIC04LCA3LCAtMiwgLTE0LCAtNiwgLTQsIC0zLCAtMTIsIC05LCAtOSwgLTIsIC00LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNSwgLTQsIC05LCAtMTEsIC0xMywgLTQsIC03LCAtOCwgLTEwLCAtMSwgMSwgLTIsIDExLCAtNCwgLTgsIC01LCAtNCwgLTEzLCAtMTEsIC0xLCAtMTAsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstOCwgLTksIC05LCAtMTUsIC0xMywgLTEzLCAtMTQsIC05LCAtNiwgLTIsIC0zLCAtMTQsIC00LCA5LCAtMTAsIC02LCAtOSwgLTQsIDIsIC04LCAtMTAsIC0xMywgLTgsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC00LCAtNiwgLTgsIC04LCAtMywgLTUsIC02LCAtNCwgLTgsIC03LCAtNiwgLTgsIC0xMCwgOCwgLTIsIC00LCAtMTQsIC0xMywgLTYsIC03LCAtNCwgLTUsIC0xN10sXG4gICAgICAgICAgICBbMCwgLTMsIDAsIC00LCAtMywgLTUsIC00LCAtMiwgLTYsIC03LCAtOCwgLTQsIC01LCAtNiwgLTIsIDYsIDAsIC01LCAtNywgLTYsIC0xLCAtNSwgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTEsIC02LCAtMiwgLTUsIC04LCAtNSwgLTYsIC02LCAtNywgLTIsIC03LCAtMywgLTQsIC05LCAtNCwgMCwgNywgLTEzLCAtNiwgLTMsIC0zLCAtNiwgLTQsIC0xN10sXG4gICAgICAgICAgICBbLTEzLCAtMiwgLTgsIC0xNSwgLTE1LCAtMTMsIC0xNywgLTE1LCAtNywgLTE0LCAtNiwgLTEyLCAtMTMsIC00LCAtMTQsIC01LCAtMTMsIDEzLCAtNSwgLTE1LCAtMTAsIC0xNCwgLTExLCAtMTddLFxuICAgICAgICAgICAgWy04LCAtMTAsIC00LCAtMTEsIC00LCAtMTIsIC04LCAtMTQsIC0zLCAtNiwgLTcsIC05LCAtMTEsIDIsIC0xMywgLTcsIC02LCAtNSwgMTAsIC03LCAtNiwgLTksIC03LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOCwgLTgsIC04LCAtNiwgLTcsIC02LCAtNSwgLTYsIDIsIC0yLCAtOSwgLTEsIC04LCAtNiwgLTYsIC0zLCAtMTUsIC03LCA3LCAtOCwgLTYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNywgNiwgNiwgLTEyLCAtMywgMSwgLTMsIC0xLCAtNiwgLTksIC0yLCAtMTAsIC0xMCwgLTcsIC0xLCAtMywgLTEwLCAtNiwgLTgsIDYsIDAsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTMsIDEsIC0xNCwgNiwgNiwgLTUsIC0xLCAtNiwgLTcsIC00LCAtNSwgLTEzLCAtNCwgLTUsIC02LCAtMTQsIC05LCAtNiwgMCwgNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC02LCAtMywgLTUsIC05LCAtNSwgLTUsIC01LCAtNSwgLTUsIC02LCAtNSwgLTUsIC04LCAtNSwgLTMsIC00LCAtMTEsIC03LCAtNSwgLTUsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgMV1dO1xuICAgICAgICB0aGlzLlBBTTcwID0gW1s1LCAtNCwgLTIsIC0xLCAtNCwgLTIsIC0xLCAwLCAtNCwgLTIsIC00LCAtNCwgLTMsIC02LCAwLCAxLCAxLCAtOSwgLTUsIC0xLCAtMSwgLTEsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy00LCA4LCAtMywgLTYsIC01LCAwLCAtNSwgLTYsIDAsIC0zLCAtNiwgMiwgLTIsIC03LCAtMiwgLTEsIC00LCAwLCAtNywgLTUsIC00LCAtMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIC0zLCA2LCAzLCAtNywgLTEsIDAsIC0xLCAxLCAtMywgLTUsIDAsIC01LCAtNiwgLTMsIDEsIDAsIC02LCAtMywgLTUsIDUsIC0xLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTYsIDMsIDYsIC05LCAwLCAzLCAtMSwgLTEsIC01LCAtOCwgLTIsIC03LCAtMTAsIC00LCAtMSwgLTIsIC0xMCwgLTcsIC01LCA1LCAyLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNCwgLTUsIC03LCAtOSwgOSwgLTksIC05LCAtNiwgLTUsIC00LCAtMTAsIC05LCAtOSwgLTgsIC01LCAtMSwgLTUsIC0xMSwgLTIsIC00LCAtOCwgLTksIC02LCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAwLCAtMSwgMCwgLTksIDcsIDIsIC00LCAyLCAtNSwgLTMsIC0xLCAtMiwgLTksIC0xLCAtMywgLTMsIC04LCAtOCwgLTQsIC0xLCA1LCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTUsIDAsIDMsIC05LCAyLCA2LCAtMiwgLTIsIC00LCAtNiwgLTIsIC00LCAtOSwgLTMsIC0yLCAtMywgLTExLCAtNiwgLTQsIDIsIDUsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWzAsIC02LCAtMSwgLTEsIC02LCAtNCwgLTIsIDYsIC02LCAtNiwgLTcsIC01LCAtNiwgLTcsIC0zLCAwLCAtMywgLTEwLCAtOSwgLTMsIC0xLCAtMywgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIDAsIDEsIC0xLCAtNSwgMiwgLTIsIC02LCA4LCAtNiwgLTQsIC0zLCAtNiwgLTQsIC0yLCAtMywgLTQsIC01LCAtMSwgLTQsIDAsIDEsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTMsIC01LCAtNCwgLTUsIC00LCAtNiwgLTYsIDcsIDEsIC00LCAxLCAwLCAtNSwgLTQsIC0xLCAtOSwgLTQsIDMsIC00LCAtNCwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIC02LCAtNSwgLTgsIC0xMCwgLTMsIC02LCAtNywgLTQsIDEsIDYsIC01LCAyLCAtMSwgLTUsIC02LCAtNCwgLTQsIC00LCAwLCAtNiwgLTQsIC00LCAtMTFdLFxuICAgICAgICAgICAgWy00LCAyLCAwLCAtMiwgLTksIC0xLCAtMiwgLTUsIC0zLCAtNCwgLTUsIDYsIDAsIC05LCAtNCwgLTIsIC0xLCAtNywgLTcsIC02LCAtMSwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0zLCAtMiwgLTUsIC03LCAtOSwgLTIsIC00LCAtNiwgLTYsIDEsIDIsIDAsIDEwLCAtMiwgLTUsIC0zLCAtMiwgLTgsIC03LCAwLCAtNiwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy02LCAtNywgLTYsIC0xMCwgLTgsIC05LCAtOSwgLTcsIC00LCAwLCAtMSwgLTksIC0yLCA4LCAtNywgLTQsIC02LCAtMiwgNCwgLTUsIC03LCAtOSwgLTUsIC0xMV0sXG4gICAgICAgICAgICBbMCwgLTIsIC0zLCAtNCwgLTUsIC0xLCAtMywgLTMsIC0yLCAtNSwgLTUsIC00LCAtNSwgLTcsIDcsIDAsIC0yLCAtOSwgLTksIC0zLCAtNCwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAtMSwgLTEsIC0zLCAtMiwgMCwgLTMsIC00LCAtNiwgLTIsIC0zLCAtNCwgMCwgNSwgMiwgLTMsIC01LCAtMywgMCwgLTIsIC0xLCAtMTFdLFxuICAgICAgICAgICAgWzEsIC00LCAwLCAtMiwgLTUsIC0zLCAtMywgLTMsIC00LCAtMSwgLTQsIC0xLCAtMiwgLTYsIC0yLCAyLCA2LCAtOCwgLTQsIC0xLCAtMSwgLTMsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy05LCAwLCAtNiwgLTEwLCAtMTEsIC04LCAtMTEsIC0xMCwgLTUsIC05LCAtNCwgLTcsIC04LCAtMiwgLTksIC0zLCAtOCwgMTMsIC0zLCAtMTAsIC03LCAtMTAsIC03LCAtMTFdLFxuICAgICAgICAgICAgWy01LCAtNywgLTMsIC03LCAtMiwgLTgsIC02LCAtOSwgLTEsIC00LCAtNCwgLTcsIC03LCA0LCAtOSwgLTUsIC00LCAtMywgOSwgLTUsIC00LCAtNywgLTUsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC01LCAtNSwgLTUsIC00LCAtNCwgLTQsIC0zLCAtNCwgMywgMCwgLTYsIDAsIC01LCAtMywgLTMsIC0xLCAtMTAsIC01LCA2LCAtNSwgLTQsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNCwgNSwgNSwgLTgsIC0xLCAyLCAtMSwgMCwgLTQsIC02LCAtMSwgLTYsIC03LCAtNCwgMCwgLTEsIC03LCAtNCwgLTUsIDUsIDEsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTEsIDIsIC05LCA1LCA1LCAtMywgMSwgLTQsIC00LCAtMiwgLTMsIC05LCAtMiwgLTIsIC0zLCAtMTAsIC03LCAtNCwgMSwgNSwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMiwgLTMsIC02LCAtMiwgLTMsIC0zLCAtMywgLTMsIC00LCAtMywgLTMsIC01LCAtMywgLTEsIC0yLCAtNywgLTUsIC0yLCAtMiwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAxXV07XG4gICAgICAgIHRoaXMuUEFNMjUwID0gW1syLCAtMiwgMCwgMCwgLTIsIDAsIDAsIDEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTMsIDEsIDEsIDEsIC02LCAtMywgMCwgMCwgMCwgMCwgLThdLFxuICAgICAgICAgICAgWy0yLCA2LCAwLCAtMSwgLTQsIDEsIC0xLCAtMywgMiwgLTIsIC0zLCAzLCAwLCAtNCwgMCwgMCwgLTEsIDIsIC00LCAtMiwgLTEsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgMCwgMiwgMiwgLTQsIDEsIDEsIDAsIDIsIC0yLCAtMywgMSwgLTIsIC0zLCAwLCAxLCAwLCAtNCwgLTIsIC0yLCAyLCAxLCAwLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDIsIDQsIC01LCAyLCAzLCAxLCAxLCAtMiwgLTQsIDAsIC0zLCAtNiwgLTEsIDAsIDAsIC03LCAtNCwgLTIsIDMsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC00LCAtNCwgLTUsIDEyLCAtNSwgLTUsIC0zLCAtMywgLTIsIC02LCAtNSwgLTUsIC00LCAtMywgMCwgLTIsIC04LCAwLCAtMiwgLTQsIC01LCAtMywgLThdLFxuICAgICAgICAgICAgWzAsIDEsIDEsIDIsIC01LCA0LCAyLCAtMSwgMywgLTIsIC0yLCAxLCAtMSwgLTUsIDAsIC0xLCAtMSwgLTUsIC00LCAtMiwgMSwgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMSwgMywgLTUsIDIsIDQsIDAsIDEsIC0yLCAtMywgMCwgLTIsIC01LCAtMSwgMCwgMCwgLTcsIC00LCAtMiwgMywgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFsxLCAtMywgMCwgMSwgLTMsIC0xLCAwLCA1LCAtMiwgLTMsIC00LCAtMiwgLTMsIC01LCAwLCAxLCAwLCAtNywgLTUsIC0xLCAwLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAyLCAyLCAxLCAtMywgMywgMSwgLTIsIDYsIC0yLCAtMiwgMCwgLTIsIC0yLCAwLCAtMSwgLTEsIC0zLCAwLCAtMiwgMSwgMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTMsIC0yLCA1LCAyLCAtMiwgMiwgMSwgLTIsIC0xLCAwLCAtNSwgLTEsIDQsIC0yLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtNCwgLTYsIC0yLCAtMywgLTQsIC0yLCAyLCA2LCAtMywgNCwgMiwgLTMsIC0zLCAtMiwgLTIsIC0xLCAyLCAtMywgLTMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDMsIDEsIDAsIC01LCAxLCAwLCAtMiwgMCwgLTIsIC0zLCA1LCAwLCAtNSwgLTEsIDAsIDAsIC0zLCAtNCwgLTIsIDEsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDAsIC0yLCAtMywgLTUsIC0xLCAtMiwgLTMsIC0yLCAyLCA0LCAwLCA2LCAwLCAtMiwgLTIsIC0xLCAtNCwgLTIsIDIsIC0yLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0zLCAtNiwgLTQsIC01LCAtNSwgLTUsIC0yLCAxLCAyLCAtNSwgMCwgOSwgLTUsIC0zLCAtMywgMCwgNywgLTEsIC00LCAtNSwgLTIsIC04XSxcbiAgICAgICAgICAgIFsxLCAwLCAwLCAtMSwgLTMsIDAsIC0xLCAwLCAwLCAtMiwgLTMsIC0xLCAtMiwgLTUsIDYsIDEsIDAsIC02LCAtNSwgLTEsIC0xLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWzEsIDAsIDEsIDAsIDAsIC0xLCAwLCAxLCAtMSwgLTEsIC0zLCAwLCAtMiwgLTMsIDEsIDIsIDEsIC0yLCAtMywgLTEsIDAsIDAsIDAsIC04XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMCwgMCwgLTIsIC0xLCAwLCAwLCAtMSwgMCwgLTIsIDAsIC0xLCAtMywgMCwgMSwgMywgLTUsIC0zLCAwLCAwLCAtMSwgMCwgLThdLFxuICAgICAgICAgICAgWy02LCAyLCAtNCwgLTcsIC04LCAtNSwgLTcsIC03LCAtMywgLTUsIC0yLCAtMywgLTQsIDAsIC02LCAtMiwgLTUsIDE3LCAwLCAtNiwgLTUsIC02LCAtNCwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTIsIC00LCAwLCAtNCwgLTQsIC01LCAwLCAtMSwgLTEsIC00LCAtMiwgNywgLTUsIC0zLCAtMywgMCwgMTAsIC0yLCAtMywgLTQsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTEsIC0yLCA0LCAyLCAtMiwgMiwgLTEsIC0xLCAtMSwgMCwgLTYsIC0yLCA0LCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDIsIDMsIC00LCAxLCAzLCAwLCAxLCAtMiwgLTMsIDEsIC0yLCAtNCwgLTEsIDAsIDAsIC01LCAtMywgLTIsIDMsIDIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgMCwgMSwgMywgLTUsIDMsIDMsIDAsIDIsIC0yLCAtMywgMCwgLTIsIC01LCAwLCAwLCAtMSwgLTYsIC00LCAtMiwgMiwgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0zLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMCwgMCwgLTQsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLThdLFxuICAgICAgICAgICAgWy04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgMV1dO1xuICAgICAgICB0aGlzLlNDSE5FSURFUiA9IFtbMTEuNiwgLTIuNywgOS43LCAtMS43LCAtMi43LCAtNi40LCAtMy45LCAtNS42LCA1LjEsIC01LjAsIDMuNiwgLTQuMiwgLTYuMywgLTEzLjAsIC03LjEsIC0xMS41LCAwLjQsIC02LjAsIC0xLjksIC01LjMsIC04LjUsIC0xMS4yLCAtOC45LCAtMTAuOCwgMi4xLCAwLjAsIDEuNCwgMC4yLCAtMTAuMiwgLTEzLjUsIC0xMy4wLCAtMTIuNSwgLTIuNiwgLTguNSwgLTUuMCwgLTguMSwgLTYuMywgLTkuOSwgLTcuNSwgLTkuMCwgLTcuMSwgLTEwLjIsIC04LjIsIC05LjIsIC04LjIsIC0xMi41LCAtMTEuMSwgLTExLjQsIC01MC4wLCAtMTQuOCwgLTUwLjAsIC0xMy44LCAtNy4zLCAtMTAuMSwgLTguNCwgLTkuMSwgLTUwLjAsIC0xMy4wLCAtMTMuNSwgLTEyLjQsIC0xMC43LCAtMTguMSwgLTExLjgsIC0xNy4yLF0sXG4gICAgICAgICAgICBbLTIuNywgMTMuMCwgLTMuMywgMTAuOSwgLTMuNSwgLTAuNCwgLTMuMywgLTEuOCwgLTUuNCwgNC42LCAtNS41LCAzLjAsIC0xMC4yLCAtNy45LCAtOS45LCAtOS42LCAtNS4wLCAwLjUsIC01LjUsIC0xLjAsIC0xMC4zLCAtOC4xLCAtOS40LCAtOS42LCAtOC4xLCAtNS4wLCAtNy4zLCAtNi4zLCAtMTMuNCwgLTExLjMsIC0xNC40LCAtMTIuOSwgLTYuMywgMC44LCAtNi40LCAtMS4xLCAtNy40LCAtNS4wLCAtNi4yLCAtNi41LCAtNS42LCAtMS42LCAtNC43LCAtMy4wLCAtMTAuOCwgLTguNywgLTExLjksIC0xMC4wLCAtNTAuMCwgLTYuMiwgLTUwLjAsIC03LjUsIC02LjMsIC00LjMsIC02LjIsIC01LjQsIC01MC4wLCAtNy4wLCAtMTYuMywgLTguMiwgLTEzLjIsIC0xMi4zLCAtMTMuMSwgLTEzLjMsXSxcbiAgICAgICAgICAgIFs5LjcsIC0zLjMsIDExLjYsIC0yLjgsIC00LjUsIC02LjcsIC0zLjEsIC02LjksIDMuMywgLTUuNSwgNC44LCAtNS4xLCAtOC45LCAtMTMuMiwgLTUuNywgLTEyLjYsIC0xLjUsIC02LjEsIC0wLjYsIC02LjEsIC0xMC4wLCAtMTEuOCwgLTguNiwgLTExLjksIDEuMiwgMC41LCAyLjIsIDAuMSwgLTExLjgsIC0xNC4wLCAtMTEuOSwgLTEzLjQsIC00LjksIC05LjEsIC0zLjQsIC04LjksIC04LjAsIC0xMC4wLCAtNy4yLCAtMTAuMCwgLTkuMSwgLTEwLjIsIC03LjEsIC05LjksIC0xMC4xLCAtMTMuMCwgLTEwLjYsIC0xMi43LCAtNTAuMCwgLTE0LjksIC01MC4wLCAtMTQuNCwgLTguOSwgLTEwLjgsIC04LjksIC0xMC40LCAtNTAuMCwgLTEzLjEsIC0xMS44LCAtMTMuMCwgLTEyLjQsIC0xOS40LCAtMTEuNSwgLTE3LjgsXSxcbiAgICAgICAgICAgIFstMS43LCAxMC45LCAtMi44LCAxMi45LCAtMi43LCAtMi4yLCAtMi44LCAwLjIsIC00LjgsIDIuOSwgLTUuMiwgNS4yLCAtOS4xLCAtOS41LCAtOS4wLCAtNy4wLCAtNC4wLCAtMS4wLCAtNS4wLCAxLjAsIC05LjAsIC04LjgsIC04LjksIC03LjcsIC03LjAsIC02LjgsIC03LjEsIC00LjMsIC0xMi40LCAtMTIuOSwgLTEzLjksIC0xMC4wLCAtNC45LCAtMC43LCAtNS42LCAxLjQsIC02LjAsIC02LjUsIC02LjIsIC00LjgsIC01LjEsIC0zLjIsIC01LjAsIC0xLjIsIC05LjgsIC05LjksIC0xMS4zLCAtOC4yLCAtNTAuMCwgLTcuNiwgLTUwLjAsIC01LjEsIC01LjUsIC01LjgsIC01LjksIC00LjIsIC01MC4wLCAtOC4zLCAtMTUuNSwgLTUuOSwgLTExLjYsIC0xNC4yLCAtMTIuMCwgLTExLjYsXSxcbiAgICAgICAgICAgIFstMi43LCAtMy41LCAtNC41LCAtMi43LCAxMS43LCA5LjAsIDEwLjYsIDkuNiwgLTMuMiwgLTAuNywgLTUuMSwgLTAuNCwgMC43LCAtNC42LCAtMC40LCAtMy42LCAtNC44LCAtOC45LCAtNi41LCAtNy44LCAtMS40LCAtNC4xLCAtMi45LCAtMy4zLCAtOC4wLCAtOS4xLCAtOC4wLCAtOC4yLCAtNi4wLCAtOS4zLCAtNy43LCAtOC41LCAtNi40LCAtMTAuMSwgLTcuNSwgLTguNiwgMi44LCAtMC43LCAwLjksIDAuMSwgLTUuOSwgLTcuMywgLTYuNSwgLTYuNSwgLTAuNCwgLTMuOSwgLTIuNiwgLTMuMSwgLTUwLjAsIC0xNC42LCAtNTAuMCwgLTEyLjYsIDIuOSwgMC4xLCAxLjgsIDEuMCwgLTUwLjAsIC05LjIsIC0xMy42LCAtNy43LCAtNC44LCAtMTIuMiwgLTYuMiwgLTExLjAsXSxcbiAgICAgICAgICAgIFstNi40LCAtMC40LCAtNi43LCAtMi4yLCA5LjAsIDEyLjMsIDkuOCwgOS42LCAtNy4xLCAyLjQsIC03LjIsIDAuMywgLTIuOSwgLTEuMiwgLTMuMCwgLTMuMywgLTcuNiwgLTYuNywgLTguMSwgLTcuOSwgLTQuOSwgLTEuOSwgLTQuNSwgLTMuOCwgLTkuNSwgLTcuOCwgLTkuMywgLTguOSwgLTkuNCwgLTcuMSwgLTkuMCwgLTkuMCwgLTkuNCwgLTcuNSwgLTkuMywgLTkuMiwgLTAuNywgMi42LCAwLjIsIC0wLjEsIC04LjAsIC00LjYsIC03LjcsIC02LjEsIC0zLjYsIC0xLjAsIC00LjEsIC0zLjEsIC01MC4wLCAtMTEuNiwgLTUwLjAsIC0xMS42LCAwLjIsIDIuMywgMC40LCAwLjUsIC01MC4wLCAtNi41LCAtMTUuMywgLTcuOCwgLTguNCwgLTkuNSwgLTguMywgLTExLjEsXSxcbiAgICAgICAgICAgIFstMy45LCAtMy4zLCAtMy4xLCAtMi44LCAxMC42LCA5LjgsIDEyLjIsIDkuOCwgLTQuOSwgMC4xLCAtMy42LCAtMC4yLCAtMS43LCAtNC4xLCAwLjksIC0zLjUsIC01LjksIC04LjksIC01LjYsIC04LjUsIC0zLjksIC0zLjksIC0yLjIsIC00LjUsIC03LjMsIC03LjUsIC02LjQsIC04LjUsIC03LjEsIC04LjIsIC02LjcsIC03LjgsIC03LjksIC05LjEsIC03LjEsIC05LjQsIDAuOSwgLTAuMiwgMi41LCAtMC4zLCAtNi45LCAtNi41LCAtNS41LCAtNi44LCAtMS43LCAtMy40LCAtMS43LCAtMi44LCAtNTAuMCwgLTEzLjAsIC01MC4wLCAtMTEuNSwgMS41LCAwLjcsIDIuNywgMC42LCAtNTAuMCwgLTguOSwgLTEyLjEsIC03LjQsIC02LjEsIC0xMS41LCAtNS40LCAtMTAuNCxdLFxuICAgICAgICAgICAgWy01LjYsIC0xLjgsIC02LjksIDAuMiwgOS42LCA5LjYsIDkuOCwgMTEuNiwgLTYuNiwgMC45LCAtNy4yLCAyLjUsIC0yLjMsIC0zLjQsIC0yLjMsIC0wLjYsIC02LjUsIC04LjIsIC04LjAsIC02LjMsIC0zLjcsIC0zLjUsIC0zLjksIC0xLjYsIC05LjksIC04LjksIC05LjYsIC03LjAsIC04LjYsIC04LjksIC04LjgsIC02LjgsIC04LjYsIC04LjIsIC04LjgsIC02LjgsIDAuMywgMC4xLCAwLjIsIDIuNCwgLTcuNCwgLTYuMiwgLTYuOSwgLTQuNCwgLTIuOSwgLTIuOSwgLTMuNSwgLTAuOSwgLTUwLjAsIC0xMi4yLCAtNTAuMCwgLTEwLjEsIDEuMiwgMC42LCAxLjIsIDIuNCwgLTUwLjAsIC03LjYsIC0xNi4xLCAtNS44LCAtNy4yLCAtMTAuOCwgLTcuNCwgLTkuMCxdLFxuICAgICAgICAgICAgWzUuMSwgLTUuNCwgMy4zLCAtNC44LCAtMy4yLCAtNy4xLCAtNC45LCAtNi42LCAxMy4zLCAtMi44LCAxMS4yLCAtMS45LCAtNS43LCAtMTIuNSwgLTcuMiwgLTExLjYsIC0wLjcsIC00LjgsIC0zLjEsIC00LjMsIC0xMC4wLCAtMTEuNiwgLTguOCwgLTExLjcsIDEwLjUsIDcuNywgOS4xLCA4LjUsIC05LjgsIC0xMi43LCAtMTEuNywgLTExLjgsIC02LjMsIC0xMS40LCAtOC44LCAtMTEuMCwgLTcuNSwgLTEwLjMsIC04LjMsIC05LjksIC0xLjksIC02LjcsIC00LjEsIC02LjQsIC03LjksIC0xMi41LCAtMTEuNCwgLTExLjcsIC01MC4wLCAtMTQuMCwgLTUwLjAsIC0xMy4yLCAtOC41LCAtMTAuNCwgLTkuMSwgLTkuNiwgLTUwLjAsIC05LjgsIC03LjcsIC04LjgsIC0xMC4zLCAtMTcuOSwgLTExLjgsIC0xNi4wLF0sXG4gICAgICAgICAgICBbLTUuMCwgNC42LCAtNS41LCAyLjksIC0wLjcsIDIuNCwgMC4xLCAwLjksIC0yLjgsIDEyLjgsIC0yLjYsIDExLjAsIC04LjQsIC02LjMsIC04LjMsIC03LjcsIC02LjEsIC0yLjksIC02LjUsIC00LjIsIC04LjUsIC01LjksIC03LjUsIC03LjcsIC01LjUsIC0yLjQsIC01LjUsIC00LjEsIC0xMi45LCAtMTAuMywgLTEyLjcsIC0xMS4zLCAtNy40LCAtMy4xLCAtNy40LCAtNC45LCAtNC40LCAtMS44LCAtMy41LCAtMy41LCAtMS42LCAzLjAsIC0wLjgsIDAuOSwgLTguNCwgLTYuMywgLTkuNiwgLTcuMywgLTUwLjAsIC05LjAsIC01MC4wLCAtOS43LCAtMi4zLCAtMC4yLCAtMS4yLCAtMS41LCAtNTAuMCwgLTAuNywgLTEzLjMsIC0yLjAsIC0xMS44LCAtMTEuOSwgLTEyLjMsIC0xMi43LF0sXG4gICAgICAgICAgICBbMy42LCAtNS41LCA0LjgsIC01LjIsIC01LjEsIC03LjIsIC0zLjYsIC03LjIsIDExLjIsIC0yLjYsIDEzLjQsIC0yLjEsIC03LjcsIC0xMi41LCAtNS4zLCAtMTEuOSwgLTIuMiwgLTQuNCwgLTEuOSwgLTQuOCwgLTEwLjIsIC0xMS41LCAtOC4xLCAtMTIuMCwgOS4zLCA4LjIsIDEwLjAsIDguMCwgLTEwLjgsIC0xMS45LCAtMTAuNywgLTEyLjQsIC04LjIsIC0xMS44LCAtNi45LCAtMTEuNSwgLTguNCwgLTkuOSwgLTcuMSwgLTEwLjYsIC00LjcsIC02LjgsIC0xLjIsIC03LjAsIC05LjgsIC0xMS42LCAtOS42LCAtMTIuMSwgLTUwLjAsIC0xNC4xLCAtNTAuMCwgLTEyLjcsIC0xMC4wLCAtMTAuOCwgLTguOCwgLTEwLjUsIC01MC4wLCAtOS4yLCAtNC4yLCAtOS4zLCAtMTEuMCwgLTE4LjIsIC0xMS4xLCAtMTYuMSxdLFxuICAgICAgICAgICAgWy00LjIsIDMuMCwgLTUuMSwgNS4yLCAtMC40LCAwLjMsIC0wLjIsIDIuNSwgLTEuOSwgMTEuMCwgLTIuMSwgMTMuMiwgLTcuNiwgLTguNSwgLTguMCwgLTUuMywgLTUuNiwgLTQuNSwgLTYuOCwgLTIuNCwgLTcuOCwgLTcuOSwgLTcuOSwgLTYuMiwgLTUuNywgLTUuMSwgLTUuNCwgLTIuMSwgLTEyLjQsIC0xMi4zLCAtMTMuMSwgLTEwLjEsIC02LjYsIC00LjQsIC02LjksIC0yLjYsIC0zLjYsIC0zLjgsIC0zLjcsIC0yLjAsIC0xLjQsIDAuOCwgLTAuOSwgMy4wLCAtOC4yLCAtOC4xLCAtOS4yLCAtNS44LCAtNTAuMCwgLTEwLjEsIC01MC4wLCAtNy40LCAtMS43LCAtMi4wLCAtMS41LCAtMC41LCAtNTAuMCwgLTIuMSwgLTEyLjYsIC0wLjQsIC0xMS42LCAtMTMuOSwgLTExLjQsIC0xMS4xLF0sXG4gICAgICAgICAgICBbLTYuMywgLTEwLjIsIC04LjksIC05LjEsIDAuNywgLTIuOSwgLTEuNywgLTIuMywgLTUuNywgLTguNCwgLTcuNywgLTcuNiwgMTMuMiwgOS42LCAzLjUsIDkuNywgLTguNywgLTEyLjQsIC0xMC43LCAtMTAuNywgLTcuOCwgLTEwLjIsIC04LjgsIC05LjYsIC05LjUsIC0xMS45LCAtMTAuOSwgLTEwLjUsIDIuMywgLTAuNCwgLTAuMiwgLTAuMywgLTkuNywgLTE1LjUsIC0xMS40LCAtMTMuNywgLTMuMCwgLTYuNCwgLTQuMSwgLTUuNCwgLTkuNiwgLTExLjksIC0xMC41LCAtMTEuOCwgNi4yLCAzLjMsIDMuNywgMy42LCAtNTAuMCwgLTEzLjYsIC01MC4wLCAtMTEuOSwgLTUuNiwgLTguOCwgLTcuMiwgLTguOSwgLTUwLjAsIC0xMi40LCAtMTQuMSwgLTExLjYsIDIuOCwgLTYuNCwgMC41LCAtNS4yLF0sXG4gICAgICAgICAgICBbLTEzLjAsIC03LjksIC0xMy4yLCAtOS41LCAtNC42LCAtMS4yLCAtNC4xLCAtMy40LCAtMTIuNSwgLTYuMywgLTEyLjUsIC04LjUsIDkuNiwgMTIuNywgMC4yLCAxMC41LCAtMTIuNCwgLTExLjYsIC0xMy4yLCAtMTIuMCwgLTEyLjQsIC0xMC4xLCAtMTEuNiwgLTEyLjAsIC0xNS4xLCAtMTMuMSwgLTE0LjMsIC0xMy40LCAtMS40LCAxLjQsIC0xLjYsIC0wLjUsIC0xNC45LCAtMTQuMywgLTE1LjIsIC0xNi44LCAtNy43LCAtNC43LCAtNi4zLCAtNi42LCAtMTQuNiwgLTEwLjgsIC0xMi44LCAtMTMuMCwgMi4zLCA2LjAsIDIuNSwgMy42LCAtNTAuMCwgLTExLjIsIC01MC4wLCAtMTEuOSwgLTEwLjUsIC05LjIsIC0xMC41LCAtMTAuNSwgLTUwLjAsIC0xMC4zLCAtMTYuMiwgLTExLjMsIC0xLjcsIC0zLjcsIC0yLjUsIC01LjQsXSxcbiAgICAgICAgICAgIFstNy4xLCAtOS45LCAtNS43LCAtOS4wLCAtMC40LCAtMy4wLCAwLjksIC0yLjMsIC03LjIsIC04LjMsIC01LjMsIC04LjAsIDMuNSwgMC4yLCAxNC4zLCAxLjAsIC03LjMsIC0xMS4yLCAtNi45LCAtOS43LCAtOC41LCAtMTAuMiwgLTcuNywgLTkuOCwgLTEwLjAsIC0xMC40LCAtOC40LCAtMTAuMiwgMS4wLCAtMC42LCAxLjcsIC0wLjUsIC0xMS4xLCAtMTQuOCwgLTkuNywgLTE0LjUsIC0zLjcsIC01LjgsIC0zLjEsIC01LjYsIC0xMC40LCAtMTEuNSwgLTguMiwgLTExLjEsIDAuNiwgLTEuNiwgMS42LCAtMS4xLCAtNTAuMCwgLTEyLjQsIC01MC4wLCAtMTEuNSwgLTUuNSwgLTguMCwgLTQuOSwgLTcuMiwgLTUwLjAsIC0xMi40LCAtMTAuMywgLTExLjYsIDAuNywgLTYuOCwgMi40LCAtNi4wLF0sXG4gICAgICAgICAgICBbLTExLjUsIC05LjYsIC0xMi42LCAtNy4wLCAtMy42LCAtMy4zLCAtMy41LCAtMC42LCAtMTEuNiwgLTcuNywgLTExLjksIC01LjMsIDkuNywgMTAuNSwgMS4wLCAxMi42LCAtMTIuMCwgLTEyLjIsIC0xMi41LCAtOS43LCAtMTEuMSwgLTExLjIsIC0xMS45LCAtOS40LCAtMTIuOSwgLTE0LjMsIC0xNC4wLCAtMTEuOSwgLTEuMCwgLTAuNCwgLTEuNiwgMS4yLCAtMTMuOSwgLTE1LjQsIC0xMy43LCAtMTIuNiwgLTYuMiwgLTYuNywgLTYuMywgLTQuNCwgLTEzLjAsIC0xMi4yLCAtMTMuMCwgLTEwLjQsIDIuOSwgMy44LCAyLjUsIDUuOCwgLTUwLjAsIC0xMi41LCAtNTAuMCwgLTEwLjIsIC05LjYsIC05LjcsIC05LjYsIC04LjMsIC01MC4wLCAtMTEuNiwgLTE1LjQsIC05LjQsIC0xLjEsIC01LjQsIC0xLjYsIC0zLjMsXSxcbiAgICAgICAgICAgIFswLjQsIC01LjAsIC0xLjUsIC00LjAsIC00LjgsIC03LjYsIC01LjksIC02LjUsIC0wLjcsIC02LjEsIC0yLjIsIC01LjYsIC04LjcsIC0xMi40LCAtNy4zLCAtMTIuMCwgMTIuOCwgMi4zLCAxMC4yLCAzLjAsIDAuMCwgLTMuNCwgLTAuNywgLTMuMiwgMi41LCAtMC44LCAwLjksIDAuMiwgLTMuMCwgLTcuMiwgLTUuNywgLTYuMSwgLTAuMiwgLTYuNiwgLTEuOCwgLTYuMCwgLTUuMywgLTguMiwgLTUuNywgLTcuNiwgLTYuNywgLTkuNiwgLTcuNSwgLTkuMywgLTcuMSwgLTEwLjUsIC05LjYsIC05LjQsIC01MC4wLCAtOC4xLCAtNTAuMCwgLTcuMiwgLTQuMywgLTYuOCwgLTUuNywgLTYuMywgLTUwLjAsIC05LjUsIC05LjYsIC04LjksIC02LjIsIC0xMi44LCAtNi44LCAtMTEuOCxdLFxuICAgICAgICAgICAgWy02LjAsIDAuNSwgLTYuMSwgLTEuMCwgLTguOSwgLTYuNywgLTguOSwgLTguMiwgLTQuOCwgLTIuOSwgLTQuNCwgLTQuNSwgLTEyLjQsIC0xMS42LCAtMTEuMiwgLTEyLjIsIDIuMywgMTQuNiwgMS45LCAxMi45LCAtNS41LCAtMi42LCAtNC4xLCAtNC43LCAtMS4yLCAzLjAsIC0xLjEsIDEuNiwgLTguMCwgLTQuNywgLTguNywgLTYuMCwgLTguMiwgLTQuNywgLTcuOCwgLTYuNywgLTEwLjAsIC04LjMsIC04LjksIC05LjksIC0xMC44LCAtNy4xLCAtMTAuMCwgLTkuMiwgLTExLjYsIC0xMC4xLCAtMTIuMywgLTExLjksIC01MC4wLCAyLjIsIC01MC4wLCAwLjksIC03LjksIC01LjksIC03LjQsIC02LjksIC01MC4wLCAtNC42LCAtMTEuNiwgLTUuNiwgLTkuNywgLTUuOSwgLTkuOSwgLTcuMyxdLFxuICAgICAgICAgICAgWy0xLjksIC01LjUsIC0wLjYsIC01LjAsIC02LjUsIC04LjEsIC01LjYsIC04LjAsIC0zLjEsIC02LjUsIC0xLjksIC02LjgsIC0xMC43LCAtMTMuMiwgLTYuOSwgLTEyLjUsIDEwLjIsIDEuOSwgMTEuOSwgMi4xLCAtMi4zLCAtNC4xLCAtMC41LCAtNC42LCAtMC4xLCAtMC45LCAyLjQsIC0wLjgsIC01LjEsIC02LjksIC00LjgsIC02LjcsIC0yLjMsIC03LjEsIC0wLjgsIC03LjIsIC03LjIsIC04LjAsIC01LjYsIC04LjUsIC05LjQsIC05LjcsIC03LjIsIC05LjgsIC05LjIsIC0xMS4xLCAtOS41LCAtMTAuNywgLTUwLjAsIC04LjcsIC01MC4wLCAtOC42LCAtNi4xLCAtNy41LCAtNS41LCAtNy43LCAtNTAuMCwgLTEwLjQsIC03LjcsIC0xMC4wLCAtNy4zLCAtMTMuNiwgLTYuNCwgLTEzLjMsXSxcbiAgICAgICAgICAgIFstNS4zLCAtMS4wLCAtNi4xLCAxLjAsIC03LjgsIC03LjksIC04LjUsIC02LjMsIC00LjMsIC00LjIsIC00LjgsIC0yLjQsIC0xMC43LCAtMTIuMCwgLTkuNywgLTkuNywgMy4wLCAxMi45LCAyLjEsIDE0LjcsIC00LjksIC0zLjgsIC00LjAsIC0yLjQsIC0xLjAsIDAuOCwgLTEuMywgMy40LCAtNy42LCAtNS43LCAtOC4xLCAtMy41LCAtNi44LCAtNS44LCAtNy4yLCAtNC4yLCAtOC45LCAtMTAuMiwgLTguNCwgLTguMiwgLTkuOSwgLTguNCwgLTkuNywgLTYuNCwgLTExLjEsIC0xMS4xLCAtMTEuOCwgLTEwLjAsIC01MC4wLCAwLjQsIC01MC4wLCAyLjYsIC03LjIsIC03LjAsIC03LjQsIC01LjEsIC01MC4wLCAtNS43LCAtOS44LCAtMy4yLCAtOC40LCAtNy40LCAtOC45LCAtNS45LF0sXG4gICAgICAgICAgICBbLTguNSwgLTEwLjMsIC0xMC4wLCAtOS4wLCAtMS40LCAtNC45LCAtMy45LCAtMy43LCAtMTAuMCwgLTguNSwgLTEwLjIsIC03LjgsIC03LjgsIC0xMi40LCAtOC41LCAtMTEuMSwgMC4wLCAtNS41LCAtMi4zLCAtNC45LCAxMi42LCAxMC4wLCAxMS4xLCAxMC41LCAtNi4wLCAtOC4zLCAtNi45LCAtNy41LCAtMi4yLCAtNy40LCAtNS4zLCAtNS45LCAtOC45LCAtMTIuNSwgLTkuNCwgLTExLjYsIC0wLjcsIC0zLjksIC0yLjMsIC0zLjAsIC05LjEsIC05LjgsIC05LjIsIC05LjUsIC01LjYsIC05LjAsIC04LjAsIC04LjUsIC01MC4wLCAtMTUuMywgLTUwLjAsIC0xNC4xLCAyLjMsIC0xLjQsIDAuMywgLTAuNSwgLTUwLjAsIC0xMy42LCAtMTQuMywgLTExLjUsIC01LjMsIC0xMy43LCAtNi4xLCAtMTIuNyxdLFxuICAgICAgICAgICAgWy0xMS4yLCAtOC4xLCAtMTEuOCwgLTguOCwgLTQuMSwgLTEuOSwgLTMuOSwgLTMuNSwgLTExLjYsIC01LjksIC0xMS41LCAtNy45LCAtMTAuMiwgLTEwLjEsIC0xMC4yLCAtMTEuMiwgLTMuNCwgLTIuNiwgLTQuMSwgLTMuOCwgMTAuMCwgMTMuMSwgMTAuNywgMTAuNiwgLTguMSwgLTUuMiwgLTguMCwgLTYuNywgLTYuMSwgLTMuNywgLTcuNSwgLTUuNiwgLTExLjEsIC0xMC4zLCAtMTAuNiwgLTExLjksIC0zLjIsIC0xLjAsIC0yLjIsIC0yLjgsIC0xMC41LCAtOC4xLCAtOS40LCAtOS41LCAtOC4zLCAtNi45LCAtOS40LCAtOC44LCAtNTAuMCwgLTExLjMsIC01MC4wLCAtMTIuOCwgLTAuNiwgMi4yLCAtMC4zLCAwLjEsIC01MC4wLCAtMTAuMSwgLTE3LjUsIC0xMS4xLCAtOC42LCAtOS45LCAtOC42LCAtMTEuOSxdLFxuICAgICAgICAgICAgWy04LjksIC05LjQsIC04LjYsIC04LjksIC0yLjksIC00LjUsIC0yLjIsIC0zLjksIC04LjgsIC03LjUsIC04LjEsIC03LjksIC04LjgsIC0xMS42LCAtNy43LCAtMTEuOSwgLTAuNywgLTQuMSwgLTAuNSwgLTQuMCwgMTEuMSwgMTAuNywgMTMuMiwgMTAuNCwgLTUuNywgLTUuOCwgLTMuNSwgLTYuMSwgLTMuNiwgLTYuNSwgLTMuMywgLTUuNSwgLTkuNCwgLTExLjAsIC04LjcsIC0xMS4yLCAtMS44LCAtMi43LCAwLjcsIC0zLjAsIC05LjEsIC04LjIsIC03LjMsIC05LjQsIC03LjIsIC04LjIsIC03LjIsIC04LjIsIC01MC4wLCAtMTMuMiwgLTUwLjAsIC0xMy4zLCAwLjUsIC0wLjksIDEuOCwgLTAuNiwgLTUwLjAsIC0xMS40LCAtMTEuMSwgLTEwLjUsIC02LjEsIC0xMi45LCAtNS4wLCAtMTEuOSxdLFxuICAgICAgICAgICAgWy0xMC44LCAtOS42LCAtMTEuOSwgLTcuNywgLTMuMywgLTMuOCwgLTQuNSwgLTEuNiwgLTExLjcsIC03LjcsIC0xMi4wLCAtNi4yLCAtOS42LCAtMTIuMCwgLTkuOCwgLTkuNCwgLTMuMiwgLTQuNywgLTQuNiwgLTIuNCwgMTAuNSwgMTAuNiwgMTAuNCwgMTIuNiwgLTguMiwgLTcuOSwgLTkuMCwgLTQuNywgLTYuMSwgLTYuMCwgLTcuNSwgLTIuOSwgLTEwLjksIC0xMi4yLCAtMTEuMiwgLTEwLjksIC0yLjQsIC0yLjksIC0yLjcsIC0wLjksIC0xMC40LCAtOS43LCAtMTAuMiwgLTguMCwgLTguNCwgLTkuMSwgLTkuMywgLTYuNSwgLTUwLjAsIC0xMy4zLCAtNTAuMCwgLTExLjAsIC0wLjAsIC0wLjQsIC0wLjQsIDIuMywgLTUwLjAsIC0xMC45LCAtMTcuMiwgLTguMywgLTguMywgLTEyLjcsIC03LjgsIC05LjMsXSxcbiAgICAgICAgICAgIFsyLjEsIC04LjEsIDEuMiwgLTcuMCwgLTguMCwgLTkuNSwgLTcuMywgLTkuOSwgMTAuNSwgLTUuNSwgOS4zLCAtNS43LCAtOS41LCAtMTUuMSwgLTEwLjAsIC0xMi45LCAyLjUsIC0xLjIsIC0wLjEsIC0xLjAsIC02LjAsIC04LjEsIC01LjcsIC04LjIsIDEzLjgsIDExLjMsIDExLjgsIDEyLjEsIC02LjAsIC05LjEsIC05LjAsIC05LjUsIC04LjksIC0xMy40LCAtMTAuMCwgLTEzLjEsIC05LjksIC0xMS43LCAtOS44LCAtMTIuOCwgLTUuOSwgLTkuNCwgLTYuNSwgLTguMSwgLTEwLjcsIC0xNC4wLCAtMTMuMywgLTEzLjksIC01MC4wLCAtMTEuOSwgLTUwLjAsIC05LjcsIC04LjksIC0xMC44LCAtOS4wLCAtMTEuMSwgLTUwLjAsIC02LjUsIC01LjMsIC02LjMsIC0xMC41LCAtMTYuMiwgLTEwLjQsIC0xNS4yLF0sXG4gICAgICAgICAgICBbMC4wLCAtNS4wLCAwLjUsIC02LjgsIC05LjEsIC03LjgsIC03LjUsIC04LjksIDcuNywgLTIuNCwgOC4yLCAtNS4xLCAtMTEuOSwgLTEzLjEsIC0xMC40LCAtMTQuMywgLTAuOCwgMy4wLCAtMC45LCAwLjgsIC04LjMsIC01LjIsIC01LjgsIC03LjksIDExLjMsIDE1LjAsIDExLjIsIDEyLjgsIC05LjcsIC01LjMsIC05LjIsIC03LjgsIC0xMS43LCAtMTAuNiwgLTEwLjEsIC0xMi4yLCAtMTEuNywgLTguOCwgLTguOSwgLTExLjgsIC05LjMsIC01LjAsIC04LjAsIC04LjIsIC0xMy42LCAtMTEuNCwgLTEyLjgsIC0xMy4wLCAtNTAuMCwgLTcuMiwgLTUwLjAsIC04LjQsIC0xMS4wLCAtNy43LCAtOC43LCAtMTAuMiwgLTUwLjAsIC0xLjUsIC03LjEsIC00LjksIC0xMS4yLCAtMTEuNiwgLTExLjYsIC0xNS4wLF0sXG4gICAgICAgICAgICBbMS40LCAtNy4zLCAyLjIsIC03LjEsIC04LjAsIC05LjMsIC02LjQsIC05LjYsIDkuMSwgLTUuNSwgMTAuMCwgLTUuNCwgLTEwLjksIC0xNC4zLCAtOC40LCAtMTQuMCwgMC45LCAtMS4xLCAyLjQsIC0xLjMsIC02LjksIC04LjAsIC0zLjUsIC05LjAsIDExLjgsIDExLjIsIDEzLjQsIDExLjQsIC03LjMsIC04LjgsIC02LjUsIC04LjUsIC0xMC4wLCAtMTIuNSwgLTcuOCwgLTEyLjUsIC05LjYsIC0xMS4wLCAtNy4xLCAtMTAuNywgLTcuOSwgLTguMCwgLTQuMywgLTkuNCwgLTExLjQsIC0xMi4zLCAtMTAuOSwgLTEyLjksIC01MC4wLCAtMTEuOCwgLTUwLjAsIC0xMS4yLCAtOS40LCAtOS44LCAtNy4zLCAtMTAuNSwgLTUwLjAsIC02LjIsIC0yLjIsIC02LjcsIC05LjgsIC0xNS4yLCAtOC41LCAtMTQuOSxdLFxuICAgICAgICAgICAgWzAuMiwgLTYuMywgMC4xLCAtNC4zLCAtOC4yLCAtOC45LCAtOC41LCAtNy4wLCA4LjUsIC00LjEsIDguMCwgLTIuMSwgLTEwLjUsIC0xMy40LCAtMTAuMiwgLTExLjksIDAuMiwgMS42LCAtMC44LCAzLjQsIC03LjUsIC02LjcsIC02LjEsIC00LjcsIDEyLjEsIDEyLjgsIDExLjQsIDE0LjcsIC04LjcsIC03LjQsIC05LjQsIC01LjMsIC05LjksIC0xMS44LCAtMTAuNSwgLTEwLjMsIC05LjksIC0xMC4xLCAtOS4zLCAtOS4zLCAtOC4xLCAtNy4yLCAtOC4wLCAtNS4yLCAtMTIuMCwgLTEyLjEsIC0xMi42LCAtMTAuOSwgLTUwLjAsIC03LjksIC01MC4wLCAtNS4zLCAtOS4zLCAtOC44LCAtOC45LCAtNy4wLCAtNTAuMCwgLTMuNiwgLTcuMSwgLTEuMiwgLTEwLjIsIC0xMi43LCAtOS45LCAtMTEuMCxdLFxuICAgICAgICAgICAgWy0xMC4yLCAtMTMuNCwgLTExLjgsIC0xMi40LCAtNi4wLCAtOS40LCAtNy4xLCAtOC42LCAtOS44LCAtMTIuOSwgLTEwLjgsIC0xMi40LCAyLjMsIC0xLjQsIDEuMCwgLTEuMCwgLTMuMCwgLTguMCwgLTUuMSwgLTcuNiwgLTIuMiwgLTYuMSwgLTMuNiwgLTYuMSwgLTYuMCwgLTkuNywgLTcuMywgLTguNywgMTEuMiwgNy45LCA4LjksIDguMSwgLTEyLjEsIC0xNy40LCAtMTMuMiwgLTE2LjgsIC02LjMsIC05LjUsIC03LjUsIC04LjgsIC0xMi43LCAtMTUuMiwgLTEzLjEsIC0xNC4yLCAwLjAsIC0zLjEsIC0xLjgsIC0zLjEsIC01MC4wLCAtMTAuNywgLTUwLjAsIC05LjMsIC00LjYsIC04LjksIC01LjksIC04LjMsIC01MC4wLCAtMTIuOCwgLTkuNiwgLTEwLjYsIDkuNSwgLTMuMiwgOC4yLCAtMi44LF0sXG4gICAgICAgICAgICBbLTEzLjUsIC0xMS4zLCAtMTQuMCwgLTEyLjksIC05LjMsIC03LjEsIC04LjIsIC04LjksIC0xMi43LCAtMTAuMywgLTExLjksIC0xMi4zLCAtMC40LCAxLjQsIC0wLjYsIC0wLjQsIC03LjIsIC00LjcsIC02LjksIC01LjcsIC03LjQsIC0zLjcsIC02LjUsIC02LjAsIC05LjEsIC01LjMsIC04LjgsIC03LjQsIDcuOSwgMTEuOSwgNy44LCA5LjMsIC0xNS4yLCAtMTUuMSwgLTE0LjYsIC0xNy4yLCAtOS43LCAtNy4zLCAtOC4yLCAtOS4yLCAtMTUuMCwgLTEyLjgsIC0xNC4xLCAtMTQuOSwgLTIuOCwgMC4yLCAtMi45LCAtMi4zLCAtNTAuMCwgLTcuNCwgLTUwLjAsIC04LjcsIC05LjQsIC03LjMsIC05LjQsIC05LjQsIC01MC4wLCAtOC4wLCAtMTEuOSwgLTkuNywgNi41LCAwLjUsIDYuNCwgLTEuOCxdLFxuICAgICAgICAgICAgWy0xMy4wLCAtMTQuNCwgLTExLjksIC0xMy45LCAtNy43LCAtOS4wLCAtNi43LCAtOC44LCAtMTEuNywgLTEyLjcsIC0xMC43LCAtMTMuMSwgLTAuMiwgLTEuNiwgMS43LCAtMS42LCAtNS43LCAtOC43LCAtNC44LCAtOC4xLCAtNS4zLCAtNy41LCAtMy4zLCAtNy41LCAtOS4wLCAtOS4yLCAtNi41LCAtOS40LCA4LjksIDcuOCwgMTAuMSwgNy44LCAtMTQuMywgLTE3LjcsIC0xMy4wLCAtMTcuOCwgLTguMCwgLTkuNCwgLTYuMiwgLTkuMiwgLTE1LjEsIC0xNC45LCAtMTIuMiwgLTE0LjksIC0xLjgsIC0zLjIsIC0wLjgsIC0zLjIsIC01MC4wLCAtMTAuOCwgLTUwLjAsIC05LjksIC03LjMsIC05LjYsIC02LjQsIC05LjQsIC01MC4wLCAtMTIuMywgLTguNywgLTExLjMsIDcuNiwgLTMuMywgOC43LCAtMi45LF0sXG4gICAgICAgICAgICBbLTEyLjUsIC0xMi45LCAtMTMuNCwgLTEwLjAsIC04LjUsIC05LjAsIC03LjgsIC02LjgsIC0xMS44LCAtMTEuMywgLTEyLjQsIC0xMC4xLCAtMC4zLCAtMC41LCAtMC41LCAxLjIsIC02LjEsIC02LjAsIC02LjcsIC0zLjUsIC01LjksIC01LjYsIC01LjUsIC0yLjksIC05LjUsIC03LjgsIC04LjUsIC01LjMsIDguMSwgOS4zLCA3LjgsIDExLjgsIC0xNC40LCAtMTUuNywgLTE0LjUsIC0xNC42LCAtOC40LCAtOC43LCAtNy45LCAtNy4xLCAtMTQuMywgLTEzLjgsIC0xMy44LCAtMTIuMywgLTIuNCwgLTIuMiwgLTIuOSwgLTAuMiwgLTUwLjAsIC04LjksIC01MC4wLCAtNy4xLCAtOC4xLCAtOS4xLCAtOC43LCAtNi42LCAtNTAuMCwgLTkuNywgLTExLjQsIC04LjAsIDYuOCwgLTEuOCwgNi45LCAwLjQsXSxcbiAgICAgICAgICAgIFstMi42LCAtNi4zLCAtNC45LCAtNC45LCAtNi40LCAtOS40LCAtNy45LCAtOC42LCAtNi4zLCAtNy40LCAtOC4yLCAtNi42LCAtOS43LCAtMTQuOSwgLTExLjEsIC0xMy45LCAtMC4yLCAtOC4yLCAtMi4zLCAtNi44LCAtOC45LCAtMTEuMSwgLTkuNCwgLTEwLjksIC04LjksIC0xMS43LCAtMTAuMCwgLTkuOSwgLTEyLjEsIC0xNS4yLCAtMTQuMywgLTE0LjQsIDExLjEsIDIuOSwgOS4yLCAzLjUsIC0zLjAsIC03LjAsIC00LjMsIC02LjIsIC0yLjIsIC02LjYsIC0zLjcsIC01LjcsIC02LjAsIC0xMC40LCAtOC42LCAtOS41LCAtNTAuMCwgLTE1LjUsIC01MC4wLCAtMTMuOSwgLTcuOCwgLTEwLjUsIC04LjcsIC05LjYsIC01MC4wLCAtMTYuNSwgLTE3LjEsIC0xNC44LCAtMTIuMSwgLTE4LjksIC0xMi40LCAtMTcuNCxdLFxuICAgICAgICAgICAgWy04LjUsIDAuOCwgLTkuMSwgLTAuNywgLTEwLjEsIC03LjUsIC05LjEsIC04LjIsIC0xMS40LCAtMy4xLCAtMTEuOCwgLTQuNCwgLTE1LjUsIC0xNC4zLCAtMTQuOCwgLTE1LjQsIC02LjYsIC00LjcsIC03LjEsIC01LjgsIC0xMi41LCAtMTAuMywgLTExLjAsIC0xMi4yLCAtMTMuNCwgLTEwLjYsIC0xMi41LCAtMTEuOCwgLTE3LjQsIC0xNS4xLCAtMTcuNywgLTE1LjcsIDIuOSwgMTIuNSwgMy4xLCAxMC4zLCAtNy43LCAtNS4yLCAtNi4yLCAtNy4zLCAtNS40LCAtMS43LCAtNS40LCAtMy43LCAtMTEuNiwgLTkuMSwgLTEzLjAsIC0xMC44LCAtNTAuMCwgLTEwLjMsIC01MC4wLCAtMTEuMiwgLTkuOCwgLTguMywgLTkuMSwgLTkuNywgLTUwLjAsIC0xMi43LCAtMjAuNiwgLTEzLjEsIC0xNi4wLCAtMTYuNiwgLTE3LjAsIC0xOC40LF0sXG4gICAgICAgICAgICBbLTUuMCwgLTYuNCwgLTMuNCwgLTUuNiwgLTcuNSwgLTkuMywgLTcuMSwgLTguOCwgLTguOCwgLTcuNCwgLTYuOSwgLTYuOSwgLTExLjQsIC0xNS4yLCAtOS43LCAtMTMuNywgLTEuOCwgLTcuOCwgLTAuOCwgLTcuMiwgLTkuNCwgLTEwLjYsIC04LjcsIC0xMS4yLCAtMTAuMCwgLTEwLjEsIC03LjgsIC0xMC41LCAtMTMuMiwgLTE0LjYsIC0xMy4wLCAtMTQuNSwgOS4yLCAzLjEsIDEwLjgsIDMuMCwgLTQuNSwgLTYuNywgLTIuNywgLTYuNywgLTUuMCwgLTYuOCwgLTIuNSwgLTYuNywgLTcuNSwgLTEwLjQsIC03LjQsIC0xMC4yLCAtNTAuMCwgLTE1LjUsIC01MC4wLCAtMTQuMiwgLTguOSwgLTEwLjIsIC04LjUsIC0xMC4wLCAtNTAuMCwgLTE1LjYsIC0xNS4zLCAtMTUuNSwgLTEzLjAsIC0xOC44LCAtMTIuNiwgLTE4LjMsXSxcbiAgICAgICAgICAgIFstOC4xLCAtMS4xLCAtOC45LCAxLjQsIC04LjYsIC05LjIsIC05LjQsIC02LjgsIC0xMS4wLCAtNC45LCAtMTEuNSwgLTIuNiwgLTEzLjcsIC0xNi44LCAtMTQuNSwgLTEyLjYsIC02LjAsIC02LjcsIC03LjIsIC00LjIsIC0xMS42LCAtMTEuOSwgLTExLjIsIC0xMC45LCAtMTMuMSwgLTEyLjIsIC0xMi41LCAtMTAuMywgLTE2LjgsIC0xNy4yLCAtMTcuOCwgLTE0LjYsIDMuNSwgMTAuMywgMy4wLCAxMi40LCAtNi45LCAtNy41LCAtNi44LCAtNC45LCAtNS40LCAtNC4yLCAtNS40LCAtMS4zLCAtMTAuOCwgLTExLjUsIC0xMi40LCAtOC4yLCAtNTAuMCwgLTEyLjUsIC01MC4wLCAtOC45LCAtOS4yLCAtMTAuMCwgLTkuNCwgLTcuOSwgLTUwLjAsIC0xNC4zLCAtMTkuOSwgLTExLjQsIC0xNi4yLCAtMTkuMiwgLTE1LjgsIC0xNS45LF0sXG4gICAgICAgICAgICBbLTYuMywgLTcuNCwgLTguMCwgLTYuMCwgMi44LCAtMC43LCAwLjksIDAuMywgLTcuNSwgLTQuNCwgLTguNCwgLTMuNiwgLTMuMCwgLTcuNywgLTMuNywgLTYuMiwgLTUuMywgLTEwLjAsIC03LjIsIC04LjksIC0wLjcsIC0zLjIsIC0xLjgsIC0yLjQsIC05LjksIC0xMS43LCAtOS42LCAtOS45LCAtNi4zLCAtOS43LCAtOC4wLCAtOC40LCAtMy4wLCAtNy43LCAtNC41LCAtNi45LCAxMS4zLCA4LjIsIDkuNCwgOS4xLCAtMS4wLCAtMy4zLCAtMS44LCAtMi40LCAxLjUsIC0yLjEsIC0wLjQsIC0xLjEsIC01MC4wLCAtMTQuNSwgLTUwLjAsIC0xMi45LCAyLjgsIC0wLjAsIDEuNCwgMC43LCAtNTAuMCwgLTguNywgLTE0LjEsIC03LjUsIC01LjIsIC0xMi41LCAtNi41LCAtMTAuNyxdLFxuICAgICAgICAgICAgWy05LjksIC01LjAsIC0xMC4wLCAtNi41LCAtMC43LCAyLjYsIC0wLjIsIDAuMSwgLTEwLjMsIC0xLjgsIC05LjksIC0zLjgsIC02LjQsIC00LjcsIC01LjgsIC02LjcsIC04LjIsIC04LjMsIC04LjAsIC0xMC4yLCAtMy45LCAtMS4wLCAtMi43LCAtMi45LCAtMTEuNywgLTguOCwgLTExLjAsIC0xMC4xLCAtOS41LCAtNy4zLCAtOS40LCAtOC43LCAtNy4wLCAtNS4yLCAtNi43LCAtNy41LCA4LjIsIDExLjYsIDguOCwgOS4xLCAtMy43LCAtMC45LCAtMy4xLCAtMy4wLCAtMi4wLCAxLjIsIC0yLjMsIC0xLjMsIC01MC4wLCAtMTIuMSwgLTUwLjAsIC0xMi42LCAwLjEsIDIuNSwgMC43LCAwLjYsIC01MC4wLCAtNi4wLCAtMTQuOCwgLTcuNSwgLTguNiwgLTkuNCwgLTguNSwgLTExLjIsXSxcbiAgICAgICAgICAgIFstNy41LCAtNi4yLCAtNy4yLCAtNi4yLCAwLjksIDAuMiwgMi41LCAwLjIsIC04LjMsIC0zLjUsIC03LjEsIC0zLjcsIC00LjEsIC02LjMsIC0zLjEsIC02LjMsIC01LjcsIC04LjksIC01LjYsIC04LjQsIC0yLjMsIC0yLjIsIDAuNywgLTIuNywgLTkuOCwgLTguOSwgLTcuMSwgLTkuMywgLTcuNSwgLTguMiwgLTYuMiwgLTcuOSwgLTQuMywgLTYuMiwgLTIuNywgLTYuOCwgOS40LCA4LjgsIDEyLjEsIDguOCwgLTIuMSwgLTIuMCwgMC4xLCAtMi40LCAwLjAsIC0xLjEsIDEuMywgLTAuOCwgLTUwLjAsIC0xMS45LCAtNTAuMCwgLTEyLjYsIDEuMiwgMC43LCAzLjUsIDAuOCwgLTUwLjAsIC03LjEsIC0xMi40LCAtNy4xLCAtNy4xLCAtMTAuNiwgLTUuMCwgLTEwLjYsXSxcbiAgICAgICAgICAgIFstOS4wLCAtNi41LCAtMTAuMCwgLTQuOCwgMC4xLCAtMC4xLCAtMC4zLCAyLjQsIC05LjksIC0zLjUsIC0xMC42LCAtMi4wLCAtNS40LCAtNi42LCAtNS42LCAtNC40LCAtNy42LCAtOS45LCAtOC41LCAtOC4yLCAtMy4wLCAtMi44LCAtMy4wLCAtMC45LCAtMTIuOCwgLTExLjgsIC0xMC43LCAtOS4zLCAtOC44LCAtOS4yLCAtOS4yLCAtNy4xLCAtNi4yLCAtNy4zLCAtNi43LCAtNC45LCA5LjEsIDkuMSwgOC44LCAxMS4yLCAtMy4xLCAtMy4wLCAtMy4zLCAtMS4wLCAtMS4xLCAtMS40LCAtMi4wLCAxLjIsIC01MC4wLCAtMTIuOCwgLTUwLjAsIC0xMC45LCAwLjgsIDAuNSwgMC43LCAyLjMsIC01MC4wLCAtNy41LCAtMTYuNSwgLTUuOSwgLTcuOCwgLTExLjEsIC03LjgsIC05LjAsXSxcbiAgICAgICAgICAgIFstNy4xLCAtNS42LCAtOS4xLCAtNS4xLCAtNS45LCAtOC4wLCAtNi45LCAtNy40LCAtMS45LCAtMS42LCAtNC43LCAtMS40LCAtOS42LCAtMTQuNiwgLTEwLjQsIC0xMy4wLCAtNi43LCAtMTAuOCwgLTkuNCwgLTkuOSwgLTkuMSwgLTEwLjUsIC05LjEsIC0xMC40LCAtNS45LCAtOS4zLCAtNy45LCAtOC4xLCAtMTIuNywgLTE1LjAsIC0xNS4xLCAtMTQuMywgLTIuMiwgLTUuNCwgLTUuMCwgLTUuNCwgLTEuMCwgLTMuNywgLTIuMSwgLTMuMSwgMTIuOCwgOS42LCAxMS4xLCAxMC4xLCAtNC44LCAtOS40LCAtOC4xLCAtOC42LCAtNTAuMCwgLTE4LjMsIC01MC4wLCAtMTUuNCwgLTUuOSwgLTcuNSwgLTYuNiwgLTcuMSwgLTUwLjAsIC05LjUsIC0xMS43LCAtOC40LCAtMTIuNSwgLTE3LjMsIC0xMy4yLCAtMTUuNCxdLFxuICAgICAgICAgICAgWy0xMC4yLCAtMS42LCAtMTAuMiwgLTMuMiwgLTcuMywgLTQuNiwgLTYuNSwgLTYuMiwgLTYuNywgMy4wLCAtNi44LCAwLjgsIC0xMS45LCAtMTAuOCwgLTExLjUsIC0xMi4yLCAtOS42LCAtNy4xLCAtOS43LCAtOC40LCAtOS44LCAtOC4xLCAtOC4yLCAtOS43LCAtOS40LCAtNS4wLCAtOC4wLCAtNy4yLCAtMTUuMiwgLTEyLjgsIC0xNC45LCAtMTMuOCwgLTYuNiwgLTEuNywgLTYuOCwgLTQuMiwgLTMuMywgLTAuOSwgLTIuMCwgLTMuMCwgOS42LCAxMi44LCA5LjcsIDEwLjUsIC04LjUsIC01LjYsIC05LjMsIC03LjgsIC01MC4wLCAtMTIuNywgLTUwLjAsIC0xMy44LCAtNi44LCAtNS4xLCAtNS4zLCAtNi41LCAtNTAuMCwgLTQuMSwgLTEyLjgsIC01LjgsIC0xNC40LCAtMTQuMSwgLTEzLjYsIC0xNC44LF0sXG4gICAgICAgICAgICBbLTguMiwgLTQuNywgLTcuMSwgLTUuMCwgLTYuNSwgLTcuNywgLTUuNSwgLTYuOSwgLTQuMSwgLTAuOCwgLTEuMiwgLTAuOSwgLTEwLjUsIC0xMi44LCAtOC4yLCAtMTMuMCwgLTcuNSwgLTEwLjAsIC03LjIsIC05LjcsIC05LjIsIC05LjQsIC03LjMsIC0xMC4yLCAtNi41LCAtOC4wLCAtNC4zLCAtOC4wLCAtMTMuMSwgLTE0LjEsIC0xMi4yLCAtMTMuOCwgLTMuNywgLTUuNCwgLTIuNSwgLTUuNCwgLTEuOCwgLTMuMSwgMC4xLCAtMy4zLCAxMS4xLCA5LjcsIDEyLjksIDkuOCwgLTUuNSwgLTguMSwgLTUuNCwgLTcuOCwgLTUwLjAsIC0xNi40LCAtNTAuMCwgLTE0LjgsIC01LjksIC03LjEsIC00LjcsIC03LjIsIC01MC4wLCAtOC40LCAtNi40LCAtOC4xLCAtMTIuMSwgLTE2LjIsIC0xMC4zLCAtMTUuOCxdLFxuICAgICAgICAgICAgWy05LjIsIC0zLjAsIC05LjksIC0xLjIsIC02LjUsIC02LjEsIC02LjgsIC00LjQsIC02LjQsIDAuOSwgLTcuMCwgMy4wLCAtMTEuOCwgLTEzLjAsIC0xMS4xLCAtMTAuNCwgLTkuMywgLTkuMiwgLTkuOCwgLTYuNCwgLTkuNSwgLTkuNSwgLTkuNCwgLTguMCwgLTguMSwgLTguMiwgLTkuNCwgLTUuMiwgLTE0LjIsIC0xNC45LCAtMTQuOSwgLTEyLjMsIC01LjcsIC0zLjcsIC02LjcsIC0xLjMsIC0yLjQsIC0zLjAsIC0yLjQsIC0xLjAsIDEwLjEsIDEwLjUsIDkuOCwgMTMuMSwgLTcuMiwgLTguMCwgLTguNCwgLTUuMCwgLTUwLjAsIC0xNC43LCAtNTAuMCwgLTExLjQsIC02LjMsIC02LjcsIC01LjgsIC01LjAsIC01MC4wLCAtNi4xLCAtMTMuNCwgLTMuNiwgLTEzLjAsIC0xNi4wLCAtMTMuNywgLTEzLjMsXSxcbiAgICAgICAgICAgIFstOC4yLCAtMTAuOCwgLTEwLjEsIC05LjgsIC0wLjQsIC0zLjYsIC0xLjcsIC0yLjksIC03LjksIC04LjQsIC05LjgsIC04LjIsIDYuMiwgMi4zLCAwLjYsIDIuOSwgLTcuMSwgLTExLjYsIC05LjIsIC0xMS4xLCAtNS42LCAtOC4zLCAtNy4yLCAtOC40LCAtMTAuNywgLTEzLjYsIC0xMS40LCAtMTIuMCwgMC4wLCAtMi44LCAtMS44LCAtMi40LCAtNi4wLCAtMTEuNiwgLTcuNSwgLTEwLjgsIDEuNSwgLTIuMCwgMC4wLCAtMS4xLCAtNC44LCAtOC41LCAtNS41LCAtNy4yLCAxMS45LCA4LjYsIDEwLjAsIDkuMCwgLTUwLjAsIC0xNC4yLCAtNTAuMCwgLTEyLjgsIC00LjEsIC03LjQsIC01LjcsIC02LjUsIC01MC4wLCAtMTEuMCwgLTE0LjMsIC05LjksIDEuNCwgLTcuOSwgLTAuNywgLTYuOCxdLFxuICAgICAgICAgICAgWy0xMi41LCAtOC43LCAtMTMuMCwgLTkuOSwgLTMuOSwgLTEuMCwgLTMuNCwgLTIuOSwgLTEyLjUsIC02LjMsIC0xMS42LCAtOC4xLCAzLjMsIDYuMCwgLTEuNiwgMy44LCAtMTAuNSwgLTEwLjEsIC0xMS4xLCAtMTEuMSwgLTkuMCwgLTYuOSwgLTguMiwgLTkuMSwgLTE0LjAsIC0xMS40LCAtMTIuMywgLTEyLjEsIC0zLjEsIDAuMiwgLTMuMiwgLTIuMiwgLTEwLjQsIC05LjEsIC0xMC40LCAtMTEuNSwgLTIuMSwgMS4yLCAtMS4xLCAtMS40LCAtOS40LCAtNS42LCAtOC4xLCAtOC4wLCA4LjYsIDEyLjQsIDguNiwgOS41LCAtNTAuMCwgLTEwLjQsIC01MC4wLCAtMTEuNiwgLTcuMiwgLTUuNywgLTcuNSwgLTcuNCwgLTUwLjAsIC04LjYsIC0xNS43LCAtOS43LCAtMy4wLCAtMy43LCAtMy4yLCAtNS45LF0sXG4gICAgICAgICAgICBbLTExLjEsIC0xMS45LCAtMTAuNiwgLTExLjMsIC0yLjYsIC00LjEsIC0xLjcsIC0zLjUsIC0xMS40LCAtOS42LCAtOS42LCAtOS4yLCAzLjcsIDIuNSwgMS42LCAyLjUsIC05LjYsIC0xMi4zLCAtOS41LCAtMTEuOCwgLTguMCwgLTkuNCwgLTcuMiwgLTkuMywgLTEzLjMsIC0xMi44LCAtMTAuOSwgLTEyLjYsIC0xLjgsIC0yLjksIC0wLjgsIC0yLjksIC04LjYsIC0xMy4wLCAtNy40LCAtMTIuNCwgLTAuNCwgLTIuMywgMS4zLCAtMi4wLCAtOC4xLCAtOS4zLCAtNS40LCAtOC40LCAxMC4wLCA4LjYsIDExLjQsIDguOSwgLTUwLjAsIC0xMy43LCAtNTAuMCwgLTEzLjIsIC02LjEsIC04LjEsIC01LjUsIC03LjUsIC01MC4wLCAtMTEuMywgLTEyLjcsIC0xMC4xLCAtMS42LCAtNy44LCAtMC4zLCAtNy4yLF0sXG4gICAgICAgICAgICBbLTExLjQsIC0xMC4wLCAtMTIuNywgLTguMiwgLTMuMSwgLTMuMSwgLTIuOCwgLTAuOSwgLTExLjcsIC03LjMsIC0xMi4xLCAtNS44LCAzLjYsIDMuNiwgLTEuMSwgNS44LCAtOS40LCAtMTEuOSwgLTEwLjcsIC0xMC4wLCAtOC41LCAtOC44LCAtOC4yLCAtNi41LCAtMTMuOSwgLTEzLjAsIC0xMi45LCAtMTAuOSwgLTMuMSwgLTIuMywgLTMuMiwgLTAuMiwgLTkuNSwgLTEwLjgsIC0xMC4yLCAtOC4yLCAtMS4xLCAtMS4zLCAtMC44LCAxLjIsIC04LjYsIC03LjgsIC03LjgsIC01LjAsIDkuMCwgOS41LCA4LjksIDEyLjAsIC01MC4wLCAtMTMuMCwgLTUwLjAsIC0xMC4zLCAtNi4yLCAtNy4wLCAtNy4xLCAtNS40LCAtNTAuMCwgLTkuMywgLTE0LjAsIC04LjIsIC0yLjQsIC02LjMsIC0yLjQsIC0zLjksXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMy4zLCAtNTAuMCwgMzAuNiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOS4yLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xNC44LCAtNi4yLCAtMTQuOSwgLTcuNiwgLTE0LjYsIC0xMS42LCAtMTMuMCwgLTEyLjIsIC0xNC4wLCAtOS4wLCAtMTQuMSwgLTEwLjEsIC0xMy42LCAtMTEuMiwgLTEyLjQsIC0xMi41LCAtOC4xLCAyLjIsIC04LjcsIDAuNCwgLTE1LjMsIC0xMS4zLCAtMTMuMiwgLTEzLjMsIC0xMS45LCAtNy4yLCAtMTEuOCwgLTcuOSwgLTEwLjcsIC03LjQsIC0xMC44LCAtOC45LCAtMTUuNSwgLTEwLjMsIC0xNS41LCAtMTIuNSwgLTE0LjUsIC0xMi4xLCAtMTEuOSwgLTEyLjgsIC0xOC4zLCAtMTIuNywgLTE2LjQsIC0xNC43LCAtMTQuMiwgLTEwLjQsIC0xMy43LCAtMTMuMCwgLTUwLjAsIDE1LjEsIC01MC4wLCAxMy4zLCAtOS45LCAtNS44LCAtOC45LCAtNy42LCAtNTAuMCwgLTEuNSwgLTcuOCwgLTMuMCwgLTguMSwgMy42LCAtOS40LCAyLjAsXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMC42LCAtNTAuMCwgMzUuMiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOC41LCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xMy44LCAtNy41LCAtMTQuNCwgLTUuMSwgLTEyLjYsIC0xMS42LCAtMTEuNSwgLTEwLjEsIC0xMy4yLCAtOS43LCAtMTIuNywgLTcuNCwgLTExLjksIC0xMS45LCAtMTEuNSwgLTEwLjIsIC03LjIsIDAuOSwgLTguNiwgMi42LCAtMTQuMSwgLTEyLjgsIC0xMy4zLCAtMTEuMCwgLTkuNywgLTguNCwgLTExLjIsIC01LjMsIC05LjMsIC04LjcsIC05LjksIC03LjEsIC0xMy45LCAtMTEuMiwgLTE0LjIsIC04LjksIC0xMi45LCAtMTIuNiwgLTEyLjYsIC0xMC45LCAtMTUuNCwgLTEzLjgsIC0xNC44LCAtMTEuNCwgLTEyLjgsIC0xMS42LCAtMTMuMiwgLTEwLjMsIC01MC4wLCAxMy4zLCAtNTAuMCwgMTUuMiwgLTguNiwgLTcuMCwgLTguNCwgLTQuOCwgLTUwLjAsIC0zLjAsIC03LjEsIC0wLjEsIC03LjMsIDIuMywgLTguNywgMy45LF0sXG4gICAgICAgICAgICBbLTcuMywgLTYuMywgLTguOSwgLTUuNSwgMi45LCAwLjIsIDEuNSwgMS4yLCAtOC41LCAtMi4zLCAtMTAuMCwgLTEuNywgLTUuNiwgLTEwLjUsIC01LjUsIC05LjYsIC00LjMsIC03LjksIC02LjEsIC03LjIsIDIuMywgLTAuNiwgMC41LCAtMC4wLCAtOC45LCAtMTEuMCwgLTkuNCwgLTkuMywgLTQuNiwgLTkuNCwgLTcuMywgLTguMSwgLTcuOCwgLTkuOCwgLTguOSwgLTkuMiwgMi44LCAwLjEsIDEuMiwgMC44LCAtNS45LCAtNi44LCAtNS45LCAtNi4zLCAtNC4xLCAtNy4yLCAtNi4xLCAtNi4yLCAtNTAuMCwgLTkuOSwgLTUwLjAsIC04LjYsIDEyLjUsIDkuNCwgMTEuMCwgOS44LCAtNTAuMCwgLTQuOCwgLTguNywgLTMuNSwgLTAuMCwgLTguNiwgLTIuMSwgLTcuMCxdLFxuICAgICAgICAgICAgWy0xMC4xLCAtNC4zLCAtMTAuOCwgLTUuOCwgMC4xLCAyLjMsIDAuNywgMC42LCAtMTAuNCwgLTAuMiwgLTEwLjgsIC0yLjAsIC04LjgsIC05LjIsIC04LjAsIC05LjcsIC02LjgsIC01LjksIC03LjUsIC03LjAsIC0xLjQsIDIuMiwgLTAuOSwgLTAuNCwgLTEwLjgsIC03LjcsIC05LjgsIC04LjgsIC04LjksIC03LjMsIC05LjYsIC05LjEsIC0xMC41LCAtOC4zLCAtMTAuMiwgLTEwLjAsIC0wLjAsIDIuNSwgMC43LCAwLjUsIC03LjUsIC01LjEsIC03LjEsIC02LjcsIC03LjQsIC01LjcsIC04LjEsIC03LjAsIC01MC4wLCAtNS44LCAtNTAuMCwgLTcuMCwgOS40LCAxMi43LCAxMC4xLCAxMC4wLCAtNTAuMCwgLTEuNSwgLTExLjMsIC0zLjMsIC01LjQsIC00LjIsIC01LjYsIC02LjgsXSxcbiAgICAgICAgICAgIFstOC40LCAtNi4yLCAtOC45LCAtNS45LCAxLjgsIDAuNCwgMi43LCAxLjIsIC05LjEsIC0xLjIsIC04LjgsIC0xLjUsIC03LjIsIC0xMC41LCAtNC45LCAtOS42LCAtNS43LCAtNy40LCAtNS41LCAtNy40LCAwLjMsIC0wLjMsIDEuOCwgLTAuNCwgLTkuMCwgLTguNywgLTcuMywgLTguOSwgLTUuOSwgLTkuNCwgLTYuNCwgLTguNywgLTguNywgLTkuMSwgLTguNSwgLTkuNCwgMS40LCAwLjcsIDMuNSwgMC43LCAtNi42LCAtNS4zLCAtNC43LCAtNS44LCAtNS43LCAtNy41LCAtNS41LCAtNy4xLCAtNTAuMCwgLTguOSwgLTUwLjAsIC04LjQsIDExLjAsIDEwLjEsIDEzLjIsIDEwLjIsIC01MC4wLCAtNC4yLCAtNi4xLCAtMy42LCAtMy41LCAtOC40LCAtMS4yLCAtNi44LF0sXG4gICAgICAgICAgICBbLTkuMSwgLTUuNCwgLTEwLjQsIC00LjIsIDEuMCwgMC41LCAwLjYsIDIuNCwgLTkuNiwgLTEuNSwgLTEwLjUsIC0wLjUsIC04LjksIC0xMC41LCAtNy4yLCAtOC4zLCAtNi4zLCAtNi45LCAtNy43LCAtNS4xLCAtMC41LCAwLjEsIC0wLjYsIDIuMywgLTExLjEsIC0xMC4yLCAtMTAuNSwgLTcuMCwgLTguMywgLTkuNCwgLTkuNCwgLTYuNiwgLTkuNiwgLTkuNywgLTEwLjAsIC03LjksIDAuNywgMC42LCAwLjgsIDIuMywgLTcuMSwgLTYuNSwgLTcuMiwgLTUuMCwgLTYuNSwgLTcuNCwgLTcuNSwgLTUuNCwgLTUwLjAsIC03LjYsIC01MC4wLCAtNC44LCA5LjgsIDEwLjAsIDEwLjIsIDEyLjEsIC01MC4wLCAtMy4xLCAtMTEuNCwgLTAuNywgLTQuNiwgLTYuNiwgLTQuOSwgLTMuOSxdLFxuICAgICAgICAgICAgWy01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDI5LjIsIC01MC4wLCAyOC41LCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDMzLjMsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLF0sXG4gICAgICAgICAgICBbLTEzLjAsIC03LjAsIC0xMy4xLCAtOC4zLCAtOS4yLCAtNi41LCAtOC45LCAtNy42LCAtOS44LCAtMC43LCAtOS4yLCAtMi4xLCAtMTIuNCwgLTEwLjMsIC0xMi40LCAtMTEuNiwgLTkuNSwgLTQuNiwgLTEwLjQsIC01LjcsIC0xMy42LCAtMTAuMSwgLTExLjQsIC0xMC45LCAtNi41LCAtMS41LCAtNi4yLCAtMy42LCAtMTIuOCwgLTguMCwgLTEyLjMsIC05LjcsIC0xNi41LCAtMTIuNywgLTE1LjYsIC0xNC4zLCAtOC43LCAtNi4wLCAtNy4xLCAtNy41LCAtOS41LCAtNC4xLCAtOC40LCAtNi4xLCAtMTEuMCwgLTguNiwgLTExLjMsIC05LjMsIC01MC4wLCAtMS41LCAtNTAuMCwgLTMuMCwgLTQuOCwgLTEuNSwgLTQuMiwgLTMuMSwgLTUwLjAsIDE2LjQsIC01LjEsIDE0LjIsIC0xMC4xLCAtNC4zLCAtMTAuMCwgLTUuNCxdLFxuICAgICAgICAgICAgWy0xMy41LCAtMTYuMywgLTExLjgsIC0xNS41LCAtMTMuNiwgLTE1LjMsIC0xMi4xLCAtMTYuMSwgLTcuNywgLTEzLjMsIC00LjIsIC0xMi42LCAtMTQuMSwgLTE2LjIsIC0xMC4zLCAtMTUuNCwgLTkuNiwgLTExLjYsIC03LjcsIC05LjgsIC0xNC4zLCAtMTcuNSwgLTExLjEsIC0xNy4yLCAtNS4zLCAtNy4xLCAtMi4yLCAtNy4xLCAtOS42LCAtMTEuOSwgLTguNywgLTExLjQsIC0xNy4xLCAtMjAuNiwgLTE1LjMsIC0xOS45LCAtMTQuMSwgLTE0LjgsIC0xMi40LCAtMTYuNSwgLTExLjcsIC0xMi44LCAtNi40LCAtMTMuNCwgLTE0LjMsIC0xNS43LCAtMTIuNywgLTE0LjAsIC01MC4wLCAtNy44LCAtNTAuMCwgLTcuMSwgLTguNywgLTExLjMsIC02LjEsIC0xMS40LCAtNTAuMCwgLTUuMSwgMTguNiwgLTQuOCwgLTguNiwgLTguMSwgLTQuNSwgLTcuMyxdLFxuICAgICAgICAgICAgWy0xMi40LCAtOC4yLCAtMTMuMCwgLTUuOSwgLTcuNywgLTcuOCwgLTcuNCwgLTUuOCwgLTguOCwgLTIuMCwgLTkuMywgLTAuNCwgLTExLjYsIC0xMS4zLCAtMTEuNiwgLTkuNCwgLTguOSwgLTUuNiwgLTEwLjAsIC0zLjIsIC0xMS41LCAtMTEuMSwgLTEwLjUsIC04LjMsIC02LjMsIC00LjksIC02LjcsIC0xLjIsIC0xMC42LCAtOS43LCAtMTEuMywgLTguMCwgLTE0LjgsIC0xMy4xLCAtMTUuNSwgLTExLjQsIC03LjUsIC03LjUsIC03LjEsIC01LjksIC04LjQsIC01LjgsIC04LjEsIC0zLjYsIC05LjksIC05LjcsIC0xMC4xLCAtOC4yLCAtNTAuMCwgLTMuMCwgLTUwLjAsIC0wLjEsIC0zLjUsIC0zLjMsIC0zLjYsIC0wLjcsIC01MC4wLCAxNC4yLCAtNC44LCAxNi40LCAtOC45LCAtNS44LCAtOC45LCAtMy40LF0sXG4gICAgICAgICAgICBbLTEwLjcsIC0xMy4yLCAtMTIuNCwgLTExLjYsIC00LjgsIC04LjQsIC02LjEsIC03LjIsIC0xMC4zLCAtMTEuOCwgLTExLjAsIC0xMS42LCAyLjgsIC0xLjcsIDAuNywgLTEuMSwgLTYuMiwgLTkuNywgLTcuMywgLTguNCwgLTUuMywgLTguNiwgLTYuMSwgLTguMywgLTEwLjUsIC0xMS4yLCAtOS44LCAtMTAuMiwgOS41LCA2LjUsIDcuNiwgNi44LCAtMTIuMSwgLTE2LjAsIC0xMy4wLCAtMTYuMiwgLTUuMiwgLTguNiwgLTcuMSwgLTcuOCwgLTEyLjUsIC0xNC40LCAtMTIuMSwgLTEzLjAsIDEuNCwgLTMuMCwgLTEuNiwgLTIuNCwgLTUwLjAsIC04LjEsIC01MC4wLCAtNy4zLCAtMC4wLCAtNS40LCAtMy41LCAtNC42LCAtNTAuMCwgLTEwLjEsIC04LjYsIC04LjksIDEzLjIsIC0wLjksIDkuNywgLTAuMyxdLFxuICAgICAgICAgICAgWy0xOC4xLCAtMTIuMywgLTE5LjQsIC0xNC4yLCAtMTIuMiwgLTkuNSwgLTExLjUsIC0xMC44LCAtMTcuOSwgLTExLjksIC0xOC4yLCAtMTMuOSwgLTYuNCwgLTMuNywgLTYuOCwgLTUuNCwgLTEyLjgsIC01LjksIC0xMy42LCAtNy40LCAtMTMuNywgLTkuOSwgLTEyLjksIC0xMi43LCAtMTYuMiwgLTExLjYsIC0xNS4yLCAtMTIuNywgLTMuMiwgMC41LCAtMy4zLCAtMS44LCAtMTguOSwgLTE2LjYsIC0xOC44LCAtMTkuMiwgLTEyLjUsIC05LjQsIC0xMC42LCAtMTEuMSwgLTE3LjMsIC0xNC4xLCAtMTYuMiwgLTE2LjAsIC03LjksIC0zLjcsIC03LjgsIC02LjMsIC01MC4wLCAzLjYsIC01MC4wLCAyLjMsIC04LjYsIC00LjIsIC04LjQsIC02LjYsIC01MC4wLCAtNC4zLCAtOC4xLCAtNS44LCAtMC45LCAxNC4yLCAtMS44LCAxMS42LF0sXG4gICAgICAgICAgICBbLTExLjgsIC0xMy4xLCAtMTEuNSwgLTEyLjAsIC02LjIsIC04LjMsIC01LjQsIC03LjQsIC0xMS44LCAtMTIuMywgLTExLjEsIC0xMS40LCAwLjUsIC0yLjUsIDIuNCwgLTEuNiwgLTYuOCwgLTkuOSwgLTYuNCwgLTguOSwgLTYuMSwgLTguNiwgLTUuMCwgLTcuOCwgLTEwLjQsIC0xMS42LCAtOC41LCAtOS45LCA4LjIsIDYuNCwgOC43LCA2LjksIC0xMi40LCAtMTcuMCwgLTEyLjYsIC0xNS44LCAtNi41LCAtOC41LCAtNS4wLCAtNy44LCAtMTMuMiwgLTEzLjYsIC0xMC4zLCAtMTMuNywgLTAuNywgLTMuMiwgLTAuMywgLTIuNCwgLTUwLjAsIC05LjQsIC01MC4wLCAtOC43LCAtMi4xLCAtNS42LCAtMS4yLCAtNC45LCAtNTAuMCwgLTEwLjAsIC00LjUsIC04LjksIDkuNywgLTEuOCwgMTEuMywgLTAuOSxdLFxuICAgICAgICAgICAgWy0xNy4yLCAtMTMuMywgLTE3LjgsIC0xMS42LCAtMTEuMCwgLTExLjEsIC0xMC40LCAtOS4wLCAtMTYuMCwgLTEyLjcsIC0xNi4xLCAtMTEuMSwgLTUuMiwgLTUuNCwgLTYuMCwgLTMuMywgLTExLjgsIC03LjMsIC0xMy4zLCAtNS45LCAtMTIuNywgLTExLjksIC0xMS45LCAtOS4zLCAtMTUuMiwgLTE1LjAsIC0xNC45LCAtMTEuMCwgLTIuOCwgLTEuOCwgLTIuOSwgMC40LCAtMTcuNCwgLTE4LjQsIC0xOC4zLCAtMTUuOSwgLTEwLjcsIC0xMS4yLCAtMTAuNiwgLTkuMCwgLTE1LjQsIC0xNC44LCAtMTUuOCwgLTEzLjMsIC02LjgsIC01LjksIC03LjIsIC0zLjksIC01MC4wLCAyLjAsIC01MC4wLCAzLjksIC03LjAsIC02LjgsIC02LjgsIC0zLjksIC01MC4wLCAtNS40LCAtNy4zLCAtMy40LCAtMC4zLCAxMS42LCAtMC45LCAxNC4xLF1dO1xuICAgICAgICB0aGlzLlRSQU5TID0gW1s1LCAwLCAwLCA0XSxcbiAgICAgICAgICAgIFswLCA1LCA0LCAwXSxcbiAgICAgICAgICAgIFswLCA0LCA1LCAwXSxcbiAgICAgICAgICAgIFs0LCAwLCAwLCA1XV07XG4gICAgICAgIHRoaXMuQ09OQkxPID0geyAnQSc6IDAsICdSJzogMSwgJ04nOiAyLCAnRCc6IDMsICdDJzogNCwgJ1EnOiA1LCAnRSc6IDYsICdHJzogNywgJ0gnOiA4LCAnSSc6IDksICdMJzogMTAsICdLJzogMTEsICdNJzogMTIsICdGJzogMTMsICdQJzogMTQsICdTJzogMTUsICdUJzogMTYsICdXJzogMTcsICdZJzogMTgsICdWJzogMTksICdCJzogMjAsICdaJzogMjEsICdYJzogMjIsICcqJzogMjMgfTtcbiAgICAgICAgdGhpcy5DT05OVUNMID0geyAnQSc6IDAsICdUJzogMSwgJ0MnOiAyLCAnRyc6IDMgfTtcbiAgICAgICAgdGhpcy5DT05TQ0hOID0geyAnQUFBJzogMCwgJ0FBQyc6IDEsICdBQUcnOiAyLCAnQUFUJzogMywgJ0FDQSc6IDQsICdBQ0MnOiA1LCAnQUNHJzogNiwgJ0FDVCc6IDcsICdBR0EnOiA4LCAnQUdDJzogOSwgJ0FHRyc6IDEwLCAnQUdUJzogMTEsICdBVEEnOiAxMiwgJ0FUQyc6IDEzLCAnQVRHJzogMTQsICdBVFQnOiAxNSwgJ0NBQSc6IDE2LCAnQ0FDJzogMTcsICdDQUcnOiAxOCwgJ0NBVCc6IDE5LCAnQ0NBJzogMjAsICdDQ0MnOiAyMSwgJ0NDRyc6IDIyLCAnQ0NUJzogMjMsICdDR0EnOiAyNCwgJ0NHQyc6IDI1LCAnQ0dHJzogMjYsICdDR1QnOiAyNywgJ0NUQSc6IDI4LCAnQ1RDJzogMjksICdDVEcnOiAzMCwgJ0NUVCc6IDMxLCAnR0FBJzogMzIsICdHQUMnOiAzMywgJ0dBRyc6IDM0LCAnR0FUJzogMzUsICdHQ0EnOiAzNiwgJ0dDQyc6IDM3LCAnR0NHJzogMzgsICdHQ1QnOiAzOSwgJ0dHQSc6IDQwLCAnR0dDJzogNDEsICdHR0cnOiA0MiwgJ0dHVCc6IDQzLCAnR1RBJzogNDQsICdHVEMnOiA0NSwgJ0dURyc6IDQ2LCAnR1RUJzogNDcsICdUQUEnOiA0OCwgJ1RBQyc6IDQ5LCAnVEFHJzogNTAsICdUQVQnOiA1MSwgJ1RDQSc6IDUyLCAnVENDJzogNTMsICdUQ0cnOiA1NCwgJ1RDVCc6IDU1LCAnVEdBJzogNTYsICdUR0MnOiA1NywgJ1RHRyc6IDU4LCAnVEdUJzogNTksICdUVEEnOiA2MCwgJ1RUQyc6IDYxLCAnVFRHJzogNjIsICdUVFQnOiA2MyB9O1xuICAgICAgICB0aGlzLnNldE1ldGhvZChhbGlnbkdyaWRfKTtcbiAgICAgICAgdGhpcy5zZXRTZXF1ZW5jZXMoc2VxMV8sIHNlcTJfKTtcbiAgICAgICAgdGhpcy5zZXRHYXAoZ2FwXyk7XG4gICAgfVxuICAgIGZpbGxOZWVkbGVtYW4oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVswXS52YWx1ZSA9IC1pICogdGhpcy5nYXA7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVswXS5wYXJlbnRJID0gaSAtIDE7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVswXS5wYXJlbnRKID0gMDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmxlbjI7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0udmFsdWUgPSAtaSAqIHRoaXMuZ2FwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFswXVtpXS5wYXJlbnRKID0gaSAtIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmlsbE9uZShpLCBqKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID0gTWF0aC5tYXgodGhpcy5kcEdyaWRbaSAtIDFdW2ogLSAxXS52YWx1ZSArIHRoaXMuc2NvcmVzW2kgLSAxXVtqIC0gMV0sIE1hdGgubWF4KHRoaXMuZHBHcmlkW2kgLSAxXVtqXS52YWx1ZSAtIHRoaXMuZ2FwLCB0aGlzLmRwR3JpZFtpXVtqIC0gMV0udmFsdWUgLSB0aGlzLmdhcCkpO1xuICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPT0gdGhpcy5kcEdyaWRbaSAtIDFdW2ogLSAxXS52YWx1ZSArIHRoaXMuc2NvcmVzW2kgLSAxXVtqIC0gMV0pIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSBpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqIC0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9PSB0aGlzLmRwR3JpZFtpIC0gMV1bal0udmFsdWUgLSB0aGlzLmdhcCkge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IGkgLSAxO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IGo7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gaTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqIC0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBncmlkRnJvbU5hbWUocGF0aCkge1xuICAgICAgICBzd2l0Y2ggKHBhdGgpIHtcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTQ1JzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNNDU7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU01MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTUwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNNjInOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU02MjtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTgwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNODA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU05MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTkwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFNMzAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5QQU0zMDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBTTcwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNNzA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQU0yNTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5QQU0yNTA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdOVUNMRU9USURFUyc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLk5VQ0xFT1RJREVTO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTk5VQ0w7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1RSQU5TJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuVFJBTlM7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OTlVDTDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU0NITkVJREVSJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuU0NITkVJREVSO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTlNDSE47XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGxTY29yZXMoKTtcbiAgICB9XG4gICAgY29uc3RydWN0UmVzdWx0KGksIGopIHtcbiAgICAgICAgbGV0IHJlczEgPSBcIlwiLCByZXMyID0gXCJcIiwgZ2FwUyA9IFwiXCI7XG4gICAgICAgIGxldCB0b3RhbCA9IHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RlcDsgaSsrKSB7XG4gICAgICAgICAgICBnYXBTICs9ICd8JztcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaSA+IDAgfHwgaiA+IDApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID09IGkpIHtcbiAgICAgICAgICAgICAgICByZXMxID0gZ2FwUyArIHJlczE7XG4gICAgICAgICAgICAgICAgcmVzMiA9IHRoaXMuc2VxMi5zdWJzdHIoKGogLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID09IGopIHtcbiAgICAgICAgICAgICAgICByZXMyID0gZ2FwUyArIHJlczI7XG4gICAgICAgICAgICAgICAgcmVzMSA9IHRoaXMuc2VxMS5zdWJzdHIoKGkgLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaSAtIDEgPj0gMClcbiAgICAgICAgICAgICAgICAgICAgcmVzMSA9IHRoaXMuc2VxMS5zdWJzdHIoKGkgLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXMxID0gZ2FwUyArIHJlczE7XG4gICAgICAgICAgICAgICAgaWYgKGogLSAxID49IDApXG4gICAgICAgICAgICAgICAgICAgIHJlczIgPSB0aGlzLnNlcTIuc3Vic3RyKChqIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMyO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzMiA9IGdhcFMgKyByZXMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRlbXBJID0gaTtcbiAgICAgICAgICAgIGkgPSB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJO1xuICAgICAgICAgICAgaiA9IHRoaXMuZHBHcmlkW3RlbXBJXVtqXS5wYXJlbnRKO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQWxpZ25lZChyZXMxLCByZXMyLCB0b3RhbCk7XG4gICAgfVxuICAgIGZpbGxTY29yZXMoKSB7XG4gICAgICAgIHRoaXMuc2NvcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2NvcmVzLnB1c2goW10pO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmxlbjI7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NvcmVzW2ldLnB1c2godGhpcy5hbGlnbkdyaWRbdGhpcy5jb25uZWN0aW9uc1t0aGlzLnNlcTEuc3Vic3RyKGkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCldXVt0aGlzLmNvbm5lY3Rpb25zW3RoaXMuc2VxMi5zdWJzdHIoaiAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB0eXBlUmVjKCkge1xuICAgICAgICBpZiAoL1tBVEdDXSovLnRlc3QodGhpcy5zZXExKSAmJiAvW0FUR0NdKi8udGVzdCh0aGlzLnNlcTIpKVxuICAgICAgICAgICAgcmV0dXJuIFwiTlVDTEVPVElERVNcIjtcbiAgICAgICAgaWYgKC9bQVJORENRRUdISUxLTUZQU1RXWVZCWlgqXSovLnRlc3QodGhpcy5zZXExKSAmJiAvW0FSTkRDUUVHSElMS01GUFNUV1lWQlpYKl0qLy50ZXN0KHRoaXMuc2VxMikpXG4gICAgICAgICAgICByZXR1cm4gXCJCTE9TVU02MlwiO1xuICAgICAgICB0aHJvdyBFcnJvcihcIkNhbid0IHJlY29nbml6ZSBzZXF1ZW5jZSB0eXBlXCIpO1xuICAgIH1cbiAgICBuZWVkbGVtYW5XdW5jaCgpIHtcbiAgICAgICAgdGhpcy5kcEdyaWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbjEgKyAxOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yICsgMTsgaisrKVxuICAgICAgICAgICAgICAgIHJvdy5wdXNoKG5ldyBDZWxsKCkpO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWQucHVzaChyb3cpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsbE5lZWRsZW1hbigpO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPD0gdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGxPbmUoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0UmVzdWx0KHRoaXMubGVuMSwgdGhpcy5sZW4yKTtcbiAgICB9XG4gICAgc21pdGhXYXRlcm1hbigpIHtcbiAgICAgICAgdGhpcy5kcEdyaWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbjEgKyAxOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yICsgMTsgaisrKVxuICAgICAgICAgICAgICAgIHJvdy5wdXNoKG5ldyBDZWxsKCkpO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWQucHVzaChyb3cpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBiZXN0VmFsID0gMDtcbiAgICAgICAgbGV0IGJlc3RJID0gMCwgYmVzdEogPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPD0gdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGxPbmUoaSwgaik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZHBHcmlkW3RoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEldW3RoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEpdLnZhbHVlID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPiBiZXN0VmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RWYWwgPSB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEkgPSBpO1xuICAgICAgICAgICAgICAgICAgICBiZXN0SiA9IGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdFJlc3VsdChiZXN0SSwgYmVzdEopO1xuICAgIH1cbiAgICBzZXRTZXF1ZW5jZXMoc2VxMV8sIHNlcTJfKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9IHNlcTFfO1xuICAgICAgICB0aGlzLnNlcTIgPSBzZXEyXztcbiAgICAgICAgdGhpcy5sZW4xID0gdGhpcy5zZXExLmxlbmd0aCAvIHRoaXMuc3RlcDtcbiAgICAgICAgdGhpcy5sZW4yID0gdGhpcy5zZXEyLmxlbmd0aCAvIHRoaXMuc3RlcDtcbiAgICAgICAgdGhpcy5maWxsU2NvcmVzKCk7XG4gICAgfVxuICAgIHNldEdhcChnYXBfKSB7XG4gICAgICAgIHRoaXMuZ2FwID0gZ2FwXztcbiAgICB9XG4gICAgc2V0TWV0aG9kKGFsaWduR3JpZF8gPSBcIlwiKSB7XG4gICAgICAgIGlmIChhbGlnbkdyaWRfID09IFwiQVVUT1wiKSB7XG4gICAgICAgICAgICBhbGlnbkdyaWRfID0gdGhpcy50eXBlUmVjKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkRnJvbU5hbWUoYWxpZ25HcmlkXyk7XG4gICAgfVxufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRNYWNyb01vbChtb25vbWVycykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgY29uc3QgbW9kdWxlUmRraXQgPSB5aWVsZCBncm9rLmZ1bmN0aW9ucy5jYWxsKCdDaGVtOmdldFJkS2l0TW9kdWxlJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9ub21lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbW9ub21lcnNbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2wgPSBtb2R1bGVSZGtpdC5nZXRfbW9sKG1vbm9tZXJzW2ldW2pdWydtb2xmaWxlJ10pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBtb2wuZ2V0X3YzS21vbGJsb2NrKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kaWNlcyA9IGdldEluZGljZXMobW9ub21lcnNbaV1bal0sIGEpO1xuICAgICAgICAgICAgICAgIG1vbm9tZXJzW2ldW2pdWydpbmRpY2VzJ10gPSBpbmRpY2VzO1xuICAgICAgICAgICAgICAgIG1vbm9tZXJzW2ldW2pdWydtb2xmaWxlJ10gPSB5aWVsZCByb3RhdGVCYWNrYm9uZVYzMDAwKGEsIGluZGljZXMpO1xuICAgICAgICAgICAgICAgIG1vbCA9PT0gbnVsbCB8fCBtb2wgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1vbC5kZWxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGxpbmtWMzAwMChtb25vbWVyc1tpXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXRJbmRpY2VzKG1vbm9tZXIsIG1vbFYzMDAwKSB7XG4gICAgY29uc3QgbW9sZmlsZSA9IG1vbm9tZXJbXCJtb2xmaWxlXCJdO1xuICAgIGxldCBpbmRleFN0YXJ0ID0gbW9sZmlsZS5pbmRleE9mKCdNICBSR1AnLCAwKSArIDg7XG4gICAgbGV0IGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleFN0YXJ0KTtcbiAgICBjb25zdCBpbmRpY2VzRGF0YSA9IG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4U3RhcnQsIGluZGV4RW5kKS5yZXBsYWNlQWxsKCcgICcsICcgJykucmVwbGFjZUFsbCgnICAnLCAnICcpO1xuICAgIGxldCBwYXJzZWREYXRhID0gaW5kaWNlc0RhdGEuc3BsaXQoJyAnKTtcbiAgICBjb25zdCByZW1GaXJzdCA9IHBhcnNlZERhdGFbMl0gPT0gJzEnID8gcGFyc2VJbnQocGFyc2VkRGF0YVsxXSkgOiBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICBjb25zdCByZW1MYXN0ID0gcGFyc2VkRGF0YVsyXSA9PSAnMicgPyBwYXJzZUludChwYXJzZWREYXRhWzFdKSA6IHBhcnNlSW50KHBhcnNlZERhdGFbM10pO1xuICAgIGNvbnN0IG51bWJlcnMgPSBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xWMzAwMCk7XG4gICAgbGV0IGluZGV4Qm9uZHMgPSBtb2xWMzAwMC5pbmRleE9mKCdNICBWMzAgQkVHSU4gQk9ORCcpOyAvLyBWMzAwMCBpbmRleCBmb3IgYm9uZHNcbiAgICBpbmRleEJvbmRzID0gbW9sVjMwMDAuaW5kZXhPZignXFxuJywgaW5kZXhCb25kcyk7XG4gICAgaW5kZXhTdGFydCA9IGluZGV4Qm9uZHM7XG4gICAgaW5kZXhFbmQgPSBpbmRleEJvbmRzO1xuICAgIGxldCBmaXJzdCA9IDA7XG4gICAgbGV0IGxhc3QgPSAwO1xuICAgIGxldCByZW1Cb25kRmlyc3QgPSAwO1xuICAgIGxldCByZW1Cb25kTGFzdCA9IDA7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1iZXJzLm5ib25kOyBqKyspIHtcbiAgICAgICAgaWYgKGZpcnN0ID09IDAgfHwgbGFzdCA9PSAwKSB7XG4gICAgICAgICAgICBpbmRleFN0YXJ0ID0gbW9sVjMwMDAuaW5kZXhPZignVjMwJywgaW5kZXhTdGFydCkgKyA0O1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xWMzAwMC5pbmRleE9mKCdcXG4nLCBpbmRleFN0YXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IGJvbmREYXRhID0gbW9sVjMwMDAuc3Vic3RyaW5nKGluZGV4U3RhcnQsIGluZGV4RW5kKS5yZXBsYWNlQWxsKCcgICcsICcgJykucmVwbGFjZUFsbCgnICAnLCAnICcpO1xuICAgICAgICAgICAgcGFyc2VkRGF0YSA9IGJvbmREYXRhLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICBpZiAocGFyc2VJbnQocGFyc2VkRGF0YVsyXSkgPT0gcmVtRmlyc3QpIHtcbiAgICAgICAgICAgICAgICBmaXJzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbM10pO1xuICAgICAgICAgICAgICAgIHJlbUJvbmRGaXJzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VJbnQocGFyc2VkRGF0YVszXSkgPT0gcmVtRmlyc3QpIHtcbiAgICAgICAgICAgICAgICBmaXJzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMl0pO1xuICAgICAgICAgICAgICAgIHJlbUJvbmRGaXJzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VJbnQocGFyc2VkRGF0YVsyXSkgPT0gcmVtTGFzdCkge1xuICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kTGFzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VJbnQocGFyc2VkRGF0YVszXSkgPT0gcmVtTGFzdCkge1xuICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzJdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kTGFzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGZpcnN0LCBsYXN0LCByZW1GaXJzdCwgcmVtTGFzdCwgcmVtQm9uZEZpcnN0LCByZW1Cb25kTGFzdCB9O1xufVxuZnVuY3Rpb24gcm90YXRlQmFja2JvbmVWMzAwMChtb2xCbG9jaywgaW5kaWNlcykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZXh0cmFjdEF0b21EYXRhVjMwMDAobW9sQmxvY2spO1xuICAgICAgICBjb25zdCBuYXRvbSA9IGNvb3JkaW5hdGVzLmF0b21JbmRleC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gaW5kaWNlc1snZmlyc3QnXTtcbiAgICAgICAgY29uc3QgbGFzdCA9IGluZGljZXNbJ2xhc3QnXTtcbiAgICAgICAgY29uc3QgeENlbnRlciA9IChjb29yZGluYXRlcy54W2xhc3RdICsgY29vcmRpbmF0ZXMueFtmaXJzdF0pIC8gMjtcbiAgICAgICAgY29uc3QgeUNlbnRlciA9IChjb29yZGluYXRlcy55W2xhc3RdICsgY29vcmRpbmF0ZXMueVtmaXJzdF0pIC8gMjtcbiAgICAgICAgLy9wbGFjZSB0byBjZW50ZXJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKSB7XG4gICAgICAgICAgICBjb29yZGluYXRlcy54W2ldIC09IHhDZW50ZXI7XG4gICAgICAgICAgICBjb29yZGluYXRlcy55W2ldIC09IHlDZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFuZ2xlID0gMDtcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzLnhbZmlyc3RdID09IDApXG4gICAgICAgICAgICBhbmdsZSA9IGNvb3JkaW5hdGVzLnlbZmlyc3RdID4gY29vcmRpbmF0ZXMueVtsYXN0XSA/IE1hdGguUEkgLyAyIDogMyAqIE1hdGguUEkgLyAyO1xuICAgICAgICBlbHNlIGlmIChjb29yZGluYXRlcy55W2ZpcnN0XSA9PSAwKVxuICAgICAgICAgICAgYW5nbGUgPSBjb29yZGluYXRlcy54W2ZpcnN0XSA+IGNvb3JkaW5hdGVzLnhbbGFzdF0gPyBNYXRoLlBJIDogMDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkZXJpdmF0aXZlID0gY29vcmRpbmF0ZXMueVtmaXJzdF0gLyBjb29yZGluYXRlcy54W2ZpcnN0XTtcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlcy54W2ZpcnN0XSA8IGNvb3JkaW5hdGVzLnhbbGFzdF0pXG4gICAgICAgICAgICAgICAgYW5nbGUgPSBkZXJpdmF0aXZlID4gMCA/IE1hdGguUEkgLSBNYXRoLmF0YW4oZGVyaXZhdGl2ZSkgOiBNYXRoLmF0YW4oZGVyaXZhdGl2ZSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYW5nbGUgPSBkZXJpdmF0aXZlID4gMCA/IE1hdGguYXRhbihkZXJpdmF0aXZlKSA6IE1hdGguUEkgLSBNYXRoLmF0YW4oZGVyaXZhdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29zID0gTWF0aC5jb3MoYW5nbGUpO1xuICAgICAgICBjb25zdCBzaW4gPSBNYXRoLnNpbihhbmdsZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKykge1xuICAgICAgICAgICAgY29uc3QgeEFkZCA9IGNvb3JkaW5hdGVzLnhbaV07XG4gICAgICAgICAgICBjb29yZGluYXRlcy54W2ldID0geEFkZCAqIGNvcyAtIGNvb3JkaW5hdGVzLnlbaV0gKiBzaW47XG4gICAgICAgICAgICBjb29yZGluYXRlcy55W2ldID0geEFkZCAqIHNpbiArIGNvb3JkaW5hdGVzLnlbaV0gKiBjb3M7XG4gICAgICAgIH1cbiAgICAgICAgLy9wbGFjZSB0byByaWdodFxuICAgICAgICBjb25zdCB4U2hpZnQgPSBjb29yZGluYXRlcy54W2ZpcnN0XTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKVxuICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSAtPSB4U2hpZnQ7XG4gICAgICAgIC8vcmV3cml0ZSBtb2xCbG9ja1xuICAgICAgICBsZXQgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdNICBWMzAgQkVHSU4gQVRPTScpOyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgY29vcmRpbmF0ZXNcbiAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCk7XG4gICAgICAgIGxldCBpbmRleEVuZCA9IGluZGV4O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hdG9tOyBpKyspIHtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4RW5kKTtcbiAgICAgICAgICAgIG1vbEJsb2NrID0gbW9sQmxvY2suc2xpY2UoMCwgaW5kZXgpICtcbiAgICAgICAgICAgICAgICBjb29yZGluYXRlcy54W2ldICsgJyAnICsgY29vcmRpbmF0ZXMueVtpXSArXG4gICAgICAgICAgICAgICAgbW9sQmxvY2suc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2xCbG9jaztcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3RBdG9tRGF0YVYzMDAwKG1vbEJsb2NrKSB7XG4gICAgY29uc3QgbnVtYmVycyA9IGV4dHJhY3RBdG9tc0JvbmRzTnVtYmVyc1YzMDAwKG1vbEJsb2NrKTtcbiAgICBsZXQgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdNICBWMzAgQkVHSU4gQVRPTScpOyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgY29vcmRpbmF0ZXNcbiAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1xcbicsIGluZGV4KTtcbiAgICBsZXQgaW5kZXhFbmQgPSBpbmRleDtcbiAgICBjb25zdCBpbmRleGVzID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgY29uc3QgdHlwZXMgPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBjb25zdCB4ID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgY29uc3QgeSA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVycy5uYXRvbTsgaSsrKSB7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICBpbmRleGVzW2ldID0gcGFyc2VJbnQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICB0eXBlc1tpXSA9IG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpO1xuICAgICAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICB4W2ldID0gcGFyc2VGbG9hdChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhFbmQgKyAxO1xuICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgIHlbaV0gPSBwYXJzZUZsb2F0KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgIH1cbiAgICByZXR1cm4geyBhdG9tSW5kZXg6IGluZGV4ZXMsIGF0b21UeXBlOiB0eXBlcywgeDogeCwgeTogeSB9O1xufVxuZnVuY3Rpb24gbGlua1YzMDAwKG1vbm9tZXJzKSB7XG4gICAgbGV0IG1hY3JvTW9sQmxvY2sgPSAnXFxuRGF0YWdyb2sgbWFjcm9tb2xlY3VsZSBoYW5kbGVyXFxuXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICcgIDAgIDAgIDAgIDAgIDAgIDAgICAgICAgICAgICA5OTkgVjMwMDBcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBDVEFCXFxuJztcbiAgICBsZXQgYXRvbUJsb2NrID0gJyc7XG4gICAgbGV0IGJvbmRCbG9jayA9ICcnO1xuICAgIGxldCBjb2xsZWN0aW9uQmxvY2sgPSAnJztcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gW107XG4gICAgbGV0IG5hdG9tID0gMDtcbiAgICBsZXQgbmJvbmQgPSAwO1xuICAgIGxldCB4U2hpZnQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9ub21lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG1vbGZpbGUgPSBtb25vbWVyc1tpXVsnbW9sZmlsZSddO1xuICAgICAgICBjb25zdCBmaXJzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ2ZpcnN0J107XG4gICAgICAgIGNvbnN0IGxhc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydsYXN0J107XG4gICAgICAgIGNvbnN0IHJlbUZpcnN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsncmVtRmlyc3QnXTtcbiAgICAgICAgY29uc3QgcmVtTGFzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUxhc3QnXTtcbiAgICAgICAgY29uc3QgcmVtQm9uZEZpcnN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsncmVtQm9uZEZpcnN0J107XG4gICAgICAgIGNvbnN0IHJlbUJvbmRMYXN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsncmVtQm9uZExhc3QnXTtcbiAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUucmVwbGFjZUFsbCgnKC1cXG5NICBWMzAgJywgJygnKVxuICAgICAgICAgICAgLnJlcGxhY2VBbGwoJy1cXG5NICBWMzAgJywgJycpLnJlcGxhY2VBbGwoJyApJywgJyknKTtcbiAgICAgICAgY29uc3QgbnVtYmVycyA9IGV4dHJhY3RBdG9tc0JvbmRzTnVtYmVyc1YzMDAwKG1vbGZpbGUpO1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGV4dHJhY3RBdG9tRGF0YVYzMDAwKG1vbGZpbGUpO1xuICAgICAgICBsZXQgaW5kZXhBdG9tcyA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgICAgIGluZGV4QXRvbXMgPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4QXRvbXMpO1xuICAgICAgICBsZXQgaW5kZXggPSBpbmRleEF0b21zO1xuICAgICAgICBsZXQgaW5kZXhFbmQgPSBpbmRleEF0b21zO1xuICAgICAgICBjb25zdCB0b3RhbFNoaWZ0ID0geFNoaWZ0IC0gY29vcmRpbmF0ZXMueFtmaXJzdCAtIDFdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bWJlcnMubmF0b207IGorKykge1xuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzLmF0b21JbmRleFtqXSAhPSByZW1GaXJzdCAmJiBjb29yZGluYXRlcy5hdG9tSW5kZXhbal0gIT0gcmVtTGFzdCkgeyAvL3x8IGkgPT0gMCkge1xuICAgICAgICAgICAgICAgIC8vcmV3cml0ZSBhdG9tIG51bWJlclxuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdWMzAnLCBpbmRleCkgKyA0O1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGxldCBhdG9tTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICAgICAgYXRvbU51bWJlciA9IChhdG9tTnVtYmVyID4gcmVtRmlyc3QgJiYgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDIgOlxuICAgICAgICAgICAgICAgICAgICAoYXRvbU51bWJlciA+IHJlbUZpcnN0IHx8IGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAxIDogYXRvbU51bWJlcjtcbiAgICAgICAgICAgICAgICBhdG9tTnVtYmVyICs9IG5hdG9tO1xuICAgICAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGF0b21OdW1iZXIgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgICAgICAvL3Jld3JpdGUgY29vcmRpbmF0ZXNcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGxldCBjb29yZGluYXRlID0gTWF0aC5yb3VuZCgxMDAwMCAqIChwYXJzZUZsb2F0KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpICsgdG90YWxTaGlmdCkpIC8gMTAwMDA7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgY29vcmRpbmF0ZSArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBjb29yZGluYXRlID0gTWF0aC5yb3VuZCgxMDAwMCAqIChwYXJzZUZsb2F0KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpKSkgLyAxMDAwMDtcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBjb29yZGluYXRlICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwJywgaW5kZXgpIC0gMTtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleEF0b21zRW5kID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgRU5EIEFUT00nKTtcbiAgICAgICAgYXRvbUJsb2NrICs9IG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4QXRvbXMgKyAxLCBpbmRleEF0b21zRW5kKTtcbiAgICAgICAgbGV0IGluZGV4Qm9uZHMgPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBCT05EJyk7IC8vIFYzMDAwIGluZGV4IGZvciBib25kc1xuICAgICAgICBpbmRleEJvbmRzID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleEJvbmRzKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEJvbmRzO1xuICAgICAgICBpbmRleEVuZCA9IGluZGV4Qm9uZHM7XG4gICAgICAgIGxldCBib25kTnVtYmVyID0gMDtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1iZXJzLm5ib25kOyBqKyspIHtcbiAgICAgICAgICAgIC8vcmV3cml0ZSBib25kIG51bWJlclxuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgIGJvbmROdW1iZXIgPSBwYXJzZUludChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgICAgIGlmIChib25kTnVtYmVyID09IHJlbUJvbmRGaXJzdCB8fCBib25kTnVtYmVyID09IHJlbUJvbmRMYXN0KSB7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXggLT0gNztcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJvbmROdW1iZXIgPSAoYm9uZE51bWJlciA+IHJlbUJvbmRGaXJzdCAmJiBib25kTnVtYmVyID4gcmVtQm9uZExhc3QpID8gYm9uZE51bWJlciAtIDIgOlxuICAgICAgICAgICAgICAgIChib25kTnVtYmVyID4gcmVtQm9uZEZpcnN0IHx8IGJvbmROdW1iZXIgPiByZW1Cb25kTGFzdCkgPyBib25kTnVtYmVyIC0gMSA6IGJvbmROdW1iZXI7XG4gICAgICAgICAgICBib25kTnVtYmVyICs9IG5ib25kO1xuICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgYm9uZE51bWJlciArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgLy9yZXdyaXRlIGF0b20gcGFpciBpbiBib25kXG4gICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgIGxldCBhdG9tTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICBhdG9tTnVtYmVyID0gKGF0b21OdW1iZXIgPiByZW1GaXJzdCAmJiBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMiA6XG4gICAgICAgICAgICAgICAgKGF0b21OdW1iZXIgPiByZW1GaXJzdCB8fCBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMSA6IGF0b21OdW1iZXI7XG4gICAgICAgICAgICBhdG9tTnVtYmVyICs9IG5hdG9tO1xuICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgYXRvbU51bWJlciArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBNYXRoLm1pbihtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4KSwgbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpKTtcbiAgICAgICAgICAgIGF0b21OdW1iZXIgPSBwYXJzZUludChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgICAgIGF0b21OdW1iZXIgPSAoYXRvbU51bWJlciA+IHJlbUZpcnN0ICYmIGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAyIDpcbiAgICAgICAgICAgICAgICAoYXRvbU51bWJlciA+IHJlbUZpcnN0IHx8IGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAxIDogYXRvbU51bWJlcjtcbiAgICAgICAgICAgIGF0b21OdW1iZXIgKz0gbmF0b207XG4gICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBhdG9tTnVtYmVyICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleEJvbmRFbmQgPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBFTkQgQk9ORCcpO1xuICAgICAgICBib25kQmxvY2sgKz0gbW9sZmlsZS5zdWJzdHJpbmcoaW5kZXhCb25kcyArIDEsIGluZGV4Qm9uZEVuZCk7XG4gICAgICAgIC8vbGV0IGluZGV4Q29sbGVjdGlvbiA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIE1ETFYzMC9TVEVBQlMgQVRPTVM9KCcpOyAvLyBWMzAwMCBpbmRleCBmb3IgY29sbGVjdGlvbnNcbiAgICAgICAgLy8gd2hpbGUgKGluZGV4Q29sbGVjdGlvbiAhPSAtMSkge1xuICAgICAgICAvLyAgIGluZGV4Q29sbGVjdGlvbiArPSAyODtcbiAgICAgICAgLy8gICBjb25zdCBjb2xsZWN0aW9uRW5kID0gbW9sZmlsZS5pbmRleE9mKCcpJywgaW5kZXhDb2xsZWN0aW9uKTtcbiAgICAgICAgLy8gICBjb25zdCBjb2xsZWN0aW9uRW50cmllcyA9IG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4Q29sbGVjdGlvbiwgY29sbGVjdGlvbkVuZCkuc3BsaXQoJyAnKS5zbGljZSgxKTtcbiAgICAgICAgLy8gICBjb2xsZWN0aW9uRW50cmllcy5mb3JFYWNoKChlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gICAgIGNvbGxlY3Rpb24ucHVzaChwYXJzZUludChlKSArIG5hdG9tKTtcbiAgICAgICAgLy8gICB9KTtcbiAgICAgICAgLy8gICBpbmRleENvbGxlY3Rpb24gPSBjb2xsZWN0aW9uRW5kO1xuICAgICAgICAvLyAgIGluZGV4Q29sbGVjdGlvbiA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIE1ETFYzMC9TVEVBQlMgQVRPTVM9KCcsIGluZGV4Q29sbGVjdGlvbik7XG4gICAgICAgIC8vIH1cbiAgICAgICAgbmF0b20gKz0gbnVtYmVycy5uYXRvbSAtIDI7XG4gICAgICAgIG5ib25kICs9IG51bWJlcnMubmJvbmQgLSAyO1xuICAgICAgICB4U2hpZnQgKz0gY29vcmRpbmF0ZXMueFtsYXN0XSAtIGNvb3JkaW5hdGVzLnhbZmlyc3RdICsgMTtcbiAgICAgICAgaWYgKGkgPT0gbW9ub21lcnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgbmF0b20rKztcbiAgICAgICAgICAgIGNvbnN0IHNoaWZ0ID0geFNoaWZ0ICsgMC4yO1xuICAgICAgICAgICAgYXRvbUJsb2NrICs9ICdNICBWMzAgJyArIG5hdG9tICsgJyBPICcgKyBzaGlmdCArICcgMCAwLjAwMDAwMCAwXFxuJztcbiAgICAgICAgfVxuICAgICAgICBuYm9uZCsrO1xuICAgICAgICBpZiAoaSA9PSBtb25vbWVycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCByaWdodFRlcm1pbmFsID0gKGxhc3QgPiByZW1GaXJzdCAmJiBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMyA6XG4gICAgICAgICAgICAgICAgKGxhc3QgPiByZW1GaXJzdCB8fCBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMiA6XG4gICAgICAgICAgICAgICAgICAgIGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMikgLSAxO1xuICAgICAgICAgICAgYm9uZEJsb2NrICs9ICdNICBWMzAgJyArIG5ib25kICsgJyAxICcgKyByaWdodFRlcm1pbmFsICsgJyAnICsgbmF0b20gKyAnXFxuJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VGVybWluYWwgPSAobGFzdCA+IHJlbUZpcnN0ICYmIGxhc3QgPiByZW1MYXN0KSA/IGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMikgLSAyIDpcbiAgICAgICAgICAgICAgICAobGFzdCA+IHJlbUZpcnN0IHx8IGxhc3QgPiByZW1MYXN0KSA/IGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMikgLSAxIDpcbiAgICAgICAgICAgICAgICAgICAgbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBtb25vbWVyc1tpICsgMV1bJ2luZGljZXMnXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRGaXJzdCA9IG5leHRbJ2ZpcnN0J107XG4gICAgICAgICAgICBjb25zdCBuZXh0UmVtRmlyc3QgPSBuZXh0WydyZW1GaXJzdCddO1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlbUxhc3QgPSBuZXh0WydyZW1MYXN0J107XG4gICAgICAgICAgICBjb25zdCBsZWZ0VGVybWluYWwgPSAobmV4dEZpcnN0ID4gbmV4dFJlbUZpcnN0ICYmIG5leHRGaXJzdCA+IG5leHRSZW1MYXN0KSA/IG5leHRGaXJzdCArIG5hdG9tIC0gMiA6XG4gICAgICAgICAgICAgICAgKG5leHRGaXJzdCA+IG5leHRSZW1GaXJzdCB8fCBuZXh0Rmlyc3QgPiBuZXh0UmVtTGFzdCkgPyBuZXh0Rmlyc3QgKyBuYXRvbSAtIDEgOlxuICAgICAgICAgICAgICAgICAgICBuZXh0Rmlyc3QgKyBuYXRvbTtcbiAgICAgICAgICAgIGJvbmRCbG9jayArPSAnTSAgVjMwICcgKyBuYm9uZCArICcgMSAnICsgcmlnaHRUZXJtaW5hbCArICcgJyArIGxlZnRUZXJtaW5hbCArICdcXG4nO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGNvbnN0IGVudHJpZXMgPSA0O1xuICAgIC8vIGNvbnN0IGNvbGxOdW1iZXIgPSBNYXRoLmNlaWwoY29sbGVjdGlvbi5sZW5ndGggLyBlbnRyaWVzKTtcbiAgICAvLyBjb2xsZWN0aW9uQmxvY2sgKz0gJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnICsgY29sbGVjdGlvbi5sZW5ndGggKyAnIC1cXG4nO1xuICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgY29sbE51bWJlcjsgaSsrKSB7XG4gICAgLy8gICBjb2xsZWN0aW9uQmxvY2sgKz0gJ00gIFYzMCAnO1xuICAgIC8vICAgY29uc3QgZW50cmllc0N1cnJlbnQgPSBpICsgMSA9PSBjb2xsTnVtYmVyID8gY29sbGVjdGlvbi5sZW5ndGggLSAoY29sbE51bWJlciAtIDEpKmVudHJpZXMgOiBlbnRyaWVzO1xuICAgIC8vICAgZm9yIChsZXQgaiA9IDA7IGogPCBlbnRyaWVzQ3VycmVudDsgaisrKSB7XG4gICAgLy8gICAgIGNvbGxlY3Rpb25CbG9jayArPSAoaiArIDEgPT0gZW50cmllc0N1cnJlbnQpID9cbiAgICAvLyAgICAgICAoaSA9PSBjb2xsTnVtYmVyIC0gMSA/IGNvbGxlY3Rpb25bZW50cmllcyppICsgal0gKyAnKVxcbicgOiBjb2xsZWN0aW9uW2VudHJpZXMqaSArIGpdICsgJyAtXFxuJykgOlxuICAgIC8vICAgICAgIGNvbGxlY3Rpb25bZW50cmllcyppICsgal0gKyAnICc7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIC8vZ2VuZXJhdGUgZmlsZVxuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBDT1VOVFMgJyArIG5hdG9tICsgJyAnICsgbmJvbmQgKyAnIDAgMCAwXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQVRPTVxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSBhdG9tQmxvY2s7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBBVE9NXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQk9ORFxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSBib25kQmxvY2s7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBCT05EXFxuJztcbiAgICAvL21hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBDT0xMRUNUSU9OXFxuJztcbiAgICAvL21hY3JvTW9sQmxvY2sgKz0gY29sbGVjdGlvbkJsb2NrO1xuICAgIC8vbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBDT0xMRUNUSU9OXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgRU5EIENUQUJcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIEVORFxcbic7XG4gICAgcmV0dXJuIG1hY3JvTW9sQmxvY2s7XG59XG5mdW5jdGlvbiBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xCbG9jaykge1xuICAgIG1vbEJsb2NrID0gbW9sQmxvY2sucmVwbGFjZUFsbCgnXFxyJywgJycpOyAvL2VxdWFsaXplIG9sZCBhbmQgbmV3IHNkZiBzdGFuZGFyZHNcbiAgICBsZXQgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdDT1VOVFMnKSArIDc7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBhbmQgYm9uZHMgbnVtYmVyXG4gICAgbGV0IGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICBjb25zdCBhdG9tc051bWJlciA9IHBhcnNlSW50KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgY29uc3QgYm9uZHNOdW1iZXIgPSBwYXJzZUludChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgcmV0dXJuIHsgbmF0b206IGF0b21zTnVtYmVyLCBuYm9uZDogYm9uZHNOdW1iZXIgfTtcbn1cbiIsImltcG9ydCAqIGFzIEMgZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IEFtaW5vYWNpZHNQYWxldHRlcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzJztcbmltcG9ydCB7IE51Y2xlb3RpZGVzUGFsZXR0ZXMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvbnVjbGVvdGlkZXMnO1xuaW1wb3J0IHsgVW5rbm93blNlcVBhbGV0dGVzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3Vua25vd24nO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5jb25zdCBscnUgPSBuZXcgREcuTHJ1Q2FjaGUoKTtcbmNvbnN0IHVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuZnVuY3Rpb24gZ2V0UGFsbGV0ZUJ5VHlwZShwYWxldHRlVHlwZSkge1xuICAgIHN3aXRjaCAocGFsZXR0ZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnUFQnOlxuICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICBjYXNlICdOVCc6XG4gICAgICAgICAgICByZXR1cm4gTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW07XG4gICAgICAgIGNhc2UgJ0ROQSc6XG4gICAgICAgICAgICByZXR1cm4gTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW07XG4gICAgICAgIGNhc2UgJ1JOQSc6XG4gICAgICAgICAgICByZXR1cm4gTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW07XG4gICAgICAgIC8vIG90aGVyXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gVW5rbm93blNlcVBhbGV0dGVzLkNvbG9yO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzU2VxdWVuY2Uoc3ViUGFydHMpIHtcbiAgICBjb25zdCBzaW1wbGlmaWVkID0gIXN1YlBhcnRzLnNvbWUoKGFtaW5vLCBpbmRleCkgPT4gYW1pbm8ubGVuZ3RoID4gMSAmJlxuICAgICAgICBpbmRleCAhPSAwICYmXG4gICAgICAgIGluZGV4ICE9IHN1YlBhcnRzLmxlbmd0aCAtIDEpO1xuICAgIGNvbnN0IHRleHQgPSBbXTtcbiAgICBjb25zdCBnYXAgPSBzaW1wbGlmaWVkID8gJycgOiAnICc7XG4gICAgc3ViUGFydHMuZm9yRWFjaCgoYW1pbm8sIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCA8IHN1YlBhcnRzLmxlbmd0aClcbiAgICAgICAgICAgIGFtaW5vICs9IGAke2FtaW5vID8gJycgOiAnLSd9JHtnYXB9YDtcbiAgICAgICAgdGV4dC5wdXNoKGFtaW5vKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW3RleHQsIHNpbXBsaWZpZWRdO1xufVxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgcHJpbnRzIGEgc3RyaW5nIGFsaWduZWQgdG8gbGVmdCBvciBjZW50ZXJlZC5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0geCB4IGNvb3JkaW5hdGUuXG4gKiBAcGFyYW0ge251bWJlcn0geSB5IGNvb3JkaW5hdGUuXG4gKiBAcGFyYW0ge251bWJlcn0gdyBXaWR0aC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBoIEhlaWdodC5cbiAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBnIENhbnZhcyByZW5kZXJpbmcgY29udGV4dC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzIFN0cmluZyB0byBwcmludC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29sb3I9dW5kZWZpbmVkQ29sb3JdIFN0cmluZyBjb2xvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbcGl2b3Q9MF0gUGlydm90LlxuICogQHBhcmFtIHtib29sZWFufSBbbGVmdD1mYWxzZV0gSXMgbGVmdCBhbGlnbmVkLlxuICogQHBhcmFtIHtudW1iZXJ9IFt0cmFuc3BhcmVuY3lSYXRlPTAuMF0gVHJhbnNwYXJlbmN5IHJhdGUgd2hlcmUgMS4wIGlzIGZ1bGx5IHRyYW5zcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj0nJ10gSXMgc2VwYXJhdG9yIGZvciBzZXF1ZW5jZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xhc3Q9ZmFsc2VdIElzIGNoZWNrZXIgaWYgZWxlbWVudCBsYXN0IG9yIG5vdC5cbiAqIEByZXR1cm4ge251bWJlcn0geCBjb29yZGluYXRlIHRvIHN0YXJ0IHByaW50aW5nIGF0LlxuICovXG5mdW5jdGlvbiBwcmludExlZnRPckNlbnRlcmVkKHgsIHksIHcsIGgsIGcsIHMsIGNvbG9yID0gdW5kZWZpbmVkQ29sb3IsIHBpdm90ID0gMCwgbGVmdCA9IGZhbHNlLCB0cmFuc3BhcmVuY3lSYXRlID0gMS4wLCBzZXBhcmF0b3IgPSAnJywgbGFzdCA9IGZhbHNlKSB7XG4gICAgZy50ZXh0QWxpZ24gPSAnc3RhcnQnO1xuICAgIGNvbnN0IGNvbG9yUGFydCA9IHMuc3Vic3RyaW5nKDApO1xuICAgIGxldCBncmF5UGFydCA9IHNlcGFyYXRvcjtcbiAgICBpZiAobGFzdCkge1xuICAgICAgICBncmF5UGFydCA9ICcnO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0U2l6ZSA9IGcubWVhc3VyZVRleHQoY29sb3JQYXJ0ICsgZ3JheVBhcnQpO1xuICAgIGNvbnN0IGluZGVudCA9IDU7XG4gICAgY29uc3QgY29sb3JUZXh0U2l6ZSA9IGcubWVhc3VyZVRleHQoY29sb3JQYXJ0KTtcbiAgICBjb25zdCBkeSA9ICh0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hBc2NlbnQgKyB0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hEZXNjZW50KSAvIDI7XG4gICAgZnVuY3Rpb24gZHJhdyhkeDEsIGR4Mikge1xuICAgICAgICBnLmZpbGxTdHlsZSA9IGNvbG9yO1xuICAgICAgICBnLmdsb2JhbEFscGhhID0gdHJhbnNwYXJlbmN5UmF0ZTtcbiAgICAgICAgZy5maWxsVGV4dChjb2xvclBhcnQsIHggKyBkeDEsIHkgKyBkeSk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gJyM4MDgwODAnO1xuICAgICAgICBnLmZpbGxUZXh0KGdyYXlQYXJ0LCB4ICsgZHgyLCB5ICsgZHkpO1xuICAgIH1cbiAgICBpZiAobGVmdCB8fCB0ZXh0U2l6ZS53aWR0aCA+IHcpIHtcbiAgICAgICAgZHJhdyhpbmRlbnQsIGluZGVudCArIGNvbG9yVGV4dFNpemUud2lkdGgpO1xuICAgICAgICByZXR1cm4geCArIGNvbG9yVGV4dFNpemUud2lkdGggKyBnLm1lYXN1cmVUZXh0KGdyYXlQYXJ0KS53aWR0aDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGR4ID0gKHcgLSB0ZXh0U2l6ZS53aWR0aCkgLyAyO1xuICAgICAgICBkcmF3KGR4LCBkeCArIGNvbG9yVGV4dFNpemUud2lkdGgpO1xuICAgICAgICByZXR1cm4geCArIGR4ICsgY29sb3JUZXh0U2l6ZS53aWR0aDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyIGV4dGVuZHMgREcuR3JpZENlbGxSZW5kZXJlciB7XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiAnbWFjcm9tb2xlY3VsZVNlcXVlbmNlJzsgfVxuICAgIGdldCBjZWxsVHlwZSgpIHsgcmV0dXJuIEMuU0VNX1RZUEVTLk1hY3JvX01vbGVjdWxlOyB9XG4gICAgZ2V0IGRlZmF1bHRIZWlnaHQoKSB7IHJldHVybiAzMDsgfVxuICAgIGdldCBkZWZhdWx0V2lkdGgoKSB7IHJldHVybiAyMzA7IH1cbiAgICAvKipcbiAgICAgKiBDZWxsIHJlbmRlcmVyIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3IHdpZHRoIG9mIHRoZSBjZWxsLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoIGhlaWdodCBvZiB0aGUgY2VsbC5cbiAgICAgKiBAcGFyYW0ge0RHLkdyaWRDZWxsfSBncmlkQ2VsbCBHcmlkIGNlbGwuXG4gICAgICogQHBhcmFtIHtERy5HcmlkQ2VsbFN0eWxlfSBjZWxsU3R5bGUgQ2VsbCBzdHlsZS5cbiAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlQ2VsbFJlbmRlcmVyXG4gICAgICovXG4gICAgcmVuZGVyKGcsIHgsIHksIHcsIGgsIGdyaWRDZWxsLCBjZWxsU3R5bGUpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgZ3JpZCA9IGdyaWRDZWxsLmdyaWRSb3cgIT09IC0xID8gZ3JpZENlbGwuZ3JpZCA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgY2VsbCA9IGdyaWRDZWxsLmNlbGw7XG4gICAgICAgIGNvbnN0IHRhZyA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgaWYgKHRhZyA9PT0gJ0hFTE0nKSB7XG4gICAgICAgICAgICBjb25zdCBob3N0ID0gdWkuZGl2KFtdLCB7IHN0eWxlOiB7IHdpZHRoOiBgJHt3fXB4YCwgaGVpZ2h0OiBgJHtofXB4YCB9IH0pO1xuICAgICAgICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGFmb3JtYXQnLCAnaGVsbScpO1xuICAgICAgICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGEnLCBncmlkQ2VsbC5jZWxsLnZhbHVlKTtcbiAgICAgICAgICAgIGdyaWRDZWxsLmVsZW1lbnQgPSBob3N0O1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSBuZXcgSlNEcmF3Mi5FZGl0b3IoaG9zdCwgeyB3aWR0aDogdywgaGVpZ2h0OiBoLCBza2luOiAndzgnLCB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm11bGEgPSBjYW52YXMuZ2V0Rm9ybXVsYSh0cnVlKTtcbiAgICAgICAgICAgIGlmICghZm9ybXVsYSkge1xuICAgICAgICAgICAgICAgIGdyaWRDZWxsLmVsZW1lbnQgPSB1aS5kaXZUZXh0KGdyaWRDZWxsLmNlbGwudmFsdWUsIHsgc3R5bGU6IHsgY29sb3I6ICdyZWQnIH0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBncmlkQ2VsbC5lbGVtZW50ID0gaG9zdDtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2xXZWlnaHQgPSBNYXRoLnJvdW5kKGNhbnZhcy5nZXRNb2xXZWlnaHQoKSAqIDEwMCkgLyAxMDA7XG4gICAgICAgICAgICAgICAgY29uc3QgY29lZiA9IE1hdGgucm91bmQoY2FudmFzLmdldEV4dGluY3Rpb25Db2VmZmljaWVudCh0cnVlKSAqIDEwMCkgLyAxMDA7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9sZmlsZSA9IGNhbnZhcy5nZXRNb2xmaWxlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZm9ybXVsYSArICcsICcgKyBtb2xXZWlnaHQgKyAnLCAnICsgY29lZiArICcsICcgKyBtb2xmaWxlO1xuICAgICAgICAgICAgICAgIGxydS5zZXQoZ3JpZENlbGwuY2VsbC52YWx1ZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IFt0eXBlLCBzdWJ0eXBlLCBwYWxldHRlVHlwZV0gPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoREcuVEFHUy5VTklUUykuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIHcgPSBncmlkID8gTWF0aC5taW4oZ3JpZC5jYW52YXMud2lkdGggLSB4LCB3KSA6IGcuY2FudmFzLndpZHRoIC0geDtcbiAgICAgICAgICAgIGcuc2F2ZSgpO1xuICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIGcucmVjdCh4LCB5LCB3LCBoKTtcbiAgICAgICAgICAgIGcuY2xpcCgpO1xuICAgICAgICAgICAgZy5mb250ID0gJzEycHggbW9ub3NwYWNlJztcbiAgICAgICAgICAgIGcudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCBzID0gKF9hID0gY2VsbC52YWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAvL1RPRE86IGNhbiB0aGlzIGJlIHJlcGxhY2VkL21lcmdlZCB3aXRoIHNwbGl0U2VxdWVuY2U/XG4gICAgICAgICAgICBjb25zdCB1bml0cyA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgICAgIGNvbnN0IHBhbGV0dGUgPSBnZXRQYWxsZXRlQnlUeXBlKHBhbGV0dGVUeXBlKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IChfYiA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZygnc2VwYXJhdG9yJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnO1xuICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZXJGdW5jID0gV2ViTG9nby5nZXRTcGxpdHRlcih1bml0cywgZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKCdzZXBhcmF0b3InKSk7XG4gICAgICAgICAgICBjb25zdCBzdWJQYXJ0cyA9IHNwbGl0dGVyRnVuYyhjZWxsLnZhbHVlKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHN1YlBhcnRzKTtcbiAgICAgICAgICAgIGxldCB4MSA9IHg7XG4gICAgICAgICAgICBsZXQgY29sb3IgPSB1bmRlZmluZWRDb2xvcjtcbiAgICAgICAgICAgIHN1YlBhcnRzLmZvckVhY2goKGFtaW5vLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbG9yID0gcGFsZXR0ZS5nZXQoYW1pbm8pO1xuICAgICAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gdW5kZWZpbmVkQ29sb3I7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHN1YlBhcnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHgxID0gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4MSwgeSwgdywgaCwgZywgYW1pbm8sIGNvbG9yLCAwLCB0cnVlLCAxLjAsIHNlcGFyYXRvciwgbGFzdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGcucmVzdG9yZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiZXhwb3J0IHZhciBDT0xVTU5TX05BTUVTO1xuKGZ1bmN0aW9uIChDT0xVTU5TX05BTUVTKSB7XG4gICAgQ09MVU1OU19OQU1FU1tcIlNQTElUX0NPTFwiXSA9IFwifnNwbGl0XCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFDVElWSVRZXCJdID0gXCJ+YWN0aXZpdHlcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQUNUSVZJVFlfU0NBTEVEXCJdID0gXCJhY3Rpdml0eV9zY2FsZWRcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQUxJR05FRF9TRVFVRU5DRVwiXSA9IFwifmFsaWduZWRfc2VxdWVuY2VcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQU1JTk9fQUNJRF9SRVNJRFVFXCJdID0gXCJBQVJcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiUE9TSVRJT05cIl0gPSBcIlBvc1wiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJQX1ZBTFVFXCJdID0gXCJwVmFsdWVcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiTUVBTl9ESUZGRVJFTkNFXCJdID0gXCJNZWFuIGRpZmZlcmVuY2VcIjtcbn0pKENPTFVNTlNfTkFNRVMgfHwgKENPTFVNTlNfTkFNRVMgPSB7fSkpO1xuZXhwb3J0IHZhciBDQVRFR09SSUVTO1xuKGZ1bmN0aW9uIChDQVRFR09SSUVTKSB7XG4gICAgQ0FURUdPUklFU1tcIk9USEVSXCJdID0gXCJPdGhlclwiO1xuICAgIENBVEVHT1JJRVNbXCJBTExcIl0gPSBcIkFsbFwiO1xufSkoQ0FURUdPUklFUyB8fCAoQ0FURUdPUklFUyA9IHt9KSk7XG5leHBvcnQgdmFyIFRBR1M7XG4oZnVuY3Rpb24gKFRBR1MpIHtcbiAgICBUQUdTW1wiQUFSXCJdID0gXCJBQVJcIjtcbiAgICBUQUdTW1wiUE9TSVRJT05cIl0gPSBcIlBvc1wiO1xuICAgIFRBR1NbXCJTRVBBUkFUT1JcIl0gPSBcIm1vbm9tZXItc2VwYXJhdG9yXCI7XG4gICAgVEFHU1tcIlNFTEVDVElPTlwiXSA9IFwic2VsZWN0aW9uXCI7XG59KShUQUdTIHx8IChUQUdTID0ge30pKTtcbmV4cG9ydCB2YXIgU0VNX1RZUEVTO1xuKGZ1bmN0aW9uIChTRU1fVFlQRVMpIHtcbiAgICBTRU1fVFlQRVNbXCJBTUlOT19BQ0lEU1wiXSA9IFwiYW1pbm9BY2lkc1wiO1xuICAgIFNFTV9UWVBFU1tcIkFMSUdORURfU0VRVUVOQ0VcIl0gPSBcImFsaWduZWRTZXF1ZW5jZVwiO1xuICAgIFNFTV9UWVBFU1tcIkFMSUdORURfU0VRVUVOQ0VfRElGRkVSRU5DRVwiXSA9IFwiYWxpZ25lZFNlcXVlbmNlRGlmZmVyZW5jZVwiO1xuICAgIFNFTV9UWVBFU1tcIkFDVElWSVRZXCJdID0gXCJhY3Rpdml0eVwiO1xuICAgIFNFTV9UWVBFU1tcIkFDVElWSVRZX1NDQUxFRFwiXSA9IFwiYWN0aXZpdHlTY2FsZWRcIjtcbiAgICBTRU1fVFlQRVNbXCJNYWNyb19Nb2xlY3VsZVwiXSA9IFwiTWFjcm9tb2xlY3VsZVwiO1xufSkoU0VNX1RZUEVTIHx8IChTRU1fVFlQRVMgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IFNUQVRTID0gJ3N0YXRzJztcbmV4cG9ydCBjb25zdCBFTUJFRERJTkdfU1RBVFVTID0gJ2VtYmVkZGluZ1N0YXR1cyc7XG5leHBvcnQgY29uc3QgUEVQVElERVNfQU5BTFlTSVMgPSAnaXNQZXB0aWRlc0FuYWx5c2lzJztcbmV4cG9ydCB2YXIgRkxBR1M7XG4oZnVuY3Rpb24gKEZMQUdTKSB7XG4gICAgRkxBR1NbXCJDRUxMX0NIQU5HSU5HXCJdID0gXCJpc0NlbGxDaGFuZ2luZ1wiO1xufSkoRkxBR1MgfHwgKEZMQUdTID0ge30pKTtcbmV4cG9ydCBjb25zdCBhYXJHcm91cHMgPSB7XG4gICAgJ1InOiAnUEMnLCAnSCc6ICdQQycsICdLJzogJ1BDJyxcbiAgICAnRCc6ICdOQycsICdFJzogJ05DJyxcbiAgICAnUyc6ICdVJywgJ1QnOiAnVScsICdOJzogJ1UnLCAnUSc6ICdVJyxcbiAgICAnQyc6ICdTQycsICdVJzogJ1NDJywgJ0cnOiAnU0MnLCAnUCc6ICdTQycsXG4gICAgJ0EnOiAnSCcsICdWJzogJ0gnLCAnSSc6ICdIJywgJ0wnOiAnSCcsICdNJzogJ0gnLCAnRic6ICdIJywgJ1knOiAnSCcsICdXJzogJ0gnLFxuICAgICctJzogJy0nLFxufTtcbmV4cG9ydCBjb25zdCBncm91cERlc2NyaXB0aW9uID0ge1xuICAgICdQQyc6IHsgJ2Rlc2NyaXB0aW9uJzogJ1Bvc2l0aXZlIEFtaW5vIEFjaWRzLCB3aXRoIEVsZWN0cmljYWxseSBDaGFyZ2VkIFNpZGUgQ2hhaW5zJywgJ2FtaW5vQWNpZHMnOiBbJ1InLCAnSCcsICdLJ10gfSxcbiAgICAnTkMnOiB7ICdkZXNjcmlwdGlvbic6ICdOZWdhdGl2ZSBBbWlubyBBY2lkcywgd2l0aCBFbGVjdHJpY2FsbHkgQ2hhcmdlZCBTaWRlIENoYWlucycsICdhbWlub0FjaWRzJzogWydEJywgJ0UnXSB9LFxuICAgICdVJzogeyAnZGVzY3JpcHRpb24nOiAnQW1pbm8gQWNpZHMgd2l0aCBQb2xhciBVbmNoYXJnZWQgU2lkZSBDaGFpbnMnLCAnYW1pbm9BY2lkcyc6IFsnUycsICdUJywgJ04nLCAnUSddIH0sXG4gICAgJ1NDJzogeyAnZGVzY3JpcHRpb24nOiAnU3BlY2lhbCBDYXNlcycsICdhbWlub0FjaWRzJzogWydDJywgJ1UnLCAnRycsICdQJ10gfSxcbiAgICAnSCc6IHtcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FtaW5vIEFjaWRzIHdpdGggSHlkcm9waG9iaWMgU2lkZSBDaGFpbicsXG4gICAgICAgICdhbWlub0FjaWRzJzogWydBJywgJ1YnLCAnSScsICdMJywgJ00nLCAnRicsICdZJywgJ1cnXSxcbiAgICB9LFxuICAgICctJzogeyAnZGVzY3JpcHRpb24nOiAnVW5rbm93biBBbWlubyBBY2lkJywgJ2FtaW5vQWNpZHMnOiBbJy0nXSB9LFxufTtcbiIsImltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBOb3RhdGlvbkNvbnZlcnRlciB9IGZyb20gJy4vbm90YXRpb24tY29udmVydGVyJztcbi8qKlxuICogQ29udmVydHMgbm90YXRpb25zIG9mIGEgTWFjcm9tb2xlY3VsZSBjb2x1bW5cbiAqXG4gKiBAcGFyYW0ge0RHLmNvbHVtbn0gY29sIENvbHVtbiB3aXRoICdNYWNyb21vbGVjdWxlJyBzZW1hbnRpYyB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0KGNvbCkge1xuICAgIGNvbnN0IGNvbnZlcnRlciA9IG5ldyBOb3RhdGlvbkNvbnZlcnRlcihjb2wpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBjb252ZXJ0ZXIuc291cmNlTm90YXRpb247XG4gICAgLy9UT0RPOiByZWFkIGFsbCBub3RhdGlvbnNcbiAgICBjb25zdCBub3RhdGlvbnMgPSBbXG4gICAgICAgIFwiRkFTVEFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLyxcbiAgICAgICAgXCJTRVBBUkFUT1JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8sXG4gICAgICAgIFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi9cbiAgICBdO1xuICAgIGNvbnN0IHNlcGFyYXRvckFycmF5ID0gWyctJywgJy4nLCAnLyddO1xuICAgIGNvbnN0IGZpbHRlcmVkTm90YXRpb25zID0gbm90YXRpb25zLmZpbHRlcigoZSkgPT4gZSAhPT0gY3VycmVudCk7XG4gICAgY29uc3QgdGFyZ2V0Tm90YXRpb25JbnB1dCA9IHVpLmNob2ljZUlucHV0KCdDb252ZXJ0IHRvJywgZmlsdGVyZWROb3RhdGlvbnNbMF0sIGZpbHRlcmVkTm90YXRpb25zKTtcbiAgICBjb25zdCBzZXBhcmF0b3JJbnB1dCA9IHVpLmNob2ljZUlucHV0KCdDaG9vc2Ugc2VwYXJhdG9yJywgc2VwYXJhdG9yQXJyYXlbMF0sIHNlcGFyYXRvckFycmF5KTtcbiAgICB1aS5kaWFsb2coJ0NvbnZlcnQgc2VxdWVuY2Ugbm90YXRpb24nKVxuICAgICAgICAuYWRkKHVpLmRpdihbXG4gICAgICAgIHVpLmgxKCdDdXJyZW50IG5vdGF0aW9uOiAnICsgY3VycmVudCksXG4gICAgICAgIHRhcmdldE5vdGF0aW9uSW5wdXQucm9vdCxcbiAgICAgICAgLy8gVE9ETzogY29uZGl0aW9uYWwgc2VwYXJhdG9yIGlucHV0XG4gICAgICAgIHNlcGFyYXRvcklucHV0LnJvb3RcbiAgICBdKSlcbiAgICAgICAgLm9uT0soKCkgPT4ge1xuICAgICAgICAvL1RPRE86IGNyZWF0ZSBuZXcgY29udmVydGVkIGNvbHVtblxuICAgICAgICBjb25zdCB0YXJnZXROb3RhdGlvbiA9IHRhcmdldE5vdGF0aW9uSW5wdXQudmFsdWU7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHNlcGFyYXRvcklucHV0LnZhbHVlO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBjb252ZXJ0ZXIuY29udmVydCh0YXJnZXROb3RhdGlvbiwgc2VwYXJhdG9yKTtcbiAgICAgICAgY29sLmRhdGFGcmFtZS5jb2x1bW5zLmFkZChuZXdDb2x1bW4pO1xuICAgIH0pXG4gICAgICAgIC5zaG93KCk7XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG4vL0B0cy1pZ25vcmVcbmltcG9ydCBBaW9saSBmcm9tICdAYmlvd2FzbS9haW9saSc7XG5pbXBvcnQgeyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcXVlbmNlLWVuY29kZXInO1xuLyoqXG4gKiBDb252ZXJ0cyBhcnJheSBvZiBzZXF1ZW5jZXMgaW50byBzaW1wbGUgZmFzdGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nW119IHNlcXVlbmNlcyBJbnB1dCBsaXN0IG9mIHNlcXVlbmNlcy5cbiAqIEByZXR1cm4ge3N0cmluZ30gRmFzdGEtZm9ybWF0dGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcykge1xuICAgIHJldHVybiBzZXF1ZW5jZXMucmVkdWNlKChhLCB2LCBpKSA9PiBhICsgYD5zYW1wbGUke2kgKyAxfVxcbiR7dn1cXG5gLCAnJyk7XG59XG4vKipcbiAqIEV4dHJhY3RzIGFycmF5IG9mIHNlcXVlbmNlcyBmcm9tIHNpbXBsZSBmYXN0YSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZhc3RhIEZhc3RhLWZvcm1hdHRlZCBzdHJpbmcuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gT3V0cHV0IGxpc3Qgb2Ygc2VxdWVuY2VzLlxuICovXG5mdW5jdGlvbiBfZmFzdGFUb1N0cmluZ3MoZmFzdGEpIHtcbiAgICByZXR1cm4gZmFzdGEucmVwbGFjZSgvPnNhbXBsZVxcZCsoXFxyXFxufFxccnxcXG4pL2csICcnKS5zcGxpdCgnXFxuJyk7XG59XG4vKipcbiAqIFJ1bnMgQWlvbGkgZW52aXJvbm1lbnQgd2l0aCBrYWxpZ24gdG9vbC5cbiAqXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc3JjQ29sIENvbHVtbiB3aXRoIHNlcXVlbmNlcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNBbGlnbmVkIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBhbGlnbmVkLlxuICogQHJldHVybiB7UHJvbWlzZTxERy5Db2x1bW4+fSBBbGlnbmVkIHNlcXVlbmNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkthbGlnbihzcmNDb2wsIGlzQWxpZ25lZCA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHNlcXVlbmNlcyA9IHNyY0NvbC50b0xpc3QoKTtcbiAgICAgICAgaWYgKGlzQWxpZ25lZClcbiAgICAgICAgICAgIHNlcXVlbmNlcyA9IHNlcXVlbmNlcy5tYXAoKHYsIF8pID0+IEFsaWduZWRTZXF1ZW5jZUVuY29kZXIuY2xlYW4odikucmVwbGFjZSgvXFwtL2csICcnKSk7XG4gICAgICAgIGNvbnN0IGZhc3RhID0gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcyk7XG4gICAgICAgIGNvbnN0IENMSSA9IHlpZWxkIG5ldyBBaW9saSh7XG4gICAgICAgICAgICB0b29sOiAna2FsaWduJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczLjMuMScsXG4gICAgICAgICAgICByZWluaXQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZyhbJ2Zhc3RhLmxlbmd0aCA9JywgZmFzdGEubGVuZ3RoXSk7XG4gICAgICAgIHlpZWxkIENMSS5mcy53cml0ZUZpbGUoJ2lucHV0LmZhJywgZmFzdGEpO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSB5aWVsZCBDTEkuZXhlYygna2FsaWduIGlucHV0LmZhIC1mIGZhc3RhIC1vIHJlc3VsdC5mYXN0YScpO1xuICAgICAgICBjb25zb2xlLndhcm4ob3V0cHV0KTtcbiAgICAgICAgY29uc3QgYnVmID0geWllbGQgQ0xJLmNhdCgncmVzdWx0LmZhc3RhJyk7XG4gICAgICAgIGlmICghYnVmKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBrYWxpZ24gb3V0cHV0IG5vIHJlc3VsdGApO1xuICAgICAgICBjb25zdCBhbGlnbmVkID0gX2Zhc3RhVG9TdHJpbmdzKGJ1Zikuc2xpY2UoMCwgc2VxdWVuY2VzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHRndENvbCA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncyhgbXNhKCR7c3JjQ29sLm5hbWV9KWAsIGFsaWduZWQpO1xuICAgICAgICAvLyB1bml0c1xuICAgICAgICBjb25zdCBzcmNVbml0cyA9IHNyY0NvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIGNvbnN0IHRndFVuaXRzID0gc3JjVW5pdHMuc3BsaXQoJzonKS5tYXAoKHAsIGkpID0+IGkgPT0gMSA/IHAgKyAnLk1TQScgOiBwKS5qb2luKCc6Jyk7XG4gICAgICAgIHRndENvbC5zZXRUYWcoREcuVEFHUy5VTklUUywgdGd0VW5pdHMpO1xuICAgICAgICB0Z3RDb2wuc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICAgICAgcmV0dXJuIHRndENvbDtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0TVNBRW5vdWdoTWVtb3J5KGNvbCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlc0NvdW50ID0gY29sLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVsdGEgPSBzZXF1ZW5jZXNDb3VudCAvIDEwMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRlbHRhOyBpIDwgc2VxdWVuY2VzQ291bnQ7IGkgKz0gZGVsdGEpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgcnVuS2FsaWduKERHLkNvbHVtbi5mcm9tU3RyaW5ncyhjb2wubmFtZSwgY29sLnRvTGlzdCgpLnNsaWNlKDAsIE1hdGgucm91bmQoaSkpKSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJ1bkthbGlnbiBzdWNjZWVkZWQgb24gJHtpfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJ1bkthbGlnbiBmYWlsZWQgb24gJHtpfSB3aXRoICcke2Vycm9yfSdgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuIiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nbyc7XG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIGNvbnZlcnNpb24gb2Ygbm90YXRpb24gc3lzdGVtcyBpbiBNYWNyb21vbGVjdWxlIGNvbHVtbnMgKi9cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciB7XG4gICAgY29uc3RydWN0b3IoY29sKSB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRHYXBTeW1ib2xzRGljdCA9IHtcbiAgICAgICAgICAgIGhlbG06ICcqJyxcbiAgICAgICAgICAgIHNlcGFyYXRvcjogJycsXG4gICAgICAgICAgICBmYXN0YTogJy0nLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9zb3VyY2VDb2x1bW4gPSBjb2w7XG4gICAgICAgIGNvbnN0IHVuaXRzID0gdGhpcy5fc291cmNlQ29sdW1uLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIGlmICh1bml0cyAhPT0gbnVsbClcbiAgICAgICAgICAgIHRoaXMuX3NvdXJjZVVuaXRzID0gdW5pdHM7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5pdHMgYXJlIG5vdCBzcGVjaWZpZWQgaW4gY29sdW1uJyk7XG4gICAgICAgIHRoaXMuX3NvdXJjZU5vdGF0aW9uID0gdGhpcy5nZXRTb3VyY2VOb3RhdGlvbigpO1xuICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sID0gKHRoaXMuaXNGYXN0YSgpKSA/IHRoaXMuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5mYXN0YSA6XG4gICAgICAgICAgICAodGhpcy5pc0hlbG0oKSkgPyB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuaGVsbSA6XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LnNlcGFyYXRvcjtcbiAgICB9XG4gICAgZ2V0IHNvdXJjZVVuaXRzKCkgeyByZXR1cm4gdGhpcy5fc291cmNlVW5pdHM7IH1cbiAgICBnZXQgc291cmNlQ29sdW1uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlQ29sdW1uOyB9XG4gICAgZ2V0IHNvdXJjZU5vdGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlTm90YXRpb247IH1cbiAgICBnZXQgZGVmYXVsdEdhcFN5bWJvbCgpIHsgcmV0dXJuIHRoaXMuX2RlZmF1bHRHYXBTeW1ib2w7IH1cbiAgICBnZXQgc2VwYXJhdG9yKCkge1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXRUYWcoJ3NlcGFyYXRvcicpO1xuICAgICAgICBpZiAoc2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHNlcGFyYXRvcjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXBhcmF0b3Igbm90IHNldCcpO1xuICAgIH1cbiAgICBpc0Zhc3RhKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgaXNTZXBhcmF0b3IoKSB7IHJldHVybiB0aGlzLnNvdXJjZU5vdGF0aW9uID09PSBcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIGlzSGVsbSgpIHsgcmV0dXJuIHRoaXMuc291cmNlTm90YXRpb24gPT09IFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIHRvSGVsbSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICBpc1JuYSgpIHsgcmV0dXJuIHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgncm5hJyk7IH1cbiAgICBpc0RuYSgpIHsgcmV0dXJuIHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnZG5hJyk7IH1cbiAgICBpc1BlcHRpZGUoKSB7IHJldHVybiB0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ3B0Jyk7IH1cbiAgICAvKiogQXNzb2NpYXRlIG5vdGF0aW9uIHR5cGVzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdW5pdHMgKi9cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOT1RBVElPTn0gICAgIE5vdGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5pdHMgdHlwZVxuICAgICAqL1xuICAgIGdldFNvdXJjZU5vdGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2Zhc3RhJykpXG4gICAgICAgICAgICByZXR1cm4gXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnc2VwYXJhdG9yJykpXG4gICAgICAgICAgICByZXR1cm4gXCJTRVBBUkFUT1JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdoZWxtJykpXG4gICAgICAgICAgICByZXR1cm4gXCJIRUxNXCIgLyogTk9UQVRJT04uSEVMTSAqLztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgY29sdW1uIGhhcyB1bml0cyB0aGF0IGRvIG5vdCBjb3JyZXNwb25kIHRvIGFueSBub3RhdGlvbicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgZW1wdHkgY29sdW1uIG9mIHRoZSBzcGVjaWZpZWQgbm90YXRpb24gdHlwZSBhbmQgdGhlIHNhbWVcbiAgICAgKiBsZW5ndGggYXMgc291cmNlQ29sdW1uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05PVEFUSU9OfSB0YXJnZXROb3RhdGlvblxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn1cbiAgICAgKi9cbiAgICBnZXROZXdDb2x1bW4odGFyZ2V0Tm90YXRpb24pIHtcbiAgICAgICAgY29uc3QgY29sID0gdGhpcy5zb3VyY2VDb2x1bW47XG4gICAgICAgIGNvbnN0IGxlbiA9IGNvbC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0YXJnZXROb3RhdGlvbiArICcoJyArIGNvbC5uYW1lICsgJyknO1xuICAgICAgICBjb25zdCBuZXdDb2xOYW1lID0gY29sLmRhdGFGcmFtZS5jb2x1bW5zLmdldFVudXNlZE5hbWUobmFtZSk7XG4gICAgICAgIC8vIGR1bW15IGNvZGVcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCBuZXdDb2xOYW1lLCBuZXcgQXJyYXkobGVuKS5maWxsKCcnKSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZW1UeXBlID0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFO1xuICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuVU5JVFMsIHRoaXMuc291cmNlVW5pdHMucmVwbGFjZSh0aGlzLnNvdXJjZU5vdGF0aW9uLnRvTG93ZXJDYXNlKCkudG9TdHJpbmcoKSwgdGFyZ2V0Tm90YXRpb24udG9Mb3dlckNhc2UoKS50b1N0cmluZygpKSk7XG4gICAgICAgIC8vIFRPRE86IHNwZWNpZnkgY2VsbCByZW5kZXJlcnMgZm9yIGFsbCBjYXNlc1xuICAgICAgICBpZiAodGhpcy50b0Zhc3RhKHRhcmdldE5vdGF0aW9uKSkge1xuICAgICAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLkNFTExfUkVOREVSRVIsIFxuICAgICAgICAgICAgLy8gVE9ETzogcmVwbGFjZSBieSB0aGUgZW51bWVyYXRpb24gdmFsdWVcbiAgICAgICAgICAgICdNYWNyb21vbGVjdWxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIE1hY3JvbW9sZWN1bGUgY29sdW1uIGZyb20gRkFTVEEgdG8gU0VQQVJBVE9SIG5vdGF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yICBBIHNwZWNpZmljIHNlcGFyYXRvciB0byBiZSB1c2VkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGdhcFN5bWJvbCAgR2FwIHN5bWJvbCBpbiBGQVNUQSwgJy0nIGJ5IGRlZmF1bHRcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICAgICAgICBBIG5ldyBjb2x1bW4gaW4gU0VQQVJBVE9SIG5vdGF0aW9uXG4gICAgICovXG4gICAgY29udmVydEZhc3RhVG9TZXBhcmF0b3Ioc2VwYXJhdG9yLCBnYXBTeW1ib2wgPSAnLScpIHtcbiAgICAgICAgLy8gYSBmdW5jdGlvbiBzcGxpdHRpbmcgRkFTVEEgc2VxdWVuY2UgaW50byBhbiBhcnJheSBvZiBtb25vbWVyczpcbiAgICAgICAgY29uc3Qgc3BsaXR0ZXJBc0Zhc3RhID0gV2ViTG9nby5zcGxpdHRlckFzRmFzdGE7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKFwiU0VQQVJBVE9SXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKTtcbiAgICAgICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhUG9seW1lciA9IHRoaXMuc291cmNlQ29sdW1uLmdldChpZHgpO1xuICAgICAgICAgICAgY29uc3QgZmFzdGFNb25vbWVyc0FycmF5ID0gc3BsaXR0ZXJBc0Zhc3RhKGZhc3RhUG9seW1lcik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZhc3RhTW9ub21lcnNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPT09IGdhcFN5bWJvbClcbiAgICAgICAgICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5W2ldID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnZlcnRUb0hlbG0oc291cmNlR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICAvLyBBIGZ1bmN0aW9uIHNwbGl0dGluZyBhIHNlcXVlbmNlIGludG8gYW4gYXJyYXkgb2YgbW9ub21lcnMgYWNjb3JkaW5nIHRvXG4gICAgICAgIC8vIGl0cyBub3RhdGlvblxuICAgICAgICBjb25zdCBzcGxpdHRlciA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXJGb3JDb2x1bW4odGhpcy5zb3VyY2VDb2x1bW4pO1xuICAgICAgICBjb25zdCBwcmVmaXggPSAodGhpcy5pc0RuYSgpKSA/ICdETkExeycgOlxuICAgICAgICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUk5BMXsnIDpcbiAgICAgICAgICAgICAgICAodGhpcy5pc1BlcHRpZGUoKSkgPyAnUEVQVElERTF7JyA6XG4gICAgICAgICAgICAgICAgICAgICdVbmtub3duJzsgLy8gdGhpcyBjYXNlIHNob3VsZCBiZSBoYW5kbGVkIGFzIGV4Y2VwdGlvbmFsXG4gICAgICAgIGlmIChwcmVmaXggPT09ICdVbmtub3duJylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTmVpdGhlciBwZXB0aWRlLCBub3IgbnVjbGVvdGlkZScpO1xuICAgICAgICBjb25zdCBwb3N0Zml4ID0gJ30kJCQnO1xuICAgICAgICBjb25zdCBsZWZ0V3JhcHBlciA9ICh0aGlzLmlzRG5hKCkpID8gJ0QoJyA6XG4gICAgICAgICAgICAodGhpcy5pc1JuYSgpKSA/ICdSKCcgOiAnJzsgLy8gbm8gd3JhcHBlciBmb3IgcGVwdGlkZXNcbiAgICAgICAgY29uc3QgcmlnaHRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSB8fCB0aGlzLmlzUm5hKCkpID8gJylQJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcIkhFTE1cIiAvKiBOT1RBVElPTi5IRUxNICovKTtcbiAgICAgICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VQb2x5bWVyID0gdGhpcy5zb3VyY2VDb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VNb25vbWVyc0FycmF5ID0gc3BsaXR0ZXIoc291cmNlUG9seW1lcik7XG4gICAgICAgICAgICBjb25zdCBoZWxtQXJyYXkgPSBbcHJlZml4XTtcbiAgICAgICAgICAgIGxldCBmaXJzdEl0ZXJhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZU1vbm9tZXJzQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb3QgPSBmaXJzdEl0ZXJhdGlvbiA/ICcnIDogJy4nO1xuICAgICAgICAgICAgICAgIGxldCB0b2tlbiA9IHNvdXJjZU1vbm9tZXJzQXJyYXlbaV07XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSBzb3VyY2VHYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LmhlbG07XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IFtkb3QsIGxlZnRXcmFwcGVyLCB0b2tlbiwgcmlnaHRXcmFwcGVyXTtcbiAgICAgICAgICAgICAgICBoZWxtQXJyYXkucHVzaChpdGVtLmpvaW4oJycpKTtcbiAgICAgICAgICAgICAgICBmaXJzdEl0ZXJhdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGVsbUFycmF5LnB1c2gocG9zdGZpeCk7XG4gICAgICAgICAgICByZXR1cm4gaGVsbUFycmF5LmpvaW4oJycpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgaGFuZGxlU2VwYXJhdG9ySXRlbUZvckZhc3RhKGlkeCwgc2VwYXJhdG9ySXRlbXNBcnJheSwgc2VwYXJhdG9yLCBnYXBTeW1ib2wsIGZhc3RhTW9ub21lcnNBcnJheSkge1xuICAgICAgICBjb25zdCBpdGVtID0gc2VwYXJhdG9ySXRlbXNBcnJheVtpZHhdO1xuICAgICAgICBpZiAoaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAvLyB0aGUgY2FzZSBvZiBhIG11bHRpLWNoYXJhY3RlciBtb25vbWVyXG4gICAgICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtID09PSBzZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGlmIChpZHggIT09IDAgJiYgc2VwYXJhdG9ySXRlbXNBcnJheVtpZHggLSAxXSA9PT0gc2VwYXJhdG9yKVxuICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGdhcFN5bWJvbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29udmVydFNlcGFyYXRvclRvRmFzdGEoc2VwYXJhdG9yID0gbnVsbCwgZ2FwU3ltYm9sID0gJy0nKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9uXG4gICAgICAgIC8vICogc2ltaWxhcmx5IHRvIGZhc3RhMnNlcGFyYXRvciwgZGl2aWRlIHN0cmluZyBpbnRvIG1vbm9tZXJzXG4gICAgICAgIC8vICogYWRqYWNlbnQgc2VwYXJhdG9ycyBpcyBhIGdhcCAoc3ltYm9sIHRvIGJlIHNwZWNpZmllZClcbiAgICAgICAgLy8gKiB0aGUgbW9ub21lcnMgTVVTVCBiZSBzaW5nbGUtY2hhcmFjdGVyIG9ubGVzLCBvdGhlcndpc2UgZm9yYmlkXG4gICAgICAgIC8vICogTk8sIHRoZXkgY2FuIGJlIG11bHRpLWNoYXJhY3RlcnNcbiAgICAgICAgLy8gY29udmVyc2lvblxuICAgICAgICAvLyAqIGNvbnNpZGVyIGF1dG9tYXRpYyBkZXRlcm1pbmluZyB0aGUgc2VwYXJhdG9yXG4gICAgICAgIGlmIChzZXBhcmF0b3IgPT09IG51bGwpXG4gICAgICAgICAgICBzZXBhcmF0b3IgPSB0aGlzLnNlcGFyYXRvcjtcbiAgICAgICAgLy8gYSBmdW5jdGlvbiBzcGxpdHRpbmcgRkFTVEEgc2VxdWVuY2UgaW50byBhbiBhcnJheSBvZiBtb25vbWVyc1xuICAgICAgICAvL2NvbnN0IHNwbGl0dGVyQXNTZXBhcmF0b3IgPSBXZWJMb2dvLmdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBzcGxpdHRlciA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXJGb3JDb2x1bW4odGhpcy5zb3VyY2VDb2x1bW4pO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcIkZBU1RBXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvclBvbHltZXIgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBzZXBhcmF0b3JzXG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJdGVtc0FycmF5ID0gc3BsaXR0ZXIoc2VwYXJhdG9yUG9seW1lcik7XG4gICAgICAgICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VwYXJhdG9ySXRlbXNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBzZXBhcmF0b3JJdGVtc0FycmF5W2ldO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChnYXBTeW1ib2wpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2gobW9ub21lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oJycpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgY29udmVydEhlbG1Ub0Zhc3RhKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvblxuICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKTtcbiAgICB9XG4gICAgY29udmVydEhlbG1Ub1NlcGFyYXRvcigpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb3JldHVybiB0aGlzLmdldE5ld0NvbHVtbigpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oXCJTRVBBUkFUT1JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8pO1xuICAgIH1cbiAgICAvKiogRGlzcGF0Y2hlciBtZXRob2QgZm9yIG5vdGF0aW9uIGNvbnZlcnNpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tk9UQVRJT059IHRhcmdldE5vdGF0aW9uICAgTm90YXRpb24gd2Ugd2FudCB0byBjb252ZXJ0IHRvXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RTZXBhcmF0b3IgICBQb3NzaWJsZSBzZXBhcmF0b3JcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICAgICAgICAgICAgICAgIENvbnZlcnRlZCBjb2x1bW5cbiAgICAgKi9cbiAgICBjb252ZXJ0KHRhcmdldE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IgPSBudWxsKSB7XG4gICAgICAgIC8vIHBvc3NpYmxlIGV4Y2VwdGlvbnNcbiAgICAgICAgaWYgKHRoaXMuc291cmNlTm90YXRpb24gPT09IHRhcmdldE5vdGF0aW9uKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYXJnZXQgbm90YXRpb24gaXMgaW52YWxpZCcpO1xuICAgICAgICBpZiAodGhpcy50b1NlcGFyYXRvcih0YXJnZXROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yID09PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYXJnZXQgc2VwYXJhdG9yIGlzIG5vdCBzcGVjaWZpZWQnKTtcbiAgICAgICAgaWYgKHRoaXMuaXNGYXN0YSgpICYmIHRoaXMudG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciAhPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHRndFNlcGFyYXRvcik7XG4gICAgICAgIGVsc2UgaWYgKCh0aGlzLmlzRmFzdGEoKSB8fCB0aGlzLmlzU2VwYXJhdG9yKCkpICYmIHRoaXMudG9IZWxtKHRhcmdldE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG0oKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9GYXN0YSh0YXJnZXROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9GYXN0YSh0Z3RTZXBhcmF0b3IpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzSGVsbSgpICYmIHRoaXMudG9GYXN0YSh0YXJnZXROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbVRvRmFzdGEoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG1Ub1NlcGFyYXRvcigpO1xuICAgIH1cbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7IEF2YWlsYWJsZU1ldHJpY3MgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzJztcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZUdldFNpbWlsYXJpdGllcyhjb2wsIHNlcSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0FycmF5ID0gY29sLnRvTGlzdCgpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBuZXcgQXJyYXkoc3RyaW5nQXJyYXkubGVuZ3RoKS5maWxsKDAuMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5nQXJyYXkubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICBkaXN0YW5jZXNbaV0gPSBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKEF2YWlsYWJsZU1ldHJpY3NbJ1N0cmluZyddWydMZXZlbnNodGVpbiddKHN0cmluZ0FycmF5W2ldLCBzZXEpKTtcbiAgICAgICAgcmV0dXJuIERHLkNvbHVtbi5mcm9tTGlzdChERy5DT0xVTU5fVFlQRS5GTE9BVCwgJ2Rpc3RhbmNlcycsIGRpc3RhbmNlcyk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZHJhd1Rvb2x0aXAocGFyYW1zKSB7XG4gICAgcGFyYW1zLnRvb2x0aXBzW3BhcmFtcy5saW5lLmlkXSA9IHVpLmRpdkgoW10pO1xuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gdWkuZGl2VihbXG4gICAgICAgIHVpLmRpdlRleHQoJ3NlcXVlbnNlJyksXG4gICAgICAgIHVpLmRpdlRleHQocGFyYW1zLmFjdGl2aXR5Lm5hbWUpLFxuICAgIF0pO1xuICAgIGNvbHVtbk5hbWVzLnN0eWxlLmZvbnRXZWlnaHQgPSAnYm9sZCc7XG4gICAgY29sdW1uTmFtZXMuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICBjb2x1bW5OYW1lcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdzcGFjZS1iZXR3ZWVuJztcbiAgICBwYXJhbXMudG9vbHRpcHNbcGFyYW1zLmxpbmUuaWRdLmFwcGVuZChjb2x1bW5OYW1lcyk7XG4gICAgcGFyYW1zLmxpbmUubW9scy5mb3JFYWNoKChtb2wpID0+IHtcbiAgICAgICAgY29uc3Qgc2VxID0gdWkuZGl2VGV4dChwYXJhbXMuZGYuZ2V0KHBhcmFtcy5zZXFDb2wubmFtZSwgbW9sKSk7XG4gICAgICAgIGNvbnN0IGFjdGl2aXR5ID0gdWkuZGl2VGV4dChwYXJhbXMuZGYuZ2V0KHBhcmFtcy5hY3Rpdml0eS5uYW1lLCBtb2wpLnRvRml4ZWQoMikpO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdsZWZ0JztcbiAgICAgICAgYWN0aXZpdHkuc3R5bGUucGFkZGluZ0xlZnQgPSAnMzBweCc7XG4gICAgICAgIHBhcmFtcy50b29sdGlwc1twYXJhbXMubGluZS5pZF0uYXBwZW5kKHVpLmRpdlYoW1xuICAgICAgICAgICAgc2VxLFxuICAgICAgICAgICAgYWN0aXZpdHksXG4gICAgICAgIF0sIHsgc3R5bGU6IHsgcGFkZGluZ0xlZnQ6ICc1cHgnIH0gfSkpO1xuICAgIH0pO1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgQXZhaWxhYmxlTWV0cmljcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MnO1xuaW1wb3J0IHsgcmVkdWNlRGltZW5zaW5hbGl0eVdpdGhOb3JtYWxpemF0aW9uIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc2VxdWVuY2Utc3BhY2UnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlU3BhY2Uoc3BhY2VQYXJhbXMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgcHJlcGFyZWREYXRhO1xuICAgICAgICBpZiAoIShzcGFjZVBhcmFtcy5zZXFDb2wudGFnc1tERy5UQUdTLlVOSVRTXSA9PT0gJ0hFTE0nKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VwID0gc3BhY2VQYXJhbXMuc2VxQ29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgICAgICAgICBjb25zdCBzZXBGaW5hbCA9IHNlcCA/IHNlcCA9PT0gJy4nID8gJ1xcXFxcXC4nIDogc2VwIDogJy0nO1xuICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHNlcEZpbmFsLCAnZycpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbJ1N0cmluZyddKS5pbmNsdWRlcyhzcGFjZVBhcmFtcy5zaW1pbGFyaXR5TWV0cmljKSlcbiAgICAgICAgICAgICAgICBwcmVwYXJlZERhdGEgPSBzcGFjZVBhcmFtcy5zZXFDb2wudG9MaXN0KCkubWFwKCh2KSA9PiB2LnJlcGxhY2UocmVnZXgsICcnKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpLm1hcCgodikgPT4gdi5yZXBsYWNlKHJlZ2V4LCAnJykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlU3BhY2VSZXN1bHQgPSB5aWVsZCByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24ocHJlcGFyZWREYXRhLCBzcGFjZVBhcmFtcy5tZXRob2ROYW1lLCBzcGFjZVBhcmFtcy5zaW1pbGFyaXR5TWV0cmljLCBzcGFjZVBhcmFtcy5vcHRpb25zKTtcbiAgICAgICAgY29uc3QgY29scyA9IHNwYWNlUGFyYW1zLmVtYmVkQXhlc05hbWVzLm1hcCgobmFtZSwgaW5kZXgpID0+IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KG5hbWUsIHNlcXVlbmNlU3BhY2VSZXN1bHQuZW1iZWRkaW5nW2luZGV4XSkpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogc2VxdWVuY2VTcGFjZVJlc3VsdC5kaXN0YW5jZSwgY29vcmRpbmF0ZXM6IG5ldyBERy5Db2x1bW5MaXN0KGNvbHMpIH07XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKGRmKSB7XG4gICAgY29uc3QgYXhlcyA9IFsnRW1iZWRfWCcsICdFbWJlZF9ZJ107XG4gICAgY29uc3QgY29sTmFtZUluZCA9IGRmLmNvbHVtbnMubmFtZXMoKS5maWx0ZXIoKGl0KSA9PiBpdC5pbmNsdWRlcyhheGVzWzBdKSkubGVuZ3RoICsgMTtcbiAgICByZXR1cm4gYXhlcy5tYXAoKGl0KSA9PiBgJHtpdH1fJHtjb2xOYW1lSW5kfWApO1xufVxuIiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nbyc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfTElCX0ZJTEVOQU1FID0gJy9zYW1wbGVzL0hFTE1Db3JlTGlicmFyeS5qc29uJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfTElCX01PTk9NRVJfU1lNQk9MID0gJ3N5bWJvbCc7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0xJQl9NT0xGSUxFID0gJ21vbGZpbGUnO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9GSUVMRFMgPSBbJ3N5bWJvbCcsICdtb2xmaWxlJywgJ3Jncm91cHMnLCAnbmFtZSddO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzRnJvbVNlcShjb2wsIG1vbm9tZXJzTGliT2JqZWN0KSB7XG4gICAgY29uc3QgdW5pdHMgPSBjb2wudGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgICBjb25zdCBzZXAgPSBjb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICBjb25zdCBzcGxpdHRlckZ1bmMgPSBXZWJMb2dvLmdldFNwbGl0dGVyKHVuaXRzLCBzZXApO1xuICAgIGNvbnN0IG1vbm9tZXJzRGljdCA9IGNyZWF0ZU1vbW9tZXJzTW9sRGljdChtb25vbWVyc0xpYk9iamVjdCk7XG4gICAgY29uc3QgbW9sRmlsZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbC5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhjb2wuZ2V0KGkpKTtcbiAgICAgICAgY29uc3QgbW9sRmlsZXNGb3JTZXEgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtb25vbWVycy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXJzW2pdKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb2suc2hlbGwud2FybmluZyhgTW9ub21lciAke21vbm9tZXJzW2pdfSBpcyBtaXNzaW5nIGluIEhFTE0gbGlicmFyeS4gU3RydWN0dXJlIGNhbm5vdCBiZSBjcmVhdGVkYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtb2xGaWxlc0ZvclNlcS5wdXNoKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobW9ub21lcnNEaWN0W21vbm9tZXJzW2pdXSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtb2xGaWxlcy5wdXNoKG1vbEZpbGVzRm9yU2VxKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vbEZpbGVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vbW9tZXJzTW9sRGljdChsaWIpIHtcbiAgICBjb25zdCBkaWN0ID0ge307XG4gICAgbGliLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgIGlmIChpdFsncG9seW1lclR5cGUnXSA9PT0gJ1BFUFRJREUnKSB7XG4gICAgICAgICAgICBjb25zdCBtb25vbWVyT2JqZWN0ID0ge307XG4gICAgICAgICAgICBIRUxNX0NPUkVfRklFTERTLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgbW9ub21lck9iamVjdFtmaWVsZF0gPSBpdFtmaWVsZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpY3RbaXRbSEVMTV9DT1JFX0xJQl9NT05PTUVSX1NZTUJPTF1dID0gbW9ub21lck9iamVjdDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkaWN0O1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFZkUmVnaW9uVHlwZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92ZC1yZWdpb25zJztcbmNvbnN0IHZydCA9IFZkUmVnaW9uVHlwZTtcbi8vIFBvc2l0aW9ucyBvZiByZWdpb25zIGZvciBudW1iZXJpbmcgc2NoZW1lc1xuLy8gaHR0cDovL3d3dy5iaW9pbmYub3JnLnVrL2Ficy9pbmZvLmh0bWxcbi8vIGNvbnN0IGltZ3RSZWdpb25zOiBWZFJlZ2lvbltdID0gW1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIxJywgJ0xpZ2h0JywgMSwgJzEnLCAnMjYnKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMScsICdIZWF2eScsIDEsICcxJywgJzI2JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjEnLCAnTGlnaHQnLCAyLCAnMjcnLCAnMzgnKSwgLy8gMjctMzJcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIxJywgJ0hlYXZ5JywgMiwgJzI3JywgJzM4JyksIC8vIDI3LTMyXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIyJywgJ0xpZ2h0JywgMywgJzM5JywgJzU1JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjInLCAnSGVhdnknLCAzLCAnMzknLCAnNTUnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuQ0RSLCAnQ0RSMicsICdMaWdodCcsIDQsICc1NicsICc2NScpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjInLCAnSGVhdnknLCA0LCAnNTYnLCAnNjUnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjMnLCAnTGlnaHQnLCA1LCAnNjYnLCAnMTA0JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjMnLCAnSGVhdnknLCA1LCAnNjYnLCAnMTA0JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjMnLCAnTGlnaHQnLCA2LCAnMTA1JywgJzExNycpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjMnLCAnSGVhdnknLCA2LCAnMTA1JywgJzExNycpLFxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSNCcsICdMaWdodCcsIDcsICcxMTgnLCBudWxsLyoxMjcqLyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjQnLCAnSGVhdnknLCA3LCAnMTE4JywgbnVsbC8qMTI4Ki8pLFxuLy8gXTtcbi8qKiBWaWV3ZXIgd2l0aCB0YWJzIGJhc2VkIG9uIGRlc2NyaXB0aW9uIG9mIGNoYWluIHJlZ2lvbnMuXG4gKiAgVXNlZCB0byBkZWZpbmUgcmVnaW9ucyBvZiBhbiBpbW11bm9nbG9idWxpbiBMQy5cbiAqL1xuZXhwb3J0IGNsYXNzIFZkUmVnaW9uc1ZpZXdlciBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLy8gcHJpdmF0ZSByZWdpb25zRGY6IERHLkRhdGFGcmFtZTtcbiAgICAgICAgdGhpcy5yZWdpb25zRmcgPSBudWxsO1xuICAgICAgICAvLyBwcml2YXRlIHJlZ2lvbnNUVjogREcuVGFibGVWaWV3O1xuICAgICAgICB0aGlzLnJlZ2lvbnNSb290ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc09wZW5lZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhbmVsTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMucmVnaW9ucyA9IFtdO1xuICAgICAgICAvLyAjcmVnaW9uIC0tIEhhbmRsZSBjb250cm9scycgZXZlbnRzIC0tXG4gICAgICAgIHRoaXMucmVzaXppbmcgPSBmYWxzZTtcbiAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAvLyNyZWdpb24gLS0gVmlldyAtLVxuICAgICAgICB0aGlzLmhvc3QgPSBudWxsO1xuICAgICAgICB0aGlzLm1haW5MYXlvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLmxvZ29zID0gW107XG4gICAgICAgIC8vIFRvIHByZXZlbnQgYW1iaWd1b3VzIG51bWJlcmluZyBzY2hlbWUgaW4gTUxCXG4gICAgICAgIHRoaXMucmVnaW9uVHlwZXMgPSB0aGlzLnN0cmluZ0xpc3QoJ3JlZ2lvblR5cGVzJywgW3ZydC5DRFJdLCB7IGNob2ljZXM6IE9iamVjdC52YWx1ZXModnJ0KS5maWx0ZXIoKHQpID0+IHQgIT0gdnJ0LlVua25vd24pIH0pO1xuICAgICAgICB0aGlzLmNoYWlucyA9IHRoaXMuc3RyaW5nTGlzdCgnY2hhaW5zJywgWydIZWF2eScsICdMaWdodCddLCB7IGNob2ljZXM6IFsnSGVhdnknLCAnTGlnaHQnXSB9KTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4ID0gdGhpcy5zdHJpbmcoJ3NlcXVlbmNlQ29sdW1uTmFtZVBvc3RmaXgnLCAnY2hhaW4gc2VxdWVuY2UnKTtcbiAgICB9XG4gICAgZ2V0IGRmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhRnJhbWU7XG4gICAgfVxuICAgIC8vIFRPRE86IC5vblRhYmxlQXR0YWNoZWQgaXMgbm90IGNhbGxpbmcgb24gZGF0YUZyYW1lIHNldCwgb25Qcm9wZXJ0eUNoYW5nZWQgIGFsc28gbm90IGNhbGxpbmdcbiAgICBzZXREZih2YWx1ZSwgcmVnaW9ucykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnVmRSZWdpb25zVmlld2VyLnNldERmKCknKTtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICAgICAgICAgIHRoaXMucmVnaW9ucyA9IHJlZ2lvbnM7XG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5idWlsZFZpZXcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAvLyNyZWdpb24gcmVnaW9uc0RGIHdpdGggZmlsdGVyXG4gICAgICAgICAgICAvLyB0aGlzLnJlZ2lvbnNEZiA9IERHLkRhdGFGcmFtZS5mcm9tT2JqZWN0cyh0aGlzLnJlZ2lvbnMpO1xuICAgICAgICAgICAgLy8gdGhpcy5yZWdpb25zRGYucm93cy5maWx0ZXIoKHJvdykgPT4gcm93Lm5hbWUgPT0gJ0NEUjEnKTtcbiAgICAgICAgICAgIC8vIC8vIFRvIGF2YWlsYWJsZSBvcHRpb25zIC9cbiAgICAgICAgICAgIC8vIHRoaXMucmVnaW9uc0ZnID0gKGF3YWl0IHRoaXMucmVnaW9uc0RmLnBsb3QuZnJvbVR5cGUoREcuVklFV0VSLkZJTFRFUlMsIHtcbiAgICAgICAgICAgIC8vICAgLy8gY29sdW1uTmFtZXM6IFsnbmFtZScsXSxcbiAgICAgICAgICAgIC8vICAgc2hvd0ZpbHRlckNvdW50c0luZGljYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgLy8gICBzaG93SGVhZGVyOiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgc2hvd1NlYXJjaEJveDogZmFsc2UsXG4gICAgICAgICAgICAvLyAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgIC8vICAgICB7dHlwZTogREcuRklMVEVSX1RZUEUuQ0FURUdPUklDQUwsIGNvbHVtbjogJ3R5cGUnLCBsYWJlbDogJ1JlZ2lvbiBuYW1lJywgc2hvd0hpc3RvZ3JhbTogZmFsc2V9LFxuICAgICAgICAgICAgLy8gICAgIHt0eXBlOiBERy5GSUxURVJfVFlQRS5DQVRFR09SSUNBTCwgY29sdW1uOiAnbmFtZScsIGxhYmVsOiAnUmVnaW9uIHR5cGUnLCBzaG93SGlzdG9ncmFtOiBmYWxzZX0sXG4gICAgICAgICAgICAvLyAgIF0sXG4gICAgICAgICAgICAvLyAgIHRpdGxlOiAnUmVnaW9ucyBmaWx0ZXInLFxuICAgICAgICAgICAgLy8gICBzaG93VGl0bGU6IHRydWUsXG4gICAgICAgICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGZvciByZWdpb25zIG9mIG11bHRpcGxlIGFsaWdubWVudCBieSBJTUdUIG5vbWVuY2xhdHVyZScsXG4gICAgICAgICAgICAvLyAgIHNvbWVQcm9wZXJ0eTogJ0hlbGxvJyxcbiAgICAgICAgICAgIC8vIH0pKSBhcyBERy5GaWx0ZXJHcm91cDtcbiAgICAgICAgICAgIC8vI2VuZHJlZ2lvbiByZWdpb25zREYgd2l0aCBmaWx0ZXJcbiAgICAgICAgICAgIC8vIHRoaXMubWxiVmlldy5kb2NrTWFuYWdlci5kb2NrKHRoaXMucmVnaW9uc0ZnLnJvb3QsIERHLkRPQ0tfVFlQRS5MRUZULCByb290Tm9kZSwgJ0ZpbHRlciByZWdpb25zJywgMC4yKTtcbiAgICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKHVpLm9uU2l6ZUNoYW5nZWQodGhpcy5yb290KS5zdWJzY3JpYmUodGhpcy5yb290T25TaXplQ2hhbmdlZC5iaW5kKHRoaXMpKSk7XG4gICAgICAgICAgICAvLyByeGpzLmZyb21FdmVudCh0aGlzLnJvb3QsICdtb3VzZW1vdmUnKS5zdWJzY3JpYmUodGhpcy5vbk1vdXNlTW92ZVJvb3QuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB0aGlzLnJvb3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZVJvb3QuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmJ1aWxkVmlldygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25UYWJsZUF0dGFjaGVkKCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5pbml0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSkge1xuICAgICAgICBjb25zdCBfc3VwZXIgPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgICAgICAgICAgIG9uUHJvcGVydHlDaGFuZ2VkOiB7IGdldDogKCkgPT4gc3VwZXIub25Qcm9wZXJ0eUNoYW5nZWQgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIF9zdXBlci5vblByb3BlcnR5Q2hhbmdlZC5jYWxsKHRoaXMsIHByb3BlcnR5KTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHkubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdyZWdpb25UeXBlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2hhaW5zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlc2V0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb3BlbihtbGJWaWV3KSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsTm9kZSA9IG1sYlZpZXcuZG9ja01hbmFnZXIuZG9jayh0aGlzLnJvb3QsIERHLkRPQ0tfVFlQRS5UT1AsIG51bGwsICdSZWdpb25zJywgMC4yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNob3cobWxiVmlldykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcm9vdE9uU2l6ZUNoYW5nZWQoYXJncykge1xuICAgICAgICB0aGlzLmNhbGNTaXplKCk7XG4gICAgfVxuICAgIGRlc3Ryb3lWaWV3KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgLy8gVE9ETzogVW5zdWJzY3JpYmUgZnJvbSBhbmQgcmVtb3ZlIGFsbCB2aWV3IGVsZW1lbnRzXG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBWZFJlZ2lvbnNWaWV3ZXIuZGVzdHJveVZpZXcoIG1haW5MYXlvdXQgPSAkeyF0aGlzLm1haW5MYXlvdXQgPyAnbm9uZScgOiAndmFsdWUnfSApYCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tYWluTGF5b3V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnJvb3QucmVtb3ZlQ2hpbGQodGhpcy5ob3N0KTtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5MYXlvdXQucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5tYWluTGF5b3V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGJ1aWxkVmlldygpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1ZkUmVnaW9uc1ZpZXdlci5idWlsZFZpZXcoKSBzdGFydCcpO1xuICAgICAgICAgICAgY29uc3QgY29sTmFtZXMgPSBPYmplY3QuYXNzaWduKHt9LCAuLi50aGlzLmNoYWlucy5tYXAoKGNoYWluKSA9PiAoeyBbY2hhaW5dOiBgJHtjaGFpbn0gJHt0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZVBvc3RmaXh9YCB9KSkpO1xuICAgICAgICAgICAgY29uc3QgcmVnaW9uc0ZpbHRlcmVkID0gdGhpcy5yZWdpb25zLmZpbHRlcigocikgPT4gdGhpcy5yZWdpb25UeXBlcy5pbmNsdWRlcyhyLnR5cGUpKTtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyTGlzdCA9IEFycmF5LmZyb20obmV3IFNldChyZWdpb25zRmlsdGVyZWQubWFwKChyKSA9PiByLm9yZGVyKSkpLnNvcnQoKTtcbiAgICAgICAgICAgIHRoaXMubG9nb3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IG9yZGVySSA9IDA7IG9yZGVySSA8IG9yZGVyTGlzdC5sZW5ndGg7IG9yZGVySSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnaW9uQ2hhaW5zID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGFpbiBvZiB0aGlzLmNoYWlucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdpb24gPSByZWdpb25zRmlsdGVyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKChyKSA9PiByLm9yZGVyID09IG9yZGVyTGlzdFtvcmRlckldICYmIHIuY2hhaW4gPT0gY2hhaW4pO1xuICAgICAgICAgICAgICAgICAgICByZWdpb25DaGFpbnNbY2hhaW5dID0gKHlpZWxkIHRoaXMuZGF0YUZyYW1lLnBsb3QuZnJvbVR5cGUoJ1dlYkxvZ28nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZUNvbHVtbk5hbWU6IGNvbE5hbWVzW2NoYWluXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25OYW1lOiByZWdpb24ucG9zaXRpb25TdGFydE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRQb3NpdGlvbk5hbWU6IHJlZ2lvbi5wb3NpdGlvbkVuZE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXhXaWR0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXZWJMb2dvIGNyZWF0aW9uIGZpcmVzIG9uUm9vdFNpemVDaGFuZ2VkIGV2ZW50IGV2ZW4gYmVmb3JlIGNvbnRyb2wgYmVpbmcgYWRkZWQgdG8gdGhpcy5sb2dvc1xuICAgICAgICAgICAgICAgIHRoaXMubG9nb3Nbb3JkZXJJXSA9IHJlZ2lvbkNoYWlucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHVpLnRhYmxlRnJvbU1hcCgpXG4gICAgICAgICAgICAvLyBERy5IdG1sVGFibGUuY3JlYXRlKClcbiAgICAgICAgICAgIHRoaXMubWFpbkxheW91dCA9IHVpLnRhYmxlKHRoaXMuY2hhaW5zLCAoY2hhaW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBjaGFpbiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAuLi4ob3JkZXJMaXN0Lmxlbmd0aCA+IDAgPyBbdWkuZGl2KGNoYWluLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAncm90YXRlKC05MGRlZyknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnMTJweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiAnNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KV0gOiBbXSksXG4gICAgICAgICAgICAgICAgICAgIC8vIExpc3Qgd2l0aCBjb250cm9scyBmb3IgcmVnaW9uc1xuICAgICAgICAgICAgICAgICAgICAuLi5bLi4uQXJyYXkob3JkZXJMaXN0Lmxlbmd0aCkua2V5cygpXS5tYXAoKG9yZGVySSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2wgPSB0aGlzLmxvZ29zW29yZGVySV1bY2hhaW5dO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2wucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNEaXYgPSB1aS5kaXYoW3dsLnJvb3RdIC8qYCR7Y2hhaW59ICR7cmVnaW9uc0ZpbHRlcmVkW3JJXX1gKi8sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNEaXY7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgICAgICAgICB9LCBbJycsIC4uLlsuLi5BcnJheShvcmRlckxpc3QubGVuZ3RoKS5rZXlzKCldLm1hcCgob3JkZXJJKSA9PiByZWdpb25zRmlsdGVyZWQuZmluZCgocikgPT4gci5vcmRlciA9PSBvcmRlckxpc3Rbb3JkZXJJXSAmJiByLmNoYWluID09IHRoaXMuY2hhaW5zWzBdKS5uYW1lIHx8ICdOYW1lJyldKTtcbiAgICAgICAgICAgIHRoaXMubWFpbkxheW91dC5jbGFzc05hbWUgPSAnbWxiLXZkLXJlZ2lvbnMtdmlld2VyLXRhYmxlMic7XG4gICAgICAgICAgICAvLyB0aGlzLm1haW5MYXlvdXQuc3R5bGUuYmFja2dyb3VuZCA9ICcjRUVFRUZGJztcbiAgICAgICAgICAgIC8vIHRoaXMubWFpbkxheW91dC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICAvLyB0aGlzLm1haW5MYXlvdXQuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBibGFjayc7XG4gICAgICAgICAgICBjb25zdCBjb2xvciA9IGAjZmZiYiR7TWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAyNTUpLnRvU3RyaW5nKDE2KX1gO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdWkuYm94KHRoaXMubWFpbkxheW91dCwgeyAvKnN0eWxlOiB7YmFja2dyb3VuZENvbG9yOiBjb2xvcn0qL30pO1xuICAgICAgICAgICAgdGhpcy5yb290LmFwcGVuZENoaWxkKHRoaXMuaG9zdCk7XG4gICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUub3ZlcmZsb3dYID0gJ2F1dG8nO1xuICAgICAgICAgICAgdGhpcy5jYWxjU2l6ZSgpO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnVmRSZWdpb25zVmlld2VyLmJ1aWxkVmlldygpIGVuZCcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2FsY1NpemUoKSB7XG4gICAgICAgIGNvbnN0IGxvZ29IZWlnaHQgPSAodGhpcy5yb290LmNsaWVudEhlaWdodCAtIDU0KSAvIHRoaXMuY2hhaW5zLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5taW4obG9nb0hlaWdodCwgTWF0aC5tYXgoLi4udGhpcy5sb2dvcy5tYXAoKHdsRGljdCkgPT4gTWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyh3bERpY3QpLm1hcCgod2wpID0+IHdsLm1heEhlaWdodCkpKSkpO1xuICAgICAgICBmb3IgKGxldCBvcmRlckkgPSAwOyBvcmRlckkgPCB0aGlzLmxvZ29zLmxlbmd0aDsgb3JkZXJJKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNoYWluSSA9IDA7IGNoYWluSSA8IHRoaXMuY2hhaW5zLmxlbmd0aDsgY2hhaW5JKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFpbiA9IHRoaXMuY2hhaW5zW2NoYWluSV07XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dvc1tvcmRlckldW2NoYWluXS5yb290LnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8jZW5kcmVnaW9uIC0tIFZpZXcgLS1cbiAgICBvbk1vdXNlTW92ZVJvb3QoZSkge1xuICAgICAgICAvLyB1aS50b29sdGlwLnNob3coJ3RleHQnLCBlLnggKyA4LCBlLnkgKyA4LCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBvbk1vdXNlTW92ZVJvb3QuKCB4OiAke2UueH0sIHk6ICR7ZS55fSApYCk7XG4gICAgfVxufVxuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wid3VcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wid3VcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuXG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF90b0NvbnN1bWFibGVBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfc2xpY2VkVG9BcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1N5bWJvbCRpdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX2dldEl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfcmVnZW5lcmF0b3JSdW50aW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfT2JqZWN0JGtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgwKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9TZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg0KVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9Qcm9taXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NSlbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciB3dSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gd3UoaXRlcmFibGUpIHtcblx0ICBpZiAoIWlzSXRlcmFibGUoaXRlcmFibGUpKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoXCJ3dTogYFwiICsgaXRlcmFibGUgKyBcImAgaXMgbm90IGl0ZXJhYmxlIVwiKTtcblx0ICB9XG5cdCAgcmV0dXJuIG5ldyBXdShpdGVyYWJsZSk7XG5cdH07XG5cblx0ZnVuY3Rpb24gV3UoaXRlcmFibGUpIHtcblx0ICB2YXIgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihpdGVyYWJsZSk7XG5cdCAgdGhpcy5uZXh0ID0gaXRlcmF0b3IubmV4dC5iaW5kKGl0ZXJhdG9yKTtcblx0fVxuXHR3dS5wcm90b3R5cGUgPSBXdS5wcm90b3R5cGU7XG5cblx0d3UucHJvdG90eXBlW19TeW1ib2wkaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuXHQgIHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdC8qXG5cdCAqIEludGVybmFsIHV0aWxpdGllc1xuXHQgKi9cblxuXHQvLyBBbiBpbnRlcm5hbCBwbGFjZWhvbGRlciB2YWx1ZS5cblx0dmFyIE1JU1NJTkcgPSB7fTtcblxuXHQvLyBSZXR1cm4gd2hldGhlciBhIHRoaW5nIGlzIGl0ZXJhYmxlLlxuXHR2YXIgaXNJdGVyYWJsZSA9IGZ1bmN0aW9uIGlzSXRlcmFibGUodGhpbmcpIHtcblx0ICByZXR1cm4gdGhpbmcgJiYgdHlwZW9mIHRoaW5nW19TeW1ib2wkaXRlcmF0b3JdID09PSBcImZ1bmN0aW9uXCI7XG5cdH07XG5cblx0Ly8gR2V0IHRoZSBpdGVyYXRvciBmb3IgdGhlIHRoaW5nIG9yIHRocm93IGFuIGVycm9yLlxuXHR2YXIgZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbiBnZXRJdGVyYXRvcih0aGluZykge1xuXHQgIGlmIChpc0l0ZXJhYmxlKHRoaW5nKSkge1xuXHQgICAgcmV0dXJuIF9nZXRJdGVyYXRvcih0aGluZyk7XG5cdCAgfVxuXHQgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJOb3QgaXRlcmFibGU6IFwiICsgdGhpbmcpO1xuXHR9O1xuXG5cdC8vIERlZmluZSBhIHN0YXRpYyBtZXRob2Qgb24gYHd1YCBhbmQgc2V0IGl0cyBwcm90b3R5cGUgdG8gdGhlIHNoYXJlZFxuXHQvLyBgV3UucHJvdG90eXBlYC5cblx0dmFyIHN0YXRpY01ldGhvZCA9IGZ1bmN0aW9uIHN0YXRpY01ldGhvZChuYW1lLCBmbikge1xuXHQgIGZuLnByb3RvdHlwZSA9IFd1LnByb3RvdHlwZTtcblx0ICB3dVtuYW1lXSA9IGZuO1xuXHR9O1xuXG5cdC8vIERlZmluZSBhIGZ1bmN0aW9uIHRoYXQgaXMgYXR0YWNoZWQgYXMgYm90aCBhIGBXdS5wcm90b3R5cGVgIG1ldGhvZCBhbmQgYVxuXHQvLyBjdXJyeWFibGUgc3RhdGljIG1ldGhvZCBvbiBgd3VgIGRpcmVjdGx5IHRoYXQgdGFrZXMgYW4gaXRlcmFibGUgYXMgaXRzIGxhc3Rcblx0Ly8gcGFyYW1ldGVyLlxuXHR2YXIgcHJvdG90eXBlQW5kU3RhdGljID0gZnVuY3Rpb24gcHJvdG90eXBlQW5kU3RhdGljKG5hbWUsIGZuKSB7XG5cdCAgdmFyIGV4cGVjdGVkQXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IGZuLmxlbmd0aCA6IGFyZ3VtZW50c1syXTtcblx0ICByZXR1cm4gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZuLnByb3RvdHlwZSA9IFd1LnByb3RvdHlwZTtcblx0ICAgIFd1LnByb3RvdHlwZVtuYW1lXSA9IGZuO1xuXG5cdCAgICAvLyArMSBmb3IgdGhlIGl0ZXJhYmxlLCB3aGljaCBpcyB0aGUgYHRoaXNgIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBzbyBpdFxuXHQgICAgLy8gaXNuJ3QgcmVmbGVjdGVkIGJ5IHRoZSBsZW5ndGggcHJvcGVydHkuXG5cdCAgICBleHBlY3RlZEFyZ3MgKz0gMTtcblxuXHQgICAgd3VbbmFtZV0gPSB3dS5jdXJyeWFibGUoZnVuY3Rpb24gKCkge1xuXHQgICAgICB2YXIgX3d1O1xuXG5cdCAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHZhciBpdGVyYWJsZSA9IGFyZ3MucG9wKCk7XG5cdCAgICAgIHJldHVybiAoX3d1ID0gd3UoaXRlcmFibGUpKVtuYW1lXS5hcHBseShfd3UsIGFyZ3MpO1xuXHQgICAgfSwgZXhwZWN0ZWRBcmdzKTtcblx0ICB9KSgpO1xuXHR9O1xuXG5cdC8vIEEgZGVjb3JhdG9yIGZvciByZXdyYXBwaW5nIGEgbWV0aG9kJ3MgcmV0dXJuZWQgaXRlcmFibGUgaW4gd3UgdG8gbWFpbnRhaW5cblx0Ly8gY2hhaW5hYmlsaXR5LlxuXHR2YXIgcmV3cmFwID0gZnVuY3Rpb24gcmV3cmFwKGZuKSB7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0ICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG5cdCAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIHd1KGZuLmNhbGwuYXBwbHkoZm4sIFt0aGlzXS5jb25jYXQoYXJncykpKTtcblx0ICB9O1xuXHR9O1xuXG5cdHZhciByZXdyYXBTdGF0aWNNZXRob2QgPSBmdW5jdGlvbiByZXdyYXBTdGF0aWNNZXRob2QobmFtZSwgZm4pIHtcblx0ICByZXR1cm4gc3RhdGljTWV0aG9kKG5hbWUsIHJld3JhcChmbikpO1xuXHR9O1xuXHR2YXIgcmV3cmFwUHJvdG90eXBlQW5kU3RhdGljID0gZnVuY3Rpb24gcmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKG5hbWUsIGZuLCBleHBlY3RlZEFyZ3MpIHtcblx0ICByZXR1cm4gcHJvdG90eXBlQW5kU3RhdGljKG5hbWUsIHJld3JhcChmbiksIGV4cGVjdGVkQXJncyk7XG5cdH07XG5cblx0Ly8gUmV0dXJuIGEgd3JhcHBlZCB2ZXJzaW9uIG9mIGBmbmAgYm91bmQgd2l0aCB0aGUgaW5pdGlhbCBhcmd1bWVudHNcblx0Ly8gYC4uLmFyZ3NgLlxuXHRmdW5jdGlvbiBjdXJyeShmbiwgYXJncykge1xuXHQgIHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdCAgICBmb3IgKHZhciBfbGVuMyA9IGFyZ3VtZW50cy5sZW5ndGgsIG1vcmVBcmdzID0gQXJyYXkoX2xlbjMpLCBfa2V5MyA9IDA7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHtcblx0ICAgICAgbW9yZUFyZ3NbX2tleTNdID0gYXJndW1lbnRzW19rZXkzXTtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIGZuLmNhbGwuYXBwbHkoZm4sIFt0aGlzXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGFyZ3MpLCBtb3JlQXJncykpO1xuXHQgIH07XG5cdH1cblxuXHQvKlxuXHQgKiBQdWJsaWMgdXRpbGl0aWVzXG5cdCAqL1xuXG5cdHN0YXRpY01ldGhvZChcImN1cnJ5YWJsZVwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgZXhwZWN0ZWQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBmbi5sZW5ndGggOiBhcmd1bWVudHNbMV07XG5cdCAgcmV0dXJuIChmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gZigpIHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjQgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjQpLCBfa2V5NCA9IDA7IF9rZXk0IDwgX2xlbjQ7IF9rZXk0KyspIHtcblx0ICAgICAgICBhcmdzW19rZXk0XSA9IGFyZ3VtZW50c1tfa2V5NF07XG5cdCAgICAgIH1cblxuXHQgICAgICByZXR1cm4gYXJncy5sZW5ndGggPj0gZXhwZWN0ZWQgPyBmbi5hcHBseSh0aGlzLCBhcmdzKSA6IGN1cnJ5KGYsIGFyZ3MpO1xuXHQgICAgfTtcblx0ICB9KSgpO1xuXHR9KTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJlbnRyaWVzXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG9iaikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uLCBfZGlkSXRlcmF0b3JFcnJvciwgX2l0ZXJhdG9yRXJyb3IsIF9pdGVyYXRvciwgX3N0ZXAsIGs7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IgPSBfZ2V0SXRlcmF0b3IoX09iamVjdCRrZXlzKG9iaikpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGsgPSBfc3RlcC52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICByZXR1cm4gW2ssIG9ialtrXV07XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gJiYgX2l0ZXJhdG9yW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3JbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwia2V5c1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChvYmopIHtcblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX09iamVjdCRrZXlzKG9iaiksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInZhbHVlc1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChvYmopIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIsIF9kaWRJdGVyYXRvckVycm9yMiwgX2l0ZXJhdG9yRXJyb3IyLCBfaXRlcmF0b3IyLCBfc3RlcDIsIGs7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMiA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IyID0gX2dldEl0ZXJhdG9yKF9PYmplY3Qka2V5cyhvYmopKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gKF9zdGVwMiA9IF9pdGVyYXRvcjIubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBrID0gX3N0ZXAyLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiBvYmpba107XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yICYmIF9pdGVyYXRvcjJbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjJbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE4KTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE0LCAxOCwgMjZdLCBbMTksLCAyMSwgMjVdXSk7XG5cdH0pKTtcblxuXHQvKlxuXHQgKiBJbmZpbml0ZSBpdGVyYXRvcnNcblx0ICovXG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiY3ljbGVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHNhdmVkLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMywgX2RpZEl0ZXJhdG9yRXJyb3IzLCBfaXRlcmF0b3JFcnJvcjMsIF9pdGVyYXRvcjMsIF9zdGVwMywgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBzYXZlZCA9IFtdO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjMgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjMgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ7XG5cdCAgICAgICAgX2l0ZXJhdG9yMyA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gKF9zdGVwMyA9IF9pdGVyYXRvcjMubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAzLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIHNhdmVkLnB1c2goeCk7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTY7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDQpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMyA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IzID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyAmJiBfaXRlcmF0b3IzW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IzW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjMpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMztcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjMpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMCk7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICBpZiAoIXNhdmVkKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChzYXZlZCwgXCJ0MVwiLCAzMCk7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s0LCAxNiwgMjAsIDI4XSwgWzIxLCwgMjMsIDI3XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiY291bnRcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHN0YXJ0ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gMCA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgc3RlcCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IDEgOiBhcmd1bWVudHNbMV07XG5cdCAgdmFyIG47XG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIG4gPSBzdGFydDtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0O1xuXHQgICAgICAgIHJldHVybiBuO1xuXG5cdCAgICAgIGNhc2UgNDpcblx0ICAgICAgICBuICs9IHN0ZXA7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInJlcGVhdFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCh0aGluZykge1xuXHQgIHZhciB0aW1lcyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IEluZmluaXR5IDogYXJndW1lbnRzWzFdO1xuXHQgIHZhciBpO1xuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpZiAoISh0aW1lcyA9PT0gSW5maW5pdHkpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0O1xuXHQgICAgICAgIHJldHVybiB0aGluZztcblxuXHQgICAgICBjYXNlIDQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDg6XG5cdCAgICAgICAgaSA9IDA7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGlmICghKGkgPCB0aW1lcykpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICByZXR1cm4gdGhpbmc7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBpKys7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHQvKlxuXHQgKiBJdGVyYXRvcnMgdGhhdCB0ZXJtaW5hdGUgb25jZSB0aGUgaW5wdXQgc2VxdWVuY2UgaGFzIGJlZW4gZXhoYXVzdGVkXG5cdCAqL1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcImNoYWluXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCxcblx0ICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I0LFxuXHQgICAgICBfaXRlcmF0b3JFcnJvcjQsXG5cdCAgICAgIF9sZW41LFxuXHQgICAgICBpdGVyYWJsZXMsXG5cdCAgICAgIF9rZXk1LFxuXHQgICAgICBfaXRlcmF0b3I0LFxuXHQgICAgICBfc3RlcDQsXG5cdCAgICAgIGl0LFxuXHQgICAgICBhcmdzJDEkMCA9IGFyZ3VtZW50cztcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXG5cdCAgICAgICAgZm9yIChfbGVuNSA9IGFyZ3MkMSQwLmxlbmd0aCwgaXRlcmFibGVzID0gQXJyYXkoX2xlbjUpLCBfa2V5NSA9IDA7IF9rZXk1IDwgX2xlbjU7IF9rZXk1KyspIHtcblx0ICAgICAgICAgIGl0ZXJhYmxlc1tfa2V5NV0gPSBhcmdzJDEkMFtfa2V5NV07XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX2l0ZXJhdG9yNCA9IF9nZXRJdGVyYXRvcihpdGVyYWJsZXMpO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSAoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGl0ID0gX3N0ZXA0LnZhbHVlO1xuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKGl0LCBcInQwXCIsIDkpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCAmJiBfaXRlcmF0b3I0W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I0W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjQpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNDtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiY2h1bmtcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAyIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIGl0ZW1zLCBpbmRleCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUsIF9kaWRJdGVyYXRvckVycm9yNSwgX2l0ZXJhdG9yRXJyb3I1LCBfaXRlcmF0b3I1LCBfc3RlcDUsIGl0ZW07XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaXRlbXMgPSBbXTtcblx0ICAgICAgICBpbmRleCA9IDA7XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTtcblx0ICAgICAgICBfaXRlcmF0b3I1ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNzpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUgPSAoX3N0ZXA1ID0gX2l0ZXJhdG9yNS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGl0ZW0gPSBfc3RlcDUudmFsdWU7XG5cblx0ICAgICAgICBpdGVtc1tpbmRleCsrXSA9IGl0ZW07XG5cblx0ICAgICAgICBpZiAoIShpbmRleCA9PT0gbikpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICByZXR1cm4gaXRlbXM7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBpdGVtcyA9IFtdO1xuXHQgICAgICAgIGluZGV4ID0gMDtcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNSk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I1ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjUgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjU7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ICYmIF9pdGVyYXRvcjVbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjVbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjc7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yNSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I1O1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNyk7XG5cblx0ICAgICAgY2FzZSAzMTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI0KTtcblxuXHQgICAgICBjYXNlIDMyOlxuXHQgICAgICAgIGlmICghaW5kZXgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzNTtcblx0ICAgICAgICByZXR1cm4gaXRlbXM7XG5cblx0ICAgICAgY2FzZSAzNTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s1LCAyMCwgMjQsIDMyXSwgWzI1LCwgMjcsIDMxXV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiY29uY2F0TWFwXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242LCBfZGlkSXRlcmF0b3JFcnJvcjYsIF9pdGVyYXRvckVycm9yNiwgX2l0ZXJhdG9yNiwgX3N0ZXA2LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjYgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yNiA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ID0gKF9zdGVwNiA9IF9pdGVyYXRvcjYubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA2LnZhbHVlO1xuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKGZuKHgpLCBcInQwXCIsIDgpO1xuXG5cdCAgICAgIGNhc2UgODpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTM7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I2ID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTc7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiAmJiBfaXRlcmF0b3I2W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I2W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjYpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNjtcblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxNyk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxMywgMTcsIDI1XSwgWzE4LCwgMjAsIDI0XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZHJvcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChuKSB7XG5cdCAgdmFyIGksIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243LCBfZGlkSXRlcmF0b3JFcnJvcjcsIF9pdGVyYXRvckVycm9yNywgX2l0ZXJhdG9yNywgX3N0ZXA3LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGkgPSAwO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjcgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ7XG5cdCAgICAgICAgX2l0ZXJhdG9yNyA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ID0gKF9zdGVwNyA9IF9pdGVyYXRvcjcubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA3LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCEoaSsrIDwgbikpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJjb250aW51ZVwiLCAxMyk7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTYpO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIyO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg0KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjcgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNyA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgJiYgX2l0ZXJhdG9yN1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yN1tcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I3KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjc7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI1KTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQodGhpcywgXCJ0MVwiLCAzMSk7XG5cblx0ICAgICAgY2FzZSAzMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s0LCAxOCwgMjIsIDMwXSwgWzIzLCwgMjUsIDI5XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZHJvcFdoaWxlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjgsIF9kaWRJdGVyYXRvckVycm9yOCwgX2l0ZXJhdG9yRXJyb3I4LCBfaXRlcmF0b3I4LCBfc3RlcDgsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3I4ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggPSAoX3N0ZXA4ID0gX2l0ZXJhdG9yOC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDgudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIWZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJjb250aW51ZVwiLCAxMik7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMTtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNSk7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTc7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I4ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCAmJiBfaXRlcmF0b3I4W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I4W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI0O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yODtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjQpO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZCh0aGlzLCBcInQxXCIsIDMwKTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE3LCAyMSwgMjldLCBbMjIsLCAyNCwgMjhdXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJlbnVtZXJhdGVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF96aXAoW3RoaXMsIHd1LmNvdW50KCldKSwgXCJ0MFwiLCAxKTtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZmlsdGVyXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjksIF9kaWRJdGVyYXRvckVycm9yOSwgX2l0ZXJhdG9yRXJyb3I5LCBfaXRlcmF0b3I5LCBfc3RlcDksIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3I5ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSAoX3N0ZXA5ID0gX2l0ZXJhdG9yOS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDkudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIWZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I5ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSAmJiBfaXRlcmF0b3I5W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I5W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yOTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOSk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNSwgMTksIDI3XSwgWzIwLCwgMjIsIDI2XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZmxhdHRlblwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc2hhbGxvdyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCwgX2RpZEl0ZXJhdG9yRXJyb3IxMCwgX2l0ZXJhdG9yRXJyb3IxMCwgX2l0ZXJhdG9yMTAsIF9zdGVwMTAsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEwID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IxMCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCA9IChfc3RlcDEwID0gX2l0ZXJhdG9yMTAubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxMC52YWx1ZTtcblxuXHQgICAgICAgIGlmICghKHR5cGVvZiB4ICE9PSBcInN0cmluZ1wiICYmIGlzSXRlcmFibGUoeCkpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChzaGFsbG93ID8geCA6IHd1KHgpLmZsYXR0ZW4oKSwgXCJ0MFwiLCA5KTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MSA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMCA9IGNvbnRleHQkMSQwLnQxO1xuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwICYmIF9pdGVyYXRvcjEwW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxMFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxMCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMDtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjUpO1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxOCwgMjIsIDMwXSwgWzIzLCwgMjUsIDI5XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiaW52b2tlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG5hbWUpIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExLFxuXHQgICAgICBfZGlkSXRlcmF0b3JFcnJvcjExLFxuXHQgICAgICBfaXRlcmF0b3JFcnJvcjExLFxuXHQgICAgICBfbGVuNixcblx0ICAgICAgYXJncyxcblx0ICAgICAgX2tleTYsXG5cdCAgICAgIF9pdGVyYXRvcjExLFxuXHQgICAgICBfc3RlcDExLFxuXHQgICAgICB4LFxuXHQgICAgICBhcmdzJDEkMCA9IGFyZ3VtZW50cztcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTEgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjExID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXG5cdCAgICAgICAgZm9yIChfbGVuNiA9IGFyZ3MkMSQwLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW42ID4gMSA/IF9sZW42IC0gMSA6IDApLCBfa2V5NiA9IDE7IF9rZXk2IDwgX2xlbjY7IF9rZXk2KyspIHtcblx0ICAgICAgICAgIGFyZ3NbX2tleTYgLSAxXSA9IGFyZ3MkMSQwW19rZXk2XTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfaXRlcmF0b3IxMSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMSA9IChfc3RlcDExID0gX2l0ZXJhdG9yMTEubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxMS52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHhbbmFtZV0uYXBwbHkoeCwgYXJncyk7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE1O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjExID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjExID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgJiYgX2l0ZXJhdG9yMTFbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjExW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjExKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjExO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE5KTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE1LCAxOSwgMjddLCBbMjAsLCAyMiwgMjZdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJtYXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyLCBfZGlkSXRlcmF0b3JFcnJvcjEyLCBfaXRlcmF0b3JFcnJvcjEyLCBfaXRlcmF0b3IxMiwgX3N0ZXAxMiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTIgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEyID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjEyID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyID0gKF9zdGVwMTIgPSBfaXRlcmF0b3IxMi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDEyLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiBmbih4KTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMiA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyICYmIF9pdGVyYXRvcjEyW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxMltcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxMikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMjtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwicGx1Y2tcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAobmFtZSkge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMsIF9kaWRJdGVyYXRvckVycm9yMTMsIF9pdGVyYXRvckVycm9yMTMsIF9pdGVyYXRvcjEzLCBfc3RlcDEzLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMyA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTMgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTMgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgPSAoX3N0ZXAxMyA9IF9pdGVyYXRvcjEzLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTMudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIHhbbmFtZV07XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTMgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTMgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyAmJiBfaXRlcmF0b3IxM1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTNbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTMpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTM7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInJlZHVjdGlvbnNcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICB2YXIgaW5pdGlhbCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcblxuXHQgIHZhciB2YWwsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCwgX2RpZEl0ZXJhdG9yRXJyb3IxNCwgX2l0ZXJhdG9yRXJyb3IxNCwgX2l0ZXJhdG9yMTQsIF9zdGVwMTQsIHgsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSwgX2RpZEl0ZXJhdG9yRXJyb3IxNSwgX2l0ZXJhdG9yRXJyb3IxNSwgX2l0ZXJhdG9yMTUsIF9zdGVwMTU7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgdmFsID0gaW5pdGlhbDtcblxuXHQgICAgICAgIGlmICghKHZhbCA9PT0gdW5kZWZpbmVkKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE0ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE0ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTtcblx0ICAgICAgICBfaXRlcmF0b3IxNCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDc6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCA9IChfc3RlcDE0ID0gX2l0ZXJhdG9yMTQubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxNC52YWx1ZTtcblxuXHQgICAgICAgIHZhbCA9IHg7XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDE0KTtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTY7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDUpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTQgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTQgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCAmJiBfaXRlcmF0b3IxNFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTRbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTQpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTQ7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIzKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMwO1xuXHQgICAgICAgIHJldHVybiB2YWw7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTUgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE1ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzMztcblx0ICAgICAgICBfaXRlcmF0b3IxNSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDM1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgPSAoX3N0ZXAxNSA9IF9pdGVyYXRvcjE1Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTUudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDM5O1xuXHQgICAgICAgIHJldHVybiB2YWwgPSBmbih2YWwsIHgpO1xuXG5cdCAgICAgIGNhc2UgMzk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA0Mjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA0NDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE1ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE1ID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSA0ODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgJiYgX2l0ZXJhdG9yMTVbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE1W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgNTE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDUxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE1KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE1O1xuXG5cdCAgICAgIGNhc2UgNTQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCg1MSk7XG5cblx0ICAgICAgY2FzZSA1NTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDQ4KTtcblxuXHQgICAgICBjYXNlIDU2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIiwgdmFsKTtcblxuXHQgICAgICBjYXNlIDU3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzUsIDE2LCAyMCwgMjhdLCBbMjEsLCAyMywgMjddLCBbMzMsIDQ0LCA0OCwgNTZdLCBbNDksLCA1MSwgNTVdXSk7XG5cdH0pLCAyKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJyZWplY3RcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYsIF9kaWRJdGVyYXRvckVycm9yMTYsIF9pdGVyYXRvckVycm9yMTYsIF9pdGVyYXRvcjE2LCBfc3RlcDE2LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNiA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTYgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgPSAoX3N0ZXAxNiA9IF9pdGVyYXRvcjE2Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTYudmFsdWU7XG5cblx0ICAgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTYgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTYgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiAmJiBfaXRlcmF0b3IxNltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTZbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTYpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTY7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTkpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTUsIDE5LCAyN10sIFsyMCwsIDIyLCAyNl1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInNsaWNlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBzdGFydCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDAgOiBhcmd1bWVudHNbMF07XG5cdCAgdmFyIHN0b3AgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBJbmZpbml0eSA6IGFyZ3VtZW50c1sxXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcsIF9kaWRJdGVyYXRvckVycm9yMTcsIF9pdGVyYXRvckVycm9yMTcsIF9pdGVyYXRvcjE3LCBfc3RlcDE3LCBfc3RlcDE3JHZhbHVlLCB4LCBpO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGlmICghKHN0b3AgPCBzdGFydCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJwYXJhbWV0ZXIgYHN0b3BgICg9IFwiICsgc3RvcCArIFwiKSBtdXN0IGJlID49IGBzdGFydGAgKD0gXCIgKyBzdGFydCArIFwiKVwiKTtcblxuXHQgICAgICBjYXNlIDI6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE3ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE3ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTtcblx0ICAgICAgICBfaXRlcmF0b3IxNyA9IF9nZXRJdGVyYXRvcih0aGlzLmVudW1lcmF0ZSgpKTtcblxuXHQgICAgICBjYXNlIDc6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyA9IChfc3RlcDE3ID0gX2l0ZXJhdG9yMTcubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfc3RlcDE3JHZhbHVlID0gX3NsaWNlZFRvQXJyYXkoX3N0ZXAxNy52YWx1ZSwgMik7XG5cdCAgICAgICAgeCA9IF9zdGVwMTckdmFsdWVbMF07XG5cdCAgICAgICAgaSA9IF9zdGVwMTckdmFsdWVbMV07XG5cblx0ICAgICAgICBpZiAoIShpIDwgc3RhcnQpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiY29udGludWVcIiwgMTcpO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgaWYgKCEoaSA+PSBzdG9wKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDIwKTtcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNztcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDE3OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDUpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTcgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTcgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNjtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjc7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyAmJiBfaXRlcmF0b3IxN1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTdbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjk7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTcpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTc7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI5KTtcblxuXHQgICAgICBjYXNlIDMzOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjYpO1xuXG5cdCAgICAgIGNhc2UgMzQ6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNSwgMjIsIDI2LCAzNF0sIFsyNywsIDI5LCAzM11dKTtcblx0fSksIDIpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInNwcmVhZE1hcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTgsIF9kaWRJdGVyYXRvckVycm9yMTgsIF9pdGVyYXRvckVycm9yMTgsIF9pdGVyYXRvcjE4LCBfc3RlcDE4LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTggPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTggPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggPSAoX3N0ZXAxOCA9IF9pdGVyYXRvcjE4Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTgudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHVuZGVmaW5lZCwgX3RvQ29uc3VtYWJsZUFycmF5KHgpKTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxOCA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4ICYmIF9pdGVyYXRvcjE4W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxOFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxOCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxODtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwidGFrZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChuKSB7XG5cdCAgdmFyIGksIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSwgX2RpZEl0ZXJhdG9yRXJyb3IxOSwgX2l0ZXJhdG9yRXJyb3IxOSwgX2l0ZXJhdG9yMTksIF9zdGVwMTksIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaWYgKCEobiA8IDEpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cblx0ICAgICAgY2FzZSAyOlxuXHQgICAgICAgIGkgPSAwO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTkgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDY7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTkgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA4OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTkgPSAoX3N0ZXAxOSA9IF9pdGVyYXRvcjE5Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE3O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTkudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgaWYgKCEoKytpID49IG4pKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTcpO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE3OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNik7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxOSA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNDtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ICYmIF9pdGVyYXRvcjE5W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxOVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNjtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxOSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI5O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxOTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjYpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMyk7XG5cblx0ICAgICAgY2FzZSAzMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s2LCAxOSwgMjMsIDMxXSwgWzI0LCwgMjYsIDMwXV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwidGFrZVdoaWxlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwLCBfZGlkSXRlcmF0b3JFcnJvcjIwLCBfaXRlcmF0b3JFcnJvcjIwLCBfaXRlcmF0b3IyMCwgX3N0ZXAyMCwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjAgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIwID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjIwID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwID0gKF9zdGVwMjAgPSBfaXRlcmF0b3IyMC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDIwLnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKGZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNCk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMTtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTY7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjAgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjAgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCAmJiBfaXRlcmF0b3IyMFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjBbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjApIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjA7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIzKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTYsIDIwLCAyOF0sIFsyMSwsIDIzLCAyN11dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInRhcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSwgX2RpZEl0ZXJhdG9yRXJyb3IyMSwgX2l0ZXJhdG9yRXJyb3IyMSwgX2l0ZXJhdG9yMjEsIF9zdGVwMjEsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIxID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIxID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IyMSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IChfc3RlcDIxID0gX2l0ZXJhdG9yMjEubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAyMS52YWx1ZTtcblxuXHQgICAgICAgIGZuKHgpO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjEgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjEgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSAmJiBfaXRlcmF0b3IyMVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjFbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjEpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjE7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTkpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTUsIDE5LCAyN10sIFsyMCwsIDIyLCAyNl1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInVuaXF1ZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc2VlbiwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyLCBfZGlkSXRlcmF0b3JFcnJvcjIyLCBfaXRlcmF0b3JFcnJvcjIyLCBfaXRlcmF0b3IyMiwgX3N0ZXAyMiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBzZWVuID0gbmV3IF9TZXQoKTtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjIgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIyID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0O1xuXHQgICAgICAgIF9pdGVyYXRvcjIyID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyID0gKF9zdGVwMjIgPSBfaXRlcmF0b3IyMi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDIyLnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKHNlZW4uaGFzKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBzZWVuLmFkZCh4KTtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTc7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDQpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjIgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjIgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiAmJiBfaXRlcmF0b3IyMltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjJbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjQ7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjIpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjI7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI0KTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgc2Vlbi5jbGVhcigpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNCwgMTcsIDIxLCAyOV0sIFsyMiwsIDI0LCAyOF1dKTtcblx0fSkpO1xuXG5cdHZhciBfemlwID0gcmV3cmFwKF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGl0ZXJhYmxlcykge1xuXHQgIHZhciBsb25nZXN0ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgaXRlcnMsIG51bUl0ZXJzLCBudW1GaW5pc2hlZCwgZmluaXNoZWQsIHppcHBlZCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzLCBfZGlkSXRlcmF0b3JFcnJvcjIzLCBfaXRlcmF0b3JFcnJvcjIzLCBfaXRlcmF0b3IyMywgX3N0ZXAyMywgaXQsIF9pdCRuZXh0LCB2YWx1ZSwgZG9uZTtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpZiAoaXRlcmFibGVzLmxlbmd0aCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIpO1xuXG5cdCAgICAgIGNhc2UgMjpcblx0ICAgICAgICBpdGVycyA9IGl0ZXJhYmxlcy5tYXAoZ2V0SXRlcmF0b3IpO1xuXHQgICAgICAgIG51bUl0ZXJzID0gaXRlcmFibGVzLmxlbmd0aDtcblx0ICAgICAgICBudW1GaW5pc2hlZCA9IDA7XG5cdCAgICAgICAgZmluaXNoZWQgPSBmYWxzZTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKGZpbmlzaGVkKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB6aXBwZWQgPSBbXTtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjMgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIzID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxMTtcblx0ICAgICAgICBfaXRlcmF0b3IyMyA9IF9nZXRJdGVyYXRvcihpdGVycyk7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzID0gKF9zdGVwMjMgPSBfaXRlcmF0b3IyMy5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGl0ID0gX3N0ZXAyMy52YWx1ZTtcblx0ICAgICAgICBfaXQkbmV4dCA9IGl0Lm5leHQoKTtcblx0ICAgICAgICB2YWx1ZSA9IF9pdCRuZXh0LnZhbHVlO1xuXHQgICAgICAgIGRvbmUgPSBfaXQkbmV4dC5kb25lO1xuXG5cdCAgICAgICAgaWYgKCFkb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAobG9uZ2VzdCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcInJldHVyblwiKTtcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGlmICgrK251bUZpbmlzaGVkID09IG51bUl0ZXJzKSB7XG5cdCAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgIC8vIExlYXZlIGEgaG9sZSBpbiB0aGUgYXJyYXkgc28gdGhhdCB5b3UgY2FuIGRpc3Rpbmd1aXNoIGFuIGl0ZXJhYmxlXG5cdCAgICAgICAgICAvLyB0aGF0J3MgZG9uZSAodmlhIGBpbmRleCBpbiBhcnJheSA9PSBmYWxzZWApIGZyb20gYW4gaXRlcmFibGVcblx0ICAgICAgICAgIC8vIHlpZWxkaW5nIGB1bmRlZmluZWRgLlxuXHQgICAgICAgICAgemlwcGVkLmxlbmd0aCsrO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB6aXBwZWQucHVzaCh2YWx1ZSk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzI7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjg7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDExKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIzID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIzID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMzI7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDMzO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgJiYgX2l0ZXJhdG9yMjNbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjIzW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMzU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM1O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIzKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIzO1xuXG5cdCAgICAgIGNhc2UgMzg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgzNSk7XG5cblx0ICAgICAgY2FzZSAzOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDMyKTtcblxuXHQgICAgICBjYXNlIDQwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0Mjtcblx0ICAgICAgICByZXR1cm4gemlwcGVkO1xuXG5cdCAgICAgIGNhc2UgNDI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA0NDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1sxMSwgMjgsIDMyLCA0MF0sIFszMywsIDM1LCAzOV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInppcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICBmb3IgKHZhciBfbGVuNyA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW43KSwgX2tleTcgPSAwOyBfa2V5NyA8IF9sZW43OyBfa2V5NysrKSB7XG5cdCAgICBpdGVyYWJsZXNbX2tleTddID0gYXJndW1lbnRzW19rZXk3XTtcblx0ICB9XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX3ppcChpdGVyYWJsZXMpLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJ6aXBMb25nZXN0XCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIGZvciAodmFyIF9sZW44ID0gYXJndW1lbnRzLmxlbmd0aCwgaXRlcmFibGVzID0gQXJyYXkoX2xlbjgpLCBfa2V5OCA9IDA7IF9rZXk4IDwgX2xlbjg7IF9rZXk4KyspIHtcblx0ICAgIGl0ZXJhYmxlc1tfa2V5OF0gPSBhcmd1bWVudHNbX2tleThdO1xuXHQgIH1cblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChfemlwKGl0ZXJhYmxlcywgdHJ1ZSksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInppcFdpdGhcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICBmb3IgKHZhciBfbGVuOSA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW45ID4gMSA/IF9sZW45IC0gMSA6IDApLCBfa2V5OSA9IDE7IF9rZXk5IDwgX2xlbjk7IF9rZXk5KyspIHtcblx0ICAgIGl0ZXJhYmxlc1tfa2V5OSAtIDFdID0gYXJndW1lbnRzW19rZXk5XTtcblx0ICB9XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX3ppcChpdGVyYWJsZXMpLnNwcmVhZE1hcChmbiksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdC8qXG5cdCAqIEZ1bmN0aW9ucyB0aGF0IGZvcmNlIGl0ZXJhdGlvbiB0byBjb21wbGV0aW9uIGFuZCByZXR1cm4gYSB2YWx1ZS5cblx0ICovXG5cblx0Ly8gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB3ZSB3aWxsIGJsb2NrIHRoZSBtYWluIHRocmVhZCBhdCBhIHRpbWVcblx0Ly8gd2hpbGUgaW4gYGFzeW5jRWFjaGAuXG5cdHd1Lk1BWF9CTE9DSyA9IDE1O1xuXHQvLyBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB5aWVsZCB0byB0aGUgbWFpbiB0aHJlYWQgYmV0d2VlbiBidXJzdHMgb2Zcblx0Ly8gd29yay5cblx0d3UuVElNRU9VVCA9IDE7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiYXN5bmNFYWNoXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBtYXhCbG9jayA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHd1Lk1BWF9CTE9DSyA6IGFyZ3VtZW50c1sxXTtcblx0ICB2YXIgdGltZW91dCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IHd1LlRJTUVPVVQgOiBhcmd1bWVudHNbMl07XG5cblx0ICB2YXIgaXRlciA9IGdldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgcmV0dXJuIG5ldyBfUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdCAgICAoZnVuY3Rpb24gbG9vcCgpIHtcblx0ICAgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuXHQgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI0ID0gdHJ1ZTtcblx0ICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjQgPSBmYWxzZTtcblx0ICAgICAgdmFyIF9pdGVyYXRvckVycm9yMjQgPSB1bmRlZmluZWQ7XG5cblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyNCA9IF9nZXRJdGVyYXRvcihpdGVyKSwgX3N0ZXAyNDsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgPSAoX3N0ZXAyNCA9IF9pdGVyYXRvcjI0Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCA9IHRydWUpIHtcblx0ICAgICAgICAgIHZhciB4ID0gX3N0ZXAyNC52YWx1ZTtcblxuXHQgICAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgZm4oeCk7XG5cdCAgICAgICAgICB9IGNhdGNoIChlKSB7XG5cdCAgICAgICAgICAgIHJlamVjdChlKTtcblx0ICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0ID4gbWF4QmxvY2spIHtcblx0ICAgICAgICAgICAgc2V0VGltZW91dChsb29wLCB0aW1lb3V0KTtcblx0ICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyNCA9IGVycjtcblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgJiYgX2l0ZXJhdG9yMjRbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgICAgX2l0ZXJhdG9yMjRbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjQpIHtcblx0ICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblxuXHQgICAgICByZXNvbHZlKCk7XG5cdCAgICB9KSgpO1xuXHQgIH0pO1xuXHR9LCAzKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJldmVyeVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNSA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI1ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI1ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI1OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSA9IChfc3RlcDI1ID0gX2l0ZXJhdG9yMjUubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjUudmFsdWU7XG5cblx0ICAgICAgaWYgKCFmbih4KSkge1xuXHQgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNSA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjI1ID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSAmJiBfaXRlcmF0b3IyNVtcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjI1W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI1KSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblxuXHQgIHJldHVybiB0cnVlO1xuXHR9LCAxKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJmaW5kXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgPSB0cnVlO1xuXHQgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI2ID0gZmFsc2U7XG5cdCAgdmFyIF9pdGVyYXRvckVycm9yMjYgPSB1bmRlZmluZWQ7XG5cblx0ICB0cnkge1xuXHQgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjYgPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMjY7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ID0gKF9zdGVwMjYgPSBfaXRlcmF0b3IyNi5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgPSB0cnVlKSB7XG5cdCAgICAgIHZhciB4ID0gX3N0ZXAyNi52YWx1ZTtcblxuXHQgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICByZXR1cm4geDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNiA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjI2ID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNiAmJiBfaXRlcmF0b3IyNltcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjI2W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI2KSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNjtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiZm9yRWFjaFwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNyA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI3ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI3ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI3OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyA9IChfc3RlcDI3ID0gX2l0ZXJhdG9yMjcubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjcudmFsdWU7XG5cblx0ICAgICAgZm4oeCk7XG5cdCAgICB9XG5cdCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICBfZGlkSXRlcmF0b3JFcnJvcjI3ID0gdHJ1ZTtcblx0ICAgIF9pdGVyYXRvckVycm9yMjcgPSBlcnI7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ICYmIF9pdGVyYXRvcjI3W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjdbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfVxuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjcpIHtcblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI3O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9KTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJoYXNcIiwgZnVuY3Rpb24gKHRoaW5nKSB7XG5cdCAgcmV0dXJuIHRoaXMuc29tZShmdW5jdGlvbiAoeCkge1xuXHQgICAgcmV0dXJuIHggPT09IHRoaW5nO1xuXHQgIH0pO1xuXHR9KTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJyZWR1Y2VcIiwgZnVuY3Rpb24gKGZuKSB7XG5cdCAgdmFyIGluaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgdmFsID0gaW5pdGlhbDtcblx0ICBpZiAodmFsID09PSB1bmRlZmluZWQpIHtcblx0ICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggPSB0cnVlO1xuXHQgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjggPSBmYWxzZTtcblx0ICAgIHZhciBfaXRlcmF0b3JFcnJvcjI4ID0gdW5kZWZpbmVkO1xuXG5cdCAgICB0cnkge1xuXHQgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyOCA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyODsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggPSAoX3N0ZXAyOCA9IF9pdGVyYXRvcjI4Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOCA9IHRydWUpIHtcblx0ICAgICAgICB2YXIgeCA9IF9zdGVwMjgudmFsdWU7XG5cblx0ICAgICAgICB2YWwgPSB4O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9IGNhdGNoIChlcnIpIHtcblx0ICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyOCA9IHRydWU7XG5cdCAgICAgIF9pdGVyYXRvckVycm9yMjggPSBlcnI7XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI4ICYmIF9pdGVyYXRvcjI4W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyOFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyOCkge1xuXHQgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyODtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyOSA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI5ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI5ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI5OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOSA9IChfc3RlcDI5ID0gX2l0ZXJhdG9yMjkubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjkudmFsdWU7XG5cblx0ICAgICAgdmFsID0gZm4odmFsLCB4KTtcblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMjkgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IyOSA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkgJiYgX2l0ZXJhdG9yMjlbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IyOVtcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyOSkge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICByZXR1cm4gdmFsO1xuXHR9LCAyKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJzb21lXCIsIGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgPSB0cnVlO1xuXHQgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjMwID0gZmFsc2U7XG5cdCAgdmFyIF9pdGVyYXRvckVycm9yMzAgPSB1bmRlZmluZWQ7XG5cblx0ICB0cnkge1xuXHQgICAgZm9yICh2YXIgX2l0ZXJhdG9yMzAgPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMzA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwID0gKF9zdGVwMzAgPSBfaXRlcmF0b3IzMC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgPSB0cnVlKSB7XG5cdCAgICAgIHZhciB4ID0gX3N0ZXAzMC52YWx1ZTtcblxuXHQgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IzMCA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjMwID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMCAmJiBfaXRlcmF0b3IzMFtcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjMwW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjMwKSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IzMDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblxuXHQgIHJldHVybiBmYWxzZTtcblx0fSwgMSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwidG9BcnJheVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGhpcykpO1xuXHR9KTtcblxuXHQvKlxuXHQgKiBNZXRob2RzIHRoYXQgcmV0dXJuIGFuIGFycmF5IG9mIGl0ZXJhYmxlcy5cblx0ICovXG5cblx0dmFyIE1BWF9DQUNIRSA9IDUwMDtcblxuXHR2YXIgX3RlZSA9IHJld3JhcChfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChpdGVyYXRvciwgY2FjaGUpIHtcblx0ICB2YXIgaXRlbXMsIGluZGV4LCBfaXRlcmF0b3IkbmV4dCwgZG9uZSwgdmFsdWU7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaXRlbXMgPSBjYWNoZS5pdGVtcztcblx0ICAgICAgICBpbmRleCA9IDA7XG5cblx0ICAgICAgY2FzZSAyOlxuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKCEoaW5kZXggPT09IGl0ZW1zLmxlbmd0aCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIF9pdGVyYXRvciRuZXh0ID0gaXRlcmF0b3IubmV4dCgpO1xuXHQgICAgICAgIGRvbmUgPSBfaXRlcmF0b3IkbmV4dC5kb25lO1xuXHQgICAgICAgIHZhbHVlID0gX2l0ZXJhdG9yJG5leHQudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIWRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGlmIChjYWNoZS5yZXR1cm5lZCA9PT0gTUlTU0lORykge1xuXHQgICAgICAgICAgY2FjaGUucmV0dXJuZWQgPSB2YWx1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDI1KTtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICByZXR1cm4gaXRlbXNbaW5kZXgrK10gPSB2YWx1ZTtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGlmICghKGluZGV4ID09PSBjYWNoZS50YWlsKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdmFsdWUgPSBpdGVtc1tpbmRleF07XG5cblx0ICAgICAgICBpZiAoaW5kZXggPT09IE1BWF9DQUNIRSkge1xuXHQgICAgICAgICAgaXRlbXMgPSBjYWNoZS5pdGVtcyA9IGl0ZW1zLnNsaWNlKGluZGV4KTtcblx0ICAgICAgICAgIGluZGV4ID0gMDtcblx0ICAgICAgICAgIGNhY2hlLnRhaWwgPSAwO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBpdGVtc1tpbmRleF0gPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICBjYWNoZS50YWlsID0gKytpbmRleDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIHJldHVybiB2YWx1ZTtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICByZXR1cm4gaXRlbXNbaW5kZXgrK107XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDI1OlxuXG5cdCAgICAgICAgaWYgKGNhY2hlLnRhaWwgPT09IGluZGV4KSB7XG5cdCAgICAgICAgICBpdGVtcy5sZW5ndGggPSAwO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIiwgY2FjaGUucmV0dXJuZWQpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cdF90ZWUucHJvdG90eXBlID0gV3UucHJvdG90eXBlO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInRlZVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAyIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIGl0ZXJhYmxlcyA9IG5ldyBBcnJheShuKTtcblx0ICB2YXIgY2FjaGUgPSB7IHRhaWw6IDAsIGl0ZW1zOiBbXSwgcmV0dXJuZWQ6IE1JU1NJTkcgfTtcblxuXHQgIHdoaWxlIChuLS0pIHtcblx0ICAgIGl0ZXJhYmxlc1tuXSA9IF90ZWUodGhpcywgY2FjaGUpO1xuXHQgIH1cblxuXHQgIHJldHVybiBpdGVyYWJsZXM7XG5cdH0sIDEpO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInVuemlwXCIsIGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDIgOiBhcmd1bWVudHNbMF07XG5cblx0ICByZXR1cm4gdGhpcy50ZWUobikubWFwKGZ1bmN0aW9uIChpdGVyLCBpKSB7XG5cdCAgICByZXR1cm4gaXRlci5wbHVjayhpKTtcblx0ICB9KTtcblx0fSwgMSk7XG5cblx0Lypcblx0ICogTnVtYmVyIG9mIGNoYW1iZXJzLlxuXHQgKi9cblxuXHR3dS50YW5nID0geyBjbGFuOiAzNiB9O1xuXG5cdC8vIFdlIGRvbid0IGhhdmUgYSBjYWNoZWQgaXRlbSBmb3IgdGhpcyBpbmRleCwgd2UgbmVlZCB0byBmb3JjZSBpdHNcblx0Ly8gZXZhbHVhdGlvbi5cblxuXHQvLyBJZiB3ZSBhcmUgdGhlIGxhc3QgaXRlcmF0b3IgdG8gdXNlIGEgY2FjaGVkIHZhbHVlLCBjbGVhbiB1cCBhZnRlclxuXHQvLyBvdXJzZWx2ZXMuXG5cblx0Ly8gV2UgaGF2ZSBhbiBpdGVtIGluIHRoZSBjYWNoZSBmb3IgdGhpcyBpbmRleCwgc28geWllbGQgaXQuXG5cbi8qKiovIH0sXG4vKiAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX0FycmF5JGZyb20gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpW1wiZGVmYXVsdFwiXTtcblxuXHRleHBvcnRzW1wiZGVmYXVsdFwiXSA9IGZ1bmN0aW9uIChhcnIpIHtcblx0ICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG5cdCAgICByZXR1cm4gYXJyMjtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIF9BcnJheSRmcm9tKGFycik7XG5cdCAgfVxuXHR9O1xuXG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oMyksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oMjYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLkFycmF5LmZyb207XG5cbi8qKiovIH0sXG4vKiA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkYXQgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KSh0cnVlKTtcblxuXHQvLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5cdF9fd2VicGFja19yZXF1aXJlX18oOCkoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24oaXRlcmF0ZWQpe1xuXHQgIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcblx0ICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuXHQvLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG5cdH0sIGZ1bmN0aW9uKCl7XG5cdCAgdmFyIE8gICAgID0gdGhpcy5fdFxuXHQgICAgLCBpbmRleCA9IHRoaXMuX2lcblx0ICAgICwgcG9pbnQ7XG5cdCAgaWYoaW5kZXggPj0gTy5sZW5ndGgpcmV0dXJuIHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfTtcblx0ICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG5cdCAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG5cdCAgcmV0dXJuIHt2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlfTtcblx0fSk7XG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyB0cnVlICAtPiBTdHJpbmcjYXRcblx0Ly8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5cdHZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpXG5cdCAgLCBkZWZpbmVkICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKFRPX1NUUklORyl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uKHRoYXQsIHBvcyl7XG5cdCAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKVxuXHQgICAgICAsIGkgPSB0b0ludGVnZXIocG9zKVxuXHQgICAgICAsIGwgPSBzLmxlbmd0aFxuXHQgICAgICAsIGEsIGI7XG5cdCAgICBpZihpIDwgMCB8fCBpID49IGwpcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuXHQgICAgYSA9IHMuY2hhckNvZGVBdChpKTtcblx0ICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGxcblx0ICAgICAgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG5cdCAgICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcblx0ICAgICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gNy4xLjQgVG9JbnRlZ2VyXG5cdHZhciBjZWlsICA9IE1hdGguY2VpbFxuXHQgICwgZmxvb3IgPSBNYXRoLmZsb29yO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKGl0ID09IHVuZGVmaW5lZCl0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgTElCUkFSWSAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KVxuXHQgICwgJGRlZiAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsICRyZWRlZiAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpXG5cdCAgLCBoaWRlICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgaGFzICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIFNZTUJPTF9JVEVSQVRPUiA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpXG5cdCAgLCBJdGVyYXRvcnMgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKVxuXHQgICwgQlVHR1kgICAgICAgICAgID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpIC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcblx0ICAsIEZGX0lURVJBVE9SICAgICA9ICdAQGl0ZXJhdG9yJ1xuXHQgICwgS0VZUyAgICAgICAgICAgID0gJ2tleXMnXG5cdCAgLCBWQUxVRVMgICAgICAgICAgPSAndmFsdWVzJztcblx0dmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRSl7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyNCkoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXHQgIHZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbihraW5kKXtcblx0ICAgIHN3aXRjaChraW5kKXtcblx0ICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgIH07XG5cdCAgdmFyIFRBRyAgICAgID0gTkFNRSArICcgSXRlcmF0b3InXG5cdCAgICAsIHByb3RvICAgID0gQmFzZS5wcm90b3R5cGVcblx0ICAgICwgX25hdGl2ZSAgPSBwcm90b1tTWU1CT0xfSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdXG5cdCAgICAsIF9kZWZhdWx0ID0gX25hdGl2ZSB8fCBjcmVhdGVNZXRob2QoREVGQVVMVClcblx0ICAgICwgbWV0aG9kcywga2V5O1xuXHQgIC8vIEZpeCBuYXRpdmVcblx0ICBpZihfbmF0aXZlKXtcblx0ICAgIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLmdldFByb3RvKF9kZWZhdWx0LmNhbGwobmV3IEJhc2UpKTtcblx0ICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcblx0ICAgIF9fd2VicGFja19yZXF1aXJlX18oMjUpKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuXHQgICAgLy8gRkYgZml4XG5cdCAgICBpZighTElCUkFSWSAmJiBoYXMocHJvdG8sIEZGX0lURVJBVE9SKSloaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBTWU1CT0xfSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuXHQgIH1cblx0ICAvLyBEZWZpbmUgaXRlcmF0b3Jcblx0ICBpZighTElCUkFSWSB8fCBGT1JDRSloaWRlKHByb3RvLCBTWU1CT0xfSVRFUkFUT1IsIF9kZWZhdWx0KTtcblx0ICAvLyBQbHVnIGZvciBsaWJyYXJ5XG5cdCAgSXRlcmF0b3JzW05BTUVdID0gX2RlZmF1bHQ7XG5cdCAgSXRlcmF0b3JzW1RBR10gID0gcmV0dXJuVGhpcztcblx0ICBpZihERUZBVUxUKXtcblx0ICAgIG1ldGhvZHMgPSB7XG5cdCAgICAgIGtleXM6ICAgIElTX1NFVCAgICAgICAgICAgID8gX2RlZmF1bHQgOiBjcmVhdGVNZXRob2QoS0VZUyksXG5cdCAgICAgIHZhbHVlczogIERFRkFVTFQgPT0gVkFMVUVTID8gX2RlZmF1bHQgOiBjcmVhdGVNZXRob2QoVkFMVUVTKSxcblx0ICAgICAgZW50cmllczogREVGQVVMVCAhPSBWQUxVRVMgPyBfZGVmYXVsdCA6IGNyZWF0ZU1ldGhvZCgnZW50cmllcycpXG5cdCAgICB9O1xuXHQgICAgaWYoRk9SQ0UpZm9yKGtleSBpbiBtZXRob2RzKXtcblx0ICAgICAgaWYoIShrZXkgaW4gcHJvdG8pKSRyZWRlZihwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuXHQgICAgfSBlbHNlICRkZWYoJGRlZi5QICsgJGRlZi5GICogQlVHR1ksIE5BTUUsIG1ldGhvZHMpO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcblxuLyoqKi8gfSxcbi8qIDEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZ2xvYmFsICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIGNvcmUgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpXG5cdCAgLCBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblx0dmFyIGN0eCA9IGZ1bmN0aW9uKGZuLCB0aGF0KXtcblx0ICByZXR1cm4gZnVuY3Rpb24oKXtcblx0ICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuXHQgIH07XG5cdH07XG5cdHZhciAkZGVmID0gZnVuY3Rpb24odHlwZSwgbmFtZSwgc291cmNlKXtcblx0ICB2YXIga2V5LCBvd24sIG91dCwgZXhwXG5cdCAgICAsIGlzR2xvYmFsID0gdHlwZSAmICRkZWYuR1xuXHQgICAgLCBpc1Byb3RvICA9IHR5cGUgJiAkZGVmLlBcblx0ICAgICwgdGFyZ2V0ICAgPSBpc0dsb2JhbCA/IGdsb2JhbCA6IHR5cGUgJiAkZGVmLlNcblx0ICAgICAgICA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV1cblx0ICAgICwgZXhwb3J0cyAgPSBpc0dsb2JhbCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuXHQgIGlmKGlzR2xvYmFsKXNvdXJjZSA9IG5hbWU7XG5cdCAgZm9yKGtleSBpbiBzb3VyY2Upe1xuXHQgICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG5cdCAgICBvd24gPSAhKHR5cGUgJiAkZGVmLkYpICYmIHRhcmdldCAmJiBrZXkgaW4gdGFyZ2V0O1xuXHQgICAgaWYob3duICYmIGtleSBpbiBleHBvcnRzKWNvbnRpbnVlO1xuXHQgICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcblx0ICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG5cdCAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcblx0ICAgIGlmKGlzR2xvYmFsICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nKWV4cCA9IHNvdXJjZVtrZXldO1xuXHQgICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcblx0ICAgIGVsc2UgaWYodHlwZSAmICRkZWYuQiAmJiBvd24pZXhwID0gY3R4KG91dCwgZ2xvYmFsKTtcblx0ICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG5cdCAgICBlbHNlIGlmKHR5cGUgJiAkZGVmLlcgJiYgdGFyZ2V0W2tleV0gPT0gb3V0KSFmdW5jdGlvbihDKXtcblx0ICAgICAgZXhwID0gZnVuY3Rpb24ocGFyYW0pe1xuXHQgICAgICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgQyA/IG5ldyBDKHBhcmFtKSA6IEMocGFyYW0pO1xuXHQgICAgICB9O1xuXHQgICAgICBleHBbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcblx0ICAgIH0ob3V0KTtcblx0ICAgIGVsc2UgZXhwID0gaXNQcm90byAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcblx0ICAgIC8vIGV4cG9ydFxuXHQgICAgZXhwb3J0c1trZXldID0gZXhwO1xuXHQgICAgaWYoaXNQcm90bykoZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSkpW2tleV0gPSBvdXQ7XG5cdCAgfVxuXHR9O1xuXHQvLyB0eXBlIGJpdG1hcFxuXHQkZGVmLkYgPSAxOyAgLy8gZm9yY2VkXG5cdCRkZWYuRyA9IDI7ICAvLyBnbG9iYWxcblx0JGRlZi5TID0gNDsgIC8vIHN0YXRpY1xuXHQkZGVmLlAgPSA4OyAgLy8gcHJvdG9cblx0JGRlZi5CID0gMTY7IC8vIGJpbmRcblx0JGRlZi5XID0gMzI7IC8vIHdyYXBcblx0bW9kdWxlLmV4cG9ydHMgPSAkZGVmO1xuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5cdHZhciBVTkRFRklORUQgPSAndW5kZWZpbmVkJztcblx0dmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSBVTkRFRklORUQgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuXHQgID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gVU5ERUZJTkVEICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZiA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdGlmKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbi8qKiovIH0sXG4vKiAxMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHt2ZXJzaW9uOiAnMS4yLjAnfTtcblx0aWYodHlwZW9mIF9fZSA9PSAnbnVtYmVyJylfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbi8qKiovIH0sXG4vKiAxMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuLyoqKi8gfSxcbi8qIDE0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgJCAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNykgPyBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuXHQgIHJldHVybiAkLnNldERlc2Mob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcblx0fSA6IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSl7XG5cdCAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcblx0ICByZXR1cm4gb2JqZWN0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdHZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBjcmVhdGU6ICAgICAkT2JqZWN0LmNyZWF0ZSxcblx0ICBnZXRQcm90bzogICAkT2JqZWN0LmdldFByb3RvdHlwZU9mLFxuXHQgIGlzRW51bTogICAgIHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuXHQgIGdldERlc2M6ICAgICRPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHQgIHNldERlc2M6ICAgICRPYmplY3QuZGVmaW5lUHJvcGVydHksXG5cdCAgc2V0RGVzY3M6ICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLFxuXHQgIGdldEtleXM6ICAgICRPYmplY3Qua2V5cyxcblx0ICBnZXROYW1lczogICAkT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsXG5cdCAgZ2V0U3ltYm9sczogJE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsXG5cdCAgZWFjaDogICAgICAgW10uZm9yRWFjaFxuXHR9O1xuXG4vKioqLyB9LFxuLyogMTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYml0bWFwLCB2YWx1ZSl7XG5cdCAgcmV0dXJuIHtcblx0ICAgIGVudW1lcmFibGUgIDogIShiaXRtYXAgJiAxKSxcblx0ICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcblx0ICAgIHdyaXRhYmxlICAgIDogIShiaXRtYXAgJiA0KSxcblx0ICAgIHZhbHVlICAgICAgIDogdmFsdWVcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcblx0bW9kdWxlLmV4cG9ydHMgPSAhX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXtcblx0ICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHtnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiA3OyB9fSkuYSAhPSA3O1xuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gISFleGVjKCk7XG5cdCAgfSBjYXRjaChlKXtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDE5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwga2V5KXtcblx0ICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgc3RvcmUgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSkoJ3drcycpXG5cdCAgLCBTeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKS5TeW1ib2w7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obmFtZSl7XG5cdCAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG5cdCAgICBTeW1ib2wgJiYgU3ltYm9sW25hbWVdIHx8IChTeW1ib2wgfHwgX193ZWJwYWNrX3JlcXVpcmVfXygyMikpKCdTeW1ib2wuJyArIG5hbWUpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nXG5cdCAgLCBzdG9yZSAgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcblx0ICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgaWQgPSAwXG5cdCAgLCBweCA9IE1hdGgucmFuZG9tKCk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcblx0ICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8qKiovIH0sXG4vKiAyNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG5cdC8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5cdF9fd2VicGFja19yZXF1aXJlX18oMTQpKEl0ZXJhdG9yUHJvdG90eXBlLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH0pO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpe1xuXHQgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9ICQuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7bmV4dDogX193ZWJwYWNrX3JlcXVpcmVfXygxNikoMSxuZXh0KX0pO1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMjUpKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBoYXMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgVEFHICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCd0b1N0cmluZ1RhZycpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIHRhZywgc3RhdCl7XG5cdCAgaWYoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSloaWRlKGl0LCBUQUcsIHRhZyk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgY3R4ICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgJGRlZiAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgdG9PYmplY3QgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KVxuXHQgICwgY2FsbCAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKVxuXHQgICwgaXNBcnJheUl0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKVxuXHQgICwgdG9MZW5ndGggICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KVxuXHQgICwgZ2V0SXRlckZuICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhX193ZWJwYWNrX3JlcXVpcmVfXygzOCkoZnVuY3Rpb24oaXRlcil7IEFycmF5LmZyb20oaXRlcik7IH0pLCAnQXJyYXknLCB7XG5cdCAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuXHQgIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlLyosIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKi8pe1xuXHQgICAgdmFyIE8gICAgICAgPSB0b09iamVjdChhcnJheUxpa2UpXG5cdCAgICAgICwgQyAgICAgICA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXlcblx0ICAgICAgLCBtYXBmbiAgID0gYXJndW1lbnRzWzFdXG5cdCAgICAgICwgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWRcblx0ICAgICAgLCBpbmRleCAgID0gMFxuXHQgICAgICAsIGl0ZXJGbiAgPSBnZXRJdGVyRm4oTylcblx0ICAgICAgLCBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG5cdCAgICBpZihtYXBwaW5nKW1hcGZuID0gY3R4KG1hcGZuLCBhcmd1bWVudHNbMl0sIDIpO1xuXHQgICAgLy8gaWYgb2JqZWN0IGlzbid0IGl0ZXJhYmxlIG9yIGl0J3MgYXJyYXkgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIHNpbXBsZSBjYXNlXG5cdCAgICBpZihpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSl7XG5cdCAgICAgIGZvcihpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQzsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpbmRleCsrKXtcblx0ICAgICAgICByZXN1bHRbaW5kZXhdID0gbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWU7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcblx0ICAgICAgZm9yKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcblx0ICAgICAgICByZXN1bHRbaW5kZXhdID0gbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuXHQgICAgcmV0dXJuIHJlc3VsdDtcblx0ICB9XG5cdH0pO1xuXG5cbi8qKiovIH0sXG4vKiAyNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5cdHZhciBhRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbiwgdGhhdCwgbGVuZ3RoKXtcblx0ICBhRnVuY3Rpb24oZm4pO1xuXHQgIGlmKHRoYXQgPT09IHVuZGVmaW5lZClyZXR1cm4gZm47XG5cdCAgc3dpdGNoKGxlbmd0aCl7XG5cdCAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbihhKXtcblx0ICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG5cdCAgICB9O1xuXHQgICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24oYSwgYil7XG5cdCAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuXHQgICAgfTtcblx0ICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKGEsIGIsIGMpe1xuXHQgICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcblx0ICAgIH07XG5cdCAgfVxuXHQgIHJldHVybiBmdW5jdGlvbigvKiAuLi5hcmdzICovKXtcblx0ICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuXHQgIH07XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxuXHR2YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3Jcblx0dmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcyl7XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG5cdCAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcblx0ICAgIGlmKHJldCAhPT0gdW5kZWZpbmVkKWFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG5cdCAgICB0aHJvdyBlO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDMxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYoIWlzT2JqZWN0KGl0KSl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxuXHR2YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMylcblx0ICAsIElURVJBVE9SICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gKEl0ZXJhdG9ycy5BcnJheSB8fCBBcnJheS5wcm90b3R5cGVbSVRFUkFUT1JdKSA9PT0gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gNy4xLjE1IFRvTGVuZ3RoXG5cdHZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpXG5cdCAgLCBtaW4gICAgICAgPSBNYXRoLm1pbjtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgY2xhc3NvZiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNilcblx0ICAsIElURVJBVE9SICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpXG5cdCAgLCBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uKGl0KXtcblx0ICBpZihpdCAhPSB1bmRlZmluZWQpcmV0dXJuIGl0W0lURVJBVE9SXSB8fCBpdFsnQEBpdGVyYXRvciddIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcblx0dmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpXG5cdCAgLCBUQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgndG9TdHJpbmdUYWcnKVxuXHQgIC8vIEVTMyB3cm9uZyBoZXJlXG5cdCAgLCBBUkcgPSBjb2YoZnVuY3Rpb24oKXsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgTywgVCwgQjtcblx0ICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcblx0ICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuXHQgICAgOiB0eXBlb2YgKFQgPSAoTyA9IE9iamVjdChpdCkpW1RBR10pID09ICdzdHJpbmcnID8gVFxuXHQgICAgLy8gYnVpbHRpblRhZyBjYXNlXG5cdCAgICA6IEFSRyA/IGNvZihPKVxuXHQgICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuXHQgICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgU1lNQk9MX0lURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJylcblx0ICAsIFNBRkVfQ0xPU0lORyAgICA9IGZhbHNlO1xuXHR0cnkge1xuXHQgIHZhciByaXRlciA9IFs3XVtTWU1CT0xfSVRFUkFUT1JdKCk7XG5cdCAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24oKXsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcblx0ICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbigpeyB0aHJvdyAyOyB9KTtcblx0fSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuXHQgIGlmKCFTQUZFX0NMT1NJTkcpcmV0dXJuIGZhbHNlO1xuXHQgIHZhciBzYWZlID0gZmFsc2U7XG5cdCAgdHJ5IHtcblx0ICAgIHZhciBhcnIgID0gWzddXG5cdCAgICAgICwgaXRlciA9IGFycltTWU1CT0xfSVRFUkFUT1JdKCk7XG5cdCAgICBpdGVyLm5leHQgPSBmdW5jdGlvbigpeyBzYWZlID0gdHJ1ZTsgfTtcblx0ICAgIGFycltTWU1CT0xfSVRFUkFUT1JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXI7IH07XG5cdCAgICBleGVjKGFycik7XG5cdCAgfSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuXHQgIHJldHVybiBzYWZlO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfZ2V0SXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9pc0l0ZXJhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSlbXCJkZWZhdWx0XCJdO1xuXG5cdGV4cG9ydHNbXCJkZWZhdWx0XCJdID0gKGZ1bmN0aW9uICgpIHtcblx0ICBmdW5jdGlvbiBzbGljZUl0ZXJhdG9yKGFyciwgaSkge1xuXHQgICAgdmFyIF9hcnIgPSBbXTtcblx0ICAgIHZhciBfbiA9IHRydWU7XG5cdCAgICB2YXIgX2QgPSBmYWxzZTtcblx0ICAgIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuXHQgICAgdHJ5IHtcblx0ICAgICAgZm9yICh2YXIgX2kgPSBfZ2V0SXRlcmF0b3IoYXJyKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcblx0ICAgICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG5cdCAgICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9IGNhdGNoIChlcnIpIHtcblx0ICAgICAgX2QgPSB0cnVlO1xuXHQgICAgICBfZSA9IGVycjtcblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICBpZiAoX2QpIHRocm93IF9lO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBfYXJyO1xuXHQgIH1cblxuXHQgIHJldHVybiBmdW5jdGlvbiAoYXJyLCBpKSB7XG5cdCAgICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdCAgICAgIHJldHVybiBhcnI7XG5cdCAgICB9IGVsc2UgaWYgKF9pc0l0ZXJhYmxlKE9iamVjdChhcnIpKSkge1xuXHQgICAgICByZXR1cm4gc2xpY2VJdGVyYXRvcihhcnIsIGkpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG5cdCAgICB9XG5cdCAgfTtcblx0fSkoKTtcblxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG4vKioqLyB9LFxuLyogNDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg0MSksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDQxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4KTtcblxuLyoqKi8gfSxcbi8qIDQyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcblx0dmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXHRJdGVyYXRvcnMuTm9kZUxpc3QgPSBJdGVyYXRvcnMuSFRNTENvbGxlY3Rpb24gPSBJdGVyYXRvcnMuQXJyYXk7XG5cbi8qKiovIH0sXG4vKiA0MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgc2V0VW5zY29wZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpXG5cdCAgLCBzdGVwICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSlcblx0ICAsIEl0ZXJhdG9ycyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKVxuXHQgICwgdG9JT2JqZWN0ICA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xuXG5cdC8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcblx0Ly8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcblx0Ly8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuXHQvLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4KShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24oaXRlcmF0ZWQsIGtpbmQpe1xuXHQgIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcblx0ICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuXHQgIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG5cdC8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxuXHR9LCBmdW5jdGlvbigpe1xuXHQgIHZhciBPICAgICA9IHRoaXMuX3Rcblx0ICAgICwga2luZCAgPSB0aGlzLl9rXG5cdCAgICAsIGluZGV4ID0gdGhpcy5faSsrO1xuXHQgIGlmKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKXtcblx0ICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG5cdCAgICByZXR1cm4gc3RlcCgxKTtcblx0ICB9XG5cdCAgaWYoa2luZCA9PSAna2V5cycgIClyZXR1cm4gc3RlcCgwLCBpbmRleCk7XG5cdCAgaWYoa2luZCA9PSAndmFsdWVzJylyZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG5cdCAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xuXHR9LCAndmFsdWVzJyk7XG5cblx0Ly8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuXHRJdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5cdHNldFVuc2NvcGUoJ2tleXMnKTtcblx0c2V0VW5zY29wZSgndmFsdWVzJyk7XG5cdHNldFVuc2NvcGUoJ2VudHJpZXMnKTtcblxuLyoqKi8gfSxcbi8qIDQ0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCl7IC8qIGVtcHR5ICovIH07XG5cbi8qKiovIH0sXG4vKiA0NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihkb25lLCB2YWx1ZSl7XG5cdCAgcmV0dXJuIHt2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZX07XG5cdH07XG5cbi8qKiovIH0sXG4vKiA0NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXHJcblx0dmFyIElPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ3KVxyXG5cdCAgLCBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcclxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcclxuXHQgIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcclxuXHR9O1xuXG4vKioqLyB9LFxuLyogNDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGluZGV4ZWQgb2JqZWN0LCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3Ncblx0dmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IDAgaW4gT2JqZWN0KCd6JykgPyBPYmplY3QgOiBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpXG5cdCAgLCBnZXQgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLmdldEl0ZXJhdG9yID0gZnVuY3Rpb24oaXQpe1xuXHQgIHZhciBpdGVyRm4gPSBnZXQoaXQpO1xuXHQgIGlmKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcblx0ICByZXR1cm4gYW5PYmplY3QoaXRlckZuLmNhbGwoaXQpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNTApLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA1MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7XG5cbi8qKiovIH0sXG4vKiA1MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGNsYXNzb2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzYpXG5cdCAgLCBJVEVSQVRPUiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKVxuXHQgICwgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuaXNJdGVyYWJsZSA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgTyA9IE9iamVjdChpdCk7XG5cdCAgcmV0dXJuIElURVJBVE9SIGluIE8gfHwgJ0BAaXRlcmF0b3InIGluIE8gfHwgSXRlcmF0b3JzLmhhc093blByb3BlcnR5KGNsYXNzb2YoTykpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg1MyksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDUzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKTtcblxuLyoqKi8gfSxcbi8qIDU0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7Ly8gVGhpcyBtZXRob2Qgb2Ygb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0IG5lZWRzIHRvIGJlXG5cdC8vIGtlcHQgaWRlbnRpY2FsIHRvIHRoZSB3YXkgaXQgaXMgb2J0YWluZWQgaW4gcnVudGltZS5qc1xuXHR2YXIgZyA9XG5cdCAgdHlwZW9mIGdsb2JhbCA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6XG5cdCAgdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6XG5cdCAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdGhpcztcblxuXHQvLyBVc2UgYGdldE93blByb3BlcnR5TmFtZXNgIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGNhbGxpbmdcblx0Ly8gYGhhc093blByb3BlcnR5YCBvbiB0aGUgZ2xvYmFsIGBzZWxmYCBvYmplY3QgaW4gYSB3b3JrZXIuIFNlZSAjMTgzLlxuXHR2YXIgaGFkUnVudGltZSA9IGcucmVnZW5lcmF0b3JSdW50aW1lICYmXG5cdCAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZykuaW5kZXhPZihcInJlZ2VuZXJhdG9yUnVudGltZVwiKSA+PSAwO1xuXG5cdC8vIFNhdmUgdGhlIG9sZCByZWdlbmVyYXRvclJ1bnRpbWUgaW4gY2FzZSBpdCBuZWVkcyB0byBiZSByZXN0b3JlZCBsYXRlci5cblx0dmFyIG9sZFJ1bnRpbWUgPSBoYWRSdW50aW1lICYmIGcucmVnZW5lcmF0b3JSdW50aW1lO1xuXG5cdC8vIEZvcmNlIHJlZXZhbHV0YXRpb24gb2YgcnVudGltZS5qcy5cblx0Zy5yZWdlbmVyYXRvclJ1bnRpbWUgPSB1bmRlZmluZWQ7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU1KTtcblxuXHRpZiAoaGFkUnVudGltZSkge1xuXHQgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHJ1bnRpbWUuXG5cdCAgZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSBvbGRSdW50aW1lO1xuXHR9IGVsc2Uge1xuXHQgIC8vIFJlbW92ZSB0aGUgZ2xvYmFsIHByb3BlcnR5IGFkZGVkIGJ5IHJ1bnRpbWUuanMuXG5cdCAgdHJ5IHtcblx0ICAgIGRlbGV0ZSBnLnJlZ2VuZXJhdG9yUnVudGltZTtcblx0ICB9IGNhdGNoKGUpIHtcblx0ICAgIGcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuXHQgIH1cblx0fVxuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogbW9kdWxlLmV4cG9ydHMsIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSgpKSkpXG5cbi8qKiovIH0sXG4vKiA1NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCwgcHJvY2Vzcykgey8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBodHRwczovL3Jhdy5naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL21hc3Rlci9MSUNFTlNFIGZpbGUuIEFuXG5cdCAqIGFkZGl0aW9uYWwgZ3JhbnQgb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpblxuXHQgKiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NylbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfU3ltYm9sJGl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MilbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfT2JqZWN0JGNyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1Byb21pc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KVtcImRlZmF1bHRcIl07XG5cblx0IShmdW5jdGlvbiAoZ2xvYmFsKSB7XG5cdCAgXCJ1c2Ugc3RyaWN0XCI7XG5cblx0ICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0ICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cblx0ICB2YXIgaXRlcmF0b3JTeW1ib2wgPSB0eXBlb2YgX1N5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIF9TeW1ib2wkaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG5cblx0ICB2YXIgaW5Nb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiO1xuXHQgIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTtcblx0ICBpZiAocnVudGltZSkge1xuXHQgICAgaWYgKGluTW9kdWxlKSB7XG5cdCAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSxcblx0ICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS5cblx0ICAgICAgbW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuXHQgICAgfVxuXHQgICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhc1xuXHQgICAgLy8gYWxyZWFkeSBkZWZpbmVkIGdsb2JhbGx5LlxuXHQgICAgcmV0dXJuO1xuXHQgIH1cblxuXHQgIC8vIERlZmluZSB0aGUgcnVudGltZSBnbG9iYWxseSAoYXMgZXhwZWN0ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpIGFzIGVpdGhlclxuXHQgIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cblx0ICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZSA9IGluTW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fTtcblxuXHQgIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcblx0ICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG5cdCAgICB2YXIgZ2VuZXJhdG9yID0gX09iamVjdCRjcmVhdGUoKG91dGVyRm4gfHwgR2VuZXJhdG9yKS5wcm90b3R5cGUpO1xuXG5cdCAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiB8fCBudWxsLCBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSkpO1xuXG5cdCAgICByZXR1cm4gZ2VuZXJhdG9yO1xuXHQgIH1cblx0ICBydW50aW1lLndyYXAgPSB3cmFwO1xuXG5cdCAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG5cdCAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG5cdCAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG5cdCAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuXHQgIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcblx0ICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG5cdCAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcblx0ICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcblx0ICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG5cdCAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuXHQgIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuXHQgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcblx0ICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcblx0ICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuXHQgIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cblx0ICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG5cdCAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuXHQgIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cblx0ICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcblx0ICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3Jcblx0ICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuXHQgIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG5cdCAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cblx0ICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG5cdCAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG5cdCAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZTtcblx0ICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuXHQgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG5cdCAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cblx0ICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuXHQgIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG5cdCAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuXHQgICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuXHQgICAgICBwcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChhcmcpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcblx0ICAgICAgfTtcblx0ICAgIH0pO1xuXHQgIH1cblxuXHQgIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uIChnZW5GdW4pIHtcblx0ICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3Rvcjtcblx0ICAgIHJldHVybiBjdG9yID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcblx0ICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cblx0ICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cblx0ICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIiA6IGZhbHNlO1xuXHQgIH07XG5cblx0ICBydW50aW1lLm1hcmsgPSBmdW5jdGlvbiAoZ2VuRnVuKSB7XG5cdCAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG5cdCAgICBnZW5GdW4ucHJvdG90eXBlID0gX09iamVjdCRjcmVhdGUoR3ApO1xuXHQgICAgcmV0dXJuIGdlbkZ1bjtcblx0ICB9O1xuXG5cdCAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG5cdCAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3Rcblx0ICAvLyBgdmFsdWUgaW5zdGFuY2VvZiBBd2FpdEFyZ3VtZW50YCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcblx0ICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLiBTb21lIG1heSBjb25zaWRlciB0aGUgbmFtZSBvZiB0aGlzIG1ldGhvZCB0b29cblx0ICAvLyBjdXRlc3ksIGJ1dCB0aGV5IGFyZSBjdXJtdWRnZW9ucy5cblx0ICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24gKGFyZykge1xuXHQgICAgcmV0dXJuIG5ldyBBd2FpdEFyZ3VtZW50KGFyZyk7XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIEF3YWl0QXJndW1lbnQoYXJnKSB7XG5cdCAgICB0aGlzLmFyZyA9IGFyZztcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikge1xuXHQgICAgLy8gVGhpcyBpbnZva2UgZnVuY3Rpb24gaXMgd3JpdHRlbiBpbiBhIHN0eWxlIHRoYXQgYXNzdW1lcyBzb21lXG5cdCAgICAvLyBjYWxsaW5nIGZ1bmN0aW9uIChvciBQcm9taXNlKSB3aWxsIGhhbmRsZSBleGNlcHRpb25zLlxuXHQgICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG5cdCAgICAgIHZhciByZXN1bHQgPSBnZW5lcmF0b3JbbWV0aG9kXShhcmcpO1xuXHQgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG5cdCAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEF3YWl0QXJndW1lbnQgPyBfUHJvbWlzZS5yZXNvbHZlKHZhbHVlLmFyZykudGhlbihpbnZva2VOZXh0LCBpbnZva2VUaHJvdykgOiBfUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uICh1bndyYXBwZWQpIHtcblx0ICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuXHQgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuXHQgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLiBJZiB0aGUgUHJvbWlzZSBpcyByZWplY3RlZCwgaG93ZXZlciwgdGhlXG5cdCAgICAgICAgLy8gcmVzdWx0IGZvciB0aGlzIGl0ZXJhdGlvbiB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWVcblx0ICAgICAgICAvLyByZWFzb24uIE5vdGUgdGhhdCByZWplY3Rpb25zIG9mIHlpZWxkZWQgUHJvbWlzZXMgYXJlIG5vdFxuXHQgICAgICAgIC8vIHRocm93biBiYWNrIGludG8gdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgYXMgaXMgdGhlIGNhc2Vcblx0ICAgICAgICAvLyB3aGVuIGFuIGF3YWl0ZWQgUHJvbWlzZSBpcyByZWplY3RlZC4gVGhpcyBkaWZmZXJlbmNlIGluXG5cdCAgICAgICAgLy8gYmVoYXZpb3IgYmV0d2VlbiB5aWVsZCBhbmQgYXdhaXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0XG5cdCAgICAgICAgLy8gYWxsb3dzIHRoZSBjb25zdW1lciB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIHRoZSB5aWVsZGVkXG5cdCAgICAgICAgLy8gcmVqZWN0aW9uIChzd2FsbG93IGl0IGFuZCBjb250aW51ZSwgbWFudWFsbHkgLnRocm93IGl0IGJhY2tcblx0ICAgICAgICAvLyBpbnRvIHRoZSBnZW5lcmF0b3IsIGFiYW5kb24gaXRlcmF0aW9uLCB3aGF0ZXZlcikuIFdpdGhcblx0ICAgICAgICAvLyBhd2FpdCwgYnkgY29udHJhc3QsIHRoZXJlIGlzIG5vIG9wcG9ydHVuaXR5IHRvIGV4YW1pbmUgdGhlXG5cdCAgICAgICAgLy8gcmVqZWN0aW9uIHJlYXNvbiBvdXRzaWRlIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIHNvIHRoZVxuXHQgICAgICAgIC8vIG9ubHkgb3B0aW9uIGlzIHRvIHRocm93IGl0IGZyb20gdGhlIGF3YWl0IGV4cHJlc3Npb24sIGFuZFxuXHQgICAgICAgIC8vIGxldCB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhbmRsZSB0aGUgZXhjZXB0aW9uLlxuXHQgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcblx0ICAgICAgICByZXR1cm4gcmVzdWx0O1xuXHQgICAgICB9KTtcblx0ICAgIH1cblxuXHQgICAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmIHByb2Nlc3MuZG9tYWluKSB7XG5cdCAgICAgIGludm9rZSA9IHByb2Nlc3MuZG9tYWluLmJpbmQoaW52b2tlKTtcblx0ICAgIH1cblxuXHQgICAgdmFyIGludm9rZU5leHQgPSBpbnZva2UuYmluZChnZW5lcmF0b3IsIFwibmV4dFwiKTtcblx0ICAgIHZhciBpbnZva2VUaHJvdyA9IGludm9rZS5iaW5kKGdlbmVyYXRvciwgXCJ0aHJvd1wiKTtcblx0ICAgIHZhciBpbnZva2VSZXR1cm4gPSBpbnZva2UuYmluZChnZW5lcmF0b3IsIFwicmV0dXJuXCIpO1xuXHQgICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuXHQgICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuXHQgICAgICB2YXIgZW5xdWV1ZVJlc3VsdCA9XG5cdCAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcblx0ICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG5cdCAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcblx0ICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cblx0ICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG5cdCAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG5cdCAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcblx0ICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcblx0ICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcblx0ICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcblx0ICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcblx0ICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuXHQgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIGludm9rZShtZXRob2QsIGFyZyk7XG5cdCAgICAgIH0pIDogbmV3IF9Qcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cdCAgICAgICAgcmVzb2x2ZShpbnZva2UobWV0aG9kLCBhcmcpKTtcblx0ICAgICAgfSk7XG5cblx0ICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZW5xdWV1ZVJlc3VsdCBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieVxuXHQgICAgICAvLyBsYXRlciBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG5cdCAgICAgIHByZXZpb3VzUHJvbWlzZSA9IGVucXVldWVSZXN1bHRbXCJjYXRjaFwiXShmdW5jdGlvbiAoaWdub3JlZCkge30pO1xuXG5cdCAgICAgIHJldHVybiBlbnF1ZXVlUmVzdWx0O1xuXHQgICAgfVxuXG5cdCAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuXHQgICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG5cdCAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuXHQgIH1cblxuXHQgIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG5cblx0ICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG5cdCAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG5cdCAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG5cdCAgcnVudGltZS5hc3luYyA9IGZ1bmN0aW9uIChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuXHQgICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcih3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSk7XG5cblx0ICAgIHJldHVybiBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbikgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cblx0ICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG5cdCAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuXHQgICAgfSk7XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuXHQgICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuXHQgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG5cdCAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcblx0ICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgIHRocm93IGFyZztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuXHQgICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcblx0ICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuXHQgICAgICB9XG5cblx0ICAgICAgd2hpbGUgKHRydWUpIHtcblx0ICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuXHQgICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuXHQgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJyZXR1cm5cIiB8fCBtZXRob2QgPT09IFwidGhyb3dcIiAmJiBkZWxlZ2F0ZS5pdGVyYXRvclttZXRob2RdID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgICAgLy8gQSByZXR1cm4gb3IgdGhyb3cgKHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyB0aHJvd1xuXHQgICAgICAgICAgICAvLyBtZXRob2QpIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cblx0ICAgICAgICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cblx0ICAgICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuXHQgICAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG5cdCAgICAgICAgICAgIHZhciByZXR1cm5NZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltcInJldHVyblwiXTtcblx0ICAgICAgICAgICAgaWYgKHJldHVybk1ldGhvZCkge1xuXHQgICAgICAgICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChyZXR1cm5NZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBhcmcpO1xuXHQgICAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcmV0dXJuIG1ldGhvZCB0aHJldyBhbiBleGNlcHRpb24sIGxldCB0aGF0XG5cdCAgICAgICAgICAgICAgICAvLyBleGNlcHRpb24gcHJldmFpbCBvdmVyIHRoZSBvcmlnaW5hbCByZXR1cm4gb3IgdGhyb3cuXG5cdCAgICAgICAgICAgICAgICBtZXRob2QgPSBcInRocm93XCI7XG5cdCAgICAgICAgICAgICAgICBhcmcgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgICAgICAgICAgY29udGludWU7XG5cdCAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuXHQgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHdpdGggdGhlIG91dGVyIHJldHVybiwgbm93IHRoYXQgdGhlIGRlbGVnYXRlXG5cdCAgICAgICAgICAgICAgLy8gaXRlcmF0b3IgaGFzIGJlZW4gdGVybWluYXRlZC5cblx0ICAgICAgICAgICAgICBjb250aW51ZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZGVsZWdhdGUuaXRlcmF0b3JbbWV0aG9kXSwgZGVsZWdhdGUuaXRlcmF0b3IsIGFyZyk7XG5cblx0ICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG5cdCAgICAgICAgICAgIC8vIExpa2UgcmV0dXJuaW5nIGdlbmVyYXRvci50aHJvdyh1bmNhdWdodCksIGJ1dCB3aXRob3V0IHRoZVxuXHQgICAgICAgICAgICAvLyBvdmVyaGVhZCBvZiBhbiBleHRyYSBmdW5jdGlvbiBjYWxsLlxuXHQgICAgICAgICAgICBtZXRob2QgPSBcInRocm93XCI7XG5cdCAgICAgICAgICAgIGFyZyA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAvLyBEZWxlZ2F0ZSBnZW5lcmF0b3IgcmFuIGFuZCBoYW5kbGVkIGl0cyBvd24gZXhjZXB0aW9ucyBzb1xuXHQgICAgICAgICAgLy8gcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBtZXRob2Qgd2FzLCB3ZSBjb250aW51ZSBhcyBpZiBpdCBpc1xuXHQgICAgICAgICAgLy8gXCJuZXh0XCIgd2l0aCBhbiB1bmRlZmluZWQgYXJnLlxuXHQgICAgICAgICAgbWV0aG9kID0gXCJuZXh0XCI7XG5cdCAgICAgICAgICBhcmcgPSB1bmRlZmluZWQ7XG5cblx0ICAgICAgICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblx0ICAgICAgICAgIGlmIChpbmZvLmRvbmUpIHtcblx0ICAgICAgICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cdCAgICAgICAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cdCAgICAgICAgICAgIHJldHVybiBpbmZvO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAobWV0aG9kID09PSBcIm5leHRcIikge1xuXHQgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkKSB7XG5cdCAgICAgICAgICAgIGNvbnRleHQuc2VudCA9IGFyZztcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIGNvbnRleHQuc2VudCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcblx0ICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcblx0ICAgICAgICAgICAgdGhyb3cgYXJnO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBpZiAoY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihhcmcpKSB7XG5cdCAgICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG5cdCAgICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG5cdCAgICAgICAgICAgIG1ldGhvZCA9IFwibmV4dFwiO1xuXHQgICAgICAgICAgICBhcmcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09IFwicmV0dXJuXCIpIHtcblx0ICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGFyZyk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuXHQgICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblx0ICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcblx0ICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cblx0ICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cblx0ICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lID8gR2VuU3RhdGVDb21wbGV0ZWQgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG5cdCAgICAgICAgICB2YXIgaW5mbyA9IHtcblx0ICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG5cdCAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuXHQgICAgICAgICAgfTtcblxuXHQgICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcblx0ICAgICAgICAgICAgaWYgKGNvbnRleHQuZGVsZWdhdGUgJiYgbWV0aG9kID09PSBcIm5leHRcIikge1xuXHQgICAgICAgICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG5cdCAgICAgICAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuXHQgICAgICAgICAgICAgIGFyZyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGluZm87XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuXHQgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuXHQgICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihhcmcpIGNhbGwgYWJvdmUuXG5cdCAgICAgICAgICBtZXRob2QgPSBcInRocm93XCI7XG5cdCAgICAgICAgICBhcmcgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfTtcblx0ICB9XG5cblx0ICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuXHQgIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cblx0ICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG5cdCAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIHRoaXM7XG5cdCAgfTtcblxuXHQgIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG5cdCAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG5cdCAgICBpZiAoMSBpbiBsb2NzKSB7XG5cdCAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcblx0ICAgIH1cblxuXHQgICAgaWYgKDIgaW4gbG9jcykge1xuXHQgICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcblx0ICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuXHQgICAgfVxuXG5cdCAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuXHQgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG5cdCAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG5cdCAgICBkZWxldGUgcmVjb3JkLmFyZztcblx0ICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuXHQgICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG5cdCAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG5cdCAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG5cdCAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuXHQgICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuXHQgICAgdGhpcy5yZXNldCh0cnVlKTtcblx0ICB9XG5cblx0ICBydW50aW1lLmtleXMgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG5cdCAgICB2YXIga2V5cyA9IFtdO1xuXHQgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuXHQgICAgICBrZXlzLnB1c2goa2V5KTtcblx0ICAgIH1cblx0ICAgIGtleXMucmV2ZXJzZSgpO1xuXG5cdCAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuXHQgICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cblx0ICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuXHQgICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcblx0ICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcblx0ICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuXHQgICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcblx0ICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuXHQgICAgICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG5cdCAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG5cdCAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuXHQgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXHQgICAgICByZXR1cm4gbmV4dDtcblx0ICAgIH07XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuXHQgICAgaWYgKGl0ZXJhYmxlKSB7XG5cdCAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcblx0ICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG5cdCAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcblx0ICAgICAgICByZXR1cm4gaXRlcmFibGU7XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcblx0ICAgICAgICB2YXIgaSA9IC0xLFxuXHQgICAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcblx0ICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcblx0ICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuXHQgICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcblx0ICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuXHQgICAgICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICAgICAgfTtcblxuXHQgICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cblx0ICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcblx0ICB9XG5cdCAgcnVudGltZS52YWx1ZXMgPSB2YWx1ZXM7XG5cblx0ICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuXHQgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuXHQgIH1cblxuXHQgIENvbnRleHQucHJvdG90eXBlID0ge1xuXHQgICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cblx0ICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldChza2lwVGVtcFJlc2V0KSB7XG5cdCAgICAgIHRoaXMucHJldiA9IDA7XG5cdCAgICAgIHRoaXMubmV4dCA9IDA7XG5cdCAgICAgIHRoaXMuc2VudCA9IHVuZGVmaW5lZDtcblx0ICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG5cdCAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG5cdCAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG5cdCAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuXHQgICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuXHQgICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcblx0ICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiYgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiYgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuXHQgICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHtcblx0ICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuXHQgICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuXHQgICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuXHQgICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcblx0ICAgICAgfVxuXG5cdCAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG5cdCAgICB9LFxuXG5cdCAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gZGlzcGF0Y2hFeGNlcHRpb24oZXhjZXB0aW9uKSB7XG5cdCAgICAgIGlmICh0aGlzLmRvbmUpIHtcblx0ICAgICAgICB0aHJvdyBleGNlcHRpb247XG5cdCAgICAgIH1cblxuXHQgICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG5cdCAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuXHQgICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuXHQgICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG5cdCAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXHQgICAgICAgIHJldHVybiAhIWNhdWdodDtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG5cdCAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuXHQgICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcblx0ICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuXHQgICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cblx0ICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcblx0ICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuXHQgICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG5cdCAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcblx0ICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXG5cdCAgICBhYnJ1cHQ6IGZ1bmN0aW9uIGFicnVwdCh0eXBlLCBhcmcpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJiBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcblx0ICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIGlmIChmaW5hbGx5RW50cnkgJiYgKHR5cGUgPT09IFwiYnJlYWtcIiB8fCB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuXHQgICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcblx0ICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG5cdCAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcblx0ICAgICAgfVxuXG5cdCAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuXHQgICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG5cdCAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cblx0ICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuXHQgICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXMuY29tcGxldGUocmVjb3JkKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuXHQgICAgfSxcblxuXHQgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlY29yZCwgYWZ0ZXJMb2MpIHtcblx0ICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHwgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuXHQgICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG5cdCAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcblx0ICAgICAgICB0aGlzLnJ2YWwgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG5cdCAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcblx0ICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgZmluaXNoOiBmdW5jdGlvbiBmaW5pc2goZmluYWxseUxvYykge1xuXHQgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdCAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuXHQgICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcblx0ICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuXHQgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXG5cdCAgICBcImNhdGNoXCI6IGZ1bmN0aW9uIF9jYXRjaCh0cnlMb2MpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcblx0ICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXHQgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcmV0dXJuIHRocm93bjtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblxuXHQgICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cblx0ICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG5cdCAgICB9LFxuXG5cdCAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiBkZWxlZ2F0ZVlpZWxkKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG5cdCAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG5cdCAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG5cdCAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcblx0ICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG5cdCAgICAgIH07XG5cblx0ICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG5cdCAgICB9XG5cdCAgfTtcblx0fSkoXG5cdC8vIEFtb25nIHRoZSB2YXJpb3VzIHRyaWNrcyBmb3Igb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWxcblx0Ly8gb2JqZWN0LCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBtb3N0IHJlbGlhYmxlIHRlY2huaXF1ZSB0aGF0IGRvZXMgbm90XG5cdC8vIHVzZSBpbmRpcmVjdCBldmFsICh3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSkuXG5cdHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOiB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiID8gd2luZG93IDogdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdW5kZWZpbmVkKTtcblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSksIF9fd2VicGFja19yZXF1aXJlX18oNTYpKSlcblxuLyoqKi8gfSxcbi8qIDU2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcblxuXHR2YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cdHZhciBxdWV1ZSA9IFtdO1xuXHR2YXIgZHJhaW5pbmcgPSBmYWxzZTtcblx0dmFyIGN1cnJlbnRRdWV1ZTtcblx0dmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuXHRmdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG5cdCAgICBkcmFpbmluZyA9IGZhbHNlO1xuXHQgICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG5cdCAgICB9XG5cdCAgICBpZiAocXVldWUubGVuZ3RoKSB7XG5cdCAgICAgICAgZHJhaW5RdWV1ZSgpO1xuXHQgICAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcblx0ICAgIGlmIChkcmFpbmluZykge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuXHQgICAgZHJhaW5pbmcgPSB0cnVlO1xuXG5cdCAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuXHQgICAgd2hpbGUobGVuKSB7XG5cdCAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG5cdCAgICAgICAgcXVldWUgPSBbXTtcblx0ICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG5cdCAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcblx0ICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG5cdCAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuXHQgICAgfVxuXHQgICAgY3VycmVudFF1ZXVlID0gbnVsbDtcblx0ICAgIGRyYWluaW5nID0gZmFsc2U7XG5cdCAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG5cdH1cblxuXHRwcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuXHQgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuXHQgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXHQgICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcblx0ICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG5cdCAgICAgICAgc2V0VGltZW91dChkcmFpblF1ZXVlLCAwKTtcblx0ICAgIH1cblx0fTtcblxuXHQvLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5cdGZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuXHQgICAgdGhpcy5mdW4gPSBmdW47XG5cdCAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG5cdH1cblx0SXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG5cdH07XG5cdHByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5cdHByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5cdHByb2Nlc3MuZW52ID0ge307XG5cdHByb2Nlc3MuYXJndiA9IFtdO1xuXHRwcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcblx0cHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5cdGZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5cdHByb2Nlc3Mub24gPSBub29wO1xuXHRwcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcblx0cHJvY2Vzcy5vbmNlID0gbm9vcDtcblx0cHJvY2Vzcy5vZmYgPSBub29wO1xuXHRwcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcblx0cHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xuXHRwcm9jZXNzLmVtaXQgPSBub29wO1xuXG5cdHByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cdH07XG5cblx0cHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcblx0cHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cdH07XG5cdHByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG5cblxuLyoqKi8gfSxcbi8qIDU3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNTgpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA1OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg1OSk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuU3ltYm9sO1xuXG4vKioqLyB9LFxuLyogNTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0Ly8gRUNNQVNjcmlwdCA2IHN5bWJvbHMgc2hpbVxuXHR2YXIgJCAgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgZ2xvYmFsICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgaGFzICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KVxuXHQgICwgU1VQUE9SVF9ERVNDICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KVxuXHQgICwgJGRlZiAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgJHJlZGVmICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKVxuXHQgICwgJGZhaWxzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KVxuXHQgICwgc2hhcmVkICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKVxuXHQgICwgc2V0VGFnICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KVxuXHQgICwgdWlkICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKVxuXHQgICwgd2tzICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKVxuXHQgICwga2V5T2YgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKVxuXHQgICwgJG5hbWVzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYxKVxuXHQgICwgZW51bUtleXMgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYyKVxuXHQgICwgaXNPYmplY3QgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKVxuXHQgICwgYW5PYmplY3QgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgdG9JT2JqZWN0ICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KVxuXHQgICwgY3JlYXRlRGVzYyAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KVxuXHQgICwgZ2V0RGVzYyAgICAgICAgPSAkLmdldERlc2Ncblx0ICAsIHNldERlc2MgICAgICAgID0gJC5zZXREZXNjXG5cdCAgLCBfY3JlYXRlICAgICAgICA9ICQuY3JlYXRlXG5cdCAgLCBnZXROYW1lcyAgICAgICA9ICRuYW1lcy5nZXRcblx0ICAsICRTeW1ib2wgICAgICAgID0gZ2xvYmFsLlN5bWJvbFxuXHQgICwgc2V0dGVyICAgICAgICAgPSBmYWxzZVxuXHQgICwgSElEREVOICAgICAgICAgPSB3a3MoJ19oaWRkZW4nKVxuXHQgICwgaXNFbnVtICAgICAgICAgPSAkLmlzRW51bVxuXHQgICwgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpXG5cdCAgLCBBbGxTeW1ib2xzICAgICA9IHNoYXJlZCgnc3ltYm9scycpXG5cdCAgLCB1c2VOYXRpdmUgICAgICA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbidcblx0ICAsIE9iamVjdFByb3RvICAgID0gT2JqZWN0LnByb3RvdHlwZTtcblxuXHQvLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcblx0dmFyIHNldFN5bWJvbERlc2MgPSBTVVBQT1JUX0RFU0MgJiYgJGZhaWxzKGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIF9jcmVhdGUoc2V0RGVzYyh7fSwgJ2EnLCB7XG5cdCAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBzZXREZXNjKHRoaXMsICdhJywge3ZhbHVlOiA3fSkuYTsgfVxuXHQgIH0pKS5hICE9IDc7XG5cdH0pID8gZnVuY3Rpb24oaXQsIGtleSwgRCl7XG5cdCAgdmFyIHByb3RvRGVzYyA9IGdldERlc2MoT2JqZWN0UHJvdG8sIGtleSk7XG5cdCAgaWYocHJvdG9EZXNjKWRlbGV0ZSBPYmplY3RQcm90b1trZXldO1xuXHQgIHNldERlc2MoaXQsIGtleSwgRCk7XG5cdCAgaWYocHJvdG9EZXNjICYmIGl0ICE9PSBPYmplY3RQcm90bylzZXREZXNjKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG5cdH0gOiBzZXREZXNjO1xuXG5cdHZhciB3cmFwID0gZnVuY3Rpb24odGFnKXtcblx0ICB2YXIgc3ltID0gQWxsU3ltYm9sc1t0YWddID0gX2NyZWF0ZSgkU3ltYm9sLnByb3RvdHlwZSk7XG5cdCAgc3ltLl9rID0gdGFnO1xuXHQgIFNVUFBPUlRfREVTQyAmJiBzZXR0ZXIgJiYgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7XG5cdCAgICBjb25maWd1cmFibGU6IHRydWUsXG5cdCAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlKXtcblx0ICAgICAgaWYoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSl0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuXHQgICAgICBzZXRTeW1ib2xEZXNjKHRoaXMsIHRhZywgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xuXHQgICAgfVxuXHQgIH0pO1xuXHQgIHJldHVybiBzeW07XG5cdH07XG5cblx0dmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpe1xuXHQgIGlmKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkpe1xuXHQgICAgaWYoIUQuZW51bWVyYWJsZSl7XG5cdCAgICAgIGlmKCFoYXMoaXQsIEhJRERFTikpc2V0RGVzYyhpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG5cdCAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZihoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKWl0W0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuXHQgICAgICBEID0gX2NyZWF0ZShELCB7ZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSl9KTtcblx0ICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG5cdCAgfSByZXR1cm4gc2V0RGVzYyhpdCwga2V5LCBEKTtcblx0fTtcblx0dmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCl7XG5cdCAgYW5PYmplY3QoaXQpO1xuXHQgIHZhciBrZXlzID0gZW51bUtleXMoUCA9IHRvSU9iamVjdChQKSlcblx0ICAgICwgaSAgICA9IDBcblx0ICAgICwgbCA9IGtleXMubGVuZ3RoXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShsID4gaSkkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cdHZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKXtcblx0ICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG5cdH07XG5cdHZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShrZXkpe1xuXHQgIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5KTtcblx0ICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldXG5cdCAgICA/IEUgOiB0cnVlO1xuXHR9O1xuXHR2YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KXtcblx0ICB2YXIgRCA9IGdldERlc2MoaXQgPSB0b0lPYmplY3QoaXQpLCBrZXkpO1xuXHQgIGlmKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSlELmVudW1lcmFibGUgPSB0cnVlO1xuXHQgIHJldHVybiBEO1xuXHR9O1xuXHR2YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcblx0ICB2YXIgbmFtZXMgID0gZ2V0TmFtZXModG9JT2JqZWN0KGl0KSlcblx0ICAgICwgcmVzdWx0ID0gW11cblx0ICAgICwgaSAgICAgID0gMFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZighaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4pcmVzdWx0LnB1c2goa2V5KTtcblx0ICByZXR1cm4gcmVzdWx0O1xuXHR9O1xuXHR2YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCl7XG5cdCAgdmFyIG5hbWVzICA9IGdldE5hbWVzKHRvSU9iamVjdChpdCkpXG5cdCAgICAsIHJlc3VsdCA9IFtdXG5cdCAgICAsIGkgICAgICA9IDBcblx0ICAgICwga2V5O1xuXHQgIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpaWYoaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pKXJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHQvLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcblx0aWYoIXVzZU5hdGl2ZSl7XG5cdCAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpe1xuXHQgICAgaWYodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3InKTtcblx0ICAgIHJldHVybiB3cmFwKHVpZChhcmd1bWVudHNbMF0pKTtcblx0ICB9O1xuXHQgICRyZWRlZigkU3ltYm9sLnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKXtcblx0ICAgIHJldHVybiB0aGlzLl9rO1xuXHQgIH0pO1xuXG5cdCAgJC5jcmVhdGUgICAgID0gJGNyZWF0ZTtcblx0ICAkLmlzRW51bSAgICAgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG5cdCAgJC5nZXREZXNjICAgID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblx0ICAkLnNldERlc2MgICAgPSAkZGVmaW5lUHJvcGVydHk7XG5cdCAgJC5zZXREZXNjcyAgID0gJGRlZmluZVByb3BlcnRpZXM7XG5cdCAgJC5nZXROYW1lcyAgID0gJG5hbWVzLmdldCA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuXHQgICQuZ2V0U3ltYm9scyA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblx0ICBpZihTVVBQT1JUX0RFU0MgJiYgIV9fd2VicGFja19yZXF1aXJlX18oOSkpe1xuXHQgICAgJHJlZGVmKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuXHQgIH1cblx0fVxuXG5cdC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG5cdGlmKCF1c2VOYXRpdmUgfHwgJGZhaWxzKGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFskU3ltYm9sKCldKSAhPSAnW251bGxdJztcblx0fSkpJHJlZGVmKCRTeW1ib2wucHJvdG90eXBlLCAndG9KU09OJywgZnVuY3Rpb24gdG9KU09OKCl7XG5cdCAgaWYodXNlTmF0aXZlICYmIGlzT2JqZWN0KHRoaXMpKXJldHVybiB0aGlzO1xuXHR9KTtcblxuXHR2YXIgc3ltYm9sU3RhdGljcyA9IHtcblx0ICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcblx0ICAnZm9yJzogZnVuY3Rpb24oa2V5KXtcblx0ICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcblx0ICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG5cdCAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcblx0ICB9LFxuXHQgIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuXHQgIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKGtleSl7XG5cdCAgICByZXR1cm4ga2V5T2YoU3ltYm9sUmVnaXN0cnksIGtleSk7XG5cdCAgfSxcblx0ICB1c2VTZXR0ZXI6IGZ1bmN0aW9uKCl7IHNldHRlciA9IHRydWU7IH0sXG5cdCAgdXNlU2ltcGxlOiBmdW5jdGlvbigpeyBzZXR0ZXIgPSBmYWxzZTsgfVxuXHR9O1xuXHQvLyAxOS40LjIuMiBTeW1ib2wuaGFzSW5zdGFuY2Vcblx0Ly8gMTkuNC4yLjMgU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZVxuXHQvLyAxOS40LjIuNCBTeW1ib2wuaXRlcmF0b3Jcblx0Ly8gMTkuNC4yLjYgU3ltYm9sLm1hdGNoXG5cdC8vIDE5LjQuMi44IFN5bWJvbC5yZXBsYWNlXG5cdC8vIDE5LjQuMi45IFN5bWJvbC5zZWFyY2hcblx0Ly8gMTkuNC4yLjEwIFN5bWJvbC5zcGVjaWVzXG5cdC8vIDE5LjQuMi4xMSBTeW1ib2wuc3BsaXRcblx0Ly8gMTkuNC4yLjEyIFN5bWJvbC50b1ByaW1pdGl2ZVxuXHQvLyAxOS40LjIuMTMgU3ltYm9sLnRvU3RyaW5nVGFnXG5cdC8vIDE5LjQuMi4xNCBTeW1ib2wudW5zY29wYWJsZXNcblx0JC5lYWNoLmNhbGwoKFxuXHQgICAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCwnICtcblx0ICAgICdzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuXHQgICkuc3BsaXQoJywnKSwgZnVuY3Rpb24oaXQpe1xuXHQgICAgdmFyIHN5bSA9IHdrcyhpdCk7XG5cdCAgICBzeW1ib2xTdGF0aWNzW2l0XSA9IHVzZU5hdGl2ZSA/IHN5bSA6IHdyYXAoc3ltKTtcblx0ICB9XG5cdCk7XG5cblx0c2V0dGVyID0gdHJ1ZTtcblxuXHQkZGVmKCRkZWYuRyArICRkZWYuVywge1N5bWJvbDogJFN5bWJvbH0pO1xuXG5cdCRkZWYoJGRlZi5TLCAnU3ltYm9sJywgc3ltYm9sU3RhdGljcyk7XG5cblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhdXNlTmF0aXZlLCAnT2JqZWN0Jywge1xuXHQgIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcblx0ICBjcmVhdGU6ICRjcmVhdGUsXG5cdCAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG5cdCAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcblx0ICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuXHQgIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuXHQgIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcblx0ICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG5cdCAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcblx0ICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcblx0ICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pXG5cdCAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG5cdH0pO1xuXG5cdC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cblx0c2V0VGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcblx0Ly8gMjAuMi4xLjkgTWF0aFtAQHRvU3RyaW5nVGFnXVxuXHRzZXRUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcblx0Ly8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cblx0c2V0VGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuXG4vKioqLyB9LFxuLyogNjAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciAkICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqZWN0LCBlbCl7XG5cdCAgdmFyIE8gICAgICA9IHRvSU9iamVjdChvYmplY3QpXG5cdCAgICAsIGtleXMgICA9ICQuZ2V0S2V5cyhPKVxuXHQgICAgLCBsZW5ndGggPSBrZXlzLmxlbmd0aFxuXHQgICAgLCBpbmRleCAgPSAwXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShsZW5ndGggPiBpbmRleClpZihPW2tleSA9IGtleXNbaW5kZXgrK11dID09PSBlbClyZXR1cm4ga2V5O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcblx0dmFyIHRvU3RyaW5nICA9IHt9LnRvU3RyaW5nXG5cdCAgLCB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KVxuXHQgICwgZ2V0TmFtZXMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSkuZ2V0TmFtZXM7XG5cblx0dmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuXHQgID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG5cdHZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uKGl0KXtcblx0ICB0cnkge1xuXHQgICAgcmV0dXJuIGdldE5hbWVzKGl0KTtcblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG5cdCAgfVxuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzLmdldCA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpe1xuXHQgIGlmKHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nKXJldHVybiBnZXRXaW5kb3dOYW1lcyhpdCk7XG5cdCAgcmV0dXJuIGdldE5hbWVzKHRvSU9iamVjdChpdCkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG5cdHZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHZhciBrZXlzICAgICAgID0gJC5nZXRLZXlzKGl0KVxuXHQgICAgLCBnZXRTeW1ib2xzID0gJC5nZXRTeW1ib2xzO1xuXHQgIGlmKGdldFN5bWJvbHMpe1xuXHQgICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KVxuXHQgICAgICAsIGlzRW51bSAgPSAkLmlzRW51bVxuXHQgICAgICAsIGkgICAgICAgPSAwXG5cdCAgICAgICwga2V5O1xuXHQgICAgd2hpbGUoc3ltYm9scy5sZW5ndGggPiBpKWlmKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKWtleXMucHVzaChrZXkpO1xuXHQgIH1cblx0ICByZXR1cm4ga2V5cztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNjQpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA2NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCl7XG5cdCAgcmV0dXJuICQuY3JlYXRlKFAsIEQpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg2NiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDY2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNjgpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLlByb21pc2U7XG5cbi8qKiovIH0sXG4vKiA2NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XG5cbi8qKiovIH0sXG4vKiA2OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBMSUJSQVJZICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KVxuXHQgICwgZ2xvYmFsICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5cdCAgLCBjdHggICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsIGNsYXNzb2YgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KVxuXHQgICwgJGRlZiAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgLCBpc09iamVjdCAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGFuT2JqZWN0ICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgYUZ1bmN0aW9uICA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpXG5cdCAgLCBzdHJpY3ROZXcgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSlcblx0ICAsIGZvck9mICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgc2V0UHJvdG8gICA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpLnNldFxuXHQgICwgc2FtZSAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzIpXG5cdCAgLCBzcGVjaWVzICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mylcblx0ICAsIFNQRUNJRVMgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnc3BlY2llcycpXG5cdCAgLCBSRUNPUkQgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMikoJ3JlY29yZCcpXG5cdCAgLCBhc2FwICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NClcblx0ICAsIFBST01JU0UgICAgPSAnUHJvbWlzZSdcblx0ICAsIHByb2Nlc3MgICAgPSBnbG9iYWwucHJvY2Vzc1xuXHQgICwgaXNOb2RlICAgICA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnXG5cdCAgLCBQICAgICAgICAgID0gZ2xvYmFsW1BST01JU0VdXG5cdCAgLCBXcmFwcGVyO1xuXG5cdHZhciB0ZXN0UmVzb2x2ZSA9IGZ1bmN0aW9uKHN1Yil7XG5cdCAgdmFyIHRlc3QgPSBuZXcgUChmdW5jdGlvbigpe30pO1xuXHQgIGlmKHN1Yil0ZXN0LmNvbnN0cnVjdG9yID0gT2JqZWN0O1xuXHQgIHJldHVybiBQLnJlc29sdmUodGVzdCkgPT09IHRlc3Q7XG5cdH07XG5cblx0dmFyIHVzZU5hdGl2ZSA9IGZ1bmN0aW9uKCl7XG5cdCAgdmFyIHdvcmtzID0gZmFsc2U7XG5cdCAgZnVuY3Rpb24gUDIoeCl7XG5cdCAgICB2YXIgc2VsZiA9IG5ldyBQKHgpO1xuXHQgICAgc2V0UHJvdG8oc2VsZiwgUDIucHJvdG90eXBlKTtcblx0ICAgIHJldHVybiBzZWxmO1xuXHQgIH1cblx0ICB0cnkge1xuXHQgICAgd29ya3MgPSBQICYmIFAucmVzb2x2ZSAmJiB0ZXN0UmVzb2x2ZSgpO1xuXHQgICAgc2V0UHJvdG8oUDIsIFApO1xuXHQgICAgUDIucHJvdG90eXBlID0gJC5jcmVhdGUoUC5wcm90b3R5cGUsIHtjb25zdHJ1Y3Rvcjoge3ZhbHVlOiBQMn19KTtcblx0ICAgIC8vIGFjdHVhbCBGaXJlZm94IGhhcyBicm9rZW4gc3ViY2xhc3Mgc3VwcG9ydCwgdGVzdCB0aGF0XG5cdCAgICBpZighKFAyLnJlc29sdmUoNSkudGhlbihmdW5jdGlvbigpe30pIGluc3RhbmNlb2YgUDIpKXtcblx0ICAgICAgd29ya3MgPSBmYWxzZTtcblx0ICAgIH1cblx0ICAgIC8vIGFjdHVhbCBWOCBidWcsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTYyXG5cdCAgICBpZih3b3JrcyAmJiBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSl7XG5cdCAgICAgIHZhciB0aGVuYWJsZVRoZW5Hb3R0ZW4gPSBmYWxzZTtcblx0ICAgICAgUC5yZXNvbHZlKCQuc2V0RGVzYyh7fSwgJ3RoZW4nLCB7XG5cdCAgICAgICAgZ2V0OiBmdW5jdGlvbigpeyB0aGVuYWJsZVRoZW5Hb3R0ZW4gPSB0cnVlOyB9XG5cdCAgICAgIH0pKTtcblx0ICAgICAgd29ya3MgPSB0aGVuYWJsZVRoZW5Hb3R0ZW47XG5cdCAgICB9XG5cdCAgfSBjYXRjaChlKXsgd29ya3MgPSBmYWxzZTsgfVxuXHQgIHJldHVybiB3b3Jrcztcblx0fSgpO1xuXG5cdC8vIGhlbHBlcnNcblx0dmFyIGlzUHJvbWlzZSA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXNPYmplY3QoaXQpICYmICh1c2VOYXRpdmUgPyBjbGFzc29mKGl0KSA9PSAnUHJvbWlzZScgOiBSRUNPUkQgaW4gaXQpO1xuXHR9O1xuXHR2YXIgc2FtZUNvbnN0cnVjdG9yID0gZnVuY3Rpb24oYSwgYil7XG5cdCAgLy8gbGlicmFyeSB3cmFwcGVyIHNwZWNpYWwgY2FzZVxuXHQgIGlmKExJQlJBUlkgJiYgYSA9PT0gUCAmJiBiID09PSBXcmFwcGVyKXJldHVybiB0cnVlO1xuXHQgIHJldHVybiBzYW1lKGEsIGIpO1xuXHR9O1xuXHR2YXIgZ2V0Q29uc3RydWN0b3IgPSBmdW5jdGlvbihDKXtcblx0ICB2YXIgUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdO1xuXHQgIHJldHVybiBTICE9IHVuZGVmaW5lZCA/IFMgOiBDO1xuXHR9O1xuXHR2YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgdGhlbjtcblx0ICByZXR1cm4gaXNPYmplY3QoaXQpICYmIHR5cGVvZiAodGhlbiA9IGl0LnRoZW4pID09ICdmdW5jdGlvbicgPyB0aGVuIDogZmFsc2U7XG5cdH07XG5cdHZhciBub3RpZnkgPSBmdW5jdGlvbihyZWNvcmQsIGlzUmVqZWN0KXtcblx0ICBpZihyZWNvcmQubilyZXR1cm47XG5cdCAgcmVjb3JkLm4gPSB0cnVlO1xuXHQgIHZhciBjaGFpbiA9IHJlY29yZC5jO1xuXHQgIGFzYXAoZnVuY3Rpb24oKXtcblx0ICAgIHZhciB2YWx1ZSA9IHJlY29yZC52XG5cdCAgICAgICwgb2sgICAgPSByZWNvcmQucyA9PSAxXG5cdCAgICAgICwgaSAgICAgPSAwO1xuXHQgICAgdmFyIHJ1biA9IGZ1bmN0aW9uKHJlYWN0KXtcblx0ICAgICAgdmFyIGNiID0gb2sgPyByZWFjdC5vayA6IHJlYWN0LmZhaWxcblx0ICAgICAgICAsIHJldCwgdGhlbjtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBpZihjYil7XG5cdCAgICAgICAgICBpZighb2spcmVjb3JkLmggPSB0cnVlO1xuXHQgICAgICAgICAgcmV0ID0gY2IgPT09IHRydWUgPyB2YWx1ZSA6IGNiKHZhbHVlKTtcblx0ICAgICAgICAgIGlmKHJldCA9PT0gcmVhY3QuUCl7XG5cdCAgICAgICAgICAgIHJlYWN0LnJlaihUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYodGhlbiA9IGlzVGhlbmFibGUocmV0KSl7XG5cdCAgICAgICAgICAgIHRoZW4uY2FsbChyZXQsIHJlYWN0LnJlcywgcmVhY3QucmVqKTtcblx0ICAgICAgICAgIH0gZWxzZSByZWFjdC5yZXMocmV0KTtcblx0ICAgICAgICB9IGVsc2UgcmVhY3QucmVqKHZhbHVlKTtcblx0ICAgICAgfSBjYXRjaChlcnIpe1xuXHQgICAgICAgIHJlYWN0LnJlaihlcnIpO1xuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgICAgd2hpbGUoY2hhaW4ubGVuZ3RoID4gaSlydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG5cdCAgICBjaGFpbi5sZW5ndGggPSAwO1xuXHQgICAgcmVjb3JkLm4gPSBmYWxzZTtcblx0ICAgIGlmKGlzUmVqZWN0KXNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0ICAgICAgdmFyIHByb21pc2UgPSByZWNvcmQucFxuXHQgICAgICAgICwgaGFuZGxlciwgY29uc29sZTtcblx0ICAgICAgaWYoaXNVbmhhbmRsZWQocHJvbWlzZSkpe1xuXHQgICAgICAgIGlmKGlzTm9kZSl7XG5cdCAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcblx0ICAgICAgICB9IGVsc2UgaWYoaGFuZGxlciA9IGdsb2JhbC5vbnVuaGFuZGxlZHJlamVjdGlvbil7XG5cdCAgICAgICAgICBoYW5kbGVyKHtwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHZhbHVlfSk7XG5cdCAgICAgICAgfSBlbHNlIGlmKChjb25zb2xlID0gZ2xvYmFsLmNvbnNvbGUpICYmIGNvbnNvbGUuZXJyb3Ipe1xuXHQgICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSByZWNvcmQuYSA9IHVuZGVmaW5lZDtcblx0ICAgIH0sIDEpO1xuXHQgIH0pO1xuXHR9O1xuXHR2YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbihwcm9taXNlKXtcblx0ICB2YXIgcmVjb3JkID0gcHJvbWlzZVtSRUNPUkRdXG5cdCAgICAsIGNoYWluICA9IHJlY29yZC5hIHx8IHJlY29yZC5jXG5cdCAgICAsIGkgICAgICA9IDBcblx0ICAgICwgcmVhY3Q7XG5cdCAgaWYocmVjb3JkLmgpcmV0dXJuIGZhbHNlO1xuXHQgIHdoaWxlKGNoYWluLmxlbmd0aCA+IGkpe1xuXHQgICAgcmVhY3QgPSBjaGFpbltpKytdO1xuXHQgICAgaWYocmVhY3QuZmFpbCB8fCAhaXNVbmhhbmRsZWQocmVhY3QuUCkpcmV0dXJuIGZhbHNlO1xuXHQgIH0gcmV0dXJuIHRydWU7XG5cdH07XG5cdHZhciAkcmVqZWN0ID0gZnVuY3Rpb24odmFsdWUpe1xuXHQgIHZhciByZWNvcmQgPSB0aGlzO1xuXHQgIGlmKHJlY29yZC5kKXJldHVybjtcblx0ICByZWNvcmQuZCA9IHRydWU7XG5cdCAgcmVjb3JkID0gcmVjb3JkLnIgfHwgcmVjb3JkOyAvLyB1bndyYXBcblx0ICByZWNvcmQudiA9IHZhbHVlO1xuXHQgIHJlY29yZC5zID0gMjtcblx0ICByZWNvcmQuYSA9IHJlY29yZC5jLnNsaWNlKCk7XG5cdCAgbm90aWZ5KHJlY29yZCwgdHJ1ZSk7XG5cdH07XG5cdHZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uKHZhbHVlKXtcblx0ICB2YXIgcmVjb3JkID0gdGhpc1xuXHQgICAgLCB0aGVuO1xuXHQgIGlmKHJlY29yZC5kKXJldHVybjtcblx0ICByZWNvcmQuZCA9IHRydWU7XG5cdCAgcmVjb3JkID0gcmVjb3JkLnIgfHwgcmVjb3JkOyAvLyB1bndyYXBcblx0ICB0cnkge1xuXHQgICAgaWYodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKXtcblx0ICAgICAgYXNhcChmdW5jdGlvbigpe1xuXHQgICAgICAgIHZhciB3cmFwcGVyID0ge3I6IHJlY29yZCwgZDogZmFsc2V9OyAvLyB3cmFwXG5cdCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgIHRoZW4uY2FsbCh2YWx1ZSwgY3R4KCRyZXNvbHZlLCB3cmFwcGVyLCAxKSwgY3R4KCRyZWplY3QsIHdyYXBwZXIsIDEpKTtcblx0ICAgICAgICB9IGNhdGNoKGUpe1xuXHQgICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZWNvcmQudiA9IHZhbHVlO1xuXHQgICAgICByZWNvcmQucyA9IDE7XG5cdCAgICAgIG5vdGlmeShyZWNvcmQsIGZhbHNlKTtcblx0ICAgIH1cblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgJHJlamVjdC5jYWxsKHtyOiByZWNvcmQsIGQ6IGZhbHNlfSwgZSk7IC8vIHdyYXBcblx0ICB9XG5cdH07XG5cblx0Ly8gY29uc3RydWN0b3IgcG9seWZpbGxcblx0aWYoIXVzZU5hdGl2ZSl7XG5cdCAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcblx0ICBQID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcil7XG5cdCAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuXHQgICAgdmFyIHJlY29yZCA9IHtcblx0ICAgICAgcDogc3RyaWN0TmV3KHRoaXMsIFAsIFBST01JU0UpLCAgICAgICAgIC8vIDwtIHByb21pc2Vcblx0ICAgICAgYzogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuXHQgICAgICBhOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcblx0ICAgICAgczogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG5cdCAgICAgIGQ6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBkb25lXG5cdCAgICAgIHY6IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSB2YWx1ZVxuXHQgICAgICBoOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gaGFuZGxlZCByZWplY3Rpb25cblx0ICAgICAgbjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIG5vdGlmeVxuXHQgICAgfTtcblx0ICAgIHRoaXNbUkVDT1JEXSA9IHJlY29yZDtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgcmVjb3JkLCAxKSwgY3R4KCRyZWplY3QsIHJlY29yZCwgMSkpO1xuXHQgICAgfSBjYXRjaChlcnIpe1xuXHQgICAgICAkcmVqZWN0LmNhbGwocmVjb3JkLCBlcnIpO1xuXHQgICAgfVxuXHQgIH07XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXyg3OSkoUC5wcm90b3R5cGUsIHtcblx0ICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG5cdCAgICB0aGVuOiBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKXtcblx0ICAgICAgdmFyIFMgPSBhbk9iamVjdChhbk9iamVjdCh0aGlzKS5jb25zdHJ1Y3RvcilbU1BFQ0lFU107XG5cdCAgICAgIHZhciByZWFjdCA9IHtcblx0ICAgICAgICBvazogICB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZSxcblx0ICAgICAgICBmYWlsOiB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICA/IG9uUmVqZWN0ZWQgIDogZmFsc2Vcblx0ICAgICAgfTtcblx0ICAgICAgdmFyIHByb21pc2UgPSByZWFjdC5QID0gbmV3IChTICE9IHVuZGVmaW5lZCA/IFMgOiBQKShmdW5jdGlvbihyZXMsIHJlail7XG5cdCAgICAgICAgcmVhY3QucmVzID0gcmVzO1xuXHQgICAgICAgIHJlYWN0LnJlaiA9IHJlajtcblx0ICAgICAgfSk7XG5cdCAgICAgIGFGdW5jdGlvbihyZWFjdC5yZXMpO1xuXHQgICAgICBhRnVuY3Rpb24ocmVhY3QucmVqKTtcblx0ICAgICAgdmFyIHJlY29yZCA9IHRoaXNbUkVDT1JEXTtcblx0ICAgICAgcmVjb3JkLmMucHVzaChyZWFjdCk7XG5cdCAgICAgIGlmKHJlY29yZC5hKXJlY29yZC5hLnB1c2gocmVhY3QpO1xuXHQgICAgICBpZihyZWNvcmQucylub3RpZnkocmVjb3JkLCBmYWxzZSk7XG5cdCAgICAgIHJldHVybiBwcm9taXNlO1xuXHQgICAgfSxcblx0ICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG5cdCAgICAnY2F0Y2gnOiBmdW5jdGlvbihvblJlamVjdGVkKXtcblx0ICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuXHQgICAgfVxuXHQgIH0pO1xuXHR9XG5cblx0Ly8gZXhwb3J0XG5cdCRkZWYoJGRlZi5HICsgJGRlZi5XICsgJGRlZi5GICogIXVzZU5hdGl2ZSwge1Byb21pc2U6IFB9KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXygyNSkoUCwgUFJPTUlTRSk7XG5cdHNwZWNpZXMoUCk7XG5cdHNwZWNpZXMoV3JhcHBlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpW1BST01JU0VdKTtcblxuXHQvLyBzdGF0aWNzXG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogIXVzZU5hdGl2ZSwgUFJPTUlTRSwge1xuXHQgIC8vIDI1LjQuNC41IFByb21pc2UucmVqZWN0KHIpXG5cdCAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocil7XG5cdCAgICByZXR1cm4gbmV3IHRoaXMoZnVuY3Rpb24ocmVzLCByZWopeyByZWoocik7IH0pO1xuXHQgIH1cblx0fSk7XG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogKCF1c2VOYXRpdmUgfHwgdGVzdFJlc29sdmUodHJ1ZSkpLCBQUk9NSVNFLCB7XG5cdCAgLy8gMjUuNC40LjYgUHJvbWlzZS5yZXNvbHZlKHgpXG5cdCAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KXtcblx0ICAgIHJldHVybiBpc1Byb21pc2UoeCkgJiYgc2FtZUNvbnN0cnVjdG9yKHguY29uc3RydWN0b3IsIHRoaXMpXG5cdCAgICAgID8geCA6IG5ldyB0aGlzKGZ1bmN0aW9uKHJlcyl7IHJlcyh4KTsgfSk7XG5cdCAgfVxuXHR9KTtcblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhKHVzZU5hdGl2ZSAmJiBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KShmdW5jdGlvbihpdGVyKXtcblx0ICBQLmFsbChpdGVyKVsnY2F0Y2gnXShmdW5jdGlvbigpe30pO1xuXHR9KSksIFBST01JU0UsIHtcblx0ICAvLyAyNS40LjQuMSBQcm9taXNlLmFsbChpdGVyYWJsZSlcblx0ICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSl7XG5cdCAgICB2YXIgQyAgICAgID0gZ2V0Q29uc3RydWN0b3IodGhpcylcblx0ICAgICAgLCB2YWx1ZXMgPSBbXTtcblx0ICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbihyZXMsIHJlail7XG5cdCAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgdmFsdWVzLnB1c2gsIHZhbHVlcyk7XG5cdCAgICAgIHZhciByZW1haW5pbmcgPSB2YWx1ZXMubGVuZ3RoXG5cdCAgICAgICAgLCByZXN1bHRzICAgPSBBcnJheShyZW1haW5pbmcpO1xuXHQgICAgICBpZihyZW1haW5pbmcpJC5lYWNoLmNhbGwodmFsdWVzLCBmdW5jdGlvbihwcm9taXNlLCBpbmRleCl7XG5cdCAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24odmFsdWUpe1xuXHQgICAgICAgICAgcmVzdWx0c1tpbmRleF0gPSB2YWx1ZTtcblx0ICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlcyhyZXN1bHRzKTtcblx0ICAgICAgICB9LCByZWopO1xuXHQgICAgICB9KTtcblx0ICAgICAgZWxzZSByZXMocmVzdWx0cyk7XG5cdCAgICB9KTtcblx0ICB9LFxuXHQgIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcblx0ICByYWNlOiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKXtcblx0ICAgIHZhciBDID0gZ2V0Q29uc3RydWN0b3IodGhpcyk7XG5cdCAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24ocmVzLCByZWope1xuXHQgICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uKHByb21pc2Upe1xuXHQgICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKHJlcywgcmVqKTtcblx0ICAgICAgfSk7XG5cdCAgICB9KTtcblx0ICB9XG5cdH0pO1xuXG4vKioqLyB9LFxuLyogNjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIENvbnN0cnVjdG9yLCBuYW1lKXtcblx0ICBpZighKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKXRocm93IFR5cGVFcnJvcihuYW1lICsgXCI6IHVzZSB0aGUgJ25ldycgb3BlcmF0b3IhXCIpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDcwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgY3R4ICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgY2FsbCAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKVxuXHQgICwgaXNBcnJheUl0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKVxuXHQgICwgYW5PYmplY3QgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgdG9MZW5ndGggICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KVxuXHQgICwgZ2V0SXRlckZuICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdGVyYWJsZSwgZW50cmllcywgZm4sIHRoYXQpe1xuXHQgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oaXRlcmFibGUpXG5cdCAgICAsIGYgICAgICA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKVxuXHQgICAgLCBpbmRleCAgPSAwXG5cdCAgICAsIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3I7XG5cdCAgaWYodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKXRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuXHQgIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuXHQgIGlmKGlzQXJyYXlJdGVyKGl0ZXJGbikpZm9yKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcblx0ICAgIGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcblx0ICB9IGVsc2UgZm9yKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7ICl7XG5cdCAgICBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG5cdC8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cdHZhciBnZXREZXNjICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLmdldERlc2Ncblx0ICAsIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG5cdHZhciBjaGVjayA9IGZ1bmN0aW9uKE8sIHByb3RvKXtcblx0ICBhbk9iamVjdChPKTtcblx0ICBpZighaXNPYmplY3QocHJvdG8pICYmIHByb3RvICE9PSBudWxsKXRocm93IFR5cGVFcnJvcihwcm90byArIFwiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlIVwiKTtcblx0fTtcblx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgc2V0OiBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b1xuXHQgICAgZnVuY3Rpb24odGVzdCwgYnVnZ3ksIHNldCl7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgc2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNykoRnVuY3Rpb24uY2FsbCwgZ2V0RGVzYyhPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcblx0ICAgICAgICBzZXQodGVzdCwgW10pO1xuXHQgICAgICAgIGJ1Z2d5ID0gISh0ZXN0IGluc3RhbmNlb2YgQXJyYXkpO1xuXHQgICAgICB9IGNhdGNoKGUpeyBidWdneSA9IHRydWU7IH1cblx0ICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKXtcblx0ICAgICAgICBjaGVjayhPLCBwcm90byk7XG5cdCAgICAgICAgaWYoYnVnZ3kpTy5fX3Byb3RvX18gPSBwcm90bztcblx0ICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG5cdCAgICAgICAgcmV0dXJuIE87XG5cdCAgICAgIH07XG5cdCAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuXHQgIGNoZWNrOiBjaGVja1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmlzIHx8IGZ1bmN0aW9uIGlzKHgsIHkpe1xuXHQgIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgU1BFQ0lFUyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdzcGVjaWVzJyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQyl7XG5cdCAgaWYoX193ZWJwYWNrX3JlcXVpcmVfXygxNykgJiYgIShTUEVDSUVTIGluIEMpKSQuc2V0RGVzYyhDLCBTUEVDSUVTLCB7XG5cdCAgICBjb25maWd1cmFibGU6IHRydWUsXG5cdCAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzOyB9XG5cdCAgfSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGdsb2JhbCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXHJcblx0ICAsIG1hY3JvdGFzayA9IF9fd2VicGFja19yZXF1aXJlX18oNzUpLnNldFxyXG5cdCAgLCBPYnNlcnZlciAgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlclxyXG5cdCAgLCBwcm9jZXNzICAgPSBnbG9iYWwucHJvY2Vzc1xyXG5cdCAgLCBpc05vZGUgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KShwcm9jZXNzKSA9PSAncHJvY2VzcydcclxuXHQgICwgaGVhZCwgbGFzdCwgbm90aWZ5O1xyXG5cclxuXHR2YXIgZmx1c2ggPSBmdW5jdGlvbigpe1xyXG5cdCAgdmFyIHBhcmVudCwgZG9tYWluO1xyXG5cdCAgaWYoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpe1xyXG5cdCAgICBwcm9jZXNzLmRvbWFpbiA9IG51bGw7XHJcblx0ICAgIHBhcmVudC5leGl0KCk7XHJcblx0ICB9XHJcblx0ICB3aGlsZShoZWFkKXtcclxuXHQgICAgZG9tYWluID0gaGVhZC5kb21haW47XHJcblx0ICAgIGlmKGRvbWFpbilkb21haW4uZW50ZXIoKTtcclxuXHQgICAgaGVhZC5mbi5jYWxsKCk7IC8vIDwtIGN1cnJlbnRseSB3ZSB1c2UgaXQgb25seSBmb3IgUHJvbWlzZSAtIHRyeSAvIGNhdGNoIG5vdCByZXF1aXJlZFxyXG5cdCAgICBpZihkb21haW4pZG9tYWluLmV4aXQoKTtcclxuXHQgICAgaGVhZCA9IGhlYWQubmV4dDtcclxuXHQgIH0gbGFzdCA9IHVuZGVmaW5lZDtcclxuXHQgIGlmKHBhcmVudClwYXJlbnQuZW50ZXIoKTtcclxuXHR9XHJcblxyXG5cdC8vIE5vZGUuanNcclxuXHRpZihpc05vZGUpe1xyXG5cdCAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcclxuXHQgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XHJcblx0ICB9O1xyXG5cdC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlclxyXG5cdH0gZWxzZSBpZihPYnNlcnZlcil7XHJcblx0ICB2YXIgdG9nZ2xlID0gMVxyXG5cdCAgICAsIG5vZGUgICA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcclxuXHQgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xyXG5cdCAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcclxuXHQgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gLXRvZ2dsZTtcclxuXHQgIH07XHJcblx0Ly8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcclxuXHQvLyAtIHNldEltbWVkaWF0ZVxyXG5cdC8vIC0gTWVzc2FnZUNoYW5uZWxcclxuXHQvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXHJcblx0Ly8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcclxuXHQvLyAtIHNldFRpbWVvdXRcclxuXHR9IGVsc2Uge1xyXG5cdCAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcclxuXHQgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxyXG5cdCAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcclxuXHQgIH07XHJcblx0fVxyXG5cclxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGFzYXAoZm4pe1xyXG5cdCAgdmFyIHRhc2sgPSB7Zm46IGZuLCBuZXh0OiB1bmRlZmluZWQsIGRvbWFpbjogaXNOb2RlICYmIHByb2Nlc3MuZG9tYWlufTtcclxuXHQgIGlmKGxhc3QpbGFzdC5uZXh0ID0gdGFzaztcclxuXHQgIGlmKCFoZWFkKXtcclxuXHQgICAgaGVhZCA9IHRhc2s7XHJcblx0ICAgIG5vdGlmeSgpO1xyXG5cdCAgfSBsYXN0ID0gdGFzaztcclxuXHR9O1xuXG4vKioqLyB9LFxuLyogNzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIGN0eCAgICAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpXG5cdCAgLCBpbnZva2UgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc2KVxuXHQgICwgaHRtbCAgICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nylcblx0ICAsIGNlbCAgICAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzgpXG5cdCAgLCBnbG9iYWwgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgcHJvY2VzcyAgICAgICAgICAgID0gZ2xvYmFsLnByb2Nlc3Ncblx0ICAsIHNldFRhc2sgICAgICAgICAgICA9IGdsb2JhbC5zZXRJbW1lZGlhdGVcblx0ICAsIGNsZWFyVGFzayAgICAgICAgICA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZVxuXHQgICwgTWVzc2FnZUNoYW5uZWwgICAgID0gZ2xvYmFsLk1lc3NhZ2VDaGFubmVsXG5cdCAgLCBjb3VudGVyICAgICAgICAgICAgPSAwXG5cdCAgLCBxdWV1ZSAgICAgICAgICAgICAgPSB7fVxuXHQgICwgT05SRUFEWVNUQVRFQ0hBTkdFID0gJ29ucmVhZHlzdGF0ZWNoYW5nZSdcblx0ICAsIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xuXHR2YXIgcnVuID0gZnVuY3Rpb24oKXtcblx0ICB2YXIgaWQgPSArdGhpcztcblx0ICBpZihxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpe1xuXHQgICAgdmFyIGZuID0gcXVldWVbaWRdO1xuXHQgICAgZGVsZXRlIHF1ZXVlW2lkXTtcblx0ICAgIGZuKCk7XG5cdCAgfVxuXHR9O1xuXHR2YXIgbGlzdG5lciA9IGZ1bmN0aW9uKGV2ZW50KXtcblx0ICBydW4uY2FsbChldmVudC5kYXRhKTtcblx0fTtcblx0Ly8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuXHRpZighc2V0VGFzayB8fCAhY2xlYXJUYXNrKXtcblx0ICBzZXRUYXNrID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGZuKXtcblx0ICAgIHZhciBhcmdzID0gW10sIGkgPSAxO1xuXHQgICAgd2hpbGUoYXJndW1lbnRzLmxlbmd0aCA+IGkpYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcblx0ICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbigpe1xuXHQgICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG5cdCAgICB9O1xuXHQgICAgZGVmZXIoY291bnRlcik7XG5cdCAgICByZXR1cm4gY291bnRlcjtcblx0ICB9O1xuXHQgIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKXtcblx0ICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG5cdCAgfTtcblx0ICAvLyBOb2RlLmpzIDAuOC1cblx0ICBpZihfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KShwcm9jZXNzKSA9PSAncHJvY2Vzcycpe1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIHByb2Nlc3MubmV4dFRpY2soY3R4KHJ1biwgaWQsIDEpKTtcblx0ICAgIH07XG5cdCAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuXHQgIH0gZWxzZSBpZihNZXNzYWdlQ2hhbm5lbCl7XG5cdCAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsO1xuXHQgICAgcG9ydCAgICA9IGNoYW5uZWwucG9ydDI7XG5cdCAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RuZXI7XG5cdCAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcblx0ICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcblx0ICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuXHQgIH0gZWxzZSBpZihnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdCl7XG5cdCAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcblx0ICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG5cdCAgICB9O1xuXHQgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0bmVyLCBmYWxzZSk7XG5cdCAgLy8gSUU4LVxuXHQgIH0gZWxzZSBpZihPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSl7XG5cdCAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcblx0ICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24oKXtcblx0ICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuXHQgICAgICAgIHJ1bi5jYWxsKGlkKTtcblx0ICAgICAgfTtcblx0ICAgIH07XG5cdCAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcblx0ICB9IGVsc2Uge1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcblx0ICAgIH07XG5cdCAgfVxuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIHNldDogICBzZXRUYXNrLFxuXHQgIGNsZWFyOiBjbGVhclRhc2tcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyBmYXN0IGFwcGx5LCBodHRwOi8vanNwZXJmLmxua2l0LmNvbS9mYXN0LWFwcGx5LzVcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbiwgYXJncywgdGhhdCl7XG5cdCAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuXHQgIHN3aXRjaChhcmdzLmxlbmd0aCl7XG5cdCAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcblx0ICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcblx0ICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcblx0ICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcblx0ICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcblx0ICB9IHJldHVybiAgICAgICAgICAgICAgZm4uYXBwbHkodGhhdCwgYXJncyk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKS5kb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbi8qKiovIH0sXG4vKiA3OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSkuZG9jdW1lbnRcblx0ICAvLyBpbiBvbGQgSUUgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCdcblx0ICAsIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciAkcmVkZWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih0YXJnZXQsIHNyYyl7XG5cdCAgZm9yKHZhciBrZXkgaW4gc3JjKSRyZWRlZih0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuXHQgIHJldHVybiB0YXJnZXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA4MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogODEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oODIpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLk9iamVjdC5rZXlzO1xuXG4vKioqLyB9LFxuLyogODIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxuXHR2YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDgzKSgna2V5cycsIGZ1bmN0aW9uKCRrZXlzKXtcblx0ICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCl7XG5cdCAgICByZXR1cm4gJGtleXModG9PYmplY3QoaXQpKTtcblx0ICB9O1xuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDgzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihLRVksIGV4ZWMpe1xuXHQgIHZhciAkZGVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAgICwgZm4gICA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5PYmplY3QgfHwge30pW0tFWV0gfHwgT2JqZWN0W0tFWV1cblx0ICAgICwgZXhwICA9IHt9O1xuXHQgIGV4cFtLRVldID0gZXhlYyhmbik7XG5cdCAgJGRlZigkZGVmLlMgKyAkZGVmLkYgKiBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KShmdW5jdGlvbigpeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogODQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg4NSksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDg1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oODYpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDg5KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5TZXQ7XG5cbi8qKiovIH0sXG4vKiA4NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgc3Ryb25nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Nyk7XG5cblx0Ly8gMjMuMiBTZXQgT2JqZWN0c1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDg4KSgnU2V0JywgZnVuY3Rpb24oZ2V0KXtcblx0ICByZXR1cm4gZnVuY3Rpb24gU2V0KCl7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzWzBdKTsgfTtcblx0fSwge1xuXHQgIC8vIDIzLjIuMy4xIFNldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuXHQgIGFkZDogZnVuY3Rpb24gYWRkKHZhbHVlKXtcblx0ICAgIHJldHVybiBzdHJvbmcuZGVmKHRoaXMsIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcblx0ICB9XG5cdH0sIHN0cm9uZyk7XG5cbi8qKiovIH0sXG4vKiA4NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIGhpZGUgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBjdHggICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgc3BlY2llcyAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mylcblx0ICAsIHN0cmljdE5ldyAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpXG5cdCAgLCBkZWZpbmVkICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpXG5cdCAgLCBmb3JPZiAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgc3RlcCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSlcblx0ICAsIElEICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpKCdpZCcpXG5cdCAgLCAkaGFzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KVxuXHQgICwgaXNPYmplY3QgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgaXNPYmplY3Rcblx0ICAsIFNVUFBPUlRfREVTQyA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpXG5cdCAgLCBTSVpFICAgICAgICAgPSBTVVBQT1JUX0RFU0MgPyAnX3MnIDogJ3NpemUnXG5cdCAgLCBpZCAgICAgICAgICAgPSAwO1xuXG5cdHZhciBmYXN0S2V5ID0gZnVuY3Rpb24oaXQsIGNyZWF0ZSl7XG5cdCAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuXHQgIGlmKCFpc09iamVjdChpdCkpcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcblx0ICBpZighJGhhcyhpdCwgSUQpKXtcblx0ICAgIC8vIGNhbid0IHNldCBpZCB0byBmcm96ZW4gb2JqZWN0XG5cdCAgICBpZighaXNFeHRlbnNpYmxlKGl0KSlyZXR1cm4gJ0YnO1xuXHQgICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgaWRcblx0ICAgIGlmKCFjcmVhdGUpcmV0dXJuICdFJztcblx0ICAgIC8vIGFkZCBtaXNzaW5nIG9iamVjdCBpZFxuXHQgICAgaGlkZShpdCwgSUQsICsraWQpO1xuXHQgIC8vIHJldHVybiBvYmplY3QgaWQgd2l0aCBwcmVmaXhcblx0ICB9IHJldHVybiAnTycgKyBpdFtJRF07XG5cdH07XG5cblx0dmFyIGdldEVudHJ5ID0gZnVuY3Rpb24odGhhdCwga2V5KXtcblx0ICAvLyBmYXN0IGNhc2Vcblx0ICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSksIGVudHJ5O1xuXHQgIGlmKGluZGV4ICE9PSAnRicpcmV0dXJuIHRoYXQuX2lbaW5kZXhdO1xuXHQgIC8vIGZyb3plbiBvYmplY3QgY2FzZVxuXHQgIGZvcihlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pe1xuXHQgICAgaWYoZW50cnkuayA9PSBrZXkpcmV0dXJuIGVudHJ5O1xuXHQgIH1cblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24od3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUil7XG5cdCAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24odGhhdCwgaXRlcmFibGUpe1xuXHQgICAgICBzdHJpY3ROZXcodGhhdCwgQywgTkFNRSk7XG5cdCAgICAgIHRoYXQuX2kgPSAkLmNyZWF0ZShudWxsKTsgLy8gaW5kZXhcblx0ICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgICAvLyBmaXJzdCBlbnRyeVxuXHQgICAgICB0aGF0Ll9sID0gdW5kZWZpbmVkOyAgICAgIC8vIGxhc3QgZW50cnlcblx0ICAgICAgdGhhdFtTSVpFXSA9IDA7ICAgICAgICAgICAvLyBzaXplXG5cdCAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG5cdCAgICB9KTtcblx0ICAgIF9fd2VicGFja19yZXF1aXJlX18oNzkpKEMucHJvdG90eXBlLCB7XG5cdCAgICAgIC8vIDIzLjEuMy4xIE1hcC5wcm90b3R5cGUuY2xlYXIoKVxuXHQgICAgICAvLyAyMy4yLjMuMiBTZXQucHJvdG90eXBlLmNsZWFyKClcblx0ICAgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCl7XG5cdCAgICAgICAgZm9yKHZhciB0aGF0ID0gdGhpcywgZGF0YSA9IHRoYXQuX2ksIGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubil7XG5cdCAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcblx0ICAgICAgICAgIGlmKGVudHJ5LnApZW50cnkucCA9IGVudHJ5LnAubiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIGRlbGV0ZSBkYXRhW2VudHJ5LmldO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGF0Ll9mID0gdGhhdC5fbCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICB0aGF0W1NJWkVdID0gMDtcblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMS4zLjMgTWFwLnByb3RvdHlwZS5kZWxldGUoa2V5KVxuXHQgICAgICAvLyAyMy4yLjMuNCBTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcblx0ICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uKGtleSl7XG5cdCAgICAgICAgdmFyIHRoYXQgID0gdGhpc1xuXHQgICAgICAgICAgLCBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG5cdCAgICAgICAgaWYoZW50cnkpe1xuXHQgICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5uXG5cdCAgICAgICAgICAgICwgcHJldiA9IGVudHJ5LnA7XG5cdCAgICAgICAgICBkZWxldGUgdGhhdC5faVtlbnRyeS5pXTtcblx0ICAgICAgICAgIGVudHJ5LnIgPSB0cnVlO1xuXHQgICAgICAgICAgaWYocHJldilwcmV2Lm4gPSBuZXh0O1xuXHQgICAgICAgICAgaWYobmV4dCluZXh0LnAgPSBwcmV2O1xuXHQgICAgICAgICAgaWYodGhhdC5fZiA9PSBlbnRyeSl0aGF0Ll9mID0gbmV4dDtcblx0ICAgICAgICAgIGlmKHRoYXQuX2wgPT0gZW50cnkpdGhhdC5fbCA9IHByZXY7XG5cdCAgICAgICAgICB0aGF0W1NJWkVdLS07XG5cdCAgICAgICAgfSByZXR1cm4gISFlbnRyeTtcblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMi4zLjYgU2V0LnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG5cdCAgICAgIC8vIDIzLjEuMy41IE1hcC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuXHQgICAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyosIHRoYXQgPSB1bmRlZmluZWQgKi8pe1xuXHQgICAgICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSwgMylcblx0ICAgICAgICAgICwgZW50cnk7XG5cdCAgICAgICAgd2hpbGUoZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGlzLl9mKXtcblx0ICAgICAgICAgIGYoZW50cnkudiwgZW50cnkuaywgdGhpcyk7XG5cdCAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMS4zLjcgTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuXHQgICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcblx0ICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KXtcblx0ICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh0aGlzLCBrZXkpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIGlmKFNVUFBPUlRfREVTQykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIGRlZmluZWQodGhpc1tTSVpFXSk7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgICAgcmV0dXJuIEM7XG5cdCAgfSxcblx0ICBkZWY6IGZ1bmN0aW9uKHRoYXQsIGtleSwgdmFsdWUpe1xuXHQgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KVxuXHQgICAgICAsIHByZXYsIGluZGV4O1xuXHQgICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG5cdCAgICBpZihlbnRyeSl7XG5cdCAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcblx0ICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcblx0ICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcblx0ICAgICAgICBrOiBrZXksICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0ga2V5XG5cdCAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG5cdCAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG5cdCAgICAgICAgbjogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgIC8vIDwtIG5leHQgZW50cnlcblx0ICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuXHQgICAgICB9O1xuXHQgICAgICBpZighdGhhdC5fZil0aGF0Ll9mID0gZW50cnk7XG5cdCAgICAgIGlmKHByZXYpcHJldi5uID0gZW50cnk7XG5cdCAgICAgIHRoYXRbU0laRV0rKztcblx0ICAgICAgLy8gYWRkIHRvIGluZGV4XG5cdCAgICAgIGlmKGluZGV4ICE9PSAnRicpdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcblx0ICAgIH0gcmV0dXJuIHRoYXQ7XG5cdCAgfSxcblx0ICBnZXRFbnRyeTogZ2V0RW50cnksXG5cdCAgc2V0U3Ryb25nOiBmdW5jdGlvbihDLCBOQU1FLCBJU19NQVApe1xuXHQgICAgLy8gYWRkIC5rZXlzLCAudmFsdWVzLCAuZW50cmllcywgW0BAaXRlcmF0b3JdXG5cdCAgICAvLyAyMy4xLjMuNCwgMjMuMS4zLjgsIDIzLjEuMy4xMSwgMjMuMS4zLjEyLCAyMy4yLjMuNSwgMjMuMi4zLjgsIDIzLjIuMy4xMCwgMjMuMi4zLjExXG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKEMsIE5BTUUsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcblx0ICAgICAgdGhpcy5fdCA9IGl0ZXJhdGVkOyAgLy8gdGFyZ2V0XG5cdCAgICAgIHRoaXMuX2sgPSBraW5kOyAgICAgIC8vIGtpbmRcblx0ICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgLy8gcHJldmlvdXNcblx0ICAgIH0sIGZ1bmN0aW9uKCl7XG5cdCAgICAgIHZhciB0aGF0ICA9IHRoaXNcblx0ICAgICAgICAsIGtpbmQgID0gdGhhdC5fa1xuXHQgICAgICAgICwgZW50cnkgPSB0aGF0Ll9sO1xuXHQgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgd2hpbGUoZW50cnkgJiYgZW50cnkucillbnRyeSA9IGVudHJ5LnA7XG5cdCAgICAgIC8vIGdldCBuZXh0IGVudHJ5XG5cdCAgICAgIGlmKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpe1xuXHQgICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG5cdCAgICAgICAgdGhhdC5fdCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICByZXR1cm4gc3RlcCgxKTtcblx0ICAgICAgfVxuXHQgICAgICAvLyByZXR1cm4gc3RlcCBieSBraW5kXG5cdCAgICAgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgZW50cnkuayk7XG5cdCAgICAgIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7XG5cdCAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG5cdCAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJyAsICFJU19NQVAsIHRydWUpO1xuXG5cdCAgICAvLyBhZGQgW0BAc3BlY2llc10sIDIzLjEuMi4yLCAyMy4yLjIuMlxuXHQgICAgc3BlY2llcyhDKTtcblx0ICAgIHNwZWNpZXMoX193ZWJwYWNrX3JlcXVpcmVfXygxMilbTkFNRV0pOyAvLyBmb3Igd3JhcHBlclxuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsICRkZWYgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgaGlkZSAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBmb3JPZiAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIHN0cmljdE5ldyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKXtcblx0ICB2YXIgQmFzZSAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVtOQU1FXVxuXHQgICAgLCBDICAgICA9IEJhc2Vcblx0ICAgICwgQURERVIgPSBJU19NQVAgPyAnc2V0JyA6ICdhZGQnXG5cdCAgICAsIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZVxuXHQgICAgLCBPICAgICA9IHt9O1xuXHQgIGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSB8fCB0eXBlb2YgQyAhPSAnZnVuY3Rpb24nXG5cdCAgICB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXsgbmV3IEMoKS5lbnRyaWVzKCkubmV4dCgpOyB9KSlcblx0ICApe1xuXHQgICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3Jcblx0ICAgIEMgPSBjb21tb24uZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUik7XG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KShDLnByb3RvdHlwZSwgbWV0aG9kcyk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRhcmdldCwgaXRlcmFibGUpe1xuXHQgICAgICBzdHJpY3ROZXcodGFyZ2V0LCBDLCBOQU1FKTtcblx0ICAgICAgdGFyZ2V0Ll9jID0gbmV3IEJhc2U7XG5cdCAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0YXJnZXRbQURERVJdLCB0YXJnZXQpO1xuXHQgICAgfSk7XG5cdCAgICAkLmVhY2guY2FsbCgnYWRkLGNsZWFyLGRlbGV0ZSxmb3JFYWNoLGdldCxoYXMsc2V0LGtleXMsdmFsdWVzLGVudHJpZXMnLnNwbGl0KCcsJyksZnVuY3Rpb24oS0VZKXtcblx0ICAgICAgdmFyIGNoYWluID0gS0VZID09ICdhZGQnIHx8IEtFWSA9PSAnc2V0Jztcblx0ICAgICAgaWYoS0VZIGluIHByb3RvICYmICEoSVNfV0VBSyAmJiBLRVkgPT0gJ2NsZWFyJykpaGlkZShDLnByb3RvdHlwZSwgS0VZLCBmdW5jdGlvbihhLCBiKXtcblx0ICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fY1tLRVldKGEgPT09IDAgPyAwIDogYSwgYik7XG5cdCAgICAgICAgcmV0dXJuIGNoYWluID8gdGhpcyA6IHJlc3VsdDtcblx0ICAgICAgfSk7XG5cdCAgICB9KTtcblx0ICAgIGlmKCdzaXplJyBpbiBwcm90bykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuX2Muc2l6ZTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfVxuXG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyNSkoQywgTkFNRSk7XG5cblx0ICBPW05BTUVdID0gQztcblx0ICAkZGVmKCRkZWYuRyArICRkZWYuVyArICRkZWYuRiwgTyk7XG5cblx0ICBpZighSVNfV0VBSyljb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7XG5cblx0ICByZXR1cm4gQztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDg5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG5cdHZhciAkZGVmICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXG5cdCRkZWYoJGRlZi5QLCAnU2V0Jywge3RvSlNPTjogX193ZWJwYWNrX3JlcXVpcmVfXyg5MCkoJ1NldCcpfSk7XG5cbi8qKiovIH0sXG4vKiA5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxuXHR2YXIgZm9yT2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTkFNRSl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpe1xuXHQgICAgaWYoY2xhc3NvZih0aGlzKSAhPSBOQU1FKXRocm93IFR5cGVFcnJvcihOQU1FICsgXCIjdG9KU09OIGlzbid0IGdlbmVyaWNcIik7XG5cdCAgICB2YXIgYXJyID0gW107XG5cdCAgICBmb3JPZih0aGlzLCBmYWxzZSwgYXJyLnB1c2gsIGFycik7XG5cdCAgICByZXR1cm4gYXJyO1xuXHQgIH07XG5cdH07XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjsiLCJtb2R1bGUuZXhwb3J0cyA9IERHOyIsIm1vZHVsZS5leHBvcnRzID0gZ3JvazsiLCJtb2R1bGUuZXhwb3J0cyA9IHJ4anM7IiwibW9kdWxlLmV4cG9ydHMgPSB1aTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjXG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkgc2NyaXB0VXJsID0gc2NyaXB0c1tzY3JpcHRzLmxlbmd0aCAtIDFdLnNyY1xuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcInBhY2thZ2VcIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMgdG8gbWF0Y2ggZXh0ZXJuYWwgbW9kdWxlcyBpbiB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmV4cG9ydCBjb25zdCBfcGFja2FnZSA9IG5ldyBERy5QYWNrYWdlKCk7XG5pbXBvcnQgeyBXZWJMb2dvIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvd2ViLWxvZ28nO1xuaW1wb3J0IHsgVmRSZWdpb25zVmlld2VyIH0gZnJvbSAnLi92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyJztcbmltcG9ydCB7IHJ1bkthbGlnbiB9IGZyb20gJy4vdXRpbHMvbXVsdGlwbGUtc2VxdWVuY2UtYWxpZ25tZW50JztcbmltcG9ydCB7IFNlcXVlbmNlQWxpZ25tZW50IH0gZnJvbSAnLi9zZXFfYWxpZ24nO1xuaW1wb3J0IHsgY29udmVydCB9IGZyb20gJy4vdXRpbHMvY29udmVydCc7XG5pbXBvcnQgeyBnZXRFbWJlZGRpbmdDb2xzTmFtZXMsIHNlcXVlbmNlU3BhY2UgfSBmcm9tICcuL3V0aWxzL3NlcXVlbmNlLXNwYWNlJztcbmltcG9ydCB7IGdldEFjdGl2aXR5Q2xpZmZzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdmlld2Vycy9hY3Rpdml0eS1jbGlmZnMnO1xuaW1wb3J0IHsgc2VxdWVuY2VHZXRTaW1pbGFyaXRpZXMsIGRyYXdUb29sdGlwIH0gZnJvbSAnLi91dGlscy9zZXF1ZW5jZS1hY3Rpdml0eS1jbGlmZnMnO1xuaW1wb3J0IHsgZ2V0TW9sZmlsZXNGcm9tU2VxLCBIRUxNX0NPUkVfTElCX0ZJTEVOQU1FIH0gZnJvbSAnLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBnZXRNYWNyb01vbCB9IGZyb20gJy4vdXRpbHMvYXRvbWljLXdvcmtzJztcbmltcG9ydCB7IE1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlciB9IGZyb20gJy4vdXRpbHMvY2VsbC1yZW5kZXJlcic7XG4vL3RhZ3M6IGluaXRcbmV4cG9ydCBmdW5jdGlvbiBpbml0QmlvKCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGFwcGFyZW50bHkgSEVMTVdlYkVkaXRvciByZXF1aXJlcyBkb2pvIHRvIGJlIGluaXRpYWxpemVkIGZpcnN0XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBkb2pvLnJlYWR5KGZ1bmN0aW9uICgpIHsgcmVzb2x2ZShudWxsKTsgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuLy9uYW1lOiBtYWNyb21vbGVjdWxlU2VxdWVuY2VDZWxsUmVuZGVyZXJcbi8vdGFnczogY2VsbFJlbmRlcmVyXG4vL21ldGEuY2VsbFR5cGU6IE1hY3JvbW9sZWN1bGVcbi8vb3V0cHV0OiBncmlkX2NlbGxfcmVuZGVyZXIgcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gbWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyKCkge1xuICAgIHJldHVybiBuZXcgTWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyKCk7XG59XG5mdW5jdGlvbiBjaGVja0lucHV0Q29sdW1uKGNvbCwgbmFtZSwgYWxsb3dlZE5vdGF0aW9ucyA9IFtdLCBhbGxvd2VkQWxwaGFiZXRzID0gW10pIHtcbiAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgaWYgKGNvbC5zZW1UeXBlICE9PSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpIHtcbiAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKG5hbWUgKyAnIGFuYWx5c2lzIGlzIGFsbG93ZWQgZm9yIE1hY3JvbW9sZWN1bGVzIHNlbWFudGljIHR5cGUnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIGlmICgoYWxsb3dlZEFscGhhYmV0cy5sZW5ndGggPiAwICYmXG4gICAgICAgICFhbGxvd2VkQWxwaGFiZXRzLnNvbWUoKGEpID0+IHVuaXRzLnRvVXBwZXJDYXNlKCkuZW5kc1dpdGgoYS50b1VwcGVyQ2FzZSgpKSkpIHx8XG4gICAgICAgIChhbGxvd2VkTm90YXRpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICFhbGxvd2VkTm90YXRpb25zLnNvbWUoKG4pID0+IHVuaXRzLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aChuLnRvVXBwZXJDYXNlKCkpKSkpIHtcbiAgICAgICAgY29uc3Qgbm90YXRpb25BZGQgPSBhbGxvd2VkTm90YXRpb25zLmxlbmd0aCA9PSAwID8gJ2FueSBub3RhdGlvbicgOlxuICAgICAgICAgICAgKGBub3RhdGlvbiR7YWxsb3dlZE5vdGF0aW9ucy5sZW5ndGggPiAxID8gJ3MnIDogJyd9ICR7YWxsb3dlZE5vdGF0aW9ucy5tYXAoKG4pID0+IGBcIiR7bn1cImApLmpvaW4oJywgJyl9IGApO1xuICAgICAgICBjb25zdCBhbHBoYWJldEFkZCA9IGFsbG93ZWROb3RhdGlvbnMubGVuZ3RoID09IDAgPyAnYW55IGFscGhhYmV0JyA6XG4gICAgICAgICAgICAoYGFscGhhYmV0JHthbGxvd2VkQWxwaGFiZXRzLmxlbmd0aCA+IDEgPyAncycgOiAnJ30gJHthbGxvd2VkQWxwaGFiZXRzLm1hcCgoYSkgPT4gYFwiJHthfVwiYCkuam9pbignLCAnKX0uYCk7XG4gICAgICAgIGdyb2suc2hlbGwud2FybmluZyhuYW1lICsgJyBhbmFseXNpcyBpcyBhbGxvd2VkIGZvciBNYWNyb21vbGVjdWxlcyB3aXRoICcgKyBub3RhdGlvbkFkZCArICcgYW5kICcgKyBhbHBoYWJldEFkZCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vL25hbWU6IHNlcXVlbmNlQWxpZ25tZW50XG4vL2lucHV0OiBzdHJpbmcgYWxpZ25UeXBlIHtjaG9pY2VzOiBbJ0xvY2FsIGFsaWdubWVudCcsICdHbG9iYWwgYWxpZ25tZW50J119XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuLy9pbnB1dDogc3RyaW5nIGFsaWduVGFibGUge2Nob2ljZXM6IFsnQVVUTycsICdOVUNMRU9USURFUycsICdCTE9TVU00NScsICdCTE9TVU01MCcsJ0JMT1NVTTYyJywnQkxPU1VNODAnLCdCTE9TVU05MCcsJ1BBTTMwJywnUEFNNzAnLCdQQU0yNTAnLCdTQ0hORUlERVInLCdUUkFOUyddfVxuLy9pbnB1dDogZG91YmxlIGdhcFxuLy9pbnB1dDogc3RyaW5nIHNlcTFcbi8vaW5wdXQ6IHN0cmluZyBzZXEyXG4vL291dHB1dDogb2JqZWN0IHJlc1xuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlQWxpZ25tZW50KGFsaWduVHlwZSwgYWxpZ25UYWJsZSwgZ2FwLCBzZXExLCBzZXEyKSB7XG4gICAgY29uc3QgdG9BbGlnbiA9IG5ldyBTZXF1ZW5jZUFsaWdubWVudChzZXExLCBzZXEyLCBnYXAsIGFsaWduVGFibGUpO1xuICAgIGNvbnN0IHJlcyA9IGFsaWduVHlwZSA9PSAnTG9jYWwgYWxpZ25tZW50JyA/IHRvQWxpZ24uc21pdGhXYXRlcm1hbigpIDogdG9BbGlnbi5uZWVkbGVtYW5XdW5jaCgpO1xuICAgIHJldHVybiByZXM7XG59XG4vL25hbWU6IFdlYkxvZ29cbi8vZGVzY3JpcHRpb246IFdlYkxvZ28gdmlld2VyXG4vL3RhZ3M6IHZpZXdlciwgcGFuZWxcbi8vb3V0cHV0OiB2aWV3ZXIgcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gd2ViTG9nb1ZpZXdlcigpIHtcbiAgICByZXR1cm4gbmV3IFdlYkxvZ28oKTtcbn1cbi8vbmFtZTogVmRSZWdpb25zXG4vL2Rlc2NyaXB0aW9uOiBWLURvbWFpbiByZWdpb25zIHZpZXdlclxuLy90YWdzOiB2aWV3ZXIsIHBhbmVsXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHZkUmVnaW9uVmlld2VyKCkge1xuICAgIHJldHVybiBuZXcgVmRSZWdpb25zVmlld2VyKCk7XG59XG4vL3RvcC1tZW51OiBCaW8gfCBTZXF1ZW5jZSBBY3Rpdml0eSBDbGlmZnMuLi5cbi8vbmFtZTogU2VxdWVuY2UgQWN0aXZpdHkgQ2xpZmZzXG4vL2Rlc2NyaXB0aW9uOiBkZXRlY3QgYWN0aXZpdHkgY2xpZmZzXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGUgW0lucHV0IGRhdGEgdGFibGVdXG4vL2lucHV0OiBjb2x1bW4gbWFjcm9Nb2xlY3VsZSB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbi8vaW5wdXQ6IGNvbHVtbiBhY3Rpdml0aWVzXG4vL2lucHV0OiBkb3VibGUgc2ltaWxhcml0eSA9IDgwIFtTaW1pbGFyaXR5IGN1dG9mZl1cbi8vaW5wdXQ6IHN0cmluZyBtZXRob2ROYW1lIHsgY2hvaWNlczpbXCJVTUFQXCIsIFwidC1TTkVcIiwgXCJTUEVcIl0gfVxuZXhwb3J0IGZ1bmN0aW9uIGFjdGl2aXR5Q2xpZmZzKGRmLCBtYWNyb01vbGVjdWxlLCBhY3Rpdml0aWVzLCBzaW1pbGFyaXR5LCBtZXRob2ROYW1lKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCFjaGVja0lucHV0Q29sdW1uKG1hY3JvTW9sZWN1bGUsICdBY3Rpdml0eSBDbGlmZnMnKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgYXhlc05hbWVzID0gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKGRmKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICdTUEUnOiB7IGN5Y2xlczogMjAwMCwgbGFtYmRhOiAxLjAsIGRsYW1iZGE6IDAuMDAwNSB9LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1bml0cyA9IG1hY3JvTW9sZWN1bGUudGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgICAgICAgeWllbGQgZ2V0QWN0aXZpdHlDbGlmZnMoZGYsIG1hY3JvTW9sZWN1bGUsIGF4ZXNOYW1lcywgJ0FjdGl2aXR5IGNsaWZmcycsIGFjdGl2aXRpZXMsIHNpbWlsYXJpdHksICdMZXZlbnNodGVpbicsIG1ldGhvZE5hbWUsIERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSwgdW5pdHMsIHNlcXVlbmNlU3BhY2UsIHNlcXVlbmNlR2V0U2ltaWxhcml0aWVzLCBkcmF3VG9vbHRpcCwgb3B0aW9uc1ttZXRob2ROYW1lXSk7XG4gICAgfSk7XG59XG4vL3RvcC1tZW51OiBCaW8gfCBTZXF1ZW5jZSBTcGFjZS4uLlxuLy9uYW1lOiBTZXF1ZW5jZSBTcGFjZVxuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlXG4vL2lucHV0OiBjb2x1bW4gbWFjcm9Nb2xlY3VsZSB7IHNlbVR5cGU6IE1hY3JvbW9sZWN1bGUgfVxuLy9pbnB1dDogc3RyaW5nIG1ldGhvZE5hbWUgeyBjaG9pY2VzOltcIlVNQVBcIiwgXCJ0LVNORVwiLCBcIlNQRVwiXSB9XG4vL2lucHV0OiBzdHJpbmcgc2ltaWxhcml0eU1ldHJpYyB7IGNob2ljZXM6W1wiTGV2ZW5zaHRlaW5cIiwgXCJUYW5pbW90b1wiXSB9XG4vL2lucHV0OiBib29sIHBsb3RFbWJlZGRpbmdzID0gdHJ1ZVxuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlU3BhY2VUb3BNZW51KHRhYmxlLCBtYWNyb01vbGVjdWxlLCBtZXRob2ROYW1lLCBzaW1pbGFyaXR5TWV0cmljID0gJ0xldmVuc2h0ZWluJywgcGxvdEVtYmVkZGluZ3MpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBpZiAoIWNoZWNrSW5wdXRDb2x1bW4obWFjcm9Nb2xlY3VsZSwgJ0FjdGl2aXR5IENsaWZmcycpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBlbWJlZENvbHNOYW1lcyA9IGdldEVtYmVkZGluZ0NvbHNOYW1lcyh0YWJsZSk7XG4gICAgICAgIGNvbnN0IGNoZW1TcGFjZVBhcmFtcyA9IHtcbiAgICAgICAgICAgIHNlcUNvbDogbWFjcm9Nb2xlY3VsZSxcbiAgICAgICAgICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgICBzaW1pbGFyaXR5TWV0cmljOiBzaW1pbGFyaXR5TWV0cmljLFxuICAgICAgICAgICAgZW1iZWRBeGVzTmFtZXM6IGVtYmVkQ29sc05hbWVzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlU3BhY2VSZXMgPSB5aWVsZCBzZXF1ZW5jZVNwYWNlKGNoZW1TcGFjZVBhcmFtcyk7XG4gICAgICAgIGNvbnN0IGVtYmVkZGluZ3MgPSBzZXF1ZW5jZVNwYWNlUmVzLmNvb3JkaW5hdGVzO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBlbWJlZGRpbmdzKVxuICAgICAgICAgICAgdGFibGUuY29sdW1ucy5hZGQoY29sKTtcbiAgICAgICAgaWYgKHBsb3RFbWJlZGRpbmdzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgZ3Jvay5zaGVsbC52aWV3cykge1xuICAgICAgICAgICAgICAgIGlmICh2Lm5hbWUgPT09IHRhYmxlLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgIHYuc2NhdHRlclBsb3QoeyB4OiBlbWJlZENvbHNOYW1lc1swXSwgeTogZW1iZWRDb2xzTmFtZXNbMV0sIHRpdGxlOiAnU2VxdWVuY2Ugc3BhY2UnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG47XG4vL3RvcC1tZW51OiBCaW8gfCBUbyBBdG9taWMgTGV2ZWwuLi5cbi8vbmFtZTogVG8gQXRvbWljIExldmVsXG4vL2Rlc2NyaXB0aW9uOiByZXR1cm5zIG1vbGZpbGVzIGZvciBlYWNoIG1vbm9tZXIgZnJvbSBIRUxNIGxpYnJhcnlcbi8vaW5wdXQ6IGRhdGFmcmFtZSBkZiBbSW5wdXQgZGF0YSB0YWJsZV1cbi8vaW5wdXQ6IGNvbHVtbiBtYWNyb01vbGVjdWxlIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuZXhwb3J0IGZ1bmN0aW9uIHRvQXRvbWljTGV2ZWwoZGYsIG1hY3JvTW9sZWN1bGUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBpZiAoREcuRnVuYy5maW5kKHsgcGFja2FnZTogJ0NoZW0nLCBuYW1lOiAnZ2V0UmRLaXRNb2R1bGUnIH0pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKCdUcmFuc2Zvcm1hdGlvbiB0byBhdG9taWMgbGV2ZWwgcmVxdWlyZXMgcGFja2FnZSBcIkNoZW1cIiBpbnN0YWxsZWQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGVja0lucHV0Q29sdW1uKG1hY3JvTW9sZWN1bGUsICdUbyBBdG9taWMgTGV2ZWwnKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3O1xuICAgICAgICBmb3IgKGxldCB2aWV3IG9mIGdyb2suc2hlbGwudGFibGVWaWV3cykge1xuICAgICAgICAgICAgaWYgKGRmLm5hbWUgPT09IHZpZXcubmFtZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gdmlldztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWxlID0geWllbGQgX3BhY2thZ2UuZmlsZXMucmVhZEFzVGV4dCgndGVzdHMvc2FyLXNtYWxsLmNzdicpO1xuICAgICAgICBjb25zdCBkZjIgPSBERy5EYXRhRnJhbWUuZnJvbUNzdihmaWxlKTtcbiAgICAgICAgY29uc3QgdiA9IGdyb2suc2hlbGwuYWRkVGFibGVWaWV3KGRmMik7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC5jbG9zZVRhYmxlKGRmMik7XG4gICAgICAgICAgICB2LmNsb3NlKCk7XG4gICAgICAgICAgICBncm9rLnNoZWxsLnYgPSBjdXJyZW50VmlldztcbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJGaWxlID0geWllbGQgX3BhY2thZ2UuZmlsZXMucmVhZEFzVGV4dChIRUxNX0NPUkVfTElCX0ZJTEVOQU1FKTtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJPYmplY3QgPSBKU09OLnBhcnNlKG1vbm9tZXJzTGliRmlsZSk7XG4gICAgICAgIGNvbnN0IGF0b21pY0NvZGVzID0gZ2V0TW9sZmlsZXNGcm9tU2VxKG1hY3JvTW9sZWN1bGUsIG1vbm9tZXJzTGliT2JqZWN0KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgZ2V0TWFjcm9Nb2woYXRvbWljQ29kZXMpO1xuICAgICAgICBjb25zdCBjb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ3JlZ2VuZXJhdGVkJywgcmVzdWx0KTtcbiAgICAgICAgY29sLnNlbVR5cGUgPSBERy5TRU1UWVBFLk1PTEVDVUxFO1xuICAgICAgICBjb2wudGFnc1tERy5UQUdTLlVOSVRTXSA9ICdtb2xibG9jayc7XG4gICAgICAgIGRmLmNvbHVtbnMuYWRkKGNvbCwgdHJ1ZSk7XG4gICAgfSk7XG59XG4vL3RvcC1tZW51OiBCaW8gfCBNU0EuLi5cbi8vbmFtZTogTVNBXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGVcbi8vaW5wdXQ6IGNvbHVtbiBzZXF1ZW5jZSB7IHNlbVR5cGU6IE1hY3JvbW9sZWN1bGUgfVxuLy9vdXRwdXQ6IGNvbHVtbiByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBsZVNlcXVlbmNlQWxpZ25tZW50QW55KHRhYmxlLCBjb2wpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBpZiAoIWNoZWNrSW5wdXRDb2x1bW4oY29sLCAnTVNBJywgWydmYXN0YSddLCBbJ0ROQScsICdSTkEnLCAnUFQnXSkpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgbXNhQ29sID0geWllbGQgcnVuS2FsaWduKGNvbCwgZmFsc2UpO1xuICAgICAgICB0YWJsZS5jb2x1bW5zLmFkZChtc2FDb2wpO1xuICAgICAgICAvLyBUaGlzIGNhbGwgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIGNlbGwgcmVuZGVyZXIgYWN0aXZhdGlvblxuICAgICAgICB5aWVsZCBncm9rLmRhdGEuZGV0ZWN0U2VtYW50aWNUeXBlcyh0YWJsZSk7XG4gICAgICAgIC8vIGNvbnN0IHR2OiBERy5UYWJsZVZpZXcgPSBncm9rLnNoZWxsLnR2O1xuICAgICAgICAvLyB0di5ncmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgcmV0dXJuIG1zYUNvbDtcbiAgICB9KTtcbn1cbi8vbmFtZTogQ29tcG9zaXRpb24gQW5hbHlzaXNcbi8vdG9wLW1lbnU6IEJpbyB8IENvbXBvc2l0aW9uIEFuYWx5c2lzXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2l0aW9uQW5hbHlzaXMoKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gSGlnaGVyIHByaW9yaXR5IGZvciBjb2x1bW5zIHdpdGggTVNBIGRhdGEgdG8gc2hvdyB3aXRoIFdlYkxvZ28uXG4gICAgICAgIGNvbnN0IHR2ID0gZ3Jvay5zaGVsbC50djtcbiAgICAgICAgY29uc3QgZGYgPSB0di5kYXRhRnJhbWU7XG4gICAgICAgIGNvbnN0IGNvbCA9IFdlYkxvZ28ucGlja1VwU2VxQ29sMihkZik7XG4gICAgICAgIGlmICghY29sKSB7XG4gICAgICAgICAgICBncm9rLnNoZWxsLmVycm9yKCdDdXJyZW50IHRhYmxlIGRvZXMgbm90IGNvbnRhaW4gc2VxdWVuY2VzJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGVja0lucHV0Q29sdW1uKGNvbCwgJ0NvbXBvc2l0aW9uJykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGFsbG93ZWROb3RhdGlvbnMgPSBbJ2Zhc3RhJywgJ3NlcGFyYXRvciddO1xuICAgICAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIGlmICghYWxsb3dlZE5vdGF0aW9ucy5zb21lKChuKSA9PiB1bml0cy50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgobi50b1VwcGVyQ2FzZSgpKSkpIHtcbiAgICAgICAgICAgIGdyb2suc2hlbGwud2FybmluZygnQ29tcG9zaXRpb24gYW5hbHlzaXMgaXMgYWxsb3dlZCBmb3IgJyArXG4gICAgICAgICAgICAgICAgYG5vdGF0aW9uJHthbGxvd2VkTm90YXRpb25zLmxlbmd0aCA+IDEgPyAncycgOiAnJ30gJHthbGxvd2VkTm90YXRpb25zLm1hcCgobikgPT4gYFwiJHtufVwiYCkuam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdHYuYWRkVmlld2VyKCdXZWJMb2dvJywgeyBzZXF1ZW5jZUNvbHVtbk5hbWU6IGNvbC5uYW1lIH0pO1xuICAgIH0pO1xufVxuLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBpbXBvcnRGYXN0YVxuZnVuY3Rpb24gcGFyc2VNYWNyb21vbGVjdWxlKGZpbGVDb250ZW50LCBzdGFydE9mU2VxdWVuY2UsIGVuZE9mU2VxdWVuY2UpIHtcbiAgICBjb25zdCBzZXEgPSBmaWxlQ29udGVudC5zbGljZShzdGFydE9mU2VxdWVuY2UsIGVuZE9mU2VxdWVuY2UpO1xuICAgIGNvbnN0IHNlcUFycmF5ID0gc2VxLnNwbGl0KC9cXHMvKTtcbiAgICByZXR1cm4gc2VxQXJyYXkuam9pbignJyk7XG59XG4vL25hbWU6IGltcG9ydEZhc3RhXG4vL2Rlc2NyaXB0aW9uOiBPcGVucyBGQVNUQSBmaWxlXG4vL3RhZ3M6IGZpbGUtaGFuZGxlclxuLy9tZXRhLmV4dDogZmFzdGEsIGZuYSwgZmZuLCBmYWEsIGZybiwgZmEsIGZzdFxuLy9pbnB1dDogc3RyaW5nIGZpbGVDb250ZW50XG4vL291dHB1dDogbGlzdCB0YWJsZXNcbmV4cG9ydCBmdW5jdGlvbiBpbXBvcnRGYXN0YShmaWxlQ29udGVudCkge1xuICAgIGNvbnN0IHJlZ2V4ID0gL14+KC4qKSQvZ207IC8vIG1hdGNoIGxpbmVzIHN0YXJ0aW5nIHdpdGggPlxuICAgIGNvbnN0IGRlc2NyaXB0aW9uc0FycmF5ID0gW107XG4gICAgY29uc3Qgc2VxdWVuY2VzQXJyYXkgPSBbXTtcbiAgICBsZXQgc3RhcnRPZlNlcXVlbmNlID0gMDtcbiAgICBsZXQgbWF0Y2g7IC8vIG1hdGNoLmluZGV4IGlzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1hdGNoZWQgbGluZVxuICAgIHdoaWxlIChtYXRjaCA9IHJlZ2V4LmV4ZWMoZmlsZUNvbnRlbnQpKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gZmlsZUNvbnRlbnQuc3Vic3RyaW5nKG1hdGNoLmluZGV4ICsgMSwgcmVnZXgubGFzdEluZGV4KTtcbiAgICAgICAgZGVzY3JpcHRpb25zQXJyYXkucHVzaChkZXNjcmlwdGlvbik7XG4gICAgICAgIGlmIChzdGFydE9mU2VxdWVuY2UgIT09IDApXG4gICAgICAgICAgICBzZXF1ZW5jZXNBcnJheS5wdXNoKHBhcnNlTWFjcm9tb2xlY3VsZShmaWxlQ29udGVudCwgc3RhcnRPZlNlcXVlbmNlLCBtYXRjaC5pbmRleCkpO1xuICAgICAgICBzdGFydE9mU2VxdWVuY2UgPSByZWdleC5sYXN0SW5kZXggKyAxO1xuICAgIH1cbiAgICBzZXF1ZW5jZXNBcnJheS5wdXNoKHBhcnNlTWFjcm9tb2xlY3VsZShmaWxlQ29udGVudCwgc3RhcnRPZlNlcXVlbmNlLCAtMSkpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uc0FycmF5Q29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uc0FycmF5KTtcbiAgICBjb25zdCBzZXF1ZW5jZUNvbCA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncygnc2VxdWVuY2UnLCBzZXF1ZW5jZXNBcnJheSk7XG4gICAgc2VxdWVuY2VDb2wuc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICBjb25zdCBzdGF0cyA9IFdlYkxvZ28uZ2V0U3RhdHMoc2VxdWVuY2VDb2wsIDUsIFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICBjb25zdCBzZXFUeXBlID0gc3RhdHMuc2FtZUxlbmd0aCA/ICdTRVEuTVNBJyA6ICdTRVEnO1xuICAgIGNvbnN0IFBlcHRpZGVGYXN0YUFscGhhYmV0ID0gbmV3IFNldChbXG4gICAgICAgICdHJywgJ0wnLCAnWScsICdTJywgJ0UnLCAnUScsICdEJywgJ04nLCAnRicsICdBJyxcbiAgICAgICAgJ0snLCAnUicsICdIJywgJ0MnLCAnVicsICdQJywgJ1cnLCAnSScsICdNJywgJ1QnLFxuICAgIF0pO1xuICAgIGNvbnN0IERuYUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFsnQScsICdDJywgJ0cnLCAnVCddKTtcbiAgICBjb25zdCBSbmFGYXN0YUFscGhhYmV0ID0gbmV3IFNldChbJ0EnLCAnQycsICdHJywgJ1UnXSk7XG4gICAgLy9jb25zdCBTbWlsZXNSYXdBbHBoYWJldCA9IG5ldyBTZXQoW1xuICAgIC8vICAnTycsICdDJywgJ2MnLCAnTicsICdTJywgJ0YnLCAnKCcsICcpJyxcbiAgICAvLyAgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLFxuICAgIC8vICAnKycsICctJywgJ0AnLCAnWycsICddJywgJy8nLCAnXFxcXCcsICcjJywgJz0nXSk7XG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzID0gW1xuICAgICAgICBbJ1BUJywgUGVwdGlkZUZhc3RhQWxwaGFiZXRdLFxuICAgICAgICBbJ0ROQScsIERuYUZhc3RhQWxwaGFiZXRdLFxuICAgICAgICBbJ1JOQScsIFJuYUZhc3RhQWxwaGFiZXRdLFxuICAgIF07XG4gICAgLy9jb25zdCBhbHBoYWJldENhbmRpZGF0ZXM6IFtzdHJpbmcsIFNldDxzdHJpbmc+XVtdID0gW1xuICAgIC8vICBbJ05UJywgbmV3IFNldChPYmplY3Qua2V5cyhOdWNsZW90aWRlcy5OYW1lcykpXSxcbiAgICAvLyAgWydQVCcsIG5ldyBTZXQoT2JqZWN0LmtleXMoQW1pbm9hY2lkcy5OYW1lcykpXSxcbiAgICAvL107XG4gICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzU2ltID0gYWxwaGFiZXRDYW5kaWRhdGVzLm1hcCgoYykgPT4gV2ViTG9nby5nZXRBbHBoYWJldFNpbWlsYXJpdHkoc3RhdHMuZnJlcSwgY1sxXSkpO1xuICAgIGNvbnN0IG1heENvcyA9IE1hdGgubWF4KC4uLmFscGhhYmV0Q2FuZGlkYXRlc1NpbSk7XG4gICAgY29uc3QgYWxwaGFiZXQgPSBtYXhDb3MgPiAwLjY1ID8gYWxwaGFiZXRDYW5kaWRhdGVzW2FscGhhYmV0Q2FuZGlkYXRlc1NpbS5pbmRleE9mKG1heENvcyldWzBdIDogJ1VOJztcbiAgICBzZXF1ZW5jZUNvbC5zZW1UeXBlID0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFO1xuICAgIGNvbnN0IHVuaXRzID0gYGZhc3RhOiR7c2VxVHlwZX06JHthbHBoYWJldH1gO1xuICAgIHNlcXVlbmNlQ29sLnNldFRhZyhERy5UQUdTLlVOSVRTLCB1bml0cyk7XG4gICAgcmV0dXJuIFtERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgICAgICAgZGVzY3JpcHRpb25zQXJyYXlDb2wsXG4gICAgICAgICAgICBzZXF1ZW5jZUNvbCxcbiAgICAgICAgXSldO1xufVxuLy9uYW1lOiBCaW8gfCBDb252ZXJ0XG4vL2ZyaWVuZGx5LW5hbWU6IEJpbyB8IENvbnZlcnRcbi8vdGFnczogcGFuZWwsIGJpb1xuLy9pbnB1dDogY29sdW1uIGNvbCB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UGFuZWwoY29sKSB7XG4gICAgY29udmVydChjb2wpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9