__vite_ssr_exportName__("default", () => { try { return __vite_ssr_export_default__ } catch {} });
const __vite_ssr_import_0__ = await __vite_ssr_import__("/src/pixel_patrol_base/viewer/shared.js", {"importedNames":["MIXED_GROUP_WARNING"]});


const __vite_ssr_export_default__ = {
  id: 'summary',
  required_inputs: ['size_bytes', 'file_extension'],
  inputs: ['path'],
  label: 'File Data Summary',
  group: 'Summary',
  info: 'High-level overview of the dataset: total number of files and images, total size, ' +
    'file extensions, and (when grouped) a per-group breakdown.',

  requires(schema) {
    return schema.allCols.includes('size_bytes') &&
           schema.allCols.includes('file_extension');
  },

  async overviewMessage(ctx) {
    try {
      const [row = {}] = await ctx.queryRows(`
        SELECT ${TOTALS} FROM ${ctx.sql.perFile(ctx.where)}
      `);
      const fileCount  = Number(row.file_count ?? 0);
      const imageCount = Number(row.image_count ?? 0);

      let text = `Pixel Patrol scanned <strong>${fileCount.toLocaleString()} file${fileCount === 1 ? '' : 's'}</strong>`;
      if (imageCount > 0 && imageCount !== fileCount) {
        text += ` containing <strong>${imageCount.toLocaleString()} image${imageCount === 1 ? '' : 's'}</strong> in total.`;
      } else {
        text += ` - one image per file.`;
      };
      return text;
    } catch { return null; }
  },

  async render(container, ctx) {
    try {
      const [rows, totals] = await fetchSummary(ctx);
      if (!rows.length) {
        container.innerHTML = '<div class="no-data">No data available after filtering.</div>';
        return;
      };
      const summary = summarize(ctx, rows, totals);

      // In overview mode the summary is a bare header; the uneven-group warning
      // is surfaced in the File Metadata tile instead.
      if (summary.nGroups > 1 && !ctx.state.overviewMode && !ctx.withinFileGroupVariation) prependUnevenGroupWarning(container, ctx, rows);
      renderKpis(container, ctx, summary);
      renderMetaLines(container, ctx, summary);
      if (ctx.withinFileGroupVariation && summary.nGroups > 1) {
        ctx.plot.prependWarning(container, { level: 'yellow', html: __vite_ssr_import_0__.MIXED_GROUP_WARNING });
        container.appendChild(container.firstChild); // move from top to after KPI/meta lines
      };
      if (summary.nGroups > 1) {
        const mixed = ctx.withinFileGroupVariation;
        const imageCounts = (mixed && summary.hasContainerFiles)
          ? await fetchImageCountsPerGroup(ctx)
          : null;
        renderGroupTable(container, ctx, rows, summary, { mixed, imageCounts });
      }
    } catch {
      container.innerHTML = '<div class="no-data">Failed to load data.</div>';
    }
  },
};

const TOTALS = `COUNT(*) AS file_count, SUM(__n_images__) AS image_count,
                SUM("size_bytes") AS total_bytes`;

// Per-group totals, plus the same totals dataset-wide for the headline numbers.
function fetchSummary(ctx) {
  const src = ctx.sql.perFile(ctx.where);
  return Promise.all([
    ctx.queryRows(`
      SELECT ${ctx.sql.groupCol()} AS __group__, ${TOTALS},
             LIST(DISTINCT "file_extension") AS file_types
      FROM ${src} GROUP BY 1 ORDER BY 1
    `),
    ctx.queryRows(`SELECT ${TOTALS} FROM ${src}`),
  ]);
}

// Image count per group queried directly from pp_data (accurate even for mixed-group files).
async function fetchImageCountsPerGroup(ctx) {
  const rows = await ctx.queryRows(
    `SELECT ${ctx.sql.groupCol()} AS g, COUNT(*) AS n FROM pp_data ${ctx.where} GROUP BY 1`
  );
  return Object.fromEntries(rows.map(r => [String(r.g), Number(r.n)]));
}

// Derive the headline numbers and labels the view needs.
function summarize(ctx, rows, [totals = {}]) {
  const extensions = new Set();
  for (const r of rows) for (const ext of (r.file_types ?? [])) if (ext) extensions.add(ext);

  const groupCol            = ctx.state.groupCol ?? 'group';
  const isImportedPathShort = groupCol === 'imported_path_short';
  const totalFiles          = Number(totals.file_count ?? 0);
  const totalImages         = Number(totals.image_count ?? 0);

  return {
    nGroups:       rows.length,
    extensions,
    totalFiles,
    totalImages,
    totalBytes:    Number(totals.total_bytes ?? 0),
    hasContainerFiles: totalImages > totalFiles,
    isImportedPathShort,
    groupColLabel: isImportedPathShort ? groupCol : ctx.plot.niceName(groupCol),
  };
}

