import { c as _c } from "react/compiler-runtime";
import React, { Suspense, use, useMemo } from 'react';
import { useSettings } from '../../../hooks/useSettings.js';
import { useTerminalSize } from '../../../hooks/useTerminalSize.js';
import { stringWidth } from '../../../ink/stringWidth.js';
import { Ansi, Box, Text, useTheme } from '../../../ink.js';
import { type CliHighlight, getCliHighlightPromise } from '../../../utils/cliHighlight.js';
import { applyMarkdown } from '../../../utils/markdown.js';
import sliceAnsi from '../../../utils/sliceAnsi.js';
type PreviewBoxProps = {
  /** The preview content to display. Markdown is rendered with syntax highlighting
   * for code blocks (```ts, ```py, etc.). Also supports plain multi-line text. */
  content: string;
  /** Maximum number of lines to display before truncating. @default 20 */
  maxLines?: number;
  /** Minimum height (in lines) for the preview box. Content will be padded if shorter. */
  minHeight?: number;
  /** Minimum width for the preview box. @default 40 */
  minWidth?: number;
  /** Maximum width available for this box (e.g., the container width). */
  maxWidth?: number;
};
const BOX_CHARS = {
  topLeft: '┌',
  topRight: '┐',
  bottomLeft: '└',
  bottomRight: '┘',
  horizontal: '─',
  vertical: '│',
  teeLeft: '├',
  teeRight: '┤'
};

/**
 * A bordered monospace box for displaying preview content.
 * Truncates content that exceeds maxLines with an indicator.
 * The parent component should pass maxLines based on its available height budget.
 */
