__vite_ssr_exportName__("default", () => { try { return __vite_ssr_export_default__ } catch {} });
// Columns considered metadata (shared with schema.js META_COLS constant).
const META_COLS = [
  'dim_order', 'dtype', 'ndim', 'pixel_size_X', 'pixel_size_Y', 'pixel_size_Z',
];

const DIST_COLS = ['dtype', 'dim_order'];

// Distinct categories of `col` plus a (cat, group) → count lookup. Shared by the
// overview tile preview and the full distribution bars so both render from one
// query instead of each rebuilding the per-group counts.
async function distCounts(ctx, col) {
  const { q, groupCol: gcFn, andWhere } = ctx.sql;
  const rows = await ctx.queryRows(`
    SELECT ${q(col)} AS cat, ${gcFn()} AS __group__, COUNT(*) AS c
    FROM pp_data ${andWhere(ctx.where, `${q(col)} IS NOT NULL`)}
    GROUP BY 1, 2
  `);
  const cats  = [...new Set(rows.map(r => String(r.cat)))].sort();
  const table = new Map(rows.map(r => [`${r.cat}\x00${r.__group__}`, Number(r.c)]));
  const count = (cat, g) => table.get(`${cat}\x00${g}`) ?? 0;
  const withData = rows.reduce((s, r) => s + Number(r.c), 0);
  return { cats, count, withData };
}

// One categorical distribution: emit a data-availability warning, then either a
// grouped bar chart (varies across groups) or a classification telling render()
// to list it as an invariant property. Returns { kind: 'empty'|'invariant'|'chart' }.
async function distributionCard(container, ctx, col) {
  const { cats, count, withData } = await distCounts(ctx, col);
  const [{ n: total }] = await ctx.queryRows(`SELECT COUNT(*) AS n FROM pp_data ${ctx.where}`);
  const label = ctx.plot.niceName(col);
  ctx.plot.dataAvailabilityWarning(container, [{ label, present: withData }], Number(total ?? 0), { unit: 'images' });

  if (!cats.length)        return { kind: 'empty' };
  if (cats.length === 1)   return { kind: 'invariant', label, value: cats[0] };

  ctx.plot.append(container, ctx.plot.groupedBarTraces(cats, count), {
    title:      { text: `${label} Distribution` },
    barmode:    'stack',
    height:     500,
    xaxis:      { title: label, type: 'category' },
    yaxis:      { title: 'Count' },
    showlegend: ctx.groups.length > 1,
    ...(ctx.groups.length > 1 ? { legend: ctx.plot.plotlyLegendConfig } : {}),
  }, 'margin-bottom:24px');
  return { kind: 'chart', cats };
}

// Red banner naming every categorical metadata column that varies across the dataset.
function prependInconsistencyWarning(container, ctx, varied) {
  const { escapeHtml, humanList } = ctx.plot;
  const list = humanList(varied.map(({ col, cats }) =>
    `<code>${col}</code> (${cats.map(c => `<code>${escapeHtml(c)}</code>`).join(', ')})`));
  ctx.plot.prependWarning(container, {
    level: 'red',
    html: `This report contains more than one value for ${list}. ` +
      `That can point to inconsistent acquisition - different instruments, software, or settings.`,
  });
}

// Scalar META_COLS that are constant across the whole dataset → invariant rows.
// A *_size of 1 means the dimension is absent, not a shared property, so skip it.
async function collectScalarInvariants(ctx, invariants) {
  const cols = META_COLS.filter(c => ctx.schema.allCols.includes(c) && !DIST_COLS.includes(c));
  for (const { col, value } of await ctx.constantValues(cols)) {
    if (col.endsWith('_size') && Number(value) <= 1) continue;
    invariants.push([col.replace(/_/g, ' '), value]);
  }
}

