From 8c2f6a48054233624fa05eea9530f12ee5311e7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Wed, 22 Apr 2026 10:00:36 +0200 Subject: [PATCH 01/29] wip --- package.json | 1 + website/.gitignore | 2 + website/astro.config.mjs | 15 + website/package.json | 14 + website/plugins/rehype-docs.mjs | 66 + website/plugins/remark-docs.mjs | 186 +++ website/public/cat.png | Bin 0 -> 85690 bytes website/public/docs/docs.js | 305 +++++ website/public/uploads/cat-shape.DVKSPW1i.png | Bin 0 -> 677690 bytes website/src/components/Breadcrumb.astro | 19 + website/src/components/ConceptSidebar.astro | 98 ++ website/src/components/DocsSidebar.astro | 24 + website/src/components/Nav.astro | 83 ++ website/src/components/PageHeader.astro | 20 + website/src/components/PrevNextNav.astro | 25 + website/src/components/ReferenceSidebar.astro | 97 ++ website/src/components/sidebar.ts | 18 + website/src/layouts/BaseLayout.astro | 46 + website/src/layouts/DocsLayout.astro | 28 + website/src/layouts/MarkdownDocsLayout.astro | 27 + website/src/pages/docs/cli-add.astro | 269 ++++ website/src/pages/docs/concepts.md | 325 +++++ website/src/pages/docs/get-started.md | 199 +++ website/src/pages/docs/manifest.md | 228 ++++ website/src/pages/docs/yarnrc.md | 134 ++ website/src/pages/index.astro | 933 +++++++++++++ website/src/styles/docs.css | 641 +++++++++ website/src/styles/theme.css | 138 ++ website/tsconfig.json | 3 + yarn.lock | 1166 ++++++++++++++++- 30 files changed, 5101 insertions(+), 9 deletions(-) create mode 100644 website/.gitignore create mode 100644 website/astro.config.mjs create mode 100644 website/package.json create mode 100644 website/plugins/rehype-docs.mjs create mode 100644 website/plugins/remark-docs.mjs create mode 100644 website/public/cat.png create mode 100644 website/public/docs/docs.js create mode 100644 website/public/uploads/cat-shape.DVKSPW1i.png create mode 100644 website/src/components/Breadcrumb.astro create mode 100644 website/src/components/ConceptSidebar.astro create mode 100644 website/src/components/DocsSidebar.astro create mode 100644 website/src/components/Nav.astro create mode 100644 website/src/components/PageHeader.astro create mode 100644 website/src/components/PrevNextNav.astro create mode 100644 website/src/components/ReferenceSidebar.astro create mode 100644 website/src/components/sidebar.ts create mode 100644 website/src/layouts/BaseLayout.astro create mode 100644 website/src/layouts/DocsLayout.astro create mode 100644 website/src/layouts/MarkdownDocsLayout.astro create mode 100644 website/src/pages/docs/cli-add.astro create mode 100644 website/src/pages/docs/concepts.md create mode 100644 website/src/pages/docs/get-started.md create mode 100644 website/src/pages/docs/manifest.md create mode 100644 website/src/pages/docs/yarnrc.md create mode 100644 website/src/pages/index.astro create mode 100644 website/src/styles/docs.css create mode 100644 website/src/styles/theme.css create mode 100644 website/tsconfig.json diff --git a/package.json b/package.json index bf35e77e..901775ac 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "workspaces": [ "documentation", + "website", "packages/*", "tests/acceptance-tests", "tests/acceptance-tests/pkg-tests-core", diff --git a/website/.gitignore b/website/.gitignore new file mode 100644 index 00000000..ac5d2bca --- /dev/null +++ b/website/.gitignore @@ -0,0 +1,2 @@ +dist/ +.astro/ diff --git a/website/astro.config.mjs b/website/astro.config.mjs new file mode 100644 index 00000000..21f109ee --- /dev/null +++ b/website/astro.config.mjs @@ -0,0 +1,15 @@ +import {defineConfig} from 'astro/config'; +import remarkDirective from 'remark-directive'; +import remarkDocs from './plugins/remark-docs.mjs'; +import rehypeDocs from './plugins/rehype-docs.mjs'; + +export default defineConfig({ + build: { + format: `file`, + }, + markdown: { + syntaxHighlight: false, + remarkPlugins: [remarkDirective, remarkDocs], + rehypePlugins: [rehypeDocs], + }, +}); diff --git a/website/package.json b/website/package.json new file mode 100644 index 00000000..d563718f --- /dev/null +++ b/website/package.json @@ -0,0 +1,14 @@ +{ + "name": "@yarnpkg/website", + "type": "module", + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview" + }, + "dependencies": { + "astro": "^5.9.3", + "remark-directive": "^4.0.0", + "unist-util-visit": "^5.1.0" + } +} diff --git a/website/plugins/rehype-docs.mjs b/website/plugins/rehype-docs.mjs new file mode 100644 index 00000000..e60d44ae --- /dev/null +++ b/website/plugins/rehype-docs.mjs @@ -0,0 +1,66 @@ +import { visit } from 'unist-util-visit'; + +const admonitionSvgs = { + note: '', + tip: '', + warning: '', + danger: '', +}; + +export default function rehypeDocs() { + return (tree) => { + visit(tree, 'element', (node) => { + const type = node.properties?.dataAdmonition; + if (!type || !admonitionSvgs[type]) return; + + const label = node.properties.dataLabel || type.toUpperCase(); + + const header = { + type: 'element', + tagName: 'div', + properties: { className: ['adm-header'] }, + children: [ + { type: 'raw', value: admonitionSvgs[type] }, + { + type: 'element', + tagName: 'span', + properties: {}, + children: [{ type: 'text', value: label }], + }, + ], + }; + + const body = { + type: 'element', + tagName: 'div', + properties: { className: ['adm-body'] }, + children: node.children, + }; + + node.children = [header, body]; + delete node.properties.dataAdmonition; + delete node.properties.dataLabel; + }); + + // Lead paragraph: add .lead to the first

after

+ const children = tree.children || []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 'element' && child.tagName === 'h1') { + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (next.type === 'text' && !next.value.trim()) continue; + if (next.type === 'element' && next.tagName === 'p') { + next.properties = next.properties || {}; + next.properties.className = [ + ...(next.properties.className || []), + 'lead', + ]; + } + break; + } + break; + } + } + }; +} diff --git a/website/plugins/remark-docs.mjs b/website/plugins/remark-docs.mjs new file mode 100644 index 00000000..c8cc0951 --- /dev/null +++ b/website/plugins/remark-docs.mjs @@ -0,0 +1,186 @@ +import { visit } from 'unist-util-visit'; + +function escapeHtml(str) { + return str + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +} + +function toString(node) { + if (node.type === 'text') return node.value; + if (node.children) return node.children.map(toString).join(''); + return ''; +} + +function slugify(s) { + return s.toLowerCase() + .replace(/[^\w\s-]/g, '') + .replace(/\s+/g, '-') + .replace(/-+/g, '-') + .replace(/^-|-$/g, ''); +} + +const PILL_NAMES = ['type', 'required', 'since', 'default', 'deprecated']; + +function pillToHtml(name, content) { + switch (name) { + case 'type': return `${content}`; + case 'required': return 'required'; + case 'since': return `${content}`; + case 'default': return `default:${content}`; + case 'deprecated': return `${content}`; + default: return ''; + } +} + +function buildTerminalHtml(content) { + const lines = content.split('\n'); + const spans = lines.map(line => { + if (line.startsWith('# ')) { + return `${escapeHtml(line.slice(2))}`; + } else if (line.startsWith('> ')) { + return `${escapeHtml(line.slice(2))}`; + } else { + return `${escapeHtml(line)}`; + } + }).join('\n'); + + return `
\n${spans}\n
`; +} + +function buildCodeBlockHtml(content, lang, title) { + let html = '
'; + if (title) html += `\n${escapeHtml(title)}`; + html += `\n
${escapeHtml(content)}
\n
`; + return html; +} + +function isFieldHeading(node) { + if (node.type !== 'heading') return false; + const meaningful = node.children.filter(c => !(c.type === 'text' && !c.value.trim())); + if (!meaningful.length) return false; + if (meaningful[0].type !== 'inlineCode') return false; + return meaningful.slice(1).every(c => c.type === 'textDirective' && PILL_NAMES.includes(c.name)); +} + +function processFieldHeadings(tree) { + const children = tree.children; + const newChildren = []; + let i = 0; + + while (i < children.length) { + if (isFieldHeading(children[i])) { + const fieldDepth = children[i].depth; + const fields = []; + + while (i < children.length) { + if (!isFieldHeading(children[i])) break; + + const heading = children[i]; + const body = []; + i++; + + while (i < children.length) { + if (isFieldHeading(children[i])) break; + if (children[i].type === 'heading' && children[i].depth <= fieldDepth) break; + body.push(children[i]); + i++; + } + + fields.push({ heading, body }); + } + + newChildren.push({ type: 'html', value: '
' }); + + for (const field of fields) { + const inlineCode = field.heading.children.find(c => c.type === 'inlineCode'); + const name = inlineCode?.value || ''; + const directives = field.heading.children.filter(c => c.type === 'textDirective'); + const pillsHtml = directives.map(d => pillToHtml(d.name, toString(d))).join(''); + const isDeprecated = directives.some(d => d.name === 'deprecated'); + const id = 'field-' + slugify(name); + + const nameHtml = isDeprecated + ? `${escapeHtml(name)}` + : `${escapeHtml(name)}`; + + newChildren.push( + { type: 'html', value: `
${nameHtml}${pillsHtml}
` }, + ...field.body, + { type: 'html', value: '
' }, + ); + } + + newChildren.push({ type: 'html', value: '
' }); + } else { + newChildren.push(children[i]); + i++; + } + } + + tree.children = newChildren; +} + +export default function remarkDocs() { + return (tree) => { + visit(tree, 'code', (node, index, parent) => { + if (!parent) return; + + if (node.lang === 'terminal') { + parent.children[index] = { + type: 'html', + value: buildTerminalHtml(node.value), + }; + return index; + } + + const titleMatch = node.meta?.match(/title="([^"]+)"/); + parent.children[index] = { + type: 'html', + value: buildCodeBlockHtml(node.value, node.lang || '', titleMatch?.[1] || ''), + }; + return index; + }); + + visit(tree, 'containerDirective', (node, index, parent) => { + if (!parent) return; + const type = node.name; + + if (['note', 'tip', 'warning', 'danger'].includes(type)) { + const labelChild = node.children.find(c => c.data?.directiveLabel); + const label = labelChild ? toString(labelChild) : type.toUpperCase(); + + node.children = node.children.filter(c => !c.data?.directiveLabel); + + const data = node.data || (node.data = {}); + data.hName = 'div'; + data.hProperties = { + className: ['admonition', type], + dataAdmonition: type, + dataLabel: label, + }; + } + + if (type === 'steps') { + const ol = node.children.find(c => c.type === 'list' && c.ordered); + if (ol) { + const data = ol.data || (ol.data = {}); + data.hProperties = { ...(data.hProperties || {}), className: ['steps'] }; + parent.children[index] = ol; + return index; + } + } + }); + + processFieldHeadings(tree); + + visit(tree, 'textDirective', (node, index, parent) => { + if (!parent || !PILL_NAMES.includes(node.name)) return; + const content = toString(node); + parent.children[index] = { type: 'html', value: pillToHtml(node.name, content) }; + return index; + }); + }; +} diff --git a/website/public/cat.png b/website/public/cat.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc3b9061241d759356cb029b465eb8e37dd2a09 GIT binary patch literal 85690 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 +{m|2_D+nPn* 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 Wc_ELE=mPi)nu3h#%Tg(`p#Kk_+SlIz literal 0 HcmV?d00001 diff --git a/website/public/docs/docs.js b/website/public/docs/docs.js new file mode 100644 index 00000000..26de1e6d --- /dev/null +++ b/website/public/docs/docs.js @@ -0,0 +1,305 @@ +/* ─────────────── Shared starfield + theme (minimal) ─────────────── */ +(function () { + // Theme + const saved = localStorage.getItem('yarn-theme') || 'dark'; + document.documentElement.setAttribute('data-theme', saved); + window.__theme = saved; + + function setTheme(t) { + document.documentElement.setAttribute('data-theme', t); + localStorage.setItem('yarn-theme', t); + window.__theme = t; + window.dispatchEvent(new CustomEvent('themechange', { detail: t })); + } + window.__setTheme = setTheme; + + const btn = document.getElementById('theme-toggle'); + if (btn) btn.addEventListener('click', () => setTheme(window.__theme === 'dark' ? 'light' : 'dark')); + + // Starfield canvas (lighter, non-interactive) + const canvas = document.getElementById('stars'); + if (!canvas) return; + const ctx = canvas.getContext('2d'); + let W = window.innerWidth, H = window.innerHeight, DPR = 1; + let stars = []; + function resize() { + DPR = Math.min(window.devicePixelRatio || 1, 2); + W = window.innerWidth; + H = window.innerHeight; + canvas.width = W * DPR; + canvas.height = H * DPR; + canvas.style.width = W + 'px'; + canvas.style.height = H + 'px'; + ctx.setTransform(DPR, 0, 0, DPR, 0, 0); + init(); + } + function init() { + // Fewer stars than the landing — reading comfort + const count = Math.round(180 * (W * H) / (1920 * 1080)); + stars = []; + for (let i = 0; i < count; i++) { + stars.push({ + x: Math.random() * W, + y: Math.random() * H, + r: Math.random() * 1.1 + 0.2, + a: Math.random() * 0.5 + 0.25, + tp: Math.random() * Math.PI * 2, + ts: Math.random() * 0.6 + 0.2, + }); + } + } + let t = 0; + function tick(ts) { + t = ts * 0.001; + ctx.clearRect(0, 0, W, H); + const isDark = window.__theme === 'dark'; + const color = isDark ? '255,255,255' : '255,200,100'; + for (const s of stars) { + const tw = 0.55 + 0.45 * Math.sin(t * s.ts + s.tp); + const a = s.a * tw * 0.7; + ctx.beginPath(); + ctx.arc(s.x, s.y, s.r, 0, Math.PI * 2); + ctx.fillStyle = `rgba(${color},${a.toFixed(3)})`; + ctx.fill(); + } + requestAnimationFrame(tick); + } + window.addEventListener('resize', resize); + resize(); + requestAnimationFrame(tick); +})(); + +/* ─────────────── Docs-specific features ─────────────── */ +(function () { + /* Toast */ + const toast = document.createElement('div'); + toast.className = 'toast'; + toast.setAttribute('role', 'status'); + toast.setAttribute('aria-live', 'polite'); + document.body.appendChild(toast); + let toastTimer; + function showToast(msg) { + toast.textContent = msg; + toast.classList.add('show'); + clearTimeout(toastTimer); + toastTimer = setTimeout(() => toast.classList.remove('show'), 1800); + } + window.__showToast = showToast; + + /* Heading anchors: inject # link, click = copy URL */ + function slugify(s) { + return s.toLowerCase() + .replace(/[^\w\s-]/g, '') + .replace(/\s+/g, '-') + .replace(/-+/g, '-') + .replace(/^-|-$/g, ''); + } + /* Field anchors — same copy-link behavior as headings */ + document.querySelectorAll('.field[id]').forEach(f => { + if (f.querySelector('.field-anchor')) return; + const head = f.querySelector('.field-head'); + if (!head) return; + const anchor = document.createElement('a'); + anchor.href = '#' + f.id; + anchor.className = 'field-anchor'; + anchor.setAttribute('aria-label', 'Copy link to this field'); + anchor.textContent = '#'; + anchor.addEventListener('click', (e) => { + e.preventDefault(); + const url = location.origin + location.pathname + '#' + f.id; + history.replaceState(null, '', '#' + f.id); + navigator.clipboard?.writeText(url).then( + () => showToast('Link copied'), + () => showToast('Press ⌘C to copy') + ); + }); + head.insertBefore(anchor, head.firstChild); + }); + + document.querySelectorAll('.prose h2, .prose h3, .prose h4').forEach(h => { + if (!h.id) h.id = slugify(h.textContent || ''); + // Wrap children in a span, append anchor + const wrap = document.createElement('span'); + wrap.className = 'heading-wrap'; + // Move children + const text = document.createElement('span'); + while (h.firstChild) text.appendChild(h.firstChild); + wrap.appendChild(text); + const anchor = document.createElement('a'); + anchor.href = '#' + h.id; + anchor.className = 'heading-anchor'; + anchor.setAttribute('aria-label', 'Copy link to this section'); + anchor.textContent = '#'; + anchor.addEventListener('click', (e) => { + e.preventDefault(); + const url = location.origin + location.pathname + '#' + h.id; + history.replaceState(null, '', '#' + h.id); + navigator.clipboard?.writeText(url).then( + () => showToast('Link copied'), + () => showToast('Press ⌘C to copy') + ); + }); + wrap.appendChild(anchor); + h.appendChild(wrap); + }); + + /* Copy buttons on terminal + code blocks */ + document.querySelectorAll('.terminal, .code-block').forEach(el => { + if (el.querySelector('.copy-btn')) return; + const btn = document.createElement('button'); + btn.className = 'copy-btn'; + btn.setAttribute('aria-label', 'Copy code'); + btn.innerHTML = ''; + btn.addEventListener('click', () => { + // Strip '$ ' prompt + '# ' from terminal, else raw text + const text = Array.from(el.querySelectorAll('.term-line, pre code, pre')) + .map(line => { + if (line.classList && line.classList.contains('term-line')) { + if (line.classList.contains('no-prompt') || line.classList.contains('out')) return line.textContent; + if (line.classList.contains('comment')) return '# ' + line.textContent; + return '$ ' + line.textContent; + } + return line.textContent; + }) + .join('\n') || el.textContent; + const toCopy = el.classList.contains('terminal') + ? Array.from(el.querySelectorAll('.term-line')) + .filter(l => !l.classList.contains('out') && !l.classList.contains('comment')) + .map(l => l.textContent) + .join('\n') + : (el.querySelector('pre code') || el.querySelector('pre')).textContent; + navigator.clipboard?.writeText(toCopy).then(() => { + btn.classList.add('copied'); + btn.innerHTML = ''; + setTimeout(() => { + btn.classList.remove('copied'); + btn.innerHTML = ''; + }, 1400); + }); + }); + const target = el.classList.contains('code-block') ? el.querySelector('pre') || el : el; + target.appendChild(btn); + }); + + /* ── Syntax highlighter (lightweight regex-based) ── */ + // Supports: js, ts, json, bash, yaml, diff, jsx, html + const LANG_RULES = { + js: [ + ['comment', /\/\/[^\n]*|\/\*[\s\S]*?\*\//g], + ['string', /(?:'(?:\\.|[^'\\])*'|"(?:\\.|[^"\\])*"|`(?:\\.|[^`\\])*`)/g], + ['keyword', /\b(const|let|var|function|return|if|else|for|while|do|switch|case|break|continue|new|class|extends|this|super|import|export|from|as|default|async|await|try|catch|finally|throw|typeof|instanceof|in|of|null|undefined|true|false)\b/g], + ['number', /\b(0x[0-9a-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/gi], + ['func', /\b([a-zA-Z_$][\w$]*)(?=\s*\()/g], + ['punct', /[{}[\]();,.:]/g], + ], + json: [ + ['string', /"(?:\\.|[^"\\])*"(?=\s*:)/g], + ['prop', /"(?:\\.|[^"\\])*"/g], + ['number', /\b-?\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/gi], + ['keyword', /\b(true|false|null)\b/g], + ['punct', /[{}[\],:]/g], + ], + yaml: [ + ['comment', /#[^\n]*/g], + ['string', /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g], + ['prop', /^(\s*)([A-Za-z_][\w-]*)(?=\s*:)/gm], + ['number', /\b-?\d+(?:\.\d+)?\b/g], + ['keyword', /\b(true|false|null|yes|no|on|off)\b/gi], + ['punct', /[:[\]{},-]/g], + ], + bash: [ + ['comment', /#[^\n]*/g], + ['string', /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g], + ['keyword', /\b(if|then|else|fi|for|while|do|done|case|esac|function|return|in)\b/g], + ['func', /^(\w+)/gm], + ['flag', /\s(-{1,2}[\w-]+)/g], + ['number', /\b\d+\b/g], + ], + diff: [ + ['added', /^\+[^\n]*/gm], + ['removed', /^-[^\n]*/gm], + ['meta', /^@@[^\n]*@@/gm], + ], + html: [ + ['comment', //g], + ['string', /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g], + ['tag', /<\/?[a-zA-Z][\w-]*/g], + ['attr', /\s([a-zA-Z-:][\w-]*)(?==)/g], + ['punct', /[<>/]/g], + ], + }; + LANG_RULES.ts = LANG_RULES.tsx = LANG_RULES.jsx = LANG_RULES.js; + + function escHtml(s) { return s.replace(/&/g, '&').replace(//g, '>'); } + + function highlight(code, lang) { + const rules = LANG_RULES[lang]; + if (!rules) return escHtml(code); + // Tokenize by scanning, taking first match at each position + const tokens = []; + let i = 0; + const N = code.length; + // Pre-run regexes with global flag — iterate matches + const matchSets = rules.map(([type, re]) => { + re.lastIndex = 0; + const matches = []; + let m; + // Use exec in loop + const cloned = new RegExp(re.source, re.flags); + while ((m = cloned.exec(code)) !== null) { + if (m[0].length === 0) { cloned.lastIndex++; continue; } + matches.push({ type, start: m.index, end: m.index + m[0].length, text: m[0] }); + } + return matches; + }); + // Merge: prefer earlier start; ties go to earlier rule (higher priority) + const flat = [].concat(...matchSets).sort((a, b) => a.start - b.start || a.end - b.end); + let out = ''; + let cursor = 0; + for (const tk of flat) { + if (tk.start < cursor) continue; + if (tk.start > cursor) out += escHtml(code.slice(cursor, tk.start)); + const cls = 'tok-' + tk.type; + out += `${escHtml(tk.text)}`; + cursor = tk.end; + } + if (cursor < N) out += escHtml(code.slice(cursor)); + return out; + } + + document.querySelectorAll('.code-block pre code[data-lang]').forEach(codeEl => { + const lang = codeEl.dataset.lang; + const raw = codeEl.textContent; + codeEl.innerHTML = highlight(raw, lang); + }); + + /* Scrollspy for sidebar: mark active link based on scroll */ + const sbLinks = document.querySelectorAll('.docs-sidebar a.sb-link[data-section]'); + if (sbLinks.length) { + const sections = Array.from(document.querySelectorAll('.prose h2[id], .prose h3[id]')); + function onScroll() { + const y = window.scrollY + 120; + let activeId = sections[0]?.id; + for (const s of sections) { if (s.offsetTop <= y) activeId = s.id; } + sbLinks.forEach(a => { + const want = a.getAttribute('href')?.replace(/^#/, ''); + a.classList.toggle('active', want === activeId); + }); + } + window.addEventListener('scroll', onScroll, { passive: true }); + onScroll(); + } + + /* Smooth anchor scroll */ + document.addEventListener('click', (e) => { + const a = e.target.closest('a[href^="#"]'); + if (!a) return; + const id = a.getAttribute('href').slice(1); + if (!id) return; + const el = document.getElementById(id); + if (!el) return; + e.preventDefault(); + window.scrollTo({ top: el.offsetTop - 80, behavior: 'smooth' }); + history.replaceState(null, '', '#' + id); + }); +})(); diff --git a/website/public/uploads/cat-shape.DVKSPW1i.png b/website/public/uploads/cat-shape.DVKSPW1i.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5129652fb90c3fcc010876d2b8c59235f49108 GIT binary patch literal 677690 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

rxHG@T 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�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¥atL&Zs4)$Vq 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⋙CcZ_umB_n z_?s;r!quTR`Z^NJ0!U?WHBvX-+`?)fKz%$qas?8A2wZn}sIGr(QZqtYXO2F}n%~f( z_an~)oeOQYFlNtOYC5usbj-%!EqlRDb9dNo+MFTZhKJ_^Z44)8*X1(u2)YlrW> z#Boq@pfzlG8MxbZ$~vCzQE>8Q3tddBR)*9zwBe=cEF|w&H@CF@74-ouZ9=jGpPhF< zK2H!MOp=^M|G}J04U{#f>C2Ztvjkf-{uE%pAq_V62q=X!Z9Uy?Pad|^ty=R5FW1|9 zc9Y|BDcf#->AUnk=w^28-3w`>HT__`%ItK{7RC+F%+!5t~G&kud5csun##tY1VwsZoq>= zVj=aii@@zM0{_0DWO_8U_y__LYm|MC^AiemE1mns33^A7e)WfR20(!TL=qbu@wEZ8 z{=+t$pFea*{3sV(Z1btQZKe~?TWf^|3BsM^l#*T1=Vc4i4r2#$;DipcPv}1X@b-gQ z712NE36t@55+MrY6Hqp>Soo+ddw@bbPgUjn35K1l&uyK8vnmscJ=MP;IZLLKhwX8% zl4$&{8%RLQjWwcA+_fh>J;36S#Mi)(@usTc-Si1f6iuBJ`;1Qmm5k2&J$Z~5MXUF+aTyZ_#DxMyh*&PMuqJ9sn+GaxO z>bwdXcwkN%Oc}bmyTn&>YL9!TZ_|B1_d3V9%oeWIbe|FGS&06_gch<2gB*`q z=yZ8}EqCeV-sf^&9?K|$jn>07JAZK>hVB>U8z+;dTy`9VGg;m0Z53y!2GvCJFUf0W z2qS2_{={7;T;0=X{WF!0l?rkxOt-7ePMWJTH7e*tL1Kqm4UUq|nMVmxiI&E7Gw*F0 z6fOw3Wt_7c^18qE&*qwMAy>iN*gSG`01@c*Gll$k#0d6;f|FcDJ>GCEXn|IwnuWD{ z6IknzLYZoW8adQZIiLu9y7KOn#1`OpN_cuLY4zN;`ZZXizD2Lhyz)|0YVa*A(@ws z+vE`1+0TsN_Ja=njE#sXAAJ)ccLsEP-N2gvwgm%>7$#@NVK{~uwJ}yc-=>trZ;X)$ z7YUvF3~A^~`BH*Ds#&58Pr;F4{S6GJ4V5E0NC?)C5#A;JrcOvK1Xyt9?&XeUOr9ua zN0Ixa)uU60*D=IX7M23=zP0IH`?*AqmAQwDU=^xr9?tuDG)vZ&{OS4Y-x}`hQaeWv zRYO>XwviWM0%2|1il&zS>jC=GdO-8;^;XE=9+$`4Vlqy-7G@@yK=7-t@0R3r?Hb_^ z!EJMMzuLdOm!LXJY-3aCrwd~e4`2PubJ!Fst3V<k z+V+$DbCK0c&osRlV1N!d1iM(!^?dZ$RPe#Vbe?iU zgWfTj+gL*4V+-Bt+?T=FK+AF`H8viAckhbN-{Ne4`$RSA+&kBE7OG?;JPgxpvL`P+ z`vV?&(!2+~SkRp%-#+0l!V;yLr z?RCawbcJqOUT3mN&qj2Gr*;>&OJNm*_owv_v?gd{jXAp_eSb!4eBzl}ID+yj#s$v| z5<&y|Y66?PCfZ9LD?_S_nDxWJ?=UEXIqg}k3g4sh?eU4%FY)v*d1uH=M}rO`xqkPI zBSo)M)TK<2dZK0iJ#|zke}-_RHQV-cyb@Rxg^Ljv(L5G5x46@%Yyc%>Qy#&> zGU^O4JRviHebYVJMTsLnCqZ#Tf~gUe_cN_p%+klL?$l)_2!Gs4`b($3;10_}Bz2$7 zuh#bL(6 z8p@!v?YsVsF|e`Z$3YMJLTz_Q=93z_Iou5of<6s{YGzy^k$!YrP2I!r zX!=Qv3_W0Iofut1sON{|?}~419aa*uUq@}dEgLg75k9kf@7slRddHYR22}O1AFaKN zZ>Yd&t5IQIz#Xvk&E=@vX@l0_T9=6Efauqy_C-|Amr+$#_?OcGhz#P^VNPf`WI~pd zwP$4SG!fb&xR_-RT_vTjf03_ie!(-{RR0uoU!5%}~Cj>TowD}Z^59{oh23Hv?tLWl*j z;B|w^xdipONKUfJu{Id}F7fT4q4Ps7QI%8S@B9?Al7GS5_S|V12~zzth7?&@!%QMr zh<82Y%rB(%?HlIXowV7UC>iJYcvh5pC{z(TBl>ey9XVg zN43{R;6tCfh(@sT{Io=W>E(ChuKFv8S4g>H(Xk(8x6U{j3>z?)a3W5U=$fd!e_&PO zLmk~A>l9^@bIBjVo*$nWX>c}wuK&2vWc2rco|or-zo`}ksb{n=uC=)innFgGGBrCc zNQEs_W86I!hK&~O1D368Behm&S#YLoU&q6|{eFs@MAnZ}!KJ>Y#0%upQ$;<>Ng21Q zE`qX7E17wX>x>Tf%WACH1w2+I&tbTH+xaSsmp87|7R=6g6R2I|+}rcEGfR#lS>LZGK?q3`%A%)Es=oR#h+cTxlZTUu7fLA`}5R&hO z45Jxr5Mr+`<`*09tU}|f0M|p&KuECEz&X(@?Lmc5V?uE_(=gPoObvcYSRDy=zaEfk zp`O?dW0u9G$(jbx-fijX#0`OjW3}PM1^@O-~D5)+!yNfhr55Y;c((2pSax`jN zUa%TU>Y8Xe$=S0^CzeR>(#~g1so;^#qnvR>_n)i($F^KI*BCASxkJ}UeV%HynA38| zQ3Gs1v4m6f-{Zc$Fmrj0y6tuE1}mCk!r#3MlqLr+dYi81?t*viOio_o>D@w9de#`q zUlJPTOK=4`Y<8xhq5Vh>s9Kp*YP}ksWCE+JFm|n>az^fW{o1g0D&Ag>A>E3Tn~{au zd;~DkN=8^OUsKO%J%gQWA^pOGPK@Vdy=W(`*)Ls!5Jd%5A=_cxp+D&OEb=EEHgtg4 z+MA5)c&XgeOMl!gz~6|kDhc_~-3c9pn{}6gNFkbu@N|Pn9Y&Ek`onMi#SN%or*ZEaem;VKJYaTdV&i zn1OrBZo<@&3EZbIc0~qMq;r%5B)uod9}BxdmGVmbYE-0t?Y__wk3k2EZMr>Tx9kw< zkxc-#Z{A(Z=?o9bstCm~pJFo>Plfota%AtN{Y=%F>^3OPyMb^_uVhUV8ooUn6)+r^ zcS8`3<(-VEww8V<ClF*ooPA=IY?M9FT z7`SQWG!!rPH^-#~`w4J;(ui5rRX6VAZYT`e5FL6<4hfYZzO~)&dkj=C1{`tswsr<3 zCHW%@QW9G8MTlA7O^;yPqf$+#=Y6*Bkv#%V57CXScS6Ye^o4*H%C-ppq(2Fe@)U^G z$L8*)VRf#RrK6ddCkK z{8lNi=_pL|??JvTU{7qY!;y0VqHI&uKUmL5bC({kGmAQ z&R$qRP~rb&v;NDjcb!P`w=4E=8tEG+Ot({L*pvCUe}+MdXdJFz}HiH zKDFkJUA@p8K9140|B!s1eRcaIowoG=oi^xkb`kcg#*W(|P2M~e4U%=BZ*wkehj~je z=Ya(o)M=Z@*)eYmy6Jsl<9(!nn>u5?a^P}&{xqj3Eq~)R6AHLnZjGGX>U!XS9G1O< z-qPM!8Qszl{Gj0LT=B5EgLD000O6s3w9{?La!!QX>oY_NcpmbY6)uTTK0Rq`lF=#K zwbtImGwZRokXHnL%GSGenz9MN@BL9-rH*53FgS@j&mw~YY%Ug zn=CZT6Z0sHmJ~p?NoX4^HvYTtaEBVrit==kA2W`!H=Hw)zMLIb8;)LJEAfoy!s(su z9&)jbVHQtmwl2BuBIRq}r~F)kXH$zgh|S(I?(kSyY*Nztx_b3Z0G0uf7^@#kExxux|MAgRj*44Q`^o<4>}NHpBMH-8ULpe z=BZXvP`?9>&y#s$2TpxlJs()x7p<4E#cuOD0vp^|h2IQ_Z1nC@62B5(l-;piN&Zq? zHUmyucieXP*^;FtQiQ^$cggCC^zxk$+}U5c-jc}~pjQ=THCs<%`@j~XQ2#jQJq2c? zjS;4qqJ8}D3~>#?&-mYa=#B}`g`x~6I>>o9XU@W%C{<)*xT8RCK-7|#ZrEQXxAR4} zC6`SmWsHXJ9${{b363>6hUtriR}p3|ItnHmLB%A=1)VV&>`>T!o~kIK{h<5mAA$Q7 zuB0^6u^bT67Ti+KF^c8U z(QPbeuDWONbk6b{-KgMh_Vx|}Hd=MXc1Le>>Cw5Uh}Hb`9_Zg!3<>vgQLqkyZSR= z`LBx`_zP1%^d>(!ly`O}^sI%e;$$1K$stp+@U#7`Jzaf!4kfSV3_?@ys;v)4B|V)c zh%xnl))WIk))AST7|U4Y_IquJZ(d2%V+g>w;S4o zPdy{dhp_9GZq>upaq1UoD;)M4>(N@_27H|&XwGlVD>oPQV92Wiqr}@jGb>;djj)?9 zT0cI9S&eGJY$N@vJA)YQV5dtV{A^p)Jv(N3?o2r)UZw1t)Nk4 zMa1Z?w{@e2g6RNhvPpgVRHg2SJsFizPEh4sS)MH^A4!9Pl)6gkzI7<%tzSigSfaDF zoXWIZ)tlBoa^9X+s_h3O`khOx6_|3X zJVof#8S-nJUwVATj=uLjH@%YrT${MY%XWNk-s1*iacEs+ZN2+^e1^ermEdrIW1rr2 z*+|21cjz3-#$;G1m5*r{4N_?rx#Q|A(v#Z5Od{&c5N8%sT<@E4_iKN}*H9uaiVE0U z{=BF@ej2a(<J_^A;_b@t@@u#t*z-t5ha{@112W%x@YzID zM`U)I$P^u#=w~Xi{co$Bt_#Sq*j2Y<$kk@Ui*_SfGvoYQgAU+@m_6;99Vb6$?mh2# z=LtpU9rWtMjh78=I1c@SklDg6;gu$R@q650zXWup5-VW>=5ykTM&P*+mNu4#k9}6O z!glyRitMc;3RvI6_R^k5tQ8UG##@5pg(X+_`T2~6HQeqlK5ETp8M-`V{G>J>pSe!d zt9DA<%dOaEJ9DHcx_#>Pa%;`y1o2U7%QhS->90dmWDU!iycV7@{c@grppWXf4{sm^ zUX5aB;k&~afc>0Fx`TQMxg{%Bn-<~IS5g44!J)`~+_`Gyp4wS6Q-Cr|4h*ffjZW)> z1|lq#fQ?<%F{ZdETFe#v3uBOqTpJT0vm;5V+XI`t_i5yM6L=JuzI<`xqT7brkMXPZ7^^Q~yZ2CN;My4QhR8j1r9jvYZAn-> zZF67k9f>P#&|ILd{1j*}UV7ph-M6M1Z#rAsbJnJ!D6CSoU*=zv@Z-pYlR@3g2Fh`? zWo(jhEV2f78Z$bV$H((K!|HoeI3{r>po4MUqHDytB)M4Q+RH+skk218p8BmI9PR)N zc-wk;Ml&k&mfTmk=Ft06*qFK$Skdpr!XFiuwyr&4SJWDC6r%fu2W&31r8YELRG8t* zSunfip!&x16efz3OyCSoV7_$nL`8nBOMY7EH%}l-<*U(NN;?L-*KTS zc}Jp)xH;<_NJ=UkQX*PRa;yU+S52j+7-&8OjI4N*VxDjswABEzfGujYJ@dFk2+wV6 zh-obn#*~~dqL|EY|6YiCwcU&~!RP-fNZ3cKO;w@yr<(Rg<v(TSoE8Z1H0Ev zZ#rpkpOiYr3l;_EJ|Wq*-|T(aXUd=*<<*yuwvYb3({TCn#g5=s_8FS-ujfk;VIWEK zf7f)muuObGP}Vz2+-A~OIZ}7Ksr`=RMHwQGFq)U%mmkaaCg<51>Q?f#1z{ly6}2#; z4RR86akAOAgNoJfCg*Q*ovKf!KMkxCsxfY3dk&wJLIBI`kUpZn4-^vD-0Ntocth>? zS5k{_#6W^Xr?u5d`e3H3oDaM67Iv%2_h{JIJ5Ae0*=T-M-Tb=6U?Swch=EGFX2dKH z(?m6(i_SJ9p%q;vPyLa1&=oGqgIxmXJUirI0b@ZKoWV$Pr5>w`vZ0@Uu;x=V6iUhm z(w(-{GV6}p2?_^M${3^rVVqorK`!3tX1fCSh%E|EBG-Fs>Cg@f^gsbKf_jcx?2@f0 zIwz4n2(9U;Pc^bI8f(T&Ec!~xk^8-4SI~+6sW`K0_`Infnj?2k)o7B}0yr!A8eXak z{_>7Ag#Z8COB)i?qm`uGPtMBfaX!mh?V~(cC*D~%kwmH6)<2&KwVBaOD_b^22S4+! z@6#n2^=3S)PZ5wutMSJn#>i(NUmGXH68}Q83AHvn_5=LE&2%1vMci}`Hfj$2ji^27 z&VlBCi_pz5FZXw?p9n8LAY|SUHRD~w%-rXH?JitEH2BywSLmG(1!#zjLoTm?6VI`X zp72o*pl8+e?7%Lj^$idb0Q@9AGr_-$zhc6P4N-gtZ4k<9Xd<%fgL*!8NBz82O0@7y z=(;o8Qj>GBWZi-zpnFyLAs9_Hz|OYE&;Mu@@&Lrc4-wgih(!FhW-_anFyGO#srE>M zqdo}^$NW|8z^qucpFl3#%c*{%$^`h?d&(SeosCa(RmeWVY{y#Ve8G{VEE87L!it~w zCc@Ktj_rCvzo+zWN6Ly}JafPI=&!WfsfCnly50XI{XCM_E1k59@)P{;vX6^KHEv~} z&}S1fZE{lIpY<{=7Bx-VP3ECt%Ub&zZ|y#sg&B(apRE!I1k~ zvZhO0V=nU6Z8+nX$e@%9{x7$oVjK#3m)ezw2_cp0ux+PmU7ps3nZqQEGKL4L7-LmC z5tVP>HDQw{d?g#Q?^R>e#T>yotn-CpT#r0yI-j7=w|>AplH8?`KWcMLOFzFABcr-a zrYusD7|iXO$3XJr&3-f22M8F6Fy%4X>)ZaUUeP&V=1z$>It9kD!g^ynqN`8EK6|^g$GyLI(s4_lJUm_>FkuhKQR9!g z-jJbtD{+GhV}P_(mS0mp6LZTSBaH^Z(Qi#plxz8%0V`ZnQ5sYfs`X8u^>8}GP220C z&{}XSN~R4@@FEmRhigiXUcH+?^C$w4X7sW|r`_0zePPa(4RPx4INwZ#7kgt?Q{j0W zU+BZiL)Z-WR_<|3dvcB9G{WQ)i7BzA#qQ%Fj@IJc?(@H~cFAF^#iG4^rLE3e zq=SODq2`@KgNm!m-0+s0|jG*JeKFE~=MH#4l++-1TTWQ~liH)h`-P)VU_KeP~ z(6bEJ+mh*MgkmJt*v&Qqe?Vsx@?E8_LBh8~So5DFXS~l^l!Rd063ej*H910b;>bRb z#gM(^WN%&~b>fT--D$8r&#T-e(b8j^_K@OB`0c^>%;ma69zV;|&h_+2ooytn=`6cm52wg3}0`gVr8ruzXHI%FUP+{?s$gPaZZEAVd}& zuP}8Dq7;KMyPAzC6K0&LB$j+rgz!{@cL$kAR@JfV?+oH^U2iX)ncQT z_#)mHt7~wq%q4w1C4*bb{9SpFT*tBRlRDKM;)Lu+t}V_{R~p$Z;nwHcZ;Mn3YpOY+ zhMSs}eOZiNa}|CdlWiEsywp~I{Pb}LuDf-y1=XL%O;1t}YX239R-2Jo?P*4Oo&H_e zM9H*d8K?8IA@HbTl4N_-tbnrw9D`plp_jgeXVmA`R?W*0a%@A0dnt!A5CefDAY+*^ z7rB#G_dmZV*4NZC>L&;Wpk-2K%gn7qA z?a7kX=5ce6H8f&Y1VNwz`*2sdNd-(3+|rYFe=6_gF$sRQ&1HQj*pppXgageHh5Rtn zb@!GW4J@CJajYmHD>CUo$;qNe3pFA-#=r3>2Pxwhk(4M#USd#3^taxwhatAnb zL7IkOPBslAX>}-Y+=b6q|Hlx+RDsJ4b`ymupZ-8mE!=T6B)%(N-hAN>B?C5eX|oLJrl96 z_}_Act?6Q+xg-yCZm1H$GU^ee}pV z8Wr;K*B`$SzlzUzJd#X(+_2OK9~N{5L7XUn-v`2{QePkcV`g~k=k;~o+!wwT4)0EB zQ6n#fgGJc7wr{`unx3{8u+^#$mG#{WFg$+J5J+;JHFJN(ZOnHVu50MK96_(9hlqir zF;z>-_d}X7?J;rN1I+Nlr?D=-bqx-8BVIMcO&h1UsOH}{ds`6<<}73X8PB8`1XS7vZ{V)mr1v>r2)JKlsAumc>f$F@ZK#)z0f=?Kgk>e}D@*P$ z)NM!_W!#APCvUo4loY?0hM!1+c>4K=!RJNRanHHRJ=_tsp8Ekvo}d4`QTu&WIHB7N zI3zI4ITimD!l#I?LG@I5+v%0^!GK@bgJJC#REz$nHqpX6V)^%(cIl%jcCNeYyUL>E z82B+XvYaq{m@*57+hW@9b+a|?_6kn)Z=1$o{lFWY?r@YL96#9lz9nNB)LqnYZ)cMG zO2n$4bxM$w4)vIo#VnSjS*N1Qi*?ov>z|0--;G*YQXxTC*Dkyog?CuBM(*gz5Q>}Z z+bZZGr#>$K`lZjSQkpM58+zN8uKj;py?I#D>Hhy;$2r-VQEbl4R4QuCQcb0nJ8n#4 zW>aaq=3bdA?ue)e)Nw|d%B(3h_slXkAQwbL#IiI+L{lL_Br`-sz(hnq;rp)n{jRCc zKV9T?`HwgEeZTJ4>-l^sX#} zwQ0sjd%vw_E|p))HnfYF>U?4Vg7Xvq6xd_@Eo06XW(iw3Zva_bwq)LmsyjEuxkXui zlVo_F2dRbiy2pqphwhl%WaIGmIa0BBmmjNg3{{;0DCjTol7Uv1NVl0Uyt5IIfm~)z zCYME~=Y{2u27NXEASjcNfe(`%$Zj%(y4OI5xwD| zs-%$*bi9Va>qMK#Y}jy{xQrWxw74XY&i!#S&xh5vKI-Ras|`Gx~lr=d-mazw&8AWMy*Y!WYl+@gH~?l7WtpBKNyTf%p+d z5$9ixOC?0<)GaGF%Yl@H%0jd7%j13~-N`^M_46g^!jnUAM~PieO$-&BAgbQ*SNN`b zgi<~J&Xa_)=>Ob_I%I#j|3EUu7k38{{Cv@-@5P;{W>!_2E1ptcS%UuSY2yB|-t&zH zxYP6pz+$a6X5S$JLkyUS{$sOCw*qaGohArYis5s@Lz>j$nr`JPz(0t~@GDMjuOl6+ z48q*r4##uwO7?+xDHM9TxO5kz4*2as$(LxkmS{-B}O!Oy~}NvZFLh z3QU$1gf07%?*~T7#E*)i;&a6J$&F6A($#Me5;Y6J+q=AMse+rCVeTVp_cHd#dPVbE z&}*O=JzMLpwF2D>WS?jUv!MUM9>+dEOzf+7MQG^h!bmGLv%e>QQ=&f3;)&I1G4*Sf~3Egx@x1w9AMyYXH zi3FIycv5u(;zB>rvp&r-{fG9o`R)u>>ROX7bQF3JY7hK7R6zvwnTLxqfLd zz4}08o#)*bo;S?39(MeI;o}eZsA_7~oSp2jGWCq;Tu4ki_Ro9evmUaVm%=tSBja2C z5me#308^GsIaW~=g$1>`s0#-){3ztj(Rgc)@Rl>Kiv&z3j~TfgHoPDwwE>Uq5C9WT zn!avw%8_mE%<@a-r>ElCRS1Wo#xx&vR;mcIw!`?jZX=g+{b*>nJhkdp$h%( zwY!BxFqz^`J%ozQ#hCL|k4fch%It7?0wANFI&R+qz0CS8GDt~8sCkixOFD8{jWah8 zLh|sKh-#Ej@2syjgdQTtEirLwYT7)tb`f{~OIDJfo{}Lr<*=GP@g$prMf|;KZmoXS zVAme}Z2K4;R4y553t-S%;JtY2ft%XX4%BC21%LIrz%KCQxp*EFRCHVGGO+E5_geA4 zT5Vd7g4HcWUbX;;_hCLddi+AYS{*=}Ghr1M@MyLD>l$|r1!wwFS<=YXfDOep562)k zmfz5#mMy%RlqY1MGcNT{qg*uhPhz(YhlOwBx?W6rByxWj`xYU)v@Qsu3Ql=U=idmn zarF*^+#0wNeVPn^UDAEZBDYWsj7hRyr;@T?eb9{zwhlIFU%sDGk919&U&Q>EFZ?D4 zdnfFjYsmF3aeTuGKgc_;qiAgcUP^* z7^J%?naT`%XS2%rS-OIs9*?;bHsQ-TYp6hL_F_HC+grrhANjBAR-S&A6{9`&`Cp%5 z^uxAzgc%TN5QPM(|2MH?SDi%Wv6Y>A*f+GLw|6m%z?nc1|Baw{5G>_Ecgw&oW#Y*!Y<4CCi}{i-V6=QhJMnl+(2 zBVO3Lhs0cVmm};z(ZyzSXVF_CcfV?z20||bj<)yiqg0tids{!Craf@~DN70-@Fj%4 zE8@;3Wp{-`nW5nBDh0|SoUlJws

fhl*Y%=L!ei^YX5+ojx5MQD2=OgWfU*6yl~>XFUb{)2KR?)KALMHbGGdloH)m1RdF`$js`Ot zaE5Nb%ISl1|2F!k?fGodjotCtC<*sM_dkiz_dgN}rN9C7`Z%dmy{(~kR4&2B^7TUv z;~bRuNccp)fP5|H$?JTkCiMrg0I}!#^<5m6?HS9i@fJ!U?=CQcNbfNC{hU-)ja^~pCQ2pBIj=wI% z1We6UW!I)-eVbeOsIrz0pcl_Ufh%c9yYAMqEcVdAO;T!kf&1?auhXSd4Ck_}(eVMa z<`%Viu8X%Sg|loCwz#K2Phoy!&{3aVs5A+tOHaDNw-D`bcE=+&fbPpxvHw~a=fKrL zpc{K6 zQUCnElPA;vdXwl)10Vn_K2P-C=$9R9s3RIXVWenQ1b>?K51nyP|0BM3E(OcS*5 z<9YiY%RoDe58im(rqpdjSNoEIR%yD5x9hP52SC3)6P5%Jc`1k+oavu`0u=KnnBmU2 z#&*CB(YviFLfJ7rTmp&~>oIK7d}JXWRGp8VEopW$@V)>{JoRA{K#zCnj>*2q?~6(+ z!5B0Uj11_?<1w3sYR?prh1bl4)cr zvf{#(vdG#bb*Hl~giG^6SXwa}5c%dTk=+vFe!0hV=FN#eIT9o>OyaPH9Mj%c1@uuY|Cz@F*(Zi?xR zJMzuGoNi#)T*MHRqzPWs4itLbn5DF>{igJt(NL*&J9iEDwTr&VuVUsVC)};sMfB?| z$Qet$A=k@eiaO}-cnvG?Z_XD*jOU&TeZ=fvpFL@0vEg5JRGORq(`3A=!_k%OWzW8-L3l$W!?*8{vsT?!6>(Oek1Ao#J^c=mVt147Cia#HyRx0T3w zlK`1Gi6R*i1%elG>3=p)wWuOPxB1v)#>q~i&3|oO?E9ClqR!~$E2>~FOgE33hRx>2O7{m1nKqIf z!VEvWOD2Hs#vMWUwt#Oy-xb&T8|wNt+3WKl51HV5z)jqwbMoMR-{uZD730rl38o|M z567Vl#eZ;}nq%vE;dcSs(%2YhtHsFW#?+z;7zn~}uM-1bSW%J9jkqMjskNS`2~?w$ z?6y=;%!wj)D4}fH4s;M^1ihLX8rj|ss6WD(c!dwL5-`dp!;4^m_890RIs*Eo@#{T` zc2EV3wEW7lQURc#OR|LRUW#5xeF3Gz#LBS-HT+a#iU<)i{hM99#-MgLS=BSKt2Enr z{2s{ho0CtR@Jv|0?b2)QRd<(i((*UMKa|c!n|Xv!+T@%CUn_Wuus0x-k*P#6Z8!}- zonk@kk|F;fQrx@Nj|$euhg8zZ<+uevj;1%+h=%(3Q0yZJ6`?)T6AW#P%M$I5h%%bc zg&<=9KK{4UMZxZW&n#BYepZ|c)_;CU%ziktwh@+Rfbg3}`!C`F)$_Y^d{FP4U@fv6 zmS@%Xww6U-JZF`XmTw+2%w1S^B4;()+?_uZ7JQHj^x+D#_;zL7Je4Q#CT5)=u`5zd z_GHba%4+yDlX)O?rhv}8?|>`JYs!VC@zU}qFCm1SPZ4 zRH%M5!8525TR~5c9cb3%!URJ;cEjjk6rf2G1O4z}DHzsXiHS2u*8a>f5j`NJ>u6En z6Mjbk-~2d%rethn&JK1Anp{jj>+yO=2z7dRG|E7~kz$WguS{&yG9Lzv8c%z8rKY5KGUu?&YZ4 z9dr)C<>*Y+ST2dV$EsOkLk)Hx$1Nrtk?@72NqWo;NgEIL@p5@%{g$WA4gKUcG5u`W zpvUO16w9~|FTGN?SBQrNc&u02H?PApQcn~}i^mD8U2)+5PCNY6$NV#d=l*=pSC0S< zXH-K#HRiGPvW3aul~6qe{IEY&cT*bA(S^ZT;wO!xL7t#PF4YIZ*fBmVF@)+P4`O#Z z;>eJNesnTu)Cip%A55{xOJ{Ua*~ue(hY( z$Wx~q_!8}YCD$B%56HE=4Noib7%{=IymRfcmmS6cCCQWlN{;CRK-JyXi-$9nZH&d; zCd$!O$zUT-uHn-CnCQ@Ag_-nV34_Z2jjhfMZ}6IO>e-o6j`?WgaC!MTJ{cL*SCq2ZK$#jk0+vk&El1VCN?yD5Y)xBLU zYUR=#ZNu|XPUdM|m09GQbB6JzbFfO_CYQcL+HZ=D41KYi1!-*SFp~Sb8!1Sx9xqZs zm3-8Fkplw&)!<%u8-3sW_}s)n<)Q$wwxdrt3`}Wb=)RI{m4lx|;B%Y}(Pym+;^QO}`O9<0R_lxx=+Pz47cGAygwY3(eT7Y+SO$E=G`wTVIn8ZrL>~y z=oF=^ByH!R9&DxkyqABlFwK2Bc`Zl+cD!gk@bH`^b z(J63&CA3zT#9J!xSm*N+C&>u3- zV3_4+?pcY^jIxUN5f6OBeEu~2j+%?RJbK9cZk;GSq1%O6^>Tp_vf=V9*GdkxK`Oxv zggRkEHu{ej;VF-?Galnh6ZlFe*Eq?ORzZzaxt12%<-G%C|0Irdf-dl^C&I4sfK;M+ zKvAkY`F#F~5iq{sMyK}gYrnp8h_*snUON_vGJ7E|lh))6yq!MC?AhO@WB?^W?obvz zcW4bem?n!Nq-T@z8gHgH5+MoS1Jgxv+qG03I?pWX#&32mWyt?Z(&*Vw>_O$jE6xI` z+8-$8U}XhE0GtHy{ghCRkIVOFb_1ydmt8FW@=%P>_YzWq56z~8m{jgfh)FCNczPlB z#T5jw6}CG2;rfN!Vb+uPU1cZ394iai$!Ej`CbH?~4V^;$A)$66lKkqCee+y7!g*=? zK_8g63a`ers8Taz*Z=Bz%{NmJ^Nd==31V@!;2m;$`IDaR-{)C7vtv4; z<&zQBM6!iKNd_ztOh9Dc6h<>Ra5nJDSz~Th-Om}ZHY0T@jwitzQujPzDiqs8)%ttB zmN=O(8~$_qs0W&b&ffou-Ne8hBXGE}Nei!;jH~axxT=K1~l9i@@H3J z&oS!2dpzE4-r_7m8Lw1%R(CK4TOyKAWXY#@p4=R%vIJuE3@-(i!0!D~HS=MH~344x21Y zcec9EFy$E@=^L~YpiN7KkWO#;Jyt`ZG;(99DE1IHYx+yc<59KQfN%a5QaQB5Xcvdz z0Lo+Bhm>AnjffAsA0r{w6*I=!u*CBv<)@*(+RZ6Se|2#Ldh_yXJ#3~xU~3Vhd*^_e z=;%03?y;C25BXb2BDgNoV3+OuZuZ ze;x5B%Y#mDc*+DUO{M(Y<(V$PkIp*Z98tfR3I;^dfG{m8HRjgX6P9!qdp&vix8S;- z6Tt+uE-AYrymM^v2%6P+d_ygsbCO^`p^E(a4w~fBpKAQyf&&p^0}oj0nU1z0ht0;F z>{4wAi(znXj}?8zu1)-n!gv(khPf?ipYDDNpW^QV-9F7T@PqFvV!xr-|CT-V6ImGy zkXU5Z0&spZ57k=BhYhX*gcSI`AZ$E0%+~EyVx3+LMqk1`eQ%eI74@n}|v{ z2Ffb@_u85R*D78W)qp`hrkXq!g8L`7S-;@sHkEJp$nAIwc-?I(bPP4peU(r|UrKM@>aI zrKPPpqSlQmjTF3!W*OHy5GtZUhu}Yy_W~9{pf+#Htpqp`d^y(7Wz-7X+EN{M6A7Cs zA|#{#`{HRb(6vXs7w@vhZmH}tB0Ve|(88HbR|gbrHeVc90%_jjvxfQdvhIMMry64$ zPOv+Z_O3*29#bNg``d9NsY)j<-)r}<*5-|OSj_k-U*nZ&NKuX6e5MZ}wcIP_0VD{( znB?%K^h#CkQgv#~)U7txP`(EYsq3a2mL`y$7`DCppn3Kn2E4jh<9wKvS*8VHEW}g; zVHZ+4;f0>LUoJmYN>9R|-Yb`orsJRj%@OT@B9Pv==I$yOm0AfNGK?{ z{{FP$e&e%6!ig)j+U2=?pdV4mrwO*agr%Rw3<-74yMUbIn*6i&FKg4!4sr}-M5*y$ zi}BQETqfk)0F#Q?a5K+Z`_o0B6E;9I3CTZlx9Rxz@dMxQKn>kEWWu?SG$$T>Vt|Ax z2v-iR@h8LEAR7ronBw<717`=^nYKWFMD6&6MAA4Q&&h=E3*JBm_KO|Q4)7kg7IR5G zP~w63y7cG2iiezw{$$T?YijgG0kgYb_ng*^=CG;XNG3HWr$xqXo4I%NxLl03{lO>@ zWrEM*RhbJalANhSKZ;=X@pZIs^@qbR7k9m74>6A?qw&ipUCRlFL~~CZv5}TXaQ8{k z6IF#kqACzsV7$>0RsBd7gWg#bx`v3SSd_vyyitJzOL5{=x23p?=`~4a?5YNScSQ>5 zGCa79+M(REbtXY3YyZz>IF#SREnsmJDorAdsO1anv8KBjZfOR=R*Xfhn}SuW0_@~?UHRqva;dH3ooag;0nHX&kEu+TCp!hZ^ft5=Z=u`_Dj2AB(H%sNrstFmBTEmQq?XX@NwP>t!q0mQ z>yo_g?79w5uoYSDzZT(^yC8f+E@V%gcPp=eR_Gojl{a|22b+iz$wCBs^o^s@Lwlm1 z@p%!g;L!l@LK5K>QqeFCfs_n{MLsFE$`#*t%$-UmCrugrKCE(S_R%a~N{;}Qh+}lF zTgap4a4@c0B~7CLwME*H8Q1$>KV$hE(qt~%;&1E^bl)SY0($L}8VpNtT$6kktEfCY&L#N85fIbPoCj-L1bpqB=Y|DRWno!)Ox$rh zLKiQk48)TsgZrwI7Tx)E7tma)-W;GyE+M+5LAfYwoh`B&nEU{txz4MCZaGEml2$%J zoN+O{f`sHRmqy-qe}OXXs1$_+!-6DCg*%ow6t^mMC>D%K7}=W5TjGA5T>1;vR>|*- z!|mBwN59W`C)3?rls#A4TYa)9A3k1AfUN|+`sat2EuKUu7b+7IIlTImApn@gM+G%i z+ZZsEt6i3A(Umf@+Pv)-Gt9a6k8;Q6c+RnwvmH`B?n9s|(&IFq71&WI0yF0p6!h6- zgz>*b*xx(&gR9!w{tNN`jqvLCg0oQlzM6wDSbIlrh+PwE=$H}7Z4}bUv|O66b6Seq zXd38p|Ck^)sm2{BlXXbr=IOzvw{Ai1qv?`bJX_cxeRj)L4koC2#^DhNdQG7DIVH2>+@jm$VBAyKJsYJ1S`cnfT}%hmkm_s;w?j$?iVXh zHQ#8-#`8;}X&T_s=qALB4pd}Nd{{MZ5otmGob)q5kW!HHppfg;`+j66rW2K1L8ESyR(V%F_EZ2`=a zk-CaDgLt?peA1WaLcv7o5aWb|VgZGYt zNWHxA-dbA_WtNzKAi4v5)qZtK%+qb<$x7qV3w|wuk%GU%F*0&6cQfyr3M-Nk9?r=^s=p32-~oT(q-`ySQ3B6QXtCywidnGZdP=ZlRUR2l7Tm z;{Y*1WS>59NW3`8WZB#z)Ds$`{heZ^u6pkpCCuMil#aa%Z9r|&5nBCd0GU*!7E!tl za^Z=BNewC2W2$*NA{E+$xEGRi{=CJHe%LMCf{t9Cimu|D1(AIzdNT0d0>S+aPs4YW zdI-;ix~xn$&FH;xB`D+%>rGp8SufEo9SA@G46snNInnLl(_ttR)9IIP27h3$VgBx^ zb$Bo*vv!HBTeSM0(9Yga-_U>lM4Gyi^Z^M#^W_Xl-LIyK_C1KxEbIwRmqVXPL;igs zPCNRxqI8B0wAh%GYfEp>lR5~o|Go@4k59K8VSsb1pw=B%7Z;K7TbTn->l%g^=BY%h zwmZ;+z|gQIZimL?JTOJmV>VP~i0 zlUSy0(WMjRSxd>XxxA<8yOH;UoW32LYMWS}1Y*dwXm{h0>HCi5gO*TW#W_8Y3whbJc5*O#MEMPpA_0 zKV9?%Ypc|p|J4>nt+~70urX0m{6S(ai1iAd+Is~0Ff)1I>$&N(GybAq+SDs;9Z&3x z?Eu_O^K&4UTIL00FJ(992@$0`i4yyG99SP0kdUornn&&BE9UnDC``B9Lc+t>2eM^qVGl1oge%7Zl`CPHoxNkI+m{ceuu}%b!AICahs;@D8 z*mAZ;I|GPJ?4;t(=2;A2pl)p6aCy{O}l6kQ8a`{!EE4NY!AnfYb$Ac~~I-6OQeDvM* zG2Xm`h2;@~py9OI#Xm#5c0+TM)tVqAs@h)Wc1rbdL!+ftB^5B!*$oA|{R!w;e1!lL zw`ma0hLsvWVO!1>O2B}e?;LDo!d0|XEsdmIdwbtSme5|;G!$TVPUO%ul{v7jye)g3|Hr+CY zq9+W>XYCFRo((z#47klgM2P8&FJxW6Xg7f3hf63JtdWxC%yMjIte+E#GL>XUs8V_1 zrr%e1*IZ>tsG16ZJ9r=odCnm|$9~~nmwKK+=>5*ah3_aPJ0jGzi;kloi$Ki(Fu?HQ zpQ1vr{j>Rl*F#9=!pXe^4Vip~+~4^mRap_D9;}rBLBk=CL}m-T+Tn_C#(WID@w*b? zz9wstFT|kE=%(qM*(rc&4YM$a2ncp&Tsw~=@ zdNKh0AKW`j>&0U>zYnaBoSWK5F)^9B<%Vm+$2gViNo|_(0ZcB5e9?;TAzkVnSi z5-?Yk?sljQVX;Bv9xq;uvkFDA+CruhD)*=^yJeSaY&hXg#XN<~KM$KZwvW9JJ4~!G zW4~+Y$hlC4F%)n)OwoSXR!7!^P>}j@f_K@XcsW6P`tF^bpNTb;Z;q=>pZ&9Rm&v@q z^6?RHhsALDnsvsjQ?^lcbr-@sR_-F-EZ{lXnwF5oU}5l|ubj*Wo(7OkW|#YCr&7++ zs2xdff^OC|N={hoCey`7X^~`Z)!p#t0MKA*8{=9QdvgKcyBc!((XvMJB!aQ97YJm^ zz`s{W@7wE_Lf-YC^*C3&3~Z8`D+rU}^@+kofCLnJ5T#21x~+>JMuk8I&=zLd1V3Tp zA-Gd%5954GUN;T6JIT9u4UOxlQ9E2t#t+#1hz}~CL2qVe(fw%7kWI`mChLKV?wqIM z2KY5Q7(;My4%B~~UY5s}paC_)RA|(gb8($@%w+&xz7k0tO1PwS4)UZ>68AuXi8X5&=O6o0Pi(^ogp_pHia4MkbLkk8eFH;NJfPUlE`o>*cfHpc;A z_jQ+d(M0$x@Y^mC2Oz6qDxwWu@#3HY+Ao&<0|!DpY%2X zx>}YkczP%_WM{3SYbDfX^ z$ZR2VE>nZeCbhy%R(#xLykx${VD!|1kl^eGlmo{9YdJGNNG_63x9n!QleiU^%6#kvUmqp*{5^{U zwtFm!$k@u%et>jGjfZxxtm%HfXm^_L%08|=THmokY;afMCkjkZoB0aHu7YydYSIl5 zwo2GH~j8z41W9lL5Kf7R3@pU9Mga!p~xIKxaiGOmX!+wtx3xFB~b zkz`R_s)i+)RA)cWu@_vjCT6B?D(UW%!%vj-B^$6rYvC&s=T`=^w0tpqYbhrXyUo8u z2ILQk2Rg`%4CC`iKTTZOl;K)vr2|oNftQMf8p+nwj;`IQZvU*($4{4KcXS&*t?zq8 zAG>|NAB&ByjuyQdn@sN#PhlrH6S=@UajtS=v2SoUE;{{pt~F!nwbQq-jeo&p8(${F z$!5aC{!2&D$ZG$+Ru7VPjls4DLas>LTH5jf^@wl_=2b_k#y+YXl*YrZ?lu7Eg(>h8 zgEe)R~%9aDj9o!2dctmVu2K_EE~=Kav=A0QyA> z-sCu>N@28vPXQ3tBck+0D&W*8NvN?Q!@2{eI=bCnBFq0&p2Qw+O9q!eBERX-mM(4o zpE~3is9mk(MBTbD4rC!vOW)lqF2(o{ObW)#B#X*7YDp3;Am5%0mf z(3+kl?%(Ec@_Q)wpMv5I>T?N@)7lXZ&+NYdaexZnDw*#H0XLGqyEr=jWphl=ZWzMe zUfic^rY`BslQ%@DYSA%K;|tOgmI|1rh1d8JyEGO5v)FWP$dj_-3NS?&iH^8pMd=*c z7I<&(;Rp`ej>4)+>2%JLH-olgCzfVxCZ$&^fBW!^Myh_)6OEjM)9*-<lC(Fw{}Lw;ps z&Yj740K6kyTPcGHSeTH64iN-q;hqT97!`=;k36P;4~rVXkBM?EQ?V9FFoOKj0yMV^ zDqcz4s>&5Te#^5IZ=We#Mc2M;tlyf6gW91><|OkduF#dgWzBwEtCibwo#2x^?Kh}X zItS-Zwi)){Vg^gIQ~zY#A14hb&w(amN;f=?)JH;``YS?9yBdpT8qKJ_-+IV08{$r zU$`i(w80T9tq{RA$Np_X4|45oTV4?jjcfksGdr|1p14K^IA0OE+uhF9+u_^<3dXoD zR~KsB;X54}!#SvVBl{lw(1Aa^Y1kkr5UZvG3tg33FjNyv$uJjAKguT}V(M+^R~5Yp zBMF-&PpKdJSmk+D=i>e~QB?Zj6a~ID!>@5eP9wxt<|$tCtrM#GRdaZ9UNbdc8YI}az zs5sV48UYMBO1svZNvjghT~n)(P4+DzbCo>^Rp0vLSJp?!Ey{kv8j%Tx_!lrUHknd~byw$B#17I$=6vM6<9HA3(45s9(@)W`E@3bYRI4&VC_w*tZb|#h!vfMfd(vw6TNl zzVPRZMh+zH4hr!^F5-6iSp#OzoflpIjF8t=4FG)(&wFRqON#*wj|F-7|h~Z^+$GW7R$lPOOOEBJ*La zPA7o9OLaZ2+tBQzG@k7+XIBF)Gr@LFp@xkbz-y-a-L7)xlkCY8 zEjkKToG|C$K`rYNy}~bA(*)CyiG9fvNw(_&)bMTna=bXwgID8g+ zQdy~9T#f;QQx~q3srS_ykWC1F1~bQk8z{2+6U{JPRVPWa1yk|prg@q}+WXIpzEDtx0wU`X|!qM^L8Aa&RF zm;xX+c!MLA=!|3=4#xgHsS z{s~ZGvxmaJn25QJPWE>Hs`R(1K|5kE3VyYip5ws-FI6F0C_RV?7k!EW;X=aP z6v=1#%#31|KN*Kvc4M8#I{=X1ARq!=b_jJHhR%K10(vE;*J#4CLtk}m(oSdKEm=>6 z9*2uHE5{J#s<`VsCs&`i%n9O2ls;4FR4d!Ei8V$U&|I6PoW1kE=n; z?={Q6EOR^8&~KC%+IfhC#?koKj70Y=Yy8JeweU^1?(oO3`~R={DAY}VTGaQ{Mo*}L z^7RiO(C?sa>KpEYY>T)ocMSy`a-#<+kluBqh{nLI(U=CU7^>c*D*Mjni#Ww3V7f6z zZ5GZ00jP-QBL`woL;W{L!%YBd`qdYn&kqVgl7JE~$eNQ!ANa@oBaeY0t8!j97?Qsm z848eh7Qv<6Y;*oZ#YM@FKrC@h*Wid1=M`BY?A%YvZR}gu+U8|6os6q04;Ig6zp~$*U}i#Y176udaWMpe0(3^rgj49t*w+#7x005cFCzj2l%6i7w^nVjCIx;g=0v!eOCU+jNBY3OM@F$%xMj`H$WW8d+~h`~TZv5D1pEd==} z5U7L;QG{iHaV7SsT-$?t88*k_g0i@o5WBdI*IY7)*)(B$TeixN!#!$&akz^r8KXtz zVmI$kO$)&HZF>?Av*fj#E22RYepsTHWIU2e5s>n?%Gl@Ka<{}aD|P$3ByIBJBOP_? z;h^9qg^iw!9f_@v>~P8fv_%^TIX5xpmHKm3Af%UuOg8N5$h5+9Ds7XumS!yh0Kn@u z(7K+?_nw9+!`cAc3yJ$H75K%>LROSgz-(v}7XTqO&>O+@Qjf)=+1ms0w?)323x&tKY6S z=6a4_rwm$Ma|M#&WSgAH@-(g6JMtivex10zGfuOZp`JV?9Tj@;I&74~p{ljU6FReJ z(|~(*X0ao98Jkt&m4g#JDvl^mh;|b598PO01pl|ccv<#h!STkYcU;H^rIO$51IVhs z-4D93`M~Yx3O)0p{V-P}+P6rSwiUIU%+pRCtAD%GQE?RA_dm547CFY&OgAuZk-D#( z=LxlRibG+v_wdYs`v9PQ(KSrF*KfZRfA8q-p<~TurN9%-yoMDoarq((a=2d-NHYoq zk`+_Fq7h+R3uT}V`FQ*tG@3&SiH;{BXjxP?h8=)Au|Ln{+kq=_N%HS`%{@>~M)M9_ zmnzl>JmLVHf$3$X8V68;9Oz4o?d@a!b{Ej@1NxgrC&uNL+dWC^N~24X6|UF1cX5g$ z5tZRB#&h{k(_EBd|KQ9j`?>lQA0dzqD{ja9ki*L;1^o|>`p%)qaW)q2U1=8QC3*z( z^j|X8*uS(I2<24JBS5g^&sNog4IcZ+ER_wdiF?prVg1mdP|d2@_o7ayMY2l`N|w?A z@`Rfjy@j+pSUY!31QAH8cKIUJI`?r0nc~V*5%xf%pgyJd=^LzUnZ=qW42VIZ{U+Fv zHNT2l*jiS%Il*l_uBjv8BJ87K^>Vq5wrBf4+iLaSD+%gpJ^#}xM56_OYTWPy(!BSY z-qYkKv8PC1SDpk2ou2(S?QV4O)apsCi6lJfJK?ll*C_Bls9B%lPa=UrgSYVS=xW7K z&Jz-_m$ZT(Hg6&H-)fo3m)@(0l0td##4@(<7Z;XeQMI(dUjW!Oy4NF2>db0N2VPx? zb^k_x@Wm!8$5DtBTq8SE&J5>{a}OkOz5FBI1OkZEZL|S-nvedAn$n(VrJ#4g4c84> zvSP{9;Wxi7a%31yjK0Ui4UJn13OF=&e7UW=Ykw(pA%yvb)tFvimW&32pqY)v_Xk39#&XfW-ubI{d^f;dJ4iEV(B zudHn)ozjiwRb(NT%vxp3uT{FLiA(4He#HH=beCm3zcpsaKR@Wq^&HL|fzoJ24u|wD z*ao%z6(-LJDI8RGivNZXML~imwsm(`OUm(L94Af=`%C3{?<(uP~r^v*I{8X0JV{nj??2z$X*EwwO?HV`++bd~xvhmkB~-Rjj`z(WAd>b=GevMPI5 z7N9?p&ID?v!aa`GO|BmAY<`J5BN}zh@es5J>i5>5huo8OF=Enm83&#RskaX7p3w@b z+eiH|Ws^u#m?U`0QJtzX%f#%Fc|_(PNc3x*nMiO%9}or(~)WWSoAvPj&M%aWX4wh zgf5mezzLZ%L|#YC-VZC&dHnh3^Jvs_!QdyXi}IU}k6dVG+@u@WWo+({cIx#PLFq4; z>_*#tuoe0rY_hRAst`x|&p=!FH&0&`ThWzg9ggvk zdyE&)UY~o`cp|*`89?)rnbhIsE>Q!PX2*QvLk`+bTz`9_i2z_^?r*5vb^R;y$dnxb zL=D^v#9uD4j2})95|a`C6{;!Sg^^bSo0R*y#)^77)YTZme(*N7Wo2MV^q$?ruO&;r z$O`5(zrv`!?|GGgIymIglVXiaJM%yaQ~Cq38Q}V~-%Q;JtbGjtv_Qf4@h3HN$Xnr{ z^gRsBcouR_ZS9^LA=;Pq&Y8&@kiv*YBq9rTZ~UAlh-h<(0K^%owouG1?sf@)d>GqK zriO`D4Vn#9HKi;B1KL9I_sY}pK4%`w2u<*`k}g&9HsWYSO1xucr2$N=Hxg7X)cS(H zoQF2@cG9R;S==+)q7F$mFPN21#~Z3hO-Ij1yK-h|5p8Oh-{UUblTR+Y%-n3cz0p5=Zsj&C)d-qA^E$9D#W;;^ z-d4jDU*4~PDb1tJ0yL{5d-~V4Y|TAucRd+M7w`j=T45O&Nm9z{b(3vm zSB{B~A~5rwxPOXADc8hBC>PB`Dz(GT8{?Bs>AiOKDMLRd(aXijuLH}v4vP~PN|$-g ztML!zN!!Xqeu5nyuU1_-#THR{ef)J{#G)9KzV=1FcFBydG4xxb(q0WL)L`9UqqB zjdct}gdP8<`sfV(Jml_lL%`}0Eapt;#3^9pjQtjL4fWkk;raS1BYg6%e5rB2(1zdS z|2UFdHyZeL{OBN5ucKwobpYm#+k%7Bd@EXl?}`iBh&CJRYrg4C#6C(3<{o`jGL}m7 z)qR7;F-)Qy+(z7cfXTHTkrIud;G@glUT%8-pE>0AkrkBj{N`_hLGF8EfCDu`W@c~d*)J8H z69QFb7i6DR*LZx$bM@kH&6orQ4Ls7qE}{*L{?YyFe_)I#2^|qY)f+cqLb>P>qBkrc zcL};uADFj$yOP zgf9!=8mY>5-2l;wBYeNQ@@No}1944Q-j_(9KU0olM4rc(b*mk+1#cV|T9+q#vnW^|kX_CtT%V{aaxUn8{Oz@lok;Z>bcQ(06o&q6yG1GvD=SBEQ7xt#gjU)vn#ab5}erE>2Q)(Qh00mt) zkSh<4p7;MS$DwBU>P z1A3gfrBeov#Dub#D*+b-EymstX7&OYB4CJS2f$Bu#T0Ch4>(Fy{=)G<7}xNfSrvRV zSn^&F1D_MU9}!%L&sp9A!kyMVfXC5xFa^)62Oc+|H~ba}%-+nC0Q^?L0T`YwfxiL+ zO|@l2h!QWiV$?b3(zAHA$1%9cOgBPLQt>2ehNlWbv)n|_*O2`(E06@9R<3b6Y~}GK zzdP)n6jJss;Q&0YgNzMZgM)avwAnonGJA5tO@BUaZag*0y3Cfhte|91?9+8hv_A%h z{k?vDpIH{^n?9RS?|kU0!s|RIa_4w~eHSj`EF#v8)t#^1J~MZAqc7fgbg<4*=tpUv z$*sVAQzq0bWCn&7JPi!Kt7tUZ2{?4;lbyKl?mGmAgm2{rH^w>CF7mG=NvgAR4cjre zJAWvL$SewiG!-C=#6O*cNuIjczq4d{AwZ6%kk|O^Qq{PLeiLLqE)__K9<_HKwA7Ov z8U~*31S^j17$-|j9rvmSaIk1M@e45khYn?0#&iXLe>_!wyZ2SbVSHbl~` zGIj;&14Uj-9U73<(C654Ks9Rp8|x_gd;G!3G0TBuZ_rOGBoOR^tqz+tJSuXCq;%7Bv z(FL6}e^zVL-p?ZNcAHjLcg$5tct35K$Pg@<_8kn%k2e;s%7I>p9bjF0W>wT;L@@my ztr3gn-k8~EOTU4HrH#R^Rh<^c)%ceo1( zw^dvRFb|xTy7ai6{L!X1U;R$X#FY!usX8-Q=<$ndt8}j$5&JWiEbQoAyzzP?5BaF2 zo%X0ibmnO5pAo>6hNN`}IPD*zkk`gHT7*AB8YMllk1l)A27s4SWhd>L^o`X($-{Q1 zN$10I;1z9peCr=}{6DU~KA!3Q{l8A#j zZ8?fc=nmDewLby)A{_f-h1#FIr z2DUBsutj{NW#8li3E089Ix2GkNx6`zK*ORZGxajZL{7cyx)zQ7WdYEk)h9b}kr-$? z{EFwr2#|iZwskMBOd0j!#0g&P=`$XD$5_1_KN6#UVvw26C`K2|_M3~2D(-;4XRYg` zOm$v>U;E@vne6b>XkBP_1_AneD%k$H+WN}Z;c7S%Frkco_B4gsW>iaqhmr*|A<R{87@e31nc;1e1HW=!g&$cO@b9#w45Efz90o3#KrQ`;hgX`l6r0J*G@ z93)Etgwyl^q+yoLd=gz%o_moG=X-eK&30S@k8L7#=rBJnaSm^hJO!2V>tJSil|u>? z11yojVSo;bAk9J8!XeX&a3^99`d~h3qx4Lf*3tGwFLLt%U-EPTrw;-L@>~l>MNAI? z4ty+B7G{l=+E|09B<^Sh37&?PGO8r=lx)}#*Fi(;pBR08TA81gwS7BlJUHpv1S-#h zX#oqv#2tV%<5IFa>$M}Y!5L)!sS`mab)9s5knDaL3LXotCtR^;SMtwd)uE9-EdXg1*3aDDWyHHw}#d-nc?r)8-1#nVBWa zrK9Fqy|<_(Ky~W3S6qvF|Ab!rWHv!5%cU`?wrF35(SVx%TN=dG(^t{J6M`&=jnVTE zFg zYZhZLf(x+QQRBUJ+#BK>P+7+zFejc_rIF0KXu#1tQgmw?MaLGx@nVnWOcc6OP)TPc zqvAnNO?V<~b#q0afa|^vjRrN2$hYxU*9{&6j7g(LhtyewsJVJ%{|u=COL0cQvPMxv z1&)<+q-x{#k#?C~YZ5l?76`XS)6BZsMhuX_LdwMj?y zt;59h@w8o`f$j4MCY0^XayNB*Q&3QCF7S3GFejrc1_(TYc90`kSr9=CPj zIudIi0%8G=-Jkjfy>~YlDwBOzKfsBz!a=e#iYg{|QmJY)F)DITb&mmC&(pD@tG#BY z`RByI37_M-)(ZYmMl+~{7MzT8%yC>lrkD)>!y^YkxV*_BUF85Hs7NbR?CM{sjWo?E z^MPL!MZHhV;_SzB`|S)HVWR%QT3c(eO=?>$`yTmfEhh#A}OW#vDm2 zu6Z^Vx4x&5-M$#F>C1^}F8rD{pKOcdW!NMC1m-&B5eprl@z0C7-gy@pwS~8s6@ZlX zIr<}SD~viR&VFDQdZ<8fhJ zVx_0I&qYydPg{2#z7Wh#M-w(fT0efMRXhM+$z8+e_T;aF0FHp#uao+6DRwcyaB}aR z*7xD|efS-!HS!BH(~VvzO&mi;oQl@V_3e9RP)Pw`2NwMw7kky{#iW!;z!u;`a} zQJ7aqYT?{hhGM`Z&k-KXTE8>_YzPD)=WC|)Z`cP^gzr;#DQU#?{F=f703h%RkQCj% zHbLOU&yFmPJ+I)ZK`NzIRD^jFey~N0Pp@iw9Qt%m^uI_+F5-x?`l2d&@9UVfo+Up-qnsQsBRUgMJ?7V4CRV~8BpE;LMJ{^sKBy*GnUN)vM6#4=YMDtziq((p znQVC%KpBuNtC1D52pc{;q9#{?_s#A1YpCWj*c+I4|3qz5vqqCMpdRtY&-buR^?Ft# z@jIOQt?WX#CgVZ~^0I4*SR24XhO?3*F!u%We+^MiesZn=?gR8D&cS zE+CC_L@qO4JuNHn(@@Zx4A3R-6I}=Y_+}vc)Jg2_JP?Z+^J9cG$tT`JGr7_ z_Sr)UD9&Ge)L++@_zNE}$sTU*nj->4BE%l>jz%bYiM(>q@7Cxw@V&BXm7fH(u-*&0oAPo+|Gv$F~X|Nk# zjCaBigtEys0`F^2@lAl%YuOu~ul{*)9h>7jy;ce$BRdz4c*xx{n}Tf1R{L{AJvI9b z%g@Q^E)FzPU`Ha~obfXL_`UBm*?IlWcB5AZ;8echS>>?UDJ+tDpjTcSazJip(f!G2 zY<*6M-ierC_lLbOZhT;J8?22~CyYMmANeF1LJL(r5xI&ow9sU31{Xx^{?z|_236zA z_QkoW>F#rwcG;M)7SR0rsi70uu`cm%Q2b>h}%MZJs|Fc=U%8n z#!N(gNWL#TF4m}2kW3#n^cNg&YHw6d8#X(K?@98p-AYD4?5es%W^a!%iKeX1ANrmo z&WbEq11;t^=+2&Cv+o-kbtw5-Ev{H<_gN&7o@B#++H;i`@zIlW0HY8)|8bQ}uenui zB!C#AHBZSf)B~|~q~FB)OCl}7L%nRqQDL}&msFhH>*VvsxRn0LH4Vx)&F?Emj+#X zMF^b=OVIQ&_yh86dC)P?4Dc<&BqGC;u(M|j1~YbN)aa;iLm5`zXEpwT$kqm{E*nR% zgCAr8o*EfZYwhyB!2OgbuZg3yN257wk(Ok@H2KXyISd%$bXwXQ+!_154wKsh@MZwU zeOWSu7ynBd11S5We<&IQDBUO6kUZSftV_lIaOJ>02j;-cdgC2Kk)fD2_Pxs zi`eMhl__&EeIu{oPWd-&IO_JUE7RK+w_p8+c&_7ARvk)DGeCTw?gGs*F%#nUl#^Om5vY#)#$?Foo=wqfW#w4Ou-C%((i#1q)D$g^R1u;LYJUqc!ntqcL*b z&Pwp|{Yg9mr(-fGZtOkYKIeLJNl^E>sC{PD3~gJ!2s5Xyw;zwO&XlYTt<%YcUMVbe zzXwdBJpT2F+<4vuMt?@v{u8`czOM&3oBm-RZCXFw(l2`si(QU+^f zuRy-x!^H1LaxK)43hPX_3|`>)Z4*^%zY5*rkpMZzR2r^xPdB~J zpE;uoiQT7OKKas=dR*U`<~wP{*texseQMbUxYhkk8%a5&`1>AVxe#Rt5EosHexYfH zJY>s57i&@`yj=0k;c`^kbE^$^Ji+uCR3;4;N;BG?_RpU!nmPuU$a7b9ErhO;J#0yQ zZJISOY1R{)&N8?|`5VW~`Rvy*6HUw1XQT;dEwah&7@?n_CpoIa?@v%HvLs4ck&^*Y z!q|*FolYLn*j55Fv1Y^=ohHamG!j@aj);G;AcbtZ@PxM~E68Yy#(bL$8{!4q#-??Z zVcRw2$4M|$I_gqZQ5_iT2W2ft!ex_NiD-u{b&J9`esIC~QSS2YBaAx9q|BsN8o-k% z_}~%|)W~YO*w2BrhGGRkYros>(i$aoa|rRK5PS^2hIWmMrPIW-`CXN zW}afDUO$}nda$^HJZaThy;ff6PuhqXdXNuo*+9X9(p;Xmc ze>vehq*QZ)LA?aX6tja9x;^Db|oKxpsz%`0bN8qsPe`9 zlQ;%Qb(ZK~aE9z~=&7^z|uCa8AC;KCN0oC~tn z_6yJSJ_6Wups~p_sn?Ba67lycL3?5!)dlDhGQJEGdZmC_*G;4aXUH+fBymURtB*l? zW1niY-$S;o{bXfvH!RLquc*s+%8~o|r9oxmlVD4Lfq;+VPt1fU{0T8cX}L_kBz}Q$ z?C5iWs7=od^yEuV4CtXW0+B_+x$vz$W&mh)cwoEknZzfWWdeugdoLV*4`Vu~mm+Eor`|J3 zD{fIE^-NrDR$DG!L~H|C?}>d{C0vmy2-{RZ25~=-woF=<2n(s;N69FJ#*xxM8!c;z z{8sm3$#R1`Xx))HA9zg23WuW!yv%Z%TdTTnNbsWF-*es(|MeZ;Xf&)Go&T1Vx#?5o z&fu?Qx)~!y=(&gdKAm!_fy)3<@_7Z>y{34jch7~Hr~E5M|a}@S0`El ze(?TCecNCt@yDYis~p2LfF-tm@@=LBy+u(0g9Z5aTNX!3cO2st$PRQa4F90|ldJL! zW^;s|VV~VEl{FPAfL&Kc)J7To4WOFH9NAwv{W7(6RVK)@VXI%7H1PF?tg8(tZw*yIW zwE3TtZWD0{&D#CX%j?=9GyJQ^K$#C-2YVE!u=Q_1+!h9`H#EN^c8NjVkN{p))UE!A zkglX9Emq%QYLfUK)Uak85WhznTC~@79B->6E8eDFuj|XIs`3^@9P^EhC>uzkVdyQ;k%@;=HThgj)JF`@FesHF z5`xefo>a(nFBB|$0tAP)`h}_!`K>Fd*i!~Wd}iU|qIgI#XmK|v_c@3NLMUIuf=rKb zSFaQ?Cx+C`nXGln4)0YfghIgZ1{9jqudWGkYd>!MPei^xU55qmVC&yNHk7^qZS38B zzI1spVpQK{+`^HP^2mtX&h?SystCo7D>E<1)S5}XFq0R!!MgTwRmO_ncE@16& zCFAHPuaU1#HUf^~MS!Hkv%370;5Gwj+2_P%Pam!&Z8jO-YEJ*dFta}YbPouyv6!)N zWCgxW*flX5(BiN^+ANxOGDz_T505Qp7&g6YY_qr%6LpWFS5kkA?%* zs!MZPYuAnPv$rs6i-8NmP7`w*WbaupSLi#y4At+o^cL(7L4$ry8x9O+U7+j|1~lPL z9PBYSq=W09LgHtH(opD$k&aj9v`5$jl#qhL5xB+%T@l?Y@sQ9sH#?hs(MO4VMpI;P zUJ55Ftg@shF}0~Ii}@GgGkL+}lV|>ZvzIiXVkdR=-Rp?@cvs|Bsz~~fXGx}Bl_3^P z#_L;u!{`%OqtOYB`L#6#hLIO%0Q=$V{cBEnmb?oPNOX#t{j&gg23^5qv`S?nP-fzA5?rOfPAw>qd#;L&qbXw)Xkj)|0w z#%RZ51*c6v(qDr^U2P`TPRu-OTC>gKUdJcJzE*BAQQQr0V9gecNV@ff;>>yx-kjiv zdf*q9ks@ld@Z=+6&*gEwynvxBnlKvj#Z!X0u_x3*?F``hC_KqGxJ-u*G^K9=6p^8| zo+%%dbIl5{$T|Q)X<=2)Q<9?sly~qHhVi;Es;6@C5U|dQqNrAw^m^o|xT{!*{c9y| z;{fz{xjm24#W32iOYOeN&BKb|<(DL1lsp&L)|=63_3>Gi1*CXGO;_-h0h0vZzr&23)dD|Tye+8-v_foSx8{_ErfNM%Q10{b~^Jm`oRR%V(+ zABV_eVOw9X_6Mw)e3022i#>fLE?Y#jg-TFkmS;fNVaFtP>CMM|$)xLA zn>XaX=^xg2u|*~~{^{N~#T`WeoCFJrn}Z@{fl^X|)0I-HXRXz}UL>Lub=y1n#5XTH zmA+@Lj!bvt%4&Aq&9+;zP3?9^GyMAM;VjU{qy1#e%a_w9A5Ay|{Qry5dT2J|NxlT~ ztU8aYQ0O&aUj$&XQ#v}wbUH=b?U-^IPi)?${!#V%_{~;E>ZWQxftNq@o_3UUUGZEx zLd$>BIAb{;5EAT%)2#ZXXDYBVNQHy!o_6FJ$Q0c=UDPY{k<>!*@MxK^NL3j4hi7WN z?y=C)r(933vgv(l`3`s0J(zOib>nVWsUtk;K6fC_P7%sN{#Eah`wOEG4&2&%6i>$3 zJbOZr_v`&lbz4ci`c#iZ6P|!$h2k8fq#ZT(HssEchKy@P zs=)m~?9sy^etsO&ZpwMYP25k2eEh#d_E*?DlCB$?`)(xhKt6i?cZ<*Ws$OO~1ckdUXRZOA6!8o6}09M!;~&YW;G6 zhzlA7R#O_45Enf-)!2!#%Q-V$8$@8`GCH)O7~x?} z4iX;V>*tnEaYSjgz_P}Lt8J9Y!ezlj>8}(#o`d3>0j*p#Non44U!Ro>FGJ9as2f6-)74&=V5MFtw zVgP*8lTM6w=}`;u&%={*bpX)ii_9=|7>xLtS0dBxT(=x*jdeC&M{Mdh`=paXKj5g2 zkCl4$d!#Y-zrUI7{C45gxK0s!kPztOfRD}N8%)svoqghTvgVGut-iL6wrS-?xW*iV zOwlU0$MhGwfWGdg>^5f$(c;r4DkECF?tFb4;M_i*K@+4WY`wx)R#0Qwz!Z33} z+h%Ae2ANc#+BKO_r}ZbN8J2JJ1h9EEqg`%N+f>prIcRb1GGpVK;v@Jgc7o<_DI=kK z2uIQT6`_l9iYtro)VcUV{qK2C+9Pf<1){aQ7F+Q&1MgED6Tg94s-d&^X%P*iYx$BT zWEzJG8J{UY*j#20xP?=!z#~>|l`$MQ>o#m3dg^Q1#9jP1vvT97Z@2cFhTqBlGv~SI zKip5ak@7cZOK@P{HIS@N`@aBEB6h;`6jFFmZmT`Iu2 z#Z}dSQfNUte@?4x#4{_uSQeH#lUm4L)}g8_Er{INCO`6z(x^( z3NpRF6b3lHHv!tsG$rdaJm1QN=vZ4L*8@nW^0xOk!tRQ%qSPzJl}09O#fsM!)fF-6 zJvtt8-4pBPszTfp+2=H|p>!P5!tPg5y~}+}QD>Ey0zFg0?!eJM8g6!~hZ1uWb$p5# zti_)4?E6LUrs3qyKynpY7odetkbf5<$CF&qo$ zRESJBP$W_R=GfIOO4#`NMK~vBcjOe75L>I&X)Gr54;bPp;c4$%f_6hbiTTx}8KM3o zO4-*6G?z1qe)Uf}z4CQuearn{c|COudz$-)QAvK_tLzm}=oQRG@waRg>!qX_F!0(pF-eKB2jKdED^?X~yhrQXvwKFt`(x;I`$X{`;=LreUHd;KQWui)JRD#T(+-&pVl!j>l3CJKWA?P@Pp zi`ITQhM7Dp#!FmcbLePg$7tyOI_vH{(hkFdEiA*Ai~&*lc8BLu2w(Bf-gTo(1limW zAQt_M*z=d5*AD>*C;d>~v9woB?24R-!eZ!w(~DPFJy&D%SqXU8{1OUb=(DOrkXhD7 z_pn;)Xfio*hhiC(lPnUkhSA%SsYtU5`XY~AO<>T+nW7+;9n!acbb%GvvcA<5sY_ks z8g`9xPD)!i&_ie^skaYi+t)MjpO2OE)3UAKa`t=|Tn-w3sao#zG!rSYZ!h8gmfC0q zKeu?voj=MeLdPy@hpT4R_3LeEjE{)fHg(Jht!(KYCXO z*0duqqm>$C;Dsk8D6?rH14Lj<*YjF(gpw&3Gsr+YNkYQXTF&rZ)qsw7X@_`#W7i^q z4#SN(`_kN-r$Wh$D%R(}*qUE?HMWv8xoocS0jM-M^Bgf#NQ|>j!&kZ*nTB(J7nkKU zYXN*dkM@H4syRDMdCm*ZB!xLZ@X=$U56Y^Qr2_;P9eq`Rl#n_b0rBNQ_v}lAzHVM_%2L_I9EPS+HRoUc^Q15czQJ zFve2#cm?Psp}_jC#ggQKMQ0jE@CqWDFso_Sl4JyojI!$gcOioMZk?F?Pr7Z2d-#8K zYOaEv*qtkXK_P!3JJ}N%iAL{&O&rHxpfHjT}Xt||t-9J>f;hm38y|19{ z*A&$lA3Q^73ReXPvmX8`Ult=&Mv)G1r)!MIn`tx{Utyh>7AX1yi$W$}$%KKCOaZf` zzp#nrAfxEY=~nvFd>dNbK&i*|l&PgWE)U6{B38rm7=e-QDSQv?{Wb*2i@VR)z>+o^ zu4c{X1%EP6>k7d(?nvujy=#>^G-1Nr-I!z9>w)DhO&9^MlDCX4m^`O~v5W`YN$ciq zi!Bsm=v4xolPB6s5f4b_^7!>-l#=&axid+U{}6i+iJ2yA2cQD|OB*H2U&E5*@Nbn#uo3^6~S|2B^STirz$Tvq7610aqhty{K<@^!uc(9a+$nOlj$Rv4k zgfSxn5ZNvEYcS&OdO!oWd#z~EhTQPn6>G(cQSt&9s_b{*A!3ex zd!B~|s8awr9aoO>If}d0(}3QYnQeCn7XSBuIn0&0IA4zuQsQ3n-UV@M=_o2w6#}6!spfI-GkxQN&5)_ zt^Ap%#ta`@Jp7Pw;&GEPB4MN=B#vD4_x`@*cUh6rKj+&V(|Ely{Gace1bynDl|#x* zDa$kH1;TDw{|}wKsrny%NFt%W#oew#55@1OP5x7Nr5Zu73I{;(TNOv+( z+`nh5i5x0k*xFwSIpl-v4f_f~e_0h^&_8Q}Y9Im5b?3G5yL3jALPJfPNL_<&5E^~>ax zI~WuM1p`W6ll|VP`{T8VS^Dd`lUzVsg~mx{{HpBQgu_mTl_ZGCh9$0Ur@;4LM~k`^ zBzSIP62p1j(*wd8X?HR882@C($ITOa5{3)s-Q3H-jL|>H_5q%$?PVh;k&WPtvgK9M zf_VN(e3u>)OgQ2iL)G9{he)m1R`koolHzo@vGFQ!k(m_wNG8J!JC+ z9QraYL2IOjV@wH6l5w*=q1Bz}xDAw#Nk!&s1hEJf;CbYX z^E!{4ix8WJ8n$-qVwjkfzK$Anv5OJ5Ppzl`qwcFj%*ohyuc1$iq7~TmGi53S~vxNZzU>> zY~t?Lq(VC5!{=8`lK^gm>MxJwd;$-#G|=w?ex4j)lGs7B31zXs$wl=F@=^bY`Y)A~wF-C_HQwLqY{mX?4@yXqGSsoAjXIvc;7 z)%b?1wHld5OM}2=+Y`lrklxgDJf&inO)dt}>V5Yb0Ka5aQdy)v+;?%;;46puFY zQAlGIFcwKIo#xE4N}Iu;cE@9Yu^G$SVy?DJe#DrosWm$s*_q)!U{ZATY@?OZjmnOO@x@3zl`Wbi$kRB1AEFCeukthXR8k{TI|Ko%@&4? zVu_j0trBQe-2k$Avc7pBFU{zd9p|O#Y`7`$Eax?1BoPJaM+}vSD;s^0i)XX&I1w%Q z0R*wh*WgC8+1=wTF*3D!lx@r@4K<{+kIb!_CE>|Su^oF&GHRq5#8f+*MVeau8u~?{ z)EFS2MvjQF?*c@*3cQ0l-{i&DV4Q1}nMHncYLV%-QYpVz7r0nI(heY;Do%ZMn4@ue z0!M)F?LUwg8Z7i6($WZh4QLC)8Hv1pEef_>M2&THLX09<-1sf_*F|#EBi@h=g97%}{ zJudu7@5v2v>SYlK8$>^b6>QH`B^DwA&sDW=%!+DA-l zUp1|iE?j*7%7np!BafYrm3u#J85(cxa%Bq>+&VhQx5^oT>)}bzsc~B?FePbP2wNxy zU?@aBZYaDTIuOlV``T-vPjV*FOW(9zWZPDb`8U1UCth=%>_J4MS%#=XOZ4fP&Mx_6 zr&TX4m~8*TU2bQST3^3t^y)h?{~nR=&1;;D5(P{o%?JSi72tXx_k7yQ=Do6tWAqCb zr0@0_wa=So3Vsg0<#k>*0`KessU}(*dKux@shXPc;+S%K)guX8^gvMkr5wB_lysdAv-fJO|0}2yj`@Ibv;bt@5*z0|WWW zIV13AS4HjcRZC07mefQBLC|yn#Ha+SCIgsg`9zZ=k zT!RfnJ`bH^_mrImOcF|sXA)QA>&2=$?;4NTiYyIdd(6xt7=GaslYyxnjdZ?-CfA6l zhU?(mY~>7?7bJibGZu#oUNK(7j>Ue;7mpjoWmXNvDQZ1S8L74J?}Jlc8p%@E7U$U_ zGarR$NHk2%TagXF=UKn_q=|hYOKQ5ByheF5YEIClWN`c83zkUMUy%#NiJ)cSWVKfc zHFcTTXz#i#76y{MeL_345CI>QN`ZqbYa&}$sCrZ9{ zBwOF#@OF$W|NSeRU68ZFz|i-UC#{65%SUEuR|yMYCfD4dr>cF*kkM?%+-f1NQU7Jw z?Dd+e&KAHb$^NnyLN9;BA}w`#btXQV>rg%97ozHt1NH9a^v(_YV$7{2laWlLV0#7) zP_pXyLY_`-3~cZ$LS&pZC$>N3k<9^tKi;7x{cX^{5_Sxf%Yt+GLoMw)dy7z--cMUM zL#rC@3TC#`s$8i?DBke~7ak*`?wAK{^i_Qf*GJ(p{G6wCDoZdDVow$qWrkBL?nCYbYDp3|-C8*jJ*@+_5=w z1m?2J-hp&SfhnZ-LQMxD8N8B*wTkgAKx`nVo8g&cLOa!*BitSP7`E*`^;6?X-(2|W zU|?$lCtH0faSoaBbq;5}89*%jN9mgr4|aPLruVOmYN^wX42-<54d!3tz>JtjQb_9R z6R(c4Q{~GxL`I?FgnM3S2hl{`^@h>%U9r1oQc29uU~ikj?zY$04x+C{Vm3o)*A5O1 zw%odH(_H~GiB1$M=er8jYRKK&I z8XThtZwUmz1V5$Kn_cbN3|ZC7#2oNo1O7S89(FTe&?()`mh8zO0)W-~sTF`9uRFlP1)Bj9s z4bk(-S<6jl7;*zMxn}w+x{!WUd=blI!rV8lBYxNo0{9}w4UKoxPbM@fiV(5<*q_TM zt3eURY=)zDYF;!K&zk`{(_|jSx856Xwnz$==W91tI<9jHrW>=VA5Ky{~Twp09RONSd!47nq$vTII99QXG^BYfMox8Gzd z@Rz(2kDmSM?afcQKh$QTR6QI?l)s{#&&{W!vYoW&#k|l zd+IT68QKgFUeu?%tF{?e<}@ig>VA${JF{*0#j4-7dW1!!>0(mtc;|zI<(#oVjPs1n z;~-04O_gNR?X9dHYIX)Y*FQ@5ufATfpa> zet5-&-sS0oA*QQ3?o(ZEbGn|-jy~eF`8#X22mLWvkss|MYDwtil9iKKG)!d%;bS^` z#0am;qCF3j%E^xWmY$FBuH~jOx44d7g6gF`c1JBs3@z7K*Bp&{X*-{q)?l)L}oAW8$SC1VDaw=iQFxP8oy8xkeMzSt08ReG%Q zNj2{=0-|-2wcy>KQRby|MA-_}6n3jrl%H7+_Xs;Ca5V1BxA|-r+jrPyxI`))2!=xL z8(R@?GZ7_`1d0CPu~>^F@x%Ce6XnkBRhERKc;Ro$hT^9f-;^1ZQwV(I-5~}f?8uv^82hUN~6Rb`)k*qR~vu2oN=}E)Lgl~a%I!8tGmXW5ho0* zo76h@d1U8|H`RFa<}PHGwqq(&eMb8{x{kMuCB4|A@RMRdE?Tt7aBu=`v~(Q|iQ>7IVffUbhxH}c7r&C4lm7E( zko0v*AD``f$NfiPORwGq-JOX!2gDnv{3gxu3_e%C)Z#MXUg!PA`ddYZVSVPo;mOAD z&SAE{%P%{SPaO+sJsU%O1A=hAi_!jkU{88~W1CV&&9=OeWYeOs-m9w!z4PQqy2 z>;a*as|dqQd$4Ab=K1ic_2otKLTV*k-lqokTS5L}UF`G^re{BgqM%+}LCnSo+*NWS z(nUN1?-D*A${2q;OfE{$5MEfl|CjvVr{AZNRN1C)3Ly}l2EVzCzg6S^f2>xtn@`=J z$)Yah$|9c*OK^{LHz{*8V#_pZefDpMzWZG_XUVaiY`4v=s|KQ+iCQlt<=`D#mc%E%h=n}liqddYke`{fVO(6*1%zG z(v#Hw^D|)E!@iam;+xJrWKj-(7Z&eyqhF^ls7IfLwYF#Xq-j4__FFijzyMv0U)7oD zB|Hkc#r5l{Z8o=0nU%BxscU<}8B9)kkeZ%W#;Uj?`$WJptIW4cYWw3zcLx|S>T=`- zZB60@wwF;jJ)2kiQy2Tfd8BYH+BKf65@~b&7*8<|R^-Om=(w2*ed`8t*65rd)qHyT zZg}6a{%`#|>zjxbi?)gZ+Lqhdq750B7plT8hdWd!M2P(J`rB88zG_`$O}ACt)zn!yc>8E9JuVY`%-P4QV;H7ht7-X zQx`ojmz-o9luHjS(BTH_;OyT_t9L4e6?%wn@M0pAmI8mGUr)d_i|4zr-MI z1>;{QK00E>Z>%Zx+D7a5auY)^R^_^ ztrQP6)U`b0WA0a~!jRjc0)Jm_!mRN(-RD06imRD-IP~xI+mwWE+9(oUj$13b$K)Qi zQ!cYkqD-CT*A@-^-g2`f<~x_{d9PNb$2B2&J>y)7vRWc}a`|~&-4ALv+#3mVlyJ_N zSK(l-kEERXJTS!nM~e)cgWD`9j9UfL*;j9FzxsLmi@dk&@BIeezQ3@Jcj{{KEW-#w z{0sF=U{^^#G1?c3yGDppPZ`%D%>uM*s3ne^&jRd=j!NGb;iyB2gYLoMh^MLJ4o)6G z^1*kG!KAaLZ(Zp4hju=U!G|UlJR> z2MHYQ%#Z{6DlLLTZ9iReG-0>=z`wJ}J3b+KF&=H}nM+})3hlhNzbTxR_((7L3;rze z+nGqi?_5S$he8tTamYPS*@-hQ&{#=P!|V5LA7Lu!({J|_tsZ0W7ScZc-EO=}pBjpWqFet1=fgF<8(sTS1$$pkJ-+$w^Uq_^2X3^Lw9!+cF4hwX zypR((-xW1+y}`IqEOewahU3As%n3yj-iiK;lATL?ptZ4qknNZMcT7-cXB=ez(>kv2 z4gc(WfKDB+wOYOUt{;|VVpVozs9z-Ab)w;f-64DBdEB#`FA4ixlp90GLQZ-wez4yi zcAB;4=Tm>o5C~{U)uj9dj{Ehn7$t6SG#xVE=vIRkJ-Or*8=;3t_tcJ176Eb%z3b1m zHA9c}(J$UDMI0hGw%szY`^B?LXFUj`bbyuPCa4>*D>*DSXmstVo;oW16_G|cC+$fC z{?qkD>8u6ku2S2UFx@fbK!?c?Q`r$HgL3=0_ID*~AKn>2C-;3<;+F4!V=v}rceIu} zioKEF$5}PVj()P%BKe|CZhF3Tka^hiF0E<+Tn_hnJFc@7RA|W@l|*g^UHssFuqMh@ znc$h93wNKTfqi_-M|$_YRQV3xv?YD9EN5Y4b?=*4)#pe?VtV&Y{jNRx z@e`y|G*Knu-(mUt+x6J=^Zb8Tt4*jwTKyYm@4J?0pBm6DpK{&Sv`ZVe?}oAqg0EKf zm(}1PZJF=7^K~_C`+ApX;-#+5_WbPTg1GLdtr_wuxa2oUi07{_f8TS!!2RO^Dv?Q+ z*HJ0~`QJ>OCQYMe6s^0xhkO3|Dc$HA)|Kl~JvZ35eWtZ>NjH<3-`eVjSy*uIc#+pS zaegWOG898~6Yda{B*lBNMIk$l(%Zd3*)2)BA54hn@|G8jp$?R7qlVl6LMZ>{lp&pc zHDWF<3$?t+-e`HG92-a+aLi^T(g7WMwo~)|7n+ZpPG~USz?2b-`OsYL8D)eHA`3Up zMh*CIYwWmXz0FP|DAaD=s1`WXKcpHizrEG_B+utz2G+LA?&n9_Hyaiqm>&z01I&q4 zw??ixOgizYdJE2BgaJEoA89N0Vhf|u<{(z*)GvC=Y!8i5n5V=vR>S1EeIxz%;Qw?8IsU*vOk6dI(zdY2)3_{fCX z=k69xI#w(vR6#RzDq`kK^XyJ6tewI&CT^x|?y#_O?Ae*CJ>+LNb3H;I}G$Bylq4*qrPJKd67Wr^vnhYM3dlrgt$ zFP-E$P%6yNLh{zbRCynfK8Z;Gm|>D%Tu_VfBi4kZ7sWSYvv+6l_s|4uYr9!1nPH3j zNI84{4h>2_X+vQ6)dk_Cb3Ep;z7gE`!) zIQLj!Pc`cr)4Qy%z(5hC<9&SVLkMOB?XOEZ>aL7m9yMss1b^}SA|(%}B~(*4;wW`2W+%G0#`(IE9hF*g*mo^+`AYSnJbw!Z zm*)KUte3YfE-9nZn>}h?VLVKFk`k2aRxHnhkM&tpwMdZ{tmQb#!mGS9h7J^sR&lj^ zcHMo45W#vF?hh|d1Nx{3mDc|oWjlZHqeG=%PaT^C_PQ>71J2HB*G1iB<5pFL11+CM z?2N0x9tu!jWTNe#P2nDQbDv8acvY01CM0EI!~4I3`A>5GRp`HC^?#oY$$i+hZx)ST z-mi>)26Kkp&XkN!A3RLRr2d-KS$pWCsGNW{VZZSzy#HJ4obH%AgZ=bzj%pU>U7Vd) zM~M{!GdHm7zAk?P+NrX`$pf2xy!Q-%rVpIaTCdqxAGp(Wd%{i6+@^OeeHxbM4u9Y2 ze|X}kzwZx(8;A1eHR1?A-n)J5?Svr*|2*};?g7zaUs@Cd{lpSPiu@Cb{q-|ul)=&$SQ~|9NuJiKS zYn-;LJ5~NzdPdPVZ|GA{m6;^tB|%vDljz;B=)Li}Kb~~kEs(Of7{Qvz_D-}NBj-`* zlz!i$cSf%3KB-~ltC`A0{V&H!{(l#mSK?x+@ZXuVDPn))#(v`e1@6E9T5mPEG8nS3 zLAfeX(LT3pEZFe{NQc}XKL#tpWr0=Q?1oB~jHMFFV2bRFWy}o5jFP3u zOxD2|V;^B`)7ZxHdwP4n-}kNW&p&3K$6xp5{@kDCx~^LwuoyuR`dHVkPJi97ZrnOLlI))dn2uM8I zMmE^FH`36DOJd768N0F!8h*vTx4`@}5u(!9Rug~>ah9@ zzl(W+Htd_7{r{F~{}-ZR{Zsg#%BOY3jiOam6fbmkZ81MG^3}(g#Y=Ik&)J|i{?>eP z7uQAcXz|RJT;0}OtDI7Y;JbV62xJNjTt;xnUzmB{+bL8r*!wZ?DOPyAIzGeIa~`o6 zGm~)&6w(u>6ZO1%#UnmfJ4KE}`8~*^%f&m#&X*eQxT-dfD6MMw5Q~@vA5eV>AFL}a z%0MC*MhR+JF&|=$+F?#5$=u$~Rs88_UQAO~0d=p}DyKju6Xb$mJIVE5p)EvCwr7+; zk;EwLV1LcP1oaOE=E-HZvR77#kuO(fZ~FB`_~g>nNyRJ0)6^#K_G}^ut7)F-7{0$g zS9ZyLkW6h1!-tl4y@QlYb2q%I-0jA~{Wi@*Q@i-Qq zq;Y6jj}xbsjc7Pk2ygNPu?79K>9y}e!CTXR$!_)8o39reAZCxl4=V^fAgBZzujL_K z(eY6T?fHrdC!$C>;R=c#;WYZ6lv?*i3jBX87{B48D!hC6f9|0B_ULU&r*can`a#Uw z*uvfC-M$WfC7n(+k%-P7c&;_+eORR^>5umphF|01V+kkdhMygY!K%Eq9T?Coy(Qi@ zV2!App{r$ZEo2mNqC06xO@@y8qzae zx@%01`FN*-7qL_OiHPoQeRu~H&#*s}*wU*+3>l_S)pZkLlM>8(*cJB`OE9XuuE4pp zda}pFtT9*t=s70xulGa?C*XwbiBV4QU^AGa+F*z`_?)VZjWJ%RBUP!)SZu99;KP?P z=9X1E60Z;E;+)st!c}!^Z=yvX*hDGmEIh+J$p|Cs#@?p0Dd4T2 zT?e+xAA&K^17)m6bL-3}X|YCe?e&&P*`o}JBduYKjz9}`@eFv`l7@*j^a3cic5k z?T~2;WyLIbprcLJ6Qn1pBD2unnQ|ER>|cTvgI6d_ucxu7!UPhSCwFBet0O9XGkU)= zWyPkJ^A$d*zILg3(LFpLv+yO9oKZbZUJXMvb^5@|$nnJjB}8*wd#&!waj0+SxPJ$1 zDocKtXDeZhkFjC2xaM0r)T2hi2}5_WxS|iw-R4FeRIfw1#uGD^;aQ!l8W_KB zSO9CuCK&ckbK)Ye$83UXtOJVZ*#^>tsBjP{>Y@&gHUk5xy8?{{S@(QqIbwpmNQ#8Jw-HiW&?FS-sxgA()i;))La^V7GEr^nHEgvjLyh>C6Y)L+S4mBehvYAzw22 zX)(5!rDE?+)M{!`jV-oaOk69V7G(($Q#hYqsr-deN0C^;r7!B(=gp6~Syh-^m02$@vOAW5q*Z%}&bTI)ZSWinnuo}b!P!rR!DTeGQi zxaa-tW0{9^u4PZZUwP~Tws@~JJ9kQO(4k;#<$7&k++v4)@cBV=M>eH2KuiW-26(Yd z`UNa>o|~;y%ZcIW{YF)xND5Zg;p4obSS0E*)v#S~wYaP&enVZNVsYdb9_6x$C0vQ_ z?X1RLbqHIq9f$UD7w`H#TH8)^aMew`be|}_%ToWT^|oaZVZoO)5QsBMH~|&O`IFWCu0+pLq3=!giGG_; z?JGVYT>Z4K+t8_5r=!7ldTu2-#QWpdU4OyKYKj|4XTw+CHu-{N81ilx5B7Lp5PCp} z+;zOsL$(pr8!k;gX>!2DHn~?t%uca>o4>+JvG1CW>l>m_t||VBo12G;5YrZrq-Tpt zQ>eDH#pz1;YiNV!ui@3#vJIxcMi6L`=xWbJA(r9B%JrjCyV0JymdB=uPco64AC1eX zvVqv1ygq_nyCkNOa@@MVV*PQYCF){GKPoTP_p&|9X1(Mafk~knw`$`F|$NE=MgnD)DXqqVDzC z9>-26G-_ODZd$;JX2DA*c*Mx#lWnU5p_opM`Nd}+%uZD)^X3F2w5oCPXLU#zG z1gr3Gb(5W07Xr$Jjd5xt>t&}FA|1AZ!-JmhTCl4s_Kh}7li=f?GR^%N;maGrv<7FA zC)~?tx5zMc02?1>89|i! zoR376#=N!bgk8eD`aNhP?~jDRNSGblXrN<$wkEZ01Xqq6${7L**0x4^2zpa9Dzp1u z<4_R-d`RWZ*j8yTr!k}c%eO&me8WMu(^bmH?Z)fOn>wZ`zh)xZ*(PS0oEAq)M0#uw zjrSJZ+yAk~oJwg8M}IAlDxA%;V`BE6~~L ztHmr*>7N!?=SyRG#jPv6ZQDD>DkAW}Kk;^1@*7%IaTUg&0VNG{hEurOEclC7Tb-!G zDi1iw2OtFQT9yYbu=+E>h4k3r__jTacqYsBLooP*IIY-!8+y)LoMy0CKm+mHB_9U$ zDa-`;+b;Zw7wLgOK)+o+r z;iv6HdnecX3P_hCH!uY|I~e#KMR3}nKDJeCEvI4BZobN%p2v;bH-0ovt&=K9T9&>N z|9((+w(J2UOaT|)Smq&2QK2H#r$Hg8$>k(Q!by~KROKutDs^R6 z=~2(k;3di@_oE+1@ZQuO-<8mIG^&@iX*BDOHD5mFPqKQ9?ls_KH(@6Wj)87UvP_=W z8ij_I#Nls+225!g0)w5?Bpsk5T`&?FI3j#s@E!hAPkGa%lD$?>MEUYx{oSoD-kaLm zH=}2XOLmUgh16UxV&v<3E1A7?qcj*2wAXj6QVl%rlT7AiE*-hIBRisEsjfk4SpYvF zSV^(Dwqp8%ek!PU8-q8~Xv$x__hxql4pBD}K46@na&uD+PYx@}S!& zzO@t!rbKslR&P0^sKJw>*9VRJS}!=@7e`);5Ij0mScA=PzD{VgHP;WN@uq{5LWIzq zklnvmzk{=+v94S4)8;w&YUk0%VBIo8HH!NEUTcg}G^s7qN zEk7BGH`_>eF$(CucW$%XFBUw$+p@{?L#x)CSw6MSW`mRiP>&7j8m!T-UuV&GGct%79(>*|kPxJ9M)Qj`w<;IDY$cdCkGTI~ zsZXo_5*c5)k7FEL?gcqhxGqyeNc@^@FcO5H2?#tU>%qJOqJ1PAjBTEr^4be8=?W5Y z4am`Gk+NcYglyVv=$K-S-rO5LChJ#1%e{AziJp7OnTzj{U3b5vi5iLV&Gf947};zX z*uX;m#nwi(#oQmfMO9%bxcF5O`j}@ZUQEq`eJl0XMVh%sny9%!r>O4lR0V58nQH~L zG8fpeyfE|=J1z4yY98;p$g`ff{_VteGRLdh;0t)Y->XK17TFtT!i6i&MkK=HZF}w8 zQ1M~B14$fNOsjJR!LD?UlVjBD>P2roNOO9|jnQAa@E=p`iCyGRY4pgRS(8IQ=L?g= z*B;b*Jyj4)J|20CS6C9Cc3Klr40o|asM((5)5IN>&eaS|@Kh)iE89cT_}7mkj_|~R z(U~?1O03P-9;`uitwl83yc=eMo~iE)Wx(- zx8ol-Y>Y#JL+VX@1ys$OARe@_&V9bRaBdjyN zPW&&I57>MMtFs5Q!?lJK;aSME>U8=#X5AxN^37^Y*$_4!tcCX#% z*dB+#F2iNcxxcGW2|n;zOD2-w5O*Fb@QPF9cZb1Y9&%QuKPlh}o6E`GRW|NmPIDrj z2Gq!F3IgSd-Fgx945U&m(}iD#Mk#4+w><{~tDB|@2;5EFasu}^KA~A`teF#UIe5!p z2}axF#sYMxaA&ZqBDq29&=^tp33}na&Ty--H1}cQ>B##9$hOlIl2d?Tq;jnY2CLA<|rV%JV*cV|7=C{(Q zp`Bv863@BoBSDmcjTC?Mk`JPR-v2$kjVh1n=KdJzMo!F{O#gTc?P+-L1w@}oprxO2 zmdEUCyufV64^KIUkJOyEDg!YF0=UhctmH*yPe~4gi(nP89>WH&Obm&o*27*y1hYBK zV?zUa4((M@CKKn%@M)YCo4lt>R`DU0{C6(SuBO;4rFp#`el=t0D9lP~)K`5-`c%aw zfxeHubtLEw&>y(ZFJnGU^ZP1=WxW#86fgy2lQ`ilL(l`b@}s*i7JK*JowbBhLS(}? z22W+et+5-rL+DIPJV zMt>EKvVmNArQ<)NP5g)9&0KHAid5+{5@4?%hqobU@t^@e?^ewGr?u_2Hsf4kP3FCBQIWD0TA?r;ylr~`u9JP{p z*w)?Ba2ak#HyUr3JH@=RwHhA# zD%iJfStVYzy5!U2yG2sF9RC4&t23NZ8V{t18>aD%K$6j{R&I=Xo4GhN9*m3bWo{(3 zXBONGeb#Np4?V7UIo|l5c?;pm@IBoX{oiGp*q4i;k074b!<-xZ3%4N45nJ{MX*avi zo#NK5U0^jB7<`%~oXK^Vfldk^{<=*fVirxw`xse0%KQU4c5kWV-!=IL-KGjn?n)_s zhb`*WQu`xfPpw$ReARn{9c)uCVI8Va_i+pEuX4ZvOd_g!4*CdV`_O{Repy3(FMpWt4{Hxk_`rrR$<+%h|D0} z?nuVL=DYJ_YK{WFP`T0sRLl!2v3ML*ptV@+szNViOxyVvqFj^r0@^9R<#E>0xNG)K zzqL-+|0?+G%K_#)@~k^!R-9{JzxhQil+>l2Q@~j+tZy?A$Tm8p3)b_mXMA`{$dtR9 zXjEQ~ZVeNlp1m_7Z(b<)={-Q?+By4ZYLiTA8NSQXyJy-)$w5aRggF6y?_|7M+>Cpi zsdIDC@zfaqyFMjapdeKEXNPiXFZ`G+{9@WkJEp56rkOkAMWkHw2skU5-P7cgJbd+Q z{8M7J`MfdgaX9ZtxFFtWTt|cTw52bLrkGVa5;ckQSqH9iZKXB;y{R2Pyn>&}-u4nD zB)Db@+a(>5jb2W+$h5I955B4u&ac7GNXLtDm#C1AB~>}Jtg+@RM0ZBu zoP9grSAA*d=I&HfTC9)GMy>IWIr!+oSKDute+1_(O;0Csrt!&^=}YE$FmMyx^Ft#h z4x*o`0dE%+wC_u@aI_@ErlZ~EwkG&h!8Wsd06I~C6f5UU$)1BLRtm3sK6Fq4Rav(k zq#s+pGq)`q$88ugutqeoq;tX?8Qxfzz*s7x9#c=Yv;0*0;y0O5H%zrnH@wpjWI+m% z&~xAJQZNht>I`&-ULHS3ZD`I}i1E!b=v;CCo0zG3t5S`a4vv`4w1OFYMfe%I;{XbU z!;Ov}p!z){&s5?8+${4?@sLJ<7Q_f`hq2DE|C-_zdsgn&O!pMJ#JtUFVLjK4fYeN{ zy;bfw<)kJ5(A($}l`qpvc)qPikmNYEc3r-uuqrmP_<&7S)xLEd^d=xekP!1g`{6UY z;EP;Jj)Q0{13R9h_la7iccyZje^IB@V9^~rRbBQnBr21PF+wbVx)-F)D8i4CL!!Lc zJ%>plt7B|G?wUmaqmBQC0$v~AkZ zE{{r*e*|f%ZM^l|KSsJ+M30rxirKP1bKO9Ml}Ry{H&MV!w9Rub!lAL}4yh?bF;?A8 z@B!2h^4mMx#HV{QTvPUqhOGrI);-OPA?c$;mU+(aDqakzfckhBoWw{QrqFIR&&Q94 zKD(eka4y-UHqOq>hJs&!HcoSyj_Prh*AEcSVzdwZLRc8RG+Pko2zK#;Zv?LpU)c$K z{1_De`odaoMYr#YW=vNFqp@ozx7o@lG%!=64?~oUvCi^-wvxYZBps+w3vtI=2lje_ z+ycrP`i9k!BRuHj4N$<`b5)<3ASsvN0`&32Pl-tj?KWTKE6g2p-gx_!_EuUP5X3HHDK4wqW8bb4F=gl?zYQQbWMd(||s(YqgEp|G|rjx&;6hlanbZ(;TttzmY>JW*M^ zS?v^MWb**5XyS@w8)bjrbQtb-dfW){AEOdwp0`dD~ZUXftvB3H~UOVKV;7J)^BO3qCT|z?ddm=?wk56 zGeGPaP9Sp?ASYVVU_%T;^1eZRSd}^|pC_t~W~^l2)k$5{BLhPt;eY19tpx+`S3K0G zx2!~haE*(>NUV2W-S**%gzPDc78+Qdy$SJ!Dc03DmcG_Ex*kf}aD)axbbS1g$SPkW zZYG_Lki7>&1_az>KdoAn8>thXL-RIbrb@{A49fM8QX1Z z+0`(R*;206d!=tUAw{^%taQ_=N()3fDroB_`267PRld~1%_{_myFg56*>%a3iTwzy zwolwg0{H3yqU^9+7yd*u`40!t9nW!BYM^$^;{dqpth{e;h&&7AR1002MKTJZksCo5t75Plyf3zusaVB!$2^KRw*V-suY`fEq&<1PHD;7NnfV?CFcj_=gy(t3}! zlLvIwEBti+y;1HjUU$q{mOl35uJJjMhnf8m&OPgcbyZQj&Q@L|a(J=k=07I|6UtrHNjo2J8iMq=M}j`0_PltU?@y)b!DP-CUW7jB z4ApybbJ;V;_r>wz<9FxntB+Wq_VuhTq%V6t-HaA8J1r@QI|vG7IG%Yl?w#RL8Fr+?l>j(NcU_ zishHEk(@75H-|BvgWwK(eJz$3MyPSLgv^A+*Sc#?N6 zT#{~!$(ZA6x{VP|jkt$blm>#rxtZ{y!1-2hqtD)P{dzUV?5elSQJnH~1`XSy=(lQ1 zd|ay&Kvr1n<3FyVeWvmL_|kBRd%Wd5>F`9Lf<`1Ki8iz_+jjd{cpH8w(%;eIr@q2> zyc#;T;&l~&94GBr(tcqtURJMe^B2|S4h@ek@wK?OQ)!dd*2;Rgrr){ONUH;Vq(hZDAVA%n=jMB{inc{1@1B=wNh8O z{leAY(KV)Cz{ROPThYP}nOyc~TkEYCB;sd>N$V`(Hv#4Oft*nMCKxNOZeZWI8cd^F zu;li_!>&Z?ESw}BPYP>8=-r=g4}T@WVIFv@#>P$@4=j_2UeNK1i0j#Y*0UxNlj#{g zb-X^gKX=tH8S@aM@qHuxxPkV(EnPPGZm|2`7hB68-nVUT72Wif07>>#?97N~+KXa6 zH!U?UK~OjF+B{HuwHmrDyR{E%8-JnQXt zGVeiKS7;Pb#;XXl*V*z_8Tvz$ifyo}SNCcctEB(b9_zKdRh?#50`FFTAGjc00n_TK z%1XgMd%vu0;qy*e8I=Yw>MTE{n5b|b@*;hH+BjgVrB<~A`%n?LO15l;*4O#d>tWMjZ+UwM<%*vMV!VFtD z$T!tU-BlY!n?#nk4XCw!ebpyS9`6XGh|}lOH0$Tfn?ugam}4GTu-~z*?I$V&~+^< zNk+X;7lbXR&UJqYRPyd~&wRWjSNmXcqy|fbBX+KbtW>v4GYj^0ns}+#&pRHdb;okb zcCwLjli{<2Bxh{ydK6X}tW@uNUlQdVJU#)z-)L+q4ONS7838A%=q5&1+GMq`@7#G^7a4gvpBHmX1!z~- z{mlphxuDOq-N0wvb@BtZ5=6sLdv8?O=)}!Eo+JcNUye5;XA(vEcfp#1qfp-kb=%%m|UzG2)M;3+;lP~i&Nb7jf`Mke05pUGXXHOYY7xRo;LS#GUW$k%-BYuj7rdHl5;dIR$ca(g7&W^S_{iyKsF?gqahL>z7M-yREpdJ;IcBRSAL z@|`Ibu`bZt#*jE+hFg0^y&U~7mhdxNl0gsn&}p==h51JIg3NDUBdl@S3eT%(-tV;g z4mbI(D9|ouXn?I$byC)9 zQ=mi?>~#Q%DqMYWl?QFIh9&L^v$n@AD$E8&vdY=s$sVQ}J)WN_e4A?W*|k5}k`4W{ z{bBc3JtC7Q0vR>SsJn_+Y8o{ELtR`ywAG0J5t6r(*S0^p{`l;^oJIl>0)-(5w7rz=c89IDzoDjq8;DAo+skv9@^RxZ=w0| zx^K#Cwt8mWTx7aV2p_qWa}&xwf{ zncPrP`7z9HkWLx?`2?D2W6cB))i#ouwUgz zaG98hb` zEuE2dmil0#BO~knR2$=L=lur#@BaDp0<4o_^mN$> z9!u-?-QxSV4m!`OWSq784G~%eI8YR_zb=o9G(@-L;GZXUEM*{E(F zc-#b?T&!HTYe0~ChwCC#XT3yo{Y&2Q)Ewg*Jmy0i_JfLgkYBc}@6yPdwkPB(6dGRD zEn1LiF5^e;O8J#y9+RLSXlt(;L`pe~t2>2 z`}F(2aa;1=ar0iIlzjv}ft#-UFdCWOx&dAf zL_#W~?aI{?YEKD^M>Z*Yfv=pB6igXJxV%#}!feYQ1cpgFR7`<)q@AI|Y(MO5=h~F+ zpRaM(UKo5>T_}2UPME!vJT<+1{!y)+DlvqCw+D^* zqF(Z1$amwf=6)~nhwvdT(!HL#`!=6{b_JczZ}+JbTWe`?fIV8yXL0JKTBCtsaG9r zt)H%U&Yrm7B5qrOq>GH-!}^@!zWk&lg{q0cWCj?4lymltPfF_rR3GdC5yv-?ETiGh zou{SFd^6WeK@(~mfXy8=Vnq`wXx%k+A^*YNC=U3(`Vk64Q4&AythbW!Q7->u$^Y#S zN3SSupm*o#&NlGyLpa~#q40^e_0V#(b>m;C`LxcYg&=p|6AlamBIJH4v{?R%_vO z!miPc(jK!-FQ*`odk+N!a4%oPPKi!w-(ZgX$|<$paSqJ_@(RldFmL4}MOBcraWl2< zMo$P*-VTt`F)XgC0@0CV8X;Iy?4EJkR29S8>oZnb7p{t;sb3*yH1O1CL-mF`=c4`3 z5ZAPFj_XUWxrk^o=BZ^MwwVr}L2E)RTn;f>b(X`#F81a6xAGBk^IOBi;R_(?sjLf$ zxX|~!AsXN4Id&@LAU=Lh=U;BaPn@*Gnebl8@Px4tS6#N`V?O!Vh5>Lxbj4=YNh(j4 zBKLiy_ZDpw?0a<=LE8F%o2t#a4nGx0zIh)~bhu6~J4K(oL4Z0q5FpSCN%e{en)W$M z+IL}A{>q^4^#wf?G_8<1sA&o*XXuB&_7EGlQYq(W+Es$L9ugemG-b;AQ4;;3l5v$8 zaVJSPntjT_MR=WmRULD2Wpr}2=`%<5W(>KH4Tiwy3-UXz)>ljj|2`))(vvVt+%r^} zR_fX1P;jZLVE-S5bsccUKD*{l7er{FS#w8F)19H7iU$0P%pS-c(vxievsR8kYB;!P zK2&BlL_%-2AO^osXp{p{G*V0Xb5&3=>GLKXkQkaB=gKA%9Ab;0@$Ha9mhFG_Kl7Y9 zB~?0IR)Cx2xEch$L2*sjp>2~Cuo(HbK zv{Bd)68k@4?%%)ft7dJQSN-q^AQC4_@-tq>we3D36gpXP&PLUkl}hx98I{2KKnGPV z>&UZ~u|H7oc zPC`+WI&qyUI^YGbFkEvhkouJ?g?<@8}qvD(cIpndj;P@ zZEkM2A)eM04eH$;!rjklnJ(bBSnY)7*K45W`oh!6QBWJIOPE82HmWJK zbL}t2sS@{JD8f+OtE{=4;~vl;Mxel`0ni-5*<@2Ac*oBJmLY1{mskDhrWyTAV(|OB zo#R2ESK(5HgC0@^I??-+OL4&524VD>3Zc4u-62tYwk0~wR7_}M_{*DOHByUM+h*_O zMxly1{$=h@AbtNDfzH@&2LJf#tm$T&BbVpbtaelgQ zoF&>TAt^^RV#+8ZG-#u8Rc-p?h>@~)=8WuUWz3wVao zWD_xQ@K38LYS^mjkiV6Q0W&wdg61My6UM@tT9r3$I@Tty0X`Gb`oEne2T=NtP*9+N zPpJP4;vbdS;O=>Pw61mV@pUxXiOD z%3ujp>(k|)Sz{!i)>kGL**FM}5wAJ6Vx6st1}z1do>FU;2oC%KeyYmM$EW;2KP%Y|plX=cRQR1H*_I?=@@1i_yt9-TeXnPR4^2?mzWm*MzfG59P7 znX182cM4u|oGr9`f~b!_77f3(<0YcP2`o|YNjJES2!Q&_FBB-fd|r!X>C74Sy;7r8 za7vm5mM=2%re(0x`1m{|5TzN9Xu^7-Zsl_@ipbRGm&aM-zS!<%i_7m9U796J&S#qi zYxvwU=+j`qz!qRs@* z=G0BZgqpX@B!wIGH&u>Q#R@h{a+(%pe*+;za+$6kQU2=^=&kODA5ro7rGlGU{o}Je zQChKpqeIIyCpGFOBb6mCQ&!?+xvAmDCTL!Apf|7}{mQP+PV`2UI#D zeaLoxW>Q>{bBf`R)g80+;uODV=Nq! z$4D1J?sk~Mh-IUAQa+jFwgKEP<&G(A&@u`|7PyvoPf{`ZTUtOc9wGPA77vp(INzp* zCBc#pJsE(yJXXSv67nb4J50E9905x0V8{-qqixVF1A6~p1fxLzM&s0W&749Kc`V{Ty9?d~w0!b!r(b`}9KZ1-ZaDo!s<@B-)M?>5gw+Emzitok zhxJS@O$AwAEB*a?(!Qb0nTKml?2X|SXE!gADuj}Pfs;z_71lzdtd-kkL7zSe%^DWn z-ny1@K9lGyfbAocyWEzt8||=>_$2E=brz|ql7Qy*$+IGM&Lc39xmB*cnVy1v_zsxm zeZ4V;A1)KjW@t6Z|&jl+Is*tR0=)5n{Mr;slCt{ z&S>;=m5hY&*A^wgkuLyE*^n;k5p!p|xATxPc#Y0kFoF$xcl&PG@N~?iT7ozr3!Ia- zYd@EG7tM+mUP8;)*e(EJb5^WP502Bu|C)ViBTd26@7$UWdhNJRKF;o5=LQlcx^a|| zcIk_kXp{FrryL9loOP8Z)4bR(?s&_b9GT(e`c56y1N}!KLAazV*n>nRWM*t`4`<<~ zlj=Daz3G*^-VTwbq-iP#6i`kN6U=N2ZC%c+2p}mB)yK^StK@BjbT(^hP}ejXM!j4q zJleNh{w-sV)5K4EY0vQCArrTsy6?kx>+`~;^ZVSgnJ4B@HwvkLZpw=+ZCU<6gKw6(Z)yR~5u7Htdu8S}A#V6U6Z!B2UZ0oY-qQE#uFlkhcA$PV5LB z*L3ohi;hi^u}Xnfd(G0jFqy1Ge-N|MfocH_9(RnLGIWS#c|KbK(L}Azx1= zMWrP?NdsY{u2MX041BuqVb7gUC%WmD7el|6{q78{0slt8wvn2+AqFQ5l}xdxsQpX+ z7k%&=X#rQMvoPC{qD$c-0X2>Ir2zp>o43HT$Js^JFaO0rJy$_L2N7$OOO#zoaR8?e z=h1DVl+{+x^)YF@#snC$j7Isr&W;3M#%6WGi-YyH8(#94_sEwV=`Ti04P0>1*Zm;x znfOL6c1YCg~Uos zMYLEcLTn3bLqm@>J{;7YRnGsOT7iD2HUf^*@SS@&MNV>vIc@> z(k570-Cgu1ioar`*mT7X_kNZ=ylRu zVlqj>vz6DTZb)GRq={0$0m}w=XC2mct;-c>BO6ZhvN{3pvejTn+H_;yH2=D<7uUSy z+gx6vhq8J;V*8h+Ll<{4ehPaH?-C>T{v<{lZ4GeU&E*0!3!uSmefGB!$AUKDCSRUF zwWODXp0y(mv+0TJsq>V#c2Ut3nIr4n%uAErS2PYK+rGe`@I*+d_Z>Uke>6}#c0}QQ zQ`+OzHr=4nEbRN`EMjk$0YX%nM;`imA`rz;6dI?1rwW`vi+@xpl`}>H_0=~e2;Z{v z_bv3Z6|{R}=t_?J)r4TxK(3u9pe18iXUX28^Kj=5(c^FXDS$3@u!T^2vi5ZmKyh|g z4rb2{+|}{|AO*@nd6aW|}8@NH-1iHouE_97Oz z^XNGvTuZ;!)*qa|p+VzzXA$(_DjvU>>KS7VpN&OV%?i2UzKL0smm%JRze|Oa* z)D)%~@0<gPWd6mj8>s@E9oYN7P3GV9(+*7)MOXrU zYT&~iFzFjcAZPR8TG9ufJM`wBi2bI8=zUAW9$L&E=$*XHiMmjlPD0m4V%Wco?o;Pv z8m89})+l?go<~gm;RlH0jR`Gj@U^(PCHwHzBZp7s;OI3OVwzsy1BK)eq1L^KB#dvmL8gip8yG9M$wHG*r7VobRk>;$&dUk8W6J1*KS0adL$A4Wq^j>%CN5FhUc09hj%>Li!_f=yfwq{y)V%TGoTqQ01jEz{X zXP8A-N`HecsPw2(5ZBiFx9WNdy%(PTwfm{^p{k1P(aWS*HeDo0^Uh-Ena_18`4;Oz<^_tm`T=w$u5tnINEDG(|r?EM!_M+j`oHebz?-^#UDW z)6fanrX*jqYgww_HwpfWP0ATyxp*YJ&cvH+x?XP4mNqdUMl3w8UA@n#}k8b9v;9T(yZ! zr;l?(-@@M3!1~;i{?;Yl_YUv>#R$kS9!C8?LC|QT^_;X9W(%O9Y!_bmommdgwcu&; z$SJQ_NP${y@rv0itDwgLa*6gBEj%QuGMuz>YC?+Im4O?oyegoFc#u_vHUr%GSWb2in{8d>rYat~CAE z#>EjbTLpESS$*@a&T5U%m+dDDNkW%M!mxl#nRI-}LaUyij@_hfvxAt(KMHacuCYsY zV)-aPd`dX+bv!R&OOs{NKniTMzn0jJ^r)a*W$M!g)GdjuwGcL$?s))v^U*jVT#@IE z{WI>&`zzt}Xz`824J;DC>^?>^3fX=1zvzAc)bMfrG~%bjZA7i!ZcX<_DGF%(+IYe9 z>H(V!U0v|d0m}jKqe8u?8`3fat7*+7wF)Jf@}*@L(Yg{np)s?ViIOO1)uPw!TN|FP z^XA2Mm-XjXip@H1?_Qcs(YeXodbNT}qC`%A zKpykRp)^0BF4P>p*v_?;62EkDD)B`^s&!%2v@N)(A8Ox8-8}v<0;GYqslDmP^hrMp z0sMmC5dFEV>OV4}H#?Vy$RU(86VY(fn@ep z@)%b=w(6FBBAxL|%mq6JX;q$Di~NXF^EVP* zCNfKmZtZ`{s#9jQltl8>*XrB635A?6p=!B_AP^&cA!eRxKH*q6U01*R2cJG|X@HcD zoDTt@S(@fnR|vJvMI8KPDfyl5*B^27ITCU5r+)p&oyekRJtnP_tC%-C(NU?JgE{V( zZ^+D8{XTXss>9J};$53WwfpR4aH-2!m16Wnjq+OF3$d#nd9l`5dy9A%@*eusmXQ*; znFOBfYq)AUbmW*P>2bbG1uuSasA2Ji)a-j+IK*YP7o>rE_0lUKixI0*wP!@B`R&T` z;(JOXSNv?uXwC$pXLUVTq{3M~^7-B}|EN0rd?(ur&7=m(5@(4G!#KL{uh zSBW-Y);xp!b6PX?cn5y{&^b`O;YExog<-f+Vd*ZWKPL|8w@=G)46w2TpkR+KrLMtX z7e5Wfs`FVn@1`$I@j{#9kxsi;)UN{7xvai5>oi@f(P0{G&eNEvPZ-#6Y+HO}&_5oL zoBa{46TR40MIOoNIMgT^X>yK39^_T0u>X$m;nWTKs8Xn?RYy0UozEeybJJpxW1A%n zy8o&u`PO?H@gAa|q#ubwe5P29!vA$Y_)*68|C*(L19Rlo`jwyby$xT6ZSc`R)tXZv zy(O3A`PlUx(TewqC6k+O4jU_9x1!hzc!k;^n(*Q$#c~Z0NM7z&k}gZ)WnvKl zFIZYtl-8CLWH}56uk_7l(V9F><7`n=RkXQKK@S<+QYnJeSGXyh!p*E&vXz!~OMVIY ztn%`lm6(nwV8Qn$Vx@SsuvmA~?FOI+p!s}k&AqGq+Mr{lzTaH|SsTd?jxd2dpFTd- zo?&9?@8sVRRe2(_Wy-kmCUeK31sZeBR#o>V6S(IKnl=|21MoQdV*^E81ZDm?{Z+kP zbjA{eF(k~O7jIiOPimkFW1eKsb>oDb37St?JD~wNE8Tk$VXF78@NJb8ew$G-xGS&U zo5gAh#BB>d=vW>;Y|gWZmw&X}@Ft@?u~ZGivDi%up+tX)9QIfT(*8AEpMwg(2N;QQ zubA6<_?uIg!-Ec_DT|MD$p=`>ySiIf7MZ+lrad`sM}YsLh&#-W`iCmnftoF2 z9~gOb5kTdw5NwOR8`$b3WWTF1X0(y{|B-c`VNGpqw??;Y*&+feK@mi7TfhWFdJz;w zwgnLBB_JTZMhGF0fQ=e~ts+Q`qV!G(5K2%WASHkrOYpyxx^Newi{d_xj>*}R*w|*2^ZFl|tqP(*8s^@1h|LfxqX6%nxHPs5UbXUhT zppxr49A?Bp+lAH*@@q7Te9&fQ{TDOuz1}hx+?>D|J5^_9BLeckEfC{w6H^S3W%!^6 zyBhqOp41I5Lpkpi&Xqkm?DDv*yhrEIH-a8YS9s1ULgiiTTh$5$a-aZmP#t^#B#Gn8 zqMqILtGrw6xrF!!^C1&02AnIddao09D9hAL4+fl@uHdX;~)?ep7%$CJjuRk^sqHg-_B;K-n&*V-V-t-!5^;AvxJxdzI`aBW7&O5>UL zvPuO$k+NoCx>!R0-N?DG_ur|dPNQ`FM=(+>afC+%%MU48lhLkA6x6E`T{=l~_jD9w zYUVDC>H*&{ZEy?K|btU|K07AesgCN>$l+e>?F;T_k+{B zx^=?Dyg0oRPI3_{bZENVvpWC z7}Ve>WNlU~W*jGhs||F(9&B#ASOsLIqExqa3>76WUyZBqNJD%1Oz7AR+PtN#VSg2k$1b!hw_EY0)W4js5mOdb$zT5z?tbP>+s#e^oQU!Me2yk*Qex{z*SRW`OYB+tcT$C!^TI; z`rwhXoG)S-!yJbd3^&1NXk!-HM56RPh0Uc5s5@BBiV?kkR_q&mk$#@Jg1aJz z`c+ucpK8^_*z{Sg=?9f2oY1wMT)7e^)5?0sDIS^uL)9UBJ^gSkDg>TY0W-qH4iDGJ%eoHmxb7{7>T3 zSmy->{Vx6x$S)8Q*#IZsSUc7nm{7v?lyrxeKoYSS?*jKY37rH>wv0JKwLNg_&Wi5L zbI~rPQkN!%_IcTaDJKrWfPEtzCVV<<0x#}_TNymY6oyEc>!iHE$keI1cAQMc97dv(p zAt8eN5+_ucnbNGbm(=j3?L8b(EwrRn1N~y^etI6MeXDH6u<>NqXLi;48(s{{qAaDt z1&HA_=m=c_$>1Vd`*cu+U*0%R&RYU^%9+}fx^F-ac$MWMqs1&(lqybHuKApb0$xnD zAxT=8GCAhtsAFf_id>@C35ApL)U$A&aMfAI_~;eaPPU_GgE3=7?0Dx6aF)%%2h!B)%{oNJ?0{~T4YJgg%)zt! zb-nHq-&7x4d9EGNbYit^R=Zxw*JQx|$3i5!Z($7XSkj)1Zdl76P<-F^Q=_o{sjtjp z=hV8^zHd_Bcw7H#TLi4*2Y+iaHw+%cZZqO{ZubC;gOqBM-FFlTO);h77XeR6UrGh6 zR)$v6qGXJ7@TC{LPpVsCTKVxza_0N3kSn4OFjt%`z_yRPq)%+-_f|7j-s7blxY^Ia z&a_arN6BAkn-K7wMoWPnt@ii~H8-V8z z25&91lrQhwus!9+xeCDDFAT0P+@=(3MdQkXd~I4G4Z107V0kx~lIbAL*MM+k9ah}6AgXxshc?J{uKaA9JL`rN9 z8a?|r{qqpD=+&j*lXQ*#RA{1e&?^GvgM<{Fy#$R6NuS|naa_WV>%(N$-6Aj@gbib{ zJb^zqKNGc??;iSFnCa}-Yk9aUBkwMwHmFg?k@u%GT5L~BCxzI4`JyzmB~d}oD*JB1 z>1IC!_fLmZI3{PAO?Wn?Z)OdR+?cRW=#|8uR4v4#uHq5u!HjpLU|~hI^}jsvKw&-( zQxV&QT{Q8~nD_6O`bX+wyB~fYh5qaF(eBfah?R(Sk99^<5iZ>@<{1zdq1W{Kp8w7Axoy;l6*;?a;MTe-v1`L&cYP4qRz`F3tLYk6?>A2j;+;ON!iQT#%zJ%&CSfYT z-@b@7(lZ4ppg#6#)2#1wHT#~l(m`>F&uPx3)P9&K5_c?(^vT{1 zKwzf5q=O4Vx^WZMstz%!gQL#=z%?xwlcavzcQzrk-Sl~5n36ONV1v#_qcb{WJyJ|q zVISN>GVTeK$R!#KOip~g_K3o^%<34Gdi_>{CjL+wunO&n3bhZ(a{yZ8l{^U_$I^nh z51M&@3^6s^IFCcI>SsYHJFK{9oxFtjUO-vEMS}Oa@6O+H64TCl9NHcLff;6XQL81| zmESC+Xv6OCA~n*{_}Ng1n>c^{jgnysCza~4)bROz<0`R_*Ysqz(&)6$_+feAKa?TI z8zp)cKDsXjR{fjFOpMX2#>a2Z2DR6KZfLYoA9J_t3E>AuCx13!{AA~;v{lt+%uX@7 z$96k(+Msp0h`6xlQO%>2t=|+ue4~G^=l*`Ru=vrmUZjKC5QYbHzaJXC-7CE7`*TWN z@sCw8jq|PP`|vtcBG}m`%`@ZL#XHq9%`5}K64#P2a+qydv-j2RS?iq&GlQCOTx#go z)=%J7)zZBFZ@MVVu5m*bdLYD}H^remad*K^(XCFHq+hWgR#qwv%#^cxsPlq zTA_SSz!8(Jx}>a%J@b;SVy}C1dfYU_w>Bi7y%^rf2F7)nO)>7vTe`d?$dlZP2>7st z1bD7S_cbG0&Nsy?4hA4-4gq7-t?E1Ka*By9)F-g*Aib%U>6AkEw6EiL2`9y00L|1A zN|G_0BAi4S_vxI>&`pn|+0OS~hI1df(Z75N2L>5al?vZCI1KcHyQmgsq(d+IOS-{u z6|3&S5zWXo@By|e<|C51H2j7aB^D(0jr%02*BO9UnzCqZoyL*4VW<09lBg*|g9XhRU`DCA^=)KVGE~ojX$eCEA z&=d6_E3MaedJX!%T<-&acS9W#q}XIY{H9=?tj=z0Z6Ez*N%tWc6mZWFqre36&yy7q2e7ZIhSAPFBf3Lnk5$=xVi@@^p zL&o%X3wBBJt;{NRh0qA8)+t>}rJ@X!3%L(nJpZgTDG-?fY^zGHm>kH$2fwaTeD{_Aj!izzgIE zGxONPB}1;oE4|x&%$?UhiTcO7*O&m0x*kB>b*2jnovSo|(jV)5=i0aKwYjkK{jT#} z&Eqgo8YTnX2|@)LV>$|Q8&EI5&YfSuwT$Ns%o)j|51WQguT2f?QhPR~Z*HsvmJrYO>&@@t*oZpf8mErvQRDp;DQQ9HGWl8hlN62i z+&=X|!CjG;feNJR`{{q?fS9;g6miyKJ(NluW6mZ3@@9D3etC7mX=m-+1+|4Q6{?7Z zkaKOaewFYmH3LPnCx^o=nRFOBe$^PSTMnH_+eREVNE*Anam@wrcYdtzO8fzT+HyUg zvk7=WM;}B{cmLR}_;p1tCQo2Pesg|=6b)=e>~NsFvrVPA^p4dfU<%mF^qll(AUdA7 z_Efe(Q#MEFxfT3X5;A@{gn9iRS4)BoE*1?|ue>Pxt`93dY_}QnhGi%KxYrA?(m6Ye zXh?i(o$PANS&G5HhvV=0_0wGKx$c5xo+DGaSmrID z`(jY#gP?@!>Gq!D;mYn2Q4-k!j89Joq^puCP07q~(K}`f6qsUSFVGrL$%uFrH9-Yj zB_EDmAlwl%ZQ4Q|?UD_>VRGZO2L12Vy71Ed^#}KS^b58gHxYAO0l?OM3m+!6Rynz& z*?zEKRg!T1PuDXqp^o%o4j_DRjf?(C_astIIKx=oG8*blN1A;M28_LDxNXh8AcS@w z@^#S~(MOeYx|Gw&$%WQfW z?K{Hp8-e#YKW#XEr*2C}C z`l67iO=H-5AoTzaa!jXGO*A|l-MAr&_kZ5zq)pjPt34$6fut!#g2ZTdw%KeR2&(;W zbofuZ)w&tPf2G@x6t2s=r*MSvI&!LdXcyX>UZY^tmQ14y| zg#4uBL|)0DxW7>EcN48Y#>)&i$m$nr<$nD;jsFLD0f32tOagKF>5;?WA5*-{`RIZB ztCvkC)73Xi>_LGzBN8CHt%Mqm#c236^dCbufTg0!{!id?`{VZT`$)sN1=le584{jw{?8*TOzhl{{!=sp-i9> zAITGE93AJ99e=Rb(^pmh;zOCNNB``u{^#>e>g`t5@0}dG&p((ubZH^St!tT#D{5Uy z{a|w%5JMnfORzawG-M7Ipj{siop*fkY&g~}_L$>t{WvJG{H=8=iAZYG59(6x!p2_2 zeM}QN=LEu-(kUDA4x_#n!^gaq&L~{PUq~&wVkH1q&6Ds(oa7AB*yR@o?-(Iy-4JJh ze+?5Ft-3fo_mAQ=F-a~v$iy1}zLGkt0pyhPi1fDnN*F?aq{MDSK_6)=Y|{UdE^e!L z09I#R6_XbE1x(4+#a=eoA&VpKRYm|!nY#r2Vg;|hG&XP$Qjn%=6vg=3?LK4}43Mc; zxvW?(uU!Wt3hF;S-Mcdk!pHiOqR}1dZZI{5>0J@?Y*+lPqfn-x={-Ap< zdm`c_*iRfLX%e<7%#0H6ON(Cv|7%5kn>f^F&dYC6n+oklM9w09-uKj>ZsKok*)WJ| zo)LcDJ6{#8N{9D;wCisF4QKtR=1t1Z8-f26^5@gX;VTGUV@9GhZIJu`IN5xiY>CLM zi#6!J5&9ZA3!f`VRRC)Fqg?O)WU_uoE=rH7@#2_?__f0=QDl!=>iriJ68k z*YP9BvV(?CI~4+CoclKJdOx2Y;1En!cfK4#klWa5T848r9;Jg-It-QTqxyd<(CF0p zVTSeJKIg2brf{(rdqaT0A53&wu;;@?hg%8k%gXk-4HX*c2r=p!4h6D9)?q_gLKV8q zl@52nKX3GEI3lgmVA#0nZfZJU8_reHi?g?JpYH=7O1bvNH`_rq`r~kFHcc5wdAdH9 zWQJT`{?Kq_s8RqbP|{I79AU!N`?6z3vMJOVd~WddD0AE!8F*aNnS2$j#kQw7nG#}s zWb?+OzNGUHKk(E`v;cUQ*(cjqFApHf1JVPNc!^taj#))6n$>}Sk#Wqw=rv(e!SwK$ znT7BlN8rZY=9ZN%8z3e`#!EKyV(~#p;cfo@-Ceq4$pfzK&{ErZOcM%K0^AX>E-2%Ts+V$T3cJWwTt<>4on3oDqQUlTJ zQjacG=&k^X70~^H+SbP)&qh@aEh#E)v;<=8SbhDp>;2AiPN@zgZ<%VET*iE%>7<7T z+1UZ|XkPz;K6i+pazxOtGSNEW{eWqHT1tc8r&5|Xr%)p!##%KGZU3I`Lq|#VPLN$C zEZb#DX(nqJ#~75wP^zrkyt+87iSfWh5FQbjT>aBk@-wW*AHgyZ8^8`7?niL_ItcH1iEAJ)`&f9 zyGT|wSk%C+jn6GfRy8$(m!M@7mc+OYq;+F3hh8vVvo+KI{fl5ofG8AW}Heiw2l!pcb1 zWd`KF$nU9Xs3@}QE$a?omej>9j#1oG^Aj*C831OU^-3gMP)Tq2 z0wRV!{Tz8gPw+h%oa?5}N;JGbR&5j0s)^+k3-lCB#n1FZg8-{zlL0hNN;bH(V;nXQ zp4U9@2DIndD>#u+E@|4&#SHe+>%hBOk#US{_GtNErW(w$z<%XAi#?4Y4#A#brSxo= zpF^O6o(bmjV8EsRywLQtO$Tx9_Qm>n&y{!}AaNj4#J(jwn^htk%9MTfU2?*;Z(Z*V zJ$A`u5?Eo6YOt$tNRi4268r4;Luc5)PU3E2X+0OfUEN*&w>oi0!PkWN zrS`Vx=K=xOScT}Mp+guFzk!sj`eOx?Ye&1nPglfTOiXk}WI9xj&E_VCOFVf%CDEVJ zhl%C2Ru0(60UHO!S>i*xD({holX%~L)yInM=g~DsmcHsZhnRTFT$+O6O(BfAivU0j z)KeLJX!zOvRQ`5K@8TSAp4>7%(b;bll+@Ta&rGy^=ukv6+fb}pb%=Qz`E6)M#Z|CX zs7Q9)tp}fPs$nEBQy|AaHT*ESWR5OZLb(TA$OZEXD3oUJBMiGEx6K}jpaT!B$uv({ z%ohP%(5#u%4!8qlI?(0;Wry1W{0Jr18@o>nGkYsQqNl&uN<;yiR4}#08L_ZE2Nqxt z$nd!@>8&Y5y#MO@US5k~D)5P%a8JDnqRi-J_12zi|2|ct|AvC#9Fr*&mknJ(8gNQB zyLIeG%oa@J!xv=ETVZYPpKI*5V`MI9w>S2^$sBFWESQ&=s1OQbf))j_L${QMXxj!S z*eavqigrvGdN-`Rh;6YYfCLuiH^`W)qdJOCKfZuJNV`pp&!a}%buqT7UWEt4UXwj4uaOWa7MKbLBD%De;au%XY|aB% zl}P<77V8z@DDm=rvAMlJPW3i$=kRpyAw1nL`mpxj_^hkyJz3OZ-Bz-!p|q+sUuiE6 zpjGFL&CMoRQJdAT)8@pTy@*dkg@;`y7pCei2-2oU$G6&?QEIpl`w>r3%dXkL*CiUE zG?*}mbOe^`WbPv65t%Bi#Oj(0I1Kfu`+xLhuu^tfqV@yurn02{-eqqH-Pi z{kTmPnc79Yp&2KTZZyR0jAI4n17k#7tHt(GLtk1903i+nchcsZ$x88U;k58IXxO@y z;}O`T*;&_7XIkBpa=8kk!6e>4Gtn~~s3D)8_Rjc+@Odu8q3TaQj%SfJ@(ht`YqFGscg5aVT-dntW{6=QM2>6(de!?aIHIwu@M4c1Z0Y3C3}SIjDU2C z1MxNkkQnT~@&M~2^~?H8ft$Tt_>c`FZXkpJhBke7rYk+QGVBKA|U#4LD3*|x)aW$s8m|uySdo1~_vyh5^_TG3S4P zckBaE73B=QTP?jN&Fw*9h+aTlGCi|)&jIig{Ro5@19@2hXXAC(USESPayC3+LX}Q) zWm4tSB5C?xjPW)Be%89C5OF!OKk0H*OzJFbK8}fGgg_SPXP3pDT$a?^f5<_;*OZ4q zFPD)7Rz`q~vPo|wW;eOuq?c#QeBaWkl_!bkE3L|9xQ_-JKAMM({pL74Utbnc~d3QTvn7p8qk4x_Y zbk2aF5Zx)0^}0)a?b=cDc)-)-Hd#x$fy{$fljz3&h9*F_rawf$KWH z*zcNPtjBgylBN3@bbb2G%Xyq^tXIbx5rTv~OpaF3;Xx&gn{G}oYwY{Fym4)?R)JN0 zH+2~ZRAhm9Aoba^Ku_qs$P*Qj1ozogyaJZUoo{Q0YHEhR|hf6y4c{2)oVc|E1u)J>BnKjMv%C59nSP4~4*Res{p=?4U z5Unr|u3sxWO!YsCh@MZUCdPZ$TDB*)trcwK75>~C9kBFm?z(FPZP(nf2FTHlR2=`c zhNDVbX1_a(I0t9l6YKoc%7CJ-PW$(+F6nvn6HF? z=50?~=EU@9sj#Sy;5R~4@R}%-E!PY`v+5dC>&l3rZR?4@I-)yas|NaaxbDw>tzs1i zQs_`d-q^TP%%{lw%sGoU-BpeT3*&xg3*8HCAy@LYK$NZoGwihyn9hm*@5<|!f4q+m z2`6Sf_v8_+=pVRMVL{;bC1v577ygq=^>b@fgwl;LziL9(g5jA1iY+HT8T~BhHz>;> z;v~=emC}m$YyVGJ)~{<6PyuMuBW8ZJ+X6Nv_9}C0I59bqSd2@*O$<5OYy)_&9>7#E zsqmR=XR{By!G{~BPbv7g$j~}(lywKRuE@l4=#gcwCVijV6*HTqp42A9 zUPnlDES&DIEu=0EP~KCcaAjsq8efS94bDZ*5&J_<%KrJ3-lr3cyEr&={hC4b-QiIN z&?J&GnzHql4Te30x?Fw=^>*Ahr1G7mr+45*y$JI5a35ncp5~YL=}ABeHEv+=L7G-P zM2kj+h^!GqS%C*J$(jofWaP>@r#lN7u?EpU~~ZuU9SpR*zY z4ICjOe<%#@^+e{R0r7-dn4!p1>HJf36OCuHE$5-v(h9?wH~YRjP@98w0|h4fkz(dt z&ALd+cdo{BXYJ^vG^|sfi11J*i803sTZ4)<$xd1BbtNb!vz=tu^7E+%B`ynTI^c}rG1{o2x#b#@nzQi&@KpDdyPe2nM8?-Pmfm{|mwW~DUYay-hOB(g? zc!12a+-Jk_-BhTbjhPh8UnV?v^R@D`G1&wPn^*ZULrUMrs9Gj#YNK$Z!}z=rl4met z(YjQZ014=P0dr~GLg|1yR%^6TuSERh4YT44 znm5##1Q{a|W|1 zeizd*Rp{k4&#+ZE^!tzcIP3TyGT>G`@5ICrP8gtW{8X-!BrUS|lGHd7-5vODi;r*j z$Ia_k&Ew1OW=xpF$`>m_?9v@)apMHBt5tQnex}!rH|hjZNNrjew9Stq+P5@ey*rJz zm2Yg%XdCzWUcIz7D|>xvMC|rHoPHOsLs=T&QI!#Je9V5h%L;j zw%A~^2CYTN?BJ%_^tz{O7=JN4+@`&QqH6?*o6i}qSnht1-Ed@(d}tD(w~#l`fre@C zW2k%`id>kk6rkJ0C@kc)ttsQ)Ku2)2#xkV3mEB11i`i{|E7J(VuI#c}erfF=dVkPo z-3!8`DYM$g5vNeop$iQ2m8h7^EGseMh33#s%|Q%XY|48+CpmBQopD%;%rO}_#3g~a}MC^YBqS4|sKy-wi>M|br%WLMFhN&#EFh|%TdPyKk4#uJ1b*c8a-QX2ER?pYLj& zyctHqX=Hih{&f&2W%Y4vR2G6`&xN%M>(S@Aa||;N($|K+hBg`lGAW*>H5z6k1(Xj& zfl|$y$N`kFZYAxtI%OJYODw7TN0nz`pSt*4Jg$KxowE}p1K|#?^)V#{dip41HVr)$ zPnz)(szyWS%s6V}c%1#!Fo(njmzhoBW|-83aQ<yFyPb`Q>?3ikyZLRz+&T{*NX8Rxu=8r2Yf}R0{ckWiz)aqJ@jG{vO~t4(q{wF$5nFBzO`8;#f&xD-JPkahasf?8IXy zqs^2s#Pw)&%rm4%1^(;}%j#PL0rJq8cvALMA*ng|WK`msSMf)0Bau530`C()1*_K5 zlh0kU%MFJW#bx;R1}vRt0mLj@$!QAs`&8i2$RQA<{ybH-mAT~t;BQo)J<1@FQFPE7 zK^c`yBd(8Wjg#5xb98lFjzrS=oPL|u88?vMtFm#pDLu<8ppnAb>?d*Q1F|0JIi18W z^$a*!g?AlW#8D4H>GK!qeN1)u1ImZRI+OO5nYpH#}TI^F&8M61=JGSxGGl0?v&yxYFGEi+9xWB z^O&NwLb!}5265`gH}5d_^Uzj4Ks`cu8@i6S8@i+aZ@Gw^h&R91>*I+-%!|LKIXpsS z`R$%(V|umf2k!tDbRZ5DBeHb>{KFzl7%bwhzjfhHbmuG2nc;@mV%7M+1WN`DeFKU` zSPyYfhPPVVl74Y9zeg1s|4G%;ucy*~Fm~Q{Dn04FRq5HoYUWE7|0p))_wSs!C8~0v z*cA@)l z=2-OGW1>^hZ5uLM$JjuH9;H9s^=Ud3LHna&qT##aZvu?PL*KAZek~ebNM7m=dzY6O z#oPsSjDwS1c`{Xi&G1Y2UW;VIqHIy6{t;(Dp#8ZkoFgr~IOL(J+gy6k=+IKt3^UDu zPzV)hvGFK!a#Ca^Y{^Kt&siDDbh_ee-t;@vj!?oU)@`f4B=a-Clb{XX;>3=sLwQ4p zoj0)pN8f*W)mx_Ur>c8jAgK7=g5M;&8Kwcz02|;lmycj7Y&=SEkDz_;D9!<(E3#=X)4c|Mc{FEuls( zIG(h$wIUZn{8MbLFnoo>)N+zJ7~4DUw`8xgrjdnN$YsD{YHW0j^P?zFV3Z@&{&94j za-viVTI@3hgq-2_I7mN%S62X`+B7-uK8fYLihuw zz#iPCxd-X0!mv7GmbO|Z)!EGpnD+smik2l#Goliq$eMPDsfPEa7OxZ?cV$kQNDcIWyKVEFJX_HuhXl*kK)cM@Z@hHvj($>YQdG|D z0kF}sGgFdrO_tl0)47F8%W}D-!9IJdn9oSYxZjZASnc%H#?vLd;~Nf{E!l|h^+K6v z+d-7_9<+h6(CyJ%0)ol)3GDg6X)wt+1hSQpM=@N`ZV+$pIh9rKk|ut<>Fhj;?$R3i zH^y^%c%3I3(GK4(gK~w*|5L{{I|Xk{P$AKtdP2WXpNy4Jn+PakZCk5;!$*1- zEs+(zY=2w+S_4-c2EAdxKEv z1y&S$5@U12^p+qCI2Dt=Y0=$J2yVNws$Vj6EhH=1_f*A4Ff{Yy`E>)E+qfA|>Vw`)leKL-zPNnOaB4%^iM`j5~l8pdnf z?#4tZwy-AO5{ipS=kHDX{5lWxZRjua0#9A@B{|N~(^Pzxdcg^>vju-`b3}Hz#K7No zFlh0mYPn(E<@mdj!*jHvZ}x{C7rSw`)6S)p4-CzG5Xd4Qsv6v{hoi^FRuY5;SG9tyO*$_zhWI^q!h+5qA8P~E^plQw*(sfU9ExdB$lV{ z8TM!SLc6NxfSW2gr5<+!3InP3i>=KAc|7z1_$;sBx{vi0UfdN12BbgJ|3uZK1DEY!5d!orwCwwN{j(m{>HLB`S>iQO9kue^Yz6+&Oc zwg~O${P~Dug5ZeD>1{mRQv9v264L&r?{}wtE1)W6qE%3vdO2+Ud+Nt9=n{&)WU<}I zEu(!G?B0?mZer_vOp9cMp7M7@_1WZS)3da?>>~?Y26eXtK?vOU^oS1aNl4Y!%R(-xTM1g`jKKwYv5H_DkVtx?0lr zvj?xE1c{^ss_U4B`U}9L#H#viGOBs-_o7&-dAy`9D?_{G@5A zUJ;Y#Y>zT?HcU6j+@8C#0pA7H0tlZfU9+1-K&XQL0JwD~!{z;DRl#gmy3}6ZP8TON z0G2jahW+gC=)y>RxM>4_WzZm;Anwk!fehv1YwbukL#@6BLw!^eis1GT1xCBZU$l%{6$qtF+rzAumj*3d1ioy{g`4DItZz4_q1D949B07P zcBKg)8C|w}4!2IOW)=|d&5egczN&|wJu{#x+10Ao>+9Iazwc>ntoRq7cAoECqxfW~ zj3SPA%^6r-AJeb#xS4wFJ>T{RAUm6`|GMBtVe4(b>t$5WMsTsLdFD=&N@!|8A31xt z342y}hp@R{u9bN&&(Aho{v!m?>xzCo{O+~I*+x=b>D~Ee>Jvwhcc9~3AaJF@JW{Q< z1|>h^+8&t%BpQ%sZNX|1Dtjul;*l{Jn;i(q*}k>OE6d|XpkR)THMxXD&=+sgf94Z# zy`5I+;sx2)=anGxZq_+#72{_dXu5=QX(7yL71=9F?&SH}2c`x$pMtV{U zMMmcGTl+`CMSI&Hf*H_}`tLy?OwVg;u83{d@axbLyGgRq(%Jo-yic+Z3u~}aUZ}!` zv=gkq9;*RiE2h>*6|$^!9Q7`YX|HmHWi$lKJDh#P^jzkTm(~06zK7QpEDTYb34gSI z*(QS|E+lh?-RYMPhOdI~frs?YVdX|&NoYS?wok-H2Po9YA3hfD>%VpIsf0^=$nIv= z(hi39b8`daX{ZuDK4$vt?x)}SD4b*Sy9a*W`~LeQztQ6^jc8iuCVrjnt$Wz=ms16% z58@XcVC@gX$?t$XMhYTh2K_F3`@AbIh6~n5_E`-~D~In#n%M^rfs!3?{&qf5uSN2E zLm8D<>?=QK98b5)?<%>|H|O&7(vP$Y@>BgCPy8)V;FX;h(Evh*L8fVBky?VCoeCM@ zPIik8>36OL`S9jmiC6)o9@k4B001hyNO_)PaaEap?^VR1u}kWtd(uyk%lH@@b?tvP z?1_cS``F-P?xwh|JOdTVN|?g%DD@8U=_=5{CZLT42}WzT1x0IRo2Np#Lwf_#v^fuw zqxxeX>c}~J!e|e5>7u7M>T5pQsb5}vyMCd}V8+&->0P#VF3j;HGSGHG^Vvw!ZG0=T z#j3^Du0i=J|G*6HVqLFDQt!6iTT02s>to>x#M|36DUYjNS~Za)4c4UX@j>f3z;UyD zf#4GL@X>T(<6o2}nb^%CIC_XzQLHex4~g6-g2d^+a% z_kUM|k56P*eBjq__yXd$Sm&UKS%*vpYI&nYMF+qJ)7;^tAPa8c4&x!lPgSVcTAr85 z-(2klJs|Mc)R3Cnm>6P0xOS;Y>jdiJKAg0)_i|;X(R1(%5CeB*Mnz$rFTpK zn6Nx+{+6%Y8pg|x%ezxuhScuQf+VSFAMB|S2{21&XiS+ z->Dwcv$ltL^(%j=ojvLeJ9mbJ`<(uY0E9h1-kJ-uQ!>=|_X@Rr(Hp+~XtwWq@0!v}(LFZ-&WKSuHdpRr7beMu)*a zlX!}CSHU20YWHX2WkF^l2XW5J+84zHVa(!Xpx@slDD@MnK<>8R4?+H^4NEwgxNnb9 z7^NQZf%1Mz$)SkgD9A2sIq_6*^BU!6A@mMS=tXR^muedi?sWflQ{#JN)nfA7HJq;@ zjudX(h0!8x-1*77#`i^<|RtJb>xnNbEGi*Tn#xI#)2 zY}2iB+}m{ejal1jKIo`l=g1R>3Qn#OUD@1JQSjgX70HPxT7#r{6O^gN^SRdG>q z24g7Nq`h?|1$VwZ0f!GO|D2k)+=O}w%wY>7l7CKTnPLAf&sgKje%c0uB8K}+jy6eS zG7AvK{a8rVxpXIh>d{-avLFfQA{w2i!m7(N_$Rl#;e|-?Rff6u5G5t?nmJk49ms== z21w77ki^$6hxZ1Jm4$v?y@yP=)(TlL4g%c;484>~_NXIl6YlB3IdA&xY>d>>XD~t@B#OCIv6qu*EL()A_?z)a5|S)zzsa8$K>XYyx2mQHuN0dui7rz)V1_>IB+$M zJwY796~&_w1GK7@3g3x3lNO@lFi&p7g$1-CLsAGks!x$U5_})Mdw0(K{$9NJ>VG0K z|Np}KDEMYaaW_2?P;FnUlRp3ttXQ{-NdUkrV}>+=8`- zTN0VbIc`bOVlHWHg>i_4(p11H!&tY>8cXg+E;mQ3u=CfH%NzrgT7IW(%Xi2`oI>RiH0YBaNTo7UpV#cb|{s zn9o*J-)R}7htjA)L=3>actv%Hoz+qoHw_dZ8i~0FA9IJt4?25kT}%6JliwHO271|h znS|D)TJFev$?YvR?vx4vab9H(ZExJUP-0?XNT~Td8`ggu$hP17TtCzXC7}!KzK3Vz z>AsICY79Ax`(vXh7!VTj3-$r1@j~US6c>%s)h(TET@9;@UNb@dIxo(NL_@A^3pWR_ z)ZCaX=#_HO_E&rAe|$$YK!{HLxtZx*X0Es|u9O`gI>z@ca#8U&lbOJlS?&KX+5dZ3 zJRD`RyE@U)w63VzDXdp=K^=?QFqhT@60uuVWlBo4R=l7KMQ4+B)2-?KiBJT88MKG! zapSZ!X|^9c*Dps8RMKMo^{KR?MDOUunHY;P7*xF!@uNtg5E;S#8>}#e>@thd+O(N* zGjx3y7Y~H+WP8gr=jP1ul!jlo8SGOKzBV%zy?punUZ3UJTppl#ISWYNV&3L-6t_xF z)@UU&^)=7kD%Jwm=HgMSchx#w_h`RRJh`Eay2eM&_5j(nfDuJ>WAhnXYN zh7t1+@N*jCKwbIAb@{EGNr50IQ8q8@I0({l!xaPIrsx7MSQWq!5vzW5cu zUpgT;rfqsWCs`yi5WuBWQk;N?6X3KYQ#>`G)PlfmX;r8(X(acnZ}rwbkg& zVHF>R2TJEN_$L(Nm|N#pq5)3bTylcTm@0qezZna;0KGz>E!D>fN4^Aq>it>f8?B(U zSbGs_je_i3&bU?$$e`eu`ZLs-s<_-0Ab95`kgnNhS3ds@4cXW-MXeJ?{j#+{hLo3o z@;0_W-nbA(mh(($6suRna5%P?U=w0Q&{rYvMZDnMk%0?u>rlopmF2eTP>(tG+mX`2 z@qiP9p`}cs3vkguG$Bmpug0(pN)r5G)gmFi8}wy6?Xra-P6qQ+?H`#+GlAU>VYANO zvP91H^-BUIj{~1W6^UJAbO%$UIC(h{N;M=NW6zq-%X>{73Kjd%ZQsho3Kn z4hI^+t*NWF4Htt1f2KJ5|4HAy(zN5gf!X=UriSr_DB*TDckdbgw$SAIu`xe~Jpc81 zWc9)XiyE1iLIc9x`B3H0;=(I~Iit-k(0|@}y6q{dlO8{6RF(a_s~bDf*clS)T6|OQ zCi=+evV-?d4D-xzptD&fug6%x=QRja;doxO4=h=&Nq5jY%sVWjvNoc7y#*Xstt$is zxy0JUbU*P(7^WsnD&KAa{-*J`e{2O3Z2tAFPFa5Na(Vf>RSjgXS3=5J32$n%->fo( z+&tx<%Ytuh{w6nvYT2^!WZ-?Qos+!b zJGhXiqWy29S50H&kd9?{c=!d18723e&kKA%AvDtt9$iA31gEL_B+aVOGHZa{o4eU= zxD2325|1q}*`OFQb!Sg7eAztcc`WB^g_z<(FX8oR%7kjahQUrvf!$j z)nxYA_kH6>;#3&2c-9{C)1u;ken%NSBC%y7%vVNT9Ntyj{rX=O0v;bp?R2>Q`W0V@ zklSwm?)3XH#O}2i>qfaruI%BILkor}fv;_FwXgRt(W%?-K+QhB6(#Yx1gkuBV*KV@ zVyOvQfMBE2bt1tumO%F%LCuCAVO0iLx30J`aJ550mhB0-yP3PG_$n#seJA!??@VYK5@iV=zcV zGF3XKiePRNE%Rhbd9s&k5iVwCmzm?oaY&PFzyd-F%x5678Ne6d{vEQcPAj^B>4^DS5mK*_cR6P+VR0O#7QHNJZb(^0(Uo_UL2ok4L0qtnTlZR!n6i@|s zUaMVf&OQsyRyI7?Kf^wn?H?zq%R0W#$?Q5;_L{)3X4Ks7?%eiZ;u+7Z(Tzqo_Z0}O zySTW}O*|}gAmgm26^J=Cw`g@uD(!ycLy;qZ_}$2CM}nF2+1(@nSEkvm$9pwv;w7-KCzdH3`au4J=Exy&EhfN9;8BpF|eG!O_=R$|Gi!p!5m{A;j^EfefVFe+i%TG z-T&^DrsVJbke-}U+;JuFu9#a$pjHw0(7PsRv(6#2ecAmf`>cbUJVoPJVbMWw^Qk+P z`S%J0nY9iDynE{g!x6zAw)=vnbvMl$`@f3MzjG%K_6l4rLY&O?YM_G*zo#U8&z-;h zzHM-5Ks!aVximJ=s%*Cy@_)Gc`f#TA|NrhzoYOHmr_yoT$tm5Tb8>%MNh+Z*a$h-& zvALOYmrCoESyI55R*|wHcn-vn>ol-m7}OVpn145IVF_ zX#8pOU6r*_mfP%f+r)4P5deaH^a&t~)DCj3-9Z4Y2?1GMkEUuCQ*k1Nz)< z6g63wYa|(_HAkWYcWL)=$Sg=`U_ebBr+Eh9J`P>9=Vjfo(jN2^BIjjsEj08j$dgS$ z1s21A(vxj=t;E;>1zx?wGOOO;fLZ4LZAn)GME2jj_5VCe4`()?Y-voqRspJ}{4Ja{ zUE`%)&mNg>vU3#??T&x<(>Xtu#P3pZ@5z3+`Z()(b&zddOrUAPzIR>G6J-Y7hj!^T zj34(Ro<5}%WMY}H-FtmbwZ=kb3mi?XVXSu=WE@gNsK=%ob$|WtYtb;!)KaT*CF3Fl zIVK{4aIi`Z`X~Q6uYfSy6S`R|ZTEWDC#te$KTY}8Fr%3O3)s!VQfz6bxnjIH(hV>4 z#_A&|Uec*^5rZ>k$Lm7EqBiZ^)(`ENvrb8G4<0sg17 zqx5;bWDYm}1UxtZ`^uP)Vge=yKpKfN?ZIR{4>HO!pS(R9vibXvlc18`6qlJWPO&4w z=5mqQ?d0B*NZocx9zMDxCakEdVRRL;^e2NAzinI63CZSbW}jW+_RbNY-Bwzy^pITj z{r}>r`0UJj@8SYW_e7oDJ!`zNAb7!DY`BstdUHbSBTH)N5pLCX!VBv@-;hEt+Xb~) za89Xvc=L>7Q4MMZm~7DVj^!OtHzaF0fA2XYJ=)?oNc6~qY>Su9hyQiP&UsnqL7}oI zbpc+Gvr~J9TTXJ>70HurW^~d)OD(jgD(z<5veUkv} z2PsZp_XW62h9wOjmLQgVnl4d7U0L?dfx?e!Jz>!SRqQXS$H`e9pr1rsI+?P0DL9>0 zIvXeOBaw3BAnUPXvXjYW>z~K9a=YCpA|kNXqIeEX+Wz zZbY%ey(V}ngs0y<2|ZKW6>3i+x3noaSxr9i<8-c}bo-WaaqS+3wZ+V~L2oW0HlqoWJGJUz zqB&;O#)ett>;9DVuJ651no>^)cFda2M74{L*K2oD0;C>}DE~GT)p3fK0o7|e^+-0w zsc(oee~r_40d5xbLuRTp1Em)^%f|p2?JU1~e>>VfKw8EUe(+O0_p1rd$FX*l59ixxHa@ z28QoX>`sc0G*PEOp6UAxgspgI$GHFK%4Zp?*hzMp!Jdpk4&)#kfq5el@sU! zaDrD}k#pxgM#s(t)6@vdPFEeP9HLmQv=sVyAjh)dXMp-_d!4-?z(n9RSmDlA$ch-x zy<{-yb4~;JzcfaEkC{JiNld3rfa2t5!Y080UFlDA=U%eh8i79OoR??63# zaw_l{Y^WwK-thX=bGLqktOlu)$+Ru2j_`n^W zCn|-m7fim3XI;P7zaHW~?Xq!1-gN<@x38|6J7V}KRvT5*2YyyKaUHAO&wkRfejR(! zO6}}3?dA|?&kW&gNP1BXgmnj>Q1*vXN*HUHY+a}QubI_Vik$2opySY#AO@*@7&kYD zt{R(w1usq0J4|@q9nis(Jnwt;Dt(0mP^^C8!18Zwv=`>MkxS6`qDA%Vq;uhe8%RwF zds{23ar{Li?-n*rx9^j}yZRLM$LZ#LG{?K^PY74h@kZJSm@Zi@Lv}R??GWYv0a6nU zq{8YjTzg@FuH2N(lBhw=2&20fkaiwM<3yji0O3cC+o$FLam#Rxtgb7Akne1W zdV?oSnm9FabNRjP?T0eVMe>f=z||N7tn%E6a{-g^j_{IBO~S4SJY=I5v3R#JX&$!g zwdg#-&p<~acc4ErJp4A?{aTx<-AQtXMPEJu&ZA2Ps-XMkK3+=icAA(8YXa3UHm!FI zX($z$gu^XH%4J|&%S?#cMbk@^g!*~1UWCCSt{gzV-dRt%$^t3^ng=M53dh3hcUO!R zZ~V%7cllm@<*-NaQx6q*sI}5M>)ov@Cvf8A1LaWk*Lac=U6zD9++*;YEY%id2R7(rb7& zqQ7AT*AxaTiTjq0%%rq*F9#mmR+g(NSK5*+PM;?-6SkP(HZ$Pn`;=8+@+yiTyHz{o}k?UAD=5!K1a}?T22;Tf~s6Lfz_9J3h8gXRIQnl~*jzcS+tIIc4xetobz~ zkPMiZ4kO6#|DvHYdFv+l=UdT$wG*fd?p+~m>a++%4C7hklp>`+x|NB%)iG}OK8yyh#gpMfJQ{Jc=j5RU_;7NQD5t7tY@#Lbho&GQx$ zgLdUb=81B_$Ugq2)5^h=fK8)%(71M{}-Y2qvum2R=X&T{Z(zz_*?XFR=1 zW3j3Sl!C@urFdMq5(V7#r^VHQ?U2v0<~BHO8s$3}{FX1hK{vL*i*VWbd;Rb;6MhY2 z!!^;$1!;uC8_puXgEGVw$3?xno&8!8pd{#G{4+zX#o#VxPEjeLG)8;n6gsa3`f8+D z>&1a`NRX>B>s^@UB~zL+KZ=-S z5XY6%PI6e6CtavLM(=nrr;8@3Pv@+RvYX`&SW@EkI`41@?|y&wtY4<8A|D})x8N3y znd{fVA+FEs?Pp(&7iV`vNYVcmubxsdMktYyDHjuezt{>gV&vKCqBFz;WaI8D;WheV z_cJMlg->;#Lrq4ki48tptDuT;s}YOyb5o9;K`EY{-K;YjrS@XMwa&lyG^g-40@!ht zb!0y}sYR zN!^-EPMc)PM>jv?*d*p}N{>)cT2RwOG`7e5JRv|L7}dV8zraoM+_9@xi+x}Q+y%?` zRJUX;59XpTM)))way0j2eY8k#T%Y25uTaB$^I{2}{_J52kNr`b({>e;|ExP_olv`H z{LxWJ2YXEw`<#%4a5tH{p8L~6RfyV&1Hq7+`S#S$31?L6Vv-M*LjmVux}uxUU@HIK1OvK?Z9K(6s5Pw+FLo#T z-7z(D&J$BIBJKrI^WwjLE4-U67lW!@SnG8mCsK5_N4@U}gZ^9|!?h>l=4A)lG+f5W zH~7X6c*XMkf2a%aQ2GR4JC1`SP0>Fjnz(5SGHpSYwYZleA7_Z0RmulofQplXk;kNxO5$8Oyi9jbcku8H<4;@J*H8tP}e>j36=UhrJ|^ zmt%gRCX>1r(PH?1GnGF((9)05??GSAGcY%@X%{*&{q8Bh9!2^9T-ESDzIv~OqCqRkTjqh&LUOphRSR3Mv<*V)Gl;LkYmFQkwIfbE> z$570HgVrYXqlOpZj>Dy7%37I91@3_ltro&uqqm3ZFE$DAX1P-Mq2k`po|wWsnx!AK zGOp5^&6+kx`P^2W)t1`S1)*sTbp=MRU3)g4Z?(3{ z4d1~n*iEbOH!3!{I9B8)oFLt1GBEZ5U72wD3T3SP&l4G^YYlJo&v*dzaG%K;Wv5QU z55LBq6yy6*Bc)m?G*Ir&`lR^~Tg0z74MTCwF~;M+e}p5)@1xeM>^ud{Gi8nWPa`)f zJ)+u5q^HQ(9%Ep|LqlsN*ezePH#13sJFgU$gx)+#Q3N~i+#M4N;%pHO2>2o6W@GL+ zCfBmH%3e_%z4`gSmS za^ske=crO4sZ5($9{w!vxYZQ2*3@3R5VWHGYXr7K`cmb^sE?MVmmpX z0REI2SU`iI-ICFvY#4hsV4afJMisjJ;;znGkhzx(63v^3gsV-?b3WqEBBzF~T(ZNb zqytt&kaqSj>7^o`m?ue)t_K_DkK+AKw`Std-wZ6?sml4Q?4eoecSR9S}EBOM{EHfUWqmNzg-0%#?c?`Z_@tSkKK)BbZ{!1yu~ zZuD`WB_-omiRZ1cz}&lN!)=2sMY-lgeSf^vCQP8+W}4qj)#RS(Th6N|L!(N9{0#-? z``(H*D#D&6_`Uh^oX}m3Mzbi^CKx6LoM1 z@QK|sCL|_z>_virGicZnx`G+qd!w<&88gAQEXyZ}UhPalLI-D#5pSYiI%p_{8Wy*EDJG7z>>8}Rq&&7Qpkm}GRcWjLVO5=X;}O+Cco4!rTrlpZ{)Mj4e&5=t<@ba z@ZuADu~(wJq`2K(4etCyb&FoApT9_-<8;pXI)kUu>v3}f4i*k)i=`qWnP*t$w85ES2KB*|FLO2+~9t9Y7JFaJ#4 z?IDFQtB@2M2@eGLUDJg|Xc!ui%xMC3F_NrRg>~mjZs^J{x?j^(>b};>8~adNNjrzo zOMhPSA|$$&lcxMnc<%=-=(GRiq_WcRw*OEmu$7Yj#l9PmZS-pmHw%_GE^!?Cn|hBm z2;^9mNZ7yhgv#WU(&f*Wf)lDZgA126f54c24cPtEbX)x{@;eJgUe=8cF8CA^B$~g| zHTB`Pftn7+WUYYXo2_bGE3Q<@%OG;!$Pd4D7E%%)zcwdF^Y55{O~yJ`q8>JODsk-+ z4S#Pje>pS??ru)p53-|nJdC!!8CcVCJ%GVZ`Z>TAX=fHgxzTXuKVu+*Up6zgj)-`1 zWg(_pkcxNjO%HsAQ~ks}Ri`5>$|;rMp;r#(x<*f^Vz@Fh{@1D0&?EZ>Q*U)eY5_1X zYeWIrQtORpUZC$1s=_FZfx6dR039QR)G8l-+P)`Zl$h}f-QgVO%3f$=rnM)L^&aYdtyKl;57NE_PlXYcVsUwgzN^B z9IJfi-JfA^P_9CT-SI^&Io8lN@3#X}3R8#*_vHw4?IoHjyRay0hx#7hw6;MI!HVmO z=4VY`8?af2TBM5D=p6Q<#Zt;h^t5;a?Zkltvh6=~>S)t^m0me)CbRdp4caDj%L4NF z6Ejd-L}IxmAS`3Ad0xl;UZy7?Pk1mqGo^v=Dk>t3Crj*CyadTruWtD=rL_`3dbrf@ zg>?$!8C8#ReD)cV1XFrru`&o!dN;v_jryVdn3UbotCCXbVtRY_Ii12fT3J5Q!kwBiaJ#T}3Zm`?MDt7lY+pZ{ii3zBtu5=BGAIH~q|b^;`>DE12Z|b=I7JW$Yy1KQj46jA%3(Y4voqU0VAVF3qBSRpbkb z!mV_j=7$OASgOx+1Nz8Pcr4!{QZflmnK1teX5eVt@!U{>%N?uyQ;w)s`d zoVRx3qQbev#6Z@&+9}lQWlL6*{_(^8aXLBY)7|II)$=JAJb>!^sDILV$W>?cpG1M^`pNqZxveG8FWSbv6!bfWR+{?hX{yB2ijsY~!%oavGEc8} zxPzt@jcfPBX)pyZOIm4$Syyh9*nepbtk=C21^9b1tas*F7xiGHKHs))CaNtCRv~B8 zI?bSg{kXsTGFwiF@$9ANU1U1ms_PCZ>nkv_<4R6z)rMWdRwJB3hs1o5xDJ zMoTH(Y$tAkV;a2c?Ut`m0~b?PRl9vQ*PIE`*Q}$gQO6oA*Mo0;>OS!!uKyO0RU4yJ z32Am9asl|5k2Hl4>jt~XJg;I8V>!jz?jzjf(%{6bV%y4*oVtznv{EWS9aggF1JWN| z@7lAc1OBUiU#K ze2>MLRJ%;}B{n}shS(wY7K<;zhSOTQ-hnQN=wx=&bdlR4K0ZLN!B<)iM{b5I2?+ta zCNGN_{&o^x-(Ojide~SIZS=vUU-ekF(6b^x@Rt;KL7_GC#-zg(RYlqXkA!WMCP2P< zILKcI;ol(qpQrx*rruWeBJ!LG<2^FkbI}%%mY!mzqO(z#qjzwiJLcn_ZcFuNtYt>S zZxMz?hI-J7ehXHg$SKf2H18xt;-Q!RY`wb@apT6Wi1qce;v*}NpI0fOiXi+5F{{lh z&{pdxC!JTH9sjAty?c=R8*re2!3?;fb`eA3?BKlJ9;9aK^>#&cglk$;VB_rVXoD(C z26$Az>Sc!6auEuSG%4Jr%PF^1wd%O@;tMeGZ47vt5m+{?fAUBac#7yc_ykbXnZ5cz>yiY4yx%AnyoCjG)EJ9sahI&ihc}i z!{67Ikx4K=HI(S?EKoSZ$EyMP93PzXE|JA4C?}O&zK*tjWD%c2TQVCY{~Dq}f-hf_ zCAey}Q$qtp9>Cp=o`UNgk&BzUYB* z;Irkpxn$tonYS}B^n*L`(Peo%`_VF>g1$MtP^+<6^I07iRx)8`oBZRrxaZolXT`>a-DeH_!;XX ze$GDQp#^`+9igOl!ix%-e1U93S?fMN9B=UE6I=2)F_3r5*AV*k4M4|pAy^F+X&BL7U-`dusDD_%g zBhOxV$-I{Rz%tAT71$SIeB-k+O0(VIj1#bM8CjA=lGc}z9w|pi)+aVEmo~6B%Y|1+7^;1k0uFq_!b$Yjn zKC=}*R#jl(2dR^*8e=Z+s;2;gix}YoN;${dImymtu!ffKmts<1s0Tlj_43TX;FVFg zK!Ck3c?@a>5L|{W*NuNozkyIM^Hf2Mh2~-#`^NE;nDtw=7Io@;E!in_q6(l)GdwbD zGQ1%g<@{q?4etNCs-j*@w)s>r8&smYWVErx+d1RM*Z!UjyoFvL>;o?kYK>+PVgk zR_t6$2FI+c2sb;>i}V&dcJOB*qJW z9=e^2D6M;c4@mvd^vU!fcz5APe{nyy7<*AnxNPyJIpJ_K&w>Z@C z8_SpEVso#ZZauCQ(IWr4S+xB56h+C-H7&oxe&lo5y(bQv$jbI6k4yx-?vFgxDz&Wf zN4xXD)a!Ri?Mp_kCnZ!%jw{gmI`x~g({)1$T-|Jl4VJwvUA(!1oz%n45aLJC+0nwv z5P2=1d=6gdi?4_)439Zf$Th|KTCEN4>|<0n17nva%h4mxu}qG`L^foUGDi+%A(eCWqMi$0vrL*$Ce48_CvwD#Bw%*w3N2KD0xu5OBuJ=n^ChZb0Q zybHw`4GRtd0e%^0o6hx9ZeR?P3{M2qxasEh_J98C?jL#a8mVE0_xcN!Jz;zOU>gvu z60JA2f7J3W#o9}$&BU>rDhtD6RP{UtMZEW^<1aOTjUIe2KC%mvkEJM9q4ebg>yU}s z!=?Qu->3H?WdTmG)l1o9L#)w6wSAl=e5bXOXedqjFW6i$v(e1f2#xbKcRH^V1J6otmTg`Cj<_i zd+?fBCT5V&3FEfHaG|t$?P^#6BT_soX0Hyx^T+OLfw~(5)1dd{e?^kkL2eIOo)2Sx@jiL)BcIGtt}ykDok6x>`D@xZWa9je2T*R@`%%sNND&Eof)MYDM+aLgdQ+TT%8R9;hqs+T_|H$zT)bc&@FMPM)W5&g#wNQG~lc z?;#o_DD9oJ2BlA~cMT_vd36|hJM2OEV-gf%8U8b}lXhw>RI>*WWCL3(nY>V17*t2T z%Wz!bA&=bQUQEyp5zM`N(?AqaZvX#7B`H)Qt2qA02DyqWUvbu3st9_Thk_6}&jxgff^Nmw&`(Q?ee2>E9kiOIOx_ z73F77*14m#tH8uDVdI1GLSCv)F03i*S_?SIG1!o5ovx^QjOj8D-K3g?AkkA31N_69 zxq+K6OtGz&?whWM_Zg5&F-ekRiddwOE19$Ky<^P_icZFQd;mkK#GlGxe{mF z3CnDM`0vnSw(Kr@um!JerT4&`L!73H81YwZ+#;rjXy;7nF}iXt@sS@^4ljn?i=Pjl z@~lze_XEHgzcsv>@hNIaRODNf$c5v@IROz zX@(*>OF_~9jAzS%8dK{*_+K#WHSzIGK(lU&y}L#YFZf;yFfHuLXqviA`ljd4fhJ`y zr!>>pIu+efq>Vchb6f>e)6bjJze{co%-#7#>k(VxEi1Kg4$tNx>%71SMc&XX4aN#K z{s7Jr<4(0IL`$eh5Wx1IUG=Ggzi$hcqs%~|%rO{t;a4;Lf)8(5v z;Jh$Zjr1{#g&~pFUazoI0vvnpW*hkQ)l7E5D3-owuu?;S<2RzM?mz>B0nwv{9_Vpl zJlmFLOAql>gj#JoT5{?1@}luz7#W zX7f9m!p)4E|7T*`6#0O-d*eijtr0@Ek#g!ypVkic=?2q%I8rP9?|~p~TYQ3Qf79L` zpe=9i4dKcn#bUT#OZL(rz0=>rZq6GK3*ogxes0AB{O|Ey`~u#UDj%AZdSkVgTdZ9a zBCRY9QIC<6uH{js<0?nhcIV|`qUo!3z1t&s4%l&kqc2f8IXu=s`^stBmEIpeM;-Ll z;NxVkpGGM5NqJ#;H%-!eYNo`ZMSJ{p0@w1Mfkg4XW5Nsr|Mc_Iie*0H$9H?N#%%I6);8DwSjni>yiKW;FJ7PIW z!0Dzyt&QpkzMuf|%9M2Ef~FFU0{9D-KeZ6%%jTTOUJqMvKI9XTE)fN+{wZJ)5Oa@M zU-WbcsN({3WW)(PC%=@efjfz~Rzlt1-p=O9Wi9+hC>SRTQ8A0AY}k54wl^q_`n6`i z%BI^E{w*FNHvs-O23ClE3W=P03#Ys33`WZqK!Z8lv&Ax-ey#+|E(jq@X|MC8~q9_=82C*OvUehfihFYKX1yd7#VRo zdUtt#;YlBN)7ELJk?#esjUfAj@V`a^irh;L8+J>qGUMrQpRsBdor(BoZ*GDk*&Sr0qqy`eg++fT8{Y{|v=fITE=R$Mf zXh)4gjB3ZC{_(tHiXB&{UZdmUu94-gAfn%VDCBfsPNS12Z?^QjR7rycD|G;S^IZds zOh~3>2JHQ}khZ)~kHseznv2bFj~Werm5+>_%Kq|`2$+}*h!q|LJk2=$>J>wDwH4bW zb=Wl+oatLfrhRN5v~4*Dh5GVQ1-q?O^>XUyCkA`@`iR@QX&IfWm`a>E+mU~L zCb_+d+W7rnlb=E8qTVk7jthTFMH}t1S8@?t(Q0#|H%ERuYJu|Rt1U4+UXRs!e+#Gf zdh!~dA)>Cb-Ty9XPTq)g7tS%8d;A-dwdtm@Af*J0e1l+F&7@SBbYlPKFGiIvP1?m2 zdSss1Z{Om0?PP_(ugpuW7uwq3G4{ebv7UF7GP|<`NJY8)_ZYYkr zQSGSuxdeOs!|CRl6X8Z$)z7G0Xu-(xF(AMI$5r+ScS#xRvQ%~+=P4^D zHh=cVL2I4KTBi_80}64X8-K3}9{#USg&koepnk|LW}23u6U16SBa)h%=x2}B>>T&W zlu|y4)}UAua>C|7&c%-3FMfD02$ox$q<3G=O#5Q3R7V%aMg`2C?Ho+@C?uD7=x&@3 zFTKcA^E4wg%x2MA6g!DR?I;~~qevr3U};jr@z5@Ag@y}o(PmjMljwnrc!{o=;)z5L z#sdU7ay&=PR(*T4`bPg%buD!cglKCeOQ6HW$cHd$6#{jOIlf5FF!h?J8q97v_ixZl zSHw(2mTXOOCr{Hm0@$ODp|UU3F#eM^*7b?BS8D3PJ`Pb{1jeqMn%C!ik3`_GPT!?x zz6(Z}Qs;G1oPp)}iX4zD?erOu|GNg)HGIDMn4+bb`*WB@RX7$jha)sjl^Op2#>iuD) zEg;ki+{n;m?FHqR;m_hK`;x8o1$g#E);vm(g-2{yja!^jXCrmp`RX^I{^yBuru^CJhbk;oTxdqA zNcp)u!ssqDLF>Y}I|X0|Ys=Y8l+RHTxAlWSsoERL+G|8&p0@gj7!b!eY$KrH96#qjV7}MJP z)g-~}Izn=YW_iuv{5;#$(gkl{ROEv~r= z1CMjTA0Koh?K(FBM0eR7H8r|I=Ame)RViMH@vhj^n9ml_ZsznWxs=DP{!ohR9GM}b zd20c(SW^~?#h}M`4uYCSOYI3++@9WWZ_0DWT~(QLaD8= zOD8&nmaI~5K}45CxN?cqkj*;Vshr*+#Cf<<#KUHg&|-EzOjFKI_^LzCmj4OqnuMb; zB0t`QQ&=+wqZqRxl%xrt2Q)o~dkkZ;Lh4&E!-lH{woddtB2;T@`>F*aWg^@zBat`c z``l%7=jY^zj^z2xBPRs5N{bx7z!nPh3M4l6 zdFX$SUhz4N_g~WN+xkPxWBI_Q6I8w&nA72!zjHuwuad@(?j{7^AFOiamWObU&Net7 z%;RYjjo^JRMchv1qY*-wZQqxtst+AXFB%M%I1YgROHW|Q=OJ!0~Ak8Xz4PnKLo;g(?Q zsQYfkK&hdnTAmzZTS2PiuW4g(9Y|*s_7}<>NfaU%99PPFQ{yepPmd)dX|}LKg+rpK zT2Q+xOGeOD8d|qKKM@9=Ze$b z(r&h(tW-HBg6^{(A0sS|n@{pU{kyey{=Fn@CPM^a7P zL}(y?$jxLT`xRJx2B?emtmFHVq>46vCNuu=yIWwitg;@cLw2DQu&o)cX=#B9F;0dD ze=0l5qG9qDRPh6Mqsc?XguFgFR-A;v*XSxKCujq5GOn4|QOcurym%4nFI{rk2WLXk zZfOEAviJVVel{+HK8b%M>fE{)5E)09oOfmH+Ju9m3ns&zA;=DWz|+yUX5!(^s*-^# zNV`Aze${?Vr|%$EV&b0Esw^0>l`G=YL4YfdHyt)4ofG+x8(7iq5^xD{Ui{Ew8r+ct`ZcM~+*#J791 zzFrW{&n%TTVOsc2^@?~C-k9RB0GijAEZXq;KIN>p=agtl;ngTJrjv+7tVVOL8-C-3 zEte-qKw&~4y+7oe8ykJseQirJ26Yy+{zt9$Kc4M1WZ+Et&0D_0FLp0PvneGbpD!T* z|BR?1-Td3ezUv;@Tka$A)d2#WP6iwJo1Yr!30LcCK`x!QHX^N}yy9HE*s#rnq5;E$ zWMg%uQ3@it09&3mNP7iqpTGF8Cvv>nH9cE}WJxV#Sh6Ts)UzVxG$$eEcmpV5`~|pE zT_jw-fQiOdsebN?IXks>mIZRlxCPd8EQ}R?zA8q< zKWi#xi9bIvNgp;DIA~QhdcPv9HsN!l%i&8<{xu7w9*a{$so}OS3K_2W>=MNg+0~#F zQ{${O{_U&jeS|=Au-uR7>UucGu-?SWCZe>6%Kn2~Iqv6ZrNMEzvKZbrnl*cfco4Vn zm0iN?DoPW_c}pe^1p60dai)<85E*E3bT&49oxqC}4-;xP4li<^-yuM2(fQ{iv(4HG zQ-4lnw3WvEq8>?ODu&fc%(jG(Z=USakNsN+;ccDYQ5f`wr zrQ&tgcyg6z4F0kbwu-3m-Vh@4!Rs7DmDTW|C#&N$!CQe=RqO?qa;W%D`xx(e1(D z9|d{hTg?s8_=YaA239dHw21WbfbWxjh9i@6X{Mm;$tCmbXv2REOwVu~SWTAF<4xNE*mo_Nb6 zvcdMO*LX_7qT_Y6_R$07Alral1@AVrZ;S^tlWrDr-v{(7Xv~&{&#dTO{TBBI&jo#r zFo*VzY5mK-W18MxcR+2(Q($|QGKAvGh~EZRV9P|yzvt;Wt|@cmFvgKjA0R{GaF!4J)#N(~xCB_=m=x%WPuI{RqhIvP%$o;A zoOH$9aX|KBTbiP*u5qIuoa_n5^7eKlBdg5`;u)5ynDGs2`95;MKYr3DTrt7gqv%i7!R(-Z zuEv~@a*l@n-Jwp#D=&F*The^lxm>G=DD#IrpV?rg*P?DEA_(wBGu)8jlC90^ie`4L zRx;12k*8Y4lX;fnQUt$6B#p3w7*!aRqL{g2=`r$vl=9mo54sV~lPvVj19(HSXy!9$ z?PScPZ2MaC(wSY`qB^*xn{_$arT=yEZNUFhAuXBKVGB zpcmhXuml1cA6e)9#ErS$lEHI4e!tY?i(*KNe_^ZK%}qFLxfx%m%wey6ClVP^dI zixgvSB7L>d(rIvBFH?F7*c**Kityl{s`AY~D*3}@C%!?PQav`INk}}(Va)j zv-RI6!)51}?lGL_T(o9%thzt`ej9bB)OF+Wj%}RYtSit~@i#S#}%dizZbL0gn4N-vWsiIU2B%!d~W!+E)pjCJzd{-}x!lF#pt!e*^xl zoH~d6`e*b{kkOmP*x_U=5yg#e_&mUdHcXA%ND$n@?zY0VVq*9>?uF1v?kO~Bw|N;^ zx_HgPO!KO{ji-Nl|9VMV7U!CZBB`Y$k<G9Xlx!24}TN#`^ib)Lyl_Ey+ywzRAeJ!NU{{8TvIqXzW zZRwx?ZrA$SpVis|N~F_hQf>%|wVTSCe%Wd50{B(YtvyjwKNK>Lwm37e9qOA31Wrkx zYfZKcR6s0D$w}Jkm9^H#9P(mp(lbqPV_GStyAdh5BbUOlN@}~kGF1;fo3j>2-2?4NY3`Z0bRwi9)5>F?BASOHB<0_`=G3Otfk+ ztJDk2@5R{e$ERBp#O2(plSE%KEvkhT_Mt-q3#lCy24WHtydaA;g2WmN)C&u1sJ&u( z1#9*fVtma<7@5_bnSA(1!}Anl^>l&*v#=p;;c#1>%2`fva#T-vRLTL_+a0s3AuZ!yed_1**f-egK3ABN zQj}h6<3&H!#LR)De@j)!L@UEL9Gz`ZN95-(v+MZK(;8FziFA8}qEQ$nDl+W$~- zIqK={q0P^%YBa8jE}- zV4P>uSh4&d%D4%0ycAoq^JA4*WK5k8@B+?VfRorD4!s zqZNA_#0%slNMI5({ZkLYJsa75Q2+P5){ z&+Wc$bUsr?3H@Yl-0QW+&$DC4u)djsw`&tUaE6gmk3)QsWa+N4V>%5P**TQJDX%xt zRT@SbX`6Do^t4>W!!5GuF`uXQYg#|%eb#P!#7+FMTcz77uYhDI_~QrdvmAToE zR6<=5IZO!I*b2kuoT8lOG-G3PXd4@bnXwta_w~K~zPC?(zWt}$%|Eu+>G6C#?hnEg zA*kGAla%FXR9W4G?=OHt664wZ!|E8(-aPTck5SvU z#x19W30s1JJ67VB78|YA160s9c#n%`4kdINZ92&omA^skWUwW~iGF`F#7YM6ODdvo%OBlB#}h6b;Tp+8*3f1`I&Ej{^D2 zOGmR>1`q78VTU0CtKa0FSs1UJ(8Qm6{*D#nk#06g5FhNbu!>l9$ zE{$$!M1L<|^RIT5u!q$g4DuC%>9-8@!=kdcOl79gOV)Xg)<=#({^%9-@c}pRV?~?J zXacG?QoibBvRk=77#zdhzLE|H@t7 zmtJJ0+)M!_P?58|w)3GXdR*f#69}VQ-M$0{H)@lPuE4KgV=h`WF<-JRoe^{-+E+JJ zCVA+^eQM5p*ujZ_1sf5ni8^vMyEnE+t6L^T-#Fq z{aVN5E-vZ~PJAejo@lDg!)tsR6!F`w)#bRi%A-fN=5(cm&%QlP^_phR0&pG9uvcLn z^pawxxDY_NEFYaUca+|)HSC4G${g+oWLuk9jj9JhyaLy$=rETS@Vn9lY;+I)wvkhu zT0l{(7v?jOo7%0(C$%u0Gutizm%G+WM-*sg&qhncjo1CcUI6cT5q}4yi@#C}T!*iB z*-s`3u>VMQCe$O>Mc*3$wW=Y#O)a?8TP+~zt!dX0!`T`%$M{H@v7Z2JTKp+W->DF# zFz(lFUhREPnb=5N*2SGzZs$M0MXIv3zM#*Le0-uKZzH>mqQT$fA|3=Y1f-n%-S}eo zquFWC%U*?zH+abIoJ7g5K`xRQ_d7F&Q*jllg#HA&$#w!GST5=~Ik!Z0dgHkW5h*7Z z0{hv|P@R0==!bOyI2v=;a^b@CjfZ0e?y0I)Dr@Wy<^Gi}i|$K@)-SKQqXOq*X*{p$ zD#13chvgCWJRjmBnus8|z61WuR=~z@exvL`rolI)59Y;1#(@)n3Xj~o-v>xE&R4wu ziw7ao((k@e6Q%judUtg#RNJ+{7Nd)_K{|lD*UbcscNUob`OP~j7@S{Bth|lj=^FOx z077L-PLVcFf&f~m8F3A4`)&s&d`(bU9vdhX@> zxovw#WKNxjcqPG<;=X8bH)kI?T5@i3K+Ov7*5!b)aF9-B1pF)UqHub-W{6_5rAKwP zP(D2`oIiEEjF^(?pl^I5mc@V5vIxd=&(*Fl1L$%_3iMS{TgXaIF3C$_I_N)2;iVibdnpc)he0IgD3m)BHXSy@`fTxh(=)AogR%BpSt1I@)7S8x4|uO z%`W0hW!;Rc7rF*|yXD+_j=-vkDvWFZ*WGMpJ+pNjwq=%5pPCNZJRnYP6|R7a;P*X~ zKaez>;HO4Uu)pMS%m?eYELK{5e2ge<*&o_V63F(3{+Y#U{)=)D+vu9jsNXFb-b(hV z&x&;tLyg{coey@al@33l{`T>qDmjuH8=h4z<}!X$0Y{!k9${KeH`YdM6i#IyrG?t< z89nYfFdp!1m08(%ZCOE%d98ZoEKo;#`hP;q|8xHDR@wk+Oh(ouaVH{c5P(wNujRnr z_u(5_KF9d}$xkKZ>=J8q$A8Z2FwO_d7_+5VxD&!*`gUrLpyk0|pq)7073{ye*!Kj3 zeK0^M|8ApxixZt$e35}w^x;c*bx+E1;MWH9r(?i1>pZq7(mn!`kk*x3e0TXeaZu%b z5r|Q!YwMtPPb<7zI2mC>y+Pp*+@oan3q&&~c+Qg$0AeI`tB>Sc`X|TrAg7y&jVTW1 z($jQ^wPS@DOHR-Qa(c#LSBb?mKY#*t+o4{ZL(OU^|IbUt=@{OF9O#y-jT(-#S zT&5&4YmUk9N4pf1NN!G%+QD*M5e_;Vd3MCF1AK;i!-zm5vIY+a;R)P| z@xNC-*i(Fi2hx^IIfC`rvRAs39TDypES=h`;f_m$L#+&L)Ir{H$w)+&w_ForV1pDj zOsPO?$Tb~#s0H+){ojB0|91nlTOT*{Dpbt>!~h1ojGhnUdej2XG>@J1KHcPy8tcBn zZRvWk%`nMqmHNNF1gjp`Fhx4=L}BwEN=0G^fQ^8G7?qaM{0DL*iI1wBvpNcOJu_a% ze|{XV=oDa+``%~Qc$nvooAMNDOKQ5BttG#Jg-xbEkDxC$S1P%^nxYGFd|;55C*cEe z^5RK%qJ<-gXM8VMFX?S%=_*ZX5fDEzV$#}~>6W9N(2C5Vo{R6kgVt=j9o5w_qdn2GSD zdW%XI(JNW3mwZy0xFtWhT5KKT$G`N354mpxUx)=0c39U&%M8#rB&@;M$2#zFcp4Il znM81?Nb1dT6NLF?Eg{*08Y%g>n#!6)(3n*IhR1iIvYg`2hg7iAPtVVheB0uTt+)9M~59C|%zwqnY+MIxcrf9*aF+vZ^FIhffvG6FBoER35o(4KRrh|#A2s)_A2wR_KBuFt*W%v@K|rey@X@IXgnsVeKA zExlK7x^|mTFg!OWjh@$82H@^ZsE#)rtsaA2rXpi`A{8~JR8tMA+roYdXC19*W`F34S9~-Zcl`h}e8~Bq-l2eN7+`?~t@FHIL+Z`~y9)UFYg!4wLQwI)>-neiBbVtA z%r#O>;ro8488wl5gxGz*TiO=NR+XNrU+fdZa-}14F-@ICS9NyH&JlrdWY6P%J8cDV;Z2M+B=&J_2{Sf>x8O-Evxl!( zKcAJWeYa||UFRXA5))mQRW5~(WpU07$u8t1W#3WV6s2iI$t4P%y_|w3%!*sjhoM<+ z6%?jmIyMK`0E8cu(1}+d->qj49JTSG9~aoVQ5;LfdVyOeu;WKJ^XSM_@#4ham0tQ0 zsigWZzC}TbW@5b@JzLrZ1coyK?5+(N3&@C&+tVb+)JT z%8-%pQBBAok{UC=fTa5Vx-wvKFeXK=$!hLrEfWxxu|JB+hNsrrHrnde(>KHhw|=#F zkPQeosX)U=*pTZls@q=n=IhEzcPDsIb*5Bx--lOJ=Rf@VOsC~I z4(dVfUOaJi(O>gH;KFLyn7ce;T5!*WKaUt4G?pA*-beNR9dgf_vb(Lscpbnc${YbF zmbOA(nQw{aY?}~p$6f)zh4h7gWldD-Khixm9f9CeoJKY8(A34nKM@+0KxgvRVzDpmG?7IXzk~3Pj__)aaIbwhY8&SZBM%^mTyw}Z*eP9HLi22psyIEw%&CEQzpyp zw|z1xH~Aq$?()=<&Id52YFXq5AqkUI`M8aD(fgj+tSK>peocXQD2cUP=x06m{-gauqX}jiy~_XSC}gJFQoiULY0N12j-Cm{GK+FSJc6hfEPOZ_tq~-M z{CzYP>GehU71SQEWfdCKpVe{qq)FuMDB9jh=ct*WHQT+Y`zb0c77%%Lml>{`vRkZv zQZ$)Q&l~^nK)O#Gh>`LMeg1ZH^RHaN#il3>_`0*T0J|?ed#{2!BJb>>sG^SCVbCny zao8h}^nT_*ee|f0e2BiJsV>7MU1`wT`)p2KpO*sD+CEdOunto=^TH?rJN*V{e6$RZ zuKzt7FcvP2u$yj$Hkrc!hpX)v^%W3UaZsBrERF73i0q9d3X#}I3l|L$K^E4O-NFKE za?N>WX22S0+T;x~J-&;&rokJ0+&o+4k#gr`8sF&VNf+#yln*3DxVkl9@J}yqEm<1b z4+|2IE^nxus3wHfLlh>Avx5*jn}diP55Mf_m?N!`Qu_W7Oa*tZ+9;$GZw9IC-V{D( z_>cph+MP9{AsiN)d`UML&>5T>Gg9b+@l0l})6n}>2A$DgS~vO6TA~66>ot-GiII$< zeWPUSHt(8|BeY{8vcYceWkv=+TtZWQf*#4`0n^7b_3O~R%T-QdHyNwQrSxA%aMZTN z@q_D@KM-c-yMGd%o7CU8)*2fR{VGTh0YD0i!wQd_Ud1~aH_aS!->{BT9dk;DM|w;> zTtsJCL%gbsos;*Kjiip9OoKS!>`AyvFZWO{rGs)h7aGFxN2Fv;0Dchgs#b-^(Kp$n zlWXqpUMuk5(H!PyoH$0*Bkg+NPjW4cS#cL<^QHm&&Pd|9%GNyi>1wB|1+iwR9nGPq zw<&ZhwXYkST7w&$OLP;6hZ1mU`#x%4_~h8ekF3d|Llp6EERqnFw?nieQB zR5GUVVrRHlx|{(K?i!IX`gXRstX~7mm!<4575AG7o<`zLJkQZNGF6p6PW`mxME=Ot zH{!FI(O{}L<6|*KdgxBjC}BOYE1-atAW5$Oh;L9hX|==-^Nf5DRo(5qY2}oMSehmX z0Ip!{|JkZg?v4Maq3r)ZRhp~_^!iuAnVOMt*-Hm=)IWW|1*=!jDPE(#bmy&I+?@}J zvmP&l4y@t8qp@Bau3o9>e47Ger$ebY2zP{E-j}O-Iy6+r3;STp*Kp0*R+Vv2Tt9%K zNF$b5MC$bsTNnp^3(EW_eykP6D@bn8D0ddfPP89SAf%0zE4uWb#Sy)}!DJ^ka|eR| z7@nSKBwazGQ_EW>!JoJ<&U6*KbsZ?hW5MT&%z;;|4v|ro&byPNR{yHb=sG9__ZXVU z>iUDt_N#SF=urY9__6~JJ2NY+qRpS_ldXXnu!t*}&DLAKRZ8j{a275YX_{dSu{a2j zXs*Fet{azOZzV0@A9hL*+{A`B==f%_yk4RsjQ%?*mtK)P-UBh=q za_RTV>@**Qn`Ny-f(pEMaR#-lX3dr(-qcsN27&sz5Ga66g(h?n-=hsTj!PS?31@BP zbnB+Y%B=X4%YZHTz}k%;MqYIeKW$UJo!K# zx}21og~;|UEAUJrgxbd4aPRW2EM|8uU6-wTmf6^!MeXzkw)yj+AUtlXiFU%MA5`U6 z!+xPgmrH=yUL%})8XV4@H<&$NO$eQho!Kk`5M}C~k$FB1O!@bu!d!%piB(h* z3ebSQ9^fZ{H|w^b(I4-xxBt{P1JE zR4kEFswE^x8mGL0^*WLBoL@U9{gOZtkmE*L#hrXK8d^Q-6I5#fESUe9Q|9dZDI}zh zT?T{1l_TTzRhVMVcWJ87nyIFfQigBK*X#SHOnfyNN!c=@-KF2HvZs0= z2IMf=L%RENan1EP-vs1{+nO1_WyBPbR7O}Z-}*|b-2oWIQ-A<*Fz5*bIiy1q<7=V! zz{F&D8A4)al4=81bdiLd!sPm-mw^pj{6M?RoFNJFSlDwy?4Q=EoFbETj~cvWX??Z+ zvt)8KLaJGzYsHvj&l5E%wAdQLoO$#Fo2O; zs@ex^#ozzV&YZNES}_2KRaW<03Xld?jn<$5T&shV9WH${DGd7@ zba&+z&NNk6?}L`DFEb*rUdB&O&K)6ZVs#TbrkQ!c_zLJdQLli0!ywHVc&flpr?XF7 zpbjQ9CYk*kgd?PvFp)3*Y4q0L8`e|4ISKkGP_C!f zV7HGfSA)RVu+-sOvDZoAUs7svyJ2`Ox%uRuX8?6)f7;waJSTIqImPU)TG{L?01(k$ zKEqfM1{uI^d-*gU9nyig;DN{XBW5Z<3V&OQvb7Uxj5DmQ)DKkIbj`S8i!;5>!f+4HMGYgz zF0SHV5LD?pfUey_&3QNQe(~0x2Qa@=Hbm)-^d!Dg0$`9(a*T_4EA^{w%k+wP?>Y^k zXyB)Q;WGudE7LQne)2t}is(x9icsL5Hd#*Fb^C5n*zD7e18cB%3!XE;RHDK4vKGnp zeG)I3SloL#AWSi53+pk6*^jP8(*#8uXV$OEP&xQX6|gziSjv>iv&48$U0!f#Y_)jE zj?fk`C3#xqPPs_1r9C}eyBZ;xBqvK}+uKJBBs6qHZ$=K<6V75UX5({bKjK4z2>4;n zfscdYUiH#nYJR7!ZpYfh=tAuyg{3GaF4DCY&SJ#6v)7sRm2)SDm*S`t5+iJsSi^LO z8UiGQv4kINNMlEOWkuTmeO=1ce4f|Z$PE+D#;s_d^evRvD!uz=aXRIgv3%zy@Axa~ z2P$&3;C}K=PQ!BOLFI42Ru;Ad5S8-XG$yTHxXPyx_rriJ)o6<7rcdwRYI?ZkFl2V- zsu1A5*owa6HI?#f-}5U3Jd+Fbe`r;EJJSzcKfalFXEPaEz1QT>eVtmts$I5*fs2w} zN-wk>ApNq`(n=cX%@L5y;x?`AjDReQ04bQ|w0iW@IJWYc>*qZ<2MvjNU-W@XI-ls^ zt6aRP7u6N8B(K5R6I&Efa3jysw)2s_FYmrZAGj4{6eLC5%W3((g!Vl2P}nJio^;UI z6q8vk{w5t;P#_1X5renT@{?L-Mp8IEul)jv-wutHDYf(et|xBe>x4i1JCNzSq`E1V zkry;UKAqcVutcavf;D`m-mCAw#*Qc$K-qmPqcvJ^v8Sb`7!U=y3oHJWJ2>bfA)f&Y zOn?K%(ln)mvn|G-Eckm}eAC6bd*LLUN_pK-CMdfWXE3r`9G7LG1!a@@NCtl^F!}#k znGvMMssC7P>2YU1R~Eb|$=!%NR`weBwBi*nWSLz{+tOVWd9CD9l$&nTA)V?ip3vXt zC%B-Z1tc!Ww67wnH0x_1pBELVaF>`DoTbaRbOSOV#sLjiD3>86n2{^r^86+~=p{58 z|Dl764pO5IJ2^z+A1bQ!lR|H}x_W7Bxz=y4wf*3UGUHVpfEc7rQTde{IuZ<*6m-Mh zdSVlRJPNRI{1fV^1*tY#X`$h2*7j#Dg0>8UU+mr#9w5SURT_$}LUKzQKQdeT@6kFn zaXgP$VxIqSUT_lM`P=O~3_pBNvG!8seRS@k9d!NPGNg25?iEQk1V^xFB3MG1N zbpRNsM55!66CL(;8MY_8;|^G)ArwOWaxf%re^n@Hu;+CZS%z@+;6D+OOEtJ2IZ0u& z<}!1S;*&rT>g&R!Y{#e|Y}O{iL9I+?^M%Ux9Am zHq435ZYxuzTp)A}1)jBe0V+BXPD5SSC^}e1nrENw@-Erarcp`DEd(b1x+#F(`G4dSHLXjES@FZzyl&7haKIpUsfm90MW-{M0bEqiDB6VUb)>Wt zo*S*4=$7y)tNy)JT{yiV=>ex#wd8KVSr6<$rb-b`%o7K$cTI8}`Pozfv=cD9GOr0r z#0H;cUl$((3{iBL9!n4T!e3C`(hFWQ$apt{Xw|$IqtKw=p;(ZJAP1KbmtBD;d2)Y@ z21s>(Xa$#UlLVo=pn|bLw0P=7ruQQT5tfO>Iy`iLEgcvJOk~O|=#dk!08is{Hw(K2eS#4IG zUgWW|pg=%g`B$)K|IKl+wI@p7JdRwwDn6*uqACgy(=^Be@;B>8EdV&N4Pj<}^n3{R z!(axM1$^Xg6#L8>tD_$B4VF7b(O2VvL8^8!+B10SRQ;89kQ4kyR?FmNh1t4pO}}#@ zV^Xd^Ftz`+t30;K6n1ead?1r1SxSgtQLBsHlq)gKMr`T{UbGVEQ{w#DM)eK5Tu^6+ zkn5l440l60ed{&Cil9*8T^;8vYRk*OmGiL~u+d=q#DfVfo(-BO1c~$;$WN8J)(t?0{t~F5H_Vi3jZ(PLQ z>S<8*EL=-=_P%mIKSsIMT732$q_)(HIm+rO+7`DEI%-ai9$ks(^^nlgr)kq-8qx_R z*VGocL|JDHtVwcr{pkE#`S!Ca@S3+yfv>lC@p$K=%vVPbU8+^ggRFbXSA3y!t$=TTu^t$h)~m~m zYPueTg2FramRI`~c<|Kn)8DS6kJJ?yjHsG>3iJG7ipkE~Ga{ZAk)3Cu&WcUt%DEHZn)izSfe*yNJUs zjN8&WO-+Xx98K za!ewJwvnwh_}|;Y{anCX`QIPqmK+t7!_e#Aq?RLx2o4cI;Y-KX0!K(-Dcnx4>2PHc z+!cN97|S$bk6Z8e?-l^ICA3lH8IUJXeynoT;NJ~umjXeFF=o)!KOPLyhex@y=gZBN z%Ykx_sYo{(kVFz(W|SHXKY)W;vSy0!qTla#BDoetpRx(Cu#kOJ@=(`$|LTl#3MAw5 z4fn!T5>OA5DH;zhFy-O7nbEKMZV3ItHEsu-VFmyvQFl>&#H}pC!6q2;w@tBrr=Cii zYm}mK;a;{N!2Vol@_rzPGuxw|z)+IKj12bIK6?vL@PQeXzJ&;9GCXNDlq()+JY0|i z1@pr){L9Md$Q{xh=fk1>{=Me?D)7V*!(2p7?5s6a8nc>muswq`LM(0 z^t6Y6ts7pVVQ}L%*j6d*rn`O*EA&yTk3wM?$8UbjwxD|zS&5B)r!2;F69<7T_(73V z5`9chp=lOfgdzqwV+$JUp$VDB-(lZ-NTYp}QyBLOqh|{|ML2GNxe2C_N&5pZwE+bq zJvF8l1EHl7liIE!)HDE>0j9Kk%hKlkaFy)oSpqel#1d^s)sk{(GJebtJeALxB zE^Y{M?R1rXH%ks3H99QLujh;yj6~Bs-!M{T^))ur1VQ^)O-DO~M+ne5AH~qw6FiCa zrHzGpr_4ABV>ITZkKuJ;x({r>9?qWCCP>fTs`Xrjnu%pxX<78B%sJHkgXfBUVdOjY zNNHfYC$N6tKVRl7_WpD*<<>Q`HoUl0i;c#@%Ix%=F^ic_?ZEB@)i{z+3Or|_bBVe- z+mPSbNUseh4YtE3ncOfRdyEwXkYR5pp3`f?BgV~Kg_-Z7xwqBLIU(iA3?O@8R8yA8 z>_?{d`KyTd)1E{b;EeTqL}pJ41_IykzSRS>&zIP5o}!B9*3jQO-O}~Y z>T?Ez;YADPi_tH!FPTqYjezGkM7&6*{s4xMHiT>Jj}qOK;FAL$BUqK)~-s9q3$yN;s@qF}EgzzS7 z%_8Kd)0#+z_8gznIomh`%7Hu{vuJAZpZb+6b++(LK|JdQE8PGTRs7i!<`F?PUFx)O zF|e?0H?~3Vjy&nrHZECr{X_RZuH-J~+FZxD12TRPQwJ4%c$-|5KKkAd;{xWkpB}R2 zej?rV6NYgMl>S+H-SGmzF9Ae>a#IkGikxKos`yV%fi)yCJ_?weZH#tyFnc?Y%}?qE zT}ccO#<#LPA?fM9D#;ForILk#O(y8?S@vv8$O0IQHoz45*Qn{`ri2JBIZpKehk9qAv`brqqVFrYNRI9L1td&0q7w*MjP&hutH>Li35 zUPC_@i=>jlHhMNTq9x!N3470D#pWqUJpdF_XY>pJ=@BkNGI7z1kVSAE z=4OIqAXdK9c&aNFM=+(0)H@4kQHIn4KnbWYNi2_!d3)0B@(Xt}y3?C269XyYmIrVi zq3{iDmRUcRtEDYQTfMMDIy3DG&HUn8ml#WzYS$_IJRzsLQDDd+EGO?2kLoxYiUHqbekpi9R>k5XUg8>(HY>Q|S=*Rc)GsULZN!Y!+=(QDr9V$>4)uPj=&VoiTT^!9`a()!`1KfC{~D~XW~ zFAFh4tc<@(Ce4yJR|jzWnduR|)yeC7xIp~UTvEaz>*HCoh0wz5fipG10@BIgRluhDHXWoZNvq^=IWDII~Tt z_#ZX9rX#*fwi{X5jZ%@z>UY0mo1iCwLcC0iE1=T=XhPAw_LA!H8~XoV#6+*+ax)8p z9fDq$goV(D@&XD0VK?k|q@nSr=KLmGH|~W1#;9lqbVzJYvSgW_jI9Y3X?kZSx#2SClkj06z$brrr^M!8n_)9}kl@nhhIB7W&& zovB@J<||3!Ei(n8om}6pwNsnLfC-B+d}&9vBx1u}5Ov+mm2xLZMb0q8-ye3$ z3j*uvg{#e0-42dFzvQG8=`j0I;{;b!!(2SdVUs}#9iWWk!e_CIG4)oO!DcR_XFVw$ zCJD1c^tK_tbd<8TNZ_k7W(dU5JKbw9=MASCZxypt6Q`a^&nQ?TK&s4?`O2Jjb=3Xnul=sIg9ko$S|iLwm2kP=)g3j;A50khoS0tuEFx` zMY=ev+esvIo!Jzdi61-Se89 zX}I^nST!hO`6hqWyvQy|FqQc0NNbE1DreYG6io)NCv;`cr=F=3H>n=;>QB z;6c5{csgg=7Hx$X@D1v=ce^)=BWae|&mw1HidLT^t~)@%0qAW?#(~@k@r(BLOo5qJ zLYwjTlbeT4Z|4B4G?^HEud|fg8|?Wh(Zfk_^dT>17CkyhG4SPg=d8yzVoatLK3Ue6 zN%znum!j6wlSRKS1VL0QN0$P~%dw3o@KX3^MsJ)lVTa(o$ChA+wV9>A8$NTpEp%&@ zSxRV~OYYUjVH4bc@RQteOPPmr&>UBvGfyXfd{)N5iMYSYt&}*4<1l?Q89yzs|7X3; zD{n-4>BosI(ja4;#fhVAz>kpWgT0JW$y`40TXCBY@N{wUg>CP=mHjw!;}4)eDh14= zItQE$EN{oAIyskgNmhgD_s=MN7(RTit#~KK;ge6y@3#^Eb~J7P0!Uf4!ST9dDxM~)Y)rv~t z>QHCgs*&VLlR*w{0kc(`A7ZBPS$|ua)+H^Bt<&^ybctvLCiX~Z=>?n%p2-K~bjn=R zSmUTeBh~>SS}OUwCpB8lqd`FxzdUwe_`f&bimk}3MwOM*_lFO@w@5j?2b(iEu|Bvh zEs~2U%>!ce!S5S06M2LFuSBFLh%e?S8@J-NWw2Mi33_hbP+;ZD3T7f3>uPoG#9dp- z!C_D=8GqZQjZuO!OjP@EloesdYP^$eNE}XZA$1|^*!uMdOq@7K$Gsz=;qu4`tX{ay z++`HDcD*l&GG3m0(kzSI7fZ0JC_9Zm*ed>_-&+5Bde;IOF5uO-x^0rH4v6Sf_WtjE zy$Mw)&iWDI6jO)QMT-s``zsg1@SabVeGG;s@TEdXrnRFW)LrMSQ2xCa0ID<^20g^F_#yzN0K3Ft(P zwv}mJy5YW5t#kX{`P@~uUzno1$2ENtZdImDjf^W)Pk3HJ0cs->SnsZS546-*dBj@X zq<3GW_73@`9DJekaPqOY8NFZ6S1lMbNZBx9uikEV^NroG7|aGZZA{hE(B@6m z+hPiNW9PARac>rdR>v%)P+P@?rjsRBejx-UH{4-`!VkWqTRGpcvQFSF<*t+4rg-1o z_+8*j?S%BS7e}nxoK&6{@D(Ww#H+HpN4cbAZ!jsU;j?UN};ynn_a zPG!!a_%1S|Z{iOpP*}gpCPegL_O$fwvWIu6gV{hu4yC}90RG1yxGl71Waf?J8!$4o zrY@Z~4RD+@b^`t54hFg{xG#V_Pg$hqgMM_tdJ zmjm7jgMJCSi~r?axQNIyv2?yBlpqw zYBUmpb+309(*hU~_cR-o%29b6YudCj8p%)AVCaYXyDSnx>S%3jhJF!aJOb*(-`wfa z>WPb){DgNg5r$A=TkxW0G;9*c%uJ$+p5(@}O_q2Ki>PZbLsr5lrG-!Sw{|h(r-m9r zoi+|jVp(?^y*QNq zKOX3`pFzas#cMt{gB*P@gm|!gV;QCK3MjnR?@q7J$~a1VZChwujHa; z9j=pS(?vF8y4_SU_rtmRCpTVm`V$&|aQ7y2~HxQOT=W|HDJI_O9H+KgKZ;{ZG+Oq$yIV5lvXh}$k`;!U~TCzD2 zfKB6YiQphD^i4bi3*-RIQP{~g#Xmbh&-%r#_%^l3cXzP`>%xgQn686$cvrAxFwm#v zoi4CSu^{F0nr~L)fcOsK7$iFg8$98e#s`OCBP$JvNjqxZ2?FA5Q7NL%^Fi_Txy8|v zQ|wiE66!s=a;w4zzXl}woq49gbsKj(eQnwbb?O{qAf2<@;`lq}267nVgKbl@6`azw zq5EExod})EVcbi(gTZ>BY`1164$eht#fPJ+hozVyaYWsY^U=}1qm;s^gq?^1^Ud7r zvmOMLW~^5a(1sH2nT3Xk`Nk_VNUwq74oD$}JNh4*=OJDiakQu_M%MwuY9C^t9*bXD zD7(ZSHn&_iKgv~)d(7&C25n?dKVDev69iCMsbU~6Fv|EaDsY-y8Mfwm?Hi0}F_62@ zxb&k}cC5Z%R(15hD^pG@Ns_Vwg>FbUB2831Dt}S5A4Y6Wx^K8+zYp;6ns+k(tMfK2 zM`zy{5Ok@e`XuxPQ2W`(^NR;EDd)DEP^iZ#4+&DS;cxI^OpE&R zsvU3nQS9o{5(^m_J4*SaWTCr`etsDEoywHl+p5P{9a*{XoWAr9gN^OS#p%lk^^wTP zm4Vu-n}j)(rEWN)cG3y&pa395=P&-SrOrbS{AkFTw=2ie3jv4GX+MU*(M^Jemk+JCin%8XPqtIh~&)OTG zf-Xj1ec`@$-=~q0D%X;C$Mzb62K)Yw@6x0AhgHX-m%Xpz&Qe3aX7VJfYsg3Ces*fY z6F`AhiJI0_&8zY)Ltt%#xYFo0a`tBvwK50=Q__uoM5c<~Dm}qHHX+<8o$^MeX7+1U z+7@Rfw(DO^Agv;2@{+4;yCMrsPH&h1ULJcuPmXv4P_^=t(%C(R6yGtD@qDMAuR=9( zJSe&pffRtZb7Lb;LG@)PKJhYFD-2R??qD?I2DbJAtS^qghGZu!pp3$H6|}(dN5oDp z0U`)bVec2a&pycAuYz>zZOd@zyCvmuMIth4crZ$}PpC8U^$vbC)XCk#AqPKtoMcfO zBvX$rVc_4Yt5)M0#~T{DQS~+&bq!f_f@MfuyOK0H4*y#adDZyiCfn^jBNb6IxJ>` zqHIt63$FCO%15eSGRS*b*ejhzl9U(Z9)j+?_W5m$i{05=L{RLc;-XQj-`y1I-MmGFf4AQ2^-E3e zv-hig)ME_y1YhXN?>rxdeA8#|ZG62O0k9tcixfQUN!DY;SC6p!IdtIVpQ0GmU#DT@ z+n`kq*rJL*+Ty!R>FcO#x zWIm#)OiJ7)2VMcp;GpHoGMpLSvqAWwvOl}tDzlK*ZT97H{Yf3kQ*6{>k zQ3Dcc@pnKnUsONc;Q4;$mtU7BWb806?5zaM_s zMxXz9_+bY)aJTVkSqhGD4Sk)u0S>0w{U@OU*b@!D;~p^`8vr<|S;MYPft*`JKp?9g zhaF79aaC+M9}j-GK7hZ9Xa{hCxodB&G6f6D(KjsjxU=t9Pv;mcbq3g(DYQ9lA@&W?{n_BPBBaq<>q(;-orlZ_E&uG=+32M@rqmTe z7?L-m8G*iZ;9eej4h3vs`um*HkQ z3h~hqX*8I)VWo%5iX4WlXAG`5978c+K4Qx6jCE*AoRyIBsgFa>A3eE-oh-aaj?106 zmYU5i4_NmwE#~vf(VOHfNF(!GejNQUf8H*e16sz>CnB3rf%>-p-bQv8tDJLA5_^4b zy)>WE4WgAG%B0$h_Xf57^RGty`33{&JfUfp7Jmft z7fAT%9)eQc(`yR(`T)@scUk%kP%QsepFykK4gicB{L%yRc+7|&SMZ`n}n6q?uemwk9QlpXM> z)K61ohT8z0Fs>9V+(AQIlc&i+8&iR-#&#cs_X`}7bw?nH^(Yv17dj*-1sr1q%+^Ma ziV-t!bph?#>{E> zDttib{~n=#y0OmG*#eXaNj65oPR~Ubole%@a9tw(GAu-!yeRYAGUaguX?;4l%crs+ zIx~ef7OjTU6cmz|!GQKd9;?ZC3sP7^8s1?QoI8><8GDj%MA2={`*VWZ`>sw%+Zmi+ zALCBmQG9$A8K(pFCB=A-`mUx`@sJInD;(?PWrxKgU49XHAv{^Uc3ALjmL*!VxH}3V zeJT``9%W(zs|6Uo#>N%|KKNJUz#XHW9cCD_s z0-wz(WX>XxW%D%wCmS%YsVs8Vvf5pZ$WP9lPH3F|^U%2y?H$9v2WY6YvkUC5*pTEW z!o3bY>K+e?znxmSHqd<2q*gcAb70CX*7;CIXY;+T-e3ne&4A>{fs`$y;D-iR{X$c* zt@|TuqpNcJdN#pd4VX+)z~$ zv?X&2WFhw%R}m3fMbY`uyTrsvr!OA#9o2=0u?D?E(t^`uVwsKi^LM8;41mo`o4~V^ zrvmpx?f$b0jY|5oUd)`vuf_E#FAOOTvD2>dpZ%1mA>f0g+|qS=NOgqr!H^(*8fj_# zN?Lv04YMbtN(AHgz$FG!cjAkb>=n$X!@x$W?85c5s@9pB+&zsnt2mJALfypK7`vQn zt;oWFs>Ib+%MqyiOd$uAQ}#)zeh$+3C(@P>V>g;%&f=^@y;-i7u9INB!PC-DxkqSh z?qByU4lXCF-Nyz;&tb@M!pCs*E z{?3ut74fWRQQvjV9o25%0xkLNu#zRWh5Butw5Nn8KU5niIU5GK!~+ z9|qBwE8ZnMD!a6LTyi3JI4dP~uNa|WxR(+zgNE^}Im2DEWOz)vX)z;%1``P#YVI+$ z7NeP}^v2m-TW+0y9HC-E^I~xqrS9bEb%cbZbo%A;noZk(jWqlDcgh?Q>-?_S@>24+aS}*8ldQwcbWp z1JhZ_dPjUHRv-Fk=u1XsqNJ=?LA%j`lh>f}qG%m_Sk>F)W>8HQuleZ1?~Zl}7imQ* z%-x${Ace4uEV`kuZT^N4cxvo}iKpQai}%o9{uJ)XbblE2)vbE% zX4vGwz1Ri#=ko!0!Mq9O+vF7TkyR;&_sJr7pe?$j98gjkOpDsYYPI6u#7u|Td`SpU z3qZ6Wkj01blMEoYocOS#9-WXuisSPFH@^yJK59ujQ_WanQav{X@8Nj{FnMD$2^01tG@pT7)J;cjqo-^{lZ%yLZ@Ic@WT=knEhl^&`ND)Nso|L z$E%NNm}}p@*3@v3(|yK1e3)r6NOMB8n}F#6X~OZ_ zIUi78s98eTYQ9n;4t$>zQZw#ocqqJW+)wT7g{Bc(`T2nojQNvjkl!_xXMkC1+`nZs z^|I9ORK3=NJD_tNxJh8jItO|b#7~_YpbS;Iz(C; zN(4a=B--g%>(tJvbu8wXNa_?M677_x*GNsvZJgx_c1N4NXFfB6f4dgpz; zufy|ty$ExN9$MpYZ*hl&g3%8oqp zm*Ga=0W$!^nLT@nq+$rW&-k#p6sHd%{^wSXZI(-ZNWAQw?70_ z;N#}aK(|>v4?<4r3YuWr_W);MqB2wzhk06}{QZl+N#cuB!F8wp`p|xC&qR=bS1v50 z|LuR1AL$$984tVdqjtC^uDO``y>R+6Dk$B>gI@64$$N5@x}khv)QWCg@15Q7#JWUA zbclgjgK!k{%@s9y_EhWoxbPi{5Pwh^1k$@8x*D1Oq4X{NteO#Dmo-=3y%gFkbDvOS{a#1 z&YN`QbU4Q^wdGuGR}7nUUbVHUq@p|XS~fQa#N}xGS6`iCaML4}ebR zet!I_WdQx??D0FkDuX9h757iLr$+%^jlqR~j04bVt=!se7B!-tyX4j*bl|BG^?WdACoXb^vzOc;%d>;*W1=>Nd?#^O^|llqOTmO)IUCYJ0wD3(!&G zIJSBf1FC(14(pG%`$5=)```I&vJWYt-kHNYKNJIF1`HL?BIWtW zQjg}uq3vA?VGIAeMoI1t)A+AAIq5y3mUyKb32>qQ<;nwRx11$8cwqwxXxc`3 z{{P!BR-0Er| z`Fh`&YW{EA%W@z3h;wcRnRHO=RR+r8&bQ)vN=Ht2*b} zOULc^Fy}^Ubn>_dWp(m}Ul$E#ELRu);G*};zp%{wPD~4|#j{#s-KA@zfJXPK40gp1 z$ECY`lvhrafEqILvRC2Cc4FTgI?bVkq={rB+A-pebofLS86&A$^-~9S(4^{9_4tGs z=B=2I{sJgT5G{j#R5QSE*MQX}AJa?BZ8y3VKHr|(u&tob67)Bk?**Xw+hw|M{&N8p z+GBclyuttVhe_Seovn`kK1rh7%`zc-aOQNy*w4t%62`TDWfWR0hZGOq{^O+fev_du zmNpJtxS9dSuzta>7TwHLy=ijudD66x-pNaHwZ*-BRQwo85E1`4IL;9~ER4$qEW?Ki zGh7D?BhEUDaR8dCQMsC8wLfk?6a(b*W956(uks*i&$ZF>E3E+lRkx&a333^Q7|oZ` zG01H5Qy@dulh!zH@i_MTC@e*!SChXmc_h}Y=#vay(yatwA{_l61&{ zPL-ITi`K41uA%SQx&_}@Z$;KwSiFT*oX9Xqf%lsJIsrhifaPd}`BH3Aaca_REg*s& z4oJ%;P6S3L8vZqXG0U{$o7xXHE55wRuxnqykUj-C?N z#^l-XmbxiX1`Ca|aQYV)YC=9KFJb_n2=b|V zea>O8mmc@Pg>b2cy6yfDv)?c0FCT7uTQ^YDkCQ~)O7F=(HrEx|EI!LbKpdZq>>oe) zI)Ii1=>EOHRT-ge29Ztp`r)7WVkfMizeLdwSB0_f~uA z^smn>D_GOJUPlHWfM&e6NNKRR)$gj|%tGEXJlYBqrmk;qsO}%l^#GPWoQH15dAJVP zrbmyINTUxGN?_GS3DKj)#a$cu(B9Xg8dE{=L9WxeKe{FPjm)CF8uV}pN_`qN`Azi$PhG6aVxMK z;U$lb_{qfRM~6gCAhZ5xq&c3s??N;S*ta#mv?Kkh-fsImCrXF8pxJ_DiC7zH6em^* z8Do2jMJKQ*_N%C=dfIk3U3n~_gxyV%Fro#r>vIJ{2hzJ+WZN(YCg;b?4z`S0qDQ|AB(k<0z#y&%%q#?(SLikiqM)H^Jj>)R{#XBB8yYwfpAYB zS8Bvs(N6$EX&>EzAsGoE4H#=ToNQt>@4Cl_q?B8n30*AtI@qp|uq(*2HlV2XT@ldX z4ECsslcbvMy$+2yUc?$1ia)tyJQ82xh-9<_^j);LzjHwk9{?LI=$tUgGzouEyxz%g zuGHFfd0ew()=TuB*!*t)ePBPGPKvl)#56Cwr<1jSR}T3We`@kKmW-0NKb}2S>p$t- zk=2LzlFa(ZgnKd>MY$Bv!IlcA4q;w);6OLRO3uTPdzMN=@q1gWn1ZADxNYKuaNQDb zmAeG%NJi3el`&C*--bRQ zg0G_i$dXe5n6f*JgzNS1&zO&%n>-RQ@@hJ?{BI>}4c#XCNii=zrLir4=bB(i(^LGH z<&S-(8rRCmTvuni)O8o?op5xeP|_Xw`>R&$+F7~MEyuUsA1!aPze!LFw8N*==m=Y2 zf9#%(z5$T`uSnQttM_%|ZEDl-&E@)@Ves>$&feNb#p$LoDf?35|?EkgO z!mLqmTz3z%FA7h@AgwBsI40&POgELwjfdg~`UiO7FMU2|Awep?xKbx+Pdj;6s=azS zaTgrX^HZ(Iho+%D7<86oi@eqHzkzbO)4kb zN}(id;9BPWvI3?r4tBE101k zxvx(62Wh2{-Bk7twrdj)mcmuO_om+n%>};To0nqqS)?Ma0Gg6xT3bc*jrU!O+rH_L z$+BDua7Jy%m)9c5rJ+!9 zxh3dwVTTmdilxiun-NUFNN&v0qp~x8->f6U>gEC)c5#sq zJ82~O`m-#eDNIz@9)>pDf4hZEnTXF2l-tp7IWvV{_)Fh8f3|66ze*kIEJ0a4@JmWx*Pz7)HVhAUAh%>|8Bb;slPi z!u^=#|L^MjkGR&9p3C3e-36fY9?k-gNmD(5%UHU`33rQlQ6SX*H9#c=Qz`9xWNp#`V5#=}YJ3&2^y!D*e`Wq<^T;(6AgS$6 zUQF7HfadD)x4!Rnij2H9v33nr-C?j0x_y(M0*IejOL4#|i_=^iR?Q2?Xp3Gc)Z@Qz zi$*_PZ7jxIqifr?oV%G=KG=T*F2z__RU6nUiblel%$cX*BW1-0&hQ)f@FpM6D6R~E^ySwvq=ELpg#7B#jqji2_UlGBd zc|UBd3()X}F#_Sj@TLdj=Pv92HK~}p&(_J0y9ofJFqPuS@X?(T zaw7j}1xWM;XLa-}?#fClxj{#!CA{yx z+aEJQeT%JSJ3Givv6^8wQLH_rIlv#up^x|OWlJdX2KV`Rl3E4rMLS?DJdrsuR~V_? zc;v7ly)o%HrW6jC@CX_N`&JH?-|a)Izzbi8vyo{zJZ$%?7jWG*G~O@6G(?|J=xtLn zAxh8>-mw~nT0E_>tltjL_Md|`ZN`Ou2ZNGJGts5;)k+KwX1cDu8c-fUu_8Rx-Ap0nSX|FzGzrvW684Y+4243utFbGS@bhUhR>JUw+cd zx$o%kFU+Icx23zCNle|D-6_i!4V8YranAU-fTU5zIPIIeKBt>K-(`69Ipp^E^u8!Y zPD9U&#wX%&WKcs0@*u1uJsN*Sc|YdPIrYaw9(Ci^@7C2dqFwSwkc<7C?DdsYjVm7Z zeUoyWYI^GI`Ut*ktJN@bI}*D-qO0^87FM=ZmRwpld8r^P%{6s>TGH%@p%Nkv01`_z2{i|kkbiK*}Z91ix= zSD(o(4T7!b?TT-nG}d_d44M`ByHT*+37q*Jyx*3ZX(6uv)b45H34N!(o(50(@=uNT zW=f5q&%8tYH@w)HYYDBsU2mYHJ{mNf3%J926s!9i5+6~l{=$Pl#vP3oN|VNqMT^u1 zqKN&k-B388KZhy{J(s5!#3Uo{8hr8C=BX)r+=*EtwwtqIX<7BB&}F)OtBw#&64b7_ zagc(lEEr}7G|E%f_q?)M>G}k*-gmtEpTp>y(cPA@yAoGAPS4FG9N%S24D}>7>h>(L znH8SJ!z+zSdbE9&f@RW;>y(<(05+@Rc;9JSpy?T`MZ!qR(~;QUHl7@@G5zJVim{eK zG-gP6RU)^m`+EYGS7EdLvyX3%;0G!B?O_5TnbMq6GP2Sv=nGr&$=~R}7F@W)UczG0 z8-~FhY!WBWfK_L3C2|F67n)3iD6j@R>QVdUlp53r%bu+>dTMg2c;DS{FH7X((b39eH-#dQgXm|Yn6i2z1 zVKU_+fp)(g>m3HzU;9szlp1KOygrQiOHN?LXug>sGI?qa)i>3Sy31M)@Ob8>Pp`|9 zx9ljAxO3BA>8~`b@0dx@(FyD=fJq-5)|84UYBAsJG~Mn-y48 z?a>b#G$Zwx^Sy;9+CuvzDChOX9oKdPkMuUAKHaWcD>7}%x+vp2Di8l{7L3IeNympX zh~6*)`xy0*%C6WRw9WFTh&eUzT=^e|+E#N>hm6BF*mmCG-N;pc@_9mp`hgfJ$dfFG z1sNZ%E0SD*^DmshG!Ax&*QXl2e2E+FeF{w)OF0iL?aTU~4Y{7ZKhxR8S}?Td_)>!k zbrW2Oy4#*7xM9+%Mx|pkXsVj&dEE29a#_;7;tRo`AT`7Cko~Tyn|JSfDyDQjGaWvS z*GB798Fgsfk|6CeMOq@mVD>St8o!_muKXJz;ewq`iO4F^H}B7YoGE6_MVuGM;lp*hKkS;{xXbG~LRInlajWzS}H7@}VKW?^Rr zGEF>5vhGhDBCM5W@|ML&le)$_0fN74<7PnOTILlAcjrF{V`lEZb+KS%IZV!DukEaM z7(z^y6+Y8>Xmng4F3CHV^nPA_a(!q}r+sNR#du#3!o{7|IC%HT_2m1IeV)VmjjisH zk${&m@pt{Cc@^0Tekkl}%=)n>y>slV5Iy0ui$~lE~h+ODwbb_o;Y$ zuJB6yR@RMq^&ixj{?fjgYSkjmUnhfa`QlD>a>}mfO^4Ek&=Y{}5p~SWe!gMy(3@Op zTZK|9ZHi<@YoH%8Od4y*#DbF+XD&`Q9*#$ZUHpTE{d2-;Wx)WiIhFKSecLFNi2S?aM5B#vtAG_T>M`!E<$}o7-NRylb#i z1w?_=^{GUkN#svfI-_(WwhCuAe3!3cR#6COOArau7qCf)b1_3-7q)Y(uq;$HM%v~V z8e_I?*0N|d?t?U>@>Yv$%y<(Ky_gTN%{?%w;#4Vbd#hyQvrkC)tMd6hoKMBr1im~E zWPv25YG3sw9Ka`{&D z(_H~o6&4$(Gn{*toId8v;&Uskc8;ic7zv#HI4LaC#_~am)Iqt-n=B_r>4Ec%?G|>A zmO1r@t%RMtFC7JOplbKsyp@e1TNWc@fb!Lv>1M3;RWxyb5 zbVhn|_j{sO)pG~C0mpZTi3@nzRNF)Y%%JUgSAwl!-xj1-c2wYm?xUea#mz<^Qtw3` zOtDz^#M&{MDaG1=k>Ua6Qm@(ehzz69I{1lm`u15faqAwE&RIL&i-uDE@?jO~3)~YR z9c)$sX>>k|F!sis_M@NMsPO>dvD`4mKk z#dci#a+uESwQeC-HX92?`q2DQLx)?lM~rWVS>t30{AA{dk+z4{CF@ohMGYH+%@=aX zYNLdT$(#oCWU5kQDzhGU$9R4C91|9NXgC&SoRUyd$3;8H#LW}VOOOuU5RVZ()XYhO z;fK<%jf06*s-C@@NlX+o^lXU_)k(NnpD-P^7$neOq-5|5Xy1*b}6&a3f^+6K zsw!x&8Y|P~?M-mt()t*-JrwS0H44hKo?KsPZ!GTsHn)UrIaEpp?P` z(p7)cRJDqCw_6~JB!@k16eUmrwf*diI&TMfZ{$JVVkD+i@M&n9<^IK>Dd* z8?}!Q?XYFJiCm-r+15N zj@`1eYnY@+(3!TvKAc5&q4BeNVqg5dTdr(AiBj(?h$QjjV>qh{v07_8?>@!2`&8$D z)BTuAx!Mi}BoUYF(34%KPPD~(6I(j;*}&7a=nlMGWvUSG_T_S9e&w)2v(gdTnU->V z*_qC+nWaO2WIq6zj-JjeuU3q&D-)WV0%FO!-OUdC4l9{$#@Q!zcKx?oG%BN4afF%+ zfdkHY5Tk&CJ5d8MksCi*{SpCh;&T!4FEJqBRAArxX?r-80UdR%+j$U; zL**5uA>G&o8DGEJjo8CU`*cWCcSaNZzWMY^sC}8DwYfT)U}*@{yeU&Hje}Y!w|qfa z6n;lESd`$MKU>n}kuqZ0TOBVUwc0+cf<)O5Wg8?h8|0fTjV*>wLUEDg0hH~j458IF zdL-7EG$IQF!@W(4#JhsWLJ?AgCwUVV6uEVrXZ+BB`WAlnrGDpV11xRCM5OUmi)Fm_ zEc#n6Y|)_X`nRH<6Od{j#j?77>AHGcjMQFNB~R?fMr1TP1PqE_2ewt73oScM?SD}d zy;>$nRC3n@Bs*j-NsGp#`Z6r|qAY%xHe2ms&ojPjAaGo7*{m?*ny;4_`<&c87yN!? z-@_cIhLA>BQ8=SUPY&0oIY3+lElodLgzC(bYb(Vw7Zn%M&fuw=O1_*HI@H z!s;GXKweG;6xobyrxfqpBR+|KC33@4IS!h? z@Z)ZV3b<>vy%;cEN@9;I{f2oBSMO(t@4$=#&e~;&4*4S|_jGr`2|;JK^zFwRGP^K9 znT1r&1tMKIG&6B9rD5BNnJJU8X{d?FQCnJ4pYeC<(C7EywmBv47=<25K(h z_rlIKY>BfDzH|6k@QPbC?Cir((_!772DCEz>$c*gR^7IKB|>UE>-0=9(y0E8nm9r*s|9sgHf&}cW2K9u-|`UXthm`j z@uXlC(uYIl+JUOgG*)k59%eo^b(6C(nY@aM59B?z_+YXoZyGvB#}=?QHnU;f(D+(@ zH_Rjh)kzt265Jujxa{;a3l@oRsw`>|L9Feg@LFF_wDcR%l5N)_$^DTN4X5pV0;@@q z!de2k!{~AXdGJ?J(;^c<+fbz+r+c~Af0NfP5xF~>Z*P#kIJ7p96ex5m|vj{>Lj{l@(5|$ z&K;?D{3xamPYl0mTEL^{(o`*~5O2pm?k`4TeO%excH=iVUyY?M6m-1RvALt&4t3ba z2G4u6ou@aj`~y(a6TN&{=I}T(AI)z3vDa`;VfOG<5OGGZA%UN!Xo-s*E7#t zF||2V9{p6@n0ct2GT*uB?oy1JgJzYY{1ZJ1BRKS>F#*vs2~#OP5^5vKyvzI;{TK<3 zE17t0*^pW!IWgBf9VfT$qd&0LosTHGiYQ}m6xUHZH>=k>97|dbqMWH$5xvu*?PIw1 zz;bM3{q`vcdvW~%LD?J^vz4E<1pUL?MxB6pBj(k9x@Zat)}L+u^pDNv#O2734c^;T zJCbRo+nq~gs%t&>n+9{0exSW*P)dMiQkFUsjnnjZ2-BOSLGq?ZLppMoo!U}SNH*vT zIp}nq1~ecC(4OO+hF9`-g;jC#0?=A0)WJS(Ge`}>erJy8RkEdpw`x4e-es?TI$Qn| z%Mw4+5~80zfWhNd9Eu!q zmn^RLme$Nd6ujTcSTW;Zd}NRSwITCP2`WvzB)zE3HA{|G|ArCJfuulHSQF6`q(5d8KUiE7?zjWV z;4R59$yPE$_*%PL0&=gRdi#*(oA}cALU)heMXv!ue^3GO$@a?ibP?H!KnAAZ7 z-`x2Xk?nc?-K?^9t4-o*z%fAi4zC~V=#u=GoDfyT$*ByQu^!iMKi+qgFy^9s+uNZa zZh`<2OU)|^JJRC@0zGrr7iiV8lNo1wYtqq_^v-h`^}+YN-cGeB!FXk$Ald0h8lUHh zKn~<+m+{$>;kLlTp!KZjXwxWc5j9BhNmul`ea(X~(@}ww?#&i!+GIoLs3XS{-(T@4 z(E>e@3Q5cAi&!9LqD8HMD|cc(y9>2x(4D9WD?=&vj%-KJD3PgX<5zWxO>>23Hw**_ zhPr)@pFY(8*$wSed!G4dI^+-uSD6ulv4G>?7WyM@uD>!WGXkq&kk`5K+SF?pwRlE^YSnAZrH?)o;J2n>BMz;dZZR{nwk7 z_0;*rr>*r@l+Y(@yUq;MU5Qz@S2hABhLD_H;p$&S!*AHne?>* zU-luq)2BlZyK$m^L)&`f1Zn)0Cqvp*%S~2QgN7n0(ysWHQ{+{K4 zR4$|$=>>z4Pf%&{G+8=P_$ZmTspKG3m-bowi6sek2oW#gSFQGR{1()qdo{y+qDtlt z#=zU1A?;M7lsF78MZavTr%ezX<7#nzGHVDwet@(cjmCjde@BFhZBzy8|SHg=8M$+fgE&QZowet@5SaCt;vfpX-$GB&M8|1{ zHR|C9L~l3y)#}M!^cK~mRM{D;$Mb3k8w-i0J4}rvg|z8BJg2jJ;NoNlCA0K8&U|EP z^GFZ$)!;rU!OWt+O?1j=9Qnh~-sL=nZsTwFfv$n};pIBW)zB zZ6JCI)SIgV0itU$39S0hSS0qw+Lz9so}t!$O3hIPnP(AGp;gI?_L86!M>|t5_&{on zb_t-`r8jgAY5`YZ>t$3GSaJt?XMHUXrQp?4dnb&&^k*{8GzFX;uxc#b04>h6g8;)o z!}5}(>PQWllBZSLw(LxsMnv{B6e-_wO4I=h@;6=hRY2L?WQ0z3MySD2>ZrTty%hVq zT0PC@CZHKELzhNc4~o|YPuhPlUWO@IKCbUM*k98vy8J6ud9`9KpYUwdt@m&ef z>WMP2cfWiF@o^x9Dn=X}0PCpw1E#2=7lyh?xxs(j=r@-vQfHM)F~N4_t+}O9d+^d# zyWPcf&6cI=-~b8I#IRU*@VW-TOM{Tt+qE89Xu(zH;RU0jU;f} z+>uITJMDd_mVY*PHD7}I&spaU%Y|{e(O67|QHG7YU6nLGVkUu? zD8&A>zM=Tf&QRu%e(~K;x!%IFPdz|ED50gsJ2NmqaA|dAsl2yt}Oq4 z9y7S09<@x3_p}2i^Z)R1?1y9;{Sy!sbZVxZ`Tx98?thry&(zyJ6@j_ngBdJBdr0p$ zp6i=x?t%xY`sP*^8MtBbx+k~O3Lg&#ph>^Wj|_IBO6MWVW!U23jVuMIAcwRxd;Q#2maZ_2uR&hspG zw&5PL|Eg>z53y}}JWMI1K>H&zGISQWX1+fmb*Ng6=-_dnf#R9(kXFAe1oO*%c`@X3 z@7mrp<1$PcnoBrkpqn@}Z!MjrG%kN{UzFSiaZ$cO3%bf9a{uL4XEQwBdgO98)G_aqZ6 z<6Wt>r6B`htbp@gy+?Q*GFb0zPhyr*ZECdXEliz1<0YZhtMgr1hox`wU_~KR)88=T zifm1_jH7fj6{&nA0wo(FBGhg3pl=o0Z$TvjUa9Xe{y_*_ErM)R0+1f#wp4x#7C>3z zvk{Rh>aRS6)8WMkMwyc`^szp(fGYg079!X7=3C7dUkLMNIf*4pRE64fo<+2;&^cM| zvrZidDX~-?0QJRFQR8voJz{w~ zvO_qS0XH10>K~?v!-%=n9sI~dyhKNVKCmU+iHC@*cAow_K`%D>_sbqa{Q1V-SJVMe zHjtYsmLb#?nN6k(r+2?~4@>lL$M0Yn&&j~JO~v*UOtA~1FtpTOO!wWsvuJz{hQ2ut z1O&#Drb?l??A`V_LA4aB8hqGGZPt{J%^t&MjP;)_6jVp4ujfvOs{4A_zxOLVglF)H z)tXHIk_Qoeuk$Q67wjlampEh2$rYxlbpI{4kNYEgjMS*6&v2gYr`d}!2%bIFFT>~( z$Wi&~((bH$v-w20SH6-jO@VMc%n#(GL-*U>tgyD98$5%rhuH;ud>-tQJO(K`O^Z8W zm_|K9)%lEPkh*4x4(E4(#DN%r_jSnqfG(lW>VeuN4quUfBG|eVP^k;DTmpC!OE}LZ>JhX zOw-Ficd31-L*aQ*!HoDMYL~%=iP}L>dfbxBCJEpJP<|R4Z23A3=NO+FSKp zU;2s=uwS&)IU_ya`pi|a8JOMfn`9W+V*C+$U?498z)8VPYf@Kqqr0Oi_yZAQK zl{&^d$GmPc6xg)dKvmQ}nfJ&`ue(p)>ejhE{!4ACT+h5nhFGs_p*f9*O$eRh`;fO- z&G;@5E3(J}&#PrvTI@gt)aHm66UR!vXClKU`rZlJ`pG|m#inGxP_gtoe@48iZ^_3< zhpbwPBM$Sq0;_N5_0CHy@IT)YhyT;Vbp8)Kaw)ztPr>@YDug%lr)mmxT!ZM|f>dnl zY8J(yTD@cT?@Z>5yaT|Ek3j3{nZ7;E{cn%}tC)iT1^_s#%m!PajXW`~)^VCY(;79F zm^RcK0IySxfd-`1CywnIgk1JsPh785b*9xfmK3@sQ@alFw~k9K44odWBendg7kZ7x z@5(iv4Kt94Dh|`4UH9O3OYLXF^?M>GY9F;}N#@!J^&Lis1vmD&W@H@+@gxjLh`s`I zyef)u9!PMj`(wUobx)f0+p>(F=rm)PGoCZ9`k$K^btcr{X|0vnYE+9fpbZtWzfa1i zA}-nG&08B~7?FKxxO?bsE(^W*gQ@S98VuYG#15fpNRvuCs%QCo)n}$OPSRl%>?ba&vs9g>du?* z|5QH2uKn8}dGbS)LZ(lGx_5Ej-~HjDL=Ss*et^3>7Y}rql3&wBt zyD0}6zGG51Z^HEj5R*gQOTtbsm@X?0R!?vHa0rToSzZGAz-g7>z;zoCFFPxjKxhEfB^{vsTrH1wsUSxKMR&Y(ZosB?FUk8_ZG zOMg~77g>nsf7li-wNTvEkDo(@IfGlgN44THcPKmy&YO&8pHnP8YrQrO4nrYZIY9E4 zsoK7yVC@mJ*|+!8N$C71$X{MiD9)Yx8&d;1`1Z=Gm?O6_kRanj`~_NE@sY5;5MScl z&x@1W1m6O(lx7O|%eeqo0~+%)29qOCT7e|2J*hI7Gv+wF*k9gXU?=SStE@!h z7DMNa*5tCR8h7zuSzM1_f|kG0&bC z9N5f=w!)1lQ1rXwTXL!OBa77L1j9L~53|LH4p(lYOMXI(Of(ERAr1XV2W(qXR&^M% zc4t;!y(pn^xiUhf9)^@l`N>e?UE>xXE+gKKpNK7i)Q?P4&2)`3o5E!EzDmB}ygj$& zw(n%kwE2Xv*p6t*L4}nI|CQam``7Pfr5$z8@~c;!xp#h1ugtyR2XV`npSy`5O(-xF9uV2aj|vacIvY2ettXI_2#VKn4GV^w>Qfe0wY|m8d@B zE_-*I*tt+q<8R_gu>|mymw!W5&^<1>yP~TG!g}@An?czz+%VauPWxk26BxpwX;`c2 zp<-Q=D+X+iiNs>1hpE37x|*V|9$I(mjX`Jcsh=Bl z@!ehS=e_4@I_!q;RnM?<*h<93A`hLAZ0_b64o&WCskwV)iI*!gdLL>zRq-AZgF zASs;{G9o~-Ak28Mej6U_^W-}4>?0V&ifgIuk8QLNRHA&dV6*8WP7^fL8_NnT&}zuLu;oAfY)lHnOX@4 z=eUqfexg@T7i&-_!IOxM-!E4oX5nY;b+3(__I-nP&sVd{L?xTl%}879SA3F-f#t(@ z{x(kD+@}}de*+#Ob%SB3X`;5sc2&`uQMSu#&%oy)u zOo507LscCIb7rAZoWykL8uJD%8KqB`_#eC`>oM|+8L>GeYs-^pD$pl3oc4VRQN_Pa z|J!#eetzl?8-?Ol4W9#G#k@e&an{z0Yh8E5#s9d6uhnDzImQ79Zy)KAMzN{BX1DGL@=dJ&VRi*E zsnEZtzHz&?AMyTX_J}2%Vu99_Gy$ZuB;Wv$Bh_cV6ojQ7B0Z<_)FNS(5*~RoK(_!= zx=yax0+Jr14+1m3xlr;Wl5d6*lqNr5$Lx$r+yHwOzx}dm(WGqUSQ(7aadImJyy=S< zZpPh6UC-mMMIL6_=C40xiV|4XRS;QP0it{R7?mgLGwO!A7I4SrRRl*AdQbn48prWE6O{F&h z0cjyf4K=nzMZhafsUiYOuSw|92vMrk0HGrygdS=N{7y*W`M#fb|9}JM%b(U zK|&eH<~tkSTj~I!p?G?fM@5r}ohT0B+9R}*c99w^qJS6L`R=2Bhv@g-sPX2J_@c%Y ztdcP{#lFdD?_0NtjEe#1J4ML+tIg^LQ>u%Bd8v>61dhcMuGiKlKYGpC-3Y8KN0JxiRHZwzB=RY(Z@?5^(gCK7-lZZBr#6R8x%X(vI@uBc$A8O*tKOp}G<>M@= zJjI@>w&HwmodCU-hfIxrf|mpCb9`4Xki|de3WaAmUbgZErm1|gy6|s`97UP||1J++ zOT?GuT5^1JoNwpd9sAYO{OClpJ8-QOV1+qf9cW%K_?X&CfmC$fNbWDz_vsMb1lHxg zf4xEtIx>E-wF7;a&p|)_L8WSUu0l9g}l_j*E@8*J@$1Cmrl}E`YivC{iGM{#)Ew4ThD<8KDMc?2GZ4A`19Yc>nt4+&F z0!^^JQz3)6U)n8DqLo&Nv;=-peb-8++u%LhM6rp|)R3u(<#)OwLAc<8DF;$nLj|R3 z4}qM!nkLFgIP&PVg(fO#)o`=DT4d@rc8`C;5~|r4e`72OIf$!@BR~Qr;2O%~!rgP# z3xTuBM6gTHPhY(9b(;Gf#GoG!XgGR(dux$1dutJfbZm0hu+{^N*`698DRiJNvE3)9 zUCO536fdPIsTX8eK~fI+&_}&KP(i}C$<0ttyr(H7lJ zQLctoV8vh$KQkcSI~ripFpB0$XuJq)AO9Ev*BM{FhfsatVUvL6^Lo3(sjU<11 z*OGu+;6HqHoYpVjDNSi6UYy9)T=%>4wC|&OBYm-J++1PFSg-E^+6E~Acq}dHdwvak zj|x#LN#FPYcO4)0-KhySx6%5sa&ID4a-^2w3pG^|6Mm-kzWOtSu+E$U z>oa$;rHy|ELL7CKK#*}Xpo_yKPv+yaRLvb(-I4&~T_Y7G za|n$w6|Fz681uVYqd+{sk}|7bGubHr$wNtuY<4}7uT7)=wNmrQMB9YdVcVET33k41 zzyCG@v1C4MayQBMvRVEK?9`ptceQ?Zj~Hv6G3FZBpW`S(!6Ch@u=(=8r5ka6>kr$1 zDXl6FyH=&(%ENtIxXJ4e)=P&ZBSM@g>3zUvAK=tuORFybrnLN=SE`ldFT^GdupCYo z89Q)?YdRb{>szZ-r(RDvUoE?=xZgDYJfVKpWXvYZuU{;3>Qe2f@4!7gFTsb);oS&- zBpT^hb*>RNaKqN$3Ev|=k0YaND zI4WUtfN1QRC83nYH#lCYVJHo34eL3(D?84)C>bwT${FTny8&F*!8bDqtUw)~YI6H! z6+L5OH20gR@$D=b92IKOKrNiRuTo3h7*o@ItMK zxmN!yQ=KEacbZ3)84%t$yk4c5)UWH~V{mHSD%q>22A#1KyPRf#vqP1y=MZfHnky9| zP+7QiWlz=SI`l$_$IylDR*gp?U=d;P4(A=~%3 z`zT`<`3E@)8SjC8YYX)Jt?QF5w(-RQ0=^`Rd)6s+%i{d`8dDwJ#Txt`J@QnKvezrU zU{2NW^ZK=t1KF zDSjci?+R^P-9EP}3o3?p;9TMQo$V&_niyD6AdKSf7s6k(DDVP~OZ}`Yf=XE0yplg9 zfosM~O}SUrcKs1V<`G{7{WsP3C|9yCV#?}c2zc5181Z)Bc#t~*kp9nVk>xUd@;1^! zD8dUr-xjPFw^E3w)!Rb?$Yi&kjy#hPhNHN4 zfVCjTceN7ii84S!LWtN}oaIm6obb>8E(59@dj+D!+qZaf#Vgdyg1BU7CXl`CfWGHF zZ{8VR6lav>q~{AbRA(Ihe*$b9;Q=CCIT#ex!Ne03`7w1$54P_^aRc51z!iYtM zeGLtT6@vRs@Mt?UPkd)k+^P&}B$%LzpHb?wl_Yw)MLYUleVVvZd6t~L>em|DU4Zp1 z9!i=prg7u*^HA77Rix!ceCdk6P#Y2{){S0XzTLa|;I-fxJ`dpPBV;Rrl-Df0cp-ojuS3LSPdgiGp&o@7SEWo47fx4jc3A?ca$(ZlOMdAs zJ)S=lo1+jgv{%x!ztzO2*)!p;XuM%q60X!WnG%OwJv{*#8q>2uNDlZ`f01^}E$CRY z$kpt(s>v)Xu&xhMk5s&vKN`U4*Elv!tX4hSipZ-;RpuJ&tjWZe6r|Pm&1H@RdX!vr zisM08jxXmH_Hu(nGycc_M4mQqV42L_H~-lYaCotCdF_dc~6K?uZPvFw2Ce zz!n{9bbAfe_-rF*3`Ju~S~ptU(4$k0tR6`?6E+Z!mq9>st3v0C_tbRBp(>l24(Zi(=xnjKQR|3*t;04KP<9GuchLmcR%RZ0J6Xp48>M-2J{~gI)H$_;M=al@T ztoHijx}h>TNsJayjSN>3h*b12b*%N0mNghB7Z*%E_tG#H#@|P|r-uAdFK$g6`kd%J z)r!z~WD`DiM)2w43dE&Jvh$+5jJ<7JK6kWOX2|r#mBHl|ulSG|$arAik6-*t}>xNC?r(WHQ9sI)1lJcqOnLWv`%PUTI24l@n0^#xRO~F z+9h~{(w~)6U;f3#R&7wyG{LHMxd7hU^<_Ea{Zgvq`bNuY@L+s!LH@4a_Bpu9*La+& zY1cn6?YRoidZz5myRV6>GM+IG%8CAt(DO;4`QKfbVx&TIRSa}biEqeo?@0W@B|9Th zy2%i&<1_kP^Qg*{Fn%7*nK1>7u;Wr%<1Ojaj@2gmHN;(ivpG{;T|Zb|P`8NL;d2%{ zSRqq8^t}g>iihORQho24#X0$P;u|r!)9LW1&jsPJ6K$pg&T^JbUJK@2-BT?!lp?*Q z+Wh$Lua?;LP6!XVq9}q={hi+dZ3XYv>(Wr(Ioa*~D#RMEIF?8GLGJa_#aLIP94M1s z@A8Rnn>UKB6S@h1iCW_U0wySdLjSzV6oN>BTRfSZ$)8iR=TOiau6v*yHFS82u1e>%bBP?V83bxQ3Eu-|iY>DIL?_smUO^x+pkDG1JZ zi#k6bC8g5wjYW#{Wy_S*5Zi?H8(;Vkhf~V;&PwxuN9gUs zW!5iRIVe_(;>OH67IGp&XRTk`Ws_L$NjTD^Yg)OefJL_u83hF_Dz zbSNp1ORni@(Kn@NHzHnhNLI^s+51$1K_4D)l6S$J9mf)7nT%2Q41L2iLGw2iQ#Y%K zHJdY#J)lF10lCsZhPr~bZQY2`S!c}{AeG?G$6U4be4ZTFk1bzw?!@tBSXzIF9=aa> zkPw>>uh)B$1D8WhqhzDh%>4 zn$Sy6%cj<_{JlzfyQW9cO6B&`%T=T3mENJJx@p$s8=SQSr;=HV6+Xg}MYrBq74Cj{ zA1**We9Q{x15V7ZK-x`E!IC(A)L+lwyeYD`4VGv;ryIvJLAX8F);V1`CyV7(&YRoh zR&+;-Ox!DabN= zZeS#k3ruKhHL)aDKd`hl>UO$sT{D4eP1G}&n0ULqNK>f*tAp-CqCNjISu!s*P5I5* z&%|?$3qc{b(mA5F2keM8-c#5GL7u;#GlTsVCy^2ECeYrUOx1`?pT2X(Y|s5>H#9-@ zjmKVdqC5mVE!zle`^x8h)R-69#^I)jNL|Id(quBrq?$)d+N;*C-y{6H61(g+Yz=O6 zf_Aq$lz?r9fWa>YNDwDAcyT~Am7e|>4HP1s@mQ%Q7G;07CD3!jZ&7r=-naZ6pm^Ec zT@2^j==&R~3tX^9k|aia+(1&$@os<48_%^l(bDv-Cm@I)R4Rt@GMob)ryZJGS4}q+}g=_`I2Qs^U!-ospQ{^w`UwYwT(ohT} zBP5t7wIYDft3|yWum@6mI}>-iV36OZ~;tA#bWT{WZ2`(LKbom&wq7zb+&=w5L# zkDCyhLB&SY|LF)ljX=eZ)tOKlc*?m7?k4-^leDJ2qw*KiW_Anko#3dF2dh5X5U zAkQ*{#(5>2Jh1r5Gv1PmC!EOVNsRLa@`}hSM1`WB39I_C3b*vX3Vl_?){YD%J5Jli z#eO8bP;bgP*~}AI1=MrD1l73bY zFLL9j*5MwGWgEY6YYDF%Y%d~29%%^hqQA6w2|E}zBCA`J6?1oh(EcRNb!{wb8MyFg zv^%q*QCHN64X&I&cEC97MQY-30x@xE)+J|BR_z`F$zbqc>;2I}ox=sEr*2fPe3;7u z@)6!xAw{0l6iZQBFcngk6JZhf3om5qUk8TpTgUO>?O!|jDeV5G*O0T&_T@}szJv5c z%D83CrW3SsZJ`gj?3g^Ap6|v_tUeE1f-zF_+Kp$dzddO6?+)}-O{d#f63#dH2el-s zh_=KJLQ6z%iZi`t&~5A02{+~hZf&VTgSs0enlQPVr5-6=>l|SRPWw5J;(RPrkd-Oj z>~56M9w)DvyF6TeRw&-ioi+oz}1z2kzbz zfX8!9sIh+ic4SsQ5Hd%2xd?a<{X3lCL9%(k*DSYrZa>`D`t9=U-4+R)$f_^ZF2{S| z-)|=4zv26w2n)+-*^8-V5fq=F5DzPSkZ%_4b|jI!17_e(j$mDP(lg9KWHOzHVEp9_ zXkH~^hjnwVX3OPrPT`y@j!t@=Z)$TX=}$TCWG?znafrkrJ<4W_+lxfS6-rbpY!Y0X;n+ zTaUM5AFJS4X+)6{*|H$Wrz>ErOxkyGIhQu)s&-@svHCM~8R-7wo7znBK!w=(2Pavy zzKJ;mO8HDZ%4Z1=bnNLtdO{WDPc|eXfgR-)WUcRDo35%wo#SYG@K=q9halBw zi3%m?P_Kho0_T*R-g1gR^u_cen;bpdFMJmFD<5)KzL<~CC;E$Z6lDQ9Ks{Zw03NVo zA6VGi0@*uPUp1(f`nkZss`Z?r4>(xln^{eB5b@_LXw5}F(C`kzax%*h^RJDtyguy7 z@!cR`k)luGntP16$1=g`ZbEwM_erD4K^oGg!4C-J^*DbvOW_GKxX_aB=i@J`ci{v0 zu)}Xd#RuSf2go5@_KADmJJve%u6PbKk2;jOJBl>ej_GzRdvsq|OH1bcL6dhCEn+^7CwO=+g()E8KWa@TR%ZqQ%} zk>C)=LjaZ}lWSjM9c%R*4bAspft~iaXlVn4s^*_)g>cjL1sc*k&JL0|0xnDER0@CE zYnQU*=%(lLs0ncDo4Cn^70JY#y=!+kEWa-c-u5@v^glas;dL1|u98@!Oty^L1ya9) zr$vb{d+-=%m>?hH8OAZ{kWmf7blk&^n9z`_n+qznb@fpHMPISwsExQpN@k2-8%Kd2 z_NObaxw_J_VG8t5#yY_RF?*tLZ^cg{yR7}9eMkwn?vO! zzyC>`O=A&!K?#>V-cbPpQCuQ5g(8_mz=#2Nm+5<}*Q$Qcl5MTr{45`baV&>t-4 z4WuxWOEhU5p`U0td~2bfDH)*t%WABYuC;4NH7UB^Mwlegf5CKEyT>sSOQW?LL&TP_ zRa;JH`a1*t3oJ<3rFA_a|vvp=R1Rb_@-vVp`Lz-m1hH&(;=BOCj{|B(y_8|*UlR@^x zw-Pp>_BPRa`V33A`M^e|cBbtg<}PD%v+`Fd6LESnd({+U{VywD z6{7toY|+y4x#)^p@k?j zDT$b9V^Jcy-LHg0TTM`x<HaRn^R#qk^`

_I+LIqtgVn5PqxKJ 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%0DFu}`VEFk(0)YoKR0z8tO^wu{QU$FJUMP7kG47o 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 + {segments.map((seg, i) => ( + + {i > 0 && /} + {i === segments.length - 1 + ? {seg} + : {seg} + } + + ))} + diff --git a/website/src/components/ConceptSidebar.astro b/website/src/components/ConceptSidebar.astro new file mode 100644 index 00000000..ff6f9681 --- /dev/null +++ b/website/src/components/ConceptSidebar.astro @@ -0,0 +1,98 @@ +--- +import DocsSidebar from './DocsSidebar.astro'; +import type { SidebarGroup } from './sidebar'; + +interface Props { + activePage: string; +} + +const { activePage } = Astro.props; + +const getStartedGroups: SidebarGroup[] = [ + { + title: 'Getting started', + items: [ + { label: 'Installation', href: '#installation', active: true, section: true }, + { label: 'via Corepack', href: '#install-corepack', sub: true, section: true }, + { label: 'via Homebrew', href: '#install-homebrew', sub: true, section: true }, + { label: 'via winget', href: '#install-winget', sub: true, section: true }, + { label: 'Your first project', href: '#your-first-project', section: true }, + { label: 'Common commands', href: '#common-commands', section: true }, + { label: 'Migrating from npm', href: '#migrating-from-npm', section: true }, + { label: 'Editor integration', href: '#editor-integration', section: true }, + { label: 'Next steps', href: '#next-steps', section: true }, + ], + }, + { + title: 'Core concepts', + items: [ + { label: 'Dependency protocols', href: 'concepts.html#dependency-protocols' }, + { label: 'Node.js linkers', href: 'concepts.html#nodejs-linkers' }, + { label: 'Workspaces', href: 'concepts.html#workspaces' }, + { label: 'Yarn Switch', href: 'concepts.html#yarn-switch' }, + ], + }, + { + title: 'Intermediary concepts', + items: [ + { label: 'Constraints', href: 'concepts.html#constraints' }, + { label: 'Dependency patches', href: 'concepts.html#dependency-patches' }, + { label: 'Peer dependencies', href: 'concepts.html#peer-dependencies' }, + { label: "Plug'n'Play", href: 'concepts.html#plug-n-play' }, + ], + }, + { + title: 'Advanced concepts', + items: [ + { label: 'Zero Installs', href: 'concepts.html#zero-installs' }, + { label: 'Virtual packages', href: 'concepts.html#virtual-packages' }, + { label: 'Performances', href: 'concepts.html#performances' }, + ], + }, +]; + +const conceptsGroups: SidebarGroup[] = [ + { + title: 'Getting started', + items: [ + { label: 'Installation', href: 'get-started.html' }, + { label: 'Your first project', href: 'get-started.html#your-first-project' }, + { label: 'Migrating from npm', href: 'get-started.html#migrating-from-npm' }, + ], + }, + { + title: 'Core concepts', + items: [ + { label: 'Overview', href: '#core-concepts', active: true, section: true }, + { label: 'Dependency protocols', href: '#dependency-protocols', sub: true, section: true }, + { label: 'Node.js linkers', href: '#nodejs-linkers', sub: true, section: true }, + { label: 'Workspaces', href: '#workspaces', sub: true, section: true }, + { label: 'Yarn Switch', href: '#yarn-switch', sub: true, section: true }, + ], + }, + { + title: 'Intermediary concepts', + items: [ + { label: 'Constraints', href: '#constraints', sub: true, section: true }, + { label: 'Dependency patches', href: '#dependency-patches', sub: true, section: true }, + { label: 'Node.js versioning', href: '#nodejs-versioning', sub: true, section: true }, + { label: 'Peer dependencies', href: '#peer-dependencies', sub: true, section: true }, + { label: 'Workspace profiles', href: '#workspace-profiles', sub: true, section: true }, + { label: "Plug'n'Play", href: '#plug-n-play', sub: true, section: true }, + { label: 'Task dependencies', href: '#task-dependencies', sub: true, section: true }, + ], + }, + { + title: 'Advanced concepts', + items: [ + { label: 'Performances', href: '#performances', sub: true, section: true }, + { label: 'Virtual packages', href: '#virtual-packages', sub: true, section: true }, + { label: 'Zero Installs', href: '#zero-installs', sub: true, section: true }, + ], + }, +]; + +const groups = activePage === 'get-started' ? getStartedGroups : conceptsGroups; +--- + + diff --git a/website/src/components/DocsSidebar.astro b/website/src/components/DocsSidebar.astro new file mode 100644 index 00000000..c8e6c836 --- /dev/null +++ b/website/src/components/DocsSidebar.astro @@ -0,0 +1,24 @@ +--- +import type { SidebarGroup } from './sidebar'; + +interface Props { + groups: SidebarGroup[]; +} + +const { groups } = Astro.props; +--- + +{groups.map(group => ( +

+))} diff --git a/website/src/components/Nav.astro b/website/src/components/Nav.astro new file mode 100644 index 00000000..58753012 --- /dev/null +++ b/website/src/components/Nav.astro @@ -0,0 +1,83 @@ +--- +interface Props { + variant?: 'index' | 'docs'; + activePage?: string; +} + +const { variant = 'index', activePage } = Astro.props; + +const isDocs = variant === 'docs'; +const navBgOpacity = isDocs ? '55%' : '25%'; +const prefix = isDocs ? '' : 'docs/'; + +const links = [ + { label: 'Get Started', key: 'get-started', href: `${prefix}get-started.html` }, + { label: 'Concepts', key: 'concepts', href: `${prefix}concepts.html` }, + { label: 'Reference', key: 'reference', href: `${prefix}manifest.html` }, + { label: 'Appendix', key: 'appendix', href: '#' }, + { label: 'Contributing', key: 'contributing', href: '#' }, + { label: 'Blog', key: 'blog', href: '#' }, +]; + +const activeClass = 'no-underline text-[var(--fg)] font-medium'; +const inactiveClass = 'hover:text-[var(--fg)] transition-colors no-underline text-inherit'; +--- + + diff --git a/website/src/components/PageHeader.astro b/website/src/components/PageHeader.astro new file mode 100644 index 00000000..59e33cfb --- /dev/null +++ b/website/src/components/PageHeader.astro @@ -0,0 +1,20 @@ +--- +interface Props { + title: string; + lead: string; + mono?: boolean; + pill?: string; +} + +const { title, lead, mono, pill } = Astro.props; +--- + +{(mono || pill) ? ( +
+

{title}

+ {pill && {pill}} +
+) : ( +

{title}

+)} +

{lead}

diff --git a/website/src/components/PrevNextNav.astro b/website/src/components/PrevNextNav.astro new file mode 100644 index 00000000..1bc7ddc9 --- /dev/null +++ b/website/src/components/PrevNextNav.astro @@ -0,0 +1,25 @@ +--- +interface Props { + prev?: { href: string; label: string }; + next?: { href: string; label: string }; +} + +const { prev, next } = Astro.props; +--- + +{(prev || next) && ( + +)} diff --git a/website/src/components/ReferenceSidebar.astro b/website/src/components/ReferenceSidebar.astro new file mode 100644 index 00000000..61deac96 --- /dev/null +++ b/website/src/components/ReferenceSidebar.astro @@ -0,0 +1,97 @@ +--- +import DocsSidebar from './DocsSidebar.astro'; +import type { SidebarGroup, SidebarItem } from './sidebar'; + +interface Props { + activePage: string; +} + +const { activePage } = Astro.props; + +const cliSections: { subtitle: string; items: SidebarItem[] }[] = [ + { + subtitle: 'Install', + items: [ + { label: 'install', href: 'cli-add.html' }, + { label: 'import', href: 'cli-add.html' }, + { label: 'rebuild', href: 'cli-add.html' }, + ], + }, + { + subtitle: 'Manage', + items: [ + { label: 'add', href: 'cli-add.html', active: true }, + { label: 'remove', href: 'cli-add.html' }, + { label: 'up', href: 'cli-add.html' }, + { label: 'dedupe', href: 'cli-add.html' }, + { label: 'why', href: 'cli-add.html' }, + ], + }, + { + subtitle: 'Workspaces', + items: [ + { label: 'workspace', href: 'cli-add.html' }, + { label: 'workspaces foreach', href: 'cli-add.html' }, + { label: 'workspaces list', href: 'cli-add.html' }, + ], + }, + { + subtitle: 'Run', + items: [ + { label: 'run', href: 'cli-add.html' }, + { label: 'exec', href: 'cli-add.html' }, + { label: 'dlx', href: 'cli-add.html' }, + { label: 'node', href: 'cli-add.html' }, + ], + }, + { + subtitle: 'Publish', + items: [ + { label: 'pack', href: 'cli-add.html' }, + { label: 'npm publish', href: 'cli-add.html' }, + { label: 'npm tag', href: 'cli-add.html' }, + ], + }, + { + subtitle: 'Project', + items: [ + { label: 'init', href: 'cli-add.html' }, + { label: 'set version', href: 'cli-add.html' }, + { label: 'config', href: 'cli-add.html' }, + { label: 'constraints', href: 'cli-add.html' }, + { label: 'patch', href: 'cli-add.html' }, + { label: 'patch-commit', href: 'cli-add.html' }, + ], + }, +]; + +const includedSections = activePage === 'yarnrc' + ? cliSections.filter(s => !['Publish', 'Project'].includes(s.subtitle)) + : cliSections; + +const isCliPage = activePage.startsWith('cli-'); + +const cliItems: SidebarItem[] = includedSections.flatMap(s => [ + { subtitle: s.subtitle }, + ...s.items.map(item => { + const href = isCliPage && !item.active ? '#' : item.href; + return { ...item, sub: true, href } as SidebarItem; + }), +]); + +const groups: SidebarGroup[] = [ + { + title: 'Configuration', + items: [ + { label: 'Manifest (package.json)', href: 'manifest.html', active: activePage === 'manifest' }, + { label: 'Settings (.yarnrc.yml)', href: 'yarnrc.html', active: activePage === 'yarnrc' }, + ], + }, + { + title: 'CLI reference', + items: cliItems, + }, +]; +--- + + diff --git a/website/src/components/sidebar.ts b/website/src/components/sidebar.ts new file mode 100644 index 00000000..4035375f --- /dev/null +++ b/website/src/components/sidebar.ts @@ -0,0 +1,18 @@ +export type SidebarLink = { + label: string; + href: string; + active?: boolean; + sub?: boolean; + section?: boolean; +}; + +export type SidebarSubtitle = { + subtitle: string; +}; + +export type SidebarItem = SidebarLink | SidebarSubtitle; + +export interface SidebarGroup { + title: string; + items: SidebarItem[]; +} diff --git a/website/src/layouts/BaseLayout.astro b/website/src/layouts/BaseLayout.astro new file mode 100644 index 00000000..6f6366d5 --- /dev/null +++ b/website/src/layouts/BaseLayout.astro @@ -0,0 +1,46 @@ +--- +import Nav from '../components/Nav.astro'; + +interface Props { + title: string; + variant?: 'index' | 'docs'; + activePage?: string; +} + +const { title, variant = 'index', activePage } = Astro.props; +const isDocs = variant === 'docs'; +--- + + + + + + +{title} + + + + + + + + + + +
+ +{isDocs && ( +
+)} + +
+
+ + + diff --git a/website/src/layouts/DocsLayout.astro b/website/src/layouts/DocsLayout.astro new file mode 100644 index 00000000..4048d2f4 --- /dev/null +++ b/website/src/layouts/DocsLayout.astro @@ -0,0 +1,28 @@ +--- +import BaseLayout from './BaseLayout.astro'; +import '../styles/theme.css'; +import '../styles/docs.css'; + +interface Props { + title: string; + activePage?: string; + mainMaxWidth?: string; +} + +const { title, activePage, mainMaxWidth = '780px' } = Astro.props; +--- + + +
+ + + +
+ +
+
+ + +
diff --git a/website/src/layouts/MarkdownDocsLayout.astro b/website/src/layouts/MarkdownDocsLayout.astro new file mode 100644 index 00000000..966fd16f --- /dev/null +++ b/website/src/layouts/MarkdownDocsLayout.astro @@ -0,0 +1,27 @@ +--- +import DocsLayout from './DocsLayout.astro'; +import ConceptSidebar from '../components/ConceptSidebar.astro'; +import ReferenceSidebar from '../components/ReferenceSidebar.astro'; +import Breadcrumb from '../components/Breadcrumb.astro'; +import PrevNextNav from '../components/PrevNextNav.astro'; + +const { frontmatter } = Astro.props; +const breadcrumb = Array.isArray(frontmatter.breadcrumb) + ? frontmatter.breadcrumb + : ['Docs', frontmatter.breadcrumb]; +--- + + + + {frontmatter.sidebar === 'reference' + ? + : + } + + + + + + + + diff --git a/website/src/pages/docs/cli-add.astro b/website/src/pages/docs/cli-add.astro new file mode 100644 index 00000000..0ab27689 --- /dev/null +++ b/website/src/pages/docs/cli-add.astro @@ -0,0 +1,269 @@ +--- +import DocsLayout from '../../layouts/DocsLayout.astro'; +import ReferenceSidebar from '../../components/ReferenceSidebar.astro'; +import Breadcrumb from '../../components/Breadcrumb.astro'; +import PageHeader from '../../components/PageHeader.astro'; +import PrevNextNav from '../../components/PrevNextNav.astro'; +--- + + + + + + + + + +
+ yarn add <packages…> [--dev | --peer | --optional] [--exact | --tilde | --caret] [--mode <mode>] +
+ +

Description

+

Resolves each <package> against the configured registry (or the appropriate protocol), adds it to the active workspace's package.json, and triggers a full install so the lockfile and on-disk state stay in sync.

+

Packages may be specified in any of these forms:

+
    +
  • lodash — latest version matching the default range strategy
  • +
  • lodash@^4.17.0 — explicit semver range
  • +
  • @types/node@20 — scoped package with a version shorthand
  • +
  • my-fork@npm:lodash@4.17.21 — alias a dependency to another name
  • +
  • ui@workspace:^ — another workspace in the same monorepo
  • +
  • legacy@portal:../legacy — a symlinked local package
  • +
  • prettier@github:prettier/prettier#main — a git ref
  • +
+ +

Examples

+ +

Add a runtime dependency

+
+ yarn add lodash +
+ +

Add a dev dependency, pinned exactly

+
+ yarn add typescript --dev --exact +
+ +

Add several dependencies at once

+
+ yarn add react react-dom @types/react --dev +
+ +

Add another workspace as a dependency

+
+ yarn workspace @acme/web add @acme/ui@workspace:^ +
+ +

Add a package under an alias

+
+ yarn add lodash-fork@npm:lodash@4.17.21 +
+ +

Options

+

Flags are grouped by what they change: where the dependency goes, how its range is written, and how the install runs.

+ +

Destination

+ +
+ +
+
+ --dev, -D + boolean +
+
+

Add the package to devDependencies instead of dependencies.

+
+
+ +
+
+ --peer, -P + boolean +
+
+

Add to peerDependencies. Commonly combined with --dev so the peer is also satisfied locally during development.

+
+
+ +
+
+ --optional, -O + boolean +
+
+

Add to optionalDependencies. Failures to install the package won't fail the overall install.

+
+
+ +
+
+ --prefer-dev + boolean +
+
+

If the package is already listed in dependencies, leave it there; otherwise add it to devDependencies. Useful for scripts that bulk-add packages without reshuffling manifests.

+
+
+ +
+ +

Range strategy

+ +
+ +
+
+ --exact, -E + boolean +
+
+

Write the resolved version with no range modifier: "lodash": "4.17.21".

+
+
+ +
+
+ --tilde, -T + boolean +
+
+

Write the range as ~X.Y.Z — allow patch upgrades only.

+
+
+ +
+
+ --caret, -C + boolean + default +
+
+

Write the range as ^X.Y.Z — allow minor and patch upgrades.

+
+
+ +
+ +

Install behavior

+ +
+ +
+
+ --mode <mode> + 'skip-build' | 'update-lockfile' +
+
+

Shortcuts that skip expensive steps:

+
    +
  • skip-build — don't run install scripts. Faster when you'll be rebuilding later.
  • +
  • update-lockfile — refresh yarn.lock but don't touch the on-disk install. Useful for batch dependency bumps in CI.
  • +
+
+
+ +
+
+ --cached + boolean +
+
+

Resolve against the local cache first; only hit the registry if a satisfying version isn't already cached. Pair with --offline for fully-offline workflows.

+
+
+ +
+
+ --interactive, -i + boolean +
+
+

Prompt for a version from the ones already used elsewhere in the project, so the same range is reused consistently across workspaces.

+
+
+ +
+
+ --json + boolean +
+
+

Emit machine-readable NDJSON. Every log line becomes a JSON object with a stable code field, suitable for piping into jq.

+
+
+ +
+ +

Details

+

By default, yarn add infers the range strategy from the defaultSemverRangePrefix setting — caret (^) unless you've set otherwise. Explicit flags (--exact, --tilde, --caret) always win.

+ +
+
+ + WARNING +
+
+ In a monorepo, yarn add at the repo root affects the root workspace, not all workspaces. To add a dependency to a specific workspace, use yarn workspace <name> add <pkg>. To bulk-add across many, use yarn workspaces foreach -A exec yarn add <pkg>. +
+
+ +

If a package is already present, yarn add updates the range to match the newly resolved version. To bump without specifying a version, use yarn up instead — it's smarter about respecting existing ranges across a monorepo.

+ +
+
+ + TIP +
+
+ Running yarn add <pkg> with no version against a package already present in the lockfile is idempotent — it resolves to the same version and produces a no-op install. Safe to script. +
+
+ +

Exit codes

+ +
+ +
+
+ 0 + success +
+

Package was added and the install completed cleanly.

+
+ +
+
+ 1 + generic error +
+

Unhandled exception or post-install script failure. See the output for the specific error code.

+
+ +
+
+ 2 + resolution error +
+

At least one package could not be resolved against any configured registry.

+
+ +
+ +

See also

+
    +
  • yarn up — bump already-declared packages
  • +
  • yarn remove — drop a dependency
  • +
  • yarn why — explain why a package is in the tree
  • +
  • Dependency protocols — concepts explaining the workspace:, portal:, and other forms accepted as <package> arguments.
  • +
+ + +
diff --git a/website/src/pages/docs/concepts.md b/website/src/pages/docs/concepts.md new file mode 100644 index 00000000..5814796d --- /dev/null +++ b/website/src/pages/docs/concepts.md @@ -0,0 +1,325 @@ +--- +layout: ../../layouts/MarkdownDocsLayout.astro +title: "Concepts — Yarn docs" +activePage: concepts +sidebar: concept +breadcrumb: Concepts +prev: { href: "get-started.html", label: "Get Started" } +next: { href: "#", label: "Reference" } +--- + +# Concepts + +Yarn makes a handful of strong opinions about what a package manager should do. This section explains *why* those opinions exist — and how to leverage them as your projects grow from a single package to a hundred. + +## Core concepts + +Every Yarn project — from the smallest CLI tool to the largest monorepo — is built on four primitives. Understanding them is enough to use Yarn productively. The later sections build on these. + +### Dependency protocols + +Yarn extends `package.json` with a rich set of protocols that declare **where** a dependency comes from, not just its version. A protocol prefix in a version range reroutes resolution to a non-registry source. + +```json title="package.json" +{ + "dependencies": { + "lodash": "npm:^4.17.21", + "my-fork": "npm:lodash@npm:4.17.21", + "internal-ui": "workspace:^", + "design-system": "portal:../design-system", + "tap-parser": "patch:tap-parser@npm:11.0.2#./patches/tap.patch", + "prettier": "github:prettier/prettier#main", + "legacy-lib": "file:./vendor/legacy.tgz" + } +} +``` + +Each protocol resolves to a cache entry, so installs remain deterministic. The most common protocols are: + +- **npm:** — the default. Points at a semver range on the npm registry (or your configured mirror). +- **workspace:** — always resolve to another workspace in the same monorepo. Enforces co-versioning at install time. +- **portal:** — symlink to a local path. Unlike `file:`, dependencies of the portal are resolved by *your* project, not theirs. +- **patch:** — apply a unified diff to a package before it's written to the cache. Survives re-install; commits to git. +- **github: / git:** — pin to a git commit, branch, or tag. Resolution records the exact SHA in the lockfile. + +:::tip[TIP] +Use `workspace:^` in monorepos instead of pinning versions. At publish time, Yarn rewrites it to the concrete version your workspace currently resolves to — so consumers of your package see a normal semver range. +::: + +### Node.js linkers + +A **linker** decides how resolved packages end up on disk. Yarn ships three first-class linkers; all produce the same module graph, only the strategy differs. + +:::steps + +1. Plug'n'Play (`pnp`) — the default + + Yarn generates a single `.pnp.cjs` file that maps every import to a zipped tarball in the global cache. No `node_modules` is created at all. Imports are resolved in O(1) at runtime. + +2. PnPM-style (`pnpm`) + + Packages are hoisted into a content-addressable store, and `node_modules` contains symlinks into that store. Compatible with tools that walk the filesystem. + +3. Classic (`node-modules`) + + A traditional `node_modules` tree, hoisted the same way npm would. Slowest but maximally compatible — useful for React Native, some legacy bundlers, and CI shells that cannot register a Node loader. + +::: + +Configure in `.yarnrc.yml`: + +```yaml title=".yarnrc.yml" +nodeLinker: pnp # or 'pnpm' or 'node-modules' +pnpMode: strict # 'strict' forbids unlisted imports +enableGlobalCache: true +``` + +:::note[NOTE] +Switching linkers is a one-command operation. Yarn re-materializes the project to match the new strategy; no changes to source code are required unless you relied on specific `node_modules` paths (e.g. `require.resolve` with a hard-coded traversal). +::: + +### Workspaces + +A workspace is a package that belongs to a larger repository — a monorepo. Declaring workspaces unlocks topologically-ordered scripts, shared dependency ranges, and constraint enforcement across packages. + +```json title="package.json (root)" +{ + "private": true, + "name": "acme", + "workspaces": [ + "packages/*", + "apps/*", + "tools/*" + ] +} +``` + +Common workspace commands: + +```terminal +yarn workspaces list --json +# Run a script in every workspace, in topological order +yarn workspaces foreach -At run build +# Add a dep to a single workspace +yarn workspace @acme/api add fastify +``` + +### Yarn Switch + +**Yarn Switch** lets a single repository declare the exact Yarn version it expects — down to the patch — and transparently fetches that binary the first time someone runs `yarn`. Everyone on the team runs the same Yarn, without globally installing anything. + +```terminal +# Pin the current repo to Yarn 4.8.1 +yarn set version 4.8.1 +> ✔ Yarn binary saved to .yarn/releases/yarn-4.8.1.cjs +> ✔ .yarnrc.yml updated +``` + +The binary is committed to the repo under `.yarn/releases/`. A tiny shim in `.yarnrc.yml` (`yarnPath:`) reroutes every subsequent `yarn` invocation to the pinned file, bypassing whatever version is globally installed. + +## Intermediary concepts + +Once the core is comfortable, these tools cover the gap between "a project that works on my laptop" and "a project that scales across a team and CI." + +### Constraints + +Constraints are declarative rules about the *contents* of `package.json` files across a monorepo. Written in Prolog (or, since 4.2, a JavaScript DSL), they answer questions like *"does every workspace declare the same version of React?"* in a single CI step. + +```js title="yarn.config.cjs" +module.exports = { + async constraints({ Yarn }) { + // Every workspace must use the same React version + const pinned = '18.3.1'; + for (const dep of Yarn.dependencies({ ident: 'react' })) { + dep.update(pinned); + } + // No workspace may depend on lodash + for (const dep of Yarn.dependencies({ ident: 'lodash' })) { + dep.error('lodash is banned; use es-toolkit instead'); + } + }, +}; +``` + +:::warning[WARNING] +Constraints run in CI by default. A failing rule will block your build — which is the point. Start strict and relax rules as the team negotiates exceptions; the opposite is much harder. +::: + +### Dependency patches + +Yarn's `patch:` protocol lets you fork a package without a real fork. Changes are captured as a unified diff, stored alongside your code, and re-applied every install. + +:::steps + +1. Open an editable copy of the package + + Yarn extracts the package to a temporary folder and opens your editor. + + ```terminal + yarn patch react-dom + > To apply changes, run: yarn patch-commit /tmp/xfs-abc/user + ``` + +2. Make your edits in the extracted folder. + +3. Commit the patch back into your project + + ```terminal + yarn patch-commit -s /tmp/xfs-abc/user + > ✔ Wrote patch to .yarn/patches/react-dom-npm-18.3.1-a91.patch + > ✔ Rewrote package.json + ``` + +4. The resulting `package.json` entry now reads `patch:react-dom@npm:18.3.1#./.yarn/patches/…`. Commit both the patch file and the manifest. + +::: + +### Node.js versioning + +Projects may pin a specific Node.js version via the `engines.node` field; Yarn (when `enableEngineChecks` is on) refuses to install if your runtime is out of range. For heavier projects, use **Corepack** or **Volta** to install Node itself per-project. + +```json title="package.json" +{ + "engines": { + "node": "^20.10.0 || ^22.0.0" + }, + "packageManager": "yarn@4.8.1" +} +``` + +### Peer dependencies + +A peer dependency is a package your library expects the **host application** to provide. React plugins, for example, declare `react` as a peer so that every plugin shares the same React instance. + +Yarn enforces peer ranges strictly: + +- Missing peers cause installs to fail unless marked `peerDependenciesMeta.optional`. +- Incompatible peer ranges print a single, grouped warning — never a wall of duplicates. +- Peers participate in Plug'n'Play's "virtual package" system (see [Virtual packages](#virtual-packages)), ensuring every consumer sees the peer its author intended. + +### Workspace profiles + +Profiles let you describe partial installs: "CI only needs runtime dependencies," "Docker image only needs `@acme/api`," "IDE needs everything including `devDependencies`." Each is a named tuple of `--workspace`, `--focus`, and `--production` flags captured in config. + +```yaml title=".yarnrc.yml" +workspaceProfiles: + ci: + focus: ["@acme/api", "@acme/worker"] + production: true + docker-api: + focus: "@acme/api" + production: true + includeRoot: false + ide: + production: false +``` + +```terminal +yarn install --profile docker-api +``` + +### Yarn Plug'n'Play + +Plug'n'Play (PnP) is Yarn's strict, hoist-free module resolver. Instead of a `node_modules` tree, Yarn generates a single lookup file — `.pnp.cjs` — that maps *(package, version, dependency)* triples to on-disk locations. + +The result: + +- **Installation is I/O-light.** No files are copied; packages stay as gzipped tarballs in the global cache. +- **Resolution is deterministic.** A module cannot accidentally require a package it didn't declare — there's no hoisted `node_modules` to fall through to. +- **Cold cache is fast.** `yarn install` on a 400-package repo drops from ~48s (npm) to ~14s (Yarn PnP) on a 4-core runner. + +:::note[NOTE] +PnP requires Node to load an extra resolver. Yarn ships a loader that Corepack sets up for you; most tools (Jest, TypeScript, ESLint, webpack, esbuild, Vite, Next.js) detect PnP automatically via their own resolver plugins. +::: + +### Task dependencies + +Scripts in a monorepo often depend on other scripts in *other* workspaces: `@acme/web`'s `build` needs `@acme/ui`'s `build` to have run first. Yarn's `workspaces foreach` understands topological order natively: + +```terminal +yarn workspaces foreach -pt run build +``` + +The flags: + +- `-p` — parallel (bounded by `--jobs`, default = CPU count) +- `-t` — topological; never run a workspace before its dependencies +- `-A` — include the root workspace +- `--from ` — only run in workspaces downstream of `` + +## Advanced concepts + +These sections cover the sharp edges. You don't need them to ship — but understanding them turns a big monorepo from a chore into a force multiplier. + +### Performances + +Yarn's performance model is built on three invariants: + +1. Every network fetch is content-addressable and cached globally. +2. Every on-disk artifact is idempotent — running `yarn install` a second time is a no-op. +3. Every stage (resolve, fetch, link, build) runs in its own bounded worker pool. + +In practice that means: + +```bash title="hyperfine output — 10k-dep monorepo, warm network, empty cache" +# cold install, median of 50 runs, 4-core CI runner +Benchmark: yarn install + Time (mean ± σ): 14.213 s ± 0.214 s + Range (min … max): 13.889 s … 14.902 s + +Benchmark: npm ci + Time (mean ± σ): 48.441 s ± 1.108 s + Range (min … max): 47.019 s … 50.722 s +``` + +With a warm cache the numbers drop another order of magnitude — a zero-install repo reaches runtime in under 400ms. + +### Virtual packages + +When two workspaces share a dependency but have *different* peer dependencies, Yarn creates a **virtual package**: an alias for the shared dep, parameterized by the caller's peers. This is what makes strict PnP workable — each consumer sees its own view of the dependency graph without duplication on disk. + +Conceptually: + +```js title="Resolved identities" +// @acme/web depends on styled-components@6, which peers react@18 +// @acme/docs depends on styled-components@6, which peers react@17 +// +// Yarn produces two *virtual* identities that point at the same tarball: +// +// styled-components@virtual:abc123#npm:6.0.0 (react@18 context) +// styled-components@virtual:def456#npm:6.0.0 (react@17 context) +``` + +:::danger[DANGER] +Never hard-code a virtual identity in your code. The `virtual:` hash is derived from the peer context and *will* change when peers move. Use the package name, and let PnP resolve it at runtime. +::: + +### Zero Installs + +A **Zero Install** repository commits its entire offline cache alongside its source. Cloning the repo is enough to run it — there is no install step, no network I/O, no CI warm-up. + +The trade-off is repository size. A 400-package project typically adds 40–80MB of compressed tarballs to the repo — paid once, amortized over every future `git clone`. + +:::steps + +1. Enable in `.yarnrc.yml` + + ```yaml title=".yarnrc.yml" + enableGlobalCache: false + nmMode: classic + nodeLinker: pnp + ``` + +2. Commit `.yarn/cache/` and `.pnp.cjs` to git. + +3. Add a check that the working tree is clean after `yarn install`: + + ```terminal + yarn install --immutable --immutable-cache --check-cache + ``` + +::: + +:::tip[TIP] +Zero Installs pair extremely well with git's `sparse-checkout`: CI jobs that only need `apps/api` can clone just that subtree plus `.yarn/cache/` and skip the rest. `yarn install` stays a no-op. +::: diff --git a/website/src/pages/docs/get-started.md b/website/src/pages/docs/get-started.md new file mode 100644 index 00000000..2274ec92 --- /dev/null +++ b/website/src/pages/docs/get-started.md @@ -0,0 +1,199 @@ +--- +layout: ../../layouts/MarkdownDocsLayout.astro +title: "Get Started — Yarn docs" +activePage: get-started +sidebar: concept +breadcrumb: Get Started +prev: { href: "/", label: "Home" } +next: { href: "concepts.html", label: "Concepts" } +--- + +# Get started with Yarn + +Install Yarn, set up your first project, and learn the commands you'll reach for ten times a day. This page is short on purpose — once you're comfortable, read [Concepts](concepts.html) next. + +:::note[PREREQUISITES] +You'll need **Node.js 18.12 or newer**. Verify with `node --version`. If you don't have Node, install it via [nodejs.org](#), `nvm`, or `fnm` — Yarn doesn't care which. +::: + +## Installation + +There are three recommended ways to install Yarn. Corepack is the official route — it ships with Node itself and guarantees each project uses the exact Yarn version it declared. + +### via Corepack (recommended) + +Corepack is bundled with Node 16+. One command enables it globally: + +```terminal +corepack enable +# Opt-in to the latest stable Yarn release +corepack install --global yarn@stable +yarn --version +> 4.8.1 +``` + +### via Homebrew (macOS / Linux) + +```terminal +brew install yarn +``` + +### via winget (Windows) + +```terminal +winget install Yarn.Yarn +``` + +:::warning[WARNING] +Do **not** install Yarn 1.x (Classic) via `npm install -g yarn`. That release is in maintenance-only mode and lacks most of the features described in these docs. If you see `1.22.x`, you're on the wrong major. +::: + +## Your first project + +Starting a new Yarn project takes under a minute. + +:::steps + +1. Create a directory and pin the Yarn version + + The `set version` command writes a Yarn binary into `.yarn/releases/` and a `packageManager` field into `package.json` — so everyone on your team runs the same Yarn. + + ```terminal + mkdir hello-yarn && cd hello-yarn + yarn init -2 + > ✔ Project initialized. Yarn 4.8.1 pinned. + ``` + +2. Add a dependency + + ```terminal + yarn add lodash + > ➤ YN0000: · Yarn 4.8.1 + > ➤ YN0000: ┌ Resolution step + > ➤ YN0000: └ Completed in 0s 214ms + > ➤ YN0000: ┌ Fetch step + > ➤ YN0013: │ lodash@npm:4.17.21 can't be found in the cache and will be fetched from the remote registry + > ➤ YN0000: └ Completed in 0s 488ms + > ➤ YN0000: ┌ Link step + > ➤ YN0000: └ Completed + > ➤ YN0000: · Done in 0s 782ms + ``` + +3. Create an entry point and run it + + ```js title="index.js" + import { chunk } from 'lodash'; + + const rows = chunk(['a', 'b', 'c', 'd', 'e'], 2); + console.log(rows); + ``` + + ```terminal + yarn node index.js + > [ [ 'a', 'b' ], [ 'c', 'd' ], [ 'e' ] ] + ``` + +4. Commit the lockfile and `.yarnrc.yml` + + At minimum, commit `package.json`, `yarn.lock`, `.yarnrc.yml`, and `.yarn/releases/`. See [Migrating from npm](#migrating-from-npm) for the full `.gitignore`. + +::: + +## Common commands + +A quick reference for the handful of commands that cover 90% of daily use: + +- **`yarn`** — install everything declared in `package.json`. Equivalent to `yarn install`. +- **`yarn add `** — add a runtime dependency. Use `-D` for dev, `-P` for peer, `-O` for optional. +- **`yarn remove `** — remove a dependency from every section it appears in. +- **`yarn up `** — bump to the latest version matching your range. Add `-R` to hit the entire monorepo. +- **`yarn run + + diff --git a/website/src/styles/docs.css b/website/src/styles/docs.css new file mode 100644 index 00000000..d43c2948 --- /dev/null +++ b/website/src/styles/docs.css @@ -0,0 +1,641 @@ +/* ────────── Documentation page styles ────────── */ + +/* ────────── Flow spacing system ────────── + A single pair-based rhythm: every pair of siblings gets exactly + one rule. Priority cascade (later wins): + 1. reset — every .prose child has margin: 0 + 2. default sibling gap + 3. block-adjacent (symmetric padding around heavy blocks) + 4. section starters (space BEFORE a heading) + 5. heading → first child (tight, intentional) +*/ +.prose { + color: var(--fg); + --flow-xs: 8px; + --flow-sm: 16px; + --flow-md: 24px; + --flow-lg: 40px; + --flow-xl: 64px; +} + +/* 1. Reset — one source of truth */ +.prose > * { margin: 0; } + +/* 2. Default gap between any two siblings */ +.prose > * + * { margin-top: var(--flow-sm); } + +/* 3. Heading → first child (tight when child is plain text) */ +.prose > h1 + * { margin-top: var(--flow-sm); } +.prose > h2 + * { margin-top: var(--flow-sm); } +.prose > h3 + * { margin-top: var(--flow-xs); } +.prose > h4 + * { margin-top: var(--flow-xs); } + +/* 4. Blocks get more air (overrides heading→child when child is a block) */ +.prose > * + .terminal, +.prose > * + .code-block, +.prose > * + .admonition, +.prose > * + ol.steps, +.prose > * + ul, +.prose > * + ol, +.prose > .terminal + *, +.prose > .code-block + *, +.prose > .admonition + *, +.prose > ol.steps + *, +.prose > ul + *, +.prose > ol + * { margin-top: var(--flow-md); } + +/* 5. Space BEFORE a heading — major section breaks (highest priority) */ +.prose > * + h2 { margin-top: var(--flow-xl); } +.prose > * + h3 { margin-top: var(--flow-lg); } +.prose > * + h4 { margin-top: var(--flow-md); } + +.prose h1 { + font-size: clamp(32px, 4vw, 44px); + font-weight: 500; + letter-spacing: -0.025em; + line-height: 1.1; + text-wrap: balance; +} +.prose h2 { + font-size: 26px; + font-weight: 500; + letter-spacing: -0.015em; + line-height: 1.2; + scroll-margin-top: 88px; +} +.prose h3 { + font-size: 19px; + font-weight: 500; + letter-spacing: -0.01em; + line-height: 1.3; + scroll-margin-top: 88px; +} +.prose h4 { + font-size: 15px; + font-weight: 600; + letter-spacing: 0.02em; + text-transform: uppercase; + color: var(--fg-dim); + scroll-margin-top: 88px; +} +.prose .lead { + font-size: 18px; + line-height: 1.55; + color: var(--fg-dim); + text-wrap: pretty; +} +.prose p { + font-size: 15.5px; + line-height: 1.68; + color: var(--fg-dim); + text-wrap: pretty; +} +.prose p strong { color: var(--fg); font-weight: 600; } +.prose a:not(.heading-anchor):not(.no-prose-link) { + color: var(--accent); + text-decoration: none; + border-bottom: 1px solid color-mix(in oklch, var(--accent) 35%, transparent); + transition: border-color 0.15s; +} +.prose a:not(.heading-anchor):not(.no-prose-link):hover { + border-bottom-color: var(--accent); +} +.prose :not(pre) > code { + font-size: 0.88em; + padding: 0.15em 0.42em; + border-radius: 5px; + background: color-mix(in oklch, var(--fg) 8%, transparent); + border: 1px solid var(--line); + color: var(--fg); + font-weight: 500; +} + +/* Heading anchor (hover reveal) */ +.heading-wrap { + position: relative; + display: flex; + align-items: baseline; + gap: 0.5rem; +} +.heading-anchor { + opacity: 0; + color: var(--fg-mute); + text-decoration: none; + font-weight: 400; + transition: opacity 0.15s, color 0.15s; + cursor: pointer; + user-select: none; + line-height: 1; + font-size: 0.85em; + border: 0; +} +.heading-wrap:hover .heading-anchor, +.heading-anchor:focus { + opacity: 1; +} +.heading-anchor:hover { color: var(--accent); } + +/* Toast */ +.toast { + position: fixed; + bottom: 24px; + left: 50%; + transform: translateX(-50%) translateY(8px); + background: var(--card); + backdrop-filter: blur(16px) saturate(160%); + -webkit-backdrop-filter: blur(16px) saturate(160%); + border: 1px solid var(--line-strong); + color: var(--fg); + padding: 10px 16px; + border-radius: 10px; + font-size: 13px; + font-weight: 500; + opacity: 0; + pointer-events: none; + transition: opacity 0.2s ease, transform 0.25s cubic-bezier(0.22, 1, 0.36, 1); + z-index: 200; + box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25); +} +.toast.show { + opacity: 1; + transform: translateX(-50%) translateY(0); +} + +/* ─── Ordered list (step-by-step) ─── */ +.prose ol.steps { + list-style: none; + padding: 0; + counter-reset: step; +} +.prose ol.steps > li { + position: relative; + padding-left: 52px; + min-height: 32px; + padding-bottom: 20px; + counter-increment: step; +} +.prose ol.steps > li:last-child { + padding-bottom: 0; +} +.prose ol.steps > li::before { + content: counter(step, decimal-leading-zero); + position: absolute; + left: 0; + top: 0; + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + font-family: 'JetBrains Mono', monospace; + font-size: 11.5px; + font-weight: 500; + color: var(--accent); + background: var(--accent-soft); + border: 1px solid var(--accent-line); + border-radius: 8px; + letter-spacing: 0.02em; +} +.prose ol.steps > li:not(:last-child)::after { + content: ''; + position: absolute; + left: 15.5px; + top: 36px; + bottom: 6px; + width: 1px; + background: var(--line); +} +.prose ol.steps > li > p:first-child { + color: var(--fg); + font-weight: 500; + font-size: 15.5px; + line-height: 1.45; + margin-bottom: 6px; +} +.prose ol.steps > li > * + * { + margin-top: var(--flow-sm); +} + +/* Standard numbered list fallback */ +.prose ol:not(.steps) { + padding-left: 22px; + margin: 0; + color: var(--fg-dim); +} +.prose ol:not(.steps) > li { + font-size: 15.5px; + line-height: 1.68; + padding-left: 4px; + margin-top: 6px; +} +.prose ol:not(.steps) > li::marker { + color: var(--fg-mute); + font-family: 'JetBrains Mono', monospace; + font-size: 13px; +} + +/* ─── Unordered lists ─── */ +.prose ul { + list-style: none; + padding: 0; + margin: 0; +} +.prose ul > li { + position: relative; + padding-left: 22px; + font-size: 15.5px; + line-height: 1.68; + color: var(--fg-dim); + margin-top: 6px; +} +.prose ul > li::before { + content: ''; + position: absolute; + left: 6px; + top: 0.68em; + width: 5px; + height: 5px; + border-radius: 50%; + background: var(--accent); + opacity: 0.7; +} + +/* ─── Admonition ─── */ +.admonition { + border: 1px solid var(--line); + border-left-width: 3px; + border-radius: 10px; + padding: 14px 18px 16px; + background: color-mix(in oklch, var(--card) 50%, transparent); + backdrop-filter: blur(8px); +} +.admonition .adm-header { + display: flex; + align-items: center; + gap: 8px; + font-size: 12px; + font-weight: 600; + letter-spacing: 0.1em; + text-transform: uppercase; + margin-bottom: 6px; +} +.admonition .adm-header svg { width: 14px; height: 14px; flex-shrink: 0; } +.admonition .adm-body { color: var(--fg-dim); font-size: 14.5px; line-height: 1.6; } +.admonition .adm-body > * + * { margin-top: 8px; } +.admonition .adm-body code { + background: color-mix(in oklch, var(--fg) 10%, transparent); + border: 1px solid var(--line); + padding: 0.1em 0.35em; + border-radius: 4px; + font-size: 0.9em; +} + +.admonition.note { background: var(--adm-note-bg); border-left-color: var(--adm-note-border); } +.admonition.note .adm-header { color: var(--adm-note-fg); } +.admonition.tip { background: var(--adm-tip-bg); border-left-color: var(--adm-tip-border); } +.admonition.tip .adm-header { color: var(--adm-tip-fg); } +.admonition.warning { background: var(--adm-warn-bg); border-left-color: var(--adm-warn-border); } +.admonition.warning .adm-header { color: var(--adm-warn-fg); } +.admonition.danger { background: var(--adm-danger-bg); border-left-color: var(--adm-danger-border); } +.admonition.danger .adm-header { color: var(--adm-danger-fg); } + +/* ─── Terminal block ─── */ +.terminal { + position: relative; + background: var(--term-bg); + border: 1px solid var(--term-border); + border-radius: 10px; + padding: 14px 54px 14px 18px; + font-family: 'JetBrains Mono', monospace; + font-size: 13.5px; + line-height: 1.65; + color: var(--term-fg); + overflow-x: auto; + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); +} +.terminal .term-line { display: block; white-space: pre; } +.terminal .term-line::before { + content: '$ '; + color: var(--term-prompt); + user-select: none; +} +.terminal .term-line.no-prompt::before { content: ''; } +.terminal .term-line.out { color: var(--term-comment); } +.terminal .term-line.out::before { content: ''; } +.terminal .term-line.comment { color: var(--term-comment); } +.terminal .term-line.comment::before { content: '# '; color: var(--term-comment); } +.terminal .term-cmd { color: var(--term-fg); } +.terminal .term-flag { color: oklch(0.78 0.12 70); } +.terminal .term-arg { color: oklch(0.80 0.10 200); } +.terminal .copy-btn, +.code-block .copy-btn { + position: absolute; + top: 8px; + right: 8px; + width: 30px; + height: 30px; + display: inline-flex; + align-items: center; + justify-content: center; + background: color-mix(in oklch, var(--fg) 6%, transparent); + border: 1px solid var(--line); + border-radius: 7px; + color: var(--fg-dim); + cursor: pointer; + padding: 0; + transition: color 0.15s, background 0.15s, border-color 0.15s; +} +.terminal .copy-btn:hover, +.code-block .copy-btn:hover { + color: var(--fg); + background: color-mix(in oklch, var(--fg) 10%, transparent); + border-color: var(--line-strong); +} +.terminal .copy-btn.copied, +.code-block .copy-btn.copied { + color: var(--accent); + border-color: var(--accent-line); +} + +/* ─── Code block (non-terminal) ─── */ +.code-block { + position: relative; + background: var(--syn-bg); + border: 1px solid var(--syn-border); + border-radius: 10px; + overflow: hidden; + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); +} +.code-block .code-lang { + display: block; + padding: 8px 18px 4px; + font-family: 'JetBrains Mono', monospace; + font-size: 10.5px; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--fg-mute); + border-bottom: 1px solid var(--line); +} +.code-block pre { + position: relative; + margin: 0; + padding: 14px 54px 16px 18px; + font-size: 13.5px; + line-height: 1.65; + color: var(--syn-fg); + overflow-x: auto; +} +.code-block code { font-family: 'JetBrains Mono', monospace; } + +/* Syntax highlighting tokens */ +.tok-comment { color: var(--syn-comment); font-style: italic; } +.tok-keyword { color: var(--syn-keyword); font-weight: 500; } +.tok-string { color: var(--syn-string); } +.tok-number { color: var(--syn-number); } +.tok-func { color: var(--syn-func); } +.tok-prop { color: var(--syn-prop); } +.tok-punct { color: var(--syn-punct); } +.tok-tag { color: var(--syn-tag); } +.tok-attr { color: var(--syn-attr); } +.tok-op { color: var(--syn-keyword); } + +/* ─── Sidebar ─── */ +.docs-sidebar { + position: sticky; + top: 67px; + height: calc(100vh - 67px); + overflow-y: auto; + padding: 28px 24px 48px 8px; + scrollbar-width: thin; + scrollbar-color: var(--line-strong) transparent; +} +.docs-sidebar::-webkit-scrollbar { width: 6px; } +.docs-sidebar::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 3px; } +.docs-sidebar .sb-group + .sb-group { margin-top: 26px; } +.docs-sidebar .sb-title { + font-family: 'JetBrains Mono', monospace; + font-size: 10.5px; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--fg-mute); + margin: 0 0 8px; + padding: 0 12px; + font-weight: 500; +} +.docs-sidebar a.sb-link { + display: block; + padding: 6px 12px; + font-size: 14px; + color: var(--fg-dim); + text-decoration: none; + border-radius: 6px; + line-height: 1.4; + transition: color 0.12s, background 0.12s; + border-left: 1px solid transparent; + margin-left: 4px; + padding-left: 11px; +} +.docs-sidebar a.sb-link:hover { + color: var(--fg); + background: color-mix(in oklch, var(--fg) 4%, transparent); +} +.docs-sidebar a.sb-link.active { + color: var(--accent); + border-left-color: var(--accent); + font-weight: 500; +} +.docs-sidebar a.sb-link.sub { + font-size: 13.5px; + padding-left: 24px; + color: var(--fg-mute); +} +.docs-sidebar a.sb-link.sub.active { + color: var(--accent); +} + +/* Scoped media query */ +@media (max-width: 960px) { + .hide-on-md-narrow { display: none !important; } + .docs-sidebar { display: none; } + .docs-main { grid-column: 1 / -1 !important; } +} + +/* State classes for theme toggle etc */ +#copy-btn.copied { color: var(--accent); border-color: var(--accent-line); } + +/* ─────────── Reference / field documentation ─────────── */ + +/* Field block — a documented config key or CLI flag */ +.field { + padding: 18px 0 22px; + border-top: 1px solid var(--line); + scroll-margin-top: 88px; +} +.field:first-of-type { border-top: 0; } + +.field-head { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 10px; + margin-bottom: 10px; +} +.field-name { + font-family: 'JetBrains Mono', monospace; + font-size: 15.5px; + font-weight: 500; + color: var(--fg); + letter-spacing: -0.005em; +} +.field-name .field-key { color: var(--fg); } +.field-name .field-sub { color: var(--fg-mute); } +.field-name .field-op { color: var(--fg-mute); font-weight: 400; } +.field-anchor { + opacity: 0; + color: var(--fg-mute); + text-decoration: none; + font-weight: 400; + transition: opacity 0.15s, color 0.15s; + cursor: pointer; + user-select: none; + font-family: 'JetBrains Mono', monospace; + font-size: 15px; + border: 0; + margin-left: -4px; +} +.field:hover .field-anchor, +.field-anchor:focus { opacity: 1; } +.field-anchor:hover { color: var(--accent); } + +.pill { + display: inline-flex; + align-items: center; + font-family: 'JetBrains Mono', monospace; + font-size: 11px; + line-height: 1; + padding: 4px 7px; + border-radius: 5px; + border: 1px solid var(--line); + background: color-mix(in oklch, var(--fg) 5%, transparent); + color: var(--fg-dim); + letter-spacing: 0.01em; + white-space: nowrap; +} +.pill.type { + color: oklch(0.82 0.10 200); + border-color: oklch(0.50 0.08 200 / 0.35); + background: oklch(0.45 0.09 200 / 0.15); +} +html[data-theme="light"] .pill.type { + color: oklch(0.40 0.13 200); + border-color: oklch(0.60 0.13 200 / 0.35); + background: oklch(0.85 0.06 200 / 0.4); +} +.pill.required { + color: oklch(0.80 0.14 25); + border-color: oklch(0.55 0.15 25 / 0.4); + background: oklch(0.45 0.14 25 / 0.15); +} +html[data-theme="light"] .pill.required { + color: oklch(0.50 0.18 25); + border-color: oklch(0.60 0.15 25 / 0.4); + background: oklch(0.92 0.06 25 / 0.5); +} +.pill.since { + color: var(--accent); + border-color: var(--accent-line); + background: var(--accent-soft); +} +.pill.default { + font-family: 'JetBrains Mono', monospace; +} +.pill.default .pill-label { + color: var(--fg-mute); + margin-right: 4px; + font-weight: 400; +} +.pill.default .pill-val { + color: var(--fg-dim); +} +.pill.deprecated { + color: var(--fg-mute); + text-decoration: line-through; + text-decoration-color: oklch(0.70 0.12 25 / 0.6); + text-decoration-thickness: 1px; +} + +.field-body { + color: var(--fg-dim); + font-size: 15px; + line-height: 1.68; +} +.field-body > * + * { margin-top: 14px; } +.field-body p { margin: 0; font-size: 15px; line-height: 1.68; color: var(--fg-dim); } +.field-body ul { padding: 0; margin: 0; list-style: none; } +.field-body ul > li { + position: relative; + padding-left: 20px; + margin-top: 4px; + font-size: 14.5px; + line-height: 1.6; +} +.field-body ul > li::before { + content: ''; + position: absolute; + left: 6px; + top: 0.72em; + width: 4px; + height: 4px; + border-radius: 50%; + background: var(--accent); + opacity: 0.7; +} +.field-body code { + font-size: 0.88em; + padding: 0.12em 0.4em; + border-radius: 5px; + background: color-mix(in oklch, var(--fg) 8%, transparent); + border: 1px solid var(--line); +} + +/* Field list wrapper — tightens internal spacing and resets prose flow */ +.field-list { + border-top: 1px solid var(--line-strong); + margin-top: 0; +} + +/* CLI synopsis — like terminal but no prompt, subtly different border */ +.synopsis { + background: var(--term-bg); + border: 1px solid var(--term-border); + border-radius: 10px; + padding: 14px 18px; + font-family: 'JetBrains Mono', monospace; + font-size: 14px; + line-height: 1.6; + color: var(--term-fg); + overflow-x: auto; + backdrop-filter: blur(12px); +} +.synopsis .syn-cmd { color: var(--term-fg); font-weight: 500; } +.synopsis .syn-opt { color: var(--term-comment); } +.synopsis .syn-arg { color: oklch(0.80 0.10 200); } +html[data-theme="light"] .synopsis .syn-arg { color: oklch(0.40 0.13 200); } + +/* Sidebar nested group (for CLI command groups) */ +.docs-sidebar .sb-group-sub { + margin-top: 2px; +} +.docs-sidebar .sb-subtitle { + font-family: 'JetBrains Mono', monospace; + font-size: 10px; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--fg-mute); + margin: 14px 0 4px; + padding: 0 12px; + font-weight: 500; + opacity: 0.75; +} diff --git a/website/src/styles/theme.css b/website/src/styles/theme.css new file mode 100644 index 00000000..81839f21 --- /dev/null +++ b/website/src/styles/theme.css @@ -0,0 +1,138 @@ +/* Shared theme tokens — mirrors Yarn.html */ +:root { + --accent-h: 280; + --accent: oklch(0.78 0.16 var(--accent-h)); + --accent-soft: oklch(0.78 0.16 var(--accent-h) / 0.14); + --accent-line: oklch(0.78 0.16 var(--accent-h) / 0.35); + + --bg-0: #05060f; + --bg-1: #0a0e28; + --bg-2: #141552; + --fg: #e8ecff; + --fg-dim: #a8b0d4; + --fg-mute: #6872a0; + --line: rgba(168, 176, 212, 0.14); + --line-strong: rgba(168, 176, 212, 0.28); + --card: rgba(12, 16, 44, 0.55); + --card-border: rgba(120, 130, 180, 0.18); + + /* Admonition colors (dark) */ + --adm-note-bg: oklch(0.30 0.09 240 / 0.28); + --adm-note-border: oklch(0.65 0.12 240 / 0.45); + --adm-note-fg: oklch(0.82 0.10 230); + --adm-tip-bg: oklch(0.30 0.10 150 / 0.25); + --adm-tip-border: oklch(0.65 0.12 150 / 0.45); + --adm-tip-fg: oklch(0.82 0.12 150); + --adm-warn-bg: oklch(0.35 0.12 70 / 0.28); + --adm-warn-border: oklch(0.70 0.14 70 / 0.5); + --adm-warn-fg: oklch(0.85 0.13 75); + --adm-danger-bg: oklch(0.30 0.14 22 / 0.28); + --adm-danger-border: oklch(0.65 0.18 22 / 0.5); + --adm-danger-fg: oklch(0.78 0.15 25); + + /* Syntax highlighting (dark) */ + --syn-bg: rgba(8, 10, 28, 0.72); + --syn-border: rgba(120, 130, 180, 0.18); + --syn-fg: #d6daf5; + --syn-comment: #6872a0; + --syn-keyword: oklch(0.78 0.14 300); + --syn-string: oklch(0.80 0.14 140); + --syn-number: oklch(0.80 0.14 70); + --syn-func: oklch(0.82 0.12 210); + --syn-prop: oklch(0.82 0.10 180); + --syn-punct: #8890b8; + --syn-tag: oklch(0.78 0.14 22); + --syn-attr: oklch(0.82 0.12 70); + + /* Terminal */ + --term-bg: rgba(6, 8, 22, 0.75); + --term-border: rgba(120, 130, 180, 0.22); + --term-prompt: oklch(0.78 0.14 150); + --term-fg: #e8ecff; + --term-comment: #8890b8; +} + +html[data-theme="light"] { + --bg-0: #eef3ff; + --bg-1: #dce7fb; + --bg-2: #c5d5f2; + --fg: #0c1030; + --fg-dim: #3a4370; + --fg-mute: #7a84a8; + --line: rgba(12, 16, 48, 0.10); + --line-strong: rgba(12, 16, 48, 0.22); + --card: rgba(255, 255, 255, 0.55); + --card-border: rgba(12, 16, 48, 0.08); + + --adm-note-bg: oklch(0.96 0.04 240 / 0.7); + --adm-note-border: oklch(0.60 0.14 240 / 0.6); + --adm-note-fg: oklch(0.40 0.14 240); + --adm-tip-bg: oklch(0.94 0.06 150 / 0.7); + --adm-tip-border: oklch(0.55 0.15 150 / 0.55); + --adm-tip-fg: oklch(0.35 0.13 150); + --adm-warn-bg: oklch(0.96 0.07 80 / 0.85); + --adm-warn-border: oklch(0.65 0.15 70 / 0.6); + --adm-warn-fg: oklch(0.42 0.14 60); + --adm-danger-bg: oklch(0.95 0.05 25 / 0.8); + --adm-danger-border: oklch(0.60 0.18 25 / 0.6); + --adm-danger-fg: oklch(0.45 0.18 25); + + --syn-bg: rgba(255, 255, 255, 0.72); + --syn-border: rgba(12, 16, 48, 0.10); + --syn-fg: #0c1030; + --syn-comment: #7a84a8; + --syn-keyword: oklch(0.45 0.18 300); + --syn-string: oklch(0.45 0.16 150); + --syn-number: oklch(0.50 0.15 50); + --syn-func: oklch(0.45 0.15 220); + --syn-prop: oklch(0.48 0.13 195); + --syn-punct: #505878; + --syn-tag: oklch(0.50 0.17 20); + --syn-attr: oklch(0.48 0.14 60); + + --term-bg: rgba(252, 252, 255, 0.75); + --term-border: rgba(12, 16, 48, 0.12); + --term-prompt: oklch(0.45 0.15 150); + --term-fg: #0c1030; + --term-comment: #505878; +} + +body { + font-family: 'Space Grotesk', system-ui, -apple-system, sans-serif; + background: var(--bg-0); + color: var(--fg); + transition: background 0.6s ease, color 0.6s ease; +} + +.mono, code, pre, kbd { + font-family: 'JetBrains Mono', ui-monospace, monospace; +} + +/* Sky — dimmed for docs reading */ +.sky { + background: + radial-gradient(ellipse 60% 35% at 78% 18%, oklch(0.42 0.18 290 / 0.45) 0%, transparent 60%), + radial-gradient(ellipse 80% 40% at 20% 92%, oklch(0.38 0.14 220 / 0.35) 0%, transparent 55%), + radial-gradient(ellipse 55% 45% at 8% 55%, oklch(0.40 0.14 235 / 0.30) 0%, transparent 60%), + radial-gradient(ellipse 100% 70% at 50% 30%, oklch(0.28 0.12 270) 0%, transparent 65%), + radial-gradient(ellipse 120% 100% at 50% 50%, transparent 40%, oklch(0.10 0.04 265 / 0.55) 100%), + linear-gradient(180deg in oklch, + oklch(0.12 0.05 265) 0%, + oklch(0.18 0.09 270) 22%, + oklch(0.22 0.11 275) 48%, + oklch(0.16 0.08 272) 78%, + oklch(0.09 0.04 265) 100%); + transition: background 0.6s ease; +} +html[data-theme="light"] .sky { + background: + radial-gradient(ellipse 50% 35% at 82% 12%, oklch(0.97 0.06 85 / 0.85) 0%, transparent 55%), + radial-gradient(ellipse 110% 35% at 50% 98%, oklch(0.92 0.08 65) 0%, transparent 60%), + radial-gradient(ellipse 80% 50% at 20% 40%, oklch(0.95 0.04 240 / 0.6) 0%, transparent 60%), + radial-gradient(ellipse 140% 100% at 50% 50%, transparent 55%, oklch(0.75 0.06 240 / 0.25) 100%), + linear-gradient(180deg in oklch, + oklch(0.96 0.03 240) 0%, + oklch(0.92 0.05 240) 35%, + oklch(0.88 0.06 230) 65%, + oklch(0.92 0.06 70) 100%); +} diff --git a/website/tsconfig.json b/website/tsconfig.json new file mode 100644 index 00000000..bcbf8b50 --- /dev/null +++ b/website/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "astro/tsconfigs/strict" +} diff --git a/yarn.lock b/yarn.lock index b69de398..147dd0c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,7 @@ "workspaces": { "@yarnpkg/documentation": "105cf01165fcffc02e5a354f6734895d01fbb152899e635b1d1b152a04e48c904810d457a85b09d642ca9061bf01e02dc203eabdf0c3a29ddf20036b31e43cde", "@yarnpkg/monorepo": "69da8dfb279601957675174872ca291310b88ff5e33fcc0060b11a3503fdef48f629515bcf7d74fbe12b83b2a84b7f0249cf8154978d15bc6a3fa3c634624f94", + "@yarnpkg/website": "4157b5c10dd2620a0b9e050953943600cb23a427eb61b74d605676e575ee9edb78b0eb26d8f2c3f8476e1fbe93f81a1ae3f7d8398cf13707d1818e8605b7dd2e", "@yarnpkg/zpm-constraints": "5c6a5440669d0a0244f06ebc980b86b246235da3b4da7fc5c2bbdc0bf61ef23e95d8bb9f2fdb7402d20cf0ac8461b086799a0e0e606054b85e9ac472be1dd9d2", "@yarnpkg/zpm-daemon-ui": "64b5d42d2f7f1113e164b3c3137385b0d72824abc41ca9e4d852261f61018f037cbe0b0d5c97d7b3529075ff8b6ceead5803590a5ff9ee3564a785732262564a", "acceptance-tests": "9e727eab8feee6a4383eb4abec8384decbaf30d2ee37dca7d2c8fc1e6afff399509282042cc605746ffaca0ed8f7e5b964b88327ecd50c5077d7a44b7ea4a5ae", @@ -541,6 +542,13 @@ "version": "2.13.0" } }, + "@astrojs/compiler@npm:^2.13.0": { + "checksum": "a190b933e70af17c7708af4dd554fd227bf464a16299c40792a36390ad4febd9138136cbbe6e868db29c9495427759ebe08554df188f5f89f810e7104df4cb16", + "resolution": { + "resolution": "@astrojs/compiler@npm:2.13.1", + "version": "2.13.1" + } + }, "@astrojs/internal-helpers@npm:0.7.3": { "checksum": "d8c89b5be8b9c809282dc2ec41365ba86eb98cd3b263bb1127c0c3516f45dedecb69e478d1f48d2a104552761554c9fd155a694a62366477277fbe5aeb83952c", "resolution": { @@ -548,6 +556,43 @@ "version": "0.7.3" } }, + "@astrojs/internal-helpers@npm:0.7.6": { + "checksum": "a1844f38eb37371bb0ad5bb91a70111e2773b90474341dee3f02ecc4f2156a55a115d665292c48893031db733183ae1ea33a2775d0bd03d3f98ccce51cabf932", + "resolution": { + "resolution": "@astrojs/internal-helpers@npm:0.7.6", + "version": "0.7.6" + } + }, + "@astrojs/markdown-remark@npm:6.3.11": { + "checksum": "bfa54b50a26d6b08273a32c99280e5e64686c7903b8bd4e23e61b31e31a00f5abb70195ab195a6fc202cb7123bfa497b767f9a744475c1e20ddd59b0a96d0d84", + "resolution": { + "resolution": "@astrojs/markdown-remark@npm:6.3.11", + "version": "6.3.11", + "dependencies": { + "@astrojs/internal-helpers": "0.7.6", + "@astrojs/prism": "3.3.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + } + }, "@astrojs/markdown-remark@npm:6.3.7, @astrojs/markdown-remark@npm:^6.3.1": { "checksum": "e2796815b1961fe722eeb0fdac3844640bccbf6f7c9d0804a47bde6905ae4b1f25ff48986f45f2fb43b65735adf14ceda3f7a69a88f91aa1ac178bd2ed97463c", "resolution": { @@ -2878,6 +2923,16 @@ } } }, + "@capsizecss/unpack@npm:^4.0.0": { + "checksum": "52d4b4cb6d71c56df4b59e2f69b7351ee0b6f088643bd3e0d0b3c737638306d874d359864463ee76b986c4d69abc4e966103dd773fd7eb5672226d15c6d0ef6a", + "resolution": { + "resolution": "@capsizecss/unpack@npm:4.0.0", + "version": "4.0.0", + "dependencies": { + "fontkitten": "^1.0.0" + } + } + }, "@ctrl/tinycolor@npm:^4.0.4": { "checksum": "c0270f41c850a1e92c64200002ea20a8a48d7922d6da9a6c32177fed9350e8e56788dbdf36acb826d70eae2d934dadad97621c7dba3de3b5994fd43ea1461190", "resolution": { @@ -3031,6 +3086,21 @@ } } }, + "@esbuild/aix-ppc64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/aix-ppc64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "ppc64" + ], + "os": [ + "aix" + ] + } + } + }, "@esbuild/android-arm@npm:0.25.10": { "checksum": null, "resolution": { @@ -3061,6 +3131,21 @@ } } }, + "@esbuild/android-arm@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/android-arm@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "arm" + ], + "os": [ + "android" + ] + } + } + }, "@esbuild/android-arm64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3091,6 +3176,21 @@ } } }, + "@esbuild/android-arm64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/android-arm64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "arm64" + ], + "os": [ + "android" + ] + } + } + }, "@esbuild/android-x64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3121,6 +3221,21 @@ } } }, + "@esbuild/android-x64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/android-x64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "x64" + ], + "os": [ + "android" + ] + } + } + }, "@esbuild/darwin-arm64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3151,6 +3266,21 @@ } } }, + "@esbuild/darwin-arm64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/darwin-arm64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "arm64" + ], + "os": [ + "darwin" + ] + } + } + }, "@esbuild/darwin-x64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3181,6 +3311,21 @@ } } }, + "@esbuild/darwin-x64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/darwin-x64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "x64" + ], + "os": [ + "darwin" + ] + } + } + }, "@esbuild/freebsd-arm64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3211,6 +3356,21 @@ } } }, + "@esbuild/freebsd-arm64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/freebsd-arm64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "arm64" + ], + "os": [ + "freebsd" + ] + } + } + }, "@esbuild/freebsd-x64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3241,6 +3401,21 @@ } } }, + "@esbuild/freebsd-x64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/freebsd-x64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "x64" + ], + "os": [ + "freebsd" + ] + } + } + }, "@esbuild/linux-arm@npm:0.25.10": { "checksum": null, "resolution": { @@ -3271,6 +3446,21 @@ } } }, + "@esbuild/linux-arm@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/linux-arm@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "arm" + ], + "os": [ + "linux" + ] + } + } + }, "@esbuild/linux-arm64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3301,6 +3491,21 @@ } } }, + "@esbuild/linux-arm64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/linux-arm64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "arm64" + ], + "os": [ + "linux" + ] + } + } + }, "@esbuild/linux-ia32@npm:0.25.10": { "checksum": null, "resolution": { @@ -3331,6 +3536,21 @@ } } }, + "@esbuild/linux-ia32@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/linux-ia32@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "ia32" + ], + "os": [ + "linux" + ] + } + } + }, "@esbuild/linux-loong64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3361,6 +3581,21 @@ } } }, + "@esbuild/linux-loong64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/linux-loong64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "loong64" + ], + "os": [ + "linux" + ] + } + } + }, "@esbuild/linux-mips64el@npm:0.25.10": { "checksum": null, "resolution": { @@ -3391,6 +3626,21 @@ } } }, + "@esbuild/linux-mips64el@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/linux-mips64el@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "mips64el" + ], + "os": [ + "linux" + ] + } + } + }, "@esbuild/linux-ppc64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3421,6 +3671,21 @@ } } }, + "@esbuild/linux-ppc64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/linux-ppc64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "ppc64" + ], + "os": [ + "linux" + ] + } + } + }, "@esbuild/linux-riscv64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3451,6 +3716,21 @@ } } }, + "@esbuild/linux-riscv64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/linux-riscv64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "riscv64" + ], + "os": [ + "linux" + ] + } + } + }, "@esbuild/linux-s390x@npm:0.25.10": { "checksum": null, "resolution": { @@ -3481,6 +3761,21 @@ } } }, + "@esbuild/linux-s390x@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/linux-s390x@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "s390x" + ], + "os": [ + "linux" + ] + } + } + }, "@esbuild/linux-x64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3511,6 +3806,21 @@ } } }, + "@esbuild/linux-x64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/linux-x64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "x64" + ], + "os": [ + "linux" + ] + } + } + }, "@esbuild/netbsd-arm64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3541,6 +3851,21 @@ } } }, + "@esbuild/netbsd-arm64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/netbsd-arm64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "arm64" + ], + "os": [ + "netbsd" + ] + } + } + }, "@esbuild/netbsd-x64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3571,11 +3896,41 @@ } } }, - "@esbuild/openbsd-arm64@npm:0.25.10": { + "@esbuild/netbsd-x64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/netbsd-x64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "x64" + ], + "os": [ + "netbsd" + ] + } + } + }, + "@esbuild/openbsd-arm64@npm:0.25.10": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/openbsd-arm64@npm:0.25.10", + "version": "0.25.10", + "requirements": { + "cpu": [ + "arm64" + ], + "os": [ + "openbsd" + ] + } + } + }, + "@esbuild/openbsd-arm64@npm:0.25.9": { "checksum": null, "resolution": { - "resolution": "@esbuild/openbsd-arm64@npm:0.25.10", - "version": "0.25.10", + "resolution": "@esbuild/openbsd-arm64@npm:0.25.9", + "version": "0.25.9", "requirements": { "cpu": [ "arm64" @@ -3586,11 +3941,11 @@ } } }, - "@esbuild/openbsd-arm64@npm:0.25.9": { + "@esbuild/openbsd-arm64@npm:0.27.7": { "checksum": null, "resolution": { - "resolution": "@esbuild/openbsd-arm64@npm:0.25.9", - "version": "0.25.9", + "resolution": "@esbuild/openbsd-arm64@npm:0.27.7", + "version": "0.27.7", "requirements": { "cpu": [ "arm64" @@ -3631,6 +3986,21 @@ } } }, + "@esbuild/openbsd-x64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/openbsd-x64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "x64" + ], + "os": [ + "openbsd" + ] + } + } + }, "@esbuild/openharmony-arm64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3661,6 +4031,21 @@ } } }, + "@esbuild/openharmony-arm64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/openharmony-arm64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "arm64" + ], + "os": [ + "openharmony" + ] + } + } + }, "@esbuild/sunos-x64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3691,6 +4076,21 @@ } } }, + "@esbuild/sunos-x64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/sunos-x64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "x64" + ], + "os": [ + "sunos" + ] + } + } + }, "@esbuild/win32-arm64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3721,6 +4121,21 @@ } } }, + "@esbuild/win32-arm64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/win32-arm64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "arm64" + ], + "os": [ + "win32" + ] + } + } + }, "@esbuild/win32-ia32@npm:0.25.10": { "checksum": null, "resolution": { @@ -3751,6 +4166,21 @@ } } }, + "@esbuild/win32-ia32@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/win32-ia32@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "ia32" + ], + "os": [ + "win32" + ] + } + } + }, "@esbuild/win32-x64@npm:0.25.10": { "checksum": null, "resolution": { @@ -3781,6 +4211,21 @@ } } }, + "@esbuild/win32-x64@npm:0.27.7": { + "checksum": null, + "resolution": { + "resolution": "@esbuild/win32-x64@npm:0.27.7", + "version": "0.27.7", + "requirements": { + "cpu": [ + "x64" + ], + "os": [ + "win32" + ] + } + } + }, "@eslint-community/eslint-utils@npm:^4.2.0": { "checksum": "94c150e2c379fcc89ba14242773fa366d5ffc657a016cc538f6c94ad4e4b393a9698cfe4c111e4b19cd39c152bfa5043d5dbcbd66c62572d65d52b55266749d8", "resolution": { @@ -6976,7 +7421,7 @@ } } }, - "@rollup/pluginutils@npm:^5.2.0": { + "@rollup/pluginutils@npm:^5.2.0, @rollup/pluginutils@npm:^5.3.0": { "checksum": "783bff507980f5a24acbf7b50ed04528de070304d6f137248d6208caadfc94f41772edf02a77de77b1b6cc10dd91103cb495124f2d4550c31e8583a5f09d5dc7", "resolution": { "resolution": "@rollup/pluginutils@npm:5.3.0", @@ -7377,6 +7822,19 @@ } } }, + "@shikijs/core@npm:3.23.0": { + "checksum": "b8beaf86f7f30d3ea1916c9946b5a327b7c72e4716fb6670a2c33236d6a589bf3c0cc0468cce88b47e80756a44895be661051d6b7739eb223744150e48f5a3d0", + "resolution": { + "resolution": "@shikijs/core@npm:3.23.0", + "version": "3.23.0", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + } + }, "@shikijs/engine-javascript@npm:3.13.0": { "checksum": "484d8ed73de3c159c4dba4405ff1e0618b06d4d21727a649052924f99fef5499aed64d01fbe539cb0183ba518c47b55f46d3c05b68f5dbd285397b0fef19ca89", "resolution": { @@ -7389,6 +7847,18 @@ } } }, + "@shikijs/engine-javascript@npm:3.23.0": { + "checksum": "1db8ce29c15e265118939f351397d09052a775a2e9cee0c10b93f1a90b2c9692880c5f44e6353684f771daed3d4f03337519b7d7a352757f6d664dc9d284b9eb", + "resolution": { + "resolution": "@shikijs/engine-javascript@npm:3.23.0", + "version": "3.23.0", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.4" + } + } + }, "@shikijs/engine-oniguruma@npm:3.13.0": { "checksum": "fae1f74ec619f784531d51a4edd1fb49fa9fa340a4b4812be1845480e6098801f1b40e4fdc276f6cfeb8b5667b288574a19cd83a69849bb10e1a5551d64d463b", "resolution": { @@ -7400,6 +7870,17 @@ } } }, + "@shikijs/engine-oniguruma@npm:3.23.0": { + "checksum": "75e02698dad0152ded6b6eafa17eafe276315d6543e0e45677d0d6577785ec69baad56a799ebac9eac11cb8d148eb5c6292f6254f4274a354e1d9d06daa9a150", + "resolution": { + "resolution": "@shikijs/engine-oniguruma@npm:3.23.0", + "version": "3.23.0", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + } + }, "@shikijs/langs@npm:3.13.0": { "checksum": "4ba42b3858723b2d23b9baf353a721ea9637395e743b82e2402ce88b22b8b5c8844ea4d4ab04a54393ed5c16e9c6a6c26d5d0a992c40cd4311ef1054d0a1ddbd", "resolution": { @@ -7410,6 +7891,16 @@ } } }, + "@shikijs/langs@npm:3.23.0": { + "checksum": "4490195af48d0827e8b54175a1aa1f7e10429bb7740e7053b47047ca47880decf4db90f5162400c7907e0b97fd6b492fca4aebf5ab47052d094d37c13fdb3026", + "resolution": { + "resolution": "@shikijs/langs@npm:3.23.0", + "version": "3.23.0", + "dependencies": { + "@shikijs/types": "3.23.0" + } + } + }, "@shikijs/themes@npm:3.13.0": { "checksum": "a5ed96bd93eb355594da853c1a8bd9c80f46b217272b487c77fa8a63a50ae742e44932e69b135b7837844083b75dcabd15e2831072f97eacff7649cd975d618a", "resolution": { @@ -7420,6 +7911,16 @@ } } }, + "@shikijs/themes@npm:3.23.0": { + "checksum": "e83449ad9f0578257c03a364349947e30ad732775afe1b4fa087726a4407aeedd1a7b3c0ce10e09ce0670b7fa6e14b2962dcc2d26d21d274bdaf67a5b6ddd85c", + "resolution": { + "resolution": "@shikijs/themes@npm:3.23.0", + "version": "3.23.0", + "dependencies": { + "@shikijs/types": "3.23.0" + } + } + }, "@shikijs/types@npm:3.13.0": { "checksum": "3ce1e9c025c714d03737798f64880559487bdc2b3a863bc0bd41aff76f29fa854384c2189bfc2adf5f6413629101872b47e65e4e5103bc068f09779fbddd5858", "resolution": { @@ -7431,6 +7932,17 @@ } } }, + "@shikijs/types@npm:3.23.0": { + "checksum": "2db602f140f9f2f96fdb6d2e7164d3ceba0df8ba38a560388e105e1d1e1c840c55a53dee2f5e131464f23f69d1fbc99a626e7de7cf62151eb24539a885cb1646", + "resolution": { + "resolution": "@shikijs/types@npm:3.23.0", + "version": "3.23.0", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + } + }, "@shikijs/vscode-textmate@npm:^10.0.2": { "checksum": "b905169b1acb553e250eed257c946fb2c78cc76801cd2f571785908ce53c71b788b219c007401f65f567e89fa1ad9771ed9507231ae6a389e9ea022b8e376f19", "resolution": { @@ -11209,6 +11721,82 @@ ] } }, + "astro@npm:^5.9.3": { + "checksum": "42b3a4d7df5ee1eac373fbceae40383af65c731e04e2439b89d6b9e7f1ce2858e5e1101d12b06db45d4452bcbe2305608516912b69b111831b3797379e14e722", + "resolution": { + "resolution": "astro@npm:5.18.1", + "version": "5.18.1", + "dependencies": { + "@astrojs/compiler": "^2.13.0", + "@astrojs/internal-helpers": "0.7.6", + "@astrojs/markdown-remark": "6.3.11", + "@astrojs/telemetry": "3.3.0", + "@capsizecss/unpack": "^4.0.0", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.3.0", + "acorn": "^8.15.0", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "boxen": "8.0.1", + "ci-info": "^4.3.1", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^1.1.1", + "cssesc": "^3.0.0", + "debug": "^4.4.3", + "deterministic-object-hash": "^2.0.2", + "devalue": "^5.6.2", + "diff": "^8.0.3", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "es-module-lexer": "^1.7.0", + "esbuild": "^0.27.3", + "estree-walker": "^3.0.3", + "flattie": "^1.1.1", + "fontace": "~0.4.0", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.2.0", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "magic-string": "^0.30.21", + "magicast": "^0.5.1", + "mrmime": "^2.0.1", + "neotraverse": "^0.6.18", + "p-limit": "^6.2.0", + "p-queue": "^8.1.1", + "package-manager-detector": "^1.6.0", + "piccolore": "^0.1.3", + "picomatch": "^4.0.3", + "prompts": "^2.4.2", + "rehype": "^13.0.2", + "semver": "^7.7.3", + "sharp": "^0.34.0", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", + "svgo": "^4.0.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tsconfck": "^3.1.6", + "ultrahtml": "^1.6.0", + "unifont": "~0.7.3", + "unist-util-visit": "^5.0.0", + "unstorage": "^1.17.4", + "vfile": "^6.0.3", + "vite": "^6.4.1", + "vitefu": "^1.1.1", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^21.1.1", + "yocto-spinner": "^0.2.3", + "zod": "^3.25.76", + "zod-to-json-schema": "^3.25.1", + "zod-to-ts": "^1.2.0" + }, + "optionalDependencies": [ + "sharp" + ] + } + }, "astro-expressive-code@npm:^0.41.1": { "checksum": "a67bbcd15067f23fe36653dfd697f98614dee0b936aa581178c96de8e67fae94c70cc27298035229e5632fa1defb05c2db7981da14f9e7e39402326f12119fdf", "resolution": { @@ -12457,6 +13045,16 @@ } } }, + "chokidar@npm:^5.0.0": { + "checksum": "01cddcdfb4e57460091be40e62c3d14f6fcec23f08f7d4c64f0ea4b897fd3d0e6ab3952f23bae5daf55e2e529c74f99fe78910be60707b1fde93bcd9fb33a29b", + "resolution": { + "resolution": "chokidar@npm:5.0.0", + "version": "5.0.0", + "dependencies": { + "readdirp": "^5.0.0" + } + } + }, "chownr@npm:^1.0.1, chownr@npm:^1.1.1": { "checksum": "c8605e67e7d2df02d39e980a85803839279958157e8099d60e7e5a613416d975e2dc0ae3a6483935eb713568a128427cbfce3e8200f5fd3bc142c1b539d3e476", "resolution": { @@ -12506,6 +13104,13 @@ "version": "4.3.1" } }, + "ci-info@npm:^4.3.1": { + "checksum": "87388db3c9180716e39ff3cb0240cdae74501ecfe7f501c7b6b7474edd50cb04435ef67652b549ba03aa95bda7cafadc794aca7c5e284d3e66441bf8a0fc95a0", + "resolution": { + "resolution": "ci-info@npm:4.4.0", + "version": "4.4.0" + } + }, "cjs-module-lexer@npm:^1.0.0": { "checksum": "e5ee3191d7068d8cb524f581e8f0a7b47cae97849e74c39806f75f5e89c8e7acfdeaf689d893f36a4493c63555b20560dad0e84912dfe100d0dca72c1f595c21", "resolution": { @@ -12772,6 +13377,13 @@ "version": "7.2.0" } }, + "commander@npm:^11.1.0": { + "checksum": "0643370fb68bae45bac5143c313616202e4e43f1d1aa42541614176bdfea111909c683b5a78c207f8a788521dcd89d9ff31f291052865087b602ed3738e62d9f", + "resolution": { + "resolution": "commander@npm:11.1.0", + "version": "11.1.0" + } + }, "commander@npm:^2.20.0": { "checksum": "1187396b7e17df4ebfe9b36bb4968a6a5930ac62241eb8c5348ef50603dd3b708bd017c673fd058aaa97df1efcd0f4794c7fd59844a3cdb2669fd5c45d908a1f", "resolution": { @@ -12956,6 +13568,13 @@ "version": "1.0.2" } }, + "cookie@npm:^1.1.1": { + "checksum": "e5bc26821e3032e5d98cf2cfdf834c6e1e6a74ff6fcbdb2807f96815101aa77124902f7fe6467aeabe9cfe0bc0f998d207d51d5c80edc8e222f4c14c3ccd17cb", + "resolution": { + "resolution": "cookie@npm:1.1.1", + "version": "1.1.1" + } + }, "cookie@npm:~0.7.1, cookie@npm:~0.7.2": { "checksum": "e7611219ea9ed4da96308873a47f9d76b99c6b02972904d930d2f804a949fe911fa30a5c4ea6c0d757a83a90741341919c2ab145ebcae8f937111737a86a2079", "resolution": { @@ -12970,6 +13589,13 @@ "version": "1.2.2" } }, + "cookie-es@npm:^1.2.3": { + "checksum": "20923e85708cabeaaa971649fd8a4a14f47d9007f38d999960cf942b05646896af9ef051e82feba81488b0bff8bd7b75c6f5cbedd9ce78d5e339489d65584583", + "resolution": { + "resolution": "cookie-es@npm:1.2.3", + "version": "1.2.3" + } + }, "cookie-es@npm:^3.0.0": { "checksum": "c00e32d679951e21b36873decb43731b46bb9d2c78acaf0cd2a3d505c86377668f857947e1a30a39dcace6194256aca0770301565b88a699130f69fae996b38f", "resolution": { @@ -13269,6 +13895,28 @@ } } }, + "css-tree@npm:^3.0.1, css-tree@npm:^3.1.0": { + "checksum": "d8ce918bcc5e4891ef30d69c60cf6ea92189601ac3043e88ca7dfba192b16a654df9c7c798a0f1cbded114df6fb02d003e3b98f8e86c9179b9b1ddaadc40cb93", + "resolution": { + "resolution": "css-tree@npm:3.2.1", + "version": "3.2.1", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + } + } + }, + "css-tree@npm:~2.2.0": { + "checksum": "02b718362d35bb9a7c6c69f36761c46652d4249b2d35d6baa9827020bc6a73425f11ac0d4e7f70dda2de2531f0ef41051e2a76be23d075076f8b5535d14c331c", + "resolution": { + "resolution": "css-tree@npm:2.2.1", + "version": "2.2.1", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + } + } + }, "css-what@npm:^6.0.1, css-what@npm:^6.1.0": { "checksum": "00c841e9f0e27847ff1389f0af41d237388f5c1248ee4bc9092b972f34f696ef4b27cab75588fc702aadfccbd42a9cb294bb9867c7fae07ccc39c50adf86e31e", "resolution": { @@ -13366,6 +14014,16 @@ } } }, + "csso@npm:^5.0.5": { + "checksum": "c236e072aacc8fb38888b395b5bb689c61120f68af0d81ed3257e6b40c73daa596c605b14c019d59a034cb23169480db4438ddba40a23424c852267fe746447f", + "resolution": { + "resolution": "csso@npm:5.0.5", + "version": "5.0.5", + "dependencies": { + "css-tree": "~2.2.0" + } + } + }, "csstype@npm:^3.0.2": { "checksum": "2e2381ad77624559429bbaebf5ddfb7a52890cf0a564b2d2888b027b3ef5846a4f27fdb17cbff36095204fa91256383e5084883bb2851e82a8c1dc7ced624141", "resolution": { @@ -13763,6 +14421,13 @@ "version": "6.1.4" } }, + "defu@npm:^6.1.6": { + "checksum": "466bcfa4551c6340b9bdfcee5d0437f523a7f314bc8742e9475ab10119d5a70f98d90e5dd00cdc0d841e5ef7c34a8bb26ebc390d875b26ede17c2c24249c1baf", + "resolution": { + "resolution": "defu@npm:6.1.7", + "version": "6.1.7" + } + }, "delayed-stream@npm:~1.0.0": { "checksum": "d2187242c5f681c60e798f712d3c1365388318e1c47eb046150ae909dfda38bcf54840a1633cf0f307abd0a9da7b94e09ec4b7b7a5cbd0430e4fe9bd4a8554f0", "resolution": { @@ -13865,6 +14530,13 @@ "version": "5.3.2" } }, + "devalue@npm:^5.6.2": { + "checksum": "fc60a2f9141409340b36cb1499ddd35ddc1f7b9eacaf34656511db669facf1503446762757590d1dc7ee6454e55d708c54964b16adfa3b8791333f7151678674", + "resolution": { + "resolution": "devalue@npm:5.7.1", + "version": "5.7.1" + } + }, "devlop@npm:^1.0.0, devlop@npm:^1.1.0": { "checksum": "68e569239ae835f006f1c5c433445c7610fb4a19c77d75dbbb2faabb561a05ab1bcfbb956628209485fd606f25f197d5617396e5efcfa46d0f9da6b42fb6b962", "resolution": { @@ -13889,6 +14561,13 @@ "version": "5.2.0" } }, + "diff@npm:^8.0.3": { + "checksum": "3ef21212521e878b6a9e224422a603befa056962131bd046e798b1232f31c7b2cb1b4dab53f530c4c94bd29b6c0526902875d7f159410b31d56248546e3b133e", + "resolution": { + "resolution": "diff@npm:8.0.4", + "version": "8.0.4" + } + }, "diff-sequences@npm:^29.6.3": { "checksum": "d2cd08c7c48cb1629b796ac48f5dc836f6d8ecb0946c62d36e4a2076fd9de490571b70c3b0cafd0da011202506487cf34f0850466d8a4ef39a087f92b16902a5", "resolution": { @@ -14713,6 +15392,69 @@ ] } }, + "esbuild@npm:^0.27.3": { + "checksum": "7c07567c23f0bf35b37449f83084c661bbbb3876e48084273525f4472fcd78a772792da86c6e74ea92a3ee9cb2291c752d998d7f7ceab93dec2b5cbe7c25bf49", + "resolution": { + "resolution": "esbuild@npm:0.27.7", + "version": "0.27.7", + "dependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + }, + "optionalDependencies": [ + "@esbuild/aix-ppc64", + "@esbuild/android-arm", + "@esbuild/android-arm64", + "@esbuild/android-x64", + "@esbuild/darwin-arm64", + "@esbuild/darwin-x64", + "@esbuild/freebsd-arm64", + "@esbuild/freebsd-x64", + "@esbuild/linux-arm", + "@esbuild/linux-arm64", + "@esbuild/linux-ia32", + "@esbuild/linux-loong64", + "@esbuild/linux-mips64el", + "@esbuild/linux-ppc64", + "@esbuild/linux-riscv64", + "@esbuild/linux-s390x", + "@esbuild/linux-x64", + "@esbuild/netbsd-arm64", + "@esbuild/netbsd-x64", + "@esbuild/openbsd-arm64", + "@esbuild/openbsd-x64", + "@esbuild/openharmony-arm64", + "@esbuild/sunos-x64", + "@esbuild/win32-arm64", + "@esbuild/win32-ia32", + "@esbuild/win32-x64" + ] + } + }, "esbuild-wasm@npm:^0.23.0": { "checksum": "fee5d3f6f09e7e07cadbae9747da17a6db912c701786ab033acf4137f7c07461a485b602f82fd5959ee3efe04745cad61f468804302791a610c903949dfec78b", "resolution": { @@ -15862,6 +16604,16 @@ } } }, + "fontace@npm:~0.4.0": { + "checksum": "c7343ea4a7cea1f2e7f0f0e9960d2d57ebd38e4db2cb4708fd5b03281b80ab5af684a144dacf8163b98d5d7691deb32022f26b2dd7d1498b25c738d91588b366", + "resolution": { + "resolution": "fontace@npm:0.4.1", + "version": "0.4.1", + "dependencies": { + "fontkitten": "^1.0.2" + } + } + }, "fontkit@npm:^2.0.2, fontkit@npm:^2.0.4": { "checksum": "014224f78fa37a4a93b41570bf64f6e0913f549b5217ed8dfe416dff4bda5193d2b3b4a69ae1f21f8360312f5976e420665b4bfc13a72af076253ea8d198e315", "resolution": { @@ -15880,6 +16632,16 @@ } } }, + "fontkitten@npm:^1.0.0, fontkitten@npm:^1.0.2": { + "checksum": "67853dd174a2a11cbbd1a587d7693aa47c5bb78377e211d0b5dee5e6678111394fc2f6b0e05178b1bfdf76feff8726e19de3483864c84c5eaf9df400709fd530", + "resolution": { + "resolution": "fontkitten@npm:1.0.3", + "version": "1.0.3", + "dependencies": { + "tiny-inflate": "^1.0.3" + } + } + }, "for-each@npm:^0.3.3, for-each@npm:^0.3.5": { "checksum": "9cb9bc01f6da1ec1629b74376b909f310bed04610da4b57585e7c837eba0f771b77d6c5cde6fc2981af383fb0b8a9a18721b7bb93e9b5d833dd6c7fab428dc69", "resolution": { @@ -17019,6 +17781,24 @@ } } }, + "h3@npm:^1.15.10": { + "checksum": "7dfd93a353fa9d3ad55e412f9b744123390327b9941aa5b93519f716e295656ad14c22f8db4974fe22685a47ce3abed9f01ad33976fa77821ce3ecfd588c367e", + "resolution": { + "resolution": "h3@npm:1.15.11", + "version": "1.15.11", + "dependencies": { + "cookie-es": "^1.2.3", + "crossws": "^0.3.5", + "defu": "^6.1.6", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + } + }, "h3@npm:^1.15.4": { "checksum": "797991f645c17e366f520648f4e8ab2ff3d9a28cab226a9e2f7cb766450a42efe379bc8a800faa49fdbaa79af2ce3e15eabc1aa06c4acd0f482c1ab0c2d7a2cd", "resolution": { @@ -19300,6 +20080,16 @@ } } }, + "js-yaml@npm:^4.1.1": { + "checksum": "807914890da23d90bf1805ea6eea8ac903bb413e950c91b5619c33ae449b02f427cf2ea3067bc0f2cd027cb305bc71f3e5302ec46699957f051c3a6dca32b015", + "resolution": { + "resolution": "js-yaml@npm:4.1.1", + "version": "4.1.1", + "dependencies": { + "argparse": "^2.0.1" + } + } + }, "jsesc@npm:^3.0.2, jsesc@npm:~3.1.0": { "checksum": "d0a43688c75d51a943c5f013f2ad17d0e3f66b4e05bd1f610be38f7a55392f30070729a0f4b2e4b39cd17493d4da4ab0feac8f3e8e9a0c242e5fa9b235d85d8f", "resolution": { @@ -20008,6 +20798,13 @@ "version": "11.2.4" } }, + "lru-cache@npm:^11.2.7": { + "checksum": "35c5bfd2b4b9c9e9048efe526025cd0830954d4764d8fb0985cbf58bf44e579a1a95dc6315a50e6388fae13bbf6d00ec0b15e34325b667f150817039c9c8e3be", + "resolution": { + "resolution": "lru-cache@npm:11.3.5", + "version": "11.3.5" + } + }, "lru-cache@npm:^5.1.1": { "checksum": "629ae5fae97a816f720ce25c809e85692e23b4cb04561db26026cc89bbe74590045b5f0b85137fd82e66cbf1bb8a48db6cc04484b717e1cfad7b918d7b446fc9", "resolution": { @@ -20048,6 +20845,16 @@ } } }, + "magic-string@npm:^0.30.21": { + "checksum": "aca784e571fb9609dbed834920cfa79f342458802a1643c382bf9e3e3bc19a16eec5b19e801b6ac811d9ea9116e1e6b0cb0987658560cd73abb401e49e6eef06", + "resolution": { + "resolution": "magic-string@npm:0.30.21", + "version": "0.30.21", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + } + }, "magicast@npm:^0.3.5": { "checksum": "21bec1eef49c425fd585618e46658e9ab2796854d34aaf65699dd3e36a85959c334ba19507b42f26413736f798938b31c30f2e787295679fe877d559218b3050", "resolution": { @@ -20060,6 +20867,18 @@ } } }, + "magicast@npm:^0.5.1": { + "checksum": "6123666f6871ef9a788a16286e10882ffde74168c2b247c35a49ac001c3807cacfb588e50f6d574a728b662f604565615a0d35ee8b429ec00c28b4a1e0db1e98", + "resolution": { + "resolution": "magicast@npm:0.5.2", + "version": "0.5.2", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + } + }, "make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": { "checksum": "9c8a5fb5dff362c02852d99795d47e1d4c9b92d23814d2aadb6cb310904dee14700998c08af54446f39932c4ccf1d4bd433ebdef0b50593ca967527187a20cf0", "resolution": { @@ -20453,6 +21272,13 @@ "version": "2.0.14" } }, + "mdn-data@npm:2.0.28": { + "checksum": "433f39f1ae3ab597bcacb3f083498bee41760e1604bd4d0d1a3ce523dcce78520b0574060e664ba2fbfddd6b47260cb96b1082d956d746b9a66f3090cce390eb", + "resolution": { + "resolution": "mdn-data@npm:2.0.28", + "version": "2.0.28" + } + }, "mdn-data@npm:2.12.2": { "checksum": "45a41007c9b20462fe52c04b6ca3068b4e43fd53e327453ffc5fdb42fe3b01577e6b367d505bb125e3527df409c9561ecae278291b5d5ad76e556bfcc9929b4a", "resolution": { @@ -20460,6 +21286,13 @@ "version": "2.12.2" } }, + "mdn-data@npm:2.27.1": { + "checksum": "40bb5a14890686575acb66f76bfe1fa6b8f308d4127043c3e59f0958f24690190e7d26ece6563f80a29aea122cb9c7c3b744ae3696127888355e5590f43a05de", + "resolution": { + "resolution": "mdn-data@npm:2.27.1", + "version": "2.27.1" + } + }, "meant@npm:^1.0.3": { "checksum": "d556ef45182aec70a3c8558b965426e5b54839fd294d46fd41b24aebcd15e86bb02b7bffc77e2000feddbb4fc200e9deb40319f226331cf79f58bec4381d64e8", "resolution": { @@ -20603,6 +21436,22 @@ } } }, + "micromark-extension-directive@npm:^4.0.0": { + "checksum": "2ccc571e4f14e712dc903bcb1cdf7cce4ac79150daa1b4b5985c37b983c0c8c7a8c11517e2f878ecf6c29c6e7ab8cec480c2aa96548d7a11d2edc0339693550d", + "resolution": { + "resolution": "micromark-extension-directive@npm:4.0.0", + "version": "4.0.0", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + } + } + }, "micromark-extension-gfm@npm:^3.0.0": { "checksum": "e949fb98979281941e40faa7be552cdf82bd6adf2b5afaad88d916a92146582174cb4ee6534f19e72e293b133873400bcff652f72f482630545959f35117ad83", "resolution": { @@ -21643,6 +22492,13 @@ "version": "1.0.3" } }, + "node-mock-http@npm:^1.0.4": { + "checksum": "ff5bd08d0119c65edb1f2fafdc7f87f0e32fdc0c8c2c68f48dbc860d2f0be5bde9faae0174275da9491ba6b00514e76c8b9a8622bc839081835ca1a530777333", + "resolution": { + "resolution": "node-mock-http@npm:1.0.4", + "version": "1.0.4" + } + }, "node-object-hash@npm:^2.3.10": { "checksum": "75fae22a1bdac001fead570aff37857764e4b0bf9102114efd471750771d49b77e54f7f5c470aab537528b37b18f6faeffa5ad958adcb9a76a7f31313424d1d8", "resolution": { @@ -21892,7 +22748,19 @@ } } }, - "ohash@npm:^2.0.0": { + "ofetch@npm:^1.5.1": { + "checksum": "78f76334a5abf7a17e1bb69d3de3ca7e064339a346800c9568781f57f4cc99ddb368e4a08aea6979843d06b383e432ac8d97b047622df7f9d8d32c64f19ca910", + "resolution": { + "resolution": "ofetch@npm:1.5.1", + "version": "1.5.1", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + } + }, + "ohash@npm:^2.0.0, ohash@npm:^2.0.11": { "checksum": "8527127b379a47071fbbe405c515e7a3e271702c57f0be45dc5977a3f395e4272af56d9eced0d2145a9f195eac426dc21d0f354b958e7cb19af44852fad9107e", "resolution": { "resolution": "ohash@npm:2.0.11", @@ -21953,6 +22821,13 @@ "version": "0.12.1" } }, + "oniguruma-parser@npm:^0.12.2": { + "checksum": "d21d3dc5552e65675eb612f22c04192509f286fc90d899fda2c725f9816a98d137294201b830c73c9f4d775bb2826a7fbe0fc24f3cd793214f8627b4e2b03833", + "resolution": { + "resolution": "oniguruma-parser@npm:0.12.2", + "version": "0.12.2" + } + }, "oniguruma-to-es@npm:^4.3.3": { "checksum": "e33bb544514a43d5e7b55a177ce328c4574ccda3410f8ba6cf1aebd79949cca1587e0fb0e2b71811118af947c6e68bbf8c27259b0fe64f1776e45e87b4ee6401", "resolution": { @@ -21965,6 +22840,18 @@ } } }, + "oniguruma-to-es@npm:^4.3.4": { + "checksum": "e95fd0eaeb7fe835480b7a3faafbf3fc90a4f1bcf9321b9d3320d81a46999d445f857685ab2907750331e5e3ead1158eea8cea0b06960e557988c54eff624fbc", + "resolution": { + "resolution": "oniguruma-to-es@npm:4.3.6", + "version": "4.3.6", + "dependencies": { + "oniguruma-parser": "^0.12.2", + "regex": "^6.1.0", + "regex-recursion": "^6.0.2" + } + } + }, "open@npm:^7.0.3": { "checksum": "833368b68550c771c32ce55173963243a059b57d105559e467a174b2372a0667635e789f881adc34a07c865bb8afd816a5de46b3867a08ec421300fe7d0627c5", "resolution": { @@ -22124,7 +23011,7 @@ "version": "7.0.3" } }, - "p-queue@npm:^8.1.0": { + "p-queue@npm:^8.1.0, p-queue@npm:^8.1.1": { "checksum": "00bb0507fa40974457ee67b54021480917a937e1b97721b989417d728274a85a4083fed602ef760aad11d5ae8e5121a7aa4b9c7e9281c0ebfe9f93ab08be76fe", "resolution": { "resolution": "p-queue@npm:8.1.1", @@ -22176,6 +23063,13 @@ "version": "1.4.0" } }, + "package-manager-detector@npm:^1.6.0": { + "checksum": "9032bf89a4e10ca61d2f23f665cd288bb8bf255b25f868b0e246011aed37eb5218017267a1f86d45ac77b144833c28c11804ffeed95fcdf65f352341dc31cb3c", + "resolution": { + "resolution": "package-manager-detector@npm:1.6.0", + "version": "1.6.0" + } + }, "pagefind@npm:^1.3.0": { "checksum": "737459de643649c50fd8db37f13c44e122f08b9280000374369063b85ae70e04a7f67051d74210bdde789a1f5de650e3cebfcbab2cd3744d3691ef9350978d92", "resolution": { @@ -22493,6 +23387,13 @@ "version": "2.0.0" } }, + "piccolore@npm:^0.1.3": { + "checksum": "0e3ba5440a25625d420f659782792218fd70a6efab8b4b23e3d80d3302e3cdcbd3df3acc24a75f1743146d4907d83e43715532879553c157d2880ca7840f301e", + "resolution": { + "resolution": "piccolore@npm:0.1.3", + "version": "0.1.3" + } + }, "picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": { "checksum": "81c060bb5a99082c0b33650796540db258773ccc7d00737ac0836dfdfba399d4da99c1d508470859b43a785f8b991b828592d349601b09ea883c8586da60fb10", "resolution": { @@ -23759,6 +24660,13 @@ "version": "4.1.2" } }, + "readdirp@npm:^5.0.0": { + "checksum": "cf2af08e50628c61109ffef9d6b17dfc6e01f1a8f7236809a04bd159936a5210beb05bed36bff3f4ef3151eb168647d1c07de6ac2ba871a35a398af3c8b51b6f", + "resolution": { + "resolution": "readdirp@npm:5.0.0", + "version": "5.0.0" + } + }, "readdirp@npm:~3.6.0": { "checksum": "042f4b44f6f64bcd6752c21d14fa4c3d4171f66ba2d4d2ba06057a4d1d66950fa4becd87d02333bab3c47e734f58e8b5ace7b8f5ed73b4fe1942a62745031e0c", "resolution": { @@ -23961,6 +24869,16 @@ } } }, + "regex@npm:^6.1.0": { + "checksum": "b2eae1bb8d8317abf79c42aa393dc795349fb3a55eca76b3f636a6f62d0d411eb74c138b83394398dc6730f79ecd5625b074de1e61a923fa1cc14550f9936236", + "resolution": { + "resolution": "regex@npm:6.1.0", + "version": "6.1.0", + "dependencies": { + "regex-utilities": "^2.3.0" + } + } + }, "regex-recursion@npm:^6.0.2": { "checksum": "c75b2b10eda845fce4705d3707833663910ca216adaad1cb76ab9a42abda5edde7324ab1e7ab3460b05d94e85fd745ce998b8505e7da8bfe6a09051607078746", "resolution": { @@ -24233,6 +25151,19 @@ } } }, + "remark-directive@npm:^4.0.0": { + "checksum": "4a0cb315e9e5cf29772fbb2d0f18a5f7368a7e4c728d0750c304d6ee099f2f62cff44705272b7ed9ec0e7aea2acb054eea7302eb33a556e2911663833c69fd74", + "resolution": { + "resolution": "remark-directive@npm:4.0.0", + "version": "4.0.0", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^4.0.0", + "unified": "^11.0.0" + } + } + }, "remark-gfm@npm:^4.0.1": { "checksum": "0dddd1baf8c24d92df97841865adb5e3f7d114843c7b0c851e19d734e77a393de631a4ac4a89c9f057f337b38c53a48f0dc79e921347dd033ccd2064ed351b5e", "resolution": { @@ -24709,6 +25640,13 @@ "version": "1.4.1" } }, + "sax@npm:^1.5.0": { + "checksum": "3d46c61bd8c9efe95d62481fa27fde8052bf9f8dd9502bc149126288a70f50ba074447a9dbc8af941f1afd8b6cb05a0316bbe187ca4b70355ecc67979582c032", + "resolution": { + "resolution": "sax@npm:1.6.0", + "version": "1.6.0" + } + }, "scheduler@npm:^0.20.2": { "checksum": "37a03c01254332c57122c4bd69d52ccb78d4eb569132e631d2b4f40cf73627d6b11a54f1aa06428123de13807223c5cc4519e1d4a223b2ebbf65a41fd2a133a5", "resolution": { @@ -24814,6 +25752,13 @@ "version": "7.7.3" } }, + "semver@npm:^7.7.3": { + "checksum": "d401b8989928aa117ff8b892cef246fa129be291f59af945b23945e929171ccd0d3c5f378efd87bde1cec7b948240d502821f55e859d8a98676b6581a5ad2aa9", + "resolution": { + "resolution": "semver@npm:7.7.4", + "version": "7.7.4" + } + }, "send@npm:~0.19.0, send@npm:~0.19.1": { "checksum": "955fd994ac98b3eb4e90ba48748b194c5b4cc2bde123985b73bc7aad57f1438ffe52ea53f2dc6e9f66ee6cb4913a5512a95e8e19c187b5f6bebc5c58b94ef198", "resolution": { @@ -25093,6 +26038,23 @@ } } }, + "shiki@npm:^3.21.0": { + "checksum": "2611369952c269f1a85acaa76d9b93a7d3b863c83cbd1edcd1c32d3cc9665a67bd0a64947da025c13f4708b9d4c9c5518b9c3e01c19593b4829697595d034102", + "resolution": { + "resolution": "shiki@npm:3.23.0", + "version": "3.23.0", + "dependencies": { + "@shikijs/core": "3.23.0", + "@shikijs/engine-javascript": "3.23.0", + "@shikijs/engine-oniguruma": "3.23.0", + "@shikijs/langs": "3.23.0", + "@shikijs/themes": "3.23.0", + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + } + }, "side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": { "checksum": "1984785070f434b0578392ab40107f179f806f5e03edc171936a7b0d49fecd855a598fa0ddfb9f35f386566cba22bb944e82e29048b9e15d2007f1b3868dcc06", "resolution": { @@ -25307,6 +26269,13 @@ "version": "1.4.2" } }, + "smol-toml@npm:^1.6.0": { + "checksum": "f800b199c192b1374bb72f0909bb8bfe85d7e91bcfcd59cc62bb4e7d9ba3fe1cef39aef3b0539d176c9847fb7c8f90caa7a39e3acf24a3474a65f274a591e007", + "resolution": { + "resolution": "smol-toml@npm:1.6.1", + "version": "1.6.1" + } + }, "snake-case@npm:^3.0.4": { "checksum": "383b0f839f81a48a69422ee7dc96c132abf39afeadcfe5c42e6fa48f5ab19a281641541d17cbdd8ce297f59dbcc4a622dd64f6dc5fed47037df4241c5e79999f", "resolution": { @@ -26028,6 +26997,22 @@ } } }, + "svgo@npm:^4.0.0": { + "checksum": "e4172f03915bc3b56ff0cc858171a89c1078a42b2aff0f51b116adda9bc8976b7a162e4b403587deabfbbdbe9429d46487b0714a38a2a5373c8d309cf312af41", + "resolution": { + "resolution": "svgo@npm:4.0.1", + "version": "4.0.1", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.5.0" + } + } + }, "swap-case@npm:^2.0.2": { "checksum": "5508fe1381db8820df692a2ee8c14242c7544082a422bc69c5e9768450af28e0b7e9af98e8f6c35d2126f10b8069359a7ca051a5afdd5fb735f0559a8c0bb779", "resolution": { @@ -26375,6 +27360,13 @@ "version": "0.3.2" } }, + "tinyexec@npm:^1.0.2": { + "checksum": "0fc6ffa26c871260b39d0d47220fd11a437b06bfa89984b17740625369fdb09bdd5876b1489639587845777e1f8745c12afc2580cf35c592867aedbd5b8eab1c", + "resolution": { + "resolution": "tinyexec@npm:1.1.1", + "version": "1.1.1" + } + }, "tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15": { "checksum": "19a68690df12c28e179fbd30aafdbad7460f0e25fdc34897aaed48d3530d2041a7d0a82016a147d9bfba5231d88af6945454ceca4f5a81a3ba7f56a1b1087709", "resolution": { @@ -26799,6 +27791,13 @@ "version": "1.6.1" } }, + "ufo@npm:^1.6.3": { + "checksum": "3825d5871cc5bbc84f8d13a0edbbbe7fbeb17407756986906017a91f1dd57e11ade27e90fca3d8e5015493099b33e184e92aa34fa8d097bc3de6f9d354d48617", + "resolution": { + "resolution": "ufo@npm:1.6.3", + "version": "1.6.3" + } + }, "ultrahtml@npm:^1.6.0": { "checksum": "4308979ca28c38ce28c52180692efd79d2fe6df7afbbc156c9eddba83e2c5934357ad93226b95f4927b50939247852709d48bfdc118beb2ac2604acc6d317fa2", "resolution": { @@ -26922,6 +27921,18 @@ } } }, + "unifont@npm:~0.7.3": { + "checksum": "f4a64f1c1fcf461855b252c8e951ca629eb54e1272f3fe93dc33b04a7149911c1d6855ae15e9a605c999f09245f1cb5c547bdad2aa7835225330b4d9b642f830", + "resolution": { + "resolution": "unifont@npm:0.7.4", + "version": "0.7.4", + "dependencies": { + "css-tree": "^3.1.0", + "ofetch": "^1.5.1", + "ohash": "^2.0.11" + } + } + }, "unique-filename@npm:^4.0.0": { "checksum": "4ff52973f075f45675c215309872627aeed27d8007c1f0f32037b65644405142a04a23ceea921d87a5cbdb163a5a7148ddb6741e168267bb005817ae903fe023", "resolution": { @@ -27064,6 +28075,18 @@ } } }, + "unist-util-visit@npm:^5.1.0": { + "checksum": "855276dfb96c58c8f810968724e2229e028708fbef56d4a046c2a2739b8db02de11391b2bfd23d6dcc0c9372ddcbb60bf358375a0c3e30f96ec955b8a6b321e7", + "resolution": { + "resolution": "unist-util-visit@npm:5.1.0", + "version": "5.1.0", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + } + } + }, "unist-util-visit-children@npm:^3.0.0": { "checksum": "af3d2e2adbc39b17cf06e5e4f745984e93483cb66182e45d34be5c6ed1400bdc3330b06ee3f6dade24c1aaf00855298752c183ab3e405b08319e027ecf324f21", "resolution": { @@ -27085,6 +28108,17 @@ } } }, + "unist-util-visit-parents@npm:^6.0.2": { + "checksum": "154aeb996f78864748db1addba1beba7d07302dd2d37903723da1f1eb4cd9ff7eb032c81e0a51657b08468729036cf637cf3b535524c7c182f60b120f22a1c73", + "resolution": { + "resolution": "unist-util-visit-parents@npm:6.0.2", + "version": "6.0.2", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + } + }, "universal-github-app-jwt@npm:^2.2.0": { "checksum": "5dbdff8286ad940d749a3eb36d34aa82c2ad8868462e1996be5a2996cbb94a5ce4d50878e5ba22adfff9e41cbca7cceae9ade9d6f3856740ef0076ac929648a6", "resolution": { @@ -27182,6 +28216,65 @@ ] } }, + "unstorage@npm:^1.17.4": { + "checksum": "7adcf32e2a2923f6be417167441abc545293d8f4521f612b90f82aa7b6826630b8433c0c0362cd717afffd941c5eb21edecbcf9668da8f187dc062572aef6fd6", + "resolution": { + "resolution": "unstorage@npm:1.17.5", + "version": "1.17.5", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.10", + "lru-cache": "^11.2.7", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "optionalPeerDependencies": [ + "@azure/app-configuration", + "@azure/cosmos", + "@azure/data-tables", + "@azure/identity", + "@azure/keyvault-secrets", + "@azure/storage-blob", + "@capacitor/preferences", + "@deno/kv", + "@netlify/blobs", + "@planetscale/database", + "@upstash/redis", + "@vercel/blob", + "@vercel/functions", + "@vercel/kv", + "aws4fetch", + "db0", + "idb-keyval", + "ioredis", + "uploadthing" + ] + } + }, "update-browserslist-db@npm:^1.1.3": { "checksum": "567a5b82fd41b4e69e90dc3326bdbefd83d223993172507eafab469faaf479c61767d24fe8df6ac1ed42b55bc0b3b795648f51d13415b51220a802996ced9f92", "resolution": { @@ -27461,6 +28554,51 @@ ] } }, + "vite@npm:^6.4.1": { + "checksum": "5a374b8f8ececc605fa83b49edb0f1582018179955a617e4178820ac2afed227b6aeb783aeea6e5b294f26edece4420a7a331e6bc6eda0503f179fb997f31405", + "resolution": { + "resolution": "vite@npm:6.4.2", + "version": "6.4.2", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "fsevents": "~2.3.3", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "optionalDependencies": [ + "fsevents" + ], + "optionalPeerDependencies": [ + "@types/node", + "jiti", + "less", + "lightningcss", + "sass", + "sass-embedded", + "stylus", + "sugarss", + "terser", + "tsx", + "yaml" + ] + } + }, "vite@npm:^7.1.7": { "checksum": "628cf8b397631f195b0cceda0ba69bbfc1e91a64e5c57cce218c5d95502a9f3a9c506efe2957bbde47daa9d01b6e62c63f001a5281957e629d9a95ef1853c22b", "resolution": { @@ -28199,6 +29337,16 @@ } } }, + "zod-to-json-schema@npm:^3.25.1": { + "checksum": "5ebb28a39e30ed2d928b07d6c81b7cd59b95e4cf98158dc130ca23dc1ba9a16360b81c5194369d9a9047e74f8d0e9be25448f1dd082fe66c3ee1c476c152296a", + "resolution": { + "resolution": "zod-to-json-schema@npm:3.25.2", + "version": "3.25.2", + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + } + }, "zod-to-ts@npm:^1.2.0": { "checksum": "1aea40a1c172733f4fe7097881b0b6ade3f1bdd0bf4b4a576425c92ce0ad4efbc7bae385f095d75c30959ed8145758e463baedb3ffc9faef333140ffd58c8fcc", "resolution": { From 775a5cac5624f5e9034bd6419dbd93dfa865513d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Thu, 23 Apr 2026 18:03:42 +0200 Subject: [PATCH 02/29] wip --- website/astro.config.mjs | 7 +- website/package.json | 13 +- website/plugins/rehype-docs.mjs | 85 +- website/plugins/remark-autolink-fields.mjs | 65 ++ website/plugins/remark-docs.mjs | 144 +-- website/public/blog/blog.js | 131 +++ website/public/docs/docs.js | 257 ++--- website/public/favicon.svg | 1 + website/public/logo.svg | 1 + website/public/quiz.js | 431 ++++++++ website/src/blog/2026-01-28-yarn-6-preview.md | 125 +++ website/src/components/ConceptSidebar.astro | 136 +-- website/src/components/DocsSidebar.astro | 2 +- website/src/components/Nav.astro | 62 +- website/src/components/PageHeader.astro | 4 +- website/src/components/Pill.astro | 18 + website/src/components/PostMeta.astro | 36 + website/src/components/PrevNextNav.astro | 8 +- website/src/components/ReferenceSidebar.astro | 140 ++- website/src/components/SimpleIcon.astro | 25 + website/src/components/SkeetCard.astro | 37 + website/src/components/sidebar.ts | 41 + website/src/content.config.ts | 95 ++ .../docs/advanced/general-reference/_meta.yml | 2 + .../general-reference/error-codes.mdx | 489 +++++++++ .../advanced/general-reference/lexicon.mdx | 212 ++++ .../advanced/general-reference/protocols.mdx | 16 + .../general-reference/protocols/_meta.yml | 1 + .../general-reference/protocols/exec.mdx | 91 ++ .../general-reference/protocols/file.mdx | 30 + .../general-reference/protocols/git.mdx | 44 + .../general-reference/protocols/jsr.mdx | 22 + .../general-reference/protocols/link.mdx | 18 + .../general-reference/protocols/npm.mdx | 12 + .../general-reference/protocols/patch.mdx | 18 + .../general-reference/protocols/portal.mdx | 18 + .../general-reference/protocols/workspace.mdx | 12 + .../advanced/package-management/_meta.yml | 2 + .../package-management/lifecycle-scripts.mdx | 58 ++ .../advanced/package-management/rulebook.mdx | 117 +++ website/src/docs/advanced/pnp/_meta.yml | 2 + website/src/docs/advanced/pnp/pnp-api.mdx | 382 +++++++ website/src/docs/advanced/pnp/pnp-spec.mdx | 355 +++++++ website/src/docs/advanced/pnp/pnpify.mdx | 48 + website/src/docs/advanced/technical/_meta.yml | 2 + .../docs/advanced/technical/architecture.mdx | 42 + .../src/docs/advanced/technical/changelog.mdx | 10 + .../docs/advanced/technical/contributing.mdx | 156 +++ .../advanced/technical/plugin-tutorial.mdx | 192 ++++ .../src/docs/advanced/technical/telemetry.mdx | 43 + website/src/docs/appendix/pnp-api.md | 382 +++++++ website/src/docs/appendix/pnp-spec.md | 353 +++++++ .../docs/appendix/workspaces-and-peer-deps.md | 53 + website/src/docs/concepts/advanced/_meta.yml | 2 + .../docs/concepts/advanced/performances.md | 26 + .../concepts/advanced/virtual-packages.md | 47 + .../docs/concepts/advanced/zero-installs.md | 52 + website/src/docs/concepts/core/_meta.yml | 2 + .../concepts/core/dependency-protocols.md | 31 + website/src/docs/concepts/core/linkers.md | 73 ++ website/src/docs/concepts/core/workspaces.md | 60 ++ website/src/docs/concepts/core/yarn-switch.md | 70 ++ .../src/docs/concepts/intermediary/_meta.yml | 2 + .../docs/concepts/intermediary/constraints.md | 79 ++ .../intermediary/dependency-patches.md | 32 + .../intermediary/nodejs-management.md | 87 ++ .../intermediary/peer-dependencies.md | 36 + .../docs/concepts/intermediary/profiles.md | 57 + .../src/docs/concepts/intermediary/tasks.md | 282 +++++ .../concepts/intermediary/yarn-plugnplay.md | 67 ++ .../docs/contributing/building-and-testing.md | 66 ++ .../src/docs/contributing/data-structures.md | 30 + .../src/docs/contributing/general-design.md | 28 + .../src/docs/contributing/primer-on-rust.md | 120 +++ website/src/docs/contributing/welcome.md | 24 + .../docs/contributing/writing-new-commands.md | 75 ++ .../src/docs/getting-started/basics/_meta.yml | 2 + .../docs/getting-started/basics/install.mdx | 68 ++ .../src/docs/getting-started/basics/usage.mdx | 17 + .../docs/getting-started/basics/who-are-we.md | 20 + .../src/docs/getting-started/extra/_meta.yaml | 2 + .../getting-started/extra/editor-sdks.mdx | 122 +++ .../getting-started/extra/github-actions.mdx | 29 + .../extra/questions-and-answers.mdx | 225 ++++ .../docs/getting-started/extra/recipes.mdx | 62 ++ .../docs/getting-started/migrating/_meta.yaml | 2 + .../migrating/breaking-changes.md | 74 ++ .../migrating/migration-mode.md | 57 + .../docs/reference/configuration/_meta.yml | 2 + website/src/layouts/BaseLayout.astro | 6 +- website/src/layouts/BlogLayout.astro | 29 + website/src/layouts/DocsLayout.astro | 8 +- website/src/layouts/MarkdownDocsLayout.astro | 5 +- website/src/pages/[...slug].astro | 30 + website/src/pages/blog/[...slug].astro | 80 ++ website/src/pages/blog/index.astro | 81 ++ website/src/pages/cli/[...slug].astro | 39 + .../src/pages/configuration/manifest.astro | 24 + website/src/pages/configuration/yarnrc.astro | 24 + website/src/pages/docs/cli-add.astro | 269 ----- website/src/pages/quiz.astro | 57 + website/src/pages/switch/[...slug].astro | 39 + website/src/styles/blog.css | 723 +++++++++++++ website/src/styles/docs.css | 285 ++--- website/src/styles/quiz.css | 496 +++++++++ website/src/styles/tailwind.css | 7 + website/src/styles/theme.css | 16 + website/src/utils/bluesky.ts | 131 +++ website/src/utils/cli.ts | 107 ++ website/src/utils/render-markdown.ts | 22 + website/src/utils/schema.ts | 90 ++ yarn.lock | 972 +++++++++++++++++- 112 files changed, 9689 insertions(+), 927 deletions(-) create mode 100644 website/plugins/remark-autolink-fields.mjs create mode 100644 website/public/blog/blog.js create mode 100644 website/public/favicon.svg create mode 100644 website/public/logo.svg create mode 100644 website/public/quiz.js create mode 100644 website/src/blog/2026-01-28-yarn-6-preview.md create mode 100644 website/src/components/Pill.astro create mode 100644 website/src/components/PostMeta.astro create mode 100644 website/src/components/SimpleIcon.astro create mode 100644 website/src/components/SkeetCard.astro create mode 100644 website/src/content.config.ts create mode 100644 website/src/docs/advanced/general-reference/_meta.yml create mode 100644 website/src/docs/advanced/general-reference/error-codes.mdx create mode 100644 website/src/docs/advanced/general-reference/lexicon.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols/_meta.yml create mode 100644 website/src/docs/advanced/general-reference/protocols/exec.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols/file.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols/git.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols/jsr.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols/link.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols/npm.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols/patch.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols/portal.mdx create mode 100644 website/src/docs/advanced/general-reference/protocols/workspace.mdx create mode 100644 website/src/docs/advanced/package-management/_meta.yml create mode 100644 website/src/docs/advanced/package-management/lifecycle-scripts.mdx create mode 100644 website/src/docs/advanced/package-management/rulebook.mdx create mode 100644 website/src/docs/advanced/pnp/_meta.yml create mode 100644 website/src/docs/advanced/pnp/pnp-api.mdx create mode 100644 website/src/docs/advanced/pnp/pnp-spec.mdx create mode 100644 website/src/docs/advanced/pnp/pnpify.mdx create mode 100644 website/src/docs/advanced/technical/_meta.yml create mode 100644 website/src/docs/advanced/technical/architecture.mdx create mode 100644 website/src/docs/advanced/technical/changelog.mdx create mode 100644 website/src/docs/advanced/technical/contributing.mdx create mode 100644 website/src/docs/advanced/technical/plugin-tutorial.mdx create mode 100644 website/src/docs/advanced/technical/telemetry.mdx create mode 100644 website/src/docs/appendix/pnp-api.md create mode 100644 website/src/docs/appendix/pnp-spec.md create mode 100644 website/src/docs/appendix/workspaces-and-peer-deps.md create mode 100644 website/src/docs/concepts/advanced/_meta.yml create mode 100644 website/src/docs/concepts/advanced/performances.md create mode 100644 website/src/docs/concepts/advanced/virtual-packages.md create mode 100644 website/src/docs/concepts/advanced/zero-installs.md create mode 100644 website/src/docs/concepts/core/_meta.yml create mode 100644 website/src/docs/concepts/core/dependency-protocols.md create mode 100644 website/src/docs/concepts/core/linkers.md create mode 100644 website/src/docs/concepts/core/workspaces.md create mode 100644 website/src/docs/concepts/core/yarn-switch.md create mode 100644 website/src/docs/concepts/intermediary/_meta.yml create mode 100644 website/src/docs/concepts/intermediary/constraints.md create mode 100644 website/src/docs/concepts/intermediary/dependency-patches.md create mode 100644 website/src/docs/concepts/intermediary/nodejs-management.md create mode 100644 website/src/docs/concepts/intermediary/peer-dependencies.md create mode 100644 website/src/docs/concepts/intermediary/profiles.md create mode 100644 website/src/docs/concepts/intermediary/tasks.md create mode 100644 website/src/docs/concepts/intermediary/yarn-plugnplay.md create mode 100644 website/src/docs/contributing/building-and-testing.md create mode 100644 website/src/docs/contributing/data-structures.md create mode 100644 website/src/docs/contributing/general-design.md create mode 100644 website/src/docs/contributing/primer-on-rust.md create mode 100644 website/src/docs/contributing/welcome.md create mode 100644 website/src/docs/contributing/writing-new-commands.md create mode 100644 website/src/docs/getting-started/basics/_meta.yml create mode 100644 website/src/docs/getting-started/basics/install.mdx create mode 100644 website/src/docs/getting-started/basics/usage.mdx create mode 100644 website/src/docs/getting-started/basics/who-are-we.md create mode 100644 website/src/docs/getting-started/extra/_meta.yaml create mode 100644 website/src/docs/getting-started/extra/editor-sdks.mdx create mode 100644 website/src/docs/getting-started/extra/github-actions.mdx create mode 100644 website/src/docs/getting-started/extra/questions-and-answers.mdx create mode 100644 website/src/docs/getting-started/extra/recipes.mdx create mode 100644 website/src/docs/getting-started/migrating/_meta.yaml create mode 100644 website/src/docs/getting-started/migrating/breaking-changes.md create mode 100644 website/src/docs/getting-started/migrating/migration-mode.md create mode 100644 website/src/docs/reference/configuration/_meta.yml create mode 100644 website/src/layouts/BlogLayout.astro create mode 100644 website/src/pages/[...slug].astro create mode 100644 website/src/pages/blog/[...slug].astro create mode 100644 website/src/pages/blog/index.astro create mode 100644 website/src/pages/cli/[...slug].astro create mode 100644 website/src/pages/configuration/manifest.astro create mode 100644 website/src/pages/configuration/yarnrc.astro delete mode 100644 website/src/pages/docs/cli-add.astro create mode 100644 website/src/pages/quiz.astro create mode 100644 website/src/pages/switch/[...slug].astro create mode 100644 website/src/styles/blog.css create mode 100644 website/src/styles/quiz.css create mode 100644 website/src/styles/tailwind.css create mode 100644 website/src/utils/bluesky.ts create mode 100644 website/src/utils/cli.ts create mode 100644 website/src/utils/render-markdown.ts create mode 100644 website/src/utils/schema.ts diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 21f109ee..ce0d89b0 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -1,5 +1,7 @@ import {defineConfig} from 'astro/config'; +import tailwindcss from '@tailwindcss/vite'; import remarkDirective from 'remark-directive'; +import remarkAutolinkFields from './plugins/remark-autolink-fields.mjs'; import remarkDocs from './plugins/remark-docs.mjs'; import rehypeDocs from './plugins/rehype-docs.mjs'; @@ -7,9 +9,12 @@ export default defineConfig({ build: { format: `file`, }, + vite: { + plugins: [tailwindcss()], + }, markdown: { syntaxHighlight: false, - remarkPlugins: [remarkDirective, remarkDocs], + remarkPlugins: [remarkDirective, remarkDocs, remarkAutolinkFields], rehypePlugins: [rehypeDocs], }, }); diff --git a/website/package.json b/website/package.json index d563718f..90e8e983 100644 --- a/website/package.json +++ b/website/package.json @@ -7,8 +7,19 @@ "preview": "astro preview" }, "dependencies": { + "@clipanion/astro": "../scripts/@clipanion-astro.tgz", + "@clipanion/tools": "../scripts/@clipanion-tools.tgz", + "@iconify-json/simple-icons": "^1.2.79", + "@tailwindcss/vite": "^4.2.4", "astro": "^5.9.3", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", "remark-directive": "^4.0.0", - "unist-util-visit": "^5.1.0" + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "tailwindcss": "^4.2.4", + "unified": "^11.0.5", + "unist-util-visit": "^5.1.0", + "vite": "^8.0.9" } } diff --git a/website/plugins/rehype-docs.mjs b/website/plugins/rehype-docs.mjs index e60d44ae..dae56f82 100644 --- a/website/plugins/rehype-docs.mjs +++ b/website/plugins/rehype-docs.mjs @@ -1,39 +1,40 @@ -import { visit } from 'unist-util-visit'; +import {visit} from 'unist-util-visit'; const admonitionSvgs = { - note: '', - tip: '', - warning: '', - danger: '', + note: ``, + tip: ``, + warning: ``, + danger: ``, }; +// eslint-disable-next-line arca/no-default-export export default function rehypeDocs() { - return (tree) => { - visit(tree, 'element', (node) => { + return tree => { + visit(tree, `element`, node => { const type = node.properties?.dataAdmonition; if (!type || !admonitionSvgs[type]) return; const label = node.properties.dataLabel || type.toUpperCase(); const header = { - type: 'element', - tagName: 'div', - properties: { className: ['adm-header'] }, + type: `element`, + tagName: `div`, + properties: {className: [`adm-header`]}, children: [ - { type: 'raw', value: admonitionSvgs[type] }, + {type: `raw`, value: admonitionSvgs[type]}, { - type: 'element', - tagName: 'span', + type: `element`, + tagName: `span`, properties: {}, - children: [{ type: 'text', value: label }], + children: [{type: `text`, value: label}], }, ], }; const body = { - type: 'element', - tagName: 'div', - properties: { className: ['adm-body'] }, + type: `element`, + tagName: `div`, + properties: {className: [`adm-body`]}, children: node.children, }; @@ -42,19 +43,61 @@ export default function rehypeDocs() { delete node.properties.dataLabel; }); + // Heading anchors: wrap h2-h4 content and append # link + function textContent(node) { + if (node.type === `text`) return node.value; + if (node.children) return node.children.map(textContent).join(``); + return ``; + } + function slugifyId(s) { + return s.toLowerCase() + .replace(/[^\w\s-]/g, ``) + .replace(/\s+/g, `-`) + .replace(/-+/g, `-`) + .replace(/^-|-$/g, ``); + } + + visit(tree, `element`, node => { + if (![`h2`, `h3`, `h4`].includes(node.tagName)) return; + + if (!node.properties.id) { + node.properties.id = slugifyId(textContent(node)); + } + + const id = node.properties.id; + const text = {type: `element`, tagName: `span`, properties: {}, children: node.children}; + const anchor = { + type: `element`, + tagName: `a`, + properties: { + href: `#${id}`, + className: [`heading-anchor`], + ariaLabel: `Copy link to this section`, + }, + children: [{type: `text`, value: `#`}], + }; + const wrap = { + type: `element`, + tagName: `span`, + properties: {className: [`heading-wrap`]}, + children: [text, anchor], + }; + node.children = [wrap]; + }); + // Lead paragraph: add .lead to the first

after

const children = tree.children || []; for (let i = 0; i < children.length; i++) { const child = children[i]; - if (child.type === 'element' && child.tagName === 'h1') { + if (child.type === `element` && child.tagName === `h1`) { for (let j = i + 1; j < children.length; j++) { const next = children[j]; - if (next.type === 'text' && !next.value.trim()) continue; - if (next.type === 'element' && next.tagName === 'p') { + if (next.type === `text` && !next.value.trim()) continue; + if (next.type === `element` && next.tagName === `p`) { next.properties = next.properties || {}; next.properties.className = [ ...(next.properties.className || []), - 'lead', + `lead`, ]; } break; diff --git a/website/plugins/remark-autolink-fields.mjs b/website/plugins/remark-autolink-fields.mjs new file mode 100644 index 00000000..9430de18 --- /dev/null +++ b/website/plugins/remark-autolink-fields.mjs @@ -0,0 +1,65 @@ +import {visit} from 'unist-util-visit'; +import {schemaFieldNames} from '../src/utils/schema.ts'; +import {createRequire} from 'module'; + +const require = createRequire(import.meta.url); + +function slugify(s) { + return s.toLowerCase() + .replace(/[^\w\s-]/g, ``) + .replace(/\s+/g, `-`) + .replace(/-+/g, `-`) + .replace(/^-|-$/g, ``); +} + +function buildFieldMap() { + const manifest = require(`../../documentation/src/utils/configuration/manifest.json`); + const yarnrc = require(`../../documentation/src/utils/configuration/yarnrc.json`); + + const map = new Map(); + + for (const name of schemaFieldNames(manifest)) { + map.set(name, {url: `/configuration/manifest.html`, anchor: `field-${slugify(name)}`}); + } + + for (const name of schemaFieldNames(yarnrc)) { + if (!map.has(name)) + map.set(name, {url: `/configuration/yarnrc.html`, anchor: `field-${slugify(name)}`}); + } + + map.set(`package.json`, {url: `/configuration/manifest.html`, anchor: null}); + map.set(`.yarnrc.yml`, {url: `/configuration/yarnrc.html`, anchor: null}); + + return map; +} + +export default function remarkAutolinkFields() { + const fieldMap = buildFieldMap(); + + return tree => { + const replacements = []; + + visit(tree, `inlineCode`, (node, index, parent) => { + if (!parent || index === undefined) + return; + + if (parent.type === `heading` || parent.type === `link`) + return; + + const target = fieldMap.get(node.value); + if (!target) + return; + + replacements.push({parent, index, node, target}); + }); + + for (let i = replacements.length - 1; i >= 0; i--) { + const {parent, index, node, target} = replacements[i]; + parent.children.splice(index, 1, { + type: `link`, + url: target.anchor ? `${target.url}#${target.anchor}` : target.url, + children: [node], + }); + } + }; +} diff --git a/website/plugins/remark-docs.mjs b/website/plugins/remark-docs.mjs index c8cc0951..a06c4e1f 100644 --- a/website/plugins/remark-docs.mjs +++ b/website/plugins/remark-docs.mjs @@ -1,68 +1,85 @@ -import { visit } from 'unist-util-visit'; +import {visit} from 'unist-util-visit'; function escapeHtml(str) { return str - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); + .replace(/&/g, `&`) + .replace(//g, `>`) + .replace(/"/g, `"`); } function toString(node) { - if (node.type === 'text') return node.value; - if (node.children) return node.children.map(toString).join(''); - return ''; + if (node.type === `text`) return node.value; + if (node.children) return node.children.map(toString).join(``); + return ``; } function slugify(s) { return s.toLowerCase() - .replace(/[^\w\s-]/g, '') - .replace(/\s+/g, '-') - .replace(/-+/g, '-') - .replace(/^-|-$/g, ''); + .replace(/[^\w\s-]/g, ``) + .replace(/\s+/g, `-`) + .replace(/-+/g, `-`) + .replace(/^-|-$/g, ``); } -const PILL_NAMES = ['type', 'required', 'since', 'default', 'deprecated']; +const PILL_NAMES = [`type`, `required`, `since`, `default`, `deprecated`]; + +const PILL = `inline-flex items-center font-mono text-[11px] leading-none px-[7px] py-1 rounded-[5px] border tracking-[0.01em] whitespace-nowrap`; +const PILL_V = { + type: `border-[var(--pill-type-border)] bg-[var(--pill-type-bg)] text-[var(--pill-type-fg)]`, + required: `border-[var(--pill-req-border)] bg-[var(--pill-req-bg)] text-[var(--pill-req-fg)]`, + since: `border-[var(--accent-line)] bg-[var(--accent-soft)] text-[var(--accent)]`, + default: `border-[var(--line)] bg-[color-mix(in_oklch,var(--fg)_5%,transparent)] text-[var(--fg-dim)]`, + deprecated: `border-[var(--line)] bg-[color-mix(in_oklch,var(--fg)_5%,transparent)] text-[var(--fg-mute)] line-through decoration-[var(--pill-dep-strike)] decoration-1`, +}; + +const CLS = { + fieldHead: `flex flex-wrap items-center gap-2.5 mb-2.5 scroll-mt-[88px]`, + fieldName: `font-mono text-[15.5px] font-medium text-[var(--fg)] tracking-[-0.005em]`, + fieldAnchor: `field-anchor text-[var(--fg-mute)] no-underline font-normal transition-color duration-150 cursor-pointer select-none font-mono text-[15px] border-0 -ml-1 hover:text-[var(--accent)]`, + fieldList: `border-t border-[var(--line-strong)] mt-0`, +}; function pillToHtml(name, content) { + const cls = `${PILL} ${PILL_V[name] || PILL_V.default}`; switch (name) { - case 'type': return `${content}`; - case 'required': return 'required'; - case 'since': return `${content}`; - case 'default': return `default:${content}`; - case 'deprecated': return `${content}`; - default: return ''; + case `type`: return `${content}`; + case `required`: return `required`; + case `since`: return `${content}`; + case `default`: return `default:${content}`; + case `deprecated`: return `${content}`; + default: return ``; } } function buildTerminalHtml(content) { - const lines = content.split('\n'); + const lines = content.split(`\n`); const spans = lines.map(line => { - if (line.startsWith('# ')) { + if (line.startsWith(`# `)) { return `${escapeHtml(line.slice(2))}`; - } else if (line.startsWith('> ')) { + } else if (line.startsWith(`> `)) { return `${escapeHtml(line.slice(2))}`; } else { return `${escapeHtml(line)}`; } - }).join('\n'); + }).join(`\n`); return `
\n${spans}\n
`; } function buildCodeBlockHtml(content, lang, title) { - let html = '
'; + let html = `
`; if (title) html += `\n${escapeHtml(title)}`; - html += `\n
${escapeHtml(content)}
\n
`; + html += `\n
${escapeHtml(content)}
\n
`; return html; } function isFieldHeading(node) { - if (node.type !== 'heading') return false; - const meaningful = node.children.filter(c => !(c.type === 'text' && !c.value.trim())); + if (node.type !== `heading`) return false; + const meaningful = node.children.filter(c => !(c.type === `text` && !c.value.trim())); if (!meaningful.length) return false; - if (meaningful[0].type !== 'inlineCode') return false; - return meaningful.slice(1).every(c => c.type === 'textDirective' && PILL_NAMES.includes(c.name)); + if (meaningful[0].type !== `inlineCode`) return false; + return meaningful.slice(1).every(c => c.type === `textDirective` && PILL_NAMES.includes(c.name)); } function processFieldHeadings(tree) { @@ -84,36 +101,29 @@ function processFieldHeadings(tree) { while (i < children.length) { if (isFieldHeading(children[i])) break; - if (children[i].type === 'heading' && children[i].depth <= fieldDepth) break; + if (children[i].type === `heading` && children[i].depth <= fieldDepth) break; body.push(children[i]); i++; } - fields.push({ heading, body }); + fields.push({heading, body}); } - newChildren.push({ type: 'html', value: '
' }); - for (const field of fields) { - const inlineCode = field.heading.children.find(c => c.type === 'inlineCode'); - const name = inlineCode?.value || ''; - const directives = field.heading.children.filter(c => c.type === 'textDirective'); - const pillsHtml = directives.map(d => pillToHtml(d.name, toString(d))).join(''); - const isDeprecated = directives.some(d => d.name === 'deprecated'); - const id = 'field-' + slugify(name); + const inlineCode = field.heading.children.find(c => c.type === `inlineCode`); + const name = inlineCode?.value || ``; + const directives = field.heading.children.filter(c => c.type === `textDirective`); + const pillsHtml = directives.map(d => pillToHtml(d.name, toString(d))).join(``); + const id = `field-${slugify(name)}`; - const nameHtml = isDeprecated - ? `${escapeHtml(name)}` - : `${escapeHtml(name)}`; + const nameHtml = `${escapeHtml(name)}`; + const anchorHtml = `#`; newChildren.push( - { type: 'html', value: `
${nameHtml}${pillsHtml}
` }, + {type: `html`, value: `
${anchorHtml}${nameHtml}${pillsHtml}
`}, ...field.body, - { type: 'html', value: '
' }, ); } - - newChildren.push({ type: 'html', value: '
' }); } else { newChildren.push(children[i]); i++; @@ -124,13 +134,13 @@ function processFieldHeadings(tree) { } export default function remarkDocs() { - return (tree) => { - visit(tree, 'code', (node, index, parent) => { + return tree => { + visit(tree, `code`, (node, index, parent) => { if (!parent) return; - if (node.lang === 'terminal') { + if (node.lang === `terminal`) { parent.children[index] = { - type: 'html', + type: `html`, value: buildTerminalHtml(node.value), }; return index; @@ -138,48 +148,60 @@ export default function remarkDocs() { const titleMatch = node.meta?.match(/title="([^"]+)"/); parent.children[index] = { - type: 'html', - value: buildCodeBlockHtml(node.value, node.lang || '', titleMatch?.[1] || ''), + type: `html`, + value: buildCodeBlockHtml(node.value, node.lang || ``, titleMatch?.[1] || ``), }; return index; }); - visit(tree, 'containerDirective', (node, index, parent) => { + visit(tree, `containerDirective`, (node, index, parent) => { if (!parent) return; const type = node.name; - if (['note', 'tip', 'warning', 'danger'].includes(type)) { + if ([`note`, `tip`, `warning`, `danger`].includes(type)) { const labelChild = node.children.find(c => c.data?.directiveLabel); const label = labelChild ? toString(labelChild) : type.toUpperCase(); node.children = node.children.filter(c => !c.data?.directiveLabel); const data = node.data || (node.data = {}); - data.hName = 'div'; + data.hName = `div`; data.hProperties = { - className: ['admonition', type], + className: [`admonition`, type], dataAdmonition: type, dataLabel: label, }; } - if (type === 'steps') { - const ol = node.children.find(c => c.type === 'list' && c.ordered); + if (type === `steps`) { + const ol = node.children.find(c => c.type === `list` && c.ordered); if (ol) { const data = ol.data || (ol.data = {}); - data.hProperties = { ...(data.hProperties || {}), className: ['steps'] }; + data.hProperties = {...(data.hProperties || {}), className: [`steps`]}; parent.children[index] = ol; return index; } } }); + visit(tree, `list`, node => { + if (!node.ordered) return; + for (const item of node.children) { + if (item.type !== `listItem`) continue; + item.children = [ + {type: `html`, value: `
`}, + ...item.children, + {type: `html`, value: `
`}, + ]; + } + }); + processFieldHeadings(tree); - visit(tree, 'textDirective', (node, index, parent) => { + visit(tree, `textDirective`, (node, index, parent) => { if (!parent || !PILL_NAMES.includes(node.name)) return; const content = toString(node); - parent.children[index] = { type: 'html', value: pillToHtml(node.name, content) }; + parent.children[index] = {type: `html`, value: pillToHtml(node.name, content)}; return index; }); }; diff --git a/website/public/blog/blog.js b/website/public/blog/blog.js new file mode 100644 index 00000000..79064313 --- /dev/null +++ b/website/public/blog/blog.js @@ -0,0 +1,131 @@ +(function () { + function slugify(s) { + return (s || '').toLowerCase() + .replace(/[^\w\s-]/g, '') + .replace(/\s+/g, '-') + .replace(/-+/g, '-') + .replace(/^-|-$/g, ''); + } + + function toast(msg) { + let t = document.querySelector('.blog-toast'); + if (!t) { + t = document.createElement('div'); + t.className = 'blog-toast'; + t.setAttribute('role', 'status'); + Object.assign(t.style, { + position: 'fixed', left: '50%', bottom: '28px', + transform: 'translateX(-50%) translateY(10px)', + padding: '10px 16px', borderRadius: '10px', + background: 'color-mix(in oklch, var(--bg-0) 80%, transparent)', + border: '1px solid var(--line-strong)', color: 'var(--fg)', + fontSize: '13px', fontFamily: 'inherit', zIndex: 100, + backdropFilter: 'blur(10px)', opacity: '0', + transition: 'opacity 0.2s, transform 0.2s', pointerEvents: 'none', + }); + document.body.appendChild(t); + } + t.textContent = msg; + requestAnimationFrame(() => { + t.style.opacity = '1'; + t.style.transform = 'translateX(-50%) translateY(0)'; + }); + clearTimeout(t._timer); + t._timer = setTimeout(() => { + t.style.opacity = '0'; + t.style.transform = 'translateX(-50%) translateY(10px)'; + }, 1600); + } + + var prose = document.querySelector('.article-prose'); + if (!prose) return; + + var headings = Array.from(prose.querySelectorAll('h2, h3')); + var used = new Set(); + headings.forEach(function (h) { + if (!h.id) { + var base = slugify(h.textContent || ''); + var id = base, n = 2; + while (used.has(id) || document.getElementById(id)) { id = base + '-' + (n++); } + h.id = id; + } + used.add(h.id); + var a = document.createElement('a'); + a.href = '#' + h.id; + a.className = 'anchor-link'; + a.textContent = '#'; + a.setAttribute('aria-label', 'Copy link to this section'); + a.addEventListener('click', function (e) { + e.preventDefault(); + var url = location.origin + location.pathname + '#' + h.id; + history.replaceState(null, '', '#' + h.id); + if (navigator.clipboard) { + navigator.clipboard.writeText(url).then( + function () { toast('Link copied'); }, + function () { toast('Press \u2318C to copy'); } + ); + } + }); + h.appendChild(a); + }); + + var h2s = headings.filter(function (h) { return h.tagName === 'H2'; }); + if (h2s.length >= 4) { + var toc = document.createElement('nav'); + toc.className = 'toc'; + toc.setAttribute('aria-label', 'Table of contents'); + toc.innerHTML = '
On this page
    '; + var ol = toc.querySelector('ol'); + h2s.forEach(function (h) { + var li = document.createElement('li'); + var a = document.createElement('a'); + a.href = '#' + h.id; + var clone = h.cloneNode(true); + clone.querySelectorAll('.anchor-link').forEach(function (n) { n.remove(); }); + a.textContent = clone.textContent.trim(); + li.appendChild(a); + ol.appendChild(li); + }); + document.body.appendChild(toc); + requestAnimationFrame(function () { toc.classList.add('ready'); }); + + var links = Array.from(toc.querySelectorAll('a')); + function onScroll() { + var y = window.scrollY + 140; + var activeId = h2s[0].id; + for (var i = 0; i < h2s.length; i++) { + if (h2s[i].offsetTop <= y) activeId = h2s[i].id; + } + links.forEach(function (l) { + l.classList.toggle('active', l.getAttribute('href') === '#' + activeId); + }); + } + window.addEventListener('scroll', onScroll, { passive: true }); + onScroll(); + } + + document.addEventListener('click', function (e) { + var a = e.target.closest('a[href^="#"]'); + if (!a) return; + var id = a.getAttribute('href').slice(1); + if (!id) return; + var el = document.getElementById(id); + if (!el) return; + e.preventDefault(); + window.scrollTo({ top: el.offsetTop - 90, behavior: 'smooth' }); + history.replaceState(null, '', '#' + id); + }); + + document.querySelectorAll('[data-share="copy-url"]').forEach(function (btn) { + btn.addEventListener('click', function (e) { + e.preventDefault(); + var url = location.href; + if (navigator.clipboard) { + navigator.clipboard.writeText(url).then( + function () { toast('Link copied'); }, + function () { toast('Press \u2318C to copy'); } + ); + } + }); + }); +})(); diff --git a/website/public/docs/docs.js b/website/public/docs/docs.js index 26de1e6d..d9cd0f32 100644 --- a/website/public/docs/docs.js +++ b/website/public/docs/docs.js @@ -1,25 +1,25 @@ /* ─────────────── Shared starfield + theme (minimal) ─────────────── */ (function () { // Theme - const saved = localStorage.getItem('yarn-theme') || 'dark'; - document.documentElement.setAttribute('data-theme', saved); + const saved = localStorage.getItem(`yarn-theme`) || `dark`; + document.documentElement.setAttribute(`data-theme`, saved); window.__theme = saved; function setTheme(t) { - document.documentElement.setAttribute('data-theme', t); - localStorage.setItem('yarn-theme', t); + document.documentElement.setAttribute(`data-theme`, t); + localStorage.setItem(`yarn-theme`, t); window.__theme = t; - window.dispatchEvent(new CustomEvent('themechange', { detail: t })); + window.dispatchEvent(new CustomEvent(`themechange`, {detail: t})); } window.__setTheme = setTheme; - const btn = document.getElementById('theme-toggle'); - if (btn) btn.addEventListener('click', () => setTheme(window.__theme === 'dark' ? 'light' : 'dark')); + const btn = document.getElementById(`theme-toggle`); + if (btn) btn.addEventListener(`click`, () => setTheme(window.__theme === `dark` ? `light` : `dark`)); // Starfield canvas (lighter, non-interactive) - const canvas = document.getElementById('stars'); + const canvas = document.getElementById(`stars`); if (!canvas) return; - const ctx = canvas.getContext('2d'); + const ctx = canvas.getContext(`2d`); let W = window.innerWidth, H = window.innerHeight, DPR = 1; let stars = []; function resize() { @@ -28,8 +28,8 @@ H = window.innerHeight; canvas.width = W * DPR; canvas.height = H * DPR; - canvas.style.width = W + 'px'; - canvas.style.height = H + 'px'; + canvas.style.width = `${W}px`; + canvas.style.height = `${H}px`; ctx.setTransform(DPR, 0, 0, DPR, 0, 0); init(); } @@ -52,8 +52,8 @@ function tick(ts) { t = ts * 0.001; ctx.clearRect(0, 0, W, H); - const isDark = window.__theme === 'dark'; - const color = isDark ? '255,255,255' : '255,200,100'; + const isDark = window.__theme === `dark`; + const color = isDark ? `255,255,255` : `255,200,100`; for (const s of stars) { const tw = 0.55 + 0.45 * Math.sin(t * s.ts + s.tp); const a = s.a * tw * 0.7; @@ -64,7 +64,7 @@ } requestAnimationFrame(tick); } - window.addEventListener('resize', resize); + window.addEventListener(`resize`, resize); resize(); requestAnimationFrame(tick); })(); @@ -72,112 +72,69 @@ /* ─────────────── Docs-specific features ─────────────── */ (function () { /* Toast */ - const toast = document.createElement('div'); - toast.className = 'toast'; - toast.setAttribute('role', 'status'); - toast.setAttribute('aria-live', 'polite'); + const toast = document.createElement(`div`); + toast.className = `toast`; + toast.setAttribute(`role`, `status`); + toast.setAttribute(`aria-live`, `polite`); document.body.appendChild(toast); let toastTimer; function showToast(msg) { toast.textContent = msg; - toast.classList.add('show'); + toast.classList.add(`show`); clearTimeout(toastTimer); - toastTimer = setTimeout(() => toast.classList.remove('show'), 1800); + toastTimer = setTimeout(() => toast.classList.remove(`show`), 1800); } window.__showToast = showToast; - /* Heading anchors: inject # link, click = copy URL */ - function slugify(s) { - return s.toLowerCase() - .replace(/[^\w\s-]/g, '') - .replace(/\s+/g, '-') - .replace(/-+/g, '-') - .replace(/^-|-$/g, ''); - } - /* Field anchors — same copy-link behavior as headings */ - document.querySelectorAll('.field[id]').forEach(f => { - if (f.querySelector('.field-anchor')) return; - const head = f.querySelector('.field-head'); - if (!head) return; - const anchor = document.createElement('a'); - anchor.href = '#' + f.id; - anchor.className = 'field-anchor'; - anchor.setAttribute('aria-label', 'Copy link to this field'); - anchor.textContent = '#'; - anchor.addEventListener('click', (e) => { - e.preventDefault(); - const url = location.origin + location.pathname + '#' + f.id; - history.replaceState(null, '', '#' + f.id); - navigator.clipboard?.writeText(url).then( - () => showToast('Link copied'), - () => showToast('Press ⌘C to copy') - ); - }); - head.insertBefore(anchor, head.firstChild); - }); - - document.querySelectorAll('.prose h2, .prose h3, .prose h4').forEach(h => { - if (!h.id) h.id = slugify(h.textContent || ''); - // Wrap children in a span, append anchor - const wrap = document.createElement('span'); - wrap.className = 'heading-wrap'; - // Move children - const text = document.createElement('span'); - while (h.firstChild) text.appendChild(h.firstChild); - wrap.appendChild(text); - const anchor = document.createElement('a'); - anchor.href = '#' + h.id; - anchor.className = 'heading-anchor'; - anchor.setAttribute('aria-label', 'Copy link to this section'); - anchor.textContent = '#'; - anchor.addEventListener('click', (e) => { - e.preventDefault(); - const url = location.origin + location.pathname + '#' + h.id; - history.replaceState(null, '', '#' + h.id); - navigator.clipboard?.writeText(url).then( - () => showToast('Link copied'), - () => showToast('Press ⌘C to copy') - ); - }); - wrap.appendChild(anchor); - h.appendChild(wrap); + /* Heading + field anchors: click = copy URL (anchors injected at build time) */ + document.addEventListener(`click`, e => { + const anchor = e.target.closest(`.heading-anchor, .field-anchor`); + if (!anchor) return; + e.preventDefault(); + const href = anchor.getAttribute(`href`); + history.replaceState(null, ``, href); + const url = location.origin + location.pathname + href; + navigator.clipboard?.writeText(url).then( + () => showToast(`Link copied`), + () => showToast(`Press ⌘C to copy`), + ); }); /* Copy buttons on terminal + code blocks */ - document.querySelectorAll('.terminal, .code-block').forEach(el => { - if (el.querySelector('.copy-btn')) return; - const btn = document.createElement('button'); - btn.className = 'copy-btn'; - btn.setAttribute('aria-label', 'Copy code'); - btn.innerHTML = ''; - btn.addEventListener('click', () => { + document.querySelectorAll(`.terminal, .code-block`).forEach(el => { + if (el.querySelector(`.copy-btn`)) return; + const btn = document.createElement(`button`); + btn.className = `copy-btn`; + btn.setAttribute(`aria-label`, `Copy code`); + btn.innerHTML = ``; + btn.addEventListener(`click`, () => { // Strip '$ ' prompt + '# ' from terminal, else raw text - const text = Array.from(el.querySelectorAll('.term-line, pre code, pre')) + const text = Array.from(el.querySelectorAll(`.term-line, pre code, pre`)) .map(line => { - if (line.classList && line.classList.contains('term-line')) { - if (line.classList.contains('no-prompt') || line.classList.contains('out')) return line.textContent; - if (line.classList.contains('comment')) return '# ' + line.textContent; - return '$ ' + line.textContent; + if (line.classList && line.classList.contains(`term-line`)) { + if (line.classList.contains(`no-prompt`) || line.classList.contains(`out`)) return line.textContent; + if (line.classList.contains(`comment`)) return `# ${line.textContent}`; + return `$ ${line.textContent}`; } return line.textContent; }) - .join('\n') || el.textContent; - const toCopy = el.classList.contains('terminal') - ? Array.from(el.querySelectorAll('.term-line')) - .filter(l => !l.classList.contains('out') && !l.classList.contains('comment')) - .map(l => l.textContent) - .join('\n') - : (el.querySelector('pre code') || el.querySelector('pre')).textContent; + .join(`\n`) || el.textContent; + const toCopy = el.classList.contains(`terminal`) + ? Array.from(el.querySelectorAll(`.term-line`)) + .filter(l => !l.classList.contains(`out`) && !l.classList.contains(`comment`)) + .map(l => l.textContent) + .join(`\n`) + : (el.querySelector(`pre code`) || el.querySelector(`pre`)).textContent; navigator.clipboard?.writeText(toCopy).then(() => { - btn.classList.add('copied'); - btn.innerHTML = ''; + btn.classList.add(`copied`); + btn.innerHTML = ``; setTimeout(() => { - btn.classList.remove('copied'); - btn.innerHTML = ''; + btn.classList.remove(`copied`); + btn.innerHTML = ``; }, 1400); }); }); - const target = el.classList.contains('code-block') ? el.querySelector('pre') || el : el; + const target = el.classList.contains(`code-block`) ? el.querySelector(`pre`) || el : el; target.appendChild(btn); }); @@ -185,59 +142,61 @@ // Supports: js, ts, json, bash, yaml, diff, jsx, html const LANG_RULES = { js: [ - ['comment', /\/\/[^\n]*|\/\*[\s\S]*?\*\//g], - ['string', /(?:'(?:\\.|[^'\\])*'|"(?:\\.|[^"\\])*"|`(?:\\.|[^`\\])*`)/g], - ['keyword', /\b(const|let|var|function|return|if|else|for|while|do|switch|case|break|continue|new|class|extends|this|super|import|export|from|as|default|async|await|try|catch|finally|throw|typeof|instanceof|in|of|null|undefined|true|false)\b/g], - ['number', /\b(0x[0-9a-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/gi], - ['func', /\b([a-zA-Z_$][\w$]*)(?=\s*\()/g], - ['punct', /[{}[\]();,.:]/g], + [`comment`, /\/\/[^\n]*|\/\*[\s\S]*?\*\//g], + [`string`, /(?:'(?:\\.|[^'\\])*'|"(?:\\.|[^"\\])*"|`(?:\\.|[^`\\])*`)/g], + [`keyword`, /\b(const|let|var|function|return|if|else|for|while|do|switch|case|break|continue|new|class|extends|this|super|import|export|from|as|default|async|await|try|catch|finally|throw|typeof|instanceof|in|of|null|undefined|true|false)\b/g], + [`number`, /\b(0x[0-9a-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/gi], + [`func`, /\b([a-zA-Z_$][\w$]*)(?=\s*\()/g], + [`punct`, /[{}[\]();,.:]/g], ], json: [ - ['string', /"(?:\\.|[^"\\])*"(?=\s*:)/g], - ['prop', /"(?:\\.|[^"\\])*"/g], - ['number', /\b-?\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/gi], - ['keyword', /\b(true|false|null)\b/g], - ['punct', /[{}[\],:]/g], + [`string`, /"(?:\\.|[^"\\])*"(?=\s*:)/g], + [`prop`, /"(?:\\.|[^"\\])*"/g], + [`number`, /\b-?\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/gi], + [`keyword`, /\b(true|false|null)\b/g], + [`punct`, /[{}[\],:]/g], ], yaml: [ - ['comment', /#[^\n]*/g], - ['string', /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g], - ['prop', /^(\s*)([A-Za-z_][\w-]*)(?=\s*:)/gm], - ['number', /\b-?\d+(?:\.\d+)?\b/g], - ['keyword', /\b(true|false|null|yes|no|on|off)\b/gi], - ['punct', /[:[\]{},-]/g], + [`comment`, /#[^\n]*/g], + [`string`, /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g], + [`prop`, /^(\s*)([A-Za-z_][\w-]*)(?=\s*:)/gm], + [`number`, /\b-?\d+(?:\.\d+)?\b/g], + [`keyword`, /\b(true|false|null|yes|no|on|off)\b/gi], + [`punct`, /[:[\]{},-]/g], ], bash: [ - ['comment', /#[^\n]*/g], - ['string', /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g], - ['keyword', /\b(if|then|else|fi|for|while|do|done|case|esac|function|return|in)\b/g], - ['func', /^(\w+)/gm], - ['flag', /\s(-{1,2}[\w-]+)/g], - ['number', /\b\d+\b/g], + [`comment`, /#[^\n]*/g], + [`string`, /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g], + [`keyword`, /\b(if|then|else|fi|for|while|do|done|case|esac|function|return|in)\b/g], + [`func`, /^(\w+)/gm], + [`flag`, /\s(-{1,2}[\w-]+)/g], + [`number`, /\b\d+\b/g], ], diff: [ - ['added', /^\+[^\n]*/gm], - ['removed', /^-[^\n]*/gm], - ['meta', /^@@[^\n]*@@/gm], + [`added`, /^\+[^\n]*/gm], + [`removed`, /^-[^\n]*/gm], + [`meta`, /^@@[^\n]*@@/gm], ], html: [ - ['comment', //g], - ['string', /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g], - ['tag', /<\/?[a-zA-Z][\w-]*/g], - ['attr', /\s([a-zA-Z-:][\w-]*)(?==)/g], - ['punct', /[<>/]/g], + [`comment`, //g], + [`string`, /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g], + [`tag`, /<\/?[a-zA-Z][\w-]*/g], + [`attr`, /\s([a-zA-Z-:][\w-]*)(?==)/g], + [`punct`, /[<>/]/g], ], }; LANG_RULES.ts = LANG_RULES.tsx = LANG_RULES.jsx = LANG_RULES.js; - function escHtml(s) { return s.replace(/&/g, '&').replace(//g, '>'); } + function escHtml(s) { + return s.replace(/&/g, `&`).replace(//g, `>`); + } function highlight(code, lang) { const rules = LANG_RULES[lang]; if (!rules) return escHtml(code); // Tokenize by scanning, taking first match at each position const tokens = []; - let i = 0; + const i = 0; const N = code.length; // Pre-run regexes with global flag — iterate matches const matchSets = rules.map(([type, re]) => { @@ -247,19 +206,21 @@ // Use exec in loop const cloned = new RegExp(re.source, re.flags); while ((m = cloned.exec(code)) !== null) { - if (m[0].length === 0) { cloned.lastIndex++; continue; } - matches.push({ type, start: m.index, end: m.index + m[0].length, text: m[0] }); + if (m[0].length === 0) { + cloned.lastIndex++; continue; + } + matches.push({type, start: m.index, end: m.index + m[0].length, text: m[0]}); } return matches; }); // Merge: prefer earlier start; ties go to earlier rule (higher priority) const flat = [].concat(...matchSets).sort((a, b) => a.start - b.start || a.end - b.end); - let out = ''; + let out = ``; let cursor = 0; for (const tk of flat) { if (tk.start < cursor) continue; if (tk.start > cursor) out += escHtml(code.slice(cursor, tk.start)); - const cls = 'tok-' + tk.type; + const cls = `tok-${tk.type}`; out += `${escHtml(tk.text)}`; cursor = tk.end; } @@ -267,39 +228,39 @@ return out; } - document.querySelectorAll('.code-block pre code[data-lang]').forEach(codeEl => { + document.querySelectorAll(`.code-block pre code[data-lang]`).forEach(codeEl => { const lang = codeEl.dataset.lang; const raw = codeEl.textContent; codeEl.innerHTML = highlight(raw, lang); }); /* Scrollspy for sidebar: mark active link based on scroll */ - const sbLinks = document.querySelectorAll('.docs-sidebar a.sb-link[data-section]'); + const sbLinks = document.querySelectorAll(`.docs-sidebar a.sb-link[data-section]`); if (sbLinks.length) { - const sections = Array.from(document.querySelectorAll('.prose h2[id], .prose h3[id]')); + const sections = Array.from(document.querySelectorAll(`.prose h2[id], .prose h3[id]`)); function onScroll() { const y = window.scrollY + 120; let activeId = sections[0]?.id; - for (const s of sections) { if (s.offsetTop <= y) activeId = s.id; } + for (const s of sections) if (s.offsetTop <= y) activeId = s.id; sbLinks.forEach(a => { - const want = a.getAttribute('href')?.replace(/^#/, ''); - a.classList.toggle('active', want === activeId); + const want = a.getAttribute(`href`)?.replace(/^#/, ``); + a.classList.toggle(`active`, want === activeId); }); } - window.addEventListener('scroll', onScroll, { passive: true }); + window.addEventListener(`scroll`, onScroll, {passive: true}); onScroll(); } /* Smooth anchor scroll */ - document.addEventListener('click', (e) => { - const a = e.target.closest('a[href^="#"]'); + document.addEventListener(`click`, e => { + const a = e.target.closest(`a[href^="#"]`); if (!a) return; - const id = a.getAttribute('href').slice(1); + const id = a.getAttribute(`href`).slice(1); if (!id) return; const el = document.getElementById(id); if (!el) return; e.preventDefault(); - window.scrollTo({ top: el.offsetTop - 80, behavior: 'smooth' }); - history.replaceState(null, '', '#' + id); + window.scrollTo({top: el.offsetTop - 80, behavior: `smooth`}); + history.replaceState(null, ``, `#${id}`); }); })(); diff --git a/website/public/favicon.svg b/website/public/favicon.svg new file mode 100644 index 00000000..a7cae018 --- /dev/null +++ b/website/public/favicon.svg @@ -0,0 +1 @@ + diff --git a/website/public/logo.svg b/website/public/logo.svg new file mode 100644 index 00000000..f299f403 --- /dev/null +++ b/website/public/logo.svg @@ -0,0 +1 @@ + diff --git a/website/public/quiz.js b/website/public/quiz.js new file mode 100644 index 00000000..acb91774 --- /dev/null +++ b/website/public/quiz.js @@ -0,0 +1,431 @@ +/* ────────── "Do you know Yarn?" quiz logic ────────── */ + +var QUESTIONS = [ + { + slug: 'github-install', + question: 'Can Yarn install a package straight from a GitHub repo?', + answer: true, + wrongLine: "Actually — yes, and it's a one-liner.", + rightLine: "Yes — and the protocol sugar is tiny.", + explain: [ + "Yarn understands user/repo and github:… shorthands, plus raw Git URLs, branches, tags and commits.", + "Example: yarn add foo@user/foo#master adds the package directly from GitHub with the branch pinned in the lockfile.", + ], + }, + { + slug: 'no-node-modules', + question: 'Does Yarn have to create a node_modules folder?', + answer: false, + wrongLine: "Not quite — Yarn can skip it entirely.", + rightLine: "Right — the folder is optional.", + explain: [ + "Since Yarn 2, the default install strategy is Plug'n'Play: Yarn keeps dependencies in zipped caches and generates a .pnp.cjs resolver that tells Node where to find each package. No node_modules, no phantom deps.", + "If you prefer a classic layout, you can still opt in with nodeLinker: node-modules in .yarnrc.yml.", + ], + }, + { + slug: 'global-install', + question: 'Do you need to globally install Yarn before using it?', + answer: false, + wrongLine: "Not anymore — Corepack ships it with Node.js.", + rightLine: "Exactly — Node itself brings Yarn along.", + explain: [ + "Corepack is bundled with Node.js 16.10+. Run corepack enable once, commit the packageManager field to package.json, and every contributor gets the exact Yarn version your repo expects — no global npm i -g yarn dance.", + "This also means upgrading Yarn is per-project, via yarn set version.", + ], + }, + { + slug: 'workspaces', + question: 'Does Yarn support monorepos natively?', + answer: true, + wrongLine: "Yep — it's been built in since v1.", + rightLine: "Right — and workspaces are a flagship feature.", + explain: [ + "Declare workspaces: [\"packages/*\"] in the root package.json and Yarn links them locally, hoists shared deps, and keeps one lockfile at the root.", + "No Lerna, no Nx required — although you can still layer them on top if you want task graphs.", + ], + }, + { + slug: 'parallel-scripts', + question: 'Can Yarn run scripts across every workspace in parallel?', + answer: true, + wrongLine: "Yes — workspaces foreach handles it.", + rightLine: "Correct — one flag away.", + explain: [ + "yarn workspaces foreach --all --parallel --topological run build runs build in every workspace, respecting the dependency graph.", + "Add --interlaced to stream logs live, or --jobs 4 to cap concurrency.", + ], + }, + { + slug: 'patch-deps', + question: 'Can Yarn patch a dependency without forking it?', + answer: true, + wrongLine: "Yes — yarn patch is built in.", + rightLine: "Right — and the diff is committed, not the fork.", + explain: [ + "Run yarn patch <package> to get a scratch copy, edit the files, then yarn patch-commit saves a diff to .yarn/patches/ and rewires your resolution automatically.", + "No patch-package dev dep, no postinstall hook — it's first-class.", + ], + }, + { + slug: 'constraints', + question: 'Can Yarn enforce consistent versions of a dep across all workspaces?', + answer: true, + wrongLine: "Yes — Constraints can enforce exactly that.", + rightLine: "Correct — that's one of Constraints' core use cases.", + explain: [ + "Yarn Constraints let you write rules in Prolog or JavaScript that are checked on every install. A typical rule: \u201cevery workspace that depends on react must use the same version.\u201d", + "Run yarn constraints to audit, yarn constraints --fix to auto-correct.", + ], + }, + { + slug: 'conditional-deps', + question: 'Does the Yarn lockfile record platform-specific (OS/CPU) dependencies?', + answer: true, + wrongLine: "Yes — optional native deps are resolved per-platform.", + rightLine: "Right — Linux and macOS installs stay reproducible.", + explain: [ + "Packages with os / cpu / libc fields (think @rollup/rollup-linux-x64-gnu) are tracked as conditional entries. Yarn only installs the variants that match the current platform but keeps all of them in the lockfile.", + "The result: CI on Linux and your MacBook produce the same lockfile, even though different binaries land on disk.", + ], + }, + { + slug: 'offline', + question: 'Once installed, can Yarn reinstall the whole project offline?', + answer: true, + wrongLine: "Yes — the zip cache is the source of truth.", + rightLine: "Correct — it's offline-first by design.", + explain: [ + "Every package Yarn downloads is stored as a single zip in .yarn/cache/. If you commit that folder (or point enableGlobalCache at a shared location), yarn install needs no network.", + "This is also what makes zero-installs possible: clone the repo and you already have everything.", + ], + }, + { + slug: 'dlx', + question: 'Can Yarn run a CLI from npm without installing it first?', + answer: true, + wrongLine: "Yes — that's what yarn dlx is for.", + rightLine: "Correct — same spirit as npx.", + explain: [ + "yarn dlx create-react-app my-app fetches the package into a temporary environment, runs it, and cleans up after itself. Handy for one-shot scaffolders and linters you don't want as permanent deps.", + "If the command is already installed in the project, use yarn exec instead to avoid re-downloading.", + ], + }, +]; + +var LEVELS = [ + { min: 0, title: 'Curious', tag: "Plenty to discover — Yarn has more tricks than most devs realize." }, + { min: 4, title: 'Familiar', tag: "You know the basics. A few surprises still lurking in the manual." }, + { min: 7, title: 'Fluent', tag: "Confidently above average. You've read past the install section." }, + { min: 10, title: 'Expert', tag: "You might be on the Yarn team. Or you should apply." }, +]; + +/* ────────── State ────────── */ +var state = { + order: [], + cursor: 0, + answers: {}, + startedFromSlug: null, +}; + +/* ────────── Utilities ────────── */ +function shuffle(arr) { + var a = arr.slice(); + for (var i = a.length - 1; i > 0; i--) { + var j = Math.floor(Math.random() * (i + 1)); + var tmp = a[i]; a[i] = a[j]; a[j] = tmp; + } + return a; +} + +function slugToIndex(slug) { + return QUESTIONS.findIndex(function(q) { return q.slug === slug; }); +} + +function buildOrder() { + var hash = (location.hash || '').replace(/^#/, '').trim(); + var allIdx = QUESTIONS.map(function(_, i) { return i; }); + if (hash) { + var startIdx = slugToIndex(hash); + if (startIdx >= 0) { + state.startedFromSlug = hash; + var rest = shuffle(allIdx.filter(function(i) { return i !== startIdx; })); + return [startIdx].concat(rest); + } + } + return allIdx; +} + +function showToast(msg) { + var el = document.getElementById('toast'); + if (!el) { + el = document.createElement('div'); + el.id = 'toast'; + el.className = 'toast'; + document.body.appendChild(el); + } + el.textContent = msg; + el.classList.add('show'); + clearTimeout(showToast._t); + showToast._t = setTimeout(function() { el.classList.remove('show'); }, 1800); +} + +function copyToClipboard(text) { + if (navigator.clipboard && navigator.clipboard.writeText) { + return navigator.clipboard.writeText(text); + } + var ta = document.createElement('textarea'); + ta.value = text; + ta.style.position = 'fixed'; + ta.style.opacity = '0'; + document.body.appendChild(ta); + ta.select(); + try { document.execCommand('copy'); } catch (e) {} + document.body.removeChild(ta); + return Promise.resolve(); +} + +/* ────────── Rendering ────────── */ +var stage, shell, progressFill, progressNum, scoreNum, progressTotal; + +function updateProgress() { + var total = state.order.length; + var answered = Object.keys(state.answers).length; + var correct = 0; + for (var k in state.answers) if (state.answers[k].correct) correct++; + progressNum.textContent = Math.min(state.cursor + 1, total); + progressTotal.textContent = total; + scoreNum.textContent = correct; + var pct = (answered / total) * 100; + progressFill.style.width = pct + '%'; + if (shell) { + var started = answered > 0 || state.cursor > 0; + shell.classList.toggle('compact', started); + } +} + +function renderQuestion() { + updateProgress(); + var total = state.order.length; + if (state.cursor >= total) { + renderEnd(); + return; + } + var q = QUESTIONS[state.order[state.cursor]]; + history.replaceState(null, '', '#' + q.slug); + + var already = state.answers[q.slug]; + + var content = document.createElement('div'); + content.className = 'quiz-stage'; + content.innerHTML = + '
    ' + + '
    ' + + '
    Question ' + (state.cursor + 1) + ' of ' + total + '
    ' + + '

    ' + q.question + '

    ' + + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + '
    ' + + '
    '; + stage.replaceChildren(content); + + var buttons = content.querySelectorAll('.q-btn'); + buttons.forEach(function(btn) { + btn.addEventListener('click', function() { + btn.classList.add('pulse'); + handleAnswer(q, btn.dataset.answer === 'true'); + }); + }); + + if (already) { + applyAnswerUI(content, q, already.picked); + } +} + +function answerIcons() { + return '' + + ''; +} + +function applyAnswerUI(root, q, picked) { + var correct = picked === q.answer; + var buttons = root.querySelectorAll('.q-btn'); + buttons.forEach(function(b) { + b.disabled = true; + var btnAnswer = b.dataset.answer === 'true'; + var isPicked = btnAnswer === picked; + var isCorrectAnswer = btnAnswer === q.answer; + if (isPicked) { + b.classList.add('picked', correct ? 'correct' : 'wrong'); + } else if (isCorrectAnswer) { + b.classList.add('revealed-correct'); + } + }); + + var line = correct ? q.rightLine : q.wrongLine; + var verdictLabel = correct ? 'Correct' : 'Not quite'; + var verdictClass = correct ? 'right' : 'wrong'; + + var reveal = root.querySelector('#reveal'); + reveal.innerHTML = + '
    ' + + dotIcon(verdictClass) + + '' + verdictLabel + '' + + '
    ' + + '

    ' + line + '

    ' + + q.explain.map(function(p) { return '

    ' + p + '

    '; }).join('') + + '
    ' + + '' + + '' + + '
    '; + reveal.classList.add('open'); + + reveal.querySelector('#next-btn').addEventListener('click', advance); + var shareBtn = reveal.querySelector('#share-btn'); + shareBtn.addEventListener('click', function() { + var url = location.origin + location.pathname + '#' + q.slug; + copyToClipboard(url).then(function() { + shareBtn.classList.add('copied'); + reveal.querySelector('#share-label').textContent = 'Link copied'; + setTimeout(function() { + shareBtn.classList.remove('copied'); + var lbl = reveal.querySelector('#share-label'); + if (lbl) lbl.textContent = 'Share question'; + }, 1800); + }); + }); +} + +function dotIcon(kind) { + var color = kind === 'right' ? 'var(--accent)' : 'var(--fg-mute)'; + return ''; +} + +function handleAnswer(q, picked) { + if (state.answers[q.slug]) return; + var correct = picked === q.answer; + state.answers[q.slug] = { picked: picked, correct: correct }; + updateProgress(); + applyAnswerUI(stage.querySelector('.quiz-stage'), q, picked); +} + +function advance() { + state.cursor += 1; + renderQuestion(); + window.scrollTo({ top: 0, behavior: 'smooth' }); +} + +/* ────────── End screen ────────── */ +function renderEnd() { + history.replaceState(null, '', '#results'); + var total = state.order.length; + var correct = 0; + for (var k in state.answers) if (state.answers[k].correct) correct++; + var level = LEVELS[0]; + for (var i = LEVELS.length - 1; i >= 0; i--) { + if (correct >= LEVELS[i].min) { level = LEVELS[i]; break; } + } + + var recap = state.order.map(function(idx) { + var q = QUESTIONS[idx]; + var a = state.answers[q.slug]; + return '' + + '' + + '' + q.question + '' + + '' + + ''; + }).join(''); + + var content = document.createElement('div'); + content.className = 'quiz-stage'; + content.innerHTML = + '
    ' + + '
    Your Yarn level
    ' + + '

    ' + level.title + '

    ' + + '
    ' + correct + ' / ' + total + ' correct
    ' + + '

    ' + level.tag + '

    ' + + '
    ' + + '' + + '' + + '
    ' + + '
    ' + + '
    Your answers \u2014 tap to revisit a question
    ' + + recap + + '
    ' + + '
    '; + stage.replaceChildren(content); + + document.getElementById('restart-btn').addEventListener('click', restart); + var sb = document.getElementById('share-score-btn'); + sb.addEventListener('click', function() { + var url = location.origin + location.pathname; + copyToClipboard(url).then(function() { + sb.classList.add('copied'); + document.getElementById('share-score-label').textContent = 'Link copied'; + setTimeout(function() { + sb.classList.remove('copied'); + var lbl = document.getElementById('share-score-label'); + if (lbl) lbl.textContent = 'Copy shareable link'; + }, 1800); + }); + }); + + content.querySelectorAll('.recap-row').forEach(function(row) { + row.addEventListener('click', function(e) { + e.preventDefault(); + var slug = row.dataset.slug; + var pos = state.order.findIndex(function(i) { return QUESTIONS[i].slug === slug; }); + if (pos >= 0) { + state.cursor = pos; + renderQuestion(); + window.scrollTo({ top: 0, behavior: 'smooth' }); + } + }); + }); +} + +function restart() { + state.answers = {}; + state.cursor = 0; + state.order = shuffle(QUESTIONS.map(function(_, i) { return i; })); + history.replaceState(null, '', location.pathname); + renderQuestion(); + window.scrollTo({ top: 0, behavior: 'smooth' }); +} + +/* ────────── Init ────────── */ +function quizInit() { + stage = document.getElementById('stage'); + shell = document.querySelector('.quiz-shell'); + progressFill = document.getElementById('progress-fill'); + progressNum = document.getElementById('progress-num'); + scoreNum = document.getElementById('score-num'); + progressTotal = document.getElementById('progress-total'); + + if (!stage) return; + state.order = buildOrder(); + renderQuestion(); +} + +document.addEventListener('DOMContentLoaded', quizInit); diff --git a/website/src/blog/2026-01-28-yarn-6-preview.md b/website/src/blog/2026-01-28-yarn-6-preview.md new file mode 100644 index 00000000..e7705200 --- /dev/null +++ b/website/src/blog/2026-01-28-yarn-6-preview.md @@ -0,0 +1,125 @@ +--- +slug: 2026-01-28-yarn-6-preview +title: Yarn 6 Preview +date: 2026-01-28 +category: Release +author: + name: "Maël Nison" + title: Lead Yarn maintainer + url: https://bsky.app/profile/mael.dev + image_url: https://github.com/arcanis.png +--- + +I'm excited to announce the next evolution for Yarn, redefining what "state of the art" means when it comes to JavaScript package managers. + +Yarn has always prioritized three pillars: correctness, developer experience, and performance. Excelling in all three simultaneously is a challenge, but we believe you shouldn't expect less from the very foundation of your projects. While we are proud of our correctness, stability, and DX, it became clear in recent years that Yarn was hitting a ceiling on performance - especially within massive monorepos hosting thousands of workspaces. + +Almost ten years after the first public release of Yarn, now is the perfect time to reveal our plans to port Yarn to Rust. This project, started over a year ago, is now ready to share more broadly. While still a preview, we expect to complete this transition in the next 6-8 months. This evolution will lead to drastically higher responsiveness and lower memory footprints, enabling features we simply couldn't efficiently pull off until now. + +## How much faster? + +While performance was a significant driver for this rewrite, our initial focus has been strict compatibility. Even with that constraint, the results are compelling. Many low-hanging fruits remain, and we're excited to now be able to publicly work with the JavaScript + Rust tooling community to widen the gap even further. + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TestBeforeAfterPnpm
    Next.js - few but heavy dependencies
    Cold cache4.1s2.5s3.0s
    Warm cache577ms**184ms**686ms
    Gatsby - lots of small dependencies
    Cold cache19.8s11.7s13.1s
    Warm cache1.7s**0.3s**1.9s
    +
    + +*(more benchmarks are available [here](https://p.datadoghq.eu/sb/d2wdprp9uki7gfks-badb2c0f08402af744326888f9535a82); we're also setting up a new benchmark on massive megarepos, but those don't run on other package managers yet)* + +Beyond raw speed, these numbers unlock new opportunities. While some concepts are still in the ideation phase, others have already been implemented - such as the Lazy Install feature I'm just about to present. + +## New features + +Our primary focus is completing the rewrite, but some features were foundational enough that we felt the need to implement them as part of the MVP, knowing they would instruct the design. + +### Yarn Switch + +If you're familiar with the Node.js ecosystem you may have heard of Corepack. Corepack is an experimental version manager of packages managers built in tandem with Node.js core contributors and has been the recommended way to use Yarn since it was first distributed via Node.js official releases. While package managers all lock dependencies nowadays, they don't always support locking their own version. Corepack was the response to this need, but with the recent decision from Node.js to stop distributing Corepack, we had to look elsewhere. + +Consequently, we developed our own replacement: **Yarn Switch**. + +Yarn Switch, also written in Rust, is the binary that gets installed on your machine when following our new [installation guide](/getting-started). When executed it will read the `packageManager` field from your project and transparently download, cache, and forward the command to the appropriate Yarn version. Think of it as a `rustup` or `nvm` equivalent, but intended specifically for Yarn. + +We intend to keep supporting using Yarn 6.x from Corepack on mainstream platforms (i.e. Linux, macOS, and Windows, on x86-64 and ARM) as long as Corepack is still shipped with Node.js 24.x, however we're confident that Yarn Switch will provide a much superior DX. + +For more details about Yarn Switch, check out the [Yarn Switch documentation](/concepts/switch). + +### Lazy Installs + +Yarn has long supported "Zero Installs" - the ability to check-in install artifacts to your repository so you can omit running installs when switching branches. This worked well but had drawbacks regarding repository size, particularly in massive monorepos. + +Starting with Yarn 6.x, we are introducing a new default mode: **Lazy Installs**. + +Under this model, running most Yarn commands - including `yarn run` - will prompt Yarn to silently perform an install if it detects the artifacts are out of sync with package.json. Thanks to the native Rust implementation, this check has negligible overhead in the happy path. We believe this offers most of the benefits of Zero Installs without the repository bloat. + +## Versioning roadmap + +Our current release is Yarn 4.12. We plan for the JS codebase to continue into the Yarn 5.x series. This will be released in a couple of months as a stepping stone, including some of the deprecations introduced in the Rust-based Yarn 6.x series. + +The first Yarn 6.x stable release will be published once the Rust implementation has reached sufficient parity with current Yarn releases. We do not expect this until at least **Q3 2026**. + +Once 6.x is stable, Yarn 5.x will enter LTS status: the codebase will receive critical bugfixes for approximately 30 months, while active development shifts to the Rust codebase. + +Backward compatibility is a primary concern. We are using the exact same test suite to validate Yarn 6.x against its predecessors. Experimental releases of Yarn 6.x have already been successfully deployed in production at **Datadog** with minimal breaking changes. + +## Next steps + +This preview is an important steps, but Yarn 6.x is still months away. Important features remain to tackle: + +- Windows support +- Interactive commands +- Collaboration with third-party tools that manually parse the lockfile +- Wrapping up the last remaining failing tests and missing commands + +This work is ongoing, and we are eager to build this next chapter alongside the community. + +If you are looking to expand your knowledge of Rust or deep-dive into JavaScript tooling, there has never been a better time to get involved. We are actively looking for contributors to help us tackle the remaining challenges - check out our [issues](https://github.com/yarnpkg/zpm/issues) or say hello on our [Discord server](https://discord.com/invite/yarnpkg) to get started. + +Finally, if your company relies on Yarn and wants to ensure its sustainable development, please consider backing us via [GitHub Sponsors](http://github.com/sponsors/yarnpkg) or [OpenCollective](https://opencollective.com/yarnpkg). diff --git a/website/src/components/ConceptSidebar.astro b/website/src/components/ConceptSidebar.astro index ff6f9681..609f37a9 100644 --- a/website/src/components/ConceptSidebar.astro +++ b/website/src/components/ConceptSidebar.astro @@ -1,6 +1,8 @@ --- +import { getCollection } from 'astro:content'; import DocsSidebar from './DocsSidebar.astro'; import type { SidebarGroup } from './sidebar'; +import { getDirForSlug, getMetaForDir, formatLabel } from './sidebar'; interface Props { activePage: string; @@ -8,91 +10,59 @@ interface Props { const { activePage } = Astro.props; -const getStartedGroups: SidebarGroup[] = [ - { - title: 'Getting started', - items: [ - { label: 'Installation', href: '#installation', active: true, section: true }, - { label: 'via Corepack', href: '#install-corepack', sub: true, section: true }, - { label: 'via Homebrew', href: '#install-homebrew', sub: true, section: true }, - { label: 'via winget', href: '#install-winget', sub: true, section: true }, - { label: 'Your first project', href: '#your-first-project', section: true }, - { label: 'Common commands', href: '#common-commands', section: true }, - { label: 'Migrating from npm', href: '#migrating-from-npm', section: true }, - { label: 'Editor integration', href: '#editor-integration', section: true }, - { label: 'Next steps', href: '#next-steps', section: true }, - ], - }, - { - title: 'Core concepts', - items: [ - { label: 'Dependency protocols', href: 'concepts.html#dependency-protocols' }, - { label: 'Node.js linkers', href: 'concepts.html#nodejs-linkers' }, - { label: 'Workspaces', href: 'concepts.html#workspaces' }, - { label: 'Yarn Switch', href: 'concepts.html#yarn-switch' }, - ], - }, - { - title: 'Intermediary concepts', - items: [ - { label: 'Constraints', href: 'concepts.html#constraints' }, - { label: 'Dependency patches', href: 'concepts.html#dependency-patches' }, - { label: 'Peer dependencies', href: 'concepts.html#peer-dependencies' }, - { label: "Plug'n'Play", href: 'concepts.html#plug-n-play' }, - ], - }, - { - title: 'Advanced concepts', - items: [ - { label: 'Zero Installs', href: 'concepts.html#zero-installs' }, - { label: 'Virtual packages', href: 'concepts.html#virtual-packages' }, - { label: 'Performances', href: 'concepts.html#performances' }, - ], - }, -]; +const topDirOrder: Record = { + 'getting-started': 0, + 'concepts': 100, + 'advanced': 200, + 'contributing': 300, + 'appendix': 400, +}; -const conceptsGroups: SidebarGroup[] = [ - { - title: 'Getting started', - items: [ - { label: 'Installation', href: 'get-started.html' }, - { label: 'Your first project', href: 'get-started.html#your-first-project' }, - { label: 'Migrating from npm', href: 'get-started.html#migrating-from-npm' }, - ], - }, - { - title: 'Core concepts', - items: [ - { label: 'Overview', href: '#core-concepts', active: true, section: true }, - { label: 'Dependency protocols', href: '#dependency-protocols', sub: true, section: true }, - { label: 'Node.js linkers', href: '#nodejs-linkers', sub: true, section: true }, - { label: 'Workspaces', href: '#workspaces', sub: true, section: true }, - { label: 'Yarn Switch', href: '#yarn-switch', sub: true, section: true }, - ], - }, - { - title: 'Intermediary concepts', - items: [ - { label: 'Constraints', href: '#constraints', sub: true, section: true }, - { label: 'Dependency patches', href: '#dependency-patches', sub: true, section: true }, - { label: 'Node.js versioning', href: '#nodejs-versioning', sub: true, section: true }, - { label: 'Peer dependencies', href: '#peer-dependencies', sub: true, section: true }, - { label: 'Workspace profiles', href: '#workspace-profiles', sub: true, section: true }, - { label: "Plug'n'Play", href: '#plug-n-play', sub: true, section: true }, - { label: 'Task dependencies', href: '#task-dependencies', sub: true, section: true }, - ], - }, - { - title: 'Advanced concepts', - items: [ - { label: 'Performances', href: '#performances', sub: true, section: true }, - { label: 'Virtual packages', href: '#virtual-packages', sub: true, section: true }, - { label: 'Zero Installs', href: '#zero-installs', sub: true, section: true }, - ], - }, -]; +const allDocs = await getCollection('docs'); -const groups = activePage === 'get-started' ? getStartedGroups : conceptsGroups; +const docs = allDocs.filter(doc => { + const dir = getDirForSlug(doc.data.slug); + if (dir?.startsWith('reference')) return false; + if (doc.data.sidebar?.hidden) return false; + return true; +}); + +const groupMap = new Map(); + +for (const doc of docs) { + const fsDir = getDirForSlug(doc.data.slug) ?? '.'; + + if (!groupMap.has(fsDir)) { + const meta = getMetaForDir(fsDir); + const topDir = fsDir.split('/')[0]; + const topOrder = topDirOrder[topDir] ?? 999; + + groupMap.set(fsDir, { + label: meta?.label ?? formatLabel(fsDir.split('/').pop()!), + sortKey: topOrder + (meta?.order ?? 99), + docs: [], + }); + } + + groupMap.get(fsDir)!.docs.push(doc); +} + +const groups: SidebarGroup[] = [...groupMap.values()] + .sort((a, b) => a.sortKey - b.sortKey) + .map(({ label, docs: groupDocs }) => ({ + title: label, + items: groupDocs + .sort((a, b) => { + const orderA = a.data.sidebar?.order ?? a.data.sidebar_position ?? 99; + const orderB = b.data.sidebar?.order ?? b.data.sidebar_position ?? 99; + return orderA - orderB; + }) + .map(doc => ({ + label: doc.data.title, + href: `/${doc.data.slug}.html`, + active: doc.data.slug === activePage, + })), + })); --- diff --git a/website/src/components/DocsSidebar.astro b/website/src/components/DocsSidebar.astro index c8e6c836..949c40e5 100644 --- a/website/src/components/DocsSidebar.astro +++ b/website/src/components/DocsSidebar.astro @@ -15,7 +15,7 @@ const { groups } = Astro.props; 'subtitle' in item ?
    {item.subtitle}
    : {item.label} diff --git a/website/src/components/Nav.astro b/website/src/components/Nav.astro index 58753012..3370743c 100644 --- a/website/src/components/Nav.astro +++ b/website/src/components/Nav.astro @@ -1,4 +1,7 @@ --- +import Logo from '../../public/logo.svg'; +import SimpleIcon from './SimpleIcon.astro'; + interface Props { variant?: 'index' | 'docs'; activePage?: string; @@ -8,46 +11,30 @@ const { variant = 'index', activePage } = Astro.props; const isDocs = variant === 'docs'; const navBgOpacity = isDocs ? '55%' : '25%'; -const prefix = isDocs ? '' : 'docs/'; const links = [ - { label: 'Get Started', key: 'get-started', href: `${prefix}get-started.html` }, - { label: 'Concepts', key: 'concepts', href: `${prefix}concepts.html` }, - { label: 'Reference', key: 'reference', href: `${prefix}manifest.html` }, - { label: 'Appendix', key: 'appendix', href: '#' }, - { label: 'Contributing', key: 'contributing', href: '#' }, - { label: 'Blog', key: 'blog', href: '#' }, + { label: 'Get Started', key: 'get-started', href: '/welcome.html' }, + { label: 'Concepts', key: 'concepts', href: '/concepts/switch.html' }, + { label: 'Reference', key: 'reference', href: '/configuration/manifest.html' }, + { label: 'Appendix', key: 'appendix', href: '/appendix/workspaces-and-peer-deps.html' }, + { label: 'Contributing', key: 'contributing', href: '/contributing/welcome.html' }, + { label: 'Quiz', key: 'quiz', href: '/quiz.html' }, + { label: 'Blog', key: 'blog', href: '/blog' }, ]; const activeClass = 'no-underline text-[var(--fg)] font-medium'; const inactiveClass = 'hover:text-[var(--fg)] transition-colors no-underline text-inherit'; + +const socialLinkClass = 'text-[var(--fg-dim)] inline-flex items-center justify-center w-8 h-8 rounded-lg transition-colors no-underline hover:text-[var(--fg)] hover:bg-[color-mix(in_oklch,var(--fg)_8%,transparent)]'; --- + +
    +
    +
    +
    + + + yarn + + +
    +
    + {links.map(link => ( + {link.label} + ))} +
    + +
    +
    + + + + diff --git a/website/src/components/index/VersionPill.astro b/website/src/components/index/VersionPill.astro index 08eebca2..4cd1f9dc 100644 --- a/website/src/components/index/VersionPill.astro +++ b/website/src/components/index/VersionPill.astro @@ -7,12 +7,30 @@ interface Props { } const { label, title, version, accent = false } = Astro.props; +const copyValue = version.replace(/^v/, ''); const labelClass = accent ? 'bg-[var(--accent-soft)] text-[var(--accent)]' : 'bg-[color-mix(in_oklch,var(--fg-dim)_18%,transparent)] text-[var(--fg-dim)]'; --- - - {label} - {version} - + + + diff --git a/website/src/pages/index.astro b/website/src/pages/index.astro index f10586b9..9a92f5f9 100644 --- a/website/src/pages/index.astro +++ b/website/src/pages/index.astro @@ -4,10 +4,12 @@ import SectionHeader from '../components/index/SectionHeader.astro'; import FeatureCard from '../components/index/FeatureCard.astro'; import FooterColumn from '../components/index/FooterColumn.astro'; import VersionPill from '../components/index/VersionPill.astro'; -import stable from '../../config/stable.json'; -import rc from '../../config/rc.json'; -const benchmarkSummary = await fetch('https://repo.yarnpkg.com/benchmarks/gatsby/summary').then(r => r.json()); +const [stableVersion, canaryVersion, benchmarkSummary] = await Promise.all([ + fetch('https://repo.yarnpkg.com/channels/berry/stable').then(r => r.text()).then(v => v.trim()), + fetch('https://repo.yarnpkg.com/channels/zpm/canary').then(r => r.text()).then(v => v.trim()), + fetch('https://repo.yarnpkg.com/benchmarks/gatsby/summary').then(r => r.json()), +]); const installFullCold = benchmarkSummary .filter((d: {subtest: string}) => d.subtest === 'install-full-cold') .sort((a: {median: number}, b: {median: number}) => a.median - b.median); @@ -150,10 +152,6 @@ html[data-theme="light"] img.cat { filter: brightness(0.15); } .bar-label.self { color: var(--fg) !important; font-weight: 500; } .bar-value.self { color: var(--accent) !important; font-weight: 500; } -/* Scoped media query for nav-links hide on small (easier than inline tailwind for JS-managed elements) */ -@media (max-width: 960px) { - .hide-on-md-narrow { display: none !important; } -} @@ -162,8 +160,10 @@ html[data-theme="light"] img.cat { filter: brightness(0.15); }
    - - + + {stableVersion !== canaryVersion && ( + + )}

    Ship with
    @@ -336,8 +336,7 @@ html[data-theme="light"] img.cat { filter: brightness(0.15); } ]} />

    - // yarn @ 2026 — BSD-2-Clause - lat 47.6062° N · lon 122.3321° W + // Yarn @ 2026 — GPL 3.0
    diff --git a/website/src/styles/docs.css b/website/src/styles/docs.css index 0caed4a8..304d877c 100644 --- a/website/src/styles/docs.css +++ b/website/src/styles/docs.css @@ -475,9 +475,7 @@ font-size: 13px; } -/* Scoped media query */ @media (max-width: 960px) { - .hide-on-md-narrow { display: none !important; } .docs-sidebar { display: none; } .docs-main { grid-column: 1 / -1 !important; } } diff --git a/website/src/styles/quiz.css b/website/src/styles/quiz.css index 6d3484ec..d9fa99be 100644 --- a/website/src/styles/quiz.css +++ b/website/src/styles/quiz.css @@ -5,10 +5,12 @@ max-width: 1040px; margin: 0 auto; padding: 40px 24px 64px; - min-height: calc(100vh - 67px); display: flex; flex-direction: column; } +@media (min-width: 880px) { + .quiz-shell { min-height: calc(100vh - 67px); } +} .quiz-header { margin-bottom: 32px; @@ -94,11 +96,10 @@ /* ── Card / question body ── */ .quiz-card { position: relative; - flex: 1; max-width: 720px; } @media (min-width: 880px) { - .quiz-card { max-width: none; } + .quiz-card { flex: 1; max-width: none; } } .quiz-stage { From aad6d82b35d691d35069a9eae69ae6ac281d0166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Sun, 3 May 2026 14:28:24 +0200 Subject: [PATCH 12/29] Fixes light mode --- website/src/pages/index.astro | 15 +++++++++------ website/src/styles/theme.css | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/website/src/pages/index.astro b/website/src/pages/index.astro index 9a92f5f9..0c110305 100644 --- a/website/src/pages/index.astro +++ b/website/src/pages/index.astro @@ -44,17 +44,20 @@ const installFullCold = benchmarkSummary } html[data-theme="light"] { + --accent: oklch(0.45 0.18 var(--accent-h)); + --accent-soft: oklch(0.45 0.18 var(--accent-h) / 0.10); + --accent-line: oklch(0.45 0.18 var(--accent-h) / 0.30); --bg-0: #eef3ff; --bg-1: #dce7fb; --bg-2: #c5d5f2; --bg-3: #f0e4cf; --fg: #0c1030; - --fg-dim: #3a4370; - --fg-mute: #7a84a8; - --line: rgba(12, 16, 48, 0.10); - --line-strong: rgba(12, 16, 48, 0.22); - --card: rgba(255, 255, 255, 0.55); - --card-border: rgba(12, 16, 48, 0.08); + --fg-dim: #252d50; + --fg-mute: #515a7a; + --line: rgba(12, 16, 48, 0.12); + --line-strong: rgba(12, 16, 48, 0.28); + --card: rgba(255, 255, 255, 0.72); + --card-border: rgba(12, 16, 48, 0.14); --cat-fill: #0c1030; --star: #ffd98a; --constellation: rgba(12, 16, 48, 0.18); diff --git a/website/src/styles/theme.css b/website/src/styles/theme.css index 62c1f209..451d3863 100644 --- a/website/src/styles/theme.css +++ b/website/src/styles/theme.css @@ -77,16 +77,19 @@ } html[data-theme="light"] { + --accent: oklch(0.45 0.18 var(--accent-h)); + --accent-soft: oklch(0.45 0.18 var(--accent-h) / 0.10); + --accent-line: oklch(0.45 0.18 var(--accent-h) / 0.30); --bg-0: #eef3ff; --bg-1: #dce7fb; --bg-2: #c5d5f2; --fg: #0c1030; - --fg-dim: #3a4370; - --fg-mute: #7a84a8; - --line: rgba(12, 16, 48, 0.10); - --line-strong: rgba(12, 16, 48, 0.22); - --card: rgba(255, 255, 255, 0.55); - --card-border: rgba(12, 16, 48, 0.08); + --fg-dim: #252d50; + --fg-mute: #515a7a; + --line: rgba(12, 16, 48, 0.12); + --line-strong: rgba(12, 16, 48, 0.28); + --card: rgba(255, 255, 255, 0.72); + --card-border: rgba(12, 16, 48, 0.14); --adm-note-bg: oklch(0.96 0.04 240 / 0.7); --adm-note-border: oklch(0.60 0.14 240 / 0.6); From 71c5ed23b00dce9026bf114733b0ac2b6cce37a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Sun, 3 May 2026 14:39:38 +0200 Subject: [PATCH 13/29] Adds benchmarks --- website/config/navigation.json | 1 + website/src/pages/benchmarks.astro | 1000 ++++++++++++++++++++++++++++ 2 files changed, 1001 insertions(+) create mode 100644 website/src/pages/benchmarks.astro diff --git a/website/config/navigation.json b/website/config/navigation.json index 7820f75e..ab01eac2 100644 --- a/website/config/navigation.json +++ b/website/config/navigation.json @@ -4,6 +4,7 @@ { "label": "Concepts", "key": "concepts", "href": "/concepts/switch/" }, { "label": "Reference", "key": "reference", "href": "/configuration/manifest/" }, { "label": "Extra", "key": "extra", "href": "/appendix/workspaces-and-peer-deps/" }, + { "label": "Benchmarks", "key": "benchmarks", "href": "/benchmarks/" }, { "label": "Quiz", "key": "quiz", "href": "/quiz/" }, { "label": "Blog", "key": "blog", "href": "/blog" } ], diff --git a/website/src/pages/benchmarks.astro b/website/src/pages/benchmarks.astro new file mode 100644 index 00000000..9421b126 --- /dev/null +++ b/website/src/pages/benchmarks.astro @@ -0,0 +1,1000 @@ +--- +import BaseLayout from '../layouts/BaseLayout.astro'; +import '../styles/theme.css'; +import '../styles/docs.css'; + +const benchmarkData = await fetch('https://repo.yarnpkg.com/benchmarks').then(r => r.json()); + +interface BenchPoint { timestamp: number; value: number | null; } +interface BenchEntry { subtest: string; test: string; pm: string; points: BenchPoint[]; } + +const SERIES_ORDER = ['zpm', 'yarn', 'npm', 'pnpm', 'classic'] as const; +const SERIES_META: Record = { + zpm: { name: 'yarn zpm', dashed: false, accent: true }, + yarn: { name: 'yarn berry', dashed: false, accent: false }, + npm: { name: 'npm', dashed: false, accent: false }, + pnpm: { name: 'pnpm', dashed: false, accent: false }, + classic: { name: 'yarn classic', dashed: true, accent: false }, +}; + +const PROJECTS = [ + { id: 'next', name: 'Next.js' }, + { id: 'gatsby', name: 'Gatsby' }, +]; + +const SCENARIOS = [ + { id: 'install-full-cold', num: '01', title: 'Full cold install', desc: 'No lockfile, no global cache, no node_modules. Everything resolves from the registry; tarballs are unpacked and linked from scratch.', tag: 'rm -rf ~/.cache && rm yarn.lock' }, + { id: 'install-cache-only', num: '02', title: 'Cache only', desc: 'Global cache is warm but the project lockfile is gone. Resolution is re-computed; tarballs are reused. Closest to a fresh clone with shared CI cache.', tag: 'rm yarn.lock' }, + { id: 'install-cache-and-lock', num: '03', title: 'Cache + lockfile', desc: 'Lockfile exists, cache is warm. The common CI path: dependencies pre-resolved, just need to materialize them on disk.', tag: 'preserve all caches' }, + { id: 'install-ready', num: '04', title: 'Recurrent call', desc: 'Everything is in place — lockfile, cache, node_modules. Should be a near-instant no-op that verifies and exits.', tag: 'second invocation' }, +]; + +const DATA: Record>> = {}; +for (const entry of benchmarkData as BenchEntry[]) { + if (!SERIES_ORDER.includes(entry.pm as any)) continue; + if (!PROJECTS.some(p => p.id === entry.test)) continue; + if (!DATA[entry.subtest]) DATA[entry.subtest] = {}; + if (!DATA[entry.subtest][entry.test]) DATA[entry.subtest][entry.test] = {}; + DATA[entry.subtest][entry.test][entry.pm] = entry.points; +} + +const lastPoint = (benchmarkData as BenchEntry[]).find(e => e.pm === 'zpm')?.points.filter(p => p.value !== null).pop(); +const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString().slice(0, 10) : 'N/A'; +--- + + + + +
    + + +
    + Docs + / + Benchmarks +
    + + +
    +
    +

    Package manager comparison.

    +

    + Continuous benchmarks of yarn zpm, + yarn berry, + npm, + pnpm, and + yarn classic across four install scenarios on two reference projects. Lower is better. Series are wall-clock seconds. +

    +
    +
    + Project + + + +
    +
    + + +
    +
    +
    Last run
    +
    {lastRunDate}
    +
    +
    +
    Runner
    +
    ubuntu-22.04 4 vCPU · 16 GB
    +
    +
    +
    Data points
    +
    90 days of history
    +
    +
    + + +
    + Series + + + + + + + + + Click to mute · y-axis = seconds +
    + + +
    + + +
    +
    § Aggregate
    +

    Median across all scenarios.

    +

    + Geometric mean of cell medians, normalized to the slowest in each row so the chart compares relative performance across scenarios of different absolute scale. Lower is faster. +

    +
    +
    +
    +

    Cold install · normalized

    +
    +
    +
    +

    Cache + lockfile · normalized

    +
    +
    +
    + + +
    +

    Methodology

    +

    Each scenario × project × package-manager pair is executed multiple times in a clean container. We record wall-clock duration. Results are collected daily and published here automatically.

    + +

    Install scenarios

    +
      +
    1. +

      Full cold install

      +

      Global cache is wiped before each invocation. The lockfile and node_modules are removed. Everything resolves from the registry; tarballs are fetched, unpacked, and linked from scratch.

      +
    2. +
    3. +

      Cache only

      +

      The global cache survives but the project lockfile is removed. Resolution is re-computed; tarballs are reused from cache. Closest to a fresh clone with shared CI cache.

      +
    4. +
    5. +

      Cache + lockfile

      +

      Lockfile exists, cache is warm. The common CI path: dependencies pre-resolved, just need to materialize them on disk.

      +
    6. +
    7. +

      Recurrent call

      +

      Everything is in place — lockfile, cache, node_modules. Should be a near-instant no-op that verifies and exits.

      +
    8. +
    + +
    +
    + + NOTE +
    +
    + Series rendered with a dashed stroke (yarn classic) are kept for historical reference. Yarn classic is in maintenance and we do not recommend it for new projects — the modern release line is what you want for production work. +
    +
    + +

    Reference projects

    +

    We chose real-world TypeScript projects with different dependency profiles. Each is pinned to a specific commit; we do not pull main at run time.

    + +
    + + + + + + + + + + + + + + + + + + +
    Reference projects — pinned at run time
    ProjectDescription
    nextNext.js 15 starter — App Router, Tailwind, MDX, ESLint flat config
    gatsbyGatsby 5 blog — heavy plugin ecosystem, sharp, MDX, GraphQL
    +
    + +

    Caveats

    +
      +
    • Network latency to the registry is held constant via a pull-through proxy on the same VPC. Real-world installs over a transcontinental link will be slower across the board.
    • +
    • Linker choice matters: numbers below are Plug’n’Play for Yarn, the default linker for each other manager. Switching Yarn to node-modules removes most of its lead in Full cold.
    • +
    • None of these numbers measure correctness. Determinism, peer-resolution strictness, and lockfile portability are evaluated separately.
    • +
    +
    + +
    + +
    + + +
    From 01b10ddf9da94c1f032a639327a00ab90f9f172a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Sun, 3 May 2026 15:29:19 +0200 Subject: [PATCH 14/29] Improves benchmarks --- website/src/pages/benchmarks.astro | 426 +++++++++++++++++++++++++---- 1 file changed, 369 insertions(+), 57 deletions(-) diff --git a/website/src/pages/benchmarks.astro b/website/src/pages/benchmarks.astro index 9421b126..1e298f2b 100644 --- a/website/src/pages/benchmarks.astro +++ b/website/src/pages/benchmarks.astro @@ -18,8 +18,9 @@ const SERIES_META: Record e.pm === 'zpm')?.points.filter(p => p.value !== null).pop(); const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString().slice(0, 10) : 'N/A'; + +const allTimestamps = (benchmarkData as BenchEntry[]).flatMap(e => e.points.map(p => p.timestamp)); +const benchMinTs = Math.min(...allTimestamps); +const benchMaxTs = Math.max(...allTimestamps); + +const INCIDENTS = [ + { + start: Date.UTC(2026, 1, 24, 18, 20, 0) / 1000, + end: Date.UTC(2026, 2, 11, 18, 18, 0) / 1000, + label: 'Accidental regression in Node.js 25.7 broke our benchmarks', + }, +]; --- @@ -132,7 +145,7 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString .bench-grid { display: grid; - grid-template-columns: 220px repeat(var(--bench-cols, 2), minmax(0, 1fr)); + grid-template-columns: 190px repeat(var(--bench-cols, 3), minmax(0, 1fr)); background: color-mix(in oklch, var(--card) 55%, transparent); border: 1px solid var(--line); border-radius: 14px; @@ -146,7 +159,7 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString border-bottom: 1px solid var(--line-strong); background: color-mix(in oklch, var(--fg) 2%, transparent); display: flex; - align-items: center; + align-items: end; justify-content: space-between; gap: 10px; } @@ -170,11 +183,11 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString } .bench-grid .row-head { - padding: 22px 18px; + padding: 16px 14px; border-top: 1px solid var(--line); display: flex; flex-direction: column; - gap: 10px; + gap: 8px; } .bench-grid .row-head .row-num { font-family: 'JetBrains Mono', monospace; @@ -183,7 +196,7 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString color: var(--fg-mute); } .bench-grid .row-head h3 { - font-size: 17px; + font-size: 15px; font-weight: 500; color: var(--fg); letter-spacing: -0.01em; @@ -191,8 +204,8 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString line-height: 1.2; } .bench-grid .row-head p { - font-size: 12.5px; - line-height: 1.5; + font-size: 11.5px; + line-height: 1.45; color: var(--fg-dim); margin: 0; text-wrap: pretty; @@ -213,9 +226,9 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString .chart-cell { border-top: 1px solid var(--line); border-left: 1px solid var(--line); - padding: 18px 14px 14px; + padding: 14px 10px 10px; position: relative; - min-height: 200px; + min-height: 130px; display: flex; flex-direction: column; } @@ -223,7 +236,7 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString display: flex; justify-content: space-between; align-items: baseline; - margin-bottom: 8px; + margin-bottom: 6px; gap: 8px; min-height: 16px; } @@ -236,17 +249,40 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString color: var(--fg); font-weight: 500; } - .chart-cell .cell-meta .winner { + .chart-cell .cell-meta .cell-pill { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; - color: var(--accent); padding: 2px 6px; - border: 1px solid var(--accent-line); border-radius: 4px; + white-space: nowrap; + } + .cell-pill.fastest { + color: var(--accent); + border: 1px solid var(--accent-line); background: var(--accent-soft); } + .cell-pill.contested { + color: oklch(0.82 0.13 85); + border: 1px solid oklch(0.65 0.13 85 / 0.45); + background: oklch(0.45 0.12 85 / 0.15); + } + .cell-pill.slower { + color: oklch(0.78 0.15 25); + border: 1px solid oklch(0.60 0.15 25 / 0.45); + background: oklch(0.45 0.14 25 / 0.15); + } + html[data-theme="light"] .cell-pill.contested { + color: oklch(0.42 0.14 75); + border-color: oklch(0.60 0.14 75 / 0.5); + background: oklch(0.90 0.08 75 / 0.5); + } + html[data-theme="light"] .cell-pill.slower { + color: oklch(0.45 0.18 25); + border-color: oklch(0.55 0.18 25 / 0.5); + background: oklch(0.92 0.06 25 / 0.5); + } .chart-cell svg { width: 100%; flex: 1; @@ -254,6 +290,62 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString display: block; } + .incident-area { fill: oklch(0.55 0.18 25 / 0.10); } + .incident-border { stroke: oklch(0.60 0.18 25 / 0.35); stroke-width: 1; stroke-dasharray: 3 2; fill: none; } + .incident-label { + font-family: 'JetBrains Mono', monospace; + font-size: 7.5px; + fill: oklch(0.70 0.15 25); + letter-spacing: 0.03em; + } + html[data-theme="light"] .incident-area { fill: oklch(0.55 0.18 25 / 0.08); } + html[data-theme="light"] .incident-border { stroke: oklch(0.55 0.18 25 / 0.3); } + html[data-theme="light"] .incident-label { fill: oklch(0.50 0.18 25); } + + .version-dot { + pointer-events: none; + stroke: var(--bg-0); + stroke-width: 1.5; + } + + .legend-row .toggle-label { + display: inline-flex; + align-items: center; + gap: 6px; + cursor: pointer; + user-select: none; + font-family: 'JetBrains Mono', monospace; + font-size: 11px; + color: var(--fg-dim); + } + .legend-row .toggle-label input { + appearance: none; + -webkit-appearance: none; + width: 14px; + height: 14px; + border: 1px solid var(--line-strong); + border-radius: 3px; + background: color-mix(in oklch, var(--fg) 4%, transparent); + cursor: pointer; + position: relative; + flex-shrink: 0; + } + .legend-row .toggle-label input:checked { + background: var(--accent); + border-color: var(--accent); + } + .legend-row .toggle-label input:checked::after { + content: ''; + position: absolute; + left: 3.5px; + top: 1px; + width: 4px; + height: 7px; + border: solid var(--bg-0); + border-width: 0 1.5px 1.5px 0; + transform: rotate(45deg); + } + .ax-line { stroke: var(--line); stroke-width: 1; } .ax-line-strong { stroke: var(--line-strong); stroke-width: 1; } .ax-text { @@ -325,6 +417,21 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString } .bench-tip .tip-row .nm { color: var(--fg-dim); flex: 1; } .bench-tip .tip-row .vl { color: var(--fg); font-weight: 500; } + .bench-tip .tip-ver { color: var(--fg-mute); font-weight: 400; font-size: 9px; } + + @keyframes bench-spin { to { transform: rotate(360deg); } } + .version-spinner { + display: none; + width: 12px; + height: 12px; + border: 1.5px solid var(--fg-mute); + border-top-color: var(--accent); + border-radius: 50%; + animation: bench-spin 0.6s linear infinite; + flex-shrink: 0; + } + .toggle-label.loading .version-spinner { display: inline-block; } + .toggle-label.loading span { color: var(--fg-mute); } .summary { display: grid; @@ -451,7 +558,7 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString yarn berry, npm, pnpm, and - yarn classic across four install scenarios on two reference projects. Lower is better. Series are wall-clock seconds. + yarn classic across four install scenarios on three reference projects. Lower is better. Series are wall-clock seconds.

    @@ -459,6 +566,7 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString +
    @@ -505,6 +613,12 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString Click to mute · y-axis = seconds + + @@ -585,6 +699,10 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString gatsby Gatsby 5 blog — heavy plugin ecosystem, sharp, MDX, GraphQL + + monorepo + Multi-workspace monorepo — shared packages, cross-workspace dependencies + @@ -601,7 +719,7 @@ const lastRunDate = lastPoint ? new Date(lastPoint.timestamp * 1000).toISOString
    - +
    From 605ca8b299a271568e9b2d876b0fddd70186c7aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Sun, 3 May 2026 16:27:32 +0200 Subject: [PATCH 15/29] Adds benchmarks in React land --- website/astro.config.mjs | 2 + website/package.json | 5 + website/public/stars/island-01.png | Bin 0 -> 6136 bytes website/public/stars/island-02.png | Bin 0 -> 6547 bytes website/public/stars/island-03.png | Bin 0 -> 5765 bytes website/public/stars/island-04.png | Bin 0 -> 5317 bytes website/public/stars/island-05.png | Bin 0 -> 6215 bytes website/public/stars/island-06.png | Bin 0 -> 5112 bytes website/public/stars/island-07.png | Bin 0 -> 5781 bytes website/public/stars/island-08.png | Bin 0 -> 4949 bytes website/public/stars/island-09.png | Bin 0 -> 4251 bytes website/public/stars/island-10.png | Bin 0 -> 5614 bytes website/public/stars/island-11.png | Bin 0 -> 6186 bytes website/public/stars/island-12.png | Bin 0 -> 6531 bytes website/public/stars/island-13.png | Bin 0 -> 5386 bytes website/public/stars/island-14.png | Bin 0 -> 6420 bytes website/public/stars/island-15.png | Bin 0 -> 5148 bytes website/public/stars/island-16.png | Bin 0 -> 5338 bytes website/public/stars/island-17.png | Bin 0 -> 5911 bytes website/public/stars/island-18.png | Bin 0 -> 6712 bytes website/public/stars/island-19.png | Bin 0 -> 6017 bytes website/public/stars/island-20.png | Bin 0 -> 4544 bytes website/public/stars/island-21.png | Bin 0 -> 5034 bytes website/public/stars/island-22.png | Bin 0 -> 5889 bytes website/public/stars/island-23.png | Bin 0 -> 6781 bytes website/public/stars/island-24.png | Bin 0 -> 4507 bytes website/public/stars/island-25.png | Bin 0 -> 4896 bytes website/public/stars/island-26.png | Bin 0 -> 5316 bytes website/public/stars/island-27.png | Bin 0 -> 5350 bytes .../components/benchmarks/BenchmarkChart.tsx | 376 ++++++++ .../benchmarks/BenchmarkSummary.tsx | 115 +++ .../benchmarks/BenchmarkTooltip.tsx | 73 ++ .../benchmarks/BenchmarksDashboard.tsx | 210 +++++ .../src/components/benchmarks/useVersions.ts | 66 ++ website/src/pages/benchmarks.astro | 808 ++---------------- yarn.lock | 119 ++- 36 files changed, 1056 insertions(+), 718 deletions(-) create mode 100644 website/public/stars/island-01.png create mode 100644 website/public/stars/island-02.png create mode 100644 website/public/stars/island-03.png create mode 100644 website/public/stars/island-04.png create mode 100644 website/public/stars/island-05.png create mode 100644 website/public/stars/island-06.png create mode 100644 website/public/stars/island-07.png create mode 100644 website/public/stars/island-08.png create mode 100644 website/public/stars/island-09.png create mode 100644 website/public/stars/island-10.png create mode 100644 website/public/stars/island-11.png create mode 100644 website/public/stars/island-12.png create mode 100644 website/public/stars/island-13.png create mode 100644 website/public/stars/island-14.png create mode 100644 website/public/stars/island-15.png create mode 100644 website/public/stars/island-16.png create mode 100644 website/public/stars/island-17.png create mode 100644 website/public/stars/island-18.png create mode 100644 website/public/stars/island-19.png create mode 100644 website/public/stars/island-20.png create mode 100644 website/public/stars/island-21.png create mode 100644 website/public/stars/island-22.png create mode 100644 website/public/stars/island-23.png create mode 100644 website/public/stars/island-24.png create mode 100644 website/public/stars/island-25.png create mode 100644 website/public/stars/island-26.png create mode 100644 website/public/stars/island-27.png create mode 100644 website/src/components/benchmarks/BenchmarkChart.tsx create mode 100644 website/src/components/benchmarks/BenchmarkSummary.tsx create mode 100644 website/src/components/benchmarks/BenchmarkTooltip.tsx create mode 100644 website/src/components/benchmarks/BenchmarksDashboard.tsx create mode 100644 website/src/components/benchmarks/useVersions.ts diff --git a/website/astro.config.mjs b/website/astro.config.mjs index ce0d89b0..a147f19b 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -1,4 +1,5 @@ import {defineConfig} from 'astro/config'; +import react from '@astrojs/react'; import tailwindcss from '@tailwindcss/vite'; import remarkDirective from 'remark-directive'; import remarkAutolinkFields from './plugins/remark-autolink-fields.mjs'; @@ -6,6 +7,7 @@ import remarkDocs from './plugins/remark-docs.mjs'; import rehypeDocs from './plugins/rehype-docs.mjs'; export default defineConfig({ + integrations: [react()], build: { format: `file`, }, diff --git a/website/package.json b/website/package.json index c3bf39ec..0852b1d9 100644 --- a/website/package.json +++ b/website/package.json @@ -8,11 +8,16 @@ "record": "node --experimental-strip-types scripts/record-terminal.ts" }, "dependencies": { + "@astrojs/react": "^5.0.4", "@clipanion/astro": "../scripts/@clipanion-astro.tgz", "@clipanion/tools": "../scripts/@clipanion-tools.tgz", "@iconify-json/simple-icons": "^1.2.79", "@tailwindcss/vite": "^4.2.4", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", "astro": "^5.9.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-directive": "^4.0.0", diff --git a/website/public/stars/island-01.png b/website/public/stars/island-01.png new file mode 100644 index 0000000000000000000000000000000000000000..7d70ba00eebb6512e7fd95e40615d683bb9d4152 GIT binary patch literal 6136 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 KMNUMnLSTZf;mb$> literal 0 HcmV?d00001 diff --git a/website/public/stars/island-02.png b/website/public/stars/island-02.png new file mode 100644 index 0000000000000000000000000000000000000000..1defb19ba0455f45837ea860b20a20a6f83edbe0 GIT binary patch literal 6547 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 FV1hytR?+|f literal 0 HcmV?d00001 diff --git a/website/public/stars/island-03.png b/website/public/stars/island-03.png new file mode 100644 index 0000000000000000000000000000000000000000..816907ef898b97058ae47b69487496dff916d42e GIT binary patch literal 5765 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 X!=a|Ga*f&&00000NkvXXu0mjfg0MUU literal 0 HcmV?d00001 diff --git a/website/public/stars/island-05.png b/website/public/stars/island-05.png new file mode 100644 index 0000000000000000000000000000000000000000..9610b025802153bd5177538ef6224781a1d1e101 GIT binary patch literal 6215 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 literal 0 HcmV?d00001 diff --git a/website/public/stars/island-06.png b/website/public/stars/island-06.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9ae6e939194d4e3d19b67c5b66ac3b446065f3 GIT binary patch literal 5112 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 literal 0 HcmV?d00001 diff --git a/website/public/stars/island-07.png b/website/public/stars/island-07.png new file mode 100644 index 0000000000000000000000000000000000000000..85dae8b77e3de73bdb3df547ac58d0b288f663fa GIT binary patch literal 5781 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 TpKBL100000NkvXXu0mjfp==?N literal 0 HcmV?d00001 diff --git a/website/public/stars/island-08.png b/website/public/stars/island-08.png new file mode 100644 index 0000000000000000000000000000000000000000..bec666773c955319434ed8785c2c4e5af4d48c20 GIT binary patch literal 4949 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%0AD6i+?OATL-(B{6Rug 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 IM6N<$g4Vj)%K!iX literal 0 HcmV?d00001 diff --git a/website/public/stars/island-12.png b/website/public/stars/island-12.png new file mode 100644 index 0000000000000000000000000000000000000000..abc2fb8660b7145ae106bdd707b074c13e55d4ce GIT binary patch literal 6531 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

    Kg?h zKowbZQM1KTOdLy@)fiF|pq@EnU$`l5Oh#NtaCj$4;l{s!pa7qzvu#$8)Cjrn-% z$M>H)@!7qZ&UV}54>@V_L=(vz`;dUMshV};<(f8HU#|FM>!`B%*DrYL;fEh+ z1W282gS3Cy`741APJZ{@f49{gIx)L)@4+X!I%;RmoUFHVNIuQWIDjW60%nShM z5Mmxq$J)~A?f2WL`mlP!?ijiFmYe3kd*6Ncap@EDh#BbMiYu1>N6yabPj5f+X~R9L zzbXI9sUE{EH(05tKt_@P3sjIe01Pk8u1S|RGeEy$l|8Gv{2eV@GucJ(_On+7CKE|Qat$c(UTguM&EKsDKd^}$kOwdDJ{Q{rnJtkP$vut(O_8_B+4 zbdq37?yNl)7&zMC33c`cxBlRcyK16~4ec)sXy^kRWwM%)RaciVv$%N3{iO2(s?)`!eF6A|*I$3`<24@ypFVk}?Uo+5ASNYp zOk}SL=>izbPFH0Xrk)PsN;(^3*@-bYZh108IOzZnI2nU;bCl$#XeGr-(wWYl+}}U_ zuSvK&WT31^7d#m7fL~3?$w_dH9b*wQGr&JM8FoS%GAa#r$hBuQcmgnzc#V?-JzoVz zPU1OXKysivBhIgpfCwmAG{t9dSo%^%4htutj4P65rSNYQJ$1S}*L1Tc73Cwf!volK(xpmVkFtXTV3sgHn>#X*3iA!N z-hoKY&b>Qb`0|{jeUO%~I>$w#`}c1jVU)ZhhNXun6{VfZF;n+fICHFFf?pluoO9x^pez$-G6QD4keG)&XL^CW^HKUUtQ<~FH3FdH# zyURW1s{nn~{R;*PNk|=Shh`LJho?>|k%dG%;vhij15O4C3@KqNuq#O0Dz(1D4ThyD znfc2e`lly0InuJ8J5X=mw)QW6>UOgP*^H3~gply?5$T7G_QKS?DENbvm!nZiN;ti_ z=|l$J3;m9LTrkkz{O0LGgW7dfMzSY+R2D!2m;@)o`6~y1R$H%6rSk0x?WvO1^| zG79}8sw=Cr2G@z@d_fXjzWlYMGiTby!*;TY^U-z@qn!f=$!%B_+Esl}qmL`CRVUgq zp0&L2%0@_%S@HR}6^Z$@X_sv1^Q7!4-w~mcEs!dl7#G*vBon!-Kq$_YZrt&p_k;v7oDxXX05k+!MMs|-c1D9oKGW7b zq#g0|23lEJnb>x^`AVDYo18NY{O2Ig0J$BBBZS`Vu|_j~c#*tvWZ|SgE?js6TpSz zH&C=)MhL;S(c?=+dufRiTtBOBD44mcxBp;-Hf|B?KB-SEN2BWW*O4=2$`xHRE}8l# zRZOe+Xj_E#9e@<^PlXgUZc8GuU^PxkmdTZbO-9w9xNlzrL?7EYFQC=c)v~+0dv>Z* zol!C>gan?u2|UoWLYDJcJ-qCm1b=^|WW%EmKEC;X+hug_-~Ro-R>pD|S#^+oFz5O|j94;Yc5qUZJKY_Cn^ofNt8fp+FV}F3-==h7}jGvtZN1 zQiz|e2>yTG9Prj0QD4u`E&csv^Do0sQDYlmh`Q{BSGK1NAHA-o&eprN!cRfPh>8z_ z(^EmP5+CiB0GKQ1WoKk?h7{8{FQ6T5ZBsIbDO1Ld*2v{DVXuRCt~KiJ3DSo05FKky z*_Br?Vdc*j{j4P>D*kGcFnqXg`pjvo`+X@JcOWb^o(zxyJLBAK0Y~-EiP(v-S;bsM zR8to%;sW;TM@*CcdYSd>*QfUPw3WJ&2GR=iRQ<;ml0l_zk4EpW3(&@0=4#1O@ahXM zy|(YKpBu{O#~**H!IqTq-}R>~)th$*sK>3qlXDg1M|cfW#xNr}5>>UUt1a@(Gce>B z#*l$lRO~2qrFysn5sJzlr-S1EP^_$CSplZlcLO zbyOB_K%uWgX4W~#xCIl0+k+sIreDG`}=SNf=Yr`ac3 zidR1T=)w*0069qZuYR?7d$KEY)$x-Fo#os6X~2iB1QHR>rDa(XjYhL69Ja-TA*MuqHFA{ zcin#TYd76=M_fS;GV0!iKRte=zHVh*t+%k|u>U&~C!ygjSx~llQ1(Uw@_;ucurW!L zf7}o2AD5aEo@KEL^v1G2`p?x`^?=v)@Ev#G`~3eENCwMNUHsd()<-nc(j)ak>;6yr z;s0dpfJZ!^9;~Wu_)$Yl{})9}K!5$zx-3!h{oquiJN3iW0oqaFs7_0t`0SQF+t<#Y zKYz&0u|ltr{CJ`&x!^&NB5>6T0DKWqGc z^O>Z9fl%SgV~QuPSd#8C96S^4fV<-t)v0Kl#NgZ@tw3E}v6Z#!B${&cpkZS(i`Wrb+2Lc2+91 zb9X!KVJodv`vG$H)_PXB&@T^52eYCp5 oVYgQX{l0FKWN&8sjfJ-V0rp3@A-n3j)&Kwi07*qoM6N<$g2B;FtpET3 literal 0 HcmV?d00001 diff --git a/website/public/stars/island-14.png b/website/public/stars/island-14.png new file mode 100644 index 0000000000000000000000000000000000000000..c0570e2e178752bb60def3ea16f8fc27cd873a90 GIT binary patch literal 6420 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 KMNUMnLSTX}<(ts} literal 0 HcmV?d00001 diff --git a/website/public/stars/island-16.png b/website/public/stars/island-16.png new file mode 100644 index 0000000000000000000000000000000000000000..96f7e93e26953c1c77ab1509a2e2b54afa39fe5d GIT binary patch literal 5338 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 literal 0 HcmV?d00001 diff --git a/website/public/stars/island-18.png b/website/public/stars/island-18.png new file mode 100644 index 0000000000000000000000000000000000000000..1da1deb93ec3460b2bfa3c82783f339df2c91e18 GIT binary patch literal 6712 zcmV-88pq{{P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91JfH&r1ONa40RR91KmY&$0Jr_*k^lf1qDe$SRA>d=TM2j+Rkl9WRh>@K z*+a-e0@+Cjdq9vK0dW99z$oG{k3|K(&l#A( z43LE-kOUG)$l9Gfo!;yH=XP+OpCAeO#__$IRJywA)~)lO^PlD3s>t*+Z>p*)F`Yx^ z3?Dq;PXiz5fd3jANtS+Ic_j7;E{ap0#zUCM#yM6o3 zl%gBCuk`ELoV0vNBuy9_L~d>ldz0B}Z_oXIb{0N#Xm`ZAb*twG2WXxd^=L@Y%o#Bh z6sV#6E7jz%DI~kK&qhBRz@VunEp2D~{4qRdlxYnD{?V=^a}( z^h?`w;5B3U`9~ifW~WKN2qu3&BGqXnjby`)LN=S76pcGM?Uu6*CQ}C8XM|>Ev@Zg* zhg-Pzz@E)L)6(`YE-E-VVa#wFJ(UtlfdN{aaX>H!N!WP5$z-FN28rq#)iPO@%iD9? z{}|wd2Y2?}x9{NZE6TDaP8utL#$n{??go%34rG}m*-cniW!S)NwX&#M+1uM&ZV%x9 z2&MPzSl?&=p8dZsE6tfWajZEd$ zxLtUE+R}2{woN_K4;@)jQgr^Y0X-WuQ-9Hc0)3m=bg(MOrpgQz`>?S_Lf~>IlC|Wf zHIq(f1EE1{?%s~3EL*nBtKN7sCNJ+6Ma4(b`0+!U#*Y2vP1LH^c8vSIOS$$;JgI>74e&}?%J z%1S7ry*{i|7z|TN%k$`=!G07JV5VCow>r3!cAD8H(~&Q3IQM>LUJ&R-4SFwM`gqlY zr&qpJzh^}M#EK`TjHcnkh8nshMi)u}{pwh(JGI?g)kGhlx=ZViDT;^ggH9m<&&9_& zltqieN$;tUrAea3dJWyYY1SC4?S59P>SwHMrf<*ZMie_7DYZ>H+Oq3&+O*>fBZA6> z-z}I|nvjrCt;m`RK*$N{9F{S5Y;RL-ZGbdy-V-S{%gyIfCVB)tg$hcKprcxCfCyCV zv#_uPT9ayq)O<`4G$#!T4;*KTS64TZ*{mnO5I+hC2xvXJJM>g!r}Fp6=$NHLablBd#}+)k_f>B_&V znCaT#(>6qJq$|5!__TtQ)ox0^`ugiP_U_%0nsLUb`_ZGPI(3gWQ$GMzZJ-^do)S+# zRosyM3qGaS%GAHNFAeC!`N2Y_W(QT*6Cngpwb4npN^MHv&CAO5n`g;T>7c#|-Zbfv z5bEFy%UP@>i+MY9mJ10`8Gl_Nf%mWhq_DKT8Q&ZLtPzz~Q?s4?5Iu0RT}_FIh-fY@ zKDocfP%33-SH8D#+ttvHL0%Ny1=estAXq}9TA^*wOIQX$2076QJCR05D2^yBP^Hig zkTnL!@T-z9*-m-}$^Mxwxy7TF!J zGRY1}RxDbr!qm9$#%iXBh(XQ4VG*Yyqx$a3FAg<-xVD6 ze{T^Q=V1m=9&E5%zz8$k&qg|c@$;0(3p*N&BQagEVK8hAnwistYwMv*POcaez*Qat zjAC1UM{T4foHSXj&D946x8L1XJy> zDCbC2KTZeIvlA7rC;@T#ZHj7y&Bbx#6c|u}9<+jz!jw#597pICnMmUD6(U@*KP9yo6^ zgcZQo;Zu@PSwRsJ?<4QBf`oC=*JiT@`uTe#A3eG|5*OTeW3K$5jT<#2zN)t7ZH={T z@~>z4(v*q*n87fW@dF{G+vx--g*UeZHHk|mE+DW;C?-&0VQjV@yB(ina2yXf05Y}N zHTW3E3ZXIdaeYcquHXzL%)Dr&4?n4)Yh}TX&XGym`t%#}r-cg_UO~~qxvWj?j(~ZD zQKKG+udA;4vzJ^samm6E8aCJi5f=Uk&Es#2Rbe%@27ZKz*=neic%K!+z+K@Dfv%-$ z;#9-&K=k8JW(WckD}${sf*9)t3UjJZ9#0cxh02W%NiSPbRr_fIC zELikXdRr<#NOk9ymUg(I$yC#Tbn{qdR*|-Qq9=ufcnCk^fW`F@<7DVu9=fbAX0I*_ zGI&H|*Xl9%;l8+rV}UrwmK4q)!15{nE?9z39-J#JE;&`FLf+mw>fX(VdM4>4oAs8G zlXW?|sL(jDIYnTx&pj&7z01LdVA$I|qS>P0I z0$0Hb@dPXlfKXE|l%>TSLqVpqo{hOY?^@0mAu?p#pl?(MD?=1aD2-P$y3){~c- z8qIZ=uT(tfqib@DiSoj9jV;9y90J3HE}sNoj@0mD6@s#`E=r>hz`A@CAXpo?@^-}L z(vrbTh)(>29h`1a7Bhqk9&s4QL2W^Q1i9c~nUa&;$VcBGpE_MQ;L_#dkp=mA6~CG} zx%k+zGuGwHm){Zfj{@c^cJKbYdBVierIOP#EGzR`&meyrb?(B{=KQRRsU1)2SZEgz z_D4`rSP2t)rY{60j=CsRxDVII>;?>8;-JO5Ok)Hrj?h@j!6$Fx1dhX(Tj(uePRy>M zf)VbRge1gy(D1>YVbP@Fh z^`SIAj$p-#aiu1VE5PDf*%SMGKbH%zf;hc#Q1``ReRA(W8kmgAPg5V2S5Q1LJL^jS zY15`TQ=WXPI4v#hJK*Bh80DVr?Af#0gP(7nf9m9^7yWeC!{_~%KW^ZU>lBEMRHH$L zXtA`Y%!KqTa7!8!>4$SMQWWSj#l&SzHBp8Zu+Y>1$aAwBlTB=lGr7S<5v?tg=?MHEY&5 z*Khbs&aJXWOL;|8j~h2Cd?LaW3JGSv;$i|p3_KRa2wMeBXjAZ)CFcMIu>6TLuE-Aa za42KyiVB0zv3u~90xc}dV+ok(hltI}V#RWR#CMM5vPfO*D$F2-!XrFr(BJ?H^sA@b zE4lIc`Q=a6*BSa>xODzvs{!M#^zOTB?Qg&Rmz)b1vYW15Gj^}7tMQGELg4Vm%~(D( z;e))-LUCi4#7Xvd*R&AFId>ztX>R){gJkuvAXan|bvxea9{rmP`C3d)MBo;R;{NROVi25!68VRLi)CC;STG1tTX7==k5X@3ucNKo3hBgY8yOq@ zsscLnIv(FO_#d-p%*=l9p@%B(3-CMdeAesi*$ab1{VKf@V|*~@g=fM)Wu~fxRT4}Z zT%{x|jzA+;OqhNQNTeKqhA*=43>L`^8$MfTDU_$0(3yKc8GMaU5+A~M%+sA*jygeW zeAF51DCc4$9X;MaU!Ad%Rv%jz8WO&K^uT_bdi6@aFmmKbbLuA>aW7YH5Ib%8^VN|r zy2*A!VxJ_1VxxF=1d+M25>XleS?la;oHh`_U1D=h3<1SS0A&gbQ?a>P(iP9EMFeM% z7!M%Dr=Tsfg^%N2GM+4Ak+HVHN%;j0l)COFXzPWETIek|Z~ZGXr%yjNea@UxFpTN* zy~ej~Q`@%TDaxPvNhgneOg6I2kE~1%Wjr_FVx4L;mkik#l(>!T!q|-;%Y$ z8|cV>inAC1pG;F&RGhA`r+W1jLs^Mb* zAn3`nBUD=)kVJZ7x!4UL244$@6xWE9!vPLsps$G3*sn5J>EIVeN;}d>HI2b)ctm_| z&&2MZ3>`Wc+fXAc3XT7GYZKt*%U|&Q=BuM|K|VDddndV*pFgiR*$|;wHnsw2$N>ga zbOj{7IZiTVncg_1a*4@65P(FQLXm+P0s6aSl?2TZoE!*N@M*@*Df6f$k3V>Q8BGX@YKJMwm6V9k z?3Vz+718Z_8ve;3RXjA~2u`F2SYG{PE91JBAcg6W*q6AN5o2(Cz$y#S>pVQ0yuAD_ z%%4C1ON@aiKZ)+|&dv>3v-O-rbDcBh?Y=E9Rh03UKko{P0Koe|cIa_>AL|(S2 z-GsD>HC$c`6TP@6U&J7>A>gUJu4QXP9|p)JXUnt@-?)NP?HqgT9HDT{Qs%OvcKHwQF>VR-eV{W1#VC%xlsB}cp!2-8T6PeFU zYZwu`0L(y~SbKJI`oV@+!1-KIoqb$bo~tRaf~gG!b?kt*cy!HJ3pd5Ox%tQPZQI&f z1(>aClkB}Z1X$zy^>N30Qws7fF6Bi!e*VLypu#g6faSQsqcUZ=QsQYH9*jA8GQbfU zly_hmh@S`Ziltco#aS^Q7Av1PhEI{6#FWwl!+64--N`>dPvN0Dii`+K@bmLaY%5sq z-zvaIj+}|8uc>(|P~Rj+MX~^h$Z)03&lb64O(p}^?| z#;0bp1Fs^%;;Q@J?2W?;lt@Xxo&gA zs6XBc3kzX7Yf@d^t>mt;5_JrKMeV%U20%hkNX*ZkIOwpz44RK)wUQ~yfrdfLSS6{c zbJF&GO|)R?Eqe3aN-WPf$d0L<6V~G?o>=15>M=x%dvf6BLIi0~gE_ZO??w@kJ|Kxv z{pQ38KHKKj;(&L*E+!_}|Jv33M;dDKADuMTgF>;8$LmwBSBhXkPA>q+QCG~AUF=pV+Ig591*JY}=0%ex_i`Nt_-tp1p`%Zi$5YLhr z4wh~J1kZXP4~Ag5U_~5+puD__0}#%EXTaZ{YoK@DtDto|98_zG%o{R%-0G)iOyAsO zvM6V>$|8@SD3Lw!>?tWUL5&t#OB zSC#YKTibp#52tQR4LE)HEstXKo=yt%;r!p^ZFTthA{$^@eeVkEwnFY|VGN|C?c6%B z_{POQgm~Wwnl?Fr0{q~&qC(;*%0sX)*yk6ixWV}K^>+IDn;Ke`T2EP5yEvm0hwM!3 z)^*;epKjfL;>4*stR@QIJAC-CY1_74neg6P8@Y8mb*9As`ZWU{?CG#9!;=h->Kx^n zQBW`s4}~gPJcn+^i)wYg;obo;l~GZ#C$SpygGmC5bEkG!3%~#VAAPIJiu-G;^~=8CebV>9#t$QshgWIuFblGOEYQv11?oY`}m4 z4XakI`N92@l9C$L{QPwvg?XJk^tt`Tljm}uFx2E}e?32j2J{al1#y9wcg3WK^E{qJ zNN}0XUHtK?(=AQ)^nKsPF5gQg8>2CMGf>e#p>Cu}haNy?7UV zKRA3xO27T~%f6+hrH|AY@}HdWh_`lNKR-|mv;~93l8T_Siq{_;bmX{+-d|Tw85aZ0 zQLzu6dT8{>-_L()#zzB3KT-<%vbe2kM~-}L{PWvyTyko3?w2kb6LPW(-8u%!6dHzS zS}16Esx2}eB;l2f;!>MbR_>{_*>$KjWP85yVBN9l9t z)@X{$3W6o7?>`(%ok6HyEzKrUcyUaJS9$T0=U2xYY0dg_DyryM*CjS-T|#u^d#^2j zv-n>0ZH)@Xj2UwiN?$zpnHi_DGTmPLdumA^3-0;!(^2A$cqgYV6ga`1FoEf;1}HvV zqK>Ux>CVeItr`CZly-OT6l1J1zD&-7uFuU3k$m*Xxmc#*N-8_Ej#j6Z(}rDkdu2oD ziP*TLC2zj4XkE&jIhAdp@4W=$vCf{)F0h&!OKTgQv8PVo2&=C%QFL@5d3x!Q{=hU$ zK?|-m>x+skRpnLH=@}Urt$KR+y`XjI&>{Vi0|y>xHdPPm+sh$!3U5ZFw2`6APU-0; z+OPxvN+U-UC-&;Le$<#j>z;Vx*}~0Rx86(s`#R6L8kXKis+;Y^H*T+O-}CJNV`UD_ zoZX!|M|U7E9|SKyL~yw|1aBK)`bNgq+~|9N)6>&K3U6G0*xR$R!-NSK121%*`l^}! zv7v@8UiEeK>OUsEd#~<)iH{%u)wppYy0+#X_uYqG1fUQ4`s$qD26;b!I`hV#|+v#X59E!*vE(#-ZzN0Uf2TS;HFJ~J88AZ^DkdHzi7p~7lYIqKI7F6g#o)q+p&jX;8`t%!Hv9vJ%FQ^Fq= zBJI-;{1-2r^TP0c-K+r^B`Q3?F?8sF?B|}F|5!~;4gTfg=hHHe9rJtjg_nOfY|sNY zqC)k~q$qE7*3&6R7cXAatu;~#N>?}5d*cCA3@JKod}7b)sOaeJPtTtH@q`Hz&aGLq zx;5kcWPSRK99auS{&n`$QD3U&s3myDHMz!6ZUxu@y5916U1MX>zk1w#?|%SF#QhiEG_RBZ O0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuS>q$gGRCoc^S_ya*Ro1;#y(OK5 z>{kW~;dAOxZT z!@h-00wEy~vUHN}^ip%q3+ntMC=e3$L8rT3Ro8p>+;h*p?^SE^D`=aSy%)4D>+p`s zDrbCJmv$*bet*yYU%|BMX9|XKEad)icV#9t3^ZCK1sanc9+&$~W@cjjj4ooTuYoQ# zPEk?mq^)1B8#(EbM$)s3MKU%Og*n8wXu}s9@-FqAYuT?~%bQ)vy$r+9X3l)=rp!%S z|8)2717!551WCWOp#(Q55@%`26F6TlbE}s@E)L8FQ}*^9uQf|74gJ#tt;FZ_NK{y$ z+}txr_V3M1nL732-@4YlzZd{xCoD`jSD2mf=mSY&HhkiCo5klfN%yoc2@7__B_zB& z@>&~vvHSfZ0IXfRHom;@)cUm4>d+h71;Kb-8Simx5+Cm;(NRvziWN&6)khfoA^_y% zWKD9E?QPuemPj!{hBa~H-6NXMD}DhYty*g0Z?!#}x$a*v7xUV+?5lSGHg5dvx*gjx zhxhDak~Yml#N%>{?sFm?Rf=X*inyw!U7HB`_Sin#l9j6(UrS>zcCUH`z%aI1zFfcV zd8>9ba>Vc`v6>v9ewB#f1PiJ}mkRM!S4y*{e$u?DzvP|BpK`HDU(3FF1z_pYeVspD zyJAT9_HIdt^@!ms7u|4(_$u&niU9_AJub1BozkwgzwFt&EAs2FGwL)9>J0!0nrXp; zMU(B;LQ6Vg-&0&EWXbj=1JRd=mk z04OcZ3;T3U#?vvO#oD0X1%vigV$w9xbPEjkiQz7T_aTOs05O^EIH!v}NR#dz?9wGQ zb&6r++Ug2|ItPFy@AJ>UcyCGZ@um|WybiR6%?1`B$bY(KQ6Ok0FhS?C1bt=;&H)_F zEjRUvk@H1|5?*>~F=C`{TAc$hd-jV_+rP^G%Z*(`(r*cqYL5w&x5FA8#^cTF1N#90 zLI9*-2m0~BZAg=*R*8wQg@gy&r}0c(v^odi{JDy!#Cytr)bPfjel;9zf`<|7Iy8VO z5bv6R2?`B*o@RQ*>vl_ch)+U-s~@}ry<FE2L0HC122>AP3Zw=gsyW;JgC!v3WqDb%5h8v^=~3Ji%Z;2P@XZ)q6f71xvOjPKRj(H<8hvD z$Ff)qtP4;LiX|F?=|FMhl_pIr^7a1WW`+^c4JX&*b09dnfQIDmImn07wIB@d5 zJv)OB?AjLDFx(^EI{L}5!HJTJ*eA8kW*fX}f$=a9O*0|w3ADh=W4xFFbQF6$kKG}a z4m@Qwx?u4`2pAF^q*5%w!;`A7F9{`IX{Q3VAjpWL>6&j7dUoHZuARBrAO zDqY$INSii(5)%ui!s9-y^+l;X4YY&hI7W=~AF}~0S0R8-C5##vBA~zM{U#s@=HHHVz9ajA0*7p4Xkr{Pp@9-+e1u)eRMIJ>y%0XB#owld~nq{{zf z2nGE@9fp*r#E{1*gw#1!hXe)3h7TYBB;9IJi=|4ZTQWABmyZ@ZrL?-4BqUw`ai3ed zy)bOpy}L9ON0*Pq_W%?X9dG#Bj5mJ&#ip;O9Xp&G7!y(@H+K(^Ap^ptWwQo&U||-s zR)reH4b6fFv08&gc;_wnqMHE*08pNV;S@NkzWC6G=Nt$Q1&BeRgR%6q`a1j7i^hXF zTqd(RBmgEqoU0K~hK+&Mq9z^%NU_6^&(=9)$x1`YJ#mi4O@qY*R? zAYk(9GjPx_K_wfsjFlY$;6?}2A96o)JoSNIWj0`=L4*(P^P+H}u`rC@!T~117eK*eS+(({*7b~iTEv1! z4IhNR*zv(J_QGH!z+n-@H?T-Y*-J1Cq(;q*&>*-30MPu9F?er=2p^yTNUi3)7wpg> zn&tqjoIF`AfBjpLe3hd~O51Lq_8T$&zJ9%W<^NPzXk+glzB%{k@or}d^Q2=7m-M|U zP|`Yuq67^Po0WsXT;^*Gssj<$=nPdKYj!14w1;ZI$?*lN@L3s-Tuws`#Jdlf!0@_M ziK_razYcGz5CU478R1|G1R$h7?#+xrZ+{O4?yVXj!F)Itnx>Z4!I+6vELMPwy@kC8 z9C*m;l!M0-&bdu-v)Z>$T|0jK_{|ps!t~9~J@ZYz>a4)9=*>=FLi3C*<$i0{7FhP~ zIVFB@Mr4E)4=W6qL_y==@Rq9AF=-&aywXXPdY1-=LtNypJpm5mPyj`ZI zjmo5NFF$Nk+oW+KS%Haw_812fA&v2Yu}PO}@F@N%X3!W`bDTKnPZ3nw!RS#T#P6ez zaYkb_JQAY8SPQ78N@VnNw}=3%Yp59ngjociRQ&*e5duuVKJ+X7Q6YuxHO#f}tXI~p zIWJ#q!M!Zk7dCF%>V=0UKKw!0h5CWB{ZX4T#n4BMI^Jx-f(1SH?am&v{p&3)?B>#t zl;(zv9uXn!Q!HZh^T#3w`5Df_{;5x6~of|@C3Dg)Gr3==X${l_)j z_xw)%0V+d*4Ou{eN+u8>kewSQng%u@Y?Mae91YjZ039L0fW!rOp+>V&Iz4;ACkGj91~q;t0YCE#TypXW?B9o1kis01SfLY7FLf8H`X2 z!gpzt3I*00&<54P2a9Y3A4M20z(-Jn{Tx?E_99cjBEt-E_iJbzKV+)-%QI^N_aD_{ z=$&ISE(-vTk%3M7kPZI`eC6HcH=fKdoO5XZ&ahTZ40-JS80pssY;aN&Fb}3dildKZ zEoMgVC<91e#yG{3v}X;#EJ8JB!?n}}C3=i=0ED%GAzU_-DY!X+q;4=Q08LFF*~M{K zSTVgqw7pn&XsA%lR_GS`&KB!(JkKXPc9lzZwp)segC)PvvFo1EWA|ai%WJ)B@(vdu z%hs*?SNDwd>&DOf*YZE@Jya$AkU1FIH9`sMQY3L?fE6_pg~3WF0TSLByJSdBErCmw z0b~%@6Q~p5Jwr7j!P5@-Y3306oAq7H>XTJyTLYk$xsy-+m&E;;gkAe$8 z%vMs}EN4)+6c$!V?oqE~X1S%LGD-qM+8oa-bk6MAv-^RG6DO=)xKQ-r!>QUow5tMO z%a%3Ck39V7_HJ#98oV;KCG-lrIHWaSYJ-#Uh~T3xa7pVukA6G^g(p?shxb&4sII{! z2nCG*FmtG^!8D4?RYt%kl_KF~Y69-Bv%o{)R9bG5+}twB-d!QL&zw>Oxx#JD)y1fZ(La7XAnh|rPJ4K6=gvB@} z2rOy<5RGH}(u1%`9jjbM8bG<(M}^0CRn5*$CE|#FiRV~|e$ieg1*M<$g?bPr3_x}nvy{tx{uc*EE-rLP*y!6KAyVA=d{`^Fu zxGSOPh-)ra6#(!gS9YXzO-w7E<5*cuh;TiIWJ=@c1Oa;pHL0=+%%Dip+Ymtrq2Vn9 zAOHq{;8_WZGMl_HD^K2@?e4KP&Yhq%;0b#&Ien2sofDz)JaK%fVN!1YX1s1pc= z##Bg+;4=giHhex{=v*w}v%zA=B;^&=l9JM??BgYiCu*Ag)D_zN|1Kv-FS{*Uwk+o0 z!6OfMO%;icF+=!Jkbt(T_+hGI$$BBJsXac10}W<+qJ1=&?<|(c5U%-Qn8Ct{MpFIN z0t*+h0>pK?+GJsNz#;F0u(H_v<$Q7J5v+l)*yHL(|MBOF81Tgx>!+VRz2Evj4>!bP zE_g;6NTEYxjGH(;7)7z;gAG;F!*k38G!AxM_(N;(8P~!nwfDsZml8tsGe)?OLMRyw z6}1Y)yBFt>MFIk?;;1YyJnO<%R4vqJG&$`Xg2~ zEJ&15^ezoyV_t?@vrgw{DnGr5roHOf(XG<^8&QDV~>_lVsK#;UynE^0VwR&1&i z1u$d<1kHy{3y&A8JydHZY-^dURwM+{fuLXtj0j?euA1d9ji3MN>%pdlLw2JEFKFeFrsk2M9Dq1i$) z2H2%aUF=ZdoPRK2HF@Re(X$t*cJ&zitOjspxH;>YCrZvA3mh^aPV9bOaaTjFq4H|< z3o*>vo1XN+L)_12*qiNmA`D`z`OG2nmzBxx{VqJ@G~-ub7Fn?3xJ>**m^?T>TI@Ce zNCGjO%%lM;LKbZ3C#V!s(gR>pI#`wa+cb#{x0sIQU%m1C=Fc+Vp@;J0)~?$$Ffzo2 z-|pG*1s{qYP689ci!}g|@L@9oDh0z4zo-dHt6Z{r^=Y~9kB8)uXV1%y1JT9)_Ga%t z_UL2NpL=@J)Yyd9N2dO@Odgr^t(?IML$_gZ4Dfsm2{TeEcs7?D>20ZobwSK(MYvGn*47fA{Ffm(?9=)Fm4=cCcHl!_9>Ckl; zt>JO?zTM^W;k=Ww=a3UGvovbbA^+Cf+OHUJd;bsn^y!;BJWd7y>=HbZIwzlJmWs<4EfL|#yKm?exp>ji71J?4FN~pdUsW41YTWyuESjgk^Ea6> z{>d++PM!A1n0ulT@?2^oxgtBL%z$FbL{^{@Ei5~CRb&0nRrm|hyEyYQV6KAG%?zXZ2?ftj$7H_=u_aE+bjXn(+FlbY5Zf>t>FHBwZ{_^z$ zPZb=JKR=!<@o`9z_|cTcBFSQsfFNvp^G8>8)t~{EoScl1xwB^tn?8MdXi-rSpKsM$ zGxGBMAAkIjC5Z{KM&B-h#?Eye4fm;TMs;3$!zk}+%zCMXarfX}8|rOBzr;X>k#B$D zg~=bcZgHJ)Q|CYC@T+FPcZOZ3UFQN5o;h?lFJtqU^1=NR_CzNq`auZWv~$@k zopIgz@2Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91E&u=k0AN##oB#k3DoI2^RA>dwS_ybmRhB;Q)vHvc zvQ|Pug+SOL5NVOf(uiOfK|#<40R@+4gti$G`4pJO9zkdrXoyaOIwDSssGo`fdZgKx zu!s#EKp;dB2#YKM5=cnMQhUAm|69;H8q{&D=*3s>)vbH)JLf;={O8;oHHlDLvGkR! z3uRYciiuB{@YuMg4oB!UKhI@NbDQzNeK~KXIit<4oiopm9sTIs!otGTpQE%|B!n`} z^7y-Q`fs&qr?Lm$lP()JR*Nn6<`eDOcY1u*+*vy{P4h?My+344{fA8Yt~r{Pd^NpE zlaJc9iI;I>8_7%aT+$--VC#>zuFQXO+?ZDi3brJF*BTA=dqe=B@L8R1mCIK}ydIxq zG!dEed~11rl0!}$T>bd0XQzKQ?vder&28I^hEnuK?}-=y0nHGP&kzmwPzbLN1*C7^ zM0tNn2N`&KS>wX}TQ~HZHu>ET-hHk2jfDFl{ibQ!-kkBK9dqq-r%$|p)ZlJU&zttt zxLvz;Mc21pL^yyinm>O|pKa?GZ+bb`8Pz&HN`iqX5xmV5s~CX2;P02@kFQ*i^H*H% zuHA2+I(zP-x1CO{vOXc}>w}^e^cx#C{Ix~th4P+<3J)0XFMD5l_v|_>+;5XW%AkaWM6jozIo#x zdi2RqcD85P>}ffhHy7w_S~a_^s;XjONy*uS#2Brm7Oap~Eke?|rB&LtPLK{Aof7K^ zNMn~(#A+9RC_$`_IGOqT0y$Tfou9jO@i3=WzjsB9geoe;G_28QygoBaH26G}4uw3T z({aHGng$3=uiz$~Gh^k&KeUkb`Q=f6etY@DBe&&e2Ls;fq(nSu?9WygiB`qyZ>`+odCOj&LMZE~KkeER~l=sM*6=&t|d(G2B?#{j+%2#1Py)9w@ z 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 AWB>pF literal 0 HcmV?d00001 diff --git a/website/public/stars/island-22.png b/website/public/stars/island-22.png new file mode 100644 index 0000000000000000000000000000000000000000..dd70ae3aa2d269f1f4bbca881f42fa44ce26180c GIT binary patch literal 5889 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 X6?X-Yvv94V00000NkvXXu0mjf^sPpb literal 0 HcmV?d00001 diff --git a/website/public/stars/island-23.png b/website/public/stars/island-23.png new file mode 100644 index 0000000000000000000000000000000000000000..be8cf7c7b95ee8608928cbefcfc299cad9fb4ad5 GIT binary patch literal 6781 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 literal 0 HcmV?d00001 diff --git a/website/public/stars/island-25.png b/website/public/stars/island-25.png new file mode 100644 index 0000000000000000000000000000000000000000..6458a64740602d99abdfb27d088cd73584422f23 GIT binary patch literal 4896 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 Ef-0jAh5!Hn literal 0 HcmV?d00001 diff --git a/website/src/components/benchmarks/BenchmarkChart.tsx b/website/src/components/benchmarks/BenchmarkChart.tsx new file mode 100644 index 00000000..e2d066d1 --- /dev/null +++ b/website/src/components/benchmarks/BenchmarkChart.tsx @@ -0,0 +1,376 @@ +import {useState, useEffect, useMemo, useRef, useCallback, type JSX} from 'react'; +import {SERIES_COLORS, median, getSeriesValues, type SeriesMeta, type Scenario, type Project, type Incident, type BenchPoint} from './BenchmarksDashboard'; +import type {HoverInfo} from './BenchmarkTooltip'; +import type {VersionEntry} from './useVersions'; + +const ML = 30, MR = 6, MT = 8, MB = 18; + +const GITHUB_REPOS: Record = { + npm: {repo: `npm/cli`, tagPrefix: `v`}, + pnpm: {repo: `pnpm/pnpm`, tagPrefix: `v`}, + classic: {repo: `yarnpkg/yarn`, tagPrefix: `v`}, + yarn: {repo: `yarnpkg/berry`, tagPrefix: `@yarnpkg/cli/`}, +}; + +interface Props { + scenario: Scenario; + project: Project; + data: Record>; + seriesOrder: readonly string[]; + seriesMeta: Record; + mutedSeries: Record; + incidents: Array; + versions: Record> | null; + showVersions: boolean; + hoveredIndex: number | null; + onHover: (info: HoverInfo | null | ((prev: HoverInfo | null) => HoverInfo | null)) => void; +} + +export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta, mutedSeries, incidents, versions, showVersions, hoveredIndex, onHover}: Props): JSX.Element { + const svgRef = useRef(null); + const containerRef = useRef(null); + const [size, setSize] = useState<{w: number; h: number} | null>(null); + + useEffect(() => { + const el = containerRef.current; + if (!el) return; + const ro = new ResizeObserver(entries => { + const {width, height} = entries[0].contentRect; + setSize({w: width, h: height}); + }); + ro.observe(el); + return () => ro.disconnect(); + }, []); + + const chartData = useMemo(() => { + if (!size) return null; + + const {w, h} = size; + const pw = w - ML - MR; + const ph = h - MT - MB; + if (pw <= 0 || ph <= 0) return null; + + const visible = seriesOrder.filter(s => !mutedSeries[s]); + const allVals: number[] = []; + for (const sid of visible) { + const vals = getSeriesValues(data, sid); + for (const v of vals) + if (v !== null) allVals.push(v); + } + + if (!allVals.length) return null; + + const yMin = 0; + let yMax = Math.max(...allVals); + const pad = yMax * 0.12 || 0.1; + yMax = yMax + pad; + + const points = data[seriesOrder[0]]; + const N = points?.length ?? 0; + if (!N) return null; + + const xScale = (i: number) => ML + (i / (N - 1)) * pw; + const yScale = (v: number) => MT + ph - ((v - yMin) / (yMax - yMin)) * ph; + + const incidentSet: Record = {}; + const incidentRanges: Array<{start: number; end: number; label: string}> = []; + + for (const inc of incidents) { + let iStart = -1, iEnd = -1; + for (let ip = 0; ip < N; ip++) { + const ts = points[ip].timestamp; + if (ts >= inc.start && iStart === -1) iStart = ip; + if (ts <= inc.end) iEnd = ip; + } + if (iStart === -1 || iEnd === -1 || iEnd < iStart) continue; + incidentRanges.push({start: iStart, end: iEnd, label: inc.label}); + for (let ik = iStart; ik <= iEnd; ik++) incidentSet[ik] = true; + } + + const drawOrder = seriesOrder.filter(s => s !== `zpm`).concat(`zpm`); + + const paths: Array<{id: string; d: string; cls: string; color: string}> = []; + for (const sid of drawOrder) { + if (mutedSeries[sid]) continue; + const seriesPoints = data[sid]; + if (!seriesPoints) continue; + + let pathD = ``; + let prevWasNull = true; + for (let pi = 0; pi < seriesPoints.length; pi++) { + const sv = seriesPoints[pi].value; + if (sv === null || incidentSet[pi]) {prevWasNull = true; continue;} + const px = xScale(pi), py = yScale(sv); + pathD += (prevWasNull ? `M` : `L`) + px.toFixed(2) + `,` + py.toFixed(2); + prevWasNull = false; + } + if (!pathD) continue; + + const meta = seriesMeta[sid]; + const cls = `series-line${meta.dashed ? ` dashed` : ``}${meta.accent ? ` highlight` : ``}`; + paths.push({id: sid, d: pathD, cls, color: SERIES_COLORS[sid]}); + } + + let band: {x: number; y: number; w: number; h: number} | null = null; + if (!mutedSeries[`zpm`]) { + const zpmVals = getSeriesValues(data, `zpm`); + const zpmMed = median(zpmVals); + const top = yScale(zpmMed * 1.08); + const bot = yScale(zpmMed * 0.92); + if (bot > top) band = {x: ML, y: top, w: pw, h: bot - top}; + } + + const versionDots: Array<{cx: number; cy: number; r: number; color: string; cls: string; url: string | null}> = []; + if (showVersions && versions) { + for (const sid of drawOrder) { + if (mutedSeries[sid]) continue; + const vers = versions[sid] ?? []; + const seriesP = data[sid]; + if (!seriesP || !vers.length) continue; + + for (let vi = 0; vi < vers.length; vi++) { + const ver = vers[vi]; + let bestIdx = 0, bestDist = Infinity; + for (let vp = 0; vp < N; vp++) { + const dist = Math.abs(points[vp].timestamp - ver.t); + if (dist < bestDist) {bestDist = dist; bestIdx = vp;} + } + if (incidentSet[bestIdx]) continue; + const sv = seriesP[bestIdx]?.value; + if (sv === null || sv === undefined) continue; + + const gh = GITHUB_REPOS[sid]; + let url: string | null = null; + if (gh) { + if (vi > 0) { + url = `https://github.com/${gh.repo}/compare/${gh.tagPrefix}${vers[vi - 1].v}...${gh.tagPrefix}${ver.v}`; + } else { + url = `https://github.com/${gh.repo}/releases/tag/${gh.tagPrefix}${ver.v}`; + } + } + + versionDots.push({ + cx: xScale(bestIdx), + cy: yScale(sv), + r: seriesMeta[sid].accent ? 4 : 3, + color: SERIES_COLORS[sid], + cls: `version-dot`, + url, + }); + } + } + } + + const yTicks = [yMin, (yMin + yMax) / 2, yMax].map(v => ({ + value: v, + label: (v < 1 ? v.toFixed(2) : v < 10 ? v.toFixed(1) : Math.round(v).toString()) + `s`, + pct: (yScale(v) / h * 100), + })); + + const dateIndices = [0, Math.floor(N / 4), Math.floor(N / 2), Math.floor(3 * N / 4), N - 1]; + const xLabels = dateIndices.map(idx => { + const ts = points[idx].timestamp; + const d = new Date(ts * 1000); + return { + label: `${d.getMonth() + 1}/${d.getDate()}`, + pct: (xScale(idx) / w * 100), + }; + }); + + return { + w, h, pw, ph, + yMin, yMax, N, points, xScale, yScale, + incidentSet, incidentRanges, + paths, band, versionDots, + yTicks, xLabels, + drawOrder, + }; + }, [data, seriesOrder, seriesMeta, mutedSeries, incidents, versions, showVersions, size]); + + const zpmValues = useMemo(() => getSeriesValues(data, `zpm`), [data]); + const zpmMedian = useMemo(() => median(zpmValues), [zpmValues]); + + const pill = useMemo(() => { + if (zpmMedian <= 0) return null; + + const medians: Array<{id: string; m: number}> = []; + for (const sid of seriesOrder) { + if (mutedSeries[sid]) continue; + const m = median(getSeriesValues(data, sid)); + if (m > 0) medians.push({id: sid, m}); + } + + const others = medians.filter(x => x.id !== `zpm`); + const bestOther = others.length + ? others.reduce((min, x) => x.m < min.m ? x : min, others[0]) + : null; + + if (!bestOther) return {cls: `fastest`, text: `Only runner`}; + + const pctDiff = Math.round((bestOther.m / zpmMedian - 1) * 100); + if (pctDiff > 0) return {cls: `fastest`, text: `Yarn is ${pctDiff}% faster`}; + if (pctDiff === 0) return {cls: `contested`, text: `Tied`}; + const cls = -pctDiff <= 10 ? `contested` : `slower`; + return {cls, text: `Yarn is ${-pctDiff}% slower`}; + }, [data, seriesOrder, seriesMeta, mutedSeries, zpmMedian]); + + const prevIdxRef = useRef(null); + + const handleMouseMove = useCallback((e: React.MouseEvent) => { + if (!chartData || !svgRef.current) return; + const rect = svgRef.current.getBoundingClientRect(); + const sx = e.clientX - rect.left; + + if (sx < ML || sx > chartData.w - MR) { + prevIdxRef.current = null; + onHover(null); + return; + } + + const tFrac = (sx - ML) / chartData.pw; + const idx = Math.max(0, Math.min(chartData.N - 1, Math.round(tFrac * (chartData.N - 1)))); + + if (idx === prevIdxRef.current) { + onHover(prev => prev ? {...prev, mouseX: e.clientX, mouseY: e.clientY, index: idx} : prev); + return; + } + prevIdxRef.current = idx; + + const ts = chartData.points[idx].timestamp; + const d = new Date(ts * 1000); + const dateStr = d.toISOString().slice(0, 10); + const inIncident = !!chartData.incidentSet[idx]; + + if (inIncident) { + let incLabel = ``; + for (const ir of chartData.incidentRanges) { + if (idx >= ir.start && idx <= ir.end) {incLabel = ir.label; break;} + } + onHover({ + mouseX: e.clientX, mouseY: e.clientY, index: idx, + dateStr, scenarioTitle: scenario.title, projectName: project.name, + isIncident: true, incidentLabel: incLabel, + rows: [], versionMap: null, showVersions, seriesMeta, + }); + return; + } + + const rows: Array<{id: string; value: number}> = []; + for (const sid of seriesOrder) { + if (mutedSeries[sid]) continue; + const sp = data[sid]; + if (!sp?.[idx] || sp[idx].value === null) continue; + rows.push({id: sid, value: sp[idx].value!}); + } + rows.sort((a, b) => a.value - b.value); + + let versionMap: Record | null = null; + if (showVersions && versions) { + versionMap = {}; + for (const sid of seriesOrder) { + const vers = versions[sid]; + if (!vers?.length) continue; + for (let i = vers.length - 1; i >= 0; i--) { + if (vers[i].t <= ts) {versionMap[sid] = vers[i].v; break;} + } + } + } + + onHover({ + mouseX: e.clientX, mouseY: e.clientY, index: idx, + dateStr, scenarioTitle: scenario.title, projectName: project.name, + isIncident: false, + rows, versionMap, showVersions, seriesMeta, + }); + }, [chartData, data, seriesOrder, seriesMeta, mutedSeries, scenario, project, versions, showVersions, onHover]); + + const handleMouseLeave = useCallback(() => { + prevIdxRef.current = null; + onHover(null); + }, [onHover]); + + if (!chartData) { + return ( +

    +
    + {size ? `No data` : ``} +
    +
    +
    + ); + } + + const gridY = [0.25, 0.5, 0.75]; + + return ( +
    +
    + zpm median {zpmMedian.toFixed(2)}s + {pill && {pill.text}} +
    +
    + + {gridY.map(f => { + const gy = MT + f * chartData.ph; + return ; + })} + + + + + {chartData.incidentRanges.map((ir, i) => { + const ix1 = chartData.xScale(ir.start); + const ix2 = chartData.xScale(ir.end); + const iw = Math.max(ix2 - ix1, 2); + return ( + + + + + ); + })} + + {chartData.band && ( + + )} + + {chartData.paths.map(p => ( + + ))} + + {chartData.versionDots.map((dot, i) => + dot.url ? ( + + + + ) : ( + + ), + )} + + {hoveredIndex !== null && hoveredIndex < chartData.N && ( + + )} + + + {chartData.yTicks.map((tick, i) => ( + + {tick.label} + + ))} + + {chartData.xLabels.map((lbl, i) => ( + + {lbl.label} + + ))} +
    +
    + ); +} diff --git a/website/src/components/benchmarks/BenchmarkSummary.tsx b/website/src/components/benchmarks/BenchmarkSummary.tsx new file mode 100644 index 00000000..79ad917a --- /dev/null +++ b/website/src/components/benchmarks/BenchmarkSummary.tsx @@ -0,0 +1,115 @@ +import {useMemo, type JSX} from 'react'; +import {SERIES_COLORS, median, getSeriesValues, type SeriesMeta, type Project, type BenchPoint} from './BenchmarksDashboard'; + +interface Props { + data: Record>>>; + seriesOrder: readonly string[]; + seriesMeta: Record; + projects: Array; + mutedSeries: Record; +} + +function aggregate( + scenarioId: string, + data: Props[`data`], + seriesOrder: readonly string[], + seriesMeta: Record, + projects: Array, + mutedSeries: Record, +) { + const validProjects: Array<{id: string; max: number}> = []; + for (const p of projects) { + let mx = 0; + let contributors = 0; + for (const sid of seriesOrder) { + if (mutedSeries[sid]) continue; + const projectData = data[scenarioId]?.[p.id]; + if (!projectData) continue; + const m = median(getSeriesValues(projectData, sid)); + if (m > 0) {contributors++; if (m > mx) mx = m;} + } + if (contributors >= 2) validProjects.push({id: p.id, max: mx}); + } + + const out: Array<{id: string; name: string; normalized: number; color: string; accent: boolean}> = []; + for (const sid of seriesOrder) { + if (mutedSeries[sid]) continue; + let prod = 1; + let count = 0; + for (const vp of validProjects) { + const projectData = data[scenarioId]?.[vp.id]; + if (!projectData) continue; + const m = median(getSeriesValues(projectData, sid)); + if (m > 0 && vp.max > 0) { + prod *= (m / vp.max); + count++; + } + } + if (count > 0) { + out.push({ + id: sid, + name: seriesMeta[sid].name, + normalized: Math.pow(prod, 1 / count), + color: SERIES_COLORS[sid], + accent: seriesMeta[sid].accent, + }); + } + } + + out.sort((a, b) => a.normalized - b.normalized); + return out; +} + +function SummaryCard({title, agg}: {title: string; agg: ReturnType}): JSX.Element { + const max = Math.max(...agg.map(a => a.normalized)); + + return ( +
    +

    {title}

    +
    + {agg.map(a => ( +
    +
    {a.name}
    +
    +
    +
    +
    {a.normalized.toFixed(2)}×
    +
    + ))} +
    +
    + ); +} + +export function BenchmarkSummary({data, seriesOrder, seriesMeta, projects, mutedSeries}: Props): JSX.Element { + const coldAgg = useMemo( + () => aggregate(`install-full-cold`, data, seriesOrder, seriesMeta, projects, mutedSeries), + [data, seriesOrder, seriesMeta, projects, mutedSeries], + ); + const warmAgg = useMemo( + () => aggregate(`install-cache-and-lock`, data, seriesOrder, seriesMeta, projects, mutedSeries), + [data, seriesOrder, seriesMeta, projects, mutedSeries], + ); + + return ( + <> +
    +
    § Aggregate
    +

    Median across all scenarios.

    +

    + Geometric mean of cell medians, normalized to the slowest in each row so the chart compares relative performance across scenarios of different absolute scale. Lower is faster. +

    +
    +
    + + +
    + + ); +} diff --git a/website/src/components/benchmarks/BenchmarkTooltip.tsx b/website/src/components/benchmarks/BenchmarkTooltip.tsx new file mode 100644 index 00000000..1db51bee --- /dev/null +++ b/website/src/components/benchmarks/BenchmarkTooltip.tsx @@ -0,0 +1,73 @@ +import {useRef, useLayoutEffect, type JSX} from 'react'; +import {SERIES_COLORS, type SeriesMeta} from './BenchmarksDashboard'; + +export interface HoverInfo { + mouseX: number; + mouseY: number; + index: number; + dateStr: string; + scenarioTitle: string; + projectName: string; + isIncident: boolean; + incidentLabel?: string; + rows: Array<{id: string; value: number}>; + versionMap: Record | null; + showVersions: boolean; + seriesMeta: Record; +} + +export function BenchmarkTooltip({info}: {info: HoverInfo | null}): JSX.Element | null { + const ref = useRef(null); + + useLayoutEffect(() => { + if (!info || !ref.current) return; + const el = ref.current; + const tw = el.offsetWidth; + const th = el.offsetHeight; + let tx = info.mouseX + 14; + let ty = info.mouseY + 14; + if (tx + tw > window.innerWidth - 12) tx = info.mouseX - tw - 14; + if (ty + th > window.innerHeight - 12) ty = info.mouseY - th - 14; + el.style.left = `${tx}px`; + el.style.top = `${ty}px`; + }); + + if (!info) return null; + + return ( +
    + {info.isIncident ? ( + <> +
    {info.dateStr} · {info.projectName}
    +
    + {info.incidentLabel} +
    + + ) : ( + <> +
    + {info.dateStr} · {info.scenarioTitle} · {info.projectName} +
    + {info.rows.map(r => { + let nameStr = info.seriesMeta[r.id].name; + let verEl: JSX.Element | null = null; + if (info.showVersions) { + if (r.id === `zpm`) { + verEl = main; + } else if (info.versionMap?.[r.id]) { + verEl = v{info.versionMap[r.id]}; + } + } + return ( +
    + + {nameStr}{verEl} + {r.value.toFixed(2)}s +
    + ); + })} + + )} +
    + ); +} diff --git a/website/src/components/benchmarks/BenchmarksDashboard.tsx b/website/src/components/benchmarks/BenchmarksDashboard.tsx new file mode 100644 index 00000000..8855f5b3 --- /dev/null +++ b/website/src/components/benchmarks/BenchmarksDashboard.tsx @@ -0,0 +1,210 @@ +import {useState, useCallback, type JSX} from 'react'; +import {BenchmarkChart} from './BenchmarkChart'; +import {BenchmarkTooltip, type HoverInfo} from './BenchmarkTooltip'; +import {BenchmarkSummary} from './BenchmarkSummary'; +import {useVersions} from './useVersions'; + +export interface BenchPoint { + timestamp: number; + value: number | null; +} + +export interface SeriesMeta { + name: string; + dashed: boolean; + accent: boolean; +} + +export interface Project { + id: string; + name: string; +} + +export interface Scenario { + id: string; + num: string; + title: string; + desc: string; + tag: string; +} + +export interface Incident { + start: number; + end: number; + label: string; +} + +export const SERIES_COLORS: Record = { + zpm: `oklch(0.78 0.16 var(--accent-h))`, + yarn: `oklch(0.65 0.10 var(--accent-h))`, + npm: `oklch(0.70 0.15 25)`, + pnpm: `oklch(0.75 0.13 220)`, + classic: `oklch(0.55 0.08 var(--accent-h))`, +}; + +export function median(arr: Array): number { + const nums = arr.filter((v): v is number => v !== null && v !== undefined); + if (!nums.length) return 0; + nums.sort((a, b) => a - b); + return nums[Math.floor(nums.length / 2)]; +} + +export function getSeriesValues(projectData: Record>, pm: string): Array { + if (!projectData?.[pm]) return []; + return projectData[pm].map(p => p.value); +} + +interface Props { + data: Record>>>; + seriesOrder: readonly string[]; + seriesMeta: Record; + projects: Array; + scenarios: Array; + incidents: Array; + benchMinTs: number; + benchMaxTs: number; +} + +const SWATCH_STYLES: Record = { + zpm: {dashed: false}, + yarn: {dashed: false}, + npm: {dashed: false}, + pnpm: {dashed: false}, + classic: {dashed: true}, +}; + +export function BenchmarksDashboard({data, seriesOrder, seriesMeta, projects, scenarios, incidents, benchMinTs, benchMaxTs}: Props): JSX.Element { + const [mutedSeries, setMutedSeries] = useState>({}); + const [selectedProject, setSelectedProject] = useState(`all`); + const [showVersions, setShowVersions] = useState(false); + const [hoverInfo, setHoverInfo] = useState(null); + + const {versions, loading: versionsLoading} = useVersions(benchMinTs, benchMaxTs, showVersions); + + const visibleProjects = selectedProject === `all` + ? projects + : projects.filter(p => p.id === selectedProject); + + const toggleMute = useCallback((pm: string) => { + setMutedSeries(prev => { + if (prev[pm]) { + const next = {...prev}; + delete next[pm]; + return next; + } + if (Object.keys(prev).length >= seriesOrder.length - 1) return prev; + return {...prev, [pm]: true}; + }); + }, [seriesOrder.length]); + + const handleHover = useCallback((infoOrUpdater: HoverInfo | null | ((prev: HoverInfo | null) => HoverInfo | null)) => { + if (typeof infoOrUpdater === `function`) { + setHoverInfo(infoOrUpdater); + } else { + setHoverInfo(infoOrUpdater); + } + }, []); + + return ( + <> + {/* Sticky controls */} +
    + {/* Project filter */} +
    + Project + {[{id: `all`, name: `All`}, ...projects].map(p => ( + + ))} +
    + + {/* Legend */} +
    + Series + {seriesOrder.map((sid) => { + return ( + + {(sid === `npm` || sid === `classic`) && } + + + ); + })} + + Click to mute · y-axis = seconds + + +
    +
    + + {/* Benchmark grid */} +
    +
    scenario \ project
    + {visibleProjects.map(p => ( +
    + {p.name} +
    + ))} + + {scenarios.map(sc => ( + +
    +
    § {sc.num} · scenario
    +

    {sc.title}

    +

    {sc.desc}

    + {sc.tag} +
    + {visibleProjects.map(p => ( + + ))} +
    + ))} +
    + + {/* Aggregate summary */} + + + {/* Tooltip */} + + + ); +} diff --git a/website/src/components/benchmarks/useVersions.ts b/website/src/components/benchmarks/useVersions.ts new file mode 100644 index 00000000..7413e4ab --- /dev/null +++ b/website/src/components/benchmarks/useVersions.ts @@ -0,0 +1,66 @@ +import {useState, useEffect, useRef} from 'react'; + +export interface VersionEntry { + v: string; + t: number; +} + +const VERSION_PACKAGES: [string, string, string | null][] = [ + [`npm`, `npm`, null], + [`pnpm`, `pnpm`, null], + [`classic`, `yarn`, `1.`], + [`yarn`, `@yarnpkg/cli`, null], +]; + +export function useVersions(benchMinTs: number, benchMaxTs: number, enabled: boolean) { + const [versions, setVersions] = useState> | null>(null); + const [loading, setLoading] = useState(false); + const fetchedRef = useRef(false); + + useEffect(() => { + if (!enabled || fetchedRef.current) + return; + + fetchedRef.current = true; + setLoading(true); + + Promise.all( + VERSION_PACKAGES.map(([pm, pkg, prefix]) => + fetch(`https://registry.npmjs.org/${pkg}`) + .then(r => r.ok ? r.json() : null) + .then(data => { + if (!data?.time) return [pm, []] as const; + const entries: Array = []; + let latestBefore: VersionEntry | null = null; + + for (const v in data.time) { + if (v === `created` || v === `modified`) continue; + if (v.includes(`-`)) continue; + if (prefix && !v.startsWith(prefix)) continue; + + const t = Math.floor(new Date(data.time[v]).getTime() / 1000); + if (t >= benchMinTs && t <= benchMaxTs) { + entries.push({v, t}); + } else if (t < benchMinTs) { + if (!latestBefore || t > latestBefore.t) latestBefore = {v, t}; + } + } + + if (latestBefore) entries.push(latestBefore); + entries.sort((a, b) => a.t - b.t); + return [pm, entries] as const; + }) + .catch(() => [pm, []] as const), + ), + ).then(results => { + const map: Record> = {}; + for (const [pm, entries] of results) + map[pm] = entries; + + setVersions(map); + setLoading(false); + }); + }, [enabled, benchMinTs, benchMaxTs]); + + return {versions, loading}; +} diff --git a/website/src/pages/benchmarks.astro b/website/src/pages/benchmarks.astro index 1e298f2b..19884189 100644 --- a/website/src/pages/benchmarks.astro +++ b/website/src/pages/benchmarks.astro @@ -1,5 +1,6 @@ --- import BaseLayout from '../layouts/BaseLayout.astro'; +import {BenchmarksDashboard} from '../components/benchmarks/BenchmarksDashboard'; import '../styles/theme.css'; import '../styles/docs.css'; @@ -57,9 +58,16 @@ const INCIDENTS = [ @@ -549,8 +571,8 @@ const INCIDENTS = [ Benchmarks
    - -
    + +

    Package manager comparison.

    @@ -561,87 +583,34 @@ const INCIDENTS = [ yarn classic across four install scenarios on three reference projects. Lower is better. Series are wall-clock seconds.

    -
    - Project - - - - -
    -
    - - -
    -
    -
    Last run
    -
    {lastRunDate}
    -
    -
    -
    Runner
    -
    ubuntu-22.04 4 vCPU · 16 GB
    -
    -
    -
    Data points
    -
    90 days of history
    +
    +
    +
    Last run
    +
    {lastRunDate}
    +
    +
    +
    Runner
    +
    ubuntu-22.04 4 vCPU · 16 GB
    +
    +
    +
    Data points
    +
    90 days of history
    +
    - -
    - Series - - - - - - - - - Click to mute · y-axis = seconds - - -
    - - -
    - - -
    -
    § Aggregate
    -

    Median across all scenarios.

    -

    - Geometric mean of cell medians, normalized to the slowest in each row so the chart compares relative performance across scenarios of different absolute scale. Lower is faster. -

    -
    -
    -
    -

    Cold install · normalized

    -
    -
    -
    -

    Cache + lockfile · normalized

    -
    -
    -
    + +
    @@ -717,596 +686,9 @@ const INCIDENTS = [
    -
    - - diff --git a/yarn.lock b/yarn.lock index 019619c6..3085fa62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,7 +5,7 @@ "workspaces": { "@yarnpkg/documentation": "105cf01165fcffc02e5a354f6734895d01fbb152899e635b1d1b152a04e48c904810d457a85b09d642ca9061bf01e02dc203eabdf0c3a29ddf20036b31e43cde", "@yarnpkg/monorepo": "69da8dfb279601957675174872ca291310b88ff5e33fcc0060b11a3503fdef48f629515bcf7d74fbe12b83b2a84b7f0249cf8154978d15bc6a3fa3c634624f94", - "@yarnpkg/website": "0b7f12647d3e4e24fee55d876480c422284fe07e17488a879c117e36cb55a1d86af49d352026a6b2a9083375f2de5f3ce5ddfb49d0fa8f11da9682edb4ad2481", + "@yarnpkg/website": "be8b6cb4d97280bb0cc867e2e6ca27773cf278e4fc2c1bf6f08b575a10ea416ec36b960fa9691eb7d110727c80de30f5c0e6884c60e126d84f37f27b452eb1f4", "@yarnpkg/zpm-constraints": "5c6a5440669d0a0244f06ebc980b86b246235da3b4da7fc5c2bbdc0bf61ef23e95d8bb9f2fdb7402d20cf0ac8461b086799a0e0e606054b85e9ac472be1dd9d2", "@yarnpkg/zpm-daemon-ui": "64b5d42d2f7f1113e164b3c3137385b0d72824abc41ca9e4d852261f61018f037cbe0b0d5c97d7b3529075ff8b6ceead5803590a5ff9ee3564a785732262564a", "acceptance-tests": "9e727eab8feee6a4383eb4abec8384decbaf30d2ee37dca7d2c8fc1e6afff399509282042cc605746ffaca0ed8f7e5b964b88327ecd50c5077d7a44b7ea4a5ae", @@ -563,6 +563,16 @@ "version": "0.7.6" } }, + "@astrojs/internal-helpers@npm:0.9.0": { + "checksum": "d06122f8b8fd62399b7e8c19751e14f4469f5ae788716cfa62b270861b17448060df0ad2f0243381f6c5f360d2074abac4366969743339de7b53ad4612aa84f1", + "resolution": { + "resolution": "@astrojs/internal-helpers@npm:0.9.0", + "version": "0.9.0", + "dependencies": { + "picomatch": "^4.0.4" + } + } + }, "@astrojs/markdown-remark@npm:6.3.11": { "checksum": "bfa54b50a26d6b08273a32c99280e5e64686c7903b8bd4e23e61b31e31a00f5abb70195ab195a6fc202cb7123bfa497b767f9a744475c1e20ddd59b0a96d0d84", "resolution": { @@ -674,6 +684,26 @@ } } }, + "@astrojs/react@npm:^5.0.4": { + "checksum": "27a9de1e58f3997c022678e6aeb684c0c01995cadb4d97f511c9bb93e8ae48000dc95cb17958568fde95dcac4c16c32793fe9d19308d18594ac3c249d265d7a2", + "resolution": { + "resolution": "@astrojs/react@npm:5.0.4", + "version": "5.0.4", + "dependencies": { + "@astrojs/internal-helpers": "0.9.0", + "@vitejs/plugin-react": "^5.2.0", + "devalue": "^5.6.4", + "ultrahtml": "^1.6.0", + "vite": "^7.3.2" + }, + "peerDependencies": { + "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", + "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" + } + } + }, "@astrojs/sitemap@npm:^3.3.0": { "checksum": "2c83b6e32d7524bc0c65b41f14453bb786bf3595cd05ef6959f6e06c479d624d862d37dafa9d0b4c3bbf25c9c27b00702c76e2cb1b60aedf0e25981b8fcec00d", "resolution": { @@ -10062,7 +10092,7 @@ } } }, - "@types/react@npm:^19.2.2": { + "@types/react@npm:^19.2.14, @types/react@npm:^19.2.2": { "checksum": "b5c044d530b0ef07d3b242269abfd37cafbbcf652c4a740d918aa3699a465ca4550c9422fb50162c22589e6b05396e2128b49cb1c0b9efba2c34a4675e27bac6", "resolution": { "resolution": "@types/react@npm:19.2.14", @@ -10072,7 +10102,7 @@ } } }, - "@types/react-dom@npm:^19.2.2": { + "@types/react-dom@npm:^19.2.2, @types/react-dom@npm:^19.2.3": { "checksum": "1fc151572e071b429df95da105b3ef9aa28569ce1b0d27b65442d53196bf79f4c5d06fac22c1830172996b094be531fb302d0da0d44947d298d4f90b9edbc49c", "resolution": { "resolution": "@types/react-dom@npm:19.2.3", @@ -10596,7 +10626,7 @@ } } }, - "@vitejs/plugin-react@npm:^5.1.0": { + "@vitejs/plugin-react@npm:^5.1.0, @vitejs/plugin-react@npm:^5.2.0": { "checksum": "7f8068c3521be078e041292df4584e350d64471621f04351014d6922bb54e65da91d9a6b3d1d6d332a1b1beadb70e179d750d5291ef3fb7c135783527ed0a5ca", "resolution": { "resolution": "@vitejs/plugin-react@npm:5.2.0", @@ -15222,6 +15252,13 @@ "version": "5.7.1" } }, + "devalue@npm:^5.6.4": { + "checksum": "bf68546b56fadac4724f2f70dbe17a8ce074d6a9fd9b65780024e165b8596153cddee7e841b24bdeb1837523545985c6c2f257ad07a72570ccc7d3a207df6d2c", + "resolution": { + "resolution": "devalue@npm:5.8.0", + "version": "5.8.0" + } + }, "devlop@npm:^1.0.0, devlop@npm:^1.1.0": { "checksum": "68e569239ae835f006f1c5c433445c7610fb4a19c77d75dbbb2faabb561a05ab1bcfbb956628209485fd606f25f197d5617396e5efcfa46d0f9da6b42fb6b962", "resolution": { @@ -16088,7 +16125,7 @@ ] } }, - "esbuild@npm:^0.27.3": { + "esbuild@npm:^0.27.0, esbuild@npm:^0.27.3": { "checksum": "7c07567c23f0bf35b37449f83084c661bbbb3876e48084273525f4472fcd78a772792da86c6e74ea92a3ee9cb2291c752d998d7f7ceab93dec2b5cbe7c25bf49", "resolution": { "resolution": "esbuild@npm:0.27.7", @@ -25297,6 +25334,13 @@ } } }, + "react@npm:^19.2.5": { + "checksum": "0d6b298f9d8c54afc9b7706131ca162c2dbb51fd76ae7b8cbae1e6d28debbfb405f51f8958b8bc9327ea3afc957316fdd6e45f73d7dcd0092456093e06d93a93", + "resolution": { + "resolution": "react@npm:19.2.5", + "version": "19.2.5" + } + }, "react-dev-utils@npm:^12.0.1": { "checksum": "914e837affbd520e2879913617a489231b5c90c12eb1ff4aeac6179ec838149fc91ac894e7dc6c924d407b0c59a9d1ae7443eaa434ecfe858dc508bc41c20384", "resolution": { @@ -25355,6 +25399,19 @@ } } }, + "react-dom@npm:^19.2.5": { + "checksum": "696e77b4c27f4dba75e0f9d64681145b0a4d95e28f37cade8a31d706d4958dab0fd194ce1c8e276d150eacdddc40def72b74e10f98d6b85da0e43b156bd0ed09", + "resolution": { + "resolution": "react-dom@npm:19.2.5", + "version": "19.2.5", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.5" + } + } + }, "react-error-overlay@npm:^6.0.11": { "checksum": "e412d4ea05e4cb7b66e32a3c6741bd755107551bd1e89a62d3215febcacf66cc33aeefed25e516a13c1d1238a3aab0b1c40cdf1d6fed15fc2a5e986c95b7d328", "resolution": { @@ -26637,6 +26694,13 @@ } } }, + "scheduler@npm:^0.27.0": { + "checksum": "ffb4eec9248b93b62c6841a03a5cefeeadc3ca2e2629c04c7445009f713c011e16b30ba730968f7cf6610f7ebb1cd3ecd396b5a3aa2683a6de52882e5784751a", + "resolution": { + "resolution": "scheduler@npm:0.27.0", + "version": "0.27.0" + } + }, "schema-utils@npm:2.7.0": { "checksum": "2e88b21bf0b72698481ab646f599eb3a87094d47691adfbc56dbdfd8406cb74e438938ee2730f451d01159b5a2dc74d5771200e7e1c2a5831c83877653165418", "resolution": { @@ -29655,6 +29719,51 @@ ] } }, + "vite@npm:^7.3.2": { + "checksum": "d219d083d3ed165d170646ad24a5f0919514aa6a1a4a5df99dc8318f54921b63a01c0d8e963be2d9fc4e4e1650cf8e8c08b8b72f1e5fa107790e6701682c6664", + "resolution": { + "resolution": "vite@npm:7.3.2", + "version": "7.3.2", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "fsevents": "~2.3.3", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "optionalDependencies": [ + "fsevents" + ], + "optionalPeerDependencies": [ + "@types/node", + "jiti", + "less", + "lightningcss", + "sass", + "sass-embedded", + "stylus", + "sugarss", + "terser", + "tsx", + "yaml" + ] + } + }, "vite@npm:^8.0.9": { "checksum": "f7c3935f7e691d5f67a681bd168a41dc61012c869afed2981129561882c8bea975149e0af792b31aa69512ef8e4212a68eb5e81cc173e24a59d282e276c9f2d3", "resolution": { From 35a39b981807132f310b6c7157bba0095c93d860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Sun, 3 May 2026 16:58:55 +0200 Subject: [PATCH 16/29] Improvements to benchmarks' responsiveness --- .../components/benchmarks/BenchmarkChart.tsx | 2 + .../benchmarks/BenchmarksDashboard.tsx | 94 ++++++------ website/src/pages/benchmarks.astro | 142 +++++++++++++++--- 3 files changed, 172 insertions(+), 66 deletions(-) diff --git a/website/src/components/benchmarks/BenchmarkChart.tsx b/website/src/components/benchmarks/BenchmarkChart.tsx index e2d066d1..b902a641 100644 --- a/website/src/components/benchmarks/BenchmarkChart.tsx +++ b/website/src/components/benchmarks/BenchmarkChart.tsx @@ -292,6 +292,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta if (!chartData) { return (
    +
    {project.name}
    {size ? `No data` : ``}
    @@ -304,6 +305,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta return (
    +
    {project.name}
    zpm median {zpmMedian.toFixed(2)}s {pill && {pill.text}} diff --git a/website/src/components/benchmarks/BenchmarksDashboard.tsx b/website/src/components/benchmarks/BenchmarksDashboard.tsx index 8855f5b3..74f6711a 100644 --- a/website/src/components/benchmarks/BenchmarksDashboard.tsx +++ b/website/src/components/benchmarks/BenchmarksDashboard.tsx @@ -78,6 +78,7 @@ export function BenchmarksDashboard({data, seriesOrder, seriesMeta, projects, sc const [selectedProject, setSelectedProject] = useState(`all`); const [showVersions, setShowVersions] = useState(false); const [hoverInfo, setHoverInfo] = useState(null); + const [controlsOpen, setControlsOpen] = useState(false); const {versions, loading: versionsLoading} = useVersions(benchMinTs, benchMaxTs, showVersions); @@ -109,51 +110,60 @@ export function BenchmarksDashboard({data, seriesOrder, seriesMeta, projects, sc <> {/* Sticky controls */}
    - {/* Project filter */} -
    - Project - {[{id: `all`, name: `All`}, ...projects].map(p => ( - - ))} -
    - - {/* Legend */} -
    - Series - {seriesOrder.map((sid) => { - return ( - - {(sid === `npm` || sid === `classic`) && } +
    + +
    + {/* Project filter */} +
    + Project + {[{id: `all`, name: `All`}, ...projects].map(p => ( - - ); - })} - - Click to mute · y-axis = seconds - - + ))} +
    + + {/* Series legend */} +
    + Series + {seriesOrder.map((sid) => ( + + {(sid === `npm` || sid === `classic`) && } + + + ))} + + Click to mute · y-axis = seconds + + +
    +
    diff --git a/website/src/pages/benchmarks.astro b/website/src/pages/benchmarks.astro index 19884189..ba94b7d1 100644 --- a/website/src/pages/benchmarks.astro +++ b/website/src/pages/benchmarks.astro @@ -103,12 +103,7 @@ const INCIDENTS = [ font-family: 'JetBrains Mono', monospace; } - .legend-row { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 8px 18px; - padding: 14px 18px; + .bench-controls { border: 1px solid var(--line); border-radius: 12px; background: color-mix(in oklch, var(--card) 55%, transparent); @@ -117,7 +112,29 @@ const INCIDENTS = [ font-family: 'JetBrains Mono', monospace; font-size: 11.5px; } - .legend-row .lg { + .controls-toggle { + display: none; + } + .controls-body { + display: flex; + flex-direction: column; + gap: 12px; + padding: 14px 18px; + } + .legend-section { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 18px; + } + .legend-hint { + font-family: 'JetBrains Mono', monospace; + font-size: 10.5px; + color: var(--fg-mute); + } + .desktop-only { } + .controls-badge { display: none; } + .legend-section .lg { display: inline-flex; align-items: center; gap: 7px; @@ -131,21 +148,21 @@ const INCIDENTS = [ font-size: inherit; padding: 0; } - .legend-row .lg.muted { opacity: 0.35; } - .legend-row .lg .swatch { + .legend-section .lg.muted { opacity: 0.35; } + .legend-section .lg .swatch { width: 18px; height: 3px; border-radius: 2px; background: var(--c, var(--fg)); flex-shrink: 0; } - .legend-row .lg .swatch.dashed { + .legend-section .lg .swatch.dashed { height: 0; border-top: 2px dashed var(--c, var(--fg)); border-radius: 0; } - .legend-row .lg .name { color: var(--fg); font-weight: 500; } - .legend-row .sep { + .legend-section .lg .name { color: var(--fg); font-weight: 500; } + .legend-section .sep { width: 1px; height: 14px; background: var(--line-strong); @@ -311,7 +328,7 @@ const INCIDENTS = [ filter: brightness(1.2); } - .legend-row .toggle-label { + .legend-section .toggle-label { display: inline-flex; align-items: center; gap: 6px; @@ -321,7 +338,7 @@ const INCIDENTS = [ font-size: 11px; color: var(--fg-dim); } - .legend-row .toggle-label input { + .legend-section .toggle-label input { appearance: none; -webkit-appearance: none; width: 14px; @@ -333,11 +350,11 @@ const INCIDENTS = [ position: relative; flex-shrink: 0; } - .legend-row .toggle-label input:checked { + .legend-section .toggle-label input:checked { background: var(--accent); border-color: var(--accent); } - .legend-row .toggle-label input:checked::after { + .legend-section .toggle-label input:checked::after { content: ''; position: absolute; left: 3.5px; @@ -538,26 +555,103 @@ const INCIDENTS = [ background: var(--accent-soft); } + .chart-cell .cell-project { + display: none; + } + @media (max-width: 980px) { + .bench-header { grid-template-columns: 1fr; gap: 20px; } + .bench-meta { + flex-direction: row; + flex-wrap: wrap; + } + .bench-meta > div { + border-bottom: 0; + border-right: 1px solid var(--line); + flex: 1; + min-width: 0; + } + .bench-meta > div:last-child { border-right: 0; } + + .controls-toggle { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + padding: 12px 16px; + background: none; + border: 0; + cursor: pointer; + font-family: 'JetBrains Mono', monospace; + font-size: 10.5px; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--fg-mute); + } + .controls-summary { + display: flex; + align-items: center; + gap: 8px; + } + .controls-badge { + display: inline-block; + font-size: 10px; + letter-spacing: 0.06em; + color: var(--accent); + border: 1px solid var(--accent-line); + background: var(--accent-soft); + border-radius: 4px; + padding: 2px 6px; + } + .controls-chevron { + width: 8px; + height: 8px; + border-right: 1.5px solid var(--fg-mute); + border-bottom: 1.5px solid var(--fg-mute); + transform: rotate(45deg); + transition: transform 0.2s; + } + .bench-controls.open .controls-chevron { + transform: rotate(-135deg); + } + .controls-body { + display: none; + padding: 0 16px 14px; + gap: 14px; + } + .bench-controls.open .controls-body { + display: flex; + } + .filter-bar { + padding-bottom: 14px; + border-bottom: 1px solid var(--line); + } + .desktop-only { display: none; } + .legend-section .sep { display: none; } + .legend-hint { display: none; } + .bench-grid { grid-template-columns: 1fr !important; } .bench-grid .corner { display: none; } - .bench-grid .col-head { - border-left: 0; - border-top: 1px solid var(--line); - } + .bench-grid .col-head { display: none; } .bench-grid .row-head { border-top: 1px solid var(--line-strong); background: color-mix(in oklch, var(--fg) 2%, transparent); } .chart-cell { border-left: 0; + min-height: 160px; + } + .chart-cell .cell-project { + display: block; + font-family: 'JetBrains Mono', monospace; + font-size: 10px; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--fg-mute); + margin-bottom: 4px; } - .bench-header { grid-template-columns: 1fr; } - .bench-meta { flex-direction: row; } - .bench-meta > div { border-bottom: 0; border-right: 1px solid var(--line); } - .bench-meta > div:last-child { border-right: 0; } .summary { grid-template-columns: 1fr; } } From bb152b1dfb3d7a393229a0b84757df8e7a15aa48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Sun, 3 May 2026 17:19:21 +0200 Subject: [PATCH 17/29] wip --- .../components/benchmarks/BenchmarkChart.tsx | 78 ++++++++++++++++++- .../benchmarks/BenchmarkTooltip.tsx | 18 ++++- website/src/pages/benchmarks.astro | 20 ++--- 3 files changed, 99 insertions(+), 17 deletions(-) diff --git a/website/src/components/benchmarks/BenchmarkChart.tsx b/website/src/components/benchmarks/BenchmarkChart.tsx index b902a641..dcda5dbd 100644 --- a/website/src/components/benchmarks/BenchmarkChart.tsx +++ b/website/src/components/benchmarks/BenchmarkChart.tsx @@ -284,6 +284,82 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta }); }, [chartData, data, seriesOrder, seriesMeta, mutedSeries, scenario, project, versions, showVersions, onHover]); + const handleTouch = useCallback((e: React.TouchEvent) => { + if (!chartData || !svgRef.current) return; + e.preventDefault(); + const touch = e.touches[0]; + if (!touch) { prevIdxRef.current = null; onHover(null); return; } + const rect = svgRef.current.getBoundingClientRect(); + const sx = touch.clientX - rect.left; + + if (sx < ML || sx > chartData.w - MR) { + prevIdxRef.current = null; + onHover(null); + return; + } + + const tFrac = (sx - ML) / chartData.pw; + const idx = Math.max(0, Math.min(chartData.N - 1, Math.round(tFrac * (chartData.N - 1)))); + + if (idx === prevIdxRef.current) { + onHover(prev => prev ? {...prev, mouseX: touch.clientX, mouseY: touch.clientY, index: idx} : prev); + return; + } + prevIdxRef.current = idx; + + const ts = chartData.points[idx].timestamp; + const d = new Date(ts * 1000); + const dateStr = d.toISOString().slice(0, 10); + const inIncident = !!chartData.incidentSet[idx]; + + if (inIncident) { + let incLabel = ``; + for (const ir of chartData.incidentRanges) { + if (idx >= ir.start && idx <= ir.end) {incLabel = ir.label; break;} + } + onHover({ + mouseX: touch.clientX, mouseY: touch.clientY, index: idx, + dateStr, scenarioTitle: scenario.title, projectName: project.name, + isIncident: true, incidentLabel: incLabel, + rows: [], versionMap: null, showVersions, seriesMeta, + }); + return; + } + + const rows: Array<{id: string; value: number}> = []; + for (const sid of seriesOrder) { + if (mutedSeries[sid]) continue; + const sp = data[sid]; + if (!sp?.[idx] || sp[idx].value === null) continue; + rows.push({id: sid, value: sp[idx].value!}); + } + rows.sort((a, b) => a.value - b.value); + + let versionMap: Record | null = null; + if (showVersions && versions) { + versionMap = {}; + for (const sid of seriesOrder) { + const vers = versions[sid]; + if (!vers?.length) continue; + for (let i = vers.length - 1; i >= 0; i--) { + if (vers[i].t <= ts) {versionMap[sid] = vers[i].v; break;} + } + } + } + + onHover({ + mouseX: touch.clientX, mouseY: touch.clientY, index: idx, + dateStr, scenarioTitle: scenario.title, projectName: project.name, + isIncident: false, + rows, versionMap, showVersions, seriesMeta, + }); + }, [chartData, data, seriesOrder, seriesMeta, mutedSeries, scenario, project, versions, showVersions, onHover]); + + const handleTouchEnd = useCallback(() => { + prevIdxRef.current = null; + onHover(null); + }, [onHover]); + const handleMouseLeave = useCallback(() => { prevIdxRef.current = null; onHover(null); @@ -304,7 +380,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const gridY = [0.25, 0.5, 0.75]; return ( -
    +
    {project.name}
    zpm median {zpmMedian.toFixed(2)}s diff --git a/website/src/components/benchmarks/BenchmarkTooltip.tsx b/website/src/components/benchmarks/BenchmarkTooltip.tsx index 1db51bee..e5d05d0f 100644 --- a/website/src/components/benchmarks/BenchmarkTooltip.tsx +++ b/website/src/components/benchmarks/BenchmarkTooltip.tsx @@ -24,10 +24,20 @@ export function BenchmarkTooltip({info}: {info: HoverInfo | null}): JSX.Element const el = ref.current; const tw = el.offsetWidth; const th = el.offsetHeight; - let tx = info.mouseX + 14; - let ty = info.mouseY + 14; - if (tx + tw > window.innerWidth - 12) tx = info.mouseX - tw - 14; - if (ty + th > window.innerHeight - 12) ty = info.mouseY - th - 14; + const vw = window.innerWidth; + const vh = window.innerHeight; + const margin = 12; + const offset = 14; + + let tx = info.mouseX + offset; + let ty = info.mouseY + offset; + + if (tx + tw > vw - margin) tx = info.mouseX - tw - offset; + if (tx < margin) tx = margin; + + if (ty + th > vh - margin) ty = info.mouseY - th - offset; + if (ty < margin) ty = margin; + el.style.left = `${tx}px`; el.style.top = `${ty}px`; }); diff --git a/website/src/pages/benchmarks.astro b/website/src/pages/benchmarks.astro index ba94b7d1..af06f2b3 100644 --- a/website/src/pages/benchmarks.astro +++ b/website/src/pages/benchmarks.astro @@ -512,7 +512,7 @@ const INCIDENTS = [ -webkit-backdrop-filter: blur(12px); margin-left: calc(-50vw + 50%); margin-right: calc(-50vw + 50%); - padding: 12px calc(50vw - 50%); + padding: 12px max(calc(50vw - 50%), 1rem); display: flex; flex-direction: column; gap: 10px; @@ -560,18 +560,14 @@ const INCIDENTS = [ } @media (max-width: 980px) { - .bench-header { grid-template-columns: 1fr; gap: 20px; } - .bench-meta { - flex-direction: row; - flex-wrap: wrap; - } - .bench-meta > div { - border-bottom: 0; - border-right: 1px solid var(--line); - flex: 1; - min-width: 0; + .bench-sticky { + margin-left: -1.5rem; + margin-right: -1.5rem; + padding-left: 1.5rem; + padding-right: 1.5rem; } - .bench-meta > div:last-child { border-right: 0; } + .bench-header { grid-template-columns: 1fr; gap: 20px; } + .bench-meta > div:last-child { border-bottom: 0; } .controls-toggle { display: flex; From 70bc6ada85c1f4b8acacecaf3b7cdaf7ab2414b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Sun, 3 May 2026 18:04:55 +0200 Subject: [PATCH 18/29] Fixes --- .../components/benchmarks/BenchmarkChart.tsx | 168 ++++++++++-------- website/src/pages/benchmarks.astro | 69 +++---- 2 files changed, 118 insertions(+), 119 deletions(-) diff --git a/website/src/components/benchmarks/BenchmarkChart.tsx b/website/src/components/benchmarks/BenchmarkChart.tsx index dcda5dbd..710b7f30 100644 --- a/website/src/components/benchmarks/BenchmarkChart.tsx +++ b/website/src/components/benchmarks/BenchmarkChart.tsx @@ -201,17 +201,20 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta } const others = medians.filter(x => x.id !== `zpm`); - const bestOther = others.length - ? others.reduce((min, x) => x.m < min.m ? x : min, others[0]) - : null; + if (!others.length) return {cls: `fastest`, text: `only runner`}; - if (!bestOther) return {cls: `fastest`, text: `Only runner`}; + const fastest = others.reduce((min, x) => x.m < min.m ? x : min, others[0]); + const name = seriesMeta[fastest.id]?.name ?? fastest.id; - const pctDiff = Math.round((bestOther.m / zpmMedian - 1) * 100); - if (pctDiff > 0) return {cls: `fastest`, text: `Yarn is ${pctDiff}% faster`}; - if (pctDiff === 0) return {cls: `contested`, text: `Tied`}; - const cls = -pctDiff <= 10 ? `contested` : `slower`; - return {cls, text: `Yarn is ${-pctDiff}% slower`}; + if (zpmMedian <= fastest.m) { + const diff = +(fastest.m - zpmMedian).toFixed(1); + if (diff === 0) return {cls: `contested`, text: `tied with ${name}`}; + return {cls: `fastest`, text: `${diff}s faster than ${name}`}; + } + + const diff = +(zpmMedian - fastest.m).toFixed(1); + const cls = diff / zpmMedian <= 0.1 ? `contested` : `slower`; + return {cls, text: `${diff}s slower than ${name}`}; }, [data, seriesOrder, seriesMeta, mutedSeries, zpmMedian]); const prevIdxRef = useRef(null); @@ -284,86 +287,95 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta }); }, [chartData, data, seriesOrder, seriesMeta, mutedSeries, scenario, project, versions, showVersions, onHover]); - const handleTouch = useCallback((e: React.TouchEvent) => { - if (!chartData || !svgRef.current) return; - e.preventDefault(); - const touch = e.touches[0]; - if (!touch) { prevIdxRef.current = null; onHover(null); return; } - const rect = svgRef.current.getBoundingClientRect(); - const sx = touch.clientX - rect.left; + const handleMouseLeave = useCallback(() => { + prevIdxRef.current = null; + onHover(null); + }, [onHover]); - if (sx < ML || sx > chartData.w - MR) { - prevIdxRef.current = null; - onHover(null); - return; - } + const cellRef = useRef(null); + const touchDepsRef = useRef({chartData, data, seriesOrder, seriesMeta, mutedSeries, scenario, project, versions, showVersions, onHover}); + touchDepsRef.current = {chartData, data, seriesOrder, seriesMeta, mutedSeries, scenario, project, versions, showVersions, onHover}; - const tFrac = (sx - ML) / chartData.pw; - const idx = Math.max(0, Math.min(chartData.N - 1, Math.round(tFrac * (chartData.N - 1)))); + useEffect(() => { + const el = cellRef.current; + if (!el) return; - if (idx === prevIdxRef.current) { - onHover(prev => prev ? {...prev, mouseX: touch.clientX, mouseY: touch.clientY, index: idx} : prev); - return; - } - prevIdxRef.current = idx; + const onTouch = (e: TouchEvent) => { + const {chartData: cd, data: d, seriesOrder: so, seriesMeta: sm, mutedSeries: ms, scenario: sc, project: pr, versions: ver, showVersions: sv, onHover: oh} = touchDepsRef.current; + if (!cd || !svgRef.current) return; + e.preventDefault(); + const touch = e.touches[0]; + if (!touch) { prevIdxRef.current = null; oh(null); return; } + const rect = svgRef.current.getBoundingClientRect(); + const sx = touch.clientX - rect.left; + + if (sx < ML || sx > cd.w - MR) { + prevIdxRef.current = null; + oh(null); + return; + } - const ts = chartData.points[idx].timestamp; - const d = new Date(ts * 1000); - const dateStr = d.toISOString().slice(0, 10); - const inIncident = !!chartData.incidentSet[idx]; + const tFrac = (sx - ML) / cd.pw; + const idx = Math.max(0, Math.min(cd.N - 1, Math.round(tFrac * (cd.N - 1)))); - if (inIncident) { - let incLabel = ``; - for (const ir of chartData.incidentRanges) { - if (idx >= ir.start && idx <= ir.end) {incLabel = ir.label; break;} + if (idx === prevIdxRef.current) { + oh((prev: any) => prev ? {...prev, mouseX: touch.clientX, mouseY: touch.clientY, index: idx} : prev); + return; } - onHover({ - mouseX: touch.clientX, mouseY: touch.clientY, index: idx, - dateStr, scenarioTitle: scenario.title, projectName: project.name, - isIncident: true, incidentLabel: incLabel, - rows: [], versionMap: null, showVersions, seriesMeta, - }); - return; - } + prevIdxRef.current = idx; - const rows: Array<{id: string; value: number}> = []; - for (const sid of seriesOrder) { - if (mutedSeries[sid]) continue; - const sp = data[sid]; - if (!sp?.[idx] || sp[idx].value === null) continue; - rows.push({id: sid, value: sp[idx].value!}); - } - rows.sort((a, b) => a.value - b.value); + const ts = cd.points[idx].timestamp; + const dt = new Date(ts * 1000); + const dateStr = dt.toISOString().slice(0, 10); + const inIncident = !!cd.incidentSet[idx]; - let versionMap: Record | null = null; - if (showVersions && versions) { - versionMap = {}; - for (const sid of seriesOrder) { - const vers = versions[sid]; - if (!vers?.length) continue; - for (let i = vers.length - 1; i >= 0; i--) { - if (vers[i].t <= ts) {versionMap[sid] = vers[i].v; break;} + if (inIncident) { + let incLabel = ``; + for (const ir of cd.incidentRanges) { + if (idx >= ir.start && idx <= ir.end) {incLabel = ir.label; break;} } + oh({mouseX: touch.clientX, mouseY: touch.clientY, index: idx, dateStr, scenarioTitle: sc.title, projectName: pr.name, isIncident: true, incidentLabel: incLabel, rows: [], versionMap: null, showVersions: sv, seriesMeta: sm}); + return; } - } - onHover({ - mouseX: touch.clientX, mouseY: touch.clientY, index: idx, - dateStr, scenarioTitle: scenario.title, projectName: project.name, - isIncident: false, - rows, versionMap, showVersions, seriesMeta, - }); - }, [chartData, data, seriesOrder, seriesMeta, mutedSeries, scenario, project, versions, showVersions, onHover]); + const rows: Array<{id: string; value: number}> = []; + for (const sid of so) { + if (ms[sid]) continue; + const sp = d[sid]; + if (!sp?.[idx] || sp[idx].value === null) continue; + rows.push({id: sid, value: sp[idx].value!}); + } + rows.sort((a, b) => a.value - b.value); + + let versionMap: Record | null = null; + if (sv && ver) { + versionMap = {}; + for (const sid of so) { + const vs = ver[sid]; + if (!vs?.length) continue; + for (let i = vs.length - 1; i >= 0; i--) { + if (vs[i].t <= ts) {versionMap[sid] = vs[i].v; break;} + } + } + } - const handleTouchEnd = useCallback(() => { - prevIdxRef.current = null; - onHover(null); - }, [onHover]); + oh({mouseX: touch.clientX, mouseY: touch.clientY, index: idx, dateStr, scenarioTitle: sc.title, projectName: pr.name, isIncident: false, rows, versionMap, showVersions: sv, seriesMeta: sm}); + }; - const handleMouseLeave = useCallback(() => { - prevIdxRef.current = null; - onHover(null); - }, [onHover]); + const onEnd = () => { + prevIdxRef.current = null; + touchDepsRef.current.onHover(null); + }; + + el.addEventListener(`touchstart`, onTouch, {passive: false}); + el.addEventListener(`touchmove`, onTouch, {passive: false}); + el.addEventListener(`touchend`, onEnd); + return () => { + el.removeEventListener(`touchstart`, onTouch); + el.removeEventListener(`touchmove`, onTouch); + el.removeEventListener(`touchend`, onEnd); + }; + }, []); if (!chartData) { return ( @@ -380,10 +392,10 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const gridY = [0.25, 0.5, 0.75]; return ( -
    +
    {project.name}
    - zpm median {zpmMedian.toFixed(2)}s + yarn 6.x median {zpmMedian.toFixed(2)}s {pill && {pill.text}}
    diff --git a/website/src/pages/benchmarks.astro b/website/src/pages/benchmarks.astro index af06f2b3..e71f2bce 100644 --- a/website/src/pages/benchmarks.astro +++ b/website/src/pages/benchmarks.astro @@ -11,8 +11,8 @@ interface BenchEntry { subtest: string; test: string; pm: string; points: BenchP const SERIES_ORDER = ['zpm', 'yarn', 'npm', 'pnpm', 'classic'] as const; const SERIES_META: Record = { - zpm: { name: 'yarn zpm', dashed: false, accent: true }, - yarn: { name: 'yarn berry', dashed: false, accent: false }, + zpm: { name: 'yarn 6.x', dashed: false, accent: true }, + yarn: { name: 'yarn 4.x', dashed: false, accent: false }, npm: { name: 'npm', dashed: false, accent: false }, pnpm: { name: 'pnpm', dashed: false, accent: false }, classic: { name: 'yarn classic', dashed: true, accent: false }, @@ -25,10 +25,10 @@ const PROJECTS = [ ]; const SCENARIOS = [ - { id: 'install-full-cold', num: '01', title: 'Full cold install', desc: 'No lockfile, no global cache, no node_modules. Everything resolves from the registry; tarballs are unpacked and linked from scratch.', tag: 'rm -rf ~/.cache && rm yarn.lock' }, - { id: 'install-cache-only', num: '02', title: 'Cache only', desc: 'Global cache is warm but the project lockfile is gone. Resolution is re-computed; tarballs are reused. Closest to a fresh clone with shared CI cache.', tag: 'rm yarn.lock' }, - { id: 'install-cache-and-lock', num: '03', title: 'Cache + lockfile', desc: 'Lockfile exists, cache is warm. The common CI path: dependencies pre-resolved, just need to materialize them on disk.', tag: 'preserve all caches' }, - { id: 'install-ready', num: '04', title: 'Recurrent call', desc: 'Everything is in place — lockfile, cache, node_modules. Should be a near-instant no-op that verifies and exits.', tag: 'second invocation' }, + { id: 'install-full-cold', num: '01', title: 'Full cold install', desc: 'Simulates the very first install on a machine that has never seen the project — no cache, no lockfile, no artifacts. Everything is fetched from the registry and written from scratch.', tag: 'fresh machine' }, + { id: 'install-cache-only', num: '02', title: 'Cache only', desc: 'Like checking out a repo for the first time on a CI runner that has already built other projects. The lockfile is missing so resolution runs from scratch, but tarballs are reused from the global cache.', tag: 'fresh clone, shared cache' }, + { id: 'install-cache-and-lock', num: '03', title: 'Cache + lockfile', desc: 'The most common CI and day-to-day path. The lockfile and cache are both present — the manager just needs to materialize dependencies on disk.', tag: 'routine CI run' }, + { id: 'install-ready', num: '04', title: 'Recurrent call', desc: 'Everything is already in place. Measures how quickly the manager can verify the tree and exit — matters every time you run install as part of a script or editor hook.', tag: 'already installed' }, ]; const DATA: Record>> = {}; @@ -254,6 +254,8 @@ const INCIDENTS = [ padding: 14px 10px 10px; position: relative; min-height: 130px; + user-select: none; + -webkit-user-select: none; display: flex; flex-direction: column; } @@ -278,7 +280,6 @@ const INCIDENTS = [ font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.06em; - text-transform: uppercase; padding: 2px 6px; border-radius: 4px; white-space: nowrap; @@ -507,6 +508,8 @@ const INCIDENTS = [ position: sticky; top: var(--nav-h, 61px); z-index: 15; + user-select: none; + -webkit-user-select: none; background: color-mix(in oklch, var(--bg-0) 85%, transparent); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); @@ -666,11 +669,12 @@ const INCIDENTS = [

    Package manager comparison.

    - Continuous benchmarks of yarn zpm, - yarn berry, - npm, - pnpm, and - yarn classic across four install scenarios on three reference projects. Lower is better. Series are wall-clock seconds. + Continuous benchmarks of{' '} + Yarn 6.x, + Yarn 4.x, + npm, + pnpm, and + Yarn Classic across four install scenarios on three reference projects. Lower is better.

    @@ -705,27 +709,11 @@ const INCIDENTS = [

    Methodology

    -

    Each scenario × project × package-manager pair is executed multiple times in a clean container. We record wall-clock duration. Results are collected daily and published here automatically.

    - -

    Install scenarios

    -
      -
    1. -

      Full cold install

      -

      Global cache is wiped before each invocation. The lockfile and node_modules are removed. Everything resolves from the registry; tarballs are fetched, unpacked, and linked from scratch.

      -
    2. -
    3. -

      Cache only

      -

      The global cache survives but the project lockfile is removed. Resolution is re-computed; tarballs are reused from cache. Closest to a fresh clone with shared CI cache.

      -
    4. -
    5. -

      Cache + lockfile

      -

      Lockfile exists, cache is warm. The common CI path: dependencies pre-resolved, just need to materialize them on disk.

      -
    6. -
    7. -

      Recurrent call

      -

      Everything is in place — lockfile, cache, node_modules. Should be a near-instant no-op that verifies and exits.

      -
    8. -
    +

    Every four hours — and on every push to main — a GitHub Actions workflow runs the full benchmark matrix. Each combination of scenario, project, and package manager is timed with Hyperfine, measuring wall-clock duration. The results are published here automatically.

    + +

    How benchmarks run

    +

    Hyperfine executes each install command a minimum of 10 times after 1 warmup run. Before every timed run, a prepare step resets the environment to match the scenario — for example, deleting node_modules, the lockfile, or the global cache — so each measurement starts from the same state. The final result is the median of all timed runs.

    +

    The runner is ubuntu-latest on GitHub Actions. zpm is compiled from source with the release-lto profile; all other managers use their latest stable release at the time of each run.

    @@ -738,11 +726,11 @@ const INCIDENTS = [

    Reference projects

    -

    We chose real-world TypeScript projects with different dependency profiles. Each is pinned to a specific commit; we do not pull main at run time.

    +

    We chose real-world TypeScript projects with different dependency profiles to test a wide variety of use cases.

    - + @@ -752,15 +740,15 @@ const INCIDENTS = [ - + - + - +
    Reference projects — pinned at run timeReference projects
    Project
    nextNext.js 15 starter — App Router, Tailwind, MDX, ESLint flat configNext.js vendors most of its dependencies except native ones. Small dependency graphs with very heavy packages.
    gatsbyGatsby 5 blog — heavy plugin ecosystem, sharp, MDX, GraphQLGatsby lists its dependencies raw, without vendoring. Very large dependency graph made up of small packages.
    monorepoMulti-workspace monorepo — shared packages, cross-workspace dependenciesSynthetic monorepo of around ~1.5k workspaces, each with their own arbitrary set of dependencies.
    @@ -768,9 +756,8 @@ const INCIDENTS = [

    Caveats

      -
    • Network latency to the registry is held constant via a pull-through proxy on the same VPC. Real-world installs over a transcontinental link will be slower across the board.
    • -
    • Linker choice matters: numbers below are Plug’n’Play for Yarn, the default linker for each other manager. Switching Yarn to node-modules removes most of its lead in Full cold.
    • -
    • None of these numbers measure correctness. Determinism, peer-resolution strictness, and lockfile portability are evaluated separately.
    • +
    • Linker choice matters: numbers below are Plug’n’Play for Yarn, the default linker for each other manager. Switching Yarn to node-modules removes some of its lead in Full cold.
    • +
    • These numbers don't measure correctness. Determinism and soundness are evaluated separately. We use an extensive testsuite to ensure Yarn is not only fast but also stable.
    From ed38c4351d28f281ff8a59c880799d56da6f9581 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Mon, 4 May 2026 11:29:18 +0200 Subject: [PATCH 19/29] Implements search --- website/package.json | 1 + website/src/components/Nav.astro | 7 +- website/src/components/SearchModal.tsx | 672 ++++++++++++++++++ .../components/benchmarks/BenchmarkChart.tsx | 109 +-- .../benchmarks/BenchmarksDashboard.tsx | 8 +- website/src/layouts/BaseLayout.astro | 1 + website/src/styles/search.css | 30 + yarn.lock | 192 ++++- 8 files changed, 969 insertions(+), 51 deletions(-) create mode 100644 website/src/components/SearchModal.tsx create mode 100644 website/src/styles/search.css diff --git a/website/package.json b/website/package.json index 0852b1d9..8ff9dba6 100644 --- a/website/package.json +++ b/website/package.json @@ -15,6 +15,7 @@ "@tailwindcss/vite": "^4.2.4", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", + "algoliasearch": "^5.52.0", "astro": "^5.9.3", "react": "^19.2.5", "react-dom": "^19.2.5", diff --git a/website/src/components/Nav.astro b/website/src/components/Nav.astro index d44753ad..8607da0c 100644 --- a/website/src/components/Nav.astro +++ b/website/src/components/Nav.astro @@ -1,6 +1,7 @@ --- import Logo from '../../public/logo.svg'; import SimpleIcon from './SimpleIcon.astro'; +import SearchModal from './SearchModal.tsx'; interface Props { variant?: 'index' | 'docs'; @@ -35,12 +36,12 @@ const socialLinkClass = 'text-[var(--fg-dim)] inline-flex items-center justify-c
    - + +
    diff --git a/website/src/components/SearchModal.tsx b/website/src/components/SearchModal.tsx new file mode 100644 index 00000000..828cc28a --- /dev/null +++ b/website/src/components/SearchModal.tsx @@ -0,0 +1,672 @@ +import {liteClient as algoliasearch} from 'algoliasearch/lite'; +import {useState, useEffect, useRef, useCallback, type JSX} from 'react'; + +const docsClient = algoliasearch(`STXW7VT1S5`, `ecdfaea128fd901572b14543a2116eee`); +const pkgClient = algoliasearch(`OFCNCOG2CU`, `f54e21fa3a2a0160595bb058179bfb1e`); + +type Scope = `all` | `docs` | `pkg` | `cli`; +type ResultKind = `docs` | `pkg` | `cli`; + +interface SearchItem { + kind: ResultKind; + title: string; + titleHtml: string; + crumbs?: Array; + snippet?: string; + snippetHtml?: string; + href: string; + version?: string; + downloads?: string; + downloadsRaw?: number; + author?: string; + license?: string; +} + +// ── Icons ── + +function SearchIcon({size = 16, className}: {size?: number, className?: string}) { + return ( + + ); +} + +function CloseIcon() { + return ; +} + +function ClockIcon() { + return ( + + + + + ); +} + +function FlameIcon({color}: {color: string}) { + return ( + + + + ); +} + +function NoResultsIcon() { + return ( + + + + + ); +} + +const SCOPE_ICONS: Record = { + all: null, + docs: , + pkg: , + cli: , +}; + +const KIND_GLYPHS: Record = { + docs: , + pkg: , + cli: , +}; + +const SCOPES: Array<{key: Scope, label: string}> = [ + {key: `all`, label: `All`}, + {key: `docs`, label: `Docs`}, + {key: `pkg`, label: `Packages`}, + {key: `cli`, label: `CLI`}, +]; + +const KIND_LABELS: Record = { + docs: `Documentation`, + pkg: `Packages`, + cli: `CLI`, +}; + +const SUGGESTED = [ + `yarn install`, `workspace protocol`, `zero-installs`, + `constraints`, `migration from v1`, `lodash`, +]; + +// ── Recent searches (localStorage) ── + +const RECENTS_KEY = `yarn-search-recents`; + +function getRecents(): Array<{term: string, kind: string}> { + try { + const raw = localStorage.getItem(RECENTS_KEY); + if (raw) return JSON.parse(raw); + } catch {} + return []; +} + +function addRecent(term: string, kind: string) { + const recents = getRecents().filter(r => r.term !== term); + recents.unshift({term, kind}); + if (recents.length > 5) recents.length = 5; + try { + localStorage.setItem(RECENTS_KEY, JSON.stringify(recents)); + } catch {} +} + +// ── Helpers ── + +function highlightValue(hit: any, attr: string): string { + return hit?._highlightResult?.[attr]?.value ?? hit?.[attr] ?? ``; +} + +function stripTags(html: string): string { + return html.replace(/<[^>]*>/g, ``); +} + +function getFlameColor(downloadsRaw?: number): string | null { + if (downloadsRaw == null) return null; + if (downloadsRaw >= 10_000_000) return `#ef4444`; + if (downloadsRaw >= 1_000_000) return `#f59e0b`; + return null; +} + +function groupResults(results: Array, scope: Scope): Array<[ResultKind, Array]> { + const filtered = scope === `all` ? results : results.filter(r => r.kind === scope); + const groups: Array<[ResultKind, Array]> = []; + + if (scope === `all`) { + for (const k of [`docs`, `pkg`, `cli`] as Array) { + const items = filtered.filter(r => r.kind === k); + if (items.length) groups.push([k, items]); + } + } else if (filtered.length) { + groups.push([scope as ResultKind, filtered]); + } + + return groups; +} + +function flattenGroups(groups: Array<[ResultKind, Array]>): Array { + return groups.flatMap(([, items]) => items); +} + +// ── Subcomponents ── + +function Kbd({children}: {children: React.ReactNode}) { + return ( + + {children} + + ); +} + +function ScopeChip({scope, active, count, onClick}: {scope: Scope, active: boolean, count: number, onClick: () => void}) { + return ( + + ); +} + +function ResultGlyph({kind}: {kind: ResultKind}) { + return ( + + {KIND_GLYPHS[kind]} + + ); +} + +function Crumbs({crumbs, separator = `›`}: {crumbs: Array, separator?: string}) { + return ( + + {crumbs.map((c, i) => ( + {i > 0 && {separator}}{c} + ))} + + ); +} + +function GroupHeader({kind, count}: {kind: ResultKind, count: number}) { + return ( +
    + {KIND_LABELS[kind]} + + {count} +
    + ); +} + +function DocResultRow({item, isActive, onMouseEnter, onClick}: {item: SearchItem, isActive: boolean, onMouseEnter: () => void, onClick: () => void}) { + return ( +
    { e.preventDefault(); onClick(); }} + role="option" + aria-selected={isActive} + > + + + + {item.snippetHtml && ( + + )} + + + {item.crumbs && item.crumbs.length > 0 && } + + open + + + + ); +} + +function PkgResultRow({item, isActive, onMouseEnter, onClick}: {item: SearchItem, isActive: boolean, onMouseEnter: () => void, onClick: () => void}) { + const flameColor = getFlameColor(item.downloadsRaw); + + return ( + { e.preventDefault(); onClick(); }} + role="option" + aria-selected={isActive} + > + + +
    + + {item.downloads && flameColor && ( + + + {item.downloads} + + )} +
    + + + {item.author} + · + {item.license} + + + + {item.version && ( + + {item.version} + + )} + +
    + ); +} + +function ResultGroups({groups, activeIdx, onHover, onSelect}: { + groups: Array<[ResultKind, Array]>; + activeIdx: number; + onHover: (idx: number) => void; + onSelect: (item: SearchItem) => void; +}) { + let idx = 0; + return ( + <> + {groups.map(([kind, items]) => ( +
    + + {items.map(item => { + const myIdx = idx++; + const Row = item.kind === `pkg` ? PkgResultRow : DocResultRow; + return ( + onHover(myIdx)} + onClick={() => onSelect(item)} + /> + ); + })} +
    + ))} + + ); +} + +function EmptyState({onSelect}: {onSelect: (term: string) => void}) { + const recents = getRecents(); + + return ( +
    + {recents.length > 0 && ( +
    +
    Recent
    + {recents.map((r, i) => ( +
    onSelect(r.term)} + className="flex items-center gap-2.5 py-2 px-1 rounded-lg cursor-pointer text-[var(--fg-dim)] text-[13.5px] transition-colors hover:text-[var(--fg)] hover:bg-[color-mix(in_oklch,var(--fg)_4%,transparent)] hover:pl-2" + > + + {r.term} + {r.kind} +
    + ))} +
    + )} +
    +
    Suggested
    +
    + {SUGGESTED.map((term, i) => ( +
    onSelect(term)} + className="border border-[var(--line)] rounded-[10px] px-3 py-2.5 bg-[color-mix(in_oklch,var(--fg)_2%,transparent)] cursor-pointer flex items-center gap-2.5 transition-colors hover:border-[var(--accent-line)] hover:bg-[var(--accent-soft)] group" + > + {String(i + 1).padStart(2, `0`)} + {term} +
    + ))} +
    +
    +
    + ); +} + +function NoResults({query}: {query: string}) { + return ( +
    +
    + +
    +
    No matches
    +
    + Nothing for "{query}" in this scope. +
    +
    + ); +} + +function Footer() { + return ( +
    +
    + open + navigate + tab filter + esc close +
    + + + search by Algolia + +
    + ); +} + +// ── Main component ── + +export default function SearchModal() { + const [open, setOpen] = useState(false); + const [query, setQuery] = useState(``); + const [scope, setScope] = useState(`all`); + const [results, setResults] = useState>([]); + const [loading, setLoading] = useState(false); + const [activeIdx, setActiveIdx] = useState(0); + + const inputRef = useRef(null); + const resultsRef = useRef(null); + const debounceRef = useRef | null>(null); + + const openModal = useCallback(() => { + setOpen(true); + setQuery(``); + setResults([]); + setActiveIdx(0); + }, []); + + const closeModal = useCallback(() => { + setOpen(false); + setQuery(``); + setResults([]); + }, []); + + // Cmd+K global shortcut + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if ((e.metaKey || e.ctrlKey) && e.key === `k`) { + e.preventDefault(); + if (open) closeModal(); + else openModal(); + } + }; + document.addEventListener(`keydown`, handleKeyDown); + return () => document.removeEventListener(`keydown`, handleKeyDown); + }, [open, openModal, closeModal]); + + // Wire nav search trigger + useEffect(() => { + const trigger = document.querySelector(`nav [role="search"]`); + if (!trigger) return; + + const handleClick = (e: Event) => { + e.preventDefault(); + e.stopPropagation(); + openModal(); + }; + + trigger.addEventListener(`click`, handleClick); + return () => trigger.removeEventListener(`click`, handleClick); + }, [openModal]); + + // Body scroll lock + autofocus + useEffect(() => { + if (open) { + document.body.style.overflow = `hidden`; + setTimeout(() => inputRef.current?.focus(), 50); + } else { + document.body.style.overflow = ``; + } + }, [open]); + + // Algolia search + const search = useCallback(async (q: string) => { + if (!q.trim()) { + setResults([]); + setLoading(false); + return; + } + + setLoading(true); + + try { + const [docsResponse, pkgResponse] = await Promise.all([ + docsClient.search([{ + indexName: `yarnpkg_next`, + query: q, + params: { + hitsPerPage: 15, + attributesToHighlight: [`hierarchy.lvl0`, `hierarchy.lvl1`, `hierarchy.lvl2`, `hierarchy.lvl3`, `hierarchy.lvl4`, `hierarchy.lvl5`, `hierarchy.lvl6`, `content`], + attributesToSnippet: [`content:30`], + }, + }]), + pkgClient.search([{ + indexName: `npm-search`, + query: q, + params: { + hitsPerPage: 10, + attributesToRetrieve: [`name`, `version`, `description`, `owner`, `humanDownloadsLast30Days`, `downloadsLast30Days`, `license`], + attributesToHighlight: [`name`, `description`], + }, + }]), + ]); + + const docsHits: Array = (docsResponse.results[0] as any)?.hits?.map((hit: any) => { + const hierarchy = hit.hierarchy || {}; + const levels = [hierarchy.lvl0, hierarchy.lvl1, hierarchy.lvl2, hierarchy.lvl3, hierarchy.lvl4, hierarchy.lvl5, hierarchy.lvl6].filter(Boolean); + const title = levels[levels.length - 1] || `Untitled`; + const crumbs = levels.slice(0, -1); + const url: string = hit.url || ``; + const isCli = url.includes(`/cli/`) || (hierarchy.lvl0 || ``).toLowerCase().includes(`cli`); + + const snippetHtml = hit._snippetResult?.content?.value || ``; + const titleHtml = highlightValue(hit, `hierarchy.lvl${levels.length - 1}`); + + return { + kind: isCli ? `cli` : `docs`, + title: stripTags(title), + titleHtml: titleHtml || title, + crumbs, + snippet: stripTags(snippetHtml), + snippetHtml, + href: url, + } satisfies SearchItem; + }) ?? []; + + const pkgHits: Array = (pkgResponse.results[0] as any)?.hits?.map((hit: any) => ({ + kind: `pkg` as const, + title: hit.name || ``, + titleHtml: highlightValue(hit, `name`), + snippet: stripTags(hit.description || ``), + snippetHtml: highlightValue(hit, `description`), + href: `/package/${encodeURIComponent(hit.name)}`, + version: hit.version, + downloads: hit.humanDownloadsLast30Days, + downloadsRaw: hit.downloadsLast30Days, + author: hit.owner?.name, + license: hit.license, + })) ?? []; + + setResults([...docsHits, ...pkgHits]); + setActiveIdx(0); + } catch { + setResults([]); + } finally { + setLoading(false); + } + }, []); + + // Debounced search + useEffect(() => { + if (debounceRef.current) clearTimeout(debounceRef.current); + if (!query.trim()) { + setResults([]); + return; + } + debounceRef.current = setTimeout(() => search(query), 200); + return () => { + if (debounceRef.current) clearTimeout(debounceRef.current); + }; + }, [query, search]); + + const counts: Record = {all: results.length, docs: 0, pkg: 0, cli: 0}; + results.forEach(r => counts[r.kind]++); + + const groups = groupResults(results, scope); + const flatItems = flattenGroups(groups); + + const navigateToResult = useCallback((item: SearchItem) => { + addRecent(item.title, item.kind); + window.location.href = item.href; + }, []); + + const handleSelect = useCallback((term: string) => { + setQuery(term); + search(term); + }, [search]); + + // Keyboard navigation + const handleKeyDown = useCallback((e: React.KeyboardEvent) => { + if (e.key === `Escape`) { + e.preventDefault(); + closeModal(); + } else if (e.key === `ArrowDown`) { + e.preventDefault(); + setActiveIdx(i => Math.min(i + 1, flatItems.length - 1)); + } else if (e.key === `ArrowUp`) { + e.preventDefault(); + setActiveIdx(i => Math.max(i - 1, 0)); + } else if (e.key === `Enter` && flatItems[activeIdx]) { + e.preventDefault(); + navigateToResult(flatItems[activeIdx]); + } else if (e.key === `Tab`) { + e.preventDefault(); + const scopeKeys = SCOPES.map(s => s.key); + const curIdx = scopeKeys.indexOf(scope); + const nextIdx = e.shiftKey + ? (curIdx - 1 + scopeKeys.length) % scopeKeys.length + : (curIdx + 1) % scopeKeys.length; + setScope(scopeKeys[nextIdx]); + setActiveIdx(0); + } + }, [activeIdx, flatItems, scope, closeModal, navigateToResult]); + + // Scroll active into view + useEffect(() => { + const el = resultsRef.current?.querySelector(`.active`); + el?.scrollIntoView({block: `nearest`}); + }, [activeIdx]); + + if (!open) return null; + + return ( +
    { if (e.target === e.currentTarget) closeModal(); }} + > +
    + {/* Header */} +
    + + setQuery(e.target.value)} + className="flex-1 bg-transparent border-0 outline-0 text-[var(--fg)] font-sans text-[17px] tracking-[-0.005em] py-1 min-w-0 placeholder:text-[var(--fg-mute)]" + /> + {query && ( + + )} + +
    + + {/* Scope chips */} +
    + scope + {SCOPES.map(s => ( + { setScope(s.key); setActiveIdx(0); }} + /> + ))} +
    + + {/* Results */} +
    + {query.trim() === `` ? ( + + ) : loading && results.length === 0 ? ( +
    + Searching… +
    + ) : flatItems.length === 0 ? ( + + ) : ( + + )} +
    + +
    +
    +
    + ); +} diff --git a/website/src/components/benchmarks/BenchmarkChart.tsx b/website/src/components/benchmarks/BenchmarkChart.tsx index 710b7f30..7471226e 100644 --- a/website/src/components/benchmarks/BenchmarkChart.tsx +++ b/website/src/components/benchmarks/BenchmarkChart.tsx @@ -1,11 +1,12 @@ -import {useState, useEffect, useMemo, useRef, useCallback, type JSX} from 'react'; +import {useState, useEffect, useMemo, useRef, useCallback, type JSX} from 'react'; + +import type {HoverInfo} from './BenchmarkTooltip'; import {SERIES_COLORS, median, getSeriesValues, type SeriesMeta, type Scenario, type Project, type Incident, type BenchPoint} from './BenchmarksDashboard'; -import type {HoverInfo} from './BenchmarkTooltip'; -import type {VersionEntry} from './useVersions'; +import type {VersionEntry} from './useVersions'; const ML = 30, MR = 6, MT = 8, MB = 18; -const GITHUB_REPOS: Record = { +const GITHUB_REPOS: Record = { npm: {repo: `npm/cli`, tagPrefix: `v`}, pnpm: {repo: `pnpm/pnpm`, tagPrefix: `v`}, classic: {repo: `yarnpkg/yarn`, tagPrefix: `v`}, @@ -16,7 +17,7 @@ interface Props { scenario: Scenario; project: Project; data: Record>; - seriesOrder: readonly string[]; + seriesOrder: ReadonlyArray; seriesMeta: Record; mutedSeries: Record; incidents: Array; @@ -29,7 +30,7 @@ interface Props { export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta, mutedSeries, incidents, versions, showVersions, hoveredIndex, onHover}: Props): JSX.Element { const svgRef = useRef(null); const containerRef = useRef(null); - const [size, setSize] = useState<{w: number; h: number} | null>(null); + const [size, setSize] = useState<{w: number, h: number} | null>(null); useEffect(() => { const el = containerRef.current; @@ -51,7 +52,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta if (pw <= 0 || ph <= 0) return null; const visible = seriesOrder.filter(s => !mutedSeries[s]); - const allVals: number[] = []; + const allVals: Array = []; for (const sid of visible) { const vals = getSeriesValues(data, sid); for (const v of vals) @@ -73,7 +74,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const yScale = (v: number) => MT + ph - ((v - yMin) / (yMax - yMin)) * ph; const incidentSet: Record = {}; - const incidentRanges: Array<{start: number; end: number; label: string}> = []; + const incidentRanges: Array<{start: number, end: number, label: string}> = []; for (const inc of incidents) { let iStart = -1, iEnd = -1; @@ -89,7 +90,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const drawOrder = seriesOrder.filter(s => s !== `zpm`).concat(`zpm`); - const paths: Array<{id: string; d: string; cls: string; color: string}> = []; + const paths: Array<{id: string, d: string, cls: string, color: string}> = []; for (const sid of drawOrder) { if (mutedSeries[sid]) continue; const seriesPoints = data[sid]; @@ -99,9 +100,11 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta let prevWasNull = true; for (let pi = 0; pi < seriesPoints.length; pi++) { const sv = seriesPoints[pi].value; - if (sv === null || incidentSet[pi]) {prevWasNull = true; continue;} + if (sv === null || incidentSet[pi]) { + prevWasNull = true; continue; + } const px = xScale(pi), py = yScale(sv); - pathD += (prevWasNull ? `M` : `L`) + px.toFixed(2) + `,` + py.toFixed(2); + pathD += `${(prevWasNull ? `M` : `L`) + px.toFixed(2)},${py.toFixed(2)}`; prevWasNull = false; } if (!pathD) continue; @@ -111,8 +114,8 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta paths.push({id: sid, d: pathD, cls, color: SERIES_COLORS[sid]}); } - let band: {x: number; y: number; w: number; h: number} | null = null; - if (!mutedSeries[`zpm`]) { + let band: {x: number, y: number, w: number, h: number} | null = null; + if (!mutedSeries.zpm) { const zpmVals = getSeriesValues(data, `zpm`); const zpmMed = median(zpmVals); const top = yScale(zpmMed * 1.08); @@ -120,7 +123,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta if (bot > top) band = {x: ML, y: top, w: pw, h: bot - top}; } - const versionDots: Array<{cx: number; cy: number; r: number; color: string; cls: string; url: string | null}> = []; + const versionDots: Array<{cx: number, cy: number, r: number, color: string, cls: string, url: string | null}> = []; if (showVersions && versions) { for (const sid of drawOrder) { if (mutedSeries[sid]) continue; @@ -133,7 +136,9 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta let bestIdx = 0, bestDist = Infinity; for (let vp = 0; vp < N; vp++) { const dist = Math.abs(points[vp].timestamp - ver.t); - if (dist < bestDist) {bestDist = dist; bestIdx = vp;} + if (dist < bestDist) { + bestDist = dist; bestIdx = vp; + } } if (incidentSet[bestIdx]) continue; const sv = seriesP[bestIdx]?.value; @@ -163,7 +168,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const yTicks = [yMin, (yMin + yMax) / 2, yMax].map(v => ({ value: v, - label: (v < 1 ? v.toFixed(2) : v < 10 ? v.toFixed(1) : Math.round(v).toString()) + `s`, + label: `${v < 1 ? v.toFixed(2) : v < 10 ? v.toFixed(1) : Math.round(v).toString()}s`, pct: (yScale(v) / h * 100), })); @@ -193,7 +198,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const pill = useMemo(() => { if (zpmMedian <= 0) return null; - const medians: Array<{id: string; m: number}> = []; + const medians: Array<{id: string, m: number}> = []; for (const sid of seriesOrder) { if (mutedSeries[sid]) continue; const m = median(getSeriesValues(data, sid)); @@ -201,7 +206,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta } const others = medians.filter(x => x.id !== `zpm`); - if (!others.length) return {cls: `fastest`, text: `only runner`}; + if (!others.length) return {cls: `fastest`, text: `no comparison data`}; const fastest = others.reduce((min, x) => x.m < min.m ? x : min, others[0]); const name = seriesMeta[fastest.id]?.name ?? fastest.id; @@ -246,9 +251,11 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta if (inIncident) { let incLabel = ``; - for (const ir of chartData.incidentRanges) { - if (idx >= ir.start && idx <= ir.end) {incLabel = ir.label; break;} - } + for (const ir of chartData.incidentRanges) + if (idx >= ir.start && idx <= ir.end) { + incLabel = ir.label; break; + } + onHover({ mouseX: e.clientX, mouseY: e.clientY, index: idx, dateStr, scenarioTitle: scenario.title, projectName: project.name, @@ -258,7 +265,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta return; } - const rows: Array<{id: string; value: number}> = []; + const rows: Array<{id: string, value: number}> = []; for (const sid of seriesOrder) { if (mutedSeries[sid]) continue; const sp = data[sid]; @@ -274,7 +281,9 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const vers = versions[sid]; if (!vers?.length) continue; for (let i = vers.length - 1; i >= 0; i--) { - if (vers[i].t <= ts) {versionMap[sid] = vers[i].v; break;} + if (vers[i].t <= ts) { + versionMap[sid] = vers[i].v; break; + } } } } @@ -305,7 +314,9 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta if (!cd || !svgRef.current) return; e.preventDefault(); const touch = e.touches[0]; - if (!touch) { prevIdxRef.current = null; oh(null); return; } + if (!touch) { + prevIdxRef.current = null; oh(null); return; + } const rect = svgRef.current.getBoundingClientRect(); const sx = touch.clientX - rect.left; @@ -331,14 +342,16 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta if (inIncident) { let incLabel = ``; - for (const ir of cd.incidentRanges) { - if (idx >= ir.start && idx <= ir.end) {incLabel = ir.label; break;} - } + for (const ir of cd.incidentRanges) + if (idx >= ir.start && idx <= ir.end) { + incLabel = ir.label; break; + } + oh({mouseX: touch.clientX, mouseY: touch.clientY, index: idx, dateStr, scenarioTitle: sc.title, projectName: pr.name, isIncident: true, incidentLabel: incLabel, rows: [], versionMap: null, showVersions: sv, seriesMeta: sm}); return; } - const rows: Array<{id: string; value: number}> = []; + const rows: Array<{id: string, value: number}> = []; for (const sid of so) { if (ms[sid]) continue; const sp = d[sid]; @@ -354,7 +367,9 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const vs = ver[sid]; if (!vs?.length) continue; for (let i = vs.length - 1; i >= 0; i--) { - if (vs[i].t <= ts) {versionMap[sid] = vs[i].v; break;} + if (vs[i].t <= ts) { + versionMap[sid] = vs[i].v; break; + } } } } @@ -379,10 +394,10 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta if (!chartData) { return ( -
    -
    {project.name}
    -
    - {size ? `No data` : ``} +
    +
    {project.name}
    +
    + {size ? `No data` : ``}
    @@ -392,21 +407,21 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const gridY = [0.25, 0.5, 0.75]; return ( -
    -
    {project.name}
    -
    - yarn 6.x median {zpmMedian.toFixed(2)}s +
    +
    {project.name}
    +
    + yarn median {zpmMedian.toFixed(2)}s {pill && {pill.text}}
    {gridY.map(f => { const gy = MT + f * chartData.ph; - return ; + return ; })} - - + + {chartData.incidentRanges.map((ir, i) => { const ix1 = chartData.xScale(ir.start); @@ -414,14 +429,14 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta const iw = Math.max(ix2 - ix1, 2); return ( - - + + ); })} {chartData.band && ( - + )} {chartData.paths.map(p => ( @@ -430,7 +445,7 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta {chartData.versionDots.map((dot, i) => dot.url ? ( - + ) : ( @@ -444,19 +459,19 @@ export function BenchmarkChart({scenario, project, data, seriesOrder, seriesMeta x2={chartData.xScale(hoveredIndex)} y1={MT} y2={MT + chartData.ph} - className="crosshair" + className={`crosshair`} /> )} {chartData.yTicks.map((tick, i) => ( - + {tick.label} ))} {chartData.xLabels.map((lbl, i) => ( - + {lbl.label} ))} diff --git a/website/src/components/benchmarks/BenchmarksDashboard.tsx b/website/src/components/benchmarks/BenchmarksDashboard.tsx index 74f6711a..9c6c8c1f 100644 --- a/website/src/components/benchmarks/BenchmarksDashboard.tsx +++ b/website/src/components/benchmarks/BenchmarksDashboard.tsx @@ -1,4 +1,4 @@ -import {useState, useCallback, type JSX} from 'react'; +import {useState, useEffect, useCallback, type JSX} from 'react'; import {BenchmarkChart} from './BenchmarkChart'; import {BenchmarkTooltip, type HoverInfo} from './BenchmarkTooltip'; import {BenchmarkSummary} from './BenchmarkSummary'; @@ -106,6 +106,12 @@ export function BenchmarksDashboard({data, seriesOrder, seriesMeta, projects, sc } }, []); + useEffect(() => { + const dismiss = () => setHoverInfo(null); + window.addEventListener(`scroll`, dismiss, {passive: true}); + return () => window.removeEventListener(`scroll`, dismiss); + }, []); + return ( <> {/* Sticky controls */} diff --git a/website/src/layouts/BaseLayout.astro b/website/src/layouts/BaseLayout.astro index ffdbbd8c..ef63b89c 100644 --- a/website/src/layouts/BaseLayout.astro +++ b/website/src/layouts/BaseLayout.astro @@ -1,6 +1,7 @@ --- import Nav from '../components/Nav.astro'; import '../styles/tailwind.css'; +import '../styles/search.css'; interface Props { title: string; diff --git a/website/src/styles/search.css b/website/src/styles/search.css new file mode 100644 index 00000000..82976e67 --- /dev/null +++ b/website/src/styles/search.css @@ -0,0 +1,30 @@ +/* Only rules that Tailwind can't express */ + +@keyframes searchIn { + from { opacity: 0; transform: translateY(-8px) scale(0.985); } + to { opacity: 1; transform: translateY(0) scale(1); } +} + +/* Scrollbar */ +.search-results-scroll { + scrollbar-width: thin; + scrollbar-color: var(--line-strong) transparent; +} +.search-results-scroll::-webkit-scrollbar { width: 8px; } +.search-results-scroll::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 4px; } + +/* Algolia highlight marks */ +.search-result-row mark { + background: var(--accent-soft); + color: var(--accent); + padding: 0 1px; + border-radius: 2px; +} + +/* Line-clamp snippet (needs -webkit prefixes) */ +.search-snippet-clamp { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +} diff --git a/yarn.lock b/yarn.lock index 3085fa62..2a7fed32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,7 +5,7 @@ "workspaces": { "@yarnpkg/documentation": "105cf01165fcffc02e5a354f6734895d01fbb152899e635b1d1b152a04e48c904810d457a85b09d642ca9061bf01e02dc203eabdf0c3a29ddf20036b31e43cde", "@yarnpkg/monorepo": "69da8dfb279601957675174872ca291310b88ff5e33fcc0060b11a3503fdef48f629515bcf7d74fbe12b83b2a84b7f0249cf8154978d15bc6a3fa3c634624f94", - "@yarnpkg/website": "be8b6cb4d97280bb0cc867e2e6ca27773cf278e4fc2c1bf6f08b575a10ea416ec36b960fa9691eb7d110727c80de30f5c0e6884c60e126d84f37f27b452eb1f4", + "@yarnpkg/website": "79599dc6d1f71e4c68122bd31d6e1f9e3ae772f092b5d0039a94c84edf06bc4c3b56eadba037eb959919d637e181d30291842c0cfd76e7129119b9b8f425f6ad", "@yarnpkg/zpm-constraints": "5c6a5440669d0a0244f06ebc980b86b246235da3b4da7fc5c2bbdc0bf61ef23e95d8bb9f2fdb7402d20cf0ac8461b086799a0e0e606054b85e9ac472be1dd9d2", "@yarnpkg/zpm-daemon-ui": "64b5d42d2f7f1113e164b3c3137385b0d72824abc41ca9e4d852261f61018f037cbe0b0d5c97d7b3529075ff8b6ceead5803590a5ff9ee3564a785732262564a", "acceptance-tests": "9e727eab8feee6a4383eb4abec8384decbaf30d2ee37dca7d2c8fc1e6afff399509282042cc605746ffaca0ed8f7e5b964b88327ecd50c5077d7a44b7ea4a5ae", @@ -75,6 +75,19 @@ ] } }, + "@algolia/abtesting@npm:1.18.0": { + "checksum": "78abe3ed2ad244df83afd864960dab6332ac5a7219febca7677122d753daeb77163f08e7d83f4cf29a87e2c480b731ed856d354232833d18cb7a6fc47bcb65d6", + "resolution": { + "resolution": "@algolia/abtesting@npm:1.18.0", + "version": "1.18.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/abtesting@npm:1.5.0": { "checksum": "2c893a943e9e1816e9017b2f4f69d80e315552a5ae97761147b1e669905203e9ea9607bc77a5f1ef8b1ec307d753a277adf6b3bbbf20c0a5e3dda1799872eddd", "resolution": { @@ -212,6 +225,19 @@ } } }, + "@algolia/client-abtesting@npm:5.52.0": { + "checksum": "e8cdfa5261d4dbdddd27b10aa199291ed1d6a0091eb9d3c0ee6e70404f4ae8477fc41e16ecbe679990aa296800d8fafa6ddbd32b018f49088dd150d977459bb9", + "resolution": { + "resolution": "@algolia/client-abtesting@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/client-account@npm:4.25.2": { "checksum": "13fd0ba0f9cb39151a4f67c349ce0622c4b97ba41897f608e7526a812d6cdbe4dc0e9da27c51beaa5fee9721d0679fd0d1d3e502646bc43d0259f8befc50eb2b", "resolution": { @@ -250,6 +276,19 @@ } } }, + "@algolia/client-analytics@npm:5.52.0": { + "checksum": "18f56e1069ca52db6d815624acffa419092aaf1b37bf723a93c55d160316ba91057687cf0a925eb21eaab6dd2726ebc6dfac4bd37fbe9d845b2997c909670e6a", + "resolution": { + "resolution": "@algolia/client-analytics@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/client-common@npm:4.25.2": { "checksum": "8b450b7e7a0d6ff9a3e57aeff121a75ffad4e7ffe6da1189e18b1ef5b03fa96fa95c73f5a9289417977df751764f5ca2fbdeff1f37915c50dd013f7d98a0cd42", "resolution": { @@ -268,6 +307,13 @@ "version": "5.39.0" } }, + "@algolia/client-common@npm:5.52.0": { + "checksum": "5b7a86cb15ef0e601f0e56b18976de8154aacd0f61c951a5c60527e6b6a33c29c8ff95e107c4fe4dd3058562491203d2b98dc8b2931bf5091f938adee16275f9", + "resolution": { + "resolution": "@algolia/client-common@npm:5.52.0", + "version": "5.52.0" + } + }, "@algolia/client-insights@npm:5.39.0": { "checksum": "150cd4db395442a156773ad697ddd60a621408dd397cda3ac7552b863d2c29c810e25c076046cbbef1203241cad34e35757401307664ea72fd31d6d1c5529bd8", "resolution": { @@ -281,6 +327,19 @@ } } }, + "@algolia/client-insights@npm:5.52.0": { + "checksum": "ea421af8b957d2a256f8b1faeb8921614e2dc0ff47260689cf8363ca3fbc7563b6c9f85879357cfdcc902726b7e32dd75454dc07d6644aeb84e62e4a6082d1e1", + "resolution": { + "resolution": "@algolia/client-insights@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/client-personalization@npm:4.25.2": { "checksum": "3da688c0a433144ec8268f7b5e4a3a0cb38078be533cdfef8c7cc51887af09e6f0ad3471647a61abcf3b500d84f8e8135d084b9b08d26cfcdfcfe8dea2c24022", "resolution": { @@ -306,6 +365,19 @@ } } }, + "@algolia/client-personalization@npm:5.52.0": { + "checksum": "12496cca9cf064be547488a62c8436b5ca39586cb7cb38b2b09d91ca44302e0145397765f981573f31492f81bed0a17e40d18cc237df17cea68ce685b032ece6", + "resolution": { + "resolution": "@algolia/client-personalization@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/client-query-suggestions@npm:5.39.0": { "checksum": "793621b7fc602ae07148a7816e76ff9a087fa905fd230db12cdfefbbe3d12b0564fa46e2a789af237d552e895cbd04493fdfd417b6e2a451fd37fd6f29cee7be", "resolution": { @@ -319,6 +391,19 @@ } } }, + "@algolia/client-query-suggestions@npm:5.52.0": { + "checksum": "790bbaea804375ed94741ea2ef7e31e7604328791ebcf3b544f8a61f4670f432d9cfc56d08bcffd255a41bd9f9f983dde874986f126f39af474cf06303e7c40c", + "resolution": { + "resolution": "@algolia/client-query-suggestions@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/client-search@npm:4.25.2": { "checksum": "0f89097aa6b6407911000ceb8c35338605fa1a01b590bb4c7e83de43f8765bcbddbbe5f90585112d388d069d4f604ddd6eded43113e45695afa6165dcc99aa84", "resolution": { @@ -344,6 +429,19 @@ } } }, + "@algolia/client-search@npm:5.52.0": { + "checksum": "e405f18bfea3204444ea19e3427795f7385dda70e41273707a9d8ce4a17a06f1e06d89d4daa2d39ab42ff5cf92bdf0b35798977ffade6206dc31de480752e8b6", + "resolution": { + "resolution": "@algolia/client-search@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/events@npm:^4.0.1": { "checksum": "db96bcb0999f0be647bc6e3ac8de35b4a457eb573583a12f50238f2f734c3409400efc5388dfffcc17557797c97e88c20194e683dc7580b1a55ef0b8eabca6bf", "resolution": { @@ -364,6 +462,19 @@ } } }, + "@algolia/ingestion@npm:1.52.0": { + "checksum": "7e69bd41d8394fea11ee24578c195fd9457a5d76575b99bf370cde9b2c6a7f11dcfcbec127e7b79d3372b24c7df8b58835c6ab86cf8690a2dafc4e762664a12c", + "resolution": { + "resolution": "@algolia/ingestion@npm:1.52.0", + "version": "1.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/logger-common@npm:4.25.2": { "checksum": "d7fa68b1ccd40e8b1fa5896f6bb2a3cbe51fc223136142b822f987308353a9f3f51c2a1a516d082262102fce78f5b8af3836a8c24b16b60a557b091afb15d5f8", "resolution": { @@ -394,6 +505,19 @@ } } }, + "@algolia/monitoring@npm:1.52.0": { + "checksum": "693a02616e897efbdad7de053b46775b9befa4272864c7e39adbe4a4e5727541c57d34a7a671d87efef0775adef71a04d2e015694b62cf05d7b4d8a67d5cbbd5", + "resolution": { + "resolution": "@algolia/monitoring@npm:1.52.0", + "version": "1.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/recommend@npm:4.25.2": { "checksum": "141875b50b4721944fe8ab76a13a9a69e8965de8561b1bd62fe7fe694add3931ebcd09d0778b39111c2531bb33e1ac0b3478b67f9068e598767f8ec40ab56772", "resolution": { @@ -427,6 +551,19 @@ } } }, + "@algolia/recommend@npm:5.52.0": { + "checksum": "425f7d4ad591d597392aacaa222f9284eddae1df5e5262a17161fe15fe683b3341998810f50498fd5f27ee865b6979be1211e6142f0dc8b3d3b6d61b8a9ddf69", + "resolution": { + "resolution": "@algolia/recommend@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "@algolia/requester-browser-xhr@npm:4.25.2": { "checksum": "3affaa68f3eebf653bba1142a1a48c6c9a0cbd48be3ea21eb210033154cfffd4aa5f2ad03ee5fa6433a5d39cfb04ab79eef63993aeac401e6d9cf0d1fd4d6d20", "resolution": { @@ -447,6 +584,16 @@ } } }, + "@algolia/requester-browser-xhr@npm:5.52.0": { + "checksum": "35f7cce2840587547d973bcd34a1d57210c4b772abfb899b0cf205e6cd15a2b4cd697457135c139d14d5187508e360fc81addb0fa66e93a4e6a5ede90707806f", + "resolution": { + "resolution": "@algolia/requester-browser-xhr@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0" + } + } + }, "@algolia/requester-common@npm:4.25.2": { "checksum": "26a6a83a7bddcdfcddc5486dee2cb1f56f72473335c783e5df325160482335de8cb39cc25ce2e0656ad1fdd6fdbd4919dc551cfe386b548d8e5be7e6ce6926b6", "resolution": { @@ -464,6 +611,16 @@ } } }, + "@algolia/requester-fetch@npm:5.52.0": { + "checksum": "0d68581149bf1484888d5de25ae2c31a04df01f063d827edbf61dd7193ead4bbd3dec41e32d631719219104bc91384e9ce7fa8b0becf1b49d43e8468e0d1f3e8", + "resolution": { + "resolution": "@algolia/requester-fetch@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0" + } + } + }, "@algolia/requester-node-http@npm:4.25.2": { "checksum": "bfb44987b1d3a77572278de8b3ff9cb45dcdcb5bfcf3412d29b43078f1ed3be37e2ed27a019dd8c41be4b4f9dd62a8ca0e39da5e96715c2e3994fe11d7aab987", "resolution": { @@ -484,6 +641,16 @@ } } }, + "@algolia/requester-node-http@npm:5.52.0": { + "checksum": "b2b34b40e64e40b5d6ff0033fe9ba94e60ec124cc49ce27eaa7a248b6ec858233f2a00d23621a4677eb77b5d37c3fffe4346d4b2d2f5f3e354fafc541ec62431", + "resolution": { + "resolution": "@algolia/requester-node-http@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/client-common": "5.52.0" + } + } + }, "@algolia/transporter@npm:4.25.2": { "checksum": "242f0db653f802f586124d2ac28241ee90ce603a7397378f0a3406395ac491c79117a5e686dbec03f220e23d6514e7b06aec7f1e0c6c1c33b242dd22ef3ec9d0", "resolution": { @@ -12004,6 +12171,29 @@ } } }, + "algoliasearch@npm:^5.52.0": { + "checksum": "44645949dcb313fde0dba08eb68963ed3d3bebfc268038b09553ce6794bcddc42f75a9da71e3c0ce07386dea7d9215a406b90ca35019982e9ea3837d82c16a6a", + "resolution": { + "resolution": "algoliasearch@npm:5.52.0", + "version": "5.52.0", + "dependencies": { + "@algolia/abtesting": "1.18.0", + "@algolia/client-abtesting": "5.52.0", + "@algolia/client-analytics": "5.52.0", + "@algolia/client-common": "5.52.0", + "@algolia/client-insights": "5.52.0", + "@algolia/client-personalization": "5.52.0", + "@algolia/client-query-suggestions": "5.52.0", + "@algolia/client-search": "5.52.0", + "@algolia/ingestion": "1.52.0", + "@algolia/monitoring": "1.52.0", + "@algolia/recommend": "5.52.0", + "@algolia/requester-browser-xhr": "5.52.0", + "@algolia/requester-fetch": "5.52.0", + "@algolia/requester-node-http": "5.52.0" + } + } + }, "algoliasearch-helper@npm:3.26.0": { "checksum": "acad7a07ed739cc5edcb8f345367aa7be8ce3a564514f0b7f606c1bd9ee80ee8bf6b439eebdf460cf3d2936e9f5d2cb79178ff763c84b94fe00ac72f54cfaae9", "resolution": { From f753713f3c7ae72a96fd0976285c4f908c20512f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Tue, 5 May 2026 21:20:07 +0200 Subject: [PATCH 20/29] Adds a package page --- .claude/skills/running-tests.md | 36 -- website/astro.config.mjs | 14 + website/package.json | 5 + website/src/components/Nav.astro | 2 +- website/src/components/SearchModal.tsx | 113 ++-- .../src/components/index/VersionPill.astro | 19 +- website/src/components/package/AuditPanel.tsx | 44 ++ .../components/package/DependenciesCard.tsx | 24 + .../src/components/package/DownloadsCard.tsx | 56 ++ .../src/components/package/FilesExplorer.tsx | 523 ++++++++++++++++++ .../src/components/package/InstallCard.tsx | 62 +++ .../src/components/package/KeywordsCard.tsx | 22 + website/src/components/package/LeftRail.tsx | 45 ++ .../components/package/MaintainersCard.tsx | 34 ++ website/src/components/package/NavLink.tsx | 34 ++ .../src/components/package/PackagePage.tsx | 20 + .../components/package/PackagePageInner.tsx | 333 +++++++++++ .../src/components/package/ReadmePanel.tsx | 18 + website/src/components/package/StatGrid.tsx | 40 ++ website/src/components/package/TabBar.tsx | 36 ++ .../components/package/VersionSelector.tsx | 81 +++ .../src/components/package/VersionsCard.tsx | 52 ++ .../components/package/VersionsTimeline.tsx | 84 +++ website/src/components/package/contexts.ts | 11 + website/src/components/package/icons.tsx | 29 + website/src/components/package/router.ts | 33 ++ website/src/components/package/types.ts | 76 +++ website/src/components/package/utils.ts | 456 +++++++++++++++ website/src/docs/concepts/core/yarn-6.md | 57 ++ website/src/pages/benchmarks.astro | 2 +- website/src/pages/index.astro | 11 +- website/src/pages/package/[...slug].astro | 76 +++ website/src/styles/package.css | 323 +++++++++++ yarn.lock | 147 ++++- 34 files changed, 2820 insertions(+), 98 deletions(-) delete mode 100644 .claude/skills/running-tests.md create mode 100644 website/src/components/package/AuditPanel.tsx create mode 100644 website/src/components/package/DependenciesCard.tsx create mode 100644 website/src/components/package/DownloadsCard.tsx create mode 100644 website/src/components/package/FilesExplorer.tsx create mode 100644 website/src/components/package/InstallCard.tsx create mode 100644 website/src/components/package/KeywordsCard.tsx create mode 100644 website/src/components/package/LeftRail.tsx create mode 100644 website/src/components/package/MaintainersCard.tsx create mode 100644 website/src/components/package/NavLink.tsx create mode 100644 website/src/components/package/PackagePage.tsx create mode 100644 website/src/components/package/PackagePageInner.tsx create mode 100644 website/src/components/package/ReadmePanel.tsx create mode 100644 website/src/components/package/StatGrid.tsx create mode 100644 website/src/components/package/TabBar.tsx create mode 100644 website/src/components/package/VersionSelector.tsx create mode 100644 website/src/components/package/VersionsCard.tsx create mode 100644 website/src/components/package/VersionsTimeline.tsx create mode 100644 website/src/components/package/contexts.ts create mode 100644 website/src/components/package/icons.tsx create mode 100644 website/src/components/package/router.ts create mode 100644 website/src/components/package/types.ts create mode 100644 website/src/components/package/utils.ts create mode 100644 website/src/docs/concepts/core/yarn-6.md create mode 100644 website/src/pages/package/[...slug].astro create mode 100644 website/src/styles/package.css diff --git a/.claude/skills/running-tests.md b/.claude/skills/running-tests.md deleted file mode 100644 index 1802b2aa..00000000 --- a/.claude/skills/running-tests.md +++ /dev/null @@ -1,36 +0,0 @@ -# Running Tests - -## Prerequisites - -Before running tests, you must build the release binaries: - -```bash -cargo build --release -``` - -## Running Integration Tests - -Use the following command to run integration tests: - -```bash -yarn test:integration -``` - -For example: -- Run all tests: `yarn test:integration` -- Run a specific test file: `yarn test:integration path/to/test.ts` -- Run tests matching a pattern: `yarn test:integration -t "pattern"` -- Run in watch mode: `yarn test:integration --watch` - -## Reading spawn logs - -You can access the logs of any Yarn command spawned within a test by adding the `JEST_LOG_SPAWNS=1` environment variable. - -## Creating temporary projects - -You can setup temporary projects by: - -1. Creating a new temporary folder -2. Adding an empty `package.json` file -3. Running `yarn switch link path/to/target/Release/yarn-bin` inside this temporary folder -4. Subsequent `yarn` commands should then use the local binary diff --git a/website/astro.config.mjs b/website/astro.config.mjs index a147f19b..71e40e5a 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -1,5 +1,6 @@ import {defineConfig} from 'astro/config'; import react from '@astrojs/react'; +import node from '@astrojs/node'; import tailwindcss from '@tailwindcss/vite'; import remarkDirective from 'remark-directive'; import remarkAutolinkFields from './plugins/remark-autolink-fields.mjs'; @@ -7,12 +8,25 @@ import remarkDocs from './plugins/remark-docs.mjs'; import rehypeDocs from './plugins/rehype-docs.mjs'; export default defineConfig({ + adapter: node({mode: `standalone`}), integrations: [react()], build: { format: `file`, }, vite: { plugins: [tailwindcss()], + optimizeDeps: { + include: [ + `prettier/standalone`, + `prettier/plugins/babel`, + `prettier/plugins/estree`, + `prettier/plugins/typescript`, + `prettier/plugins/postcss`, + `prettier/plugins/html`, + `prettier/plugins/markdown`, + `prettier/plugins/yaml`, + ], + }, }, markdown: { syntaxHighlight: false, diff --git a/website/package.json b/website/package.json index 8ff9dba6..e6b766da 100644 --- a/website/package.json +++ b/website/package.json @@ -8,15 +8,20 @@ "record": "node --experimental-strip-types scripts/record-terminal.ts" }, "dependencies": { + "@astrojs/node": "^9.5.5", "@astrojs/react": "^5.0.4", "@clipanion/astro": "../scripts/@clipanion-astro.tgz", "@clipanion/tools": "../scripts/@clipanion-tools.tgz", + "@iconify-json/octicon": "^1.2.23", "@iconify-json/simple-icons": "^1.2.79", + "@monaco-editor/react": "^4.7.0", "@tailwindcss/vite": "^4.2.4", + "@tanstack/react-router": "^1.169.1", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "algoliasearch": "^5.52.0", "astro": "^5.9.3", + "prettier": "^3.5.0", "react": "^19.2.5", "react-dom": "^19.2.5", "rehype-raw": "^7.0.0", diff --git a/website/src/components/Nav.astro b/website/src/components/Nav.astro index 8607da0c..3ebe6838 100644 --- a/website/src/components/Nav.astro +++ b/website/src/components/Nav.astro @@ -41,7 +41,7 @@ const socialLinkClass = 'text-[var(--fg-dim)] inline-flex items-center justify-c - Search docs… + Search docs, packages… ⌘K
    diff --git a/website/src/components/SearchModal.tsx b/website/src/components/SearchModal.tsx index 828cc28a..042623cf 100644 --- a/website/src/components/SearchModal.tsx +++ b/website/src/components/SearchModal.tsx @@ -1,9 +1,21 @@ import {liteClient as algoliasearch} from 'algoliasearch/lite'; +import octIconData from '@iconify-json/octicon/icons.json'; import {useState, useEffect, useRef, useCallback, type JSX} from 'react'; const docsClient = algoliasearch(`STXW7VT1S5`, `ecdfaea128fd901572b14543a2116eee`); const pkgClient = algoliasearch(`OFCNCOG2CU`, `f54e21fa3a2a0160595bb058179bfb1e`); +function octicon(name: string, size: number, className?: string) { + const icon = (octIconData as any).icons[name]; + if (!icon) return null; + const w = icon.width ?? 16; + const h = icon.height ?? 16; + return ( + + ); +} + type Scope = `all` | `docs` | `pkg` | `cli`; type ResultKind = `docs` | `pkg` | `cli`; @@ -25,55 +37,40 @@ interface SearchItem { // ── Icons ── function SearchIcon({size = 16, className}: {size?: number, className?: string}) { - return ( - - ); + return octicon(`search-16`, size, className); } function CloseIcon() { - return ; + return octicon(`x-16`, 12); } function ClockIcon() { - return ( - - - - - ); + return octicon(`clock-16`, 13); } function FlameIcon({color}: {color: string}) { return ( - - - + + {octicon(`flame-16`, 10)} + ); } function NoResultsIcon() { - return ( - - - - - ); + return octicon(`search-16`, 18); } const SCOPE_ICONS: Record = { all: null, - docs: , - pkg: , - cli: , + docs: octicon(`file-16`, 11)!, + pkg: octicon(`package-16`, 11)!, + cli: octicon(`terminal-16`, 11)!, }; const KIND_GLYPHS: Record = { - docs: , - pkg: , - cli: , + docs: octicon(`file-16`, 14)!, + pkg: octicon(`package-16`, 14)!, + cli: octicon(`terminal-16`, 14)!, }; const SCOPES: Array<{key: Scope, label: string}> = [ @@ -132,24 +129,48 @@ function getFlameColor(downloadsRaw?: number): string | null { return null; } -function groupResults(results: Array, scope: Scope): Array<[ResultKind, Array]> { +function looksLikePackage(q: string): boolean { + const t = q.trim(); + if (!t) return false; + return /^@?[a-z0-9][\w.\-]*(?:\/[a-z0-9][\w.\-]*)?$/i.test(t); +} + +interface ResultGroup { + kind: ResultKind; + label: string; + items: Array; +} + +function groupResults(results: Array, scope: Scope, query: string): Array { const filtered = scope === `all` ? results : results.filter(r => r.kind === scope); - const groups: Array<[ResultKind, Array]> = []; + const groups: Array = []; if (scope === `all`) { - for (const k of [`docs`, `pkg`, `cli`] as Array) { - const items = filtered.filter(r => r.kind === k); - if (items.length) groups.push([k, items]); + const docs = filtered.filter(r => r.kind === `docs`); + const pkgs = filtered.filter(r => r.kind === `pkg`); + const cli = filtered.filter(r => r.kind === `cli`); + + if (looksLikePackage(query)) { + const hotPkgs = pkgs.filter(r => getFlameColor(r.downloadsRaw) != null).slice(0, 2); + const restPkgs = pkgs.filter(r => !hotPkgs.includes(r)); + if (hotPkgs.length) groups.push({kind: `pkg`, label: `Popular packages`, items: hotPkgs}); + if (docs.length) groups.push({kind: `docs`, label: KIND_LABELS.docs, items: docs}); + if (cli.length) groups.push({kind: `cli`, label: KIND_LABELS.cli, items: cli}); + if (restPkgs.length) groups.push({kind: `pkg`, label: KIND_LABELS.pkg, items: restPkgs}); + } else { + if (docs.length) groups.push({kind: `docs`, label: KIND_LABELS.docs, items: docs}); + if (pkgs.length) groups.push({kind: `pkg`, label: KIND_LABELS.pkg, items: pkgs}); + if (cli.length) groups.push({kind: `cli`, label: KIND_LABELS.cli, items: cli}); } } else if (filtered.length) { - groups.push([scope as ResultKind, filtered]); + groups.push({kind: scope as ResultKind, label: KIND_LABELS[scope as ResultKind], items: filtered}); } return groups; } -function flattenGroups(groups: Array<[ResultKind, Array]>): Array { - return groups.flatMap(([, items]) => items); +function flattenGroups(groups: Array): Array { + return groups.flatMap(g => g.items); } // ── Subcomponents ── @@ -202,10 +223,10 @@ function Crumbs({crumbs, separator = `›`}: {crumbs: Array, separator?: ); } -function GroupHeader({kind, count}: {kind: ResultKind, count: number}) { +function GroupHeader({label, count}: {label: string, count: number}) { return (
    - {KIND_LABELS[kind]} + {label} {count}
    @@ -285,7 +306,7 @@ function PkgResultRow({item, isActive, onMouseEnter, onClick}: {item: SearchItem } function ResultGroups({groups, activeIdx, onHover, onSelect}: { - groups: Array<[ResultKind, Array]>; + groups: Array; activeIdx: number; onHover: (idx: number) => void; onSelect: (item: SearchItem) => void; @@ -293,15 +314,15 @@ function ResultGroups({groups, activeIdx, onHover, onSelect}: { let idx = 0; return ( <> - {groups.map(([kind, items]) => ( -
    - - {items.map(item => { + {groups.map((group, gi) => ( +
    + + {group.items.map(item => { const myIdx = idx++; const Row = item.kind === `pkg` ? PkgResultRow : DocResultRow; return ( onHover(myIdx)} @@ -511,7 +532,7 @@ export default function SearchModal() { titleHtml: highlightValue(hit, `name`), snippet: stripTags(hit.description || ``), snippetHtml: highlightValue(hit, `description`), - href: `/package/${encodeURIComponent(hit.name)}`, + href: `/package/${hit.name}`, version: hit.version, downloads: hit.humanDownloadsLast30Days, downloadsRaw: hit.downloadsLast30Days, @@ -544,7 +565,7 @@ export default function SearchModal() { const counts: Record = {all: results.length, docs: 0, pkg: 0, cli: 0}; results.forEach(r => counts[r.kind]++); - const groups = groupResults(results, scope); + const groups = groupResults(results, scope, query); const flatItems = flattenGroups(groups); const navigateToResult = useCallback((item: SearchItem) => { diff --git a/website/src/components/index/VersionPill.astro b/website/src/components/index/VersionPill.astro index 4cd1f9dc..e3c8fea5 100644 --- a/website/src/components/index/VersionPill.astro +++ b/website/src/components/index/VersionPill.astro @@ -4,19 +4,28 @@ interface Props { title: string; version: string; accent?: boolean; + href?: string; } -const { label, title, version, accent = false } = Astro.props; +const { label, title, version, accent = false, href } = Astro.props; const copyValue = version.replace(/^v/, ''); const labelClass = accent ? 'bg-[var(--accent-soft)] text-[var(--accent)]' : 'bg-[color-mix(in_oklch,var(--fg-dim)_18%,transparent)] text-[var(--fg-dim)]'; +const sharedClass = `inline-flex items-center gap-2 pl-1 pr-2.5 py-1 border border-[var(--line-strong)] rounded-full text-[11.5px] text-[var(--fg-mute)] tracking-[0.02em] bg-transparent cursor-pointer transition-colors hover:border-[var(--fg-dim)]`; --- - +{href ? ( + + {label} + {version} + +) : ( + +)} diff --git a/website/src/styles/package.css b/website/src/styles/package.css new file mode 100644 index 00000000..566e069e --- /dev/null +++ b/website/src/styles/package.css @@ -0,0 +1,323 @@ +/* Package page — animations and styles Tailwind can't express */ + +@keyframes pkg-grow { + to { transform: scaleX(var(--w, 1)); } +} + +@keyframes pkg-dropdown-in { + from { opacity: 0; transform: translateY(-4px) scale(0.98); } + to { opacity: 1; transform: translateY(0) scale(1); } +} + +@keyframes pkg-spin { + to { transform: rotate(360deg); } +} + +@keyframes pkg-fade-in { + from { opacity: 0; transform: translateY(6px); } + to { opacity: 1; transform: translateY(0); } +} + +/* README content — aligned with article-prose (blog.css) */ +.pkg-readme { + padding: 28px 36px 36px; + color: var(--fg); + line-height: 1.7; + font-size: 15.5px; +} +.pkg-readme > * { margin: 0; } +.pkg-readme > * + * { margin-top: 20px; } +.pkg-readme > * + h2 { margin-top: 48px; } +.pkg-readme > * + h3 { margin-top: 36px; } +.pkg-readme > h2 + *, +.pkg-readme > h3 + * { margin-top: 18px; } +.pkg-readme h1 { + font-size: 26px; + color: var(--fg); + letter-spacing: -0.01em; + font-weight: 500; + line-height: 1.2; +} +.pkg-readme h2 { + font-size: 22px; + color: var(--fg); + font-weight: 500; + letter-spacing: -0.015em; + padding-bottom: 8px; + border-bottom: 1px solid var(--line); +} +.pkg-readme h3 { + font-size: 18px; + color: var(--fg); + font-weight: 500; + letter-spacing: -0.01em; +} +.pkg-readme p { + color: var(--fg-dim); + text-wrap: pretty; +} +.pkg-readme strong { color: var(--fg); font-weight: 600; } +.pkg-readme code { + font-family: 'JetBrains Mono', monospace; + font-size: 0.87em; + padding: 1px 6px; + border-radius: 5px; + background: color-mix(in oklch, var(--fg) 7%, transparent); + border: 1px solid var(--line); + color: var(--fg); +} +.pkg-readme pre { + padding: 20px 22px; + border: 1px solid var(--syn-border); + border-radius: 12px; + background: var(--syn-bg); + backdrop-filter: blur(8px); + overflow-x: auto; + font-size: 13.5px; + line-height: 1.65; + color: var(--syn-fg); +} +.pkg-readme pre code { + background: none; + border: 0; + padding: 0; + font-size: 1em; + color: inherit; +} +.pkg-readme ul, .pkg-readme ol { + padding-left: 1.4em; + color: var(--fg-dim); +} +.pkg-readme li { margin: 8px 0; } +.pkg-readme li::marker { color: var(--fg-mute); } +.pkg-readme a { + color: var(--accent); + text-decoration: none; + border-bottom: 1px solid color-mix(in oklch, var(--accent) 35%, transparent); + transition: border-color 0.15s; +} +.pkg-readme a:hover { border-bottom-color: var(--accent); } +.pkg-readme blockquote { + border-left: 2px solid var(--accent-line); + padding: 4px 0 4px 22px; + margin: 0; + color: var(--fg-dim); + font-style: italic; +} +.pkg-readme blockquote p { color: var(--fg-dim); } +.pkg-readme hr { + border: 0; + border-top: 1px solid var(--line); + margin: 48px 0; +} +.pkg-readme img { + max-width: 100%; + height: auto; + border-radius: 8px; +} +.pkg-readme table { + width: 100%; + border-collapse: collapse; + font-size: 14.5px; + line-height: 1.6; +} +.pkg-readme thead th { + text-align: left; + font-weight: 600; + font-size: 12px; + letter-spacing: 0.06em; + text-transform: uppercase; + color: var(--fg-mute); + padding: 8px 14px; + border-bottom: 1px solid var(--line-strong); +} +.pkg-readme tbody td { + padding: 10px 14px; + color: var(--fg-dim); + border-bottom: 1px solid var(--line); + vertical-align: top; +} +.pkg-readme tbody tr:last-child td { border-bottom: none; } + +/* ─── VSCode-like Files Explorer ─── */ +.files-explorer { + display: flex; + overflow: hidden; + background: var(--card); + backdrop-filter: blur(16px); + flex: 1; + min-height: 0; +} +.files-sidebar { + width: 260px; + min-width: 260px; + border-right: 1px solid var(--line); + display: flex; + flex-direction: column; + overflow: hidden; +} +.files-sidebar-section { + display: flex; + align-items: center; + gap: 6px; + height: 40px; + padding: 0 14px; + font-family: 'JetBrains Mono', monospace; + font-size: 10.5px; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--fg-mute); + font-weight: 500; + border-bottom: 1px solid var(--line); + user-select: none; + cursor: pointer; + transition: color 0.12s; +} +.files-sidebar-section:hover { color: var(--fg-dim); } +.files-sidebar-section svg { transition: transform 0.15s; } +.files-tree-wrap { + flex: 1; + overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: var(--line-strong) transparent; +} +.files-tree-wrap::-webkit-scrollbar { width: 6px; } +.files-tree-wrap::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 3px; } +.files-versions-wrap { + min-height: 120px; + max-height: 280px; + overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: var(--line-strong) transparent; +} +.files-versions-wrap::-webkit-scrollbar { width: 6px; } +.files-versions-wrap::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 3px; } + +/* Tree items */ +.ftree-row { + display: flex; + align-items: center; + gap: 4px; + padding: 2px 10px 2px 0; + cursor: pointer; + font-size: 13px; + color: var(--fg-dim); + transition: background 0.08s, color 0.08s; + white-space: nowrap; +} +.ftree-row:hover { background: color-mix(in oklch, var(--fg) 5%, transparent); color: var(--fg); } +.ftree-row.active { background: var(--accent-soft); color: var(--accent); } +.ftree-chevron { + width: 16px; + height: 16px; + display: inline-flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + color: var(--fg-mute); +} +.ftree-icon { + width: 16px; + height: 16px; + display: inline-flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + color: var(--fg-mute); +} +.ftree-row.active .ftree-icon { color: var(--accent); } +.ftree-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; } +.ftree-size { + font-size: 10.5px; + color: var(--fg-mute); + flex-shrink: 0; + margin-left: auto; + padding-left: 8px; +} + +/* Version list items */ +.fver-row { + display: flex; + align-items: center; + gap: 6px; + padding: 5px 14px; + cursor: pointer; + font-size: 12.5px; + color: var(--fg-dim); + transition: background 0.08s, color 0.08s; +} +.fver-row:hover { background: color-mix(in oklch, var(--fg) 5%, transparent); color: var(--fg); } +.fver-row.active { color: var(--accent); } +.fver-row.comparing { background: var(--accent-soft); } + +/* Compare pill on version rows */ +.fver-compare-btn { + display: inline-flex; + align-items: center; + border-radius: 9999px; + border: none; + background: color-mix(in oklch, var(--fg) 8%, transparent); + color: var(--fg-mute); + cursor: pointer; + opacity: 0; + transition: opacity 0.1s, color 0.1s, background 0.1s; + padding: 1px 8px; + font-size: 10px; + font-family: inherit; + letter-spacing: 0.02em; + flex-shrink: 0; + white-space: nowrap; +} +.fver-row:hover .fver-compare-btn, +.fver-compare-btn.active { opacity: 1; } +.fver-compare-btn:hover { color: var(--fg); background: color-mix(in oklch, var(--fg) 12%, transparent); } +.fver-compare-btn.active { background: var(--accent-soft); color: var(--accent); opacity: 1; } + +/* Editor area */ +.files-editor { + flex: 1; + display: flex; + flex-direction: column; + min-width: 0; + overflow: hidden; +} +.files-editor-tab { + display: flex; + align-items: center; + gap: 8px; + height: 40px; + padding: 0 14px; + border-bottom: 1px solid var(--line); + font-family: 'JetBrains Mono', monospace; + font-size: 12.5px; + color: var(--fg-dim); +} +.files-editor-body { + flex: 1; + overflow: hidden; +} +.files-editor-empty { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 12px; + color: var(--fg-mute); + font-size: 13px; +} + +@media (max-width: 768px) { + .files-explorer { flex-direction: column; } + .files-sidebar { width: 100%; min-width: unset; border-right: none; border-bottom: 1px solid var(--line); } + .files-tree-wrap { max-height: 280px; } + .files-editor-body { min-height: 400px; } +} + +/* Scrollbar */ +.pkg-scroll { + scrollbar-width: thin; + scrollbar-color: var(--line-strong) transparent; +} +.pkg-scroll::-webkit-scrollbar { width: 8px; } +.pkg-scroll::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 4px; } diff --git a/yarn.lock b/yarn.lock index 2a7fed32..577288e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,7 +5,7 @@ "workspaces": { "@yarnpkg/documentation": "105cf01165fcffc02e5a354f6734895d01fbb152899e635b1d1b152a04e48c904810d457a85b09d642ca9061bf01e02dc203eabdf0c3a29ddf20036b31e43cde", "@yarnpkg/monorepo": "69da8dfb279601957675174872ca291310b88ff5e33fcc0060b11a3503fdef48f629515bcf7d74fbe12b83b2a84b7f0249cf8154978d15bc6a3fa3c634624f94", - "@yarnpkg/website": "79599dc6d1f71e4c68122bd31d6e1f9e3ae772f092b5d0039a94c84edf06bc4c3b56eadba037eb959919d637e181d30291842c0cfd76e7129119b9b8f425f6ad", + "@yarnpkg/website": "cd2e5e547f845fc85e30c7474a6ea4afa9f7eac63d7a633186fcc4585447dacc08a20ae7d17e1cedef951c5673f6898ab0d53369b93662229e711b6524d8ca5b", "@yarnpkg/zpm-constraints": "5c6a5440669d0a0244f06ebc980b86b246235da3b4da7fc5c2bbdc0bf61ef23e95d8bb9f2fdb7402d20cf0ac8461b086799a0e0e606054b85e9ac472be1dd9d2", "@yarnpkg/zpm-daemon-ui": "64b5d42d2f7f1113e164b3c3137385b0d72824abc41ca9e4d852261f61018f037cbe0b0d5c97d7b3529075ff8b6ceead5803590a5ff9ee3564a785732262564a", "acceptance-tests": "9e727eab8feee6a4383eb4abec8384decbaf30d2ee37dca7d2c8fc1e6afff399509282042cc605746ffaca0ed8f7e5b964b88327ecd50c5077d7a44b7ea4a5ae", @@ -825,6 +825,21 @@ } } }, + "@astrojs/node@npm:^9.5.5": { + "checksum": "1fad41426608519021f118d373abf6a172f2ec01bb5b146addeb6379a18df86adf07e87b2f06cfff42ebafea483173ab07d9e8ee33f6b482286fe45f0e439902", + "resolution": { + "resolution": "@astrojs/node@npm:9.5.5", + "version": "9.5.5", + "dependencies": { + "@astrojs/internal-helpers": "0.7.6", + "send": "^1.2.1", + "server-destroy": "^1.0.1" + }, + "peerDependencies": { + "astro": "^5.17.3" + } + } + }, "@astrojs/preact@npm:^4.1.0": { "checksum": "5254bc7886ea9a8c4b35a1f04b0daf0e1116cce28125e2edfe792278e27f6ef49095d6676ce05134a44c835a0b6ffd57cd8c8197992371a1eae34ff907174d40", "resolution": { @@ -5112,6 +5127,16 @@ "version": "0.4.3" } }, + "@iconify-json/octicon@npm:^1.2.23": { + "checksum": "3c874e6dc2c2f4cfcc99cde437a05308070a0362031ea752b70945bff1b5e8d4e53025a40d09fafd3ddf36c88b77964c15be20d583a365967a762ddf7bc066d0", + "resolution": { + "resolution": "@iconify-json/octicon@npm:1.2.23", + "version": "1.2.23", + "dependencies": { + "@iconify/types": "*" + } + } + }, "@iconify-json/simple-icons@npm:^1.2.79": { "checksum": "be68b05726dde19a2a449b9384292e83d0ee286abed27e2fa5a111356b95353a48836bfdd1738d5e084912277e6403883a8afe543a648648c36571df5e32a502", "resolution": { @@ -6195,6 +6220,16 @@ } } }, + "@monaco-editor/loader@npm:^1.5.0": { + "checksum": "444ae06b6842291707e12864d6bfb6c675bb2c2f703b4b12a004f5e7895e31620f388b9d64789c872ceb74d05586939adb0c10c4f4c3fc5051d869f5a23ebf2f", + "resolution": { + "resolution": "@monaco-editor/loader@npm:1.7.0", + "version": "1.7.0", + "dependencies": { + "state-local": "^1.0.6" + } + } + }, "@monaco-editor/react@npm:4.7.0-rc.0": { "checksum": "50add44d95cd811900f4ad23f3aca8fd1a0458bbe83ecadcd83945f6181478aad4266d653450bc753de26ccf07cbb8383e5e7ed341c231af9ed0bfb0734c13b9", "resolution": { @@ -6210,6 +6245,21 @@ } } }, + "@monaco-editor/react@npm:^4.7.0": { + "checksum": "ae51b244eed069e00504946ce38ea24a5c0e99ab01b46b7aa46bcd8dab6d9dec8169cc4c73a07a28ef0afc6f2d0fe00bc2b00432f479b1ba6533294d1309c3bc", + "resolution": { + "resolution": "@monaco-editor/react@npm:4.7.0", + "version": "4.7.0", + "dependencies": { + "@monaco-editor/loader": "^1.5.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + } + }, "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3": { "checksum": null, "resolution": { @@ -9630,6 +9680,23 @@ } } }, + "@tanstack/react-router@npm:^1.169.1": { + "checksum": "ce28935bbf3469847bb7872ce497600e11aa378fb4cf6f11fbbb152ffef92a0778b2d52f2c9fef5abc24d0a910b3f3f054c64990f6c377a042d50245b74e2224", + "resolution": { + "resolution": "@tanstack/react-router@npm:1.169.1", + "version": "1.169.1", + "dependencies": { + "@tanstack/history": "1.161.6", + "@tanstack/react-store": "^0.9.3", + "@tanstack/router-core": "1.169.1", + "isbot": "^5.1.22" + }, + "peerDependencies": { + "react": ">=18.0.0 || >=19.0.0", + "react-dom": ">=18.0.0 || >=19.0.0" + } + } + }, "@tanstack/react-store@npm:^0.9.3": { "checksum": "9a654be54d8b14a1775271ef270b82cd5672ce08833d971590efaa1a2b5d25dd83edf0d6032f3a4d76884853dc81cfbf45847b438f029184a5f9a0a86bc753dc", "resolution": { @@ -9658,6 +9725,19 @@ } } }, + "@tanstack/router-core@npm:1.169.1": { + "checksum": "a0536a4b4601ddf90a340f22b989564480dbc14d235e7b6ef54826afd98fc1e79fcdf17a8c051a983a3cd4d98868554d4d103e987c9264f0377be3f91e219a08", + "resolution": { + "resolution": "@tanstack/router-core@npm:1.169.1", + "version": "1.169.1", + "dependencies": { + "@tanstack/history": "1.161.6", + "cookie-es": "^3.0.0", + "seroval": "^1.5.0", + "seroval-plugins": "^1.5.0" + } + } + }, "@tanstack/store@npm:0.9.3": { "checksum": "a5a6de9a6bf2fbe542b816b36bc24a2dfa72000ecea83449f499422145833b964f9de4eb548a3e62d11363247e8eb4f44951814f14c719a17e9a5be27bad2942", "resolution": { @@ -15767,7 +15847,7 @@ "version": "3.0.0" } }, - "encodeurl@npm:~2.0.0": { + "encodeurl@npm:^2.0.0, encodeurl@npm:~2.0.0": { "checksum": "e91cc8840ba9c86b7d7c75d3afb78895745b72d232721369b6f0466c9805fd3d40ffef7c6bdd5c06b857087d15020e7b00cb2439ab8b03471d69e0d754ee9a30", "resolution": { "resolution": "encodeurl@npm:2.0.0", @@ -16392,7 +16472,7 @@ "version": "3.2.0" } }, - "escape-html@npm:~1.0.3": { + "escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": { "checksum": "d7e6dec7b1427b58631c93e5bbe68729e8cf7e25496828406a58a9a6354aa2d95adac3a54e3117b7691e6a26a6f1fdc8a9ccd1be98a1c9b5b1303a39a98346db", "resolution": { "resolution": "escape-html@npm:1.0.3", @@ -16955,7 +17035,7 @@ "version": "2.0.3" } }, - "etag@npm:~1.8.1": { + "etag@npm:^1.8.1, etag@npm:~1.8.1": { "checksum": "fc5d1f624b96ef48e5f4615a1b388cda5b16313569b23f07005811ece08c8834fdbbc29a7cfa62c08d27da12877958de09a0484cbeca358e1d1901edb2638825", "resolution": { "resolution": "etag@npm:1.8.1", @@ -17653,6 +17733,13 @@ "version": "5.3.4" } }, + "fresh@npm:^2.0.0": { + "checksum": "2e486d348263424077dd56e1ff73450b6bf5f9270d6fbb2cf3002ae64ff1ba2cf07ef8337a1be64132af50670801c44eb4348b9533560d064a4fc68a48473e35", + "resolution": { + "resolution": "fresh@npm:2.0.0", + "version": "2.0.0" + } + }, "fresh@npm:~0.5.2": { "checksum": "b9fbe498642bb951bbf192ea07d19fa5c1be200276f8aeff792c6f39e1387896c82059dfe80ccfd911ef74bd79f5f879b8b248cf24a5344d318159dad38c67c0", "resolution": { @@ -19280,7 +19367,7 @@ } } }, - "http-errors@npm:~2.0.0, http-errors@npm:~2.0.1": { + "http-errors@npm:^2.0.1, http-errors@npm:~2.0.0, http-errors@npm:~2.0.1": { "checksum": "e266bd29d3fd38dff6f78e75e333efc8756edf4e8104bdae3ce733f240fb9c3205a5df6e3420dbedae5934a431e05e7d1f04e6ebaa3fff200e78d87e64e10c6d", "resolution": { "resolution": "http-errors@npm:2.0.1", @@ -23042,7 +23129,7 @@ "version": "1.52.0" } }, - "mime-db@npm:>= 1.43.0 < 2": { + "mime-db@npm:>= 1.43.0 < 2, mime-db@npm:^1.54.0": { "checksum": "f203fc5838a8c4d0452dbd24ec46297df831a6b5c23d501e80629e107c418452b9ca666614c49a3314032e523ed15b67b81ecbf449075b8e2dfcf2ef1b5fe780", "resolution": { "resolution": "mime-db@npm:1.54.0", @@ -23059,6 +23146,16 @@ } } }, + "mime-types@npm:^3.0.2": { + "checksum": "0fa1f4ebd3afe37444671b64e89c08f881aaf831e1311b6ac3db9dba2b36d7a3a56e5a66d689fface9dc828e38dac76032eefb9e3696704ee61d9178f7e44cec", + "resolution": { + "resolution": "mime-types@npm:3.0.2", + "version": "3.0.2", + "dependencies": { + "mime-db": "^1.54.0" + } + } + }, "mimic-fn@npm:^2.1.0": { "checksum": "4d20540822a4dcaff8a801909a879239af285551f2f824b470585143f8ec27cb2d7f768a54373df17f0a385e566a088588ec9d108bbf016311e51f30b797b767", "resolution": { @@ -23901,7 +23998,7 @@ "version": "2.0.11" } }, - "on-finished@npm:2.4.1, on-finished@npm:~2.4.1": { + "on-finished@npm:2.4.1, on-finished@npm:^2.4.1, on-finished@npm:~2.4.1": { "checksum": "9e62d26347f0a452fba65ddaa71dd79f57abb09df1aee050cd07abb0971eb4c5dbe48d95bb4e1c92d3a97262d73324c96926853aff6d5d253703cad8640f5d2f", "resolution": { "resolution": "on-finished@npm:2.4.1", @@ -25150,6 +25247,13 @@ "version": "1.2.1" } }, + "prettier@npm:^3.5.0": { + "checksum": "f085db460c4e2d3203be291a7b34455c6304be4dc4b76ae22ec7eefc01a5254fbe48ea1e37dffcc156854987311f9ffe91aee641f3697f482dc9db9b2b577796", + "resolution": { + "resolution": "prettier@npm:3.8.3", + "version": "3.8.3" + } + }, "pretty-error@npm:^2.1.2": { "checksum": "cdc6cf7cac99422b14f86546d31572e78f844aeacb370230165bd2a8b5682e927638f7b04e88b226f9eba3eae8549e297588ffe597dfc5d6584095560f1ffaac", "resolution": { @@ -26982,6 +27086,26 @@ "version": "7.7.4" } }, + "send@npm:^1.2.1": { + "checksum": "b09534cda5d0c5aa2c062c3479a88bfd1ed7abfddb89c4381de9407fd13f5bbacd20bb9e592b7bfc66a4303d3ccb4a87f767c86c5b0c97c079eb383eb1e43a2b", + "resolution": { + "resolution": "send@npm:1.2.1", + "version": "1.2.1", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + } + } + }, "send@npm:~0.19.0, send@npm:~0.19.1": { "checksum": "955fd994ac98b3eb4e90ba48748b194c5b4cc2bde123985b73bc7aad57f1438ffe52ea53f2dc6e9f66ee6cb4913a5512a95e8e19c187b5f6bebc5c58b94ef198", "resolution": { @@ -27066,6 +27190,13 @@ } } }, + "server-destroy@npm:^1.0.1": { + "checksum": "18532955c8d9b215062b8b691a89dc197d0d02a2e7a3cfca1750574747fc987d9477b0ee493235d1c1ffae8a129d02ff7661edf6dad69ef23dbe3c2e6ac70fc5", + "resolution": { + "resolution": "server-destroy@npm:1.0.1", + "version": "1.0.1" + } + }, "set-blocking@npm:^2.0.0": { "checksum": "01a410a296dac1982186e97c4c2b55793cdfc574eea6b5ead1a8b3b3dffe256684b41652c60117f5a8be6ae3872f3cedb5f89561750e93104f7c073d90160780", "resolution": { @@ -27767,7 +27898,7 @@ "version": "2.0.1" } }, - "statuses@npm:~2.0.1, statuses@npm:~2.0.2": { + "statuses@npm:^2.0.2, statuses@npm:~2.0.1, statuses@npm:~2.0.2": { "checksum": "cdce10f2d970af45069b1b8e7b06e9b043c1e65c9749dd699f6cbce3385a9a1b60b6087e1ebc33d486121a93c7d6eb466ae1c3794695ce2a1f5db2fef65f1782", "resolution": { "resolution": "statuses@npm:2.0.2", From 5825a757734ebf8d151cafaf03e8e6560cb8c185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Tue, 5 May 2026 22:38:11 +0200 Subject: [PATCH 21/29] Fixes formatting --- website/src/components/ContentSidebar.astro | 2 +- website/src/components/DocsSidebar.astro | 19 +- website/src/components/Nav.astro | 76 +++++--- website/src/components/PageHeader.astro | 13 +- website/src/components/PostMeta.astro | 33 ++-- website/src/components/PrevNextNav.astro | 21 ++- website/src/components/ReferenceSidebar.astro | 10 +- website/src/components/SearchModal.tsx | 16 ++ website/src/components/SkeetCard.astro | 19 +- .../components/benchmarks/BenchmarkChart.tsx | 11 +- .../src/components/deck/ClosingSlide.astro | 2 +- website/src/components/deck/CodeBlock.astro | 14 +- website/src/components/deck/ImageFrame.astro | 12 +- .../src/components/deck/SectionSlide.astro | 13 +- website/src/components/deck/SlideChrome.astro | 13 +- website/src/components/deck/TagPill.astro | 8 +- website/src/components/deck/Terminal.astro | 8 +- website/src/components/deck/TitleSlide.astro | 2 +- website/src/components/deck/YarnBrand.astro | 4 +- .../deck/layouts/ClosingLayout.astro | 22 ++- .../deck/layouts/CodeSideLayout.astro | 7 +- .../deck/layouts/FullCodeLayout.astro | 7 +- .../components/deck/layouts/ImageLayout.astro | 7 +- .../deck/layouts/OneColumnLayout.astro | 7 +- .../deck/layouts/TerminalLayout.astro | 7 +- .../deck/layouts/TextImageLayout.astro | 7 +- .../deck/layouts/TextTerminalLayout.astro | 7 +- .../components/deck/layouts/TitleLayout.astro | 6 +- .../deck/layouts/TwoColumnLayout.astro | 7 +- .../src/components/index/FeatureCard.astro | 11 +- .../src/components/index/FooterColumn.astro | 9 +- .../src/components/index/SectionHeader.astro | 6 +- .../src/components/index/VersionPill.astro | 7 +- website/src/components/package/AuditPanel.tsx | 2 + .../src/components/package/DownloadsCard.tsx | 6 + .../src/components/package/FilesExplorer.tsx | 7 + .../src/components/package/InstallCard.tsx | 4 + website/src/components/package/LeftRail.tsx | 5 + .../components/package/MaintainersCard.tsx | 5 +- .../components/package/PackagePageInner.tsx | 21 ++- website/src/components/package/StatGrid.tsx | 2 + .../components/package/VersionSelector.tsx | 2 + .../src/components/package/VersionsCard.tsx | 2 + .../components/package/VersionsTimeline.tsx | 2 + website/src/components/package/router.ts | 1 + website/src/components/package/utils.ts | 102 +++++++---- website/src/components/sidebar.ts | 34 ++-- website/src/data/constellations.ts | 126 ++++++------- website/src/layouts/BaseLayout.astro | 8 +- website/src/layouts/BlogLayout.astro | 8 +- website/src/layouts/DeckLayout.astro | 2 +- website/src/layouts/DocsLayout.astro | 2 +- website/src/layouts/MarkdownDocsLayout.astro | 4 +- website/src/pages/[...slug].astro | 8 +- website/src/pages/benchmarks.astro | 8 +- website/src/pages/blog/[...slug].astro | 39 ++-- website/src/pages/blog/index.astro | 36 ++-- website/src/pages/cli/[...slug].astro | 5 +- .../src/pages/configuration/manifest.astro | 1 + website/src/pages/configuration/yarnrc.astro | 1 + website/src/pages/index.astro | 169 ++++++++++++------ website/src/pages/package/[...slug].astro | 48 ++--- website/src/pages/quiz.astro | 36 ++-- website/src/pages/switch/[...slug].astro | 5 +- website/src/scripts/starfield.ts | 34 ++-- website/src/utils/bluesky.ts | 13 +- 66 files changed, 780 insertions(+), 381 deletions(-) diff --git a/website/src/components/ContentSidebar.astro b/website/src/components/ContentSidebar.astro index e43d7f2d..6d2277e1 100644 --- a/website/src/components/ContentSidebar.astro +++ b/website/src/components/ContentSidebar.astro @@ -10,7 +10,7 @@ interface Props { const { sections, activePage } = Astro.props; -const allDocs = await getCollection('docs'); +const allDocs = await getCollection(`docs`); const groups = sections.flatMap(section => buildSidebarGroups(allDocs, section, activePage)); --- diff --git a/website/src/components/DocsSidebar.astro b/website/src/components/DocsSidebar.astro index 949c40e5..555ee283 100644 --- a/website/src/components/DocsSidebar.astro +++ b/website/src/components/DocsSidebar.astro @@ -10,15 +10,18 @@ const { groups } = Astro.props; {groups.map(group => (
    -

    {group.title}

    +

    + {group.title} +

    + {group.items.map(item => - 'subtitle' in item - ?
    {item.subtitle}
    - : {item.label} + `subtitle` in item + ?
    + {item.subtitle} +
    + : + {item.label} + )}
    ))} diff --git a/website/src/components/Nav.astro b/website/src/components/Nav.astro index 3ebe6838..5b912141 100644 --- a/website/src/components/Nav.astro +++ b/website/src/components/Nav.astro @@ -8,56 +8,71 @@ interface Props { activePage?: string; } -const { variant = 'index', activePage } = Astro.props; +import navigation from '../../config/navigation.json'; -const isDocs = variant === 'docs'; -const navBgOpacity = isDocs ? '55%' : '25%'; +const { variant = `index`, activePage } = Astro.props; + +const isDocs = variant === `docs`; +const navBgOpacity = isDocs ? `55%` : `25%`; -import navigation from '../../config/navigation.json'; const links = navigation.topbar; -const activeClass = 'no-underline text-[var(--fg)] font-medium'; -const inactiveClass = 'hover:text-[var(--fg)] transition-colors no-underline text-inherit'; +const activeClass = `no-underline text-[var(--fg)] font-medium`; +const inactiveClass = `hover:text-[var(--fg)] transition-colors no-underline text-inherit`; -const socialLinkClass = 'text-[var(--fg-dim)] inline-flex items-center justify-center w-8 h-8 rounded-lg transition-colors no-underline hover:text-[var(--fg)] hover:bg-[color-mix(in_oklch,var(--fg)_8%,transparent)]'; +const socialLinkClass = `text-[var(--fg-dim)] inline-flex items-center justify-center w-8 h-8 rounded-lg transition-colors no-underline hover:text-[var(--fg)] hover:bg-[color-mix(in_oklch,var(--fg)_8%,transparent)]`; ---