master
John Lauer rust/: the tree 2.0.594 is built from, pushed whole (pup-bridge#117); ship.sh pushes it on every release from now on ccda43b 1mo ago
(async () => {
  try { if (document.readyState !== 'complete') { await Promise.race([new Promise((r) => window.addEventListener('load', r, { once: true })), new Promise((r) => setTimeout(r, 1500))]); } } catch (e) {}
  const t = (document.body ? (document.body.innerText || '') : '').trim();
  // Chrome's net-error interstitial (ERR_HTTP2_PROTOCOL_ERROR, ERR_CONNECTION_*, a bot-wall RST, etc.).
  // It renders as its own document with #main-frame-error and a hidden .error-code carrying the code.
  let errPage = false, netError = '';
  try {
    const ec = document.querySelector('.error-code');
    netError = ec ? (ec.textContent || '').trim() : '';
    const cls = (document.documentElement && document.documentElement.className) || '';
    errPage = !!netError || !!document.querySelector('#main-frame-error') || /(^|\s)neterror(\s|$)/.test(cls) || /^chrome-error:/i.test(location.href);
  } catch (e) {}
  return {
    title: document.title || '', bodyChars: t.length, head: t.slice(0, 400),
    elements: document.body ? document.body.querySelectorAll('*').length : 0,
    styleSheets: document.styleSheets ? document.styleSheets.length : 0,
    errPage, netError,
    brokenImgs: (document.readyState === 'complete' && document.images) ? Array.from(document.images).filter((i) => { const src = i.getAttribute('src'); return !!(src && src.trim()) && i.complete && i.naturalWidth === 0; }).length : null,
  };
})()