export function PreviewBox(props) {
  const $ = _c(4);
  const settings = useSettings();
  if (settings.syntaxHighlightingDisabled) {
    let t0;
    if ($[0] !== props) {
      t0 = <PreviewBoxBody {...props} highlight={null} />;
      $[0] = props;
      $[1] = t0;
    } else {
      t0 = $[1];
    }
    return t0;
  }
  let t0;
  if ($[2] !== props) {
    t0 = <Suspense fallback={<PreviewBoxBody {...props} highlight={null} />}><PreviewBoxWithHighlight {...props} /></Suspense>;
    $[2] = props;
    $[3] = t0;
  } else {
    t0 = $[3];
  }
  return t0;
}
function PreviewBoxWithHighlight(props) {
  const $ = _c(4);
  let t0;
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
    t0 = getCliHighlightPromise();
    $[0] = t0;
  } else {
    t0 = $[0];
  }
  const highlight = use(t0);
  let t1;
  if ($[1] !== highlight || $[2] !== props) {
    t1 = <PreviewBoxBody {...props} highlight={highlight} />;
    $[1] = highlight;
    $[2] = props;
    $[3] = t1;
  } else {
    t1 = $[3];
  }
  return t1;
}
function PreviewBoxBody(t0) {
  const $ = _c(34);
  const {
    content,
    maxLines,
    minHeight,
    minWidth: t1,
    maxWidth,
    highlight
  } = t0;
  const minWidth = t1 === undefined ? 40 : t1;
  const {
    columns: terminalWidth
  } = useTerminalSize();
  const [theme] = useTheme();
  const effectiveMaxWidth = maxWidth ?? terminalWidth - 4;
  const effectiveMaxLines = maxLines ?? 20;
  let t2;
  if ($[0] !== content || $[1] !== highlight || $[2] !== theme) {
    t2 = applyMarkdown(content, theme, highlight);
    $[0] = content;
    $[1] = highlight;
    $[2] = theme;
    $[3] = t2;
  } else {
    t2 = $[3];
  }
  const rendered = t2;
  let T0;
  let bottomBorder;
  let t3;
  let t4;
  let t5;
  let truncationBar;
  if ($[4] !== effectiveMaxLines || $[5] !== effectiveMaxWidth || $[6] !== minHeight || $[7] !== minWidth || $[8] !== rendered) {
    const contentLines = rendered.split("\n");
    const isTruncated = contentLines.length > effectiveMaxLines;
    const truncatedLines = isTruncated ? contentLines.slice(0, effectiveMaxLines) : contentLines;
    const effectiveMinHeight = Math.min(minHeight ?? 0, effectiveMaxLines);
    const paddingNeeded = Math.max(0, effectiveMinHeight - truncatedLines.length - (isTruncated ? 1 : 0));
    const lines = paddingNeeded > 0 ? [...truncatedLines, ...Array(paddingNeeded).fill("")] : truncatedLines;
    const contentWidth = Math.max(minWidth, ...lines.map(_temp));
    const boxWidth = Math.min(contentWidth + 4, effectiveMaxWidth);
    const innerWidth = boxWidth - 4;
    let t6;
    if ($[15] !== boxWidth) {
      t6 = BOX_CHARS.horizontal.repeat(boxWidth - 2);
      $[15] = boxWidth;
      $[16] = t6;
    } else {
      t6 = $[16];
    }
    const topBorder = `${BOX_CHARS.topLeft}${t6}${BOX_CHARS.topRight}`;
    let t7;
    if ($[17] !== boxWidth) {
      t7 = BOX_CHARS.horizontal.repeat(boxWidth - 2);
      $[17] = boxWidth;
      $[18] = t7;
    } else {
      t7 = $[18];
    }
    bottomBorder = `${BOX_CHARS.bottomLeft}${t7}${BOX_CHARS.bottomRight}`;
    truncationBar = isTruncated ? (() => {
      const hiddenCount = contentLines.length - effectiveMaxLines;
      const label = `${BOX_CHARS.horizontal.repeat(3)} \u2702 ${BOX_CHARS.horizontal.repeat(3)} ${hiddenCount} lines hidden `;
      const labelWidth = stringWidth(label);
      const fillWidth = Math.max(0, boxWidth - 2 - labelWidth);
      return `${BOX_CHARS.teeLeft}${label}${BOX_CHARS.horizontal.repeat(fillWidth)}${BOX_CHARS.teeRight}`;
    })() : null;
    T0 = Box;
    t3 = "column";
    if ($[19] !== topBorder) {
      t4 = <Text dimColor={true}>{topBorder}</Text>;
      $[19] = topBorder;
      $[20] = t4;
    } else {
      t4 = $[20];
    }
    let t8;
    if ($[21] !== innerWidth) {
      t8 = (line_0, index) => {
        const lineWidth = stringWidth(line_0);
        const displayLine = lineWidth > innerWidth ? sliceAnsi(line_0, 0, innerWidth) : line_0;
        const padding = " ".repeat(Math.max(0, innerWidth - stringWidth(displayLine)));
        return <Box key={index} flexDirection="row"><Text dimColor={true}>{BOX_CHARS.vertical} </Text><Ansi>{displayLine}</Ansi><Text dimColor={true}>{padding} {BOX_CHARS.vertical}</Text></Box>;
      };
      $[21] = innerWidth;
      $[22] = t8;
    } else {
      t8 = $[22];
    }
    t5 = lines.map(t8);
    $[4] = effectiveMaxLines;
    $[5] = effectiveMaxWidth;
    $[6] = minHeight;
    $[7] = minWidth;
    $[8] = rendered;
    $[9] = T0;
    $[10] = bottomBorder;
    $[11] = t3;
    $[12] = t4;
    $[13] = t5;
    $[14] = truncationBar;
  } else {
    T0 = $[9];
    bottomBorder = $[10];
    t3 = $[11];
    t4 = $[12];
    t5 = $[13];
    truncationBar = $[14];
  }
  let t6;
  if ($[23] !== truncationBar) {
    t6 = truncationBar && <Text color="warning">{truncationBar}</Text>;
    $[23] = truncationBar;
    $[24] = t6;
  } else {
    t6 = $[24];
  }
  let t7;
  if ($[25] !== bottomBorder) {
    t7 = <Text dimColor={true}>{bottomBorder}</Text>;
    $[25] = bottomBorder;
    $[26] = t7;
  } else {
    t7 = $[26];
  }
  let t8;
  if ($[27] !== T0 || $[28] !== t3 || $[29] !== t4 || $[30] !== t5 || $[31] !== t6 || $[32] !== t7) {
    t8 = <T0 flexDirection={t3}>{t4}{t5}{t6}{t7}</T0>;
    $[27] = T0;
    $[28] = t3;
    $[29] = t4;
    $[30] = t5;
    $[31] = t6;
    $[32] = t7;
    $[33] = t8;
  } else {
    t8 = $[33];
  }
  return t8;
}
function _temp(line) {
  return stringWidth(line);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlN1c3BlbnNlIiwidXNlIiwidXNlTWVtbyIsInVzZVNldHRpbmdzIiwidXNlVGVybWluYWxTaXplIiwic3RyaW5nV2lkdGgiLCJBbnNpIiwiQm94IiwiVGV4dCIsInVzZVRoZW1lIiwiQ2xpSGlnaGxpZ2h0IiwiZ2V0Q2xpSGlnaGxpZ2h0UHJvbWlzZSIsImFwcGx5TWFya2Rvd24iLCJzbGljZUFuc2kiLCJQcmV2aWV3Qm94UHJvcHMiLCJjb250ZW50IiwibWF4TGluZXMiLCJtaW5IZWlnaHQiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwiQk9YX0NIQVJTIiwidG9wTGVmdCIsInRvcFJpZ2h0IiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwidGVlTGVmdCIsInRlZVJpZ2h0IiwiUHJldmlld0JveCIsInByb3BzIiwiJCIsIl9jIiwic2V0dGluZ3MiLCJzeW50YXhIaWdobGlnaHRpbmdEaXNhYmxlZCIsInQwIiwiUHJldmlld0JveFdpdGhIaWdobGlnaHQiLCJTeW1ib2wiLCJmb3IiLCJoaWdobGlnaHQiLCJ0MSIsIlByZXZpZXdCb3hCb2R5IiwidW5kZWZpbmVkIiwiY29sdW1ucyIsInRlcm1pbmFsV2lkdGgiLCJ0aGVtZSIsImVmZmVjdGl2ZU1heFdpZHRoIiwiZWZmZWN0aXZlTWF4TGluZXMiLCJ0MiIsInJlbmRlcmVkIiwiVDAiLCJib3R0b21Cb3JkZXIiLCJ0MyIsInQ0IiwidDUiLCJ0cnVuY2F0aW9uQmFyIiwiY29udGVudExpbmVzIiwic3BsaXQiLCJpc1RydW5jYXRlZCIsImxlbmd0aCIsInRydW5jYXRlZExpbmVzIiwic2xpY2UiLCJlZmZlY3RpdmVNaW5IZWlnaHQiLCJNYXRoIiwibWluIiwicGFkZGluZ05lZWRlZCIsIm1heCIsImxpbmVzIiwiQXJyYXkiLCJmaWxsIiwiY29udGVudFdpZHRoIiwibWFwIiwiX3RlbXAiLCJib3hXaWR0aCIsImlubmVyV2lkdGgiLCJ0NiIsInJlcGVhdCIsInRvcEJvcmRlciIsInQ3IiwiaGlkZGVuQ291bnQiLCJsYWJlbCIsImxhYmVsV2lkdGgiLCJmaWxsV2lkdGgiLCJ0OCIsImxpbmVfMCIsImluZGV4IiwibGluZVdpZHRoIiwibGluZSIsImRpc3BsYXlMaW5lIiwicGFkZGluZyJdLCJzb3VyY2VzIjpbIlByZXZpZXdCb3gudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBTdXNwZW5zZSwgdXNlLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNldHRpbmdzLmpzJ1xuaW1wb3J0IHsgdXNlVGVybWluYWxTaXplIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVGVybWluYWxTaXplLmpzJ1xuaW1wb3J0IHsgc3RyaW5nV2lkdGggfSBmcm9tICcuLi8uLi8uLi9pbmsvc3RyaW5nV2lkdGguanMnXG5pbXBvcnQgeyBBbnNpLCBCb3gsIFRleHQsIHVzZVRoZW1lIH0gZnJvbSAnLi4vLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHtcbiAgdHlwZSBDbGlIaWdobGlnaHQsXG4gIGdldENsaUhpZ2hsaWdodFByb21pc2UsXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsaUhpZ2hsaWdodC5qcydcbmltcG9ydCB7IGFwcGx5TWFya2Rvd24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYXJrZG93bi5qcydcbmltcG9ydCBzbGljZUFuc2kgZnJvbSAnLi4vLi4vLi4vdXRpbHMvc2xpY2VBbnNpLmpzJ1xuXG50eXBlIFByZXZpZXdCb3hQcm9wcyA9IHtcbiAgLyoqIFRoZSBwcmV2aWV3IGNvbnRlbnQgdG8gZGlzcGxheS4gTWFya2Rvd24gaXMgcmVuZGVyZWQgd2l0aCBzeW50YXggaGlnaGxpZ2h0aW5nXG4gICAqIGZvciBjb2RlIGJsb2NrcyAoYGBgdHMsIGBgYHB5LCBldGMuKS4gQWxzbyBzdXBwb3J0cyBwbGFpbiBtdWx0aS1saW5lIHRleHQuICovXG4gIGNvbnRlbnQ6IHN0cmluZ1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgbGluZXMgdG8gZGlzcGxheSBiZWZvcmUgdHJ1bmNhdGluZy4gQGRlZmF1bHQgMjAgKi9cbiAgbWF4TGluZXM/OiBudW1iZXJcbiAgLyoqIE1pbmltdW0gaGVpZ2h0IChpbiBsaW5lcykgZm9yIHRoZSBwcmV2aWV3IGJveC4gQ29udGVudCB3aWxsIGJlIHBhZGRlZCBpZiBzaG9ydGVyLiAqL1xuICBtaW5IZWlnaHQ/OiBudW1iZXJcbiAgLyoqIE1pbmltdW0gd2lkdGggZm9yIHRoZSBwcmV2aWV3IGJveC4gQGRlZmF1bHQgNDAgKi9cbiAgbWluV2lkdGg/OiBudW1iZXJcbiAgLyoqIE1heGltdW0gd2lkdGggYXZhaWxhYmxlIGZvciB0aGlzIGJveCAoZS5nLiwgdGhlIGNvbnRhaW5lciB3aWR0aCkuICovXG4gIG1heFdpZHRoPzogbnVtYmVyXG59XG5cbmNvbnN0IEJPWF9DSEFSUyA9IHtcbiAgdG9wTGVmdDogJ+KUjCcsXG4gIHRvcFJpZ2h0OiAn4pSQJyxcbiAgYm90dG9tTGVmdDogJ+KUlCcsXG4gIGJvdHRvbVJpZ2h0OiAn4pSYJyxcbiAgaG9yaXpvbnRhbDogJ+KUgCcsXG4gIHZlcnRpY2FsOiAn4pSCJyxcbiAgdGVlTGVmdDogJ+KUnCcsXG4gIHRlZVJpZ2h0OiAn4pSkJyxcbn1cblxuLyoqXG4gKiBBIGJvcmRlcmVkIG1vbm9zcGFjZSBib3ggZm9yIGRpc3BsYXlpbmcgcHJldmlldyBjb250ZW50LlxuICogVHJ1bmNhdGVzIGNvbnRlbnQgdGhhdCBleGNlZWRzIG1heExpbmVzIHdpdGggYW4gaW5kaWNhdG9yLlxuICogVGhlIHBhcmVudCBjb21wb25lbnQgc2hvdWxkIHBhc3MgbWF4TGluZXMgYmFzZWQgb24gaXRzIGF2YWlsYWJsZSBoZWlnaHQgYnVkZ2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gUHJldmlld0JveChwcm9wczogUHJldmlld0JveFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3Qgc2V0dGluZ3MgPSB1c2VTZXR0aW5ncygpXG4gIGlmIChzZXR0aW5ncy5zeW50YXhIaWdobGlnaHRpbmdEaXNhYmxlZCkge1xuICAgIHJldHVybiA8UHJldmlld0JveEJvZHkgey4uLnByb3BzfSBoaWdobGlnaHQ9e251bGx9IC8+XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8U3VzcGVuc2UgZmFsbGJhY2s9ezxQcmV2aWV3Qm94Qm9keSB7Li4ucHJvcHN9IGhpZ2hsaWdodD17bnVsbH0gLz59PlxuICAgICAgPFByZXZpZXdCb3hXaXRoSGlnaGxpZ2h0IHsuLi5wcm9wc30gLz5cbiAgICA8L1N1c3BlbnNlPlxuICApXG59XG5cbmZ1bmN0aW9uIFByZXZpZXdCb3hXaXRoSGlnaGxpZ2h0KHByb3BzOiBQcmV2aWV3Qm94UHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBoaWdobGlnaHQgPSB1c2UoZ2V0Q2xpSGlnaGxpZ2h0UHJvbWlzZSgpKVxuICByZXR1cm4gPFByZXZpZXdCb3hCb2R5IHsuLi5wcm9wc30gaGlnaGxpZ2h0PXtoaWdobGlnaHR9IC8+XG59XG5cbmZ1bmN0aW9uIFByZXZpZXdCb3hCb2R5KHtcbiAgY29udGVudCxcbiAgbWF4TGluZXMsXG4gIG1pbkhlaWdodCxcbiAgbWluV2lkdGggPSA0MCxcbiAgbWF4V2lkdGgsXG4gIGhpZ2hsaWdodCxcbn06IFByZXZpZXdCb3hQcm9wcyAmIHsgaGlnaGxpZ2h0OiBDbGlIaWdobGlnaHQgfCBudWxsIH0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCB7IGNvbHVtbnM6IHRlcm1pbmFsV2lkdGggfSA9IHVzZVRlcm1pbmFsU2l6ZSgpXG4gIGNvbnN0IFt0aGVtZV0gPSB1c2VUaGVtZSgpXG4gIGNvbnN0IGVmZmVjdGl2ZU1heFdpZHRoID0gbWF4V2lkdGggPz8gdGVybWluYWxXaWR0aCAtIDRcblxuICAvLyBVc2UgcHJvdmlkZWQgbWF4TGluZXMsIG9yIGEgcmVhc29uYWJsZSBkZWZhdWx0XG4gIGNvbnN0IGVmZmVjdGl2ZU1heExpbmVzID0gbWF4TGluZXMgPz8gMjBcblxuICAvLyBSZW5kZXIgbWFya2Rvd24gd2l0aCBzeW50YXggaGlnaGxpZ2h0aW5nIGZvciBjb2RlIGJsb2Nrcy4gYXBwbHlNYXJrZG93blxuICAvLyByZXR1cm5zIGFuIEFOU0ktc3R5bGVkIHN0cmluZyAoYm9sZCwgY29sb3JzLCBldGMuKSB0aGF0IHdlIHNwbGl0IGludG9cbiAgLy8gbGluZXMuIHN0cmluZ1dpZHRoIGFuZCBzbGljZUFuc2kgYmVsb3cgY29ycmVjdGx5IGhhbmRsZSBBTlNJIGNvZGVzLlxuICBjb25zdCByZW5kZXJlZCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gYXBwbHlNYXJrZG93bihjb250ZW50LCB0aGVtZSwgaGlnaGxpZ2h0KSxcbiAgICBbY29udGVudCwgdGhlbWUsIGhpZ2hsaWdodF0sXG4gIClcbiAgY29uc3QgY29udGVudExpbmVzID0gcmVuZGVyZWQuc3BsaXQoJ1xcbicpXG4gIGNvbnN0IGlzVHJ1bmNhdGVkID0gY29udGVudExpbmVzLmxlbmd0aCA+IGVmZmVjdGl2ZU1heExpbmVzXG5cbiAgLy8gVHJ1bmNhdGUgdG8gZWZmZWN0aXZlTWF4TGluZXNcbiAgY29uc3QgdHJ1bmNhdGVkTGluZXMgPSBpc1RydW5jYXRlZFxuICAgID8gY29udGVudExpbmVzLnNsaWNlKDAsIGVmZmVjdGl2ZU1heExpbmVzKVxuICAgIDogY29udGVudExpbmVzXG5cbiAgLy8gUGFkIGNvbnRlbnQgd2l0aCBlbXB0eSBsaW5lcyBpZiBzaG9ydGVyIHRoYW4gbWluSGVpZ2h0LCBidXQgbmV2ZXIgZXhjZWVkXG4gIC8vIHRoZSB0cnVuY2F0aW9uIGxpbWl0IOKAlCBvdGhlcndpc2UgcGFkZGluZyB1bmRvZXMgdGhlIHRydW5jYXRpb25cbiAgY29uc3QgZWZmZWN0aXZlTWluSGVpZ2h0ID0gTWF0aC5taW4obWluSGVpZ2h0ID8/IDAsIGVmZmVjdGl2ZU1heExpbmVzKVxuICBjb25zdCBwYWRkaW5nTmVlZGVkID0gTWF0aC5tYXgoXG4gICAgMCxcbiAgICBlZmZlY3RpdmVNaW5IZWlnaHQgLSB0cnVuY2F0ZWRMaW5lcy5sZW5ndGggLSAoaXNUcnVuY2F0ZWQgPyAxIDogMCksXG4gIClcbiAgY29uc3QgbGluZXMgPVxuICAgIHBhZGRpbmdOZWVkZWQgPiAwXG4gICAgICA/IFsuLi50cnVuY2F0ZWRMaW5lcywgLi4uQXJyYXk8c3RyaW5nPihwYWRkaW5nTmVlZGVkKS5maWxsKCcnKV1cbiAgICAgIDogdHJ1bmNhdGVkTGluZXNcblxuICAvLyBDYWxjdWxhdGUgY29udGVudCB3aWR0aCAobWF4IHZpc3VhbCBsaW5lIHdpZHRoLCBoYW5kbGluZyB1bmljb2RlL2Vtb2ppL0NKSylcbiAgY29uc3QgY29udGVudFdpZHRoID0gTWF0aC5tYXgoXG4gICAgbWluV2lkdGgsXG4gICAgLi4ubGluZXMubWFwKGxpbmUgPT4gc3RyaW5nV2lkdGgobGluZSkpLFxuICApXG4gIC8vIEFkZCAyIGZvciBib3JkZXIgcGFkZGluZywgY2FwIGF0IHRoZSBjb250YWluZXIgd2lkdGggdG8gcHJldmVudCBsaW5lIHdyYXBwaW5nXG4gIGNvbnN0IGJveFdpZHRoID0gTWF0aC5taW4oY29udGVudFdpZHRoICsgNCwgZWZmZWN0aXZlTWF4V2lkdGgpXG4gIGNvbnN0IGlubmVyV2lkdGggPSBib3hXaWR0aCAtIDQgLy8gQWNjb3VudCBmb3IgYm9yZGVycyBhbmQgcGFkZGluZ1xuXG4gIC8vIFJlbmRlciB0b3AgYm9yZGVyXG4gIGNvbnN0IHRvcEJvcmRlciA9IGAke0JPWF9DSEFSUy50b3BMZWZ0fSR7Qk9YX0NIQVJTLmhvcml6b250YWwucmVwZWF0KGJveFdpZHRoIC0gMil9JHtCT1hfQ0hBUlMudG9wUmlnaHR9YFxuXG4gIC8vIFJlbmRlciBib3R0b20gYm9yZGVyXG4gIGNvbnN0IGJvdHRvbUJvcmRlciA9IGAke0JPWF9DSEFSUy5ib3R0b21MZWZ0fSR7Qk9YX0NIQVJTLmhvcml6b250YWwucmVwZWF0KGJveFdpZHRoIC0gMil9JHtCT1hfQ0hBUlMuYm90dG9tUmlnaHR9YFxuXG4gIC8vIEJ1aWxkIHRoZSB0cnVuY2F0aW9uIHNlcGFyYXRvciBiYXIgKGUuZy4g4pSc4pSA4pSA4pSAIOKcgiDilIDilIDilIAgNDIgbGluZXMgaGlkZGVuIOKUgOKUgOKUgOKUgOKUgOKUgOKUpClcbiAgY29uc3QgdHJ1bmNhdGlvbkJhciA9IGlzVHJ1bmNhdGVkXG4gICAgPyAoKCkgPT4ge1xuICAgICAgICBjb25zdCBoaWRkZW5Db3VudCA9IGNvbnRlbnRMaW5lcy5sZW5ndGggLSBlZmZlY3RpdmVNYXhMaW5lc1xuICAgICAgICBjb25zdCBsYWJlbCA9IGAke0JPWF9DSEFSUy5ob3Jpem9udGFsLnJlcGVhdCgzKX0gXFx1MjcwMiAke0JPWF9DSEFSUy5ob3Jpem9udGFsLnJlcGVhdCgzKX0gJHtoaWRkZW5Db3VudH0gbGluZXMgaGlkZGVuIGBcbiAgICAgICAgY29uc3QgbGFiZWxXaWR0aCA9IHN0cmluZ1dpZHRoKGxhYmVsKVxuICAgICAgICBjb25zdCBmaWxsV2lkdGggPSBNYXRoLm1heCgwLCBib3hXaWR0aCAtIDIgLSBsYWJlbFdpZHRoKVxuICAgICAgICByZXR1cm4gYCR7Qk9YX0NIQVJTLnRlZUxlZnR9JHtsYWJlbH0ke0JPWF9DSEFSUy5ob3Jpem9udGFsLnJlcGVhdChmaWxsV2lkdGgpfSR7Qk9YX0NIQVJTLnRlZVJpZ2h0fWBcbiAgICAgIH0pKClcbiAgICA6IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgPFRleHQgZGltQ29sb3I+e3RvcEJvcmRlcn08L1RleHQ+XG5cbiAgICAgIHtsaW5lcy5tYXAoKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICAgIC8vIFBhZCBvciB0cnVuY2F0ZSBsaW5lIHRvIGZpdCBpbm5lciB3aWR0aCAodXNpbmcgdmlzdWFsIHdpZHRoIGZvciB1bmljb2RlL2Vtb2ppL0NKSykuXG4gICAgICAgIC8vIHNsaWNlQW5zaSBoYW5kbGVzIEFOU0kgZXNjYXBlIGNvZGVzIGNvcnJlY3RseTsgc3RyaW5nV2lkdGggc3RyaXBzIHRoZW0gYmVmb3JlIG1lYXN1cmluZy5cbiAgICAgICAgY29uc3QgbGluZVdpZHRoID0gc3RyaW5nV2lkdGgobGluZSlcbiAgICAgICAgY29uc3QgZGlzcGxheUxpbmUgPVxuICAgICAgICAgIGxpbmVXaWR0aCA+IGlubmVyV2lkdGggPyBzbGljZUFuc2kobGluZSwgMCwgaW5uZXJXaWR0aCkgOiBsaW5lXG4gICAgICAgIGNvbnN0IHBhZGRpbmcgPSAnICcucmVwZWF0KFxuICAgICAgICAgIE1hdGgubWF4KDAsIGlubmVyV2lkdGggLSBzdHJpbmdXaWR0aChkaXNwbGF5TGluZSkpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8Qm94IGtleT17aW5kZXh9IGZsZXhEaXJlY3Rpb249XCJyb3dcIj5cbiAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPntCT1hfQ0hBUlMudmVydGljYWx9IDwvVGV4dD5cbiAgICAgICAgICAgIDxBbnNpPntkaXNwbGF5TGluZX08L0Fuc2k+XG4gICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgICAge3BhZGRpbmd9IHtCT1hfQ0hBUlMudmVydGljYWx9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIClcbiAgICAgIH0pfVxuXG4gICAgICB7dHJ1bmNhdGlvbkJhciAmJiA8VGV4dCBjb2xvcj1cIndhcm5pbmdcIj57dHJ1bmNhdGlvbkJhcn08L1RleHQ+fVxuXG4gICAgICA8VGV4dCBkaW1Db2xvcj57Ym90dG9tQm9yZGVyfTwvVGV4dD5cbiAgICA8L0JveD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxRQUFRLEVBQUVDLEdBQUcsRUFBRUMsT0FBTyxRQUFRLE9BQU87QUFDckQsU0FBU0MsV0FBVyxRQUFRLCtCQUErQjtBQUMzRCxTQUFTQyxlQUFlLFFBQVEsbUNBQW1DO0FBQ25FLFNBQVNDLFdBQVcsUUFBUSw2QkFBNkI7QUFDekQsU0FB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