const __vite_ssr_export_default__ = {
  id: 'metadata',
  inputs: ['dim_order', 'dtype', 'ndim', 'pixel_size_X', 'pixel_size_Y', 'pixel_size_Z'],
  group: 'Metadata',
  scope: 'image',
  multiPlot: true,
  label: 'Metadata',
  shortLabel: 'Image Metadata',
  info: 'Shows the distribution of **pixel data types** and **dimension ordering** across groupings.\n\nIf a property has **no variance** (e.g. every image has the same pixel dtype), it is summarized in a table instead of a chart.',

  requires(schema) {
    const hasDist = DIST_COLS.some(c => schema.allCols.includes(c));
    const hasMeta = META_COLS.some(c => schema.allCols.includes(c));
    return hasDist || hasMeta || Object.keys(schema.dimensionInfo).length > 0;
  },

  async overviewMessage(ctx) {
    try {
      const { q, andWhere } = ctx.sql;
      const { escapeHtml } = ctx.plot;
      const LABELS = { dtype: 'pixel type', dim_order: 'dimension order' };

      // Mixed dtype / dim_order across the dataset is the most important thing to flag.
      const issues = [];
      for (const col of DIST_COLS) {
        if (!ctx.schema.allCols.includes(col)) continue;
        const [row] = await ctx.queryRows(
          `SELECT COUNT(DISTINCT ${q(col)}) AS n FROM pp_data ${andWhere(ctx.where, `${q(col)} IS NOT NULL`)}`,
        );
        if (Number(row?.n ?? 0) > 1) issues.push(LABELS[col] ?? col);
      };
      if (issues.length) return { text: `Inconsistencies: <strong>${issues.join(', ')}</strong>.`, warning: true };

      const hasDtype = ctx.schema.allCols.includes('dtype');
      if (!hasDtype) return null;
      const [row] = await ctx.queryRows(`SELECT MODE("dtype") AS dtype FROM pp_data ${ctx.where}`);
      if (!row?.dtype) return null;
      return `All <strong>${escapeHtml(String(row.dtype))}</strong> pixels.`;
    } catch { return null; }
  },

  async overviewPlot(container, ctx) {
    const { q, andWhere } = ctx.sql;
    const cols = ctx.schema.allCols;

    // One mini-plot per DIST_COL that actually varies — matching exactly the
    // columns overviewMessage flags as inconsistencies. Capped at 2 (beyond
    // that the tile becomes too cramped to read).
    const varying = [];
    let firstPresent = null;
    for (const c of DIST_COLS) {
      if (!cols.includes(c)) continue;
      firstPresent ??= c;
      const [r] = await ctx.queryRows(`SELECT COUNT(DISTINCT ${q(c)}) AS n FROM pp_data ${andWhere(ctx.where, `${q(c)} IS NOT NULL`)}`);
      if (Number(r?.n ?? 0) > 1) varying.push(c);
      if (varying.length === 2) break;
    };
    if (!firstPresent) return false;

    if (varying.length === 0) {
      // Nothing varies → mirror the invariant table the full widget would show.
      const invariants = [];
      for (const c of DIST_COLS) {
        if (!cols.includes(c)) continue;
        const { cats } = await distCounts(ctx, c);
        if (cats.length === 1) invariants.push([ctx.plot.niceName(c), cats[0]]);
      };
      await collectScalarInvariants(ctx, invariants);
      if (!invariants.length) return false;
      ctx.plot.tilePreviewTable(container, ['Property', 'Value'], invariants);
      return true;
    };

    if (varying.length === 1) {
      const { cats, count } = await distCounts(ctx, varying[0]);
      if (!cats.length) return false;
      ctx.plot.appendMini(container, ctx.plot.groupedBarTraces(cats, count, { mini: true }),
        { barmode: 'stack', xaxis: { type: 'category' }, bargap: 0.3 });
      return true;
    };

    // Two vary → stack both, one labelled mini-plot each.
    container.style.cssText += ';display:flex;flex-direction:column;gap:2px';
    let drew = false;
    for (const col of varying) {
      const { cats, count } = await distCounts(ctx, col);
      if (!cats.length) continue;
      const cell = document.createElement('div');
      cell.style.cssText = 'flex:1 1 0;min-height:0;display:flex;flex-direction:column';
      const cap = document.createElement('div');
      cap.textContent = ctx.plot.niceName(col);
      cap.style.cssText = 'font-size:10px;font-weight:600;color:#6c757d;text-align:center;flex-shrink:0';
      const plotHost = document.createElement('div');
      plotHost.style.cssText = 'flex:1 1 0;min-height:0;position:relative';
      cell.append(cap, plotHost);
      container.appendChild(cell);
      ctx.plot.appendMini(plotHost, ctx.plot.groupedBarTraces(cats, count, { mini: true }),
        { barmode: 'stack', xaxis: { type: 'category' }, bargap: 0.3 });
      drew = true;
    };
    return drew;
  },

  async render(container, ctx) {
    try {
      const invariants = [];               // [property, value] rows shared by all files
      const varied     = [];               // categorical cols that differ across the dataset

      // 1. A grouped bar chart per categorical column (or an invariant row if constant).
      for (const col of DIST_COLS) {
        if (!ctx.schema.allCols.includes(col)) continue;
        const r = await distributionCard(container, ctx, col);
        if (r.kind === 'invariant') invariants.push([r.label, r.value]);
        else if (r.kind === 'chart') varied.push({ col, cats: r.cats });
      };

      // 2. Flag inconsistent acquisition, 3. add constant scalar metadata, 4. list invariants.
      if (varied.length) prependInconsistencyWarning(container, ctx, varied);
      await collectScalarInvariants(ctx, invariants);
      if (invariants.length) ctx.plot.invariantTable(container, {
        title: 'Properties shared by all images that report it',
        headers: ['Property', 'Value'],
        rows: invariants,
      });

      if (!container.firstChild) {
        container.innerHTML = '<div class="no-data">No metadata columns found.</div>';
      }
    } catch {
      container.innerHTML = '<div class="no-data">Failed to load data.</div>';
    }
  },
};
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsdWdpbl9tZXRhZGF0YS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb2x1bW5zIGNvbnNpZGVyZWQgbWV0YWRhdGEgKHNoYXJlZCB3aXRoIHNjaGVtYS5qcyBNRVRBX0NPTFMgY29uc3RhbnQpLlxuY29uc3QgTUVUQV9DT0xTID0gW1xuICAnZGltX29yZGVyJywgJ2R0eXBlJywgJ25kaW0nLCAncGl4ZWxfc2l6ZV9YJywgJ3BpeGVsX3NpemVfWScsICdwaXhlbF9zaXplX1onLFxuXTtcblxuY29uc3QgRElTVF9DT0xTID0gWydkdHlwZScsICdkaW1fb3JkZXInXTtcblxuLy8gRGlzdGluY3QgY2F0ZWdvcmllcyBvZiBgY29sYCBwbHVzIGEgKGNhdCwgZ3JvdXApIOKGkiBjb3VudCBsb29rdXAuIFNoYXJlZCBieSB0aGVcbi8vIG92ZXJ2aWV3IHRpbGUgcHJldmlldyBhbmQgdGhlIGZ1bGwgZGlzdHJpYnV0aW9uIGJhcnMgc28gYm90aCByZW5kZXIgZnJvbSBvbmVcbi8vIHF1ZXJ5IGluc3RlYWQgb2YgZWFjaCByZWJ1aWxkaW5nIHRoZSBwZXItZ3JvdXAgY291bnRzLlxuYXN5bmMgZnVuY3Rpb24gZGlzdENvdW50cyhjdHgsIGNvbCkge1xuICBjb25zdCB7IHEsIGdyb3VwQ29sOiBnY0ZuLCBhbmRXaGVyZSB9ID0gY3R4LnNxbDtcbiAgY29uc3Qgcm93cyA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoYFxuICAgIFNFTEVDVCAke3EoY29sKX0gQVMgY2F0LCAke2djRm4oKX0gQVMgX19ncm91cF9fLCBDT1VOVCgqKSBBUyBjXG4gICAgRlJPTSBwcF9kYXRhICR7YW5kV2hlcmUoY3R4LndoZXJlLCBgJHtxKGNvbCl9IElTIE5PVCBOVUxMYCl9XG4gICAgR1JPVVAgQlkgMSwgMlxuICBgKTtcbiAgY29uc3QgY2F0cyAgPSBbLi4ubmV3IFNldChyb3dzLm1hcChyID0+IFN0cmluZyhyLmNhdCkpKV0uc29ydCgpO1xuICBjb25zdCB0YWJsZSA9IG5ldyBNYXAocm93cy5tYXAociA9PiBbYCR7ci5jYXR9XFx4MDAke3IuX19ncm91cF9ffWAsIE51bWJlcihyLmMpXSkpO1xuICBjb25zdCBjb3VudCA9IChjYXQsIGcpID0+IHRhYmxlLmdldChgJHtjYXR9XFx4MDAke2d9YCkgPz8gMDtcbiAgY29uc3Qgd2l0aERhdGEgPSByb3dzLnJlZHVjZSgocywgcikgPT4gcyArIE51bWJlcihyLmMpLCAwKTtcbiAgcmV0dXJuIHsgY2F0cywgY291bnQsIHdpdGhEYXRhIH07XG59XG5cbi8vIE9uZSBjYXRlZ29yaWNhbCBkaXN0cmlidXRpb246IGVtaXQgYSBkYXRhLWF2YWlsYWJpbGl0eSB3YXJuaW5nLCB0aGVuIGVpdGhlciBhXG4vLyBncm91cGVkIGJhciBjaGFydCAodmFyaWVzIGFjcm9zcyBncm91cHMpIG9yIGEgY2xhc3NpZmljYXRpb24gdGVsbGluZyByZW5kZXIoKVxuLy8gdG8gbGlzdCBpdCBhcyBhbiBpbnZhcmlhbnQgcHJvcGVydHkuIFJldHVybnMgeyBraW5kOiAnZW1wdHknfCdpbnZhcmlhbnQnfCdjaGFydCcgfS5cbmFzeW5jIGZ1bmN0aW9uIGRpc3RyaWJ1dGlvbkNhcmQoY29udGFpbmVyLCBjdHgsIGNvbCkge1xuICBjb25zdCB7IGNhdHMsIGNvdW50LCB3aXRoRGF0YSB9ID0gYXdhaXQgZGlzdENvdW50cyhjdHgsIGNvbCk7XG4gIGNvbnN0IFt7IG46IHRvdGFsIH1dID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgU0VMRUNUIENPVU5UKCopIEFTIG4gRlJPTSBwcF9kYXRhICR7Y3R4LndoZXJlfWApO1xuICBjb25zdCBsYWJlbCA9IGN0eC5wbG90Lm5pY2VOYW1lKGNvbCk7XG4gIGN0eC5wbG90LmRhdGFBdmFpbGFiaWxpdHlXYXJuaW5nKGNvbnRhaW5lciwgW3sgbGFiZWwsIHByZXNlbnQ6IHdpdGhEYXRhIH1dLCBOdW1iZXIodG90YWwgPz8gMCksIHsgdW5pdDogJ2ltYWdlcycgfSk7XG5cbiAgaWYgKCFjYXRzLmxlbmd0aCkgICAgICAgIHJldHVybiB7IGtpbmQ6ICdlbXB0eScgfTtcbiAgaWYgKGNhdHMubGVuZ3RoID09PSAxKSAgIHJldHVybiB7IGtpbmQ6ICdpbnZhcmlhbnQnLCBsYWJlbCwgdmFsdWU6IGNhdHNbMF0gfTtcblxuICBjdHgucGxvdC5hcHBlbmQoY29udGFpbmVyLCBjdHgucGxvdC5ncm91cGVkQmFyVHJhY2VzKGNhdHMsIGNvdW50KSwge1xuICAgIHRpdGxlOiAgICAgIHsgdGV4dDogYCR7bGFiZWx9IERpc3RyaWJ1dGlvbmAgfSxcbiAgICBiYXJtb2RlOiAgICAnc3RhY2snLFxuICAgIGhlaWdodDogICAgIDUwMCxcbiAgICB4YXhpczogICAgICB7IHRpdGxlOiBsYWJlbCwgdHlwZTogJ2NhdGVnb3J5JyB9LFxuICAgIHlheGlzOiAgICAgIHsgdGl0bGU6ICdDb3VudCcgfSxcbiAgICBzaG93bGVnZW5kOiBjdHguZ3JvdXBzLmxlbmd0aCA+IDEsXG4gICAgLi4uKGN0eC5ncm91cHMubGVuZ3RoID4gMSA/IHsgbGVnZW5kOiBjdHgucGxvdC5wbG90bHlMZWdlbmRDb25maWcgfSA6IHt9KSxcbiAgfSwgJ21hcmdpbi1ib3R0b206MjRweCcpO1xuICByZXR1cm4geyBraW5kOiAnY2hhcnQnLCBjYXRzIH07XG59XG5cbi8vIFJlZCBiYW5uZXIgbmFtaW5nIGV2ZXJ5IGNhdGVnb3JpY2FsIG1ldGFkYXRhIGNvbHVtbiB0aGF0IHZhcmllcyBhY3Jvc3MgdGhlIGRhdGFzZXQuXG5mdW5jdGlvbiBwcmVwZW5kSW5jb25zaXN0ZW5jeVdhcm5pbmcoY29udGFpbmVyLCBjdHgsIHZhcmllZCkge1xuICBjb25zdCB7IGVzY2FwZUh0bWwsIGh1bWFuTGlzdCB9ID0gY3R4LnBsb3Q7XG4gIGNvbnN0IGxpc3QgPSBodW1hbkxpc3QodmFyaWVkLm1hcCgoeyBjb2wsIGNhdHMgfSkgPT5cbiAgICBgPGNvZGU+JHtjb2x9PC9jb2RlPiAoJHtjYXRzLm1hcChjID0+IGA8Y29kZT4ke2VzY2FwZUh0bWwoYyl9PC9jb2RlPmApLmpvaW4oJywgJyl9KWApKTtcbiAgY3R4LnBsb3QucHJlcGVuZFdhcm5pbmcoY29udGFpbmVyLCB7XG4gICAgbGV2ZWw6ICdyZWQnLFxuICAgIGh0bWw6IGBUaGlzIHJlcG9ydCBjb250YWlucyBtb3JlIHRoYW4gb25lIHZhbHVlIGZvciAke2xpc3R9LiBgICtcbiAgICAgIGBUaGF0IGNhbiBwb2ludCB0byBpbmNvbnNpc3RlbnQgYWNxdWlzaXRpb24gLSBkaWZmZXJlbnQgaW5zdHJ1bWVudHMsIHNvZnR3YXJlLCBvciBzZXR0aW5ncy5gLFxuICB9KTtcbn1cblxuLy8gU2NhbGFyIE1FVEFfQ09MUyB0aGF0IGFyZSBjb25zdGFudCBhY3Jvc3MgdGhlIHdob2xlIGRhdGFzZXQg4oaSIGludmFyaWFudCByb3dzLlxuLy8gQSAqX3NpemUgb2YgMSBtZWFucyB0aGUgZGltZW5zaW9uIGlzIGFic2VudCwgbm90IGEgc2hhcmVkIHByb3BlcnR5LCBzbyBza2lwIGl0LlxuYXN5bmMgZnVuY3Rpb24gY29sbGVjdFNjYWxhckludmFyaWFudHMoY3R4LCBpbnZhcmlhbnRzKSB7XG4gIGNvbnN0IGNvbHMgPSBNRVRBX0NPTFMuZmlsdGVyKGMgPT4gY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKGMpICYmICFESVNUX0NPTFMuaW5jbHVkZXMoYykpO1xuICBmb3IgKGNvbnN0IHsgY29sLCB2YWx1ZSB9IG9mIGF3YWl0IGN0eC5jb25zdGFudFZhbHVlcyhjb2xzKSkge1xuICAgIGlmIChjb2wuZW5kc1dpdGgoJ19zaXplJykgJiYgTnVtYmVyKHZhbHVlKSA8PSAxKSBjb250aW51ZTtcbiAgICBpbnZhcmlhbnRzLnB1c2goW2NvbC5yZXBsYWNlKC9fL2csICcgJyksIHZhbHVlXSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpZDogJ21ldGFkYXRhJyxcbiAgaW5wdXRzOiBbJ2RpbV9vcmRlcicsICdkdHlwZScsICduZGltJywgJ3BpeGVsX3NpemVfWCcsICdwaXhlbF9zaXplX1knLCAncGl4ZWxfc2l6ZV9aJ10sXG4gIGdyb3VwOiAnTWV0YWRhdGEnLFxuICBzY29wZTogJ2ltYWdlJyxcbiAgbXVsdGlQbG90OiB0cnVlLFxuICBsYWJlbDogJ01ldGFkYXRhJyxcbiAgc2hvcnRMYWJlbDogJ0ltYWdlIE1ldGFkYXRhJyxcbiAgaW5mbzogJ1Nob3dzIHRoZSBkaXN0cmlidXRpb24gb2YgKipwaXhlbCBkYXRhIHR5cGVzKiogYW5kICoqZGltZW5zaW9uIG9yZGVyaW5nKiogYWNyb3NzIGdyb3VwaW5ncy5cXG5cXG5JZiBhIHByb3BlcnR5IGhhcyAqKm5vIHZhcmlhbmNlKiogKGUuZy4gZXZlcnkgaW1hZ2UgaGFzIHRoZSBzYW1lIHBpeGVsIGR0eXBlKSwgaXQgaXMgc3VtbWFyaXplZCBpbiBhIHRhYmxlIGluc3RlYWQgb2YgYSBjaGFydC4nLFxuXG4gIHJlcXVpcmVzKHNjaGVtYSkge1xuICAgIGNvbnN0IGhhc0Rpc3QgPSBESVNUX0NPTFMuc29tZShjID0+IHNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKGMpKTtcbiAgICBjb25zdCBoYXNNZXRhID0gTUVUQV9DT0xTLnNvbWUoYyA9PiBzY2hlbWEuYWxsQ29scy5pbmNsdWRlcyhjKSk7XG4gICAgcmV0dXJuIGhhc0Rpc3QgfHwgaGFzTWV0YSB8fCBPYmplY3Qua2V5cyhzY2hlbWEuZGltZW5zaW9uSW5mbykubGVuZ3RoID4gMDtcbiAgfSxcblxuICBhc3luYyBvdmVydmlld01lc3NhZ2UoY3R4KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgcSwgYW5kV2hlcmUgfSA9IGN0eC5zcWw7XG4gICAgICBjb25zdCB7IGVzY2FwZUh0bWwgfSA9IGN0eC5wbG90O1xuICAgICAgY29uc3QgTEFCRUxTID0geyBkdHlwZTogJ3BpeGVsIHR5cGUnLCBkaW1fb3JkZXI6ICdkaW1lbnNpb24gb3JkZXInIH07XG5cbiAgICAgIC8vIE1peGVkIGR0eXBlIC8gZGltX29yZGVyIGFjcm9zcyB0aGUgZGF0YXNldCBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgdG8gZmxhZy5cbiAgICAgIGNvbnN0IGlzc3VlcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb2wgb2YgRElTVF9DT0xTKSB7XG4gICAgICAgIGlmICghY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKGNvbCkpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBbcm93XSA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoXG4gICAgICAgICAgYFNFTEVDVCBDT1VOVChESVNUSU5DVCAke3EoY29sKX0pIEFTIG4gRlJPTSBwcF9kYXRhICR7YW5kV2hlcmUoY3R4LndoZXJlLCBgJHtxKGNvbCl9IElTIE5PVCBOVUxMYCl9YCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKE51bWJlcihyb3c/Lm4gPz8gMCkgPiAxKSBpc3N1ZXMucHVzaChMQUJFTFNbY29sXSA/PyBjb2wpO1xuICAgICAgfVxuICAgICAgaWYgKGlzc3Vlcy5sZW5ndGgpIHJldHVybiB7IHRleHQ6IGBJbmNvbnNpc3RlbmNpZXM6IDxzdHJvbmc+JHtpc3N1ZXMuam9pbignLCAnKX08L3N0cm9uZz4uYCwgd2FybmluZzogdHJ1ZSB9O1xuXG4gICAgICBjb25zdCBoYXNEdHlwZSA9IGN0eC5zY2hlbWEuYWxsQ29scy5pbmNsdWRlcygnZHR5cGUnKTtcbiAgICAgIGlmICghaGFzRHR5cGUpIHJldHVybiBudWxsO1xuICAgICAgY29uc3QgW3Jvd10gPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBTRUxFQ1QgTU9ERShcImR0eXBlXCIpIEFTIGR0eXBlIEZST00gcHBfZGF0YSAke2N0eC53aGVyZX1gKTtcbiAgICAgIGlmICghcm93Py5kdHlwZSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gYEFsbCA8c3Ryb25nPiR7ZXNjYXBlSHRtbChTdHJpbmcocm93LmR0eXBlKSl9PC9zdHJvbmc+IHBpeGVscy5gO1xuICAgIH0gY2F0Y2ggeyByZXR1cm4gbnVsbDsgfVxuICB9LFxuXG4gIGFzeW5jIG92ZXJ2aWV3UGxvdChjb250YWluZXIsIGN0eCkge1xuICAgIGNvbnN0IHsgcSwgYW5kV2hlcmUgfSA9IGN0eC5zcWw7XG4gICAgY29uc3QgY29scyA9IGN0eC5zY2hlbWEuYWxsQ29scztcblxuICAgIC8vIE9uZSBtaW5pLXBsb3QgcGVyIERJU1RfQ09MIHRoYXQgYWN0dWFsbHkgdmFyaWVzIOKAlCBtYXRjaGluZyBleGFjdGx5IHRoZVxuICAgIC8vIGNvbHVtbnMgb3ZlcnZpZXdNZXNzYWdlIGZsYWdzIGFzIGluY29uc2lzdGVuY2llcy4gQ2FwcGVkIGF0IDIgKGJleW9uZFxuICAgIC8vIHRoYXQgdGhlIHRpbGUgYmVjb21lcyB0b28gY3JhbXBlZCB0byByZWFkKS5cbiAgICBjb25zdCB2YXJ5aW5nID0gW107XG4gICAgbGV0IGZpcnN0UHJlc2VudCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjIG9mIERJU1RfQ09MUykge1xuICAgICAgaWYgKCFjb2xzLmluY2x1ZGVzKGMpKSBjb250aW51ZTtcbiAgICAgIGZpcnN0UHJlc2VudCA/Pz0gYztcbiAgICAgIGNvbnN0IFtyXSA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoYFNFTEVDVCBDT1VOVChESVNUSU5DVCAke3EoYyl9KSBBUyBuIEZST00gcHBfZGF0YSAke2FuZFdoZXJlKGN0eC53aGVyZSwgYCR7cShjKX0gSVMgTk9UIE5VTExgKX1gKTtcbiAgICAgIGlmIChOdW1iZXIocj8ubiA/PyAwKSA+IDEpIHZhcnlpbmcucHVzaChjKTtcbiAgICAgIGlmICh2YXJ5aW5nLmxlbmd0aCA9PT0gMikgYnJlYWs7XG4gICAgfVxuICAgIGlmICghZmlyc3RQcmVzZW50KSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAodmFyeWluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIE5vdGhpbmcgdmFyaWVzIOKGkiBtaXJyb3IgdGhlIGludmFyaWFudCB0YWJsZSB0aGUgZnVsbCB3aWRnZXQgd291bGQgc2hvdy5cbiAgICAgIGNvbnN0IGludmFyaWFudHMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgYyBvZiBESVNUX0NPTFMpIHtcbiAgICAgICAgaWYgKCFjb2xzLmluY2x1ZGVzKGMpKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgeyBjYXRzIH0gPSBhd2FpdCBkaXN0Q291bnRzKGN0eCwgYyk7XG4gICAgICAgIGlmIChjYXRzLmxlbmd0aCA9PT0gMSkgaW52YXJpYW50cy5wdXNoKFtjdHgucGxvdC5uaWNlTmFtZShjKSwgY2F0c1swXV0pO1xuICAgICAgfVxuICAgICAgYXdhaXQgY29sbGVjdFNjYWxhckludmFyaWFudHMoY3R4LCBpbnZhcmlhbnRzKTtcbiAgICAgIGlmICghaW52YXJpYW50cy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIGN0eC5wbG90LnRpbGVQcmV2aWV3VGFibGUoY29udGFpbmVyLCBbJ1Byb3BlcnR5JywgJ1ZhbHVlJ10sIGludmFyaWFudHMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhcnlpbmcubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCB7IGNhdHMsIGNvdW50IH0gPSBhd2FpdCBkaXN0Q291bnRzKGN0eCwgdmFyeWluZ1swXSk7XG4gICAgICBpZiAoIWNhdHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICBjdHgucGxvdC5hcHBlbmRNaW5pKGNvbnRhaW5lciwgY3R4LnBsb3QuZ3JvdXBlZEJhclRyYWNlcyhjYXRzLCBjb3VudCwgeyBtaW5pOiB0cnVlIH0pLFxuICAgICAgICB7IGJhcm1vZGU6ICdzdGFjaycsIHhheGlzOiB7IHR5cGU6ICdjYXRlZ29yeScgfSwgYmFyZ2FwOiAwLjMgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBUd28gdmFyeSDihpIgc3RhY2sgYm90aCwgb25lIGxhYmVsbGVkIG1pbmktcGxvdCBlYWNoLlxuICAgIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ICs9ICc7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4JztcbiAgICBsZXQgZHJldyA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgY29sIG9mIHZhcnlpbmcpIHtcbiAgICAgIGNvbnN0IHsgY2F0cywgY291bnQgfSA9IGF3YWl0IGRpc3RDb3VudHMoY3R4LCBjb2wpO1xuICAgICAgaWYgKCFjYXRzLmxlbmd0aCkgY29udGludWU7XG4gICAgICBjb25zdCBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjZWxsLnN0eWxlLmNzc1RleHQgPSAnZmxleDoxIDEgMDttaW4taGVpZ2h0OjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbic7XG4gICAgICBjb25zdCBjYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNhcC50ZXh0Q29udGVudCA9IGN0eC5wbG90Lm5pY2VOYW1lKGNvbCk7XG4gICAgICBjYXAuc3R5bGUuY3NzVGV4dCA9ICdmb250LXNpemU6MTBweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzZjNzU3ZDt0ZXh0LWFsaWduOmNlbnRlcjtmbGV4LXNocmluazowJztcbiAgICAgIGNvbnN0IHBsb3RIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBwbG90SG9zdC5zdHlsZS5jc3NUZXh0ID0gJ2ZsZXg6MSAxIDA7bWluLWhlaWdodDowO3Bvc2l0aW9uOnJlbGF0aXZlJztcbiAgICAgIGNlbGwuYXBwZW5kKGNhcCwgcGxvdEhvc3QpO1xuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNlbGwpO1xuICAgICAgY3R4LnBsb3QuYXBwZW5kTWluaShwbG90SG9zdCwgY3R4LnBsb3QuZ3JvdXBlZEJhclRyYWNlcyhjYXRzLCBjb3VudCwgeyBtaW5pOiB0cnVlIH0pLFxuICAgICAgICB7IGJhcm1vZGU6ICdzdGFjaycsIHhheGlzOiB7IHR5cGU6ICdjYXRlZ29yeScgfSwgYmFyZ2FwOiAwLjMgfSk7XG4gICAgICBkcmV3ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRyZXc7XG4gIH0sXG5cbiAgYXN5bmMgcmVuZGVyKGNvbnRhaW5lciwgY3R4KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGludmFyaWFudHMgPSBbXTsgICAgICAgICAgICAgICAvLyBbcHJvcGVydHksIHZhbHVlXSByb3dzIHNoYXJlZCBieSBhbGwgZmlsZXNcbiAgICAgIGNvbnN0IHZhcmllZCAgICAgPSBbXTsgICAgICAgICAgICAgICAvLyBjYXRlZ29yaWNhbCBjb2xzIHRoYXQgZGlmZmVyIGFjcm9zcyB0aGUgZGF0YXNldFxuXG4gICAgICAvLyAxLiBBIGdyb3VwZWQgYmFyIGNoYXJ0IHBlciBjYXRlZ29yaWNhbCBjb2x1bW4gKG9yIGFuIGludmFyaWFudCByb3cgaWYgY29uc3RhbnQpLlxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgRElTVF9DT0xTKSB7XG4gICAgICAgIGlmICghY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKGNvbCkpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCByID0gYXdhaXQgZGlzdHJpYnV0aW9uQ2FyZChjb250YWluZXIsIGN0eCwgY29sKTtcbiAgICAgICAgaWYgKHIua2luZCA9PT0gJ2ludmFyaWFudCcpIGludmFyaWFudHMucHVzaChbci5sYWJlbCwgci52YWx1ZV0pO1xuICAgICAgICBlbHNlIGlmIChyLmtpbmQgPT09ICdjaGFydCcpIHZhcmllZC5wdXNoKHsgY29sLCBjYXRzOiByLmNhdHMgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIEZsYWcgaW5jb25zaXN0ZW50IGFjcXVpc2l0aW9uLCAzLiBhZGQgY29uc3RhbnQgc2NhbGFyIG1ldGFkYXRhLCA0LiBsaXN0IGludmFyaWFudHMuXG4gICAgICBpZiAodmFyaWVkLmxlbmd0aCkgcHJlcGVuZEluY29uc2lzdGVuY3lXYXJuaW5nKGNvbnRhaW5lciwgY3R4LCB2YXJpZWQpO1xuICAgICAgYXdhaXQgY29sbGVjdFNjYWxhckludmFyaWFudHMoY3R4LCBpbnZhcmlhbnRzKTtcbiAgICAgIGlmIChpbnZhcmlhbnRzLmxlbmd0aCkgY3R4LnBsb3QuaW52YXJpYW50VGFibGUoY29udGFpbmVyLCB7XG4gICAgICAgIHRpdGxlOiAnUHJvcGVydGllcyBzaGFyZWQgYnkgYWxsIGltYWdlcyB0aGF0IHJlcG9ydCBpdCcsXG4gICAgICAgIGhlYWRlcnM6IFsnUHJvcGVydHknLCAnVmFsdWUnXSxcbiAgICAgICAgcm93czogaW52YXJpYW50cyxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWNvbnRhaW5lci5maXJzdENoaWxkKSB7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIm5vLWRhdGFcIj5ObyBtZXRhZGF0YSBjb2x1bW5zIGZvdW5kLjwvZGl2Pic7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+RmFpbGVkIHRvIGxvYWQgZGF0YS48L2Rpdj4nO1xuICAgIH1cbiAgfSxcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQTtBQUFBLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDekUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDOUUsQ0FBQzs7QUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDOztBQUV4QyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDOUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDNUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNO0FBQ3hELEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ2pELENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDakUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEM7O0FBRUEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUMvRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUMvRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDckYsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUM5RCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUYsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztBQUN0QyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVySCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFOUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDOztBQUVBLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTztBQUNyRixRQUFRLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0QsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7QUFDNUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRixDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0o7O0FBRUEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQy9FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FB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QUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7O0FBRTFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ3ZGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRO0FBQ3ZELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ3BFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRWxILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO0FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDLENBQUM7O0FBRUgsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPOztBQUVuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDakQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUs7O0FBRW5DLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTtBQUMvRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUs7QUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFSixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLO0FBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFSixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtBQUN6RCxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDNUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ3BCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRO0FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUN2RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN4RyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMxRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDZixDQUFDLENBQUMsQ0FBQzs7QUFFSCxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQ25GLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7O0FBRXRGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO0FBQ3hGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDdkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVU7QUFDOUYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM1RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0gsQ0FBQzsifQ==

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJpbXBvcnRzIjoiMiIsIm1hcHBpbmdzIjpmYWxzZSwiZGVwcyI6IjMiLCJkeW5hbWljRGVwcyI6IjQiLCJzdGF0aWNNb2NrcyI6bnVsbCwiaGFzQ292ZXJhZ2VEYXRhIjpmYWxzZX0sIi9ob21lL2VsbGEvd29yay9waXhlbC1wYXRyb2wvcGFja2FnZXMvcGl4ZWwtcGF0cm9sLWJhc2Uvc3JjL3BpeGVsX3BhdHJvbF9iYXNlL3ZpZXdlci9wbHVnaW5fbWV0YWRhdGEuanMiLHsidXJscyI6IjUiLCJpZHMiOiI2In0sW10sW10sW10se31d