__vite_ssr_exportName__("default", () => { try { return __vite_ssr_export_default__ } catch {} });
const MAX_XY_BUBBLE = 50_000;  // above this many files, switch the X/Y scatter to a heatmap
const HEATMAP_BINS  = 70;      // target bin count per axis for the X/Y heatmap

// Matches size_X/size_Y/size_Z/... (one axis letter) - not e.g. size_bytes.
const SIZE_DIM_RE = /^size_[A-Za-z]$/;

const __vite_ssr_export_default__ = {
  id: 'dim-size',
  inputs: ['size_*'],
  group: 'Metadata',
  scope: 'image',
  multiPlot: true,
  label: 'Dimensionality',
  info: [
    'Shows how **image dimension sizes** (e.g. X, Y, Z, T, …) vary across the dataset.',
    '',
    'Includes an X/Y size scatter plot and per-dimension strip plots.',
    '',
    'If a dimension has **no variance**, it is summarized in a table instead of a plot.',
    '',
    'Use this to identify **unexpected dimension sizes** and **mismatched shapes** within/between groupings.',
  ].join('\n'),

  requires(schema) {
    return schema.allCols.some(c => SIZE_DIM_RE.test(c));
  },

  async overviewMessage(ctx) {
    try {
      const { q, andWhere } = ctx.sql;
      const sizeCols = ctx.schema.allCols.filter(c => SIZE_DIM_RE.test(c));
      const hasXY    = sizeCols.includes('size_X') && sizeCols.includes('size_Y');
      const KNOWN_DIMS = { size_Z: 'Z slices', size_T: 'timepoints', size_C: 'channels', size_S: 'samples (RGB)' };
      const extraDimCols = sizeCols.filter(c => c !== 'size_X' && c !== 'size_Y' && c !== 'num_pixels');

      const [{ total }] = await ctx.queryRows(`SELECT COUNT(*) AS total FROM pp_data ${ctx.where}`);
      const totalN = Number(total ?? 0);

      let xySizeVaries = false;
      if (hasXY) {
        const [row] = await ctx.queryRows(`
          SELECT COUNT(DISTINCT "size_X") AS ndx, COUNT(DISTINCT "size_Y") AS ndy
          FROM pp_data ${andWhere(ctx.where, '"size_X" IS NOT NULL AND "size_Y" IS NOT NULL')}
        `);
        xySizeVaries = Number(row?.ndx ?? 0) > 1 || Number(row?.ndy ?? 0) > 1;
      };

      const present     = [];
      const raggedDims  = [];
      for (const col of extraDimCols) {
        const [r] = await ctx.queryRows(`SELECT MAX(${q(col)}) AS m, COUNT(*) AS n FROM pp_data ${andWhere(ctx.where, `${q(col)} IS NOT NULL`)}`);
        const m = Number(r?.m ?? 0);
        if (!m) continue;
        const label = KNOWN_DIMS[col] ?? col;
        present.push(label);
        if (Number(r?.n ?? 0) < totalN) raggedDims.push(label);
      };

      if (xySizeVaries || raggedDims.length) {
        const issues = [];
        if (xySizeVaries) issues.push('image size');
        issues.push(...raggedDims);
        return { text: `Inconsistencies: <strong>${issues.join(', ')}</strong>.`, warning: true };
      };

      if (present.length) return `All same size, with ${ctx.plot.humanList(present)}.`;
      return `All 2D, same size.`;
    } catch { return null; }
  },

  async overviewPlot(container, ctx) {
    const { andWhere, sample, groupCol: gcFn } = ctx.sql;
    const sizeCols = ctx.schema.allCols.filter(c => SIZE_DIM_RE.test(c));
    if (!(sizeCols.includes('size_X') && sizeCols.includes('size_Y'))) return false;

    const rows = await ctx.queryRows(`
      SELECT "size_X" AS x, "size_Y" AS y, ${gcFn()} AS __group__
      FROM pp_data ${andWhere(ctx.where, '"size_X" IS NOT NULL AND "size_Y" IS NOT NULL')} ${sample(3000)}
    `);
    if (!rows.length) return false;

    const traces = ctx.groups.map(g => {
      const gr = rows.filter(r => String(r.__group__) === g);
      if (!gr.length) return null;
      return {
        type: 'scatter', mode: 'markers', name: ctx.groupLabel(g),
        x: gr.map(r => Number(r.x)), y: gr.map(r => Number(r.y)),
        marker: { color: ctx.color.group(g), size: 5, opacity: 0.5 }, hoverinfo: 'skip',
      };
    }).filter(Boolean);
    if (!traces.length) return false;

    ctx.plot.appendMini(container, traces, { xaxis: { title: 'X (px)' }, yaxis: { title: 'Y (px)' } });
    return true;
  },

  async render(container, ctx) {
    try {
      const sizeCols = ctx.schema.allCols.filter(c => SIZE_DIM_RE.test(c));
      await renderSizeAvailability(container, ctx, sizeCols);
      await renderXYDistribution(container, ctx, sizeCols);
      await renderDimDistributions(container, ctx, sizeCols);
    } catch {
      container.innerHTML = '<div class="no-data">Failed to load data.</div>';
    }
  },
};

// How many images actually report each *_size dimension.
async function renderSizeAvailability(container, ctx, sizeCols) {
  const { q, andWhere } = ctx.sql;
  const [{ n: total }] = await ctx.queryRows(`SELECT COUNT(*) AS n FROM pp_data ${ctx.where}`);
  const availability = await Promise.all(sizeCols.map(async col => {
    const [{ n }] = await ctx.queryRows(`SELECT COUNT(*) AS n FROM pp_data ${andWhere(ctx.where, `${q(col)} IS NOT NULL`)}`);
    return { label: ctx.plot.niceName(col), present: Number(n ?? 0) };
  }));
  ctx.plot.dataAvailabilityWarning(container, availability, Number(total ?? 0), { unit: 'images' });
}

// X vs Y size: a per-file bubble scatter, or a log-binned heatmap once there are
// too many files to show individually. Skipped when X and Y are both constant.
async function renderXYDistribution(container, ctx, sizeCols) {
  if (!(sizeCols.includes('size_X') && sizeCols.includes('size_Y'))) return;
  const xyWhere = ctx.sql.andWhere(ctx.where, '"size_X" IS NOT NULL AND "size_Y" IS NOT NULL');

  const [{ ndx, ndy }] = await ctx.queryRows(`
    SELECT COUNT(DISTINCT "size_X") AS ndx, COUNT(DISTINCT "size_Y") AS ndy FROM pp_data ${xyWhere}
  `);
  if (Number(ndx ?? 0) <= 1 && Number(ndy ?? 0) <= 1) return;

  const [stats = {}] = await ctx.queryRows(`
    SELECT COUNT(*)::BIGINT AS n,
           MIN("size_X")::DOUBLE AS min_x, MAX("size_X")::DOUBLE AS max_x,
           MIN("size_Y")::DOUBLE AS min_y, MAX("size_Y")::DOUBLE AS max_y
    FROM pp_data ${xyWhere}
  `);
  if (Number(stats.n ?? 0) <= MAX_XY_BUBBLE) await renderXYBubble(container, ctx, xyWhere);
  else await renderXYHeatmap(container, ctx, xyWhere, stats);
}

