@media (prefers-color-scheme:light){pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}
/*!
  Theme: GitHub
  Description: Light theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/.hljs{color:#24292e;background:#ffffff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}}@media (prefers-color-scheme:dark){pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}
/*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}}:root{--bg:#fffdf9;--surface:#f6f2ea;--text:#14110d;--muted:#6b6459;--faint:#d9d2c5;--accent:#9a3412;--accent-soft:#f0e5dc;--code-bg:#f3efe7;--max:44rem;--serif:"Iowan Old Style","Palatino Linotype",Palatino,Charter,Georgia,serif;--sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Inter,Helvetica,Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace}@media (prefers-color-scheme:dark){:root{--bg:#12110f;--surface:#1b1917;--text:#ece7de;--muted:#9d9488;--faint:#322e29;--accent:#f0854f;--accent-soft:#2a1d16;--code-bg:#1b1917}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--serif);font-size:19px;line-height:1.7;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}.wrap{max-width:var(--max);margin:0 auto;padding:0 1.25rem}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:2px}a:hover{text-decoration-thickness:2px}.masthead{border-bottom:1px solid var(--faint);padding:2.5rem 0 1.75rem;margin-bottom:2.5rem}.masthead .site-title{margin:0 0 .35rem;letter-spacing:-.01em}.masthead .site-title a{color:var(--text);text-decoration:none}.masthead p{margin:0;color:var(--muted);font-family:var(--sans);font-size:.95rem;line-height:1.55}.masthead nav{margin-top:1rem;font-family:var(--sans);font-size:.875rem;display:flex;flex-wrap:wrap}.masthead nav a{color:var(--muted);text-decoration:none}.masthead nav a:hover{color:var(--accent);text-decoration:underline}.post-list{list-style:none;padding:0;margin:0}.post-list li{padding:1.6rem 0;border-bottom:1px solid var(--faint)}.post-list li:last-child{border-bottom:0}.post-list h2{font-size:1.3rem;margin:0 0 .3rem;line-height:1.35;letter-spacing:-.01em}.post-list h2 a{color:var(--text);text-decoration:none}.post-list h2 a:hover{color:var(--accent)}.post-list p{margin:.3rem 0 0;color:var(--muted);font-size:1rem;line-height:1.6}.meta{font-family:var(--sans);font-size:.8rem;color:var(--muted);letter-spacing:.02em}.meta time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}article header{margin-bottom:2rem}article h1{font-size:2.1rem;line-height:1.2;letter-spacing:-.02em;margin:.4rem 0 .6rem}.dek{color:var(--muted);font-size:1.12rem;line-height:1.55;margin:0 0 1rem}.prose h2{font-size:1.45rem;margin:2.4rem 0 .8rem;letter-spacing:-.01em;line-height:1.3}.prose h3{font-size:1.15rem;margin:1.9rem 0 .6rem;line-height:1.4}.prose h2 a,.prose h3 a{color:inherit;text-decoration:none}.prose h2 a:hover:after,.prose h3 a:hover:after{content:" #";color:var(--muted);font-weight:400}.prose p{margin:1.15rem 0}.prose ol,.prose ul{padding-left:1.4rem}.prose li{margin:.45rem 0}.prose img{max-width:100%;height:auto}.prose blockquote{margin:1.5rem 0;padding:.1rem 0 .1rem 1.1rem;border-left:3px solid var(--accent);color:var(--muted)}.prose hr{border:0;border-top:1px solid var(--faint);margin:2.5rem 0}.prose code{font-family:var(--mono);font-size:.86em;padding:.12em .35em;border-radius:3px}.prose code,.prose pre{background:var(--code-bg)}.prose pre{border:1px solid var(--faint);border-radius:6px;padding:.9rem 1rem;overflow-x:auto;font-size:.84rem;line-height:1.55}.prose pre code{background:none;padding:0;font-size:inherit}.table-scroll{overflow-x:auto;margin:1.5rem 0;border:1px solid var(--faint);border-radius:6px}.prose table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:.875rem}.prose td,.prose th{text-align:left;padding:.6rem .8rem;border-bottom:1px solid var(--faint);vertical-align:top}.prose th{background:var(--surface);font-weight:600;white-space:nowrap}.prose tbody tr:last-child td{border-bottom:0}.toc{background:var(--surface);border:1px solid var(--faint);border-radius:6px;padding:1rem 1.2rem;margin:0 0 2rem;font-family:var(--sans);font-size:.9rem}.toc p{margin:0 0 .5rem;font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.toc ul{list-style:none;margin:0;padding:0}.toc li{margin:.3rem 0;line-height:1.45}.toc li.d3{font-size:.86rem}.toc a{color:var(--text);text-decoration:none}.toc a:hover{color:var(--accent);text-decoration:underline}.agent-note{font-family:var(--sans);font-size:.82rem;color:var(--muted);background:var(--accent-soft);border-radius:6px;padding:.7rem .9rem;margin:2rem 0 0}.agent-note code{font-family:var(--mono);font-size:.95em}footer{border-top:1px solid var(--faint);margin-top:3.5rem;padding:1.75rem 0 3rem;font-family:var(--sans);font-size:.85rem}footer,footer a{color:var(--muted)}footer .links{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.6rem}.updated{font-family:var(--sans);font-size:.82rem;color:var(--muted);margin-top:2.5rem;padding-top:1rem;border-top:1px solid var(--faint)}@media (max-width:600px){body{font-size:18px}article h1{font-size:1.7rem}.masthead{padding:1.75rem 0 1.25rem}}.fig{--fig-w:min(56rem,calc(100vw - 2.5rem));width:var(--fig-w);margin:2.6rem 0 2.6rem 50%;transform:translateX(-50%)}.fig .fig-svg{overflow:visible}.fig svg{width:100%;height:auto;display:block}.fig figcaption{font-family:var(--sans);font-size:.86rem;color:var(--muted);line-height:1.6;margin-top:1rem;text-align:left;max-width:46rem;padding-left:.1rem;border-top:1px solid var(--faint);padding-top:.8rem}.fig figcaption .fig-source{display:block;margin-top:.35rem;font-size:.78rem;opacity:.8}.fig-diagram text{font-family:var(--sans)!important}.fig-themed .fig-dark{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .fig-themed .fig-light{display:none}:root:not([data-theme=light]) .fig-themed .fig-dark{display:block}}:root[data-theme=dark] .fig-themed .fig-light{display:none}:root[data-theme=dark] .fig-themed .fig-dark,:root[data-theme=light] .fig-themed .fig-light{display:block}.fig-themed .fig-mobile,:root[data-theme=light] .fig-themed .fig-dark{display:none}@media (max-width:600px){.fig-themed .fig-desktop{display:none!important}.fig-themed .fig-mobile.fig-light{display:block}.fig-themed .fig-mobile.fig-dark{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .fig-themed .fig-mobile.fig-light{display:none}:root:not([data-theme=light]) .fig-themed .fig-mobile.fig-dark{display:block}}:root[data-theme=dark] .fig-themed .fig-mobile.fig-light{display:none}:root[data-theme=dark] .fig-themed .fig-mobile.fig-dark{display:block}}:root{color-scheme:light}@media (prefers-color-scheme:dark){:root{color-scheme:dark}}:root[data-theme=light]{color-scheme:light;--bg:#fffdf9;--surface:#f6f2ea;--text:#14110d;--muted:#6b6459;--faint:#d9d2c5;--accent:#9a3412;--accent-soft:#f0e5dc;--code-bg:#f3efe7}:root[data-theme=dark]{color-scheme:dark;--bg:#12110f;--surface:#1b1917;--text:#ece7de;--muted:#aaa195;--faint:#423d35;--accent:#f0854f;--accent-soft:#2a1d16;--code-bg:#1b1917}:root[data-theme=dark] .hljs{color:#ece7de;background:var(--code-bg)}:root[data-theme=dark] .hljs-keyword,:root[data-theme=dark] .hljs-selector-tag{color:#ff9f8d}:root[data-theme=dark] .hljs-attr,:root[data-theme=dark] .hljs-string{color:#add2ef}:root[data-theme=dark] .hljs-literal,:root[data-theme=dark] .hljs-number,:root[data-theme=dark] .hljs-title{color:#d9b3ff}:root[data-theme=dark] .hljs-comment{color:#aaa195}:root[data-theme=light] .hljs{color:#24292e;background:var(--code-bg)}:root[data-theme=light] .hljs-keyword,:root[data-theme=light] .hljs-selector-tag{color:#a62638}:root[data-theme=light] .hljs-attr,:root[data-theme=light] .hljs-string{color:#174a70}:root[data-theme=light] .hljs-literal,:root[data-theme=light] .hljs-number,:root[data-theme=light] .hljs-title{color:#6f42c1}:root[data-theme=light] .hljs-comment{color:#626970}html{scroll-padding-top:1.5rem}:where(h2,h3){scroll-margin-top:1.5rem}:where(a,button,summary,select){touch-action:manipulation}:where(a,button,summary,select,pre,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:4px}main:focus{outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:absolute;left:1rem;top:-100px;padding:.7rem 1rem;background:var(--bg);z-index:10}.skip-link:focus{top:1rem}.masthead .site-title{font-family:var(--serif);font-size:1.6rem;line-height:1.4;color:var(--text)}.masthead .site-title a{display:inline-flex;align-items:center;min-height:44px}.masthead-navigation{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:.8rem}.masthead nav{margin:0;gap:1.1rem}.masthead nav a,footer .links a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px}.masthead nav a[aria-current=page]{color:var(--text);text-decoration:underline;text-underline-offset:7px}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:44px;padding:0;background:transparent;color:var(--muted);border:1px solid transparent;border-radius:50%;cursor:pointer}.theme-toggle:hover,.theme-toggle[aria-pressed=true]{color:var(--accent);background:var(--surface)}.article-filters{font-family:var(--sans);margin-bottom:.5rem}.category-filters{display:flex;flex-wrap:wrap;gap:.25rem 1.4rem;border-bottom:1px solid var(--faint);padding-bottom:.25rem}.category-filters a{display:inline-flex;align-items:center;gap:.4rem;min-height:48px;padding:.45rem 0;color:var(--muted);font-size:.875rem;text-decoration:none;border-bottom:2px solid transparent}.category-filters a:hover{color:var(--text)}.category-filters a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}.category-filters span{font-size:.75rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;align-self:flex-start;margin-top:.3rem}.browse-tools{position:relative;padding-top:.4rem}.filter-summary{padding-right:90px;margin:0;color:var(--muted);overflow-wrap:anywhere}.filter-summary,.topic-picker summary{display:flex;align-items:center;min-height:44px;font-size:.8rem}.topic-picker summary{position:absolute;right:0;top:.4rem;justify-content:flex-end;gap:.65rem;min-width:76px;cursor:pointer;list-style:none;color:var(--text)}.topic-picker summary::-webkit-details-marker{display:none}.topic-picker[open] summary svg{transform:rotate(180deg)}.topic-panel{background:var(--surface);border-radius:8px;padding:1.1rem 1.25rem;margin:.5rem 0 1rem}.topic-picker:not([open]) .topic-panel{display:none}.topic-panel p{font-size:.8rem;color:var(--muted);margin:0 0 .65rem}.topic-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:.25rem .8rem;gap:.25rem .8rem}.topic-links a{display:flex;align-items:center;min-height:44px;padding:.35rem .5rem;font-size:.8rem;text-decoration:none;color:var(--text);overflow-wrap:anywhere;border-radius:4px}.topic-links a:hover{background:var(--bg)}.topic-links a[aria-current=page]{text-decoration:underline;text-underline-offset:4px}.active-topic,.topic-links a[aria-current=page]{background:var(--accent-soft);color:var(--accent)}.active-topic{display:inline-flex;gap:.8rem;align-items:center;min-height:44px;padding:.3rem .7rem;margin-top:.2rem;border-radius:6px;font-size:.8rem;text-decoration:none;overflow-wrap:anywhere}.active-topic span{font-size:1.2rem}.post-meta{align-items:center}.post-meta,.post-meta .meta{display:flex;flex-wrap:wrap;column-gap:1rem}.post-category{font:.8rem var(--sans);color:var(--accent);display:inline-flex;align-items:center;min-height:44px;min-width:44px;text-decoration:none}.post-category:hover{text-decoration:underline}.post-list li{padding:1.25rem 0 1.6rem}.post-list h2{font-size:1.45rem}.post-list h2 a{display:block;min-height:44px;padding:.15rem 0}.post-list p{max-width:65ch}.post-taxonomy{display:flex;flex-wrap:wrap;gap:.1rem .5rem;margin-top:.7rem;font-family:var(--sans);font-size:.8rem;line-height:1.5}.post-taxonomy a{display:inline-flex;align-items:center;min-height:44px;min-width:44px;padding:.4rem .5rem;color:var(--muted);text-decoration:none;overflow-wrap:anywhere}.post-taxonomy .category-label{color:var(--accent)}.post-taxonomy a:hover{color:var(--accent);text-decoration:underline}.empty-state{padding:2rem 0}.empty-state h2{font-size:1.4rem;margin:0}.empty-state p{color:var(--muted)}.agent-note,.dek,.prose,.updated,footer{overflow-wrap:anywhere}.prose pre{white-space:pre;overflow-wrap:normal}.toc a{display:flex;align-items:center;min-height:44px;padding:.35rem 0}.toc li{margin:0}.toc li.d3{padding-left:1rem}.toc p{text-transform:none;font-size:.9rem;letter-spacing:0}.fig figcaption .fig-source{opacity:1}footer .links{gap:.5rem 1rem}@media (max-width:600px){.masthead{margin-bottom:1.5rem;padding-bottom:1rem}.masthead nav{gap:.9rem}.category-filters{column-gap:1.1rem}.category-filters a{font-size:.85rem}.topic-links{grid-template-columns:repeat(2,minmax(0,1fr))}.topic-panel{padding:.85rem}.post-list h2{font-size:1.35rem}.post-meta{column-gap:.8rem}.post-meta .meta{column-gap:.8rem;font-size:.75rem}.post-list li{padding-top:1rem}.toc{padding:.75rem 1rem}.post-taxonomy{gap:.25rem}footer{margin-top:2.5rem}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;animation:none!important;transition:none!important}}.figure-fullsize{display:inline-flex;align-items:center;min-height:44px;margin-top:.5rem;font:.8rem var(--sans)}.fig figcaption{margin-top:.35rem}@media (max-width:600px){.post-meta .reading-time{display:none}}.figure-motion{min-height:44px;margin:.5rem 0 0 1.25rem;padding:.3rem 0;border:0;background:transparent;color:var(--muted);font:.8rem var(--sans);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.figure-motion:hover{color:var(--accent)}@media (prefers-reduced-motion:reduce){.fig:not([data-user-play=true]) [data-uipack=packet]{visibility:hidden}}