// Yellow banner when the largest group has ≥1.5× the files of the smallest.
function prependUnevenGroupWarning(container, ctx, rows) {
  const biggest  = rows.reduce((a, b) => Number(a.file_count) >= Number(b.file_count) ? a : b);
  const smallest = rows.reduce((a, b) => Number(a.file_count) <= Number(b.file_count) ? a : b);
  if (Number(biggest.file_count) / Number(smallest.file_count) < 1.5) return;
  const { escapeHtml } = ctx.plot;
  ctx.plot.prependWarning(container, {
    level: 'yellow',
    html: `Group sizes differ a fair bit: <code>${escapeHtml(ctx.groupLabel(String(biggest.__group__)))}</code> ` +
      `has ${Number(biggest.file_count).toLocaleString()} files, while ` +
      `<code>${escapeHtml(ctx.groupLabel(String(smallest.__group__)))}</code> has ` +
      `${Number(smallest.file_count).toLocaleString()}. That's not necessarily an issue, but uneven group ` +
      `sizes can affect statistics and significance tests - worth a quick check that it's what you expect.`,
  });
}

// The Files / Images / Total Size / Extensions tiles.
function renderKpis(container, ctx, s) {
  const { escapeHtml, formatBytes } = ctx.plot;
  const kpis = [{ label: 'Files', value: s.totalFiles.toLocaleString() }];
  // Show the image count alongside the file count whenever the two differ
  // (e.g. multi-image stacks/series); when it's one-image-per-file the extra
  // tile would just repeat the file count, so it's omitted.
  if (s.totalImages > 0 && s.totalImages !== s.totalFiles) {
    kpis.push({ label: 'Images', value: s.totalImages.toLocaleString() });
  };
  kpis.push({ label: 'Total Size', value: formatBytes(s.totalBytes) });
  kpis.push({ label: 'File Extensions', value: formatFileTypes(s.extensions) });

  const kpiRow = document.createElement('div');
  kpiRow.className = 'kpi-row';
  kpiRow.innerHTML = kpis.map(k => `
    <div class="kpi-tile">
      <div class="kpi-value">${escapeHtml(k.value)}</div>
      <div class="kpi-label">${escapeHtml(k.label)}</div>
    </div>
  `).join('');
  container.appendChild(kpiRow);
}

// "Grouped by:" context line below the tiles.
function renderMetaLines(container, ctx, s) {
  const { escapeHtml } = ctx.plot;
  if (s.nGroups > 1) {
    const div = document.createElement('div');
    div.className = 'summary-meta-line';
    div.innerHTML = `<strong>Grouped by:</strong> <code>${escapeHtml(s.groupColLabel)}</code>` +
      (s.isImportedPathShort
        ? ' &mdash; the import folder each file came from, relative to the base directory'
        : '');
    container.appendChild(div);
  }
}

// Per-group breakdown table with inline bar cells for file count, images, and size.
// When mixed=true (files span multiple groups), Files and Size columns are hidden.
// imageCounts, if provided, overrides the per-row image_count with accurate pp_data counts.
function renderGroupTable(container, ctx, rows, s, { mixed = false, imageCounts = null } = {}) {
  const { escapeHtml, formatBytes } = ctx.plot;
  const showExtCol    = s.extensions.size > 1;
  const showImages    = s.hasContainerFiles;
  const showFilesSize = !mixed;
  const getImageCount = r => imageCounts ? (imageCounts[String(r.__group__)] ?? 0) : Number(r.image_count ?? 0);

  const maxFileCount  = showFilesSize ? Math.max(...rows.map(r => Number(r.file_count))) : 0;
  const maxBytes      = showFilesSize ? Math.max(...rows.map(r => Number(r.total_bytes ?? 0))) : 0;
  const maxImageCount = showImages    ? Math.max(...rows.map(getImageCount)) : 0;

  const table = document.createElement('table');
  table.className = 'stat-table';
  table.innerHTML = `
    <thead>
      <tr>
        <th>${escapeHtml(s.groupColLabel)}</th>
        ${showFilesSize ? '<th>Files</th>' : ''}
        ${showImages    ? '<th>Images</th>' : ''}
        ${showFilesSize ? '<th>Size</th>' : ''}
        ${showExtCol    ? '<th>File Extension</th>' : ''}
      </tr>
    </thead>
    <tbody>
      ${rows.map(r => {
        const color      = ctx.color.group(String(r.__group__));
        const fileCount  = Number(r.file_count);
        const imageCount = getImageCount(r);
        const bytes      = Number(r.total_bytes ?? 0);
        return `
        <tr>
          <td><span class="group-color-dot" style="background:${color}"></span>${escapeHtml(ctx.groupLabel(String(r.__group__)))}</td>
          ${showFilesSize ? `<td>${barCell(fileCount, maxFileCount, color, fileCount.toLocaleString())}</td>` : ''}
          ${showImages    ? `<td>${barCell(imageCount, maxImageCount, color, imageCount.toLocaleString())}</td>` : ''}
          ${showFilesSize ? `<td>${barCell(bytes, maxBytes, color, formatBytes(bytes))}</td>` : ''}
          ${showExtCol    ? `<td>${escapeHtml(formatFileTypes(r.file_types))}</td>` : ''}
        </tr>
      `;
      }).join('')}
    </tbody>
  `;
  container.appendChild(table);
}


function barCell(value, maxValue, color, label) {
  const pct = maxValue > 0 ? Math.max(0, Math.min(100, (value / maxValue) * 100)) : 0;
  return `<div class="bar-cell"><div class="bar-cell-fill" style="width:${pct}%;background:${color}"></div><span class="bar-cell-value">${label}</span></div>`;
}