// One marker per distinct (X, Y) size, sized by how many files share it.
async function renderXYBubble(container, ctx, xyWhere) {
  const rows = await ctx.queryRows(`
    SELECT "size_X" AS x, "size_Y" AS y, ${ctx.sql.groupCol()} AS __group__, COUNT(*) AS bubble_size
    FROM pp_data ${xyWhere} GROUP BY 1, 2, 3 ORDER BY 1, 2
  `);
  if (!rows.length) return;
  const maxCount = Math.max(...rows.map(r => Number(r.bubble_size)));
  const sizeref  = (2 * maxCount) / (20 ** 2);
  const traces = ctx.groups.map(g => {
    const gRows = rows.filter(r => String(r.__group__) === g);
    if (!gRows.length) return null;
    return {
      type: 'scatter', mode: 'markers', name: ctx.groupLabel(g),
      x: gRows.map(r => Number(r.x)), y: gRows.map(r => Number(r.y)),
      marker: { size: gRows.map(r => Number(r.bubble_size)), sizeref, sizemode: 'area', color: ctx.color.group(g), line: { width: 1, color: 'white' } },
      hovertemplate: `<b>${g}</b><br>X: %{x} px<br>Y: %{y} px<br>Count: %{text}<extra></extra>`,
      text: gRows.map(r => String(r.bubble_size)),
    };
  }).filter(Boolean);
  ctx.plot.append(container, traces, {
    title: { text: 'Distribution of X and Y Dimension Sizes' },
    xaxis: { title: 'X size (pixels)' }, yaxis: { title: 'Y size (pixels)' },
    showlegend: ctx.groups.length > 1,
    legend: { ...ctx.plot.plotlyLegendConfig, itemsizing: 'constant' },
  }, 'margin-bottom:24px');
}

// Log-scaled 2D histogram of (X, Y) sizes for datasets too large to bubble-plot.
async function renderXYHeatmap(container, ctx, xyWhere, stats) {
  const minX = Number(stats.min_x), minY = Number(stats.min_y);
  const spanX = Number(stats.max_x) - minX, spanY = Number(stats.max_y) - minY;
  const binX = Math.max(1, Math.ceil(spanX / HEATMAP_BINS));
  const binY = Math.max(1, Math.ceil(spanY / HEATMAP_BINS));

  const rows = await ctx.queryRows(`
    SELECT (FLOOR(("size_X" - ${minX}) / ${binX}) * ${binX} + ${minX})::INTEGER AS xbin,
           (FLOOR(("size_Y" - ${minY}) / ${binY}) * ${binY} + ${minY})::INTEGER AS ybin,
           COUNT(*)::INTEGER AS n
    FROM pp_data ${xyWhere} GROUP BY 1, 2 ORDER BY 1, 2
  `);
  if (!rows.length) return;

  const xs = Array.from({ length: Math.ceil(spanX / binX) + 1 }, (_, i) => minX + i * binX);
  const ys = Array.from({ length: Math.ceil(spanY / binY) + 1 }, (_, i) => minY + i * binY);
  const xi = new Map(xs.map((v, i) => [v, i]));
  const yi = new Map(ys.map((v, i) => [v, i]));
  const z  = Array.from({ length: ys.length }, () => Array(xs.length).fill(null));
  let zMax = 0;
  for (const r of rows) {
    const cx = xi.get(Number(r.xbin)), cy = yi.get(Number(r.ybin));
    if (cx != null && cy != null) { const lv = Math.log10(Number(r.n)); z[cy][cx] = lv; if (lv > zMax) zMax = lv; }
  };
  const tickVals = [], tickText = [];
  for (let i = 0; i <= Math.ceil(zMax); i++) { tickVals.push(i); tickText.push(String(10 ** i)); };
  ctx.plot.append(container, [{
    type: 'heatmap', x: xs, y: ys, z, colorscale: 'Viridis', zmin: 0, zmax: zMax,
    colorbar: { title: { text: 'count', side: 'right' }, tickvals: tickVals, ticktext: tickText },
    hovertemplate: 'X: %{x} px<br>Y: %{y} px<br>count: %{text}<extra></extra>',
    text: ys.map((_, cy) => xs.map((_, cx) => { const v = z[cy][cx]; return v != null ? String(Math.round(10 ** v)) : ''; })),
  }], {
    title: { text: 'Distribution of X and Y Dimension Sizes (log scale)' },
    xaxis: { title: 'X size (pixels)' }, yaxis: { title: 'Y size (pixels)' },
  }, 'margin-bottom:24px');
}

// Per-dimension size spread: a violin per dimension that varies, plus an
// invariant table for dimensions that are the same size in every file.
async function renderDimDistributions(container, ctx, sizeCols) {
  const { q } = ctx.sql;
  const dims = sizeCols.filter(c => c !== 'num_pixels');
  if (!dims.length) return;

  const dimStats = await Promise.all(dims.map(async col => {
    const [{ nd, val }] = await ctx.queryRows(`
      SELECT COUNT(DISTINCT ${q(col)}) AS nd, MIN(${q(col)}) AS val
      FROM pp_data ${ctx.sql.andWhere(ctx.where, `${q(col)} IS NOT NULL`)}
    `);
    return { col, nd: Number(nd ?? 0), val };
  }));
  const variant   = dimStats.filter(d => d.nd > 1);
  const invariant = dimStats.filter(d => d.nd === 1);

  if (variant.length) await renderDimViolins(container, ctx, variant);
  if (invariant.length) ctx.plot.invariantTable(container, {
    title: 'Dimension Sizes - same across all images that report it',
    headers: ['Dimension', 'Size (pixels)'],
    rows: invariant.map(d => [ctx.plot.niceName(d.col), String(d.val)]),
    hr: true,
  });
}

