diff --git a/static/frontend/about/about.min.css.map b/static/frontend/about/about.min.css.map
index 950784d..aacf72e 100644
--- a/static/frontend/about/about.min.css.map
+++ b/static/frontend/about/about.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["about.css"],
   "sourcesContent": ["/*\n * Copyright 2022 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.about-Wrapper ul {\n  list-style-type: disc;\n  padding-left: 2em;\n}\n\n.about-Wrapper li {\n  margin: 0.5em 0;\n}\n\n.about-Wrapper b {\n  font-weight: bold;\n}\n\na.btn {\n  background: var(--color-button);\n  border-radius: 0.3125rem;\n  color: var(--white);\n  display: block;\n  font-size: 1rem;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1rem;\n  margin-top: 1rem;\n  padding: 0.625rem;\n  text-align: center;\n  text-decoration: none;\n}\n\n.about-Content {\n  grid-area: content;\n  padding: 0;\n}\n\n.about-Content ul {\n  overflow-wrap: break-word;\n}\n\n.about-Content h1 {\n  font-size: 2.25rem;\n  font-weight: 400;\n  line-height: 2rem;\n}\n\n.about-Content h2 {\n  font-size: 1.5rem;\n  font-weight: 400;\n  line-height: 2rem;\n}\n\n.about-Content h3 {\n  font-size: 1.125rem;\n  font-weight: 400;\n  line-height: 2rem;\n}\n\n.about-Content p {\n  font-size: 0.875rem;\n  font-weight: 400;\n  line-height: 1.5rem;\n}\n\n.about-Wrapper {\n  display: grid;\n  gap: var(--gap);\n  grid-template-areas: 'content';\n  margin: 2rem auto 0;\n  max-width: 110rem;\n  padding: 0 var(--gutter);\n}\n\n.Sidebar {\n  display: none;\n  grid-area: Sidebar;\n  margin-top: 6rem;\n}\n\n.Sidebar a {\n  width: 7.5rem;\n}\n\n.Sidebar h4 {\n  font-size: 1rem;\n  font-style: normal;\n  font-weight: 500;\n  line-height: 1.5rem;\n}\n\n.Sidebar p,\n.Sidebar-faq .link {\n  font-size: 0.875rem;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5rem;\n}\n\n.Sidebar-faq h4 {\n  font-size: 0.813rem;\n  margin-bottom: 0.375rem;\n  margin-top: 1.25rem;\n}\n\n.Sidebar-faq p {\n  margin-bottom: 0.625rem;\n  margin-top: 0;\n}\n\n.Sidebar-socialLinks {\n  align-items: center;\n  display: flex;\n}\n\n.Sidebar-socialLinks a {\n  display: flex;\n  margin-right: 0.675rem;\n  width: unset;\n}\n\n.LeftNav-columns {\n  display: flex;\n}\n\n.LeftNav-sidebar {\n  display: none;\n  grid-area: LeftNav-sidebar;\n  height: 100vh;\n  overflow: auto;\n  padding: 0;\n  position: sticky;\n  top: 0;\n}\n\n.LeftNav {\n  display: flex;\n  flex-direction: column;\n}\n\n.LeftNav a {\n  align-items: center;\n  display: flex;\n  padding-bottom: 0.675rem;\n  padding-top: 0.675rem;\n  text-decoration: none;\n}\n\n.LeftNav a span {\n  color: var(--color-text-subtle);\n  flex: 30;\n  font-size: 1rem;\n  font-style: normal;\n  font-weight: 500;\n  line-height: 1.5rem;\n  margin: 0 0.75rem;\n}\n\n.LeftNav .LeftSubnav a span {\n  font-size: 0.875rem;\n  font-weight: 400;\n}\n\n.LeftSubnav a {\n  padding-left: 1rem;\n}\n\n.LeftNav a.active,\n.LeftNav a:hover,\n.LeftNav a:active,\n.LeftNav a:focus {\n  background: var(--color-background-info);\n}\n\n.LeftNav a.active span,\n.LeftNav a:hover span,\n.LeftNav a:active span,\n.LeftNav a:focus span {\n  color: var(--color-text);\n}\n\n.LeftNav ul.LeftSubnav li a.active,\n.LeftNav ul.LeftSubnav li a:hover,\n.LeftNav ul.LeftSubnav li a:active,\n.LeftNav ul.LeftSubnav li a:focus {\n  background: var(--color-background-accented);\n}\n\n.LeftSubnav {\n  list-style: none;\n  margin-bottom: unset;\n  margin-top: unset;\n  padding: unset;\n}\n\n.LeftSubnav img {\n  flex: 1;\n  visibility: hidden;\n}\n\n.LeftSubnav a.active img,\n.LeftSubnav a:hover img,\n.LeftSubnav a:focus img,\n.LeftSubnav a:active img {\n  visibility: visible;\n}\n\nul.LeftSubnav {\n  padding-left: unset;\n}\n\n.LeftSubnav li {\n  list-style: none;\n  margin: unset;\n}\n\n@media (min-width: 50rem) {\n  .about-Wrapper {\n    grid-template-areas: 'LeftNav-sidebar content';\n    grid-template-columns: 1fr 3fr;\n    margin-top: 3rem;\n  }\n\n  .about-Content {\n    padding: 0;\n  }\n\n  .LeftNav-sidebar {\n    display: block;\n  }\n}\n@media only screen and (min-width: 90rem) {\n  .about-Wrapper {\n    grid-template-areas: 'LeftNav-sidebar content Sidebar';\n    grid-template-columns: 1.5fr 4fr 1.5fr;\n  }\n\n  .Sidebar {\n    display: block;\n  }\n}\n"],
-  "mappings": "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",
+  "mappings": ";;;;;AAMA,kBACE,qBACA,iBAGF,kBAXA,cAeA,iBACE,gBAGF,MACE,+BApBF,uBAsBE,mBACA,cACA,eACA,kBACA,gBACA,iBACA,gBA5BF,gBA8BE,kBACA,qBAGF,eACE,kBAnCF,UAuCA,kBACE,yBAGF,kBACE,kBACA,gBACA,iBAGF,kBACE,iBACA,gBACA,iBAGF,kBACE,mBACA,gBACA,iBAGF,iBACE,kBACA,gBACA,mBAGF,eACE,aACA,eACA,8BAtEF,mBAwEE,iBACA,wBAGF,SACE,aACA,kBACA,gBAGF,WACE,aAGF,YACE,eACA,kBACA,gBACA,mBAGF,8BAEE,kBACA,kBACA,gBACA,mBAGF,gBACE,kBACA,sBACA,mBAGF,eACE,sBACA,aAGF,qBACE,mBACA,aAGF,uBACE,aACA,qBACA,YAGF,iBACE,aAGF,iBACE,aACA,0BACA,aACA,cAnIF,UAqIE,gBACA,MAGF,SACE,aACA,sBAGF,WACE,mBACA,aACA,uBACA,oBACA,qBAGF,gBACE,+BACA,QACA,eACA,kBACA,gBACA,mBA5JF,gBAgKA,4BACE,kBACA,gBAGF,cACE,kBAGF,sEAIE,wCAGF,0FAIE,wBAGF,0IAIE,4CAGF,YACE,gBACA,oBACA,iBACA,cAGF,gBACE,OACA,kBAGF,kGAIE,mBAGF,cACE,mBAGF,eACE,gBACA,aAGF,0BACE,eACE,8CACA,8BACA,gBAGF,eAjOF,UAqOE,iBACE,eAGJ,0CACE,eACE,sDACA,sCAGF,SACE",
   "names": []
 }
diff --git a/static/frontend/about/index.js b/static/frontend/about/index.js
index b888a98..4c6f1a0 100644
--- a/static/frontend/about/index.js
+++ b/static/frontend/about/index.js
@@ -1,4 +1,4 @@
-var M=async function(){if(!["/about"].includes(window.location.pathname))return;let f="h2, h3, h4",i=".LeftNav a",l=document.querySelector(".LeftNav"),c=document.querySelector(".go-Content"),u=!1;function r(t="",o={},...n){if(!t)throw new Error("Provide `type` to create document element.");let a=Object.assign(document.createElement(t),o);return n.forEach(e=>{typeof e=="string"?a.appendChild(document.createTextNode(e)):Array.isArray(e)?e.forEach(s=>a.appendChild(s)):e instanceof HTMLElement&&a.appendChild(e)}),a}function v(){return new Promise((t,o)=>{let n=[],a=[];if(!c||!l)return o(".SiteContent not found.");if(l instanceof HTMLElement&&!l?.dataset?.hydrate)return t(!0);for(let e of c.querySelectorAll(f))if(e instanceof HTMLElement&&!e?.dataset?.ignore)switch(e.tagName){case"H2":n=[...n,{id:e.id,label:e?.dataset?.title?e.dataset.title:e.textContent??""}];break;case"H3":case"H4":n[n.length-1]?.subnav?n[n.length-1].subnav&&n[n.length-1].subnav?.push({id:e.id,label:e?.dataset?.title?e.dataset.title:e.textContent??""}):n[n.length-1].subnav=[{id:e.id,label:e?.dataset?.title?e.dataset.title:e.textContent??""}];break}for(let e of n){let s=r("a",{href:"#"+e.id},r("span",{},e.label));if(a=[...a,s],e?.subnav){let m=[];for(let b of e.subnav){let H=r("li",{},r("a",{href:"#"+b.id},r("img",{src:"/static/frontend/about/dot.svg",width:"5",height:"5"}),r("span",{},b.label)));m=[...m,H]}let y=r("ul",{className:"LeftSubnav"},m);a=[...a,y]}}return a.forEach(e=>l.appendChild(e)),t(!0)})}function g(){return new Promise(t=>{if(!document.querySelectorAll(i))return t(!0);for(let o of document.querySelectorAll(i))if(o instanceof HTMLAnchorElement&&o.href===location.href){d(o);break}t(!0)})}function L(){return new Promise(t=>{if(!document.querySelectorAll(i))return t(!0);for(let o of document.querySelectorAll(i))o.classList.remove("active");t(!0)})}function d(t){t instanceof HTMLAnchorElement&&L().then(()=>{t.classList.add("active");let o=t?.parentNode?.parentNode;o instanceof HTMLElement&&o?.classList?.contains("LeftSubnav")&&o.previousElementSibling?.classList.add("active")})}function p(){h();let t=document.querySelector('[href="'+location.hash+'"]');t instanceof HTMLAnchorElement&&d(t)}function h(){u=!0,setTimeout(()=>{u=!1},200)}function E(){if(window.addEventListener("hashchange",p),c?.querySelectorAll(f)){let t=n=>{if(!u&&Array.isArray(n)&&n.length>0){for(let a of n)if(a.isIntersecting&&a.target instanceof HTMLElement){let{id:e}=a.target,s=document.querySelector('[href="#'+e+'"]');s instanceof HTMLAnchorElement&&d(s);break}}},o=new IntersectionObserver(t,{threshold:0,rootMargin:"0px 0px -50% 0px"});for(let n of c.querySelectorAll(f))n instanceof HTMLElement&&!n?.dataset?.ignore&&o.observe(n)}}try{await v(),await g(),location.hash&&h(),E()}catch(t){t instanceof Error?console.error(t.message):console.error(t)}};export{M as initJumpLinks};
+var O=async function(){if(!["/about"].includes(window.location.pathname))return;let d="h2, h3, h4",u=".LeftNav a",i=document.querySelector(".LeftNav"),c=document.querySelector(".go-Content"),h=!1;function a(t="",r={},...o){if(!t)throw new Error("Provide `type` to create document element.");let n=Object.assign(document.createElement(t),r);return o.forEach(s=>{typeof s=="string"?n.appendChild(document.createTextNode(s)):Array.isArray(s)?s.forEach(l=>n.appendChild(l)):s instanceof HTMLElement&&n.appendChild(s)}),n}function T(){return new Promise((t,r)=>{var s,l,f,L,v,E,p,y,H,A;let o=[],n=[];if(!c||!i)return r(".SiteContent not found.");if(i instanceof HTMLElement&&!((s=i==null?void 0:i.dataset)!=null&&s.hydrate))return t(!0);for(let e of c.querySelectorAll(d))if(e instanceof HTMLElement&&!((l=e==null?void 0:e.dataset)!=null&&l.ignore))switch(e.tagName){case"H2":o=[...o,{id:e.id,label:(f=e==null?void 0:e.dataset)!=null&&f.title?e.dataset.title:(L=e.textContent)!=null?L:""}];break;case"H3":case"H4":(v=o[o.length-1])!=null&&v.subnav?o[o.length-1].subnav&&((A=o[o.length-1].subnav)==null||A.push({id:e.id,label:(y=e==null?void 0:e.dataset)!=null&&y.title?e.dataset.title:(H=e.textContent)!=null?H:""})):o[o.length-1].subnav=[{id:e.id,label:(E=e==null?void 0:e.dataset)!=null&&E.title?e.dataset.title:(p=e.textContent)!=null?p:""}];break}for(let e of o){let C=a("a",{href:"#"+e.id},a("span",{},e.label));if(n=[...n,C],e!=null&&e.subnav){let b=[];for(let M of e.subnav){let x=a("li",{},a("a",{href:"#"+M.id},a("img",{src:"/static/frontend/about/dot.svg",width:"5",height:"5"}),a("span",{},M.label)));b=[...b,x]}let N=a("ul",{className:"LeftSubnav"},b);n=[...n,N]}}return n.forEach(e=>i.appendChild(e)),t(!0)})}function S(){return new Promise(t=>{if(!document.querySelectorAll(u))return t(!0);for(let r of document.querySelectorAll(u))if(r instanceof HTMLAnchorElement&&r.href===location.href){m(r);break}t(!0)})}function k(){return new Promise(t=>{if(!document.querySelectorAll(u))return t(!0);for(let r of document.querySelectorAll(u))r.classList.remove("active");t(!0)})}function m(t){t instanceof HTMLAnchorElement&&k().then(()=>{var o,n,s;t.classList.add("active");let r=(o=t==null?void 0:t.parentNode)==null?void 0:o.parentNode;r instanceof HTMLElement&&((n=r==null?void 0:r.classList)!=null&&n.contains("LeftSubnav"))&&((s=r.previousElementSibling)==null||s.classList.add("active"))})}function w(){g();let t=document.querySelector('[href="'+location.hash+'"]');t instanceof HTMLAnchorElement&&m(t)}function g(){h=!0,setTimeout(()=>{h=!1},200)}function q(){var t;if(window.addEventListener("hashchange",w),c!=null&&c.querySelectorAll(d)){let r=n=>{if(!h&&Array.isArray(n)&&n.length>0){for(let s of n)if(s.isIntersecting&&s.target instanceof HTMLElement){let{id:l}=s.target,f=document.querySelector('[href="#'+l+'"]');f instanceof HTMLAnchorElement&&m(f);break}}},o=new IntersectionObserver(r,{threshold:0,rootMargin:"0px 0px -50% 0px"});for(let n of c.querySelectorAll(d))n instanceof HTMLElement&&!((t=n==null?void 0:n.dataset)!=null&&t.ignore)&&o.observe(n)}}try{await T(),await S(),location.hash&&g(),q()}catch(t){t instanceof Error?console.error(t.message):console.error(t)}};export{O as initJumpLinks};
 /**
  * @license
  * Copyright 2022 The Go Authors. All rights reserved.
diff --git a/static/frontend/about/index.js.map b/static/frontend/about/index.js.map
index 01e0676..7cd2888 100644
--- a/static/frontend/about/index.js.map
+++ b/static/frontend/about/index.js.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["index.ts"],
   "sourcesContent": ["/**\n * @license\n * Copyright 2022 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * Left Navigation.\n */\nexport const initJumpLinks = async function () {\n  const pagesWithJumpLinks = ['/about'];\n  if (!pagesWithJumpLinks.includes(window.location.pathname)) {\n    // stop the file from doing anything else if the page doesn't have jumplinks\n    return;\n  }\n\n  // these might be generated or not so don't grab references to the elements until actually need them.\n  const titles = 'h2, h3, h4';\n  const nav = '.LeftNav a';\n  // these are always in the dom so we can get them now and throw errors if they're not.\n  const leftNav = document.querySelector('.LeftNav');\n  const siteContent = document.querySelector('.go-Content');\n  let isObserverDisabled = false;\n\n  /**\n   * El function\n   * @example el('h1', {className: 'title'}, 'Welcome to the site');\n   * @example el('ul', {className: 'list'}, el('li', {}, 'Item one'), el('li', {}, 'Item two'), el('li', {}, 'Item three'));\n   * @example el('img', {src: '/url.svg'});\n   */\n  function el(\n    type = '',\n    props: { [key: string]: string } = {},\n    ...children: (HTMLElement | HTMLElement[] | string | undefined)[]\n  ) {\n    // Error, no type declared.\n    if (!type) {\n      throw new Error('Provide `type` to create document element.');\n    }\n\n    // Create element with optional attribute props\n    const docEl = Object.assign(document.createElement(type), props);\n\n    // Children: array containing strings or elements\n    children.forEach(child => {\n      if (typeof child === 'string') {\n        docEl.appendChild(document.createTextNode(child));\n      } else if (Array.isArray(child)) {\n        child.forEach(c => docEl.appendChild(c));\n      } else if (child instanceof HTMLElement) {\n        docEl.appendChild(child);\n      }\n    });\n\n    return docEl;\n  }\n  /**  Build Nav if data hydrate is present. */\n  function buildNav() {\n    return new Promise((resolve, reject) => {\n      let navItems: { id: string; label: string; subnav?: { id: string; label: string }[] }[] = [];\n      let elements: HTMLElement[] = [];\n\n      if (!siteContent || !leftNav) {\n        return reject('.SiteContent not found.');\n      }\n      if (leftNav instanceof HTMLElement && !leftNav?.dataset?.hydrate) {\n        return resolve(true);\n      }\n\n      for (const title of siteContent.querySelectorAll(titles)) {\n        if (title instanceof HTMLElement && !title?.dataset?.ignore) {\n          switch (title.tagName) {\n            case 'H2':\n              navItems = [\n                ...navItems,\n                {\n                  id: title.id,\n                  label: title?.dataset?.title ? title.dataset.title : title.textContent ?? '',\n                },\n              ];\n              break;\n\n            case 'H3':\n            case 'H4':\n              if (!navItems[navItems.length - 1]?.subnav) {\n                navItems[navItems.length - 1].subnav = [\n                  {\n                    id: title.id,\n                    label: title?.dataset?.title ? title.dataset.title : title.textContent ?? '',\n                  },\n                ];\n              } else if (navItems[navItems.length - 1].subnav) {\n                navItems[navItems.length - 1].subnav?.push({\n                  id: title.id,\n                  label: title?.dataset?.title ? title.dataset.title : title.textContent ?? '',\n                });\n              }\n              break;\n          }\n        }\n      }\n\n      for (const navItem of navItems) {\n        const link = el('a', { href: '#' + navItem.id }, el('span', {}, navItem.label));\n        elements = [...elements, link];\n        if (navItem?.subnav) {\n          let subLinks: HTMLElement[] = [];\n          for (const subnavItem of navItem.subnav) {\n            const subItem = el(\n              'li',\n              {},\n              el(\n                'a',\n                { href: '#' + subnavItem.id },\n                el('img', { src: '/static/frontend/about/dot.svg', width: '5', height: '5' }),\n                el('span', {}, subnavItem.label)\n              )\n            );\n            subLinks = [...subLinks, subItem];\n          }\n          const list = el('ul', { className: 'LeftSubnav' }, subLinks);\n          elements = [...elements, list];\n        }\n      }\n\n      elements.forEach(element => leftNav.appendChild(element));\n\n      return resolve(true);\n    });\n  }\n  /**\n   * Set the correct active element.\n   */\n  function setNav() {\n    return new Promise(resolve => {\n      if (!document.querySelectorAll(nav)) return resolve(true);\n      for (const a of document.querySelectorAll(nav)) {\n        if (a instanceof HTMLAnchorElement && a.href === location.href) {\n          setElementActive(a);\n          break;\n        }\n      }\n      resolve(true);\n    });\n  }\n  /** resetNav: removes all .active from nav elements */\n  function resetNav() {\n    return new Promise(resolve => {\n      if (!document.querySelectorAll(nav)) return resolve(true);\n      for (const a of document.querySelectorAll(nav)) {\n        a.classList.remove('active');\n      }\n      resolve(true);\n    });\n  }\n  /** setElementActive: controls resetting nav and highlighting the appropriate nav items */\n  function setElementActive(element: HTMLAnchorElement) {\n    if (element instanceof HTMLAnchorElement) {\n      resetNav().then(() => {\n        element.classList.add('active');\n        const parent = element?.parentNode?.parentNode;\n        if (parent instanceof HTMLElement && parent?.classList?.contains('LeftSubnav')) {\n          parent.previousElementSibling?.classList.add('active');\n        }\n      });\n    }\n  }\n  /** setLinkManually: disables observer and selects the clicked nav item. */\n  function setLinkManually() {\n    delayObserver();\n    const link = document.querySelector('[href=\"' + location.hash + '\"]');\n    if (link instanceof HTMLAnchorElement) {\n      setElementActive(link);\n    }\n  }\n  /** delayObserver: Quick on off switch for intersection observer. */\n  function delayObserver() {\n    isObserverDisabled = true;\n    setTimeout(() => {\n      isObserverDisabled = false;\n    }, 200);\n  }\n  /** observeSections: kicks off observation of titles as well as manual clicks with hashchange */\n  function observeSections() {\n    window.addEventListener('hashchange', setLinkManually);\n\n    if (siteContent?.querySelectorAll(titles)) {\n      const callback: IntersectionObserverCallback = entries => {\n        if (!isObserverDisabled && Array.isArray(entries) && entries.length > 0) {\n          for (const entry of entries) {\n            if (entry.isIntersecting && entry.target instanceof HTMLElement) {\n              const { id } = entry.target;\n              const link = document.querySelector('[href=\"#' + id + '\"]');\n              if (link instanceof HTMLAnchorElement) {\n                setElementActive(link);\n              }\n              break;\n            }\n          }\n        }\n      };\n      // rootMargin is important when multiple sections are in the observable area **on page load**.\n      // they will still be highlighted on scroll because of the root margin.\n      const ob = new IntersectionObserver(callback, {\n        threshold: 0,\n        rootMargin: '0px 0px -50% 0px',\n      });\n      for (const title of siteContent.querySelectorAll(titles)) {\n        if (title instanceof HTMLElement && !title?.dataset?.ignore) {\n          ob.observe(title);\n        }\n      }\n    }\n  }\n\n  try {\n    await buildNav();\n    await setNav();\n    if (location.hash) {\n      delayObserver();\n    }\n    observeSections();\n  } catch (e) {\n    if (e instanceof Error) {\n      console.error(e.message);\n    } else {\n      console.error(e);\n    }\n  }\n};\n"],
-  "mappings": "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",
-  "names": ["initJumpLinks", "titles", "nav", "leftNav", "siteContent", "isObserverDisabled", "el", "type", "props", "children", "docEl", "child", "c", "buildNav", "resolve", "reject", "navItems", "elements", "title", "navItem", "link", "subLinks", "subnavItem", "subItem", "list", "element", "setNav", "a", "setElementActive", "resetNav", "parent", "setLinkManually", "delayObserver", "observeSections", "callback", "entries", "entry", "id", "ob", "e"]
+  "mappings": "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",
+  "names": ["initJumpLinks", "titles", "nav", "leftNav", "siteContent", "isObserverDisabled", "el", "type", "props", "children", "docEl", "child", "c", "buildNav", "resolve", "reject", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "navItems", "elements", "title", "navItem", "link", "subLinks", "subnavItem", "subItem", "list", "element", "setNav", "a", "setElementActive", "resetNav", "parent", "setLinkManually", "delayObserver", "observeSections", "callback", "entries", "entry", "id", "ob", "e"]
 }
diff --git a/static/frontend/badge/badge.min.css.map b/static/frontend/badge/badge.min.css.map
index 8cfe288..c67be9e 100644
--- a/static/frontend/badge/badge.min.css.map
+++ b/static/frontend/badge/badge.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["badge.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.Badge label,\n.Badge input {\n  width: 100%;\n}\n\n.Badge-badgeIcon {\n  height: 1.25rem;\n  width: 5.625rem;\n}\n\n.Badge-snippetContainer {\n  background-color: var(--color-background-accented);\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n  margin-top: 1rem;\n  padding: 1rem;\n}\n\n.Badge-gopherLanding {\n  height: 12.25rem;\n  text-align: center;\n}\n\n.Badge-gopherLanding img {\n  height: 7.8125rem;\n  width: auto;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,MAAM,MACP,CADC,MACM,MACL,MAAO,IACT,CAEA,CAAC,gBACC,OAAQ,QACR,MAAO,QACT,CAEA,CAAC,uBACC,iBAAkB,IAAI,6BACtB,QAAS,KACT,eAAgB,OAChB,IAAK,KACL,WAAY,KArBd,QAsBW,IACX,CAEA,CAAC,oBACC,OAAQ,SACR,WAAY,MACd,CAEA,CALC,oBAKoB,IACnB,OAAQ,UACR,MAAO,IACT",
+  "mappings": ";;;;;AAMA,0BAEE,WAGF,iBACE,eACA,eAGF,wBACE,kDACA,aACA,sBACA,SACA,gBArBF,aAyBA,qBACE,gBACA,kBAGF,yBACE,iBACA",
   "names": []
 }
diff --git a/static/frontend/error/error.min.css.map b/static/frontend/error/error.min.css.map
index 7d2bb85..30f9517 100644
--- a/static/frontend/error/error.min.css.map
+++ b/static/frontend/error/error.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["error.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.Error-message {\n  text-align: center;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,cACC,WAAY,MACd",
+  "mappings": ";;;;;AAMA,eACE",
   "names": []
 }
diff --git a/static/frontend/fetch/fetch.js b/static/frontend/fetch/fetch.js
index 056d259..962bd86 100644
--- a/static/frontend/fetch/fetch.js
+++ b/static/frontend/fetch/fetch.js
@@ -1,4 +1,4 @@
-var a=document.querySelector(".js-fetchButton");a&&a.addEventListener("click",e=>{e.preventDefault(),l()});async function l(){let e=document.querySelector(".js-fetchMessage"),t=document.querySelector(".js-fetchMessageSecondary"),o=document.querySelector(".js-fetchButton"),n=document.querySelector(".js-fetchLoading");if(!(e&&t&&o&&n))return;e.textContent=`Fetching ${e.dataset.path}`,t.textContent="Feel free to navigate away and check back later, we\u2019ll keep working on it!",o.style.display="none",n.style.display="block";let c=await fetch(`/fetch${window.location.pathname}`,{method:"POST"});if(c.ok){window.location.reload();return}let s=await c.text();n.style.display="none",t.textContent="";let r=new DOMParser().parseFromString(s,"text/html");e.innerText=r.documentElement.textContent??""}
+var s=document.querySelector(".js-fetchButton");s&&s.addEventListener("click",e=>{e.preventDefault(),i()});async function i(){var a;let e=document.querySelector(".js-fetchMessage"),t=document.querySelector(".js-fetchMessageSecondary"),o=document.querySelector(".js-fetchButton"),n=document.querySelector(".js-fetchLoading");if(!(e&&t&&o&&n))return;e.textContent=`Fetching ${e.dataset.path}`,t.textContent="Feel free to navigate away and check back later, we\u2019ll keep working on it!",o.style.display="none",n.style.display="block";let c=await fetch(`/fetch${window.location.pathname}`,{method:"POST"});if(c.ok){window.location.reload();return}let r=await c.text();n.style.display="none",t.textContent="";let l=new DOMParser().parseFromString(r,"text/html");e.innerText=(a=l.documentElement.textContent)!=null?a:""}
 /*!
  * @license
  * Copyright 2020 The Go Authors. All rights reserved.
diff --git a/static/frontend/fetch/fetch.js.map b/static/frontend/fetch/fetch.js.map
index ea6cd0f..597858b 100644
--- a/static/frontend/fetch/fetch.js.map
+++ b/static/frontend/fetch/fetch.js.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["fetch.ts"],
   "sourcesContent": ["/*!\n * @license\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nconst fetchButton = document.querySelector('.js-fetchButton');\nif (fetchButton) {\n  fetchButton.addEventListener('click', e => {\n    e.preventDefault();\n    fetchPath();\n  });\n}\n\nasync function fetchPath() {\n  const fetchMessageEl = document.querySelector<HTMLHeadingElement>('.js-fetchMessage');\n  const fetchMessageSecondary = document.querySelector<HTMLParagraphElement>(\n    '.js-fetchMessageSecondary'\n  );\n  const fetchButton = document.querySelector<HTMLButtonElement>('.js-fetchButton');\n  const fetchLoading = document.querySelector<HTMLDivElement>('.js-fetchLoading');\n  if (!(fetchMessageEl && fetchMessageSecondary && fetchButton && fetchLoading)) {\n    return;\n  }\n  fetchMessageEl.textContent = `Fetching ${fetchMessageEl.dataset.path}`;\n  fetchMessageSecondary.textContent =\n    'Feel free to navigate away and check back later, we\u2019ll keep working on it!';\n  fetchButton.style.display = 'none';\n  fetchLoading.style.display = 'block';\n\n  const response = await fetch(`/fetch${window.location.pathname}`, { method: 'POST' });\n  if (response.ok) {\n    window.location.reload();\n    return;\n  }\n  const responseText = await response.text();\n  fetchLoading.style.display = 'none';\n  fetchMessageSecondary.textContent = '';\n  const responseTextParsedDOM = new DOMParser().parseFromString(responseText, 'text/html');\n  fetchMessageEl.innerText = responseTextParsedDOM.documentElement.textContent ?? '';\n}\n\nexport {};\n"],
-  "mappings": "AAOA,IAAMA,EAAc,SAAS,cAAc,iBAAiB,EACxDA,GACFA,EAAY,iBAAiB,QAAS,GAAK,CACzC,EAAE,eAAe,EACjBC,EAAU,CACZ,CAAC,EAGH,eAAeA,GAAY,CACzB,IAAMC,EAAiB,SAAS,cAAkC,kBAAkB,EAC9EC,EAAwB,SAAS,cACrC,2BACF,EACMH,EAAc,SAAS,cAAiC,iBAAiB,EACzEI,EAAe,SAAS,cAA8B,kBAAkB,EAC9E,GAAI,EAAEF,GAAkBC,GAAyBH,GAAeI,GAC9D,OAEFF,EAAe,YAAc,YAAYA,EAAe,QAAQ,IAAI,GACpEC,EAAsB,YACpB,kFACFH,EAAY,MAAM,QAAU,OAC5BI,EAAa,MAAM,QAAU,QAE7B,IAAMC,EAAW,MAAM,MAAM,SAAS,OAAO,SAAS,QAAQ,GAAI,CAAE,OAAQ,MAAO,CAAC,EACpF,GAAIA,EAAS,GAAI,CACf,OAAO,SAAS,OAAO,EACvB,MACF,CACA,IAAMC,EAAe,MAAMD,EAAS,KAAK,EACzCD,EAAa,MAAM,QAAU,OAC7BD,EAAsB,YAAc,GACpC,IAAMI,EAAwB,IAAI,UAAU,EAAE,gBAAgBD,EAAc,WAAW,EACvFJ,EAAe,UAAYK,EAAsB,gBAAgB,aAAe,EAClF",
-  "names": ["fetchButton", "fetchPath", "fetchMessageEl", "fetchMessageSecondary", "fetchLoading", "response", "responseText", "responseTextParsedDOM"]
+  "mappings": "AAOA,IAAMA,EAAc,SAAS,cAAc,iBAAiB,EACxDA,GACFA,EAAY,iBAAiB,QAAS,GAAK,CACzC,EAAE,eAAe,EACjBC,EAAU,CACZ,CAAC,EAGH,eAAeA,GAAY,CAf3B,IAAAC,EAgBE,IAAMC,EAAiB,SAAS,cAAkC,kBAAkB,EAC9EC,EAAwB,SAAS,cACrC,2BACF,EACMJ,EAAc,SAAS,cAAiC,iBAAiB,EACzEK,EAAe,SAAS,cAA8B,kBAAkB,EAC9E,GAAI,EAAEF,GAAkBC,GAAyBJ,GAAeK,GAC9D,OAEFF,EAAe,YAAc,YAAYA,EAAe,QAAQ,OAChEC,EAAsB,YACpB,kFACFJ,EAAY,MAAM,QAAU,OAC5BK,EAAa,MAAM,QAAU,QAE7B,IAAMC,EAAW,MAAM,MAAM,SAAS,OAAO,SAAS,WAAY,CAAE,OAAQ,MAAO,CAAC,EACpF,GAAIA,EAAS,GAAI,CACf,OAAO,SAAS,OAAO,EACvB,OAEF,IAAMC,EAAe,MAAMD,EAAS,KAAK,EACzCD,EAAa,MAAM,QAAU,OAC7BD,EAAsB,YAAc,GACpC,IAAMI,EAAwB,IAAI,UAAU,EAAE,gBAAgBD,EAAc,WAAW,EACvFJ,EAAe,WAAYD,EAAAM,EAAsB,gBAAgB,cAAtC,KAAAN,EAAqD,EAClF",
+  "names": ["fetchButton", "fetchPath", "_a", "fetchMessageEl", "fetchMessageSecondary", "fetchLoading", "response", "responseText", "responseTextParsedDOM"]
 }
diff --git a/static/frontend/fetch/fetch.min.css.map b/static/frontend/fetch/fetch.min.css.map
index 83bdfd8..729058b 100644
--- a/static/frontend/fetch/fetch.min.css.map
+++ b/static/frontend/fetch/fetch.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["fetch.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.Fetch-button {\n  align-self: center;\n}\n@keyframes blink {\n  0% {\n    opacity: 0.2;\n  }\n\n  20% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0.2;\n  }\n}\n\n.Fetch-dot {\n  animation-duration: 1.4s;\n  animation-fill-mode: both;\n  animation-iteration-count: infinite;\n  animation-name: blink;\n  background-color: var(--color-brand-primary);\n  border-radius: 50%;\n  display: inline-block;\n  height: 0.5rem;\n  width: 0.5rem;\n}\n\n.Fetch-loading {\n  display: none;\n  text-align: center;\n}\n\n.Fetch-loading:nth-child(2) {\n  animation-delay: 0.2s;\n}\n\n.Fetch-loading:nth-child(3) {\n  animation-delay: 0.4s;\n}\n\n.Fetch-message,\n.Fetch-messageSecondary {\n  text-align: center;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,aACC,WAAY,MACd,CACA,WAAW,MACT,GACE,QAAS,EACX,CAEA,IACE,QAAS,CACX,CAEA,GACE,QAAS,EACX,CACF,CAEA,CAAC,UACC,mBAAoB,KACpB,oBAAqB,KACrB,0BAA2B,SAC3B,eAAgB,MAChB,iBAAkB,IAAI,uBA5BxB,cA6BiB,IACf,QAAS,aACT,OAAQ,MACR,MAAO,KACT,CAEA,CAAC,cACC,QAAS,KACT,WAAY,MACd,CAEA,CALC,aAKa,cACZ,gBAAiB,GACnB,CAEA,CATC,aASa,cACZ,gBAAiB,GACnB,CAEA,CAAC,cACD,CAAC,uBACC,WAAY,MACd",
+  "mappings": ";;;;;AAMA,cACE,kBAEF,oBAEI,eAIA,aAIA,YAIJ,WACE,wBACA,yBACA,mCACA,qBACA,4CA5BF,kBA8BE,qBACA,aACA,YAGF,eACE,aACA,kBAGF,4BACE,oBAGF,4BACE,oBAGF,uCAEE",
   "names": []
 }
diff --git a/static/frontend/frontend.js b/static/frontend/frontend.js
index 85c10f9..4c4c6bc 100644
--- a/static/frontend/frontend.js
+++ b/static/frontend/frontend.js
@@ -1,4 +1,4 @@
-function q(){let n=document.querySelector(".js-header");document.querySelectorAll(".js-desktop-menu-hover").forEach(s=>{s.addEventListener("mouseenter",r=>{let i=r.target,t=document.querySelector(".forced-open");t&&t!==s&&(t.blur(),t.classList.remove("forced-open")),i.focus(),i.blur()});let c=r=>{let t=r.target?.classList.contains("forced-open"),a=r.currentTarget;t?(a.removeEventListener("blur",()=>a.classList.remove("forced-open")),a.classList.remove("forced-open"),a.classList.add("forced-closed"),a.blur(),a?.parentNode?.addEventListener("mouseout",()=>{a.classList.remove("forced-closed")})):(a.classList.remove("forced-closed"),a.classList.add("forced-open"),a.focus(),a.addEventListener("blur",()=>a.classList.remove("forced-open")),a?.parentNode?.removeEventListener("mouseout",()=>{a.classList.remove("forced-closed")}))};s.addEventListener("click",c)}),document.querySelectorAll(".Header-menuItem").forEach(s=>{s.addEventListener("keyup",c=>{let r=c;r.key==="Escape"&&r.target?.blur()})});let l=document.querySelectorAll(".js-headerMenuButton");l.forEach(s=>{s.addEventListener("click",c=>{c.preventDefault();let r=n?.classList.contains("is-active");r?h(n):y(n),s.setAttribute("aria-expanded",r?"true":"false")})}),document.querySelector(".js-scrim")?.addEventListener("click",s=>{s.preventDefault(),document.querySelectorAll(".go-NavigationDrawer-submenuItem.is-active").forEach(r=>h(r)),h(n),l.forEach(r=>{r.setAttribute("aria-expanded",n?.classList.contains("is-active")?"true":"false")})});let f=s=>{if(!s)return[];let c=Array.from(s.querySelectorAll(":scope > .go-NavigationDrawer-nav > .go-NavigationDrawer-list > .go-NavigationDrawer-listItem > a, :scope > .go-NavigationDrawer-nav > .go-NavigationDrawer-list > .go-NavigationDrawer-listItem > .go-Header-socialIcons > a")||[]),r=s.querySelector(".go-NavigationDrawer-header > a");return r&&c.unshift(r),c},g=s=>{if(s)return s.classList.contains("go-NavigationDrawer-submenuItem")},h=s=>{if(!s)return;let c=f(s);s.classList.remove("is-active"),s.closest(".go-NavigationDrawer-listItem")?.querySelector(":scope > a")?.focus(),c?.forEach(i=>i?.setAttribute("tabindex","-1")),c&&c[0]&&(c[0].removeEventListener("keydown",p(s)),c[c.length-1].removeEventListener("keydown",v(s))),s===n&&l&&l[0]?.focus()},y=s=>{let c=f(s);s.classList.add("is-active"),c.forEach(r=>r.setAttribute("tabindex","0")),c[0].focus(),c[0].addEventListener("keydown",p(s)),c[c.length-1].addEventListener("keydown",v(s))},p=s=>c=>{c.key==="Tab"&&c.shiftKey&&(c.preventDefault(),h(s))},v=s=>c=>{c.key==="Tab"&&!c.shiftKey&&(c.preventDefault(),h(s))},T=s=>{let c=g(s),r=f(s);s.addEventListener("keyup",i=>{i.key==="Escape"&&h(s)}),r.forEach(i=>{let t=i.closest("li");if(t&&t.classList.contains("js-mobile-subnav-trigger")){let a=t.querySelector(".go-NavigationDrawer-submenuItem");i.addEventListener("click",()=>{y(a)})}}),c&&(h(s),s?.querySelector(".go-NavigationDrawer-header")?.addEventListener("click",i=>{i.preventDefault(),h(s)}))};document.querySelectorAll(".go-NavigationDrawer").forEach(s=>T(s)),h(n)}function N(){let n=document.querySelector(".js-searchForm"),e=document.querySelector(".js-expandSearch"),o=n?.querySelector("input"),l=document.querySelector(".js-headerLogo"),u=document.querySelector(".js-headerMenuButton");e?.addEventListener("click",()=>{n?.classList.add("go-SearchForm--expanded"),l?.classList.add("go-Header-logo--hidden"),u?.classList.add("go-Header-navOpen--hidden"),o?.focus()}),document?.addEventListener("click",f=>{n?.contains(f.target)||(n?.classList.remove("go-SearchForm--expanded"),l?.classList.remove("go-Header-logo--hidden"),u?.classList.remove("go-Header-navOpen--hidden"))})}var S=class{constructor(e){this.el=e;this.setActive=e=>{this.activeIndex=(e+this.slides.length)%this.slides.length,this.el.setAttribute("data-slide-index",String(this.activeIndex));for(let o of this.dots)o.classList.remove("go-Carousel-dot--active");this.dots[this.activeIndex].classList.add("go-Carousel-dot--active");for(let o of this.slides)o.setAttribute("aria-hidden","true");this.slides[this.activeIndex].removeAttribute("aria-hidden"),this.liveRegion.textContent="Slide "+(this.activeIndex+1)+" of "+this.slides.length};this.slides=Array.from(e.querySelectorAll(".go-Carousel-slide")),this.dots=[],this.liveRegion=document.createElement("div"),this.activeIndex=Number(e.getAttribute("data-slide-index")??0),this.initSlides(),this.initArrows(),this.initDots(),this.initLiveRegion()}initSlides(){for(let[e,o]of this.slides.entries())e!==this.activeIndex&&o.setAttribute("aria-hidden","true")}initArrows(){let e=document.createElement("ul");e.classList.add("go-Carousel-arrows"),e.innerHTML=`
+function P(){let t=document.querySelector(".js-header");document.querySelectorAll(".js-desktop-menu-hover").forEach(a=>{a.addEventListener("mouseenter",c=>{let l=c.target,s=document.querySelector(".forced-open");s&&s!==a&&(s.blur(),s.classList.remove("forced-open")),l.classList.remove("forced-closed"),l.classList.add("forced-open")});let u=c=>{var f,p;let l=c.target,s=l==null?void 0:l.classList.contains("forced-open"),o=c.currentTarget;s?(o.removeEventListener("blur",()=>o.classList.remove("forced-open")),o.classList.remove("forced-open"),o.classList.add("forced-closed"),o.blur(),(f=o==null?void 0:o.parentNode)==null||f.addEventListener("mouseout",()=>{o.classList.remove("forced-closed")})):(o.classList.remove("forced-closed"),o.classList.add("forced-open"),o.focus(),o.addEventListener("blur",()=>o.classList.remove("forced-open")),(p=o==null?void 0:o.parentNode)==null||p.removeEventListener("mouseout",()=>{o.classList.remove("forced-closed")})),o.focus()};a.addEventListener("click",u),a.addEventListener("focus",c=>{let l=c.target;l.classList.add("forced-closed"),l.classList.remove("forced-open")});let d=c=>{let l=c,s=c.target;if(l.key==="Escape"){let o=document.querySelector(".forced-open");o&&(o.classList.remove("forced-open"),o.blur(),o.classList.add("forced-closed"),s==null||s.focus())}};document.addEventListener("keydown",d)});let n=document.querySelectorAll(".js-headerMenuButton");n.forEach(a=>{a.addEventListener("click",u=>{u.preventDefault();let d=t==null?void 0:t.classList.contains("is-active");d?v(t):w(t),a.setAttribute("aria-expanded",d?"true":"false")})});let i=document.querySelector(".js-scrim");i==null||i.addEventListener("click",a=>{a.preventDefault(),document.querySelectorAll(".go-NavigationDrawer-submenuItem.is-active").forEach(d=>v(d)),v(t),n.forEach(d=>{d.setAttribute("aria-expanded",t!=null&&t.classList.contains("is-active")?"true":"false")})});let r=a=>{if(!a)return[];let u=Array.from(a.querySelectorAll(":scope > .go-NavigationDrawer-nav > .go-NavigationDrawer-list > .go-NavigationDrawer-listItem > a, :scope > .go-NavigationDrawer-nav > .go-NavigationDrawer-list > .go-NavigationDrawer-listItem > .go-Header-socialIcons > a")||[]),d=a.querySelector(".go-NavigationDrawer-header > a");return d&&u.unshift(d),u},h=a=>{if(a)return a.classList.contains("go-NavigationDrawer-submenuItem")},v=a=>{var c,l;if(!a)return;let u=r(a);a.classList.remove("is-active");let d=(c=a.closest(".go-NavigationDrawer-listItem"))==null?void 0:c.querySelector(":scope > a");d==null||d.focus(),u==null||u.forEach(s=>s==null?void 0:s.setAttribute("tabindex","-1")),u&&u[0]&&(u[0].removeEventListener("keydown",M(a)),u[u.length-1].removeEventListener("keydown",L(a))),a===t&&n&&((l=n[0])==null||l.focus())},w=a=>{let u=r(a);a.classList.add("is-active"),u.forEach(d=>d.setAttribute("tabindex","0")),u[0].focus(),u[0].addEventListener("keydown",M(a)),u[u.length-1].addEventListener("keydown",L(a))},M=a=>u=>{u.key==="Tab"&&u.shiftKey&&(u.preventDefault(),v(a))},L=a=>u=>{u.key==="Tab"&&!u.shiftKey&&(u.preventDefault(),v(a))},b=a=>{var c;let u=h(a),d=r(a);a.addEventListener("keyup",l=>{l.key==="Escape"&&v(a)}),d.forEach(l=>{let s=l.closest("li");if(s&&s.classList.contains("js-mobile-subnav-trigger")){let o=s.querySelector(".go-NavigationDrawer-submenuItem");l.addEventListener("click",()=>{w(o)})}}),u&&(v(a),(c=a==null?void 0:a.querySelector(".go-NavigationDrawer-header"))==null||c.addEventListener("click",l=>{l.preventDefault(),v(a)}))};document.querySelectorAll(".go-NavigationDrawer").forEach(a=>b(a)),v(t)}function U(){let t=document.querySelector(".js-searchForm"),e=document.querySelector(".js-expandSearch"),n=t==null?void 0:t.querySelector("input"),i=document.querySelector(".js-headerLogo"),r=document.querySelector(".js-headerMenuButton");e==null||e.addEventListener("click",()=>{t==null||t.classList.add("go-SearchForm--expanded"),i==null||i.classList.add("go-Header-logo--hidden"),r==null||r.classList.add("go-Header-navOpen--hidden"),n==null||n.focus()}),document==null||document.addEventListener("click",h=>{t!=null&&t.contains(h.target)||(t==null||t.classList.remove("go-SearchForm--expanded"),i==null||i.classList.remove("go-Header-logo--hidden"),r==null||r.classList.remove("go-Header-navOpen--hidden"))})}var k=class{constructor(e){this.el=e;this.setActive=e=>{this.activeIndex=(e+this.slides.length)%this.slides.length,this.el.setAttribute("data-slide-index",String(this.activeIndex));for(let n of this.dots)n.classList.remove("go-Carousel-dot--active");this.dots[this.activeIndex].classList.add("go-Carousel-dot--active");for(let n of this.slides)n.setAttribute("aria-hidden","true");this.slides[this.activeIndex].removeAttribute("aria-hidden"),this.liveRegion.textContent="Slide "+(this.activeIndex+1)+" of "+this.slides.length};var n;this.slides=Array.from(e.querySelectorAll(".go-Carousel-slide")),this.dots=[],this.liveRegion=document.createElement("div"),this.activeIndex=Number((n=e.getAttribute("data-slide-index"))!=null?n:0),this.initSlides(),this.initArrows(),this.initDots(),this.initLiveRegion()}initSlides(){for(let[e,n]of this.slides.entries())e!==this.activeIndex&&n.setAttribute("aria-hidden","true")}initArrows(){var n,i;let e=document.createElement("ul");e.classList.add("go-Carousel-arrows"),e.innerHTML=`
       <li>
         <button class="go-Carousel-prevSlide" aria-label="Go to previous slide">
           <img class="go-Icon" height="24" width="24" src="/static/shared/icon/arrow_left_gm_grey_24dp.svg" alt="">
@@ -9,7 +9,7 @@
           <img class="go-Icon" height="24" width="24" src="/static/shared/icon/arrow_right_gm_grey_24dp.svg" alt="">
         </button>
       </li>
-    `,e.querySelector(".go-Carousel-prevSlide")?.addEventListener("click",()=>this.setActive(this.activeIndex-1)),e.querySelector(".go-Carousel-nextSlide")?.addEventListener("click",()=>this.setActive(this.activeIndex+1)),this.el.append(e)}initDots(){let e=document.createElement("ul");e.classList.add("go-Carousel-dots");for(let o=0;o<this.slides.length;o++){let l=document.createElement("li"),u=document.createElement("button");u.classList.add("go-Carousel-dot"),o===this.activeIndex&&u.classList.add("go-Carousel-dot--active"),u.innerHTML=`<span class="go-Carousel-obscured">Slide ${o+1}</span>`,u.addEventListener("click",()=>this.setActive(o)),l.append(u),e.append(l),this.dots.push(u)}this.el.append(e)}initLiveRegion(){this.liveRegion.setAttribute("aria-live","polite"),this.liveRegion.setAttribute("aria-atomic","true"),this.liveRegion.setAttribute("class","go-Carousel-obscured"),this.liveRegion.textContent=`Slide ${this.activeIndex+1} of ${this.slides.length}`,this.el.appendChild(this.liveRegion)}};var k=class{constructor(e){this.el=e;this.data=e.dataset.toCopy??e.innerText,!this.data&&e.parentElement?.classList.contains("go-InputGroup")&&(this.data=(this.data||e.parentElement?.querySelector("input")?.value)??""),e.addEventListener("click",o=>this.handleCopyClick(o))}handleCopyClick(e){e.preventDefault();let o=1e3;if(!navigator.clipboard){this.showTooltipText("Unable to copy",o);return}navigator.clipboard.writeText(this.data).then(()=>{this.showTooltipText("Copied!",o)}).catch(()=>{this.showTooltipText("Unable to copy",o)})}showTooltipText(e,o){this.el.setAttribute("data-tooltip",e),setTimeout(()=>this.el.setAttribute("data-tooltip",""),o)}};var H=class{constructor(e){this.el=e;document.addEventListener("click",o=>{this.el.contains(o.target)||this.el.removeAttribute("open")})}};var A=class{constructor(e){this.el=e;this.el.addEventListener("change",o=>{let l=o.target,u=l.value;l.value.startsWith("/")||(u="/"+u),window.location.href=u})}};var x=class{constructor(e){this.el=e;window.dialogPolyfill&&window.dialogPolyfill.registerDialog(e),this.init()}init(){let e=document.querySelector(`[aria-controls="${this.el.id}"]`);e&&e.addEventListener("click",()=>{this.el.showModal?this.el.showModal():this.el.setAttribute("opened","true"),this.el.querySelector("input")?.focus()});for(let o of this.el.querySelectorAll("[data-modal-close]"))o.addEventListener("click",()=>{this.el.close?this.el.close():this.el.removeAttribute("opened")})}};function I(n,e,o,l){window.dataLayer??=[],typeof n=="string"?window.dataLayer.push({event:n,event_category:e,event_action:o,event_label:l}):window.dataLayer.push(n)}function D(n){window.dataLayer??=[],window.dataLayer.push(n)}var C=class{constructor(){this.handlers={},document.addEventListener("keydown",e=>this.handleKeyPress(e))}on(e,o,l,u){return this.handlers[e]??=new Set,this.handlers[e].add({description:o,callback:l,...u}),this}handleKeyPress(e){for(let o of this.handlers[e.key.toLowerCase()]??new Set){if(o.target&&o.target!==e.target)return;let l=e.target;if(!o.target&&(l?.tagName==="INPUT"||l?.tagName==="SELECT"||l?.tagName==="TEXTAREA")||l?.isContentEditable||o.withMeta&&!(e.ctrlKey||e.metaKey)||!o.withMeta&&(e.ctrlKey||e.metaKey))return;I("keypress","hotkeys",`${e.key} pressed`,o.description),o.callback(e)}}},M=new C;function j(){let n=document.querySelector(".JumpDialog"),e=n?.querySelector(".JumpDialog-body"),o=n?.querySelector(".JumpDialog-list"),l=n?.querySelector(".JumpDialog-input"),u=document.querySelector(".js-documentation"),f;function g(){let i=[];if(u){for(let t of u.querySelectorAll("[data-kind]"))i.push(h(t));for(let t of i)t.link.addEventListener("click",function(){n?.close()});return i.sort(function(t,a){return t.lower.localeCompare(a.lower)}),i}}function h(i){let t=document.createElement("a"),a=i.getAttribute("id");t.setAttribute("href","#"+a),t.setAttribute("tabindex","-1"),t.setAttribute("data-gtmc","jump to link");let d=i.getAttribute("data-kind");return{link:t,name:a??"",kind:d??"",lower:a?.toLowerCase()??""}}let y,p=-1;function v(i){for(y=i,f||(f=g()),T(-1);o?.firstChild;)o.firstChild.remove();if(i){let t=i.toLowerCase(),a=[],d=[],L=[],w=(m,E,b)=>m.name.substring(0,E)+"<b>"+m.name.substring(E,b)+"</b>"+m.name.substring(b);for(let m of f??[]){let E=m.name.toLowerCase();if(E===t)m.link.innerHTML=w(m,0,m.name.length),a.push(m);else if(E.startsWith(t))m.link.innerHTML=w(m,0,i.length),d.push(m);else{let b=E.indexOf(t);b>-1&&(m.link.innerHTML=w(m,b,b+i.length),L.push(m))}}for(let m of a.concat(d).concat(L))o?.appendChild(m.link)}else{if(!f||f.length===0){let t=document.createElement("i");t.innerHTML="There are no symbols on this page.",o?.appendChild(t)}for(let t of f??[])t.link.innerHTML=t.name+" <i>"+t.kind+"</i>",o?.appendChild(t.link)}e&&(e.scrollTop=0),f?.length&&o&&o.children.length>0&&T(0)}function T(i){let t=o?.children;if(!(!t||!e)){if(p>=0&&t[p].classList.remove("JumpDialog-active"),i>=t.length&&(i=t.length-1),i>=0){t[i].classList.add("JumpDialog-active");let a=t[i].offsetTop-t[0].offsetTop,d=a+t[i].clientHeight;a<e.scrollTop?e.scrollTop=a:d>e.scrollTop+e.clientHeight&&(e.scrollTop=d-e.clientHeight)}p=i}}function s(i){if(p<0)return;let t=p+i;t<0&&(t=0),T(t)}l?.addEventListener("keyup",function(){l.value.toUpperCase()!=y.toUpperCase()&&v(l.value)}),l?.addEventListener("keydown",function(i){switch(i.which){case 38:s(-1),i.preventDefault();break;case 40:s(1),i.preventDefault();break;case 13:p>=0&&o&&(o.children[p].click(),i.preventDefault());break}});let c=document.querySelector(".ShortcutsDialog");M.on("f","open jump to modal",i=>{n?.open||c?.open||(i.preventDefault(),l&&(l.value=""),n?.showModal?.(),l?.focus(),v(""))}).on("?","open shortcuts modal",()=>{n?.open||c?.open||c?.showModal?.()});let r=document.querySelector(".js-jumpToInput");r&&r.addEventListener("click",()=>{l&&(l.value=""),v(""),!(n?.open||c?.open)&&(n?.showModal?.(),l?.focus())}),document.querySelector(".js-openShortcuts")?.addEventListener("click",()=>{c?.showModal?.()})}var O=async function(){if(!["/about"].includes(window.location.pathname))return;let e="h2, h3, h4",o=".LeftNav a",l=document.querySelector(".LeftNav"),u=document.querySelector(".go-Content"),f=!1;function g(r="",i={},...t){if(!r)throw new Error("Provide `type` to create document element.");let a=Object.assign(document.createElement(r),i);return t.forEach(d=>{typeof d=="string"?a.appendChild(document.createTextNode(d)):Array.isArray(d)?d.forEach(L=>a.appendChild(L)):d instanceof HTMLElement&&a.appendChild(d)}),a}function h(){return new Promise((r,i)=>{let t=[],a=[];if(!u||!l)return i(".SiteContent not found.");if(l instanceof HTMLElement&&!l?.dataset?.hydrate)return r(!0);for(let d of u.querySelectorAll(e))if(d instanceof HTMLElement&&!d?.dataset?.ignore)switch(d.tagName){case"H2":t=[...t,{id:d.id,label:d?.dataset?.title?d.dataset.title:d.textContent??""}];break;case"H3":case"H4":t[t.length-1]?.subnav?t[t.length-1].subnav&&t[t.length-1].subnav?.push({id:d.id,label:d?.dataset?.title?d.dataset.title:d.textContent??""}):t[t.length-1].subnav=[{id:d.id,label:d?.dataset?.title?d.dataset.title:d.textContent??""}];break}for(let d of t){let L=g("a",{href:"#"+d.id},g("span",{},d.label));if(a=[...a,L],d?.subnav){let w=[];for(let E of d.subnav){let b=g("li",{},g("a",{href:"#"+E.id},g("img",{src:"/static/frontend/about/dot.svg",width:"5",height:"5"}),g("span",{},E.label)));w=[...w,b]}let m=g("ul",{className:"LeftSubnav"},w);a=[...a,m]}}return a.forEach(d=>l.appendChild(d)),r(!0)})}function y(){return new Promise(r=>{if(!document.querySelectorAll(o))return r(!0);for(let i of document.querySelectorAll(o))if(i instanceof HTMLAnchorElement&&i.href===location.href){v(i);break}r(!0)})}function p(){return new Promise(r=>{if(!document.querySelectorAll(o))return r(!0);for(let i of document.querySelectorAll(o))i.classList.remove("active");r(!0)})}function v(r){r instanceof HTMLAnchorElement&&p().then(()=>{r.classList.add("active");let i=r?.parentNode?.parentNode;i instanceof HTMLElement&&i?.classList?.contains("LeftSubnav")&&i.previousElementSibling?.classList.add("active")})}function T(){s();let r=document.querySelector('[href="'+location.hash+'"]');r instanceof HTMLAnchorElement&&v(r)}function s(){f=!0,setTimeout(()=>{f=!1},200)}function c(){if(window.addEventListener("hashchange",T),u?.querySelectorAll(e)){let r=t=>{if(!f&&Array.isArray(t)&&t.length>0){for(let a of t)if(a.isIntersecting&&a.target instanceof HTMLElement){let{id:d}=a.target,L=document.querySelector('[href="#'+d+'"]');L instanceof HTMLAnchorElement&&v(L);break}}},i=new IntersectionObserver(r,{threshold:0,rootMargin:"0px 0px -50% 0px"});for(let t of u.querySelectorAll(e))t instanceof HTMLElement&&!t?.dataset?.ignore&&i.observe(t)}}try{await h(),await y(),location.hash&&s(),c()}catch(r){r instanceof Error?console.error(r.message):console.error(r)}};window.addEventListener("load",()=>{for(let n of document.querySelectorAll(".js-clipboard"))new k(n);for(let n of document.querySelectorAll(".js-modal"))new x(n);for(let n of document.querySelectorAll(".js-tooltip"))new H(n);for(let n of document.querySelectorAll(".js-selectNav"))new A(n);for(let n of document.querySelectorAll(".js-carousel"))new S(n);for(let n of document.querySelectorAll(".js-toggleTheme"))n.addEventListener("click",()=>{_()});document.querySelector(".js-gtmID")?.dataset.gtmid&&window.dataLayer?D(function(){J()}):J(),q(),N(),j(),O(),K()});M.on("/","focus search",n=>{let e=Array.from(document.querySelectorAll(".js-searchFocus")).pop();e&&!window.navigator.userAgent.includes("Firefox")&&(n.preventDefault(),e.focus())});M.on("y","set canonical url",()=>{let n=document.querySelector(".js-canonicalURLPath")?.dataset.canonicalUrlPath;if(n&&n!==""){let e=window.location.hash;e&&(n+=e),window.history.replaceState(null,"",n)}});(function(){I({"gtm.start":new Date().getTime(),event:"gtm.js"})})();function J(){let n=new URLSearchParams(window.location.search),e=n.get("utm_source");if(e!=="gopls"&&e!=="godoc"&&e!=="pkggodev")return;let o=new URL(window.location.href);n.delete("utm_source"),o.search=n.toString(),window.history.replaceState(null,"",o.toString())}function _(){let n="dark",e=document.documentElement.getAttribute("data-theme");e==="dark"?n="light":e==="light"&&(n="auto");let o="";location.hostname.endsWith("go.dev")&&(o="domain=.go.dev;"),document.documentElement.setAttribute("data-theme",n),document.cookie=`prefers-color-scheme=${n};${o}path=/;max-age=31536000;`}function K(){if(!document.cookie.match(/cookie-consent=true/)){let e=document.querySelector(".js-cookieNotice"),o=e?.querySelector("button");e?.classList.add("Cookie-notice--visible"),o?.addEventListener("click",()=>{let l="";location.hostname.endsWith("go.dev")&&(l="domain=.go.dev;"),document.cookie=`cookie-consent=true;${l}path=/;max-age=31536000`,e?.remove()})}}
+    `,(n=e.querySelector(".go-Carousel-prevSlide"))==null||n.addEventListener("click",()=>this.setActive(this.activeIndex-1)),(i=e.querySelector(".go-Carousel-nextSlide"))==null||i.addEventListener("click",()=>this.setActive(this.activeIndex+1)),this.el.append(e)}initDots(){let e=document.createElement("ul");e.classList.add("go-Carousel-dots");for(let n=0;n<this.slides.length;n++){let i=document.createElement("li"),r=document.createElement("button");r.classList.add("go-Carousel-dot"),n===this.activeIndex&&r.classList.add("go-Carousel-dot--active"),r.innerHTML=`<span class="go-Carousel-obscured">Slide ${n+1}</span>`,r.addEventListener("click",()=>this.setActive(n)),i.append(r),e.append(i),this.dots.push(r)}this.el.append(e)}initLiveRegion(){this.liveRegion.setAttribute("aria-live","polite"),this.liveRegion.setAttribute("aria-atomic","true"),this.liveRegion.setAttribute("class","go-Carousel-obscured"),this.liveRegion.textContent=`Slide ${this.activeIndex+1} of ${this.slides.length}`,this.el.appendChild(this.liveRegion)}};var A=class{constructor(e){this.el=e;var n,i,r,h,v;this.data=(n=e.dataset.toCopy)!=null?n:e.innerText,!this.data&&((i=e.parentElement)!=null&&i.classList.contains("go-InputGroup"))&&(this.data=(v=this.data||((h=(r=e.parentElement)==null?void 0:r.querySelector("input"))==null?void 0:h.value))!=null?v:""),e.addEventListener("click",w=>this.handleCopyClick(w))}handleCopyClick(e){e.preventDefault();let n=1e3;if(!navigator.clipboard){this.showTooltipText("Unable to copy",n);return}navigator.clipboard.writeText(this.data).then(()=>{this.showTooltipText("Copied!",n)}).catch(()=>{this.showTooltipText("Unable to copy",n)})}showTooltipText(e,n){this.el.setAttribute("data-tooltip",e),setTimeout(()=>this.el.setAttribute("data-tooltip",""),n)}};var x=class{constructor(e){this.el=e;document.addEventListener("click",n=>{this.el.contains(n.target)||this.el.removeAttribute("open")})}};var C=class{constructor(e){this.el=e;this.el.addEventListener("change",n=>{let i=n.target,r=i.value;i.value.startsWith("/")||(r="/"+r),window.location.href=r})}};var q=class{constructor(e){this.el=e;window.dialogPolyfill&&window.dialogPolyfill.registerDialog(e),this.init()}init(){let e=document.querySelector(`[aria-controls="${this.el.id}"]`);e&&e.addEventListener("click",()=>{var n;this.el.showModal?this.el.showModal():this.el.setAttribute("opened","true"),(n=this.el.querySelector("input"))==null||n.focus()});for(let n of this.el.querySelectorAll("[data-modal-close]"))n.addEventListener("click",()=>{this.el.close?this.el.close():this.el.removeAttribute("opened")})}};function I(t,e,n,i){var r;(r=window.dataLayer)!=null||(window.dataLayer=[]),typeof t=="string"?window.dataLayer.push({event:t,event_category:e,event_action:n,event_label:i}):window.dataLayer.push(t)}function W(t){var e;(e=window.dataLayer)!=null||(window.dataLayer=[]),window.dataLayer.push(t)}var O=class{constructor(){this.handlers={},document.addEventListener("keydown",e=>this.handleKeyPress(e))}on(e,n,i,r){var h,v;return(v=(h=this.handlers)[e])!=null||(h[e]=new Set),this.handlers[e].add({description:n,callback:i,...r}),this}handleKeyPress(e){var n;for(let i of(n=this.handlers[e.key.toLowerCase()])!=null?n:new Set){if(i.target&&i.target!==e.target)return;let r=e.target;if(!i.target&&((r==null?void 0:r.tagName)==="INPUT"||(r==null?void 0:r.tagName)==="SELECT"||(r==null?void 0:r.tagName)==="TEXTAREA")||r!=null&&r.isContentEditable||i.withMeta&&!(e.ctrlKey||e.metaKey)||!i.withMeta&&(e.ctrlKey||e.metaKey))return;I("keypress","hotkeys",`${e.key} pressed`,i.description),i.callback(e)}}},H=new O;function $(){var l;let t=document.querySelector(".JumpDialog"),e=t==null?void 0:t.querySelector(".JumpDialog-body"),n=t==null?void 0:t.querySelector(".JumpDialog-list"),i=t==null?void 0:t.querySelector(".JumpDialog-input"),r=document.querySelector(".js-documentation"),h;function v(){let s=[];if(r){for(let o of r.querySelectorAll("[data-kind]"))s.push(w(o));for(let o of s)o.link.addEventListener("click",function(){t==null||t.close()});return s.sort(function(o,f){return o.lower.localeCompare(f.lower)}),s}}function w(s){var E;let o=document.createElement("a"),f=s.getAttribute("id");o.setAttribute("href","#"+f),o.setAttribute("tabindex","-1"),o.setAttribute("data-gtmc","jump to link");let p=s.getAttribute("data-kind");return{link:o,name:f!=null?f:"",kind:p!=null?p:"",lower:(E=f==null?void 0:f.toLowerCase())!=null?E:""}}let M,L=-1;function b(s){for(M=s,h||(h=v()),a(-1);n!=null&&n.firstChild;)n.firstChild.remove();if(s){let o=s.toLowerCase(),f=[],p=[],E=[],S=(g,y,T)=>g.name.substring(0,y)+"<b>"+g.name.substring(y,T)+"</b>"+g.name.substring(T);for(let g of h!=null?h:[]){let y=g.name.toLowerCase();if(y===o)g.link.innerHTML=S(g,0,g.name.length),f.push(g);else if(y.startsWith(o))g.link.innerHTML=S(g,0,s.length),p.push(g);else{let T=y.indexOf(o);T>-1&&(g.link.innerHTML=S(g,T,T+s.length),E.push(g))}}for(let g of f.concat(p).concat(E))n==null||n.appendChild(g.link)}else{if(!h||h.length===0){let o=document.createElement("i");o.innerHTML="There are no symbols on this page.",n==null||n.appendChild(o)}for(let o of h!=null?h:[])o.link.innerHTML=o.name+" <i>"+o.kind+"</i>",n==null||n.appendChild(o.link)}e&&(e.scrollTop=0),h!=null&&h.length&&n&&n.children.length>0&&a(0)}function a(s){let o=n==null?void 0:n.children;if(!(!o||!e)){if(L>=0&&o[L].classList.remove("JumpDialog-active"),s>=o.length&&(s=o.length-1),s>=0){o[s].classList.add("JumpDialog-active");let f=o[s].offsetTop-o[0].offsetTop,p=f+o[s].clientHeight;f<e.scrollTop?e.scrollTop=f:p>e.scrollTop+e.clientHeight&&(e.scrollTop=p-e.clientHeight)}L=s}}function u(s){if(L<0)return;let o=L+s;o<0&&(o=0),a(o)}i==null||i.addEventListener("keyup",function(){i.value.toUpperCase()!=M.toUpperCase()&&b(i.value)}),i==null||i.addEventListener("keydown",function(s){switch(s.which){case 38:u(-1),s.preventDefault();break;case 40:u(1),s.preventDefault();break;case 13:L>=0&&n&&(n.children[L].click(),s.preventDefault());break}});let d=document.querySelector(".ShortcutsDialog");H.on("f","open jump to modal",s=>{var o;t!=null&&t.open||d!=null&&d.open||(s.preventDefault(),i&&(i.value=""),(o=t==null?void 0:t.showModal)==null||o.call(t),i==null||i.focus(),b(""))}).on("?","open shortcuts modal",()=>{var s;t!=null&&t.open||d!=null&&d.open||(s=d==null?void 0:d.showModal)==null||s.call(d)});let c=document.querySelector(".js-jumpToInput");c&&c.addEventListener("click",()=>{var s;i&&(i.value=""),b(""),!(t!=null&&t.open||d!=null&&d.open)&&((s=t==null?void 0:t.showModal)==null||s.call(t),i==null||i.focus())}),(l=document.querySelector(".js-openShortcuts"))==null||l.addEventListener("click",()=>{var s;(s=d==null?void 0:d.showModal)==null||s.call(d)})}var G=async function(){if(!["/about"].includes(window.location.pathname))return;let e="h2, h3, h4",n=".LeftNav a",i=document.querySelector(".LeftNav"),r=document.querySelector(".go-Content"),h=!1;function v(c="",l={},...s){if(!c)throw new Error("Provide `type` to create document element.");let o=Object.assign(document.createElement(c),l);return s.forEach(f=>{typeof f=="string"?o.appendChild(document.createTextNode(f)):Array.isArray(f)?f.forEach(p=>o.appendChild(p)):f instanceof HTMLElement&&o.appendChild(f)}),o}function w(){return new Promise((c,l)=>{var f,p,E,S,g,y,T,J,R,_;let s=[],o=[];if(!r||!i)return l(".SiteContent not found.");if(i instanceof HTMLElement&&!((f=i==null?void 0:i.dataset)!=null&&f.hydrate))return c(!0);for(let m of r.querySelectorAll(e))if(m instanceof HTMLElement&&!((p=m==null?void 0:m.dataset)!=null&&p.ignore))switch(m.tagName){case"H2":s=[...s,{id:m.id,label:(E=m==null?void 0:m.dataset)!=null&&E.title?m.dataset.title:(S=m.textContent)!=null?S:""}];break;case"H3":case"H4":(g=s[s.length-1])!=null&&g.subnav?s[s.length-1].subnav&&((_=s[s.length-1].subnav)==null||_.push({id:m.id,label:(J=m==null?void 0:m.dataset)!=null&&J.title?m.dataset.title:(R=m.textContent)!=null?R:""})):s[s.length-1].subnav=[{id:m.id,label:(y=m==null?void 0:m.dataset)!=null&&y.title?m.dataset.title:(T=m.textContent)!=null?T:""}];break}for(let m of s){let V=v("a",{href:"#"+m.id},v("span",{},m.label));if(o=[...o,V],m!=null&&m.subnav){let N=[];for(let K of m.subnav){let z=v("li",{},v("a",{href:"#"+K.id},v("img",{src:"/static/frontend/about/dot.svg",width:"5",height:"5"}),v("span",{},K.label)));N=[...N,z]}let X=v("ul",{className:"LeftSubnav"},N);o=[...o,X]}}return o.forEach(m=>i.appendChild(m)),c(!0)})}function M(){return new Promise(c=>{if(!document.querySelectorAll(n))return c(!0);for(let l of document.querySelectorAll(n))if(l instanceof HTMLAnchorElement&&l.href===location.href){b(l);break}c(!0)})}function L(){return new Promise(c=>{if(!document.querySelectorAll(n))return c(!0);for(let l of document.querySelectorAll(n))l.classList.remove("active");c(!0)})}function b(c){c instanceof HTMLAnchorElement&&L().then(()=>{var s,o,f;c.classList.add("active");let l=(s=c==null?void 0:c.parentNode)==null?void 0:s.parentNode;l instanceof HTMLElement&&((o=l==null?void 0:l.classList)!=null&&o.contains("LeftSubnav"))&&((f=l.previousElementSibling)==null||f.classList.add("active"))})}function a(){u();let c=document.querySelector('[href="'+location.hash+'"]');c instanceof HTMLAnchorElement&&b(c)}function u(){h=!0,setTimeout(()=>{h=!1},200)}function d(){var c;if(window.addEventListener("hashchange",a),r!=null&&r.querySelectorAll(e)){let l=o=>{if(!h&&Array.isArray(o)&&o.length>0){for(let f of o)if(f.isIntersecting&&f.target instanceof HTMLElement){let{id:p}=f.target,E=document.querySelector('[href="#'+p+'"]');E instanceof HTMLAnchorElement&&b(E);break}}},s=new IntersectionObserver(l,{threshold:0,rootMargin:"0px 0px -50% 0px"});for(let o of r.querySelectorAll(e))o instanceof HTMLElement&&!((c=o==null?void 0:o.dataset)!=null&&c.ignore)&&s.observe(o)}}try{await w(),await M(),location.hash&&u(),d()}catch(c){c instanceof Error?console.error(c.message):console.error(c)}};window.addEventListener("load",()=>{var t;for(let e of document.querySelectorAll(".js-clipboard"))new A(e);for(let e of document.querySelectorAll(".js-modal"))new q(e);for(let e of document.querySelectorAll(".js-tooltip"))new x(e);for(let e of document.querySelectorAll(".js-selectNav"))new C(e);for(let e of document.querySelectorAll(".js-carousel"))new k(e);for(let e of document.querySelectorAll(".js-toggleTheme"))e.addEventListener("click",()=>{Y()});(t=document.querySelector(".js-gtmID"))!=null&&t.dataset.gtmid&&window.dataLayer?W(function(){B()}):B(),P(),U(),$(),G(),Z()});H.on("/","focus search",t=>{let e=Array.from(document.querySelectorAll(".js-searchFocus")).pop();e&&!window.navigator.userAgent.includes("Firefox")&&(t.preventDefault(),e.focus())});H.on("y","set canonical url",()=>{var e;let t=(e=document.querySelector(".js-canonicalURLPath"))==null?void 0:e.dataset.canonicalUrlPath;if(t&&t!==""){let n=window.location.hash;n&&(t+=n),window.history.replaceState(null,"",t)}});(function(){I({"gtm.start":new Date().getTime(),event:"gtm.js"})})();function B(){let t=new URLSearchParams(window.location.search),e=t.get("utm_source");if(e!=="gopls"&&e!=="godoc"&&e!=="pkggodev")return;let n=new URL(window.location.href);t.delete("utm_source"),n.search=t.toString(),window.history.replaceState(null,"",n.toString())}function Y(){let t="dark",e=document.documentElement.getAttribute("data-theme");e==="dark"?t="light":e==="light"&&(t="auto");let n="";location.hostname.endsWith("go.dev")&&(n="domain=.go.dev;"),document.documentElement.setAttribute("data-theme",t),document.cookie=`prefers-color-scheme=${t};${n}path=/;max-age=31536000;`}function Z(){if(!document.cookie.match(/cookie-consent=true/)){let e=document.querySelector(".js-cookieNotice"),n=e==null?void 0:e.querySelector("button");e==null||e.classList.add("Cookie-notice--visible"),n==null||n.addEventListener("click",()=>{let i="";location.hostname.endsWith("go.dev")&&(i="domain=.go.dev;"),document.cookie=`cookie-consent=true;${i}path=/;max-age=31536000`,e==null||e.remove()})}}
 /**
  * @license
  * Copyright 2021 The Go Authors. All rights reserved.
diff --git a/static/frontend/frontend.js.map b/static/frontend/frontend.js.map
index cb08d2c..a2c3058 100644
--- a/static/frontend/frontend.js.map
+++ b/static/frontend/frontend.js.map
@@ -1,7 +1,7 @@
 {
   "version": 3,
   "sources": ["../shared/header/header.ts", "../shared/carousel/carousel.ts", "../shared/clipboard/clipboard.ts", "../shared/tooltip/tooltip.ts", "../shared/outline/select.ts", "../shared/modal/modal.ts", "../shared/analytics/analytics.ts", "../shared/keyboard/keyboard.ts", "../shared/jump/jump.ts", "about/index.ts", "frontend.ts"],
-  "sourcesContent": ["/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nexport function registerHeaderListeners(): void {\n  const header = document.querySelector('.js-header') as HTMLElement;\n\n  // Desktop menu hover state\n  const menuItemHovers = document.querySelectorAll('.js-desktop-menu-hover');\n  menuItemHovers.forEach(menuItemHover => {\n    // when user clicks on the dropdown menu item on desktop or mobile,\n    // force the menu to stay open until the user clicks off of it.\n    menuItemHover.addEventListener('mouseenter', e => {\n      const target = e.target as HTMLElement;\n      const forced = document.querySelector('.forced-open') as HTMLElement;\n      if (forced && forced !== menuItemHover) {\n        forced.blur();\n        forced.classList.remove('forced-open');\n      }\n      // prevents menus that have been tabbed into from staying open\n      // when you hover over another menu\n      target.focus();\n      target.blur();\n    });\n\n    const toggleForcedOpen = (e: Event) => {\n      const target = e.target as HTMLElement;\n      const isForced = target?.classList.contains('forced-open');\n      const currentTarget = e.currentTarget as HTMLElement;\n      if (isForced) {\n        currentTarget.removeEventListener('blur', () =>\n          currentTarget.classList.remove('forced-open')\n        );\n        currentTarget.classList.remove('forced-open');\n        currentTarget.classList.add('forced-closed');\n        currentTarget.blur();\n        currentTarget?.parentNode?.addEventListener('mouseout', () => {\n          currentTarget.classList.remove('forced-closed');\n        });\n      } else {\n        currentTarget.classList.remove('forced-closed');\n        currentTarget.classList.add('forced-open');\n        currentTarget.focus();\n        currentTarget.addEventListener('blur', () => currentTarget.classList.remove('forced-open'));\n        currentTarget?.parentNode?.removeEventListener('mouseout', () => {\n          currentTarget.classList.remove('forced-closed');\n        });\n      }\n    };\n    menuItemHover.addEventListener('click', toggleForcedOpen);\n  });\n\n  // ensure desktop submenus are closed when esc is pressed\n  const headerItems = document.querySelectorAll('.Header-menuItem');\n  headerItems.forEach(header => {\n    header.addEventListener('keyup', e => {\n      const event = e as KeyboardEvent;\n      if (event.key === 'Escape') {\n        (event.target as HTMLElement)?.blur();\n      }\n    });\n  });\n\n  // Mobile menu subnav menus\n  const headerbuttons = document.querySelectorAll('.js-headerMenuButton');\n  headerbuttons.forEach(button => {\n    button.addEventListener('click', e => {\n      e.preventDefault();\n      const isActive = header?.classList.contains('is-active');\n      if (isActive) {\n        handleNavigationDrawerInactive(header);\n      } else {\n        handleNavigationDrawerActive(header);\n      }\n      button.setAttribute('aria-expanded', isActive ? 'true' : 'false');\n    });\n  });\n\n  const scrim = document.querySelector('.js-scrim');\n  scrim?.addEventListener('click', e => {\n    e.preventDefault();\n\n    // find any active submenus and close them\n    const activeSubnavs = document.querySelectorAll('.go-NavigationDrawer-submenuItem.is-active');\n    activeSubnavs.forEach(subnav => handleNavigationDrawerInactive(subnav as HTMLElement));\n\n    handleNavigationDrawerInactive(header);\n\n    headerbuttons.forEach(button => {\n      button.setAttribute(\n        'aria-expanded',\n        header?.classList.contains('is-active') ? 'true' : 'false'\n      );\n    });\n  });\n\n  const getNavigationDrawerMenuItems = (navigationDrawer: HTMLElement): HTMLElement[] => {\n    if (!navigationDrawer) {\n      return [];\n    }\n\n    const menuItems = Array.from(\n      navigationDrawer.querySelectorAll(\n        ':scope > .go-NavigationDrawer-nav > .go-NavigationDrawer-list > .go-NavigationDrawer-listItem > a, :scope > .go-NavigationDrawer-nav > .go-NavigationDrawer-list > .go-NavigationDrawer-listItem > .go-Header-socialIcons > a'\n      ) || []\n    );\n\n    const anchorEl = navigationDrawer.querySelector('.go-NavigationDrawer-header > a');\n    if (anchorEl) {\n      menuItems.unshift(anchorEl);\n    }\n    return menuItems as HTMLElement[];\n  };\n\n  const getNavigationDrawerIsSubnav = (navigationDrawer: HTMLElement) => {\n    if (!navigationDrawer) {\n      return;\n    }\n    return navigationDrawer.classList.contains('go-NavigationDrawer-submenuItem');\n  };\n\n  const handleNavigationDrawerInactive = (navigationDrawer: HTMLElement) => {\n    if (!navigationDrawer) {\n      return;\n    }\n    const menuItems = getNavigationDrawerMenuItems(navigationDrawer);\n    navigationDrawer.classList.remove('is-active');\n    const parentMenuItem = navigationDrawer\n      .closest('.go-NavigationDrawer-listItem')\n      ?.querySelector(':scope > a') as HTMLElement;\n    parentMenuItem?.focus();\n    menuItems?.forEach(item => item?.setAttribute('tabindex', '-1'));\n    if (menuItems && menuItems[0]) {\n      menuItems[0].removeEventListener('keydown', handleMenuItemTabLeftFactory(navigationDrawer));\n      menuItems[menuItems.length - 1].removeEventListener(\n        'keydown',\n        handleMenuItemTabRightFactory(navigationDrawer)\n      );\n    }\n\n    if (navigationDrawer === header) {\n      headerbuttons && (headerbuttons[0] as HTMLElement)?.focus();\n    }\n  };\n\n  const handleNavigationDrawerActive = (navigationDrawer: HTMLElement) => {\n    const menuItems = getNavigationDrawerMenuItems(navigationDrawer);\n\n    navigationDrawer.classList.add('is-active');\n    menuItems.forEach(item => item.setAttribute('tabindex', '0'));\n    menuItems[0].focus();\n\n    menuItems[0].addEventListener('keydown', handleMenuItemTabLeftFactory(navigationDrawer));\n    menuItems[menuItems.length - 1].addEventListener(\n      'keydown',\n      handleMenuItemTabRightFactory(navigationDrawer)\n    );\n  };\n\n  const handleMenuItemTabLeftFactory = (navigationDrawer: HTMLElement) => {\n    return (e: KeyboardEvent) => {\n      if (e.key === 'Tab' && e.shiftKey) {\n        e.preventDefault();\n        handleNavigationDrawerInactive(navigationDrawer);\n      }\n    };\n  };\n\n  const handleMenuItemTabRightFactory = (navigationDrawer: HTMLElement) => {\n    return (e: KeyboardEvent) => {\n      if (e.key === 'Tab' && !e.shiftKey) {\n        e.preventDefault();\n        handleNavigationDrawerInactive(navigationDrawer);\n      }\n    };\n  };\n\n  const prepMobileNavigationDrawer = (navigationDrawer: HTMLElement) => {\n    const isSubnav = getNavigationDrawerIsSubnav(navigationDrawer);\n    const menuItems = getNavigationDrawerMenuItems(navigationDrawer);\n    navigationDrawer.addEventListener('keyup', e => {\n      if (e.key === 'Escape') {\n        handleNavigationDrawerInactive(navigationDrawer);\n      }\n    });\n\n    menuItems.forEach(item => {\n      const parentLi = item.closest('li');\n      if (parentLi && parentLi.classList.contains('js-mobile-subnav-trigger')) {\n        const submenu = parentLi.querySelector('.go-NavigationDrawer-submenuItem') as HTMLElement;\n        item.addEventListener('click', () => {\n          handleNavigationDrawerActive(submenu);\n        });\n      }\n    });\n    if (isSubnav) {\n      handleNavigationDrawerInactive(navigationDrawer);\n      navigationDrawer\n        ?.querySelector('.go-NavigationDrawer-header')\n        ?.addEventListener('click', e => {\n          e.preventDefault();\n          handleNavigationDrawerInactive(navigationDrawer);\n        });\n    }\n  };\n\n  document\n    .querySelectorAll('.go-NavigationDrawer')\n    .forEach(drawer => prepMobileNavigationDrawer(drawer as HTMLElement));\n\n  handleNavigationDrawerInactive(header);\n}\n\nexport function registerSearchFormListeners(): void {\n  const searchForm = document.querySelector('.js-searchForm');\n  const expandSearch = document.querySelector('.js-expandSearch');\n  const input = searchForm?.querySelector('input');\n  const headerLogo = document.querySelector('.js-headerLogo');\n  const menuButton = document.querySelector('.js-headerMenuButton');\n  expandSearch?.addEventListener('click', () => {\n    searchForm?.classList.add('go-SearchForm--expanded');\n    headerLogo?.classList.add('go-Header-logo--hidden');\n    menuButton?.classList.add('go-Header-navOpen--hidden');\n    input?.focus();\n  });\n  document?.addEventListener('click', e => {\n    if (!searchForm?.contains(e.target as Node)) {\n      searchForm?.classList.remove('go-SearchForm--expanded');\n      headerLogo?.classList.remove('go-Header-logo--hidden');\n      menuButton?.classList.remove('go-Header-navOpen--hidden');\n    }\n  });\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * Carousel Controller adds event listeners, accessibility enhancements, and\n * control elements to a carousel component.\n */\nexport class CarouselController {\n  /**\n   * slides is a collection of slides in the carousel.\n   */\n  private slides: HTMLLIElement[];\n  /**\n   * dots is a collection of dot navigation controls, added to the carousel\n   * by this controller.\n   */\n  private dots: HTMLElement[];\n  /**\n   * liveRegion is a visually hidden element that notifies assitive devices\n   * of visual changes to the carousel. They are added to the carousel by\n   * this controller.\n   */\n  private liveRegion: HTMLElement;\n  /**\n   * activeIndex is the 0-index of the currently active slide.\n   */\n  private activeIndex: number;\n\n  constructor(private el: HTMLElement) {\n    this.slides = Array.from(el.querySelectorAll('.go-Carousel-slide'));\n    this.dots = [];\n    this.liveRegion = document.createElement('div');\n    this.activeIndex = Number(el.getAttribute('data-slide-index') ?? 0);\n\n    this.initSlides();\n    this.initArrows();\n    this.initDots();\n    this.initLiveRegion();\n  }\n\n  private initSlides() {\n    for (const [i, v] of this.slides.entries()) {\n      if (i === this.activeIndex) continue;\n      v.setAttribute('aria-hidden', 'true');\n    }\n  }\n\n  private initArrows() {\n    const arrows = document.createElement('ul');\n    arrows.classList.add('go-Carousel-arrows');\n    arrows.innerHTML = `\n      <li>\n        <button class=\"go-Carousel-prevSlide\" aria-label=\"Go to previous slide\">\n          <img class=\"go-Icon\" height=\"24\" width=\"24\" src=\"/static/shared/icon/arrow_left_gm_grey_24dp.svg\" alt=\"\">\n        </button>\n      </li>\n      <li>\n        <button class=\"go-Carousel-nextSlide\" aria-label=\"Go to next slide\">\n          <img class=\"go-Icon\" height=\"24\" width=\"24\" src=\"/static/shared/icon/arrow_right_gm_grey_24dp.svg\" alt=\"\">\n        </button>\n      </li>\n    `;\n    arrows\n      .querySelector('.go-Carousel-prevSlide')\n      ?.addEventListener('click', () => this.setActive(this.activeIndex - 1));\n    arrows\n      .querySelector('.go-Carousel-nextSlide')\n      ?.addEventListener('click', () => this.setActive(this.activeIndex + 1));\n    this.el.append(arrows);\n  }\n\n  private initDots() {\n    const dots = document.createElement('ul');\n    dots.classList.add('go-Carousel-dots');\n    for (let i = 0; i < this.slides.length; i++) {\n      const li = document.createElement('li');\n      const button = document.createElement('button');\n      button.classList.add('go-Carousel-dot');\n      if (i === this.activeIndex) {\n        button.classList.add('go-Carousel-dot--active');\n      }\n      button.innerHTML = `<span class=\"go-Carousel-obscured\">Slide ${i + 1}</span>`;\n      button.addEventListener('click', () => this.setActive(i));\n      li.append(button);\n      dots.append(li);\n      this.dots.push(button);\n    }\n    this.el.append(dots);\n  }\n\n  private initLiveRegion() {\n    this.liveRegion.setAttribute('aria-live', 'polite');\n    this.liveRegion.setAttribute('aria-atomic', 'true');\n    this.liveRegion.setAttribute('class', 'go-Carousel-obscured');\n    this.liveRegion.textContent = `Slide ${this.activeIndex + 1} of ${this.slides.length}`;\n    this.el.appendChild(this.liveRegion);\n  }\n\n  private setActive = (index: number) => {\n    this.activeIndex = (index + this.slides.length) % this.slides.length;\n    this.el.setAttribute('data-slide-index', String(this.activeIndex));\n    for (const d of this.dots) {\n      d.classList.remove('go-Carousel-dot--active');\n    }\n    this.dots[this.activeIndex].classList.add('go-Carousel-dot--active');\n    for (const s of this.slides) {\n      s.setAttribute('aria-hidden', 'true');\n    }\n    this.slides[this.activeIndex].removeAttribute('aria-hidden');\n    this.liveRegion.textContent = 'Slide ' + (this.activeIndex + 1) + ' of ' + this.slides.length;\n  };\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * This class decorates an element to copy arbitrary data attached via a data-\n * attribute to the clipboard.\n */\nexport class ClipboardController {\n  /**\n   * The data to be copied to the clipboard.\n   */\n  private data: string;\n\n  /**\n   * @param el The element that will trigger copying text to the clipboard. The text is\n   * expected to be within its data-to-copy attribute.\n   */\n  constructor(private el: HTMLButtonElement) {\n    this.data = el.dataset['toCopy'] ?? el.innerText;\n    // if data-to-copy is empty and the button is part of an input group\n    // capture the value of the input.\n    if (!this.data && el.parentElement?.classList.contains('go-InputGroup')) {\n      this.data = (this.data || el.parentElement?.querySelector('input')?.value) ?? '';\n    }\n    el.addEventListener('click', e => this.handleCopyClick(e));\n  }\n\n  /**\n   * Handles when the primary element is clicked.\n   */\n  handleCopyClick(e: MouseEvent): void {\n    e.preventDefault();\n    const TOOLTIP_SHOW_DURATION_MS = 1000;\n\n    // This API is not available on iOS.\n    if (!navigator.clipboard) {\n      this.showTooltipText('Unable to copy', TOOLTIP_SHOW_DURATION_MS);\n      return;\n    }\n    navigator.clipboard\n      .writeText(this.data)\n      .then(() => {\n        this.showTooltipText('Copied!', TOOLTIP_SHOW_DURATION_MS);\n      })\n      .catch(() => {\n        this.showTooltipText('Unable to copy', TOOLTIP_SHOW_DURATION_MS);\n      });\n  }\n\n  /**\n   * Shows the given text in a tooltip for a specified amount of time, in milliseconds.\n   */\n  showTooltipText(text: string, durationMs: number): void {\n    this.el.setAttribute('data-tooltip', text);\n    setTimeout(() => this.el.setAttribute('data-tooltip', ''), durationMs);\n  }\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * ToolTipController handles closing tooltips on external clicks.\n */\nexport class ToolTipController {\n  constructor(private el: HTMLDetailsElement) {\n    document.addEventListener('click', e => {\n      const insideTooltip = this.el.contains(e.target as Element);\n      if (!insideTooltip) {\n        this.el.removeAttribute('open');\n      }\n    });\n  }\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { TreeNavController } from './tree.js';\n\nexport class SelectNavController {\n  constructor(private el: Element) {\n    this.el.addEventListener('change', e => {\n      const target = e.target as HTMLSelectElement;\n      let href = target.value;\n      if (!target.value.startsWith('/')) {\n        href = '/' + href;\n      }\n      window.location.href = href;\n    });\n  }\n}\n\nexport function makeSelectNav(tree: TreeNavController): HTMLLabelElement {\n  const label = document.createElement('label');\n  label.classList.add('go-Label');\n  label.setAttribute('aria-label', 'Menu');\n  const select = document.createElement('select');\n  select.classList.add('go-Select', 'js-selectNav');\n  label.appendChild(select);\n  const outline = document.createElement('optgroup');\n  outline.label = 'Outline';\n  select.appendChild(outline);\n  const groupMap: Record<string, HTMLOptGroupElement> = {};\n  let group: HTMLOptGroupElement;\n  for (const t of tree.treeitems) {\n    if (Number(t.depth) > 4) continue;\n    if (t.groupTreeitem) {\n      group = groupMap[t.groupTreeitem.label];\n      if (!group) {\n        group = groupMap[t.groupTreeitem.label] = document.createElement('optgroup');\n        group.label = t.groupTreeitem.label;\n        select.appendChild(group);\n      }\n    } else {\n      group = outline;\n    }\n    const o = document.createElement('option');\n    o.label = t.label;\n    o.textContent = t.label;\n    o.value = (t.el as HTMLAnchorElement).href.replace(window.location.origin, '').replace('/', '');\n    group.appendChild(o);\n  }\n  tree.addObserver(t => {\n    const hash = (t.el as HTMLAnchorElement).hash;\n    const value = select.querySelector<HTMLOptionElement>(`[value$=\"${hash}\"]`)?.value;\n    if (value) {\n      select.value = value;\n    }\n  }, 50);\n  return label;\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\ninterface Window {\n  dialogPolyfill?: {\n    registerDialog: (el: HTMLDialogElement) => void;\n  };\n}\n\ndeclare const window: Window;\n\n/**\n * ModalController registers a dialog element with the polyfill if\n * necessary for the current browser, add adds event listeners to\n * close and open modals.\n */\nexport class ModalController {\n  constructor(private el: HTMLDialogElement) {\n    if (window.dialogPolyfill) {\n      window.dialogPolyfill.registerDialog(el);\n    }\n    this.init();\n  }\n\n  init() {\n    const button = document.querySelector<HTMLButtonElement>(`[aria-controls=\"${this.el.id}\"]`);\n    if (button) {\n      button.addEventListener('click', () => {\n        if (this.el.showModal) {\n          this.el.showModal();\n        } else {\n          this.el.setAttribute('opened', 'true');\n        }\n        this.el.querySelector('input')?.focus();\n      });\n    }\n    for (const btn of this.el.querySelectorAll<HTMLButtonElement>('[data-modal-close]')) {\n      btn.addEventListener('click', () => {\n        if (this.el.close) {\n          this.el.close();\n        } else {\n          this.el.removeAttribute('opened');\n        }\n      });\n    }\n  }\n}\n", "interface TagManagerEvent {\n  /**\n   * event is the name of the event, used to filter events in\n   * Google Analytics.\n   */\n  event: string;\n\n  /**\n   * event_category is a name that you supply as a way to group objects\n   * that to analyze. Typically, you will use the same category name\n   * multiple times over related UI elements (buttons, links, etc).\n   */\n  event_category?: string;\n\n  /**\n   * event_action is used to name the type of event or interaction you\n   * want to measure for a particular web object. For example, with a\n   * single \"form\" category, you can analyze a number of specific events\n   * with this parameter, such as: form entered, form submitted.\n   */\n  event_action?: string;\n\n  /**\n   * event_label provide additional information for events that you want\n   * to analyze, such as the text label of a link.\n   */\n  event_label?: string;\n\n  /**\n   * gtm.start is used to initialize Google Tag Manager.\n   */\n  'gtm.start'?: number;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare global {\n  interface Window {\n    dataLayer?: (TagManagerEvent | VoidFunction)[];\n    ga?: unknown;\n  }\n}\n\n/**\n * track sends events to Google Tag Manager.\n */\nexport function track(\n  event: string | TagManagerEvent,\n  category?: string,\n  action?: string,\n  label?: string\n): void {\n  window.dataLayer ??= [];\n  if (typeof event === 'string') {\n    window.dataLayer.push({\n      event,\n      event_category: category,\n      event_action: action,\n      event_label: label,\n    });\n  } else {\n    window.dataLayer.push(event);\n  }\n}\n\n/**\n * func adds functions to run sequentionally after\n * Google Tag Manager is ready.\n */\nexport function func(fn: () => void): void {\n  window.dataLayer ??= [];\n  window.dataLayer.push(fn);\n}\n", "/*!\n * @license\n * Copyright 2019-2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { track } from '../analytics/analytics';\n\n/**\n * Options are keyhandler callback options.\n */\ninterface Options {\n  /**\n   * target is the element the key event should filter on. The\n   * default target is the document.\n   */\n  target?: Element;\n\n  /**\n   * withMeta specifies if the event callback should fire when\n   * the key is pressed with a meta key (ctrl, alt, etc). By\n   * default meta keypresses are ignored.\n   */\n  withMeta?: boolean;\n}\n\n/**\n * KeyHandler is the config for a keyboard event callback.\n */\ninterface KeyHandler extends Options {\n  description: string;\n  callback: (e: KeyboardEvent) => void;\n}\n\n/**\n * KeyboardController controls event callbacks for sitewide\n * keyboard events. Multiple callbacks can be registered for\n * a single key and by default the controller ignores events\n * for text input targets.\n */\nclass KeyboardController {\n  handlers: Record<string, Set<KeyHandler>>;\n\n  constructor() {\n    this.handlers = {};\n    document.addEventListener('keydown', e => this.handleKeyPress(e));\n  }\n\n  /**\n   * on registers keyboard event callbacks.\n   * @param key the key to register.\n   * @param description name of the event.\n   * @param callback event callback.\n   * @param options set target and withMeta options to override the default behaviors.\n   */\n  on(key: string, description: string, callback: (e: KeyboardEvent) => void, options?: Options) {\n    this.handlers[key] ??= new Set();\n    this.handlers[key].add({ description, callback, ...options });\n    return this;\n  }\n\n  private handleKeyPress(e: KeyboardEvent) {\n    for (const handler of this.handlers[e.key.toLowerCase()] ?? new Set()) {\n      if (handler.target && handler.target !== e.target) {\n        return;\n      }\n      const t = e.target as HTMLElement | null;\n      if (\n        !handler.target &&\n        (t?.tagName === 'INPUT' || t?.tagName === 'SELECT' || t?.tagName === 'TEXTAREA')\n      ) {\n        return;\n      }\n      if (t?.isContentEditable) {\n        return;\n      }\n      if (\n        (handler.withMeta && !(e.ctrlKey || e.metaKey)) ||\n        (!handler.withMeta && (e.ctrlKey || e.metaKey))\n      ) {\n        return;\n      }\n      track('keypress', 'hotkeys', `${e.key} pressed`, handler.description);\n      handler.callback(e);\n    }\n  }\n}\n\nexport const keyboard = new KeyboardController();\n", "/*!\n * @license\n * Copyright 2019-2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n// This file implements the behavior of the \"jump to symbol\" dialog for Go\n// package documentation, as well as the simple dialog that displays keyboard\n// shortcuts.\n\n// The DOM for the dialogs is at the bottom of static/frontend/unit/main/_modals.tmpl.\n// The CSS is in static/frontend/unit/main/_modals.css.\n\n// The dialog is activated by pressing the 'f' key. It presents a list\n// (#JumpDialog-list) of all Go symbols displayed in the documentation.\n// Entering text in the dialog's text box (#JumpDialog-filter) restricts the\n// list to symbols containing the text. Clicking on an symbol jumps to\n// its documentation.\n\n// This code is based on\n// https://go.googlesource.com/gddo/+/refs/heads/master/gddo-server/assets/site.js.\n// It was modified to remove the dependence on jquery and bootstrap.\n\nimport { keyboard } from '../keyboard/keyboard';\n\nexport function initModals(): void {\n  const jumpDialog = document.querySelector<HTMLDialogElement>('.JumpDialog');\n  const jumpBody = jumpDialog?.querySelector<HTMLDivElement>('.JumpDialog-body');\n  const jumpList = jumpDialog?.querySelector<HTMLDivElement>('.JumpDialog-list');\n  const jumpFilter = jumpDialog?.querySelector<HTMLInputElement>('.JumpDialog-input');\n  const doc = document.querySelector<HTMLDivElement>('.js-documentation');\n\n  interface JumpListItem {\n    link: HTMLAnchorElement;\n    name: string;\n    kind: string;\n    lower: string;\n  }\n\n  let jumpListItems: JumpListItem[] | undefined; // All the symbols in the doc; computed only once.\n\n  // collectJumpListItems returns a list of items, one for each symbol in the\n  // documentation on the current page.\n  //\n  // It uses the data-kind attribute generated in the documentation HTML to find\n  // the symbols and their id attributes.\n  //\n  // If there are no data-kind attributes, then we have older doc; fall back to\n  // a less precise method.\n  function collectJumpListItems() {\n    const items = [];\n    if (!doc) return;\n    for (const el of doc.querySelectorAll('[data-kind]')) {\n      items.push(newJumpListItem(el));\n    }\n\n    // Clicking on any of the links closes the dialog.\n    for (const item of items) {\n      item.link.addEventListener('click', function () {\n        jumpDialog?.close();\n      });\n    }\n    // Sort case-insensitively by symbol name.\n    items.sort(function (a, b) {\n      return a.lower.localeCompare(b.lower);\n    });\n    return items;\n  }\n\n  // newJumpListItem creates a new item for the DOM element el.\n  // An item is an object with:\n  // - name: the element's id (which is the symbol name)\n  // - kind: the element's kind (function, variable, etc.),\n  // - link: a link ('a' tag) to the element\n  // - lower: the name in lower case, just for sorting\n  function newJumpListItem(el: Element): JumpListItem {\n    const a = document.createElement('a');\n    const name = el.getAttribute('id');\n    a.setAttribute('href', '#' + name);\n    a.setAttribute('tabindex', '-1');\n    a.setAttribute('data-gtmc', 'jump to link');\n    const kind = el.getAttribute('data-kind');\n    return {\n      link: a,\n      name: name ?? '',\n      kind: kind ?? '',\n      lower: name?.toLowerCase() ?? '', // for sorting\n    };\n  }\n\n  let lastFilterValue: string; // The last contents of the filter text box.\n  let activeJumpItem = -1; // The index of the currently active item in the list.\n\n  // updateJumpList sets the elements of the dialog list to\n  // everything whose name contains filter.\n  function updateJumpList(filter: string) {\n    lastFilterValue = filter;\n    if (!jumpListItems) {\n      jumpListItems = collectJumpListItems();\n    }\n    setActiveJumpItem(-1);\n\n    // Remove all children from list.\n    while (jumpList?.firstChild) {\n      jumpList.firstChild.remove();\n    }\n\n    if (filter) {\n      // A filter is set. We treat the filter as a substring that can appear in\n      // an item name (case insensitive), and find the following matches - in\n      // order of priority:\n      //\n      // 1. Exact matches (the filter matches the item's name exactly)\n      // 2. Prefix matches (the item's name starts with filter)\n      // 3. Infix matches (the filter is a substring of the item's name)\n      const filterLowerCase = filter.toLowerCase();\n\n      const exactMatches = [];\n      const prefixMatches = [];\n      const infixMatches = [];\n\n      // makeLinkHtml creates the link name HTML for a list item. item is the DOM\n      // item. item.name.substr(boldStart, boldEnd) will be bolded.\n      const makeLinkHtml = (item: JumpListItem, boldStart: number, boldEnd: number) => {\n        return (\n          item.name.substring(0, boldStart) +\n          '<b>' +\n          item.name.substring(boldStart, boldEnd) +\n          '</b>' +\n          item.name.substring(boldEnd)\n        );\n      };\n\n      for (const item of jumpListItems ?? []) {\n        const nameLowerCase = item.name.toLowerCase();\n\n        if (nameLowerCase === filterLowerCase) {\n          item.link.innerHTML = makeLinkHtml(item, 0, item.name.length);\n          exactMatches.push(item);\n        } else if (nameLowerCase.startsWith(filterLowerCase)) {\n          item.link.innerHTML = makeLinkHtml(item, 0, filter.length);\n          prefixMatches.push(item);\n        } else {\n          const index = nameLowerCase.indexOf(filterLowerCase);\n          if (index > -1) {\n            item.link.innerHTML = makeLinkHtml(item, index, index + filter.length);\n            infixMatches.push(item);\n          }\n        }\n      }\n\n      for (const item of exactMatches.concat(prefixMatches).concat(infixMatches)) {\n        jumpList?.appendChild(item.link);\n      }\n    } else {\n      if (!jumpListItems || jumpListItems.length === 0) {\n        const msg = document.createElement('i');\n        msg.innerHTML = 'There are no symbols on this page.';\n        jumpList?.appendChild(msg);\n      }\n      // No filter set; display all items in their existing order.\n      for (const item of jumpListItems ?? []) {\n        item.link.innerHTML = item.name + ' <i>' + item.kind + '</i>';\n        jumpList?.appendChild(item.link);\n      }\n    }\n\n    if (jumpBody) {\n      jumpBody.scrollTop = 0;\n    }\n    if (jumpListItems?.length && jumpList && jumpList.children.length > 0) {\n      setActiveJumpItem(0);\n    }\n  }\n\n  // Set the active jump item to n.\n  function setActiveJumpItem(n: number) {\n    const cs = jumpList?.children as HTMLCollectionOf<HTMLElement> | null | undefined;\n    if (!cs || !jumpBody) {\n      return;\n    }\n    if (activeJumpItem >= 0) {\n      cs[activeJumpItem].classList.remove('JumpDialog-active');\n    }\n    if (n >= cs.length) {\n      n = cs.length - 1;\n    }\n    if (n >= 0) {\n      cs[n].classList.add('JumpDialog-active');\n\n      // Scroll so the active item is visible.\n      // For some reason cs[n].scrollIntoView() doesn't behave as I'd expect:\n      // it moves the entire dialog box in the viewport.\n\n      // Get the top and bottom of the active item relative to jumpBody.\n      const activeTop = cs[n].offsetTop - cs[0].offsetTop;\n      const activeBottom = activeTop + cs[n].clientHeight;\n      if (activeTop < jumpBody.scrollTop) {\n        // Off the top; scroll up.\n        jumpBody.scrollTop = activeTop;\n      } else if (activeBottom > jumpBody.scrollTop + jumpBody.clientHeight) {\n        // Off the bottom; scroll down.\n        jumpBody.scrollTop = activeBottom - jumpBody.clientHeight;\n      }\n    }\n    activeJumpItem = n;\n  }\n\n  // Increment the activeJumpItem by delta.\n  function incActiveJumpItem(delta: number) {\n    if (activeJumpItem < 0) {\n      return;\n    }\n    let n = activeJumpItem + delta;\n    if (n < 0) {\n      n = 0;\n    }\n    setActiveJumpItem(n);\n  }\n\n  // Pressing a key in the filter updates the list (if the filter actually changed).\n  jumpFilter?.addEventListener('keyup', function () {\n    if (jumpFilter.value.toUpperCase() != lastFilterValue.toUpperCase()) {\n      updateJumpList(jumpFilter.value);\n    }\n  });\n\n  // Pressing enter in the filter selects the first element in the list.\n  jumpFilter?.addEventListener('keydown', function (event) {\n    const upArrow = 38;\n    const downArrow = 40;\n    const enterKey = 13;\n    switch (event.which) {\n      case upArrow:\n        incActiveJumpItem(-1);\n        event.preventDefault();\n        break;\n      case downArrow:\n        incActiveJumpItem(1);\n        event.preventDefault();\n        break;\n      case enterKey:\n        if (activeJumpItem >= 0) {\n          if (jumpList) {\n            (jumpList.children[activeJumpItem] as HTMLElement).click();\n            event.preventDefault();\n          }\n        }\n        break;\n    }\n  });\n\n  const shortcutsDialog = document.querySelector<HTMLDialogElement>('.ShortcutsDialog');\n\n  // - Pressing 'f' or 'F' opens the jump-to-symbol dialog.\n  // - Pressing '?' opens up the shortcut dialog.\n  // Ignore a keypress if a dialog is already open, or if it is pressed on a\n  // component that wants to consume it.\n  keyboard\n    .on('f', 'open jump to modal', e => {\n      if (jumpDialog?.open || shortcutsDialog?.open) {\n        return;\n      }\n      e.preventDefault();\n      if (jumpFilter) {\n        jumpFilter.value = '';\n      }\n      jumpDialog?.showModal?.();\n      jumpFilter?.focus();\n      updateJumpList('');\n    })\n    .on('?', 'open shortcuts modal', () => {\n      if (jumpDialog?.open || shortcutsDialog?.open) {\n        return;\n      }\n      shortcutsDialog?.showModal?.();\n    });\n\n  const jumpOutlineInput = document.querySelector('.js-jumpToInput');\n  if (jumpOutlineInput) {\n    jumpOutlineInput.addEventListener('click', () => {\n      if (jumpFilter) {\n        jumpFilter.value = '';\n      }\n      updateJumpList('');\n      if (jumpDialog?.open || shortcutsDialog?.open) {\n        return;\n      }\n      jumpDialog?.showModal?.();\n      jumpFilter?.focus();\n    });\n  }\n\n  document.querySelector('.js-openShortcuts')?.addEventListener('click', () => {\n    shortcutsDialog?.showModal?.();\n  });\n}\n", "/**\n * @license\n * Copyright 2022 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * Left Navigation.\n */\nexport const initJumpLinks = async function () {\n  const pagesWithJumpLinks = ['/about'];\n  if (!pagesWithJumpLinks.includes(window.location.pathname)) {\n    // stop the file from doing anything else if the page doesn't have jumplinks\n    return;\n  }\n\n  // these might be generated or not so don't grab references to the elements until actually need them.\n  const titles = 'h2, h3, h4';\n  const nav = '.LeftNav a';\n  // these are always in the dom so we can get them now and throw errors if they're not.\n  const leftNav = document.querySelector('.LeftNav');\n  const siteContent = document.querySelector('.go-Content');\n  let isObserverDisabled = false;\n\n  /**\n   * El function\n   * @example el('h1', {className: 'title'}, 'Welcome to the site');\n   * @example el('ul', {className: 'list'}, el('li', {}, 'Item one'), el('li', {}, 'Item two'), el('li', {}, 'Item three'));\n   * @example el('img', {src: '/url.svg'});\n   */\n  function el(\n    type = '',\n    props: { [key: string]: string } = {},\n    ...children: (HTMLElement | HTMLElement[] | string | undefined)[]\n  ) {\n    // Error, no type declared.\n    if (!type) {\n      throw new Error('Provide `type` to create document element.');\n    }\n\n    // Create element with optional attribute props\n    const docEl = Object.assign(document.createElement(type), props);\n\n    // Children: array containing strings or elements\n    children.forEach(child => {\n      if (typeof child === 'string') {\n        docEl.appendChild(document.createTextNode(child));\n      } else if (Array.isArray(child)) {\n        child.forEach(c => docEl.appendChild(c));\n      } else if (child instanceof HTMLElement) {\n        docEl.appendChild(child);\n      }\n    });\n\n    return docEl;\n  }\n  /**  Build Nav if data hydrate is present. */\n  function buildNav() {\n    return new Promise((resolve, reject) => {\n      let navItems: { id: string; label: string; subnav?: { id: string; label: string }[] }[] = [];\n      let elements: HTMLElement[] = [];\n\n      if (!siteContent || !leftNav) {\n        return reject('.SiteContent not found.');\n      }\n      if (leftNav instanceof HTMLElement && !leftNav?.dataset?.hydrate) {\n        return resolve(true);\n      }\n\n      for (const title of siteContent.querySelectorAll(titles)) {\n        if (title instanceof HTMLElement && !title?.dataset?.ignore) {\n          switch (title.tagName) {\n            case 'H2':\n              navItems = [\n                ...navItems,\n                {\n                  id: title.id,\n                  label: title?.dataset?.title ? title.dataset.title : title.textContent ?? '',\n                },\n              ];\n              break;\n\n            case 'H3':\n            case 'H4':\n              if (!navItems[navItems.length - 1]?.subnav) {\n                navItems[navItems.length - 1].subnav = [\n                  {\n                    id: title.id,\n                    label: title?.dataset?.title ? title.dataset.title : title.textContent ?? '',\n                  },\n                ];\n              } else if (navItems[navItems.length - 1].subnav) {\n                navItems[navItems.length - 1].subnav?.push({\n                  id: title.id,\n                  label: title?.dataset?.title ? title.dataset.title : title.textContent ?? '',\n                });\n              }\n              break;\n          }\n        }\n      }\n\n      for (const navItem of navItems) {\n        const link = el('a', { href: '#' + navItem.id }, el('span', {}, navItem.label));\n        elements = [...elements, link];\n        if (navItem?.subnav) {\n          let subLinks: HTMLElement[] = [];\n          for (const subnavItem of navItem.subnav) {\n            const subItem = el(\n              'li',\n              {},\n              el(\n                'a',\n                { href: '#' + subnavItem.id },\n                el('img', { src: '/static/frontend/about/dot.svg', width: '5', height: '5' }),\n                el('span', {}, subnavItem.label)\n              )\n            );\n            subLinks = [...subLinks, subItem];\n          }\n          const list = el('ul', { className: 'LeftSubnav' }, subLinks);\n          elements = [...elements, list];\n        }\n      }\n\n      elements.forEach(element => leftNav.appendChild(element));\n\n      return resolve(true);\n    });\n  }\n  /**\n   * Set the correct active element.\n   */\n  function setNav() {\n    return new Promise(resolve => {\n      if (!document.querySelectorAll(nav)) return resolve(true);\n      for (const a of document.querySelectorAll(nav)) {\n        if (a instanceof HTMLAnchorElement && a.href === location.href) {\n          setElementActive(a);\n          break;\n        }\n      }\n      resolve(true);\n    });\n  }\n  /** resetNav: removes all .active from nav elements */\n  function resetNav() {\n    return new Promise(resolve => {\n      if (!document.querySelectorAll(nav)) return resolve(true);\n      for (const a of document.querySelectorAll(nav)) {\n        a.classList.remove('active');\n      }\n      resolve(true);\n    });\n  }\n  /** setElementActive: controls resetting nav and highlighting the appropriate nav items */\n  function setElementActive(element: HTMLAnchorElement) {\n    if (element instanceof HTMLAnchorElement) {\n      resetNav().then(() => {\n        element.classList.add('active');\n        const parent = element?.parentNode?.parentNode;\n        if (parent instanceof HTMLElement && parent?.classList?.contains('LeftSubnav')) {\n          parent.previousElementSibling?.classList.add('active');\n        }\n      });\n    }\n  }\n  /** setLinkManually: disables observer and selects the clicked nav item. */\n  function setLinkManually() {\n    delayObserver();\n    const link = document.querySelector('[href=\"' + location.hash + '\"]');\n    if (link instanceof HTMLAnchorElement) {\n      setElementActive(link);\n    }\n  }\n  /** delayObserver: Quick on off switch for intersection observer. */\n  function delayObserver() {\n    isObserverDisabled = true;\n    setTimeout(() => {\n      isObserverDisabled = false;\n    }, 200);\n  }\n  /** observeSections: kicks off observation of titles as well as manual clicks with hashchange */\n  function observeSections() {\n    window.addEventListener('hashchange', setLinkManually);\n\n    if (siteContent?.querySelectorAll(titles)) {\n      const callback: IntersectionObserverCallback = entries => {\n        if (!isObserverDisabled && Array.isArray(entries) && entries.length > 0) {\n          for (const entry of entries) {\n            if (entry.isIntersecting && entry.target instanceof HTMLElement) {\n              const { id } = entry.target;\n              const link = document.querySelector('[href=\"#' + id + '\"]');\n              if (link instanceof HTMLAnchorElement) {\n                setElementActive(link);\n              }\n              break;\n            }\n          }\n        }\n      };\n      // rootMargin is important when multiple sections are in the observable area **on page load**.\n      // they will still be highlighted on scroll because of the root margin.\n      const ob = new IntersectionObserver(callback, {\n        threshold: 0,\n        rootMargin: '0px 0px -50% 0px',\n      });\n      for (const title of siteContent.querySelectorAll(titles)) {\n        if (title instanceof HTMLElement && !title?.dataset?.ignore) {\n          ob.observe(title);\n        }\n      }\n    }\n  }\n\n  try {\n    await buildNav();\n    await setNav();\n    if (location.hash) {\n      delayObserver();\n    }\n    observeSections();\n  } catch (e) {\n    if (e instanceof Error) {\n      console.error(e.message);\n    } else {\n      console.error(e);\n    }\n  }\n};\n", "/**\n * @license\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { registerHeaderListeners, registerSearchFormListeners } from 'static/shared/header/header';\nimport { CarouselController } from 'static/shared/carousel/carousel';\nimport { ClipboardController } from 'static/shared/clipboard/clipboard';\nimport { ToolTipController } from 'static/shared/tooltip/tooltip';\nimport { SelectNavController } from 'static/shared/outline/select';\nimport { ModalController } from 'static/shared/modal/modal';\nimport { initModals } from 'static/shared/jump/jump';\n\nimport { keyboard } from 'static/shared/keyboard/keyboard';\nimport * as analytics from 'static/shared/analytics/analytics';\nimport { initJumpLinks } from './about/index';\n\nwindow.addEventListener('load', () => {\n  for (const el of document.querySelectorAll<HTMLButtonElement>('.js-clipboard')) {\n    new ClipboardController(el);\n  }\n\n  for (const el of document.querySelectorAll<HTMLDialogElement>('.js-modal')) {\n    new ModalController(el);\n  }\n\n  for (const t of document.querySelectorAll<HTMLDetailsElement>('.js-tooltip')) {\n    new ToolTipController(t);\n  }\n\n  for (const el of document.querySelectorAll<HTMLSelectElement>('.js-selectNav')) {\n    new SelectNavController(el);\n  }\n\n  for (const el of document.querySelectorAll<HTMLSelectElement>('.js-carousel')) {\n    new CarouselController(el);\n  }\n\n  for (const el of document.querySelectorAll('.js-toggleTheme')) {\n    el.addEventListener('click', () => {\n      toggleTheme();\n    });\n  }\n\n  if (document.querySelector<HTMLElement>('.js-gtmID')?.dataset.gtmid && window.dataLayer) {\n    analytics.func(function () {\n      removeUTMSource();\n    });\n  } else {\n    removeUTMSource();\n  }\n\n  registerHeaderListeners();\n  registerSearchFormListeners();\n  initModals();\n  initJumpLinks();\n  registerCookieNotice();\n});\n\n// Pressing '/' focuses the search box\nkeyboard.on('/', 'focus search', e => {\n  const searchInput = Array.from(\n    document.querySelectorAll<HTMLInputElement>('.js-searchFocus')\n  ).pop();\n  // Favoring the Firefox quick find feature over search input\n  // focus. See: https://github.com/golang/go/issues/41093.\n  if (searchInput && !window.navigator.userAgent.includes('Firefox')) {\n    e.preventDefault();\n    searchInput.focus();\n  }\n});\n\n// Pressing 'y' changes the browser URL to the canonical URL\n// without triggering a reload.\nkeyboard.on('y', 'set canonical url', () => {\n  let canonicalURLPath = document.querySelector<HTMLDivElement>('.js-canonicalURLPath')?.dataset[\n    'canonicalUrlPath'\n  ];\n  if (canonicalURLPath && canonicalURLPath !== '') {\n    const fragment = window.location.hash;\n    if (fragment) {\n      canonicalURLPath += fragment;\n    }\n    window.history.replaceState(null, '', canonicalURLPath);\n  }\n});\n\n/**\n * setupGoogleTagManager initializes Google Tag Manager.\n */\n(function setupGoogleTagManager() {\n  analytics.track({\n    'gtm.start': new Date().getTime(),\n    event: 'gtm.js',\n  });\n})();\n\n/**\n * removeUTMSource removes the utm_source GET parameter if present.\n * This is done using JavaScript, so that the utm_source is still\n * captured by Google Analytics.\n */\nfunction removeUTMSource() {\n  const urlParams = new URLSearchParams(window.location.search);\n  const utmSource = urlParams.get('utm_source');\n  if (utmSource !== 'gopls' && utmSource !== 'godoc' && utmSource !== 'pkggodev') {\n    return;\n  }\n\n  /** Strip the utm_source query parameter and replace the URL. **/\n  const newURL = new URL(window.location.href);\n  urlParams.delete('utm_source');\n  newURL.search = urlParams.toString();\n  window.history.replaceState(null, '', newURL.toString());\n}\n\n/**\n * toggleTheme switches the preferred color scheme between auto, light, and dark.\n */\nfunction toggleTheme() {\n  let nextTheme = 'dark';\n  const theme = document.documentElement.getAttribute('data-theme');\n  if (theme === 'dark') {\n    nextTheme = 'light';\n  } else if (theme === 'light') {\n    nextTheme = 'auto';\n  }\n  let domain = '';\n  if (location.hostname.endsWith('go.dev')) {\n    domain = 'domain=.go.dev;';\n  }\n  document.documentElement.setAttribute('data-theme', nextTheme);\n  document.cookie = `prefers-color-scheme=${nextTheme};${domain}path=/;max-age=31536000;`;\n}\n\n/**\n * registerCookieNotice makes the cookie notice visible and adds listeners to dismiss it\n * if it has not yet been acknowledge by the user.\n */\nfunction registerCookieNotice() {\n  const themeCookie = document.cookie.match(/cookie-consent=true/);\n  if (!themeCookie) {\n    const notice = document.querySelector('.js-cookieNotice');\n    const button = notice?.querySelector('button');\n    notice?.classList.add('Cookie-notice--visible');\n    button?.addEventListener('click', () => {\n      let domain = '';\n      if (location.hostname.endsWith('go.dev')) {\n        // Apply the cookie to *.go.dev.\n        domain = 'domain=.go.dev;';\n      }\n      document.cookie = `cookie-consent=true;${domain}path=/;max-age=31536000`;\n      notice?.remove();\n    });\n  }\n}\n"],
-  "mappings": "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",
-  "names": ["registerHeaderListeners", "header", "menuItemHover", "e", "target", "forced", "toggleForcedOpen", "isForced", "currentTarget", "event", "headerbuttons", "button", "isActive", "handleNavigationDrawerInactive", "handleNavigationDrawerActive", "subnav", "getNavigationDrawerMenuItems", "navigationDrawer", "menuItems", "anchorEl", "getNavigationDrawerIsSubnav", "item", "handleMenuItemTabLeftFactory", "handleMenuItemTabRightFactory", "prepMobileNavigationDrawer", "isSubnav", "parentLi", "submenu", "drawer", "registerSearchFormListeners", "searchForm", "expandSearch", "input", "headerLogo", "menuButton", "CarouselController", "el", "index", "d", "s", "i", "v", "arrows", "dots", "li", "button", "ClipboardController", "el", "e", "TOOLTIP_SHOW_DURATION_MS", "text", "durationMs", "ToolTipController", "el", "e", "SelectNavController", "el", "e", "target", "href", "ModalController", "el", "button", "btn", "track", "event", "category", "action", "label", "func", "fn", "KeyboardController", "key", "description", "callback", "options", "handler", "t", "track", "keyboard", "initModals", "jumpDialog", "jumpBody", "jumpList", "jumpFilter", "doc", "jumpListItems", "collectJumpListItems", "items", "el", "newJumpListItem", "item", "a", "b", "name", "kind", "lastFilterValue", "activeJumpItem", "updateJumpList", "filter", "setActiveJumpItem", "filterLowerCase", "exactMatches", "prefixMatches", "infixMatches", "makeLinkHtml", "boldStart", "boldEnd", "nameLowerCase", "index", "msg", "n", "cs", "activeTop", "activeBottom", "incActiveJumpItem", "delta", "event", "shortcutsDialog", "keyboard", "e", "jumpOutlineInput", "initJumpLinks", "titles", "nav", "leftNav", "siteContent", "isObserverDisabled", "el", "type", "props", "children", "docEl", "child", "c", "buildNav", "resolve", "reject", "navItems", "elements", "title", "navItem", "link", "subLinks", "subnavItem", "subItem", "list", "element", "setNav", "a", "setElementActive", "resetNav", "parent", "setLinkManually", "delayObserver", "observeSections", "callback", "entries", "entry", "id", "ob", "e", "el", "ClipboardController", "ModalController", "t", "ToolTipController", "SelectNavController", "CarouselController", "toggleTheme", "func", "removeUTMSource", "registerHeaderListeners", "registerSearchFormListeners", "initModals", "initJumpLinks", "registerCookieNotice", "keyboard", "e", "searchInput", "canonicalURLPath", "fragment", "track", "urlParams", "utmSource", "newURL", "nextTheme", "theme", "domain", "notice", "button"]
+  "sourcesContent": ["/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nexport function registerHeaderListeners(): void {\n  const header = document.querySelector('.js-header') as HTMLElement;\n\n  // Desktop menu hover state\n  const menuItemHovers = document.querySelectorAll('.js-desktop-menu-hover');\n  menuItemHovers.forEach(menuItemHover => {\n    // when user clicks on the dropdown menu item on desktop or mobile,\n    // force the menu to stay open until the user clicks off of it.\n    menuItemHover.addEventListener('mouseenter', e => {\n      const target = e.target as HTMLElement;\n      const forced = document.querySelector('.forced-open') as HTMLElement;\n      if (forced && forced !== menuItemHover) {\n        forced.blur();\n        forced.classList.remove('forced-open');\n      }\n      // prevents menus that have been tabbed into from staying open\n      // when you hover over another menu\n      target.classList.remove('forced-closed');\n      target.classList.add('forced-open');\n    });\n\n    const toggleForcedOpen = (e: Event) => {\n      const target = e.target as HTMLElement;\n      const isForced = target?.classList.contains('forced-open');\n      const currentTarget = e.currentTarget as HTMLElement;\n      if (isForced) {\n        currentTarget.removeEventListener('blur', () =>\n          currentTarget.classList.remove('forced-open')\n        );\n        currentTarget.classList.remove('forced-open');\n        currentTarget.classList.add('forced-closed');\n        currentTarget.blur();\n        currentTarget?.parentNode?.addEventListener('mouseout', () => {\n          currentTarget.classList.remove('forced-closed');\n        });\n      } else {\n        currentTarget.classList.remove('forced-closed');\n        currentTarget.classList.add('forced-open');\n        currentTarget.focus();\n        currentTarget.addEventListener('blur', () => currentTarget.classList.remove('forced-open'));\n        currentTarget?.parentNode?.removeEventListener('mouseout', () => {\n          currentTarget.classList.remove('forced-closed');\n        });\n      }\n      currentTarget.focus();\n    };\n    menuItemHover.addEventListener('click', toggleForcedOpen);\n    menuItemHover.addEventListener('focus', e => {\n      const target = e.target as HTMLElement;\n      target.classList.add('forced-closed');\n      target.classList.remove('forced-open');\n    });\n\n    // ensure desktop submenus are closed when esc is pressed\n    const closeSubmenuOnEsc = (e: Event) => {\n      const event = e as KeyboardEvent;\n      const target = e.target as HTMLElement;\n      if (event.key === 'Escape') {\n        const forcedOpenItem = document.querySelector('.forced-open') as HTMLElement;\n        if (forcedOpenItem) {\n          forcedOpenItem.classList.remove('forced-open');\n          forcedOpenItem.blur();\n          forcedOpenItem.classList.add('forced-closed');\n          target?.focus();\n        }\n      }\n    };\n    document.addEventListener('keydown', closeSubmenuOnEsc);\n  });\n\n  // Mobile menu subnav menus\n  const headerbuttons = document.querySelectorAll('.js-headerMenuButton');\n  headerbuttons.forEach(button => {\n    button.addEventListener('click', e => {\n      e.preventDefault();\n      const isActive = header?.classList.contains('is-active');\n      if (isActive) {\n        handleNavigationDrawerInactive(header);\n      } else {\n        handleNavigationDrawerActive(header);\n      }\n      button.setAttribute('aria-expanded', isActive ? 'true' : 'false');\n    });\n  });\n\n  const scrim = document.querySelector('.js-scrim');\n  scrim?.addEventListener('click', e => {\n    e.preventDefault();\n\n    // find any active submenus and close them\n    const activeSubnavs = document.querySelectorAll('.go-NavigationDrawer-submenuItem.is-active');\n    activeSubnavs.forEach(subnav => handleNavigationDrawerInactive(subnav as HTMLElement));\n\n    handleNavigationDrawerInactive(header);\n\n    headerbuttons.forEach(button => {\n      button.setAttribute(\n        'aria-expanded',\n        header?.classList.contains('is-active') ? 'true' : 'false'\n      );\n    });\n  });\n\n  const getNavigationDrawerMenuItems = (navigationDrawer: HTMLElement): HTMLElement[] => {\n    if (!navigationDrawer) {\n      return [];\n    }\n\n    const menuItems = Array.from(\n      navigationDrawer.querySelectorAll(\n        ':scope > .go-NavigationDrawer-nav > .go-NavigationDrawer-list > .go-NavigationDrawer-listItem > a, :scope > .go-NavigationDrawer-nav > .go-NavigationDrawer-list > .go-NavigationDrawer-listItem > .go-Header-socialIcons > a'\n      ) || []\n    );\n\n    const anchorEl = navigationDrawer.querySelector('.go-NavigationDrawer-header > a');\n    if (anchorEl) {\n      menuItems.unshift(anchorEl);\n    }\n    return menuItems as HTMLElement[];\n  };\n\n  const getNavigationDrawerIsSubnav = (navigationDrawer: HTMLElement) => {\n    if (!navigationDrawer) {\n      return;\n    }\n    return navigationDrawer.classList.contains('go-NavigationDrawer-submenuItem');\n  };\n\n  const handleNavigationDrawerInactive = (navigationDrawer: HTMLElement) => {\n    if (!navigationDrawer) {\n      return;\n    }\n    const menuItems = getNavigationDrawerMenuItems(navigationDrawer);\n    navigationDrawer.classList.remove('is-active');\n    const parentMenuItem = navigationDrawer\n      .closest('.go-NavigationDrawer-listItem')\n      ?.querySelector(':scope > a') as HTMLElement;\n    parentMenuItem?.focus();\n    menuItems?.forEach(item => item?.setAttribute('tabindex', '-1'));\n    if (menuItems && menuItems[0]) {\n      menuItems[0].removeEventListener('keydown', handleMenuItemTabLeftFactory(navigationDrawer));\n      menuItems[menuItems.length - 1].removeEventListener(\n        'keydown',\n        handleMenuItemTabRightFactory(navigationDrawer)\n      );\n    }\n\n    if (navigationDrawer === header) {\n      headerbuttons && (headerbuttons[0] as HTMLElement)?.focus();\n    }\n  };\n\n  const handleNavigationDrawerActive = (navigationDrawer: HTMLElement) => {\n    const menuItems = getNavigationDrawerMenuItems(navigationDrawer);\n\n    navigationDrawer.classList.add('is-active');\n    menuItems.forEach(item => item.setAttribute('tabindex', '0'));\n    menuItems[0].focus();\n\n    menuItems[0].addEventListener('keydown', handleMenuItemTabLeftFactory(navigationDrawer));\n    menuItems[menuItems.length - 1].addEventListener(\n      'keydown',\n      handleMenuItemTabRightFactory(navigationDrawer)\n    );\n  };\n\n  const handleMenuItemTabLeftFactory = (navigationDrawer: HTMLElement) => {\n    return (e: KeyboardEvent) => {\n      if (e.key === 'Tab' && e.shiftKey) {\n        e.preventDefault();\n        handleNavigationDrawerInactive(navigationDrawer);\n      }\n    };\n  };\n\n  const handleMenuItemTabRightFactory = (navigationDrawer: HTMLElement) => {\n    return (e: KeyboardEvent) => {\n      if (e.key === 'Tab' && !e.shiftKey) {\n        e.preventDefault();\n        handleNavigationDrawerInactive(navigationDrawer);\n      }\n    };\n  };\n\n  const prepMobileNavigationDrawer = (navigationDrawer: HTMLElement) => {\n    const isSubnav = getNavigationDrawerIsSubnav(navigationDrawer);\n    const menuItems = getNavigationDrawerMenuItems(navigationDrawer);\n    navigationDrawer.addEventListener('keyup', e => {\n      if (e.key === 'Escape') {\n        handleNavigationDrawerInactive(navigationDrawer);\n      }\n    });\n\n    menuItems.forEach(item => {\n      const parentLi = item.closest('li');\n      if (parentLi && parentLi.classList.contains('js-mobile-subnav-trigger')) {\n        const submenu = parentLi.querySelector('.go-NavigationDrawer-submenuItem') as HTMLElement;\n        item.addEventListener('click', () => {\n          handleNavigationDrawerActive(submenu);\n        });\n      }\n    });\n    if (isSubnav) {\n      handleNavigationDrawerInactive(navigationDrawer);\n      navigationDrawer\n        ?.querySelector('.go-NavigationDrawer-header')\n        ?.addEventListener('click', e => {\n          e.preventDefault();\n          handleNavigationDrawerInactive(navigationDrawer);\n        });\n    }\n  };\n\n  document\n    .querySelectorAll('.go-NavigationDrawer')\n    .forEach(drawer => prepMobileNavigationDrawer(drawer as HTMLElement));\n\n  handleNavigationDrawerInactive(header);\n}\n\nexport function registerSearchFormListeners(): void {\n  const searchForm = document.querySelector('.js-searchForm');\n  const expandSearch = document.querySelector('.js-expandSearch');\n  const input = searchForm?.querySelector('input');\n  const headerLogo = document.querySelector('.js-headerLogo');\n  const menuButton = document.querySelector('.js-headerMenuButton');\n  expandSearch?.addEventListener('click', () => {\n    searchForm?.classList.add('go-SearchForm--expanded');\n    headerLogo?.classList.add('go-Header-logo--hidden');\n    menuButton?.classList.add('go-Header-navOpen--hidden');\n    input?.focus();\n  });\n  document?.addEventListener('click', e => {\n    if (!searchForm?.contains(e.target as Node)) {\n      searchForm?.classList.remove('go-SearchForm--expanded');\n      headerLogo?.classList.remove('go-Header-logo--hidden');\n      menuButton?.classList.remove('go-Header-navOpen--hidden');\n    }\n  });\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * Carousel Controller adds event listeners, accessibility enhancements, and\n * control elements to a carousel component.\n */\nexport class CarouselController {\n  /**\n   * slides is a collection of slides in the carousel.\n   */\n  private slides: HTMLLIElement[];\n  /**\n   * dots is a collection of dot navigation controls, added to the carousel\n   * by this controller.\n   */\n  private dots: HTMLElement[];\n  /**\n   * liveRegion is a visually hidden element that notifies assitive devices\n   * of visual changes to the carousel. They are added to the carousel by\n   * this controller.\n   */\n  private liveRegion: HTMLElement;\n  /**\n   * activeIndex is the 0-index of the currently active slide.\n   */\n  private activeIndex: number;\n\n  constructor(private el: HTMLElement) {\n    this.slides = Array.from(el.querySelectorAll('.go-Carousel-slide'));\n    this.dots = [];\n    this.liveRegion = document.createElement('div');\n    this.activeIndex = Number(el.getAttribute('data-slide-index') ?? 0);\n\n    this.initSlides();\n    this.initArrows();\n    this.initDots();\n    this.initLiveRegion();\n  }\n\n  private initSlides() {\n    for (const [i, v] of this.slides.entries()) {\n      if (i === this.activeIndex) continue;\n      v.setAttribute('aria-hidden', 'true');\n    }\n  }\n\n  private initArrows() {\n    const arrows = document.createElement('ul');\n    arrows.classList.add('go-Carousel-arrows');\n    arrows.innerHTML = `\n      <li>\n        <button class=\"go-Carousel-prevSlide\" aria-label=\"Go to previous slide\">\n          <img class=\"go-Icon\" height=\"24\" width=\"24\" src=\"/static/shared/icon/arrow_left_gm_grey_24dp.svg\" alt=\"\">\n        </button>\n      </li>\n      <li>\n        <button class=\"go-Carousel-nextSlide\" aria-label=\"Go to next slide\">\n          <img class=\"go-Icon\" height=\"24\" width=\"24\" src=\"/static/shared/icon/arrow_right_gm_grey_24dp.svg\" alt=\"\">\n        </button>\n      </li>\n    `;\n    arrows\n      .querySelector('.go-Carousel-prevSlide')\n      ?.addEventListener('click', () => this.setActive(this.activeIndex - 1));\n    arrows\n      .querySelector('.go-Carousel-nextSlide')\n      ?.addEventListener('click', () => this.setActive(this.activeIndex + 1));\n    this.el.append(arrows);\n  }\n\n  private initDots() {\n    const dots = document.createElement('ul');\n    dots.classList.add('go-Carousel-dots');\n    for (let i = 0; i < this.slides.length; i++) {\n      const li = document.createElement('li');\n      const button = document.createElement('button');\n      button.classList.add('go-Carousel-dot');\n      if (i === this.activeIndex) {\n        button.classList.add('go-Carousel-dot--active');\n      }\n      button.innerHTML = `<span class=\"go-Carousel-obscured\">Slide ${i + 1}</span>`;\n      button.addEventListener('click', () => this.setActive(i));\n      li.append(button);\n      dots.append(li);\n      this.dots.push(button);\n    }\n    this.el.append(dots);\n  }\n\n  private initLiveRegion() {\n    this.liveRegion.setAttribute('aria-live', 'polite');\n    this.liveRegion.setAttribute('aria-atomic', 'true');\n    this.liveRegion.setAttribute('class', 'go-Carousel-obscured');\n    this.liveRegion.textContent = `Slide ${this.activeIndex + 1} of ${this.slides.length}`;\n    this.el.appendChild(this.liveRegion);\n  }\n\n  private setActive = (index: number) => {\n    this.activeIndex = (index + this.slides.length) % this.slides.length;\n    this.el.setAttribute('data-slide-index', String(this.activeIndex));\n    for (const d of this.dots) {\n      d.classList.remove('go-Carousel-dot--active');\n    }\n    this.dots[this.activeIndex].classList.add('go-Carousel-dot--active');\n    for (const s of this.slides) {\n      s.setAttribute('aria-hidden', 'true');\n    }\n    this.slides[this.activeIndex].removeAttribute('aria-hidden');\n    this.liveRegion.textContent = 'Slide ' + (this.activeIndex + 1) + ' of ' + this.slides.length;\n  };\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * This class decorates an element to copy arbitrary data attached via a data-\n * attribute to the clipboard.\n */\nexport class ClipboardController {\n  /**\n   * The data to be copied to the clipboard.\n   */\n  private data: string;\n\n  /**\n   * @param el The element that will trigger copying text to the clipboard. The text is\n   * expected to be within its data-to-copy attribute.\n   */\n  constructor(private el: HTMLButtonElement) {\n    this.data = el.dataset['toCopy'] ?? el.innerText;\n    // if data-to-copy is empty and the button is part of an input group\n    // capture the value of the input.\n    if (!this.data && el.parentElement?.classList.contains('go-InputGroup')) {\n      this.data = (this.data || el.parentElement?.querySelector('input')?.value) ?? '';\n    }\n    el.addEventListener('click', e => this.handleCopyClick(e));\n  }\n\n  /**\n   * Handles when the primary element is clicked.\n   */\n  handleCopyClick(e: MouseEvent): void {\n    e.preventDefault();\n    const TOOLTIP_SHOW_DURATION_MS = 1000;\n\n    // This API is not available on iOS.\n    if (!navigator.clipboard) {\n      this.showTooltipText('Unable to copy', TOOLTIP_SHOW_DURATION_MS);\n      return;\n    }\n    navigator.clipboard\n      .writeText(this.data)\n      .then(() => {\n        this.showTooltipText('Copied!', TOOLTIP_SHOW_DURATION_MS);\n      })\n      .catch(() => {\n        this.showTooltipText('Unable to copy', TOOLTIP_SHOW_DURATION_MS);\n      });\n  }\n\n  /**\n   * Shows the given text in a tooltip for a specified amount of time, in milliseconds.\n   */\n  showTooltipText(text: string, durationMs: number): void {\n    this.el.setAttribute('data-tooltip', text);\n    setTimeout(() => this.el.setAttribute('data-tooltip', ''), durationMs);\n  }\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * ToolTipController handles closing tooltips on external clicks.\n */\nexport class ToolTipController {\n  constructor(private el: HTMLDetailsElement) {\n    document.addEventListener('click', e => {\n      const insideTooltip = this.el.contains(e.target as Element);\n      if (!insideTooltip) {\n        this.el.removeAttribute('open');\n      }\n    });\n  }\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { TreeNavController } from './tree.js';\n\nexport class SelectNavController {\n  constructor(private el: Element) {\n    this.el.addEventListener('change', e => {\n      const target = e.target as HTMLSelectElement;\n      let href = target.value;\n      if (!target.value.startsWith('/')) {\n        href = '/' + href;\n      }\n      window.location.href = href;\n    });\n  }\n}\n\nexport function makeSelectNav(tree: TreeNavController): HTMLLabelElement {\n  const label = document.createElement('label');\n  label.classList.add('go-Label');\n  label.setAttribute('aria-label', 'Menu');\n  const select = document.createElement('select');\n  select.classList.add('go-Select', 'js-selectNav');\n  label.appendChild(select);\n  const outline = document.createElement('optgroup');\n  outline.label = 'Outline';\n  select.appendChild(outline);\n  const groupMap: Record<string, HTMLOptGroupElement> = {};\n  let group: HTMLOptGroupElement;\n  for (const t of tree.treeitems) {\n    if (Number(t.depth) > 4) continue;\n    if (t.groupTreeitem) {\n      group = groupMap[t.groupTreeitem.label];\n      if (!group) {\n        group = groupMap[t.groupTreeitem.label] = document.createElement('optgroup');\n        group.label = t.groupTreeitem.label;\n        select.appendChild(group);\n      }\n    } else {\n      group = outline;\n    }\n    const o = document.createElement('option');\n    o.label = t.label;\n    o.textContent = t.label;\n    o.value = (t.el as HTMLAnchorElement).href.replace(window.location.origin, '').replace('/', '');\n    group.appendChild(o);\n  }\n  tree.addObserver(t => {\n    const hash = (t.el as HTMLAnchorElement).hash;\n    const value = select.querySelector<HTMLOptionElement>(`[value$=\"${hash}\"]`)?.value;\n    if (value) {\n      select.value = value;\n    }\n  }, 50);\n  return label;\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\ninterface Window {\n  dialogPolyfill?: {\n    registerDialog: (el: HTMLDialogElement) => void;\n  };\n}\n\ndeclare const window: Window;\n\n/**\n * ModalController registers a dialog element with the polyfill if\n * necessary for the current browser, add adds event listeners to\n * close and open modals.\n */\nexport class ModalController {\n  constructor(private el: HTMLDialogElement) {\n    if (window.dialogPolyfill) {\n      window.dialogPolyfill.registerDialog(el);\n    }\n    this.init();\n  }\n\n  init() {\n    const button = document.querySelector<HTMLButtonElement>(`[aria-controls=\"${this.el.id}\"]`);\n    if (button) {\n      button.addEventListener('click', () => {\n        if (this.el.showModal) {\n          this.el.showModal();\n        } else {\n          this.el.setAttribute('opened', 'true');\n        }\n        this.el.querySelector('input')?.focus();\n      });\n    }\n    for (const btn of this.el.querySelectorAll<HTMLButtonElement>('[data-modal-close]')) {\n      btn.addEventListener('click', () => {\n        if (this.el.close) {\n          this.el.close();\n        } else {\n          this.el.removeAttribute('opened');\n        }\n      });\n    }\n  }\n}\n", "interface TagManagerEvent {\n  /**\n   * event is the name of the event, used to filter events in\n   * Google Analytics.\n   */\n  event: string;\n\n  /**\n   * event_category is a name that you supply as a way to group objects\n   * that to analyze. Typically, you will use the same category name\n   * multiple times over related UI elements (buttons, links, etc).\n   */\n  event_category?: string;\n\n  /**\n   * event_action is used to name the type of event or interaction you\n   * want to measure for a particular web object. For example, with a\n   * single \"form\" category, you can analyze a number of specific events\n   * with this parameter, such as: form entered, form submitted.\n   */\n  event_action?: string;\n\n  /**\n   * event_label provide additional information for events that you want\n   * to analyze, such as the text label of a link.\n   */\n  event_label?: string;\n\n  /**\n   * gtm.start is used to initialize Google Tag Manager.\n   */\n  'gtm.start'?: number;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare global {\n  interface Window {\n    dataLayer?: (TagManagerEvent | VoidFunction)[];\n    ga?: unknown;\n  }\n}\n\n/**\n * track sends events to Google Tag Manager.\n */\nexport function track(\n  event: string | TagManagerEvent,\n  category?: string,\n  action?: string,\n  label?: string\n): void {\n  window.dataLayer ??= [];\n  if (typeof event === 'string') {\n    window.dataLayer.push({\n      event,\n      event_category: category,\n      event_action: action,\n      event_label: label,\n    });\n  } else {\n    window.dataLayer.push(event);\n  }\n}\n\n/**\n * func adds functions to run sequentionally after\n * Google Tag Manager is ready.\n */\nexport function func(fn: () => void): void {\n  window.dataLayer ??= [];\n  window.dataLayer.push(fn);\n}\n", "/*!\n * @license\n * Copyright 2019-2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { track } from '../analytics/analytics';\n\n/**\n * Options are keyhandler callback options.\n */\ninterface Options {\n  /**\n   * target is the element the key event should filter on. The\n   * default target is the document.\n   */\n  target?: Element;\n\n  /**\n   * withMeta specifies if the event callback should fire when\n   * the key is pressed with a meta key (ctrl, alt, etc). By\n   * default meta keypresses are ignored.\n   */\n  withMeta?: boolean;\n}\n\n/**\n * KeyHandler is the config for a keyboard event callback.\n */\ninterface KeyHandler extends Options {\n  description: string;\n  callback: (e: KeyboardEvent) => void;\n}\n\n/**\n * KeyboardController controls event callbacks for sitewide\n * keyboard events. Multiple callbacks can be registered for\n * a single key and by default the controller ignores events\n * for text input targets.\n */\nclass KeyboardController {\n  handlers: Record<string, Set<KeyHandler>>;\n\n  constructor() {\n    this.handlers = {};\n    document.addEventListener('keydown', e => this.handleKeyPress(e));\n  }\n\n  /**\n   * on registers keyboard event callbacks.\n   * @param key the key to register.\n   * @param description name of the event.\n   * @param callback event callback.\n   * @param options set target and withMeta options to override the default behaviors.\n   */\n  on(key: string, description: string, callback: (e: KeyboardEvent) => void, options?: Options) {\n    this.handlers[key] ??= new Set();\n    this.handlers[key].add({ description, callback, ...options });\n    return this;\n  }\n\n  private handleKeyPress(e: KeyboardEvent) {\n    for (const handler of this.handlers[e.key.toLowerCase()] ?? new Set()) {\n      if (handler.target && handler.target !== e.target) {\n        return;\n      }\n      const t = e.target as HTMLElement | null;\n      if (\n        !handler.target &&\n        (t?.tagName === 'INPUT' || t?.tagName === 'SELECT' || t?.tagName === 'TEXTAREA')\n      ) {\n        return;\n      }\n      if (t?.isContentEditable) {\n        return;\n      }\n      if (\n        (handler.withMeta && !(e.ctrlKey || e.metaKey)) ||\n        (!handler.withMeta && (e.ctrlKey || e.metaKey))\n      ) {\n        return;\n      }\n      track('keypress', 'hotkeys', `${e.key} pressed`, handler.description);\n      handler.callback(e);\n    }\n  }\n}\n\nexport const keyboard = new KeyboardController();\n", "/*!\n * @license\n * Copyright 2019-2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n// This file implements the behavior of the \"jump to symbol\" dialog for Go\n// package documentation, as well as the simple dialog that displays keyboard\n// shortcuts.\n\n// The DOM for the dialogs is at the bottom of static/frontend/unit/main/_modals.tmpl.\n// The CSS is in static/frontend/unit/main/_modals.css.\n\n// The dialog is activated by pressing the 'f' key. It presents a list\n// (#JumpDialog-list) of all Go symbols displayed in the documentation.\n// Entering text in the dialog's text box (#JumpDialog-filter) restricts the\n// list to symbols containing the text. Clicking on an symbol jumps to\n// its documentation.\n\n// This code is based on\n// https://go.googlesource.com/gddo/+/refs/heads/master/gddo-server/assets/site.js.\n// It was modified to remove the dependence on jquery and bootstrap.\n\nimport { keyboard } from '../keyboard/keyboard';\n\nexport function initModals(): void {\n  const jumpDialog = document.querySelector<HTMLDialogElement>('.JumpDialog');\n  const jumpBody = jumpDialog?.querySelector<HTMLDivElement>('.JumpDialog-body');\n  const jumpList = jumpDialog?.querySelector<HTMLDivElement>('.JumpDialog-list');\n  const jumpFilter = jumpDialog?.querySelector<HTMLInputElement>('.JumpDialog-input');\n  const doc = document.querySelector<HTMLDivElement>('.js-documentation');\n\n  interface JumpListItem {\n    link: HTMLAnchorElement;\n    name: string;\n    kind: string;\n    lower: string;\n  }\n\n  let jumpListItems: JumpListItem[] | undefined; // All the symbols in the doc; computed only once.\n\n  // collectJumpListItems returns a list of items, one for each symbol in the\n  // documentation on the current page.\n  //\n  // It uses the data-kind attribute generated in the documentation HTML to find\n  // the symbols and their id attributes.\n  //\n  // If there are no data-kind attributes, then we have older doc; fall back to\n  // a less precise method.\n  function collectJumpListItems() {\n    const items = [];\n    if (!doc) return;\n    for (const el of doc.querySelectorAll('[data-kind]')) {\n      items.push(newJumpListItem(el));\n    }\n\n    // Clicking on any of the links closes the dialog.\n    for (const item of items) {\n      item.link.addEventListener('click', function () {\n        jumpDialog?.close();\n      });\n    }\n    // Sort case-insensitively by symbol name.\n    items.sort(function (a, b) {\n      return a.lower.localeCompare(b.lower);\n    });\n    return items;\n  }\n\n  // newJumpListItem creates a new item for the DOM element el.\n  // An item is an object with:\n  // - name: the element's id (which is the symbol name)\n  // - kind: the element's kind (function, variable, etc.),\n  // - link: a link ('a' tag) to the element\n  // - lower: the name in lower case, just for sorting\n  function newJumpListItem(el: Element): JumpListItem {\n    const a = document.createElement('a');\n    const name = el.getAttribute('id');\n    a.setAttribute('href', '#' + name);\n    a.setAttribute('tabindex', '-1');\n    a.setAttribute('data-gtmc', 'jump to link');\n    const kind = el.getAttribute('data-kind');\n    return {\n      link: a,\n      name: name ?? '',\n      kind: kind ?? '',\n      lower: name?.toLowerCase() ?? '', // for sorting\n    };\n  }\n\n  let lastFilterValue: string; // The last contents of the filter text box.\n  let activeJumpItem = -1; // The index of the currently active item in the list.\n\n  // updateJumpList sets the elements of the dialog list to\n  // everything whose name contains filter.\n  function updateJumpList(filter: string) {\n    lastFilterValue = filter;\n    if (!jumpListItems) {\n      jumpListItems = collectJumpListItems();\n    }\n    setActiveJumpItem(-1);\n\n    // Remove all children from list.\n    while (jumpList?.firstChild) {\n      jumpList.firstChild.remove();\n    }\n\n    if (filter) {\n      // A filter is set. We treat the filter as a substring that can appear in\n      // an item name (case insensitive), and find the following matches - in\n      // order of priority:\n      //\n      // 1. Exact matches (the filter matches the item's name exactly)\n      // 2. Prefix matches (the item's name starts with filter)\n      // 3. Infix matches (the filter is a substring of the item's name)\n      const filterLowerCase = filter.toLowerCase();\n\n      const exactMatches = [];\n      const prefixMatches = [];\n      const infixMatches = [];\n\n      // makeLinkHtml creates the link name HTML for a list item. item is the DOM\n      // item. item.name.substr(boldStart, boldEnd) will be bolded.\n      const makeLinkHtml = (item: JumpListItem, boldStart: number, boldEnd: number) => {\n        return (\n          item.name.substring(0, boldStart) +\n          '<b>' +\n          item.name.substring(boldStart, boldEnd) +\n          '</b>' +\n          item.name.substring(boldEnd)\n        );\n      };\n\n      for (const item of jumpListItems ?? []) {\n        const nameLowerCase = item.name.toLowerCase();\n\n        if (nameLowerCase === filterLowerCase) {\n          item.link.innerHTML = makeLinkHtml(item, 0, item.name.length);\n          exactMatches.push(item);\n        } else if (nameLowerCase.startsWith(filterLowerCase)) {\n          item.link.innerHTML = makeLinkHtml(item, 0, filter.length);\n          prefixMatches.push(item);\n        } else {\n          const index = nameLowerCase.indexOf(filterLowerCase);\n          if (index > -1) {\n            item.link.innerHTML = makeLinkHtml(item, index, index + filter.length);\n            infixMatches.push(item);\n          }\n        }\n      }\n\n      for (const item of exactMatches.concat(prefixMatches).concat(infixMatches)) {\n        jumpList?.appendChild(item.link);\n      }\n    } else {\n      if (!jumpListItems || jumpListItems.length === 0) {\n        const msg = document.createElement('i');\n        msg.innerHTML = 'There are no symbols on this page.';\n        jumpList?.appendChild(msg);\n      }\n      // No filter set; display all items in their existing order.\n      for (const item of jumpListItems ?? []) {\n        item.link.innerHTML = item.name + ' <i>' + item.kind + '</i>';\n        jumpList?.appendChild(item.link);\n      }\n    }\n\n    if (jumpBody) {\n      jumpBody.scrollTop = 0;\n    }\n    if (jumpListItems?.length && jumpList && jumpList.children.length > 0) {\n      setActiveJumpItem(0);\n    }\n  }\n\n  // Set the active jump item to n.\n  function setActiveJumpItem(n: number) {\n    const cs = jumpList?.children as HTMLCollectionOf<HTMLElement> | null | undefined;\n    if (!cs || !jumpBody) {\n      return;\n    }\n    if (activeJumpItem >= 0) {\n      cs[activeJumpItem].classList.remove('JumpDialog-active');\n    }\n    if (n >= cs.length) {\n      n = cs.length - 1;\n    }\n    if (n >= 0) {\n      cs[n].classList.add('JumpDialog-active');\n\n      // Scroll so the active item is visible.\n      // For some reason cs[n].scrollIntoView() doesn't behave as I'd expect:\n      // it moves the entire dialog box in the viewport.\n\n      // Get the top and bottom of the active item relative to jumpBody.\n      const activeTop = cs[n].offsetTop - cs[0].offsetTop;\n      const activeBottom = activeTop + cs[n].clientHeight;\n      if (activeTop < jumpBody.scrollTop) {\n        // Off the top; scroll up.\n        jumpBody.scrollTop = activeTop;\n      } else if (activeBottom > jumpBody.scrollTop + jumpBody.clientHeight) {\n        // Off the bottom; scroll down.\n        jumpBody.scrollTop = activeBottom - jumpBody.clientHeight;\n      }\n    }\n    activeJumpItem = n;\n  }\n\n  // Increment the activeJumpItem by delta.\n  function incActiveJumpItem(delta: number) {\n    if (activeJumpItem < 0) {\n      return;\n    }\n    let n = activeJumpItem + delta;\n    if (n < 0) {\n      n = 0;\n    }\n    setActiveJumpItem(n);\n  }\n\n  // Pressing a key in the filter updates the list (if the filter actually changed).\n  jumpFilter?.addEventListener('keyup', function () {\n    if (jumpFilter.value.toUpperCase() != lastFilterValue.toUpperCase()) {\n      updateJumpList(jumpFilter.value);\n    }\n  });\n\n  // Pressing enter in the filter selects the first element in the list.\n  jumpFilter?.addEventListener('keydown', function (event) {\n    const upArrow = 38;\n    const downArrow = 40;\n    const enterKey = 13;\n    switch (event.which) {\n      case upArrow:\n        incActiveJumpItem(-1);\n        event.preventDefault();\n        break;\n      case downArrow:\n        incActiveJumpItem(1);\n        event.preventDefault();\n        break;\n      case enterKey:\n        if (activeJumpItem >= 0) {\n          if (jumpList) {\n            (jumpList.children[activeJumpItem] as HTMLElement).click();\n            event.preventDefault();\n          }\n        }\n        break;\n    }\n  });\n\n  const shortcutsDialog = document.querySelector<HTMLDialogElement>('.ShortcutsDialog');\n\n  // - Pressing 'f' or 'F' opens the jump-to-symbol dialog.\n  // - Pressing '?' opens up the shortcut dialog.\n  // Ignore a keypress if a dialog is already open, or if it is pressed on a\n  // component that wants to consume it.\n  keyboard\n    .on('f', 'open jump to modal', e => {\n      if (jumpDialog?.open || shortcutsDialog?.open) {\n        return;\n      }\n      e.preventDefault();\n      if (jumpFilter) {\n        jumpFilter.value = '';\n      }\n      jumpDialog?.showModal?.();\n      jumpFilter?.focus();\n      updateJumpList('');\n    })\n    .on('?', 'open shortcuts modal', () => {\n      if (jumpDialog?.open || shortcutsDialog?.open) {\n        return;\n      }\n      shortcutsDialog?.showModal?.();\n    });\n\n  const jumpOutlineInput = document.querySelector('.js-jumpToInput');\n  if (jumpOutlineInput) {\n    jumpOutlineInput.addEventListener('click', () => {\n      if (jumpFilter) {\n        jumpFilter.value = '';\n      }\n      updateJumpList('');\n      if (jumpDialog?.open || shortcutsDialog?.open) {\n        return;\n      }\n      jumpDialog?.showModal?.();\n      jumpFilter?.focus();\n    });\n  }\n\n  document.querySelector('.js-openShortcuts')?.addEventListener('click', () => {\n    shortcutsDialog?.showModal?.();\n  });\n}\n", "/**\n * @license\n * Copyright 2022 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * Left Navigation.\n */\nexport const initJumpLinks = async function () {\n  const pagesWithJumpLinks = ['/about'];\n  if (!pagesWithJumpLinks.includes(window.location.pathname)) {\n    // stop the file from doing anything else if the page doesn't have jumplinks\n    return;\n  }\n\n  // these might be generated or not so don't grab references to the elements until actually need them.\n  const titles = 'h2, h3, h4';\n  const nav = '.LeftNav a';\n  // these are always in the dom so we can get them now and throw errors if they're not.\n  const leftNav = document.querySelector('.LeftNav');\n  const siteContent = document.querySelector('.go-Content');\n  let isObserverDisabled = false;\n\n  /**\n   * El function\n   * @example el('h1', {className: 'title'}, 'Welcome to the site');\n   * @example el('ul', {className: 'list'}, el('li', {}, 'Item one'), el('li', {}, 'Item two'), el('li', {}, 'Item three'));\n   * @example el('img', {src: '/url.svg'});\n   */\n  function el(\n    type = '',\n    props: { [key: string]: string } = {},\n    ...children: (HTMLElement | HTMLElement[] | string | undefined)[]\n  ) {\n    // Error, no type declared.\n    if (!type) {\n      throw new Error('Provide `type` to create document element.');\n    }\n\n    // Create element with optional attribute props\n    const docEl = Object.assign(document.createElement(type), props);\n\n    // Children: array containing strings or elements\n    children.forEach(child => {\n      if (typeof child === 'string') {\n        docEl.appendChild(document.createTextNode(child));\n      } else if (Array.isArray(child)) {\n        child.forEach(c => docEl.appendChild(c));\n      } else if (child instanceof HTMLElement) {\n        docEl.appendChild(child);\n      }\n    });\n\n    return docEl;\n  }\n  /**  Build Nav if data hydrate is present. */\n  function buildNav() {\n    return new Promise((resolve, reject) => {\n      let navItems: { id: string; label: string; subnav?: { id: string; label: string }[] }[] = [];\n      let elements: HTMLElement[] = [];\n\n      if (!siteContent || !leftNav) {\n        return reject('.SiteContent not found.');\n      }\n      if (leftNav instanceof HTMLElement && !leftNav?.dataset?.hydrate) {\n        return resolve(true);\n      }\n\n      for (const title of siteContent.querySelectorAll(titles)) {\n        if (title instanceof HTMLElement && !title?.dataset?.ignore) {\n          switch (title.tagName) {\n            case 'H2':\n              navItems = [\n                ...navItems,\n                {\n                  id: title.id,\n                  label: title?.dataset?.title ? title.dataset.title : title.textContent ?? '',\n                },\n              ];\n              break;\n\n            case 'H3':\n            case 'H4':\n              if (!navItems[navItems.length - 1]?.subnav) {\n                navItems[navItems.length - 1].subnav = [\n                  {\n                    id: title.id,\n                    label: title?.dataset?.title ? title.dataset.title : title.textContent ?? '',\n                  },\n                ];\n              } else if (navItems[navItems.length - 1].subnav) {\n                navItems[navItems.length - 1].subnav?.push({\n                  id: title.id,\n                  label: title?.dataset?.title ? title.dataset.title : title.textContent ?? '',\n                });\n              }\n              break;\n          }\n        }\n      }\n\n      for (const navItem of navItems) {\n        const link = el('a', { href: '#' + navItem.id }, el('span', {}, navItem.label));\n        elements = [...elements, link];\n        if (navItem?.subnav) {\n          let subLinks: HTMLElement[] = [];\n          for (const subnavItem of navItem.subnav) {\n            const subItem = el(\n              'li',\n              {},\n              el(\n                'a',\n                { href: '#' + subnavItem.id },\n                el('img', { src: '/static/frontend/about/dot.svg', width: '5', height: '5' }),\n                el('span', {}, subnavItem.label)\n              )\n            );\n            subLinks = [...subLinks, subItem];\n          }\n          const list = el('ul', { className: 'LeftSubnav' }, subLinks);\n          elements = [...elements, list];\n        }\n      }\n\n      elements.forEach(element => leftNav.appendChild(element));\n\n      return resolve(true);\n    });\n  }\n  /**\n   * Set the correct active element.\n   */\n  function setNav() {\n    return new Promise(resolve => {\n      if (!document.querySelectorAll(nav)) return resolve(true);\n      for (const a of document.querySelectorAll(nav)) {\n        if (a instanceof HTMLAnchorElement && a.href === location.href) {\n          setElementActive(a);\n          break;\n        }\n      }\n      resolve(true);\n    });\n  }\n  /** resetNav: removes all .active from nav elements */\n  function resetNav() {\n    return new Promise(resolve => {\n      if (!document.querySelectorAll(nav)) return resolve(true);\n      for (const a of document.querySelectorAll(nav)) {\n        a.classList.remove('active');\n      }\n      resolve(true);\n    });\n  }\n  /** setElementActive: controls resetting nav and highlighting the appropriate nav items */\n  function setElementActive(element: HTMLAnchorElement) {\n    if (element instanceof HTMLAnchorElement) {\n      resetNav().then(() => {\n        element.classList.add('active');\n        const parent = element?.parentNode?.parentNode;\n        if (parent instanceof HTMLElement && parent?.classList?.contains('LeftSubnav')) {\n          parent.previousElementSibling?.classList.add('active');\n        }\n      });\n    }\n  }\n  /** setLinkManually: disables observer and selects the clicked nav item. */\n  function setLinkManually() {\n    delayObserver();\n    const link = document.querySelector('[href=\"' + location.hash + '\"]');\n    if (link instanceof HTMLAnchorElement) {\n      setElementActive(link);\n    }\n  }\n  /** delayObserver: Quick on off switch for intersection observer. */\n  function delayObserver() {\n    isObserverDisabled = true;\n    setTimeout(() => {\n      isObserverDisabled = false;\n    }, 200);\n  }\n  /** observeSections: kicks off observation of titles as well as manual clicks with hashchange */\n  function observeSections() {\n    window.addEventListener('hashchange', setLinkManually);\n\n    if (siteContent?.querySelectorAll(titles)) {\n      const callback: IntersectionObserverCallback = entries => {\n        if (!isObserverDisabled && Array.isArray(entries) && entries.length > 0) {\n          for (const entry of entries) {\n            if (entry.isIntersecting && entry.target instanceof HTMLElement) {\n              const { id } = entry.target;\n              const link = document.querySelector('[href=\"#' + id + '\"]');\n              if (link instanceof HTMLAnchorElement) {\n                setElementActive(link);\n              }\n              break;\n            }\n          }\n        }\n      };\n      // rootMargin is important when multiple sections are in the observable area **on page load**.\n      // they will still be highlighted on scroll because of the root margin.\n      const ob = new IntersectionObserver(callback, {\n        threshold: 0,\n        rootMargin: '0px 0px -50% 0px',\n      });\n      for (const title of siteContent.querySelectorAll(titles)) {\n        if (title instanceof HTMLElement && !title?.dataset?.ignore) {\n          ob.observe(title);\n        }\n      }\n    }\n  }\n\n  try {\n    await buildNav();\n    await setNav();\n    if (location.hash) {\n      delayObserver();\n    }\n    observeSections();\n  } catch (e) {\n    if (e instanceof Error) {\n      console.error(e.message);\n    } else {\n      console.error(e);\n    }\n  }\n};\n", "/**\n * @license\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { registerHeaderListeners, registerSearchFormListeners } from 'static/shared/header/header';\nimport { CarouselController } from 'static/shared/carousel/carousel';\nimport { ClipboardController } from 'static/shared/clipboard/clipboard';\nimport { ToolTipController } from 'static/shared/tooltip/tooltip';\nimport { SelectNavController } from 'static/shared/outline/select';\nimport { ModalController } from 'static/shared/modal/modal';\nimport { initModals } from 'static/shared/jump/jump';\n\nimport { keyboard } from 'static/shared/keyboard/keyboard';\nimport * as analytics from 'static/shared/analytics/analytics';\nimport { initJumpLinks } from './about/index';\n\nwindow.addEventListener('load', () => {\n  for (const el of document.querySelectorAll<HTMLButtonElement>('.js-clipboard')) {\n    new ClipboardController(el);\n  }\n\n  for (const el of document.querySelectorAll<HTMLDialogElement>('.js-modal')) {\n    new ModalController(el);\n  }\n\n  for (const t of document.querySelectorAll<HTMLDetailsElement>('.js-tooltip')) {\n    new ToolTipController(t);\n  }\n\n  for (const el of document.querySelectorAll<HTMLSelectElement>('.js-selectNav')) {\n    new SelectNavController(el);\n  }\n\n  for (const el of document.querySelectorAll<HTMLSelectElement>('.js-carousel')) {\n    new CarouselController(el);\n  }\n\n  for (const el of document.querySelectorAll('.js-toggleTheme')) {\n    el.addEventListener('click', () => {\n      toggleTheme();\n    });\n  }\n\n  if (document.querySelector<HTMLElement>('.js-gtmID')?.dataset.gtmid && window.dataLayer) {\n    analytics.func(function () {\n      removeUTMSource();\n    });\n  } else {\n    removeUTMSource();\n  }\n\n  registerHeaderListeners();\n  registerSearchFormListeners();\n  initModals();\n  initJumpLinks();\n  registerCookieNotice();\n});\n\n// Pressing '/' focuses the search box\nkeyboard.on('/', 'focus search', e => {\n  const searchInput = Array.from(\n    document.querySelectorAll<HTMLInputElement>('.js-searchFocus')\n  ).pop();\n  // Favoring the Firefox quick find feature over search input\n  // focus. See: https://github.com/golang/go/issues/41093.\n  if (searchInput && !window.navigator.userAgent.includes('Firefox')) {\n    e.preventDefault();\n    searchInput.focus();\n  }\n});\n\n// Pressing 'y' changes the browser URL to the canonical URL\n// without triggering a reload.\nkeyboard.on('y', 'set canonical url', () => {\n  let canonicalURLPath = document.querySelector<HTMLDivElement>('.js-canonicalURLPath')?.dataset[\n    'canonicalUrlPath'\n  ];\n  if (canonicalURLPath && canonicalURLPath !== '') {\n    const fragment = window.location.hash;\n    if (fragment) {\n      canonicalURLPath += fragment;\n    }\n    window.history.replaceState(null, '', canonicalURLPath);\n  }\n});\n\n/**\n * setupGoogleTagManager initializes Google Tag Manager.\n */\n(function setupGoogleTagManager() {\n  analytics.track({\n    'gtm.start': new Date().getTime(),\n    event: 'gtm.js',\n  });\n})();\n\n/**\n * removeUTMSource removes the utm_source GET parameter if present.\n * This is done using JavaScript, so that the utm_source is still\n * captured by Google Analytics.\n */\nfunction removeUTMSource() {\n  const urlParams = new URLSearchParams(window.location.search);\n  const utmSource = urlParams.get('utm_source');\n  if (utmSource !== 'gopls' && utmSource !== 'godoc' && utmSource !== 'pkggodev') {\n    return;\n  }\n\n  /** Strip the utm_source query parameter and replace the URL. **/\n  const newURL = new URL(window.location.href);\n  urlParams.delete('utm_source');\n  newURL.search = urlParams.toString();\n  window.history.replaceState(null, '', newURL.toString());\n}\n\n/**\n * toggleTheme switches the preferred color scheme between auto, light, and dark.\n */\nfunction toggleTheme() {\n  let nextTheme = 'dark';\n  const theme = document.documentElement.getAttribute('data-theme');\n  if (theme === 'dark') {\n    nextTheme = 'light';\n  } else if (theme === 'light') {\n    nextTheme = 'auto';\n  }\n  let domain = '';\n  if (location.hostname.endsWith('go.dev')) {\n    domain = 'domain=.go.dev;';\n  }\n  document.documentElement.setAttribute('data-theme', nextTheme);\n  document.cookie = `prefers-color-scheme=${nextTheme};${domain}path=/;max-age=31536000;`;\n}\n\n/**\n * registerCookieNotice makes the cookie notice visible and adds listeners to dismiss it\n * if it has not yet been acknowledge by the user.\n */\nfunction registerCookieNotice() {\n  const themeCookie = document.cookie.match(/cookie-consent=true/);\n  if (!themeCookie) {\n    const notice = document.querySelector('.js-cookieNotice');\n    const button = notice?.querySelector('button');\n    notice?.classList.add('Cookie-notice--visible');\n    button?.addEventListener('click', () => {\n      let domain = '';\n      if (location.hostname.endsWith('go.dev')) {\n        // Apply the cookie to *.go.dev.\n        domain = 'domain=.go.dev;';\n      }\n      document.cookie = `cookie-consent=true;${domain}path=/;max-age=31536000`;\n      notice?.remove();\n    });\n  }\n}\n"],
+  "mappings": "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",
+  "names": ["registerHeaderListeners", "header", "menuItemHover", "e", "target", "forced", "toggleForcedOpen", "_a", "_b", "isForced", "currentTarget", "closeSubmenuOnEsc", "event", "forcedOpenItem", "headerbuttons", "button", "isActive", "handleNavigationDrawerInactive", "handleNavigationDrawerActive", "scrim", "subnav", "getNavigationDrawerMenuItems", "navigationDrawer", "menuItems", "anchorEl", "getNavigationDrawerIsSubnav", "parentMenuItem", "item", "handleMenuItemTabLeftFactory", "handleMenuItemTabRightFactory", "prepMobileNavigationDrawer", "isSubnav", "parentLi", "submenu", "drawer", "registerSearchFormListeners", "searchForm", "expandSearch", "input", "headerLogo", "menuButton", "CarouselController", "el", "index", "d", "s", "_a", "i", "v", "_b", "arrows", "dots", "li", "button", "ClipboardController", "el", "_a", "_b", "_c", "_d", "_e", "e", "TOOLTIP_SHOW_DURATION_MS", "text", "durationMs", "ToolTipController", "el", "e", "SelectNavController", "el", "e", "target", "href", "ModalController", "el", "button", "_a", "btn", "track", "event", "category", "action", "label", "_a", "func", "fn", "KeyboardController", "key", "description", "callback", "options", "_a", "_b", "handler", "t", "track", "keyboard", "initModals", "_a", "jumpDialog", "jumpBody", "jumpList", "jumpFilter", "doc", "jumpListItems", "collectJumpListItems", "items", "el", "newJumpListItem", "item", "a", "b", "name", "kind", "lastFilterValue", "activeJumpItem", "updateJumpList", "filter", "setActiveJumpItem", "filterLowerCase", "exactMatches", "prefixMatches", "infixMatches", "makeLinkHtml", "boldStart", "boldEnd", "nameLowerCase", "index", "msg", "n", "cs", "activeTop", "activeBottom", "incActiveJumpItem", "delta", "event", "shortcutsDialog", "keyboard", "e", "jumpOutlineInput", "initJumpLinks", "titles", "nav", "leftNav", "siteContent", "isObserverDisabled", "el", "type", "props", "children", "docEl", "child", "c", "buildNav", "resolve", "reject", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "navItems", "elements", "title", "navItem", "link", "subLinks", "subnavItem", "subItem", "list", "element", "setNav", "a", "setElementActive", "resetNav", "parent", "setLinkManually", "delayObserver", "observeSections", "callback", "entries", "entry", "id", "ob", "e", "_a", "el", "ClipboardController", "ModalController", "t", "ToolTipController", "SelectNavController", "CarouselController", "toggleTheme", "func", "removeUTMSource", "registerHeaderListeners", "registerSearchFormListeners", "initModals", "initJumpLinks", "registerCookieNotice", "keyboard", "e", "searchInput", "canonicalURLPath", "fragment", "track", "urlParams", "utmSource", "newURL", "nextTheme", "theme", "domain", "notice", "button"]
 }
diff --git a/static/frontend/frontend.min.css b/static/frontend/frontend.min.css
index b48fd6a..81aaf86 100644
--- a/static/frontend/frontend.min.css
+++ b/static/frontend/frontend.min.css
@@ -3,7 +3,7 @@
  * Use of this source code is governed by a BSD-style
  * license that can be found in the LICENSE file.
  */
-html,body,button,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,hr,input,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,dialog,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}*,:before,:after{box-sizing:border-box}body{color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:1rem;line-height:normal}h1{font-size:1.5rem}h2{font-size:1.375rem}h3{font-size:1.25rem}h4{font-size:1.125rem}h5{font-size:1rem}h6{font-size:.875rem}h1,h2,h3,h4{font-weight:600;line-height:1.25em;word-break:break-word}h5,h6{font-weight:500;line-height:1.3em;word-break:break-word}hr{border:none;border-bottom:var(--border);margin:0;width:100%}p{font-size:1rem;line-height:1.5rem;max-width:60rem}strong{font-weight:600}.go-textSubtle{color:var(--color-text-subtle)}.go-textTitle{font-size:1.125rem;font-weight:600;line-height:1.25rem}.go-textLabel{font-size:.875rem;font-weight:600;line-height:1rem}.go-textPagination{font-size:.875rem;line-height:1rem}code,pre,textarea.code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.875rem;line-height:1.5em}pre,textarea.code{background-color:var(--color-background-accented);border:var(--border);border-radius:var(--border-radius);color:var(--color-text);overflow-x:auto;padding:.625rem;tab-size:4;white-space:pre}button,input,select,textarea{font:inherit}a,a:link,a:visited{color:var(--color-brand-primary);text-decoration:none}a:hover,a:focus{color:var(--color-brand-primary);text-decoration:underline}a:hover>*{text-decoration:underline}button:focus:not([disabled]){border-color:var(--color-brand-primary);box-shadow:var(--focus-box-shadow);outline:transparent}.go-Button{align-items:center;background-color:var(--color-button);border:.0625rem solid transparent;border-radius:var(--border-radius);color:var(--color-button-text);cursor:pointer;display:inline-flex;font-weight:500;gap:.25rem}.go-Button:not(.go-Button--inline){padding:.5rem}.go-Button--accented{background-color:var(--color-button-accented);color:var(--color-button-accented-text)}.go-Button--inverted,.go-Button--text,.go-Button--inline{background-color:var(--color-button-inverted);color:var(--color-button-inverted-text)}.go-Button--inline{background-color:transparent}.go-Button--inverted{border:var(--border)}.go-Button:hover{box-shadow:var(--focus-box-shadow);filter:contrast(.95)}.go-Button--inline:hover{box-shadow:none;text-decoration:underline var(--color-button-inverted-text)}.go-Button:focus{filter:contrast(.95)}.go-Button--inverted:focus{border-color:var(--color-button-inverted-text)}.go-Button:active{box-shadow:none;filter:contrast(.85)}.go-Button:disabled{background-color:var(--color-button-disabled);box-shadow:none;color:var(--color-button-text-disabled);cursor:initial;filter:none;text-decoration:none}.go-Button--accented:disabled{background-color:var(--color-button-accented-disabled);color:var(--color-button-accented-text-disabled)}.go-Button--inverted:disabled,.go-Button--text:disabled,.go-Button--inline:disabled{background-color:var(--color-button-inverted-disabled);color:var(--color-button-inverted-text-disabled)}.go-Button--inline:disabled{background-color:transparent}.go-Breadcrumb ol{line-height:1.5rem;white-space:initial}.go-Breadcrumb li{align-items:center;color:var(--color-text-subtle);display:inline-flex;font-size:.875rem}.go-Breadcrumb li:not(:last-child):after{content:">";padding:0 .5rem}.go-Breadcrumb li:last-child>a{color:var(--color-text-subtle)}.go-Breadcrumb li>.go-Clipboard{margin:0 .5rem}.go-Carousel{align-items:center;display:flex;flex-direction:column;position:relative;text-align:center}.go-Carousel-slide{margin:.5rem 3rem}.go-Carousel-slide[aria-hidden]{display:none}.go-Carousel-prevSlide{left:0}.go-Carousel-nextSlide{right:0}.go-Carousel-prevSlide,.go-Carousel-nextSlide{background-color:transparent;border-radius:var(--border-radius);font-size:1.5rem;height:2.75rem;margin-top:-.7rem;opacity:0;position:absolute;top:50%;width:2.75rem}.go-Carousel-prevSlide:hover,.go-Carousel-nextSlide:hover{background-color:var(--color-background-accented);cursor:pointer}.go-Carousel:hover .go-Carousel-prevSlide,.go-Carousel:hover .go-Carousel-nextSlide,.go-Carousel:focus-within .go-Carousel-prevSlide,.go-Carousel:focus-within .go-Carousel-nextSlide{opacity:1}.go-Carousel-dots{display:flex;font-size:.4375rem;gap:.5rem}.go-Carousel-dot{background-color:var(--color-border);border-radius:2rem;height:.4375rem;margin-top:1rem;width:.4375rem}.go-Carousel-dot--active,.go-Carousel-dot:hover{background-color:var(--color-text-subtle);outline:.125rem solid var(--color-text)}.go-Carousel-dot:focus{outline:.063rem solid var(--color-text)!important}.go-Carousel-dot--active:focus{outline:.188rem solid var(--color-text)!important}.go-Carousel-obscured{border:0;clip:rect(0 0 0 0);height:.0625rem;margin:-.0625rem;overflow:hidden;padding:0;position:absolute;width:.0625rem}.go-Chip{background:var(--color-button);border:.0625rem solid var(--color-button);border-radius:1.25rem;color:var(--color-button-text);font-size:.75rem;padding:.125rem .625rem}.go-Chip--accented{background:var(--color-button-accented);border:.0625rem solid var(--color-button-accented);color:var(--color-button-accented-text)}.go-Chip--inverted{background:var(--color-button-inverted);border:var(--border);color:var(--color-text)}.go-Chip--highlighted{background:var(--color-background-highlighted-link);border-color:var(--color-background-highlighted-link);color:var(--color-brand-primary)}.go-Chip--alert{background:var(--pink);border:.0625rem solid var(--pink);color:var(--color-text-inverted)}.go-Chip--vuln{background:var(--pink-light);border:.0625rem solid var(--pink-light);color:var(--color-text-inverted)}.go-Chip--subtle{background-color:var(--color-background-accented);border-color:transparent;color:var(--color-text-subtle)}.go-Clipboard{position:relative}.go-Clipboard:before{background-color:var(--color-background-inverted);border-radius:var(--border-radius);color:var(--color-text-inverted);content:attr(data-tooltip);display:block;font-size:.9em;left:calc(100% + .125rem);padding:.25rem .3rem;position:absolute;text-transform:uppercase;top:.125rem;white-space:nowrap;z-index:1000}.go-Clipboard:after{border-bottom:.25rem solid transparent;border-left:0;border-right:.25rem solid var(--color-background-inverted);border-top:.25rem solid transparent;content:"";display:block;position:absolute;right:-.125rem;top:.5625rem;z-index:1000}.go-Clipboard:not([data-tooltip]):before,.go-Clipboard:not([data-tooltip]):after,.go-Clipboard[data-tooltip=""]:before,.go-Clipboard[data-tooltip=""]:after{display:none}:root{--gray-1: #202224;--gray-2: #3e4042;--gray-3: #555759;--gray-4: #6e7072;--gray-5: #848688;--gray-6: #aaacae;--gray-7: #c6c8ca;--gray-8: #dcdee0;--gray-9: #f0f1f2;--gray-10: #f8f8f8;--turq-light: #5dc9e2;--turq-med: #50b7e0;--turq-dark: #007d9c;--turq-bright: #00769c;--blue: #bfeaf4;--blue-light: #f2fafd;--black: #000;--green: #3a6e11;--green-light: #5fda64;--pink: #c85e7a;--pink-light: #fdecf1;--purple: #542c7d;--slate: #253443;--white: #fff;--yellow: #fceea5;--yellow-light: #fff8cc;--color-brand-primary: var(--turq-dark);--color-background: var(--white);--color-background-inverted: var(--slate);--color-background-accented: var(--gray-10);--color-background-highlighted: var(--blue);--color-background-highlighted-link: var(--blue-light);--color-background-info: var(--gray-9);--color-background-warning: var(--yellow-light);--color-background-alert: var(--pink-light);--color-border: var(--gray-7);--color-text: var(--gray-1);--color-text-subtle: var(--gray-4);--color-text-link: var(--turq-dark);--color-text-inverted: var(--white);--color-code-comment: var(--green);--color-bright-text-link: var(--turq-bright);--color-input: var(--color-background);--color-input-text: var(--color-text);--color-button: var(--turq-dark);--color-button-disabled: var(--gray-9);--color-button-text: var(--white);--color-button-text-disabled: var(--gray-3);--color-button-inverted: var(--color-background);--color-button-inverted-disabled: var(--color-background);--color-button-inverted-text: var(--color-brand-primary);--color-button-inverted-text-disabled: var(--color-text-subtle);--color-button-accented: var(--yellow);--color-button-accented-disabled: var(--gray-9);--color-button-accented-text: var(--gray-1);--color-button-accented-text-disabled: var(--gray-3)}[data-theme=dark]{--color-brand-primary: var(--turq-med);--color-background: var(--gray-1);--color-background-accented: var(--gray-2);--color-background-highlighted: var(--gray-2);--color-background-highlighted-link: var(--gray-2);--color-background-info: var(--gray-3);--color-background-warning: var(--yellow);--color-background-alert: var(--pink);--color-border: var(--gray-4);--color-text: var(--gray-9);--color-text-link: var(--turq-med);--color-text-subtle: var(--gray-7);--color-code-comment: var(--green-light);--color-bright-text-link: var(--turq-med)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--color-brand-primary: var(--turq-med);--color-background: var(--gray-1);--color-background-accented: var(--gray-2);--color-background-highlighted: var(--gray-2);--color-background-highlighted-link: var(--gray-2);--color-background-info: var(--gray-3);--color-background-warning: var(--yellow);--color-background-alert: var(--pink);--color-border: var(--gray-4);--color-text: var(--gray-9);--color-text-link: var(--turq-med);--color-text-subtle: var(--gray-7);--color-code-comment: var(--green-light)}}.go-Footer{background-color:var(--color-background-inverted);color:var(--color-text-inverted);font-size:.875rem;width:100%}[data-local=true] .go-Footer{display:none}.go-Footer-links{display:flex;flex-wrap:wrap;justify-content:space-between;margin:auto;max-width:75.75rem;padding:2rem 1.5rem 2.625rem}.go-Footer-linkColumn{flex:0 0 9.5rem}.go-Footer .go-Footer-link{color:var(--color-text-inverted);display:flex;flex:1;font-size:.875rem;line-height:2rem}.go-Footer .go-Footer-link--primary{font-size:1.125rem;line-height:1.75rem;margin-bottom:.5rem;margin-top:.75rem}.go-Footer-listItem p{color:var(--color-text-inverted);font-size:.875rem}.go-Footer-bottom{align-items:center;border-top:var(--border);display:flex;margin:0 1.5rem;min-height:4.125rem}.go-Footer-gopher{align-self:flex-end;height:3.147rem;width:5rem}.go-Footer-listRow{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0;text-align:center}.go-Footer-listItem{align-items:center;display:flex;flex:1 100%;justify-content:center;margin:.4rem 0;padding:0 1rem}.go-Footer-listItem a:link,.go-Footer-listItem a:visited{color:var(--color-text-inverted)}.go-Footer-listItem .go-Button--text{background-color:transparent;font-size:1rem;margin:-.5rem 0}.go-Footer-listItem [data-value]{display:none}[data-theme=auto] .go-Footer-listItem [data-value=auto],:root:not([data-theme]) .go-Footer-listItem [data-value=auto]{display:initial}[data-theme=dark] .go-Footer-listItem [data-value=dark],[data-theme=light] .go-Footer-listItem [data-value=light]{display:initial}.go-Footer-toggleTheme,.go-Footer-keyboard{margin:0 0 .5rem}.go-Footer-googleLogo{align-self:flex-end;height:1.5rem;margin-bottom:1.3rem;text-align:right}.go-Footer-googleLogoImg{height:1.5rem;width:4.529rem}@media only screen and (min-width: 52rem){.go-Footer-listItem{flex:initial}.go-Footer-listItem+.go-Footer-listItem{border-left:var(--border)}.go-Footer-toggleTheme{margin:0 0 0 -.5rem}.go-Footer-keyboard{margin:0}}select:focus:not([disabled]),input:focus:not([disabled]){border-color:var(--color-brand-primary);box-shadow:var(--focus-box-shadow);outline:transparent;z-index:2}input::placeholder{color:var(--color-text-subtle)}.go-Form{align-items:start;display:flex;flex-direction:column;gap:1rem}.go-Label{display:flex;flex-direction:column;gap:.5rem}.go-Label--inline{align-items:center;flex-direction:row}.go-Label legend{margin-bottom:.5rem}.go-Label--inline legend{float:left;margin-bottom:0}.go-Input,.go-Select{background:var(--color-input);border:var(--border);border-radius:var(--border-radius);color:var(--color-input-text)}.go-Input{padding:.4063rem .5rem}.go-Select{appearance:none;background:url(/static/shared/icon/arrow_drop_down_gm_grey_24dp.svg) right no-repeat;background-color:var(--color-background);background-position:right center;border-radius:var(--border-radius);margin:0;padding:.3438rem 1.25rem .3438rem .5rem}.go-InputGroup{display:flex}.go-InputGroup .go-Input{flex:1}.go-InputGroup>:not(:first-child,:last-child){border-radius:0;margin-left:-.0625rem}.go-InputGroup>:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.go-InputGroup>:last-child{border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.0625rem}.go-InputGroup>*:hover,.go-InputGroup>*:focus{z-index:1}.go-ShortcutKey{display:flex;position:relative}.go-ShortcutKey .go-Input{flex-grow:1}.go-ShortcutKey:after{align-self:center;background-color:var(--color-background-accented);border-radius:.5rem;color:var(--gray-6);content:attr(data-shortcut);content:attr(data-shortcut) / attr(data-shortcut-alt);display:none;font-size:.75rem;padding:.0625rem 0;position:absolute;right:.75rem;text-align:center;width:1.5rem;z-index:1}@media only screen and (min-width: 52rem){.go-ShortcutKey:after{display:initial}}.go-GopherMessage img{display:block;height:15rem;margin:0 auto;padding:1.25rem 0;width:15rem}.go-GopherMessage p{font-weight:600;margin:auto;text-align:center}.go-Banner{background-color:var(--gray-1);display:none}.go-Banner-inner{align-items:center;display:flex;justify-content:space-between;margin:0 auto;min-height:2.5rem;padding:.5rem var(--gutter)}.Site--wide .go-Banner-inner{max-width:98rem}.go-Banner--full .go-Banner-inner{max-width:unset}.go-Banner-message{color:var(--white);margin-right:1.25rem}.go-Banner-action:link,.go-Banner-action:visited{color:var(--white);text-decoration:underline;white-space:nowrap}@media only screen and (min-width: 52rem){.go-Banner{display:block}}.go-Header{background:#007d9c;border-bottom:none;box-shadow:0 .0625rem .125rem #ababab4d;top:0;width:100%;z-index:20}.go-Header-inner{margin:0 auto;padding:0 var(--gutter)}.Site--wide .go-Header-inner{max-width:98rem}.go-Header--full .go-Header-inner{max-width:initial}.go-Header-nav{align-items:center;display:flex;height:3.5rem;justify-content:space-between}.go-Header-rightContent{align-items:center;display:flex;height:100%;justify-content:flex-end;width:100%}.go-Header-rightContent form{flex-grow:1}.go-Header-inner--dark{border-bottom:none;color:var(--white)}.go-Header-logo{display:block;height:2rem;margin-right:2.25rem;width:5.125rem}.go-Header-logo--hidden{display:none}.go-Header-menuItem{display:none;position:relative}.go-Header-menu{align-items:stretch;display:flex;height:100%;list-style:none;margin:0;padding:0}[data-local=true] .go-Header-menu{display:none}.go-Header-submenu{background:transparent;background-color:var(--color-background);border:.0625rem solid #007d9d;border-width:0 .0625rem .0625rem;color:var(--color-text);display:none;flex-flow:column wrap;list-style-type:none;margin-top:3.5rem;opacity:0;padding:1.5rem 1.5rem 0;position:absolute;transition:all .2s ease;visibility:hidden}.go-Header-menuItem:hover>.js-desktop-menu-hover:not(.forced-closed)~.go-Header-submenu,.go-Header-menuItem:focus-within>.js-desktop-menu-hover:not(.forced-closed)~.go-Header-submenu{display:flex;opacity:1;visibility:visible}.go-Header-menuItem .go-Header-submenuItem a:link,.go-Header-menuItem .go-Header-submenuItem a:visited{align-items:baseline;border-bottom:none;color:var(--color-text-link);display:inline-flex;font-weight:400;margin:0;margin-bottom:-.125rem;padding:0}.go-Header-menuItem .go-Icon{filter:brightness(0%) saturate(100%) invert(100%);font-size:1.25rem}.go-Header-menuItem .go-Header-submenuItem .go-Icon,.go-NavigationDrawer-listItem .go-Icon{filter:brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(162deg) brightness(71%) contrast(177%)}.go-Header-submenu .go-Header-submenuItem i{font-size:.75rem;margin-left:.25rem;transform:translateY(.1rem)}.go-Header-menu .go-Header-submenu--why{left:-.0625rem;width:18.5rem}.go-Header-menu .go-Header-submenu--docs{height:20.78rem;left:-12rem;width:37.25rem}.go-Header-menu .go-Header-submenu--community{height:18.4rem;right:-.0625rem;width:37.25rem}.go-Header-socialIcons{display:flex;flex-wrap:wrap}.go-Header-submenu .go-Header-submenuItem a.go-Header-socialIcon{display:inline-flex;flex:0 1 auto;width:auto}.go-Header-submenu .go-Header-submenuItem a.go-Header-socialIcon:not(:last-child){margin-right:.75rem}@media only screen and (min-width: 65rem){.go-Header-menuItem{align-items:stretch;display:inline-flex;flex:none}.go-Header-menu{justify-content:flex-end}.go-Header-navOpen{display:none}}.go-Header-menuItem .js-desktop-menu-hover img{pointer-events:none}.go-Header-menuItem a:link,.go-Header-menuItem a:visited{align-items:center;border-bottom:.1875rem solid transparent;border-top:.1875rem solid transparent;color:var(--color-text);display:inline-flex;padding:0 1.5rem;text-align:center;text-decoration:none;width:100%}.go-Header-menuItem--active a:link,.go-Header-menuItem--active a:visited{border-bottom-color:var(--turq-med);font-weight:700}.go-Header-menuItem a:hover{border-bottom-color:var(--white)}.go-Header-menuItem:hover>a:not(.forced-closed).js-desktop-menu-hover,.go-Header-menuItem:focus-within>a:not(.forced-closed).js-desktop-menu-hover{background:var(--white);border-color:var(--white);color:var(--color-text-link)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .go-Header-menuItem:hover>a:not(.forced-closed).js-desktop-menu-hover .go-Icon,:root:not([data-theme=light]) .go-Header-menuItem:focus-within>a:not(.forced-closed).js-desktop-menu-hover .go-Icon{filter:brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(158deg) brightness(83%) contrast(157%)}:root:not([data-theme=light]) .go-Header-submenuItem .go-Icon:not(.go-Icon--accented){filter:brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(163deg) brightness(80%) contrast(157%)}}.go-NavigationDrawer-listItem>div:not(.go-NavigationDrawer),.go-NavigationDrawer-listItem a:link,.go-NavigationDrawer-listItem a:visited{display:block;margin:0 1rem;padding:.5rem}.go-NavigationDrawer-listItem>span{color:var(--gray-2)}.go-Header-inner--dark .go-Header-menuItem a:link,.go-Header-inner--dark .go-Header-menuItem a:visited{color:var(--white)}.go-NavigationDrawer-listItem.go-NavigationDrawer-hasSubnav>a i{float:right}.go-Header-inner--dark .go-Header-menuItem .go-Header-submenuItem{color:var(--color-text-link)}.go-Header-inner--dark .go-Header-menuItem .js-desktop-menu-hover.is-expanded{background-color:var(--white);color:var(--color-text-link)}.go-Header-inner--dark .go-Header-menuItem .go-Header-submenu a:link,.go-Header-inner--dark .go-Header-menuItem .go-Header-submenu a:visited{align-items:baseline;color:var(--color-text-link);display:inline-flex;margin-bottom:-.125rem;width:auto}.go-Header-submenu .go-Header-submenuItem a:link,.go-Header-submenu .go-Header-submenuItem a:visited{border-bottom:none;font-weight:400;margin:0;padding:0}.go-Header-submenu .go-Header-submenuItem a:focus{text-decoration:underline!important}.go-Header-inner--dark .go-Header-menuItem:hover>a:not(.forced-closed).js-desktop-menu-hover,.go-Header-inner--dark .go-Header-menuItem:focus-within>a:not(.forced-closed).js-desktop-menu-hover{background:var(--color-background);border-color:var(--color-background)}.go-Header-submenu p{max-width:15.5rem}.go-Header-submenu a:link:hover,.go-Header-submenu a:visited:hover{border-bottom:.125rem solid var(--turq-dark);text-decoration:none}.go-Header-submenu a:link:hover>*,.go-Header-submenu a:visited:hover>*{text-decoration:none}.go-Header-submenu .go-Header-submenuItem{line-height:1;padding-bottom:1.5rem}.go-Header-submenu .go-Header-submenuItem p{color:var(--color-text-subtle);font-size:.875rem;margin-top:.55rem}.go-Header-inner--dark .go-Header-submenu .go-Header-submenuItem p{color:var(--color-text-subtle)}.go-Header-navOpen{background:no-repeat center/2rem url(/images/menu-24px.svg);border:none;height:2.5rem;margin-left:1rem;width:2.5rem}.go-Header-navOpen--hidden{display:none}.go-Header-navOpen--white{background:no-repeat center/2rem url(/static/shared/icon/menu_gm_grey_24dp.svg);filter:brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%)}.go-SearchForm--expanded{flex-grow:1}.go-SearchForm-form{display:none}.go-SearchForm-form:after{right:2.75rem}.go-SearchForm--expanded .go-SearchForm-form{display:flex}.go-SearchForm-expandSearch{appearance:none;background:none;font-size:1.5rem}.go-SearchForm--expanded .go-SearchForm-expandSearch{display:none}@media only screen and (min-width: 32rem){.go-Header-rightContent{width:100%}.go-SearchForm{flex:1}.go-SearchForm-form{display:flex}.go-SearchForm-expandSearch{display:none}.go-Header-logo--hidden{display:initial}}.go-NavigationDrawer{background:var(--color-background);height:100%;left:auto;max-width:27rem;position:fixed;right:0;top:0;transform:translate(100%);transition:transform .1s ease-in-out;width:85%;z-index:30}@media only screen and (min-width: 65rem){.go-NavigationDrawer{display:none}}.go-NavigationDrawer.is-active{transform:translate(0)}.go-NavigationDrawer-header{border-bottom:.0625rem solid #eee;margin-bottom:.5rem}.go-NavigationDrawer-submenuItem{width:100%}.go-NavigationDrawer-submenuItem .go-NavigationDrawer-header{align-items:center;color:var(--color-text-link);display:flex;font-size:1.375rem;justify-content:flex-start;min-height:4.0625rem;padding:.5rem .5rem .5rem 1.5rem}.go-NavigationDrawer-submenuItem .go-NavigationDrawer-header>a{display:flex;margin-left:0}.go-NavigationDrawer-logo{display:block;height:2rem;margin:1rem;width:5.125rem}.go-NavigationDrawer-list{list-style:none;margin:0;padding:0}.go-NavigationDrawer-listItem{color:var(--color-text-subtle);font-size:1.125rem;margin:0 .5rem}.go-NavigationDrawer-listItem--active{background-color:var(--blue);border-radius:.4rem}.go-NavigationDrawer-listItem .material-icons{color:var(--color-brand-primary);display:inline-block;margin-right:.5rem;text-decoration:none;vertical-align:sub}@media only screen and (max-width: 57.7rem){.go-NavigationDrawer-listItem .go-Header-socialIcons{padding:.5rem 0}.go-NavigationDrawer-listItem a.go-Header-socialIcon{display:inline-block;margin:0;padding:0 .5rem}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .go-NavigationDrawer-listItem .go-Icon:not(.go-Icon--accented){filter:brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(163deg) brightness(80%) contrast(157%)}}}.go-NavigationDrawer-scrim{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:20}.go-NavigationDrawer.is-active+.go-NavigationDrawer-scrim{background-color:var(--gray-1);display:block;opacity:.32}.skip-to-content-link{background:var(--color-background);border-radius:.375rem;clip:rect(0 0 0 0);color:var(--color-text);font-weight:500;left:8%;margin:.313rem;overflow:hidden;position:absolute;top:.75rem}.skip-to-content-link:focus{clip:unset;z-index:1}.depsdev-Icon{height:1.125em;vertical-align:text-bottom;width:auto}.go-Icon{filter:none;height:1.125em;vertical-align:text-bottom;width:auto}.go-Icon--accented{filter:brightness(0) invert(45%) sepia(94%) saturate(6735%) hue-rotate(176deg) brightness(94%) contrast(101%)}.go-Icon--inverted{filter:brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%);@media (forced-colors: active) and (prefers-color-scheme: light){filter:brightness(500%) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%)}}[data-theme=dark] .go-Icon:not(.go-Icon--accented){filter:brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%)}[data-theme=dark] .go-Icon--accented{filter:brightness(0) invert(69%) sepia(46%) saturate(466%) hue-rotate(153deg) brightness(90%) contrast(88%)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .go-Icon:not(.go-Icon--accented){filter:brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%)}:root:not([data-theme=light]) .go-Icon--accented{filter:brightness(0) invert(57%) sepia(63%) saturate(4864%) hue-rotate(160deg) brightness(100%) contrast(101%)}}.go-Message{color:var(--color-text);font-size:.875rem;line-height:1.5rem;padding:.25rem .5rem;width:100%}.go-Message--notice{background-color:var(--color-background-info)}.go-Message--warning{background-color:var(--color-background-warning);color:var(--gray-1)}.go-Message--alert{background-color:var(--color-background-alert)}.go-Message>.go-Icon{vertical-align:text-top}[data-theme=dark] .go-Message a:not(:hover){color:var(--color-text);text-decoration:underline}[data-theme=dark] .go-Message--warning .go-Icon{filter:none}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .go-Message--warning .go-Icon{filter:none}}dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:white;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.1)}._dialog_overlay{position:fixed;inset:0}dialog.fixed{position:fixed;top:50%;transform:translateY(-50%)}.go-Modal{background:var(--color-background);border:var(--border);border-radius:var(--border-radius);bottom:0;box-shadow:var(--box-shadow);color:var(--color-text);display:flex;flex-direction:column;gap:1rem;max-height:100%;max-width:100%;position:fixed;top:0}.go-Modal>form{display:contents}.go-Modal--small{width:20rem}.go-Modal--md{width:30rem}.go-Modal--lg{width:40rem}.go-Modal-header{display:flex;justify-content:space-between}.go-Modal-header h2{font-size:1.15rem;line-height:1.25rem}.go-Modal-body{flex-grow:1;min-height:2rem;min-width:18rem}.go-Modal-actions{text-align:right}@media not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none){.go-Modal{padding-bottom:0}}}.go-Tree{--js-tree-height: 0;display:flex;flex-direction:column}.go-Tree ul{list-style:none;padding-left:0}.go-Tree li:last-of-type{padding-bottom:.25rem}.go-Tree a+ul{display:none}.go-Tree a[aria-expanded=true]+ul[role=group]{display:block}.go-Tree a[aria-level="1"]+ul[role=group]{max-height:calc(100vh - var(--js-tree-height, 0) - var(--js-sticky-header-height, 3.5rem) - 5rem);overflow-y:auto;padding:.5rem .25rem 0}.go-Tree a{color:var(--color-text-subtle);display:block;line-height:1.5rem;overflow:hidden;padding:.125rem 0 .125rem 1.25rem;position:relative;text-overflow:ellipsis;user-select:none;white-space:nowrap}.go-Tree>li>a,.go-Tree a[aria-level="1"]{display:block;font-size:1rem;font-weight:500;line-height:2.5rem;padding:0 1rem}.go-Tree a:focus,.go-Tree a:hover{text-decoration:underline;z-index:1}.go-Tree a[aria-selected=true]{color:var(--color-text);font-weight:500}.go-Tree a[aria-level="1"][aria-selected=true],.go-Tree a[aria-level="1"][aria-expanded=true]{background-color:var(--color-background-accented)}.go-Tree a[aria-level="3"][aria-expanded=true]{margin-bottom:.375em}.go-Tree a[aria-level="2"]{margin-bottom:.25rem;position:relative}.go-Tree a[aria-level="3"]{padding-left:2.5rem}.go-Tree a[aria-level="4"]{border-left:.125rem solid var(--color-background-accented);margin-left:2.5rem;padding-left:.5rem}.go-Tree a[aria-selected=true][aria-level="2"]:not([aria-expanded]):before,.go-Tree a[aria-selected=true][aria-level="3"]:not([aria-expanded]):before{background-color:var(--color-brand-primary);border-radius:50%;content:"";display:block;height:.3125rem;left:.4688rem;position:absolute;top:.75rem;width:.3125rem}.go-Tree a[aria-expanded][aria-owns][aria-level="2"]:before,.go-Tree a[aria-expanded][aria-owns][aria-level="3"]:before{border-bottom:.25rem solid transparent;border-left:.25rem solid var(--color-border);border-right:0;border-top:.25rem solid transparent;content:"";display:block;height:0;left:.5rem;position:absolute;top:.625rem;transition:transform .1s linear;width:0}.go-Tree a[aria-expanded=true][aria-level="2"]:before,.go-Tree a[aria-expanded=true][aria-level="3"]:before{transform:rotate(90deg)}.go-Tree a[aria-expanded][aria-level="3"]:not([empty]):before,.go-Tree a[aria-selected][aria-level="3"]:not([empty]):before{left:1.5rem;top:.75rem}.go-Tree a[aria-selected=true][aria-level="4"]{border-left:.125rem solid var(--color-brand-primary)}.go-TabNav{margin:0 0 .5rem}.go-TabNav ul{display:flex;gap:2rem}.go-TabNav li{border-bottom:.25rem transparent solid;display:flex;font-size:1rem;height:2.375rem;padding:0 .25rem}.go-TabNav li[aria-current],.go-TabNav li:hover{border-color:var(--color-brand-primary)}.go-TabNav a{align-items:center;color:var(--color-text-subtle);display:inline-flex}.go-TabNav li:hover a{text-decoration:none}.go-TabNav li[aria-current] a{color:var(--color-text)}.go-Tooltip{border-radius:var(--border-radius);cursor:pointer;display:inline-block;position:relative}.go-Tooltip>summary{list-style:none}.go-Tooltip>summary::-webkit-details-marker,.go-Tooltip>summary::marker{display:none}.go-Tooltip>summary>img{vertical-align:text-bottom}.go-Tooltip p{background:var(--color-background) 80%;border:var(--border);border-radius:var(--border-radius);color:var(--color-text);font-size:.75rem;letter-spacing:.0187rem;line-height:1rem;padding:.5rem;position:absolute;top:1.5rem;white-space:normal;width:12rem;z-index:100}:root{--gutter: 1.5rem;--gap: 1rem;--scroll-margin: calc( var(--js-sticky-header-height, 3.5rem) + var(--js-sticky-nav-height, 0) + 2rem );--border: .0625rem solid var(--color-border);--border-radius: .25rem;--box-shadow: 0 0 .375rem 0 rgb(0 0 0 / 25%);--focus-box-shadow: 0 0 .0625rem .0625rem rgb(0 112 210 / 60%)}[data-theme=dark]{--box-shadow: 0 .3125rem .9375rem rgb(0 0 0 / 45%)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--box-shadow: 0 .3125rem .9375rem rgb(0 0 0 / 45%)}}@media (min-width: 50rem){:root{--gap: 2rem;--scroll-margin: calc( var(--js-sticky-header-height, 3.5rem) + var(--js-sticky-nav-height, 0) + 1rem )}}*:target{scroll-margin-top:var(--scroll-margin)}body{background-color:var(--color-background);display:flex;flex-direction:column;min-height:100vh;min-width:23.5rem;-webkit-overflow-scrolling:touch}.go-Container{display:flex;flex-direction:column;flex-grow:1;height:100%;margin-bottom:5rem}.go-Content{display:flex;flex-flow:column;gap:1rem;margin:0 auto;max-width:63rem;min-height:32rem;padding:2rem var(--gutter);width:100%}.go-Content--center{justify-content:center;margin:auto}.JumpDialog-body{height:12rem;overflow-y:auto}.JumpDialog-list{display:flex;flex-direction:column}.JumpDialog-input{width:100%}.JumpDialog a{padding:.25rem;text-decoration:none}.JumpDialog .JumpDialog-active{background-color:var(--color-brand-primary);color:var(--white)}.ShortcutsDialog-key{text-align:right}.ShortcutsDialog table{padding:0 1rem}.ShortcutsDialog td{padding-bottom:.5rem;padding-left:.5rem}.ShortcutsDialog-theme span{display:none}[data-theme=light] .ShortcutsDialog-themeLight,[data-theme=dark] .ShortcutsDialog-themeDark,[data-theme=""] .ShortcutsDialog-themeAuto,[data-theme=auto] .ShortcutsDialog-themeAuto{display:initial}.Cookie-notice{align-items:center;background-color:var(--color-background);border-top:var(--border);bottom:0;color:var(--color-text);display:none;gap:1rem;justify-content:center;left:0;padding:1rem;position:fixed;right:0;z-index:100}.Cookie-notice--visible{display:flex}
+html,body,button,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,hr,input,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,dialog,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}*,:before,:after{box-sizing:border-box}body{color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:1rem;line-height:normal}h1{font-size:1.5rem}h2{font-size:1.375rem}h3{font-size:1.25rem}h4{font-size:1.125rem}h5{font-size:1rem}h6{font-size:.875rem}h1,h2,h3,h4{font-weight:600;line-height:1.25em;word-break:break-word}h5,h6{font-weight:500;line-height:1.3em;word-break:break-word}hr{border:none;border-bottom:var(--border);margin:0;width:100%}p{font-size:1rem;line-height:1.5rem;max-width:60rem}strong{font-weight:600}.go-textSubtle{color:var(--color-text-subtle)}.go-textTitle{font-size:1.125rem;font-weight:600;line-height:1.25rem}.go-textLabel{font-size:.875rem;font-weight:600;line-height:1rem}.go-textPagination{font-size:.875rem;line-height:1rem}code,pre,textarea.code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.875rem;line-height:1.5em}pre,textarea.code{background-color:var(--color-background-accented);border:var(--border);border-radius:var(--border-radius);color:var(--color-text);overflow-x:auto;padding:.625rem;tab-size:4;white-space:pre}button,input,select,textarea{font:inherit}a,a:link,a:visited{color:var(--color-brand-primary);text-decoration:none}a:hover,a:focus{color:var(--color-brand-primary);text-decoration:underline}a:hover>*{text-decoration:underline}button:focus:not([disabled]){border-color:var(--color-brand-primary);box-shadow:var(--focus-box-shadow);outline:transparent}.go-Button{align-items:center;background-color:var(--color-button);border:.0625rem solid transparent;border-radius:var(--border-radius);color:var(--color-button-text);cursor:pointer;display:inline-flex;font-weight:500;gap:.25rem}.go-Button:not(.go-Button--inline){padding:.5rem}.go-Button--accented{background-color:var(--color-button-accented);color:var(--color-button-accented-text)}.go-Button--inverted,.go-Button--text,.go-Button--inline{background-color:var(--color-button-inverted);color:var(--color-button-inverted-text)}.go-Button--inline{background-color:transparent}.go-Button--inverted{border:var(--border)}.go-Button:hover{box-shadow:var(--focus-box-shadow);filter:contrast(.95)}.go-Button--inline:hover{box-shadow:none;text-decoration:underline var(--color-button-inverted-text)}.go-Button:focus{filter:contrast(.95)}.go-Button--inverted:focus{border-color:var(--color-button-inverted-text)}.go-Button:active{box-shadow:none;filter:contrast(.85)}.go-Button:disabled{background-color:var(--color-button-disabled);box-shadow:none;color:var(--color-button-text-disabled);cursor:initial;filter:none;text-decoration:none}.go-Button--accented:disabled{background-color:var(--color-button-accented-disabled);color:var(--color-button-accented-text-disabled)}.go-Button--inverted:disabled,.go-Button--text:disabled,.go-Button--inline:disabled{background-color:var(--color-button-inverted-disabled);color:var(--color-button-inverted-text-disabled)}.go-Button--inline:disabled{background-color:transparent}.go-Breadcrumb ol{line-height:1.5rem;white-space:initial}.go-Breadcrumb li{align-items:center;color:var(--color-text-subtle);display:inline-flex;font-size:.875rem}.go-Breadcrumb li:not(:last-child):after{content:">";padding:0 .5rem}.go-Breadcrumb li:last-child>a{color:var(--color-text-subtle)}.go-Breadcrumb li>.go-Clipboard{margin:0 .5rem}.go-Carousel{align-items:center;display:flex;flex-direction:column;position:relative;text-align:center}.go-Carousel-slide{margin:.5rem 3rem}.go-Carousel-slide[aria-hidden]{display:none}.go-Carousel-prevSlide{left:0}.go-Carousel-nextSlide{right:0}.go-Carousel-prevSlide,.go-Carousel-nextSlide{background-color:transparent;border-radius:var(--border-radius);font-size:1.5rem;height:2.75rem;margin-top:-.7rem;opacity:0;position:absolute;top:50%;width:2.75rem}.go-Carousel-prevSlide:hover,.go-Carousel-nextSlide:hover{background-color:var(--color-background-accented);cursor:pointer}.go-Carousel:hover .go-Carousel-prevSlide,.go-Carousel:hover .go-Carousel-nextSlide,.go-Carousel:focus-within .go-Carousel-prevSlide,.go-Carousel:focus-within .go-Carousel-nextSlide{opacity:1}.go-Carousel-dots{display:flex;font-size:.4375rem;gap:.5rem}.go-Carousel-dot{background-color:var(--color-border);border-radius:2rem;height:.4375rem;margin-top:1rem;width:.4375rem}.go-Carousel-dot--active,.go-Carousel-dot:hover{background-color:var(--color-text-subtle);outline:.125rem solid var(--color-text)}.go-Carousel-dot:focus{outline:.063rem solid var(--color-text)!important}.go-Carousel-dot--active:focus{outline:.188rem solid var(--color-text)!important}.go-Carousel-obscured{border:0;clip:rect(0 0 0 0);height:.0625rem;margin:-.0625rem;overflow:hidden;padding:0;position:absolute;width:.0625rem}.go-Chip{background:var(--color-button);border:.0625rem solid var(--color-button);border-radius:1.25rem;color:var(--color-button-text);font-size:.75rem;padding:.125rem .625rem}.go-Chip--accented{background:var(--color-button-accented);border:.0625rem solid var(--color-button-accented);color:var(--color-button-accented-text)}.go-Chip--inverted{background:var(--color-button-inverted);border:var(--border);color:var(--color-text)}.go-Chip--highlighted{background:var(--color-background-highlighted-link);border-color:var(--color-background-highlighted-link);color:var(--color-brand-primary)}.go-Chip--alert{background:var(--pink);border:.0625rem solid var(--pink);color:var(--color-text-inverted)}.go-Chip--vuln{background:var(--pink-light);border:.0625rem solid var(--pink-light);color:var(--color-text-inverted)}.go-Chip--subtle{background-color:var(--color-background-accented);border-color:transparent;color:var(--color-text-subtle)}.go-Clipboard{position:relative}.go-Clipboard:before{background-color:var(--color-background-inverted);border-radius:var(--border-radius);color:var(--color-text-inverted);content:attr(data-tooltip);display:block;font-size:.9em;left:calc(100% + .125rem);padding:.25rem .3rem;position:absolute;text-transform:uppercase;top:.125rem;white-space:nowrap;z-index:1000}.go-Clipboard:after{border-bottom:.25rem solid transparent;border-left:0;border-right:.25rem solid var(--color-background-inverted);border-top:.25rem solid transparent;content:"";display:block;position:absolute;right:-.125rem;top:.5625rem;z-index:1000}.go-Clipboard:not([data-tooltip]):before,.go-Clipboard:not([data-tooltip]):after,.go-Clipboard[data-tooltip=""]:before,.go-Clipboard[data-tooltip=""]:after{display:none}:root{--gray-1: #202224;--gray-2: #3e4042;--gray-3: #555759;--gray-4: #6e7072;--gray-5: #848688;--gray-6: #aaacae;--gray-7: #c6c8ca;--gray-8: #dcdee0;--gray-9: #f0f1f2;--gray-10: #f8f8f8;--turq-light: #5dc9e2;--turq-med: #50b7e0;--turq-dark: #007d9c;--turq-bright: #00769c;--blue: #bfeaf4;--blue-light: #f2fafd;--black: #000;--green: #3a6e11;--green-light: #5fda64;--pink: #c85e7a;--pink-light: #fdecf1;--purple: #542c7d;--slate: #253443;--white: #fff;--yellow: #fceea5;--yellow-light: #fff8cc;--color-brand-primary: var(--turq-dark);--color-background: var(--white);--color-background-inverted: var(--slate);--color-background-accented: var(--gray-10);--color-background-highlighted: var(--blue);--color-background-highlighted-link: var(--blue-light);--color-background-info: var(--gray-9);--color-background-warning: var(--yellow-light);--color-background-alert: var(--pink-light);--color-border: var(--gray-7);--color-text: var(--gray-1);--color-text-subtle: var(--gray-4);--color-text-link: var(--turq-dark);--color-text-inverted: var(--white);--color-code-comment: var(--green);--color-bright-text-link: var(--turq-bright);--color-input: var(--color-background);--color-input-text: var(--color-text);--color-button: var(--turq-dark);--color-button-disabled: var(--gray-9);--color-button-text: var(--white);--color-button-text-disabled: var(--gray-3);--color-button-inverted: var(--color-background);--color-button-inverted-disabled: var(--color-background);--color-button-inverted-text: var(--color-brand-primary);--color-button-inverted-text-disabled: var(--color-text-subtle);--color-button-accented: var(--yellow);--color-button-accented-disabled: var(--gray-9);--color-button-accented-text: var(--gray-1);--color-button-accented-text-disabled: var(--gray-3)}[data-theme=dark]{--color-brand-primary: var(--turq-med);--color-background: var(--gray-1);--color-background-accented: var(--gray-2);--color-background-highlighted: var(--gray-2);--color-background-highlighted-link: var(--gray-2);--color-background-info: var(--gray-3);--color-background-warning: var(--yellow);--color-background-alert: var(--pink);--color-border: var(--gray-4);--color-text: var(--gray-9);--color-text-link: var(--turq-med);--color-text-subtle: var(--gray-7);--color-code-comment: var(--green-light);--color-bright-text-link: var(--turq-med)}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--color-brand-primary: var(--turq-med);--color-background: var(--gray-1);--color-background-accented: var(--gray-2);--color-background-highlighted: var(--gray-2);--color-background-highlighted-link: var(--gray-2);--color-background-info: var(--gray-3);--color-background-warning: var(--yellow);--color-background-alert: var(--pink);--color-border: var(--gray-4);--color-text: var(--gray-9);--color-text-link: var(--turq-med);--color-text-subtle: var(--gray-7);--color-code-comment: var(--green-light)}}.go-Footer{background-color:var(--color-background-inverted);color:var(--color-text-inverted);font-size:.875rem;width:100%}[data-local=true] .go-Footer{display:none}.go-Footer-links{display:flex;flex-wrap:wrap;justify-content:space-between;margin:auto;max-width:75.75rem;padding:2rem 1.5rem 2.625rem}.go-Footer-linkColumn{flex:0 0 9.5rem}.go-Footer .go-Footer-link{color:var(--color-text-inverted);display:flex;flex:1;font-size:.875rem;line-height:2rem}.go-Footer .go-Footer-link--primary{font-size:1.125rem;line-height:1.75rem;margin-bottom:.5rem;margin-top:.75rem}.go-Footer-listItem p{color:var(--color-text-inverted);font-size:.875rem}.go-Footer-bottom{align-items:center;border-top:var(--border);display:flex;margin:0 1.5rem;min-height:4.125rem}.go-Footer-gopher{align-self:flex-end;height:3.147rem;width:5rem}.go-Footer-listRow{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0;text-align:center}.go-Footer-listItem{align-items:center;display:flex;flex:1 100%;justify-content:center;margin:.4rem 0;padding:0 1rem}.go-Footer-listItem a:link,.go-Footer-listItem a:visited{color:var(--color-text-inverted)}.go-Footer-listItem .go-Button--text{background-color:transparent;font-size:1rem;margin:-.5rem 0}.go-Footer-listItem [data-value]{display:none}[data-theme=auto] .go-Footer-listItem [data-value=auto],:root:not([data-theme]) .go-Footer-listItem [data-value=auto]{display:initial}[data-theme=dark] .go-Footer-listItem [data-value=dark],[data-theme=light] .go-Footer-listItem [data-value=light]{display:initial}.go-Footer-toggleTheme,.go-Footer-keyboard{margin:0 0 .5rem}.go-Footer-googleLogo{align-self:flex-end;height:1.5rem;margin-bottom:1.3rem;text-align:right}.go-Footer-googleLogoImg{height:1.5rem;width:4.529rem}@media only screen and (min-width: 52rem){.go-Footer-listItem{flex:initial}.go-Footer-listItem+.go-Footer-listItem{border-left:var(--border)}.go-Footer-toggleTheme{margin:0 0 0 -.5rem}.go-Footer-keyboard{margin:0}}select:focus:not([disabled]),input:focus:not([disabled]){border-color:var(--color-brand-primary);box-shadow:var(--focus-box-shadow);outline:transparent;z-index:2}input::placeholder{color:var(--color-text-subtle)}.go-Form{align-items:start;display:flex;flex-direction:column;gap:1rem}.go-Label{display:flex;flex-direction:column;gap:.5rem}.go-Label--inline{align-items:center;flex-direction:row}.go-Label legend{margin-bottom:.5rem}.go-Label--inline legend{float:left;margin-bottom:0}.go-Input,.go-Select{background:var(--color-input);border:var(--border);border-radius:var(--border-radius);color:var(--color-input-text)}.go-Input{padding:.4063rem .5rem}.go-Select{appearance:none;background:url(/static/shared/icon/arrow_drop_down_gm_grey_24dp.svg) right no-repeat;background-color:var(--color-background);background-position:right center;border-radius:var(--border-radius);margin:0;padding:.3438rem 1.25rem .3438rem .5rem}.go-InputGroup{display:flex}.go-InputGroup .go-Input{flex:1}.go-InputGroup>:not(:first-child,:last-child){border-radius:0;margin-left:-.0625rem}.go-InputGroup>:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.go-InputGroup>:last-child{border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.0625rem}.go-InputGroup>*:hover,.go-InputGroup>*:focus{z-index:1}.go-ShortcutKey{display:flex;position:relative}.go-ShortcutKey .go-Input{flex-grow:1}.go-ShortcutKey:after{align-self:center;background-color:var(--color-background-accented);border-radius:.5rem;color:var(--gray-6);content:attr(data-shortcut);content:attr(data-shortcut) / attr(data-shortcut-alt);display:none;font-size:.75rem;padding:.0625rem 0;position:absolute;right:.75rem;text-align:center;width:1.5rem;z-index:1}@media only screen and (min-width: 52rem){.go-ShortcutKey:after{display:initial}}.go-GopherMessage img{display:block;height:15rem;margin:0 auto;padding:1.25rem 0;width:15rem}.go-GopherMessage p{font-weight:600;margin:auto;text-align:center}.go-Banner{background-color:var(--gray-1);display:none}.go-Banner-inner{align-items:center;display:flex;justify-content:space-between;margin:0 auto;min-height:2.5rem;padding:.5rem var(--gutter)}.Site--wide .go-Banner-inner{max-width:98rem}.go-Banner--full .go-Banner-inner{max-width:unset}.go-Banner-message{color:var(--white);margin-right:1.25rem}.go-Banner-action:link,.go-Banner-action:visited{color:var(--white);text-decoration:underline;white-space:nowrap}@media only screen and (min-width: 52rem){.go-Banner{display:block}}.go-Header{background:#007d9c;border-bottom:none;box-shadow:0 .0625rem .125rem #ababab4d;top:0;width:100%;z-index:20}.go-Header-inner{margin:0 auto;padding:0 var(--gutter)}.Site--wide .go-Header-inner{max-width:98rem}.go-Header--full .go-Header-inner{max-width:initial}.go-Header-nav{align-items:center;display:flex;height:3.5rem;justify-content:space-between}.go-Header-rightContent{align-items:center;display:flex;height:100%;justify-content:flex-end;width:100%}.go-Header-rightContent form{flex-grow:1}.go-Header-inner--dark{border-bottom:none;color:var(--white)}.go-Header-logo{display:block;height:2rem;margin-right:2.25rem;width:5.125rem}.go-Header-logo--hidden{display:none}.go-Header-menuItem{display:none;position:relative}.go-Header-menu{align-items:stretch;display:flex;height:100%;list-style:none;margin:0;padding:0}[data-local=true] .go-Header-menu{display:none}.go-Header-submenu{background:transparent;background-color:var(--color-background);border:.0625rem solid #007d9d;border-width:0 .0625rem .0625rem;color:var(--color-text);display:none;flex-flow:column wrap;list-style-type:none;margin-top:3.5rem;opacity:0;padding:1.5rem 1.5rem 0;position:absolute;transition:all .2s ease;visibility:hidden}.go-Header-menuItem:hover>.js-desktop-menu-hover:not(.forced-closed)~.go-Header-submenu,.go-Header-menuItem:focus-within>.js-desktop-menu-hover:not(.forced-closed)~.go-Header-submenu{display:flex;opacity:1;visibility:visible}.go-Header-menuItem .go-Header-submenuItem a:link,.go-Header-menuItem .go-Header-submenuItem a:visited{align-items:baseline;border-bottom:none;color:var(--color-text-link);display:inline-flex;font-weight:400;margin:0;margin-bottom:-.125rem;padding:0}.go-Header-menuItem .go-Icon{filter:brightness(0%) saturate(100%) invert(100%);font-size:1.25rem}.go-Header-menuItem .go-Header-submenuItem .go-Icon,.go-NavigationDrawer-listItem .go-Icon{filter:brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(162deg) brightness(71%) contrast(177%)}.go-Header-submenu .go-Header-submenuItem i{font-size:.75rem;margin-left:.25rem;transform:translateY(.1rem)}.go-Header-menu .go-Header-submenu--why{left:-.0625rem;width:18.5rem}.go-Header-menu .go-Header-submenu--docs{height:20.78rem;left:-12rem;width:37.25rem}.go-Header-menu .go-Header-submenu--community{height:18.4rem;right:-.0625rem;width:37.25rem}.go-Header-socialIcons{display:flex;flex-wrap:wrap}.go-Header-submenu .go-Header-submenuItem a.go-Header-socialIcon{display:inline-flex;flex:0 1 auto;width:auto}.go-Header-submenu .go-Header-submenuItem a.go-Header-socialIcon:not(:last-child){margin-right:.75rem}@media only screen and (min-width: 65rem){.go-Header-menuItem{align-items:stretch;display:inline-flex;flex:none}.go-Header-menu{justify-content:flex-end}.go-Header-navOpen{display:none}}.go-Header-menuItem .js-desktop-menu-hover img{pointer-events:none}.go-Header-menuItem a:link,.go-Header-menuItem a:visited{align-items:center;border-bottom:.1875rem solid transparent;border-top:.1875rem solid transparent;color:var(--color-text);display:inline-flex;padding:0 1.5rem;text-align:center;text-decoration:none;width:100%}.go-Header-menuItem--active a:link,.go-Header-menuItem--active a:visited{border-bottom-color:var(--turq-med);font-weight:700}.go-Header-menuItem a:hover{border-bottom-color:var(--white)}.go-Header-menuItem:hover>a:not(.forced-closed).js-desktop-menu-hover,.go-Header-menuItem:focus-within>a:not(.forced-closed).js-desktop-menu-hover{background:var(--white);border-color:var(--white);color:var(--color-text-link)}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .go-Header-menuItem:hover>a:not(.forced-closed).js-desktop-menu-hover .go-Icon,:root:not([data-theme="light"]) .go-Header-menuItem:focus-within>a:not(.forced-closed).js-desktop-menu-hover .go-Icon{filter:brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(158deg) brightness(83%) contrast(157%)}:root:not([data-theme="light"]) .go-Header-submenuItem .go-Icon:not(.go-Icon--accented){filter:brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(163deg) brightness(80%) contrast(157%)}}.go-NavigationDrawer-listItem>div:not(.go-NavigationDrawer),.go-NavigationDrawer-listItem a:link,.go-NavigationDrawer-listItem a:visited{display:block;margin:0 1rem;padding:.5rem}.go-NavigationDrawer-listItem>span{color:var(--gray-2)}.go-Header-inner--dark .go-Header-menuItem a:link,.go-Header-inner--dark .go-Header-menuItem a:visited{color:var(--white)}.go-NavigationDrawer-listItem.go-NavigationDrawer-hasSubnav>a i{float:right}.go-Header-inner--dark .go-Header-menuItem .go-Header-submenuItem{color:var(--color-text-link)}.go-Header-inner--dark .go-Header-menuItem .js-desktop-menu-hover.is-expanded{background-color:var(--white);color:var(--color-text-link)}.go-Header-inner--dark .go-Header-menuItem .go-Header-submenu a:link,.go-Header-inner--dark .go-Header-menuItem .go-Header-submenu a:visited{align-items:baseline;color:var(--color-text-link);display:inline-flex;margin-bottom:-.125rem;width:auto}.go-Header-submenu .go-Header-submenuItem a:link,.go-Header-submenu .go-Header-submenuItem a:visited{border-bottom:none;font-weight:400;margin:0;padding:0}.go-Header-submenu .go-Header-submenuItem a:focus{text-decoration:underline!important}.go-Header-inner--dark .go-Header-menuItem:hover>a:not(.forced-closed).js-desktop-menu-hover,.go-Header-inner--dark .go-Header-menuItem:focus-within>a:not(.forced-closed).js-desktop-menu-hover{background:var(--color-background);border-color:var(--color-background)}.go-Header-submenu p{max-width:15.5rem}.go-Header-submenu a:link:hover,.go-Header-submenu a:visited:hover{border-bottom:.125rem solid var(--turq-dark);text-decoration:none}.go-Header-submenu a:link:hover>*,.go-Header-submenu a:visited:hover>*{text-decoration:none}.go-Header-submenu .go-Header-submenuItem{line-height:1;padding-bottom:1.5rem}.go-Header-submenu .go-Header-submenuItem p{color:var(--color-text-subtle);font-size:.875rem;margin-top:.55rem}.go-Header-inner--dark .go-Header-submenu .go-Header-submenuItem p{color:var(--color-text-subtle)}.go-Header-navOpen{background:no-repeat center/2rem url(/images/menu-24px.svg);border:none;height:2.5rem;margin-left:1rem;width:2.5rem}.go-Header-navOpen--hidden{display:none}.go-Header-navOpen--white{background:no-repeat center/2rem url(/static/shared/icon/menu_gm_grey_24dp.svg);filter:brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%)}.go-SearchForm--expanded{flex-grow:1}.go-SearchForm-form{display:none}.go-SearchForm-form:after{right:2.75rem}.go-SearchForm--expanded .go-SearchForm-form{display:flex}.go-SearchForm-expandSearch{appearance:none;background:none;font-size:1.5rem}.go-SearchForm--expanded .go-SearchForm-expandSearch{display:none}@media only screen and (min-width: 32rem){.go-Header-rightContent{width:100%}.go-SearchForm{flex:1}.go-SearchForm-form{display:flex}.go-SearchForm-expandSearch{display:none}.go-Header-logo--hidden{display:initial}}.go-NavigationDrawer{background:var(--color-background);height:100%;left:auto;max-width:27rem;position:fixed;right:0;top:0;transform:translate(100%);transition:transform .1s ease-in-out;width:85%;z-index:30}@media only screen and (min-width: 65rem){.go-NavigationDrawer{display:none}}.go-NavigationDrawer.is-active{transform:translate(0)}.go-NavigationDrawer-header{border-bottom:.0625rem solid #eee;margin-bottom:.5rem}.go-NavigationDrawer-submenuItem{width:100%}.go-NavigationDrawer-submenuItem .go-NavigationDrawer-header{align-items:center;color:var(--color-text-link);display:flex;font-size:1.375rem;justify-content:flex-start;min-height:4.0625rem;padding:.5rem .5rem .5rem 1.5rem}.go-NavigationDrawer-submenuItem .go-NavigationDrawer-header>a{display:flex;margin-left:0}.go-NavigationDrawer-logo{display:block;height:2rem;margin:1rem;width:5.125rem}.go-NavigationDrawer-list{list-style:none;margin:0;padding:0}.go-NavigationDrawer-listItem{color:var(--color-text-subtle);font-size:1.125rem;margin:0 .5rem}.go-NavigationDrawer-listItem--active{background-color:var(--blue);border-radius:.4rem}.go-NavigationDrawer-listItem .material-icons{color:var(--color-brand-primary);display:inline-block;margin-right:.5rem;text-decoration:none;vertical-align:sub}@media only screen and (max-width: 57.7rem){.go-NavigationDrawer-listItem .go-Header-socialIcons{padding:.5rem 0}.go-NavigationDrawer-listItem a.go-Header-socialIcon{display:inline-block;margin:0;padding:0 .5rem}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .go-NavigationDrawer-listItem .go-Icon:not(.go-Icon--accented){filter:brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(163deg) brightness(80%) contrast(157%)}}}.go-NavigationDrawer-scrim{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:20}.go-NavigationDrawer.is-active+.go-NavigationDrawer-scrim{background-color:var(--gray-1);display:block;opacity:.32}.skip-to-content-link{background:var(--color-background);border-radius:.375rem;clip:rect(0 0 0 0);color:var(--color-text);font-weight:500;left:8%;margin:.313rem;overflow:hidden;position:absolute;top:.75rem}.skip-to-content-link:focus{clip:unset;z-index:1}.depsdev-Icon{height:1.125em;vertical-align:text-bottom;width:auto}.go-Icon{filter:none;height:1.125em;vertical-align:text-bottom;width:auto}.go-Icon--accented{filter:brightness(0) invert(45%) sepia(94%) saturate(6735%) hue-rotate(176deg) brightness(94%) contrast(101%)}.go-Icon--inverted{filter:brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%);@media (forced-colors: active) and (prefers-color-scheme: light){filter:brightness(500%) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%)}}[data-theme=dark] .go-Icon:not(.go-Icon--accented){filter:brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%)}[data-theme=dark] .go-Icon--accented{filter:brightness(0) invert(69%) sepia(46%) saturate(466%) hue-rotate(153deg) brightness(90%) contrast(88%)}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .go-Icon:not(.go-Icon--accented){filter:brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg) brightness(103%) contrast(107%)}:root:not([data-theme="light"]) .go-Icon--accented{filter:brightness(0) invert(57%) sepia(63%) saturate(4864%) hue-rotate(160deg) brightness(100%) contrast(101%)}}.go-Message{color:var(--color-text);font-size:.875rem;line-height:1.5rem;padding:.25rem .5rem;width:100%}.go-Message--notice{background-color:var(--color-background-info)}.go-Message--warning{background-color:var(--color-background-warning);color:var(--gray-1)}.go-Message--alert{background-color:var(--color-background-alert)}.go-Message>.go-Icon{vertical-align:text-top}[data-theme=dark] .go-Message a:not(:hover){color:var(--color-text);text-decoration:underline}[data-theme=dark] .go-Message--warning .go-Icon{filter:none}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .go-Message--warning .go-Icon{filter:none}}dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:white;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.1)}._dialog_overlay{position:fixed;inset:0}dialog.fixed{position:fixed;top:50%;transform:translateY(-50%)}.go-Modal{background:var(--color-background);border:var(--border);border-radius:var(--border-radius);bottom:0;box-shadow:var(--box-shadow);color:var(--color-text);display:flex;flex-direction:column;gap:1rem;max-height:100%;max-width:100%;position:fixed;top:0}.go-Modal>form{display:contents}.go-Modal--small{width:20rem}.go-Modal--md{width:30rem}.go-Modal--lg{width:40rem}.go-Modal-header{display:flex;justify-content:space-between}.go-Modal-header h2{font-size:1.15rem;line-height:1.25rem}.go-Modal-body{flex-grow:1;min-height:2rem;min-width:18rem}.go-Modal-actions{text-align:right}@media not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none){.go-Modal{padding-bottom:0}}}.go-Tree{--js-tree-height: 0;display:flex;flex-direction:column}.go-Tree ul{list-style:none;padding-left:0}.go-Tree li:last-of-type{padding-bottom:.25rem}.go-Tree a+ul{display:none}.go-Tree a[aria-expanded=true]+ul[role=group]{display:block}.go-Tree a[aria-level="1"]+ul[role=group]{max-height:calc(100vh - var(--js-tree-height, 0) - var(--js-sticky-header-height, 3.5rem) - 5rem);overflow-y:auto;padding:.5rem .25rem 0}.go-Tree a{color:var(--color-text-subtle);display:block;line-height:1.5rem;overflow:hidden;padding:.125rem 0 .125rem 1.25rem;position:relative;text-overflow:ellipsis;user-select:none;white-space:nowrap}.go-Tree>li>a,.go-Tree a[aria-level="1"]{display:block;font-size:1rem;font-weight:500;line-height:2.5rem;padding:0 1rem}.go-Tree a:focus,.go-Tree a:hover{text-decoration:underline;z-index:1}.go-Tree a[aria-selected=true]{color:var(--color-text);font-weight:500}.go-Tree a[aria-level="1"][aria-selected=true],.go-Tree a[aria-level="1"][aria-expanded=true]{background-color:var(--color-background-accented)}.go-Tree a[aria-level="3"][aria-expanded=true]{margin-bottom:.375em}.go-Tree a[aria-level="2"]{margin-bottom:.25rem;position:relative}.go-Tree a[aria-level="3"]{padding-left:2.5rem}.go-Tree a[aria-level="4"]{border-left:.125rem solid var(--color-background-accented);margin-left:2.5rem;padding-left:.5rem}.go-Tree a[aria-selected=true][aria-level="2"]:not([aria-expanded]):before,.go-Tree a[aria-selected=true][aria-level="3"]:not([aria-expanded]):before{background-color:var(--color-brand-primary);border-radius:50%;content:"";display:block;height:.3125rem;left:.4688rem;position:absolute;top:.75rem;width:.3125rem}.go-Tree a[aria-expanded][aria-owns][aria-level="2"]:before,.go-Tree a[aria-expanded][aria-owns][aria-level="3"]:before{border-bottom:.25rem solid transparent;border-left:.25rem solid var(--color-border);border-right:0;border-top:.25rem solid transparent;content:"";display:block;height:0;left:.5rem;position:absolute;top:.625rem;transition:transform .1s linear;width:0}.go-Tree a[aria-expanded=true][aria-level="2"]:before,.go-Tree a[aria-expanded=true][aria-level="3"]:before{transform:rotate(90deg)}.go-Tree a[aria-expanded][aria-level="3"]:not([empty]):before,.go-Tree a[aria-selected][aria-level="3"]:not([empty]):before{left:1.5rem;top:.75rem}.go-Tree a[aria-selected=true][aria-level="4"]{border-left:.125rem solid var(--color-brand-primary)}.go-TabNav{margin:0 0 .5rem}.go-TabNav ul{display:flex;gap:2rem}.go-TabNav li{border-bottom:.25rem transparent solid;display:flex;font-size:1rem;height:2.375rem;padding:0 .25rem}.go-TabNav li[aria-current],.go-TabNav li:hover{border-color:var(--color-brand-primary)}.go-TabNav a{align-items:center;color:var(--color-text-subtle);display:inline-flex}.go-TabNav li:hover a{text-decoration:none}.go-TabNav li[aria-current] a{color:var(--color-text)}.go-Tooltip{border-radius:var(--border-radius);cursor:pointer;display:inline-block;position:relative}.go-Tooltip>summary{list-style:none}.go-Tooltip>summary::-webkit-details-marker,.go-Tooltip>summary::marker{display:none}.go-Tooltip>summary>img{vertical-align:text-bottom}.go-Tooltip p{background:var(--color-background) 80%;border:var(--border);border-radius:var(--border-radius);color:var(--color-text);font-size:.75rem;letter-spacing:.0187rem;line-height:1rem;padding:.5rem;position:absolute;top:1.5rem;white-space:normal;width:12rem;z-index:100}:root{--gutter: 1.5rem;--gap: 1rem;--scroll-margin: calc( var(--js-sticky-header-height, 3.5rem) + var(--js-sticky-nav-height, 0) + 2rem );--border: .0625rem solid var(--color-border);--border-radius: .25rem;--box-shadow: 0 0 .375rem 0 rgb(0 0 0 / 25%);--focus-box-shadow: 0 0 .0625rem .0625rem rgb(0 112 210 / 60%)}[data-theme=dark]{--box-shadow: 0 .3125rem .9375rem rgb(0 0 0 / 45%)}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--box-shadow: 0 .3125rem .9375rem rgb(0 0 0 / 45%)}}@media (min-width: 50rem){:root{--gap: 2rem;--scroll-margin: calc( var(--js-sticky-header-height, 3.5rem) + var(--js-sticky-nav-height, 0) + 1rem )}}*:target{scroll-margin-top:var(--scroll-margin)}body{background-color:var(--color-background);display:flex;flex-direction:column;min-height:100vh;min-width:23.5rem;-webkit-overflow-scrolling:touch}.go-Container{display:flex;flex-direction:column;flex-grow:1;height:100%;margin-bottom:5rem}.go-Content{display:flex;flex-flow:column;gap:1rem;margin:0 auto;max-width:63rem;min-height:32rem;padding:2rem var(--gutter);width:100%}.go-Content--center{justify-content:center;margin:auto}.JumpDialog-body{height:12rem;overflow-y:auto}.JumpDialog-list{display:flex;flex-direction:column}.JumpDialog-input{width:100%}.JumpDialog a{padding:.25rem;text-decoration:none}.JumpDialog .JumpDialog-active{background-color:var(--color-brand-primary);color:var(--white)}.ShortcutsDialog-key{text-align:right}.ShortcutsDialog table{padding:0 1rem}.ShortcutsDialog td{padding-bottom:.5rem;padding-left:.5rem}.ShortcutsDialog-theme span{display:none}[data-theme=light] .ShortcutsDialog-themeLight,[data-theme=dark] .ShortcutsDialog-themeDark,[data-theme=""] .ShortcutsDialog-themeAuto,[data-theme=auto] .ShortcutsDialog-themeAuto{display:initial}.Cookie-notice{align-items:center;background-color:var(--color-background);border-top:var(--border);bottom:0;color:var(--color-text);display:none;gap:1rem;justify-content:center;left:0;padding:1rem;position:fixed;right:0;z-index:100}.Cookie-notice--visible{display:flex}
 /*!
  * http://meyerweb.com/eric/tools/css/reset/
  * v2.0 | 20110126
diff --git a/static/frontend/frontend.min.css.map b/static/frontend/frontend.min.css.map
index 9001aef..91155eb 100644
--- a/static/frontend/frontend.min.css.map
+++ b/static/frontend/frontend.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["../shared/reset.css", "../shared/typography/typography.css", "../shared/button/button.css", "../shared/breadcrumb/breadcrumb.css", "../shared/carousel/carousel.css", "../shared/chip/chip.css", "../shared/clipboard/clipboard.css", "../shared/color/color.css", "../shared/footer/footer.css", "../shared/form/form.css", "../shared/gopher/gopher.css", "../shared/header/header.css", "../shared/icon/icon.css", "../shared/message/message.css", "../../third_party/dialog-polyfill/dialog-polyfill.css", "../shared/modal/modal.css", "../shared/outline/tree.css", "../shared/tabnav/tabnav.css", "../shared/tooltip/tooltip.css", "../shared/shared.css", "_modals.css", "frontend.css"],
   "sourcesContent": ["/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/*!\n * http://meyerweb.com/eric/tools/css/reset/\n * v2.0 | 20110126\n * License: none (public domain)\n */\n\nhtml,\nbody,\nbutton,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\ninput,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\ndialog,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n  border: 0;\n  font: inherit;\n  font-size: 100%;\n  margin: 0;\n  padding: 0;\n  vertical-align: baseline;\n}\n\n/* HTML5 display-role reset for older browsers */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\nsection {\n  display: block;\n}\n\nbody {\n  line-height: 1;\n}\n\nol,\nul {\n  list-style: none;\n}\n\nblockquote,\nq {\n  quotes: none;\n}\n\nblockquote::before,\nblockquote::after,\nq::before,\nq::after {\n  content: '';\n  content: none;\n}\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\n*,\n::before,\n::after {\n  box-sizing: border-box;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nbody {\n  color: var(--color-text);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif,\n    'Apple Color Emoji', 'Segoe UI Emoji';\n  font-size: 1rem;\n  line-height: normal;\n}\n\nh1 {\n  font-size: 1.5rem;\n}\n\nh2 {\n  font-size: 1.375rem;\n}\n\nh3 {\n  font-size: 1.25rem;\n}\n\nh4 {\n  font-size: 1.125rem;\n}\n\nh5 {\n  font-size: 1rem;\n}\n\nh6 {\n  font-size: 0.875rem;\n}\n\nh1,\nh2,\nh3,\nh4 {\n  font-weight: 600;\n  line-height: 1.25em;\n  word-break: break-word;\n}\n\nh5,\nh6 {\n  font-weight: 500;\n  line-height: 1.3em;\n  word-break: break-word;\n}\n\nhr {\n  border: none;\n  border-bottom: var(--border);\n  margin: 0;\n  width: 100%;\n}\n\np {\n  font-size: 1rem;\n  line-height: 1.5rem;\n  max-width: 60rem;\n}\n\nstrong {\n  font-weight: 600;\n}\n\n.go-textSubtle {\n  color: var(--color-text-subtle);\n}\n\n.go-textTitle {\n  font-size: 1.125rem;\n  font-weight: 600;\n  line-height: 1.25rem;\n}\n\n.go-textLabel {\n  font-size: 0.875rem;\n  font-weight: 600;\n  line-height: 1rem;\n}\n\n.go-textPagination {\n  font-size: 0.875rem;\n  line-height: 1rem;\n}\n\ncode,\npre,\ntextarea.code {\n  font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;\n  font-size: 0.875rem;\n  line-height: 1.5em;\n}\n\npre,\ntextarea.code {\n  background-color: var(--color-background-accented);\n  border: var(--border);\n  border-radius: var(--border-radius);\n  color: var(--color-text);\n  overflow-x: auto;\n  padding: 0.625rem;\n  tab-size: 4;\n  white-space: pre;\n}\n\nbutton,\ninput,\nselect,\ntextarea {\n  font: inherit;\n}\n\na,\na:link,\na:visited {\n  color: var(--color-brand-primary);\n  text-decoration: none;\n}\n\na:hover,\na:focus {\n  color: var(--color-brand-primary);\n  text-decoration: underline;\n}\n\na:hover > * {\n  text-decoration: underline;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nbutton:focus:not([disabled]) {\n  border-color: var(--color-brand-primary);\n  box-shadow: var(--focus-box-shadow);\n  outline: transparent;\n}\n\n.go-Button {\n  align-items: center;\n  background-color: var(--color-button);\n  border: 0.0625rem solid transparent;\n  border-radius: var(--border-radius);\n  color: var(--color-button-text);\n  cursor: pointer;\n  display: inline-flex;\n  font-weight: 500;\n  gap: 0.25rem;\n}\n\n.go-Button:not(.go-Button--inline) {\n  padding: 0.5rem;\n}\n\n.go-Button--accented {\n  background-color: var(--color-button-accented);\n  color: var(--color-button-accented-text);\n}\n\n.go-Button--inverted,\n.go-Button--text,\n.go-Button--inline {\n  background-color: var(--color-button-inverted);\n  color: var(--color-button-inverted-text);\n}\n\n.go-Button--inline {\n  background-color: transparent;\n}\n\n.go-Button--inverted {\n  border: var(--border);\n}\n\n.go-Button:hover {\n  box-shadow: var(--focus-box-shadow);\n  filter: contrast(0.95);\n}\n\n.go-Button--inline:hover {\n  box-shadow: none;\n  text-decoration: underline var(--color-button-inverted-text);\n}\n\n.go-Button:focus {\n  filter: contrast(0.95);\n}\n\n.go-Button--inverted:focus {\n  border-color: var(--color-button-inverted-text);\n}\n\n.go-Button:active {\n  box-shadow: none;\n  filter: contrast(0.85);\n}\n\n.go-Button:disabled {\n  background-color: var(--color-button-disabled);\n  box-shadow: none;\n  color: var(--color-button-text-disabled);\n  cursor: initial;\n  filter: none;\n  text-decoration: none;\n}\n\n.go-Button--accented:disabled {\n  background-color: var(--color-button-accented-disabled);\n  color: var(--color-button-accented-text-disabled);\n}\n\n.go-Button--inverted:disabled,\n.go-Button--text:disabled,\n.go-Button--inline:disabled {\n  background-color: var(--color-button-inverted-disabled);\n  color: var(--color-button-inverted-text-disabled);\n}\n\n.go-Button--inline:disabled {\n  background-color: transparent;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-Breadcrumb ol {\n  line-height: 1.5rem;\n  white-space: initial;\n}\n\n.go-Breadcrumb li {\n  align-items: center;\n  color: var(--color-text-subtle);\n  display: inline-flex;\n  font-size: 0.875rem;\n}\n\n.go-Breadcrumb li:not(:last-child)::after {\n  content: '>';\n  padding: 0 0.5rem;\n}\n\n.go-Breadcrumb li:last-child > a {\n  color: var(--color-text-subtle);\n}\n\n.go-Breadcrumb li > .go-Clipboard {\n  margin: 0 0.5rem;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-Carousel {\n  align-items: center;\n  display: flex;\n  flex-direction: column;\n  position: relative;\n  text-align: center;\n}\n\n.go-Carousel-slide {\n  margin: 0.5rem 3rem;\n}\n\n.go-Carousel-slide[aria-hidden] {\n  display: none;\n}\n\n.go-Carousel-prevSlide {\n  left: 0;\n}\n\n.go-Carousel-nextSlide {\n  right: 0;\n}\n\n.go-Carousel-prevSlide,\n.go-Carousel-nextSlide {\n  background-color: transparent;\n  border-radius: var(--border-radius);\n  font-size: 1.5rem;\n  height: 2.75rem;\n  margin-top: -0.7rem;\n  opacity: 0;\n  position: absolute;\n  top: 50%;\n  width: 2.75rem;\n}\n\n.go-Carousel-prevSlide:hover,\n.go-Carousel-nextSlide:hover {\n  background-color: var(--color-background-accented);\n  cursor: pointer;\n}\n\n.go-Carousel:hover .go-Carousel-prevSlide,\n.go-Carousel:hover .go-Carousel-nextSlide,\n.go-Carousel:focus-within .go-Carousel-prevSlide,\n.go-Carousel:focus-within .go-Carousel-nextSlide {\n  opacity: 1;\n}\n\n.go-Carousel-dots {\n  display: flex;\n  font-size: 0.4375rem;\n  gap: 0.5rem;\n}\n\n.go-Carousel-dot {\n  background-color: var(--color-border);\n  border-radius: 2rem;\n  height: 0.4375rem;\n  margin-top: 1rem;\n  width: 0.4375rem;\n}\n\n.go-Carousel-dot--active,\n.go-Carousel-dot:hover {\n  background-color: var(--color-text-subtle);\n  outline: 0.125rem solid var(--color-text);\n}\n\n.go-Carousel-dot:focus {\n  outline: 0.063rem solid var(--color-text) !important;\n}\n\n.go-Carousel-dot--active:focus {\n  outline: 0.188rem solid var(--color-text) !important;\n}\n\n.go-Carousel-obscured {\n  border: 0;\n  clip: rect(0 0 0 0);\n  height: 0.0625rem;\n  margin: -0.0625rem;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 0.0625rem;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-Chip {\n  background: var(--color-button);\n  border: 0.0625rem solid var(--color-button);\n  border-radius: 1.25rem;\n  color: var(--color-button-text);\n  font-size: 0.75rem;\n  padding: 0.125rem 0.625rem;\n}\n\n.go-Chip--accented {\n  background: var(--color-button-accented);\n  border: 0.0625rem solid var(--color-button-accented);\n  color: var(--color-button-accented-text);\n}\n\n.go-Chip--inverted {\n  background: var(--color-button-inverted);\n  border: var(--border);\n  color: var(--color-text);\n}\n\n.go-Chip--highlighted {\n  background: var(--color-background-highlighted-link);\n  border-color: var(--color-background-highlighted-link);\n  color: var(--color-brand-primary);\n}\n\n.go-Chip--alert {\n  background: var(--pink);\n  border: 0.0625rem solid var(--pink);\n  color: var(--color-text-inverted);\n}\n\n.go-Chip--vuln {\n  background: var(--pink-light);\n  border: 0.0625rem solid var(--pink-light);\n  color: var(--color-text-inverted);\n}\n\n.go-Chip--subtle {\n  background-color: var(--color-background-accented);\n  border-color: transparent;\n  color: var(--color-text-subtle);\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-Clipboard {\n  position: relative;\n}\n\n.go-Clipboard::before {\n  background-color: var(--color-background-inverted);\n  border-radius: var(--border-radius);\n  color: var(--color-text-inverted);\n  content: attr(data-tooltip);\n  display: block;\n  font-size: 0.9em;\n  left: calc(100% + 0.125rem);\n  padding: 0.25rem 0.3rem;\n  position: absolute;\n  text-transform: uppercase;\n  top: 0.125rem;\n  white-space: nowrap;\n  z-index: 1000;\n}\n\n.go-Clipboard::after {\n  border-bottom: 0.25rem solid transparent;\n  border-left: 0;\n  border-right: 0.25rem solid var(--color-background-inverted);\n  border-top: 0.25rem solid transparent;\n  content: '';\n  display: block;\n  position: absolute;\n  right: -0.125rem;\n  top: 0.5625rem;\n  z-index: 1000;\n}\n\n.go-Clipboard:not([data-tooltip])::before,\n.go-Clipboard:not([data-tooltip])::after,\n.go-Clipboard[data-tooltip='']::before,\n.go-Clipboard[data-tooltip='']::after {\n  display: none;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n:root {\n  /* Colors */\n  --gray-1: #202224;\n  --gray-2: #3e4042;\n  --gray-3: #555759;\n  --gray-4: #6e7072;\n  --gray-5: #848688;\n  --gray-6: #aaacae;\n  --gray-7: #c6c8ca;\n  --gray-8: #dcdee0;\n  --gray-9: #f0f1f2;\n  --gray-10: #f8f8f8;\n  --turq-light: #5dc9e2;\n  --turq-med: #50b7e0;\n  --turq-dark: #007d9c;\n  --turq-bright: #00769c;\n  --blue: #bfeaf4;\n  --blue-light: #f2fafd;\n  --black: #000;\n  --green: #3a6e11;\n  --green-light: #5fda64;\n  --pink: #c85e7a;\n  --pink-light: #fdecf1;\n  --purple: #542c7d;\n  --slate: #253443; /* Footer background. */\n  --white: #fff;\n  --yellow: #fceea5;\n  --yellow-light: #fff8cc;\n\n  /* Color Intents */\n  --color-brand-primary: var(--turq-dark);\n  --color-background: var(--white);\n  --color-background-inverted: var(--slate);\n  --color-background-accented: var(--gray-10);\n  --color-background-highlighted: var(--blue);\n  --color-background-highlighted-link: var(--blue-light);\n  --color-background-info: var(--gray-9);\n  --color-background-warning: var(--yellow-light);\n  --color-background-alert: var(--pink-light);\n  --color-border: var(--gray-7);\n  --color-text: var(--gray-1);\n  --color-text-subtle: var(--gray-4);\n  --color-text-link: var(--turq-dark);\n  --color-text-inverted: var(--white);\n  --color-code-comment: var(--green);\n  --color-bright-text-link: var(--turq-bright);\n\n  /* Interactive Colors */\n  --color-input: var(--color-background);\n  --color-input-text: var(--color-text);\n  --color-button: var(--turq-dark);\n  --color-button-disabled: var(--gray-9);\n  --color-button-text: var(--white);\n  --color-button-text-disabled: var(--gray-3);\n  --color-button-inverted: var(--color-background);\n  --color-button-inverted-disabled: var(--color-background);\n  --color-button-inverted-text: var(--color-brand-primary);\n  --color-button-inverted-text-disabled: var(--color-text-subtle);\n  --color-button-accented: var(--yellow);\n  --color-button-accented-disabled: var(--gray-9);\n  --color-button-accented-text: var(--gray-1);\n  --color-button-accented-text-disabled: var(--gray-3);\n}\n\n[data-theme='dark'] {\n  --color-brand-primary: var(--turq-med);\n  --color-background: var(--gray-1);\n  --color-background-accented: var(--gray-2);\n  --color-background-highlighted: var(--gray-2);\n  --color-background-highlighted-link: var(--gray-2);\n  --color-background-info: var(--gray-3);\n  --color-background-warning: var(--yellow);\n  --color-background-alert: var(--pink);\n  --color-border: var(--gray-4);\n  --color-text: var(--gray-9);\n  --color-text-link: var(--turq-med);\n  --color-text-subtle: var(--gray-7);\n  --color-code-comment: var(--green-light);\n  --color-bright-text-link: var(--turq-med);\n}\n@media (prefers-color-scheme: dark) {\n  :root:not([data-theme='light']) {\n    --color-brand-primary: var(--turq-med);\n    --color-background: var(--gray-1);\n    --color-background-accented: var(--gray-2);\n    --color-background-highlighted: var(--gray-2);\n    --color-background-highlighted-link: var(--gray-2);\n    --color-background-info: var(--gray-3);\n    --color-background-warning: var(--yellow);\n    --color-background-alert: var(--pink);\n    --color-border: var(--gray-4);\n    --color-text: var(--gray-9);\n    --color-text-link: var(--turq-med);\n    --color-text-subtle: var(--gray-7);\n    --color-code-comment: var(--green-light);\n  }\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-Footer {\n  background-color: var(--color-background-inverted);\n  color: var(--color-text-inverted);\n  font-size: 0.875rem;\n  width: 100%;\n}\n\n[data-local='true'] .go-Footer {\n  display: none;\n}\n\n.go-Footer-links {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  margin: auto;\n  max-width: 75.75rem;\n  padding: 2rem 1.5rem 2.625rem;\n}\n\n.go-Footer-linkColumn {\n  flex: 0 0 9.5rem;\n}\n\n.go-Footer .go-Footer-link {\n  color: var(--color-text-inverted);\n  display: flex;\n  flex: 1;\n  font-size: 0.875rem;\n  line-height: 2rem;\n}\n\n.go-Footer .go-Footer-link--primary {\n  font-size: 1.125rem;\n  line-height: 1.75rem;\n  margin-bottom: 0.5rem;\n  margin-top: 0.75rem;\n}\n\n.go-Footer-listItem p {\n  color: var(--color-text-inverted);\n  font-size: 0.875rem;\n}\n\n.go-Footer-bottom {\n  align-items: center;\n  border-top: var(--border);\n  display: flex;\n  margin: 0 1.5rem;\n  min-height: 4.125rem;\n}\n\n.go-Footer-gopher {\n  align-self: flex-end;\n  height: 3.147rem;\n  width: 5rem;\n}\n\n.go-Footer-listRow {\n  display: flex;\n  flex: 1;\n  flex-wrap: wrap;\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  text-align: center;\n}\n\n.go-Footer-listItem {\n  align-items: center;\n  display: flex;\n  flex: 1 100%;\n  justify-content: center;\n  margin: 0.4rem 0;\n  padding: 0 1rem;\n}\n\n.go-Footer-listItem a:link,\n.go-Footer-listItem a:visited {\n  color: var(--color-text-inverted);\n}\n\n.go-Footer-listItem .go-Button--text {\n  background-color: transparent;\n  font-size: 1rem;\n  margin: -0.5rem 0;\n}\n\n.go-Footer-listItem [data-value] {\n  display: none;\n}\n\n[data-theme='auto'] .go-Footer-listItem [data-value='auto'],\n:root:not([data-theme]) .go-Footer-listItem [data-value='auto'] {\n  display: initial;\n}\n\n[data-theme='dark'] .go-Footer-listItem [data-value='dark'] {\n  display: initial;\n}\n\n[data-theme='light'] .go-Footer-listItem [data-value='light'] {\n  display: initial;\n}\n\n.go-Footer-toggleTheme,\n.go-Footer-keyboard {\n  margin: 0 0 0.5rem;\n}\n\n.go-Footer-googleLogo {\n  align-self: flex-end;\n  height: 1.5rem;\n  margin-bottom: 1.3rem;\n  text-align: right;\n}\n\n.go-Footer-googleLogoImg {\n  height: 1.5rem;\n  width: 4.529rem;\n}\n\n@media only screen and (min-width: 52rem) {\n  .go-Footer-listItem {\n    flex: initial;\n  }\n\n  .go-Footer-listItem + .go-Footer-listItem {\n    border-left: var(--border);\n  }\n\n  .go-Footer-toggleTheme {\n    margin: 0 0 0 -0.5rem;\n  }\n\n  .go-Footer-keyboard {\n    margin: 0;\n  }\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nselect:focus:not([disabled]),\ninput:focus:not([disabled]) {\n  border-color: var(--color-brand-primary);\n  box-shadow: var(--focus-box-shadow);\n  outline: transparent;\n  z-index: 2;\n}\n\ninput::placeholder {\n  color: var(--color-text-subtle);\n}\n\n.go-Form {\n  align-items: start;\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n}\n\n.go-Label {\n  display: flex;\n  flex-direction: column;\n  gap: 0.5rem;\n}\n\n.go-Label--inline {\n  align-items: center;\n  flex-direction: row;\n}\n\n.go-Label legend {\n  margin-bottom: 0.5rem;\n}\n\n.go-Label--inline legend {\n  float: left;\n  margin-bottom: 0;\n}\n\n.go-Input,\n.go-Select {\n  background: var(--color-input);\n  border: var(--border);\n  border-radius: var(--border-radius);\n  color: var(--color-input-text);\n}\n\n.go-Input {\n  padding: 0.4063rem 0.5rem;\n}\n\n.go-Select {\n  appearance: none;\n  background: url('/static/shared/icon/arrow_drop_down_gm_grey_24dp.svg') right no-repeat;\n  background-color: var(--color-background);\n  background-position: right center;\n  border-radius: var(--border-radius);\n  margin: 0;\n  padding: 0.3438rem 1.25rem 0.3438rem 0.5rem;\n}\n\n.go-InputGroup {\n  display: flex;\n}\n\n.go-InputGroup .go-Input {\n  flex: 1;\n}\n\n.go-InputGroup > :not(:first-child, :last-child) {\n  border-radius: 0;\n  margin-left: -0.0625rem;\n}\n\n.go-InputGroup > :first-child {\n  border-bottom-right-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.go-InputGroup > :last-child {\n  border-bottom-left-radius: 0;\n  border-top-left-radius: 0;\n  margin-left: -0.0625rem;\n}\n\n.go-InputGroup > *:hover,\n.go-InputGroup > *:focus {\n  z-index: 1;\n}\n\n.go-ShortcutKey {\n  display: flex;\n  position: relative;\n}\n\n.go-ShortcutKey .go-Input {\n  flex-grow: 1;\n}\n\n.go-ShortcutKey::after {\n  align-self: center;\n  background-color: var(--color-background-accented);\n  border-radius: 0.5rem;\n  color: var(--gray-6);\n  content: attr(data-shortcut);\n  content: attr(data-shortcut) / attr(data-shortcut-alt);\n  display: none;\n  font-size: 0.75rem;\n  padding: 0.0625rem 0;\n  position: absolute;\n  right: 0.75rem;\n  text-align: center;\n  width: 1.5rem;\n  z-index: 1;\n}\n@media only screen and (min-width: 52rem) {\n  .go-ShortcutKey::after {\n    display: initial;\n  }\n}\n", "/*!\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-GopherMessage img {\n  display: block;\n  height: 15rem;\n  margin: 0 auto;\n  padding: 1.25rem 0;\n  width: 15rem;\n}\n\n.go-GopherMessage p {\n  font-weight: 600;\n  margin: auto;\n  text-align: center;\n}\n", "/* stylelint-disable no-descending-specificity */\n\n/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-Banner {\n  background-color: var(--gray-1);\n\n  /**\n   * Only show on wide viewports so the\n   * text never wraps or gets cut off.\n   */\n  display: none;\n}\n\n.go-Banner-inner {\n  align-items: center;\n  display: flex;\n  justify-content: space-between;\n  margin: 0 auto;\n  min-height: 2.5rem;\n  padding: 0.5rem var(--gutter);\n}\n\n.Site--wide .go-Banner-inner {\n  max-width: 98rem;\n}\n\n.go-Banner--full .go-Banner-inner {\n  max-width: unset;\n}\n\n.go-Banner-message {\n  color: var(--white);\n  margin-right: 1.25rem;\n}\n\n.go-Banner-action:link,\n.go-Banner-action:visited {\n  color: var(--white);\n  text-decoration: underline;\n  white-space: nowrap;\n}\n@media only screen and (min-width: 52rem) {\n  .go-Banner {\n    display: block;\n  }\n}\n\n.go-Header {\n  background: #007d9c;\n  border-bottom: none;\n  box-shadow: 0 0.0625rem 0.125rem rgb(171 171 171 / 30%);\n  top: 0;\n  width: 100%;\n  z-index: 20;\n}\n\n.go-Header-inner {\n  margin: 0 auto;\n  padding: 0 var(--gutter);\n}\n\n.Site--wide .go-Header-inner {\n  max-width: 98rem;\n}\n\n.go-Header--full .go-Header-inner {\n  max-width: initial;\n}\n\n.go-Header-nav {\n  align-items: center;\n  display: flex;\n  height: 3.5rem;\n  justify-content: space-between;\n}\n\n.go-Header-rightContent {\n  align-items: center;\n  display: flex;\n  height: 100%;\n  justify-content: flex-end;\n  width: 100%;\n}\n\n.go-Header-rightContent form {\n  flex-grow: 1;\n}\n\n.go-Header-inner--dark {\n  border-bottom: none;\n  color: var(--white);\n}\n\n.go-Header-logo {\n  display: block;\n  height: 2rem;\n  margin-right: 2.25rem;\n  width: 5.125rem;\n}\n\n.go-Header-logo--hidden {\n  display: none;\n}\n\n.go-Header-menuItem {\n  display: none;\n  position: relative;\n}\n\n.go-Header-menu {\n  align-items: stretch;\n  display: flex;\n  height: 100%;\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n\n[data-local='true'] .go-Header-menu {\n  display: none;\n}\n\n.go-Header-submenu {\n  background: transparent;\n  background-color: var(--color-background);\n  border: 0.0625rem solid #007d9d;\n  border-width: 0 0.0625rem 0.0625rem;\n  color: var(--color-text);\n  display: none;\n  flex-flow: column wrap;\n  list-style-type: none;\n  margin-top: 3.5rem;\n  opacity: 0;\n  padding: 1.5rem 1.5rem 0;\n  position: absolute;\n  transition: all 0.2s ease;\n  visibility: hidden;\n}\n\n.go-Header-menuItem:hover > .js-desktop-menu-hover:not(.forced-closed) ~ .go-Header-submenu,\n.go-Header-menuItem:focus-within > .js-desktop-menu-hover:not(.forced-closed) ~ .go-Header-submenu {\n  display: flex;\n  opacity: 1;\n  visibility: visible;\n}\n\n.go-Header-menuItem .go-Header-submenuItem a:link,\n.go-Header-menuItem .go-Header-submenuItem a:visited {\n  align-items: baseline;\n  border-bottom: none;\n  color: var(--color-text-link);\n  display: inline-flex;\n  font-weight: 400;\n  margin: 0;\n  margin-bottom: -0.125rem;\n  padding: 0;\n}\n\n.go-Header-menuItem .go-Icon {\n  filter: brightness(0%) saturate(100%) invert(100%);\n  font-size: 1.25rem;\n}\n\n.go-Header-menuItem .go-Header-submenuItem .go-Icon,\n.go-NavigationDrawer-listItem .go-Icon {\n  filter: brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(162deg)\n    brightness(71%) contrast(177%);\n}\n\n.go-Header-submenu .go-Header-submenuItem i {\n  font-size: 0.75rem;\n  margin-left: 0.25rem;\n  transform: translateY(0.1rem); /* to get bottom alignment w/ text  */\n}\n\n.go-Header-menu .go-Header-submenu--why {\n  left: -0.0625rem;\n  width: 18.5rem;\n}\n\n.go-Header-menu .go-Header-submenu--docs {\n  height: 20.78rem;\n  left: -12rem;\n  width: 37.25rem;\n}\n\n.go-Header-menu .go-Header-submenu--community {\n  height: 18.4rem;\n  right: -0.0625rem;\n  width: 37.25rem;\n}\n\n.go-Header-socialIcons {\n  display: flex;\n  flex-wrap: wrap;\n}\n\n.go-Header-submenu .go-Header-submenuItem a.go-Header-socialIcon {\n  display: inline-flex;\n  flex: 0 1 auto;\n  width: auto;\n}\n\n.go-Header-submenu .go-Header-submenuItem a.go-Header-socialIcon:not(:last-child) {\n  margin-right: 0.75rem;\n}\n@media only screen and (min-width: 65rem) {\n  .go-Header-menuItem {\n    align-items: stretch;\n    display: inline-flex;\n    flex: none;\n  }\n\n  .go-Header-menu {\n    justify-content: flex-end;\n  }\n\n  .go-Header-navOpen {\n    display: none;\n  }\n}\n\n.go-Header-menuItem .js-desktop-menu-hover img {\n  pointer-events: none;\n}\n\n.go-Header-menuItem a:link,\n.go-Header-menuItem a:visited {\n  align-items: center;\n  border-bottom: 0.1875rem solid transparent;\n  border-top: 0.1875rem solid transparent; /* To ensure the text remains centered. */\n  color: var(--color-text);\n  display: inline-flex;\n  padding: 0 1.5rem;\n  text-align: center;\n  text-decoration: none;\n  width: 100%;\n}\n\n.go-Header-menuItem--active a:link,\n.go-Header-menuItem--active a:visited {\n  border-bottom-color: var(--turq-med);\n  font-weight: bold;\n}\n\n.go-Header-menuItem a:hover {\n  border-bottom-color: var(--white);\n}\n\n.go-Header-menuItem:hover > a:not(.forced-closed).js-desktop-menu-hover,\n.go-Header-menuItem:focus-within > a:not(.forced-closed).js-desktop-menu-hover {\n  background: var(--white);\n  border-color: var(--white);\n  color: var(--color-text-link);\n}\n\n/* Need to get around icon.css color management */\n@media (prefers-color-scheme: dark) {\n  :root:not([data-theme='light'])\n    .go-Header-menuItem:hover\n    > a:not(.forced-closed).js-desktop-menu-hover\n    .go-Icon,\n  :root:not([data-theme='light'])\n    .go-Header-menuItem:focus-within\n    > a:not(.forced-closed).js-desktop-menu-hover\n    .go-Icon {\n    filter: brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(158deg)\n      brightness(83%) contrast(157%);\n  }\n\n  :root:not([data-theme='light']) .go-Header-submenuItem .go-Icon:not(.go-Icon--accented) {\n    filter: brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(163deg)\n      brightness(80%) contrast(157%);\n  }\n}\n\n.go-NavigationDrawer-listItem > div:not(.go-NavigationDrawer),\n.go-NavigationDrawer-listItem a:link,\n.go-NavigationDrawer-listItem a:visited {\n  display: block;\n  margin: 0 1rem;\n  padding: 0.5rem;\n}\n\n.go-NavigationDrawer-listItem > span {\n  color: var(--gray-2);\n}\n\n.go-Header-inner--dark .go-Header-menuItem a:link,\n.go-Header-inner--dark .go-Header-menuItem a:visited {\n  color: var(--white);\n}\n\n.go-NavigationDrawer-listItem.go-NavigationDrawer-hasSubnav > a i {\n  float: right;\n}\n\n.go-Header-inner--dark .go-Header-menuItem .go-Header-submenuItem {\n  color: var(--color-text-link);\n}\n\n.go-Header-inner--dark .go-Header-menuItem .js-desktop-menu-hover.is-expanded {\n  background-color: var(--white);\n  color: var(--color-text-link);\n}\n\n.go-Header-inner--dark .go-Header-menuItem .go-Header-submenu a:link,\n.go-Header-inner--dark .go-Header-menuItem .go-Header-submenu a:visited {\n  align-items: baseline;\n  color: var(--color-text-link);\n  display: inline-flex;\n  margin-bottom: -0.125rem;\n  width: auto;\n}\n\n.go-Header-submenu .go-Header-submenuItem a:link,\n.go-Header-submenu .go-Header-submenuItem a:visited {\n  border-bottom: none;\n  font-weight: 400;\n  margin: 0;\n  padding: 0;\n}\n\n.go-Header-submenu .go-Header-submenuItem a:focus {\n  text-decoration: underline !important;\n}\n\n.go-Header-inner--dark .go-Header-menuItem:hover > a:not(.forced-closed).js-desktop-menu-hover,\n.go-Header-inner--dark\n  .go-Header-menuItem:focus-within\n  > a:not(.forced-closed).js-desktop-menu-hover {\n  background: var(--color-background);\n  border-color: var(--color-background);\n}\n\n.go-Header-submenu p {\n  max-width: 15.5rem;\n}\n\n.go-Header-submenu a:link:hover,\n.go-Header-submenu a:visited:hover {\n  border-bottom: 0.125rem solid var(--turq-dark);\n  text-decoration: none;\n}\n\n.go-Header-submenu a:link:hover > *,\n.go-Header-submenu a:visited:hover > * {\n  text-decoration: none;\n}\n\n.go-Header-submenu .go-Header-submenuItem {\n  line-height: 1;\n  padding-bottom: 1.5rem;\n}\n\n.go-Header-submenu .go-Header-submenuItem p {\n  color: var(--color-text-subtle);\n  font-size: 0.875rem;\n  margin-top: 0.55rem;\n}\n\n.go-Header-inner--dark .go-Header-submenu .go-Header-submenuItem p {\n  color: var(--color-text-subtle);\n}\n\n.go-Header-navOpen {\n  background: no-repeat center/2rem url('/images/menu-24px.svg');\n  border: none;\n  height: 2.5rem;\n  margin-left: 1rem;\n  width: 2.5rem;\n}\n\n.go-Header-navOpen--hidden {\n  display: none;\n}\n\n.go-Header-navOpen--white {\n  background: no-repeat center/2rem url('/static/shared/icon/menu_gm_grey_24dp.svg');\n  filter: brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg)\n    brightness(103%) contrast(107%);\n}\n\n.go-SearchForm--expanded {\n  flex-grow: 1;\n}\n\n.go-SearchForm-form {\n  display: none;\n}\n\n.go-SearchForm-form::after {\n  right: 2.75rem;\n}\n\n.go-SearchForm--expanded .go-SearchForm-form {\n  display: flex;\n}\n\n.go-SearchForm-expandSearch {\n  appearance: none;\n  background: none;\n  font-size: 1.5rem;\n}\n\n.go-SearchForm--expanded .go-SearchForm-expandSearch {\n  display: none;\n}\n\n@media only screen and (min-width: 32rem) {\n  .go-Header-rightContent {\n    width: 100%;\n  }\n\n  .go-SearchForm {\n    flex: 1;\n  }\n\n  .go-SearchForm-form {\n    display: flex;\n  }\n\n  .go-SearchForm-expandSearch {\n    display: none;\n  }\n\n  .go-Header-logo--hidden {\n    display: initial;\n  }\n}\n\n.go-NavigationDrawer {\n  background: var(--color-background);\n  height: 100%;\n  left: auto;\n  max-width: 27rem;\n  position: fixed;\n  right: 0;\n  top: 0;\n  transform: translateX(100%);\n  transition: transform 100ms ease-in-out;\n  width: 85%;\n  z-index: 30;\n}\n@media only screen and (min-width: 65rem) {\n  .go-NavigationDrawer {\n    display: none;\n  }\n}\n\n.go-NavigationDrawer.is-active {\n  transform: translateX(0);\n}\n\n.go-NavigationDrawer-header {\n  border-bottom: 0.0625rem solid #eee;\n  margin-bottom: 0.5rem;\n}\n\n.go-NavigationDrawer-submenuItem {\n  width: 100%;\n}\n\n.go-NavigationDrawer-submenuItem .go-NavigationDrawer-header {\n  align-items: center;\n  color: var(--color-text-link);\n  display: flex;\n  font-size: 1.375rem;\n  justify-content: flex-start;\n  min-height: 4.0625rem;\n  padding: 0.5rem;\n  padding-left: 1.5rem;\n}\n\n.go-NavigationDrawer-submenuItem .go-NavigationDrawer-header > a {\n  display: flex;\n  margin-left: 0;\n}\n\n.go-NavigationDrawer-logo {\n  display: block;\n  height: 2rem;\n  margin: 1rem;\n  width: 5.125rem;\n}\n\n.go-NavigationDrawer-list {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n\n.go-NavigationDrawer-listItem {\n  color: var(--color-text-subtle);\n  font-size: 1.125rem;\n  margin: 0 0.5rem;\n}\n\n.go-NavigationDrawer-listItem--active {\n  background-color: var(--blue);\n  border-radius: 0.4rem;\n}\n\n.go-NavigationDrawer-listItem .material-icons {\n  color: var(--color-brand-primary);\n  display: inline-block;\n  margin-right: 0.5rem;\n  text-decoration: none;\n  vertical-align: sub;\n}\n@media only screen and (max-width: 57.7rem) {\n  .go-NavigationDrawer-listItem .go-Header-socialIcons {\n    padding: 0.5rem 0;\n  }\n\n  .go-NavigationDrawer-listItem a.go-Header-socialIcon {\n    display: inline-block;\n    margin: 0;\n    padding: 0 0.5rem;\n  }\n\n  @media (prefers-color-scheme: dark) {\n    :root:not([data-theme='light']) .go-NavigationDrawer-listItem .go-Icon:not(.go-Icon--accented) {\n      filter: brightness(0) saturate(100%) invert(60%) sepia(97%) saturate(125%) hue-rotate(163deg)\n        brightness(80%) contrast(157%);\n    }\n  }\n}\n\n.go-NavigationDrawer-scrim {\n  display: none;\n  height: 100%;\n  left: 0;\n  position: fixed;\n  top: 0;\n  width: 100%;\n  z-index: 20;\n}\n\n.go-NavigationDrawer.is-active + .go-NavigationDrawer-scrim {\n  background-color: var(--gray-1);\n  display: block;\n  opacity: 0.32;\n}\n\n.skip-to-content-link {\n  background: var(--color-background);\n  border-radius: 0.375rem;\n  clip: rect(0 0 0 0);\n  color: var(--color-text);\n  font-weight: 500;\n  left: 8%;\n  margin: 0.313rem;\n  overflow: hidden;\n  position: absolute;\n  top: 0.75rem;\n}\n\n.skip-to-content-link:focus {\n  clip: unset;\n  z-index: 1;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.depsdev-Icon {\n  height: 1.125em;\n  vertical-align: text-bottom;\n  width: auto;\n}\n\n.go-Icon {\n  filter: none;\n  height: 1.125em;\n  vertical-align: text-bottom;\n  width: auto;\n}\n\n.go-Icon--accented {\n  filter: brightness(0) invert(45%) sepia(94%) saturate(6735%) hue-rotate(176deg) brightness(94%)\n    contrast(101%);\n}\n\n.go-Icon--inverted {\n  filter: brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg)\n    brightness(103%) contrast(107%);\n  @media (forced-colors: active) and (prefers-color-scheme: light) {\n    filter: brightness(500%) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg)\n      brightness(103%) contrast(107%);\n  }\n}\n\n[data-theme='dark'] .go-Icon:not(.go-Icon--accented) {\n  filter: brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg)\n    brightness(103%) contrast(107%);\n}\n\n[data-theme='dark'] .go-Icon--accented {\n  filter: brightness(0) invert(69%) sepia(46%) saturate(466%) hue-rotate(153deg) brightness(90%)\n    contrast(88%);\n}\n@media (prefers-color-scheme: dark) {\n  :root:not([data-theme='light']) .go-Icon:not(.go-Icon--accented) {\n    filter: brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg)\n      brightness(103%) contrast(107%);\n  }\n\n  :root:not([data-theme='light']) .go-Icon--accented {\n    filter: brightness(0) invert(57%) sepia(63%) saturate(4864%) hue-rotate(160deg) brightness(100%)\n      contrast(101%);\n  }\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-Message {\n  color: var(--color-text);\n  font-size: 0.875rem;\n  line-height: 1.5rem;\n  padding: 0.25rem 0.5rem;\n  width: 100%;\n}\n\n.go-Message--notice {\n  background-color: var(--color-background-info);\n}\n\n.go-Message--warning {\n  background-color: var(--color-background-warning);\n  color: var(--gray-1);\n}\n\n.go-Message--alert {\n  background-color: var(--color-background-alert);\n}\n\n.go-Message > .go-Icon {\n  vertical-align: text-top;\n}\n\n[data-theme='dark'] .go-Message a:not(:hover) {\n  color: var(--color-text);\n  text-decoration: underline;\n}\n\n[data-theme='dark'] .go-Message--warning .go-Icon {\n  filter: none;\n}\n@media (prefers-color-scheme: dark) {\n  :root:not([data-theme='light']) .go-Message--warning .go-Icon {\n    filter: none;\n  }\n}\n", "dialog {\n  position: absolute;\n  left: 0; right: 0;\n  width: -moz-fit-content;\n  width: -webkit-fit-content;\n  width: fit-content;\n  height: -moz-fit-content;\n  height: -webkit-fit-content;\n  height: fit-content;\n  margin: auto;\n  border: solid;\n  padding: 1em;\n  background: white;\n  color: black;\n  display: block;\n}\n\ndialog:not([open]) {\n  display: none;\n}\n\ndialog + .backdrop {\n  position: fixed;\n  top: 0; right: 0; bottom: 0; left: 0;\n  background: rgba(0,0,0,0.1);\n}\n\n._dialog_overlay {\n  position: fixed;\n  top: 0; right: 0; bottom: 0; left: 0;\n}\n\ndialog.fixed {\n  position: fixed;\n  top: 50%;\n  transform: translate(0, -50%);\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n@import url('../../../third_party/dialog-polyfill/dialog-polyfill.css');\n\n.go-Modal {\n  background: var(--color-background);\n  border: var(--border);\n  border-radius: var(--border-radius);\n  bottom: 0;\n  box-shadow: var(--box-shadow);\n  color: var(--color-text);\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n  max-height: 100%;\n  max-width: 100%;\n  position: fixed;\n  top: 0;\n}\n\n.go-Modal > form {\n  display: contents;\n}\n\n.go-Modal--small {\n  width: 20rem;\n}\n\n.go-Modal--md {\n  width: 30rem;\n}\n\n.go-Modal--lg {\n  width: 40rem;\n}\n\n.go-Modal-header {\n  display: flex;\n  justify-content: space-between;\n}\n\n.go-Modal-header h2 {\n  font-size: 1.15rem;\n  line-height: 1.25rem;\n}\n\n.go-Modal-body {\n  flex-grow: 1;\n  min-height: 2rem;\n  min-width: 18rem;\n}\n\n.go-Modal-actions {\n  text-align: right;\n}\n\n/* Safari only */\n@media not all and (min-resolution: 0.001dpcm) {\n  @supports (-webkit-appearance: none) {\n    .go-Modal {\n      padding-bottom: 0;\n    }\n  }\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-Tree {\n  --js-tree-height: 0;\n\n  display: flex;\n  flex-direction: column;\n}\n\n.go-Tree ul {\n  list-style: none;\n  padding-left: 0;\n}\n\n.go-Tree li:last-of-type {\n  padding-bottom: 0.25rem;\n}\n\n.go-Tree a + ul {\n  display: none;\n}\n\n.go-Tree a[aria-expanded='true'] + ul[role='group'] {\n  display: block;\n}\n\n.go-Tree a[aria-level='1'] + ul[role='group'] {\n  max-height: calc(\n    100vh - var(--js-tree-height, 0) - var(--js-sticky-header-height, 3.5rem) - 5rem\n  );\n  overflow-y: auto;\n  padding: 0.5rem 0.25rem 0;\n}\n\n.go-Tree a {\n  color: var(--color-text-subtle);\n  display: block;\n  line-height: 1.5rem;\n  overflow: hidden;\n  padding: 0.125rem 0 0.125rem 1.25rem;\n  position: relative;\n  text-overflow: ellipsis;\n  user-select: none;\n  white-space: nowrap;\n}\n\n.go-Tree > li > a,\n.go-Tree a[aria-level='1'] {\n  display: block;\n  font-size: 1rem;\n  font-weight: 500;\n  line-height: 2.5rem;\n  padding: 0 1rem;\n}\n\n.go-Tree a:focus,\n.go-Tree a:hover {\n  text-decoration: underline;\n  z-index: 1;\n}\n\n.go-Tree a[aria-selected='true'] {\n  color: var(--color-text);\n  font-weight: 500;\n}\n\n.go-Tree a[aria-level='1'][aria-selected='true'],\n.go-Tree a[aria-level='1'][aria-expanded='true'] {\n  background-color: var(--color-background-accented);\n}\n\n.go-Tree a[aria-level='3'][aria-expanded='true'] {\n  margin-bottom: 0.375em;\n}\n\n.go-Tree a[aria-level='2'] {\n  margin-bottom: 0.25rem;\n  position: relative;\n}\n\n.go-Tree a[aria-level='3'] {\n  padding-left: 2.5rem;\n}\n\n.go-Tree a[aria-level='4'] {\n  border-left: 0.125rem solid var(--color-background-accented);\n  margin-left: 2.5rem;\n  padding-left: 0.5rem;\n}\n\n.go-Tree a[aria-selected='true'][aria-level='2']:not([aria-expanded])::before,\n.go-Tree a[aria-selected='true'][aria-level='3']:not([aria-expanded])::before {\n  background-color: var(--color-brand-primary);\n  border-radius: 50%;\n  content: '';\n  display: block;\n  height: 0.3125rem;\n  left: 0.4688rem;\n  position: absolute;\n  top: 0.75rem;\n  width: 0.3125rem;\n}\n\n.go-Tree a[aria-expanded][aria-owns][aria-level='2']::before,\n.go-Tree a[aria-expanded][aria-owns][aria-level='3']::before {\n  border-bottom: 0.25rem solid transparent;\n  border-left: 0.25rem solid var(--color-border);\n  border-right: 0;\n  border-top: 0.25rem solid transparent;\n  content: '';\n  display: block;\n  height: 0;\n  left: 0.5rem;\n  position: absolute;\n  top: 0.625rem;\n  transition: transform 0.1s linear;\n  width: 0;\n}\n\n.go-Tree a[aria-expanded='true'][aria-level='2']::before,\n.go-Tree a[aria-expanded='true'][aria-level='3']::before {\n  transform: rotate(90deg);\n}\n\n.go-Tree a[aria-expanded][aria-level='3']:not([empty])::before,\n.go-Tree a[aria-selected][aria-level='3']:not([empty])::before {\n  left: 1.5rem;\n  top: 0.75rem;\n}\n\n.go-Tree a[aria-selected='true'][aria-level='4'] {\n  border-left: 0.125rem solid var(--color-brand-primary);\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-TabNav {\n  margin: 0 0 0.5rem;\n}\n\n.go-TabNav ul {\n  display: flex;\n  gap: 2rem;\n}\n\n.go-TabNav li {\n  border-bottom: 0.25rem transparent solid;\n  display: flex;\n  font-size: 1rem;\n  height: 2.375rem;\n  padding: 0 0.25rem;\n}\n\n.go-TabNav li[aria-current] {\n  border-color: var(--color-brand-primary);\n}\n\n.go-TabNav li:hover {\n  border-color: var(--color-brand-primary);\n}\n\n.go-TabNav a {\n  align-items: center;\n  color: var(--color-text-subtle);\n  display: inline-flex;\n}\n\n.go-TabNav li:hover a {\n  text-decoration: none;\n}\n\n.go-TabNav li[aria-current] a {\n  color: var(--color-text);\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.go-Tooltip {\n  border-radius: var(--border-radius);\n  cursor: pointer;\n  display: inline-block;\n  position: relative;\n}\n\n.go-Tooltip > summary {\n  list-style: none;\n}\n\n.go-Tooltip > summary::-webkit-details-marker,\n.go-Tooltip > summary::marker {\n  display: none;\n}\n\n.go-Tooltip > summary > img {\n  vertical-align: text-bottom;\n}\n\n.go-Tooltip p {\n  background: var(--color-background) 80%;\n  border: var(--border);\n  border-radius: var(--border-radius);\n  color: var(--color-text);\n  font-size: 0.75rem;\n  letter-spacing: 0.0187rem;\n  line-height: 1rem;\n  padding: 0.5rem;\n  position: absolute;\n  top: 1.5rem;\n  white-space: normal;\n  width: 12rem;\n  z-index: 100;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n@import url('./reset.css');\n\n/**\n * Typography should be imported first in the list below to ensure expected\n * CSS rule inheritance on text elements.\n */\n@import url('./typography/typography.css');\n@import url('./button/button.css');\n@import url('./breadcrumb/breadcrumb.css');\n@import url('./carousel/carousel.css');\n@import url('./chip/chip.css');\n@import url('./clipboard/clipboard.css');\n@import url('./color/color.css');\n@import url('./footer/footer.css');\n@import url('./form/form.css');\n@import url('./gopher/gopher.css');\n@import url('./header/header.css');\n@import url('./icon/icon.css');\n@import url('./message/message.css');\n@import url('./modal/modal.css');\n@import url('./outline/tree.css');\n@import url('./tabnav/tabnav.css');\n@import url('./tooltip/tooltip.css');\n\n:root {\n  /* Padding at the left and right of the viewport. */\n  --gutter: 1.5rem;\n\n  /* Margin between containers in the grid layout. */\n  --gap: 1rem;\n\n  /* The margin placed above elements scrolled to by clicking hash links. */\n  --scroll-margin: calc(\n    var(--js-sticky-header-height, 3.5rem) + var(--js-sticky-nav-height, 0) + 2rem\n  );\n\n  /* Default styles for page elements. */\n  --border: 0.0625rem solid var(--color-border);\n  --border-radius: 0.25rem;\n  --box-shadow: 0 0 0.375rem 0 rgb(0 0 0 / 25%);\n  --focus-box-shadow: 0 0 0.0625rem 0.0625rem rgb(0 112 210 / 60%);\n}\n\n[data-theme='dark'] {\n  --box-shadow: 0 0.3125rem 0.9375rem rgb(0 0 0 / 45%);\n}\n@media (prefers-color-scheme: dark) {\n  :root:not([data-theme='light']) {\n    --box-shadow: 0 0.3125rem 0.9375rem rgb(0 0 0 / 45%);\n  }\n}\n@media (min-width: 50rem) {\n  :root {\n    --gap: 2rem;\n    --scroll-margin: calc(\n      var(--js-sticky-header-height, 3.5rem) + var(--js-sticky-nav-height, 0) + 1rem\n    );\n  }\n}\n\n*:target {\n  scroll-margin-top: var(--scroll-margin);\n}\n\nbody {\n  background-color: var(--color-background);\n  display: flex;\n  flex-direction: column;\n  min-height: 100vh;\n  min-width: 23.5rem;\n\n  /**\n   * This is used to programatically detect whether overflow needs to be altered\n   * to prevent jitter when focusing within fixed elements on iOS.\n   * It also must be set to 'touch' for the fix to work.\n   */\n  -webkit-overflow-scrolling: touch;\n}\n\n.go-Container {\n  display: flex;\n  flex-direction: column;\n  flex-grow: 1;\n  height: 100%;\n  margin-bottom: 5rem;\n}\n\n.go-Content {\n  display: flex;\n  flex-flow: column;\n  gap: 1rem;\n  margin: 0 auto;\n  max-width: 63rem;\n  min-height: 32rem;\n  padding: 2rem var(--gutter);\n  width: 100%;\n}\n\n.go-Content--center {\n  justify-content: center;\n  margin: auto;\n}\n", "/*!\n* Copyright 2021 The Go Authors. All rights reserved.\n* Use of this source code is governed by a BSD-style\n* license that can be found in the LICENSE file.\n*/\n\n.JumpDialog-body {\n  height: 12rem;\n  overflow-y: auto;\n}\n\n.JumpDialog-list {\n  display: flex;\n  flex-direction: column;\n}\n\n.JumpDialog-input {\n  width: 100%;\n}\n\n.JumpDialog a {\n  padding: 0.25rem;\n  text-decoration: none;\n}\n\n.JumpDialog .JumpDialog-active {\n  background-color: var(--color-brand-primary);\n  color: var(--white);\n}\n\n.ShortcutsDialog-key {\n  text-align: right;\n}\n\n.ShortcutsDialog table {\n  padding: 0 1rem;\n}\n\n.ShortcutsDialog td {\n  padding-bottom: 0.5rem;\n  padding-left: 0.5rem;\n}\n\n.ShortcutsDialog-theme span {\n  display: none;\n}\n\n[data-theme='light'] .ShortcutsDialog-themeLight {\n  display: initial;\n}\n\n[data-theme='dark'] .ShortcutsDialog-themeDark {\n  display: initial;\n}\n\n[data-theme=''] .ShortcutsDialog-themeAuto,\n[data-theme='auto'] .ShortcutsDialog-themeAuto {\n  display: initial;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n@import url('../shared/shared.css');\n@import url('_modals.css');\n\n.Cookie-notice {\n  align-items: center;\n  background-color: var(--color-background);\n  border-top: var(--border);\n  bottom: 0;\n  color: var(--color-text);\n  display: none;\n  gap: 1rem;\n  justify-content: center;\n  left: 0;\n  padding: 1rem;\n  position: fixed;\n  right: 0;\n  z-index: 100;\n}\n\n.Cookie-notice--visible {\n  display: flex;\n}\n"],
-  "mappings": ";;;;;AAYA,KACA,KACA,OACA,IACA,KACA,OACA,OACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,MACA,EACA,WACA,IACA,EACA,KACA,QACA,QACA,IACA,KACA,KACA,IACA,IACA,OACA,GACA,IACA,IACA,IACA,EACA,EACA,KACA,MACA,OACA,OACA,IACA,IACA,GACA,IACA,EACA,EACA,EACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,SACA,KACA,MACA,OACA,MACA,QACA,MACA,MACA,MACA,GACA,GACA,GACA,QACA,MACA,OACA,QACA,MACA,OACA,WACA,OACA,OACA,OACA,KACA,IACA,OACA,KACA,QACA,QACA,KACA,KACA,MACA,MACE,OAAQ,EACR,KAAM,QACN,UAAW,KAnGb,OAoGU,EApGV,QAqGW,EACT,eAAgB,QAClB,CAGA,QACA,MACA,QACA,WACA,OACA,OACA,OACA,OACA,KACA,IACA,QACE,QAAS,KACX,CAEA,KACE,YAAa,CACf,CAEA,GACA,GACE,WAAY,IACd,CAEA,WACA,EACE,OAAQ,IACV,CAEA,UAAU,QACV,UAAU,OACV,CAAC,QACD,CAAC,OACC,QAAS,GACT,QAAS,IACX,CAEA,MACE,gBAAiB,SACjB,eAAgB,CAClB,CAEA,EACA,QACA,OACE,WAAY,UACd,CCjJA,KACE,MAAO,IAAI,cACX,YAAa,aAAa,CAAE,kBAAkB,CAAE,QAAU,CAAE,SAAS,CAAE,KAAK,CAAE,UAAU,CACtF,mBAAmB,CAAE,iBACvB,UAAW,KACX,YAAa,MACf,CAEA,GACE,UAAW,MACb,CAEA,GACE,UAAW,QACb,CAEA,GACE,UAAW,OACb,CAEA,GACE,UAAW,QACb,CAEA,GACE,UAAW,IACb,CAEA,GACE,UAAW,OACb,CAEA,GACA,GACA,GACA,GACE,YAAa,IACb,YAAa,OACb,WAAY,UACd,CAEA,GACA,GACE,YAAa,IACb,YAAa,MACb,WAAY,UACd,CAEA,GACE,OAAQ,KACR,cAAe,IAAI,UAxDrB,OAyDU,EACR,MAAO,IACT,CAEA,EACE,UAAW,KAC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",
+  "mappings": ";;;;;AAYA,kbAqFE,SACA,aACA,eAnGF,mBAsGE,wBAIF,8EAWE,cAGF,KACE,cAGF,MAEE,gBAGF,aAEE,YAGF,oDAIE,WACA,aAGF,MACE,yBACA,iBAGF,iBAGE,sBChJF,KACE,wBACA,sHAEA,eACA,mBAGF,GACE,iBAGF,GACE,mBAGF,GACE,kBAGF,GACE,mBAGF,GACE,eAGF,GACE,kBAGF,YAIE,gBACA,mBACA,sBAGF,MAEE,gBACA,kBACA,sBAGF,GACE,YACA,4BAxDF,SA0DE,WAGF,EACE,eACA,mBACA,gBAGF,OACE,gBAGF,eACE,+BAGF,cACE,mBACA,gBACA,oBAGF,cACE,kBACA,gBACA,iBAGF,mBACE,kBACA,iBAGF,uBAGE,oEACA,kBACA,kBAGF,kBAEE,kDACA,qBACA,mCACA,wBACA,gBA1GF,gBA4GE,WACA,gBAGF,6BAIE,aAGF,mBAGE,iCACA,qBAGF,gBAEE,iCACA,0BAGF,UACE,0BC/HF,6BACE,wCACA,mCACA,oBAGF,WACE,mBACA,qCACA,kCACA,mCACA,+BACA,eACA,oBACA,gBACA,WAGF,mCAxBA,cA4BA,qBACE,8CACA,wCAGF,yDAGE,8CACA,wCAGF,mBACE,6BAGF,qBACE,qBAGF,iBACE,mCACA,qBAGF,yBACE,gBACA,4DAGF,iBACE,qBAGF,2BACE,+CAGF,kBACE,gBACA,qBAGF,oBACE,8CACA,gBACA,wCACA,eACA,YACA,qBAGF,8BACE,uDACA,iDAGF,oFAGE,uDACA,iDAGF,4BACE,6BCvFF,kBACE,mBACA,oBAGF,kBACE,mBACA,+BACA,oBACA,kBAGF,yCACE,YAnBF,gBAuBA,+BACE,+BAGF,gCA3BA,eCMA,aACE,mBACA,aACA,sBACA,kBACA,kBAGF,mBAdA,kBAkBA,gCACE,aAGF,uBACE,OAGF,uBACE,QAGF,8CAEE,6BACA,mCACA,iBACA,eACA,kBACA,UACA,kBACA,QACA,cAGF,0DAEE,kDACA,eAGF,sLAIE,UAGF,kBACE,aACA,mBACA,UAGF,iBACE,qCA/DF,mBAiEE,gBACA,gBACA,eAGF,gDAEE,0CACA,wCAGF,uBACE,kDAGF,+BACE,kDAGF,sBACE,SACA,mBACA,gBAvFF,iBAyFE,gBAzFF,UA2FE,kBACA,eCtFF,SACE,+BACA,0CARF,sBAUE,+BACA,iBAXF,wBAeA,mBACE,wCACA,mDACA,wCAGF,mBACE,wCACA,qBACA,wBAGF,sBACE,oDACA,sDACA,iCAGF,gBACE,uBACA,kCACA,iCAGF,eACE,6BACA,wCACA,iCAGF,iBACE,kDACA,yBACA,+BC1CF,cACE,kBAGF,qBACE,kDACA,mCACA,iCACA,2BACA,cACA,eACA,0BAjBF,qBAmBE,kBACA,yBACA,YACA,mBACA,aAGF,oBACE,uCACA,cACA,2DACA,oCACA,WACA,cACA,kBACA,eACA,aACA,aAGF,4JAIE,aCrCF,MAEE,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,sBACA,oBACA,qBACA,uBACA,gBACA,sBACA,cACA,iBACA,uBACA,gBACA,sBACA,kBACA,iBACA,cACA,kBACA,wBAGA,wCACA,iCACA,0CACA,4CACA,4CACA,uDACA,uCACA,gDACA,4CACA,8BACA,4BACA,mCACA,oCACA,oCACA,mCACA,6CAGA,uCACA,sCACA,iCACA,uCACA,kCACA,4CACA,iDACA,0DACA,yDACA,gEACA,uCACA,gDACA,4CACA,qDAGF,kBACE,uCACA,kCACA,2CACA,8CACA,mDACA,uCACA,0CACA,sCACA,8BACA,4BACA,mCACA,mCACA,yCACA,0CAEF,oCACE,gCACE,uCACA,kCACA,2CACA,8CACA,mDACA,uCACA,0CACA,sCACA,8BACA,4BACA,mCACA,mCACA,0CC9FJ,WACE,kDACA,iCACA,kBACA,WAGF,6BACE,aAGF,iBACE,aACA,eACA,8BApBF,YAsBE,mBAtBF,6BA0BA,sBACE,gBAGF,2BACE,iCACA,aACA,OACA,kBACA,iBAGF,oCACE,mBACA,oBACA,oBACA,kBAGF,sBACE,iCACA,kBAGF,kBACE,mBACA,yBACA,aArDF,gBAuDE,oBAGF,kBACE,oBACA,gBACA,WAGF,mBACE,aACA,OACA,eACA,gBApEF,mBAuEE,kBAGF,oBACE,mBACA,aACA,YACA,uBA9EF,8BAmFA,yDAEE,iCAGF,qCACE,6BACA,eA1FF,gBA8FA,iCACE,aAGF,sHAEE,gBAGF,kHACE,gBAOF,2CA/GA,iBAoHA,sBACE,oBACA,cACA,qBACA,iBAGF,yBACE,cACA,eAGF,0CACE,oBACE,aAGF,wCACE,0BAGF,uBAzIF,oBA6IE,oBA7IF,UCMA,yDAEE,wCACA,mCACA,oBACA,UAGF,mBACE,+BAGF,SACE,kBACA,aACA,sBACA,SAGF,UACE,aACA,sBACA,UAGF,kBACE,mBACA,mBAGF,iBACE,oBAGF,yBACE,WACA,gBAGF,qBAEE,8BACA,qBACA,mCACA,8BAGF,UArDA,uBAyDA,WACE,gBACA,qFACA,yCACA,iCACA,mCA9DF,iDAmEA,eACE,aAGF,yBACE,OAGF,8CA3EA,gBA6EE,sBAGF,4BACE,6BACA,0BAGF,2BACE,4BACA,yBACA,sBAGF,8CAEE,UAGF,gBACE,aACA,kBAGF,0BACE,YAGF,sBACE,kBACA,kDA3GF,oBA6GE,oBACA,4BACA,sDACA,aACA,iBAjHF,mBAmHE,kBACA,aACA,kBACA,aACA,UAEF,0CACE,sBACE,iBCrHJ,sBACE,cACA,aARF,gCAWE,YAGF,oBACE,gBAfF,YAiBE,kBCTF,WACE,+BAMA,aAGF,iBACE,mBACA,aACA,8BArBF,cAuBE,kBACA,4BAGF,6BACE,gBAGF,kCACE,gBAGF,mBACE,mBACA,qBAGF,iDAEE,mBACA,0BACA,mBAEF,0CACE,WACE,eAIJ,WACE,mBACA,mBACA,wCACA,MACA,WACA,WAGF,iBA7DA,cA+DE,wBAGF,6BACE,gBAGF,kCACE,kBAGF,eACE,mBACA,aACA,cACA,8BAGF,wBACE,mBACA,aACA,YACA,yBACA,WAGF,6BACE,YAGF,uBACE,mBACA,mBAGF,gBACE,cACA,YACA,qBACA,eAGF,wBACE,aAGF,oBACE,aACA,kBAGF,gBACE,oBACA,aACA,YACA,gBAtHF,mBA2HA,kCACE,aAGF,mBACE,uBACA,yCACA,8BACA,iCACA,wBACA,aACA,sBACA,qBACA,kBACA,UAzIF,wBA2IE,kBACA,wBACA,kBAGF,uLAEE,aACA,UACA,mBAGF,uGAEE,qBACA,mBACA,6BACA,oBACA,gBA7JF,SA+JE,uBA/JF,UAmKA,6BACE,kDACA,kBAGF,2FAEE,4HAIF,4CACE,iBACA,mBACA,4BAGF,wCACE,eACA,cAGF,yCACE,gBACA,YACA,eAGF,8CACE,eACA,gBACA,eAGF,uBACE,aACA,eAGF,iEACE,oBACA,cACA,WAGF,kFACE,oBAEF,0CACE,oBACE,oBACA,oBACA,UAGF,gBACE,yBAGF,mBACE,cAIJ,+CACE,oBAGF,yDAEE,mBACA,yCACA,sCACA,wBACA,oBA7OF,iBA+OE,kBACA,qBACA,WAGF,yEAEE,oCACA,gBAGF,4BACE,iCAGF,mJAEE,wBACA,0BACA,6BAIF,oCACE,qOAQE,4HAIF,wFACE,6HAKJ,yIAGE,cA5RF,4BAiSA,mCACE,oBAGF,uGAEE,mBAGF,gEACE,YAGF,kEACE,6BAGF,8EACE,8BACA,6BAGF,6IAEE,qBACA,6BACA,oBACA,uBACA,WAGF,qGAEE,mBACA,gBAnUF,mBAwUA,kDACE,oCAGF,iMAIE,mCACA,qCAGF,qBACE,kBAGF,mEAEE,6CACA,qBAGF,uEAEE,qBAGF,0CACE,cACA,sBAGF,4CACE,+BACA,kBACA,kBAGF,mEACE,+BAGF,mBACE,4DACA,YACA,cACA,iBACA,aAGF,2BACE,aAGF,0BACE,gFACA,6HAIF,yBACE,YAGF,oBACE,aAGF,0BACE,cAGF,6CACE,aAGF,4BACE,gBACA,gBACA,iBAGF,qDACE,aAGF,0CACE,wBACE,WAGF,eACE,OAGF,oBACE,aAGF,4BACE,aAGF,wBACE,iBAIJ,qBACE,mCACA,YACA,UACA,gBACA,eACA,QACA,MACA,0BACA,qCACA,UACA,WAEF,0CACE,qBACE,cAIJ,+BACE,uBAGF,4BACE,kCACA,oBAGF,iCACE,WAGF,6DACE,mBACA,6BACA,aACA,mBACA,2BACA,qBA1dF,iCA+dA,+DACE,aACA,cAGF,0BACE,cACA,YAteF,YAweE,eAGF,0BACE,gBA5eF,mBAifA,8BACE,+BACA,mBAnfF,eAufA,sCACE,6BAxfF,oBA4fA,8CACE,iCACA,qBACA,mBACA,qBACA,mBAEF,4CACE,qDApgBF,gBAwgBE,qDACE,qBAzgBJ,yBA8gBE,oCACE,+FACE,8HAMN,2BACE,aACA,YACA,OACA,eACA,MACA,WACA,WAGF,0DACE,+BACA,cACA,YAGF,sBACE,mCAviBF,sBAyiBE,mBACA,wBACA,gBACA,QA5iBF,eA8iBE,gBACA,kBACA,WAGF,4BACE,WACA,UC/iBF,cACE,eACA,2BACA,WAGF,SACE,YACA,eACA,2BACA,WAGF,mBACE,8GAIF,mBACE,6HAEA,iEACE,iIAKJ,mDACE,6HAIF,qCACE,4GAGF,oCACE,iEACE,6HAIF,mDACE,gHC3CJ,YACE,wBACA,kBACA,mBATF,qBAWE,WAGF,oBACE,8CAGF,qBACE,iDACA,oBAGF,mBACE,+CAGF,qBACE,wBAGF,4CACE,wBACA,0BAGF,gDACE,YAEF,oCACE,8DACE,aCzCJ,OACE,kBACA,OAAS,QACT,uBACA,0BACA,kBACA,wBACA,2BACA,mBARF,YAUE,aAVF,YAYE,iBACA,WACA,cAGF,mBACE,aAGF,iBACE,eAtBF,QAwBE,0BAGF,iBACE,eA5BF,QAgCA,aACE,eACA,QACA,2BC3BF,UACE,mCACA,qBACA,mCACA,SACA,6BACA,wBACA,aACA,sBACA,SACA,gBACA,eACA,eACA,MAGF,eACE,iBAGF,iBACE,YAGF,cACE,YAGF,cACE,YAGF,iBACE,aACA,8BAGF,oBACE,kBACA,oBAGF,eACE,YACA,gBACA,gBAGF,kBACE,iBAIF,8CACE,qCACE,UACE,mBC1DN,SACE,oBAEA,aACA,sBAGF,YACE,gBACA,eAGF,yBACE,sBAGF,cACE,aAGF,8CACE,cAGF,0CACE,kGAGA,gBAlCF,uBAsCA,WACE,+BACA,cACA,mBACA,gBA1CF,kCA4CE,kBACA,uBACA,iBACA,mBAGF,yCAEE,cACA,eACA,gBACA,mBAvDF,eA2DA,kCAEE,0BACA,UAGF,+BACE,wBACA,gBAGF,8FAEE,kDAGF,+CACE,qBAGF,2BACE,qBACA,kBAGF,2BACE,oBAGF,2BACE,2DACA,mBACA,mBAGF,sJAEE,4CAhGF,kBAkGE,WACA,cACA,gBACA,cACA,kBACA,WACA,eAGF,wHAEE,uCACA,6CACA,eACA,oCACA,WACA,cACA,SACA,WACA,kBACA,YACA,gCACA,QAGF,4GAEE,wBAGF,4HAEE,YACA,WAGF,+CACE,qDCjIF,WANA,iBAUA,cACE,aACA,SAGF,cACE,uCACA,aACA,eACA,gBAnBF,iBAuBA,gDACE,wCAOF,aACE,mBACA,+BACA,oBAGF,sBACE,qBAGF,8BACE,wBCpCF,YACE,mCACA,eACA,qBACA,kBAGF,oBACE,gBAGF,wEAEE,aAGF,wBACE,2BAGF,cACE,uCACA,qBACA,mCACA,wBACA,iBACA,wBACA,iBAjCF,cAmCE,kBACA,WACA,mBACA,YACA,YCTF,MAEE,iBAGA,YAGA,wGAKA,6CACA,wBACA,6CACA,+DAGF,kBACE,mDAEF,oCACE,gCACE,oDAGJ,0BACE,MACE,YACA,yGAMJ,SACE,uCAGF,KACE,yCACA,aACA,sBACA,iBACA,kBAOA,iCAGF,cACE,aACA,sBACA,YACA,YACA,mBAGF,YACE,aACA,iBACA,SAhGF,cAkGE,gBACA,iBACA,2BACA,WAGF,oBACE,uBAzGF,YCMA,iBACE,aACA,gBAGF,iBACE,aACA,sBAGF,kBACE,WAGF,cApBA,eAsBE,qBAGF,+BACE,4CACA,mBAGF,qBACE,iBAGF,uBAlCA,eAsCA,oBACE,qBACA,mBAGF,4BACE,aAGF,oLACE,gBCvCF,eACE,mBACA,yCACA,yBACA,SACA,wBACA,aACA,SACA,uBACA,OAlBF,aAoBE,eACA,QACA,YAGF,wBACE",
   "names": []
 }
diff --git a/static/frontend/homepage/homepage.min.css b/static/frontend/homepage/homepage.min.css
index 345602b..3b063f0 100644
--- a/static/frontend/homepage/homepage.min.css
+++ b/static/frontend/homepage/homepage.min.css
@@ -3,7 +3,7 @@
  * Use of this source code is governed by a BSD-style
  * license that can be found in the LICENSE file.
  */
-.go-SearchForm{display:none}.Homepage-logo{border-radius:var(--border-radius);display:block;height:10rem;margin:3.125rem auto;width:auto}[data-theme=dark] .Homepage-logo{mix-blend-mode:difference}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .Homepage-logo{mix-blend-mode:difference}}@media only screen and (min-width: 52rem){.Homepage{margin:2rem auto}.Homepage-logo{margin:3.5rem auto}}.Homepage-search{--border-radius: .5rem;height:3rem;margin:2.5rem auto 0;max-width:45.0625rem;position:relative;width:100%}.Homepage-search:before{background:url(/static/shared/icon/search_gm_grey_24dp.svg) left no-repeat;content:"";height:3rem;left:.75rem;position:absolute;width:1.5rem;z-index:3}.Homepage-search .go-Select,.Homepage-search .go-Input{padding-left:2.5rem}.Homepage-search--symbol .go-Input{border-bottom-right-radius:var(--border-radius);border-top-right-radius:var(--border-radius);padding-left:2.5rem}.Homepage-search .go-Button{justify-content:center;width:7.375rem}.Homepage-search--symbol .go-Button{display:none}@media only screen and (min-width: 30rem){.Homepage-search--symbol .go-Input{border-bottom-right-radius:0;border-top-right-radius:0}.Homepage-search--symbol .go-Button{display:inline-flex}}.Homepage-closeIcon{background:var(--color-input);border-bottom:var(--border);border-color:var(--color-brand-primary);border-left:0;border-top:var(--border);color:var(--color-button);cursor:pointer;display:inline-block;font-weight:700;padding-left:.5rem;padding-right:.5rem}.Homepage-closeIcon:hover,.Homepage-closeIcon:focus,.Homepage-closeIcon:focus-within,.Homepage-closeIcon:active{border-left:0!important}.Homepage-search--input:hover,.Homepage-search--input:focus,.Homepage-search--input:focus-within,.Homepage-search--input:active{border-right:0!important}input[type=search]::-webkit-search-decoration{display:none}.Homepage-tips{margin:auto;max-width:45.0625rem;width:100%}[data-local=true] .Homepage-tips{display:none}.Homepage-examples{align-items:center;display:flex;flex-direction:column;font-size:.875rem;gap:.5rem 1rem;justify-content:space-between;margin:0 auto;max-width:45.0625rem;white-space:nowrap;width:inherit}@media only screen and (min-width: 52rem){.Homepage-examples{flex-direction:row}}.Homepage-examplesTitle{color:var(--color-text-subtle);font-weight:500;text-transform:uppercase}.Homepage-examplesList{display:flex;flex-grow:1;flex-wrap:wrap;gap:.5rem 2rem}a.Homepage-helpLink{align-items:center;display:inline-flex;font-size:1em;font-weight:initial;margin-left:.5rem;white-space:nowrap}.Homepage-helpLink img{height:1rem;margin-left:.25rem;position:relative;top:.1875rem;width:1rem}.Homepage-modules{margin:auto;max-width:45.0625rem;width:100%}.Homepage-modules-header{color:var(--color-text);font-weight:700}.Homepage-modules ul{list-style:circle;padding:0 1.5rem}.Homepage-modules ul>li{font-size:1rem;line-height:1.75rem}.Questions{background:var(--color-background-accented);color:var(--color-text);display:flex;padding-bottom:1rem;padding-top:.5rem}.Questions-header{color:var(--color-text);font-weight:700;margin:1rem 0}.Questions-content{flex-grow:1;margin:0 auto;max-width:75.75rem;padding:0 1.5rem}.Questions-content a{color:var(--color-bright-text-link)}.Questions-content ul{list-style:none;padding-inline-start:0}.Questions-content ul>li{font-size:.875rem;line-height:1.75rem}
+.go-SearchForm{display:none}.Homepage-logo{border-radius:var(--border-radius);display:block;height:10rem;margin:3.125rem auto;width:auto}[data-theme=dark] .Homepage-logo{mix-blend-mode:difference}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .Homepage-logo{mix-blend-mode:difference}}@media only screen and (min-width: 52rem){.Homepage{margin:2rem auto}.Homepage-logo{margin:3.5rem auto}}.Homepage-search{--border-radius: .5rem;height:3rem;margin:2.5rem auto 0;max-width:45.0625rem;position:relative;width:100%}.Homepage-search:before{background:url(/static/shared/icon/search_gm_grey_24dp.svg) left no-repeat;content:"";height:3rem;left:.75rem;position:absolute;width:1.5rem;z-index:3}.Homepage-search .go-Select,.Homepage-search .go-Input{padding-left:2.5rem}.Homepage-search--symbol .go-Input{border-bottom-right-radius:var(--border-radius);border-top-right-radius:var(--border-radius);padding-left:2.5rem}.Homepage-search .go-Button{justify-content:center;width:7.375rem}.Homepage-search--symbol .go-Button{display:none}@media only screen and (min-width: 30rem){.Homepage-search--symbol .go-Input{border-bottom-right-radius:0;border-top-right-radius:0}.Homepage-search--symbol .go-Button{display:inline-flex}}.Homepage-closeIcon{background:var(--color-input);border-bottom:var(--border);border-color:var(--color-brand-primary);border-left:0;border-top:var(--border);color:var(--color-button);cursor:pointer;display:inline-block;font-weight:700;padding-left:.5rem;padding-right:.5rem}.Homepage-closeIcon:hover,.Homepage-closeIcon:focus,.Homepage-closeIcon:focus-within,.Homepage-closeIcon:active{border-left:0!important}.Homepage-search--input:hover,.Homepage-search--input:focus,.Homepage-search--input:focus-within,.Homepage-search--input:active{border-right:0!important}input[type=search]::-webkit-search-decoration{display:none}.Homepage-tips{margin:auto;max-width:45.0625rem;width:100%}[data-local=true] .Homepage-tips{display:none}.Homepage-examples{align-items:center;display:flex;flex-direction:column;font-size:.875rem;gap:.5rem 1rem;justify-content:space-between;margin:0 auto;max-width:45.0625rem;white-space:nowrap;width:inherit}@media only screen and (min-width: 52rem){.Homepage-examples{flex-direction:row}}.Homepage-examplesTitle{color:var(--color-text-subtle);font-weight:500;text-transform:uppercase}.Homepage-examplesList{display:flex;flex-grow:1;flex-wrap:wrap;gap:.5rem 2rem}a.Homepage-helpLink{align-items:center;display:inline-flex;font-size:1em;font-weight:initial;margin-left:.5rem;white-space:nowrap}.Homepage-helpLink img{height:1rem;margin-left:.25rem;position:relative;top:.1875rem;width:1rem}.Homepage-modules{margin:auto;max-width:45.0625rem;width:100%}.Homepage-modules-header{color:var(--color-text);font-weight:700}.Homepage-modules ul{list-style:circle;padding:0 1.5rem}.Homepage-modules ul>li{font-size:1rem;line-height:1.75rem}.Questions{background:var(--color-background-accented);color:var(--color-text);display:flex;padding-bottom:1rem;padding-top:.5rem}.Questions-header{color:var(--color-text);font-weight:700;margin:1rem 0}.Questions-content{flex-grow:1;margin:0 auto;max-width:75.75rem;padding:0 1.5rem}.Questions-content a{color:var(--color-bright-text-link)}.Questions-content ul{list-style:none;padding-inline-start:0}.Questions-content ul>li{font-size:.875rem;line-height:1.75rem}
 /*!
  * Copyright 2020 The Go Authors. All rights reserved.
  * Use of this source code is governed by a BSD-style
diff --git a/static/frontend/homepage/homepage.min.css.map b/static/frontend/homepage/homepage.min.css.map
index 35a0605..2ac924b 100644
--- a/static/frontend/homepage/homepage.min.css.map
+++ b/static/frontend/homepage/homepage.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["homepage.css"],
   "sourcesContent": ["/*!\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/* Hide the search form in the header. */\n.go-SearchForm {\n  display: none;\n}\n\n.Homepage-logo {\n  border-radius: var(--border-radius);\n  display: block;\n  height: 10rem;\n  margin: 3.125rem auto;\n  width: auto;\n}\n\n[data-theme='dark'] .Homepage-logo {\n  mix-blend-mode: difference;\n}\n@media (prefers-color-scheme: dark) {\n  :root:not([data-theme='light']) .Homepage-logo {\n    mix-blend-mode: difference;\n  }\n}\n@media only screen and (min-width: 52rem) {\n  .Homepage {\n    margin: 2rem auto;\n  }\n\n  .Homepage-logo {\n    margin: 3.5rem auto;\n  }\n}\n\n.Homepage-search {\n  --border-radius: 0.5rem;\n\n  height: 3rem;\n  margin: 2.5rem auto 0;\n  max-width: 45.0625rem;\n  position: relative;\n  width: 100%;\n}\n\n.Homepage-search::before {\n  background: url('/static/shared/icon/search_gm_grey_24dp.svg') left no-repeat;\n  content: '';\n  height: 3rem;\n  left: 0.75rem;\n  position: absolute;\n  width: 1.5rem;\n  z-index: 3;\n}\n\n.Homepage-search .go-Select {\n  padding-left: 2.5rem;\n}\n\n.Homepage-search .go-Input {\n  padding-left: 2.5rem;\n}\n\n.Homepage-search--symbol .go-Input {\n  border-bottom-right-radius: var(--border-radius);\n  border-top-right-radius: var(--border-radius);\n  padding-left: 2.5rem;\n}\n\n.Homepage-search .go-Button {\n  justify-content: center;\n  width: 7.375rem;\n}\n\n.Homepage-search--symbol .go-Button {\n  display: none;\n}\n@media only screen and (min-width: 30rem) {\n  .Homepage-search--symbol .go-Input {\n    border-bottom-right-radius: 0;\n    border-top-right-radius: 0;\n  }\n\n  .Homepage-search--symbol .go-Button {\n    display: inline-flex;\n  }\n}\n\n.Homepage-closeIcon {\n  background: var(--color-input);\n  border-bottom: var(--border);\n  border-color: var(--color-brand-primary);\n  border-left: 0;\n  border-top: var(--border);\n  color: var(--color-button);\n  cursor: pointer;\n  display: inline-block;\n  font-weight: bold;\n  padding-left: 0.5rem;\n  padding-right: 0.5rem;\n}\n\n.Homepage-closeIcon:hover,\n.Homepage-closeIcon:focus,\n.Homepage-closeIcon:focus-within,\n.Homepage-closeIcon:active {\n  border-left: 0 !important;\n}\n\n.Homepage-search--input:hover,\n.Homepage-search--input:focus,\n.Homepage-search--input:focus-within,\n.Homepage-search--input:active {\n  border-right: 0 !important;\n}\n\ninput[type='search']::-webkit-search-decoration {\n  display: none;\n}\n\n.Homepage-tips {\n  margin: auto;\n  max-width: 45.0625rem;\n  width: 100%;\n}\n\n[data-local='true'] .Homepage-tips {\n  display: none;\n}\n\n.Homepage-examples {\n  align-items: center;\n  display: flex;\n  flex-direction: column;\n  font-size: 0.875rem;\n  gap: 0.5rem 1rem;\n  justify-content: space-between;\n  margin: 0 auto;\n  max-width: 45.0625rem;\n  white-space: nowrap;\n  width: inherit;\n}\n@media only screen and (min-width: 52rem) {\n  .Homepage-examples {\n    flex-direction: row;\n  }\n}\n\n.Homepage-examplesTitle {\n  color: var(--color-text-subtle);\n  font-weight: 500;\n  text-transform: uppercase;\n}\n\n.Homepage-examplesList {\n  display: flex;\n  flex-grow: 1;\n  flex-wrap: wrap;\n  gap: 0.5rem 2rem;\n}\n\na.Homepage-helpLink {\n  align-items: center;\n  display: inline-flex;\n  font-size: 1em;\n  font-weight: initial;\n  margin-left: 0.5rem;\n  white-space: nowrap;\n}\n\n.Homepage-helpLink img {\n  height: 1rem;\n  margin-left: 0.25rem;\n  position: relative;\n  top: 0.1875rem;\n  width: 1rem;\n}\n\n.Homepage-modules {\n  margin: auto;\n  max-width: 45.0625rem;\n  width: 100%;\n}\n\n.Homepage-modules-header {\n  color: var(--color-text);\n  font-weight: bold;\n}\n\n.Homepage-modules ul {\n  list-style: circle;\n  padding: 0 1.5rem;\n}\n\n.Homepage-modules ul > li {\n  font-size: 1rem;\n  line-height: 1.75rem;\n}\n\n.Questions {\n  background: var(--color-background-accented);\n  color: var(--color-text);\n  display: flex;\n  padding-bottom: 1rem;\n  padding-top: 0.5rem;\n}\n\n.Questions-header {\n  color: var(--color-text);\n  font-weight: bold;\n  margin: 1rem 0;\n}\n\n.Questions-content {\n  flex-grow: 1;\n  margin: 0 auto;\n  max-width: 75.75rem;\n  padding: 0 1.5rem;\n}\n\n.Questions-content a {\n  color: var(--color-bright-text-link);\n}\n\n.Questions-content ul {\n  list-style: none;\n  padding-inline-start: 0;\n}\n\n.Questions-content ul > li {\n  font-size: 0.875rem;\n  line-height: 1.75rem;\n}\n"],
-  "mappings": "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",
+  "mappings": ";;;;;AAOA,eACE,aAGF,eACE,mCACA,cACA,aAdF,qBAgBE,WAGF,iCACE,0BAEF,oCACE,+CACE,2BAGJ,0CACE,UA5BF,iBAgCE,eAhCF,oBAqCA,iBACE,uBAEA,YAxCF,qBA0CE,qBACA,kBACA,WAGF,wBACE,2EACA,WACA,YACA,YACA,kBACA,aACA,UAGF,uDACE,oBAOF,mCACE,gDACA,6CACA,oBAGF,4BACE,uBACA,eAGF,oCACE,aAEF,0CACE,mCACE,6BACA,0BAGF,oCACE,qBAIJ,oBACE,8BACA,4BACA,wCACA,cACA,yBACA,0BACA,eACA,qBACA,gBACA,mBACA,oBAGF,gHAIE,wBAGF,gIAIE,yBAGF,8CACE,aAGF,eA1HA,YA4HE,qBACA,WAGF,iCACE,aAGF,mBACE,mBACA,aACA,sBACA,kBACA,eACA,8BA1IF,cA4IE,qBACA,mBACA,cAEF,0CACE,mBACE,oBAIJ,wBACE,+BACA,gBACA,yBAGF,uBACE,aACA,YACA,eACA,eAGF,oBACE,mBACA,oBACA,cACA,oBACA,kBACA,mBAGF,uBACE,YACA,mBACA,kBACA,aACA,WAGF,kBApLA,YAsLE,qBACA,WAGF,yBACE,wBACA,gBAGF,qBACE,kBAhMF,iBAoMA,wBACE,eACA,oBAGF,WACE,4CACA,wBACA,aACA,oBACA,kBAGF,kBACE,wBACA,gBAnNF,cAuNA,mBACE,YAxNF,cA0NE,mBA1NF,iBA8NA,qBACE,oCAGF,sBACE,gBACA,uBAGF,yBACE,kBACA",
   "names": []
 }
diff --git a/static/frontend/search-help/search-help.min.css.map b/static/frontend/search-help/search-help.min.css.map
index 8c59305..6bfed81 100644
--- a/static/frontend/search-help/search-help.min.css.map
+++ b/static/frontend/search-help/search-help.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["search-help.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.SearchHelp-list {\n  line-height: 1.5rem;\n  list-style: disc;\n  padding-left: 1.5rem;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,gBACC,YAAa,OACb,WAAY,KACZ,aAAc,MAChB",
+  "mappings": ";;;;;AAMA,iBACE,mBACA,gBACA",
   "names": []
 }
diff --git a/static/frontend/search/search.css b/static/frontend/search/search.css
index f961422..0f18255 100644
--- a/static/frontend/search/search.css
+++ b/static/frontend/search/search.css
@@ -93,10 +93,7 @@
   color: var(--color-text-subtle);
   display: flex;
   flex-direction: column;
-  gap: 1rem;
-  justify-content: space-between;
-  line-height: 1.5rem;
-  margin: -0.25rem 0 0.25rem;
+  gap: 0.3rem;
 }
 @media only screen and (min-width: 64rem) {
   .SearchResults-summary {
@@ -105,11 +102,6 @@
   }
 }
 
-.SearchResults-summary h1 {
-  font-size: inherit;
-  font-weight: inherit;
-}
-
 .SearchResults-emptyContentMessage {
   text-align: center;
 }
diff --git a/static/frontend/search/search.js b/static/frontend/search/search.js
index 7f4bdb8..34ab314 100644
--- a/static/frontend/search/search.js
+++ b/static/frontend/search/search.js
@@ -1,4 +1,4 @@
-var s=document.querySelector(".js-siteHeader"),o=document.createElement("div");s?.prepend(o);var c=new IntersectionObserver(([t])=>{if(t.intersectionRatio<1)for(let e of document.querySelectorAll('[class^="SearchResults-header"'))e.setAttribute("data-fixed","true");else for(let e of document.querySelectorAll('[class^="SearchResults-header"'))e.removeAttribute("data-fixed")},{threshold:1,rootMargin:`${3.5*16*3}px`});c.observe(o);var r=document.querySelector(".js-searchHeader");r?.addEventListener("dblclick",t=>{let e=t.target;(e===r||e===r.lastElementChild)&&(window.getSelection()?.removeAllRanges(),window.scrollTo({top:0,behavior:"smooth"}))});
+var o=document.querySelector(".js-siteHeader"),n=document.createElement("div");o==null||o.prepend(n);var c=new IntersectionObserver(([r])=>{if(r.intersectionRatio<1)for(let e of document.querySelectorAll('[class^="SearchResults-header"'))e.setAttribute("data-fixed","true");else for(let e of document.querySelectorAll('[class^="SearchResults-header"'))e.removeAttribute("data-fixed")},{threshold:1,rootMargin:`${3.5*16*3}px`});c.observe(n);var t=document.querySelector(".js-searchHeader");t==null||t.addEventListener("dblclick",r=>{var s;let e=r.target;(e===t||e===t.lastElementChild)&&((s=window.getSelection())==null||s.removeAllRanges(),window.scrollTo({top:0,behavior:"smooth"}))});
 /**
  * @license
  * Copyright 2020 The Go Authors. All rights reserved.
diff --git a/static/frontend/search/search.js.map b/static/frontend/search/search.js.map
index fcc2363..113ad5a 100644
--- a/static/frontend/search/search.js.map
+++ b/static/frontend/search/search.js.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["search.ts"],
   "sourcesContent": ["/**\n * @license\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nconst headerHeight = 3.5;\n\n// Append a div above the site header to use for the sticky header transition.\nconst siteHeader = document.querySelector('.js-siteHeader');\nconst headerSentinel = document.createElement('div');\nsiteHeader?.prepend(headerSentinel);\n\n/**\n * headerObserver watches the headerSentinel. When the headerSentinel is out of view a\n * callback function transitions the search results header in to the sticky position.\n */\nconst headerObserver = new IntersectionObserver(\n  ([e]) => {\n    if (e.intersectionRatio < 1) {\n      for (const x of document.querySelectorAll('[class^=\"SearchResults-header\"')) {\n        x.setAttribute('data-fixed', 'true');\n      }\n    } else {\n      for (const x of document.querySelectorAll('[class^=\"SearchResults-header\"')) {\n        x.removeAttribute('data-fixed');\n      }\n    }\n  },\n  { threshold: 1, rootMargin: `${headerHeight * 16 * 3}px` }\n);\nheaderObserver.observe(headerSentinel);\n\n// Add an event listener to scroll to the top of the page when the whitespace on the\n// header is double clicked.\nconst searchHeader = document.querySelector('.js-searchHeader');\nsearchHeader?.addEventListener('dblclick', e => {\n  const target = e.target;\n  if (target === searchHeader || target === searchHeader.lastElementChild) {\n    window.getSelection()?.removeAllRanges();\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n  }\n});\n\nexport {};\n"],
-  "mappings": "AAUA,IAAMA,EAAa,SAAS,cAAc,gBAAgB,EACpDC,EAAiB,SAAS,cAAc,KAAK,EACnDD,GAAY,QAAQC,CAAc,EAMlC,IAAMC,EAAiB,IAAI,qBACzB,CAAC,CAACC,CAAC,IAAM,CACP,GAAIA,EAAE,kBAAoB,EACxB,QAAWC,KAAK,SAAS,iBAAiB,gCAAgC,EACxEA,EAAE,aAAa,aAAc,MAAM,MAGrC,SAAWA,KAAK,SAAS,iBAAiB,gCAAgC,EACxEA,EAAE,gBAAgB,YAAY,CAGpC,EACA,CAAE,UAAW,EAAG,WAAY,GAAG,IAAe,GAAK,CAAC,IAAK,CAC3D,EACAF,EAAe,QAAQD,CAAc,EAIrC,IAAMI,EAAe,SAAS,cAAc,kBAAkB,EAC9DA,GAAc,iBAAiB,WAAYF,GAAK,CAC9C,IAAMG,EAASH,EAAE,QACbG,IAAWD,GAAgBC,IAAWD,EAAa,oBACrD,OAAO,aAAa,GAAG,gBAAgB,EACvC,OAAO,SAAS,CAAE,IAAK,EAAG,SAAU,QAAS,CAAC,EAElD,CAAC",
-  "names": ["siteHeader", "headerSentinel", "headerObserver", "e", "x", "searchHeader", "target"]
+  "mappings": "AAUA,IAAMA,EAAa,SAAS,cAAc,gBAAgB,EACpDC,EAAiB,SAAS,cAAc,KAAK,EACnDD,GAAA,MAAAA,EAAY,QAAQC,GAMpB,IAAMC,EAAiB,IAAI,qBACzB,CAAC,CAACC,CAAC,IAAM,CACP,GAAIA,EAAE,kBAAoB,EACxB,QAAWC,KAAK,SAAS,iBAAiB,gCAAgC,EACxEA,EAAE,aAAa,aAAc,MAAM,MAGrC,SAAWA,KAAK,SAAS,iBAAiB,gCAAgC,EACxEA,EAAE,gBAAgB,YAAY,CAGpC,EACA,CAAE,UAAW,EAAG,WAAY,GAAG,IAAe,GAAK,KAAM,CAC3D,EACAF,EAAe,QAAQD,CAAc,EAIrC,IAAMI,EAAe,SAAS,cAAc,kBAAkB,EAC9DA,GAAA,MAAAA,EAAc,iBAAiB,WAAYF,GAAK,CArChD,IAAAG,EAsCE,IAAMC,EAASJ,EAAE,QACbI,IAAWF,GAAgBE,IAAWF,EAAa,qBACrDC,EAAA,OAAO,aAAa,IAApB,MAAAA,EAAuB,kBACvB,OAAO,SAAS,CAAE,IAAK,EAAG,SAAU,QAAS,CAAC,EAElD",
+  "names": ["siteHeader", "headerSentinel", "headerObserver", "e", "x", "searchHeader", "_a", "target"]
 }
diff --git a/static/frontend/search/search.min.css b/static/frontend/search/search.min.css
index 7cbe498..295d67f 100644
--- a/static/frontend/search/search.min.css
+++ b/static/frontend/search/search.min.css
@@ -3,5 +3,5 @@
  * Use of this source code is governed by a BSD-style
  * license that can be found in the LICENSE file.
  */
-.go-SearchForm{display:none}.SearchSnippet-sub .go-Chip:hover{background-color:var(--color-background-highlighted)}.SearchResults{font-size:.875rem;padding-top:.75rem}.SearchResults-header{margin:.5rem 0 0}.SearchResults-header[data-fixed]{background-color:var(--color-background-accented);border-bottom:var(--border);height:3.5rem;position:sticky;top:0}.SearchResults-headerContent{align-items:center;display:flex;gap:.5rem;height:100%;margin:auto;max-width:63rem;padding:.5rem var(--gutter)}.SearchResults-headerLogo{--logo-height: 1.75rem;--logo-width: calc(var(--logo-height) / .3768);align-items:center;display:flex;margin-right:-.5rem;opacity:0;transition:opacity .25s ease-in-out,width .25s ease-out;visibility:hidden;width:0}.SearchResults-headerLogo[data-fixed]{margin-right:.5rem;opacity:1;visibility:visible;width:var(--logo-width)}.SearchResults-headerLogo img{height:var(--logo-height);margin:-1rem 0;width:var(--logo-width)}.SearchResults-search{flex-grow:1;max-width:31.5rem}.SearchResults-search:after{right:2.75rem}.SearchResults-tabs{border-bottom:var(--border)}[data-local=true] .SearchResults-tabs{display:none}.SearchResults-tabs nav{margin:auto;max-width:63rem;padding:0 var(--gutter)}.SearchResults-summary{color:var(--color-text-subtle);display:flex;flex-direction:column;gap:1rem;justify-content:space-between;line-height:1.5rem;margin:-.25rem 0 .25rem}@media only screen and (min-width: 64rem){.SearchResults-summary{align-items:baseline;flex-direction:row}}.SearchResults-summary h1{font-size:inherit;font-weight:inherit}.SearchResults-emptyContentMessage{text-align:center}.SearchResults-divider{margin-bottom:2.5rem}.SearchSnippet{display:flex;flex-direction:column;gap:.375rem;padding:0 0 2.75rem}.SearchSnippet h2{font-size:1.25rem;font-weight:400}.SearchSnippet:last-of-type{padding:0 0 1rem}.SearchSnippet-synopsis{-webkit-box-orient:vertical;display:box;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.SearchSnippet-infoLabel{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-top:-.0625rem}.SearchSnippet-sub{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.SearchSnippet-symbolCode{font-size:.75rem;margin:.25rem 0}.SearchSnippet-sub a[data-hidden]{display:none}.SearchSnippet-sub a{color:var(--color-text-subtle)}.SearchSnippet-sub a:hover{color:var(--color-brand-primary)}.SearchSnippet-headerContainer{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.SearchSnippet-header-path{color:var(--color-text-subtle)}.SearchSnippet-symbolKind{color:var(--color-text)}.SearchPagination{height:1.5rem}
+.go-SearchForm{display:none}.SearchSnippet-sub .go-Chip:hover{background-color:var(--color-background-highlighted)}.SearchResults{font-size:.875rem;padding-top:.75rem}.SearchResults-header{margin:.5rem 0 0}.SearchResults-header[data-fixed]{background-color:var(--color-background-accented);border-bottom:var(--border);height:3.5rem;position:sticky;top:0}.SearchResults-headerContent{align-items:center;display:flex;gap:.5rem;height:100%;margin:auto;max-width:63rem;padding:.5rem var(--gutter)}.SearchResults-headerLogo{--logo-height: 1.75rem;--logo-width: calc(var(--logo-height) / .3768);align-items:center;display:flex;margin-right:-.5rem;opacity:0;transition:opacity .25s ease-in-out,width .25s ease-out;visibility:hidden;width:0}.SearchResults-headerLogo[data-fixed]{margin-right:.5rem;opacity:1;visibility:visible;width:var(--logo-width)}.SearchResults-headerLogo img{height:var(--logo-height);margin:-1rem 0;width:var(--logo-width)}.SearchResults-search{flex-grow:1;max-width:31.5rem}.SearchResults-search:after{right:2.75rem}.SearchResults-tabs{border-bottom:var(--border)}[data-local=true] .SearchResults-tabs{display:none}.SearchResults-tabs nav{margin:auto;max-width:63rem;padding:0 var(--gutter)}.SearchResults-summary{color:var(--color-text-subtle);display:flex;flex-direction:column;gap:.3rem}@media only screen and (min-width: 64rem){.SearchResults-summary{align-items:baseline;flex-direction:row}}.SearchResults-emptyContentMessage{text-align:center}.SearchResults-divider{margin-bottom:2.5rem}.SearchSnippet{display:flex;flex-direction:column;gap:.375rem;padding:0 0 2.75rem}.SearchSnippet h2{font-size:1.25rem;font-weight:400}.SearchSnippet:last-of-type{padding:0 0 1rem}.SearchSnippet-synopsis{-webkit-box-orient:vertical;display:box;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.SearchSnippet-infoLabel{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-top:-.0625rem}.SearchSnippet-sub{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.SearchSnippet-symbolCode{font-size:.75rem;margin:.25rem 0}.SearchSnippet-sub a[data-hidden]{display:none}.SearchSnippet-sub a{color:var(--color-text-subtle)}.SearchSnippet-sub a:hover{color:var(--color-brand-primary)}.SearchSnippet-headerContainer{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.SearchSnippet-header-path{color:var(--color-text-subtle)}.SearchSnippet-symbolKind{color:var(--color-text)}.SearchPagination{height:1.5rem}
 /*# sourceMappingURL=search.min.css.map */
diff --git a/static/frontend/search/search.min.css.map b/static/frontend/search/search.min.css.map
index 22b7c1f..7c4e757 100644
--- a/static/frontend/search/search.min.css.map
+++ b/static/frontend/search/search.min.css.map
@@ -1,7 +1,7 @@
 {
   "version": 3,
   "sources": ["search.css"],
-  "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/* Hide the search form in the header. */\n.go-SearchForm {\n  display: none;\n}\n\n.SearchSnippet-sub .go-Chip:hover {\n  background-color: var(--color-background-highlighted);\n}\n\n.SearchResults {\n  font-size: 0.875rem;\n  padding-top: 0.75rem;\n}\n\n.SearchResults-header {\n  margin: 0.5rem 0 0;\n}\n\n.SearchResults-header[data-fixed] {\n  background-color: var(--color-background-accented);\n  border-bottom: var(--border);\n  height: 3.5rem;\n  position: sticky;\n  top: 0;\n}\n\n.SearchResults-headerContent {\n  align-items: center;\n  display: flex;\n  gap: 0.5rem;\n  height: 100%;\n  margin: auto;\n  max-width: 63rem;\n  padding: 0.5rem var(--gutter);\n}\n\n.SearchResults-headerLogo {\n  --logo-height: 1.75rem;\n  --logo-width: calc(var(--logo-height) / 0.3768);\n\n  align-items: center;\n  display: flex;\n  margin-right: -0.5rem;\n  opacity: 0;\n  transition: opacity 0.25s ease-in-out, width 0.25s ease-out;\n  visibility: hidden;\n  width: 0;\n}\n\n.SearchResults-headerLogo[data-fixed] {\n  margin-right: 0.5rem;\n  opacity: 1;\n  visibility: visible;\n  width: var(--logo-width);\n}\n\n.SearchResults-headerLogo img {\n  height: var(--logo-height);\n  margin: -1rem 0;\n  width: var(--logo-width);\n}\n\n.SearchResults-search {\n  flex-grow: 1;\n  max-width: 31.5rem;\n}\n\n.SearchResults-search::after {\n  right: 2.75rem;\n}\n\n.SearchResults-tabs {\n  border-bottom: var(--border);\n}\n\n[data-local='true'] .SearchResults-tabs {\n  display: none;\n}\n\n.SearchResults-tabs nav {\n  margin: auto;\n  max-width: 63rem;\n  padding: 0 var(--gutter);\n}\n\n.SearchResults-summary {\n  color: var(--color-text-subtle);\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n  justify-content: space-between;\n  line-height: 1.5rem;\n  margin: -0.25rem 0 0.25rem;\n}\n@media only screen and (min-width: 64rem) {\n  .SearchResults-summary {\n    align-items: baseline;\n    flex-direction: row;\n  }\n}\n\n.SearchResults-summary h1 {\n  font-size: inherit;\n  font-weight: inherit;\n}\n\n.SearchResults-emptyContentMessage {\n  text-align: center;\n}\n\n.SearchResults-divider {\n  margin-bottom: 2.5rem;\n}\n\n.SearchSnippet {\n  display: flex;\n  flex-direction: column;\n  gap: 0.375rem;\n  padding: 0 0 2.75rem;\n}\n\n.SearchSnippet h2 {\n  font-size: 1.25rem;\n  font-weight: 400;\n}\n\n.SearchSnippet:last-of-type {\n  padding: 0 0 1rem;\n}\n\n.SearchSnippet-synopsis {\n  -webkit-box-orient: vertical;\n  display: box;\n  -webkit-line-clamp: 2;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.SearchSnippet-infoLabel {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem 1rem;\n  margin-top: -0.0625rem;\n}\n\n.SearchSnippet-sub {\n  align-items: center;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n}\n\n.SearchSnippet-symbolCode {\n  font-size: 0.75rem;\n  margin: 0.25rem 0;\n}\n\n.SearchSnippet-sub a[data-hidden] {\n  display: none;\n}\n\n.SearchSnippet-sub a {\n  color: var(--color-text-subtle);\n}\n\n.SearchSnippet-sub a:hover {\n  color: var(--color-brand-primary);\n}\n\n.SearchSnippet-headerContainer {\n  align-items: center;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n}\n\n.SearchSnippet-header-path {\n  color: var(--color-text-subtle);\n}\n\n.SearchSnippet-symbolKind {\n  color: var(--color-text);\n}\n\n.SearchPagination {\n  height: 1.5rem;\n}\n"],
-  "mappings": ";;;;;AAOA,CAAC,cACC,QAAS,IACX,CAEA,CAAC,kBAAkB,CAAC,OAAO,OACzB,iBAAkB,IAAI,+BACxB,CAEA,CAAC,cACC,UAAW,QACX,YAAa,MACf,CAEA,CAAC,qBApBD,OAqBU,MAAO,EAAE,CACnB,CAEA,CAJC,oBAIoB,CAAC,YACpB,iBAAkB,IAAI,6BACtB,cAAe,IAAI,UACnB,OAAQ,OACR,SAAU,OACV,IAAK,CACP,CAEA,CAAC,4BACC,YAAa,OACb,QAAS,KACT,IAAK,MACL,OAAQ,KApCV,OAqCU,KACR,UAAW,MACX,QAAS,MAAO,IAAI,SACtB,CAEA,CAAC,yBACC,eAAe,QACf,cAAc,KAAK,IAAI,eAAe,EAAE,OAExC,YAAa,OACb,QAAS,KACT,aAAc,OACd,QAAS,EACT,WAAY,QAAQ,KAAM,WAAW,CAAE,MAAM,KAAM,SACnD,WAAY,OACZ,MAAO,CACT,CAEA,CAbC,wBAawB,CAAC,YACxB,aAAc,MACd,QAAS,EACT,WAAY,QACZ,MAAO,IAAI,aACb,CAEA,CApBC,yBAoByB,IACxB,OAAQ,IAAI,eA/Dd,OAgEU,MAAM,EACd,MAAO,IAAI,aACb,CAEA,CAAC,qBACC,UAAW,EACX,UAAW,OACb,CAEA,CALC,oBAKoB,OACnB,MAAO,OACT,CAEA,CAAC,mBACC,cAAe,IAAI,SACrB,CAEA,CAAC,iBAAmB,CAJnB,mBAKC,QAAS,IACX,CAEA,CARC,mBAQmB,IArFpB,OAsFU,KACR,UAAW,MACX,QAAS,EAAE,IAAI,SACjB,CAEA,CAAC,sBACC,MAAO,IAAI,qBACX,QAAS,KACT,eAAgB,OAChB,IAAK,KACL,gBAAiB,cACjB,YAAa,OAjGf,OAkGU,QAAS,EAAE,MACrB,CACA,OAAO,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,OACjC,CAVD,sBAWG,YAAa,SACb,eAAgB,GAClB,CACF,CAEA,CAhBC,sBAgBsB,GACrB,UAAW,QACX,YAAa,OACf,CAEA,CAAC,kCACC,WAAY,MACd,CAEA,CAAC,sBACC,cAAe,MACjB,CAEA,CAAC,cACC,QAAS,KACT,eAAgB,OAChB,IAAK,QA3HP,QA4HW,EAAE,EAAE,OACf,CAEA,CAPC,cAOc,GACb,UAAW,QACX,YAAa,GACf,CAEA,CAZC,aAYa,cApId,QAqIW,EAAE,EAAE,IACf,CAEA,CAAC,uBACC,mBAAoB,SACpB,QAAS,IACT,mBAAoB,EACpB,SAAU,OACV,cAAe,QACjB,CAEA,CAAC,wBACC,QAAS,KACT,UAAW,KACX,IAAK,MAAO,KACZ,WAAY,SACd,CAEA,CA5IC,kBA6IC,YAAa,OACb,QAAS,KACT,UAAW,KACX,IAAK,KACP,CAEA,CAAC,yBACC,UAAW,OA/Jb,OAgKU,OAAQ,CAClB,CAEA,CAxJC,kBAwJkB,CAAC,CAAC,aACnB,QAAS,IACX,CAEA,CA5JC,kBA4JkB,EACjB,MAAO,IAAI,oBACb,CAEA,CAhKC,kBAgKkB,CAAC,OAClB,MAAO,IAAI,sBACb,CAEA,CAAC,8BACC,YAAa,OACb,QAAS,KACT,UAAW,KACX,IAAK,KACP,CAEA,CAAC,0BACC,MAAO,IAAI,oBACb,CAEA,CAAC,yBACC,MAAO,IAAI,aACb,CAEA,CAAC,iBACC,OAAQ,MACV",
+  "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/* Hide the search form in the header. */\n.go-SearchForm {\n  display: none;\n}\n\n.SearchSnippet-sub .go-Chip:hover {\n  background-color: var(--color-background-highlighted);\n}\n\n.SearchResults {\n  font-size: 0.875rem;\n  padding-top: 0.75rem;\n}\n\n.SearchResults-header {\n  margin: 0.5rem 0 0;\n}\n\n.SearchResults-header[data-fixed] {\n  background-color: var(--color-background-accented);\n  border-bottom: var(--border);\n  height: 3.5rem;\n  position: sticky;\n  top: 0;\n}\n\n.SearchResults-headerContent {\n  align-items: center;\n  display: flex;\n  gap: 0.5rem;\n  height: 100%;\n  margin: auto;\n  max-width: 63rem;\n  padding: 0.5rem var(--gutter);\n}\n\n.SearchResults-headerLogo {\n  --logo-height: 1.75rem;\n  --logo-width: calc(var(--logo-height) / 0.3768);\n\n  align-items: center;\n  display: flex;\n  margin-right: -0.5rem;\n  opacity: 0;\n  transition: opacity 0.25s ease-in-out, width 0.25s ease-out;\n  visibility: hidden;\n  width: 0;\n}\n\n.SearchResults-headerLogo[data-fixed] {\n  margin-right: 0.5rem;\n  opacity: 1;\n  visibility: visible;\n  width: var(--logo-width);\n}\n\n.SearchResults-headerLogo img {\n  height: var(--logo-height);\n  margin: -1rem 0;\n  width: var(--logo-width);\n}\n\n.SearchResults-search {\n  flex-grow: 1;\n  max-width: 31.5rem;\n}\n\n.SearchResults-search::after {\n  right: 2.75rem;\n}\n\n.SearchResults-tabs {\n  border-bottom: var(--border);\n}\n\n[data-local='true'] .SearchResults-tabs {\n  display: none;\n}\n\n.SearchResults-tabs nav {\n  margin: auto;\n  max-width: 63rem;\n  padding: 0 var(--gutter);\n}\n\n.SearchResults-summary {\n  color: var(--color-text-subtle);\n  display: flex;\n  flex-direction: column;\n  gap: 0.3rem;\n}\n@media only screen and (min-width: 64rem) {\n  .SearchResults-summary {\n    align-items: baseline;\n    flex-direction: row;\n  }\n}\n\n.SearchResults-emptyContentMessage {\n  text-align: center;\n}\n\n.SearchResults-divider {\n  margin-bottom: 2.5rem;\n}\n\n.SearchSnippet {\n  display: flex;\n  flex-direction: column;\n  gap: 0.375rem;\n  padding: 0 0 2.75rem;\n}\n\n.SearchSnippet h2 {\n  font-size: 1.25rem;\n  font-weight: 400;\n}\n\n.SearchSnippet:last-of-type {\n  padding: 0 0 1rem;\n}\n\n.SearchSnippet-synopsis {\n  -webkit-box-orient: vertical;\n  display: box;\n  -webkit-line-clamp: 2;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.SearchSnippet-infoLabel {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem 1rem;\n  margin-top: -0.0625rem;\n}\n\n.SearchSnippet-sub {\n  align-items: center;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n}\n\n.SearchSnippet-symbolCode {\n  font-size: 0.75rem;\n  margin: 0.25rem 0;\n}\n\n.SearchSnippet-sub a[data-hidden] {\n  display: none;\n}\n\n.SearchSnippet-sub a {\n  color: var(--color-text-subtle);\n}\n\n.SearchSnippet-sub a:hover {\n  color: var(--color-brand-primary);\n}\n\n.SearchSnippet-headerContainer {\n  align-items: center;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n}\n\n.SearchSnippet-header-path {\n  color: var(--color-text-subtle);\n}\n\n.SearchSnippet-symbolKind {\n  color: var(--color-text);\n}\n\n.SearchPagination {\n  height: 1.5rem;\n}\n"],
+  "mappings": ";;;;;AAOA,eACE,aAGF,kCACE,qDAGF,eACE,kBACA,mBAGF,sBApBA,iBAwBA,kCACE,kDACA,4BACA,cACA,gBACA,MAGF,6BACE,mBACA,aACA,UACA,YApCF,YAsCE,gBACA,4BAGF,0BACE,uBACA,+CAEA,mBACA,aACA,oBACA,UACA,wDACA,kBACA,QAGF,sCACE,mBACA,UACA,mBACA,wBAGF,8BACE,0BA/DF,eAiEE,wBAGF,sBACE,YACA,kBAGF,4BACE,cAGF,oBACE,4BAGF,sCACE,aAGF,wBArFA,YAuFE,gBACA,wBAGF,uBACE,+BACA,aACA,sBACA,UAEF,0CACE,uBACE,qBACA,oBAIJ,mCACE,kBAGF,uBACE,qBAGF,eACE,aACA,sBACA,YAnHF,oBAuHA,kBACE,kBACA,gBAGF,4BA5HA,iBAgIA,wBACE,4BACA,YACA,qBACA,gBACA,uBAGF,yBACE,aACA,eACA,eACA,qBAGF,mBACE,mBACA,aACA,eACA,UAGF,0BACE,iBAvJF,gBA2JA,kCACE,aAGF,qBACE,+BAGF,2BACE,iCAGF,+BACE,mBACA,aACA,eACA,UAGF,2BACE,+BAGF,0BACE,wBAGF,kBACE",
   "names": []
 }
diff --git a/static/frontend/search/search.tmpl b/static/frontend/search/search.tmpl
index 1251ba3..235105b 100644
--- a/static/frontend/search/search.tmpl
+++ b/static/frontend/search/search.tmpl
@@ -40,11 +40,9 @@
 {{end}}
 
 {{define "search_symbol"}}
-  <div class="SearchResults-summary">
-    <h1>
+  <div class="SearchResults-summary" role="heading" aria-level="1">
       Showing <strong>{{len $.Results}}</strong> matching {{.SearchModeSymbol}}s.
       <a href="/search-help">Search help</a>
-    </h1>
   </div>
   {{if eq (len .Results) 0}}
     {{template "search_no_results" .}}
@@ -89,10 +87,8 @@
 {{end}}
 
 {{define "search_package"}}
-  <div class="SearchResults-summary">
-    <h1>
-      Showing <strong>{{len .Results}}</strong> modules with matching packages. <a href="/search-help">Search help</a>
-    </h1>
+  <div class="SearchResults-summary" role="heading" aria-level="1">
+    Showing <strong>{{len .Results}}</strong> modules with matching packages. <a href="/search-help">Search help</a>
   </div>
   {{if eq (len .Results) 0}}
     {{template "search_no_results" .}}
diff --git a/static/frontend/styleguide/styleguide.js b/static/frontend/styleguide/styleguide.js
index c27a51e..1f82f80 100644
--- a/static/frontend/styleguide/styleguide.js
+++ b/static/frontend/styleguide/styleguide.js
@@ -1,4 +1,4 @@
-var d=class{constructor(e){this.el=e;this.setActive=e=>{this.activeIndex=(e+this.slides.length)%this.slides.length,this.el.setAttribute("data-slide-index",String(this.activeIndex));for(let t of this.dots)t.classList.remove("go-Carousel-dot--active");this.dots[this.activeIndex].classList.add("go-Carousel-dot--active");for(let t of this.slides)t.setAttribute("aria-hidden","true");this.slides[this.activeIndex].removeAttribute("aria-hidden"),this.liveRegion.textContent="Slide "+(this.activeIndex+1)+" of "+this.slides.length};this.slides=Array.from(e.querySelectorAll(".go-Carousel-slide")),this.dots=[],this.liveRegion=document.createElement("div"),this.activeIndex=Number(e.getAttribute("data-slide-index")??0),this.initSlides(),this.initArrows(),this.initDots(),this.initLiveRegion()}initSlides(){for(let[e,t]of this.slides.entries())e!==this.activeIndex&&t.setAttribute("aria-hidden","true")}initArrows(){let e=document.createElement("ul");e.classList.add("go-Carousel-arrows"),e.innerHTML=`
+var h=class{constructor(e){this.el=e;this.setActive=e=>{this.activeIndex=(e+this.slides.length)%this.slides.length,this.el.setAttribute("data-slide-index",String(this.activeIndex));for(let t of this.dots)t.classList.remove("go-Carousel-dot--active");this.dots[this.activeIndex].classList.add("go-Carousel-dot--active");for(let t of this.slides)t.setAttribute("aria-hidden","true");this.slides[this.activeIndex].removeAttribute("aria-hidden"),this.liveRegion.textContent="Slide "+(this.activeIndex+1)+" of "+this.slides.length};var t;this.slides=Array.from(e.querySelectorAll(".go-Carousel-slide")),this.dots=[],this.liveRegion=document.createElement("div"),this.activeIndex=Number((t=e.getAttribute("data-slide-index"))!=null?t:0),this.initSlides(),this.initArrows(),this.initDots(),this.initLiveRegion()}initSlides(){for(let[e,t]of this.slides.entries())e!==this.activeIndex&&t.setAttribute("aria-hidden","true")}initArrows(){var t,i;let e=document.createElement("ul");e.classList.add("go-Carousel-arrows"),e.innerHTML=`
       <li>
         <button class="go-Carousel-prevSlide" aria-label="Go to previous slide">
           <img class="go-Icon" height="24" width="24" src="/static/shared/icon/arrow_left_gm_grey_24dp.svg" alt="">
@@ -9,21 +9,21 @@
           <img class="go-Icon" height="24" width="24" src="/static/shared/icon/arrow_right_gm_grey_24dp.svg" alt="">
         </button>
       </li>
-    `,e.querySelector(".go-Carousel-prevSlide")?.addEventListener("click",()=>this.setActive(this.activeIndex-1)),e.querySelector(".go-Carousel-nextSlide")?.addEventListener("click",()=>this.setActive(this.activeIndex+1)),this.el.append(e)}initDots(){let e=document.createElement("ul");e.classList.add("go-Carousel-dots");for(let t=0;t<this.slides.length;t++){let i=document.createElement("li"),s=document.createElement("button");s.classList.add("go-Carousel-dot"),t===this.activeIndex&&s.classList.add("go-Carousel-dot--active"),s.innerHTML=`<span class="go-Carousel-obscured">Slide ${t+1}</span>`,s.addEventListener("click",()=>this.setActive(t)),i.append(s),e.append(i),this.dots.push(s)}this.el.append(e)}initLiveRegion(){this.liveRegion.setAttribute("aria-live","polite"),this.liveRegion.setAttribute("aria-atomic","true"),this.liveRegion.setAttribute("class","go-Carousel-obscured"),this.liveRegion.textContent=`Slide ${this.activeIndex+1} of ${this.slides.length}`,this.el.appendChild(this.liveRegion)}};var c=class{constructor(e){this.el=e;this.el.addEventListener("change",t=>{let i=t.target,s=i.value;i.value.startsWith("/")||(s="/"+s),window.location.href=s})}};function h(r){let e=document.createElement("label");e.classList.add("go-Label"),e.setAttribute("aria-label","Menu");let t=document.createElement("select");t.classList.add("go-Select","js-selectNav"),e.appendChild(t);let i=document.createElement("optgroup");i.label="Outline",t.appendChild(i);let s={},l;for(let n of r.treeitems){if(Number(n.depth)>4)continue;n.groupTreeitem?(l=s[n.groupTreeitem.label],l||(l=s[n.groupTreeitem.label]=document.createElement("optgroup"),l.label=n.groupTreeitem.label,t.appendChild(l))):l=i;let a=document.createElement("option");a.label=n.label,a.textContent=n.label,a.value=n.el.href.replace(window.location.origin,"").replace("/",""),l.appendChild(a)}return r.addObserver(n=>{let a=n.el.hash,m=t.querySelector(`[value$="${a}"]`)?.value;m&&(t.value=m)},50),e}var o=class{constructor(e){this.el=e;this.handleResize=()=>{this.el.style.setProperty("--js-tree-height","100vh"),this.el.style.setProperty("--js-tree-height",this.el.clientHeight+"px")};this.treeitems=[],this.firstChars=[],this.firstTreeitem=null,this.lastTreeitem=null,this.observerCallbacks=[],this.init()}init(){this.handleResize(),window.addEventListener("resize",this.handleResize),this.findTreeItems(),this.updateVisibleTreeitems(),this.observeTargets(),this.firstTreeitem&&(this.firstTreeitem.el.tabIndex=0)}observeTargets(){this.addObserver(i=>{this.expandTreeitem(i),this.setSelected(i)});let e=new Map,t=new IntersectionObserver(i=>{for(let s of i)e.set(s.target.id,s.isIntersecting||s.intersectionRatio===1);for(let[s,l]of e)if(l){let n=this.treeitems.find(a=>a.el?.href.endsWith(`#${s}`));if(n)for(let a of this.observerCallbacks)a(n);break}},{threshold:1,rootMargin:"-60px 0px 0px 0px"});for(let i of this.treeitems.map(s=>s.el.getAttribute("href")))if(i){let s=i.replace(window.location.origin,"").replace("/","").replace("#",""),l=document.getElementById(s);l&&t.observe(l)}}addObserver(e,t=200){this.observerCallbacks.push(p(e,t))}setFocusToNextItem(e){let t=null;for(let i=e.index+1;i<this.treeitems.length;i++){let s=this.treeitems[i];if(s.isVisible){t=s;break}}t&&this.setFocusToItem(t)}setFocusToPreviousItem(e){let t=null;for(let i=e.index-1;i>-1;i--){let s=this.treeitems[i];if(s.isVisible){t=s;break}}t&&this.setFocusToItem(t)}setFocusToParentItem(e){e.groupTreeitem&&this.setFocusToItem(e.groupTreeitem)}setFocusToFirstItem(){this.firstTreeitem&&this.setFocusToItem(this.firstTreeitem)}setFocusToLastItem(){this.lastTreeitem&&this.setFocusToItem(this.lastTreeitem)}setSelected(e){for(let t of this.el.querySelectorAll('[aria-expanded="true"]'))t!==e.el&&(t.nextElementSibling?.contains(e.el)||t.setAttribute("aria-expanded","false"));for(let t of this.el.querySelectorAll("[aria-selected]"))t!==e.el&&t.setAttribute("aria-selected","false");e.el.setAttribute("aria-selected","true"),this.updateVisibleTreeitems(),this.setFocusToItem(e,!1)}expandTreeitem(e){let t=e;for(;t;)t.isExpandable&&t.el.setAttribute("aria-expanded","true"),t=t.groupTreeitem;this.updateVisibleTreeitems()}expandAllSiblingItems(e){for(let t of this.treeitems)t.groupTreeitem===e.groupTreeitem&&t.isExpandable&&this.expandTreeitem(t)}collapseTreeitem(e){let t=null;e.isExpanded()?t=e:t=e.groupTreeitem,t&&(t.el.setAttribute("aria-expanded","false"),this.updateVisibleTreeitems(),this.setFocusToItem(t))}setFocusByFirstCharacter(e,t){let i,s;t=t.toLowerCase(),i=e.index+1,i===this.treeitems.length&&(i=0),s=this.getIndexFirstChars(i,t),s===-1&&(s=this.getIndexFirstChars(0,t)),s>-1&&this.setFocusToItem(this.treeitems[s])}findTreeItems(){let e=(t,i)=>{let s=i,l=t.firstElementChild;for(;l;)(l.tagName==="A"||l.tagName==="SPAN")&&(s=new u(l,this,i),this.treeitems.push(s),this.firstChars.push(s.label.substring(0,1).toLowerCase())),l.firstElementChild&&e(l,s),l=l.nextElementSibling};e(this.el,null),this.treeitems.map((t,i)=>t.index=i)}updateVisibleTreeitems(){this.firstTreeitem=this.treeitems[0];for(let e of this.treeitems){let t=e.groupTreeitem;for(e.isVisible=!0;t&&t.el!==this.el;)t.isExpanded()||(e.isVisible=!1),t=t.groupTreeitem;e.isVisible&&(this.lastTreeitem=e)}}setFocusToItem(e,t=!0){e.el.tabIndex=0,t&&e.el.focus();for(let i of this.treeitems)i!==e&&(i.el.tabIndex=-1)}getIndexFirstChars(e,t){for(let i=e;i<this.firstChars.length;i++)if(this.treeitems[i].isVisible&&t===this.firstChars[i])return i;return-1}},u=class{constructor(e,t,i){e.tabIndex=-1,this.el=e,this.groupTreeitem=i,this.label=e.textContent?.trim()??"",this.tree=t,this.depth=(i?.depth||0)+1,this.index=0;let s=e.parentElement;s?.tagName.toLowerCase()==="li"&&s?.setAttribute("role","none"),e.setAttribute("aria-level",this.depth+""),e.getAttribute("aria-label")&&(this.label=e?.getAttribute("aria-label")?.trim()??""),this.isExpandable=!1,this.isVisible=!1,this.isInGroup=!!i;let l=e.nextElementSibling;for(;l;){if(l.tagName.toLowerCase()=="ul"){let n=`${i?.label??""} nav group ${this.label}`.replace(/[\W_]+/g,"_");e.setAttribute("aria-owns",n),e.setAttribute("aria-expanded","false"),l.setAttribute("role","group"),l.setAttribute("id",n),this.isExpandable=!0;break}l=l.nextElementSibling}this.init()}init(){this.el.tabIndex=-1,this.el.getAttribute("role")||this.el.setAttribute("role","treeitem"),this.el.addEventListener("keydown",this.handleKeydown.bind(this)),this.el.addEventListener("click",this.handleClick.bind(this)),this.el.addEventListener("focus",this.handleFocus.bind(this)),this.el.addEventListener("blur",this.handleBlur.bind(this))}isExpanded(){return this.isExpandable?this.el.getAttribute("aria-expanded")==="true":!1}isSelected(){return this.el.getAttribute("aria-selected")==="true"}handleClick(e){e.target!==this.el&&e.target!==this.el.firstElementChild||(this.isExpandable&&(this.isExpanded()&&this.isSelected()?this.tree.collapseTreeitem(this):this.tree.expandTreeitem(this),e.stopPropagation()),this.tree.setSelected(this))}handleFocus(){let e=this.el;this.isExpandable&&(e=e.firstElementChild??e),e.classList.add("focus")}handleBlur(){let e=this.el;this.isExpandable&&(e=e.firstElementChild??e),e.classList.remove("focus")}handleKeydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=!1;switch(e.key){case" ":case"Enter":this.isExpandable?(this.isExpanded()&&this.isSelected()?this.tree.collapseTreeitem(this):this.tree.expandTreeitem(this),t=!0):e.stopPropagation(),this.tree.setSelected(this);break;case"ArrowUp":this.tree.setFocusToPreviousItem(this),t=!0;break;case"ArrowDown":this.tree.setFocusToNextItem(this),t=!0;break;case"ArrowRight":this.isExpandable&&(this.isExpanded()?this.tree.setFocusToNextItem(this):this.tree.expandTreeitem(this)),t=!0;break;case"ArrowLeft":this.isExpandable&&this.isExpanded()?(this.tree.collapseTreeitem(this),t=!0):this.isInGroup&&(this.tree.setFocusToParentItem(this),t=!0);break;case"Home":this.tree.setFocusToFirstItem(),t=!0;break;case"End":this.tree.setFocusToLastItem(),t=!0;break;default:e.key.length===1&&e.key.match(/\S/)&&(e.key=="*"?this.tree.expandAllSiblingItems(this):this.tree.setFocusByFirstCharacter(this,e.key),t=!0);break}t&&(e.stopPropagation(),e.preventDefault())}};function p(r,e){let t;return(...i)=>{let s=()=>{t=null,r(...i)};t&&clearTimeout(t),t=setTimeout(s,e)}}window.addEventListener("load",()=>{let r=document.querySelector(".js-tree");if(r){let t=new o(r),i=h(t);document.querySelector(".js-mainNavMobile")?.appendChild(i)}let e=document.querySelector(".Outline .js-tree");if(e){let t=new o(e),i=h(t);document.querySelector(".Outline .js-select")?.appendChild(i)}for(let t of document.querySelectorAll(".js-toggleTheme"))t.addEventListener("click",i=>{let s=i.currentTarget.getAttribute("data-value");document.documentElement.setAttribute("data-theme",String(s))});for(let t of document.querySelectorAll(".js-toggleLayout"))t.addEventListener("click",i=>{let s=i.currentTarget.getAttribute("data-value");document.documentElement.setAttribute("data-layout",String(s))});for(let t of document.querySelectorAll(".js-selectNav"))new c(t);for(let t of document.querySelectorAll(".js-carousel"))new d(t)});customElements.define("go-color",class extends HTMLElement{constructor(){super(),this.style.setProperty("display","contents");let r=this.id;this.removeAttribute("id"),this.innerHTML=`
-        <div style="--color: var(${r});" class="GoColor-circle"></div>
+    `,(t=e.querySelector(".go-Carousel-prevSlide"))==null||t.addEventListener("click",()=>this.setActive(this.activeIndex-1)),(i=e.querySelector(".go-Carousel-nextSlide"))==null||i.addEventListener("click",()=>this.setActive(this.activeIndex+1)),this.el.append(e)}initDots(){let e=document.createElement("ul");e.classList.add("go-Carousel-dots");for(let t=0;t<this.slides.length;t++){let i=document.createElement("li"),s=document.createElement("button");s.classList.add("go-Carousel-dot"),t===this.activeIndex&&s.classList.add("go-Carousel-dot--active"),s.innerHTML=`<span class="go-Carousel-obscured">Slide ${t+1}</span>`,s.addEventListener("click",()=>this.setActive(t)),i.append(s),e.append(i),this.dots.push(s)}this.el.append(e)}initLiveRegion(){this.liveRegion.setAttribute("aria-live","polite"),this.liveRegion.setAttribute("aria-atomic","true"),this.liveRegion.setAttribute("class","go-Carousel-obscured"),this.liveRegion.textContent=`Slide ${this.activeIndex+1} of ${this.slides.length}`,this.el.appendChild(this.liveRegion)}};var u=class{constructor(e){this.el=e;this.el.addEventListener("change",t=>{let i=t.target,s=i.value;i.value.startsWith("/")||(s="/"+s),window.location.href=s})}};function m(l){let e=document.createElement("label");e.classList.add("go-Label"),e.setAttribute("aria-label","Menu");let t=document.createElement("select");t.classList.add("go-Select","js-selectNav"),e.appendChild(t);let i=document.createElement("optgroup");i.label="Outline",t.appendChild(i);let s={},r;for(let n of l.treeitems){if(Number(n.depth)>4)continue;n.groupTreeitem?(r=s[n.groupTreeitem.label],r||(r=s[n.groupTreeitem.label]=document.createElement("optgroup"),r.label=n.groupTreeitem.label,t.appendChild(r))):r=i;let a=document.createElement("option");a.label=n.label,a.textContent=n.label,a.value=n.el.href.replace(window.location.origin,"").replace("/",""),r.appendChild(a)}return l.addObserver(n=>{var d;let a=n.el.hash,o=(d=t.querySelector(`[value$="${a}"]`))==null?void 0:d.value;o&&(t.value=o)},50),e}var c=class{constructor(e){this.el=e;this.handleResize=()=>{this.el.style.setProperty("--js-tree-height","100vh"),this.el.style.setProperty("--js-tree-height",this.el.clientHeight+"px")};this.treeitems=[],this.firstChars=[],this.firstTreeitem=null,this.lastTreeitem=null,this.observerCallbacks=[],this.init()}init(){this.handleResize(),window.addEventListener("resize",this.handleResize),this.findTreeItems(),this.updateVisibleTreeitems(),this.observeTargets(),this.firstTreeitem&&(this.firstTreeitem.el.tabIndex=0)}observeTargets(){this.addObserver(i=>{this.expandTreeitem(i),this.setSelected(i)});let e=new Map,t=new IntersectionObserver(i=>{for(let s of i)e.set(s.target.id,s.isIntersecting||s.intersectionRatio===1);for(let[s,r]of e)if(r){let n=this.treeitems.find(a=>{var o;return(o=a.el)==null?void 0:o.href.endsWith(`#${s}`)});if(n)for(let a of this.observerCallbacks)a(n);break}},{threshold:1,rootMargin:"-60px 0px 0px 0px"});for(let i of this.treeitems.map(s=>s.el.getAttribute("href")))if(i){let s=i.replace(window.location.origin,"").replace("/","").replace("#",""),r=document.getElementById(s);r&&t.observe(r)}}addObserver(e,t=200){this.observerCallbacks.push(g(e,t))}setFocusToNextItem(e){let t=null;for(let i=e.index+1;i<this.treeitems.length;i++){let s=this.treeitems[i];if(s.isVisible){t=s;break}}t&&this.setFocusToItem(t)}setFocusToPreviousItem(e){let t=null;for(let i=e.index-1;i>-1;i--){let s=this.treeitems[i];if(s.isVisible){t=s;break}}t&&this.setFocusToItem(t)}setFocusToParentItem(e){e.groupTreeitem&&this.setFocusToItem(e.groupTreeitem)}setFocusToFirstItem(){this.firstTreeitem&&this.setFocusToItem(this.firstTreeitem)}setFocusToLastItem(){this.lastTreeitem&&this.setFocusToItem(this.lastTreeitem)}setSelected(e){var t;for(let i of this.el.querySelectorAll('[aria-expanded="true"]'))i!==e.el&&((t=i.nextElementSibling)!=null&&t.contains(e.el)||i.setAttribute("aria-expanded","false"));for(let i of this.el.querySelectorAll("[aria-selected]"))i!==e.el&&i.setAttribute("aria-selected","false");e.el.setAttribute("aria-selected","true"),this.updateVisibleTreeitems(),this.setFocusToItem(e,!1)}expandTreeitem(e){let t=e;for(;t;)t.isExpandable&&t.el.setAttribute("aria-expanded","true"),t=t.groupTreeitem;this.updateVisibleTreeitems()}expandAllSiblingItems(e){for(let t of this.treeitems)t.groupTreeitem===e.groupTreeitem&&t.isExpandable&&this.expandTreeitem(t)}collapseTreeitem(e){let t=null;e.isExpanded()?t=e:t=e.groupTreeitem,t&&(t.el.setAttribute("aria-expanded","false"),this.updateVisibleTreeitems(),this.setFocusToItem(t))}setFocusByFirstCharacter(e,t){let i,s;t=t.toLowerCase(),i=e.index+1,i===this.treeitems.length&&(i=0),s=this.getIndexFirstChars(i,t),s===-1&&(s=this.getIndexFirstChars(0,t)),s>-1&&this.setFocusToItem(this.treeitems[s])}findTreeItems(){let e=(t,i)=>{let s=i,r=t.firstElementChild;for(;r;)(r.tagName==="A"||r.tagName==="SPAN")&&(s=new p(r,this,i),this.treeitems.push(s),this.firstChars.push(s.label.substring(0,1).toLowerCase())),r.firstElementChild&&e(r,s),r=r.nextElementSibling};e(this.el,null),this.treeitems.map((t,i)=>t.index=i)}updateVisibleTreeitems(){this.firstTreeitem=this.treeitems[0];for(let e of this.treeitems){let t=e.groupTreeitem;for(e.isVisible=!0;t&&t.el!==this.el;)t.isExpanded()||(e.isVisible=!1),t=t.groupTreeitem;e.isVisible&&(this.lastTreeitem=e)}}setFocusToItem(e,t=!0){e.el.tabIndex=0,t&&e.el.focus();for(let i of this.treeitems)i!==e&&(i.el.tabIndex=-1)}getIndexFirstChars(e,t){for(let i=e;i<this.firstChars.length;i++)if(this.treeitems[i].isVisible&&t===this.firstChars[i])return i;return-1}},p=class{constructor(e,t,i){var n,a,o,d,f;e.tabIndex=-1,this.el=e,this.groupTreeitem=i,this.label=(a=(n=e.textContent)==null?void 0:n.trim())!=null?a:"",this.tree=t,this.depth=((i==null?void 0:i.depth)||0)+1,this.index=0;let s=e.parentElement;(s==null?void 0:s.tagName.toLowerCase())==="li"&&(s==null||s.setAttribute("role","none")),e.setAttribute("aria-level",this.depth+""),e.getAttribute("aria-label")&&(this.label=(d=(o=e==null?void 0:e.getAttribute("aria-label"))==null?void 0:o.trim())!=null?d:""),this.isExpandable=!1,this.isVisible=!1,this.isInGroup=!!i;let r=e.nextElementSibling;for(;r;){if(r.tagName.toLowerCase()=="ul"){let b=`${(f=i==null?void 0:i.label)!=null?f:""} nav group ${this.label}`.replace(/[\W_]+/g,"_");e.setAttribute("aria-owns",b),e.setAttribute("aria-expanded","false"),r.setAttribute("role","group"),r.setAttribute("id",b),this.isExpandable=!0;break}r=r.nextElementSibling}this.init()}init(){this.el.tabIndex=-1,this.el.getAttribute("role")||this.el.setAttribute("role","treeitem"),this.el.addEventListener("keydown",this.handleKeydown.bind(this)),this.el.addEventListener("click",this.handleClick.bind(this)),this.el.addEventListener("focus",this.handleFocus.bind(this)),this.el.addEventListener("blur",this.handleBlur.bind(this))}isExpanded(){return this.isExpandable?this.el.getAttribute("aria-expanded")==="true":!1}isSelected(){return this.el.getAttribute("aria-selected")==="true"}handleClick(e){e.target!==this.el&&e.target!==this.el.firstElementChild||(this.isExpandable&&(this.isExpanded()&&this.isSelected()?this.tree.collapseTreeitem(this):this.tree.expandTreeitem(this),e.stopPropagation()),this.tree.setSelected(this))}handleFocus(){var t;let e=this.el;this.isExpandable&&(e=(t=e.firstElementChild)!=null?t:e),e.classList.add("focus")}handleBlur(){var t;let e=this.el;this.isExpandable&&(e=(t=e.firstElementChild)!=null?t:e),e.classList.remove("focus")}handleKeydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=!1;switch(e.key){case" ":case"Enter":this.isExpandable?(this.isExpanded()&&this.isSelected()?this.tree.collapseTreeitem(this):this.tree.expandTreeitem(this),t=!0):e.stopPropagation(),this.tree.setSelected(this);break;case"ArrowUp":this.tree.setFocusToPreviousItem(this),t=!0;break;case"ArrowDown":this.tree.setFocusToNextItem(this),t=!0;break;case"ArrowRight":this.isExpandable&&(this.isExpanded()?this.tree.setFocusToNextItem(this):this.tree.expandTreeitem(this)),t=!0;break;case"ArrowLeft":this.isExpandable&&this.isExpanded()?(this.tree.collapseTreeitem(this),t=!0):this.isInGroup&&(this.tree.setFocusToParentItem(this),t=!0);break;case"Home":this.tree.setFocusToFirstItem(),t=!0;break;case"End":this.tree.setFocusToLastItem(),t=!0;break;default:e.key.length===1&&e.key.match(/\S/)&&(e.key=="*"?this.tree.expandAllSiblingItems(this):this.tree.setFocusByFirstCharacter(this,e.key),t=!0);break}t&&(e.stopPropagation(),e.preventDefault())}};function g(l,e){let t;return(...i)=>{let s=()=>{t=null,l(...i)};t&&clearTimeout(t),t=setTimeout(s,e)}}window.addEventListener("load",()=>{var t,i;let l=document.querySelector(".js-tree");if(l){let s=new c(l),r=m(s);(t=document.querySelector(".js-mainNavMobile"))==null||t.appendChild(r)}let e=document.querySelector(".Outline .js-tree");if(e){let s=new c(e),r=m(s);(i=document.querySelector(".Outline .js-select"))==null||i.appendChild(r)}for(let s of document.querySelectorAll(".js-toggleTheme"))s.addEventListener("click",r=>{let n=r.currentTarget.getAttribute("data-value");document.documentElement.setAttribute("data-theme",String(n))});for(let s of document.querySelectorAll(".js-toggleLayout"))s.addEventListener("click",r=>{let n=r.currentTarget.getAttribute("data-value");document.documentElement.setAttribute("data-layout",String(n))});for(let s of document.querySelectorAll(".js-selectNav"))new u(s);for(let s of document.querySelectorAll(".js-carousel"))new h(s)});customElements.define("go-color",class extends HTMLElement{constructor(){var e;super(),this.style.setProperty("display","contents");let l=this.id;this.removeAttribute("id"),this.innerHTML=`
+        <div style="--color: var(${l});" class="GoColor-circle"></div>
         <span>
-          <div id="${r}" class="go-textLabel GoColor-title">${r.replace("--color-","").replaceAll("-"," ")}</div>
-          <pre class="StringifyElement-markup">var(${r})</pre>
+          <div id="${l}" class="go-textLabel GoColor-title">${l.replace("--color-","").replaceAll("-"," ")}</div>
+          <pre class="StringifyElement-markup">var(${l})</pre>
         </span>
-      `,this.querySelector("pre")?.addEventListener("click",()=>{navigator.clipboard.writeText(`var(${r})`)})}});customElements.define("go-icon",class extends HTMLElement{constructor(){super(),this.style.setProperty("display","contents");let r=this.getAttribute("name");this.innerHTML=`<p id="icon-${r}" class="go-textLabel GoIcon-title">${r.replaceAll("_"," ")}</p>
+      `,(e=this.querySelector("pre"))==null||e.addEventListener("click",()=>{navigator.clipboard.writeText(`var(${l})`)})}});customElements.define("go-icon",class extends HTMLElement{constructor(){super(),this.style.setProperty("display","contents");let l=this.getAttribute("name");this.innerHTML=`<p id="icon-${l}" class="go-textLabel GoIcon-title">${l.replaceAll("_"," ")}</p>
         <stringify-el>
-          <img class="go-Icon" height="24" width="24" src="/static/shared/icon/${r}_gm_grey_24dp.svg" alt="">
+          <img class="go-Icon" height="24" width="24" src="/static/shared/icon/${l}_gm_grey_24dp.svg" alt="">
         </stringify-el>
-      `}});customElements.define("clone-el",class extends HTMLElement{constructor(){super(),this.style.setProperty("display","contents");let r=this.getAttribute("selector");if(!r)return;let e="    "+document.querySelector(r)?.outerHTML;this.innerHTML=`
+      `}});customElements.define("clone-el",class extends HTMLElement{constructor(){var t;super(),this.style.setProperty("display","contents");let l=this.getAttribute("selector");if(!l)return;let e="    "+((t=document.querySelector(l))==null?void 0:t.outerHTML);this.innerHTML=`
         <stringify-el collapsed>${e}</stringify-el>
-      `}});customElements.define("stringify-el",class extends HTMLElement{constructor(){super(),this.style.setProperty("display","contents");let r=this.innerHTML,e=this.id?` id="${this.id}"`:"";this.removeAttribute("id");let t='<pre class="StringifyElement-markup">'+b(f(r))+"</pre>";this.hasAttribute("collapsed")&&(t=`<details class="StringifyElement-details"><summary>Markup</summary>${t}</details>`),this.innerHTML=`<span${e}>${r}</span>${t}`,this.querySelector("pre")?.addEventListener("click",()=>{navigator.clipboard.writeText(r)})}});function f(r){return r.split(`
+      `}});customElements.define("stringify-el",class extends HTMLElement{constructor(){var i;super(),this.style.setProperty("display","contents");let l=this.innerHTML,e=this.id?` id="${this.id}"`:"";this.removeAttribute("id");let t='<pre class="StringifyElement-markup">'+v(T(l))+"</pre>";this.hasAttribute("collapsed")&&(t=`<details class="StringifyElement-details"><summary>Markup</summary>${t}</details>`),this.innerHTML=`<span${e}>${l}</span>${t}`,(i=this.querySelector("pre"))==null||i.addEventListener("click",()=>{navigator.clipboard.writeText(l)})}});function T(l){return l.split(`
 `).reduce((e,t)=>{if(e.result.length===0){let i=t.indexOf("<");e.start=i===-1?0:i}return t=t.slice(e.start),t&&e.result.push(t),e},{result:[],start:0}).result.join(`
-`)}function b(r){return r?.replaceAll("<","&lt;")?.replaceAll(">","&gt;")}
+`)}function v(l){var e;return(e=l==null?void 0:l.replaceAll("<","&lt;"))==null?void 0:e.replaceAll(">","&gt;")}
 /**
  * @license
  * Copyright 2021 The Go Authors. All rights reserved.
diff --git a/static/frontend/styleguide/styleguide.js.map b/static/frontend/styleguide/styleguide.js.map
index 8627072..a933ff7 100644
--- a/static/frontend/styleguide/styleguide.js.map
+++ b/static/frontend/styleguide/styleguide.js.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["../../shared/carousel/carousel.ts", "../../shared/outline/select.ts", "../../shared/outline/tree.ts", "styleguide.ts"],
   "sourcesContent": ["/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * Carousel Controller adds event listeners, accessibility enhancements, and\n * control elements to a carousel component.\n */\nexport class CarouselController {\n  /**\n   * slides is a collection of slides in the carousel.\n   */\n  private slides: HTMLLIElement[];\n  /**\n   * dots is a collection of dot navigation controls, added to the carousel\n   * by this controller.\n   */\n  private dots: HTMLElement[];\n  /**\n   * liveRegion is a visually hidden element that notifies assitive devices\n   * of visual changes to the carousel. They are added to the carousel by\n   * this controller.\n   */\n  private liveRegion: HTMLElement;\n  /**\n   * activeIndex is the 0-index of the currently active slide.\n   */\n  private activeIndex: number;\n\n  constructor(private el: HTMLElement) {\n    this.slides = Array.from(el.querySelectorAll('.go-Carousel-slide'));\n    this.dots = [];\n    this.liveRegion = document.createElement('div');\n    this.activeIndex = Number(el.getAttribute('data-slide-index') ?? 0);\n\n    this.initSlides();\n    this.initArrows();\n    this.initDots();\n    this.initLiveRegion();\n  }\n\n  private initSlides() {\n    for (const [i, v] of this.slides.entries()) {\n      if (i === this.activeIndex) continue;\n      v.setAttribute('aria-hidden', 'true');\n    }\n  }\n\n  private initArrows() {\n    const arrows = document.createElement('ul');\n    arrows.classList.add('go-Carousel-arrows');\n    arrows.innerHTML = `\n      <li>\n        <button class=\"go-Carousel-prevSlide\" aria-label=\"Go to previous slide\">\n          <img class=\"go-Icon\" height=\"24\" width=\"24\" src=\"/static/shared/icon/arrow_left_gm_grey_24dp.svg\" alt=\"\">\n        </button>\n      </li>\n      <li>\n        <button class=\"go-Carousel-nextSlide\" aria-label=\"Go to next slide\">\n          <img class=\"go-Icon\" height=\"24\" width=\"24\" src=\"/static/shared/icon/arrow_right_gm_grey_24dp.svg\" alt=\"\">\n        </button>\n      </li>\n    `;\n    arrows\n      .querySelector('.go-Carousel-prevSlide')\n      ?.addEventListener('click', () => this.setActive(this.activeIndex - 1));\n    arrows\n      .querySelector('.go-Carousel-nextSlide')\n      ?.addEventListener('click', () => this.setActive(this.activeIndex + 1));\n    this.el.append(arrows);\n  }\n\n  private initDots() {\n    const dots = document.createElement('ul');\n    dots.classList.add('go-Carousel-dots');\n    for (let i = 0; i < this.slides.length; i++) {\n      const li = document.createElement('li');\n      const button = document.createElement('button');\n      button.classList.add('go-Carousel-dot');\n      if (i === this.activeIndex) {\n        button.classList.add('go-Carousel-dot--active');\n      }\n      button.innerHTML = `<span class=\"go-Carousel-obscured\">Slide ${i + 1}</span>`;\n      button.addEventListener('click', () => this.setActive(i));\n      li.append(button);\n      dots.append(li);\n      this.dots.push(button);\n    }\n    this.el.append(dots);\n  }\n\n  private initLiveRegion() {\n    this.liveRegion.setAttribute('aria-live', 'polite');\n    this.liveRegion.setAttribute('aria-atomic', 'true');\n    this.liveRegion.setAttribute('class', 'go-Carousel-obscured');\n    this.liveRegion.textContent = `Slide ${this.activeIndex + 1} of ${this.slides.length}`;\n    this.el.appendChild(this.liveRegion);\n  }\n\n  private setActive = (index: number) => {\n    this.activeIndex = (index + this.slides.length) % this.slides.length;\n    this.el.setAttribute('data-slide-index', String(this.activeIndex));\n    for (const d of this.dots) {\n      d.classList.remove('go-Carousel-dot--active');\n    }\n    this.dots[this.activeIndex].classList.add('go-Carousel-dot--active');\n    for (const s of this.slides) {\n      s.setAttribute('aria-hidden', 'true');\n    }\n    this.slides[this.activeIndex].removeAttribute('aria-hidden');\n    this.liveRegion.textContent = 'Slide ' + (this.activeIndex + 1) + ' of ' + this.slides.length;\n  };\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { TreeNavController } from './tree.js';\n\nexport class SelectNavController {\n  constructor(private el: Element) {\n    this.el.addEventListener('change', e => {\n      const target = e.target as HTMLSelectElement;\n      let href = target.value;\n      if (!target.value.startsWith('/')) {\n        href = '/' + href;\n      }\n      window.location.href = href;\n    });\n  }\n}\n\nexport function makeSelectNav(tree: TreeNavController): HTMLLabelElement {\n  const label = document.createElement('label');\n  label.classList.add('go-Label');\n  label.setAttribute('aria-label', 'Menu');\n  const select = document.createElement('select');\n  select.classList.add('go-Select', 'js-selectNav');\n  label.appendChild(select);\n  const outline = document.createElement('optgroup');\n  outline.label = 'Outline';\n  select.appendChild(outline);\n  const groupMap: Record<string, HTMLOptGroupElement> = {};\n  let group: HTMLOptGroupElement;\n  for (const t of tree.treeitems) {\n    if (Number(t.depth) > 4) continue;\n    if (t.groupTreeitem) {\n      group = groupMap[t.groupTreeitem.label];\n      if (!group) {\n        group = groupMap[t.groupTreeitem.label] = document.createElement('optgroup');\n        group.label = t.groupTreeitem.label;\n        select.appendChild(group);\n      }\n    } else {\n      group = outline;\n    }\n    const o = document.createElement('option');\n    o.label = t.label;\n    o.textContent = t.label;\n    o.value = (t.el as HTMLAnchorElement).href.replace(window.location.origin, '').replace('/', '');\n    group.appendChild(o);\n  }\n  tree.addObserver(t => {\n    const hash = (t.el as HTMLAnchorElement).hash;\n    const value = select.querySelector<HTMLOptionElement>(`[value$=\"${hash}\"]`)?.value;\n    if (value) {\n      select.value = value;\n    }\n  }, 50);\n  return label;\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * TreeNavController is the navigation tree component of the documentation page.\n * It adds accessiblity attributes to a tree, observes the heading elements\n * focus the topmost link for headings visible on the page, and implements the\n * WAI-ARIA Treeview Design Pattern with full\n * [keyboard support](https://www.w3.org/TR/wai-aria-practices/examples/treeview/treeview-2/treeview-2a.html#kbd_label).\n */\nexport class TreeNavController {\n  treeitems: TreeItem[];\n\n  /**\n   * firstChars is the first character of each treeitem in the same order\n   * as this.treeitems. We use this array to set focus by character when\n   * navigating the tree with a keyboard.\n   */\n  private firstChars: string[];\n  private firstTreeitem: TreeItem | null;\n  private lastTreeitem: TreeItem | null;\n  private observerCallbacks: ((t: TreeItem) => void)[];\n\n  constructor(private el: HTMLElement) {\n    this.treeitems = [];\n    this.firstChars = [];\n    this.firstTreeitem = null;\n    this.lastTreeitem = null;\n    this.observerCallbacks = [];\n    this.init();\n  }\n\n  private init(): void {\n    this.handleResize();\n    window.addEventListener('resize', this.handleResize);\n    this.findTreeItems();\n    this.updateVisibleTreeitems();\n    this.observeTargets();\n    if (this.firstTreeitem) {\n      this.firstTreeitem.el.tabIndex = 0;\n    }\n  }\n\n  private handleResize = (): void => {\n    this.el.style.setProperty('--js-tree-height', '100vh');\n    this.el.style.setProperty('--js-tree-height', this.el.clientHeight + 'px');\n  };\n\n  private observeTargets() {\n    this.addObserver(treeitem => {\n      this.expandTreeitem(treeitem);\n      this.setSelected(treeitem);\n      // TODO: Fix scroll issue in https://golang.org/issue/47450.\n      // treeitem.el.scrollIntoView({ block: 'nearest' });\n    });\n\n    const targets = new Map<string, boolean>();\n    const observer = new IntersectionObserver(\n      entries => {\n        for (const entry of entries) {\n          targets.set(entry.target.id, entry.isIntersecting || entry.intersectionRatio === 1);\n        }\n        for (const [id, isIntersecting] of targets) {\n          if (isIntersecting) {\n            const active = this.treeitems.find(t =>\n              (t.el as HTMLAnchorElement)?.href.endsWith(`#${id}`)\n            );\n            if (active) {\n              for (const fn of this.observerCallbacks) {\n                fn(active);\n              }\n            }\n            break;\n          }\n        }\n      },\n      {\n        threshold: 1.0,\n        rootMargin: '-60px 0px 0px 0px',\n      }\n    );\n\n    for (const href of this.treeitems.map(t => t.el.getAttribute('href'))) {\n      if (href) {\n        const id = href.replace(window.location.origin, '').replace('/', '').replace('#', '');\n        const target = document.getElementById(id);\n        if (target) {\n          observer.observe(target);\n        }\n      }\n    }\n  }\n\n  addObserver(fn: (t: TreeItem) => void, delay = 200): void {\n    this.observerCallbacks.push(debounce(fn, delay));\n  }\n\n  setFocusToNextItem(currentItem: TreeItem): void {\n    let nextItem = null;\n    for (let i = currentItem.index + 1; i < this.treeitems.length; i++) {\n      const ti = this.treeitems[i];\n      if (ti.isVisible) {\n        nextItem = ti;\n        break;\n      }\n    }\n    if (nextItem) {\n      this.setFocusToItem(nextItem);\n    }\n  }\n\n  setFocusToPreviousItem(currentItem: TreeItem): void {\n    let prevItem = null;\n    for (let i = currentItem.index - 1; i > -1; i--) {\n      const ti = this.treeitems[i];\n      if (ti.isVisible) {\n        prevItem = ti;\n        break;\n      }\n    }\n    if (prevItem) {\n      this.setFocusToItem(prevItem);\n    }\n  }\n\n  setFocusToParentItem(currentItem: TreeItem): void {\n    if (currentItem.groupTreeitem) {\n      this.setFocusToItem(currentItem.groupTreeitem);\n    }\n  }\n\n  setFocusToFirstItem(): void {\n    this.firstTreeitem && this.setFocusToItem(this.firstTreeitem);\n  }\n\n  setFocusToLastItem(): void {\n    this.lastTreeitem && this.setFocusToItem(this.lastTreeitem);\n  }\n\n  setSelected(currentItem: TreeItem): void {\n    for (const l1 of this.el.querySelectorAll('[aria-expanded=\"true\"]')) {\n      if (l1 === currentItem.el) continue;\n      if (!l1.nextElementSibling?.contains(currentItem.el)) {\n        l1.setAttribute('aria-expanded', 'false');\n      }\n    }\n    for (const l1 of this.el.querySelectorAll('[aria-selected]')) {\n      if (l1 !== currentItem.el) {\n        l1.setAttribute('aria-selected', 'false');\n      }\n    }\n    currentItem.el.setAttribute('aria-selected', 'true');\n    this.updateVisibleTreeitems();\n    this.setFocusToItem(currentItem, false);\n  }\n\n  expandTreeitem(treeitem: TreeItem): void {\n    let currentItem: TreeItem | null = treeitem;\n    while (currentItem) {\n      if (currentItem.isExpandable) {\n        currentItem.el.setAttribute('aria-expanded', 'true');\n      }\n      currentItem = currentItem.groupTreeitem;\n    }\n    this.updateVisibleTreeitems();\n  }\n\n  expandAllSiblingItems(currentItem: TreeItem): void {\n    for (const ti of this.treeitems) {\n      if (ti.groupTreeitem === currentItem.groupTreeitem && ti.isExpandable) {\n        this.expandTreeitem(ti);\n      }\n    }\n  }\n\n  collapseTreeitem(currentItem: TreeItem): void {\n    let groupTreeitem = null;\n\n    if (currentItem.isExpanded()) {\n      groupTreeitem = currentItem;\n    } else {\n      groupTreeitem = currentItem.groupTreeitem;\n    }\n\n    if (groupTreeitem) {\n      groupTreeitem.el.setAttribute('aria-expanded', 'false');\n      this.updateVisibleTreeitems();\n      this.setFocusToItem(groupTreeitem);\n    }\n  }\n\n  setFocusByFirstCharacter(currentItem: TreeItem, char: string): void {\n    let start: number, index: number;\n    char = char.toLowerCase();\n\n    // Get start index for search based on position of currentItem\n    start = currentItem.index + 1;\n    if (start === this.treeitems.length) {\n      start = 0;\n    }\n\n    // Check remaining slots in the menu\n    index = this.getIndexFirstChars(start, char);\n\n    // If not found in remaining slots, check from beginning\n    if (index === -1) {\n      index = this.getIndexFirstChars(0, char);\n    }\n\n    // If match was found...\n    if (index > -1) {\n      this.setFocusToItem(this.treeitems[index]);\n    }\n  }\n\n  private findTreeItems() {\n    const findItems = (el: HTMLElement, group: TreeItem | null) => {\n      let ti = group;\n      let curr = el.firstElementChild as HTMLElement;\n      while (curr) {\n        if (curr.tagName === 'A' || curr.tagName === 'SPAN') {\n          ti = new TreeItem(curr, this, group);\n          this.treeitems.push(ti);\n          this.firstChars.push(ti.label.substring(0, 1).toLowerCase());\n        }\n        if (curr.firstElementChild) {\n          findItems(curr, ti);\n        }\n        curr = curr.nextElementSibling as HTMLElement;\n      }\n    };\n    findItems(this.el as HTMLElement, null);\n    this.treeitems.map((ti, idx) => (ti.index = idx));\n  }\n\n  private updateVisibleTreeitems(): void {\n    this.firstTreeitem = this.treeitems[0];\n\n    for (const ti of this.treeitems) {\n      let parent = ti.groupTreeitem;\n      ti.isVisible = true;\n      while (parent && parent.el !== this.el) {\n        if (!parent.isExpanded()) {\n          ti.isVisible = false;\n        }\n        parent = parent.groupTreeitem;\n      }\n      if (ti.isVisible) {\n        this.lastTreeitem = ti;\n      }\n    }\n  }\n\n  private setFocusToItem(treeitem: TreeItem, focusEl = true) {\n    treeitem.el.tabIndex = 0;\n    if (focusEl) {\n      treeitem.el.focus();\n    }\n    for (const ti of this.treeitems) {\n      if (ti !== treeitem) {\n        ti.el.tabIndex = -1;\n      }\n    }\n  }\n\n  private getIndexFirstChars(startIndex: number, char: string): number {\n    for (let i = startIndex; i < this.firstChars.length; i++) {\n      if (this.treeitems[i].isVisible && char === this.firstChars[i]) {\n        return i;\n      }\n    }\n    return -1;\n  }\n}\n\nclass TreeItem {\n  el: HTMLElement;\n  groupTreeitem: TreeItem | null;\n  label: string;\n  isExpandable: boolean;\n  isVisible: boolean;\n  depth: number;\n  index: number;\n\n  private tree: TreeNavController;\n  private isInGroup: boolean;\n\n  constructor(el: HTMLElement, treeObj: TreeNavController, group: TreeItem | null) {\n    el.tabIndex = -1;\n    this.el = el;\n    this.groupTreeitem = group;\n    this.label = el.textContent?.trim() ?? '';\n    this.tree = treeObj;\n    this.depth = (group?.depth || 0) + 1;\n    this.index = 0;\n\n    const parent = el.parentElement;\n    if (parent?.tagName.toLowerCase() === 'li') {\n      parent?.setAttribute('role', 'none');\n    }\n    el.setAttribute('aria-level', this.depth + '');\n    if (el.getAttribute('aria-label')) {\n      this.label = el?.getAttribute('aria-label')?.trim() ?? '';\n    }\n\n    this.isExpandable = false;\n    this.isVisible = false;\n    this.isInGroup = !!group;\n\n    let curr = el.nextElementSibling;\n    while (curr) {\n      if (curr.tagName.toLowerCase() == 'ul') {\n        const groupId = `${group?.label ?? ''} nav group ${this.label}`.replace(/[\\W_]+/g, '_');\n        el.setAttribute('aria-owns', groupId);\n        el.setAttribute('aria-expanded', 'false');\n        curr.setAttribute('role', 'group');\n        curr.setAttribute('id', groupId);\n        this.isExpandable = true;\n        break;\n      }\n\n      curr = curr.nextElementSibling;\n    }\n    this.init();\n  }\n\n  private init() {\n    this.el.tabIndex = -1;\n    if (!this.el.getAttribute('role')) {\n      this.el.setAttribute('role', 'treeitem');\n    }\n    this.el.addEventListener('keydown', this.handleKeydown.bind(this));\n    this.el.addEventListener('click', this.handleClick.bind(this));\n    this.el.addEventListener('focus', this.handleFocus.bind(this));\n    this.el.addEventListener('blur', this.handleBlur.bind(this));\n  }\n\n  isExpanded() {\n    if (this.isExpandable) {\n      return this.el.getAttribute('aria-expanded') === 'true';\n    }\n\n    return false;\n  }\n\n  isSelected() {\n    return this.el.getAttribute('aria-selected') === 'true';\n  }\n\n  private handleClick(event: MouseEvent) {\n    // only process click events that directly happened on this treeitem\n    if (event.target !== this.el && event.target !== this.el.firstElementChild) {\n      return;\n    }\n    if (this.isExpandable) {\n      if (this.isExpanded() && this.isSelected()) {\n        this.tree.collapseTreeitem(this);\n      } else {\n        this.tree.expandTreeitem(this);\n      }\n      event.stopPropagation();\n    }\n    this.tree.setSelected(this);\n  }\n\n  private handleFocus() {\n    let el = this.el;\n    if (this.isExpandable) {\n      el = (el.firstElementChild as HTMLElement) ?? el;\n    }\n    el.classList.add('focus');\n  }\n\n  private handleBlur() {\n    let el = this.el;\n    if (this.isExpandable) {\n      el = (el.firstElementChild as HTMLElement) ?? el;\n    }\n    el.classList.remove('focus');\n  }\n\n  private handleKeydown(event: KeyboardEvent) {\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n\n    let captured = false;\n    switch (event.key) {\n      case ' ':\n      case 'Enter':\n        if (this.isExpandable) {\n          if (this.isExpanded() && this.isSelected()) {\n            this.tree.collapseTreeitem(this);\n          } else {\n            this.tree.expandTreeitem(this);\n          }\n          captured = true;\n        } else {\n          event.stopPropagation();\n        }\n        this.tree.setSelected(this);\n        break;\n\n      case 'ArrowUp':\n        this.tree.setFocusToPreviousItem(this);\n        captured = true;\n        break;\n\n      case 'ArrowDown':\n        this.tree.setFocusToNextItem(this);\n        captured = true;\n        break;\n\n      case 'ArrowRight':\n        if (this.isExpandable) {\n          if (this.isExpanded()) {\n            this.tree.setFocusToNextItem(this);\n          } else {\n            this.tree.expandTreeitem(this);\n          }\n        }\n        captured = true;\n        break;\n\n      case 'ArrowLeft':\n        if (this.isExpandable && this.isExpanded()) {\n          this.tree.collapseTreeitem(this);\n          captured = true;\n        } else {\n          if (this.isInGroup) {\n            this.tree.setFocusToParentItem(this);\n            captured = true;\n          }\n        }\n        break;\n\n      case 'Home':\n        this.tree.setFocusToFirstItem();\n        captured = true;\n        break;\n\n      case 'End':\n        this.tree.setFocusToLastItem();\n        captured = true;\n        break;\n\n      default:\n        if (event.key.length === 1 && event.key.match(/\\S/)) {\n          if (event.key == '*') {\n            this.tree.expandAllSiblingItems(this);\n          } else {\n            this.tree.setFocusByFirstCharacter(this, event.key);\n          }\n          captured = true;\n        }\n        break;\n    }\n\n    if (captured) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction debounce<T extends (...args: any[]) => any>(func: T, wait: number) {\n  let timeout: ReturnType<typeof setTimeout> | null;\n  return (...args: Parameters<T>) => {\n    const later = () => {\n      timeout = null;\n      func(...args);\n    };\n    if (timeout) {\n      clearTimeout(timeout);\n    }\n    timeout = setTimeout(later, wait);\n  };\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { CarouselController } from '../../shared/carousel/carousel';\nimport { SelectNavController, makeSelectNav } from '../../shared/outline/select';\nimport { TreeNavController } from '../../shared/outline/tree';\n\nwindow.addEventListener('load', () => {\n  const tree = document.querySelector<HTMLElement>('.js-tree');\n  if (tree) {\n    const treeCtrl = new TreeNavController(tree);\n    const select = makeSelectNav(treeCtrl);\n    document.querySelector('.js-mainNavMobile')?.appendChild(select);\n  }\n\n  const guideTree = document.querySelector<HTMLElement>('.Outline .js-tree');\n  if (guideTree) {\n    const treeCtrl = new TreeNavController(guideTree);\n    const select = makeSelectNav(treeCtrl);\n    document.querySelector('.Outline .js-select')?.appendChild(select);\n  }\n\n  for (const el of document.querySelectorAll('.js-toggleTheme')) {\n    el.addEventListener('click', e => {\n      const value = (e.currentTarget as HTMLButtonElement).getAttribute('data-value');\n      document.documentElement.setAttribute('data-theme', String(value));\n    });\n  }\n  for (const el of document.querySelectorAll('.js-toggleLayout')) {\n    el.addEventListener('click', e => {\n      const value = (e.currentTarget as HTMLButtonElement).getAttribute('data-value');\n      document.documentElement.setAttribute('data-layout', String(value));\n    });\n  }\n\n  for (const el of document.querySelectorAll<HTMLSelectElement>('.js-selectNav')) {\n    new SelectNavController(el);\n  }\n\n  for (const el of document.querySelectorAll<HTMLSelectElement>('.js-carousel')) {\n    new CarouselController(el);\n  }\n});\n\ncustomElements.define(\n  'go-color',\n  class extends HTMLElement {\n    constructor() {\n      super();\n      this.style.setProperty('display', 'contents');\n      // The current version of TypeScript is not aware of String.replaceAll.\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const name = this.id as any;\n      this.removeAttribute('id');\n      this.innerHTML = `\n        <div style=\"--color: var(${name});\" class=\"GoColor-circle\"></div>\n        <span>\n          <div id=\"${name}\" class=\"go-textLabel GoColor-title\">${name\n        .replace('--color-', '')\n        .replaceAll('-', ' ')}</div>\n          <pre class=\"StringifyElement-markup\">var(${name})</pre>\n        </span>\n      `;\n      this.querySelector('pre')?.addEventListener('click', () => {\n        navigator.clipboard.writeText(`var(${name})`);\n      });\n    }\n  }\n);\n\ncustomElements.define(\n  'go-icon',\n  class extends HTMLElement {\n    constructor() {\n      super();\n      this.style.setProperty('display', 'contents');\n      // The current version of TypeScript is not aware of String.replaceAll.\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const name = this.getAttribute('name') as any;\n      this.innerHTML = `<p id=\"icon-${name}\" class=\"go-textLabel GoIcon-title\">${name.replaceAll(\n        '_',\n        ' '\n      )}</p>\n        <stringify-el>\n          <img class=\"go-Icon\" height=\"24\" width=\"24\" src=\"/static/shared/icon/${name}_gm_grey_24dp.svg\" alt=\"\">\n        </stringify-el>\n      `;\n    }\n  }\n);\n\ncustomElements.define(\n  'clone-el',\n  class extends HTMLElement {\n    constructor() {\n      super();\n      this.style.setProperty('display', 'contents');\n      const selector = this.getAttribute('selector');\n      if (!selector) return;\n      const html = '    ' + document.querySelector(selector)?.outerHTML;\n      this.innerHTML = `\n        <stringify-el collapsed>${html}</stringify-el>\n      `;\n    }\n  }\n);\n\ncustomElements.define(\n  'stringify-el',\n  class extends HTMLElement {\n    constructor() {\n      super();\n      this.style.setProperty('display', 'contents');\n      const html = this.innerHTML;\n      const idAttr = this.id ? ` id=\"${this.id}\"` : '';\n      this.removeAttribute('id');\n      let markup = `<pre class=\"StringifyElement-markup\">` + escape(trim(html)) + `</pre>`;\n      if (this.hasAttribute('collapsed')) {\n        markup = `<details class=\"StringifyElement-details\"><summary>Markup</summary>${markup}</details>`;\n      }\n      this.innerHTML = `<span${idAttr}>${html}</span>${markup}`;\n      this.querySelector('pre')?.addEventListener('click', () => {\n        navigator.clipboard.writeText(html);\n      });\n    }\n  }\n);\n\n/**\n * trim removes excess indentation from html markup by\n * measuring the number of spaces in the first line of\n * the given string and removing that number of spaces\n * from the beginning of each line.\n */\nfunction trim(html: string) {\n  return html\n    .split('\\n')\n    .reduce<{ result: string[]; start: number }>(\n      (acc, val) => {\n        if (acc.result.length === 0) {\n          const start = val.indexOf('<');\n          acc.start = start === -1 ? 0 : start;\n        }\n        val = val.slice(acc.start);\n        if (val) {\n          acc.result.push(val);\n        }\n        return acc;\n      },\n      { result: [], start: 0 }\n    )\n    .result.join('\\n');\n}\n\nfunction escape(html: string) {\n  // The current version of TypeScript is not aware of String.replaceAll.\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return (html as any)?.replaceAll('<', '&lt;')?.replaceAll('>', '&gt;');\n}\n"],
-  "mappings": "AAWO,IAAMA,EAAN,KAAyB,CAqB9B,YAAoBC,EAAiB,CAAjB,QAAAA,EAsEpB,KAAQ,UAAaC,GAAkB,CACrC,KAAK,aAAeA,EAAQ,KAAK,OAAO,QAAU,KAAK,OAAO,OAC9D,KAAK,GAAG,aAAa,mBAAoB,OAAO,KAAK,WAAW,CAAC,EACjE,QAAWC,KAAK,KAAK,KACnBA,EAAE,UAAU,OAAO,yBAAyB,EAE9C,KAAK,KAAK,KAAK,WAAW,EAAE,UAAU,IAAI,yBAAyB,EACnE,QAAWC,KAAK,KAAK,OACnBA,EAAE,aAAa,cAAe,MAAM,EAEtC,KAAK,OAAO,KAAK,WAAW,EAAE,gBAAgB,aAAa,EAC3D,KAAK,WAAW,YAAc,UAAY,KAAK,YAAc,GAAK,OAAS,KAAK,OAAO,MACzF,EAjFE,KAAK,OAAS,MAAM,KAAKH,EAAG,iBAAiB,oBAAoB,CAAC,EAClE,KAAK,KAAO,CAAC,EACb,KAAK,WAAa,SAAS,cAAc,KAAK,EAC9C,KAAK,YAAc,OAAOA,EAAG,aAAa,kBAAkB,GAAK,CAAC,EAElE,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,CACtB,CAEQ,YAAa,CACnB,OAAW,CAACI,EAAGC,CAAC,IAAK,KAAK,OAAO,QAAQ,EACnCD,IAAM,KAAK,aACfC,EAAE,aAAa,cAAe,MAAM,CAExC,CAEQ,YAAa,CACnB,IAAMC,EAAS,SAAS,cAAc,IAAI,EAC1CA,EAAO,UAAU,IAAI,oBAAoB,EACzCA,EAAO,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYnBA,EACG,cAAc,wBAAwB,GACrC,iBAAiB,QAAS,IAAM,KAAK,UAAU,KAAK,YAAc,CAAC,CAAC,EACxEA,EACG,cAAc,wBAAwB,GACrC,iBAAiB,QAAS,IAAM,KAAK,UAAU,KAAK,YAAc,CAAC,CAAC,EACxE,KAAK,GAAG,OAAOA,CAAM,CACvB,CAEQ,UAAW,CACjB,IAAMC,EAAO,SAAS,cAAc,IAAI,EACxCA,EAAK,UAAU,IAAI,kBAAkB,EACrC,QAASH,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,IAAK,CAC3C,IAAMI,EAAK,SAAS,cAAc,IAAI,EAChCC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,UAAU,IAAI,iBAAiB,EAClCL,IAAM,KAAK,aACbK,EAAO,UAAU,IAAI,yBAAyB,EAEhDA,EAAO,UAAY,4CAA4CL,EAAI,CAAC,UACpEK,EAAO,iBAAiB,QAAS,IAAM,KAAK,UAAUL,CAAC,CAAC,EACxDI,EAAG,OAAOC,CAAM,EAChBF,EAAK,OAAOC,CAAE,EACd,KAAK,KAAK,KAAKC,CAAM,CACvB,CACA,KAAK,GAAG,OAAOF,CAAI,CACrB,CAEQ,gBAAiB,CACvB,KAAK,WAAW,aAAa,YAAa,QAAQ,EAClD,KAAK,WAAW,aAAa,cAAe,MAAM,EAClD,KAAK,WAAW,aAAa,QAAS,sBAAsB,EAC5D,KAAK,WAAW,YAAc,SAAS,KAAK,YAAc,CAAC,OAAO,KAAK,OAAO,MAAM,GACpF,KAAK,GAAG,YAAY,KAAK,UAAU,CACrC,CAeF,EC1GO,IAAMG,EAAN,KAA0B,CAC/B,YAAoBC,EAAa,CAAb,QAAAA,EAClB,KAAK,GAAG,iBAAiB,SAAUC,GAAK,CACtC,IAAMC,EAASD,EAAE,OACbE,EAAOD,EAAO,MACbA,EAAO,MAAM,WAAW,GAAG,IAC9BC,EAAO,IAAMA,GAEf,OAAO,SAAS,KAAOA,CACzB,CAAC,CACH,CACF,EAEO,SAASC,EAAcC,EAA2C,CACvE,IAAMC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,UAAU,IAAI,UAAU,EAC9BA,EAAM,aAAa,aAAc,MAAM,EACvC,IAAMC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,UAAU,IAAI,YAAa,cAAc,EAChDD,EAAM,YAAYC,CAAM,EACxB,IAAMC,EAAU,SAAS,cAAc,UAAU,EACjDA,EAAQ,MAAQ,UAChBD,EAAO,YAAYC,CAAO,EAC1B,IAAMC,EAAgD,CAAC,EACnDC,EACJ,QAAWC,KAAKN,EAAK,UAAW,CAC9B,GAAI,OAAOM,EAAE,KAAK,EAAI,EAAG,SACrBA,EAAE,eACJD,EAAQD,EAASE,EAAE,cAAc,KAAK,EACjCD,IACHA,EAAQD,EAASE,EAAE,cAAc,KAAK,EAAI,SAAS,cAAc,UAAU,EAC3ED,EAAM,MAAQC,EAAE,cAAc,MAC9BJ,EAAO,YAAYG,CAAK,IAG1BA,EAAQF,EAEV,IAAMI,EAAI,SAAS,cAAc,QAAQ,EACzCA,EAAE,MAAQD,EAAE,MACZC,EAAE,YAAcD,EAAE,MAClBC,EAAE,MAASD,EAAE,GAAyB,KAAK,QAAQ,OAAO,SAAS,OAAQ,EAAE,EAAE,QAAQ,IAAK,EAAE,EAC9FD,EAAM,YAAYE,CAAC,CACrB,CACA,OAAAP,EAAK,YAAYM,GAAK,CACpB,IAAME,EAAQF,EAAE,GAAyB,KACnCG,EAAQP,EAAO,cAAiC,YAAYM,CAAI,IAAI,GAAG,MACzEC,IACFP,EAAO,MAAQO,EAEnB,EAAG,EAAE,EACER,CACT,CC9CO,IAAMS,EAAN,KAAwB,CAa7B,YAAoBC,EAAiB,CAAjB,QAAAA,EAoBpB,KAAQ,aAAe,IAAY,CACjC,KAAK,GAAG,MAAM,YAAY,mBAAoB,OAAO,EACrD,KAAK,GAAG,MAAM,YAAY,mBAAoB,KAAK,GAAG,aAAe,IAAI,CAC3E,EAtBE,KAAK,UAAY,CAAC,EAClB,KAAK,WAAa,CAAC,EACnB,KAAK,cAAgB,KACrB,KAAK,aAAe,KACpB,KAAK,kBAAoB,CAAC,EAC1B,KAAK,KAAK,CACZ,CAEQ,MAAa,CACnB,KAAK,aAAa,EAClB,OAAO,iBAAiB,SAAU,KAAK,YAAY,EACnD,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EAChB,KAAK,gBACP,KAAK,cAAc,GAAG,SAAW,EAErC,CAOQ,gBAAiB,CACvB,KAAK,YAAYC,GAAY,CAC3B,KAAK,eAAeA,CAAQ,EAC5B,KAAK,YAAYA,CAAQ,CAG3B,CAAC,EAED,IAAMC,EAAU,IAAI,IACdC,EAAW,IAAI,qBACnBC,GAAW,CACT,QAAWC,KAASD,EAClBF,EAAQ,IAAIG,EAAM,OAAO,GAAIA,EAAM,gBAAkBA,EAAM,oBAAsB,CAAC,EAEpF,OAAW,CAACC,EAAIC,CAAc,IAAKL,EACjC,GAAIK,EAAgB,CAClB,IAAMC,EAAS,KAAK,UAAU,KAAKC,GAChCA,EAAE,IAA0B,KAAK,SAAS,IAAIH,CAAE,EAAE,CACrD,EACA,GAAIE,EACF,QAAWE,KAAM,KAAK,kBACpBA,EAAGF,CAAM,EAGb,KACF,CAEJ,EACA,CACE,UAAW,EACX,WAAY,mBACd,CACF,EAEA,QAAWG,KAAQ,KAAK,UAAU,IAAIF,GAAKA,EAAE,GAAG,aAAa,MAAM,CAAC,EAClE,GAAIE,EAAM,CACR,IAAML,EAAKK,EAAK,QAAQ,OAAO,SAAS,OAAQ,EAAE,EAAE,QAAQ,IAAK,EAAE,EAAE,QAAQ,IAAK,EAAE,EAC9EC,EAAS,SAAS,eAAeN,CAAE,EACrCM,GACFT,EAAS,QAAQS,CAAM,CAE3B,CAEJ,CAEA,YAAYF,EAA2BG,EAAQ,IAAW,CACxD,KAAK,kBAAkB,KAAKC,EAASJ,EAAIG,CAAK,CAAC,CACjD,CAEA,mBAAmBE,EAA6B,CAC9C,IAAIC,EAAW,KACf,QAAS,EAAID,EAAY,MAAQ,EAAG,EAAI,KAAK,UAAU,OAAQ,IAAK,CAClE,IAAME,EAAK,KAAK,UAAU,CAAC,EAC3B,GAAIA,EAAG,UAAW,CAChBD,EAAWC,EACX,KACF,CACF,CACID,GACF,KAAK,eAAeA,CAAQ,CAEhC,CAEA,uBAAuBD,EAA6B,CAClD,IAAIG,EAAW,KACf,QAAS,EAAIH,EAAY,MAAQ,EAAG,EAAI,GAAI,IAAK,CAC/C,IAAME,EAAK,KAAK,UAAU,CAAC,EAC3B,GAAIA,EAAG,UAAW,CAChBC,EAAWD,EACX,KACF,CACF,CACIC,GACF,KAAK,eAAeA,CAAQ,CAEhC,CAEA,qBAAqBH,EAA6B,CAC5CA,EAAY,eACd,KAAK,eAAeA,EAAY,aAAa,CAEjD,CAEA,qBAA4B,CAC1B,KAAK,eAAiB,KAAK,eAAe,KAAK,aAAa,CAC9D,CAEA,oBAA2B,CACzB,KAAK,cAAgB,KAAK,eAAe,KAAK,YAAY,CAC5D,CAEA,YAAYA,EAA6B,CACvC,QAAWI,KAAM,KAAK,GAAG,iBAAiB,wBAAwB,EAC5DA,IAAOJ,EAAY,KAClBI,EAAG,oBAAoB,SAASJ,EAAY,EAAE,GACjDI,EAAG,aAAa,gBAAiB,OAAO,GAG5C,QAAWA,KAAM,KAAK,GAAG,iBAAiB,iBAAiB,EACrDA,IAAOJ,EAAY,IACrBI,EAAG,aAAa,gBAAiB,OAAO,EAG5CJ,EAAY,GAAG,aAAa,gBAAiB,MAAM,EACnD,KAAK,uBAAuB,EAC5B,KAAK,eAAeA,EAAa,EAAK,CACxC,CAEA,eAAed,EAA0B,CACvC,IAAIc,EAA+Bd,EACnC,KAAOc,GACDA,EAAY,cACdA,EAAY,GAAG,aAAa,gBAAiB,MAAM,EAErDA,EAAcA,EAAY,cAE5B,KAAK,uBAAuB,CAC9B,CAEA,sBAAsBA,EAA6B,CACjD,QAAWE,KAAM,KAAK,UAChBA,EAAG,gBAAkBF,EAAY,eAAiBE,EAAG,cACvD,KAAK,eAAeA,CAAE,CAG5B,CAEA,iBAAiBF,EAA6B,CAC5C,IAAIK,EAAgB,KAEhBL,EAAY,WAAW,EACzBK,EAAgBL,EAEhBK,EAAgBL,EAAY,cAG1BK,IACFA,EAAc,GAAG,aAAa,gBAAiB,OAAO,EACtD,KAAK,uBAAuB,EAC5B,KAAK,eAAeA,CAAa,EAErC,CAEA,yBAAyBL,EAAuBM,EAAoB,CAClE,IAAIC,EAAeC,EACnBF,EAAOA,EAAK,YAAY,EAGxBC,EAAQP,EAAY,MAAQ,EACxBO,IAAU,KAAK,UAAU,SAC3BA,EAAQ,GAIVC,EAAQ,KAAK,mBAAmBD,EAAOD,CAAI,EAGvCE,IAAU,KACZA,EAAQ,KAAK,mBAAmB,EAAGF,CAAI,GAIrCE,EAAQ,IACV,KAAK,eAAe,KAAK,UAAUA,CAAK,CAAC,CAE7C,CAEQ,eAAgB,CACtB,IAAMC,EAAY,CAACxB,EAAiByB,IAA2B,CAC7D,IAAIR,EAAKQ,EACLC,EAAO1B,EAAG,kBACd,KAAO0B,IACDA,EAAK,UAAY,KAAOA,EAAK,UAAY,UAC3CT,EAAK,IAAIU,EAASD,EAAM,KAAMD,CAAK,EACnC,KAAK,UAAU,KAAKR,CAAE,EACtB,KAAK,WAAW,KAAKA,EAAG,MAAM,UAAU,EAAG,CAAC,EAAE,YAAY,CAAC,GAEzDS,EAAK,mBACPF,EAAUE,EAAMT,CAAE,EAEpBS,EAAOA,EAAK,kBAEhB,EACAF,EAAU,KAAK,GAAmB,IAAI,EACtC,KAAK,UAAU,IAAI,CAACP,EAAIW,IAASX,EAAG,MAAQW,CAAI,CAClD,CAEQ,wBAA+B,CACrC,KAAK,cAAgB,KAAK,UAAU,CAAC,EAErC,QAAWX,KAAM,KAAK,UAAW,CAC/B,IAAIY,EAASZ,EAAG,cAEhB,IADAA,EAAG,UAAY,GACRY,GAAUA,EAAO,KAAO,KAAK,IAC7BA,EAAO,WAAW,IACrBZ,EAAG,UAAY,IAEjBY,EAASA,EAAO,cAEdZ,EAAG,YACL,KAAK,aAAeA,EAExB,CACF,CAEQ,eAAehB,EAAoB6B,EAAU,GAAM,CACzD7B,EAAS,GAAG,SAAW,EACnB6B,GACF7B,EAAS,GAAG,MAAM,EAEpB,QAAWgB,KAAM,KAAK,UAChBA,IAAOhB,IACTgB,EAAG,GAAG,SAAW,GAGvB,CAEQ,mBAAmBc,EAAoBV,EAAsB,CACnE,QAAS,EAAIU,EAAY,EAAI,KAAK,WAAW,OAAQ,IACnD,GAAI,KAAK,UAAU,CAAC,EAAE,WAAaV,IAAS,KAAK,WAAW,CAAC,EAC3D,OAAO,EAGX,MAAO,EACT,CACF,EAEMM,EAAN,KAAe,CAYb,YAAY3B,EAAiBgC,EAA4BP,EAAwB,CAC/EzB,EAAG,SAAW,GACd,KAAK,GAAKA,EACV,KAAK,cAAgByB,EACrB,KAAK,MAAQzB,EAAG,aAAa,KAAK,GAAK,GACvC,KAAK,KAAOgC,EACZ,KAAK,OAASP,GAAO,OAAS,GAAK,EACnC,KAAK,MAAQ,EAEb,IAAMI,EAAS7B,EAAG,cACd6B,GAAQ,QAAQ,YAAY,IAAM,MACpCA,GAAQ,aAAa,OAAQ,MAAM,EAErC7B,EAAG,aAAa,aAAc,KAAK,MAAQ,EAAE,EACzCA,EAAG,aAAa,YAAY,IAC9B,KAAK,MAAQA,GAAI,aAAa,YAAY,GAAG,KAAK,GAAK,IAGzD,KAAK,aAAe,GACpB,KAAK,UAAY,GACjB,KAAK,UAAY,CAAC,CAACyB,EAEnB,IAAIC,EAAO1B,EAAG,mBACd,KAAO0B,GAAM,CACX,GAAIA,EAAK,QAAQ,YAAY,GAAK,KAAM,CACtC,IAAMO,EAAU,GAAGR,GAAO,OAAS,EAAE,cAAc,KAAK,KAAK,GAAG,QAAQ,UAAW,GAAG,EACtFzB,EAAG,aAAa,YAAaiC,CAAO,EACpCjC,EAAG,aAAa,gBAAiB,OAAO,EACxC0B,EAAK,aAAa,OAAQ,OAAO,EACjCA,EAAK,aAAa,KAAMO,CAAO,EAC/B,KAAK,aAAe,GACpB,KACF,CAEAP,EAAOA,EAAK,kBACd,CACA,KAAK,KAAK,CACZ,CAEQ,MAAO,CACb,KAAK,GAAG,SAAW,GACd,KAAK,GAAG,aAAa,MAAM,GAC9B,KAAK,GAAG,aAAa,OAAQ,UAAU,EAEzC,KAAK,GAAG,iBAAiB,UAAW,KAAK,cAAc,KAAK,IAAI,CAAC,EACjE,KAAK,GAAG,iBAAiB,QAAS,KAAK,YAAY,KAAK,IAAI,CAAC,EAC7D,KAAK,GAAG,iBAAiB,QAAS,KAAK,YAAY,KAAK,IAAI,CAAC,EAC7D,KAAK,GAAG,iBAAiB,OAAQ,KAAK,WAAW,KAAK,IAAI,CAAC,CAC7D,CAEA,YAAa,CACX,OAAI,KAAK,aACA,KAAK,GAAG,aAAa,eAAe,IAAM,OAG5C,EACT,CAEA,YAAa,CACX,OAAO,KAAK,GAAG,aAAa,eAAe,IAAM,MACnD,CAEQ,YAAYQ,EAAmB,CAEjCA,EAAM,SAAW,KAAK,IAAMA,EAAM,SAAW,KAAK,GAAG,oBAGrD,KAAK,eACH,KAAK,WAAW,GAAK,KAAK,WAAW,EACvC,KAAK,KAAK,iBAAiB,IAAI,EAE/B,KAAK,KAAK,eAAe,IAAI,EAE/BA,EAAM,gBAAgB,GAExB,KAAK,KAAK,YAAY,IAAI,EAC5B,CAEQ,aAAc,CACpB,IAAIlC,EAAK,KAAK,GACV,KAAK,eACPA,EAAMA,EAAG,mBAAqCA,GAEhDA,EAAG,UAAU,IAAI,OAAO,CAC1B,CAEQ,YAAa,CACnB,IAAIA,EAAK,KAAK,GACV,KAAK,eACPA,EAAMA,EAAG,mBAAqCA,GAEhDA,EAAG,UAAU,OAAO,OAAO,CAC7B,CAEQ,cAAckC,EAAsB,CAC1C,GAAIA,EAAM,QAAUA,EAAM,SAAWA,EAAM,QACzC,OAGF,IAAIC,EAAW,GACf,OAAQD,EAAM,IAAK,CACjB,IAAK,IACL,IAAK,QACC,KAAK,cACH,KAAK,WAAW,GAAK,KAAK,WAAW,EACvC,KAAK,KAAK,iBAAiB,IAAI,EAE/B,KAAK,KAAK,eAAe,IAAI,EAE/BC,EAAW,IAEXD,EAAM,gBAAgB,EAExB,KAAK,KAAK,YAAY,IAAI,EAC1B,MAEF,IAAK,UACH,KAAK,KAAK,uBAAuB,IAAI,EACrCC,EAAW,GACX,MAEF,IAAK,YACH,KAAK,KAAK,mBAAmB,IAAI,EACjCA,EAAW,GACX,MAEF,IAAK,aACC,KAAK,eACH,KAAK,WAAW,EAClB,KAAK,KAAK,mBAAmB,IAAI,EAEjC,KAAK,KAAK,eAAe,IAAI,GAGjCA,EAAW,GACX,MAEF,IAAK,YACC,KAAK,cAAgB,KAAK,WAAW,GACvC,KAAK,KAAK,iBAAiB,IAAI,EAC/BA,EAAW,IAEP,KAAK,YACP,KAAK,KAAK,qBAAqB,IAAI,EACnCA,EAAW,IAGf,MAEF,IAAK,OACH,KAAK,KAAK,oBAAoB,EAC9BA,EAAW,GACX,MAEF,IAAK,MACH,KAAK,KAAK,mBAAmB,EAC7BA,EAAW,GACX,MAEF,QACMD,EAAM,IAAI,SAAW,GAAKA,EAAM,IAAI,MAAM,IAAI,IAC5CA,EAAM,KAAO,IACf,KAAK,KAAK,sBAAsB,IAAI,EAEpC,KAAK,KAAK,yBAAyB,KAAMA,EAAM,GAAG,EAEpDC,EAAW,IAEb,KACJ,CAEIA,IACFD,EAAM,gBAAgB,EACtBA,EAAM,eAAe,EAEzB,CACF,EAGA,SAASpB,EAA4CsB,EAASC,EAAc,CAC1E,IAAIC,EACJ,MAAO,IAAIC,IAAwB,CACjC,IAAMC,EAAQ,IAAM,CAClBF,EAAU,KACVF,EAAK,GAAGG,CAAI,CACd,EACID,GACF,aAAaA,CAAO,EAEtBA,EAAU,WAAWE,EAAOH,CAAI,CAClC,CACF,CCvdA,OAAO,iBAAiB,OAAQ,IAAM,CACpC,IAAMI,EAAO,SAAS,cAA2B,UAAU,EAC3D,GAAIA,EAAM,CACR,IAAMC,EAAW,IAAIC,EAAkBF,CAAI,EACrCG,EAASC,EAAcH,CAAQ,EACrC,SAAS,cAAc,mBAAmB,GAAG,YAAYE,CAAM,CACjE,CAEA,IAAME,EAAY,SAAS,cAA2B,mBAAmB,EACzE,GAAIA,EAAW,CACb,IAAMJ,EAAW,IAAIC,EAAkBG,CAAS,EAC1CF,EAASC,EAAcH,CAAQ,EACrC,SAAS,cAAc,qBAAqB,GAAG,YAAYE,CAAM,CACnE,CAEA,QAAWG,KAAM,SAAS,iBAAiB,iBAAiB,EAC1DA,EAAG,iBAAiB,QAASC,GAAK,CAChC,IAAMC,EAASD,EAAE,cAAoC,aAAa,YAAY,EAC9E,SAAS,gBAAgB,aAAa,aAAc,OAAOC,CAAK,CAAC,CACnE,CAAC,EAEH,QAAWF,KAAM,SAAS,iBAAiB,kBAAkB,EAC3DA,EAAG,iBAAiB,QAASC,GAAK,CAChC,IAAMC,EAASD,EAAE,cAAoC,aAAa,YAAY,EAC9E,SAAS,gBAAgB,aAAa,cAAe,OAAOC,CAAK,CAAC,CACpE,CAAC,EAGH,QAAWF,KAAM,SAAS,iBAAoC,eAAe,EAC3E,IAAIG,EAAoBH,CAAE,EAG5B,QAAWA,KAAM,SAAS,iBAAoC,cAAc,EAC1E,IAAII,EAAmBJ,CAAE,CAE7B,CAAC,EAED,eAAe,OACb,WACA,cAAc,WAAY,CACxB,aAAc,CACZ,MAAM,EACN,KAAK,MAAM,YAAY,UAAW,UAAU,EAG5C,IAAMK,EAAO,KAAK,GAClB,KAAK,gBAAgB,IAAI,EACzB,KAAK,UAAY;AAAA,mCACYA,CAAI;AAAA;AAAA,qBAElBA,CAAI,wCAAwCA,EACxD,QAAQ,WAAY,EAAE,EACtB,WAAW,IAAK,GAAG,CAAC;AAAA,qDACwBA,CAAI;AAAA;AAAA,QAGnD,KAAK,cAAc,KAAK,GAAG,iBAAiB,QAAS,IAAM,CACzD,UAAU,UAAU,UAAU,OAAOA,CAAI,GAAG,CAC9C,CAAC,CACH,CACF,CACF,EAEA,eAAe,OACb,UACA,cAAc,WAAY,CACxB,aAAc,CACZ,MAAM,EACN,KAAK,MAAM,YAAY,UAAW,UAAU,EAG5C,IAAMA,EAAO,KAAK,aAAa,MAAM,EACrC,KAAK,UAAY,eAAeA,CAAI,uCAAuCA,EAAK,WAC9E,IACA,GACF,CAAC;AAAA;AAAA,iFAE0EA,CAAI;AAAA;AAAA,OAGjF,CACF,CACF,EAEA,eAAe,OACb,WACA,cAAc,WAAY,CACxB,aAAc,CACZ,MAAM,EACN,KAAK,MAAM,YAAY,UAAW,UAAU,EAC5C,IAAMC,EAAW,KAAK,aAAa,UAAU,EAC7C,GAAI,CAACA,EAAU,OACf,IAAMC,EAAO,OAAS,SAAS,cAAcD,CAAQ,GAAG,UACxD,KAAK,UAAY;AAAA,kCACWC,CAAI;AAAA,OAElC,CACF,CACF,EAEA,eAAe,OACb,eACA,cAAc,WAAY,CACxB,aAAc,CACZ,MAAM,EACN,KAAK,MAAM,YAAY,UAAW,UAAU,EAC5C,IAAMA,EAAO,KAAK,UACZC,EAAS,KAAK,GAAK,QAAQ,KAAK,EAAE,IAAM,GAC9C,KAAK,gBAAgB,IAAI,EACzB,IAAIC,EAAS,wCAA0CC,EAAOC,EAAKJ,CAAI,CAAC,EAAI,SACxE,KAAK,aAAa,WAAW,IAC/BE,EAAS,sEAAsEA,CAAM,cAEvF,KAAK,UAAY,QAAQD,CAAM,IAAID,CAAI,UAAUE,CAAM,GACvD,KAAK,cAAc,KAAK,GAAG,iBAAiB,QAAS,IAAM,CACzD,UAAU,UAAU,UAAUF,CAAI,CACpC,CAAC,CACH,CACF,CACF,EAQA,SAASI,EAAKJ,EAAc,CAC1B,OAAOA,EACJ,MAAM;AAAA,CAAI,EACV,OACC,CAACK,EAAKC,IAAQ,CACZ,GAAID,EAAI,OAAO,SAAW,EAAG,CAC3B,IAAME,EAAQD,EAAI,QAAQ,GAAG,EAC7BD,EAAI,MAAQE,IAAU,GAAK,EAAIA,CACjC,CACA,OAAAD,EAAMA,EAAI,MAAMD,EAAI,KAAK,EACrBC,GACFD,EAAI,OAAO,KAAKC,CAAG,EAEdD,CACT,EACA,CAAE,OAAQ,CAAC,EAAG,MAAO,CAAE,CACzB,EACC,OAAO,KAAK;AAAA,CAAI,CACrB,CAEA,SAASF,EAAOH,EAAc,CAG5B,OAAQA,GAAc,WAAW,IAAK,MAAM,GAAG,WAAW,IAAK,MAAM,CACvE",
-  "names": ["CarouselController", "el", "index", "d", "s", "i", "v", "arrows", "dots", "li", "button", "SelectNavController", "el", "e", "target", "href", "makeSelectNav", "tree", "label", "select", "outline", "groupMap", "group", "t", "o", "hash", "value", "TreeNavController", "el", "treeitem", "targets", "observer", "entries", "entry", "id", "isIntersecting", "active", "t", "fn", "href", "target", "delay", "debounce", "currentItem", "nextItem", "ti", "prevItem", "l1", "groupTreeitem", "char", "start", "index", "findItems", "group", "curr", "TreeItem", "idx", "parent", "focusEl", "startIndex", "treeObj", "groupId", "event", "captured", "func", "wait", "timeout", "args", "later", "tree", "treeCtrl", "TreeNavController", "select", "makeSelectNav", "guideTree", "el", "e", "value", "SelectNavController", "CarouselController", "name", "selector", "html", "idAttr", "markup", "escape", "trim", "acc", "val", "start"]
+  "mappings": "AAWO,IAAMA,EAAN,KAAyB,CAqB9B,YAAoBC,EAAiB,CAAjB,QAAAA,EAsEpB,KAAQ,UAAaC,GAAkB,CACrC,KAAK,aAAeA,EAAQ,KAAK,OAAO,QAAU,KAAK,OAAO,OAC9D,KAAK,GAAG,aAAa,mBAAoB,OAAO,KAAK,WAAW,CAAC,EACjE,QAAWC,KAAK,KAAK,KACnBA,EAAE,UAAU,OAAO,yBAAyB,EAE9C,KAAK,KAAK,KAAK,WAAW,EAAE,UAAU,IAAI,yBAAyB,EACnE,QAAWC,KAAK,KAAK,OACnBA,EAAE,aAAa,cAAe,MAAM,EAEtC,KAAK,OAAO,KAAK,WAAW,EAAE,gBAAgB,aAAa,EAC3D,KAAK,WAAW,YAAc,UAAY,KAAK,YAAc,GAAK,OAAS,KAAK,OAAO,MACzF,EAlHF,IAAAC,EAiCI,KAAK,OAAS,MAAM,KAAKJ,EAAG,iBAAiB,oBAAoB,CAAC,EAClE,KAAK,KAAO,CAAC,EACb,KAAK,WAAa,SAAS,cAAc,KAAK,EAC9C,KAAK,YAAc,QAAOI,EAAAJ,EAAG,aAAa,kBAAkB,IAAlC,KAAAI,EAAuC,CAAC,EAElE,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,CACtB,CAEQ,YAAa,CACnB,OAAW,CAACC,EAAGC,CAAC,IAAK,KAAK,OAAO,QAAQ,EACnCD,IAAM,KAAK,aACfC,EAAE,aAAa,cAAe,MAAM,CAExC,CAEQ,YAAa,CAnDvB,IAAAF,EAAAG,EAoDI,IAAMC,EAAS,SAAS,cAAc,IAAI,EAC1CA,EAAO,UAAU,IAAI,oBAAoB,EACzCA,EAAO,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAYnBJ,EAAAI,EACG,cAAc,wBAAwB,IADzC,MAAAJ,EAEI,iBAAiB,QAAS,IAAM,KAAK,UAAU,KAAK,YAAc,CAAC,IACvEG,EAAAC,EACG,cAAc,wBAAwB,IADzC,MAAAD,EAEI,iBAAiB,QAAS,IAAM,KAAK,UAAU,KAAK,YAAc,CAAC,GACvE,KAAK,GAAG,OAAOC,CAAM,CACvB,CAEQ,UAAW,CACjB,IAAMC,EAAO,SAAS,cAAc,IAAI,EACxCA,EAAK,UAAU,IAAI,kBAAkB,EACrC,QAASJ,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,IAAK,CAC3C,IAAMK,EAAK,SAAS,cAAc,IAAI,EAChCC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,UAAU,IAAI,iBAAiB,EAClCN,IAAM,KAAK,aACbM,EAAO,UAAU,IAAI,yBAAyB,EAEhDA,EAAO,UAAY,4CAA4CN,EAAI,WACnEM,EAAO,iBAAiB,QAAS,IAAM,KAAK,UAAUN,CAAC,CAAC,EACxDK,EAAG,OAAOC,CAAM,EAChBF,EAAK,OAAOC,CAAE,EACd,KAAK,KAAK,KAAKC,CAAM,EAEvB,KAAK,GAAG,OAAOF,CAAI,CACrB,CAEQ,gBAAiB,CACvB,KAAK,WAAW,aAAa,YAAa,QAAQ,EAClD,KAAK,WAAW,aAAa,cAAe,MAAM,EAClD,KAAK,WAAW,aAAa,QAAS,sBAAsB,EAC5D,KAAK,WAAW,YAAc,SAAS,KAAK,YAAc,QAAQ,KAAK,OAAO,SAC9E,KAAK,GAAG,YAAY,KAAK,UAAU,CACrC,CAeF,EC1GO,IAAMG,EAAN,KAA0B,CAC/B,YAAoBC,EAAa,CAAb,QAAAA,EAClB,KAAK,GAAG,iBAAiB,SAAUC,GAAK,CACtC,IAAMC,EAASD,EAAE,OACbE,EAAOD,EAAO,MACbA,EAAO,MAAM,WAAW,GAAG,IAC9BC,EAAO,IAAMA,GAEf,OAAO,SAAS,KAAOA,CACzB,CAAC,CACH,CACF,EAEO,SAASC,EAAcC,EAA2C,CACvE,IAAMC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,UAAU,IAAI,UAAU,EAC9BA,EAAM,aAAa,aAAc,MAAM,EACvC,IAAMC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,UAAU,IAAI,YAAa,cAAc,EAChDD,EAAM,YAAYC,CAAM,EACxB,IAAMC,EAAU,SAAS,cAAc,UAAU,EACjDA,EAAQ,MAAQ,UAChBD,EAAO,YAAYC,CAAO,EAC1B,IAAMC,EAAgD,CAAC,EACnDC,EACJ,QAAWC,KAAKN,EAAK,UAAW,CAC9B,GAAI,OAAOM,EAAE,KAAK,EAAI,EAAG,SACrBA,EAAE,eACJD,EAAQD,EAASE,EAAE,cAAc,KAAK,EACjCD,IACHA,EAAQD,EAASE,EAAE,cAAc,KAAK,EAAI,SAAS,cAAc,UAAU,EAC3ED,EAAM,MAAQC,EAAE,cAAc,MAC9BJ,EAAO,YAAYG,CAAK,IAG1BA,EAAQF,EAEV,IAAMI,EAAI,SAAS,cAAc,QAAQ,EACzCA,EAAE,MAAQD,EAAE,MACZC,EAAE,YAAcD,EAAE,MAClBC,EAAE,MAASD,EAAE,GAAyB,KAAK,QAAQ,OAAO,SAAS,OAAQ,EAAE,EAAE,QAAQ,IAAK,EAAE,EAC9FD,EAAM,YAAYE,CAAC,EAErB,OAAAP,EAAK,YAAYM,GAAK,CApDxB,IAAAE,EAqDI,IAAMC,EAAQH,EAAE,GAAyB,KACnCI,GAAQF,EAAAN,EAAO,cAAiC,YAAYO,KAAQ,IAA5D,YAAAD,EAA+D,MACzEE,IACFR,EAAO,MAAQQ,EAEnB,EAAG,EAAE,EACET,CACT,CC9CO,IAAMU,EAAN,KAAwB,CAa7B,YAAoBC,EAAiB,CAAjB,QAAAA,EAoBpB,KAAQ,aAAe,IAAY,CACjC,KAAK,GAAG,MAAM,YAAY,mBAAoB,OAAO,EACrD,KAAK,GAAG,MAAM,YAAY,mBAAoB,KAAK,GAAG,aAAe,IAAI,CAC3E,EAtBE,KAAK,UAAY,CAAC,EAClB,KAAK,WAAa,CAAC,EACnB,KAAK,cAAgB,KACrB,KAAK,aAAe,KACpB,KAAK,kBAAoB,CAAC,EAC1B,KAAK,KAAK,CACZ,CAEQ,MAAa,CACnB,KAAK,aAAa,EAClB,OAAO,iBAAiB,SAAU,KAAK,YAAY,EACnD,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EAChB,KAAK,gBACP,KAAK,cAAc,GAAG,SAAW,EAErC,CAOQ,gBAAiB,CACvB,KAAK,YAAYC,GAAY,CAC3B,KAAK,eAAeA,CAAQ,EAC5B,KAAK,YAAYA,CAAQ,CAG3B,CAAC,EAED,IAAMC,EAAU,IAAI,IACdC,EAAW,IAAI,qBACnBC,GAAW,CACT,QAAWC,KAASD,EAClBF,EAAQ,IAAIG,EAAM,OAAO,GAAIA,EAAM,gBAAkBA,EAAM,oBAAsB,CAAC,EAEpF,OAAW,CAACC,EAAIC,CAAc,IAAKL,EACjC,GAAIK,EAAgB,CAClB,IAAMC,EAAS,KAAK,UAAU,KAAKC,GAAE,CApEjD,IAAAC,EAqEe,OAAAA,EAAAD,EAAE,KAAF,YAAAC,EAA4B,KAAK,SAAS,IAAIJ,KACjD,EACA,GAAIE,EACF,QAAWG,KAAM,KAAK,kBACpBA,EAAGH,CAAM,EAGb,MAGN,EACA,CACE,UAAW,EACX,WAAY,mBACd,CACF,EAEA,QAAWI,KAAQ,KAAK,UAAU,IAAIH,GAAKA,EAAE,GAAG,aAAa,MAAM,CAAC,EAClE,GAAIG,EAAM,CACR,IAAMN,EAAKM,EAAK,QAAQ,OAAO,SAAS,OAAQ,EAAE,EAAE,QAAQ,IAAK,EAAE,EAAE,QAAQ,IAAK,EAAE,EAC9EC,EAAS,SAAS,eAAeP,CAAE,EACrCO,GACFV,EAAS,QAAQU,CAAM,EAI/B,CAEA,YAAYF,EAA2BG,EAAQ,IAAW,CACxD,KAAK,kBAAkB,KAAKC,EAASJ,EAAIG,CAAK,CAAC,CACjD,CAEA,mBAAmBE,EAA6B,CAC9C,IAAIC,EAAW,KACf,QAAS,EAAID,EAAY,MAAQ,EAAG,EAAI,KAAK,UAAU,OAAQ,IAAK,CAClE,IAAME,EAAK,KAAK,UAAU,CAAC,EAC3B,GAAIA,EAAG,UAAW,CAChBD,EAAWC,EACX,OAGAD,GACF,KAAK,eAAeA,CAAQ,CAEhC,CAEA,uBAAuBD,EAA6B,CAClD,IAAIG,EAAW,KACf,QAAS,EAAIH,EAAY,MAAQ,EAAG,EAAI,GAAI,IAAK,CAC/C,IAAME,EAAK,KAAK,UAAU,CAAC,EAC3B,GAAIA,EAAG,UAAW,CAChBC,EAAWD,EACX,OAGAC,GACF,KAAK,eAAeA,CAAQ,CAEhC,CAEA,qBAAqBH,EAA6B,CAC5CA,EAAY,eACd,KAAK,eAAeA,EAAY,aAAa,CAEjD,CAEA,qBAA4B,CAC1B,KAAK,eAAiB,KAAK,eAAe,KAAK,aAAa,CAC9D,CAEA,oBAA2B,CACzB,KAAK,cAAgB,KAAK,eAAe,KAAK,YAAY,CAC5D,CAEA,YAAYA,EAA6B,CA/I3C,IAAAN,EAgJI,QAAWU,KAAM,KAAK,GAAG,iBAAiB,wBAAwB,EAC5DA,IAAOJ,EAAY,MAClBN,EAAAU,EAAG,qBAAH,MAAAV,EAAuB,SAASM,EAAY,KAC/CI,EAAG,aAAa,gBAAiB,OAAO,GAG5C,QAAWA,KAAM,KAAK,GAAG,iBAAiB,iBAAiB,EACrDA,IAAOJ,EAAY,IACrBI,EAAG,aAAa,gBAAiB,OAAO,EAG5CJ,EAAY,GAAG,aAAa,gBAAiB,MAAM,EACnD,KAAK,uBAAuB,EAC5B,KAAK,eAAeA,EAAa,EAAK,CACxC,CAEA,eAAef,EAA0B,CACvC,IAAIe,EAA+Bf,EACnC,KAAOe,GACDA,EAAY,cACdA,EAAY,GAAG,aAAa,gBAAiB,MAAM,EAErDA,EAAcA,EAAY,cAE5B,KAAK,uBAAuB,CAC9B,CAEA,sBAAsBA,EAA6B,CACjD,QAAWE,KAAM,KAAK,UAChBA,EAAG,gBAAkBF,EAAY,eAAiBE,EAAG,cACvD,KAAK,eAAeA,CAAE,CAG5B,CAEA,iBAAiBF,EAA6B,CAC5C,IAAIK,EAAgB,KAEhBL,EAAY,WAAW,EACzBK,EAAgBL,EAEhBK,EAAgBL,EAAY,cAG1BK,IACFA,EAAc,GAAG,aAAa,gBAAiB,OAAO,EACtD,KAAK,uBAAuB,EAC5B,KAAK,eAAeA,CAAa,EAErC,CAEA,yBAAyBL,EAAuBM,EAAoB,CAClE,IAAIC,EAAeC,EACnBF,EAAOA,EAAK,YAAY,EAGxBC,EAAQP,EAAY,MAAQ,EACxBO,IAAU,KAAK,UAAU,SAC3BA,EAAQ,GAIVC,EAAQ,KAAK,mBAAmBD,EAAOD,CAAI,EAGvCE,IAAU,KACZA,EAAQ,KAAK,mBAAmB,EAAGF,CAAI,GAIrCE,EAAQ,IACV,KAAK,eAAe,KAAK,UAAUA,CAAK,CAAC,CAE7C,CAEQ,eAAgB,CACtB,IAAMC,EAAY,CAACzB,EAAiB0B,IAA2B,CAC7D,IAAIR,EAAKQ,EACLC,EAAO3B,EAAG,kBACd,KAAO2B,IACDA,EAAK,UAAY,KAAOA,EAAK,UAAY,UAC3CT,EAAK,IAAIU,EAASD,EAAM,KAAMD,CAAK,EACnC,KAAK,UAAU,KAAKR,CAAE,EACtB,KAAK,WAAW,KAAKA,EAAG,MAAM,UAAU,EAAG,CAAC,EAAE,YAAY,CAAC,GAEzDS,EAAK,mBACPF,EAAUE,EAAMT,CAAE,EAEpBS,EAAOA,EAAK,kBAEhB,EACAF,EAAU,KAAK,GAAmB,IAAI,EACtC,KAAK,UAAU,IAAI,CAACP,EAAIW,IAASX,EAAG,MAAQW,CAAI,CAClD,CAEQ,wBAA+B,CACrC,KAAK,cAAgB,KAAK,UAAU,CAAC,EAErC,QAAWX,KAAM,KAAK,UAAW,CAC/B,IAAIY,EAASZ,EAAG,cAEhB,IADAA,EAAG,UAAY,GACRY,GAAUA,EAAO,KAAO,KAAK,IAC7BA,EAAO,WAAW,IACrBZ,EAAG,UAAY,IAEjBY,EAASA,EAAO,cAEdZ,EAAG,YACL,KAAK,aAAeA,GAG1B,CAEQ,eAAejB,EAAoB8B,EAAU,GAAM,CACzD9B,EAAS,GAAG,SAAW,EACnB8B,GACF9B,EAAS,GAAG,MAAM,EAEpB,QAAWiB,KAAM,KAAK,UAChBA,IAAOjB,IACTiB,EAAG,GAAG,SAAW,GAGvB,CAEQ,mBAAmBc,EAAoBV,EAAsB,CACnE,QAAS,EAAIU,EAAY,EAAI,KAAK,WAAW,OAAQ,IACnD,GAAI,KAAK,UAAU,CAAC,EAAE,WAAaV,IAAS,KAAK,WAAW,CAAC,EAC3D,OAAO,EAGX,MAAO,EACT,CACF,EAEMM,EAAN,KAAe,CAYb,YAAY5B,EAAiBiC,EAA4BP,EAAwB,CAnSnF,IAAAhB,EAAAwB,EAAAC,EAAAC,EAAAC,EAoSIrC,EAAG,SAAW,GACd,KAAK,GAAKA,EACV,KAAK,cAAgB0B,EACrB,KAAK,OAAQQ,GAAAxB,EAAAV,EAAG,cAAH,YAAAU,EAAgB,SAAhB,KAAAwB,EAA0B,GACvC,KAAK,KAAOD,EACZ,KAAK,QAASP,GAAA,YAAAA,EAAO,QAAS,GAAK,EACnC,KAAK,MAAQ,EAEb,IAAMI,EAAS9B,EAAG,eACd8B,GAAA,YAAAA,EAAQ,QAAQ,iBAAkB,OACpCA,GAAA,MAAAA,EAAQ,aAAa,OAAQ,SAE/B9B,EAAG,aAAa,aAAc,KAAK,MAAQ,EAAE,EACzCA,EAAG,aAAa,YAAY,IAC9B,KAAK,OAAQoC,GAAAD,EAAAnC,GAAA,YAAAA,EAAI,aAAa,gBAAjB,YAAAmC,EAAgC,SAAhC,KAAAC,EAA0C,IAGzD,KAAK,aAAe,GACpB,KAAK,UAAY,GACjB,KAAK,UAAY,CAAC,CAACV,EAEnB,IAAIC,EAAO3B,EAAG,mBACd,KAAO2B,GAAM,CACX,GAAIA,EAAK,QAAQ,YAAY,GAAK,KAAM,CACtC,IAAMW,EAAU,IAAGD,EAAAX,GAAA,YAAAA,EAAO,QAAP,KAAAW,EAAgB,gBAAgB,KAAK,QAAQ,QAAQ,UAAW,GAAG,EACtFrC,EAAG,aAAa,YAAasC,CAAO,EACpCtC,EAAG,aAAa,gBAAiB,OAAO,EACxC2B,EAAK,aAAa,OAAQ,OAAO,EACjCA,EAAK,aAAa,KAAMW,CAAO,EAC/B,KAAK,aAAe,GACpB,MAGFX,EAAOA,EAAK,mBAEd,KAAK,KAAK,CACZ,CAEQ,MAAO,CACb,KAAK,GAAG,SAAW,GACd,KAAK,GAAG,aAAa,MAAM,GAC9B,KAAK,GAAG,aAAa,OAAQ,UAAU,EAEzC,KAAK,GAAG,iBAAiB,UAAW,KAAK,cAAc,KAAK,IAAI,CAAC,EACjE,KAAK,GAAG,iBAAiB,QAAS,KAAK,YAAY,KAAK,IAAI,CAAC,EAC7D,KAAK,GAAG,iBAAiB,QAAS,KAAK,YAAY,KAAK,IAAI,CAAC,EAC7D,KAAK,GAAG,iBAAiB,OAAQ,KAAK,WAAW,KAAK,IAAI,CAAC,CAC7D,CAEA,YAAa,CACX,OAAI,KAAK,aACA,KAAK,GAAG,aAAa,eAAe,IAAM,OAG5C,EACT,CAEA,YAAa,CACX,OAAO,KAAK,GAAG,aAAa,eAAe,IAAM,MACnD,CAEQ,YAAYY,EAAmB,CAEjCA,EAAM,SAAW,KAAK,IAAMA,EAAM,SAAW,KAAK,GAAG,oBAGrD,KAAK,eACH,KAAK,WAAW,GAAK,KAAK,WAAW,EACvC,KAAK,KAAK,iBAAiB,IAAI,EAE/B,KAAK,KAAK,eAAe,IAAI,EAE/BA,EAAM,gBAAgB,GAExB,KAAK,KAAK,YAAY,IAAI,EAC5B,CAEQ,aAAc,CAjXxB,IAAA7B,EAkXI,IAAIV,EAAK,KAAK,GACV,KAAK,eACPA,GAAMU,EAAAV,EAAG,oBAAH,KAAAU,EAAwCV,GAEhDA,EAAG,UAAU,IAAI,OAAO,CAC1B,CAEQ,YAAa,CAzXvB,IAAAU,EA0XI,IAAIV,EAAK,KAAK,GACV,KAAK,eACPA,GAAMU,EAAAV,EAAG,oBAAH,KAAAU,EAAwCV,GAEhDA,EAAG,UAAU,OAAO,OAAO,CAC7B,CAEQ,cAAcuC,EAAsB,CAC1C,GAAIA,EAAM,QAAUA,EAAM,SAAWA,EAAM,QACzC,OAGF,IAAIC,EAAW,GACf,OAAQD,EAAM,IAAK,CACjB,IAAK,IACL,IAAK,QACC,KAAK,cACH,KAAK,WAAW,GAAK,KAAK,WAAW,EACvC,KAAK,KAAK,iBAAiB,IAAI,EAE/B,KAAK,KAAK,eAAe,IAAI,EAE/BC,EAAW,IAEXD,EAAM,gBAAgB,EAExB,KAAK,KAAK,YAAY,IAAI,EAC1B,MAEF,IAAK,UACH,KAAK,KAAK,uBAAuB,IAAI,EACrCC,EAAW,GACX,MAEF,IAAK,YACH,KAAK,KAAK,mBAAmB,IAAI,EACjCA,EAAW,GACX,MAEF,IAAK,aACC,KAAK,eACH,KAAK,WAAW,EAClB,KAAK,KAAK,mBAAmB,IAAI,EAEjC,KAAK,KAAK,eAAe,IAAI,GAGjCA,EAAW,GACX,MAEF,IAAK,YACC,KAAK,cAAgB,KAAK,WAAW,GACvC,KAAK,KAAK,iBAAiB,IAAI,EAC/BA,EAAW,IAEP,KAAK,YACP,KAAK,KAAK,qBAAqB,IAAI,EACnCA,EAAW,IAGf,MAEF,IAAK,OACH,KAAK,KAAK,oBAAoB,EAC9BA,EAAW,GACX,MAEF,IAAK,MACH,KAAK,KAAK,mBAAmB,EAC7BA,EAAW,GACX,MAEF,QACMD,EAAM,IAAI,SAAW,GAAKA,EAAM,IAAI,MAAM,IAAI,IAC5CA,EAAM,KAAO,IACf,KAAK,KAAK,sBAAsB,IAAI,EAEpC,KAAK,KAAK,yBAAyB,KAAMA,EAAM,GAAG,EAEpDC,EAAW,IAEb,KACJ,CAEIA,IACFD,EAAM,gBAAgB,EACtBA,EAAM,eAAe,EAEzB,CACF,EAGA,SAASxB,EAA4C0B,EAASC,EAAc,CAC1E,IAAIC,EACJ,MAAO,IAAIC,IAAwB,CACjC,IAAMC,EAAQ,IAAM,CAClBF,EAAU,KACVF,EAAK,GAAGG,CAAI,CACd,EACID,GACF,aAAaA,CAAO,EAEtBA,EAAU,WAAWE,EAAOH,CAAI,CAClC,CACF,CCvdA,OAAO,iBAAiB,OAAQ,IAAM,CAXtC,IAAAI,EAAAC,EAYE,IAAMC,EAAO,SAAS,cAA2B,UAAU,EAC3D,GAAIA,EAAM,CACR,IAAMC,EAAW,IAAIC,EAAkBF,CAAI,EACrCG,EAASC,EAAcH,CAAQ,GACrCH,EAAA,SAAS,cAAc,mBAAmB,IAA1C,MAAAA,EAA6C,YAAYK,GAG3D,IAAME,EAAY,SAAS,cAA2B,mBAAmB,EACzE,GAAIA,EAAW,CACb,IAAMJ,EAAW,IAAIC,EAAkBG,CAAS,EAC1CF,EAASC,EAAcH,CAAQ,GACrCF,EAAA,SAAS,cAAc,qBAAqB,IAA5C,MAAAA,EAA+C,YAAYI,GAG7D,QAAWG,KAAM,SAAS,iBAAiB,iBAAiB,EAC1DA,EAAG,iBAAiB,QAASC,GAAK,CAChC,IAAMC,EAASD,EAAE,cAAoC,aAAa,YAAY,EAC9E,SAAS,gBAAgB,aAAa,aAAc,OAAOC,CAAK,CAAC,CACnE,CAAC,EAEH,QAAWF,KAAM,SAAS,iBAAiB,kBAAkB,EAC3DA,EAAG,iBAAiB,QAASC,GAAK,CAChC,IAAMC,EAASD,EAAE,cAAoC,aAAa,YAAY,EAC9E,SAAS,gBAAgB,aAAa,cAAe,OAAOC,CAAK,CAAC,CACpE,CAAC,EAGH,QAAWF,KAAM,SAAS,iBAAoC,eAAe,EAC3E,IAAIG,EAAoBH,CAAE,EAG5B,QAAWA,KAAM,SAAS,iBAAoC,cAAc,EAC1E,IAAII,EAAmBJ,CAAE,CAE7B,CAAC,EAED,eAAe,OACb,WACA,cAAc,WAAY,CACxB,aAAc,CAnDlB,IAAAR,EAoDM,MAAM,EACN,KAAK,MAAM,YAAY,UAAW,UAAU,EAG5C,IAAMa,EAAO,KAAK,GAClB,KAAK,gBAAgB,IAAI,EACzB,KAAK,UAAY;AAAA,mCACYA;AAAA;AAAA,qBAEdA,yCAA4CA,EACxD,QAAQ,WAAY,EAAE,EACtB,WAAW,IAAK,GAAG;AAAA,qDACyBA;AAAA;AAAA,SAG/Cb,EAAA,KAAK,cAAc,KAAK,IAAxB,MAAAA,EAA2B,iBAAiB,QAAS,IAAM,CACzD,UAAU,UAAU,UAAU,OAAOa,IAAO,CAC9C,EACF,CACF,CACF,EAEA,eAAe,OACb,UACA,cAAc,WAAY,CACxB,aAAc,CACZ,MAAM,EACN,KAAK,MAAM,YAAY,UAAW,UAAU,EAG5C,IAAMA,EAAO,KAAK,aAAa,MAAM,EACrC,KAAK,UAAY,eAAeA,wCAA2CA,EAAK,WAC9E,IACA,GACF;AAAA;AAAA,iFAE2EA;AAAA;AAAA,OAG7E,CACF,CACF,EAEA,eAAe,OACb,WACA,cAAc,WAAY,CACxB,aAAc,CAlGlB,IAAAb,EAmGM,MAAM,EACN,KAAK,MAAM,YAAY,UAAW,UAAU,EAC5C,IAAMc,EAAW,KAAK,aAAa,UAAU,EAC7C,GAAI,CAACA,EAAU,OACf,IAAMC,EAAO,SAASf,EAAA,SAAS,cAAcc,CAAQ,IAA/B,YAAAd,EAAkC,WACxD,KAAK,UAAY;AAAA,kCACWe;AAAA,OAE9B,CACF,CACF,EAEA,eAAe,OACb,eACA,cAAc,WAAY,CACxB,aAAc,CAlHlB,IAAAf,EAmHM,MAAM,EACN,KAAK,MAAM,YAAY,UAAW,UAAU,EAC5C,IAAMe,EAAO,KAAK,UACZC,EAAS,KAAK,GAAK,QAAQ,KAAK,MAAQ,GAC9C,KAAK,gBAAgB,IAAI,EACzB,IAAIC,EAAS,wCAA0CC,EAAOC,EAAKJ,CAAI,CAAC,EAAI,SACxE,KAAK,aAAa,WAAW,IAC/BE,EAAS,sEAAsEA,eAEjF,KAAK,UAAY,QAAQD,KAAUD,WAAcE,KACjDjB,EAAA,KAAK,cAAc,KAAK,IAAxB,MAAAA,EAA2B,iBAAiB,QAAS,IAAM,CACzD,UAAU,UAAU,UAAUe,CAAI,CACpC,EACF,CACF,CACF,EAQA,SAASI,EAAKJ,EAAc,CAC1B,OAAOA,EACJ,MAAM;AAAA,CAAI,EACV,OACC,CAACK,EAAKC,IAAQ,CACZ,GAAID,EAAI,OAAO,SAAW,EAAG,CAC3B,IAAME,EAAQD,EAAI,QAAQ,GAAG,EAC7BD,EAAI,MAAQE,IAAU,GAAK,EAAIA,EAEjC,OAAAD,EAAMA,EAAI,MAAMD,EAAI,KAAK,EACrBC,GACFD,EAAI,OAAO,KAAKC,CAAG,EAEdD,CACT,EACA,CAAE,OAAQ,CAAC,EAAG,MAAO,CAAE,CACzB,EACC,OAAO,KAAK;AAAA,CAAI,CACrB,CAEA,SAASF,EAAOH,EAAc,CA9J9B,IAAAf,EAiKE,OAAQA,EAAAe,GAAA,YAAAA,EAAc,WAAW,IAAK,UAA9B,YAAAf,EAAuC,WAAW,IAAK,OACjE",
+  "names": ["CarouselController", "el", "index", "d", "s", "_a", "i", "v", "_b", "arrows", "dots", "li", "button", "SelectNavController", "el", "e", "target", "href", "makeSelectNav", "tree", "label", "select", "outline", "groupMap", "group", "t", "o", "_a", "hash", "value", "TreeNavController", "el", "treeitem", "targets", "observer", "entries", "entry", "id", "isIntersecting", "active", "t", "_a", "fn", "href", "target", "delay", "debounce", "currentItem", "nextItem", "ti", "prevItem", "l1", "groupTreeitem", "char", "start", "index", "findItems", "group", "curr", "TreeItem", "idx", "parent", "focusEl", "startIndex", "treeObj", "_b", "_c", "_d", "_e", "groupId", "event", "captured", "func", "wait", "timeout", "args", "later", "_a", "_b", "tree", "treeCtrl", "TreeNavController", "select", "makeSelectNav", "guideTree", "el", "e", "value", "SelectNavController", "CarouselController", "name", "selector", "html", "idAttr", "markup", "escape", "trim", "acc", "val", "start"]
 }
diff --git a/static/frontend/styleguide/styleguide.min.css.map b/static/frontend/styleguide/styleguide.min.css.map
index 4c26a35..ea84cfa 100644
--- a/static/frontend/styleguide/styleguide.min.css.map
+++ b/static/frontend/styleguide/styleguide.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["../unit/main/_meta.css", "styleguide.css"],
   "sourcesContent": ["/*!\n* Copyright 2019-2020 The Go Authors. All rights reserved.\n* Use of this source code is governed by a BSD-style\n* license that can be found in the LICENSE file.\n*/\n\n.UnitMeta {\n  display: grid;\n  gap: 1rem 2rem;\n  grid-template-columns: max-content auto;\n  white-space: nowrap;\n}\n\n.UnitMeta-details,\n.UnitMeta-links {\n  display: flex;\n  flex-flow: wrap;\n  flex-direction: row;\n  gap: 1rem 2rem;\n}\n\n.UnitMeta-repo {\n  align-items: center;\n  display: flex;\n  overflow: hidden;\n}\n\n.UnitMeta-repo a {\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n@media (min-width: 50rem) {\n  .UnitMeta {\n    grid-template-columns: max-content auto;\n  }\n\n  .UnitMeta-details,\n  .UnitMeta-links {\n    flex-direction: row;\n  }\n}\n@media (min-width: 112rem) {\n  :root[data-layout='responsive'] .UnitMeta {\n    grid-template-columns: 100%;\n  }\n\n  :root[data-layout='responsive'] .UnitMeta-details,\n  :root[data-layout='responsive'] .UnitMeta-links {\n    flex-direction: column;\n    white-space: nowrap;\n  }\n}\n\n.UnitMeta-detailsLearn {\n  width: 100%;\n}\n@media (min-width: 50rem) {\n  .UnitMeta-detailsLearn {\n    width: initial;\n  }\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n@import url('../unit/main/_meta.css');\n\n.StyleGuide {\n  background-color: var(--color-background);\n}\n\n.StyleGuide > section {\n  align-items: center;\n  display: grid;\n  gap: 1rem 2rem;\n  grid-template-columns: 100%;\n  margin-bottom: 1rem;\n}\n\n.StyleGuide > section > header {\n  border-bottom: var(--border);\n  grid-column: 1/-1;\n  margin-bottom: 1rem;\n  padding-bottom: 1rem;\n}\n\n.StyleGuide > section > h2 {\n  grid-column: 1/-1;\n  width: max-content;\n}\n\n.StyleGuide > section > hr {\n  grid-column: 1/-1;\n}\n\n.StyleGuide > section > h3 {\n  grid-column: 1/-1;\n  margin: 1rem 0;\n}\n\n.StyleGuide > section > p {\n  grid-column: 1/-1;\n}\n\n.StyleGuide .Color,\n.StyleGuide .ColorIntent {\n  grid-template-columns: repeat(auto-fit, 5rem [col-start] minmax(12rem, auto) [col-end]);\n}\n\n.StyleGuide .Outline {\n  align-items: flex-start;\n}\n\n.StyleGuide .Outline > span {\n  margin-top: 0.5rem;\n}\n@media (min-width: 80rem) {\n  .StyleGuide .Icon {\n    grid-template-columns: 10rem 8rem auto;\n  }\n\n  .StyleGuide .Typography,\n  .StyleGuide .Button,\n  .StyleGuide .Carousel,\n  .StyleGuide .Form,\n  .StyleGuide .Modal,\n  .StyleGuide .Message,\n  .StyleGuide .Breadcrumb,\n  .StyleGuide .Chip,\n  .StyleGuide .Tooltip,\n  .StyleGuide .Outline,\n  .StyleGuide .Clipboard {\n    grid-template-columns: 20rem auto;\n  }\n}\n@media (min-width: 112rem) {\n  .StyleGuide .Icon {\n    grid-template-columns: 10rem auto 50%;\n  }\n\n  .StyleGuide .Typography,\n  .StyleGuide .Button,\n  .StyleGuide .Carousel,\n  .StyleGuide .Form,\n  .StyleGuide .Modal,\n  .StyleGuide .Message,\n  .StyleGuide .Breadcrumb,\n  .StyleGuide .Chip,\n  .StyleGuide .Tooltip,\n  .StyleGuide .Outline,\n  .StyleGuide .Clipboard {\n    grid-template-columns: auto 50%;\n  }\n}\n\n.StringifyElement {\n  align-items: baseline;\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n  padding: 0.25rem;\n}\n\n.ElementMarkup > pre,\n.StringifyElement-markup {\n  color: var(--color-text-subtle);\n  font-size: 0.875rem;\n  margin-top: 0.5rem;\n  max-width: 100%;\n  padding-left: 2rem;\n  position: relative;\n}\n\n.ElementMarkup > pre::before,\n.StringifyElement-markup::before {\n  background: url('/static/shared/icon/content_copy_gm_grey_24dp.svg');\n  background-repeat: no-repeat;\n  background-size: contain;\n  content: ' ';\n  left: 0.5rem;\n  padding-left: 1rem;\n  position: absolute;\n  width: 1rem;\n}\n\n.StringifyElement-markup:active {\n  filter: contrast(0.9);\n}\n\n.StringifyElement-details {\n  color: var(--color-text-subtle);\n  font-size: 0.8125rem;\n  overflow-x: auto;\n}\n\n.GoColor-circle {\n  background-color: var(--color);\n  border: var(--border);\n  border-radius: 2rem;\n  height: 3rem;\n  margin: auto;\n  margin-bottom: 0.5rem;\n  width: 3rem;\n}\n\n.GoIcon-title,\n.GoColor-title {\n  text-transform: capitalize;\n}\n\n.go-Main-navDesktop a + ul {\n  text-transform: capitalize;\n}\n\n.MainHeader-toggle {\n  display: flex;\n}\n"],
-  "mappings": "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",
+  "mappings": ";;;;;AAMA,UACE,aACA,cACA,uCACA,mBAGF,kCAEE,aACA,eACA,mBACA,cAGF,eACE,mBACA,aACA,gBAGF,iBACE,gBACA,uBAEF,0BACE,UACE,uCAGF,kCAEE,oBAGJ,2BACE,wCACE,2BAGF,8FAEE,sBACA,oBAIJ,uBACE,WAEF,0BACE,uBACE,eClDJ,YACE,yCAGF,oBACE,mBACA,aACA,cACA,2BACA,mBAGF,2BACE,4BACA,iBACA,mBACA,oBAGF,uBACE,iBACA,kBAGF,uBACE,iBAGF,uBACE,iBArCF,cAyCA,sBACE,iBAGF,4CAEE,qFAGF,qBACE,uBAGF,0BACE,iBAEF,0BACE,kBACE,sCAGF,uOAWE,kCAGJ,2BACE,kBACE,qCAGF,uOAWE,gCAIJ,kBACE,qBACA,aACA,sBACA,SApGF,eAwGA,4CAEE,+BACA,kBACA,iBACA,eACA,kBACA,kBAGF,0DAEE,kEACA,4BACA,wBACA,YACA,WACA,kBACA,kBACA,WAGF,gCACE,oBAGF,0BACE,+BACA,mBACA,gBAGF,gBACE,8BACA,qBA1IF,mBA4IE,YA5IF,YA8IE,oBACA,WAGF,6BAEE,0BAGF,yBACE,0BAGF,mBACE",
   "names": []
 }
diff --git a/static/frontend/subrepo/subrepo.min.css.map b/static/frontend/subrepo/subrepo.min.css.map
index 4aad82e..20d1a64 100644
--- a/static/frontend/subrepo/subrepo.min.css.map
+++ b/static/frontend/subrepo/subrepo.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["subrepo.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.SubRepo-links {\n  line-height: 1.5rem;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,cACC,YAAa,MACf",
+  "mappings": ";;;;;AAMA,eACE",
   "names": []
 }
diff --git a/static/frontend/unit/importedby/importedby.min.css.map b/static/frontend/unit/importedby/importedby.min.css.map
index 9e5cb9d..ea88528 100644
--- a/static/frontend/unit/importedby/importedby.min.css.map
+++ b/static/frontend/unit/importedby/importedby.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["importedby.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.ImportedBy-heading {\n  margin-bottom: 1rem;\n}\n\n.ImportedBy-list {\n  list-style: none;\n  padding: 0;\n}\n\n.ImportedBy .Pagination-nav,\n.ImportedBy .Pagination-navInner {\n  justify-content: flex-start;\n}\n\n.ImportedBy-details {\n  margin: 0.5rem 0;\n}\n\n.ImportedBy-detailsContent {\n  margin-left: 2.5rem;\n}\n\n.ImportedBy-detailsIndent {\n  margin-bottom: 0.5rem;\n  margin-left: 1.1rem;\n  margin-top: 0.5rem;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,mBACC,cAAe,IACjB,CAEA,CAAC,gBACC,WAAY,KAXd,QAYW,CACX,CAEA,CAAC,WAAW,CAAC,eACb,CADC,WACW,CAAC,oBACX,gBAAiB,UACnB,CAEA,CAAC,mBApBD,OAqBU,MAAO,CACjB,CAEA,CAAC,0BACC,YAAa,MACf,CAEA,CAAC,yBACC,cAAe,MACf,YAAa,OACb,WAAY,KACd",
+  "mappings": ";;;;;AAMA,oBACE,mBAGF,iBACE,gBAXF,UAeA,6DAEE,2BAGF,oBApBA,eAwBA,2BACE,mBAGF,0BACE,oBACA,mBACA",
   "names": []
 }
diff --git a/static/frontend/unit/imports/imports.min.css.map b/static/frontend/unit/imports/imports.min.css.map
index eab9be7..050a960 100644
--- a/static/frontend/unit/imports/imports.min.css.map
+++ b/static/frontend/unit/imports/imports.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["imports.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.Imports-listItem {\n  line-height: 1.125rem;\n}\n\n.Imports-list {\n  margin: 1rem 0;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,iBACC,YAAa,QACf,CAEA,CAAC,aAVD,OAWU,KAAK,CACf",
+  "mappings": ";;;;;AAMA,kBACE,qBAGF,cAVA",
   "names": []
 }
diff --git a/static/frontend/unit/licenses/licenses.min.css.map b/static/frontend/unit/licenses/licenses.min.css.map
index 7299a20..fba8c28 100644
--- a/static/frontend/unit/licenses/licenses.min.css.map
+++ b/static/frontend/unit/licenses/licenses.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["licenses.css"],
   "sourcesContent": ["/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.License {\n  margin-bottom: 1rem;\n}\n\n.License > h2 {\n  margin-bottom: 1rem;\n}\n\n.License > p {\n  margin-bottom: 0.5rem;\n}\n\n.License-contents {\n  border: var(--border);\n  border-radius: 0.1875rem;\n  font-size: 0.875rem;\n  line-height: 1.375rem;\n  margin: 0;\n  overflow-x: auto;\n  padding: 1.5rem;\n  tab-size: 4;\n}\n\n.License-source {\n  font-size: 0.875rem;\n  padding-top: 0.5rem;\n}\n\n.Disclaimer-link {\n  font-style: italic;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,QACC,cAAe,IACjB,CAEA,CAJC,OAIQ,CAAE,GACT,cAAe,IACjB,CAEA,CARC,OAQQ,CAAE,EACT,cAAe,KACjB,CAEA,CAAC,iBACC,OAAQ,IAAI,UAnBd,cAoBiB,SACf,UAAW,QACX,YAAa,SAtBf,OAuBU,EACR,WAAY,KAxBd,QAyBW,OACT,SAAU,CACZ,CAEA,CAAC,eACC,UAAW,QACX,YAAa,KACf,CAEA,CAAC,gBACC,WAAY,MACd",
+  "mappings": ";;;;;AAMA,SACE,mBAGF,YACE,mBAGF,WACE,oBAGF,kBACE,qBAnBF,uBAqBE,kBACA,qBAtBF,SAwBE,gBAxBF,eA0BE,WAGF,gBACE,kBACA,kBAGF,iBACE",
   "names": []
 }
diff --git a/static/frontend/unit/main/main.js b/static/frontend/unit/main/main.js
index 9c97010..199d846 100644
--- a/static/frontend/unit/main/main.js
+++ b/static/frontend/unit/main/main.js
@@ -1,9 +1,9 @@
-var o={PLAY_HREF:".js-exampleHref",PLAY_CONTAINER:".js-exampleContainer",EXAMPLE_INPUT:".Documentation-exampleCode",EXAMPLE_OUTPUT:".Documentation-exampleOutput",EXAMPLE_ERROR:".Documentation-exampleError",PLAY_BUTTON:".Documentation-examplePlayButton",SHARE_BUTTON:".Documentation-exampleShareButton",FORMAT_BUTTON:".Documentation-exampleFormatButton",RUN_BUTTON:".Documentation-exampleRunButton"},T=class{constructor(e){this.exampleEl=e;this.exampleEl=e,this.anchorEl=e.querySelector("a"),this.errorEl=e.querySelector(o.EXAMPLE_ERROR),this.playButtonEl=e.querySelector(o.PLAY_BUTTON),this.shareButtonEl=e.querySelector(o.SHARE_BUTTON),this.formatButtonEl=e.querySelector(o.FORMAT_BUTTON),this.runButtonEl=e.querySelector(o.RUN_BUTTON),this.inputEl=this.makeTextArea(e.querySelector(o.EXAMPLE_INPUT)),this.outputEl=e.querySelector(o.EXAMPLE_OUTPUT),this.playButtonEl?.addEventListener("click",()=>this.handleShareButtonClick()),this.shareButtonEl?.addEventListener("click",()=>this.handleShareButtonClick()),this.formatButtonEl?.addEventListener("click",()=>this.handleFormatButtonClick()),this.runButtonEl?.addEventListener("click",()=>this.handleRunButtonClick()),this.inputEl&&(this.resize(),this.inputEl.addEventListener("keyup",()=>this.resize()),this.inputEl.addEventListener("keydown",t=>this.onKeydown(t)))}makeTextArea(e){let t=document.createElement("textarea");return t.classList.add("Documentation-exampleCode","code"),t.spellcheck=!1,t.value=e?.textContent??"",e?.parentElement?.replaceChild(t,e),t}getAnchorHash(){return this.anchorEl?.hash}expand(){this.exampleEl.open=!0}resize(){if(this.inputEl?.value){let e=(this.inputEl.value.match(/\n/g)||[]).length;this.inputEl.style.height=`${(20+e*20+12+2)/16}rem`}}onKeydown(e){e.key==="Tab"&&(document.execCommand("insertText",!1,"	"),e.preventDefault())}setInputText(e){this.inputEl&&(this.inputEl.value=e)}setOutputText(e){this.outputEl&&(this.outputEl.textContent=e)}appendToOutputText(e){this.outputEl&&(this.outputEl.textContent+=e)}setOutputHTML(e){this.outputEl&&(this.outputEl.innerHTML=e)}setErrorText(e){this.errorEl&&(this.errorEl.textContent=e),this.setOutputText("An error has occurred\u2026")}getCodeWithModFile(){let e=this.inputEl?.value??"",t=document.querySelector(".js-playgroundVars")?.dataset??{};return t.modulepath!=="std"&&(e=e.concat(`
+var d={PLAY_HREF:".js-exampleHref",PLAY_CONTAINER:".js-exampleContainer",EXAMPLE_INPUT:".Documentation-exampleCode",EXAMPLE_OUTPUT:".Documentation-exampleOutput",EXAMPLE_ERROR:".Documentation-exampleError",PLAY_BUTTON:".Documentation-examplePlayButton",SHARE_BUTTON:".Documentation-exampleShareButton",FORMAT_BUTTON:".Documentation-exampleFormatButton",RUN_BUTTON:".Documentation-exampleRunButton"},b=class{constructor(e){this.exampleEl=e;var t,i,s,r;this.exampleEl=e,this.anchorEl=e.querySelector("a"),this.errorEl=e.querySelector(d.EXAMPLE_ERROR),this.playButtonEl=e.querySelector(d.PLAY_BUTTON),this.shareButtonEl=e.querySelector(d.SHARE_BUTTON),this.formatButtonEl=e.querySelector(d.FORMAT_BUTTON),this.runButtonEl=e.querySelector(d.RUN_BUTTON),this.inputEl=this.makeTextArea(e.querySelector(d.EXAMPLE_INPUT)),this.outputEl=e.querySelector(d.EXAMPLE_OUTPUT),(t=this.playButtonEl)==null||t.addEventListener("click",()=>this.handleShareButtonClick()),(i=this.shareButtonEl)==null||i.addEventListener("click",()=>this.handleShareButtonClick()),(s=this.formatButtonEl)==null||s.addEventListener("click",()=>this.handleFormatButtonClick()),(r=this.runButtonEl)==null||r.addEventListener("click",()=>this.handleRunButtonClick()),this.inputEl&&(this.resize(),this.inputEl.addEventListener("keyup",()=>this.resize()),this.inputEl.addEventListener("keydown",l=>this.onKeydown(l)))}makeTextArea(e){var i,s;let t=document.createElement("textarea");return t.classList.add("Documentation-exampleCode","code"),t.spellcheck=!1,t.value=(i=e==null?void 0:e.textContent)!=null?i:"",(s=e==null?void 0:e.parentElement)==null||s.replaceChild(t,e),t}getAnchorHash(){var e;return(e=this.anchorEl)==null?void 0:e.hash}expand(){this.exampleEl.open=!0}resize(){var e;if((e=this.inputEl)!=null&&e.value){let t=(this.inputEl.value.match(/\n/g)||[]).length;this.inputEl.style.height=`${(20+t*20+12+2)/16}rem`}}onKeydown(e){e.key==="Tab"&&(document.execCommand("insertText",!1,"	"),e.preventDefault())}setInputText(e){this.inputEl&&(this.inputEl.value=e)}setOutputText(e){this.outputEl&&(this.outputEl.textContent=e)}appendToOutputText(e){this.outputEl&&(this.outputEl.textContent+=e)}setOutputHTML(e){this.outputEl&&(this.outputEl.innerHTML=e)}setErrorText(e){this.errorEl&&(this.errorEl.textContent=e),this.setOutputText("An error has occurred\u2026")}getCodeWithModFile(){var i,s,r,l;let e=(s=(i=this.inputEl)==null?void 0:i.value)!=null?s:"",t=(l=(r=document.querySelector(".js-playgroundVars"))==null?void 0:r.dataset)!=null?l:{};return t.modulepath!=="std"&&(e=e.concat(`
 -- go.mod --
 module play.ground
 
 require ${t.modulepath} ${t.version}
-`)),e}handleShareButtonClick(){let e="https://play.golang.org/p/";this.setOutputText("Waiting for remote server\u2026"),fetch("/play/share",{method:"POST",body:this.getCodeWithModFile()}).then(t=>t.text()).then(t=>{let i=e+t;this.setOutputHTML(`<a href="${i}">${i}</a>`),window.open(i)}).catch(t=>{this.setErrorText(t)})}handleFormatButtonClick(){this.setOutputText("Waiting for remote server\u2026");let e=new FormData;e.append("body",this.inputEl?.value??""),fetch("/play/fmt",{method:"POST",body:e}).then(t=>t.json()).then(({Body:t,Error:i})=>{this.setOutputText(i||"Done."),t&&(this.setInputText(t),this.resize())}).catch(t=>{this.setErrorText(t)})}handleRunButtonClick(){this.setOutputText("Waiting for remote server\u2026"),fetch("/play/compile",{method:"POST",body:JSON.stringify({body:this.getCodeWithModFile(),version:2})}).then(e=>e.json()).then(async({Events:e,Errors:t})=>{this.setOutputText(t||"");for(let i of e||[])this.appendToOutputText(i.Message),await new Promise(s=>setTimeout(s,i.Delay/1e6))}).catch(e=>{this.setErrorText(e)})}};function v(){let l=location.hash.match(/^#(example-.*)$/);if(l){let i=document.getElementById(l[1]);i&&(i.open=!0)}let e=[...document.querySelectorAll(o.PLAY_HREF)],t=i=>e.find(s=>s.hash===i.getAnchorHash());for(let i of document.querySelectorAll(o.PLAY_CONTAINER)){let s=new T(i),r=t(s);r?r.addEventListener("click",()=>{s.expand()}):console.warn("example href not found")}}var c=class{constructor(e){this.el=e;this.el.addEventListener("change",t=>{let i=t.target,s=i.value;i.value.startsWith("/")||(s="/"+s),window.location.href=s})}};function x(l){let e=document.createElement("label");e.classList.add("go-Label"),e.setAttribute("aria-label","Menu");let t=document.createElement("select");t.classList.add("go-Select","js-selectNav"),e.appendChild(t);let i=document.createElement("optgroup");i.label="Outline",t.appendChild(i);let s={},r;for(let a of l.treeitems){if(Number(a.depth)>4)continue;a.groupTreeitem?(r=s[a.groupTreeitem.label],r||(r=s[a.groupTreeitem.label]=document.createElement("optgroup"),r.label=a.groupTreeitem.label,t.appendChild(r))):r=i;let n=document.createElement("option");n.label=a.label,n.textContent=a.label,n.value=a.el.href.replace(window.location.origin,"").replace("/",""),r.appendChild(n)}return l.addObserver(a=>{let n=a.el.hash,g=t.querySelector(`[value$="${n}"]`)?.value;g&&(t.value=g)},50),e}var m=class{constructor(e){this.el=e;this.handleResize=()=>{this.el.style.setProperty("--js-tree-height","100vh"),this.el.style.setProperty("--js-tree-height",this.el.clientHeight+"px")};this.treeitems=[],this.firstChars=[],this.firstTreeitem=null,this.lastTreeitem=null,this.observerCallbacks=[],this.init()}init(){this.handleResize(),window.addEventListener("resize",this.handleResize),this.findTreeItems(),this.updateVisibleTreeitems(),this.observeTargets(),this.firstTreeitem&&(this.firstTreeitem.el.tabIndex=0)}observeTargets(){this.addObserver(i=>{this.expandTreeitem(i),this.setSelected(i)});let e=new Map,t=new IntersectionObserver(i=>{for(let s of i)e.set(s.target.id,s.isIntersecting||s.intersectionRatio===1);for(let[s,r]of e)if(r){let a=this.treeitems.find(n=>n.el?.href.endsWith(`#${s}`));if(a)for(let n of this.observerCallbacks)n(a);break}},{threshold:1,rootMargin:"-60px 0px 0px 0px"});for(let i of this.treeitems.map(s=>s.el.getAttribute("href")))if(i){let s=i.replace(window.location.origin,"").replace("/","").replace("#",""),r=document.getElementById(s);r&&t.observe(r)}}addObserver(e,t=200){this.observerCallbacks.push(C(e,t))}setFocusToNextItem(e){let t=null;for(let i=e.index+1;i<this.treeitems.length;i++){let s=this.treeitems[i];if(s.isVisible){t=s;break}}t&&this.setFocusToItem(t)}setFocusToPreviousItem(e){let t=null;for(let i=e.index-1;i>-1;i--){let s=this.treeitems[i];if(s.isVisible){t=s;break}}t&&this.setFocusToItem(t)}setFocusToParentItem(e){e.groupTreeitem&&this.setFocusToItem(e.groupTreeitem)}setFocusToFirstItem(){this.firstTreeitem&&this.setFocusToItem(this.firstTreeitem)}setFocusToLastItem(){this.lastTreeitem&&this.setFocusToItem(this.lastTreeitem)}setSelected(e){for(let t of this.el.querySelectorAll('[aria-expanded="true"]'))t!==e.el&&(t.nextElementSibling?.contains(e.el)||t.setAttribute("aria-expanded","false"));for(let t of this.el.querySelectorAll("[aria-selected]"))t!==e.el&&t.setAttribute("aria-selected","false");e.el.setAttribute("aria-selected","true"),this.updateVisibleTreeitems(),this.setFocusToItem(e,!1)}expandTreeitem(e){let t=e;for(;t;)t.isExpandable&&t.el.setAttribute("aria-expanded","true"),t=t.groupTreeitem;this.updateVisibleTreeitems()}expandAllSiblingItems(e){for(let t of this.treeitems)t.groupTreeitem===e.groupTreeitem&&t.isExpandable&&this.expandTreeitem(t)}collapseTreeitem(e){let t=null;e.isExpanded()?t=e:t=e.groupTreeitem,t&&(t.el.setAttribute("aria-expanded","false"),this.updateVisibleTreeitems(),this.setFocusToItem(t))}setFocusByFirstCharacter(e,t){let i,s;t=t.toLowerCase(),i=e.index+1,i===this.treeitems.length&&(i=0),s=this.getIndexFirstChars(i,t),s===-1&&(s=this.getIndexFirstChars(0,t)),s>-1&&this.setFocusToItem(this.treeitems[s])}findTreeItems(){let e=(t,i)=>{let s=i,r=t.firstElementChild;for(;r;)(r.tagName==="A"||r.tagName==="SPAN")&&(s=new E(r,this,i),this.treeitems.push(s),this.firstChars.push(s.label.substring(0,1).toLowerCase())),r.firstElementChild&&e(r,s),r=r.nextElementSibling};e(this.el,null),this.treeitems.map((t,i)=>t.index=i)}updateVisibleTreeitems(){this.firstTreeitem=this.treeitems[0];for(let e of this.treeitems){let t=e.groupTreeitem;for(e.isVisible=!0;t&&t.el!==this.el;)t.isExpanded()||(e.isVisible=!1),t=t.groupTreeitem;e.isVisible&&(this.lastTreeitem=e)}}setFocusToItem(e,t=!0){e.el.tabIndex=0,t&&e.el.focus();for(let i of this.treeitems)i!==e&&(i.el.tabIndex=-1)}getIndexFirstChars(e,t){for(let i=e;i<this.firstChars.length;i++)if(this.treeitems[i].isVisible&&t===this.firstChars[i])return i;return-1}},E=class{constructor(e,t,i){e.tabIndex=-1,this.el=e,this.groupTreeitem=i,this.label=e.textContent?.trim()??"",this.tree=t,this.depth=(i?.depth||0)+1,this.index=0;let s=e.parentElement;s?.tagName.toLowerCase()==="li"&&s?.setAttribute("role","none"),e.setAttribute("aria-level",this.depth+""),e.getAttribute("aria-label")&&(this.label=e?.getAttribute("aria-label")?.trim()??""),this.isExpandable=!1,this.isVisible=!1,this.isInGroup=!!i;let r=e.nextElementSibling;for(;r;){if(r.tagName.toLowerCase()=="ul"){let a=`${i?.label??""} nav group ${this.label}`.replace(/[\W_]+/g,"_");e.setAttribute("aria-owns",a),e.setAttribute("aria-expanded","false"),r.setAttribute("role","group"),r.setAttribute("id",a),this.isExpandable=!0;break}r=r.nextElementSibling}this.init()}init(){this.el.tabIndex=-1,this.el.getAttribute("role")||this.el.setAttribute("role","treeitem"),this.el.addEventListener("keydown",this.handleKeydown.bind(this)),this.el.addEventListener("click",this.handleClick.bind(this)),this.el.addEventListener("focus",this.handleFocus.bind(this)),this.el.addEventListener("blur",this.handleBlur.bind(this))}isExpanded(){return this.isExpandable?this.el.getAttribute("aria-expanded")==="true":!1}isSelected(){return this.el.getAttribute("aria-selected")==="true"}handleClick(e){e.target!==this.el&&e.target!==this.el.firstElementChild||(this.isExpandable&&(this.isExpanded()&&this.isSelected()?this.tree.collapseTreeitem(this):this.tree.expandTreeitem(this),e.stopPropagation()),this.tree.setSelected(this))}handleFocus(){let e=this.el;this.isExpandable&&(e=e.firstElementChild??e),e.classList.add("focus")}handleBlur(){let e=this.el;this.isExpandable&&(e=e.firstElementChild??e),e.classList.remove("focus")}handleKeydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=!1;switch(e.key){case" ":case"Enter":this.isExpandable?(this.isExpanded()&&this.isSelected()?this.tree.collapseTreeitem(this):this.tree.expandTreeitem(this),t=!0):e.stopPropagation(),this.tree.setSelected(this);break;case"ArrowUp":this.tree.setFocusToPreviousItem(this),t=!0;break;case"ArrowDown":this.tree.setFocusToNextItem(this),t=!0;break;case"ArrowRight":this.isExpandable&&(this.isExpanded()?this.tree.setFocusToNextItem(this):this.tree.expandTreeitem(this)),t=!0;break;case"ArrowLeft":this.isExpandable&&this.isExpanded()?(this.tree.collapseTreeitem(this),t=!0):this.isInGroup&&(this.tree.setFocusToParentItem(this),t=!0);break;case"Home":this.tree.setFocusToFirstItem(),t=!0;break;case"End":this.tree.setFocusToLastItem(),t=!0;break;default:e.key.length===1&&e.key.match(/\S/)&&(e.key=="*"?this.tree.expandAllSiblingItems(this):this.tree.setFocusByFirstCharacter(this,e.key),t=!0);break}t&&(e.stopPropagation(),e.preventDefault())}};function C(l,e){let t;return(...i)=>{let s=()=>{t=null,l(...i)};t&&clearTimeout(t),t=setTimeout(s,e)}}var p=class{constructor(e,t){this.table=e;this.toggleAll=t;this.expandAllItems=()=>{this.toggles.map(e=>e.setAttribute("aria-expanded","true")),this.update()};this.collapseAllItems=()=>{this.toggles.map(e=>e.setAttribute("aria-expanded","false")),this.update()};this.update=()=>{this.updateVisibleItems(),setTimeout(()=>this.updateGlobalToggle())};this.rows=Array.from(e.querySelectorAll("[data-aria-controls]")),this.toggles=Array.from(this.table.querySelectorAll("[aria-expanded]")),this.setAttributes(),this.attachEventListeners(),this.update()}setAttributes(){for(let e of["data-aria-controls","data-aria-labelledby","data-id"])this.table.querySelectorAll(`[${e}]`).forEach(t=>{t.setAttribute(e.replace("data-",""),t.getAttribute(e)??""),t.removeAttribute(e)})}attachEventListeners(){this.rows.forEach(e=>{e.addEventListener("click",t=>{this.handleToggleClick(t)})}),this.toggleAll?.addEventListener("click",()=>{this.expandAllItems()}),document.addEventListener("keydown",e=>{(e.ctrlKey||e.metaKey)&&e.key==="f"&&this.expandAllItems()})}handleToggleClick(e){let t=e.currentTarget;t?.hasAttribute("aria-expanded")||(t=this.table.querySelector(`button[aria-controls="${t?.getAttribute("aria-controls")}"]`));let i=t?.getAttribute("aria-expanded")==="true";t?.setAttribute("aria-expanded",i?"false":"true"),e.stopPropagation(),this.update()}updateVisibleItems(){this.rows.map(e=>{let t=e?.getAttribute("aria-expanded")==="true";e?.getAttribute("aria-controls")?.trimEnd().split(" ")?.map(s=>{let r=document.getElementById(`${s}`);t?(r?.classList.add("visible"),r?.classList.remove("hidden")):(r?.classList.add("hidden"),r?.classList.remove("visible"))})})}updateGlobalToggle(){if(!this.toggleAll)return;this.rows.some(t=>t.hasAttribute("aria-expanded"))&&(this.toggleAll.style.display="block"),this.toggles.some(t=>t.getAttribute("aria-expanded")==="false")?(this.toggleAll.innerText="Expand all",this.toggleAll.onclick=this.expandAllItems,this.toggleAll.setAttribute("aria-label","Expand all directories"),this.toggleAll.setAttribute("aria-live","polite")):(this.toggleAll.innerText="Collapse all",this.toggleAll.onclick=this.collapseAllItems,this.toggleAll.setAttribute("aria-label","Collapse all directories"),this.toggleAll.setAttribute("aria-live","polite"))}};v();var u=document.querySelector(".js-expandableTable");if(u){let l=new p(u,document.querySelector(".js-expandAllDirectories"));window.location.search.includes("expand-directories")&&l.expandAllItems();let e=document.querySelector(".js-showInternalDirectories");e&&(document.querySelector(".UnitDirectories-internal")&&(e.style.display="block",e.setAttribute("aria-label","Show Internal Directories"),e.setAttribute("aria-describedby","showInternal-description")),e.addEventListener("click",()=>{u.classList.contains("UnitDirectories-showInternal")?(u.classList.remove("UnitDirectories-showInternal"),e.innerText="Show internal",e.setAttribute("aria-label","Show Internal Directories"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-describedby","showInternal-description")):(u.classList.add("UnitDirectories-showInternal"),e.innerText="Hide internal",e.setAttribute("aria-label","Hide Internal Directories"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-describedby","hideInternal-description"))})),document.querySelector('html[data-local="true"]')&&e?.click()}var y=document.querySelector(".js-tree");if(y){let l=new m(y),e=x(l),t=document.querySelector(".js-mainNavMobile");t&&t.firstElementChild&&t?.replaceChild(e,t.firstElementChild),e.firstElementChild&&new c(e.firstElementChild)}var h=document.querySelector(".js-readme"),b=document.querySelector(".js-readmeContent"),A=document.querySelector(".js-readmeOutline"),f=document.querySelectorAll(".js-readmeExpand"),L=document.querySelector(".js-readmeCollapse"),S=document.querySelector(".DocNavMobile-select");h&&b&&A&&f.length&&L&&(h.clientHeight>320&&(h?.classList.remove("UnitReadme--expanded"),h?.classList.add("UnitReadme--toggle")),window.location.hash.includes("readme")&&d(),S?.addEventListener("change",l=>{l.target.value.startsWith("readme-")&&d()}),f.forEach(l=>l.addEventListener("click",e=>{e.preventDefault(),d(),h.scrollIntoView()})),L.addEventListener("click",l=>{l.preventDefault(),h.classList.remove("UnitReadme--expanded"),f[1]&&f[1].scrollIntoView({block:"center"})}),b.addEventListener("keyup",()=>{d()}),b.addEventListener("click",()=>{d()}),A.addEventListener("click",()=>{d()}),document.addEventListener("keydown",l=>{(l.ctrlKey||l.metaKey)&&l.key==="f"&&d()}));function d(){history.replaceState(null,"",`${location.pathname}#section-readme`),h?.classList.add("UnitReadme--expanded")}function I(){if(!location.hash)return;let e=document.getElementById(location.hash.slice(1))?.parentElement?.parentElement;e?.nodeName==="DETAILS"&&(e.open=!0)}I();window.addEventListener("hashchange",()=>I());document.querySelectorAll(".js-buildContextSelect").forEach(l=>{l.addEventListener("change",e=>{window.location.search=`?GOOS=${e.target.value}`})});
+`)),e}handleShareButtonClick(){let e="https://play.golang.org/p/";this.setOutputText("Waiting for remote server\u2026"),fetch("/play/share",{method:"POST",body:this.getCodeWithModFile()}).then(t=>t.text()).then(t=>{let i=e+t;this.setOutputHTML(`<a href="${i}">${i}</a>`),window.open(i)}).catch(t=>{this.setErrorText(t)})}handleFormatButtonClick(){var t,i;this.setOutputText("Waiting for remote server\u2026");let e=new FormData;e.append("body",(i=(t=this.inputEl)==null?void 0:t.value)!=null?i:""),fetch("/play/fmt",{method:"POST",body:e}).then(s=>s.json()).then(({Body:s,Error:r})=>{this.setOutputText(r||"Done."),s&&(this.setInputText(s),this.resize())}).catch(s=>{this.setErrorText(s)})}handleRunButtonClick(){this.setOutputText("Waiting for remote server\u2026"),fetch("/play/compile",{method:"POST",body:JSON.stringify({body:this.getCodeWithModFile(),version:2})}).then(e=>e.json()).then(async({Events:e,Errors:t})=>{this.setOutputText(t||"");for(let i of e||[])this.appendToOutputText(i.Message),await new Promise(s=>setTimeout(s,i.Delay/1e6))}).catch(e=>{this.setErrorText(e)})}};function L(){let n=location.hash.match(/^#(example-.*)$/);if(n){let i=document.getElementById(n[1]);i&&(i.open=!0)}let e=[...document.querySelectorAll(d.PLAY_HREF)],t=i=>e.find(s=>s.hash===i.getAnchorHash());for(let i of document.querySelectorAll(d.PLAY_CONTAINER)){let s=new b(i),r=t(s);r?r.addEventListener("click",()=>{s.expand()}):console.warn("example href not found")}}var p=class{constructor(e){this.el=e;this.el.addEventListener("change",t=>{let i=t.target,s=i.value;i.value.startsWith("/")||(s="/"+s),window.location.href=s})}};function I(n){let e=document.createElement("label");e.classList.add("go-Label"),e.setAttribute("aria-label","Menu");let t=document.createElement("select");t.classList.add("go-Select","js-selectNav"),e.appendChild(t);let i=document.createElement("optgroup");i.label="Outline",t.appendChild(i);let s={},r;for(let l of n.treeitems){if(Number(l.depth)>4)continue;l.groupTreeitem?(r=s[l.groupTreeitem.label],r||(r=s[l.groupTreeitem.label]=document.createElement("optgroup"),r.label=l.groupTreeitem.label,t.appendChild(r))):r=i;let a=document.createElement("option");a.label=l.label,a.textContent=l.label,a.value=l.el.href.replace(window.location.origin,"").replace("/",""),r.appendChild(a)}return n.addObserver(l=>{var c;let a=l.el.hash,h=(c=t.querySelector(`[value$="${a}"]`))==null?void 0:c.value;h&&(t.value=h)},50),e}var f=class{constructor(e){this.el=e;this.handleResize=()=>{this.el.style.setProperty("--js-tree-height","100vh"),this.el.style.setProperty("--js-tree-height",this.el.clientHeight+"px")};this.treeitems=[],this.firstChars=[],this.firstTreeitem=null,this.lastTreeitem=null,this.observerCallbacks=[],this.init()}init(){this.handleResize(),window.addEventListener("resize",this.handleResize),this.findTreeItems(),this.updateVisibleTreeitems(),this.observeTargets(),this.firstTreeitem&&(this.firstTreeitem.el.tabIndex=0)}observeTargets(){this.addObserver(i=>{this.expandTreeitem(i),this.setSelected(i)});let e=new Map,t=new IntersectionObserver(i=>{for(let s of i)e.set(s.target.id,s.isIntersecting||s.intersectionRatio===1);for(let[s,r]of e)if(r){let l=this.treeitems.find(a=>{var h;return(h=a.el)==null?void 0:h.href.endsWith(`#${s}`)});if(l)for(let a of this.observerCallbacks)a(l);break}},{threshold:1,rootMargin:"-60px 0px 0px 0px"});for(let i of this.treeitems.map(s=>s.el.getAttribute("href")))if(i){let s=i.replace(window.location.origin,"").replace("/","").replace("#",""),r=document.getElementById(s);r&&t.observe(r)}}addObserver(e,t=200){this.observerCallbacks.push(M(e,t))}setFocusToNextItem(e){let t=null;for(let i=e.index+1;i<this.treeitems.length;i++){let s=this.treeitems[i];if(s.isVisible){t=s;break}}t&&this.setFocusToItem(t)}setFocusToPreviousItem(e){let t=null;for(let i=e.index-1;i>-1;i--){let s=this.treeitems[i];if(s.isVisible){t=s;break}}t&&this.setFocusToItem(t)}setFocusToParentItem(e){e.groupTreeitem&&this.setFocusToItem(e.groupTreeitem)}setFocusToFirstItem(){this.firstTreeitem&&this.setFocusToItem(this.firstTreeitem)}setFocusToLastItem(){this.lastTreeitem&&this.setFocusToItem(this.lastTreeitem)}setSelected(e){var t;for(let i of this.el.querySelectorAll('[aria-expanded="true"]'))i!==e.el&&((t=i.nextElementSibling)!=null&&t.contains(e.el)||i.setAttribute("aria-expanded","false"));for(let i of this.el.querySelectorAll("[aria-selected]"))i!==e.el&&i.setAttribute("aria-selected","false");e.el.setAttribute("aria-selected","true"),this.updateVisibleTreeitems(),this.setFocusToItem(e,!1)}expandTreeitem(e){let t=e;for(;t;)t.isExpandable&&t.el.setAttribute("aria-expanded","true"),t=t.groupTreeitem;this.updateVisibleTreeitems()}expandAllSiblingItems(e){for(let t of this.treeitems)t.groupTreeitem===e.groupTreeitem&&t.isExpandable&&this.expandTreeitem(t)}collapseTreeitem(e){let t=null;e.isExpanded()?t=e:t=e.groupTreeitem,t&&(t.el.setAttribute("aria-expanded","false"),this.updateVisibleTreeitems(),this.setFocusToItem(t))}setFocusByFirstCharacter(e,t){let i,s;t=t.toLowerCase(),i=e.index+1,i===this.treeitems.length&&(i=0),s=this.getIndexFirstChars(i,t),s===-1&&(s=this.getIndexFirstChars(0,t)),s>-1&&this.setFocusToItem(this.treeitems[s])}findTreeItems(){let e=(t,i)=>{let s=i,r=t.firstElementChild;for(;r;)(r.tagName==="A"||r.tagName==="SPAN")&&(s=new v(r,this,i),this.treeitems.push(s),this.firstChars.push(s.label.substring(0,1).toLowerCase())),r.firstElementChild&&e(r,s),r=r.nextElementSibling};e(this.el,null),this.treeitems.map((t,i)=>t.index=i)}updateVisibleTreeitems(){this.firstTreeitem=this.treeitems[0];for(let e of this.treeitems){let t=e.groupTreeitem;for(e.isVisible=!0;t&&t.el!==this.el;)t.isExpanded()||(e.isVisible=!1),t=t.groupTreeitem;e.isVisible&&(this.lastTreeitem=e)}}setFocusToItem(e,t=!0){e.el.tabIndex=0,t&&e.el.focus();for(let i of this.treeitems)i!==e&&(i.el.tabIndex=-1)}getIndexFirstChars(e,t){for(let i=e;i<this.firstChars.length;i++)if(this.treeitems[i].isVisible&&t===this.firstChars[i])return i;return-1}},v=class{constructor(e,t,i){var l,a,h,c,y;e.tabIndex=-1,this.el=e,this.groupTreeitem=i,this.label=(a=(l=e.textContent)==null?void 0:l.trim())!=null?a:"",this.tree=t,this.depth=((i==null?void 0:i.depth)||0)+1,this.index=0;let s=e.parentElement;(s==null?void 0:s.tagName.toLowerCase())==="li"&&(s==null||s.setAttribute("role","none")),e.setAttribute("aria-level",this.depth+""),e.getAttribute("aria-label")&&(this.label=(c=(h=e==null?void 0:e.getAttribute("aria-label"))==null?void 0:h.trim())!=null?c:""),this.isExpandable=!1,this.isVisible=!1,this.isInGroup=!!i;let r=e.nextElementSibling;for(;r;){if(r.tagName.toLowerCase()=="ul"){let A=`${(y=i==null?void 0:i.label)!=null?y:""} nav group ${this.label}`.replace(/[\W_]+/g,"_");e.setAttribute("aria-owns",A),e.setAttribute("aria-expanded","false"),r.setAttribute("role","group"),r.setAttribute("id",A),this.isExpandable=!0;break}r=r.nextElementSibling}this.init()}init(){this.el.tabIndex=-1,this.el.getAttribute("role")||this.el.setAttribute("role","treeitem"),this.el.addEventListener("keydown",this.handleKeydown.bind(this)),this.el.addEventListener("click",this.handleClick.bind(this)),this.el.addEventListener("focus",this.handleFocus.bind(this)),this.el.addEventListener("blur",this.handleBlur.bind(this))}isExpanded(){return this.isExpandable?this.el.getAttribute("aria-expanded")==="true":!1}isSelected(){return this.el.getAttribute("aria-selected")==="true"}handleClick(e){e.target!==this.el&&e.target!==this.el.firstElementChild||(this.isExpandable&&(this.isExpanded()&&this.isSelected()?this.tree.collapseTreeitem(this):this.tree.expandTreeitem(this),e.stopPropagation()),this.tree.setSelected(this))}handleFocus(){var t;let e=this.el;this.isExpandable&&(e=(t=e.firstElementChild)!=null?t:e),e.classList.add("focus")}handleBlur(){var t;let e=this.el;this.isExpandable&&(e=(t=e.firstElementChild)!=null?t:e),e.classList.remove("focus")}handleKeydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=!1;switch(e.key){case" ":case"Enter":this.isExpandable?(this.isExpanded()&&this.isSelected()?this.tree.collapseTreeitem(this):this.tree.expandTreeitem(this),t=!0):e.stopPropagation(),this.tree.setSelected(this);break;case"ArrowUp":this.tree.setFocusToPreviousItem(this),t=!0;break;case"ArrowDown":this.tree.setFocusToNextItem(this),t=!0;break;case"ArrowRight":this.isExpandable&&(this.isExpanded()?this.tree.setFocusToNextItem(this):this.tree.expandTreeitem(this)),t=!0;break;case"ArrowLeft":this.isExpandable&&this.isExpanded()?(this.tree.collapseTreeitem(this),t=!0):this.isInGroup&&(this.tree.setFocusToParentItem(this),t=!0);break;case"Home":this.tree.setFocusToFirstItem(),t=!0;break;case"End":this.tree.setFocusToLastItem(),t=!0;break;default:e.key.length===1&&e.key.match(/\S/)&&(e.key=="*"?this.tree.expandAllSiblingItems(this):this.tree.setFocusByFirstCharacter(this,e.key),t=!0);break}t&&(e.stopPropagation(),e.preventDefault())}};function M(n,e){let t;return(...i)=>{let s=()=>{t=null,n(...i)};t&&clearTimeout(t),t=setTimeout(s,e)}}var T=class{constructor(e,t){this.table=e;this.toggleAll=t;this.expandAllItems=()=>{this.toggles.map(e=>e.setAttribute("aria-expanded","true")),this.update()};this.collapseAllItems=()=>{this.toggles.map(e=>e.setAttribute("aria-expanded","false")),this.update()};this.update=()=>{this.updateVisibleItems(),setTimeout(()=>this.updateGlobalToggle())};this.rows=Array.from(e.querySelectorAll("[data-aria-controls]")),this.toggles=Array.from(this.table.querySelectorAll("[aria-expanded]")),this.setAttributes(),this.attachEventListeners(),this.update()}setAttributes(){for(let e of["data-aria-controls","data-aria-labelledby","data-id"])this.table.querySelectorAll(`[${e}]`).forEach(t=>{var i;t.setAttribute(e.replace("data-",""),(i=t.getAttribute(e))!=null?i:""),t.removeAttribute(e)})}attachEventListeners(){var e;this.rows.forEach(t=>{t.addEventListener("click",i=>{this.handleToggleClick(i)})}),(e=this.toggleAll)==null||e.addEventListener("click",()=>{this.expandAllItems()}),document.addEventListener("keydown",t=>{(t.ctrlKey||t.metaKey)&&t.key==="f"&&this.expandAllItems()})}handleToggleClick(e){let t=e.currentTarget;t!=null&&t.hasAttribute("aria-expanded")||(t=this.table.querySelector(`button[aria-controls="${t==null?void 0:t.getAttribute("aria-controls")}"]`));let i=(t==null?void 0:t.getAttribute("aria-expanded"))==="true";t==null||t.setAttribute("aria-expanded",i?"false":"true"),e.stopPropagation(),this.update()}updateVisibleItems(){this.rows.map(e=>{var s;let t=(e==null?void 0:e.getAttribute("aria-expanded"))==="true",i=(s=e==null?void 0:e.getAttribute("aria-controls"))==null?void 0:s.trimEnd().split(" ");i==null||i.map(r=>{let l=document.getElementById(`${r}`);t?(l==null||l.classList.add("visible"),l==null||l.classList.remove("hidden")):(l==null||l.classList.add("hidden"),l==null||l.classList.remove("visible"))})})}updateGlobalToggle(){if(!this.toggleAll)return;this.rows.some(t=>t.hasAttribute("aria-expanded"))&&(this.toggleAll.style.display="block"),this.toggles.some(t=>t.getAttribute("aria-expanded")==="false")?(this.toggleAll.innerText="Expand all",this.toggleAll.onclick=this.expandAllItems,this.toggleAll.setAttribute("aria-label","Expand all directories"),this.toggleAll.setAttribute("aria-live","polite")):(this.toggleAll.innerText="Collapse all",this.toggleAll.onclick=this.collapseAllItems,this.toggleAll.setAttribute("aria-label","Collapse all directories"),this.toggleAll.setAttribute("aria-live","polite"))}};L();var m=document.querySelector(".js-expandableTable");if(m){let n=new T(m,document.querySelector(".js-expandAllDirectories"));window.location.search.includes("expand-directories")&&n.expandAllItems();let e=document.querySelector(".js-showInternalDirectories");e&&(document.querySelector(".UnitDirectories-internal")&&(e.style.display="block",e.setAttribute("aria-label","Show Internal Directories"),e.setAttribute("aria-describedby","showInternal-description")),e.addEventListener("click",()=>{m.classList.contains("UnitDirectories-showInternal")?(m.classList.remove("UnitDirectories-showInternal"),e.innerText="Show internal",e.setAttribute("aria-label","Show Internal Directories"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-describedby","showInternal-description")):(m.classList.add("UnitDirectories-showInternal"),e.innerText="Hide internal",e.setAttribute("aria-label","Hide Internal Directories"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-describedby","hideInternal-description"))})),document.querySelector('html[data-local="true"]')&&(e==null||e.click())}var C=document.querySelector(".js-tree");if(C){let n=new f(C),e=I(n),t=document.querySelector(".js-mainNavMobile");t&&t.firstElementChild&&(t==null||t.replaceChild(e,t.firstElementChild)),e.firstElementChild&&new p(e.firstElementChild)}var o=document.querySelector(".js-readme"),x=document.querySelector(".js-readmeContent"),S=document.querySelector(".js-readmeOutline"),E=document.querySelectorAll(".js-readmeExpand"),w=document.querySelector(".js-readmeCollapse"),g=document.querySelector(".DocNavMobile-select");o&&x&&S&&E.length&&w&&(o.clientHeight>320&&(o==null||o.classList.remove("UnitReadme--expanded"),o==null||o.classList.add("UnitReadme--toggle")),window.location.hash.includes("readme")&&u(),g==null||g.addEventListener("change",n=>{n.target.value.startsWith("readme-")&&u()}),E.forEach(n=>n.addEventListener("click",e=>{e.preventDefault(),u(),o.scrollIntoView()})),w.addEventListener("click",n=>{n.preventDefault(),o.classList.remove("UnitReadme--expanded"),E[1]&&E[1].scrollIntoView({block:"center"})}),x.addEventListener("keyup",()=>{u()}),x.addEventListener("click",()=>{u()}),S.addEventListener("click",()=>{u()}),document.addEventListener("keydown",n=>{(n.ctrlKey||n.metaKey)&&n.key==="f"&&u()}));function u(){history.replaceState(null,"",`${location.pathname}#section-readme`),o==null||o.classList.add("UnitReadme--expanded")}function k(){var t;if(!location.hash)return;let n=document.getElementById(location.hash.slice(1)),e=(t=n==null?void 0:n.parentElement)==null?void 0:t.parentElement;(e==null?void 0:e.nodeName)==="DETAILS"&&(e.open=!0)}k();window.addEventListener("hashchange",()=>k());document.querySelectorAll(".js-buildContextSelect").forEach(n=>{n.addEventListener("change",e=>{window.location.search=`?GOOS=${e.target.value}`})});
 /*!
  * @license
  * Copyright 2021 The Go Authors. All rights reserved.
diff --git a/static/frontend/unit/main/main.js.map b/static/frontend/unit/main/main.js.map
index a4f7928..4810cdd 100644
--- a/static/frontend/unit/main/main.js.map
+++ b/static/frontend/unit/main/main.js.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["../../../shared/playground/playground.ts", "../../../shared/outline/select.ts", "../../../shared/outline/tree.ts", "../../../shared/table/table.ts", "main.ts"],
   "sourcesContent": ["/*!\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n// This file implements the playground implementation of the documentation\n// page. The playground involves a \"play\" button that allows you to open up\n// a new link to play.golang.org using the example code.\n\n// The CSS is in static/frontend/unit/main/_doc.css\n\n/**\n * CSS classes used by PlaygroundExampleController\n */\nconst PlayExampleClassName = {\n  PLAY_HREF: '.js-exampleHref',\n  PLAY_CONTAINER: '.js-exampleContainer',\n  EXAMPLE_INPUT: '.Documentation-exampleCode',\n  EXAMPLE_OUTPUT: '.Documentation-exampleOutput',\n  EXAMPLE_ERROR: '.Documentation-exampleError',\n  PLAY_BUTTON: '.Documentation-examplePlayButton',\n  SHARE_BUTTON: '.Documentation-exampleShareButton',\n  FORMAT_BUTTON: '.Documentation-exampleFormatButton',\n  RUN_BUTTON: '.Documentation-exampleRunButton',\n};\n\n/**\n * This controller enables playground examples to expand their dropdown or\n * generate shareable Go Playground URLs.\n */\nexport class PlaygroundExampleController {\n  /**\n   * The anchor tag used to identify the container with an example href.\n   * There is only one in an example container div.\n   */\n  private readonly anchorEl: HTMLAnchorElement | null;\n\n  /**\n   * The error element\n   */\n  private readonly errorEl: Element | null;\n\n  /**\n   * Buttons that redirect to an example's playground, this element\n   * only exists in executable examples.\n   */\n  private readonly playButtonEl: Element | null;\n  private readonly shareButtonEl: Element | null;\n\n  /**\n   * Button that formats the code in an example's playground.\n   */\n  private readonly formatButtonEl: Element | null;\n\n  /**\n   * Button that runs the code in an example's playground, this element\n   * only exists in executable examples.\n   */\n  private readonly runButtonEl: Element | null;\n\n  /**\n   * The executable code of an example.\n   */\n  private readonly inputEl: HTMLTextAreaElement | null;\n\n  /**\n   * The output of the given example code. This only exists if the\n   * author of the package provides an output for this example.\n   */\n  private readonly outputEl: Element | null;\n\n  /**\n   * @param exampleEl The div that contains playground content for the given example.\n   */\n  constructor(private readonly exampleEl: HTMLDetailsElement) {\n    this.exampleEl = exampleEl;\n    this.anchorEl = exampleEl.querySelector('a');\n    this.errorEl = exampleEl.querySelector(PlayExampleClassName.EXAMPLE_ERROR);\n    this.playButtonEl = exampleEl.querySelector(PlayExampleClassName.PLAY_BUTTON);\n    this.shareButtonEl = exampleEl.querySelector(PlayExampleClassName.SHARE_BUTTON);\n    this.formatButtonEl = exampleEl.querySelector(PlayExampleClassName.FORMAT_BUTTON);\n    this.runButtonEl = exampleEl.querySelector(PlayExampleClassName.RUN_BUTTON);\n    this.inputEl = this.makeTextArea(exampleEl.querySelector(PlayExampleClassName.EXAMPLE_INPUT));\n    this.outputEl = exampleEl.querySelector(PlayExampleClassName.EXAMPLE_OUTPUT);\n\n    // This is legacy listener to be replaced the listener for shareButtonEl.\n    this.playButtonEl?.addEventListener('click', () => this.handleShareButtonClick());\n    this.shareButtonEl?.addEventListener('click', () => this.handleShareButtonClick());\n    this.formatButtonEl?.addEventListener('click', () => this.handleFormatButtonClick());\n    this.runButtonEl?.addEventListener('click', () => this.handleRunButtonClick());\n\n    if (!this.inputEl) return;\n\n    this.resize();\n    this.inputEl.addEventListener('keyup', () => this.resize());\n    this.inputEl.addEventListener('keydown', e => this.onKeydown(e));\n  }\n\n  /**\n   * Replace the pre element with a textarea. The examples are initially rendered\n   * as pre elements so they're fully visible when JS is disabled.\n   */\n  makeTextArea(el: Element | null): HTMLTextAreaElement {\n    const t = document.createElement('textarea');\n    t.classList.add('Documentation-exampleCode', 'code');\n    t.spellcheck = false;\n    t.value = el?.textContent ?? '';\n    el?.parentElement?.replaceChild(t, el);\n    return t;\n  }\n\n  /**\n   * Retrieve the hash value of the anchor element.\n   */\n  getAnchorHash(): string | undefined {\n    return this.anchorEl?.hash;\n  }\n\n  /**\n   * Expands the current playground example.\n   */\n  expand(): void {\n    this.exampleEl.open = true;\n  }\n\n  /**\n   * Resizes the input element to accommodate the amount of text present.\n   */\n  private resize(): void {\n    if (this.inputEl?.value) {\n      const numLineBreaks = (this.inputEl.value.match(/\\n/g) || []).length;\n      // min-height + lines x line-height + padding + border\n      this.inputEl.style.height = `${(20 + numLineBreaks * 20 + 12 + 2) / 16}rem`;\n    }\n  }\n\n  /**\n   * Handler to override keyboard behavior in the playground's\n   * textarea element.\n   *\n   * Tab key inserts tabs into the example playground instead of\n   * switching to the next interactive element.\n   * @param e input element keyboard event.\n   */\n  private onKeydown(e: KeyboardEvent) {\n    if (e.key === 'Tab') {\n      document.execCommand('insertText', false, '\\t');\n      e.preventDefault();\n    }\n  }\n\n  /**\n   * Changes the text of the example's input box.\n   */\n  private setInputText(output: string) {\n    if (this.inputEl) {\n      this.inputEl.value = output;\n    }\n  }\n\n  /**\n   * Changes the text of the example's output box.\n   */\n  private setOutputText(output: string) {\n    if (this.outputEl) {\n      this.outputEl.textContent = output;\n    }\n  }\n\n  /**\n   * Appends to the text of the example's output box.\n   */\n  private appendToOutputText(output: string) {\n    if (this.outputEl) {\n      this.outputEl.textContent += output;\n    }\n  }\n\n  private setOutputHTML(output: string) {\n    if (this.outputEl) {\n      this.outputEl.innerHTML = output;\n    }\n  }\n\n  /**\n   * Sets the error message text and overwrites\n   * output box to indicate a failed response.\n   */\n  private setErrorText(err: string) {\n    if (this.errorEl) {\n      this.errorEl.textContent = err;\n    }\n    this.setOutputText('An error has occurred\u2026');\n  }\n\n  private getCodeWithModFile(): string {\n    let codeWithModFile = this.inputEl?.value ?? '';\n    const moduleVars = document.querySelector<HTMLDivElement>('.js-playgroundVars')?.dataset ?? {};\n    if (moduleVars.modulepath !== 'std') {\n      codeWithModFile = codeWithModFile.concat(`\n-- go.mod --\nmodule play.ground\n\nrequire ${moduleVars.modulepath} ${moduleVars.version}\n`);\n    }\n\n    return codeWithModFile;\n  }\n\n  /**\n   * Opens a new window to play.golang.org using the\n   * example snippet's code in the playground.\n   */\n  private handleShareButtonClick() {\n    const PLAYGROUND_BASE_URL = 'https://play.golang.org/p/';\n\n    this.setOutputText('Waiting for remote server\u2026');\n\n    fetch('/play/share', {\n      method: 'POST',\n      body: this.getCodeWithModFile(),\n    })\n      .then(res => res.text())\n      .then(shareId => {\n        const href = PLAYGROUND_BASE_URL + shareId;\n        this.setOutputHTML(`<a href=\"${href}\">${href}</a>`);\n        window.open(href);\n      })\n      .catch(err => {\n        this.setErrorText(err);\n      });\n  }\n\n  /**\n   * Runs gofmt on the example snippet in the playground.\n   */\n  private handleFormatButtonClick() {\n    this.setOutputText('Waiting for remote server\u2026');\n    const body = new FormData();\n    body.append('body', this.inputEl?.value ?? '');\n\n    fetch('/play/fmt', {\n      method: 'POST',\n      body: body,\n    })\n      .then(res => res.json())\n      .then(({ Body, Error }) => {\n        this.setOutputText(Error || 'Done.');\n        if (Body) {\n          this.setInputText(Body);\n          this.resize();\n        }\n      })\n      .catch(err => {\n        this.setErrorText(err);\n      });\n  }\n\n  /**\n   * Runs the code snippet in the example playground.\n   */\n  private handleRunButtonClick() {\n    this.setOutputText('Waiting for remote server\u2026');\n\n    fetch('/play/compile', {\n      method: 'POST',\n      body: JSON.stringify({ body: this.getCodeWithModFile(), version: 2 }),\n    })\n      .then(res => res.json())\n      .then(async ({ Events, Errors }) => {\n        this.setOutputText(Errors || '');\n        for (const e of Events || []) {\n          this.appendToOutputText(e.Message);\n          await new Promise(resolve => setTimeout(resolve, e.Delay / 1000000));\n        }\n      })\n      .catch(err => {\n        this.setErrorText(err);\n      });\n  }\n}\n\nexport function initPlaygrounds(): void {\n  const exampleHashRegex = location.hash.match(/^#(example-.*)$/);\n  if (exampleHashRegex) {\n    const exampleHashEl = document.getElementById(exampleHashRegex[1]) as HTMLDetailsElement;\n    if (exampleHashEl) {\n      exampleHashEl.open = true;\n    }\n  }\n\n  // We use a spread operator to convert a nodelist into an array of elements.\n  const exampleHrefs = [\n    ...document.querySelectorAll<HTMLAnchorElement>(PlayExampleClassName.PLAY_HREF),\n  ];\n\n  /**\n   * Sometimes exampleHrefs and playContainers are in different order, so we\n   * find an exampleHref from a common hash.\n   * @param playContainer - playground container\n   */\n  const findExampleHash = (playContainer: PlaygroundExampleController) =>\n    exampleHrefs.find(ex => {\n      return ex.hash === playContainer.getAnchorHash();\n    });\n\n  for (const el of document.querySelectorAll(PlayExampleClassName.PLAY_CONTAINER)) {\n    // There should be the same amount of hrefs referencing examples as example containers.\n    const playContainer = new PlaygroundExampleController(el as HTMLDetailsElement);\n    const exampleHref = findExampleHash(playContainer);\n    if (exampleHref) {\n      exampleHref.addEventListener('click', () => {\n        playContainer.expand();\n      });\n    } else {\n      console.warn('example href not found');\n    }\n  }\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nimport { TreeNavController } from './tree.js';\n\nexport class SelectNavController {\n  constructor(private el: Element) {\n    this.el.addEventListener('change', e => {\n      const target = e.target as HTMLSelectElement;\n      let href = target.value;\n      if (!target.value.startsWith('/')) {\n        href = '/' + href;\n      }\n      window.location.href = href;\n    });\n  }\n}\n\nexport function makeSelectNav(tree: TreeNavController): HTMLLabelElement {\n  const label = document.createElement('label');\n  label.classList.add('go-Label');\n  label.setAttribute('aria-label', 'Menu');\n  const select = document.createElement('select');\n  select.classList.add('go-Select', 'js-selectNav');\n  label.appendChild(select);\n  const outline = document.createElement('optgroup');\n  outline.label = 'Outline';\n  select.appendChild(outline);\n  const groupMap: Record<string, HTMLOptGroupElement> = {};\n  let group: HTMLOptGroupElement;\n  for (const t of tree.treeitems) {\n    if (Number(t.depth) > 4) continue;\n    if (t.groupTreeitem) {\n      group = groupMap[t.groupTreeitem.label];\n      if (!group) {\n        group = groupMap[t.groupTreeitem.label] = document.createElement('optgroup');\n        group.label = t.groupTreeitem.label;\n        select.appendChild(group);\n      }\n    } else {\n      group = outline;\n    }\n    const o = document.createElement('option');\n    o.label = t.label;\n    o.textContent = t.label;\n    o.value = (t.el as HTMLAnchorElement).href.replace(window.location.origin, '').replace('/', '');\n    group.appendChild(o);\n  }\n  tree.addObserver(t => {\n    const hash = (t.el as HTMLAnchorElement).hash;\n    const value = select.querySelector<HTMLOptionElement>(`[value$=\"${hash}\"]`)?.value;\n    if (value) {\n      select.value = value;\n    }\n  }, 50);\n  return label;\n}\n", "/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * TreeNavController is the navigation tree component of the documentation page.\n * It adds accessiblity attributes to a tree, observes the heading elements\n * focus the topmost link for headings visible on the page, and implements the\n * WAI-ARIA Treeview Design Pattern with full\n * [keyboard support](https://www.w3.org/TR/wai-aria-practices/examples/treeview/treeview-2/treeview-2a.html#kbd_label).\n */\nexport class TreeNavController {\n  treeitems: TreeItem[];\n\n  /**\n   * firstChars is the first character of each treeitem in the same order\n   * as this.treeitems. We use this array to set focus by character when\n   * navigating the tree with a keyboard.\n   */\n  private firstChars: string[];\n  private firstTreeitem: TreeItem | null;\n  private lastTreeitem: TreeItem | null;\n  private observerCallbacks: ((t: TreeItem) => void)[];\n\n  constructor(private el: HTMLElement) {\n    this.treeitems = [];\n    this.firstChars = [];\n    this.firstTreeitem = null;\n    this.lastTreeitem = null;\n    this.observerCallbacks = [];\n    this.init();\n  }\n\n  private init(): void {\n    this.handleResize();\n    window.addEventListener('resize', this.handleResize);\n    this.findTreeItems();\n    this.updateVisibleTreeitems();\n    this.observeTargets();\n    if (this.firstTreeitem) {\n      this.firstTreeitem.el.tabIndex = 0;\n    }\n  }\n\n  private handleResize = (): void => {\n    this.el.style.setProperty('--js-tree-height', '100vh');\n    this.el.style.setProperty('--js-tree-height', this.el.clientHeight + 'px');\n  };\n\n  private observeTargets() {\n    this.addObserver(treeitem => {\n      this.expandTreeitem(treeitem);\n      this.setSelected(treeitem);\n      // TODO: Fix scroll issue in https://golang.org/issue/47450.\n      // treeitem.el.scrollIntoView({ block: 'nearest' });\n    });\n\n    const targets = new Map<string, boolean>();\n    const observer = new IntersectionObserver(\n      entries => {\n        for (const entry of entries) {\n          targets.set(entry.target.id, entry.isIntersecting || entry.intersectionRatio === 1);\n        }\n        for (const [id, isIntersecting] of targets) {\n          if (isIntersecting) {\n            const active = this.treeitems.find(t =>\n              (t.el as HTMLAnchorElement)?.href.endsWith(`#${id}`)\n            );\n            if (active) {\n              for (const fn of this.observerCallbacks) {\n                fn(active);\n              }\n            }\n            break;\n          }\n        }\n      },\n      {\n        threshold: 1.0,\n        rootMargin: '-60px 0px 0px 0px',\n      }\n    );\n\n    for (const href of this.treeitems.map(t => t.el.getAttribute('href'))) {\n      if (href) {\n        const id = href.replace(window.location.origin, '').replace('/', '').replace('#', '');\n        const target = document.getElementById(id);\n        if (target) {\n          observer.observe(target);\n        }\n      }\n    }\n  }\n\n  addObserver(fn: (t: TreeItem) => void, delay = 200): void {\n    this.observerCallbacks.push(debounce(fn, delay));\n  }\n\n  setFocusToNextItem(currentItem: TreeItem): void {\n    let nextItem = null;\n    for (let i = currentItem.index + 1; i < this.treeitems.length; i++) {\n      const ti = this.treeitems[i];\n      if (ti.isVisible) {\n        nextItem = ti;\n        break;\n      }\n    }\n    if (nextItem) {\n      this.setFocusToItem(nextItem);\n    }\n  }\n\n  setFocusToPreviousItem(currentItem: TreeItem): void {\n    let prevItem = null;\n    for (let i = currentItem.index - 1; i > -1; i--) {\n      const ti = this.treeitems[i];\n      if (ti.isVisible) {\n        prevItem = ti;\n        break;\n      }\n    }\n    if (prevItem) {\n      this.setFocusToItem(prevItem);\n    }\n  }\n\n  setFocusToParentItem(currentItem: TreeItem): void {\n    if (currentItem.groupTreeitem) {\n      this.setFocusToItem(currentItem.groupTreeitem);\n    }\n  }\n\n  setFocusToFirstItem(): void {\n    this.firstTreeitem && this.setFocusToItem(this.firstTreeitem);\n  }\n\n  setFocusToLastItem(): void {\n    this.lastTreeitem && this.setFocusToItem(this.lastTreeitem);\n  }\n\n  setSelected(currentItem: TreeItem): void {\n    for (const l1 of this.el.querySelectorAll('[aria-expanded=\"true\"]')) {\n      if (l1 === currentItem.el) continue;\n      if (!l1.nextElementSibling?.contains(currentItem.el)) {\n        l1.setAttribute('aria-expanded', 'false');\n      }\n    }\n    for (const l1 of this.el.querySelectorAll('[aria-selected]')) {\n      if (l1 !== currentItem.el) {\n        l1.setAttribute('aria-selected', 'false');\n      }\n    }\n    currentItem.el.setAttribute('aria-selected', 'true');\n    this.updateVisibleTreeitems();\n    this.setFocusToItem(currentItem, false);\n  }\n\n  expandTreeitem(treeitem: TreeItem): void {\n    let currentItem: TreeItem | null = treeitem;\n    while (currentItem) {\n      if (currentItem.isExpandable) {\n        currentItem.el.setAttribute('aria-expanded', 'true');\n      }\n      currentItem = currentItem.groupTreeitem;\n    }\n    this.updateVisibleTreeitems();\n  }\n\n  expandAllSiblingItems(currentItem: TreeItem): void {\n    for (const ti of this.treeitems) {\n      if (ti.groupTreeitem === currentItem.groupTreeitem && ti.isExpandable) {\n        this.expandTreeitem(ti);\n      }\n    }\n  }\n\n  collapseTreeitem(currentItem: TreeItem): void {\n    let groupTreeitem = null;\n\n    if (currentItem.isExpanded()) {\n      groupTreeitem = currentItem;\n    } else {\n      groupTreeitem = currentItem.groupTreeitem;\n    }\n\n    if (groupTreeitem) {\n      groupTreeitem.el.setAttribute('aria-expanded', 'false');\n      this.updateVisibleTreeitems();\n      this.setFocusToItem(groupTreeitem);\n    }\n  }\n\n  setFocusByFirstCharacter(currentItem: TreeItem, char: string): void {\n    let start: number, index: number;\n    char = char.toLowerCase();\n\n    // Get start index for search based on position of currentItem\n    start = currentItem.index + 1;\n    if (start === this.treeitems.length) {\n      start = 0;\n    }\n\n    // Check remaining slots in the menu\n    index = this.getIndexFirstChars(start, char);\n\n    // If not found in remaining slots, check from beginning\n    if (index === -1) {\n      index = this.getIndexFirstChars(0, char);\n    }\n\n    // If match was found...\n    if (index > -1) {\n      this.setFocusToItem(this.treeitems[index]);\n    }\n  }\n\n  private findTreeItems() {\n    const findItems = (el: HTMLElement, group: TreeItem | null) => {\n      let ti = group;\n      let curr = el.firstElementChild as HTMLElement;\n      while (curr) {\n        if (curr.tagName === 'A' || curr.tagName === 'SPAN') {\n          ti = new TreeItem(curr, this, group);\n          this.treeitems.push(ti);\n          this.firstChars.push(ti.label.substring(0, 1).toLowerCase());\n        }\n        if (curr.firstElementChild) {\n          findItems(curr, ti);\n        }\n        curr = curr.nextElementSibling as HTMLElement;\n      }\n    };\n    findItems(this.el as HTMLElement, null);\n    this.treeitems.map((ti, idx) => (ti.index = idx));\n  }\n\n  private updateVisibleTreeitems(): void {\n    this.firstTreeitem = this.treeitems[0];\n\n    for (const ti of this.treeitems) {\n      let parent = ti.groupTreeitem;\n      ti.isVisible = true;\n      while (parent && parent.el !== this.el) {\n        if (!parent.isExpanded()) {\n          ti.isVisible = false;\n        }\n        parent = parent.groupTreeitem;\n      }\n      if (ti.isVisible) {\n        this.lastTreeitem = ti;\n      }\n    }\n  }\n\n  private setFocusToItem(treeitem: TreeItem, focusEl = true) {\n    treeitem.el.tabIndex = 0;\n    if (focusEl) {\n      treeitem.el.focus();\n    }\n    for (const ti of this.treeitems) {\n      if (ti !== treeitem) {\n        ti.el.tabIndex = -1;\n      }\n    }\n  }\n\n  private getIndexFirstChars(startIndex: number, char: string): number {\n    for (let i = startIndex; i < this.firstChars.length; i++) {\n      if (this.treeitems[i].isVisible && char === this.firstChars[i]) {\n        return i;\n      }\n    }\n    return -1;\n  }\n}\n\nclass TreeItem {\n  el: HTMLElement;\n  groupTreeitem: TreeItem | null;\n  label: string;\n  isExpandable: boolean;\n  isVisible: boolean;\n  depth: number;\n  index: number;\n\n  private tree: TreeNavController;\n  private isInGroup: boolean;\n\n  constructor(el: HTMLElement, treeObj: TreeNavController, group: TreeItem | null) {\n    el.tabIndex = -1;\n    this.el = el;\n    this.groupTreeitem = group;\n    this.label = el.textContent?.trim() ?? '';\n    this.tree = treeObj;\n    this.depth = (group?.depth || 0) + 1;\n    this.index = 0;\n\n    const parent = el.parentElement;\n    if (parent?.tagName.toLowerCase() === 'li') {\n      parent?.setAttribute('role', 'none');\n    }\n    el.setAttribute('aria-level', this.depth + '');\n    if (el.getAttribute('aria-label')) {\n      this.label = el?.getAttribute('aria-label')?.trim() ?? '';\n    }\n\n    this.isExpandable = false;\n    this.isVisible = false;\n    this.isInGroup = !!group;\n\n    let curr = el.nextElementSibling;\n    while (curr) {\n      if (curr.tagName.toLowerCase() == 'ul') {\n        const groupId = `${group?.label ?? ''} nav group ${this.label}`.replace(/[\\W_]+/g, '_');\n        el.setAttribute('aria-owns', groupId);\n        el.setAttribute('aria-expanded', 'false');\n        curr.setAttribute('role', 'group');\n        curr.setAttribute('id', groupId);\n        this.isExpandable = true;\n        break;\n      }\n\n      curr = curr.nextElementSibling;\n    }\n    this.init();\n  }\n\n  private init() {\n    this.el.tabIndex = -1;\n    if (!this.el.getAttribute('role')) {\n      this.el.setAttribute('role', 'treeitem');\n    }\n    this.el.addEventListener('keydown', this.handleKeydown.bind(this));\n    this.el.addEventListener('click', this.handleClick.bind(this));\n    this.el.addEventListener('focus', this.handleFocus.bind(this));\n    this.el.addEventListener('blur', this.handleBlur.bind(this));\n  }\n\n  isExpanded() {\n    if (this.isExpandable) {\n      return this.el.getAttribute('aria-expanded') === 'true';\n    }\n\n    return false;\n  }\n\n  isSelected() {\n    return this.el.getAttribute('aria-selected') === 'true';\n  }\n\n  private handleClick(event: MouseEvent) {\n    // only process click events that directly happened on this treeitem\n    if (event.target !== this.el && event.target !== this.el.firstElementChild) {\n      return;\n    }\n    if (this.isExpandable) {\n      if (this.isExpanded() && this.isSelected()) {\n        this.tree.collapseTreeitem(this);\n      } else {\n        this.tree.expandTreeitem(this);\n      }\n      event.stopPropagation();\n    }\n    this.tree.setSelected(this);\n  }\n\n  private handleFocus() {\n    let el = this.el;\n    if (this.isExpandable) {\n      el = (el.firstElementChild as HTMLElement) ?? el;\n    }\n    el.classList.add('focus');\n  }\n\n  private handleBlur() {\n    let el = this.el;\n    if (this.isExpandable) {\n      el = (el.firstElementChild as HTMLElement) ?? el;\n    }\n    el.classList.remove('focus');\n  }\n\n  private handleKeydown(event: KeyboardEvent) {\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n\n    let captured = false;\n    switch (event.key) {\n      case ' ':\n      case 'Enter':\n        if (this.isExpandable) {\n          if (this.isExpanded() && this.isSelected()) {\n            this.tree.collapseTreeitem(this);\n          } else {\n            this.tree.expandTreeitem(this);\n          }\n          captured = true;\n        } else {\n          event.stopPropagation();\n        }\n        this.tree.setSelected(this);\n        break;\n\n      case 'ArrowUp':\n        this.tree.setFocusToPreviousItem(this);\n        captured = true;\n        break;\n\n      case 'ArrowDown':\n        this.tree.setFocusToNextItem(this);\n        captured = true;\n        break;\n\n      case 'ArrowRight':\n        if (this.isExpandable) {\n          if (this.isExpanded()) {\n            this.tree.setFocusToNextItem(this);\n          } else {\n            this.tree.expandTreeitem(this);\n          }\n        }\n        captured = true;\n        break;\n\n      case 'ArrowLeft':\n        if (this.isExpandable && this.isExpanded()) {\n          this.tree.collapseTreeitem(this);\n          captured = true;\n        } else {\n          if (this.isInGroup) {\n            this.tree.setFocusToParentItem(this);\n            captured = true;\n          }\n        }\n        break;\n\n      case 'Home':\n        this.tree.setFocusToFirstItem();\n        captured = true;\n        break;\n\n      case 'End':\n        this.tree.setFocusToLastItem();\n        captured = true;\n        break;\n\n      default:\n        if (event.key.length === 1 && event.key.match(/\\S/)) {\n          if (event.key == '*') {\n            this.tree.expandAllSiblingItems(this);\n          } else {\n            this.tree.setFocusByFirstCharacter(this, event.key);\n          }\n          captured = true;\n        }\n        break;\n    }\n\n    if (captured) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction debounce<T extends (...args: any[]) => any>(func: T, wait: number) {\n  let timeout: ReturnType<typeof setTimeout> | null;\n  return (...args: Parameters<T>) => {\n    const later = () => {\n      timeout = null;\n      func(...args);\n    };\n    if (timeout) {\n      clearTimeout(timeout);\n    }\n    timeout = setTimeout(later, wait);\n  };\n}\n", "/*!\n * @license\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * Controller for a table element with expandable rows. Adds event listeners to\n * a toggle within a table row that controls visiblity of additional related\n * rows in the table.\n *\n * @example\n * ```typescript\n * import {ExpandableRowsTableController} from '/static/js/table';\n *\n * const el = document .querySelector<HTMLTableElement>('.js-myTableElement')\n * new ExpandableRowsTableController(el));\n * ```\n */\nexport class ExpandableRowsTableController {\n  private rows: HTMLTableRowElement[];\n  private toggles: HTMLButtonElement[];\n\n  /**\n   * Create a table controller.\n   * @param table - The table element to which the controller binds.\n   */\n  constructor(private table: HTMLTableElement, private toggleAll?: HTMLButtonElement | null) {\n    this.rows = Array.from(table.querySelectorAll<HTMLTableRowElement>('[data-aria-controls]'));\n    this.toggles = Array.from(this.table.querySelectorAll('[aria-expanded]'));\n    this.setAttributes();\n    this.attachEventListeners();\n    this.update();\n  }\n\n  /**\n   * setAttributes sets data-aria-* and data-id attributes to regular\n   * html attributes as a workaround for limitations from safehtml.\n   */\n  private setAttributes() {\n    for (const a of ['data-aria-controls', 'data-aria-labelledby', 'data-id']) {\n      this.table.querySelectorAll(`[${a}]`).forEach(t => {\n        t.setAttribute(a.replace('data-', ''), t.getAttribute(a) ?? '');\n        t.removeAttribute(a);\n      });\n    }\n  }\n\n  private attachEventListeners() {\n    this.rows.forEach(t => {\n      t.addEventListener('click', e => {\n        this.handleToggleClick(e);\n      });\n    });\n    this.toggleAll?.addEventListener('click', () => {\n      this.expandAllItems();\n    });\n\n    document.addEventListener('keydown', e => {\n      if ((e.ctrlKey || e.metaKey) && e.key === 'f') {\n        this.expandAllItems();\n      }\n    });\n  }\n\n  private handleToggleClick(e: MouseEvent) {\n    let target = e.currentTarget as HTMLTableRowElement | null;\n    if (!target?.hasAttribute('aria-expanded')) {\n      target = this.table.querySelector(\n        `button[aria-controls=\"${target?.getAttribute('aria-controls')}\"]`\n      );\n    }\n    const isExpanded = target?.getAttribute('aria-expanded') === 'true';\n    target?.setAttribute('aria-expanded', isExpanded ? 'false' : 'true');\n    e.stopPropagation();\n    this.update();\n  }\n\n  expandAllItems = (): void => {\n    this.toggles.map(t => t.setAttribute('aria-expanded', 'true'));\n    this.update();\n  };\n\n  private collapseAllItems = () => {\n    this.toggles.map(t => t.setAttribute('aria-expanded', 'false'));\n    this.update();\n  };\n\n  private update = () => {\n    this.updateVisibleItems();\n    setTimeout(() => this.updateGlobalToggle());\n  };\n\n  private updateVisibleItems() {\n    this.rows.map(t => {\n      const isExpanded = t?.getAttribute('aria-expanded') === 'true';\n      const rowIds = t?.getAttribute('aria-controls')?.trimEnd().split(' ');\n      rowIds?.map(id => {\n        const target = document.getElementById(`${id}`);\n        if (isExpanded) {\n          target?.classList.add('visible');\n          target?.classList.remove('hidden');\n        } else {\n          target?.classList.add('hidden');\n          target?.classList.remove('visible');\n        }\n      });\n    });\n  }\n\n  private updateGlobalToggle() {\n    if (!this.toggleAll) return;\n    if (this.rows.some(t => t.hasAttribute('aria-expanded'))) {\n      this.toggleAll.style.display = 'block';\n    }\n    const someCollapsed = this.toggles.some(el => el.getAttribute('aria-expanded') === 'false');\n    if (someCollapsed) {\n      this.toggleAll.innerText = 'Expand all';\n      this.toggleAll.onclick = this.expandAllItems;\n      this.toggleAll.setAttribute('aria-label', 'Expand all directories');\n      this.toggleAll.setAttribute('aria-live', 'polite');\n    } else {\n      this.toggleAll.innerText = 'Collapse all';\n      this.toggleAll.onclick = this.collapseAllItems;\n      this.toggleAll.setAttribute('aria-label', 'Collapse all directories');\n      this.toggleAll.setAttribute('aria-live', 'polite');\n    }\n  }\n}\n", "import { initPlaygrounds } from 'static/shared/playground/playground';\nimport { SelectNavController, makeSelectNav } from 'static/shared/outline/select';\nimport { TreeNavController } from 'static/shared/outline/tree';\nimport { ExpandableRowsTableController } from 'static/shared/table/table';\n\ninitPlaygrounds();\n\nconst directories = document.querySelector<HTMLTableElement>('.js-expandableTable');\nif (directories) {\n  const table = new ExpandableRowsTableController(\n    directories,\n    document.querySelector<HTMLButtonElement>('.js-expandAllDirectories')\n  );\n  // Expand directories on page load with expand-directories query param.\n  if (window.location.search.includes('expand-directories')) {\n    table.expandAllItems();\n  }\n\n  const internalToggle = document.querySelector<HTMLButtonElement>('.js-showInternalDirectories');\n  if (internalToggle) {\n    if (document.querySelector('.UnitDirectories-internal')) {\n      internalToggle.style.display = 'block';\n      internalToggle.setAttribute('aria-label', 'Show Internal Directories');\n      internalToggle.setAttribute('aria-describedby', 'showInternal-description');\n    }\n    internalToggle.addEventListener('click', () => {\n      if (directories.classList.contains('UnitDirectories-showInternal')) {\n        directories.classList.remove('UnitDirectories-showInternal');\n        internalToggle.innerText = 'Show internal';\n        internalToggle.setAttribute('aria-label', 'Show Internal Directories');\n        internalToggle.setAttribute('aria-live', 'polite');\n        internalToggle.setAttribute('aria-describedby', 'showInternal-description');\n      } else {\n        directories.classList.add('UnitDirectories-showInternal');\n        internalToggle.innerText = 'Hide internal';\n        internalToggle.setAttribute('aria-label', 'Hide Internal Directories');\n        internalToggle.setAttribute('aria-live', 'polite');\n        internalToggle.setAttribute('aria-describedby', 'hideInternal-description');\n      }\n    });\n  }\n  if (document.querySelector('html[data-local=\"true\"]')) {\n    internalToggle?.click();\n  }\n}\n\nconst treeEl = document.querySelector<HTMLElement>('.js-tree');\nif (treeEl) {\n  const treeCtrl = new TreeNavController(treeEl);\n  const select = makeSelectNav(treeCtrl);\n  const mobileNav = document.querySelector('.js-mainNavMobile');\n  if (mobileNav && mobileNav.firstElementChild) {\n    mobileNav?.replaceChild(select, mobileNav.firstElementChild);\n  }\n  if (select.firstElementChild) {\n    new SelectNavController(select.firstElementChild);\n  }\n}\n\n/**\n * Event handlers for expanding and collapsing the readme section.\n */\nconst readme = document.querySelector('.js-readme');\nconst readmeContent = document.querySelector('.js-readmeContent');\nconst readmeOutline = document.querySelector('.js-readmeOutline');\nconst readmeExpand = document.querySelectorAll('.js-readmeExpand');\nconst readmeCollapse = document.querySelector('.js-readmeCollapse');\nconst mobileNavSelect = document.querySelector<HTMLSelectElement>('.DocNavMobile-select');\nif (readme && readmeContent && readmeOutline && readmeExpand.length && readmeCollapse) {\n  if (readme.clientHeight > 320) {\n    readme?.classList.remove('UnitReadme--expanded');\n    readme?.classList.add('UnitReadme--toggle');\n  }\n  if (window.location.hash.includes('readme')) {\n    expandReadme();\n  }\n  mobileNavSelect?.addEventListener('change', e => {\n    if ((e.target as HTMLSelectElement).value.startsWith('readme-')) {\n      expandReadme();\n    }\n  });\n  readmeExpand.forEach(el =>\n    el.addEventListener('click', e => {\n      e.preventDefault();\n      expandReadme();\n      readme.scrollIntoView();\n    })\n  );\n  readmeCollapse.addEventListener('click', e => {\n    e.preventDefault();\n    readme.classList.remove('UnitReadme--expanded');\n    if (readmeExpand[1]) {\n      readmeExpand[1].scrollIntoView({ block: 'center' });\n    }\n  });\n  readmeContent.addEventListener('keyup', () => {\n    expandReadme();\n  });\n  readmeContent.addEventListener('click', () => {\n    expandReadme();\n  });\n  readmeOutline.addEventListener('click', () => {\n    expandReadme();\n  });\n  document.addEventListener('keydown', e => {\n    if ((e.ctrlKey || e.metaKey) && e.key === 'f') {\n      expandReadme();\n    }\n  });\n}\n\n/**\n * expandReadme expands the readme and adds the section-readme hash to the\n * URL so it stays expanded when navigating back from an external link.\n */\nfunction expandReadme() {\n  history.replaceState(null, '', `${location.pathname}#section-readme`);\n  readme?.classList.add('UnitReadme--expanded');\n}\n\n/**\n * Expand details items that are focused. This will expand\n * deprecated symbols when they are navigated to from the index\n * or a direct link.\n */\nfunction openDeprecatedSymbol() {\n  if (!location.hash) return;\n  const heading = document.getElementById(location.hash.slice(1));\n  const grandParent = heading?.parentElement?.parentElement as HTMLDetailsElement | null;\n  if (grandParent?.nodeName === 'DETAILS') {\n    grandParent.open = true;\n  }\n}\nopenDeprecatedSymbol();\nwindow.addEventListener('hashchange', () => openDeprecatedSymbol());\n\n/**\n * Listen for changes in the build context dropdown.\n */\ndocument.querySelectorAll('.js-buildContextSelect').forEach(el => {\n  el.addEventListener('change', e => {\n    window.location.search = `?GOOS=${(e.target as HTMLSelectElement).value}`;\n  });\n});\n"],
-  "mappings": "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",
-  "names": ["PlayExampleClassName", "PlaygroundExampleController", "exampleEl", "e", "el", "numLineBreaks", "output", "err", "codeWithModFile", "moduleVars", "PLAYGROUND_BASE_URL", "res", "shareId", "href", "body", "Body", "Error", "Events", "Errors", "resolve", "initPlaygrounds", "exampleHashRegex", "exampleHashEl", "exampleHrefs", "findExampleHash", "playContainer", "ex", "exampleHref", "SelectNavController", "el", "e", "target", "href", "makeSelectNav", "tree", "label", "select", "outline", "groupMap", "group", "t", "o", "hash", "value", "TreeNavController", "el", "treeitem", "targets", "observer", "entries", "entry", "id", "isIntersecting", "active", "t", "fn", "href", "target", "delay", "debounce", "currentItem", "nextItem", "ti", "prevItem", "l1", "groupTreeitem", "char", "start", "index", "findItems", "group", "curr", "TreeItem", "idx", "parent", "focusEl", "startIndex", "treeObj", "groupId", "event", "captured", "func", "wait", "timeout", "args", "later", "ExpandableRowsTableController", "table", "toggleAll", "t", "a", "e", "target", "isExpanded", "id", "el", "initPlaygrounds", "directories", "table", "ExpandableRowsTableController", "internalToggle", "treeEl", "treeCtrl", "TreeNavController", "select", "makeSelectNav", "mobileNav", "SelectNavController", "readme", "readmeContent", "readmeOutline", "readmeExpand", "readmeCollapse", "mobileNavSelect", "expandReadme", "e", "el", "openDeprecatedSymbol", "grandParent"]
+  "mappings": "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",
+  "names": ["PlayExampleClassName", "PlaygroundExampleController", "exampleEl", "_a", "_b", "_c", "_d", "e", "el", "numLineBreaks", "output", "err", "codeWithModFile", "moduleVars", "PLAYGROUND_BASE_URL", "res", "shareId", "href", "body", "Body", "Error", "Events", "Errors", "resolve", "initPlaygrounds", "exampleHashRegex", "exampleHashEl", "exampleHrefs", "findExampleHash", "playContainer", "ex", "exampleHref", "SelectNavController", "el", "e", "target", "href", "makeSelectNav", "tree", "label", "select", "outline", "groupMap", "group", "t", "o", "_a", "hash", "value", "TreeNavController", "el", "treeitem", "targets", "observer", "entries", "entry", "id", "isIntersecting", "active", "t", "_a", "fn", "href", "target", "delay", "debounce", "currentItem", "nextItem", "ti", "prevItem", "l1", "groupTreeitem", "char", "start", "index", "findItems", "group", "curr", "TreeItem", "idx", "parent", "focusEl", "startIndex", "treeObj", "_b", "_c", "_d", "_e", "groupId", "event", "captured", "func", "wait", "timeout", "args", "later", "ExpandableRowsTableController", "table", "toggleAll", "t", "a", "_a", "e", "target", "isExpanded", "rowIds", "id", "el", "initPlaygrounds", "directories", "table", "ExpandableRowsTableController", "internalToggle", "treeEl", "treeCtrl", "TreeNavController", "select", "makeSelectNav", "mobileNav", "SelectNavController", "readme", "readmeContent", "readmeOutline", "readmeExpand", "readmeCollapse", "mobileNavSelect", "expandReadme", "e", "el", "openDeprecatedSymbol", "_a", "heading", "grandParent"]
 }
diff --git a/static/frontend/unit/main/main.min.css.map b/static/frontend/unit/main/main.min.css.map
index 40fd0d2..2fc759e 100644
--- a/static/frontend/unit/main/main.min.css.map
+++ b/static/frontend/unit/main/main.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["_build-context.css", "_directories.css", "_doc.css", "_files.css", "_meta.css", "_outline.css", "_readme_gen.css", "_readme.css", "main.css"],
   "sourcesContent": ["/*!\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.UnitBuildContext-titleContext label,\n.UnitBuildContext-singleContext {\n  color: var(--color-text-subtle);\n  font-size: 0.875rem;\n}\n\n.UnitBuildContext-singleContext {\n  padding: 0.35rem 0;\n}\n\n.UnitBuildContext-titleContext select {\n  border-color: var(--color-border);\n  color: var(--color-text-subtle);\n  margin-left: 0.25rem;\n  min-width: 6rem;\n}\n\n.UnitBuildContext-titleContext option {\n  color: var(--color-text-subtle);\n}\n\n.UnitBuildContext-link {\n  display: none;\n}\n@media only screen and (min-width: 30rem) {\n  .UnitBuildContext-link {\n    display: initial;\n  }\n}\n\n.UnitDoc .UnitBuildContext-titleContext {\n  position: relative;\n}\n\n.UnitDoc .UnitBuildContext-titleContext label,\n.UnitDoc .UnitBuildContext-singleContext {\n  bottom: 0.875rem;\n  position: absolute;\n  right: 0;\n}\n", "/*!\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.UnitDirectories {\n  margin-bottom: 2rem;\n}\n\n.UnitDirectories h2 a.UnitDirectories-idLink,\n.UnitDirectories summary a {\n  opacity: 0;\n}\n\n.UnitDirectories h2:hover a,\n.UnitDirectories summary:focus a {\n  opacity: 1;\n}\n\n.UnitDirectories-title {\n  border-bottom: var(--border);\n  font-size: 1.375rem;\n  margin: 0.5rem 0 0;\n  padding-bottom: 1rem;\n}\n\n.UnitDirectories-title img {\n  margin: auto 1rem auto 0;\n}\n\n.UnitDirectories-table {\n  border-collapse: collapse;\n  height: 0;\n  table-layout: auto;\n  width: 100%;\n}\n\n.UnitDirectories-table--tree {\n  margin-top: -2rem;\n}\n\n.UnitDirectories-tableHeader {\n  background-color: var(--color-background-accented);\n}\n\n.UnitDirectories-tableHeader--tree {\n  visibility: hidden;\n}\n\n.UnitDirectories td {\n  border-bottom: var(--border);\n  max-width: 32rem;\n  min-width: 12rem;\n  padding: 0.25rem 1rem;\n  vertical-align: middle;\n  word-break: break-word;\n}\n\n.UnitDirectories th {\n  padding: 0.5rem 1rem;\n  text-align: left;\n}\n\n.UnitDirectories tr.hidden {\n  display: none;\n}\n\n.UnitDirectories tr[aria-controls] {\n  cursor: pointer;\n}\n\n.UnitDirectories tr[aria-controls]:hover {\n  background-color: var(--color-background-accented);\n}\n\n.UnitDirectories th.UnitDirectories-toggleHead {\n  font-size: 0;\n  max-width: 0.625rem;\n  padding: 0;\n  width: 0.625rem;\n}\n\n.UnitDirectories td.UnitDirectories-toggleCell,\nth.UnitDirectories-toggleCell {\n  background-color: var(--background);\n  border: var(--white);\n  max-width: 0.625rem;\n  padding: 0;\n  width: 0.625rem;\n}\n\n.UnitDirectories-toggleButton {\n  font-size: 1.25rem;\n  left: -0.75rem;\n  margin: 0 0 -1rem -0.875rem;\n  padding: 0;\n  position: absolute;\n  vertical-align: top;\n}\n\n.UnitDirectories-subSpacer {\n  border-right: var(--border);\n  display: inline;\n  margin-right: 0.875rem;\n  width: 0.0625rem;\n}\n\n.UnitDirectories-toggleButton[aria-expanded='true'] img {\n  transform: rotate(90deg);\n}\n\n.UnitDirectories-pathCell {\n  align-items: flex-start;\n  display: flex;\n  flex-direction: column;\n  line-height: 1.75rem;\n  word-break: break-all;\n}\n\n.UnitDirectories-pathCell > div {\n  position: relative;\n}\n\n.UnitDirectories-subdirectory {\n  border-left: var(--border);\n  display: flex;\n  flex-direction: column;\n  margin-left: 0.375rem;\n  padding: 0.5rem 1rem;\n}\n\n.UnitDirectories-internal {\n  display: none;\n}\n\n.UnitDirectories-showInternal .UnitDirectories-internal {\n  display: table-row;\n}\n\n.UnitDirectories-mobileSynopsis {\n  display: none;\n  line-height: 1.25rem;\n  margin-top: 0.25rem;\n  word-break: keep-all;\n}\n@media only screen and (max-width: 52rem) {\n  .UnitDirectories-mobileSynopsis {\n    display: initial;\n  }\n\n  .UnitDirectories-table th.UnitDirectories-desktopSynopsis,\n  .UnitDirectories-table td.UnitDirectories-desktopSynopsis {\n    display: none;\n  }\n}\n\n.UnitDirectories-toggles {\n  position: relative;\n}\n\n.UnitDirectories-toggleButtons {\n  bottom: 1rem;\n  display: flex;\n  gap: 1rem;\n  position: absolute;\n  right: 0;\n}\n\n.UnitDirectories-toggleButtons button {\n  background-color: transparent;\n  border: none;\n  color: var(--color-brand-primary);\n  cursor: pointer;\n  display: none;\n  font-size: 0.875rem;\n  text-decoration: none;\n}\n\n.UnitDirectories-badge {\n  border: 0.0625rem solid var(--color-text-subtle);\n  border-radius: 0.125rem;\n  font-size: 0.6875rem;\n  font-weight: 500;\n  line-height: 1rem;\n  margin-left: 0.5rem;\n  margin-top: 0.125rem;\n  padding: 0 0.35rem;\n  text-align: center;\n}\n", "/*!\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/* stylelint-disable no-descending-specificity */\n.UnitDoc {\n  margin-bottom: 2rem;\n  word-break: break-word;\n}\n\n.UnitDoc h2 a.UnitDoc-idLink,\n.UnitDoc summary a {\n  opacity: 0;\n}\n\n.UnitDoc h2:hover a,\n.UnitDoc summary:focus a {\n  opacity: 1;\n}\n\n.UnitDoc-title {\n  border-bottom: var(--border);\n  padding-bottom: 1rem;\n}\n\n.UnitDoc-title img {\n  margin: auto 1rem auto 0;\n}\n\n.UnitDoc-emptySection {\n  background-color: var(--color-background-accented);\n  color: var(--color-text-subtle);\n  height: 12.25rem;\n  margin-top: 1.5rem;\n  text-align: center;\n}\n\n.UnitDoc-emptySection img {\n  height: 7.8125rem;\n  width: auto;\n}\n\n.Documentation .UnitDoc-emptySection p {\n  margin: 1rem auto;\n}\n\n.UnitDoc .Documentation h4 {\n  margin-top: 1.5rem;\n}\n\n.Documentation {\n  display: block;\n}\n\n.Documentation p {\n  margin: 1rem 0;\n}\n\n.Documentation h2,\n.Documentation h3 {\n  margin-top: 1.5rem;\n}\n\n.Documentation a:hover {\n  text-decoration: underline;\n}\n\n.Documentation h2 a,\n.Documentation h3 a,\n.Documentation h4 a.Documentation-idLink,\n.Documentation summary a {\n  opacity: 0;\n}\n\n.Documentation a:focus {\n  opacity: 1;\n}\n\n.Documentation h3 a.Documentation-source {\n  opacity: 1;\n}\n\n.Documentation h2:hover a,\n.Documentation h3:hover a,\n.Documentation h4:hover a,\n.Documentation summary:hover a,\n.Documentation summary:focus a {\n  opacity: 1;\n}\n\n.Documentation ul {\n  line-height: 1.5rem;\n  list-style: none;\n  padding-left: 0;\n}\n\n.Documentation ul ul {\n  padding-left: 2em;\n}\n\n.Documentation .Documentation-bulletList {\n  list-style: disc;\n  margin-bottom: 1rem;\n  padding-left: 2rem;\n}\n\n.Documentation .Documentation-numberList {\n  list-style: decimal;\n  margin-bottom: 1rem;\n  padding-left: 2rem;\n}\n\n.Documentation pre + pre {\n  margin-top: 0.625rem;\n}\n\n.Documentation .Documentation-declarationLink + pre {\n  border-radius: 0 0 0.3em 0.3em;\n  border-top: var(--border);\n  margin-top: 0;\n}\n\n.Documentation pre .comment {\n  color: var(--color-code-comment);\n}\n\n.Documentation-toc,\n.Documentation-overview,\n.Documentation-index,\n.Documentation-examples {\n  padding-bottom: 0;\n}\n\n.Documentation-empty {\n  color: var(--color-text-subtle);\n  margin-top: -0.5rem;\n}\n@media only screen and (min-width: 64rem) {\n  .Documentation-toc {\n    margin-left: 2rem;\n    white-space: nowrap;\n  }\n\n  .Documentation-toc-columns {\n    columns: 2;\n  }\n}\n\n.Documentation-toc:empty {\n  display: none;\n}\n\n.Documentation-tocItem {\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.Documentation-tocItem--constants,\n.Documentation-tocItem--funcsAndTypes,\n.Documentation-tocItem--functions,\n.Documentation-tocItem--types,\n.Documentation-tocItem--variables,\n.Documentation-tocItem--notes {\n  display: none;\n}\n\n.Documentation-overviewHeader,\n.Documentation-indexHeader,\n.Documentation-constantsHeader,\n.Documentation-variablesHeader,\n.Documentation-examplesHeader,\n.Documentation-filesHeader,\n.Documentation-functionHeader,\n.Documentation-typeHeader,\n.Documentation-typeMethodHeader,\n.Documentation-typeFuncHeader {\n  margin-bottom: 0.5rem;\n}\n\n.Documentation-function h4,\n.Documentation-type h4,\n.Documentation-typeFunc h4,\n.Documentation-typeMethod h4 {\n  align-items: baseline;\n  display: flex;\n  justify-content: space-between;\n}\n\n.Documentation-sinceVersion {\n  color: var(--color-text-subtle);\n  font-size: 0.9375rem;\n  font-weight: 400;\n}\n\n.Documentation-constants br:last-of-type,\n.Documentation-variables br:last-of-type {\n  display: none;\n}\n\n.Documentation-build {\n  color: var(--color-text-subtle);\n  padding-top: 1.5rem;\n  text-align: right;\n}\n\n.Documentation-declaration pre {\n  scroll-padding-top: calc(var(--js-sticky-header-height, 3.5rem) + 3.75rem);\n}\n@media only screen and (min-width: 64rem) {\n  .Documentation-declaration pre {\n    scroll-padding-top: calc(var(--js-sticky-header-height, 3.5rem) + 0.75rem);\n  }\n}\n\n.Documentation-declaration + .Documentation-declaration {\n  margin-top: 0.625rem;\n}\n\n.Documentation-declarationLink {\n  background-color: var(--color-background-accented);\n  border: var(--border);\n  border-bottom: none;\n  border-radius: 0.3em 0.3em 0 0;\n  display: block;\n  font-size: 0.75rem;\n  line-height: 0.5rem;\n  padding: 0.375rem;\n  text-align: right;\n}\n\n.Documentation-exampleButtonsContainer {\n  align-items: center;\n  display: flex;\n  justify-content: flex-end;\n  margin-top: 0.5rem;\n}\n\n.Documentation-examplePlayButton {\n  background-color: var(--white);\n  border: 0.15rem solid var(--turq-med);\n  color: var(--turq-med);\n  cursor: pointer;\n  flex-shrink: 0;\n  height: 2.5rem;\n  width: 4.125rem;\n}\n\n.Documentation-exampleRunButton,\n.Documentation-exampleShareButton,\n.Documentation-exampleFormatButton {\n  border: 0.0625rem solid var(--turq-dark);\n  border-radius: 0.25rem;\n  cursor: pointer;\n  height: 2rem;\n  margin-left: 0.5rem;\n  padding: 0 1rem;\n}\n\n.Documentation-exampleRunButton {\n  background-color: var(--turq-dark);\n  color: var(--white);\n}\n\n.Documentation-exampleShareButton,\n.Documentation-exampleFormatButton {\n  background-color: var(--white);\n  color: var(--turq-dark);\n}\n\n.Documentation-exampleDetails {\n  margin-top: 1rem;\n}\n\n.Documentation-exampleDetailsBody pre {\n  border-radius: 0 0 0.3rem 0.3rem;\n  margin-bottom: 1rem;\n  margin-top: -0.25rem;\n}\n\n.Documentation-exampleDetailsBody textarea {\n  height: 100%;\n  outline: none;\n  overflow-x: auto;\n  resize: none;\n  white-space: pre;\n  width: 100%;\n}\n\n/**\n * We add another selector here to these two classes to increase CSS specificity,\n * the selector .Documentation pre + pre overrides .Documentation-exampleCode\n * and .Documentation-exampleOutput by itself and would replace the styles.\n */\n.Documentation-exampleDetailsBody .Documentation-exampleCode {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n  margin: 0;\n}\n\n.Documentation-exampleDetailsBody .Documentation-exampleOutput {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  margin: 0 0 0.5rem;\n}\n\n.Documentation-exampleDetailsHeader {\n  color: var(--color-brand-primary);\n  cursor: pointer;\n  margin-bottom: 2rem;\n  outline: none;\n  text-decoration: none;\n}\n\n.Documentation-exampleOutputLabel {\n  color: var(--color-text-subtle);\n}\n\n.Documentation-exampleError {\n  color: var(--pink);\n  margin-right: 0.4rem;\n  padding-right: 0.5rem;\n}\n\n/* See https://golang.org/issue/43368 for context. */\n.Documentation-function pre,\n.Documentation-typeFunc pre,\n.Documentation-typeMethod pre {\n  white-space: pre-wrap;\n  word-break: break-all;\n  word-wrap: break-word;\n}\n\n.Documentation-indexDeprecated {\n  margin-left: 0.5rem;\n}\n\n.Documentation-deprecatedBody {\n  color: var(--color-text-subtle);\n  font-size: 0.87rem;\n  font-weight: 400;\n  margin-left: 0.25rem;\n  margin-right: 0.5rem;\n}\n\n.Documentation-deprecatedTag {\n  background-color: var(--color-border);\n  border-radius: 0.125rem;\n  color: var(--color-text-inverted);\n  font-size: 0.75rem;\n  font-weight: normal;\n  line-height: 1.375;\n  padding: 0.125rem 0.25rem;\n  text-transform: uppercase;\n  vertical-align: middle;\n}\n\n.Documentation-deprecatedTitle {\n  align-items: center;\n  display: flex;\n  gap: 0.5rem;\n}\n\n.Documentation-deprecatedDetails {\n  color: var(--color-text-subtle);\n}\n\n.Documentation-deprecatedDetails a {\n  color: var(--color-text-subtle);\n}\n\n.Documentation-deprecatedDetails[open] {\n  color: var(--color-text);\n}\n\n.Documentation-deprecatedDetails[open] a {\n  color: var(--color-brand-primary);\n}\n\n.Documentation-deprecatedDetails .Documentation-deprecatedBody::after {\n  color: var(--color-brand-primary);\n  content: 'Show';\n}\n\n.Documentation-deprecatedDetails[open] .Documentation-deprecatedBody::after {\n  color: var(--color-brand-primary);\n  content: 'Hide';\n}\n\n.Documentation-deprecatedDetails > summary {\n  list-style: none;\n  opacity: 1;\n}\n\n.Documentation-deprecatedDetails .Documentation-source {\n  opacity: 1;\n}\n\n.Documentation-deprecatedItemBody {\n  padding: 1rem 1rem 0.5rem;\n}\n\n.Documentation-deprecatedMessage {\n  align-items: center;\n  display: flex;\n  gap: 0.5rem;\n  margin-bottom: 1rem;\n}\n", "/*!\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.UnitFiles {\n  margin-bottom: 2rem;\n}\n\n.UnitFiles-titleLink {\n  position: relative;\n}\n\n.UnitFiles-titleLink a {\n  bottom: 1rem;\n  font-size: 0.875rem;\n  position: absolute;\n  right: 0;\n}\n\n.UnitFiles-titleLink a::after {\n  background-image: url('/static/shared/icon/launch_gm_grey_24dp.svg');\n  background-repeat: no-repeat;\n  background-size: 0.875rem 1.25rem;\n  content: '';\n  display: inline-block;\n  height: 1rem;\n  left: 0.3125rem;\n  position: relative;\n  top: 0.125rem;\n  width: 1rem;\n}\n\n.UnitFiles h2 a.UnitFiles-idLink,\n.UnitFiles summary a {\n  opacity: 0;\n}\n\n.UnitFiles h2:hover a,\n.UnitFiles summary:focus a {\n  opacity: 1;\n}\n\n.UnitFiles-title {\n  border-bottom: var(--border);\n  font-size: 1.375rem;\n  margin: 0.5rem 0 0;\n  padding-bottom: 1rem;\n}\n\n.UnitFiles-title img {\n  margin: auto 1rem auto 0;\n}\n\n.UnitFiles-fileList {\n  columns: 12.5rem 5;\n  line-height: 1.5rem;\n  list-style: none;\n  margin-top: 1rem;\n  padding-left: 0;\n  word-break: break-all;\n}\n", "/*!\n* Copyright 2019-2020 The Go Authors. All rights reserved.\n* Use of this source code is governed by a BSD-style\n* license that can be found in the LICENSE file.\n*/\n\n.UnitMeta {\n  display: grid;\n  gap: 1rem 2rem;\n  grid-template-columns: max-content auto;\n  white-space: nowrap;\n}\n\n.UnitMeta-details,\n.UnitMeta-links {\n  display: flex;\n  flex-flow: wrap;\n  flex-direction: row;\n  gap: 1rem 2rem;\n}\n\n.UnitMeta-repo {\n  align-items: center;\n  display: flex;\n  overflow: hidden;\n}\n\n.UnitMeta-repo a {\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n@media (min-width: 50rem) {\n  .UnitMeta {\n    grid-template-columns: max-content auto;\n  }\n\n  .UnitMeta-details,\n  .UnitMeta-links {\n    flex-direction: row;\n  }\n}\n@media (min-width: 112rem) {\n  :root[data-layout='responsive'] .UnitMeta {\n    grid-template-columns: 100%;\n  }\n\n  :root[data-layout='responsive'] .UnitMeta-details,\n  :root[data-layout='responsive'] .UnitMeta-links {\n    flex-direction: column;\n    white-space: nowrap;\n  }\n}\n\n.UnitMeta-detailsLearn {\n  width: 100%;\n}\n@media (min-width: 50rem) {\n  .UnitMeta-detailsLearn {\n    width: initial;\n  }\n}\n", "/*!\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.UnitOutline-jumpTo {\n  display: flex;\n  margin-bottom: 1rem;\n}\n\n.UnitOutline-jumpTo button {\n  align-items: center;\n  background-color: var(--color-background);\n  border: var(--border);\n  border-radius: 0.25rem;\n  color: var(--color-text-subtle);\n  cursor: pointer;\n  height: 2rem;\n  padding-left: 1rem;\n  text-align: left;\n  width: 100%;\n}\n\n.UnitOutline-jumpTo button:hover:not([disabled]) {\n  border-color: var(--color-border);\n}\n\n.UnitOutline-jumpToInput:disabled {\n  background-color: var(--gray-9);\n}\n", "/*!\n* Copyright 2019-2020 The Go Authors. All rights reserved.\n* Use of this source code is governed by a BSD-style\n* license that can be found in the LICENSE file.\n*/\n\n/* ---------- */\n/*\n/* The CSS classes below are generated using devtools/cmd/css/main.go\n/* If the generated CSS already exists, the file is overwritten\n/*\n/* ---------- */\n\n.Overview-readmeContent details {\n  display: block;\n}\n.Overview-readmeContent summary {\n  display: list-item;\n}\n.Overview-readmeContent a {\n  background-color: initial;\n}\n.Overview-readmeContent a:active,\n.Overview-readmeContent a:hover {\n  outline-width: 0;\n}\n.Overview-readmeContent strong {\n  font-weight: inherit;\n  font-weight: bolder;\n}\n.Overview-readmeContent h3 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n.Overview-readmeContent img {\n  border-style: none;\n}\n.Overview-readmeContent code,\n.Overview-readmeContent kbd,\n.Overview-readmeContent pre {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n.Overview-readmeContent hr {\n  box-sizing: initial;\n  height: 0;\n  overflow: visible;\n}\n.Overview-readmeContent input {\n  font: inherit;\n  margin: 0;\n}\n.Overview-readmeContent input {\n  overflow: visible;\n}\n.Overview-readmeContent [type='checkbox'] {\n  box-sizing: border-box;\n  padding: 0;\n}\n.Overview-readmeContent * {\n  box-sizing: border-box;\n}\n.Overview-readmeContent input {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n.Overview-readmeContent a {\n  color: var(--color-brand-primary);\n  text-decoration: none;\n}\n.Overview-readmeContent a:hover {\n  text-decoration: underline;\n}\n.Overview-readmeContent strong {\n  font-weight: 600;\n}\n.Overview-readmeContent hr {\n  height: 0;\n  margin: 0.9375rem 0;\n  overflow: hidden;\n  background: transparent;\n  border: 0;\n  border-bottom: var(--border);\n}\n.Overview-readmeContent hr:after,\n.Overview-readmeContent hr:before {\n  display: table;\n  content: '';\n}\n.Overview-readmeContent hr:after {\n  clear: both;\n}\n.Overview-readmeContent table {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\n.Overview-readmeContent td,\n.Overview-readmeContent th {\n  padding: 0;\n}\n.Overview-readmeContent details summary {\n  cursor: pointer;\n}\n.Overview-readmeContent kbd {\n  display: inline-block;\n  padding: 0.1875rem 0.3125rem;\n  font: 0.6875rem SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;\n  line-height: 0.625rem;\n  color: #444d56;\n  vertical-align: middle;\n  background-color: var(--color-background-accented);\n  border: var(--border);\n  border-radius: 0.1875rem;\n  box-shadow: inset 0 -0.0625rem 0 var(--border);\n}\n.Overview-readmeContent h3,\n.Overview-readmeContent h4,\n.Overview-readmeContent h5,\n.Overview-readmeContent h6,\n.Overview-readmeContent div[aria-level='7'],\n.Overview-readmeContent div[aria-level='8'] {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.Overview-readmeContent h3 {\n  font-size: 2rem;\n}\n.Overview-readmeContent h3,\n.Overview-readmeContent h4 {\n  font-weight: 600;\n}\n.Overview-readmeContent h4 {\n  font-size: 1.5rem;\n}\n.Overview-readmeContent h5 {\n  font-size: 1.25rem;\n}\n.Overview-readmeContent h5,\n.Overview-readmeContent h6 {\n  font-weight: 600;\n}\n.Overview-readmeContent h6 {\n  font-size: 1rem;\n}\n.Overview-readmeContent div[aria-level='7'] {\n  font-size: 0.875rem;\n}\n.Overview-readmeContent div[aria-level='7'],\n.Overview-readmeContent div[aria-level='8'] {\n  font-weight: 600;\n}\n.Overview-readmeContent div[aria-level='8'] {\n  font-size: 0.75rem;\n}\n.Overview-readmeContent p {\n  margin-top: 0;\n  margin-bottom: 0.625rem;\n}\n.Overview-readmeContent blockquote {\n  margin: 0;\n}\n.Overview-readmeContent ol,\n.Overview-readmeContent ul {\n  padding-left: 0;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.Overview-readmeContent ol ol,\n.Overview-readmeContent ul ol {\n  list-style-type: lower-roman;\n}\n.Overview-readmeContent ol ol ol,\n.Overview-readmeContent ol ul ol,\n.Overview-readmeContent ul ol ol,\n.Overview-readmeContent ul ul ol {\n  list-style-type: lower-alpha;\n}\n.Overview-readmeContent dd {\n  margin-left: 0;\n}\n.Overview-readmeContent code,\n.Overview-readmeContent pre {\n  font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;\n  font-size: 0.75rem;\n}\n.Overview-readmeContent pre {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.Overview-readmeContent input::-webkit-inner-spin-button,\n.Overview-readmeContent input::-webkit-outer-spin-button {\n  margin: 0;\n  -webkit-appearance: none;\n  appearance: none;\n}\n.Overview-readmeContent :checked + .radio-label {\n  position: relative;\n  z-index: 1;\n  border-color: var(--color-brand-primary);\n}\n.Overview-readmeContent hr {\n  border-bottom-color: var(--color-border);\n}\n.Overview-readmeContent kbd {\n  display: inline-block;\n  padding: 0.1875rem 0.3125rem;\n  font: 0.6875rem SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;\n  line-height: 0.625rem;\n  color: #444d56;\n  vertical-align: middle;\n  background-color: var(--color-background-accented);\n  border: var(--border);\n  border-radius: 0.1875rem;\n  box-shadow: inset 0 -0.0625rem 0 var(--color-border);\n}\n.Overview-readmeContent a:not([href]) {\n  color: inherit;\n  text-decoration: none;\n}\n.Overview-readmeContent blockquote,\n.Overview-readmeContent details,\n.Overview-readmeContent dl,\n.Overview-readmeContent ol,\n.Overview-readmeContent p,\n.Overview-readmeContent pre,\n.Overview-readmeContent table,\n.Overview-readmeContent ul {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n.Overview-readmeContent hr {\n  height: 0.25em;\n  padding: 0;\n  margin: 1.5rem 0;\n  background-color: var(--color-border);\n  border: 0;\n}\n.Overview-readmeContent blockquote {\n  padding: 0 1em;\n  color: var(--color-text-subtle);\n  border-left: 0.25em solid var(--color-border);\n}\n.Overview-readmeContent blockquote > :first-child {\n  margin-top: 0;\n}\n.Overview-readmeContent blockquote > :last-child {\n  margin-bottom: 0;\n}\n.Overview-readmeContent h3,\n.Overview-readmeContent h4,\n.Overview-readmeContent h5,\n.Overview-readmeContent h6,\n.Overview-readmeContent div[aria-level='7'],\n.Overview-readmeContent div[aria-level='8'] {\n  margin-top: 1.5rem;\n  margin-bottom: 1rem;\n  font-weight: 600;\n  line-height: 1.25;\n}\n.Overview-readmeContent h3 {\n  font-size: 2em;\n}\n.Overview-readmeContent h3,\n.Overview-readmeContent h4 {\n  padding-bottom: 0.3em;\n  border-bottom: var(--border);\n}\n.Overview-readmeContent h4 {\n  font-size: 1.5em;\n}\n.Overview-readmeContent h5 {\n  font-size: 1.25em;\n}\n.Overview-readmeContent h6 {\n  font-size: 1em;\n}\n.Overview-readmeContent div[aria-level='7'] {\n  font-size: 0.875em;\n}\n.Overview-readmeContent div[aria-level='8'] {\n  font-size: 0.85em;\n  color: var(--color-text-subtle);\n}\n.Overview-readmeContent ol,\n.Overview-readmeContent ul {\n  padding-left: 2em;\n}\n.Overview-readmeContent ol ol,\n.Overview-readmeContent ol ul,\n.Overview-readmeContent ul ol,\n.Overview-readmeContent ul ul {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.Overview-readmeContent li {\n  word-wrap: break-all;\n}\n.Overview-readmeContent li > p {\n  margin-top: 1rem;\n}\n.Overview-readmeContent li + li {\n  margin-top: 0.25em;\n}\n.Overview-readmeContent dl {\n  padding: 0;\n}\n.Overview-readmeContent dl dt {\n  padding: 0;\n  margin-top: 1rem;\n  font-size: 1em;\n  font-style: italic;\n  font-weight: 600;\n}\n.Overview-readmeContent dl dd {\n  padding: 0 1rem;\n  margin-bottom: 1rem;\n}\n.Overview-readmeContent table {\n  display: block;\n  width: 100%;\n  overflow: auto;\n}\n.Overview-readmeContent table th {\n  font-weight: 600;\n}\n.Overview-readmeContent table td,\n.Overview-readmeContent table th {\n  padding: 0.375rem 0.8125rem;\n  border: var(--border);\n}\n.Overview-readmeContent table tr {\n  background-color: var(--color-background);\n  border-top: var(--border);\n}\n.Overview-readmeContent table tr:nth-child(2n) {\n  background-color: var(--color-background-accented);\n}\n.Overview-readmeContent img {\n  max-width: 100%;\n  box-sizing: initial;\n  background-color: var(--color-background);\n}\n.Overview-readmeContent img[align='right'] {\n  padding-left: 1.25rem;\n}\n.Overview-readmeContent img[align='left'] {\n  padding-right: 1.25rem;\n}\n.Overview-readmeContent code {\n  padding: 0.2em 0.4em;\n  margin: 0;\n  font-size: 85%;\n  background-color: var(--color-background-accented);\n  border-radius: 0.1875rem;\n}\n.Overview-readmeContent pre {\n  word-wrap: normal;\n}\n.Overview-readmeContent pre > code {\n  padding: 0;\n  margin: 0;\n  font-size: 100%;\n  word-break: normal;\n  white-space: pre;\n  background: transparent;\n  border: 0;\n}\n.Overview-readmeContent pre {\n  padding: 1rem;\n  overflow: auto;\n  font-size: 85%;\n  line-height: 1.45;\n  background-color: var(--color-background-accented);\n  border-radius: 0.1875rem;\n}\n.Overview-readmeContent pre code {\n  display: inline;\n  max-width: auto;\n  padding: 0;\n  margin: 0;\n  overflow: visible;\n  line-height: inherit;\n  word-wrap: normal;\n  background-color: initial;\n  border: 0;\n}\n\n/* ---------- */\n/*\n/* End output from devtools/cmd/css/main.go\n/*\n/* ---------- */\n", "/*!\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.UnitReadme {\n  margin-bottom: 2rem;\n}\n\n.UnitReadme ul,\n.UnitReadme ol {\n  list-style: circle;\n}\n\n.UnitReadme h2 a.UnitReadme-idLink,\n.UnitReadme summary a {\n  opacity: 0;\n}\n\n.UnitReadme h2:hover a,\n.UnitReadme summary:focus a {\n  opacity: 1;\n}\n\n.UnitReadme-title {\n  border-bottom: var(--border);\n  font-size: 1.375rem;\n  padding-bottom: 1rem;\n}\n\n.UnitReadme-title img {\n  margin: auto 1rem auto 0;\n}\n\n.UnitReadme-content {\n  /* stylelint-disable-next-line property-no-vendor-prefix */\n  -webkit-mask-image: linear-gradient(to bottom, black 75%, transparent 100%);\n  mask-image: linear-gradient(to bottom, black 75%, transparent 100%);\n  max-height: 20rem;\n  overflow: hidden;\n  position: relative;\n}\n\n.UnitReadme-content ul {\n  line-height: 1.5rem;\n}\n\n.UnitReadme-expandLink {\n  background: none;\n  border: none;\n  color: var(--color-brand-primary);\n  cursor: pointer;\n  padding: 0;\n}\n\n.UnitReadme-collapseLink {\n  background: none;\n  border: none;\n  color: var(--color-brand-primary);\n  cursor: pointer;\n  display: none;\n  padding: 0;\n}\n\n.UnitReadme--expanded .UnitReadme-content {\n  /* stylelint-disable-next-line property-no-vendor-prefix */\n  -webkit-mask-image: none;\n  mask-image: none;\n  max-height: initial;\n  overflow: initial;\n}\n\n.UnitReadme--toggle .UnitReadme-expandLink {\n  display: block;\n}\n\n.UnitReadme--expanded .UnitReadme-expandLink {\n  display: none;\n}\n\n.UnitReadme--expanded.UnitReadme--toggle .UnitReadme-collapseLink {\n  display: block;\n}\n\n.Overview-readmeContent {\n  overflow-wrap: break-word;\n}\n", "/*!\n * Copyright 2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n@import url('./_build-context.css');\n@import url('./_directories.css');\n@import url('./_doc.css');\n@import url('./_files.css');\n@import url('./_meta.css');\n@import url('./_outline.css');\n@import url('./_readme_gen.css');\n@import url('./_readme.css');\n\n.UnitDetails {\n  column-gap: 2rem;\n  display: grid;\n  grid-template-columns: minmax(0, auto);\n  margin: auto;\n  min-height: 32rem;\n}\n@media only screen and (min-width: 64rem) {\n  .UnitDetails {\n    grid-template-columns: 15.5rem minmax(30.5rem, 43.125rem) minmax(10rem, 15.5rem);\n  }\n}\n@media only screen and (min-width: 80rem) {\n  .UnitDetails {\n    grid-template-columns: 15.5rem minmax(43.125rem, 60rem) 15.5rem;\n    justify-content: center;\n  }\n}\n\n.UnitDetails :target {\n  scroll-margin-top: calc(var(--js-sticky-header-height, 3.5rem) * 2.15);\n}\n@media only screen and (min-width: 64rem) {\n  .UnitDetails :target {\n    scroll-margin-top: calc(var(--js-sticky-header-height, 3.5rem) * 1.25);\n  }\n}\n\n.UnitDetails :target:not(details, h2) {\n  background-color: var(--color-background-highlighted);\n  padding: 0.25rem;\n}\n\n.UnitDetails-meta {\n  order: -1;\n}\n@media only screen and (min-width: 64rem) {\n  .UnitDetails-meta {\n    display: block;\n    margin-top: 2rem;\n    order: initial;\n  }\n}\n\n.UnitDetails-contentEmpty {\n  align-items: center;\n  background-color: var(--color-background-accented);\n  color: var(--color-text-subtle);\n  display: flex;\n  flex-direction: column;\n  height: 15rem;\n  padding-top: 1rem;\n  text-align: center;\n}\n\n.UnitDetails-contentEmpty img {\n  height: 7.8125rem;\n  width: auto;\n}\n"],
-  "mappings": "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",
+  "mappings": ";;;;;AAMA,qEAEE,+BACA,kBAGF,gCAZA,iBAgBA,sCACE,iCACA,+BACA,mBACA,eAGF,sCACE,+BAGF,uBACE,aAEF,0CACE,uBACE,iBAIJ,wCACE,kBAGF,uFAEE,eACA,kBACA,QCtCF,iBACE,mBAGF,wEAEE,UAGF,6DAEE,UAGF,uBACE,4BACA,mBAtBF,iBAwBE,oBAGF,2BA3BA,wBA+BA,uBACE,yBACA,SACA,kBACA,WAGF,6BACE,iBAGF,6BACE,kDAGF,mCACE,kBAGF,oBACE,4BACA,gBACA,gBArDF,oBAuDE,sBACA,sBAGF,oBA3DA,mBA6DE,gBAGF,2BACE,aAGF,mCACE,eAGF,yCACE,kDAGF,+CACE,YACA,kBA9EF,UAgFE,cAGF,6EAEE,mCACA,oBACA,kBAvFF,UAyFE,cAGF,8BACE,kBACA,aA9FF,oCAiGE,kBACA,mBAGF,2BACE,2BACA,eACA,qBACA,eAGF,sDACE,wBAGF,0BACE,uBACA,aACA,sBACA,oBACA,qBAGF,8BACE,kBAGF,8BACE,0BACA,aACA,sBACA,oBAhIF,mBAoIA,0BACE,aAGF,wDACE,kBAGF,gCACE,aACA,oBACA,kBACA,oBAEF,0CACE,gCACE,gBAGF,oHAEE,cAIJ,yBACE,kBAGF,+BACE,YACA,aACA,SACA,kBACA,QAGF,sCACE,6BACA,YACA,iCACA,eACA,aACA,kBACA,qBAGF,uBACE,+CApLF,sBAsLE,mBACA,gBACA,iBACA,kBACA,mBA1LF,iBA4LE,kBCrLF,SACE,mBACA,sBAGF,gDAEE,UAGF,6CAEE,UAGF,eACE,4BACA,oBAGF,mBA3BA,wBA+BA,sBACE,kDACA,+BACA,gBACA,kBACA,kBAGF,0BACE,iBACA,WAGF,uCA5CA,iBAgDA,2BACE,kBAGF,eACE,cAGF,iBAxDA,cA4DA,oCAEE,kBAGF,uBACE,0BAGF,0GAIE,UAGF,uBACE,UAGF,yCACE,UAGF,4IAKE,UAGF,kBACE,mBACA,gBACA,eAGF,qBACE,iBAGF,yCACE,gBACA,mBACA,kBAGF,yCACE,mBACA,mBACA,kBAGF,uBACE,mBAGF,kDAtHA,4BAwHE,yBACA,aAGF,4BACE,gCAGF,wFAIE,iBAGF,qBACE,+BACA,kBAEF,0CACE,mBACE,iBACA,mBAGF,2BACE,WAIJ,yBACE,aAGF,uBACE,gBACA,uBAGF,wMAME,aAGF,sSAUE,oBAGF,0GAIE,qBACA,aACA,8BAGF,4BACE,+BACA,mBACA,gBAGF,kFAEE,aAGF,qBACE,+BACA,mBACA,iBAGF,+BACE,0EAEF,0CACE,+BACE,0EAIJ,sDACE,mBAGF,+BACE,kDACA,qBACA,mBA/NF,4BAiOE,cACA,iBACA,kBAnOF,gBAqOE,iBAGF,uCACE,mBACA,aACA,yBACA,iBAGF,iCACE,8BACA,oCACA,sBACA,eACA,cACA,cACA,eAGF,qGAGE,uCA5PF,qBA8PE,eACA,YACA,kBAhQF,eAoQA,gCACE,kCACA,mBAGF,qEAEE,8BACA,uBAGF,8BACE,gBAGF,sCAnRA,8BAqRE,mBACA,mBAGF,2CACE,YACA,aACA,gBACA,YACA,gBACA,WAQF,6DACE,4BACA,6BAzSF,SA6SA,+DACE,yBACA,0BA/SF,iBAmTA,oCACE,iCACA,eACA,mBACA,aACA,qBAGF,kCACE,+BAGF,4BACE,kBACA,mBACA,oBAIF,sFAGE,qBACA,qBACA,qBAGF,+BACE,kBAGF,8BACE,+BACA,iBACA,gBACA,mBACA,mBAGF,6BACE,qCA3VF,sBA6VE,iCACA,iBACA,gBACA,kBAhWF,uBAkWE,yBACA,sBAGF,+BACE,mBACA,aACA,UAGF,oEACE,+BAOF,uCACE,wBAGF,yCACE,iCAGF,qEACE,iCACA,eAGF,2EACE,iCACA,eAGF,yCACE,gBACA,UAGF,uDACE,UAGF,kCA/YA,wBAmZA,iCACE,mBACA,aACA,UACA,mBCjZF,WACE,mBAGF,qBACE,kBAGF,uBACE,YACA,kBACA,kBACA,QAGF,6BACE,kEACA,4BACA,gCACA,WACA,qBACA,YACA,cACA,kBACA,YACA,WAGF,sDAEE,UAGF,iDAEE,UAGF,iBACE,4BACA,mBA9CF,iBAgDE,oBAGF,qBAnDA,wBAuDA,oBACE,kBACA,mBACA,gBACA,gBACA,eACA,qBCvDF,UACE,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",
   "names": []
 }
diff --git a/static/frontend/unit/unit.js b/static/frontend/unit/unit.js
index 8f7ee152..45021ff 100644
--- a/static/frontend/unit/unit.js
+++ b/static/frontend/unit/unit.js
@@ -1,4 +1,4 @@
-var n=class{constructor(t,e,d){this.mainHeader=t;this.mainNav=e;this.mainAside=d;this.handleDoubleClick=t=>{t.target===this.mainHeader?.lastElementChild&&(window.getSelection()?.removeAllRanges(),window.scrollTo({top:0,behavior:"smooth"}))};this.handleResize=()=>{let t=(e,d)=>document.documentElement.style.setProperty(e,d);t("--js-unit-header-height","0"),setTimeout(()=>{let e=(this.mainHeader?.getBoundingClientRect().height??0)/16;t("--js-unit-header-height",`${e}rem`),t("--js-sticky-header-height",`${3.5}rem`),t("--js-unit-header-top",`${(e-3.5)*-1}rem`)})};this.headerObserver=new IntersectionObserver(([i])=>{if(i.intersectionRatio<1)for(let r of document.querySelectorAll('[class^="go-Main-header"'))r.setAttribute("data-fixed","true");else{for(let r of document.querySelectorAll('[class^="go-Main-header"'))r.removeAttribute("data-fixed");this.handleResize()}},{threshold:1,rootMargin:`${3.5*16}px`}),this.navObserver=new IntersectionObserver(([i])=>{i.intersectionRatio<1?(this.mainNav?.classList.add("go-Main-nav--fixed"),this.mainNav?.setAttribute("data-fixed","true")):(this.mainNav?.classList.remove("go-Main-nav--fixed"),this.mainNav?.removeAttribute("data-fixed"))},{threshold:1,rootMargin:`-${3.5*16+10}px`}),this.asideObserver=new IntersectionObserver(([i])=>{i.intersectionRatio<1?this.mainHeader?.setAttribute("data-raised","true"):this.mainHeader?.removeAttribute("data-raised")},{threshold:1,rootMargin:`-${3.5*16+20}px 0px 0px 0px`}),this.init()}init(){this.handleResize(),window.addEventListener("resize",this.handleResize),this.mainHeader?.addEventListener("dblclick",this.handleDoubleClick);let t=document.querySelector(".js-siteHeader");if(this.mainHeader?.hasChildNodes()&&t){let e=document.createElement("div");t.prepend(e),this.headerObserver.observe(e)}if(this.mainNav?.hasChildNodes()){let e=document.createElement("div");this.mainNav.prepend(e),this.navObserver.observe(e)}if(this.mainAside){let e=document.createElement("div");this.mainAside.prepend(e),this.asideObserver.observe(e)}}},s=a=>document.querySelector(a);new n(s(".js-mainHeader"),s(".js-mainNav"),s(".js-mainAside"));export{n as MainLayoutController};
+var d=class{constructor(r,s,i){this.mainHeader=r;this.mainNav=s;this.mainAside=i;this.handleDoubleClick=r=>{var i,t;r.target===((i=this.mainHeader)==null?void 0:i.lastElementChild)&&((t=window.getSelection())==null||t.removeAllRanges(),window.scrollTo({top:0,behavior:"smooth"}))};this.handleResize=()=>{let r=(s,i)=>document.documentElement.style.setProperty(s,i);r("--js-unit-header-height","0"),setTimeout(()=>{var i,t;let s=((t=(i=this.mainHeader)==null?void 0:i.getBoundingClientRect().height)!=null?t:0)/16;r("--js-unit-header-height",`${s}rem`),r("--js-sticky-header-height",`${3.5}rem`),r("--js-unit-header-top",`${(s-3.5)*-1}rem`)})};this.headerObserver=new IntersectionObserver(([t])=>{if(t.intersectionRatio<1)for(let e of document.querySelectorAll('[class^="go-Main-header"'))e.setAttribute("data-fixed","true");else{for(let e of document.querySelectorAll('[class^="go-Main-header"'))e.removeAttribute("data-fixed");this.handleResize()}},{threshold:1,rootMargin:`${3.5*16}px`}),this.navObserver=new IntersectionObserver(([t])=>{var e,n,h,l;t.intersectionRatio<1?((e=this.mainNav)==null||e.classList.add("go-Main-nav--fixed"),(n=this.mainNav)==null||n.setAttribute("data-fixed","true")):((h=this.mainNav)==null||h.classList.remove("go-Main-nav--fixed"),(l=this.mainNav)==null||l.removeAttribute("data-fixed"))},{threshold:1,rootMargin:`-${3.5*16+10}px`}),this.asideObserver=new IntersectionObserver(([t])=>{var e,n;t.intersectionRatio<1?(e=this.mainHeader)==null||e.setAttribute("data-raised","true"):(n=this.mainHeader)==null||n.removeAttribute("data-raised")},{threshold:1,rootMargin:`-${3.5*16+20}px 0px 0px 0px`}),this.init()}init(){var s,i,t;this.handleResize(),window.addEventListener("resize",this.handleResize),(s=this.mainHeader)==null||s.addEventListener("dblclick",this.handleDoubleClick);let r=document.querySelector(".js-siteHeader");if((i=this.mainHeader)!=null&&i.hasChildNodes()&&r){let e=document.createElement("div");r.prepend(e),this.headerObserver.observe(e)}if((t=this.mainNav)!=null&&t.hasChildNodes()){let e=document.createElement("div");this.mainNav.prepend(e),this.navObserver.observe(e)}if(this.mainAside){let e=document.createElement("div");this.mainAside.prepend(e),this.asideObserver.observe(e)}}},a=o=>document.querySelector(o);new d(a(".js-mainHeader"),a(".js-mainNav"),a(".js-mainAside"));export{d as MainLayoutController};
 /**
  * @license
  * Copyright 2021 The Go Authors. All rights reserved.
diff --git a/static/frontend/unit/unit.js.map b/static/frontend/unit/unit.js.map
index 7af29e5..a9d7c76 100644
--- a/static/frontend/unit/unit.js.map
+++ b/static/frontend/unit/unit.js.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["unit.ts"],
   "sourcesContent": ["/**\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\nconst headerHeight = 3.5;\n\n/**\n * MainLayoutController calculates dynamic height values for header elements\n * to support variable size sticky positioned elements in the header so that\n * banners and breadcumbs may overflow to multiple lines.\n */\nexport class MainLayoutController {\n  private headerObserver: IntersectionObserver;\n  private navObserver: IntersectionObserver;\n  private asideObserver: IntersectionObserver;\n\n  constructor(\n    private mainHeader?: Element | null,\n    private mainNav?: Element | null,\n    private mainAside?: Element | null\n  ) {\n    this.headerObserver = new IntersectionObserver(\n      ([e]) => {\n        if (e.intersectionRatio < 1) {\n          for (const x of document.querySelectorAll('[class^=\"go-Main-header\"')) {\n            x.setAttribute('data-fixed', 'true');\n          }\n        } else {\n          for (const x of document.querySelectorAll('[class^=\"go-Main-header\"')) {\n            x.removeAttribute('data-fixed');\n          }\n          this.handleResize();\n        }\n      },\n      { threshold: 1, rootMargin: `${headerHeight * 16}px` }\n    );\n    this.navObserver = new IntersectionObserver(\n      ([e]) => {\n        if (e.intersectionRatio < 1) {\n          this.mainNav?.classList.add('go-Main-nav--fixed');\n          this.mainNav?.setAttribute('data-fixed', 'true');\n        } else {\n          this.mainNav?.classList.remove('go-Main-nav--fixed');\n          this.mainNav?.removeAttribute('data-fixed');\n        }\n      },\n      { threshold: 1, rootMargin: `-${headerHeight * 16 + 10}px` }\n    );\n    this.asideObserver = new IntersectionObserver(\n      ([e]) => {\n        if (e.intersectionRatio < 1) {\n          this.mainHeader?.setAttribute('data-raised', 'true');\n        } else {\n          this.mainHeader?.removeAttribute('data-raised');\n        }\n      },\n      { threshold: 1, rootMargin: `-${headerHeight * 16 + 20}px 0px 0px 0px` }\n    );\n    this.init();\n  }\n\n  private init() {\n    this.handleResize();\n    window.addEventListener('resize', this.handleResize);\n    this.mainHeader?.addEventListener('dblclick', this.handleDoubleClick);\n    const siteHeader = document.querySelector('.js-siteHeader');\n    if (this.mainHeader?.hasChildNodes() && siteHeader) {\n      const headerSentinel = document.createElement('div');\n      siteHeader.prepend(headerSentinel);\n      this.headerObserver.observe(headerSentinel);\n    }\n    if (this.mainNav?.hasChildNodes()) {\n      const navSentinel = document.createElement('div');\n      this.mainNav.prepend(navSentinel);\n      this.navObserver.observe(navSentinel);\n    }\n    if (this.mainAside) {\n      const asideSentinel = document.createElement('div');\n      this.mainAside.prepend(asideSentinel);\n      this.asideObserver.observe(asideSentinel);\n    }\n  }\n\n  private handleDoubleClick: EventListener = e => {\n    const target = e.target;\n    if (target === this.mainHeader?.lastElementChild) {\n      window.getSelection()?.removeAllRanges();\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    }\n  };\n\n  private handleResize = () => {\n    const setProp = (name: string, value: string) =>\n      document.documentElement.style.setProperty(name, value);\n    setProp('--js-unit-header-height', '0');\n    setTimeout(() => {\n      const mainHeaderHeight = (this.mainHeader?.getBoundingClientRect().height ?? 0) / 16;\n      setProp('--js-unit-header-height', `${mainHeaderHeight}rem`);\n      setProp('--js-sticky-header-height', `${headerHeight}rem`);\n      setProp('--js-unit-header-top', `${(mainHeaderHeight - headerHeight) * -1}rem`);\n    });\n  };\n}\n\nconst el = <T extends HTMLElement>(selector: string) => document.querySelector<T>(selector);\nnew MainLayoutController(el('.js-mainHeader'), el('.js-mainNav'), el('.js-mainAside'));\n"],
-  "mappings": "AAcO,IAAMA,EAAN,KAA2B,CAKhC,YACUC,EACAC,EACAC,EACR,CAHQ,gBAAAF,EACA,aAAAC,EACA,eAAAC,EAgEV,KAAQ,kBAAmCC,GAAK,CAC/BA,EAAE,SACF,KAAK,YAAY,mBAC9B,OAAO,aAAa,GAAG,gBAAgB,EACvC,OAAO,SAAS,CAAE,IAAK,EAAG,SAAU,QAAS,CAAC,EAElD,EAEA,KAAQ,aAAe,IAAM,CAC3B,IAAMC,EAAU,CAACC,EAAcC,IAC7B,SAAS,gBAAgB,MAAM,YAAYD,EAAMC,CAAK,EACxDF,EAAQ,0BAA2B,GAAG,EACtC,WAAW,IAAM,CACf,IAAMG,GAAoB,KAAK,YAAY,sBAAsB,EAAE,QAAU,GAAK,GAClFH,EAAQ,0BAA2B,GAAGG,CAAgB,KAAK,EAC3DH,EAAQ,4BAA6B,GAAG,GAAY,KAAK,EACzDA,EAAQ,uBAAwB,IAAIG,EAAmB,KAAgB,EAAE,KAAK,CAChF,CAAC,CACH,EAhFE,KAAK,eAAiB,IAAI,qBACxB,CAAC,CAACJ,CAAC,IAAM,CACP,GAAIA,EAAE,kBAAoB,EACxB,QAAWK,KAAK,SAAS,iBAAiB,0BAA0B,EAClEA,EAAE,aAAa,aAAc,MAAM,MAEhC,CACL,QAAWA,KAAK,SAAS,iBAAiB,0BAA0B,EAClEA,EAAE,gBAAgB,YAAY,EAEhC,KAAK,aAAa,CACpB,CACF,EACA,CAAE,UAAW,EAAG,WAAY,GAAG,IAAe,EAAE,IAAK,CACvD,EACA,KAAK,YAAc,IAAI,qBACrB,CAAC,CAACL,CAAC,IAAM,CACHA,EAAE,kBAAoB,GACxB,KAAK,SAAS,UAAU,IAAI,oBAAoB,EAChD,KAAK,SAAS,aAAa,aAAc,MAAM,IAE/C,KAAK,SAAS,UAAU,OAAO,oBAAoB,EACnD,KAAK,SAAS,gBAAgB,YAAY,EAE9C,EACA,CAAE,UAAW,EAAG,WAAY,IAAI,IAAe,GAAK,EAAE,IAAK,CAC7D,EACA,KAAK,cAAgB,IAAI,qBACvB,CAAC,CAACA,CAAC,IAAM,CACHA,EAAE,kBAAoB,EACxB,KAAK,YAAY,aAAa,cAAe,MAAM,EAEnD,KAAK,YAAY,gBAAgB,aAAa,CAElD,EACA,CAAE,UAAW,EAAG,WAAY,IAAI,IAAe,GAAK,EAAE,gBAAiB,CACzE,EACA,KAAK,KAAK,CACZ,CAEQ,MAAO,CACb,KAAK,aAAa,EAClB,OAAO,iBAAiB,SAAU,KAAK,YAAY,EACnD,KAAK,YAAY,iBAAiB,WAAY,KAAK,iBAAiB,EACpE,IAAMM,EAAa,SAAS,cAAc,gBAAgB,EAC1D,GAAI,KAAK,YAAY,cAAc,GAAKA,EAAY,CAClD,IAAMC,EAAiB,SAAS,cAAc,KAAK,EACnDD,EAAW,QAAQC,CAAc,EACjC,KAAK,eAAe,QAAQA,CAAc,CAC5C,CACA,GAAI,KAAK,SAAS,cAAc,EAAG,CACjC,IAAMC,EAAc,SAAS,cAAc,KAAK,EAChD,KAAK,QAAQ,QAAQA,CAAW,EAChC,KAAK,YAAY,QAAQA,CAAW,CACtC,CACA,GAAI,KAAK,UAAW,CAClB,IAAMC,EAAgB,SAAS,cAAc,KAAK,EAClD,KAAK,UAAU,QAAQA,CAAa,EACpC,KAAK,cAAc,QAAQA,CAAa,CAC1C,CACF,CAqBF,EAEMC,EAA6BC,GAAqB,SAAS,cAAiBA,CAAQ,EAC1F,IAAIf,EAAqBc,EAAG,gBAAgB,EAAGA,EAAG,aAAa,EAAGA,EAAG,eAAe,CAAC",
-  "names": ["MainLayoutController", "mainHeader", "mainNav", "mainAside", "e", "setProp", "name", "value", "mainHeaderHeight", "x", "siteHeader", "headerSentinel", "navSentinel", "asideSentinel", "el", "selector"]
+  "mappings": "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",
+  "names": ["MainLayoutController", "mainHeader", "mainNav", "mainAside", "e", "_a", "_b", "setProp", "name", "value", "mainHeaderHeight", "x", "_c", "_d", "siteHeader", "headerSentinel", "navSentinel", "asideSentinel", "el", "selector"]
 }
diff --git a/static/frontend/unit/unit.min.css b/static/frontend/unit/unit.min.css
index 42df51c..04c6d82 100644
--- a/static/frontend/unit/unit.min.css
+++ b/static/frontend/unit/unit.min.css
@@ -3,7 +3,7 @@
  * Use of this source code is governed by a BSD-style
  * license that can be found in the LICENSE file.
  */
-.UnitHeader-titleHeading{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.UnitHeader-overflowContainer{display:none;height:1.5rem;position:absolute;right:0;width:1.5rem}.go-Main-header[data-fixed] .UnitHeader-overflowContainer{display:block}@media screen and (min-width: 80rem){.go-Main-header[data-fixed] .UnitHeader-overflowContainer{display:none}}.UnitHeader-overflowImage{fill:var(--gray-3);height:100%;left:0;position:absolute;top:0;width:100%}.UnitHeader-overflowSelect{appearance:none;background:transparent;border:0;color:transparent;cursor:pointer;font-size:1rem;height:100%;left:0;position:absolute;top:0;width:100%}.UnitHeader-overflowSelect option{color:var(--color-text)}.UnitHeader-versionBadge,.DetailsHeader-badge{border-radius:unset;color:var(--color-text-inverted);font-size:.7rem;line-height:.85rem;margin:-1rem 0 -1rem .5rem;padding:.25rem .5rem;text-transform:uppercase;top:-.0625rem}.UnitHeader-versionBadge--unknown,.DetailsHeader-badge--unknown{display:none}a.UnitHeader-backLink{color:var(--color-text);display:block;font-size:1rem;position:absolute;right:.625rem;top:1.25rem}.UnitHeader-backLink img{vertical-align:middle}.DetailsHeader-badge--notAtLatest a,.DetailsHeader-badge--notAtLatest span.DetailsHeader-span--latest{display:none}.DetailsHeader-badge--notAtLatest .UnitMetaDetails-icon{z-index:1}.DetailsHeader-badge--notAtLatest .UnitMetaDetails-toggletipBubble{color:var(--black);text-transform:none}.DetailsHeader-span--notAtLatest .UnitMetaDetails-toggletip{height:0}.DetailsHeader-span--notAtLatest .UnitMetaDetails-toggletip button{height:.8125rem;line-height:0}.DetailsHeader-span--notAtLatest .UnitMetaDetails-toggletip img{vertical-align:middle}.DetailsHeader-badge--goToLatest span{display:none}.DetailsHeader-badge--goToLatest span.DetailsHeader-span--goToLatest{display:initial}.DetailsHeader-badge--unknown a,.DetailsHeader-badge--unknown span{display:none}.DetailsHeader-badge{border-radius:1rem;display:inline-block;font-size:.75rem;padding:.25rem .75rem;position:relative;top:-.125rem}.DetailsHeader-badge--latest a{display:none}.DetailsHeader-badge--goToLatest a:hover{text-decoration:none}.DetailsHeader-badge--latest span.DetailsHeader-span--notAtLatest{display:none}.DetailsHeader-badge--goToLatest,.DetailsHeader-badge--latest,.DetailsHeader-badge--notAtLatest{margin-left:.25rem}.go-Main{background-color:var(--color-background);color:var(--color-text);display:grid;flex-grow:1;grid-template:repeat(6,min-content) / 100%;grid-template-areas:"banner" "header" "aside" "nav" "article" "footer";min-height:32rem}.go-Main-banner{grid-area:banner;padding:1rem var(--gutter) 0 var(--gutter)}.go-Main-header{background-color:var(--color-background);border-bottom:var(--border);font-size:.875rem;grid-area:header;min-height:var(--js-unit-header-height);padding:0 var(--gutter);transition:box-shadow .25s linear;z-index:10}.go-Main-header[data-fixed]{border-bottom:none;position:sticky;top:var(--js-unit-header-top, 0)}.go-Main-header[data-raised]{border-bottom:var(--border)}.go-Main-nav{background-color:var(--color-background);border-bottom:var(--border);font-size:.875rem;grid-area:nav;padding:0 var(--gutter)}.go-Main-article{background-color:var(--color-background);grid-area:article;margin:var(--gap) 0 5rem 0;min-height:32rem;padding:0 var(--gutter)}.go-Main-aside{background-color:var(--color-background-accented);border-bottom:var(--border);font-size:.875rem;grid-area:aside;padding:1rem var(--gutter)}.go-Main-aside--empty{border-bottom:none;padding:0}.go-Main-footer{background-color:var(--color-background);grid-area:footer;padding:0 var(--gutter)}.go-Main>*:empty{border:none;margin:0;padding:0}.go-Main-headerBreadcrumb{margin-top:1rem}.go-Main-headerContent{margin-bottom:1rem;position:sticky;top:0}.go-Main-headerContent[data-fixed]{align-items:center;display:flex;margin-bottom:0;min-height:0}@media screen and (min-width: 80rem){.go-Main-headerContent[data-fixed]{justify-content:space-between}}.go-Main-headerTitle{align-items:center;display:flex;gap:.5rem;height:3.5rem;max-width:100%;padding-right:1.5rem}@media screen and (min-width: 80rem){.go-Main-headerTitle[data-fixed]{max-width:40%}}.go-Main-headerTitle .go-Clipboard{display:none}.go-Main-headerTitle[data-fixed] .go-Clipboard{display:initial}.go-Main-headerLogo{--logo-height: 1.75rem;--logo-width: calc(var(--logo-height) / .3768);align-items:center;display:flex;margin-right:-.5rem;opacity:0;transition:opacity .25s ease-in-out,width .25s ease-out;visibility:hidden;width:0}.go-Main-headerLogo img{height:var(--logo-height);margin:-1rem 0;width:var(--logo-width)}.go-Main-headerLogo[data-fixed]{margin-right:0;opacity:1;visibility:visible;width:var(--logo-width)}.go-Main-headerDetails{display:flex;flex-flow:row wrap;gap:0 1rem;white-space:nowrap}.go-Main-headerDetails[data-fixed]{display:none}@media screen and (min-width: 80rem){:root:not([data-layout=compact]) .go-Main-headerDetails[data-fixed]{display:flex}}.go-Main-headerDetailItem{color:var(--color-text-subtle);display:inline;font-size:.875rem;height:1.75rem;line-height:1.75rem}.go-Main-headerDetailItem:not(:last-of-type):after{content:"|";padding-left:1rem}.go-Main-nav--sticky{position:sticky;top:var(--js-sticky-header-height, 3.5rem);transition:box-shadow .25s linear;z-index:1}.go-Main-nav--fixed{border-top:initial}.go-Main-navDesktop{display:none;margin-top:var(--gap);overflow-y:auto;padding:.25rem;position:sticky;top:calc(var(--js-sticky-header-height, 3.5rem) + 1rem)}.go-Main-navMobile{display:flex;margin:.5rem 0}.go-Main-navMobile .go-Label{flex-grow:1;position:relative}.go-Main-navMobile .go-Select{padding-left:1.75rem;width:100%}.go-Main-navMobile .go-Label:before{background:url(/static/shared/icon/list_gm_grey_24dp.svg);background-repeat:no-repeat;background-size:contain;content:" ";height:1.25rem;left:.5rem;padding-left:1rem;position:absolute;top:.375rem;width:1.25rem}@media not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none){.go-Main-navMobile .go-Select{appearance:none}}}@media screen and (min-width: 80rem){:root[data-layout=responsive] .go-Main{grid-template:repeat(5,min-content) / 21.5% minmax(0,auto);grid-template-areas:"banner  banner" "header  header" "aside   aside" "nav     article" "footer  footer"}:root[data-layout=responsive] .go-Main-nav{border-bottom:none;border-top:none;padding:0 0 0 var(--gutter)}:root[data-layout=responsive] .go-Main-article{border-bottom:none;border-top:none;margin:var(--gap) 0 5rem var(--gap);padding:0 var(--gutter) 0 0}:root[data-layout=responsive] .go-Main-aside{border-bottom:var(--border)}:root[data-layout=responsive] .go-Main-nav--sticky{position:initial}:root[data-layout=responsive] .go-Main-nav--fixed{box-shadow:none}:root[data-layout=responsive] .go-Main-navDesktop{display:block}:root[data-layout=responsive] .go-Main-navMobile{display:none}}@media screen and (min-width: 112rem){:root[data-layout=responsive] .go-Main{grid-template:repeat(4,min-content) / minmax(17.5%,1fr) minmax(0,4fr) minmax(17.5%,1fr);grid-template-areas:"banner banner  banner" "header header  header" "nav    article aside" "footer footer  footer"}:root[data-layout=responsive] .go-Main-article{margin:var(--gap) var(--gap) 5rem;padding:0}:root[data-layout=responsive] .go-Main-aside{background-color:var(--color-background);border-bottom:none;margin:var(--gap) 0 0 0;padding:0 var(--gutter) 0 0}}@media screen and (min-width: 80rem){:root[data-layout=compact] .go-Main{grid-template:repeat(6,min-content) / 1fr auto;grid-template-areas:"banner  banner" "header  ." "header  nav" "aside   aside" "article article" "footer  footer"}:root[data-layout=compact] .go-Main-nav{align-items:center;border-bottom:var(--border);display:flex;top:calc((var(--js-main-header-height, 0) - var(--js-sticky-header-height, 3.5rem)) * -1)}:root[data-layout=compact] .go-Main-header[data-fixed]{box-shadow:none}:root[data-layout=compact] .go-Main-nav--sticky{height:var(--js-sticky-header-height, 3.5rem);position:sticky;top:0}:root[data-layout=compact] .go-Main-nav--fixed{box-shadow:none}:root[data-layout=compact] .go-Main-navDesktop{display:none}:root[data-layout=compact] .go-Main-navMobile{display:flex}}@media print{.go-Main-header--sticky,.go-Main-header--sticky>:last-child,.go-Main-nav--sticky,.go-Main-navDesktop{position:initial}}
+.UnitHeader-titleHeading{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.UnitHeader-overflowContainer{display:none;height:1.5rem;position:absolute;right:0;width:1.5rem}.go-Main-header[data-fixed] .UnitHeader-overflowContainer{display:block}@media screen and (min-width: 80rem){.go-Main-header[data-fixed] .UnitHeader-overflowContainer{display:none}}.UnitHeader-overflowImage{fill:var(--gray-3);height:100%;left:0;position:absolute;top:0;width:100%}.UnitHeader-overflowSelect{appearance:none;background:transparent;border:0;color:transparent;cursor:pointer;font-size:1rem;height:100%;left:0;position:absolute;top:0;width:100%}.UnitHeader-overflowSelect option{color:var(--color-text)}.UnitHeader-versionBadge,.DetailsHeader-badge{border-radius:unset;color:var(--color-text-inverted);font-size:.7rem;line-height:.85rem;margin:-1rem 0 -1rem .5rem;padding:.25rem .5rem;text-transform:uppercase;top:-.0625rem}.UnitHeader-versionBadge--unknown,.DetailsHeader-badge--unknown{display:none}a.UnitHeader-backLink{color:var(--color-text);display:block;font-size:1rem;position:absolute;right:.625rem;top:1.25rem}.UnitHeader-backLink img{vertical-align:middle}.DetailsHeader-badge--notAtLatest a,.DetailsHeader-badge--notAtLatest span.DetailsHeader-span--latest{display:none}.DetailsHeader-badge--notAtLatest .UnitMetaDetails-icon{z-index:1}.DetailsHeader-badge--notAtLatest .UnitMetaDetails-toggletipBubble{color:var(--black);text-transform:none}.DetailsHeader-span--notAtLatest .UnitMetaDetails-toggletip{height:0}.DetailsHeader-span--notAtLatest .UnitMetaDetails-toggletip button{height:.8125rem;line-height:0}.DetailsHeader-span--notAtLatest .UnitMetaDetails-toggletip img{vertical-align:middle}.DetailsHeader-badge--goToLatest span{display:none}.DetailsHeader-badge--goToLatest span.DetailsHeader-span--goToLatest{display:initial}.DetailsHeader-badge--unknown a,.DetailsHeader-badge--unknown span{display:none}.DetailsHeader-badge{border-radius:1rem;display:inline-block;font-size:.75rem;padding:.25rem .75rem;position:relative;top:-.125rem}.DetailsHeader-badge--latest a{display:none}.DetailsHeader-badge--goToLatest a:hover{text-decoration:none}.DetailsHeader-badge--latest span.DetailsHeader-span--notAtLatest{display:none}.DetailsHeader-badge--goToLatest,.DetailsHeader-badge--latest,.DetailsHeader-badge--notAtLatest{margin-left:.25rem}.go-Main{background-color:var(--color-background);color:var(--color-text);display:grid;flex-grow:1;grid-template:repeat(6,min-content) / 100%;grid-template-areas:"banner" "header" "aside" "nav" "article" "footer";min-height:32rem}.go-Main-banner{grid-area:banner;padding:1rem var(--gutter) 0 var(--gutter)}.go-Main-header{background-color:var(--color-background);border-bottom:var(--border);font-size:.875rem;grid-area:header;min-height:var(--js-unit-header-height);padding:0 var(--gutter);transition:box-shadow .25s linear;z-index:10}.go-Main-header[data-fixed]{border-bottom:none;position:sticky;top:var(--js-unit-header-top, 0)}.go-Main-header[data-raised]{border-bottom:var(--border)}.go-Main-nav{background-color:var(--color-background);border-bottom:var(--border);font-size:.875rem;grid-area:nav;padding:0 var(--gutter)}.go-Main-article{background-color:var(--color-background);grid-area:article;margin:var(--gap) 0 5rem 0;min-height:32rem;padding:0 var(--gutter)}.go-Main-aside{background-color:var(--color-background-accented);border-bottom:var(--border);font-size:.875rem;grid-area:aside;padding:1rem var(--gutter)}.go-Main-aside--empty{border-bottom:none;padding:0}.go-Main-footer{background-color:var(--color-background);grid-area:footer;padding:0 var(--gutter)}.go-Main>*:empty{border:none;margin:0;padding:0}.go-Main-headerBreadcrumb{margin-top:1rem}.go-Main-headerContent{margin-bottom:1rem;position:sticky;top:0}.go-Main-headerContent[data-fixed]{align-items:center;display:flex;margin-bottom:0;min-height:0}@media screen and (min-width: 80rem){.go-Main-headerContent[data-fixed]{justify-content:space-between}}.go-Main-headerTitle{align-items:center;display:flex;gap:.5rem;height:3.5rem;max-width:100%;padding-right:1.5rem}@media screen and (min-width: 80rem){.go-Main-headerTitle[data-fixed]{max-width:40%}}.go-Main-headerTitle .go-Clipboard{display:none}.go-Main-headerTitle[data-fixed] .go-Clipboard{display:initial}.go-Main-headerLogo{--logo-height: 1.75rem;--logo-width: calc(var(--logo-height) / .3768);align-items:center;display:flex;margin-right:-.5rem;opacity:0;transition:opacity .25s ease-in-out,width .25s ease-out;visibility:hidden;width:0}.go-Main-headerLogo img{height:var(--logo-height);margin:-1rem 0;width:var(--logo-width)}.go-Main-headerLogo[data-fixed]{margin-right:0;opacity:1;visibility:visible;width:var(--logo-width)}.go-Main-headerDetails{display:flex;flex-flow:row wrap;gap:0 1rem;white-space:nowrap}.go-Main-headerDetails[data-fixed]{display:none}@media screen and (min-width: 80rem){:root:not([data-layout="compact"]) .go-Main-headerDetails[data-fixed]{display:flex}}.go-Main-headerDetailItem{color:var(--color-text-subtle);display:inline;font-size:.875rem;height:1.75rem;line-height:1.75rem}.go-Main-headerDetailItem:not(:last-of-type):after{content:"|";padding-left:1rem}.go-Main-nav--sticky{position:sticky;top:var(--js-sticky-header-height, 3.5rem);transition:box-shadow .25s linear;z-index:1}.go-Main-nav--fixed{border-top:initial}.go-Main-navDesktop{display:none;margin-top:var(--gap);overflow-y:auto;padding:.25rem;position:sticky;top:calc(var(--js-sticky-header-height, 3.5rem) + 1rem)}.go-Main-navMobile{display:flex;margin:.5rem 0}.go-Main-navMobile .go-Label{flex-grow:1;position:relative}.go-Main-navMobile .go-Select{padding-left:1.75rem;width:100%}.go-Main-navMobile .go-Label:before{background:url(/static/shared/icon/list_gm_grey_24dp.svg);background-repeat:no-repeat;background-size:contain;content:" ";height:1.25rem;left:.5rem;padding-left:1rem;position:absolute;top:.375rem;width:1.25rem}@media not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none){.go-Main-navMobile .go-Select{appearance:none}}}@media screen and (min-width: 80rem){:root[data-layout=responsive] .go-Main{grid-template:repeat(5,min-content) / 21.5% minmax(0,auto);grid-template-areas:"banner  banner" "header  header" "aside   aside" "nav     article" "footer  footer"}:root[data-layout=responsive] .go-Main-nav{border-bottom:none;border-top:none;padding:0 0 0 var(--gutter)}:root[data-layout=responsive] .go-Main-article{border-bottom:none;border-top:none;margin:var(--gap) 0 5rem var(--gap);padding:0 var(--gutter) 0 0}:root[data-layout=responsive] .go-Main-aside{border-bottom:var(--border)}:root[data-layout=responsive] .go-Main-nav--sticky{position:initial}:root[data-layout=responsive] .go-Main-nav--fixed{box-shadow:none}:root[data-layout=responsive] .go-Main-navDesktop{display:block}:root[data-layout=responsive] .go-Main-navMobile{display:none}}@media screen and (min-width: 112rem){:root[data-layout=responsive] .go-Main{grid-template:repeat(4,min-content) / minmax(17.5%,1fr) minmax(0,4fr) minmax(17.5%,1fr);grid-template-areas:"banner banner  banner" "header header  header" "nav    article aside" "footer footer  footer"}:root[data-layout=responsive] .go-Main-article{margin:var(--gap) var(--gap) 5rem;padding:0}:root[data-layout=responsive] .go-Main-aside{background-color:var(--color-background);border-bottom:none;margin:var(--gap) 0 0 0;padding:0 var(--gutter) 0 0}}@media screen and (min-width: 80rem){:root[data-layout=compact] .go-Main{grid-template:repeat(6,min-content) / 1fr auto;grid-template-areas:"banner  banner" "header  ." "header  nav" "aside   aside" "article article" "footer  footer"}:root[data-layout=compact] .go-Main-nav{align-items:center;border-bottom:var(--border);display:flex;top:calc((var(--js-main-header-height, 0) - var(--js-sticky-header-height, 3.5rem)) * -1)}:root[data-layout=compact] .go-Main-header[data-fixed]{box-shadow:none}:root[data-layout=compact] .go-Main-nav--sticky{height:var(--js-sticky-header-height, 3.5rem);position:sticky;top:0}:root[data-layout=compact] .go-Main-nav--fixed{box-shadow:none}:root[data-layout=compact] .go-Main-navDesktop{display:none}:root[data-layout=compact] .go-Main-navMobile{display:flex}}@media print{.go-Main-header--sticky,.go-Main-header--sticky>:last-child,.go-Main-nav--sticky,.go-Main-navDesktop{position:initial}}
 /*!
  * Copyright 2020-2021 The Go Authors. All rights reserved.
  * Use of this source code is governed by a BSD-style
diff --git a/static/frontend/unit/unit.min.css.map b/static/frontend/unit/unit.min.css.map
index 7386430..7ded9dc 100644
--- a/static/frontend/unit/unit.min.css.map
+++ b/static/frontend/unit/unit.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["_header.css", "unit.css"],
   "sourcesContent": ["/*!\n * Copyright 2020-2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.UnitHeader-titleHeading {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.UnitHeader-overflowContainer {\n  display: none;\n  height: 1.5rem;\n  position: absolute;\n  right: 0;\n  width: 1.5rem;\n}\n\n.go-Main-header[data-fixed] .UnitHeader-overflowContainer {\n  display: block;\n}\n@media screen and (min-width: 80rem) {\n  .go-Main-header[data-fixed] .UnitHeader-overflowContainer {\n    display: none;\n  }\n}\n\n.UnitHeader-overflowImage {\n  fill: var(--gray-3);\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n\n.UnitHeader-overflowSelect {\n  appearance: none;\n  background: transparent;\n  border: 0;\n  color: transparent;\n  cursor: pointer;\n  font-size: 1rem;\n  height: 100%;\n  left: 0;\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n\n.UnitHeader-overflowSelect option {\n  color: var(--color-text);\n}\n\n.UnitHeader-versionBadge,\n.DetailsHeader-badge {\n  border-radius: unset;\n  color: var(--color-text-inverted);\n  font-size: 0.7rem;\n  line-height: 0.85rem;\n  margin: -1rem 0 -1rem 0.5rem;\n  padding: 0.25rem 0.5rem;\n  text-transform: uppercase;\n  top: -0.0625rem;\n}\n\n.UnitHeader-versionBadge--unknown,\n.DetailsHeader-badge--unknown {\n  display: none;\n}\n\na.UnitHeader-backLink {\n  color: var(--color-text);\n  display: block;\n  font-size: 1rem;\n  position: absolute;\n  right: 0.625rem;\n  top: 1.25rem;\n}\n\n.UnitHeader-backLink img {\n  vertical-align: middle;\n}\n\n.DetailsHeader-badge--notAtLatest a {\n  display: none;\n}\n\n.DetailsHeader-badge--notAtLatest span.DetailsHeader-span--latest {\n  display: none;\n}\n\n.DetailsHeader-badge--notAtLatest .UnitMetaDetails-icon {\n  z-index: 1;\n}\n\n.DetailsHeader-badge--notAtLatest .UnitMetaDetails-toggletipBubble {\n  color: var(--black);\n  text-transform: none;\n}\n\n.DetailsHeader-span--notAtLatest .UnitMetaDetails-toggletip {\n  height: 0;\n}\n\n.DetailsHeader-span--notAtLatest .UnitMetaDetails-toggletip button {\n  height: 0.8125rem;\n  line-height: 0;\n}\n\n.DetailsHeader-span--notAtLatest .UnitMetaDetails-toggletip img {\n  vertical-align: middle;\n}\n\n.DetailsHeader-badge--goToLatest span {\n  display: none;\n}\n\n.DetailsHeader-badge--goToLatest span.DetailsHeader-span--goToLatest {\n  display: initial;\n}\n\n.DetailsHeader-badge--unknown a {\n  display: none;\n}\n\n.DetailsHeader-badge--unknown span {\n  display: none;\n}\n\n.DetailsHeader-badge {\n  border-radius: 1rem;\n  display: inline-block;\n  font-size: 0.75rem;\n  padding: 0.25rem 0.75rem;\n  position: relative;\n  top: -0.125rem;\n}\n\n.DetailsHeader-badge--latest a {\n  display: none;\n}\n\n.DetailsHeader-badge--goToLatest a:hover {\n  text-decoration: none;\n}\n\n.DetailsHeader-badge--latest span.DetailsHeader-span--notAtLatest {\n  display: none;\n}\n\n.DetailsHeader-badge--goToLatest,\n.DetailsHeader-badge--latest,\n.DetailsHeader-badge--notAtLatest {\n  margin-left: 0.25rem;\n}\n", "/*!\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n@import url('./_header.css');\n\n.go-Main {\n  background-color: var(--color-background);\n  color: var(--color-text);\n  display: grid;\n  flex-grow: 1;\n  grid-template: repeat(6, min-content) / 100%;\n  grid-template-areas:\n    'banner'\n    'header'\n    'aside'\n    'nav'\n    'article'\n    'footer';\n  min-height: 32rem;\n}\n\n.go-Main-banner {\n  grid-area: banner;\n  padding: 1rem var(--gutter) 0 var(--gutter);\n}\n\n.go-Main-header {\n  background-color: var(--color-background);\n  border-bottom: var(--border);\n  font-size: 0.875rem;\n  grid-area: header;\n  min-height: var(--js-unit-header-height);\n  padding: 0 var(--gutter);\n  transition: box-shadow 0.25s linear;\n  z-index: 10;\n}\n\n.go-Main-header[data-fixed] {\n  border-bottom: none;\n  position: sticky;\n  top: var(--js-unit-header-top, 0);\n}\n\n.go-Main-header[data-raised] {\n  border-bottom: var(--border);\n}\n\n.go-Main-nav {\n  background-color: var(--color-background);\n  border-bottom: var(--border);\n  font-size: 0.875rem;\n  grid-area: nav;\n  padding: 0 var(--gutter);\n}\n\n.go-Main-article {\n  background-color: var(--color-background);\n  grid-area: article;\n  margin: var(--gap) 0 5rem 0;\n  min-height: 32rem;\n  padding: 0 var(--gutter);\n}\n\n.go-Main-aside {\n  background-color: var(--color-background-accented);\n  border-bottom: var(--border);\n  font-size: 0.875rem;\n  grid-area: aside;\n  padding: 1rem var(--gutter);\n}\n\n.go-Main-aside--empty {\n  border-bottom: none;\n  padding: 0;\n}\n\n.go-Main-footer {\n  background-color: var(--color-background);\n  grid-area: footer;\n  padding: 0 var(--gutter);\n}\n\n.go-Main > *:empty {\n  border: none;\n  margin: 0;\n  padding: 0;\n}\n\n.go-Main-headerBreadcrumb {\n  margin-top: 1rem;\n}\n\n.go-Main-headerContent {\n  margin-bottom: 1rem;\n  position: sticky;\n  top: 0;\n}\n\n.go-Main-headerContent[data-fixed] {\n  align-items: center;\n  display: flex;\n  margin-bottom: 0;\n  min-height: 0;\n}\n@media screen and (min-width: 80rem) {\n  .go-Main-headerContent[data-fixed] {\n    justify-content: space-between;\n  }\n}\n\n.go-Main-headerTitle {\n  align-items: center;\n  display: flex;\n  gap: 0.5rem;\n  height: 3.5rem;\n  max-width: 100%;\n  padding-right: 1.5rem;\n}\n@media screen and (min-width: 80rem) {\n  .go-Main-headerTitle[data-fixed] {\n    max-width: 40%;\n  }\n}\n\n.go-Main-headerTitle .go-Clipboard {\n  display: none;\n}\n\n.go-Main-headerTitle[data-fixed] .go-Clipboard {\n  display: initial;\n}\n\n.go-Main-headerLogo {\n  --logo-height: 1.75rem;\n  --logo-width: calc(var(--logo-height) / 0.3768);\n\n  align-items: center;\n  display: flex;\n  margin-right: -0.5rem;\n  opacity: 0;\n  transition: opacity 0.25s ease-in-out, width 0.25s ease-out;\n  visibility: hidden;\n  width: 0;\n}\n\n.go-Main-headerLogo img {\n  height: var(--logo-height);\n  margin: -1rem 0;\n  width: var(--logo-width);\n}\n\n.go-Main-headerLogo[data-fixed] {\n  margin-right: 0;\n  opacity: 1;\n  visibility: visible;\n  width: var(--logo-width);\n}\n\n.go-Main-headerDetails {\n  display: flex;\n  flex-flow: row wrap;\n  gap: 0 1rem;\n  white-space: nowrap;\n}\n\n.go-Main-headerDetails[data-fixed] {\n  display: none;\n}\n@media screen and (min-width: 80rem) {\n  :root:not([data-layout='compact']) .go-Main-headerDetails[data-fixed] {\n    display: flex;\n  }\n}\n\n.go-Main-headerDetailItem {\n  color: var(--color-text-subtle);\n  display: inline;\n  font-size: 0.875rem;\n  height: 1.75rem;\n  line-height: 1.75rem;\n}\n\n.go-Main-headerDetailItem:not(:last-of-type)::after {\n  content: '|';\n  padding-left: 1rem;\n}\n\n.go-Main-nav--sticky {\n  position: sticky;\n  top: var(--js-sticky-header-height, 3.5rem);\n  transition: box-shadow 0.25s linear;\n  z-index: 1;\n}\n\n.go-Main-nav--fixed {\n  border-top: initial;\n}\n\n.go-Main-navDesktop {\n  display: none;\n  margin-top: var(--gap);\n  overflow-y: auto;\n  padding: 0.25rem;\n  position: sticky;\n  top: calc(var(--js-sticky-header-height, 3.5rem) + 1rem);\n}\n\n.go-Main-navMobile {\n  display: flex;\n  margin: 0.5rem 0;\n}\n\n.go-Main-navMobile .go-Label {\n  flex-grow: 1;\n  position: relative;\n}\n\n.go-Main-navMobile .go-Select {\n  padding-left: 1.75rem;\n  width: 100%;\n}\n\n.go-Main-navMobile .go-Label::before {\n  background: url('/static/shared/icon/list_gm_grey_24dp.svg');\n  background-repeat: no-repeat;\n  background-size: contain;\n  content: ' ';\n  height: 1.25rem;\n  left: 0.5rem;\n  padding-left: 1rem;\n  position: absolute;\n  top: 0.375rem;\n  width: 1.25rem;\n}\n\n/* Safari only */\n@media not all and (min-resolution: 0.001dpcm) {\n  @supports (-webkit-appearance: none) {\n    .go-Main-navMobile .go-Select {\n      appearance: none;\n    }\n  }\n}\n\n@media screen and (min-width: 80rem) {\n  :root[data-layout='responsive'] .go-Main {\n    grid-template: repeat(5, min-content) / 21.5% minmax(0, auto);\n    grid-template-areas:\n      'banner  banner'\n      'header  header'\n      'aside   aside'\n      'nav     article'\n      'footer  footer';\n  }\n\n  :root[data-layout='responsive'] .go-Main-nav {\n    border-bottom: none;\n    border-top: none;\n    padding: 0 0 0 var(--gutter);\n  }\n\n  :root[data-layout='responsive'] .go-Main-article {\n    border-bottom: none;\n    border-top: none;\n    margin: var(--gap) 0 5rem var(--gap);\n    padding: 0 var(--gutter) 0 0;\n  }\n\n  :root[data-layout='responsive'] .go-Main-aside {\n    border-bottom: var(--border);\n  }\n\n  :root[data-layout='responsive'] .go-Main-nav--sticky {\n    position: initial;\n  }\n\n  :root[data-layout='responsive'] .go-Main-nav--fixed {\n    box-shadow: none;\n  }\n\n  :root[data-layout='responsive'] .go-Main-navDesktop {\n    display: block;\n  }\n\n  :root[data-layout='responsive'] .go-Main-navMobile {\n    display: none;\n  }\n}\n\n@media screen and (min-width: 112rem) {\n  :root[data-layout='responsive'] .go-Main {\n    grid-template: repeat(4, min-content) / minmax(17.5%, 1fr) minmax(0, 4fr) minmax(17.5%, 1fr);\n    grid-template-areas:\n      'banner banner  banner'\n      'header header  header'\n      'nav    article aside'\n      'footer footer  footer';\n  }\n\n  :root[data-layout='responsive'] .go-Main-article {\n    margin: var(--gap) var(--gap) 5rem;\n    padding: 0;\n  }\n\n  :root[data-layout='responsive'] .go-Main-aside {\n    background-color: var(--color-background);\n    border-bottom: none;\n    margin: var(--gap) 0 0 0;\n    padding: 0 var(--gutter) 0 0;\n  }\n}\n\n@media screen and (min-width: 80rem) {\n  :root[data-layout='compact'] .go-Main {\n    grid-template: repeat(6, min-content) / 1fr auto;\n    grid-template-areas:\n      'banner  banner'\n      'header  .'\n      'header  nav'\n      'aside   aside'\n      'article article'\n      'footer  footer';\n  }\n\n  :root[data-layout='compact'] .go-Main-nav {\n    align-items: center;\n    border-bottom: var(--border);\n    display: flex;\n    top: calc((var(--js-main-header-height, 0) - var(--js-sticky-header-height, 3.5rem)) * -1);\n  }\n\n  :root[data-layout='compact'] .go-Main-header[data-fixed] {\n    box-shadow: none;\n  }\n\n  :root[data-layout='compact'] .go-Main-nav--sticky {\n    height: var(--js-sticky-header-height, 3.5rem);\n    position: sticky;\n    top: 0;\n  }\n\n  :root[data-layout='compact'] .go-Main-nav--fixed {\n    box-shadow: none;\n  }\n\n  :root[data-layout='compact'] .go-Main-navDesktop {\n    display: none;\n  }\n\n  :root[data-layout='compact'] .go-Main-navMobile {\n    display: flex;\n  }\n}\n\n@media print {\n  .go-Main-header--sticky,\n  .go-Main-header--sticky > :last-child,\n  .go-Main-nav--sticky,\n  .go-Main-navDesktop {\n    position: initial;\n  }\n}\n"],
-  "mappings": "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",
+  "mappings": ";;;;;AAMA,yBACE,gBACA,uBACA,mBAGF,8BACE,aACA,cACA,kBACA,QACA,aAGF,0DACE,cAEF,qCACE,0DACE,cAIJ,0BACE,mBACA,YACA,OACA,kBACA,MACA,WAGF,2BACE,gBACA,uBACA,SACA,kBACA,eACA,eACA,YACA,OACA,kBACA,MACA,WAGF,kCACE,wBAGF,8CAEE,oBACA,iCACA,gBACA,mBA7DF,gDAgEE,yBACA,cAGF,gEAEE,aAGF,sBACE,wBACA,cACA,eACA,kBACA,cACA,YAGF,yBACE,sBAGF,sGACE,aAOF,wDACE,UAGF,mEACE,mBACA,oBAGF,4DACE,SAGF,mEACE,gBACA,cAGF,gEACE,sBAGF,sCACE,aAGF,qEACE,gBAGF,mEACE,aAOF,qBApIA,mBAsIE,qBACA,iBAvIF,sBAyIE,kBACA,aAGF,+BACE,aAGF,yCACE,qBAGF,kEACE,aAGF,gGAGE,mBCpJF,SACE,yCACA,wBACA,aACA,YACA,2CACA,uEAOA,iBAGF,gBACE,iBACA,2CAGF,gBACE,yCACA,4BACA,kBACA,iBACA,wCACA,wBACA,kCACA,WAGF,4BACE,mBACA,gBACA,iCAGF,6BACE,4BAGF,aACE,yCACA,4BACA,kBACA,cACA,wBAGF,iBACE,yCACA,kBACA,2BACA,iBACA,wBAGF,eACE,kDACA,4BACA,kBACA,gBACA,2BAGF,sBACE,mBA3EF,UA+EA,gBACE,yCACA,iBACA,wBAGF,iBACE,YAtFF,mBA2FA,0BACE,gBAGF,uBACE,mBACA,gBACA,MAGF,mCACE,mBACA,aACA,gBACA,aAEF,qCACE,mCACE,+BAIJ,qBACE,mBACA,aACA,UACA,cACA,eACA,qBAEF,qCACE,iCACE,eAIJ,mCACE,aAGF,+CACE,gBAGF,oBACE,uBACA,+CAEA,mBACA,aACA,oBACA,UACA,wDACA,kBACA,QAGF,wBACE,0BArJF,eAuJE,wBAGF,gCACE,eACA,UACA,mBACA,wBAGF,uBACE,aACA,mBACA,WACA,mBAGF,mCACE,aAEF,qCACE,sEACE,cAIJ,0BACE,+BACA,eACA,kBACA,eACA,oBAGF,mDACE,YACA,kBAGF,qBACE,gBACA,2CACA,kCACA,UAGF,oBACE,mBAGF,oBACE,aACA,sBACA,gBA5MF,eA8ME,gBACA,wDAGF,mBACE,aAnNF,eAuNA,6BACE,YACA,kBAGF,8BACE,qBACA,WAGF,oCACE,0DACA,4BACA,wBACA,YACA,eACA,WACA,kBACA,kBACA,YACA,cAIF,8CACE,qCACE,8BACE,kBAKN,qCACE,uCACE,2DACA,yGAQF,2CACE,mBACA,gBACA,4BAGF,+CACE,mBACA,gBACA,oCACA,4BAGF,6CACE,4BAGF,mDACE,iBAGF,kDACE,gBAGF,kDACE,cAGF,iDACE,cAIJ,sCACE,uCACE,wFACA,mHAOF,+CACE,kCA/SJ,UAmTE,6CACE,yCACA,mBACA,wBACA,6BAIJ,qCACE,oCACE,+CACA,kHASF,wCACE,mBACA,4BACA,aACA,0FAGF,uDACE,gBAGF,gDACE,8CACA,gBACA,MAGF,+CACE,gBAGF,+CACE,aAGF,8CACE,cAIJ,aACE,qGAIE",
   "names": []
 }
diff --git a/static/frontend/unit/versions/versions.js b/static/frontend/unit/versions/versions.js
index 30f1498..cf06f98 100644
--- a/static/frontend/unit/versions/versions.js
+++ b/static/frontend/unit/versions/versions.js
@@ -1,4 +1,4 @@
-var s=class{constructor(){this.expand=document.querySelector(".js-versionsExpand");this.collapse=document.querySelector(".js-versionsCollapse");this.details=[...document.querySelectorAll(".js-versionDetails")];if(this.expand?.parentElement){this.details.some(e=>e.tagName==="DETAILS")&&(this.expand.parentElement.style.display="block");for(let e of this.details)e.addEventListener("click",()=>{this.updateButtons()});this.expand?.addEventListener("click",()=>{this.details.map(e=>e.open=!0),this.updateButtons()}),this.collapse?.addEventListener("click",()=>{this.details.map(e=>e.open=!1),this.updateButtons()}),this.updateButtons(),this.setCurrent()}}setCurrent(){let e=document.querySelector(".js-canonicalURLPath")?.dataset?.canonicalUrlPath,t=document.querySelector(`.js-versionLink[href="${e}"]`);t&&(t.style.fontWeight="bold")}updateButtons(){setTimeout(()=>{if(!this.expand||!this.collapse)return;let e,t;for(let n of this.details)e=e||n.open,t=t||!n.open;this.expand.style.display=t?"inline-block":"none",this.collapse.style.display=t?"none":"inline-block"})}};new s;export{s as VersionsController};
+var i=class{constructor(){this.expand=document.querySelector(".js-versionsExpand");this.collapse=document.querySelector(".js-versionsCollapse");this.details=[...document.querySelectorAll(".js-versionDetails")];var n,e,s;if((n=this.expand)!=null&&n.parentElement){this.details.some(t=>t.tagName==="DETAILS")&&(this.expand.parentElement.style.display="block");for(let t of this.details)t.addEventListener("click",()=>{this.updateButtons()});(e=this.expand)==null||e.addEventListener("click",()=>{this.details.map(t=>t.open=!0),this.updateButtons()}),(s=this.collapse)==null||s.addEventListener("click",()=>{this.details.map(t=>t.open=!1),this.updateButtons()}),this.updateButtons(),this.setCurrent()}}setCurrent(){var s,t;let n=(t=(s=document.querySelector(".js-canonicalURLPath"))==null?void 0:s.dataset)==null?void 0:t.canonicalUrlPath,e=document.querySelector(`.js-versionLink[href="${n}"]`);e&&(e.style.fontWeight="bold")}updateButtons(){setTimeout(()=>{if(!this.expand||!this.collapse)return;let n,e;for(let s of this.details)n=n||s.open,e=e||!s.open;this.expand.style.display=e?"inline-block":"none",this.collapse.style.display=e?"none":"inline-block"})}};new i;export{i as VersionsController};
 /*!
  * @license
  * Copyright 2021 The Go Authors. All rights reserved.
diff --git a/static/frontend/unit/versions/versions.js.map b/static/frontend/unit/versions/versions.js.map
index e0527c4..6ef91e0 100644
--- a/static/frontend/unit/versions/versions.js.map
+++ b/static/frontend/unit/versions/versions.js.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["versions.ts"],
   "sourcesContent": ["/*!\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * VersionsController encapsulates event listeners and UI updates\n * for the versions page. As the expandable sections containing\n * the symbol history for a package are opened and closed it toggles\n * visiblity of the buttons to expand or collapse them. On page load\n * it adds an indicator to the version that matches the version request\n * by the user for the page or the canonical url path.\n */\nexport class VersionsController {\n  private expand = document.querySelector<HTMLButtonElement>('.js-versionsExpand');\n  private collapse = document.querySelector<HTMLButtonElement>('.js-versionsCollapse');\n  private details = [...document.querySelectorAll<HTMLDetailsElement>('.js-versionDetails')];\n\n  constructor() {\n    if (!this.expand?.parentElement) return;\n    if (this.details.some(d => d.tagName === 'DETAILS')) {\n      this.expand.parentElement.style.display = 'block';\n    }\n\n    for (const d of this.details) {\n      d.addEventListener('click', () => {\n        this.updateButtons();\n      });\n    }\n\n    this.expand?.addEventListener('click', () => {\n      this.details.map(d => (d.open = true));\n      this.updateButtons();\n    });\n\n    this.collapse?.addEventListener('click', () => {\n      this.details.map(d => (d.open = false));\n      this.updateButtons();\n    });\n\n    this.updateButtons();\n    this.setCurrent();\n  }\n\n  /**\n   * setCurrent applies the active style to the version dot\n   * for the version that matches the canonical URL path.\n   */\n  private setCurrent() {\n    const canonicalPath = document.querySelector<HTMLElement>('.js-canonicalURLPath')?.dataset\n      ?.canonicalUrlPath;\n    const versionLink = document.querySelector<HTMLElement>(\n      `.js-versionLink[href=\"${canonicalPath}\"]`\n    );\n    if (versionLink) {\n      versionLink.style.fontWeight = 'bold';\n    }\n  }\n\n  private updateButtons() {\n    setTimeout(() => {\n      if (!this.expand || !this.collapse) return;\n      let someOpen, someClosed;\n      for (const d of this.details) {\n        someOpen = someOpen || d.open;\n        someClosed = someClosed || !d.open;\n      }\n      this.expand.style.display = someClosed ? 'inline-block' : 'none';\n      this.collapse.style.display = someClosed ? 'none' : 'inline-block';\n    });\n  }\n}\n\nnew VersionsController();\n"],
-  "mappings": "AAeO,IAAMA,EAAN,KAAyB,CAK9B,aAAc,CAJd,KAAQ,OAAS,SAAS,cAAiC,oBAAoB,EAC/E,KAAQ,SAAW,SAAS,cAAiC,sBAAsB,EACnF,KAAQ,QAAU,CAAC,GAAG,SAAS,iBAAqC,oBAAoB,CAAC,EAGvF,GAAK,KAAK,QAAQ,cAClB,CAAI,KAAK,QAAQ,KAAKC,GAAKA,EAAE,UAAY,SAAS,IAChD,KAAK,OAAO,cAAc,MAAM,QAAU,SAG5C,QAAWA,KAAK,KAAK,QACnBA,EAAE,iBAAiB,QAAS,IAAM,CAChC,KAAK,cAAc,CACrB,CAAC,EAGH,KAAK,QAAQ,iBAAiB,QAAS,IAAM,CAC3C,KAAK,QAAQ,IAAIA,GAAMA,EAAE,KAAO,EAAK,EACrC,KAAK,cAAc,CACrB,CAAC,EAED,KAAK,UAAU,iBAAiB,QAAS,IAAM,CAC7C,KAAK,QAAQ,IAAIA,GAAMA,EAAE,KAAO,EAAM,EACtC,KAAK,cAAc,CACrB,CAAC,EAED,KAAK,cAAc,EACnB,KAAK,WAAW,EAClB,CAMQ,YAAa,CACnB,IAAMC,EAAgB,SAAS,cAA2B,sBAAsB,GAAG,SAC/E,iBACEC,EAAc,SAAS,cAC3B,yBAAyBD,CAAa,IACxC,EACIC,IACFA,EAAY,MAAM,WAAa,OAEnC,CAEQ,eAAgB,CACtB,WAAW,IAAM,CACf,GAAI,CAAC,KAAK,QAAU,CAAC,KAAK,SAAU,OACpC,IAAIC,EAAUC,EACd,QAAWJ,KAAK,KAAK,QACnBG,EAAWA,GAAYH,EAAE,KACzBI,EAAaA,GAAc,CAACJ,EAAE,KAEhC,KAAK,OAAO,MAAM,QAAUI,EAAa,eAAiB,OAC1D,KAAK,SAAS,MAAM,QAAUA,EAAa,OAAS,cACtD,CAAC,CACH,CACF,EAEA,IAAIL",
-  "names": ["VersionsController", "d", "canonicalPath", "versionLink", "someOpen", "someClosed"]
+  "mappings": "AAeO,IAAMA,EAAN,KAAyB,CAK9B,aAAc,CAJd,KAAQ,OAAS,SAAS,cAAiC,oBAAoB,EAC/E,KAAQ,SAAW,SAAS,cAAiC,sBAAsB,EACnF,KAAQ,QAAU,CAAC,GAAG,SAAS,iBAAqC,oBAAoB,CAAC,EAlB3F,IAAAC,EAAAC,EAAAC,EAqBI,IAAKF,EAAA,KAAK,SAAL,MAAAA,EAAa,cAClB,CAAI,KAAK,QAAQ,KAAKG,GAAKA,EAAE,UAAY,SAAS,IAChD,KAAK,OAAO,cAAc,MAAM,QAAU,SAG5C,QAAWA,KAAK,KAAK,QACnBA,EAAE,iBAAiB,QAAS,IAAM,CAChC,KAAK,cAAc,CACrB,CAAC,GAGHF,EAAA,KAAK,SAAL,MAAAA,EAAa,iBAAiB,QAAS,IAAM,CAC3C,KAAK,QAAQ,IAAIE,GAAMA,EAAE,KAAO,EAAK,EACrC,KAAK,cAAc,CACrB,IAEAD,EAAA,KAAK,WAAL,MAAAA,EAAe,iBAAiB,QAAS,IAAM,CAC7C,KAAK,QAAQ,IAAIC,GAAMA,EAAE,KAAO,EAAM,EACtC,KAAK,cAAc,CACrB,GAEA,KAAK,cAAc,EACnB,KAAK,WAAW,EAClB,CAMQ,YAAa,CAlDvB,IAAAH,EAAAC,EAmDI,IAAMG,GAAgBH,GAAAD,EAAA,SAAS,cAA2B,sBAAsB,IAA1D,YAAAA,EAA6D,UAA7D,YAAAC,EAClB,iBACEI,EAAc,SAAS,cAC3B,yBAAyBD,KAC3B,EACIC,IACFA,EAAY,MAAM,WAAa,OAEnC,CAEQ,eAAgB,CACtB,WAAW,IAAM,CACf,GAAI,CAAC,KAAK,QAAU,CAAC,KAAK,SAAU,OACpC,IAAIC,EAAUC,EACd,QAAWJ,KAAK,KAAK,QACnBG,EAAWA,GAAYH,EAAE,KACzBI,EAAaA,GAAc,CAACJ,EAAE,KAEhC,KAAK,OAAO,MAAM,QAAUI,EAAa,eAAiB,OAC1D,KAAK,SAAS,MAAM,QAAUA,EAAa,OAAS,cACtD,CAAC,CACH,CACF,EAEA,IAAIR",
+  "names": ["VersionsController", "_a", "_b", "_c", "d", "canonicalPath", "versionLink", "someOpen", "someClosed"]
 }
diff --git a/static/frontend/unit/versions/versions.min.css.map b/static/frontend/unit/versions/versions.min.css.map
index d77102b..cde9b28 100644
--- a/static/frontend/unit/versions/versions.min.css.map
+++ b/static/frontend/unit/versions/versions.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["versions.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.Versions table {\n  border-spacing: 0;\n}\n\n.Versions th {\n  text-align: left;\n}\n\n.Versions td {\n  padding-bottom: 1rem;\n}\n\n.Versions td:nth-child(1) {\n  padding-right: 3rem;\n  vertical-align: top;\n}\n\n.Versions td:nth-child(2) {\n  border-right: var(--border);\n  padding-right: 1rem;\n  text-align: right;\n  vertical-align: top;\n  white-space: nowrap;\n}\n\n.Versions td:nth-child(3) {\n  padding-left: 1rem;\n}\n\n.Versions-commitTime {\n  font-size: 1rem;\n  font-weight: 400;\n}\n\n.Versions-major {\n  font-weight: 600;\n}\n\n.Versions-symbols {\n  margin-left: 2rem;\n}\n\n.Versions-vulns {\n  margin: 0.25rem 2rem;\n  max-width: 60rem;\n}\n\n.Versions-symbolBulletNew {\n  color: var(--color-text-subtle);\n  padding-right: 0.5rem;\n}\n\n.Versions-symbolBuilds,\n.Versions-symbolBuildsDash,\n.Versions-symbolOld {\n  color: var(--color-text-subtle);\n}\n\n.Versions-symbolChild {\n  padding-left: 2rem;\n}\n\n.Versions-symbolSection,\n.Versions-symbolType {\n  margin-bottom: 0.625rem;\n}\n\n.Versions-symbolsHeader {\n  margin: 0.625rem 0;\n}\n\n.Versions-title {\n  align-items: center;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 1rem 2.5rem;\n  margin-bottom: 1rem;\n}\n\n.Versions-titleButtonGroup {\n  display: none;\n}\n\n.Versions-titleButtonGroup button {\n  font-size: 0.875rem;\n}\n\n.Versions-modulesTitle {\n  font-size: 1rem;\n  margin: 1rem 0;\n}\n\n.Versions-list {\n  gap: 0 1rem;\n  line-height: 2.25rem;\n}\n@media only screen and (min-width: 37.5rem) {\n  .Versions-list {\n    display: grid;\n    grid-template-columns: fit-content(8rem) fit-content(20rem) min-content auto;\n  }\n}\n\n.Version-major {\n  align-items: baseline;\n  display: flex;\n  gap: 1rem;\n  margin-bottom: 1rem;\n  min-width: 4rem;\n}\n@media only screen and (min-width: 37.5rem) {\n  .Version-major {\n    margin-bottom: 0;\n  }\n}\n\n.Version-tag {\n  text-align: left;\n}\n@media only screen and (min-width: 37.5rem) {\n  .Version-tag {\n    text-align: right;\n  }\n}\n\n.Version-dot {\n  border: var(--border);\n  color: var(--gray-7);\n  display: none;\n  font-size: 2.75rem;\n  justify-content: center;\n  line-height: 1.75rem;\n  -webkit-text-stroke: 0.125rem var(--color-background);\n  width: 0;\n}\n\n.Version-dot::before {\n  content: '\u2022';\n}\n@media only screen and (min-width: 37.5rem) {\n  .Version-dot {\n    display: flex;\n  }\n}\n\n.Version-dot--minor {\n  color: var(--color-brand-primary);\n}\n\n.Version-commitTime {\n  align-items: center;\n  display: flex;\n  gap: 0.75rem;\n  margin-left: 1rem;\n  white-space: nowrap;\n}\n\n.Version-details {\n  line-height: 1.25rem;\n}\n\n.Version-summary {\n  align-items: center;\n  cursor: pointer;\n  line-height: 2.25rem;\n  padding-right: 0.5rem;\n  white-space: nowrap;\n  width: min-content;\n}\n\n.Version-summary .go-Chip {\n  margin-left: 0.5rem;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,SAAS,MACR,eAAgB,CAClB,CAEA,CAJC,SAIS,GACR,WAAY,IACd,CAEA,CARC,SAQS,GACR,eAAgB,IAClB,CAEA,CAZC,SAYS,EAAE,cACV,cAAe,KACf,eAAgB,GAClB,CAEA,CAjBC,SAiBS,EAAE,cACV,aAAc,IAAI,UAClB,cAAe,KACf,WAAY,MACZ,eAAgB,IAChB,YAAa,MACf,CAEA,CAzBC,SAyBS,EAAE,cACV,aAAc,IAChB,CAEA,CAAC,oBACC,UAAW,KACX,YAAa,GACf,CAEA,CAAC,eACC,YAAa,GACf,CAEA,CAAC,iBACC,YAAa,IACf,CAEA,CAAC,eAhDD,OAiDU,OAAQ,KAChB,UAAW,KACb,CAEA,CAAC,yBACC,MAAO,IAAI,qBACX,cAAe,KACjB,CAEA,CAAC,sBACD,CAAC,0BACD,CAAC,mBACC,MAAO,IAAI,oBACb,CAEA,CAAC,qBACC,aAAc,IAChB,CAEA,CAAC,uBACD,CAAC,oBACC,cAAe,OACjB,CAEA,CAAC,uBAzED,OA0EU,QAAS,CACnB,CAEA,CAAC,eACC,YAAa,OACb,QAAS,KACT,UAAW,KACX,IAAK,KAAK,OACV,cAAe,IACjB,CAEA,CAAC,0BACC,QAAS,IACX,CAEA,CAJC,0BAI0B,OACzB,UAAW,OACb,CAEA,CAAC,sBACC,UAAW,KA9Fb,OA+FU,KAAK,CACf,CAEA,CAAC,cACC,IAAK,EAAE,KACP,YAAa,OACf,CACA,OAAO,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,SACjC,CALD,cAMG,QAAS,KACT,sBAAuB,YAAY,MAAM,YAAY,OAAO,YAAY,IAC1E,CACF,CAEA,CAAC,cACC,YAAa,SACb,QAAS,KACT,IAAK,KACL,cAAe,KACf,UAAW,IACb,CACA,OAAO,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,SACjC,CARD,cASG,cAAe,CACjB,CACF,CAEA,CAAC,YACC,WAAY,IACd,CACA,OAAO,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,SACjC,CAJD,YAKG,WAAY,KACd,CACF,CAEA,CAAC,YACC,OAAQ,IAAI,UACZ,MAAO,IAAI,UACX,QAAS,KACT,UAAW,QACX,gBAAiB,OACjB,YAAa,QACb,oBAAqB,QAAS,IAAI,oBAClC,MAAO,CACT,CAEA,CAXC,WAWW,QACV,QAAS,OACX,CACA,OAAO,KAAK,OAAO,IAAI,CAAC,SAAS,EAAE,SACjC,CAfD,YAgBG,QAAS,IACX,CACF,CAEA,CAAC,mBACC,MAAO,IAAI,sBACb,CAEA,CAAC,mBACC,YAAa,OACb,QAAS,KACT,IAAK,OACL,YAAa,KACb,YAAa,MACf,CAEA,CAAC,gBACC,YAAa,OACf,CAEA,CAAC,gBACC,YAAa,OACb,OAAQ,QACR,YAAa,QACb,cAAe,MACf,YAAa,OACb,MAAO,WACT,CAEA,CATC,gBASgB,CAAC,QAChB,YAAa,KACf",
+  "mappings": ";;;;;AAMA,gBACE,iBAGF,aACE,gBAGF,aACE,oBAGF,0BACE,mBACA,mBAGF,0BACE,2BACA,mBACA,iBACA,mBACA,mBAGF,0BACE,kBAGF,qBACE,eACA,gBAGF,gBACE,gBAGF,kBACE,iBAGF,gBAhDA,mBAkDE,gBAGF,0BACE,+BACA,oBAGF,sEAGE,+BAGF,sBACE,kBAGF,6CAEE,sBAGF,wBAzEA,iBA6EA,gBACE,mBACA,aACA,eACA,gBACA,mBAGF,2BACE,aAGF,kCACE,kBAGF,uBACE,eA9FF,cAkGA,eACE,WACA,oBAEF,4CACE,eACE,aACA,6EAIJ,eACE,qBACA,aACA,SACA,mBACA,eAEF,4CACE,eACE,iBAIJ,aACE,gBAEF,4CACE,aACE,kBAIJ,aACE,qBACA,oBACA,aACA,kBACA,uBACA,oBACA,oDACA,QAGF,oBACE,gBAEF,4CACE,aACE,cAIJ,oBACE,iCAGF,oBACE,mBACA,aACA,WACA,iBACA,mBAGF,iBACE,oBAGF,iBACE,mBACA,eACA,oBACA,oBACA,mBACA,kBAGF,0BACE",
   "names": []
 }
diff --git a/static/frontend/vuln/entry/entry.min.css.map b/static/frontend/vuln/entry/entry.min.css.map
index b2c49ff..f0ceeee 100644
--- a/static/frontend/vuln/entry/entry.min.css.map
+++ b/static/frontend/vuln/entry/entry.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["entry.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.Vuln-alias {\n  display: none;\n}\n\n.VulnEntry {\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n  margin-top: 0.5rem;\n}\n\n.VulnEntry h2 {\n  font-size: 1.25rem;\n}\n\n.VulnEntryPackages-detailsContent {\n  margin-left: 0.2rem;\n}\n\n/* One column by default */\n.VulnEntryPackages-container {\n  display: grid;\n  grid-gap: 0.5rem;\n  grid-template-columns: 1fr;\n}\n\n/* Don't display the first item - the headers for multi-col layout */\n.VulnEntryPackages-container > li:first-child {\n  display: none;\n}\n\n.VulnEntryPackages-attr::before {\n  color: var(--color-text-subtle);\n  content: attr(data-name);\n}\n\n/* Attribute name for first column, and attribute value for second column. */\n.VulnEntryPackages-attr {\n  display: grid;\n  grid-template-columns: minmax(5em, 10%) 1fr;\n  list-style: disc;\n  list-style-position: inside;\n\n  /* package and symbol names can be pretty long */\n  overflow-wrap: anywhere;\n  padding: 0.2rem;\n}\n\n/* Three columns for wider screen */\n@media screen and (min-width: 46rem) {\n  /* Undo what's done by default */\n  .VulnEntryPackages-container {\n    grid-gap: 0;\n  }\n\n  .VulnEntryPackages-item {\n    padding: inherit;\n  }\n\n  .VulnEntryPackages-container > li:first-child {\n    display: grid; /* undo display: none setfor default */\n  }\n\n  .VulnEntryPackages-attr::before {\n    content: none;\n  }\n\n  .VulnEntryPackages-attr {\n    grid-template-columns: 1fr;\n  }\n\n  .VulnEntryPackages-item-container {\n    display: grid;\n    grid-template-columns: minmax(10em, 50%) minmax(5em, 20%) 1fr;\n    padding: 0.5rem;\n  }\n\n  /* Header */\n  .VulnEntryPackages-item-container:first-child {\n    background-color: var(--color-background-accented);\n  }\n\n  /* Header text */\n  .VulnEntryPackages-item-container:first-child .VulnEntryPackages-attr {\n    display: flex;\n    font-weight: bold;\n    overflow: auto;\n    text-overflow: initial;\n    white-space: normal;\n  }\n}\n\n.VulnEntry-referenceList,\n.VulnEntry-aliases {\n  line-height: 1.75rem;\n  word-break: break-all;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,WACC,QAAS,IACX,CAEA,CAAC,UACC,QAAS,KACT,eAAgB,OAChB,IAAK,KACL,WAAY,KACd,CAEA,CAPC,UAOU,GACT,UAAW,OACb,CAEA,CAAC,iCACC,YAAa,KACf,CAGA,CAAC,4BACC,QAAS,KACT,SAAU,MACV,sBAAuB,GACzB,CAGA,CAPC,2BAO4B,CAAE,EAAE,aAC/B,QAAS,IACX,CAEA,CAAC,sBAAsB,QACrB,MAAO,IAAI,qBACX,QAAS,KAAK,UAChB,CAGA,CANC,uBAOC,QAAS,KACT,sBAAuB,OAAO,GAAG,CAAE,KAAK,IACxC,WAAY,KACZ,oBAAqB,OAGrB,cAAe,SAlDjB,QAmDW,KACX,CAGA,OAAO,OAAO,IAAI,CAAC,SAAS,EAAE,OAE5B,CA/BD,4BAgCG,SAAU,CACZ,CAEA,CAAC,uBACC,QAAS,OACX,CAEA,CAvCD,2BAuC8B,CAAE,EAAE,aAC/B,QAAS,IACX,CAEA,CAhCD,sBAgCwB,QACrB,QAAS,IACX,CAEA,CApCD,uBAqCG,sBAAuB,GACzB,CAEA,CAAC,iCACC,QAAS,KACT,sBAAuB,OAAO,IAAI,CAAE,KAAK,OAAO,GAAG,CAAE,KAAK,IA/E9D,QAgFa,KACX,CAGA,CAPC,gCAOgC,aAC/B,iBAAkB,IAAI,4BACxB,CAGA,CAZC,gCAYgC,aAAa,CApD/C,uBAqDG,QAAS,KACT,YAAa,IACb,SAAU,KACV,cAAe,QACf,YAAa,MACf,CACF,CAEA,CAAC,wBACD,CAAC,kBACC,YAAa,QACb,WAAY,SACd",
+  "mappings": ";;;;;AAMA,YACE,aAGF,WACE,aACA,sBACA,SACA,iBAGF,cACE,kBAGF,kCACE,kBAIF,6BACE,aACA,eACA,0BAIF,4CACE,aAGF,+BACE,+BACA,wBAIF,wBACE,aACA,0CACA,gBACA,2BAGA,uBAlDF,cAuDA,qCAEE,6BACE,WAGF,wBACE,gBAGF,4CACE,aAGF,+BACE,aAGF,wBACE,0BAGF,kCACE,aACA,2DA/EJ,cAoFE,8CACE,kDAIF,sEACE,aACA,gBACA,cACA,sBACA,oBAIJ,4CAEE,oBACA",
   "names": []
 }
diff --git a/static/frontend/vuln/list/list.min.css.map b/static/frontend/vuln/list/list.min.css.map
index 2890e62..6330583 100644
--- a/static/frontend/vuln/list/list.min.css.map
+++ b/static/frontend/vuln/list/list.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["list.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/* Hide the search form in the header. */\n.go-SearchForm {\n  display: none;\n}\n\n.VulnList-title {\n  font-size: 1.25rem;\n  font-weight: 400;\n}\n\n.VulnList-details {\n  margin-bottom: 1.75rem;\n}\n\n.VulnList-details p {\n  word-break: break-word;\n}\n\n.VulnList-search {\n  margin-bottom: 1rem;\n  max-width: 32rem;\n}\n"],
-  "mappings": ";;;;;AAOA,CAAC,cACC,QAAS,IACX,CAEA,CAAC,eACC,UAAW,QACX,YAAa,GACf,CAEA,CAAC,iBACC,cAAe,OACjB,CAEA,CAJC,iBAIiB,EAChB,WAAY,UACd,CAEA,CAAC,gBACC,cAAe,KACf,UAAW,KACb",
+  "mappings": ";;;;;AAOA,eACE,aAGF,gBACE,kBACA,gBAGF,kBACE,sBAGF,oBACE,sBAGF,iBACE,mBACA",
   "names": []
 }
diff --git a/static/frontend/vuln/main/main.min.css.map b/static/frontend/vuln/main/main.min.css.map
index 6af713c..767526a 100644
--- a/static/frontend/vuln/main/main.min.css.map
+++ b/static/frontend/vuln/main/main.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["main.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/* Hide the search form in the header. */\n.go-SearchForm {\n  display: none;\n}\n\n.VulnMain-title {\n  font-size: 1.25rem;\n  font-weight: 400;\n  margin: 0 0 0.5rem;\n}\n\n.VulnMain-recent {\n  margin-top: 0.5rem;\n}\n\n.VulnMain-details {\n  margin-bottom: 1.75rem;\n}\n\n.VulnMain-details p {\n  word-break: break-word;\n}\n\n.VulnMain-search {\n  max-width: 32rem;\n}\n\n.VulnMain h2 {\n  margin: 1.75rem 0 0.5rem;\n}\n"],
-  "mappings": ";;;;;AAOA,CAAC,cACC,QAAS,IACX,CAEA,CAAC,eACC,UAAW,QACX,YAAa,IAbf,OAcU,EAAE,EAAE,KACd,CAEA,CAAC,gBACC,WAAY,KACd,CAEA,CAAC,iBACC,cAAe,OACjB,CAEA,CAJC,iBAIiB,EAChB,WAAY,UACd,CAEA,CAAC,gBACC,UAAW,KACb,CAEA,CAAC,SAAS,GAjCV,OAkCU,QAAQ,EAAE,KACpB",
+  "mappings": ";;;;;AAOA,eACE,aAGF,gBACE,kBACA,gBAbF,iBAiBA,iBACE,iBAGF,kBACE,sBAGF,oBACE,sBAGF,iBACE,gBAGF,aAjCA",
   "names": []
 }
diff --git a/static/frontend/vuln/vuln.min.css.map b/static/frontend/vuln/vuln.min.css.map
index e5d67c1..19b499c 100644
--- a/static/frontend/vuln/vuln.min.css.map
+++ b/static/frontend/vuln/vuln.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["vuln.css"],
   "sourcesContent": ["/*\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n.Vuln {\n  gap: 0.5rem;\n}\n\n.Vuln-title {\n  font-size: 2.25rem;\n  font-weight: 400;\n  margin-bottom: 1rem;\n}\n\n.Vuln-details {\n  display: flex;\n  flex-direction: column;\n  gap: 0.75rem;\n}\n\n.Vuln-detailsMetadata {\n  display: flex;\n  flex-wrap: wrap;\n  font-size: 0.875rem;\n  gap: 0.5rem 0;\n}\n\n.Vuln-detailsMetadata li:not(:last-child)::after {\n  content: '|';\n  padding: 0 0.5rem;\n}\n"],
-  "mappings": ";;;;;AAMA,CAAC,KACC,IAAK,KACP,CAEA,CAAC,WACC,UAAW,QACX,YAAa,IACb,cAAe,IACjB,CAEA,CAAC,aACC,QAAS,KACT,eAAgB,OAChB,IAAK,MACP,CAEA,CAAC,qBACC,QAAS,KACT,UAAW,KACX,UAAW,QACX,IAAK,MAAO,CACd,CAEA,CAPC,qBAOqB,EAAE,KAAK,YAAY,OACvC,QAAS,IA9BX,QA+BW,EAAE,KACb",
+  "mappings": ";;;;;AAMA,MACE,UAGF,YACE,kBACA,gBACA,mBAGF,cACE,aACA,sBACA,WAGF,sBACE,aACA,eACA,kBACA,YAGF,gDACE,YA9BF",
   "names": []
 }
diff --git a/static/shared/header/header.ts b/static/shared/header/header.ts
index 9aa2bec..1b9a391 100644
--- a/static/shared/header/header.ts
+++ b/static/shared/header/header.ts
@@ -22,8 +22,8 @@
       }
       // prevents menus that have been tabbed into from staying open
       // when you hover over another menu
-      target.focus();
-      target.blur();
+      target.classList.remove('forced-closed');
+      target.classList.add('forced-open');
     });
 
     const toggleForcedOpen = (e: Event) => {
@@ -49,19 +49,30 @@
           currentTarget.classList.remove('forced-closed');
         });
       }
+      currentTarget.focus();
     };
     menuItemHover.addEventListener('click', toggleForcedOpen);
-  });
-
-  // ensure desktop submenus are closed when esc is pressed
-  const headerItems = document.querySelectorAll('.Header-menuItem');
-  headerItems.forEach(header => {
-    header.addEventListener('keyup', e => {
-      const event = e as KeyboardEvent;
-      if (event.key === 'Escape') {
-        (event.target as HTMLElement)?.blur();
-      }
+    menuItemHover.addEventListener('focus', e => {
+      const target = e.target as HTMLElement;
+      target.classList.add('forced-closed');
+      target.classList.remove('forced-open');
     });
+
+    // ensure desktop submenus are closed when esc is pressed
+    const closeSubmenuOnEsc = (e: Event) => {
+      const event = e as KeyboardEvent;
+      const target = e.target as HTMLElement;
+      if (event.key === 'Escape') {
+        const forcedOpenItem = document.querySelector('.forced-open') as HTMLElement;
+        if (forcedOpenItem) {
+          forcedOpenItem.classList.remove('forced-open');
+          forcedOpenItem.blur();
+          forcedOpenItem.classList.add('forced-closed');
+          target?.focus();
+        }
+      }
+    };
+    document.addEventListener('keydown', closeSubmenuOnEsc);
   });
 
   // Mobile menu subnav menus
diff --git a/static/worker/worker.js.map b/static/worker/worker.js.map
index 0d10c15..5f58689 100644
--- a/static/worker/worker.js.map
+++ b/static/worker/worker.js.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["worker.ts"],
   "sourcesContent": ["/*!\n * @license\n * Copyright 2021 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\ndeclare global {\n  interface Window {\n    submitForm: typeof submitForm;\n  }\n}\n\nfunction submitForm(formName: string, reload: boolean) {\n  const form = document.querySelector<HTMLFormElement>(`form[name=\"${formName}\" ]`);\n  if (!form) {\n    throw Error(`Form \"${formName}\" not found.`);\n  }\n  form.result.value = 'request pending...';\n  const xhr = new XMLHttpRequest();\n  xhr.onreadystatechange = function () {\n    if (this.readyState == 4) {\n      if (this.status >= 200 && this.status < 300) {\n        if (reload) {\n          location.reload();\n        } else {\n          form.result.value = 'Success.';\n        }\n      } else {\n        form.result.value = 'ERROR: ' + this.responseText;\n      }\n    }\n  };\n  xhr.open(form.method, form.action);\n  xhr.send(new FormData(form));\n}\n\nwindow.submitForm = submitForm;\n\nexport {};\n"],
-  "mappings": "AAYA,SAASA,EAAWC,EAAkBC,EAAiB,CACrD,IAAMC,EAAO,SAAS,cAA+B,cAAcF,CAAQ,KAAK,EAChF,GAAI,CAACE,EACH,MAAM,MAAM,SAASF,CAAQ,cAAc,EAE7CE,EAAK,OAAO,MAAQ,qBACpB,IAAMC,EAAM,IAAI,eAChBA,EAAI,mBAAqB,UAAY,CAC/B,KAAK,YAAc,IACjB,KAAK,QAAU,KAAO,KAAK,OAAS,IAClCF,EACF,SAAS,OAAO,EAEhBC,EAAK,OAAO,MAAQ,WAGtBA,EAAK,OAAO,MAAQ,UAAY,KAAK,aAG3C,EACAC,EAAI,KAAKD,EAAK,OAAQA,EAAK,MAAM,EACjCC,EAAI,KAAK,IAAI,SAASD,CAAI,CAAC,CAC7B,CAEA,OAAO,WAAaH",
+  "mappings": "AAYA,SAASA,EAAWC,EAAkBC,EAAiB,CACrD,IAAMC,EAAO,SAAS,cAA+B,cAAcF,MAAa,EAChF,GAAI,CAACE,EACH,MAAM,MAAM,SAASF,eAAsB,EAE7CE,EAAK,OAAO,MAAQ,qBACpB,IAAMC,EAAM,IAAI,eAChBA,EAAI,mBAAqB,UAAY,CAC/B,KAAK,YAAc,IACjB,KAAK,QAAU,KAAO,KAAK,OAAS,IAClCF,EACF,SAAS,OAAO,EAEhBC,EAAK,OAAO,MAAQ,WAGtBA,EAAK,OAAO,MAAQ,UAAY,KAAK,aAG3C,EACAC,EAAI,KAAKD,EAAK,OAAQA,EAAK,MAAM,EACjCC,EAAI,KAAK,IAAI,SAASD,CAAI,CAAC,CAC7B,CAEA,OAAO,WAAaH",
   "names": ["submitForm", "formName", "reload", "form", "xhr"]
 }
diff --git a/static/worker/worker.min.css.map b/static/worker/worker.min.css.map
index 21bd9eb..af6d292 100644
--- a/static/worker/worker.min.css.map
+++ b/static/worker/worker.min.css.map
@@ -2,6 +2,6 @@
   "version": 3,
   "sources": ["worker.css"],
   "sourcesContent": ["/*\n * Copyright 2019-2020 The Go Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n:root {\n  --white: #eee;\n  --gray: #ccc;\n  --red: red;\n}\n\nbody {\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,\n    'Helvetica Neue', Arial, sans-serif;\n}\n\nlabel {\n  display: inline-block;\n  text-align: right;\n  width: 12.5rem;\n}\n\ninput {\n  width: 12.5rem;\n}\n\nbutton {\n  background-color: var(--white);\n  border: 0.0625rem solid var(--gray);\n  border-radius: 0.125rem;\n  width: 16rem;\n}\n\ntable {\n  border-spacing: 0.625rem 0.125rem;\n  font-size: 0.75rem;\n  padding: 0.1875rem 0 0.125rem;\n}\n\ntd {\n  border-top: 0.0625rem solid var(--gray);\n}\n\n.Experiments input {\n  width: auto;\n}\n\n.Experiments input:invalid {\n  border: 0.0625rem dotted var(--red);\n  border-radius: 0.25rem;\n}\n\n.Experiments input:valid {\n  border: 0.0625rem solid var(--gray);\n  border-radius: 0.25rem;\n}\n\n.Experiments button {\n  width: auto;\n}\n\n.Experiments-updateResult {\n  border: none;\n  height: 2rem;\n  width: 100%;\n}\n"],
-  "mappings": ";;;;;AAMA,MACE,SAAS,KACT,QAAQ,KACR,OAAO,GACT,CAEA,KACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,QAAU,CAAE,MAAM,CAAE,MAAM,CAAE,MAAM,CAChF,cAAgB,CAAE,KAAK,CAAE,UAC7B,CAEA,MACE,QAAS,aACT,WAAY,MACZ,MAAO,OACT,CAEA,MACE,MAAO,OACT,CAEA,OACE,iBAAkB,IAAI,SACtB,OAAQ,SAAU,MAAM,IAAI,QA7B9B,cA8BiB,QACf,MAAO,KACT,CAEA,MACE,eAAgB,QAAS,QACzB,UAAW,OApCb,QAqCW,SAAU,EAAE,OACvB,CAEA,GACE,WAAY,SAAU,MAAM,IAAI,OAClC,CAEA,CAAC,YAAY,MACX,MAAO,IACT,CAEA,CAJC,YAIY,KAAK,SAChB,OAAQ,SAAU,OAAO,IAAI,OAjD/B,cAkDiB,MACjB,CAEA,CATC,YASY,KAAK,OAChB,OAAQ,SAAU,MAAM,IAAI,QAtD9B,cAuDiB,MACjB,CAEA,CAdC,YAcY,OACX,MAAO,IACT,CAEA,CAAC,yBACC,OAAQ,KACR,OAAQ,KACR,MAAO,IACT",
+  "mappings": ";;;;;AAMA,MACE,cACA,aACA,WAGF,KACE,2GAIF,MACE,qBACA,iBACA,cAGF,MACE,cAGF,OACE,8BACA,kCA7BF,sBA+BE,YAGF,MACE,+BACA,iBApCF,2BAwCA,GACE,sCAGF,mBACE,WAGF,2BACE,kCAjDF,qBAqDA,yBACE,kCAtDF,qBA0DA,oBACE,WAGF,0BACE,YACA,YACA",
   "names": []
 }