function formatFileTypes(val) {
  if (!val) return '-';
  if (typeof val === 'string') return val;
  let arr;
  try {
    arr = [...val].filter(Boolean);
  } catch {
    return String(val);
  };
  return arr.length ? arr.sort().join(', ') : '-';
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsdWdpbl9zdW1tYXJ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1JWEVEX0dST1VQX1dBUk5JTkcgfSBmcm9tICcuL3NoYXJlZC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaWQ6ICdzdW1tYXJ5JyxcbiAgcmVxdWlyZWRfaW5wdXRzOiBbJ3NpemVfYnl0ZXMnLCAnZmlsZV9leHRlbnNpb24nXSxcbiAgaW5wdXRzOiBbJ3BhdGgnXSxcbiAgbGFiZWw6ICdGaWxlIERhdGEgU3VtbWFyeScsXG4gIGdyb3VwOiAnU3VtbWFyeScsXG4gIGluZm86ICdIaWdoLWxldmVsIG92ZXJ2aWV3IG9mIHRoZSBkYXRhc2V0OiB0b3RhbCBudW1iZXIgb2YgZmlsZXMgYW5kIGltYWdlcywgdG90YWwgc2l6ZSwgJyArXG4gICAgJ2ZpbGUgZXh0ZW5zaW9ucywgYW5kICh3aGVuIGdyb3VwZWQpIGEgcGVyLWdyb3VwIGJyZWFrZG93bi4nLFxuXG4gIHJlcXVpcmVzKHNjaGVtYSkge1xuICAgIHJldHVybiBzY2hlbWEuYWxsQ29scy5pbmNsdWRlcygnc2l6ZV9ieXRlcycpICYmXG4gICAgICAgICAgIHNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKCdmaWxlX2V4dGVuc2lvbicpO1xuICB9LFxuXG4gIGFzeW5jIG92ZXJ2aWV3TWVzc2FnZShjdHgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgW3JvdyA9IHt9XSA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoYFxuICAgICAgICBTRUxFQ1QgJHtUT1RBTFN9IEZST00gJHtjdHguc3FsLnBlckZpbGUoY3R4LndoZXJlKX1cbiAgICAgIGApO1xuICAgICAgY29uc3QgZmlsZUNvdW50ICA9IE51bWJlcihyb3cuZmlsZV9jb3VudCA/PyAwKTtcbiAgICAgIGNvbnN0IGltYWdlQ291bnQgPSBOdW1iZXIocm93LmltYWdlX2NvdW50ID8/IDApO1xuXG4gICAgICBsZXQgdGV4dCA9IGBQaXhlbCBQYXRyb2wgc2Nhbm5lZCA8c3Ryb25nPiR7ZmlsZUNvdW50LnRvTG9jYWxlU3RyaW5nKCl9IGZpbGUke2ZpbGVDb3VudCA9PT0gMSA/ICcnIDogJ3MnfTwvc3Ryb25nPmA7XG4gICAgICBpZiAoaW1hZ2VDb3VudCA+IDAgJiYgaW1hZ2VDb3VudCAhPT0gZmlsZUNvdW50KSB7XG4gICAgICAgIHRleHQgKz0gYCBjb250YWluaW5nIDxzdHJvbmc+JHtpbWFnZUNvdW50LnRvTG9jYWxlU3RyaW5nKCl9IGltYWdlJHtpbWFnZUNvdW50ID09PSAxID8gJycgOiAncyd9PC9zdHJvbmc+IGluIHRvdGFsLmA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0ICs9IGAgLSBvbmUgaW1hZ2UgcGVyIGZpbGUuYDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH0gY2F0Y2ggeyByZXR1cm4gbnVsbDsgfVxuICB9LFxuXG4gIGFzeW5jIHJlbmRlcihjb250YWluZXIsIGN0eCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBbcm93cywgdG90YWxzXSA9IGF3YWl0IGZldGNoU3VtbWFyeShjdHgpO1xuICAgICAgaWYgKCFyb3dzLmxlbmd0aCkge1xuICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+Tm8gZGF0YSBhdmFpbGFibGUgYWZ0ZXIgZmlsdGVyaW5nLjwvZGl2Pic7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN1bW1hcnkgPSBzdW1tYXJpemUoY3R4LCByb3dzLCB0b3RhbHMpO1xuXG4gICAgICAvLyBJbiBvdmVydmlldyBtb2RlIHRoZSBzdW1tYXJ5IGlzIGEgYmFyZSBoZWFkZXI7IHRoZSB1bmV2ZW4tZ3JvdXAgd2FybmluZ1xuICAgICAgLy8gaXMgc3VyZmFjZWQgaW4gdGhlIEZpbGUgTWV0YWRhdGEgdGlsZSBpbnN0ZWFkLlxuICAgICAgaWYgKHN1bW1hcnkubkdyb3VwcyA+IDEgJiYgIWN0eC5zdGF0ZS5vdmVydmlld01vZGUgJiYgIWN0eC53aXRoaW5GaWxlR3JvdXBWYXJpYXRpb24pIHByZXBlbmRVbmV2ZW5Hcm91cFdhcm5pbmcoY29udGFpbmVyLCBjdHgsIHJvd3MpO1xuICAgICAgcmVuZGVyS3Bpcyhjb250YWluZXIsIGN0eCwgc3VtbWFyeSk7XG4gICAgICByZW5kZXJNZXRhTGluZXMoY29udGFpbmVyLCBjdHgsIHN1bW1hcnkpO1xuICAgICAgaWYgKGN0eC53aXRoaW5GaWxlR3JvdXBWYXJpYXRpb24gJiYgc3VtbWFyeS5uR3JvdXBzID4gMSkge1xuICAgICAgICBjdHgucGxvdC5wcmVwZW5kV2FybmluZyhjb250YWluZXIsIHsgbGV2ZWw6ICd5ZWxsb3cnLCBodG1sOiBNSVhFRF9HUk9VUF9XQVJOSU5HIH0pO1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyLmZpcnN0Q2hpbGQpOyAvLyBtb3ZlIGZyb20gdG9wIHRvIGFmdGVyIEtQSS9tZXRhIGxpbmVzXG4gICAgICB9XG4gICAgICBpZiAoc3VtbWFyeS5uR3JvdXBzID4gMSkge1xuICAgICAgICBjb25zdCBtaXhlZCA9IGN0eC53aXRoaW5GaWxlR3JvdXBWYXJpYXRpb247XG4gICAgICAgIGNvbnN0IGltYWdlQ291bnRzID0gKG1peGVkICYmIHN1bW1hcnkuaGFzQ29udGFpbmVyRmlsZXMpXG4gICAgICAgICAgPyBhd2FpdCBmZXRjaEltYWdlQ291bnRzUGVyR3JvdXAoY3R4KVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgcmVuZGVyR3JvdXBUYWJsZShjb250YWluZXIsIGN0eCwgcm93cywgc3VtbWFyeSwgeyBtaXhlZCwgaW1hZ2VDb3VudHMgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+RmFpbGVkIHRvIGxvYWQgZGF0YS48L2Rpdj4nO1xuICAgIH1cbiAgfSxcbn07XG5cbmNvbnN0IFRPVEFMUyA9IGBDT1VOVCgqKSBBUyBmaWxlX2NvdW50LCBTVU0oX19uX2ltYWdlc19fKSBBUyBpbWFnZV9jb3VudCxcbiAgICAgICAgICAgICAgICBTVU0oXCJzaXplX2J5dGVzXCIpIEFTIHRvdGFsX2J5dGVzYDtcblxuLy8gUGVyLWdyb3VwIHRvdGFscywgcGx1cyB0aGUgc2FtZSB0b3RhbHMgZGF0YXNldC13aWRlIGZvciB0aGUgaGVhZGxpbmUgbnVtYmVycy5cbmZ1bmN0aW9uIGZldGNoU3VtbWFyeShjdHgpIHtcbiAgY29uc3Qgc3JjID0gY3R4LnNxbC5wZXJGaWxlKGN0eC53aGVyZSk7XG4gIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgY3R4LnF1ZXJ5Um93cyhgXG4gICAgICBTRUxFQ1QgJHtjdHguc3FsLmdyb3VwQ29sKCl9IEFTIF9fZ3JvdXBfXywgJHtUT1RBTFN9LFxuICAgICAgICAgICAgIExJU1QoRElTVElOQ1QgXCJmaWxlX2V4dGVuc2lvblwiKSBBUyBmaWxlX3R5cGVzXG4gICAgICBGUk9NICR7c3JjfSBHUk9VUCBCWSAxIE9SREVSIEJZIDFcbiAgICBgKSxcbiAgICBjdHgucXVlcnlSb3dzKGBTRUxFQ1QgJHtUT1RBTFN9IEZST00gJHtzcmN9YCksXG4gIF0pO1xufVxuXG4vLyBJbWFnZSBjb3VudCBwZXIgZ3JvdXAgcXVlcmllZCBkaXJlY3RseSBmcm9tIHBwX2RhdGEgKGFjY3VyYXRlIGV2ZW4gZm9yIG1peGVkLWdyb3VwIGZpbGVzKS5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoSW1hZ2VDb3VudHNQZXJHcm91cChjdHgpIHtcbiAgY29uc3Qgcm93cyA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoXG4gICAgYFNFTEVDVCAke2N0eC5zcWwuZ3JvdXBDb2woKX0gQVMgZywgQ09VTlQoKikgQVMgbiBGUk9NIHBwX2RhdGEgJHtjdHgud2hlcmV9IEdST1VQIEJZIDFgXG4gICk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMocm93cy5tYXAociA9PiBbU3RyaW5nKHIuZyksIE51bWJlcihyLm4pXSkpO1xufVxuXG4vLyBEZXJpdmUgdGhlIGhlYWRsaW5lIG51bWJlcnMgYW5kIGxhYmVscyB0aGUgdmlldyBuZWVkcy5cbmZ1bmN0aW9uIHN1bW1hcml6ZShjdHgsIHJvd3MsIFt0b3RhbHMgPSB7fV0pIHtcbiAgY29uc3QgZXh0ZW5zaW9ucyA9IG5ldyBTZXQoKTtcbiAgZm9yIChjb25zdCByIG9mIHJvd3MpIGZvciAoY29uc3QgZXh0IG9mIChyLmZpbGVfdHlwZXMgPz8gW10pKSBpZiAoZXh0KSBleHRlbnNpb25zLmFkZChleHQpO1xuXG4gIGNvbnN0IGdyb3VwQ29sICAgICAgICAgICAgPSBjdHguc3RhdGUuZ3JvdXBDb2wgPz8gJ2dyb3VwJztcbiAgY29uc3QgaXNJbXBvcnRlZFBhdGhTaG9ydCA9IGdyb3VwQ29sID09PSAnaW1wb3J0ZWRfcGF0aF9zaG9ydCc7XG4gIGNvbnN0IHRvdGFsRmlsZXMgICAgICAgICAgPSBOdW1iZXIodG90YWxzLmZpbGVfY291bnQgPz8gMCk7XG4gIGNvbnN0IHRvdGFsSW1hZ2VzICAgICAgICAgPSBOdW1iZXIodG90YWxzLmltYWdlX2NvdW50ID8/IDApO1xuXG4gIHJldHVybiB7XG4gICAgbkdyb3VwczogICAgICAgcm93cy5sZW5ndGgsXG4gICAgZXh0ZW5zaW9ucyxcbiAgICB0b3RhbEZpbGVzLFxuICAgIHRvdGFsSW1hZ2VzLFxuICAgIHRvdGFsQnl0ZXM6ICAgIE51bWJlcih0b3RhbHMudG90YWxfYnl0ZXMgPz8gMCksXG4gICAgaGFzQ29udGFpbmVyRmlsZXM6IHRvdGFsSW1hZ2VzID4gdG90YWxGaWxlcyxcbiAgICBpc0ltcG9ydGVkUGF0aFNob3J0LFxuICAgIGdyb3VwQ29sTGFiZWw6IGlzSW1wb3J0ZWRQYXRoU2hvcnQgPyBncm91cENvbCA6IGN0eC5wbG90Lm5pY2VOYW1lKGdyb3VwQ29sKSxcbiAgfTtcbn1cblxuLy8gWWVsbG93IGJhbm5lciB3aGVuIHRoZSBsYXJnZXN0IGdyb3VwIGhhcyDiiaUxLjXDlyB0aGUgZmlsZXMgb2YgdGhlIHNtYWxsZXN0LlxuZnVuY3Rpb24gcHJlcGVuZFVuZXZlbkdyb3VwV2FybmluZyhjb250YWluZXIsIGN0eCwgcm93cykge1xuICBjb25zdCBiaWdnZXN0ICA9IHJvd3MucmVkdWNlKChhLCBiKSA9PiBOdW1iZXIoYS5maWxlX2NvdW50KSA+PSBOdW1iZXIoYi5maWxlX2NvdW50KSA/IGEgOiBiKTtcbiAgY29uc3Qgc21hbGxlc3QgPSByb3dzLnJlZHVjZSgoYSwgYikgPT4gTnVtYmVyKGEuZmlsZV9jb3VudCkgPD0gTnVtYmVyKGIuZmlsZV9jb3VudCkgPyBhIDogYik7XG4gIGlmIChOdW1iZXIoYmlnZ2VzdC5maWxlX2NvdW50KSAvIE51bWJlcihzbWFsbGVzdC5maWxlX2NvdW50KSA8IDEuNSkgcmV0dXJuO1xuICBjb25zdCB7IGVzY2FwZUh0bWwgfSA9IGN0eC5wbG90O1xuICBjdHgucGxvdC5wcmVwZW5kV2FybmluZyhjb250YWluZXIsIHtcbiAgICBsZXZlbDogJ3llbGxvdycsXG4gICAgaHRtbDogYEdyb3VwIHNpemVzIGRpZmZlciBhIGZhaXIgYml0OiA8Y29kZT4ke2VzY2FwZUh0bWwoY3R4Lmdyb3VwTGFiZWwoU3RyaW5nKGJpZ2dlc3QuX19ncm91cF9fKSkpfTwvY29kZT4gYCArXG4gICAgICBgaGFzICR7TnVtYmVyKGJpZ2dlc3QuZmlsZV9jb3VudCkudG9Mb2NhbGVTdHJpbmcoKX0gZmlsZXMsIHdoaWxlIGAgK1xuICAgICAgYDxjb2RlPiR7ZXNjYXBlSHRtbChjdHguZ3JvdXBMYWJlbChTdHJpbmcoc21hbGxlc3QuX19ncm91cF9fKSkpfTwvY29kZT4gaGFzIGAgK1xuICAgICAgYCR7TnVtYmVyKHNtYWxsZXN0LmZpbGVfY291bnQpLnRvTG9jYWxlU3RyaW5nKCl9LiBUaGF0J3Mgbm90IG5lY2Vzc2FyaWx5IGFuIGlzc3VlLCBidXQgdW5ldmVuIGdyb3VwIGAgK1xuICAgICAgYHNpemVzIGNhbiBhZmZlY3Qgc3RhdGlzdGljcyBhbmQgc2lnbmlmaWNhbmNlIHRlc3RzIC0gd29ydGggYSBxdWljayBjaGVjayB0aGF0IGl0J3Mgd2hhdCB5b3UgZXhwZWN0LmAsXG4gIH0pO1xufVxuXG4vLyBUaGUgRmlsZXMgLyBJbWFnZXMgLyBUb3RhbCBTaXplIC8gRXh0ZW5zaW9ucyB0aWxlcy5cbmZ1bmN0aW9uIHJlbmRlcktwaXMoY29udGFpbmVyLCBjdHgsIHMpIHtcbiAgY29uc3QgeyBlc2NhcGVIdG1sLCBmb3JtYXRCeXRlcyB9ID0gY3R4LnBsb3Q7XG4gIGNvbnN0IGtwaXMgPSBbeyBsYWJlbDogJ0ZpbGVzJywgdmFsdWU6IHMudG90YWxGaWxlcy50b0xvY2FsZVN0cmluZygpIH1dO1xuICAvLyBTaG93IHRoZSBpbWFnZSBjb3VudCBhbG9uZ3NpZGUgdGhlIGZpbGUgY291bnQgd2hlbmV2ZXIgdGhlIHR3byBkaWZmZXJcbiAgLy8gKGUuZy4gbXVsdGktaW1hZ2Ugc3RhY2tzL3Nlcmllcyk7IHdoZW4gaXQncyBvbmUtaW1hZ2UtcGVyLWZpbGUgdGhlIGV4dHJhXG4gIC8vIHRpbGUgd291bGQganVzdCByZXBlYXQgdGhlIGZpbGUgY291bnQsIHNvIGl0J3Mgb21pdHRlZC5cbiAgaWYgKHMudG90YWxJbWFnZXMgPiAwICYmIHMudG90YWxJbWFnZXMgIT09IHMudG90YWxGaWxlcykge1xuICAgIGtwaXMucHVzaCh7IGxhYmVsOiAnSW1hZ2VzJywgdmFsdWU6IHMudG90YWxJbWFnZXMudG9Mb2NhbGVTdHJpbmcoKSB9KTtcbiAgfVxuICBrcGlzLnB1c2goeyBsYWJlbDogJ1RvdGFsIFNpemUnLCB2YWx1ZTogZm9ybWF0Qnl0ZXMocy50b3RhbEJ5dGVzKSB9KTtcbiAga3Bpcy5wdXNoKHsgbGFiZWw6ICdGaWxlIEV4dGVuc2lvbnMnLCB2YWx1ZTogZm9ybWF0RmlsZVR5cGVzKHMuZXh0ZW5zaW9ucykgfSk7XG5cbiAgY29uc3Qga3BpUm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGtwaVJvdy5jbGFzc05hbWUgPSAna3BpLXJvdyc7XG4gIGtwaVJvdy5pbm5lckhUTUwgPSBrcGlzLm1hcChrID0+IGBcbiAgICA8ZGl2IGNsYXNzPVwia3BpLXRpbGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJrcGktdmFsdWVcIj4ke2VzY2FwZUh0bWwoay52YWx1ZSl9PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwia3BpLWxhYmVsXCI+JHtlc2NhcGVIdG1sKGsubGFiZWwpfTwvZGl2PlxuICAgIDwvZGl2PlxuICBgKS5qb2luKCcnKTtcbiAgY29udGFpbmVyLmFwcGVuZENoaWxkKGtwaVJvdyk7XG59XG5cbi8vIFwiR3JvdXBlZCBieTpcIiBjb250ZXh0IGxpbmUgYmVsb3cgdGhlIHRpbGVzLlxuZnVuY3Rpb24gcmVuZGVyTWV0YUxpbmVzKGNvbnRhaW5lciwgY3R4LCBzKSB7XG4gIGNvbnN0IHsgZXNjYXBlSHRtbCB9ID0gY3R4LnBsb3Q7XG4gIGlmIChzLm5Hcm91cHMgPiAxKSB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LmNsYXNzTmFtZSA9ICdzdW1tYXJ5LW1ldGEtbGluZSc7XG4gICAgZGl2LmlubmVySFRNTCA9IGA8c3Ryb25nPkdyb3VwZWQgYnk6PC9zdHJvbmc+IDxjb2RlPiR7ZXNjYXBlSHRtbChzLmdyb3VwQ29sTGFiZWwpfTwvY29kZT5gICtcbiAgICAgIChzLmlzSW1wb3J0ZWRQYXRoU2hvcnRcbiAgICAgICAgPyAnICZtZGFzaDsgdGhlIGltcG9ydCBmb2xkZXIgZWFjaCBmaWxlIGNhbWUgZnJvbSwgcmVsYXRpdmUgdG8gdGhlIGJhc2UgZGlyZWN0b3J5J1xuICAgICAgICA6ICcnKTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgfVxufVxuXG4vLyBQZXItZ3JvdXAgYnJlYWtkb3duIHRhYmxlIHdpdGggaW5saW5lIGJhciBjZWxscyBmb3IgZmlsZSBjb3VudCwgaW1hZ2VzLCBhbmQgc2l6ZS5cbi8vIFdoZW4gbWl4ZWQ9dHJ1ZSAoZmlsZXMgc3BhbiBtdWx0aXBsZSBncm91cHMpLCBGaWxlcyBhbmQgU2l6ZSBjb2x1bW5zIGFyZSBoaWRkZW4uXG4vLyBpbWFnZUNvdW50cywgaWYgcHJvdmlkZWQsIG92ZXJyaWRlcyB0aGUgcGVyLXJvdyBpbWFnZV9jb3VudCB3aXRoIGFjY3VyYXRlIHBwX2RhdGEgY291bnRzLlxuZnVuY3Rpb24gcmVuZGVyR3JvdXBUYWJsZShjb250YWluZXIsIGN0eCwgcm93cywgcywgeyBtaXhlZCA9IGZhbHNlLCBpbWFnZUNvdW50cyA9IG51bGwgfSA9IHt9KSB7XG4gIGNvbnN0IHsgZXNjYXBlSHRtbCwgZm9ybWF0Qnl0ZXMgfSA9IGN0eC5wbG90O1xuICBjb25zdCBzaG93RXh0Q29sICAgID0gcy5leHRlbnNpb25zLnNpemUgPiAxO1xuICBjb25zdCBzaG93SW1hZ2VzICAgID0gcy5oYXNDb250YWluZXJGaWxlcztcbiAgY29uc3Qgc2hvd0ZpbGVzU2l6ZSA9ICFtaXhlZDtcbiAgY29uc3QgZ2V0SW1hZ2VDb3VudCA9IHIgPT4gaW1hZ2VDb3VudHMgPyAoaW1hZ2VDb3VudHNbU3RyaW5nKHIuX19ncm91cF9fKV0gPz8gMCkgOiBOdW1iZXIoci5pbWFnZV9jb3VudCA/PyAwKTtcblxuICBjb25zdCBtYXhGaWxlQ291bnQgID0gc2hvd0ZpbGVzU2l6ZSA/IE1hdGgubWF4KC4uLnJvd3MubWFwKHIgPT4gTnVtYmVyKHIuZmlsZV9jb3VudCkpKSA6IDA7XG4gIGNvbnN0IG1heEJ5dGVzICAgICAgPSBzaG93RmlsZXNTaXplID8gTWF0aC5tYXgoLi4ucm93cy5tYXAociA9PiBOdW1iZXIoci50b3RhbF9ieXRlcyA/PyAwKSkpIDogMDtcbiAgY29uc3QgbWF4SW1hZ2VDb3VudCA9IHNob3dJbWFnZXMgICAgPyBNYXRoLm1heCguLi5yb3dzLm1hcChnZXRJbWFnZUNvdW50KSkgOiAwO1xuXG4gIGNvbnN0IHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgdGFibGUuY2xhc3NOYW1lID0gJ3N0YXQtdGFibGUnO1xuICB0YWJsZS5pbm5lckhUTUwgPSBgXG4gICAgPHRoZWFkPlxuICAgICAgPHRyPlxuICAgICAgICA8dGg+JHtlc2NhcGVIdG1sKHMuZ3JvdXBDb2xMYWJlbCl9PC90aD5cbiAgICAgICAgJHtzaG93RmlsZXNTaXplID8gJzx0aD5GaWxlczwvdGg+JyA6ICcnfVxuICAgICAgICAke3Nob3dJbWFnZXMgICAgPyAnPHRoPkltYWdlczwvdGg+JyA6ICcnfVxuICAgICAgICAke3Nob3dGaWxlc1NpemUgPyAnPHRoPlNpemU8L3RoPicgOiAnJ31cbiAgICAgICAgJHtzaG93RXh0Q29sICAgID8gJzx0aD5GaWxlIEV4dGVuc2lvbjwvdGg+JyA6ICcnfVxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgICR7cm93cy5tYXAociA9PiB7XG4gICAgICAgIGNvbnN0IGNvbG9yICAgICAgPSBjdHguY29sb3IuZ3JvdXAoU3RyaW5nKHIuX19ncm91cF9fKSk7XG4gICAgICAgIGNvbnN0IGZpbGVDb3VudCAgPSBOdW1iZXIoci5maWxlX2NvdW50KTtcbiAgICAgICAgY29uc3QgaW1hZ2VDb3VudCA9IGdldEltYWdlQ291bnQocik7XG4gICAgICAgIGNvbnN0IGJ5dGVzICAgICAgPSBOdW1iZXIoci50b3RhbF9ieXRlcyA/PyAwKTtcbiAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz1cImdyb3VwLWNvbG9yLWRvdFwiIHN0eWxlPVwiYmFja2dyb3VuZDoke2NvbG9yfVwiPjwvc3Bhbj4ke2VzY2FwZUh0bWwoY3R4Lmdyb3VwTGFiZWwoU3RyaW5nKHIuX19ncm91cF9fKSkpfTwvdGQ+XG4gICAgICAgICAgJHtzaG93RmlsZXNTaXplID8gYDx0ZD4ke2JhckNlbGwoZmlsZUNvdW50LCBtYXhGaWxlQ291bnQsIGNvbG9yLCBmaWxlQ291bnQudG9Mb2NhbGVTdHJpbmcoKSl9PC90ZD5gIDogJyd9XG4gICAgICAgICAgJHtzaG93SW1hZ2VzICAgID8gYDx0ZD4ke2JhckNlbGwoaW1hZ2VDb3VudCwgbWF4SW1hZ2VDb3VudCwgY29sb3IsIGltYWdlQ291bnQudG9Mb2NhbGVTdHJpbmcoKSl9PC90ZD5gIDogJyd9XG4gICAgICAgICAgJHtzaG93RmlsZXNTaXplID8gYDx0ZD4ke2JhckNlbGwoYnl0ZXMsIG1heEJ5dGVzLCBjb2xvciwgZm9ybWF0Qnl0ZXMoYnl0ZXMpKX08L3RkPmAgOiAnJ31cbiAgICAgICAgICAke3Nob3dFeHRDb2wgICAgPyBgPHRkPiR7ZXNjYXBlSHRtbChmb3JtYXRGaWxlVHlwZXMoci5maWxlX3R5cGVzKSl9PC90ZD5gIDogJyd9XG4gICAgICAgIDwvdHI+XG4gICAgICBgO1xuICAgICAgfSkuam9pbignJyl9XG4gICAgPC90Ym9keT5cbiAgYDtcbiAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRhYmxlKTtcbn1cblxuXG5mdW5jdGlvbiBiYXJDZWxsKHZhbHVlLCBtYXhWYWx1ZSwgY29sb3IsIGxhYmVsKSB7XG4gIGNvbnN0IHBjdCA9IG1heFZhbHVlID4gMCA/IE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgKHZhbHVlIC8gbWF4VmFsdWUpICogMTAwKSkgOiAwO1xuICByZXR1cm4gYDxkaXYgY2xhc3M9XCJiYXItY2VsbFwiPjxkaXYgY2xhc3M9XCJiYXItY2VsbC1maWxsXCIgc3R5bGU9XCJ3aWR0aDoke3BjdH0lO2JhY2tncm91bmQ6JHtjb2xvcn1cIj48L2Rpdj48c3BhbiBjbGFzcz1cImJhci1jZWxsLXZhbHVlXCI+JHtsYWJlbH08L3NwYW4+PC9kaXY+YDtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RmlsZVR5cGVzKHZhbCkge1xuICBpZiAoIXZhbCkgcmV0dXJuICctJztcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSByZXR1cm4gdmFsO1xuICBsZXQgYXJyO1xuICB0cnkge1xuICAgIGFyciA9IFsuLi52YWxdLmZpbHRlcihCb29sZWFuKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFN0cmluZyh2YWwpO1xuICB9XG4gIHJldHVybiBhcnIubGVuZ3RoID8gYXJyLnNvcnQoKS5qb2luKCcsICcpIDogJy0nO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUE7QUFBQTs7O0FBRUEsbUNBQWMsQ0FBQztBQUNmLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUNmLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ25ELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDNUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztBQUVoRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyxDQUFDOztBQUVILENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVyRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO0FBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQyxDQUFDOztBQUVILENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQzs7QUFFbEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztBQUN0RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMxSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDOUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLHlDQUFtQixDQUFD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QUFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKOztBQUVBLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUM1RixLQUFLLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVM7QUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUYsQ0FBQyxDQUFDLENBQUM7QUFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEU7O0FBRUEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLO0FBQ3hELFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDOztBQUU1RixDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzNELENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7QUFDaEUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFN0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU07QUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXO0FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTtBQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtBQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUMvRSxDQUFDLENBQUMsQ0FBQztBQUNIOztBQUVBLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUTtBQUMzRSxRQUFRLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUYsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlGLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUM1RSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSTtBQUNqQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNuQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsSCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0o7O0FBRUEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSztBQUNyRCxRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJO0FBQzlDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUNwRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPO0FBQzNELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMzRCxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUUvRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQ3hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQy9COztBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUs7QUFDN0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSTtBQUNqQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMvRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVM7QUFDekYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBQ0Y7O0FBRUEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJO0FBQ25GLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU07QUFDbEYsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTTtBQUMzRixRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9GLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJO0FBQzlDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtBQUMzQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQzlCLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFL0csQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVGLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFaEYsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztBQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDckksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNySCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztBQUNYLENBQUMsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0FBQzlCOzs7QUFHQSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5Sjs7QUFFQSxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRztBQUN6QyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUc7QUFDVCxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBQ0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pEOyJ9

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJpbXBvcnRzIjoiMiIsIm1hcHBpbmdzIjpmYWxzZSwiZGVwcyI6IjMiLCJkeW5hbWljRGVwcyI6IjQiLCJzdGF0aWNNb2NrcyI6bnVsbCwiaGFzQ292ZXJhZ2VEYXRhIjpmYWxzZX0sIi9ob21lL2VsbGEvd29yay9waXhlbC1wYXRyb2wvcGFja2FnZXMvcGl4ZWwtcGF0cm9sLWJhc2Uvc3JjL3BpeGVsX3BhdHJvbF9iYXNlL3ZpZXdlci9wbHVnaW5fc3VtbWFyeS5qcyIseyJ1cmxzIjoiNSIsImlkcyI6IjYifSxbIjciXSxbXSxbIjciXSx7fSwiL3NyYy9waXhlbF9wYXRyb2xfYmFzZS92aWV3ZXIvc2hhcmVkLmpzIl0=