// One small violin per varying dimension, laid out in a flex grid. Uses the
// shared distribution engine (same as the violin widget) so these render
// identically to it apart from the compact grid size, and get the large-data
// box fallback (and few-distinct-values strip fallback) for free.
async function renderDimViolins(container, ctx, dims) {
  const { q, andWhere, groupCol: gcFn } = ctx.sql;

  const heading = document.createElement('h6');
  heading.style.cssText = 'margin-top:16px;margin-bottom:12px';
  heading.textContent = 'Dimension Size Distribution';
  container.appendChild(heading);
  const wrap = document.createElement('div');
  wrap.style.cssText = 'display:flex;flex-wrap:wrap;gap:12px';
  container.appendChild(wrap);

  for (const { col, nd } of dims) {
    await ctx.plot.engine.renderDistribution(wrap, ctx, {
      numCol:          col,
      source:          { table: 'pp_data', where: andWhere(ctx.where, `${q(col)} IS NOT NULL`) },
      catSql:          gcFn(),
      catLabel:        ctx.plot.groupingLabel(''),
      yLabel:          'pixels',
      title:           ctx.plot.niceName(col),
      series:          { isCategory: true },
      categoriesOrder: ctx.groups,
      catLabelFn:      ctx.groupLabel,
      distinctCount:   nd,  // already have it from dimStats above - avoids a re-query
      // Only the size differs from the violin widget - everything else is the engine default.
      layout:          { height: 280, margin: { l: 44, r: 10, t: 36, b: 40 }, title: { font: { size: 12 } } },
      divStyle:        'flex:0 0 280px;min-width:220px;margin-bottom:16px',
    });
  }
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsdWdpbl9kaW1fc2l6ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBNQVhfWFlfQlVCQkxFID0gNTBfMDAwOyAgLy8gYWJvdmUgdGhpcyBtYW55IGZpbGVzLCBzd2l0Y2ggdGhlIFgvWSBzY2F0dGVyIHRvIGEgaGVhdG1hcFxuY29uc3QgSEVBVE1BUF9CSU5TICA9IDcwOyAgICAgIC8vIHRhcmdldCBiaW4gY291bnQgcGVyIGF4aXMgZm9yIHRoZSBYL1kgaGVhdG1hcFxuXG4vLyBNYXRjaGVzIHNpemVfWC9zaXplX1kvc2l6ZV9aLy4uLiAob25lIGF4aXMgbGV0dGVyKSAtIG5vdCBlLmcuIHNpemVfYnl0ZXMuXG5jb25zdCBTSVpFX0RJTV9SRSA9IC9ec2l6ZV9bQS1aYS16XSQvO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkOiAnZGltLXNpemUnLFxuICBpbnB1dHM6IFsnc2l6ZV8qJ10sXG4gIGdyb3VwOiAnTWV0YWRhdGEnLFxuICBzY29wZTogJ2ltYWdlJyxcbiAgbXVsdGlQbG90OiB0cnVlLFxuICBsYWJlbDogJ0RpbWVuc2lvbmFsaXR5JyxcbiAgaW5mbzogW1xuICAgICdTaG93cyBob3cgKippbWFnZSBkaW1lbnNpb24gc2l6ZXMqKiAoZS5nLiBYLCBZLCBaLCBULCDigKYpIHZhcnkgYWNyb3NzIHRoZSBkYXRhc2V0LicsXG4gICAgJycsXG4gICAgJ0luY2x1ZGVzIGFuIFgvWSBzaXplIHNjYXR0ZXIgcGxvdCBhbmQgcGVyLWRpbWVuc2lvbiBzdHJpcCBwbG90cy4nLFxuICAgICcnLFxuICAgICdJZiBhIGRpbWVuc2lvbiBoYXMgKipubyB2YXJpYW5jZSoqLCBpdCBpcyBzdW1tYXJpemVkIGluIGEgdGFibGUgaW5zdGVhZCBvZiBhIHBsb3QuJyxcbiAgICAnJyxcbiAgICAnVXNlIHRoaXMgdG8gaWRlbnRpZnkgKip1bmV4cGVjdGVkIGRpbWVuc2lvbiBzaXplcyoqIGFuZCAqKm1pc21hdGNoZWQgc2hhcGVzKiogd2l0aGluL2JldHdlZW4gZ3JvdXBpbmdzLicsXG4gIF0uam9pbignXFxuJyksXG5cbiAgcmVxdWlyZXMoc2NoZW1hKSB7XG4gICAgcmV0dXJuIHNjaGVtYS5hbGxDb2xzLnNvbWUoYyA9PiBTSVpFX0RJTV9SRS50ZXN0KGMpKTtcbiAgfSxcblxuICBhc3luYyBvdmVydmlld01lc3NhZ2UoY3R4KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgcSwgYW5kV2hlcmUgfSA9IGN0eC5zcWw7XG4gICAgICBjb25zdCBzaXplQ29scyA9IGN0eC5zY2hlbWEuYWxsQ29scy5maWx0ZXIoYyA9PiBTSVpFX0RJTV9SRS50ZXN0KGMpKTtcbiAgICAgIGNvbnN0IGhhc1hZICAgID0gc2l6ZUNvbHMuaW5jbHVkZXMoJ3NpemVfWCcpICYmIHNpemVDb2xzLmluY2x1ZGVzKCdzaXplX1knKTtcbiAgICAgIGNvbnN0IEtOT1dOX0RJTVMgPSB7IHNpemVfWjogJ1ogc2xpY2VzJywgc2l6ZV9UOiAndGltZXBvaW50cycsIHNpemVfQzogJ2NoYW5uZWxzJywgc2l6ZV9TOiAnc2FtcGxlcyAoUkdCKScgfTtcbiAgICAgIGNvbnN0IGV4dHJhRGltQ29scyA9IHNpemVDb2xzLmZpbHRlcihjID0+IGMgIT09ICdzaXplX1gnICYmIGMgIT09ICdzaXplX1knICYmIGMgIT09ICdudW1fcGl4ZWxzJyk7XG5cbiAgICAgIGNvbnN0IFt7IHRvdGFsIH1dID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgU0VMRUNUIENPVU5UKCopIEFTIHRvdGFsIEZST00gcHBfZGF0YSAke2N0eC53aGVyZX1gKTtcbiAgICAgIGNvbnN0IHRvdGFsTiA9IE51bWJlcih0b3RhbCA/PyAwKTtcblxuICAgICAgbGV0IHh5U2l6ZVZhcmllcyA9IGZhbHNlO1xuICAgICAgaWYgKGhhc1hZKSB7XG4gICAgICAgIGNvbnN0IFtyb3ddID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgXG4gICAgICAgICAgU0VMRUNUIENPVU5UKERJU1RJTkNUIFwic2l6ZV9YXCIpIEFTIG5keCwgQ09VTlQoRElTVElOQ1QgXCJzaXplX1lcIikgQVMgbmR5XG4gICAgICAgICAgRlJPTSBwcF9kYXRhICR7YW5kV2hlcmUoY3R4LndoZXJlLCAnXCJzaXplX1hcIiBJUyBOT1QgTlVMTCBBTkQgXCJzaXplX1lcIiBJUyBOT1QgTlVMTCcpfVxuICAgICAgICBgKTtcbiAgICAgICAgeHlTaXplVmFyaWVzID0gTnVtYmVyKHJvdz8ubmR4ID8/IDApID4gMSB8fCBOdW1iZXIocm93Py5uZHkgPz8gMCkgPiAxO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmVzZW50ICAgICA9IFtdO1xuICAgICAgY29uc3QgcmFnZ2VkRGltcyAgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGV4dHJhRGltQ29scykge1xuICAgICAgICBjb25zdCBbcl0gPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBTRUxFQ1QgTUFYKCR7cShjb2wpfSkgQVMgbSwgQ09VTlQoKikgQVMgbiBGUk9NIHBwX2RhdGEgJHthbmRXaGVyZShjdHgud2hlcmUsIGAke3EoY29sKX0gSVMgTk9UIE5VTExgKX1gKTtcbiAgICAgICAgY29uc3QgbSA9IE51bWJlcihyPy5tID8/IDApO1xuICAgICAgICBpZiAoIW0pIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBsYWJlbCA9IEtOT1dOX0RJTVNbY29sXSA/PyBjb2w7XG4gICAgICAgIHByZXNlbnQucHVzaChsYWJlbCk7XG4gICAgICAgIGlmIChOdW1iZXIocj8ubiA/PyAwKSA8IHRvdGFsTikgcmFnZ2VkRGltcy5wdXNoKGxhYmVsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHh5U2l6ZVZhcmllcyB8fCByYWdnZWREaW1zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBpc3N1ZXMgPSBbXTtcbiAgICAgICAgaWYgKHh5U2l6ZVZhcmllcykgaXNzdWVzLnB1c2goJ2ltYWdlIHNpemUnKTtcbiAgICAgICAgaXNzdWVzLnB1c2goLi4ucmFnZ2VkRGltcyk7XG4gICAgICAgIHJldHVybiB7IHRleHQ6IGBJbmNvbnNpc3RlbmNpZXM6IDxzdHJvbmc+JHtpc3N1ZXMuam9pbignLCAnKX08L3N0cm9uZz4uYCwgd2FybmluZzogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAocHJlc2VudC5sZW5ndGgpIHJldHVybiBgQWxsIHNhbWUgc2l6ZSwgd2l0aCAke2N0eC5wbG90Lmh1bWFuTGlzdChwcmVzZW50KX0uYDtcbiAgICAgIHJldHVybiBgQWxsIDJELCBzYW1lIHNpemUuYDtcbiAgICB9IGNhdGNoIHsgcmV0dXJuIG51bGw7IH1cbiAgfSxcblxuICBhc3luYyBvdmVydmlld1Bsb3QoY29udGFpbmVyLCBjdHgpIHtcbiAgICBjb25zdCB7IGFuZFdoZXJlLCBzYW1wbGUsIGdyb3VwQ29sOiBnY0ZuIH0gPSBjdHguc3FsO1xuICAgIGNvbnN0IHNpemVDb2xzID0gY3R4LnNjaGVtYS5hbGxDb2xzLmZpbHRlcihjID0+IFNJWkVfRElNX1JFLnRlc3QoYykpO1xuICAgIGlmICghKHNpemVDb2xzLmluY2x1ZGVzKCdzaXplX1gnKSAmJiBzaXplQ29scy5pbmNsdWRlcygnc2l6ZV9ZJykpKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCByb3dzID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgXG4gICAgICBTRUxFQ1QgXCJzaXplX1hcIiBBUyB4LCBcInNpemVfWVwiIEFTIHksICR7Z2NGbigpfSBBUyBfX2dyb3VwX19cbiAgICAgIEZST00gcHBfZGF0YSAke2FuZFdoZXJlKGN0eC53aGVyZSwgJ1wic2l6ZV9YXCIgSVMgTk9UIE5VTEwgQU5EIFwic2l6ZV9ZXCIgSVMgTk9UIE5VTEwnKX0gJHtzYW1wbGUoMzAwMCl9XG4gICAgYCk7XG4gICAgaWYgKCFyb3dzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgdHJhY2VzID0gY3R4Lmdyb3Vwcy5tYXAoZyA9PiB7XG4gICAgICBjb25zdCBnciA9IHJvd3MuZmlsdGVyKHIgPT4gU3RyaW5nKHIuX19ncm91cF9fKSA9PT0gZyk7XG4gICAgICBpZiAoIWdyLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnc2NhdHRlcicsIG1vZGU6ICdtYXJrZXJzJywgbmFtZTogY3R4Lmdyb3VwTGFiZWwoZyksXG4gICAgICAgIHg6IGdyLm1hcChyID0+IE51bWJlcihyLngpKSwgeTogZ3IubWFwKHIgPT4gTnVtYmVyKHIueSkpLFxuICAgICAgICBtYXJrZXI6IHsgY29sb3I6IGN0eC5jb2xvci5ncm91cChnKSwgc2l6ZTogNSwgb3BhY2l0eTogMC41IH0sIGhvdmVyaW5mbzogJ3NraXAnLFxuICAgICAgfTtcbiAgICB9KS5maWx0ZXIoQm9vbGVhbik7XG4gICAgaWYgKCF0cmFjZXMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjdHgucGxvdC5hcHBlbmRNaW5pKGNvbnRhaW5lciwgdHJhY2VzLCB7IHhheGlzOiB7IHRpdGxlOiAnWCAocHgpJyB9LCB5YXhpczogeyB0aXRsZTogJ1kgKHB4KScgfSB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICBhc3luYyByZW5kZXIoY29udGFpbmVyLCBjdHgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2l6ZUNvbHMgPSBjdHguc2NoZW1hLmFsbENvbHMuZmlsdGVyKGMgPT4gU0laRV9ESU1fUkUudGVzdChjKSk7XG4gICAgICBhd2FpdCByZW5kZXJTaXplQXZhaWxhYmlsaXR5KGNvbnRhaW5lciwgY3R4LCBzaXplQ29scyk7XG4gICAgICBhd2FpdCByZW5kZXJYWURpc3RyaWJ1dGlvbihjb250YWluZXIsIGN0eCwgc2l6ZUNvbHMpO1xuICAgICAgYXdhaXQgcmVuZGVyRGltRGlzdHJpYnV0aW9ucyhjb250YWluZXIsIGN0eCwgc2l6ZUNvbHMpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwibm8tZGF0YVwiPkZhaWxlZCB0byBsb2FkIGRhdGEuPC9kaXY+JztcbiAgICB9XG4gIH0sXG59O1xuXG4vLyBIb3cgbWFueSBpbWFnZXMgYWN0dWFsbHkgcmVwb3J0IGVhY2ggKl9zaXplIGRpbWVuc2lvbi5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclNpemVBdmFpbGFiaWxpdHkoY29udGFpbmVyLCBjdHgsIHNpemVDb2xzKSB7XG4gIGNvbnN0IHsgcSwgYW5kV2hlcmUgfSA9IGN0eC5zcWw7XG4gIGNvbnN0IFt7IG46IHRvdGFsIH1dID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgU0VMRUNUIENPVU5UKCopIEFTIG4gRlJPTSBwcF9kYXRhICR7Y3R4LndoZXJlfWApO1xuICBjb25zdCBhdmFpbGFiaWxpdHkgPSBhd2FpdCBQcm9taXNlLmFsbChzaXplQ29scy5tYXAoYXN5bmMgY29sID0+IHtcbiAgICBjb25zdCBbeyBuIH1dID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgU0VMRUNUIENPVU5UKCopIEFTIG4gRlJPTSBwcF9kYXRhICR7YW5kV2hlcmUoY3R4LndoZXJlLCBgJHtxKGNvbCl9IElTIE5PVCBOVUxMYCl9YCk7XG4gICAgcmV0dXJuIHsgbGFiZWw6IGN0eC5wbG90Lm5pY2VOYW1lKGNvbCksIHByZXNlbnQ6IE51bWJlcihuID8/IDApIH07XG4gIH0pKTtcbiAgY3R4LnBsb3QuZGF0YUF2YWlsYWJpbGl0eVdhcm5pbmcoY29udGFpbmVyLCBhdmFpbGFiaWxpdHksIE51bWJlcih0b3RhbCA/PyAwKSwgeyB1bml0OiAnaW1hZ2VzJyB9KTtcbn1cblxuLy8gWCB2cyBZIHNpemU6IGEgcGVyLWZpbGUgYnViYmxlIHNjYXR0ZXIsIG9yIGEgbG9nLWJpbm5lZCBoZWF0bWFwIG9uY2UgdGhlcmUgYXJlXG4vLyB0b28gbWFueSBmaWxlcyB0byBzaG93IGluZGl2aWR1YWxseS4gU2tpcHBlZCB3aGVuIFggYW5kIFkgYXJlIGJvdGggY29uc3RhbnQuXG5hc3luYyBmdW5jdGlvbiByZW5kZXJYWURpc3RyaWJ1dGlvbihjb250YWluZXIsIGN0eCwgc2l6ZUNvbHMpIHtcbiAgaWYgKCEoc2l6ZUNvbHMuaW5jbHVkZXMoJ3NpemVfWCcpICYmIHNpemVDb2xzLmluY2x1ZGVzKCdzaXplX1knKSkpIHJldHVybjtcbiAgY29uc3QgeHlXaGVyZSA9IGN0eC5zcWwuYW5kV2hlcmUoY3R4LndoZXJlLCAnXCJzaXplX1hcIiBJUyBOT1QgTlVMTCBBTkQgXCJzaXplX1lcIiBJUyBOT1QgTlVMTCcpO1xuXG4gIGNvbnN0IFt7IG5keCwgbmR5IH1dID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgXG4gICAgU0VMRUNUIENPVU5UKERJU1RJTkNUIFwic2l6ZV9YXCIpIEFTIG5keCwgQ09VTlQoRElTVElOQ1QgXCJzaXplX1lcIikgQVMgbmR5IEZST00gcHBfZGF0YSAke3h5V2hlcmV9XG4gIGApO1xuICBpZiAoTnVtYmVyKG5keCA/PyAwKSA8PSAxICYmIE51bWJlcihuZHkgPz8gMCkgPD0gMSkgcmV0dXJuO1xuXG4gIGNvbnN0IFtzdGF0cyA9IHt9XSA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoYFxuICAgIFNFTEVDVCBDT1VOVCgqKTo6QklHSU5UIEFTIG4sXG4gICAgICAgICAgIE1JTihcInNpemVfWFwiKTo6RE9VQkxFIEFTIG1pbl94LCBNQVgoXCJzaXplX1hcIik6OkRPVUJMRSBBUyBtYXhfeCxcbiAgICAgICAgICAgTUlOKFwic2l6ZV9ZXCIpOjpET1VCTEUgQVMgbWluX3ksIE1BWChcInNpemVfWVwiKTo6RE9VQkxFIEFTIG1heF95XG4gICAgRlJPTSBwcF9kYXRhICR7eHlXaGVyZX1cbiAgYCk7XG4gIGlmIChOdW1iZXIoc3RhdHMubiA/PyAwKSA8PSBNQVhfWFlfQlVCQkxFKSBhd2FpdCByZW5kZXJYWUJ1YmJsZShjb250YWluZXIsIGN0eCwgeHlXaGVyZSk7XG4gIGVsc2UgYXdhaXQgcmVuZGVyWFlIZWF0bWFwKGNvbnRhaW5lciwgY3R4LCB4eVdoZXJlLCBzdGF0cyk7XG59XG5cbi8vIE9uZSBtYXJrZXIgcGVyIGRpc3RpbmN0IChYLCBZKSBzaXplLCBzaXplZCBieSBob3cgbWFueSBmaWxlcyBzaGFyZSBpdC5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclhZQnViYmxlKGNvbnRhaW5lciwgY3R4LCB4eVdoZXJlKSB7XG4gIGNvbnN0IHJvd3MgPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBcbiAgICBTRUxFQ1QgXCJzaXplX1hcIiBBUyB4LCBcInNpemVfWVwiIEFTIHksICR7Y3R4LnNxbC5ncm91cENvbCgpfSBBUyBfX2dyb3VwX18sIENPVU5UKCopIEFTIGJ1YmJsZV9zaXplXG4gICAgRlJPTSBwcF9kYXRhICR7eHlXaGVyZX0gR1JPVVAgQlkgMSwgMiwgMyBPUkRFUiBCWSAxLCAyXG4gIGApO1xuICBpZiAoIXJvd3MubGVuZ3RoKSByZXR1cm47XG4gIGNvbnN0IG1heENvdW50ID0gTWF0aC5tYXgoLi4ucm93cy5tYXAociA9PiBOdW1iZXIoci5idWJibGVfc2l6ZSkpKTtcbiAgY29uc3Qgc2l6ZXJlZiAgPSAoMiAqIG1heENvdW50KSAvICgyMCAqKiAyKTtcbiAgY29uc3QgdHJhY2VzID0gY3R4Lmdyb3Vwcy5tYXAoZyA9PiB7XG4gICAgY29uc3QgZ1Jvd3MgPSByb3dzLmZpbHRlcihyID0+IFN0cmluZyhyLl9fZ3JvdXBfXykgPT09IGcpO1xuICAgIGlmICghZ1Jvd3MubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3NjYXR0ZXInLCBtb2RlOiAnbWFya2VycycsIG5hbWU6IGN0eC5ncm91cExhYmVsKGcpLFxuICAgICAgeDogZ1Jvd3MubWFwKHIgPT4gTnVtYmVyKHIueCkpLCB5OiBnUm93cy5tYXAociA9PiBOdW1iZXIoci55KSksXG4gICAgICBtYXJrZXI6IHsgc2l6ZTogZ1Jvd3MubWFwKHIgPT4gTnVtYmVyKHIuYnViYmxlX3NpemUpKSwgc2l6ZXJlZiwgc2l6ZW1vZGU6ICdhcmVhJywgY29sb3I6IGN0eC5jb2xvci5ncm91cChnKSwgbGluZTogeyB3aWR0aDogMSwgY29sb3I6ICd3aGl0ZScgfSB9LFxuICAgICAgaG92ZXJ0ZW1wbGF0ZTogYDxiPiR7Z308L2I+PGJyPlg6ICV7eH0gcHg8YnI+WTogJXt5fSBweDxicj5Db3VudDogJXt0ZXh0fTxleHRyYT48L2V4dHJhPmAsXG4gICAgICB0ZXh0OiBnUm93cy5tYXAociA9PiBTdHJpbmcoci5idWJibGVfc2l6ZSkpLFxuICAgIH07XG4gIH0pLmZpbHRlcihCb29sZWFuKTtcbiAgY3R4LnBsb3QuYXBwZW5kKGNvbnRhaW5lciwgdHJhY2VzLCB7XG4gICAgdGl0bGU6IHsgdGV4dDogJ0Rpc3RyaWJ1dGlvbiBvZiBYIGFuZCBZIERpbWVuc2lvbiBTaXplcycgfSxcbiAgICB4YXhpczogeyB0aXRsZTogJ1ggc2l6ZSAocGl4ZWxzKScgfSwgeWF4aXM6IHsgdGl0bGU6ICdZIHNpemUgKHBpeGVscyknIH0sXG4gICAgc2hvd2xlZ2VuZDogY3R4Lmdyb3Vwcy5sZW5ndGggPiAxLFxuICAgIGxlZ2VuZDogeyAuLi5jdHgucGxvdC5wbG90bHlMZWdlbmRDb25maWcsIGl0ZW1zaXppbmc6ICdjb25zdGFudCcgfSxcbiAgfSwgJ21hcmdpbi1ib3R0b206MjRweCcpO1xufVxuXG4vLyBMb2ctc2NhbGVkIDJEIGhpc3RvZ3JhbSBvZiAoWCwgWSkgc2l6ZXMgZm9yIGRhdGFzZXRzIHRvbyBsYXJnZSB0byBidWJibGUtcGxvdC5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclhZSGVhdG1hcChjb250YWluZXIsIGN0eCwgeHlXaGVyZSwgc3RhdHMpIHtcbiAgY29uc3QgbWluWCA9IE51bWJlcihzdGF0cy5taW5feCksIG1pblkgPSBOdW1iZXIoc3RhdHMubWluX3kpO1xuICBjb25zdCBzcGFuWCA9IE51bWJlcihzdGF0cy5tYXhfeCkgLSBtaW5YLCBzcGFuWSA9IE51bWJlcihzdGF0cy5tYXhfeSkgLSBtaW5ZO1xuICBjb25zdCBiaW5YID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHNwYW5YIC8gSEVBVE1BUF9CSU5TKSk7XG4gIGNvbnN0IGJpblkgPSBNYXRoLm1heCgxLCBNYXRoLmNlaWwoc3BhblkgLyBIRUFUTUFQX0JJTlMpKTtcblxuICBjb25zdCByb3dzID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgXG4gICAgU0VMRUNUIChGTE9PUigoXCJzaXplX1hcIiAtICR7bWluWH0pIC8gJHtiaW5YfSkgKiAke2Jpblh9ICsgJHttaW5YfSk6OklOVEVHRVIgQVMgeGJpbixcbiAgICAgICAgICAgKEZMT09SKChcInNpemVfWVwiIC0gJHttaW5ZfSkgLyAke2Jpbll9KSAqICR7YmluWX0gKyAke21pbll9KTo6SU5URUdFUiBBUyB5YmluLFxuICAgICAgICAgICBDT1VOVCgqKTo6SU5URUdFUiBBUyBuXG4gICAgRlJPTSBwcF9kYXRhICR7eHlXaGVyZX0gR1JPVVAgQlkgMSwgMiBPUkRFUiBCWSAxLCAyXG4gIGApO1xuICBpZiAoIXJvd3MubGVuZ3RoKSByZXR1cm47XG5cbiAgY29uc3QgeHMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBNYXRoLmNlaWwoc3BhblggLyBiaW5YKSArIDEgfSwgKF8sIGkpID0+IG1pblggKyBpICogYmluWCk7XG4gIGNvbnN0IHlzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogTWF0aC5jZWlsKHNwYW5ZIC8gYmluWSkgKyAxIH0sIChfLCBpKSA9PiBtaW5ZICsgaSAqIGJpblkpO1xuICBjb25zdCB4aSA9IG5ldyBNYXAoeHMubWFwKCh2LCBpKSA9PiBbdiwgaV0pKTtcbiAgY29uc3QgeWkgPSBuZXcgTWFwKHlzLm1hcCgodiwgaSkgPT4gW3YsIGldKSk7XG4gIGNvbnN0IHogID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogeXMubGVuZ3RoIH0sICgpID0+IEFycmF5KHhzLmxlbmd0aCkuZmlsbChudWxsKSk7XG4gIGxldCB6TWF4ID0gMDtcbiAgZm9yIChjb25zdCByIG9mIHJvd3MpIHtcbiAgICBjb25zdCBjeCA9IHhpLmdldChOdW1iZXIoci54YmluKSksIGN5ID0geWkuZ2V0KE51bWJlcihyLnliaW4pKTtcbiAgICBpZiAoY3ggIT0gbnVsbCAmJiBjeSAhPSBudWxsKSB7IGNvbnN0IGx2ID0gTWF0aC5sb2cxMChOdW1iZXIoci5uKSk7IHpbY3ldW2N4XSA9IGx2OyBpZiAobHYgPiB6TWF4KSB6TWF4ID0gbHY7IH1cbiAgfVxuICBjb25zdCB0aWNrVmFscyA9IFtdLCB0aWNrVGV4dCA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8PSBNYXRoLmNlaWwoek1heCk7IGkrKykgeyB0aWNrVmFscy5wdXNoKGkpOyB0aWNrVGV4dC5wdXNoKFN0cmluZygxMCAqKiBpKSk7IH1cbiAgY3R4LnBsb3QuYXBwZW5kKGNvbnRhaW5lciwgW3tcbiAgICB0eXBlOiAnaGVhdG1hcCcsIHg6IHhzLCB5OiB5cywgeiwgY29sb3JzY2FsZTogJ1ZpcmlkaXMnLCB6bWluOiAwLCB6bWF4OiB6TWF4LFxuICAgIGNvbG9yYmFyOiB7IHRpdGxlOiB7IHRleHQ6ICdjb3VudCcsIHNpZGU6ICdyaWdodCcgfSwgdGlja3ZhbHM6IHRpY2tWYWxzLCB0aWNrdGV4dDogdGlja1RleHQgfSxcbiAgICBob3ZlcnRlbXBsYXRlOiAnWDogJXt4fSBweDxicj5ZOiAle3l9IHB4PGJyPmNvdW50OiAle3RleHR9PGV4dHJhPjwvZXh0cmE+JyxcbiAgICB0ZXh0OiB5cy5tYXAoKF8sIGN5KSA9PiB4cy5tYXAoKF8sIGN4KSA9PiB7IGNvbnN0IHYgPSB6W2N5XVtjeF07IHJldHVybiB2ICE9IG51bGwgPyBTdHJpbmcoTWF0aC5yb3VuZCgxMCAqKiB2KSkgOiAnJzsgfSkpLFxuICB9XSwge1xuICAgIHRpdGxlOiB7IHRleHQ6ICdEaXN0cmlidXRpb24gb2YgWCBhbmQgWSBEaW1lbnNpb24gU2l6ZXMgKGxvZyBzY2FsZSknIH0sXG4gICAgeGF4aXM6IHsgdGl0bGU6ICdYIHNpemUgKHBpeGVscyknIH0sIHlheGlzOiB7IHRpdGxlOiAnWSBzaXplIChwaXhlbHMpJyB9LFxuICB9LCAnbWFyZ2luLWJvdHRvbToyNHB4Jyk7XG59XG5cbi8vIFBlci1kaW1lbnNpb24gc2l6ZSBzcHJlYWQ6IGEgdmlvbGluIHBlciBkaW1lbnNpb24gdGhhdCB2YXJpZXMsIHBsdXMgYW5cbi8vIGludmFyaWFudCB0YWJsZSBmb3IgZGltZW5zaW9ucyB0aGF0IGFyZSB0aGUgc2FtZSBzaXplIGluIGV2ZXJ5IGZpbGUuXG5hc3luYyBmdW5jdGlvbiByZW5kZXJEaW1EaXN0cmlidXRpb25zKGNvbnRhaW5lciwgY3R4LCBzaXplQ29scykge1xuICBjb25zdCB7IHEgfSA9IGN0eC5zcWw7XG4gIGNvbnN0IGRpbXMgPSBzaXplQ29scy5maWx0ZXIoYyA9PiBjICE9PSAnbnVtX3BpeGVscycpO1xuICBpZiAoIWRpbXMubGVuZ3RoKSByZXR1cm47XG5cbiAgY29uc3QgZGltU3RhdHMgPSBhd2FpdCBQcm9taXNlLmFsbChkaW1zLm1hcChhc3luYyBjb2wgPT4ge1xuICAgIGNvbnN0IFt7IG5kLCB2YWwgfV0gPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBcbiAgICAgIFNFTEVDVCBDT1VOVChESVNUSU5DVCAke3EoY29sKX0pIEFTIG5kLCBNSU4oJHtxKGNvbCl9KSBBUyB2YWxcbiAgICAgIEZST00gcHBfZGF0YSAke2N0eC5zcWwuYW5kV2hlcmUoY3R4LndoZXJlLCBgJHtxKGNvbCl9IElTIE5PVCBOVUxMYCl9XG4gICAgYCk7XG4gICAgcmV0dXJuIHsgY29sLCBuZDogTnVtYmVyKG5kID8/IDApLCB2YWwgfTtcbiAgfSkpO1xuICBjb25zdCB2YXJpYW50ICAgPSBkaW1TdGF0cy5maWx0ZXIoZCA9PiBkLm5kID4gMSk7XG4gIGNvbnN0IGludmFyaWFudCA9IGRpbVN0YXRzLmZpbHRlcihkID0+IGQubmQgPT09IDEpO1xuXG4gIGlmICh2YXJpYW50Lmxlbmd0aCkgYXdhaXQgcmVuZGVyRGltVmlvbGlucyhjb250YWluZXIsIGN0eCwgdmFyaWFudCk7XG4gIGlmIChpbnZhcmlhbnQubGVuZ3RoKSBjdHgucGxvdC5pbnZhcmlhbnRUYWJsZShjb250YWluZXIsIHtcbiAgICB0aXRsZTogJ0RpbWVuc2lvbiBTaXplcyAtIHNhbWUgYWNyb3NzIGFsbCBpbWFnZXMgdGhhdCByZXBvcnQgaXQnLFxuICAgIGhlYWRlcnM6IFsnRGltZW5zaW9uJywgJ1NpemUgKHBpeGVscyknXSxcbiAgICByb3dzOiBpbnZhcmlhbnQubWFwKGQgPT4gW2N0eC5wbG90Lm5pY2VOYW1lKGQuY29sKSwgU3RyaW5nKGQudmFsKV0pLFxuICAgIGhyOiB0cnVlLFxuICB9KTtcbn1cblxuLy8gT25lIHNtYWxsIHZpb2xpbiBwZXIgdmFyeWluZyBkaW1lbnNpb24sIGxhaWQgb3V0IGluIGEgZmxleCBncmlkLiBVc2VzIHRoZVxuLy8gc2hhcmVkIGRpc3RyaWJ1dGlvbiBlbmdpbmUgKHNhbWUgYXMgdGhlIHZpb2xpbiB3aWRnZXQpIHNvIHRoZXNlIHJlbmRlclxuLy8gaWRlbnRpY2FsbHkgdG8gaXQgYXBhcnQgZnJvbSB0aGUgY29tcGFjdCBncmlkIHNpemUsIGFuZCBnZXQgdGhlIGxhcmdlLWRhdGFcbi8vIGJveCBmYWxsYmFjayAoYW5kIGZldy1kaXN0aW5jdC12YWx1ZXMgc3RyaXAgZmFsbGJhY2spIGZvciBmcmVlLlxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyRGltVmlvbGlucyhjb250YWluZXIsIGN0eCwgZGltcykge1xuICBjb25zdCB7IHEsIGFuZFdoZXJlLCBncm91cENvbDogZ2NGbiB9ID0gY3R4LnNxbDtcblxuICBjb25zdCBoZWFkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDYnKTtcbiAgaGVhZGluZy5zdHlsZS5jc3NUZXh0ID0gJ21hcmdpbi10b3A6MTZweDttYXJnaW4tYm90dG9tOjEycHgnO1xuICBoZWFkaW5nLnRleHRDb250ZW50ID0gJ0RpbWVuc2lvbiBTaXplIERpc3RyaWJ1dGlvbic7XG4gIGNvbnRhaW5lci5hcHBlbmRDaGlsZChoZWFkaW5nKTtcbiAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICB3cmFwLnN0eWxlLmNzc1RleHQgPSAnZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMnB4JztcbiAgY29udGFpbmVyLmFwcGVuZENoaWxkKHdyYXApO1xuXG4gIGZvciAoY29uc3QgeyBjb2wsIG5kIH0gb2YgZGltcykge1xuICAgIGF3YWl0IGN0eC5wbG90LmVuZ2luZS5yZW5kZXJEaXN0cmlidXRpb24od3JhcCwgY3R4LCB7XG4gICAgICBudW1Db2w6ICAgICAgICAgIGNvbCxcbiAgICAgIHNvdXJjZTogICAgICAgICAgeyB0YWJsZTogJ3BwX2RhdGEnLCB3aGVyZTogYW5kV2hlcmUoY3R4LndoZXJlLCBgJHtxKGNvbCl9IElTIE5PVCBOVUxMYCkgfSxcbiAgICAgIGNhdFNxbDogICAgICAgICAgZ2NGbigpLFxuICAgICAgY2F0TGFiZWw6ICAgICAgICBjdHgucGxvdC5ncm91cGluZ0xhYmVsKCcnKSxcbiAgICAgIHlMYWJlbDogICAgICAgICAgJ3BpeGVscycsXG4gICAgICB0aXRsZTogICAgICAgICAgIGN0eC5wbG90Lm5pY2VOYW1lKGNvbCksXG4gICAgICBzZXJpZXM6ICAgICAgICAgIHsgaXNDYXRlZ29yeTogdHJ1ZSB9LFxuICAgICAgY2F0ZWdvcmllc09yZGVyOiBjdHguZ3JvdXBzLFxuICAgICAgY2F0TGFiZWxGbjogICAgICBjdHguZ3JvdXBMYWJlbCxcbiAgICAgIGRpc3RpbmN0Q291bnQ6ICAgbmQsICAvLyBhbHJlYWR5IGhhdmUgaXQgZnJvbSBkaW1TdGF0cyBhYm92ZSAtIGF2b2lkcyBhIHJlLXF1ZXJ5XG4gICAgICAvLyBPbmx5IHRoZSBzaXplIGRpZmZlcnMgZnJvbSB0aGUgdmlvbGluIHdpZGdldCAtIGV2ZXJ5dGhpbmcgZWxzZSBpcyB0aGUgZW5naW5lIGRlZmF1bHQuXG4gICAgICBsYXlvdXQ6ICAgICAgICAgIHsgaGVpZ2h0OiAyODAsIG1hcmdpbjogeyBsOiA0NCwgcjogMTAsIHQ6IDM2LCBiOiA0MCB9LCB0aXRsZTogeyBmb250OiB7IHNpemU6IDEyIH0gfSB9LFxuICAgICAgZGl2U3R5bGU6ICAgICAgICAnZmxleDowIDAgMjgwcHg7bWluLXdpZHRoOjIyMHB4O21hcmdpbi1ib3R0b206MTZweCcsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFBO0FBQUEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckYsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRXhFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO0FBQzNFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVyQyxtQ0FBYyxDQUFDO0FBQ2YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ25CLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNoQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSTtBQUNqQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7QUFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0csQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVkLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDLENBQUM7O0FBRUgsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsSCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQzs7QUFFdkcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbkcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRXZDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUs7QUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUMxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRU4sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqSixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtBQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFTixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDLENBQUM7O0FBRUgsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ3hELENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSzs7QUFFbkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDekcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLOztBQUVsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO0FBQ2pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3ZGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSzs7QUFFcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtBQUNmLENBQUMsQ0FBQyxDQUFDOztBQUVILENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDNUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUMxRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0gsQ0FBQzs7QUFFRCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTO0FBQ3hELEtBQUssQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUc7QUFDakMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzlGLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkc7O0FBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUM5RSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRO0FBQzlFLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUMzRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUU5RixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTztBQUNsRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTs7QUFFNUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDM0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLO0FBQ3pFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNwRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87QUFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUMxRixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVEOztBQUVBLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDeEUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN6RixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNO0FBQzFCLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO0FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2SixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3BCLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCOztBQUVBLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSTtBQUNoRixLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDOUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtBQUM5RSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDOztBQUUzRCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDdkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ3ZGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU07O0FBRTFCLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDM0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzRixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRixDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNkLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsSCxDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJO0FBQ2hGLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUI7O0FBRUEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJO0FBQ3RFLEtBQUssQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUc7QUFDdkIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU07O0FBRTFCLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRXBELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUNyRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUk7QUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0o7O0FBRUEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQ25FLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQ3pFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJO0FBQ2pFLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUc7O0FBRWpELENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQzlELENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0FBQ3JELENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztBQUNoQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDN0QsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDOztBQUU3QixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtBQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVU7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2pGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTztBQUM3RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0csQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUNGOyJ9

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJpbXBvcnRzIjoiMiIsIm1hcHBpbmdzIjpmYWxzZSwiZGVwcyI6IjMiLCJkeW5hbWljRGVwcyI6IjQiLCJzdGF0aWNNb2NrcyI6bnVsbCwiaGFzQ292ZXJhZ2VEYXRhIjpmYWxzZX0sIi9ob21lL2VsbGEvd29yay9waXhlbC1wYXRyb2wvcGFja2FnZXMvcGl4ZWwtcGF0cm9sLWJhc2Uvc3JjL3BpeGVsX3BhdHJvbF9iYXNlL3ZpZXdlci9wbHVnaW5fZGltX3NpemUuanMiLHsidXJscyI6IjUiLCJpZHMiOiI2In0sW10sW10sW10se31d