lighthouse 12.6.0 → 12.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/core/audits/deprecations.js +1 -1
  2. package/core/audits/dobetterweb/doctype.js +1 -1
  3. package/core/audits/dobetterweb/inspector-issues.js +6 -11
  4. package/core/audits/insights/document-latency-insight.js +8 -1
  5. package/core/audits/insights/dom-size-insight.js +9 -1
  6. package/core/audits/insights/insight-audit.js +7 -0
  7. package/core/audits/is-on-https.js +1 -1
  8. package/core/audits/third-party-cookies.js +1 -1
  9. package/core/computed/metrics/timing-summary.js +6 -1
  10. package/core/computed/page-dependency-graph.js +4 -0
  11. package/core/computed/trace-engine-result.js +7 -0
  12. package/core/config/constants.d.ts +2 -2
  13. package/core/config/constants.js +2 -2
  14. package/core/config/lr-desktop-config.js +1 -0
  15. package/core/config/lr-mobile-config.js +1 -0
  16. package/core/gather/gatherers/inspector-issues.d.ts +2 -2
  17. package/core/gather/gatherers/inspector-issues.js +31 -18
  18. package/core/lib/network-request.js +1 -0
  19. package/core/lib/trace-engine.d.ts +2 -0
  20. package/core/lib/trace-engine.js +1 -1
  21. package/dist/report/bundle.esm.js +14 -6
  22. package/dist/report/flow.js +12 -4
  23. package/dist/report/standalone.js +14 -6
  24. package/package.json +9 -9
  25. package/report/assets/styles.css +11 -3
  26. package/report/renderer/components.js +1 -1
  27. package/report/renderer/performance-category-renderer.js +1 -2
  28. package/shared/localization/locales/ar-XB.json +7 -10
  29. package/shared/localization/locales/ar.json +7 -10
  30. package/shared/localization/locales/bg.json +7 -10
  31. package/shared/localization/locales/ca.json +7 -10
  32. package/shared/localization/locales/cs.json +7 -10
  33. package/shared/localization/locales/da.json +7 -10
  34. package/shared/localization/locales/de.json +7 -10
  35. package/shared/localization/locales/el.json +7 -10
  36. package/shared/localization/locales/en-GB.json +7 -10
  37. package/shared/localization/locales/en-US.json +49 -7
  38. package/shared/localization/locales/en-XL.json +49 -7
  39. package/shared/localization/locales/es-419.json +7 -10
  40. package/shared/localization/locales/es.json +7 -10
  41. package/shared/localization/locales/fi.json +7 -10
  42. package/shared/localization/locales/fil.json +7 -10
  43. package/shared/localization/locales/fr.json +7 -10
  44. package/shared/localization/locales/he.json +7 -10
  45. package/shared/localization/locales/hi.json +7 -10
  46. package/shared/localization/locales/hr.json +7 -10
  47. package/shared/localization/locales/hu.json +7 -10
  48. package/shared/localization/locales/id.json +7 -10
  49. package/shared/localization/locales/it.json +7 -10
  50. package/shared/localization/locales/ja.json +7 -10
  51. package/shared/localization/locales/ko.json +7 -10
  52. package/shared/localization/locales/lt.json +7 -10
  53. package/shared/localization/locales/lv.json +7 -10
  54. package/shared/localization/locales/nl.json +7 -10
  55. package/shared/localization/locales/no.json +7 -10
  56. package/shared/localization/locales/pl.json +7 -10
  57. package/shared/localization/locales/pt-PT.json +7 -10
  58. package/shared/localization/locales/pt.json +7 -10
  59. package/shared/localization/locales/ro.json +7 -10
  60. package/shared/localization/locales/ru.json +7 -10
  61. package/shared/localization/locales/sk.json +7 -10
  62. package/shared/localization/locales/sl.json +7 -10
  63. package/shared/localization/locales/sr-Latn.json +7 -10
  64. package/shared/localization/locales/sr.json +7 -10
  65. package/shared/localization/locales/sv.json +7 -10
  66. package/shared/localization/locales/ta.json +7 -10
  67. package/shared/localization/locales/te.json +7 -10
  68. package/shared/localization/locales/th.json +7 -10
  69. package/shared/localization/locales/tr.json +7 -10
  70. package/shared/localization/locales/uk.json +7 -10
  71. package/shared/localization/locales/vi.json +7 -10
  72. package/shared/localization/locales/zh-HK.json +7 -10
  73. package/shared/localization/locales/zh-TW.json +7 -10
  74. package/shared/localization/locales/zh.json +7 -10
  75. package/shared/localization/locales.d.ts +2 -0
  76. package/shared/localization/locales.js +130 -139
  77. package/shared/tsconfig.json +2 -0
  78. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +1 -0
  79. package/types/artifacts.d.ts +9 -26
  80. package/types/utility-types.d.ts +4 -0
@@ -545,7 +545,10 @@ Try polyfilling it using "@formatjs/intl-pluralrules"
545
545
  --fail-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>warn</title><path fill="%23C7221F" d="M2 42h44L24 4 2 42zm24-6h-4v-4h4v4zm0-8h-4v-8h4v8z"/></svg>');
546
546
  --error-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3 15"><title>error</title><path d="M0 15H 3V 12H 0V" fill="%23FF4E42"/><path d="M0 9H 3V 0H 0V" fill="%23FF4E42"/></svg>');
547
547
 
548
- --swap-locale-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>');
548
+ --swap-locale-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="%23000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>');
549
+
550
+ --insights-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="%23000000"><path d="M18 13V11H22V13H18ZM19.2 20L16 17.6L17.2 16L20.4 18.4L19.2 20ZM17.2 8L16 6.4L19.2 4L20.4 5.6L17.2 8ZM5 19V15H4C3.45 15 2.975 14.8083 2.575 14.425C2.19167 14.025 2 13.55 2 13V11C2 10.45 2.19167 9.98333 2.575 9.6C2.975 9.2 3.45 9 4 9H8L13 6V18L8 15H7V19H5ZM11 14.45V9.55L8.55 11H4V13H8.55L11 14.45ZM14 15.35V8.65C14.45 9.05 14.8083 9.54167 15.075 10.125C15.3583 10.6917 15.5 11.3167 15.5 12C15.5 12.6833 15.3583 13.3167 15.075 13.9C14.8083 14.4667 14.45 14.95 14 15.35Z"/></svg>');
551
+ --insights-icon-url-dark: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="%239e9e9e"><path d="M18 13V11H22V13H18ZM19.2 20L16 17.6L17.2 16L20.4 18.4L19.2 20ZM17.2 8L16 6.4L19.2 4L20.4 5.6L17.2 8ZM5 19V15H4C3.45 15 2.975 14.8083 2.575 14.425C2.19167 14.025 2 13.55 2 13V11C2 10.45 2.19167 9.98333 2.575 9.6C2.975 9.2 3.45 9 4 9H8L13 6V18L8 15H7V19H5ZM11 14.45V9.55L8.55 11H4V13H8.55L11 14.45ZM14 15.35V8.65C14.45 9.05 14.8083 9.54167 15.075 10.125C15.3583 10.6917 15.5 11.3167 15.5 12C15.5 12.6833 15.3583 13.3167 15.075 13.9C14.8083 14.4667 14.45 14.95 14 15.35Z"/></svg>');
549
552
  }
550
553
 
551
554
  @media not print {
@@ -1409,15 +1412,20 @@ Try polyfilling it using "@formatjs/intl-pluralrules"
1409
1412
  color: var(--link-color);
1410
1413
  }
1411
1414
 
1412
- .lh-perf-insights-icon svg {
1415
+ .lh-perf-insights-icon {
1413
1416
  margin: 4px;
1414
1417
  background-repeat: no-repeat;
1418
+ background-image: var(--insights-icon-url);
1415
1419
  width: var(--report-icon-size);
1416
1420
  height: var(--report-icon-size);
1417
- opacity: 0.7;
1418
1421
  display: inline-block;
1419
1422
  vertical-align: middle;
1420
1423
  }
1424
+
1425
+ .lh-dark .lh-perf-insights-icon {
1426
+ background-image: var(--insights-icon-url-dark);
1427
+ }
1428
+
1421
1429
  /* Audit */
1422
1430
 
1423
1431
  .lh-audit {
@@ -2863,7 +2871,7 @@ details[open] .lh-clump-toggletext--hide { display: block;}
2863
2871
  display: none;
2864
2872
  }
2865
2873
  }
2866
- `),e.append(n);let a=t.createElement("div","lh-topbar"),i=t.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");i.setAttribute("role","img"),i.setAttribute("title","Lighthouse logo"),i.setAttribute("fill","none"),i.setAttribute("xmlns","http://www.w3.org/2000/svg"),i.setAttribute("viewBox","0 0 48 48");let o=t.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d","m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z"),o.setAttribute("fill","#F63");let r=t.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d","M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z"),r.setAttribute("fill","#FFA385");let s=t.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("fill","#FF3"),s.setAttribute("d","M20.5 10h7v7h-7z"),i.append(" ",o," ",r," ",s," ");let p=t.createElement("a","lh-topbar__url");p.setAttribute("href",""),p.setAttribute("target","_blank"),p.setAttribute("rel","noopener");let c=t.createElement("div","lh-tools"),l=t.createElement("div","lh-tools-locale lh-hidden"),d=t.createElement("button","lh-button lh-tool-locale__button");d.setAttribute("id","lh-button__swap-locales"),d.setAttribute("title","Show Language Picker"),d.setAttribute("aria-label","Toggle language picker"),d.setAttribute("aria-haspopup","menu"),d.setAttribute("aria-expanded","false"),d.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let m=t.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("width","20px"),m.setAttribute("height","20px"),m.setAttribute("viewBox","0 0 24 24"),m.setAttribute("fill","currentColor");let h=t.createElementNS("http://www.w3.org/2000/svg","path");h.setAttribute("d","M0 0h24v24H0V0z"),h.setAttribute("fill","none");let f=t.createElementNS("http://www.w3.org/2000/svg","path");f.setAttribute("d","M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"),m.append(h,f),d.append(" ",m," ");let C=t.createElement("div","lh-tools-locale__selector-wrapper");C.setAttribute("id","lh-tools-locale__selector-wrapper"),C.setAttribute("role","menu"),C.setAttribute("aria-labelledby","lh-button__swap-locales"),C.setAttribute("aria-hidden","true"),C.append(" "," "),l.append(" ",d," ",C," ");let g=t.createElement("button","lh-tools__button");g.setAttribute("id","lh-tools-button"),g.setAttribute("title","Tools menu"),g.setAttribute("aria-label","Toggle report tools menu"),g.setAttribute("aria-haspopup","menu"),g.setAttribute("aria-expanded","false"),g.setAttribute("aria-controls","lh-tools-dropdown");let _=t.createElementNS("http://www.w3.org/2000/svg","svg");_.setAttribute("width","100%"),_.setAttribute("height","100%"),_.setAttribute("viewBox","0 0 24 24");let v=t.createElementNS("http://www.w3.org/2000/svg","path");v.setAttribute("d","M0 0h24v24H0z"),v.setAttribute("fill","none");let y=t.createElementNS("http://www.w3.org/2000/svg","path");y.setAttribute("d","M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"),_.append(" ",v," ",y," "),g.append(" ",_," ");let w=t.createElement("div","lh-tools__dropdown");w.setAttribute("id","lh-tools-dropdown"),w.setAttribute("role","menu"),w.setAttribute("aria-labelledby","lh-tools-button");let P=t.createElement("a","lh-report-icon lh-report-icon--print");P.setAttribute("role","menuitem"),P.setAttribute("tabindex","-1"),P.setAttribute("href","#"),P.setAttribute("data-i18n","dropdownPrintSummary"),P.setAttribute("data-action","print-summary");let L=t.createElement("a","lh-report-icon lh-report-icon--print");L.setAttribute("role","menuitem"),L.setAttribute("tabindex","-1"),L.setAttribute("href","#"),L.setAttribute("data-i18n","dropdownPrintExpanded"),L.setAttribute("data-action","print-expanded");let R=t.createElement("a","lh-report-icon lh-report-icon--copy");R.setAttribute("role","menuitem"),R.setAttribute("tabindex","-1"),R.setAttribute("href","#"),R.setAttribute("data-i18n","dropdownCopyJSON"),R.setAttribute("data-action","copy");let M=t.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");M.setAttribute("role","menuitem"),M.setAttribute("tabindex","-1"),M.setAttribute("href","#"),M.setAttribute("data-i18n","dropdownSaveHTML"),M.setAttribute("data-action","save-html");let G=t.createElement("a","lh-report-icon lh-report-icon--download");G.setAttribute("role","menuitem"),G.setAttribute("tabindex","-1"),G.setAttribute("href","#"),G.setAttribute("data-i18n","dropdownSaveJSON"),G.setAttribute("data-action","save-json");let Z=t.createElement("a","lh-report-icon lh-report-icon--open");Z.setAttribute("role","menuitem"),Z.setAttribute("tabindex","-1"),Z.setAttribute("href","#"),Z.setAttribute("data-i18n","dropdownViewer"),Z.setAttribute("data-action","open-viewer");let K=t.createElement("a","lh-report-icon lh-report-icon--open");K.setAttribute("role","menuitem"),K.setAttribute("tabindex","-1"),K.setAttribute("href","#"),K.setAttribute("data-i18n","dropdownSaveGist"),K.setAttribute("data-action","save-gist");let q=t.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");q.setAttribute("role","menuitem"),q.setAttribute("tabindex","-1"),q.setAttribute("href","#"),q.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),q.setAttribute("data-action","view-unthrottled-trace");let X=t.createElement("a","lh-report-icon lh-report-icon--dark");return X.setAttribute("role","menuitem"),X.setAttribute("tabindex","-1"),X.setAttribute("href","#"),X.setAttribute("data-i18n","dropdownDarkTheme"),X.setAttribute("data-action","toggle-dark"),w.append(" ",P," ",L," ",R," "," ",M," ",G," ",Z," ",K," "," ",q," ",X," "),c.append(" ",l," ",g," ",w," "),a.append(" "," ",i," ",p," ",c," "),e.append(a),e}function Lo(t){let e=t.createFragment(),n=t.createElement("div","lh-warnings lh-warnings--toplevel"),a=t.createElement("p","lh-warnings__msg"),i=t.createElement("ul");return n.append(" ",a," ",i," "),e.append(n),e}function Sa(t,e){switch(e){case"3pFilter":return ro(t);case"audit":return so(t);case"categoryHeader":return lo(t);case"chevron":return po(t);case"clump":return uo(t);case"crc":return co(t);case"crcChain":return mo(t);case"elementScreenshot":return ho(t);case"explodeyGauge":return go(t);case"footer":return fo(t);case"fraction":return vo(t);case"gauge":return bo(t);case"heading":return yo(t);case"metric":return _o(t);case"scorescale":return Co(t);case"scoresWrapper":return wo(t);case"snippet":return xo(t);case"snippetContent":return So(t);case"snippetHeader":return ko(t);case"snippetLine":return Po(t);case"styles":return Ao(t);case"topbar":return Eo(t);case"warningsToplevel":return Lo(t)}throw new Error("unexpected component: "+e)}var re=class{constructor(e,n){this._document=e,this._lighthouseChannel="unknown",this._componentCache=new Map,this.rootEl=n,this._swappableSections=new WeakMap}createElement(e,n){let a=this._document.createElement(e);if(n)for(let i of n.split(/\s+/))i&&a.classList.add(i);return a}createElementNS(e,n,a){let i=this._document.createElementNS(e,n);if(a)for(let o of a.split(/\s+/))o&&i.classList.add(o);return i}createSVGElement(e,n){return this._document.createElementNS("http://www.w3.org/2000/svg",e,n)}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,n,a){let i=this.createElement(n,a);return e.append(i),i}createComponent(e){let n=this._componentCache.get(e);if(n){let i=n.cloneNode(!0);return this.findAll("style",i).forEach(o=>o.remove()),i}return n=Sa(this,e),this._componentCache.set(e,n),n.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,n={}){let a=this.createElement("span");for(let i of U.splitMarkdownLink(e)){let o=i.text.includes("`")?this.convertMarkdownCodeSnippets(i.text):i.text;if(!i.isLink){a.append(o);continue}let r=new URL(i.linkHref);(["https://developers.google.com","https://web.dev","https://developer.chrome.com"].includes(r.origin)||n.alwaysAppendUtmSource)&&(r.searchParams.set("utm_source","lighthouse"),r.searchParams.set("utm_medium",this._lighthouseChannel));let p=this.createElement("a");p.rel="noopener",p.target="_blank",p.append(o),this.safelySetHref(p,r.href),a.append(p)}return a}safelySetHref(e,n){if(n=n||"",n.startsWith("#")){e.href=n;return}let a=["https:","http:"],i;try{i=new URL(n)}catch{}i&&a.includes(i.protocol)&&(e.href=i.href)}safelySetBlobHref(e,n){if(n.type!=="text/html"&&n.type!=="application/json")throw new Error("Unsupported blob type");let a=URL.createObjectURL(n);e.href=a}convertMarkdownCodeSnippets(e){let n=this.createElement("span");for(let a of U.splitMarkdownCodeSpans(e))if(a.isCode){let i=this.createElement("code");i.textContent=a.text,n.append(i)}else n.append(this._document.createTextNode(a.text));return n}setLighthouseChannel(e){this._lighthouseChannel=e}document(){return this._document}isDevTools(){return!!this._document.querySelector(".lh-devtools")}find(e,n=this.rootEl??this._document){let a=this.maybeFind(e,n);if(a===null)throw new Error(`query ${e} not found`);return a}maybeFind(e,n=this.rootEl??this._document){return n.querySelector(e)}findAll(e,n){return Array.from(n.querySelectorAll(e))}fireEventOn(e,n=this._document,a){let i=new CustomEvent(e,a?{detail:a}:void 0);n.dispatchEvent(i)}saveFile(e,n){let a=this.createElement("a");a.download=n,this.safelySetBlobHref(a,e),this._document.body.append(a),a.click(),this._document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(a.href),500)}registerSwappableSections(e,n){this._swappableSections.set(e,n),this._swappableSections.set(n,e)}swapSectionIfPossible(e){let n=this._swappableSections.get(e);if(!n)return;let a=e.parentNode;if(!a)return;let i=e.querySelectorAll("style");n.append(...i),a.insertBefore(n,e),e.remove()}};var se=class{constructor(e,n){this.dom=e,this.detailsRenderer=n}get _clumpTitles(){return{warning:b.strings.warningAuditsGroupTitle,manual:b.strings.manualAuditsGroupTitle,passed:b.strings.passedAuditsGroupTitle,notApplicable:b.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let n=b.strings,a=this.dom.createComponent("audit"),i=this.dom.find("div.lh-audit",a);i.id=e.result.id;let o=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",i).textContent=e.result.displayValue);let r=this.dom.find(".lh-audit__title",i);r.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let s=this.dom.find(".lh-audit__description",i);s.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let m of e.relevantMetrics||[]){let h=this.dom.createChildOf(s,"span","lh-audit__adorn");h.title=`Relevant to ${m.result.title}`,h.textContent=m.acronym||m.id}e.stackPacks&&e.stackPacks.forEach(m=>{let h=this.dom.createElement("img","lh-audit__stackpack__img");h.src=m.iconDataURL,h.alt=m.title;let f=this.dom.convertMarkdownLinkSnippets(m.description,{alwaysAppendUtmSource:!0}),C=this.dom.createElement("div","lh-audit__stackpack");C.append(h,f),this.dom.find(".lh-audit__stackpacks",i).append(C)});let p=this.dom.find("details",i);if(e.result.details){let m=this.detailsRenderer.render(e.result.details);m&&(m.classList.add("lh-details"),p.append(m))}if(this.dom.find(".lh-chevron-container",i).append(this._createChevron()),this._setRatingClass(i,e.result.score,o),e.result.scoreDisplayMode==="error"){i.classList.add("lh-audit--error");let m=this.dom.find(".lh-audit__display-text",i);m.textContent=n.errorLabel,m.classList.add("lh-tooltip-boundary");let h=this.dom.createChildOf(m,"div","lh-tooltip lh-tooltip--error");h.textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){let m=this.dom.createChildOf(r,"div","lh-audit-explanation");m.textContent=e.result.explanation}let c=e.result.warnings;if(!c||c.length===0)return i;let l=this.dom.find("summary",p),d=this.dom.createChildOf(l,"div","lh-warnings");if(this.dom.createChildOf(d,"span").textContent=n.warningHeader,c.length===1)d.append(this.dom.createTextNode(c.join("")));else{let m=this.dom.createChildOf(d,"ul");for(let h of c){let f=this.dom.createChildOf(m,"li");f.textContent=h}}return i}injectFinalScreenshot(e,n,a){let i=n["final-screenshot"];if(!i||i.scoreDisplayMode==="error"||!i.details||i.details.type!=="screenshot")return null;let o=this.dom.createElement("img","lh-final-ss-image"),r=i.details.data;o.src=r,o.alt=i.title;let s=this.dom.find(".lh-category .lh-category-header",e),p=this.dom.createElement("div","lh-category-headercol"),c=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),l=this.dom.createElement("div","lh-category-headercol");p.append(...s.childNodes),p.append(a),l.append(o),s.append(p,c,l),s.classList.add("lh-category-header__finalscreenshot")}_createChevron(){let e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,n,a){let i=A.calculateRating(n,a);return e.classList.add(`lh-audit--${a.toLowerCase()}`),a!=="informative"&&e.classList.add(`lh-audit--${i}`),e}renderCategoryHeader(e,n,a){let i=this.dom.createComponent("categoryHeader"),o=this.dom.find(".lh-score__gauge",i),r=this.renderCategoryScore(e,n,a);if(o.append(r),e.description){let s=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",i).append(s)}return i}renderAuditGroup(e){let n=this.dom.createElement("div","lh-audit-group"),a=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(a,"span","lh-audit-group__title").textContent=e.title,n.append(a);let i=null;return e.description&&(i=this.dom.convertMarkdownLinkSnippets(e.description),i.classList.add("lh-audit-group__description","lh-audit-group__footer"),n.append(i)),[n,i]}_renderGroupedAudits(e,n){let a=new Map,i="NotAGroup";a.set(i,[]);for(let r of e){let s=r.group||i,p=a.get(s)||[];p.push(r),a.set(s,p)}let o=[];for(let[r,s]of a){if(r===i){for(let d of s)o.push(this.renderAudit(d));continue}let p=n[r],[c,l]=this.renderAuditGroup(p);for(let d of s)c.insertBefore(this.renderAudit(d),l);c.classList.add(`lh-audit-group--${r}`),o.push(c)}return o}renderUnexpandableClump(e,n){let a=this.dom.createElement("div");return this._renderGroupedAudits(e,n).forEach(o=>a.append(o)),a}renderClump(e,{auditRefsOrEls:n,description:a,openByDefault:i}){let o=this.dom.createComponent("clump"),r=this.dom.find(".lh-clump",o);i&&r.setAttribute("open","");let s=this.dom.find(".lh-audit-group__header",r),p=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",s).textContent=p;let c=this.dom.find(".lh-audit-group__itemcount",r);c.textContent=`(${n.length})`;let l=n.map(m=>m instanceof HTMLElement?m:this.renderAudit(m));r.append(...l);let d=this.dom.find(".lh-audit-group",o);if(a){let m=this.dom.convertMarkdownLinkSnippets(a);m.classList.add("lh-audit-group__description","lh-audit-group__footer"),d.append(m)}return this.dom.find(".lh-clump-toggletext--show",d).textContent=b.strings.show,this.dom.find(".lh-clump-toggletext--hide",d).textContent=b.strings.hide,r.classList.add(`lh-clump--${e.toLowerCase()}`),d}renderCategoryScore(e,n,a){let i;if(a&&A.shouldDisplayAsFraction(a.gatherMode)?i=this.renderCategoryFraction(e):i=this.renderScoreGauge(e,n),a?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",i).remove(),a?.onPageAnchorRendered){let o=this.dom.find("a",i);a.onPageAnchorRendered(o)}return i}renderScoreGauge(e,n){let a=this.dom.createComponent("gauge"),i=this.dom.find("a.lh-gauge__wrapper",a);A.isPluginCategory(e.id)&&i.classList.add("lh-gauge__wrapper--plugin");let o=Number(e.score),r=this.dom.find(".lh-gauge",a),s=this.dom.find("circle.lh-gauge-arc",r);s&&this._setGaugeArc(s,o);let p=Math.round(o*100),c=this.dom.find("div.lh-gauge__percentage",a);return c.textContent=p.toString(),e.score===null&&(c.classList.add("lh-gauge--error"),c.textContent="",c.title=b.strings.errorLabel),e.auditRefs.length===0||this.hasApplicableAudits(e)?i.classList.add(`lh-gauge__wrapper--${A.calculateRating(e.score)}`):(i.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=b.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",a).textContent=e.title,a}renderCategoryFraction(e){let n=this.dom.createComponent("fraction"),a=this.dom.find("a.lh-fraction__wrapper",n),{numPassed:i,numPassableAudits:o,totalWeight:r}=A.calculateCategoryFraction(e),s=i/o,p=this.dom.find(".lh-fraction__content",n),c=this.dom.createElement("span");c.textContent=`${i}/${o}`,p.append(c);let l=A.calculateRating(s);return r===0&&(l="null"),a.classList.add(`lh-fraction__wrapper--${l}`),this.dom.find(".lh-fraction__label",n).textContent=e.title,n}hasApplicableAudits(e){return e.auditRefs.some(n=>n.result.scoreDisplayMode!=="notApplicable")}_setGaugeArc(e,n){let a=2*Math.PI*Number(e.getAttribute("r")),i=Number(e.getAttribute("stroke-width")),o=.25*i/a;e.style.transform=`rotate(${-90+o*360}deg)`;let r=n*a-i/2;n===0&&(e.style.opacity="0"),n===1&&(r=a),e.style.strokeDasharray=`${Math.max(r,0)} ${a}`}_auditHasWarning(e){return!!e.result.warnings?.length}_getClumpIdForAuditRef(e){let n=e.result.scoreDisplayMode;return n==="manual"||n==="notApplicable"?n:A.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,n={},a){let i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,n,a));let o=new Map;o.set("failed",[]),o.set("warning",[]),o.set("manual",[]),o.set("passed",[]),o.set("notApplicable",[]);for(let s of e.auditRefs){if(s.group==="hidden")continue;let p=this._getClumpIdForAuditRef(s),c=o.get(p);c.push(s),o.set(p,c)}for(let s of o.values())s.sort((p,c)=>c.weight-p.weight);let r=o.get("failed")?.length;for(let[s,p]of o){if(p.length===0)continue;if(s==="failed"){let m=this.renderUnexpandableClump(p,n);m.classList.add("lh-clump--failed"),i.append(m);continue}let c=s==="manual"?e.manualDescription:void 0,l=s==="warning"||s==="manual"&&r===0,d=this.renderClump(s,{auditRefsOrEls:p,description:c,openByDefault:l});i.append(d)}return i}};var ze=class{static createSegment(e,n,a,i){let o=e[n],r=Object.keys(e),s=r.indexOf(n)===r.length-1,p=!!o.children&&Object.keys(o.children).length>0,c=Array.isArray(a)?a.slice(0):[];return typeof i<"u"&&c.push(!i),{node:o,isLastChild:s,hasChildren:p,treeMarkers:c}}static createChainNode(e,n,a){let i=e.createComponent("crcChain"),o,r,s,p,c;"request"in n.node?(r=n.node.request.transferSize,s=n.node.request.url,o=(n.node.request.endTime-n.node.request.startTime)*1e3,p=!1):(r=n.node.transferSize,s=n.node.url,o=n.node.navStartToEndTime,p=!0,c=n.node.isLongest);let l=e.find(".lh-crc-node",i);l.setAttribute("title",s),c&&l.classList.add("lh-crc-node__longest");let d=e.find(".lh-crc-node__tree-marker",i);n.treeMarkers.forEach(g=>{let _=g?"lh-tree-marker lh-vert":"lh-tree-marker";d.append(e.createElement("span",_),e.createElement("span","lh-tree-marker"))});let m=n.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",h=n.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";d.append(e.createElement("span",m),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",h));let f=a.renderTextURL(s),C=e.find(".lh-crc-node__tree-value",i);if(C.append(f),!n.hasChildren||p){let g=e.createElement("span","lh-crc-node__chain-duration");g.textContent=" - "+b.i18n.formatMilliseconds(o)+", ";let _=e.createElement("span","lh-crc-node__chain-size");_.textContent=b.i18n.formatBytesToKiB(r,.01),C.append(g,_)}return i}static buildTree(e,n,a,i){if(a.append(De.createChainNode(e,n,i)),n.node.children)for(let o of Object.keys(n.node.children)){let r=De.createSegment(n.node.children,o,n.treeMarkers,n.isLastChild);De.buildTree(e,r,a,i)}}static render(e,n,a){let i=e.createComponent("crc"),o=e.find(".lh-crc",i);e.find(".lh-crc-initial-nav",i).textContent=b.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",i).textContent=b.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",i).textContent=b.i18n.formatMilliseconds(n.longestChain.duration);let r=n.chains;for(let s of Object.keys(r)){let p=De.createSegment(r,s);De.buildTree(e,p,o,a)}return e.find(".lh-crc-container",i)}},De=ze;function To(t,e){return e.left<=t.width&&0<=e.right&&e.top<=t.height&&0<=e.bottom}function ka(t,e,n){return t<e?e:t>n?n:t}function Uo(t){return{x:t.left+t.width/2,y:t.top+t.height/2}}var le=class t{static getScreenshotPositions(e,n,a){let i=Uo(e),o=ka(i.x-n.width/2,0,a.width-n.width),r=ka(i.y-n.height/2,0,a.height-n.height);return{screenshot:{left:o,top:r},clip:{left:e.left-o,top:e.top-r}}}static renderClipPathInScreenshot(e,n,a,i,o){let r=e.find("clipPath",n),s=`clip-${b.getUniqueSuffix()}`;r.id=s,n.style.clipPath=`url(#${s})`;let p=a.top/o.height,c=p+i.height/o.height,l=a.left/o.width,d=l+i.width/o.width,m=[`0,0 1,0 1,${p} 0,${p}`,`0,${c} 1,${c} 1,1 0,1`,`0,${p} ${l},${p} ${l},${c} 0,${c}`,`${d},${p} 1,${p} 1,${c} ${d},${c}`];for(let h of m){let f=e.createElementNS("http://www.w3.org/2000/svg","polygon");f.setAttribute("points",h),r.append(f)}}static installFullPageScreenshot(e,n){e.style.setProperty("--element-screenshot-url",`url('${n.data}')`)}static installOverlayFeature(e){let{dom:n,rootEl:a,overlayContainerEl:i,fullPageScreenshot:o}=e,r="lh-screenshot-overlay--enabled";a.classList.contains(r)||(a.classList.add(r),a.addEventListener("click",s=>{let p=s.target;if(!p)return;let c=p.closest(".lh-node > .lh-element-screenshot");if(!c)return;let l=n.createElement("div","lh-element-screenshot__overlay");i.append(l);let d={width:l.clientWidth*.95,height:l.clientHeight*.8},m={width:Number(c.dataset.rectWidth),height:Number(c.dataset.rectHeight),left:Number(c.dataset.rectLeft),right:Number(c.dataset.rectLeft)+Number(c.dataset.rectWidth),top:Number(c.dataset.rectTop),bottom:Number(c.dataset.rectTop)+Number(c.dataset.rectHeight)},h=t.render(n,o.screenshot,m,d);if(!h){l.remove();return}l.append(h),l.addEventListener("click",()=>l.remove())}))}static _computeZoomFactor(e,n){let i={x:n.width/e.width,y:n.height/e.height},o=.75*Math.min(i.x,i.y);return Math.min(1,o)}static render(e,n,a,i){if(!To(n,a))return null;let o=e.createComponent("elementScreenshot"),r=e.find("div.lh-element-screenshot",o);r.dataset.rectWidth=a.width.toString(),r.dataset.rectHeight=a.height.toString(),r.dataset.rectLeft=a.left.toString(),r.dataset.rectTop=a.top.toString();let s=this._computeZoomFactor(a,i),p={width:i.width/s,height:i.height/s};p.width=Math.min(n.width,p.width),p.height=Math.min(n.height,p.height);let c={width:p.width*s,height:p.height*s},l=t.getScreenshotPositions(a,p,{width:n.width,height:n.height}),d=e.find("div.lh-element-screenshot__image",r);d.style.width=c.width+"px",d.style.height=c.height+"px",d.style.backgroundPositionY=-(l.screenshot.top*s)+"px",d.style.backgroundPositionX=-(l.screenshot.left*s)+"px",d.style.backgroundSize=`${n.width*s}px ${n.height*s}px`;let m=e.find("div.lh-element-screenshot__element-marker",r);m.style.width=a.width*s+"px",m.style.height=a.height*s+"px",m.style.left=l.clip.left*s+"px",m.style.top=l.clip.top*s+"px";let h=e.find("div.lh-element-screenshot__mask",r);return h.style.width=c.width+"px",h.style.height=c.height+"px",t.renderClipPathInScreenshot(e,h,l.clip,a,p),r}};var Io=["http://","https://","data:"],Ro=["bytes","numeric","ms","timespanMs"],_e=class{constructor(e,n={}){this._dom=e,this._fullPageScreenshot=n.fullPageScreenshot,this._entities=n.entities}render(e){switch(e.type){case"filmstrip":return this._renderFilmstrip(e);case"list":return this._renderList(e);case"checklist":return this._renderChecklist(e);case"table":case"opportunity":return this._renderTable(e);case"network-tree":case"criticalrequestchain":return ze.render(this._dom,e,this);case"screenshot":case"debugdata":case"treemap-data":return null;default:return this._renderUnknown(e.type,e)}}_renderBytes(e){let n=b.i18n.formatBytesToKiB(e.value,e.granularity||.1),a=this._renderText(n);return a.title=b.i18n.formatBytes(e.value),a}_renderMilliseconds(e){let n;return e.displayUnit==="duration"?n=b.i18n.formatDuration(e.value):n=b.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(n)}renderTextURL(e){let n=e,a,i,o;try{let s=U.parseURL(n);a=s.file==="/"?s.origin:s.file,i=s.file==="/"||s.hostname===""?"":`(${s.hostname})`,o=n}catch{a=n}let r=this._dom.createElement("div","lh-text__url");if(r.append(this._renderLink({text:a,url:n})),i){let s=this._renderText(i);s.classList.add("lh-text__url-host"),r.append(s)}return o&&(r.title=n,r.dataset.url=n),r}_renderLink(e){let n=this._dom.createElement("a");if(this._dom.safelySetHref(n,e.url),!n.href){let a=this._renderText(e.text);return a.classList.add("lh-link"),a}return n.rel="noopener",n.target="_blank",n.textContent=e.text,n.classList.add("lh-link"),n}_renderText(e){let n=this._dom.createElement("div","lh-text");return n.textContent=e,n}_renderNumeric(e){let n=b.i18n.formatNumber(e.value,e.granularity||.1),a=this._dom.createElement("div","lh-numeric");return a.textContent=n,a}_renderThumbnail(e){let n=this._dom.createElement("img","lh-thumbnail"),a=e;return n.src=a,n.title=a,n.alt="",n}_renderUnknown(e,n){console.error(`Unknown details type: ${e}`,n);let a=this._dom.createElement("details","lh-unknown");return this._dom.createChildOf(a,"summary").textContent=`We don't know how to render audit details of type \`${e}\`. The Lighthouse version that collected this data is likely newer than the Lighthouse version of the report renderer. Expand for the raw JSON.`,this._dom.createChildOf(a,"pre").textContent=JSON.stringify(n,null,2),a}_renderTableValue(e,n){if(e==null)return null;if(typeof e=="object")switch(e.type){case"code":return this._renderCode(e.value);case"link":return this._renderLink(e);case"node":return this.renderNode(e);case"numeric":return this._renderNumeric(e);case"text":return this._renderText(e.value);case"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);default:return this._renderUnknown(e.type,e)}switch(n.valueType){case"bytes":{let a=Number(e);return this._renderBytes({value:a,granularity:n.granularity})}case"code":{let a=String(e);return this._renderCode(a)}case"ms":{let a={value:Number(e),granularity:n.granularity,displayUnit:n.displayUnit};return this._renderMilliseconds(a)}case"numeric":{let a=Number(e);return this._renderNumeric({value:a,granularity:n.granularity})}case"text":{let a=String(e);return this._renderText(a)}case"thumbnail":{let a=String(e);return this._renderThumbnail(a)}case"timespanMs":{let a=Number(e);return this._renderMilliseconds({value:a})}case"url":{let a=String(e);return Io.some(i=>a.startsWith(i))?this.renderTextURL(a):this._renderCode(a)}default:return this._renderUnknown(n.valueType,e)}}_getDerivedSubItemsHeading(e){return e.subItemsHeading?{key:e.subItemsHeading.key||"",valueType:e.subItemsHeading.valueType||e.valueType,granularity:e.subItemsHeading.granularity||e.granularity,displayUnit:e.subItemsHeading.displayUnit||e.displayUnit,label:""}:null}_renderTableRow(e,n){let a=this._dom.createElement("tr");for(let i of n){if(!i||!i.key){this._dom.createChildOf(a,"td","lh-table-column--empty");continue}let o=e[i.key],r;if(o!=null&&(r=this._renderTableValue(o,i)),r){let s=`lh-table-column--${i.valueType}`;this._dom.createChildOf(a,"td",s).append(r)}else this._dom.createChildOf(a,"td","lh-table-column--empty")}return a}_renderTableRowsFromItem(e,n){let a=this._dom.createFragment();if(a.append(this._renderTableRow(e,n)),!e.subItems)return a;let i=n.map(this._getDerivedSubItemsHeading);if(!i.some(Boolean))return a;for(let o of e.subItems.items){let r=this._renderTableRow(o,i);r.classList.add("lh-sub-item-row"),a.append(r)}return a}_adornEntityGroupRow(e){let n=e.dataset.entity;if(!n)return;let a=this._entities?.find(o=>o.name===n);if(!a)return;let i=this._dom.find("td",e);if(a.category){let o=this._dom.createElement("span");o.classList.add("lh-audit__adorn"),o.textContent=a.category,i.append(" ",o)}if(a.isFirstParty){let o=this._dom.createElement("span");o.classList.add("lh-audit__adorn","lh-audit__adorn1p"),o.textContent=b.strings.firstPartyChipLabel,i.append(" ",o)}if(a.homepage){let o=this._dom.createElement("a");o.href=a.homepage,o.target="_blank",o.title=b.strings.openInANewTabTooltip,o.classList.add("lh-report-icon--external"),i.append(" ",o)}}_renderEntityGroupRow(e,n){let a={...n[0]};a.valueType="text";let i=[a,...n.slice(1)],o=this._dom.createFragment();return o.append(this._renderTableRow(e,i)),this._dom.find("tr",o).classList.add("lh-row--group"),o}_getEntityGroupItems(e){let{items:n,headings:a,sortedBy:i}=e;if(!n.length||e.isEntityGrouped||!n.some(l=>l.entity))return[];let o=new Set(e.skipSumming||[]),r=[];for(let l of a)!l.key||o.has(l.key)||Ro.includes(l.valueType)&&r.push(l.key);let s=a[0].key;if(!s)return[];let p=new Map;for(let l of n){let d=typeof l.entity=="string"?l.entity:void 0,m=p.get(d)||{[s]:d||b.strings.unattributable,entity:d};for(let h of r)m[h]=Number(m[h]||0)+Number(l[h]||0);p.set(d,m)}let c=[...p.values()];return i&&c.sort(A.getTableItemSortComparator(i)),c}_renderTable(e){if(!e.items.length)return this._dom.createElement("span");let n=this._dom.createElement("table","lh-table"),a=this._dom.createChildOf(n,"thead"),i=this._dom.createChildOf(a,"tr");for(let s of e.headings){let c=`lh-table-column--${s.valueType||"text"}`,l=this._dom.createElement("div","lh-text");l.textContent=s.label,this._dom.createChildOf(i,"th",c).append(l)}let o=this._getEntityGroupItems(e),r=this._dom.createChildOf(n,"tbody");if(o.length)for(let s of o){let p=typeof s.entity=="string"?s.entity:void 0,c=this._renderEntityGroupRow(s,e.headings);for(let d of e.items.filter(m=>m.entity===p))c.append(this._renderTableRowsFromItem(d,e.headings));let l=this._dom.findAll("tr",c);p&&l.length&&(l.forEach(d=>d.dataset.entity=p),this._adornEntityGroupRow(l[0])),r.append(c)}else{let s=!0;for(let p of e.items){let c=this._renderTableRowsFromItem(p,e.headings),l=this._dom.findAll("tr",c),d=l[0];if(typeof p.entity=="string"&&(d.dataset.entity=p.entity),e.isEntityGrouped&&p.entity)d.classList.add("lh-row--group"),this._adornEntityGroupRow(d);else for(let m of l)m.classList.add(s?"lh-row--even":"lh-row--odd");s=!s,r.append(c)}}return n}_renderList(e){let n=this._dom.createElement("div","lh-list");return e.items.forEach(a=>{if(a.type==="node"){n.append(this.renderNode(a));return}let i=this.render(a);i&&n.append(i)}),n}_renderChecklist(e){let n=this._dom.createElement("ul","lh-checklist");return Object.values(e.items).forEach(a=>{let i=this._dom.createChildOf(n,"li","lh-checklist-item"),o=a.value?"lh-report-plain-icon--checklist-pass":"lh-report-plain-icon--checklist-fail";this._dom.createChildOf(i,"span",`lh-report-plain-icon ${o}`).textContent=a.label}),n}renderNode(e){let n=this._dom.createElement("span","lh-node");if(e.nodeLabel){let r=this._dom.createElement("div");r.textContent=e.nodeLabel,n.append(r)}if(e.snippet){let r=this._dom.createElement("div");r.classList.add("lh-node__snippet"),r.textContent=e.snippet,n.append(r)}if(e.selector&&(n.title=e.selector),e.path&&n.setAttribute("data-path",e.path),e.selector&&n.setAttribute("data-selector",e.selector),e.snippet&&n.setAttribute("data-snippet",e.snippet),!this._fullPageScreenshot)return n;let a=e.lhId&&this._fullPageScreenshot.nodes[e.lhId];if(!a||a.width===0||a.height===0)return n;let i={width:147,height:100},o=le.render(this._dom,this._fullPageScreenshot.screenshot,a,i);return o&&n.prepend(o),n}renderSourceLocation(e){if(!e.url)return null;let n=`${e.url}:${e.line+1}:${e.column}`,a;e.original&&(a=`${e.original.file||"<unmapped>"}:${e.original.line+1}:${e.original.column}`);let i;if(e.urlProvider==="network"&&a)i=this._renderLink({url:e.url,text:a}),i.title=`maps to generated location ${n}`;else if(e.urlProvider==="network"&&!a)i=this.renderTextURL(e.url),this._dom.find(".lh-link",i).textContent+=`:${e.line+1}:${e.column}`;else if(e.urlProvider==="comment"&&a)i=this._renderText(`${a} (from source map)`),i.title=`${n} (from sourceURL)`;else if(e.urlProvider==="comment"&&!a)i=this._renderText(`${n} (from sourceURL)`);else return null;return i.classList.add("lh-source-location"),i.setAttribute("data-source-url",e.url),i.setAttribute("data-source-line",String(e.line)),i.setAttribute("data-source-column",String(e.column)),i}_renderFilmstrip(e){let n=this._dom.createElement("div","lh-filmstrip");for(let a of e.items){let i=this._dom.createChildOf(n,"div","lh-filmstrip__frame"),o=this._dom.createChildOf(i,"img","lh-filmstrip__thumbnail");o.src=a.data,o.alt="Screenshot"}return n}_renderCode(e){let n=this._dom.createElement("pre","lh-code");return n.textContent=e,n}};function Pa(t){let e=t.createComponent("explodeyGauge");return t.find(".lh-exp-gauge-component",e)}function Aa(t,e,n){let a=t.find("div.lh-exp-gauge__wrapper",e);a.className="",a.classList.add("lh-exp-gauge__wrapper",`lh-exp-gauge__wrapper--${A.calculateRating(n.score)}`),Do(t,a,n)}function No(t,e,n){n=n||t/32;let a=t/n,i=.5*n,o=a+i+n,r=2*Math.PI*a,s=Math.acos(1-.5*Math.pow(.5*n/a,2))*a,p=2*Math.PI*o,c=Math.acos(1-.5*Math.pow(.5*n/o,2))*o;return{radiusInner:a,radiusOuter:o,circumferenceInner:r,circumferenceOuter:p,getArcLength:()=>Math.max(0,Number(e*r)),getMetricArcLength:(l,d=!1)=>{let m=d?0:2*c;return Math.max(0,Number(l*p-i-m))},endDiffInner:s,endDiffOuter:c,strokeWidth:n,strokeGap:i}}function Do(t,e,n){let o=Number(n.score),{radiusInner:r,radiusOuter:s,circumferenceInner:p,circumferenceOuter:c,getArcLength:l,getMetricArcLength:d,endDiffInner:m,endDiffOuter:h,strokeWidth:f,strokeGap:C}=No(128,o),g=t.find("svg.lh-exp-gauge",e);t.find(".lh-exp-gauge__label",g).textContent=n.title,g.setAttribute("viewBox",[-64,-64/2,128,128/2].join(" ")),g.style.setProperty("--stroke-width",`${f}px`),g.style.setProperty("--circle-meas",(2*Math.PI).toFixed(4));let _=t.find("g.lh-exp-gauge__outer",e),v=t.find("g.lh-exp-gauge__inner",e),y=t.find("circle.lh-cover",_),w=t.find("circle.lh-exp-gauge__arc",v),P=t.find("text.lh-exp-gauge__percentage",v);_.style.setProperty("--scale-initial",String(r/s)),_.style.setProperty("--radius",`${s}px`),y.style.setProperty("--radius",`${.5*(r+s)}px`),y.setAttribute("stroke-width",String(C)),g.style.setProperty("--radius",`${r}px`),w.setAttribute("stroke-dasharray",`${l()} ${(p-l()).toFixed(4)}`),w.setAttribute("stroke-dashoffset",String(.25*p-m)),P.textContent=Math.round(o*100).toString();let L=s+f,R=s-f,M=n.auditRefs.filter(E=>E.group==="metrics"&&E.weight),G=M.reduce((E,z)=>E+=z.weight,0),Z=.25*c-h-.5*C,K=-.5*Math.PI;_.querySelectorAll(".metric").forEach(E=>{M.map(V=>`metric--${V.id}`).find(V=>E.classList.contains(V))||E.remove()}),M.forEach((E,z)=>{let H=E.acronym??E.id,V=!_.querySelector(`.metric--${H}`),O=t.maybeFind(`g.metric--${H}`,_)||t.createSVGElement("g"),me=t.maybeFind(`.metric--${H} circle.lh-exp-gauge--faded`,_)||t.createSVGElement("circle"),we=t.maybeFind(`.metric--${H} circle.lh-exp-gauge--miniarc`,_)||t.createSVGElement("circle"),de=t.maybeFind(`.metric--${H} circle.lh-exp-gauge-hovertarget`,_)||t.createSVGElement("circle"),W=t.maybeFind(`.metric--${H} text.metric__label`,_)||t.createSVGElement("text"),Y=t.maybeFind(`.metric--${H} text.metric__value`,_)||t.createSVGElement("text");O.classList.add("metric",`metric--${H}`),me.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--faded"),we.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--miniarc"),de.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget");let he=E.weight/G,Jt=d(he),Zt=E.result.score?E.result.score*he:0,Kt=d(Zt),ti=he*c,Xt=d(he,!0),Yt=A.calculateRating(E.result.score,E.result.scoreDisplayMode);O.style.setProperty("--metric-rating",Yt),O.style.setProperty("--metric-color",`var(--color-${Yt})`),O.style.setProperty("--metric-offset",`${Z}`),O.style.setProperty("--i",z.toString()),me.setAttribute("stroke-dasharray",`${Jt} ${c-Jt}`),we.style.setProperty("--metric-array",`${Kt} ${c-Kt}`),de.setAttribute("stroke-dasharray",`${Xt} ${c-Xt-h}`),W.classList.add("metric__label"),Y.classList.add("metric__value"),W.textContent=H,Y.textContent=`+${Math.round(Zt*100)}`;let Qt=K+he*Math.PI,xe=Math.cos(Qt),Se=Math.sin(Qt);switch(!0){case xe>0:Y.setAttribute("text-anchor","end");break;case xe<0:W.setAttribute("text-anchor","end");break;case xe===0:W.setAttribute("text-anchor","middle"),Y.setAttribute("text-anchor","middle");break}switch(!0){case Se>0:W.setAttribute("dominant-baseline","hanging");break;case Se<0:Y.setAttribute("dominant-baseline","hanging");break;case Se===0:W.setAttribute("dominant-baseline","middle"),Y.setAttribute("dominant-baseline","middle");break}W.setAttribute("x",(L*xe).toFixed(2)),W.setAttribute("y",(L*Se).toFixed(2)),Y.setAttribute("x",(R*xe).toFixed(2)),Y.setAttribute("y",(R*Se).toFixed(2)),V&&(O.appendChild(me),O.appendChild(we),O.appendChild(de),O.appendChild(W),O.appendChild(Y),_.appendChild(O)),Z-=ti,K+=he*2*Math.PI});let q=_.querySelector(".lh-exp-gauge-underhovertarget")||t.createSVGElement("circle");q.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget","lh-exp-gauge-underhovertarget");let X=d(1,!0);if(q.setAttribute("stroke-dasharray",`${X} ${c-X-h}`),q.isConnected||_.prepend(q),g.dataset.listenersSetup)return;g.dataset.listenersSetup=!0,ei(g),g.addEventListener("pointerover",E=>{if(E.target===g&&g.classList.contains("state--expanded")){g.classList.remove("state--expanded"),g.classList.contains("state--highlight")&&(g.classList.remove("state--highlight"),t.find(".metric--highlight",g).classList.remove("metric--highlight"));return}if(!(E.target instanceof Element))return;let z=E.target.parentNode;if(z instanceof SVGElement){if(z&&z===v){g.classList.contains("state--expanded")?g.classList.contains("state--highlight")&&(g.classList.remove("state--highlight"),t.find(".metric--highlight",g).classList.remove("metric--highlight")):g.classList.add("state--expanded");return}if(z&&z.classList&&z.classList.contains("metric")){let H=z.style.getPropertyValue("--metric-rating");if(e.style.setProperty("--color-highlight",`var(--color-${H}-secondary)`),!g.classList.contains("state--highlight"))g.classList.add("state--highlight"),z.classList.add("metric--highlight");else{let V=t.find(".metric--highlight",g);z!==V&&(V.classList.remove("metric--highlight"),z.classList.add("metric--highlight"))}}}}),g.addEventListener("mouseleave",()=>{g.classList.remove("state--highlight"),g.querySelector(".metric--highlight")?.classList.remove("metric--highlight")});async function ei(E){if(await new Promise(W=>setTimeout(W,1e3)),E.classList.contains("state--expanded"))return;let z=t.find(".lh-exp-gauge__inner",E),H=`uniq-${Math.random()}`;z.setAttribute("id",H);let V=t.createSVGElement("use");V.setAttribute("href",`#${H}`),E.appendChild(V);let O=2.5;E.style.setProperty("--peek-dur",`${O}s`),E.classList.add("state--peek","state--expanded");let me=()=>{E.classList.remove("state--peek","state--expanded"),V.remove()},we=setTimeout(()=>{E.removeEventListener("mouseenter",de),me()},O*1e3*1.5);function de(){clearTimeout(we),me()}E.addEventListener("mouseenter",de,{once:!0})}}var Ea="__lh__insights_audits_toggle_state",mt=class extends se{_memoryInsightToggleState="DEFAULT";_renderMetric(e){let n=this.dom.createComponent("metric"),a=this.dom.find(".lh-metric",n);a.id=e.result.id;let i=A.calculateRating(e.result.score,e.result.scoreDisplayMode);a.classList.add(`lh-metric--${i}`);let o=this.dom.find(".lh-metric__title",n);o.textContent=e.result.title;let r=this.dom.find(".lh-metric__value",n);r.textContent=e.result.displayValue||"";let s=this.dom.find(".lh-metric__description",n);if(s.append(this.dom.convertMarkdownLinkSnippets(e.result.description)),e.result.scoreDisplayMode==="error"){s.textContent="",r.textContent="Error!";let p=this.dom.createChildOf(s,"span");p.textContent=e.result.errorMessage||"Report error: no metric information"}else e.result.scoreDisplayMode==="notApplicable"&&(r.textContent="--");return a}_getScoringCalculatorHref(e){let n=e.filter(d=>d.group==="metrics"),a=e.find(d=>d.id==="interactive"),i=e.find(d=>d.id==="first-cpu-idle"),o=e.find(d=>d.id==="first-meaningful-paint");a&&n.push(a),i&&n.push(i),o&&typeof o.result.score=="number"&&n.push(o);let r=d=>Math.round(d*100)/100,p=[...n.map(d=>{let m;return typeof d.result.numericValue=="number"?(m=d.id==="cumulative-layout-shift"?r(d.result.numericValue):Math.round(d.result.numericValue),m=m.toString()):m="null",[d.acronym||d.id,m]})];b.reportJson&&(p.push(["device",b.reportJson.configSettings.formFactor]),p.push(["version",b.reportJson.lighthouseVersion]));let c=new URLSearchParams(p),l=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return l.hash=c.toString(),l.href}overallImpact(e,n){if(!e.result.metricSavings)return{overallImpact:0,overallLinearImpact:0};let a=0,i=0;for(let[o,r]of Object.entries(e.result.metricSavings)){if(r===void 0)continue;let s=n.find(h=>h.acronym===o);if(!s||s.result.score===null)continue;let p=s.result.numericValue;if(!p)continue;let c=r/p*s.weight;i+=c;let l=s.result.scoringOptions;if(!l)continue;let m=(U.computeLogNormalScore(l,p-r)-s.result.score)*s.weight;a+=m}return{overallImpact:a,overallLinearImpact:i}}_persistInsightToggleToStorage(e){try{window.localStorage.setItem(Ea,e)}finally{this._memoryInsightToggleState=e}}_getInsightToggleState(){let e=this._getRawInsightToggleState();return e==="DEFAULT"&&(e="AUDITS"),e}_getRawInsightToggleState(){try{let e=window.localStorage.getItem(Ea);if(e==="AUDITS"||e==="INSIGHTS")return e}catch{return this._memoryInsightToggleState}return"DEFAULT"}_setInsightToggleButtonText(e){let n=this._getInsightToggleState();e.innerText=n==="AUDITS"?b.strings.tryInsights:b.strings.goBackToAudits}_renderInsightsToggle(e){let n=this.dom.createChildOf(e,"div","lh-perf-insights-toggle"),a=this.dom.createChildOf(n,"span","lh-perf-toggle-text"),i=this.dom.createElement("span","lh-perf-insights-icon");i.innerHTML='<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M18 13V11H22V13H18ZM19.2 20L16 17.6L17.2 16L20.4 18.4L19.2 20ZM17.2 8L16 6.4L19.2 4L20.4 5.6L17.2 8ZM5 19V15H4C3.45 15 2.975 14.8083 2.575 14.425C2.19167 14.025 2 13.55 2 13V11C2 10.45 2.19167 9.98333 2.575 9.6C2.975 9.2 3.45 9 4 9H8L13 6V18L8 15H7V19H5ZM11 14.45V9.55L8.55 11H4V13H8.55L11 14.45ZM14 15.35V8.65C14.45 9.05 14.8083 9.54167 15.075 10.125C15.3583 10.6917 15.5 11.3167 15.5 12C15.5 12.6833 15.3583 13.3167 15.075 13.9C14.8083 14.4667 14.45 14.95 14 15.35Z"/></svg>',a.appendChild(i),a.appendChild(this.dom.convertMarkdownLinkSnippets(b.strings.insightsNotice));let r=this.dom.createChildOf(n,"button","lh-button lh-button-insight-toggle");this._setInsightToggleButtonText(r),r.addEventListener("click",s=>{s.preventDefault();let p=this.dom.maybeFind(".lh-perf-audits--swappable");p&&this.dom.swapSectionIfPossible(p);let l=this._getInsightToggleState()==="AUDITS"?"INSIGHTS":"AUDITS";this.dom.fireEventOn("lh-analytics",this.dom.document(),{name:"toggle_insights",data:{newState:l}}),this._persistInsightToggleToStorage(l),this._setInsightToggleButtonText(r)}),n.appendChild(r)}render(e,n,a){let i=b.strings,o=this.dom.createElement("div","lh-category");o.id=e.id,o.append(this.renderCategoryHeader(e,n,a));let r=e.auditRefs.filter(h=>h.group==="metrics");if(r.length){let[h,f]=this.renderAuditGroup(n.metrics),C=this.dom.createElement("input","lh-metrics-toggle__input"),g=`lh-metrics-toggle${b.getUniqueSuffix()}`;C.setAttribute("aria-label","Toggle the display of metric descriptions"),C.type="checkbox",C.id=g,h.prepend(C);let _=this.dom.find(".lh-audit-group__header",h),v=this.dom.createChildOf(_,"label","lh-metrics-toggle__label");v.htmlFor=g;let y=this.dom.createChildOf(v,"span","lh-metrics-toggle__labeltext--show"),w=this.dom.createChildOf(v,"span","lh-metrics-toggle__labeltext--hide");y.textContent=b.strings.expandView,w.textContent=b.strings.collapseView;let P=this.dom.createElement("div","lh-metrics-container");if(h.insertBefore(P,f),r.forEach(L=>{P.append(this._renderMetric(L))}),o.querySelector(".lh-gauge__wrapper")){let L=this.dom.find(".lh-category-header__description",o),R=this.dom.createChildOf(L,"div","lh-metrics__disclaimer"),M=this.dom.convertMarkdownLinkSnippets(i.varianceDisclaimer);R.append(M);let G=this.dom.createChildOf(R,"a","lh-calclink");G.target="_blank",G.textContent=i.calculatorLink,this.dom.safelySetHref(G,this._getScoringCalculatorHref(e.auditRefs))}h.classList.add("lh-audit-group--metrics"),o.append(h)}let s=this.dom.createChildOf(o,"div","lh-filmstrip-container"),c=e.auditRefs.find(h=>h.id==="screenshot-thumbnails")?.result;if(c?.details){s.id=c.id;let h=this.detailsRenderer.render(c.details);h&&s.append(h)}this._renderInsightsToggle(o);let l=this.renderFilterableSection(e,n,["diagnostics"],r);l?.classList.add("lh-perf-audits--swappable","lh-perf-audits--legacy");let d=this.renderFilterableSection(e,n,["insights","diagnostics"],r);if(d?.classList.add("lh-perf-audits--swappable","lh-perf-audits--experimental"),l&&(o.append(l),d&&this.dom.registerSwappableSections(l,d)),this._getInsightToggleState()==="INSIGHTS"&&requestAnimationFrame(()=>{let h=this.dom.maybeFind(".lh-perf-audits--swappable");h&&this.dom.swapSectionIfPossible(h)}),this.dom.fireEventOn("lh-analytics",this.dom.document(),{name:"initial_insights_state",data:{state:this._getRawInsightToggleState()}}),(!a||a?.gatherMode==="navigation")&&e.score!==null){let h=Pa(this.dom);Aa(this.dom,h,e),this.dom.find(".lh-score__gauge",o).replaceWith(h)}return o}renderFilterableSection(e,n,a,i){if(a.some(v=>!n[v]))return null;let o=this.dom.createElement("div"),r=new Set,s=v=>v.id.endsWith("-insight")?"insights":v.group??"",p=e.auditRefs.filter(v=>a.includes(s(v)));for(let v of p)v.result.replacesAudits?.forEach(y=>{r.add(y)});let c=p.filter(v=>!r.has(v.id)).map(v=>{let{overallImpact:y,overallLinearImpact:w}=this.overallImpact(v,i),P=v.result.guidanceLevel||1,L=this.renderAudit(v);return{auditRef:v,auditEl:L,overallImpact:y,overallLinearImpact:w,guidanceLevel:P}}),l=c.filter(v=>!A.showAsPassed(v.auditRef.result)),d=c.filter(v=>A.showAsPassed(v.auditRef.result)),m={};for(let v of a){let y=this.renderAuditGroup(n[v]);y[0].classList.add(`lh-audit-group--${v}`),m[v]=y}function h(v){for(let y of c)if(v==="All")y.auditEl.hidden=!1;else{let w=y.auditRef.result.metricSavings?.[v]===void 0;y.auditEl.hidden=w}l.sort((y,w)=>{let P=y.auditRef.result.score||0,L=w.auditRef.result.score||0;if(P!==L)return P-L;if(v!=="All"){let R=y.auditRef.result.metricSavings?.[v]??-1,M=w.auditRef.result.metricSavings?.[v]??-1;if(R!==M)return M-R}return y.overallImpact!==w.overallImpact?w.overallImpact*w.guidanceLevel-y.overallImpact*y.guidanceLevel:y.overallImpact===0&&w.overallImpact===0&&y.overallLinearImpact!==w.overallLinearImpact?w.overallLinearImpact*w.guidanceLevel-y.overallLinearImpact*y.guidanceLevel:w.guidanceLevel-y.guidanceLevel});for(let y of l){if(!y.auditRef.group)continue;let w=m[s(y.auditRef)];if(!w)continue;let[P,L]=w;P.insertBefore(y.auditEl,L)}}let f=new Set;for(let v of l){let y=v.auditRef.result.metricSavings||{};for(let[w,P]of Object.entries(y))typeof P=="number"&&f.add(w)}let C=i.filter(v=>v.acronym&&f.has(v.acronym));C.length&&this.renderMetricAuditFilter(C,o,h),h("All");for(let v of a)if(l.some(y=>s(y.auditRef)===v)){let y=m[v];if(!y)continue;o.append(y[0])}if(!d.length)return o;let g={auditRefsOrEls:d.map(v=>v.auditEl),groupDefinitions:n},_=this.renderClump("passed",g);return o.append(_),o}renderMetricAuditFilter(e,n,a){let i=this.dom.createElement("div","lh-metricfilter"),o=this.dom.createChildOf(i,"span","lh-metricfilter__text");o.textContent=b.strings.showRelevantAudits;let r=[{acronym:"All",id:"All"},...e],s=b.getUniqueSuffix();for(let p of r){let c=`metric-${p.acronym}-${s}`,l=this.dom.createChildOf(i,"input","lh-metricfilter__radio");l.type="radio",l.name=`metricsfilter-${s}`,l.id=c;let d=this.dom.createChildOf(i,"label","lh-metricfilter__label");d.htmlFor=c,d.title="result"in p?p.result.title:"",d.textContent=p.acronym||p.id,p.acronym==="All"&&(l.checked=!0,d.classList.add("lh-metricfilter__label--active")),n.append(i),l.addEventListener("input",m=>{for(let f of n.querySelectorAll("label.lh-metricfilter__label"))f.classList.toggle("lh-metricfilter__label--active",f.htmlFor===c);n.classList.toggle("lh-category--filtered",p.acronym!=="All"),a(p.acronym||"All");let h=n.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let f of h){f.hidden=!1;let C=Array.from(f.querySelectorAll("div.lh-audit")),g=!!C.length&&C.every(_=>_.hidden);f.hidden=g}})}}};var dt=class{constructor(e){this._dom=e,this._opts={}}renderReport(e,n,a){if(!this._dom.rootEl&&n){console.warn("Please adopt the new report API in renderer/api.js.");let o=n.closest(".lh-root");o?this._dom.rootEl=o:(n.classList.add("lh-root","lh-vars"),this._dom.rootEl=n)}else this._dom.rootEl&&n&&(this._dom.rootEl=n);a&&(this._opts=a),this._dom.setLighthouseChannel(e.configSettings.channel||"unknown");let i=A.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(i)),this._opts.occupyEntireViewport&&this._dom.rootEl.classList.add("lh-max-viewport"),this._dom.rootEl}_renderReportTopbar(e){let n=this._dom.createComponent("topbar"),a=this._dom.find("a.lh-topbar__url",n);return a.textContent=e.finalDisplayedUrl,a.title=e.finalDisplayedUrl,this._dom.safelySetHref(a,e.finalDisplayedUrl),n}_renderReportHeader(){let e=this._dom.createComponent("heading"),n=this._dom.createComponent("scoresWrapper");return this._dom.find(".lh-scores-wrapper-placeholder",e).replaceWith(n),e}_renderReportFooter(e){let n=this._dom.createComponent("footer");return this._renderMetaBlock(e,n),this._dom.find(".lh-footer__version_issue",n).textContent=b.strings.footerIssue,this._dom.find(".lh-footer__version",n).textContent=e.lighthouseVersion,n}_renderMetaBlock(e,n){let a=A.getEmulationDescriptions(e.configSettings||{}),i=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),o=Array.isArray(i)?i[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",r=e.configSettings.channel,s=e.environment.benchmarkIndex.toFixed(0),p=e.environment.credits?.["axe-core"],c=[`${b.strings.runtimeSettingsBenchmark}: ${s}`,`${b.strings.runtimeSettingsCPUThrottling}: ${a.cpuThrottling}`];a.screenEmulation&&c.push(`${b.strings.runtimeSettingsScreenEmulation}: ${a.screenEmulation}`),p&&c.push(`${b.strings.runtimeSettingsAxeVersion}: ${p}`);let l=b.strings.runtimeAnalysisWindow;e.gatherMode==="timespan"?l=b.strings.runtimeAnalysisWindowTimespan:e.gatherMode==="snapshot"&&(l=b.strings.runtimeAnalysisWindowSnapshot);let d=[["date",`Captured at ${b.i18n.formatDateTime(e.fetchTime)}`],["devices",`${a.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,c.join(`
2874
+ `),e.append(n);let a=t.createElement("div","lh-topbar"),i=t.createElementNS("http://www.w3.org/2000/svg","svg","lh-topbar__logo");i.setAttribute("role","img"),i.setAttribute("title","Lighthouse logo"),i.setAttribute("fill","none"),i.setAttribute("xmlns","http://www.w3.org/2000/svg"),i.setAttribute("viewBox","0 0 48 48");let o=t.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d","m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z"),o.setAttribute("fill","#F63");let r=t.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d","M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z"),r.setAttribute("fill","#FFA385");let s=t.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("fill","#FF3"),s.setAttribute("d","M20.5 10h7v7h-7z"),i.append(" ",o," ",r," ",s," ");let p=t.createElement("a","lh-topbar__url");p.setAttribute("href",""),p.setAttribute("target","_blank"),p.setAttribute("rel","noopener");let c=t.createElement("div","lh-tools"),l=t.createElement("div","lh-tools-locale lh-hidden"),d=t.createElement("button","lh-button lh-tool-locale__button");d.setAttribute("id","lh-button__swap-locales"),d.setAttribute("title","Show Language Picker"),d.setAttribute("aria-label","Toggle language picker"),d.setAttribute("aria-haspopup","menu"),d.setAttribute("aria-expanded","false"),d.setAttribute("aria-controls","lh-tools-locale__selector-wrapper");let m=t.createElementNS("http://www.w3.org/2000/svg","svg");m.setAttribute("width","20px"),m.setAttribute("height","20px"),m.setAttribute("viewBox","0 0 24 24"),m.setAttribute("fill","currentColor");let h=t.createElementNS("http://www.w3.org/2000/svg","path");h.setAttribute("d","M0 0h24v24H0V0z"),h.setAttribute("fill","none");let f=t.createElementNS("http://www.w3.org/2000/svg","path");f.setAttribute("d","M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"),m.append(h,f),d.append(" ",m," ");let C=t.createElement("div","lh-tools-locale__selector-wrapper");C.setAttribute("id","lh-tools-locale__selector-wrapper"),C.setAttribute("role","menu"),C.setAttribute("aria-labelledby","lh-button__swap-locales"),C.setAttribute("aria-hidden","true"),C.append(" "," "),l.append(" ",d," ",C," ");let g=t.createElement("button","lh-tools__button");g.setAttribute("id","lh-tools-button"),g.setAttribute("title","Tools menu"),g.setAttribute("aria-label","Toggle report tools menu"),g.setAttribute("aria-haspopup","menu"),g.setAttribute("aria-expanded","false"),g.setAttribute("aria-controls","lh-tools-dropdown");let _=t.createElementNS("http://www.w3.org/2000/svg","svg");_.setAttribute("width","100%"),_.setAttribute("height","100%"),_.setAttribute("viewBox","0 0 24 24");let v=t.createElementNS("http://www.w3.org/2000/svg","path");v.setAttribute("d","M0 0h24v24H0z"),v.setAttribute("fill","none");let y=t.createElementNS("http://www.w3.org/2000/svg","path");y.setAttribute("d","M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"),_.append(" ",v," ",y," "),g.append(" ",_," ");let w=t.createElement("div","lh-tools__dropdown");w.setAttribute("id","lh-tools-dropdown"),w.setAttribute("role","menu"),w.setAttribute("aria-labelledby","lh-tools-button");let P=t.createElement("a","lh-report-icon lh-report-icon--print");P.setAttribute("role","menuitem"),P.setAttribute("tabindex","-1"),P.setAttribute("href","#"),P.setAttribute("data-i18n","dropdownPrintSummary"),P.setAttribute("data-action","print-summary");let L=t.createElement("a","lh-report-icon lh-report-icon--print");L.setAttribute("role","menuitem"),L.setAttribute("tabindex","-1"),L.setAttribute("href","#"),L.setAttribute("data-i18n","dropdownPrintExpanded"),L.setAttribute("data-action","print-expanded");let R=t.createElement("a","lh-report-icon lh-report-icon--copy");R.setAttribute("role","menuitem"),R.setAttribute("tabindex","-1"),R.setAttribute("href","#"),R.setAttribute("data-i18n","dropdownCopyJSON"),R.setAttribute("data-action","copy");let M=t.createElement("a","lh-report-icon lh-report-icon--download lh-hidden");M.setAttribute("role","menuitem"),M.setAttribute("tabindex","-1"),M.setAttribute("href","#"),M.setAttribute("data-i18n","dropdownSaveHTML"),M.setAttribute("data-action","save-html");let G=t.createElement("a","lh-report-icon lh-report-icon--download");G.setAttribute("role","menuitem"),G.setAttribute("tabindex","-1"),G.setAttribute("href","#"),G.setAttribute("data-i18n","dropdownSaveJSON"),G.setAttribute("data-action","save-json");let Z=t.createElement("a","lh-report-icon lh-report-icon--open");Z.setAttribute("role","menuitem"),Z.setAttribute("tabindex","-1"),Z.setAttribute("href","#"),Z.setAttribute("data-i18n","dropdownViewer"),Z.setAttribute("data-action","open-viewer");let K=t.createElement("a","lh-report-icon lh-report-icon--open");K.setAttribute("role","menuitem"),K.setAttribute("tabindex","-1"),K.setAttribute("href","#"),K.setAttribute("data-i18n","dropdownSaveGist"),K.setAttribute("data-action","save-gist");let q=t.createElement("a","lh-report-icon lh-report-icon--open lh-hidden");q.setAttribute("role","menuitem"),q.setAttribute("tabindex","-1"),q.setAttribute("href","#"),q.setAttribute("data-i18n","dropdownViewUnthrottledTrace"),q.setAttribute("data-action","view-unthrottled-trace");let X=t.createElement("a","lh-report-icon lh-report-icon--dark");return X.setAttribute("role","menuitem"),X.setAttribute("tabindex","-1"),X.setAttribute("href","#"),X.setAttribute("data-i18n","dropdownDarkTheme"),X.setAttribute("data-action","toggle-dark"),w.append(" ",P," ",L," ",R," "," ",M," ",G," ",Z," ",K," "," ",q," ",X," "),c.append(" ",l," ",g," ",w," "),a.append(" "," ",i," ",p," ",c," "),e.append(a),e}function Lo(t){let e=t.createFragment(),n=t.createElement("div","lh-warnings lh-warnings--toplevel"),a=t.createElement("p","lh-warnings__msg"),i=t.createElement("ul");return n.append(" ",a," ",i," "),e.append(n),e}function Sa(t,e){switch(e){case"3pFilter":return ro(t);case"audit":return so(t);case"categoryHeader":return lo(t);case"chevron":return po(t);case"clump":return uo(t);case"crc":return co(t);case"crcChain":return mo(t);case"elementScreenshot":return ho(t);case"explodeyGauge":return go(t);case"footer":return fo(t);case"fraction":return vo(t);case"gauge":return bo(t);case"heading":return yo(t);case"metric":return _o(t);case"scorescale":return Co(t);case"scoresWrapper":return wo(t);case"snippet":return xo(t);case"snippetContent":return So(t);case"snippetHeader":return ko(t);case"snippetLine":return Po(t);case"styles":return Ao(t);case"topbar":return Eo(t);case"warningsToplevel":return Lo(t)}throw new Error("unexpected component: "+e)}var re=class{constructor(e,n){this._document=e,this._lighthouseChannel="unknown",this._componentCache=new Map,this.rootEl=n,this._swappableSections=new WeakMap}createElement(e,n){let a=this._document.createElement(e);if(n)for(let i of n.split(/\s+/))i&&a.classList.add(i);return a}createElementNS(e,n,a){let i=this._document.createElementNS(e,n);if(a)for(let o of a.split(/\s+/))o&&i.classList.add(o);return i}createSVGElement(e,n){return this._document.createElementNS("http://www.w3.org/2000/svg",e,n)}createFragment(){return this._document.createDocumentFragment()}createTextNode(e){return this._document.createTextNode(e)}createChildOf(e,n,a){let i=this.createElement(n,a);return e.append(i),i}createComponent(e){let n=this._componentCache.get(e);if(n){let i=n.cloneNode(!0);return this.findAll("style",i).forEach(o=>o.remove()),i}return n=Sa(this,e),this._componentCache.set(e,n),n.cloneNode(!0)}clearComponentCache(){this._componentCache.clear()}convertMarkdownLinkSnippets(e,n={}){let a=this.createElement("span");for(let i of U.splitMarkdownLink(e)){let o=i.text.includes("`")?this.convertMarkdownCodeSnippets(i.text):i.text;if(!i.isLink){a.append(o);continue}let r=new URL(i.linkHref);(["https://developers.google.com","https://web.dev","https://developer.chrome.com"].includes(r.origin)||n.alwaysAppendUtmSource)&&(r.searchParams.set("utm_source","lighthouse"),r.searchParams.set("utm_medium",this._lighthouseChannel));let p=this.createElement("a");p.rel="noopener",p.target="_blank",p.append(o),this.safelySetHref(p,r.href),a.append(p)}return a}safelySetHref(e,n){if(n=n||"",n.startsWith("#")){e.href=n;return}let a=["https:","http:"],i;try{i=new URL(n)}catch{}i&&a.includes(i.protocol)&&(e.href=i.href)}safelySetBlobHref(e,n){if(n.type!=="text/html"&&n.type!=="application/json")throw new Error("Unsupported blob type");let a=URL.createObjectURL(n);e.href=a}convertMarkdownCodeSnippets(e){let n=this.createElement("span");for(let a of U.splitMarkdownCodeSpans(e))if(a.isCode){let i=this.createElement("code");i.textContent=a.text,n.append(i)}else n.append(this._document.createTextNode(a.text));return n}setLighthouseChannel(e){this._lighthouseChannel=e}document(){return this._document}isDevTools(){return!!this._document.querySelector(".lh-devtools")}find(e,n=this.rootEl??this._document){let a=this.maybeFind(e,n);if(a===null)throw new Error(`query ${e} not found`);return a}maybeFind(e,n=this.rootEl??this._document){return n.querySelector(e)}findAll(e,n){return Array.from(n.querySelectorAll(e))}fireEventOn(e,n=this._document,a){let i=new CustomEvent(e,a?{detail:a}:void 0);n.dispatchEvent(i)}saveFile(e,n){let a=this.createElement("a");a.download=n,this.safelySetBlobHref(a,e),this._document.body.append(a),a.click(),this._document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(a.href),500)}registerSwappableSections(e,n){this._swappableSections.set(e,n),this._swappableSections.set(n,e)}swapSectionIfPossible(e){let n=this._swappableSections.get(e);if(!n)return;let a=e.parentNode;if(!a)return;let i=e.querySelectorAll("style");n.append(...i),a.insertBefore(n,e),e.remove()}};var se=class{constructor(e,n){this.dom=e,this.detailsRenderer=n}get _clumpTitles(){return{warning:b.strings.warningAuditsGroupTitle,manual:b.strings.manualAuditsGroupTitle,passed:b.strings.passedAuditsGroupTitle,notApplicable:b.strings.notApplicableAuditsGroupTitle}}renderAudit(e){let n=b.strings,a=this.dom.createComponent("audit"),i=this.dom.find("div.lh-audit",a);i.id=e.result.id;let o=e.result.scoreDisplayMode;e.result.displayValue&&(this.dom.find(".lh-audit__display-text",i).textContent=e.result.displayValue);let r=this.dom.find(".lh-audit__title",i);r.append(this.dom.convertMarkdownCodeSnippets(e.result.title));let s=this.dom.find(".lh-audit__description",i);s.append(this.dom.convertMarkdownLinkSnippets(e.result.description));for(let m of e.relevantMetrics||[]){let h=this.dom.createChildOf(s,"span","lh-audit__adorn");h.title=`Relevant to ${m.result.title}`,h.textContent=m.acronym||m.id}e.stackPacks&&e.stackPacks.forEach(m=>{let h=this.dom.createElement("img","lh-audit__stackpack__img");h.src=m.iconDataURL,h.alt=m.title;let f=this.dom.convertMarkdownLinkSnippets(m.description,{alwaysAppendUtmSource:!0}),C=this.dom.createElement("div","lh-audit__stackpack");C.append(h,f),this.dom.find(".lh-audit__stackpacks",i).append(C)});let p=this.dom.find("details",i);if(e.result.details){let m=this.detailsRenderer.render(e.result.details);m&&(m.classList.add("lh-details"),p.append(m))}if(this.dom.find(".lh-chevron-container",i).append(this._createChevron()),this._setRatingClass(i,e.result.score,o),e.result.scoreDisplayMode==="error"){i.classList.add("lh-audit--error");let m=this.dom.find(".lh-audit__display-text",i);m.textContent=n.errorLabel,m.classList.add("lh-tooltip-boundary");let h=this.dom.createChildOf(m,"div","lh-tooltip lh-tooltip--error");h.textContent=e.result.errorMessage||n.errorMissingAuditInfo}else if(e.result.explanation){let m=this.dom.createChildOf(r,"div","lh-audit-explanation");m.textContent=e.result.explanation}let c=e.result.warnings;if(!c||c.length===0)return i;let l=this.dom.find("summary",p),d=this.dom.createChildOf(l,"div","lh-warnings");if(this.dom.createChildOf(d,"span").textContent=n.warningHeader,c.length===1)d.append(this.dom.createTextNode(c.join("")));else{let m=this.dom.createChildOf(d,"ul");for(let h of c){let f=this.dom.createChildOf(m,"li");f.textContent=h}}return i}injectFinalScreenshot(e,n,a){let i=n["final-screenshot"];if(!i||i.scoreDisplayMode==="error"||!i.details||i.details.type!=="screenshot")return null;let o=this.dom.createElement("img","lh-final-ss-image"),r=i.details.data;o.src=r,o.alt=i.title;let s=this.dom.find(".lh-category .lh-category-header",e),p=this.dom.createElement("div","lh-category-headercol"),c=this.dom.createElement("div","lh-category-headercol lh-category-headercol--separator"),l=this.dom.createElement("div","lh-category-headercol");p.append(...s.childNodes),p.append(a),l.append(o),s.append(p,c,l),s.classList.add("lh-category-header__finalscreenshot")}_createChevron(){let e=this.dom.createComponent("chevron");return this.dom.find("svg.lh-chevron",e)}_setRatingClass(e,n,a){let i=A.calculateRating(n,a);return e.classList.add(`lh-audit--${a.toLowerCase()}`),a!=="informative"&&e.classList.add(`lh-audit--${i}`),e}renderCategoryHeader(e,n,a){let i=this.dom.createComponent("categoryHeader"),o=this.dom.find(".lh-score__gauge",i),r=this.renderCategoryScore(e,n,a);if(o.append(r),e.description){let s=this.dom.convertMarkdownLinkSnippets(e.description);this.dom.find(".lh-category-header__description",i).append(s)}return i}renderAuditGroup(e){let n=this.dom.createElement("div","lh-audit-group"),a=this.dom.createElement("div","lh-audit-group__header");this.dom.createChildOf(a,"span","lh-audit-group__title").textContent=e.title,n.append(a);let i=null;return e.description&&(i=this.dom.convertMarkdownLinkSnippets(e.description),i.classList.add("lh-audit-group__description","lh-audit-group__footer"),n.append(i)),[n,i]}_renderGroupedAudits(e,n){let a=new Map,i="NotAGroup";a.set(i,[]);for(let r of e){let s=r.group||i,p=a.get(s)||[];p.push(r),a.set(s,p)}let o=[];for(let[r,s]of a){if(r===i){for(let d of s)o.push(this.renderAudit(d));continue}let p=n[r],[c,l]=this.renderAuditGroup(p);for(let d of s)c.insertBefore(this.renderAudit(d),l);c.classList.add(`lh-audit-group--${r}`),o.push(c)}return o}renderUnexpandableClump(e,n){let a=this.dom.createElement("div");return this._renderGroupedAudits(e,n).forEach(o=>a.append(o)),a}renderClump(e,{auditRefsOrEls:n,description:a,openByDefault:i}){let o=this.dom.createComponent("clump"),r=this.dom.find(".lh-clump",o);i&&r.setAttribute("open","");let s=this.dom.find(".lh-audit-group__header",r),p=this._clumpTitles[e];this.dom.find(".lh-audit-group__title",s).textContent=p;let c=this.dom.find(".lh-audit-group__itemcount",r);c.textContent=`(${n.length})`;let l=n.map(m=>m instanceof HTMLElement?m:this.renderAudit(m));r.append(...l);let d=this.dom.find(".lh-audit-group",o);if(a){let m=this.dom.convertMarkdownLinkSnippets(a);m.classList.add("lh-audit-group__description","lh-audit-group__footer"),d.append(m)}return this.dom.find(".lh-clump-toggletext--show",d).textContent=b.strings.show,this.dom.find(".lh-clump-toggletext--hide",d).textContent=b.strings.hide,r.classList.add(`lh-clump--${e.toLowerCase()}`),d}renderCategoryScore(e,n,a){let i;if(a&&A.shouldDisplayAsFraction(a.gatherMode)?i=this.renderCategoryFraction(e):i=this.renderScoreGauge(e,n),a?.omitLabel&&this.dom.find(".lh-gauge__label,.lh-fraction__label",i).remove(),a?.onPageAnchorRendered){let o=this.dom.find("a",i);a.onPageAnchorRendered(o)}return i}renderScoreGauge(e,n){let a=this.dom.createComponent("gauge"),i=this.dom.find("a.lh-gauge__wrapper",a);A.isPluginCategory(e.id)&&i.classList.add("lh-gauge__wrapper--plugin");let o=Number(e.score),r=this.dom.find(".lh-gauge",a),s=this.dom.find("circle.lh-gauge-arc",r);s&&this._setGaugeArc(s,o);let p=Math.round(o*100),c=this.dom.find("div.lh-gauge__percentage",a);return c.textContent=p.toString(),e.score===null&&(c.classList.add("lh-gauge--error"),c.textContent="",c.title=b.strings.errorLabel),e.auditRefs.length===0||this.hasApplicableAudits(e)?i.classList.add(`lh-gauge__wrapper--${A.calculateRating(e.score)}`):(i.classList.add("lh-gauge__wrapper--not-applicable"),c.textContent="-",c.title=b.strings.notApplicableAuditsGroupTitle),this.dom.find(".lh-gauge__label",a).textContent=e.title,a}renderCategoryFraction(e){let n=this.dom.createComponent("fraction"),a=this.dom.find("a.lh-fraction__wrapper",n),{numPassed:i,numPassableAudits:o,totalWeight:r}=A.calculateCategoryFraction(e),s=i/o,p=this.dom.find(".lh-fraction__content",n),c=this.dom.createElement("span");c.textContent=`${i}/${o}`,p.append(c);let l=A.calculateRating(s);return r===0&&(l="null"),a.classList.add(`lh-fraction__wrapper--${l}`),this.dom.find(".lh-fraction__label",n).textContent=e.title,n}hasApplicableAudits(e){return e.auditRefs.some(n=>n.result.scoreDisplayMode!=="notApplicable")}_setGaugeArc(e,n){let a=2*Math.PI*Number(e.getAttribute("r")),i=Number(e.getAttribute("stroke-width")),o=.25*i/a;e.style.transform=`rotate(${-90+o*360}deg)`;let r=n*a-i/2;n===0&&(e.style.opacity="0"),n===1&&(r=a),e.style.strokeDasharray=`${Math.max(r,0)} ${a}`}_auditHasWarning(e){return!!e.result.warnings?.length}_getClumpIdForAuditRef(e){let n=e.result.scoreDisplayMode;return n==="manual"||n==="notApplicable"?n:A.showAsPassed(e.result)?this._auditHasWarning(e)?"warning":"passed":"failed"}render(e,n={},a){let i=this.dom.createElement("div","lh-category");i.id=e.id,i.append(this.renderCategoryHeader(e,n,a));let o=new Map;o.set("failed",[]),o.set("warning",[]),o.set("manual",[]),o.set("passed",[]),o.set("notApplicable",[]);for(let s of e.auditRefs){if(s.group==="hidden")continue;let p=this._getClumpIdForAuditRef(s),c=o.get(p);c.push(s),o.set(p,c)}for(let s of o.values())s.sort((p,c)=>c.weight-p.weight);let r=o.get("failed")?.length;for(let[s,p]of o){if(p.length===0)continue;if(s==="failed"){let m=this.renderUnexpandableClump(p,n);m.classList.add("lh-clump--failed"),i.append(m);continue}let c=s==="manual"?e.manualDescription:void 0,l=s==="warning"||s==="manual"&&r===0,d=this.renderClump(s,{auditRefsOrEls:p,description:c,openByDefault:l});i.append(d)}return i}};var ze=class{static createSegment(e,n,a,i){let o=e[n],r=Object.keys(e),s=r.indexOf(n)===r.length-1,p=!!o.children&&Object.keys(o.children).length>0,c=Array.isArray(a)?a.slice(0):[];return typeof i<"u"&&c.push(!i),{node:o,isLastChild:s,hasChildren:p,treeMarkers:c}}static createChainNode(e,n,a){let i=e.createComponent("crcChain"),o,r,s,p,c;"request"in n.node?(r=n.node.request.transferSize,s=n.node.request.url,o=(n.node.request.endTime-n.node.request.startTime)*1e3,p=!1):(r=n.node.transferSize,s=n.node.url,o=n.node.navStartToEndTime,p=!0,c=n.node.isLongest);let l=e.find(".lh-crc-node",i);l.setAttribute("title",s),c&&l.classList.add("lh-crc-node__longest");let d=e.find(".lh-crc-node__tree-marker",i);n.treeMarkers.forEach(g=>{let _=g?"lh-tree-marker lh-vert":"lh-tree-marker";d.append(e.createElement("span",_),e.createElement("span","lh-tree-marker"))});let m=n.isLastChild?"lh-tree-marker lh-up-right":"lh-tree-marker lh-vert-right",h=n.hasChildren?"lh-tree-marker lh-horiz-down":"lh-tree-marker lh-right";d.append(e.createElement("span",m),e.createElement("span","lh-tree-marker lh-right"),e.createElement("span",h));let f=a.renderTextURL(s),C=e.find(".lh-crc-node__tree-value",i);if(C.append(f),!n.hasChildren||p){let g=e.createElement("span","lh-crc-node__chain-duration");g.textContent=" - "+b.i18n.formatMilliseconds(o)+", ";let _=e.createElement("span","lh-crc-node__chain-size");_.textContent=b.i18n.formatBytesToKiB(r,.01),C.append(g,_)}return i}static buildTree(e,n,a,i){if(a.append(De.createChainNode(e,n,i)),n.node.children)for(let o of Object.keys(n.node.children)){let r=De.createSegment(n.node.children,o,n.treeMarkers,n.isLastChild);De.buildTree(e,r,a,i)}}static render(e,n,a){let i=e.createComponent("crc"),o=e.find(".lh-crc",i);e.find(".lh-crc-initial-nav",i).textContent=b.strings.crcInitialNavigation,e.find(".lh-crc__longest_duration_label",i).textContent=b.strings.crcLongestDurationLabel,e.find(".lh-crc__longest_duration",i).textContent=b.i18n.formatMilliseconds(n.longestChain.duration);let r=n.chains;for(let s of Object.keys(r)){let p=De.createSegment(r,s);De.buildTree(e,p,o,a)}return e.find(".lh-crc-container",i)}},De=ze;function To(t,e){return e.left<=t.width&&0<=e.right&&e.top<=t.height&&0<=e.bottom}function ka(t,e,n){return t<e?e:t>n?n:t}function Uo(t){return{x:t.left+t.width/2,y:t.top+t.height/2}}var le=class t{static getScreenshotPositions(e,n,a){let i=Uo(e),o=ka(i.x-n.width/2,0,a.width-n.width),r=ka(i.y-n.height/2,0,a.height-n.height);return{screenshot:{left:o,top:r},clip:{left:e.left-o,top:e.top-r}}}static renderClipPathInScreenshot(e,n,a,i,o){let r=e.find("clipPath",n),s=`clip-${b.getUniqueSuffix()}`;r.id=s,n.style.clipPath=`url(#${s})`;let p=a.top/o.height,c=p+i.height/o.height,l=a.left/o.width,d=l+i.width/o.width,m=[`0,0 1,0 1,${p} 0,${p}`,`0,${c} 1,${c} 1,1 0,1`,`0,${p} ${l},${p} ${l},${c} 0,${c}`,`${d},${p} 1,${p} 1,${c} ${d},${c}`];for(let h of m){let f=e.createElementNS("http://www.w3.org/2000/svg","polygon");f.setAttribute("points",h),r.append(f)}}static installFullPageScreenshot(e,n){e.style.setProperty("--element-screenshot-url",`url('${n.data}')`)}static installOverlayFeature(e){let{dom:n,rootEl:a,overlayContainerEl:i,fullPageScreenshot:o}=e,r="lh-screenshot-overlay--enabled";a.classList.contains(r)||(a.classList.add(r),a.addEventListener("click",s=>{let p=s.target;if(!p)return;let c=p.closest(".lh-node > .lh-element-screenshot");if(!c)return;let l=n.createElement("div","lh-element-screenshot__overlay");i.append(l);let d={width:l.clientWidth*.95,height:l.clientHeight*.8},m={width:Number(c.dataset.rectWidth),height:Number(c.dataset.rectHeight),left:Number(c.dataset.rectLeft),right:Number(c.dataset.rectLeft)+Number(c.dataset.rectWidth),top:Number(c.dataset.rectTop),bottom:Number(c.dataset.rectTop)+Number(c.dataset.rectHeight)},h=t.render(n,o.screenshot,m,d);if(!h){l.remove();return}l.append(h),l.addEventListener("click",()=>l.remove())}))}static _computeZoomFactor(e,n){let i={x:n.width/e.width,y:n.height/e.height},o=.75*Math.min(i.x,i.y);return Math.min(1,o)}static render(e,n,a,i){if(!To(n,a))return null;let o=e.createComponent("elementScreenshot"),r=e.find("div.lh-element-screenshot",o);r.dataset.rectWidth=a.width.toString(),r.dataset.rectHeight=a.height.toString(),r.dataset.rectLeft=a.left.toString(),r.dataset.rectTop=a.top.toString();let s=this._computeZoomFactor(a,i),p={width:i.width/s,height:i.height/s};p.width=Math.min(n.width,p.width),p.height=Math.min(n.height,p.height);let c={width:p.width*s,height:p.height*s},l=t.getScreenshotPositions(a,p,{width:n.width,height:n.height}),d=e.find("div.lh-element-screenshot__image",r);d.style.width=c.width+"px",d.style.height=c.height+"px",d.style.backgroundPositionY=-(l.screenshot.top*s)+"px",d.style.backgroundPositionX=-(l.screenshot.left*s)+"px",d.style.backgroundSize=`${n.width*s}px ${n.height*s}px`;let m=e.find("div.lh-element-screenshot__element-marker",r);m.style.width=a.width*s+"px",m.style.height=a.height*s+"px",m.style.left=l.clip.left*s+"px",m.style.top=l.clip.top*s+"px";let h=e.find("div.lh-element-screenshot__mask",r);return h.style.width=c.width+"px",h.style.height=c.height+"px",t.renderClipPathInScreenshot(e,h,l.clip,a,p),r}};var Io=["http://","https://","data:"],Ro=["bytes","numeric","ms","timespanMs"],_e=class{constructor(e,n={}){this._dom=e,this._fullPageScreenshot=n.fullPageScreenshot,this._entities=n.entities}render(e){switch(e.type){case"filmstrip":return this._renderFilmstrip(e);case"list":return this._renderList(e);case"checklist":return this._renderChecklist(e);case"table":case"opportunity":return this._renderTable(e);case"network-tree":case"criticalrequestchain":return ze.render(this._dom,e,this);case"screenshot":case"debugdata":case"treemap-data":return null;default:return this._renderUnknown(e.type,e)}}_renderBytes(e){let n=b.i18n.formatBytesToKiB(e.value,e.granularity||.1),a=this._renderText(n);return a.title=b.i18n.formatBytes(e.value),a}_renderMilliseconds(e){let n;return e.displayUnit==="duration"?n=b.i18n.formatDuration(e.value):n=b.i18n.formatMilliseconds(e.value,e.granularity||10),this._renderText(n)}renderTextURL(e){let n=e,a,i,o;try{let s=U.parseURL(n);a=s.file==="/"?s.origin:s.file,i=s.file==="/"||s.hostname===""?"":`(${s.hostname})`,o=n}catch{a=n}let r=this._dom.createElement("div","lh-text__url");if(r.append(this._renderLink({text:a,url:n})),i){let s=this._renderText(i);s.classList.add("lh-text__url-host"),r.append(s)}return o&&(r.title=n,r.dataset.url=n),r}_renderLink(e){let n=this._dom.createElement("a");if(this._dom.safelySetHref(n,e.url),!n.href){let a=this._renderText(e.text);return a.classList.add("lh-link"),a}return n.rel="noopener",n.target="_blank",n.textContent=e.text,n.classList.add("lh-link"),n}_renderText(e){let n=this._dom.createElement("div","lh-text");return n.textContent=e,n}_renderNumeric(e){let n=b.i18n.formatNumber(e.value,e.granularity||.1),a=this._dom.createElement("div","lh-numeric");return a.textContent=n,a}_renderThumbnail(e){let n=this._dom.createElement("img","lh-thumbnail"),a=e;return n.src=a,n.title=a,n.alt="",n}_renderUnknown(e,n){console.error(`Unknown details type: ${e}`,n);let a=this._dom.createElement("details","lh-unknown");return this._dom.createChildOf(a,"summary").textContent=`We don't know how to render audit details of type \`${e}\`. The Lighthouse version that collected this data is likely newer than the Lighthouse version of the report renderer. Expand for the raw JSON.`,this._dom.createChildOf(a,"pre").textContent=JSON.stringify(n,null,2),a}_renderTableValue(e,n){if(e==null)return null;if(typeof e=="object")switch(e.type){case"code":return this._renderCode(e.value);case"link":return this._renderLink(e);case"node":return this.renderNode(e);case"numeric":return this._renderNumeric(e);case"text":return this._renderText(e.value);case"source-location":return this.renderSourceLocation(e);case"url":return this.renderTextURL(e.value);default:return this._renderUnknown(e.type,e)}switch(n.valueType){case"bytes":{let a=Number(e);return this._renderBytes({value:a,granularity:n.granularity})}case"code":{let a=String(e);return this._renderCode(a)}case"ms":{let a={value:Number(e),granularity:n.granularity,displayUnit:n.displayUnit};return this._renderMilliseconds(a)}case"numeric":{let a=Number(e);return this._renderNumeric({value:a,granularity:n.granularity})}case"text":{let a=String(e);return this._renderText(a)}case"thumbnail":{let a=String(e);return this._renderThumbnail(a)}case"timespanMs":{let a=Number(e);return this._renderMilliseconds({value:a})}case"url":{let a=String(e);return Io.some(i=>a.startsWith(i))?this.renderTextURL(a):this._renderCode(a)}default:return this._renderUnknown(n.valueType,e)}}_getDerivedSubItemsHeading(e){return e.subItemsHeading?{key:e.subItemsHeading.key||"",valueType:e.subItemsHeading.valueType||e.valueType,granularity:e.subItemsHeading.granularity||e.granularity,displayUnit:e.subItemsHeading.displayUnit||e.displayUnit,label:""}:null}_renderTableRow(e,n){let a=this._dom.createElement("tr");for(let i of n){if(!i||!i.key){this._dom.createChildOf(a,"td","lh-table-column--empty");continue}let o=e[i.key],r;if(o!=null&&(r=this._renderTableValue(o,i)),r){let s=`lh-table-column--${i.valueType}`;this._dom.createChildOf(a,"td",s).append(r)}else this._dom.createChildOf(a,"td","lh-table-column--empty")}return a}_renderTableRowsFromItem(e,n){let a=this._dom.createFragment();if(a.append(this._renderTableRow(e,n)),!e.subItems)return a;let i=n.map(this._getDerivedSubItemsHeading);if(!i.some(Boolean))return a;for(let o of e.subItems.items){let r=this._renderTableRow(o,i);r.classList.add("lh-sub-item-row"),a.append(r)}return a}_adornEntityGroupRow(e){let n=e.dataset.entity;if(!n)return;let a=this._entities?.find(o=>o.name===n);if(!a)return;let i=this._dom.find("td",e);if(a.category){let o=this._dom.createElement("span");o.classList.add("lh-audit__adorn"),o.textContent=a.category,i.append(" ",o)}if(a.isFirstParty){let o=this._dom.createElement("span");o.classList.add("lh-audit__adorn","lh-audit__adorn1p"),o.textContent=b.strings.firstPartyChipLabel,i.append(" ",o)}if(a.homepage){let o=this._dom.createElement("a");o.href=a.homepage,o.target="_blank",o.title=b.strings.openInANewTabTooltip,o.classList.add("lh-report-icon--external"),i.append(" ",o)}}_renderEntityGroupRow(e,n){let a={...n[0]};a.valueType="text";let i=[a,...n.slice(1)],o=this._dom.createFragment();return o.append(this._renderTableRow(e,i)),this._dom.find("tr",o).classList.add("lh-row--group"),o}_getEntityGroupItems(e){let{items:n,headings:a,sortedBy:i}=e;if(!n.length||e.isEntityGrouped||!n.some(l=>l.entity))return[];let o=new Set(e.skipSumming||[]),r=[];for(let l of a)!l.key||o.has(l.key)||Ro.includes(l.valueType)&&r.push(l.key);let s=a[0].key;if(!s)return[];let p=new Map;for(let l of n){let d=typeof l.entity=="string"?l.entity:void 0,m=p.get(d)||{[s]:d||b.strings.unattributable,entity:d};for(let h of r)m[h]=Number(m[h]||0)+Number(l[h]||0);p.set(d,m)}let c=[...p.values()];return i&&c.sort(A.getTableItemSortComparator(i)),c}_renderTable(e){if(!e.items.length)return this._dom.createElement("span");let n=this._dom.createElement("table","lh-table"),a=this._dom.createChildOf(n,"thead"),i=this._dom.createChildOf(a,"tr");for(let s of e.headings){let c=`lh-table-column--${s.valueType||"text"}`,l=this._dom.createElement("div","lh-text");l.textContent=s.label,this._dom.createChildOf(i,"th",c).append(l)}let o=this._getEntityGroupItems(e),r=this._dom.createChildOf(n,"tbody");if(o.length)for(let s of o){let p=typeof s.entity=="string"?s.entity:void 0,c=this._renderEntityGroupRow(s,e.headings);for(let d of e.items.filter(m=>m.entity===p))c.append(this._renderTableRowsFromItem(d,e.headings));let l=this._dom.findAll("tr",c);p&&l.length&&(l.forEach(d=>d.dataset.entity=p),this._adornEntityGroupRow(l[0])),r.append(c)}else{let s=!0;for(let p of e.items){let c=this._renderTableRowsFromItem(p,e.headings),l=this._dom.findAll("tr",c),d=l[0];if(typeof p.entity=="string"&&(d.dataset.entity=p.entity),e.isEntityGrouped&&p.entity)d.classList.add("lh-row--group"),this._adornEntityGroupRow(d);else for(let m of l)m.classList.add(s?"lh-row--even":"lh-row--odd");s=!s,r.append(c)}}return n}_renderList(e){let n=this._dom.createElement("div","lh-list");return e.items.forEach(a=>{if(a.type==="node"){n.append(this.renderNode(a));return}let i=this.render(a);i&&n.append(i)}),n}_renderChecklist(e){let n=this._dom.createElement("ul","lh-checklist");return Object.values(e.items).forEach(a=>{let i=this._dom.createChildOf(n,"li","lh-checklist-item"),o=a.value?"lh-report-plain-icon--checklist-pass":"lh-report-plain-icon--checklist-fail";this._dom.createChildOf(i,"span",`lh-report-plain-icon ${o}`).textContent=a.label}),n}renderNode(e){let n=this._dom.createElement("span","lh-node");if(e.nodeLabel){let r=this._dom.createElement("div");r.textContent=e.nodeLabel,n.append(r)}if(e.snippet){let r=this._dom.createElement("div");r.classList.add("lh-node__snippet"),r.textContent=e.snippet,n.append(r)}if(e.selector&&(n.title=e.selector),e.path&&n.setAttribute("data-path",e.path),e.selector&&n.setAttribute("data-selector",e.selector),e.snippet&&n.setAttribute("data-snippet",e.snippet),!this._fullPageScreenshot)return n;let a=e.lhId&&this._fullPageScreenshot.nodes[e.lhId];if(!a||a.width===0||a.height===0)return n;let i={width:147,height:100},o=le.render(this._dom,this._fullPageScreenshot.screenshot,a,i);return o&&n.prepend(o),n}renderSourceLocation(e){if(!e.url)return null;let n=`${e.url}:${e.line+1}:${e.column}`,a;e.original&&(a=`${e.original.file||"<unmapped>"}:${e.original.line+1}:${e.original.column}`);let i;if(e.urlProvider==="network"&&a)i=this._renderLink({url:e.url,text:a}),i.title=`maps to generated location ${n}`;else if(e.urlProvider==="network"&&!a)i=this.renderTextURL(e.url),this._dom.find(".lh-link",i).textContent+=`:${e.line+1}:${e.column}`;else if(e.urlProvider==="comment"&&a)i=this._renderText(`${a} (from source map)`),i.title=`${n} (from sourceURL)`;else if(e.urlProvider==="comment"&&!a)i=this._renderText(`${n} (from sourceURL)`);else return null;return i.classList.add("lh-source-location"),i.setAttribute("data-source-url",e.url),i.setAttribute("data-source-line",String(e.line)),i.setAttribute("data-source-column",String(e.column)),i}_renderFilmstrip(e){let n=this._dom.createElement("div","lh-filmstrip");for(let a of e.items){let i=this._dom.createChildOf(n,"div","lh-filmstrip__frame"),o=this._dom.createChildOf(i,"img","lh-filmstrip__thumbnail");o.src=a.data,o.alt="Screenshot"}return n}_renderCode(e){let n=this._dom.createElement("pre","lh-code");return n.textContent=e,n}};function Pa(t){let e=t.createComponent("explodeyGauge");return t.find(".lh-exp-gauge-component",e)}function Aa(t,e,n){let a=t.find("div.lh-exp-gauge__wrapper",e);a.className="",a.classList.add("lh-exp-gauge__wrapper",`lh-exp-gauge__wrapper--${A.calculateRating(n.score)}`),Do(t,a,n)}function No(t,e,n){n=n||t/32;let a=t/n,i=.5*n,o=a+i+n,r=2*Math.PI*a,s=Math.acos(1-.5*Math.pow(.5*n/a,2))*a,p=2*Math.PI*o,c=Math.acos(1-.5*Math.pow(.5*n/o,2))*o;return{radiusInner:a,radiusOuter:o,circumferenceInner:r,circumferenceOuter:p,getArcLength:()=>Math.max(0,Number(e*r)),getMetricArcLength:(l,d=!1)=>{let m=d?0:2*c;return Math.max(0,Number(l*p-i-m))},endDiffInner:s,endDiffOuter:c,strokeWidth:n,strokeGap:i}}function Do(t,e,n){let o=Number(n.score),{radiusInner:r,radiusOuter:s,circumferenceInner:p,circumferenceOuter:c,getArcLength:l,getMetricArcLength:d,endDiffInner:m,endDiffOuter:h,strokeWidth:f,strokeGap:C}=No(128,o),g=t.find("svg.lh-exp-gauge",e);t.find(".lh-exp-gauge__label",g).textContent=n.title,g.setAttribute("viewBox",[-64,-64/2,128,128/2].join(" ")),g.style.setProperty("--stroke-width",`${f}px`),g.style.setProperty("--circle-meas",(2*Math.PI).toFixed(4));let _=t.find("g.lh-exp-gauge__outer",e),v=t.find("g.lh-exp-gauge__inner",e),y=t.find("circle.lh-cover",_),w=t.find("circle.lh-exp-gauge__arc",v),P=t.find("text.lh-exp-gauge__percentage",v);_.style.setProperty("--scale-initial",String(r/s)),_.style.setProperty("--radius",`${s}px`),y.style.setProperty("--radius",`${.5*(r+s)}px`),y.setAttribute("stroke-width",String(C)),g.style.setProperty("--radius",`${r}px`),w.setAttribute("stroke-dasharray",`${l()} ${(p-l()).toFixed(4)}`),w.setAttribute("stroke-dashoffset",String(.25*p-m)),P.textContent=Math.round(o*100).toString();let L=s+f,R=s-f,M=n.auditRefs.filter(E=>E.group==="metrics"&&E.weight),G=M.reduce((E,z)=>E+=z.weight,0),Z=.25*c-h-.5*C,K=-.5*Math.PI;_.querySelectorAll(".metric").forEach(E=>{M.map(V=>`metric--${V.id}`).find(V=>E.classList.contains(V))||E.remove()}),M.forEach((E,z)=>{let H=E.acronym??E.id,V=!_.querySelector(`.metric--${H}`),O=t.maybeFind(`g.metric--${H}`,_)||t.createSVGElement("g"),me=t.maybeFind(`.metric--${H} circle.lh-exp-gauge--faded`,_)||t.createSVGElement("circle"),we=t.maybeFind(`.metric--${H} circle.lh-exp-gauge--miniarc`,_)||t.createSVGElement("circle"),de=t.maybeFind(`.metric--${H} circle.lh-exp-gauge-hovertarget`,_)||t.createSVGElement("circle"),W=t.maybeFind(`.metric--${H} text.metric__label`,_)||t.createSVGElement("text"),Y=t.maybeFind(`.metric--${H} text.metric__value`,_)||t.createSVGElement("text");O.classList.add("metric",`metric--${H}`),me.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--faded"),we.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge--miniarc"),de.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget");let he=E.weight/G,Jt=d(he),Zt=E.result.score?E.result.score*he:0,Kt=d(Zt),ti=he*c,Xt=d(he,!0),Yt=A.calculateRating(E.result.score,E.result.scoreDisplayMode);O.style.setProperty("--metric-rating",Yt),O.style.setProperty("--metric-color",`var(--color-${Yt})`),O.style.setProperty("--metric-offset",`${Z}`),O.style.setProperty("--i",z.toString()),me.setAttribute("stroke-dasharray",`${Jt} ${c-Jt}`),we.style.setProperty("--metric-array",`${Kt} ${c-Kt}`),de.setAttribute("stroke-dasharray",`${Xt} ${c-Xt-h}`),W.classList.add("metric__label"),Y.classList.add("metric__value"),W.textContent=H,Y.textContent=`+${Math.round(Zt*100)}`;let Qt=K+he*Math.PI,xe=Math.cos(Qt),Se=Math.sin(Qt);switch(!0){case xe>0:Y.setAttribute("text-anchor","end");break;case xe<0:W.setAttribute("text-anchor","end");break;case xe===0:W.setAttribute("text-anchor","middle"),Y.setAttribute("text-anchor","middle");break}switch(!0){case Se>0:W.setAttribute("dominant-baseline","hanging");break;case Se<0:Y.setAttribute("dominant-baseline","hanging");break;case Se===0:W.setAttribute("dominant-baseline","middle"),Y.setAttribute("dominant-baseline","middle");break}W.setAttribute("x",(L*xe).toFixed(2)),W.setAttribute("y",(L*Se).toFixed(2)),Y.setAttribute("x",(R*xe).toFixed(2)),Y.setAttribute("y",(R*Se).toFixed(2)),V&&(O.appendChild(me),O.appendChild(we),O.appendChild(de),O.appendChild(W),O.appendChild(Y),_.appendChild(O)),Z-=ti,K+=he*2*Math.PI});let q=_.querySelector(".lh-exp-gauge-underhovertarget")||t.createSVGElement("circle");q.classList.add("lh-exp-gauge__arc","lh-exp-gauge__arc--metric","lh-exp-gauge-hovertarget","lh-exp-gauge-underhovertarget");let X=d(1,!0);if(q.setAttribute("stroke-dasharray",`${X} ${c-X-h}`),q.isConnected||_.prepend(q),g.dataset.listenersSetup)return;g.dataset.listenersSetup=!0,ei(g),g.addEventListener("pointerover",E=>{if(E.target===g&&g.classList.contains("state--expanded")){g.classList.remove("state--expanded"),g.classList.contains("state--highlight")&&(g.classList.remove("state--highlight"),t.find(".metric--highlight",g).classList.remove("metric--highlight"));return}if(!(E.target instanceof Element))return;let z=E.target.parentNode;if(z instanceof SVGElement){if(z&&z===v){g.classList.contains("state--expanded")?g.classList.contains("state--highlight")&&(g.classList.remove("state--highlight"),t.find(".metric--highlight",g).classList.remove("metric--highlight")):g.classList.add("state--expanded");return}if(z&&z.classList&&z.classList.contains("metric")){let H=z.style.getPropertyValue("--metric-rating");if(e.style.setProperty("--color-highlight",`var(--color-${H}-secondary)`),!g.classList.contains("state--highlight"))g.classList.add("state--highlight"),z.classList.add("metric--highlight");else{let V=t.find(".metric--highlight",g);z!==V&&(V.classList.remove("metric--highlight"),z.classList.add("metric--highlight"))}}}}),g.addEventListener("mouseleave",()=>{g.classList.remove("state--highlight"),g.querySelector(".metric--highlight")?.classList.remove("metric--highlight")});async function ei(E){if(await new Promise(W=>setTimeout(W,1e3)),E.classList.contains("state--expanded"))return;let z=t.find(".lh-exp-gauge__inner",E),H=`uniq-${Math.random()}`;z.setAttribute("id",H);let V=t.createSVGElement("use");V.setAttribute("href",`#${H}`),E.appendChild(V);let O=2.5;E.style.setProperty("--peek-dur",`${O}s`),E.classList.add("state--peek","state--expanded");let me=()=>{E.classList.remove("state--peek","state--expanded"),V.remove()},we=setTimeout(()=>{E.removeEventListener("mouseenter",de),me()},O*1e3*1.5);function de(){clearTimeout(we),me()}E.addEventListener("mouseenter",de,{once:!0})}}var Ea="__lh__insights_audits_toggle_state",mt=class extends se{_memoryInsightToggleState="DEFAULT";_renderMetric(e){let n=this.dom.createComponent("metric"),a=this.dom.find(".lh-metric",n);a.id=e.result.id;let i=A.calculateRating(e.result.score,e.result.scoreDisplayMode);a.classList.add(`lh-metric--${i}`);let o=this.dom.find(".lh-metric__title",n);o.textContent=e.result.title;let r=this.dom.find(".lh-metric__value",n);r.textContent=e.result.displayValue||"";let s=this.dom.find(".lh-metric__description",n);if(s.append(this.dom.convertMarkdownLinkSnippets(e.result.description)),e.result.scoreDisplayMode==="error"){s.textContent="",r.textContent="Error!";let p=this.dom.createChildOf(s,"span");p.textContent=e.result.errorMessage||"Report error: no metric information"}else e.result.scoreDisplayMode==="notApplicable"&&(r.textContent="--");return a}_getScoringCalculatorHref(e){let n=e.filter(d=>d.group==="metrics"),a=e.find(d=>d.id==="interactive"),i=e.find(d=>d.id==="first-cpu-idle"),o=e.find(d=>d.id==="first-meaningful-paint");a&&n.push(a),i&&n.push(i),o&&typeof o.result.score=="number"&&n.push(o);let r=d=>Math.round(d*100)/100,p=[...n.map(d=>{let m;return typeof d.result.numericValue=="number"?(m=d.id==="cumulative-layout-shift"?r(d.result.numericValue):Math.round(d.result.numericValue),m=m.toString()):m="null",[d.acronym||d.id,m]})];b.reportJson&&(p.push(["device",b.reportJson.configSettings.formFactor]),p.push(["version",b.reportJson.lighthouseVersion]));let c=new URLSearchParams(p),l=new URL("https://googlechrome.github.io/lighthouse/scorecalc/");return l.hash=c.toString(),l.href}overallImpact(e,n){if(!e.result.metricSavings)return{overallImpact:0,overallLinearImpact:0};let a=0,i=0;for(let[o,r]of Object.entries(e.result.metricSavings)){if(r===void 0)continue;let s=n.find(h=>h.acronym===o);if(!s||s.result.score===null)continue;let p=s.result.numericValue;if(!p)continue;let c=r/p*s.weight;i+=c;let l=s.result.scoringOptions;if(!l)continue;let m=(U.computeLogNormalScore(l,p-r)-s.result.score)*s.weight;a+=m}return{overallImpact:a,overallLinearImpact:i}}_persistInsightToggleToStorage(e){try{window.localStorage.setItem(Ea,e)}finally{this._memoryInsightToggleState=e}}_getInsightToggleState(){let e=this._getRawInsightToggleState();return e==="DEFAULT"&&(e="AUDITS"),e}_getRawInsightToggleState(){try{let e=window.localStorage.getItem(Ea);if(e==="AUDITS"||e==="INSIGHTS")return e}catch{return this._memoryInsightToggleState}return"DEFAULT"}_setInsightToggleButtonText(e){let n=this._getInsightToggleState();e.innerText=n==="AUDITS"?b.strings.tryInsights:b.strings.goBackToAudits}_renderInsightsToggle(e){let n=this.dom.createChildOf(e,"div","lh-perf-insights-toggle"),a=this.dom.createChildOf(n,"span","lh-perf-toggle-text"),i=this.dom.createElement("span","lh-perf-insights-icon insights-icon-url");a.appendChild(i),a.appendChild(this.dom.convertMarkdownLinkSnippets(b.strings.insightsNotice));let r=this.dom.createChildOf(n,"button","lh-button lh-button-insight-toggle");this._setInsightToggleButtonText(r),r.addEventListener("click",s=>{s.preventDefault();let p=this.dom.maybeFind(".lh-perf-audits--swappable");p&&this.dom.swapSectionIfPossible(p);let l=this._getInsightToggleState()==="AUDITS"?"INSIGHTS":"AUDITS";this.dom.fireEventOn("lh-analytics",this.dom.document(),{name:"toggle_insights",data:{newState:l}}),this._persistInsightToggleToStorage(l),this._setInsightToggleButtonText(r)}),n.appendChild(r)}render(e,n,a){let i=b.strings,o=this.dom.createElement("div","lh-category");o.id=e.id,o.append(this.renderCategoryHeader(e,n,a));let r=e.auditRefs.filter(h=>h.group==="metrics");if(r.length){let[h,f]=this.renderAuditGroup(n.metrics),C=this.dom.createElement("input","lh-metrics-toggle__input"),g=`lh-metrics-toggle${b.getUniqueSuffix()}`;C.setAttribute("aria-label","Toggle the display of metric descriptions"),C.type="checkbox",C.id=g,h.prepend(C);let _=this.dom.find(".lh-audit-group__header",h),v=this.dom.createChildOf(_,"label","lh-metrics-toggle__label");v.htmlFor=g;let y=this.dom.createChildOf(v,"span","lh-metrics-toggle__labeltext--show"),w=this.dom.createChildOf(v,"span","lh-metrics-toggle__labeltext--hide");y.textContent=b.strings.expandView,w.textContent=b.strings.collapseView;let P=this.dom.createElement("div","lh-metrics-container");if(h.insertBefore(P,f),r.forEach(L=>{P.append(this._renderMetric(L))}),o.querySelector(".lh-gauge__wrapper")){let L=this.dom.find(".lh-category-header__description",o),R=this.dom.createChildOf(L,"div","lh-metrics__disclaimer"),M=this.dom.convertMarkdownLinkSnippets(i.varianceDisclaimer);R.append(M);let G=this.dom.createChildOf(R,"a","lh-calclink");G.target="_blank",G.textContent=i.calculatorLink,this.dom.safelySetHref(G,this._getScoringCalculatorHref(e.auditRefs))}h.classList.add("lh-audit-group--metrics"),o.append(h)}let s=this.dom.createChildOf(o,"div","lh-filmstrip-container"),c=e.auditRefs.find(h=>h.id==="screenshot-thumbnails")?.result;if(c?.details){s.id=c.id;let h=this.detailsRenderer.render(c.details);h&&s.append(h)}this._renderInsightsToggle(o);let l=this.renderFilterableSection(e,n,["diagnostics"],r);l?.classList.add("lh-perf-audits--swappable","lh-perf-audits--legacy");let d=this.renderFilterableSection(e,n,["insights","diagnostics"],r);if(d?.classList.add("lh-perf-audits--swappable","lh-perf-audits--experimental"),l&&(o.append(l),d&&this.dom.registerSwappableSections(l,d)),this._getInsightToggleState()==="INSIGHTS"&&requestAnimationFrame(()=>{let h=this.dom.maybeFind(".lh-perf-audits--swappable");h&&this.dom.swapSectionIfPossible(h)}),this.dom.fireEventOn("lh-analytics",this.dom.document(),{name:"initial_insights_state",data:{state:this._getRawInsightToggleState()}}),(!a||a?.gatherMode==="navigation")&&e.score!==null){let h=Pa(this.dom);Aa(this.dom,h,e),this.dom.find(".lh-score__gauge",o).replaceWith(h)}return o}renderFilterableSection(e,n,a,i){if(a.some(v=>!n[v]))return null;let o=this.dom.createElement("div"),r=new Set,s=v=>v.id.endsWith("-insight")?"insights":v.group??"",p=e.auditRefs.filter(v=>a.includes(s(v)));for(let v of p)v.result.replacesAudits?.forEach(y=>{r.add(y)});let c=p.filter(v=>!r.has(v.id)).map(v=>{let{overallImpact:y,overallLinearImpact:w}=this.overallImpact(v,i),P=v.result.guidanceLevel||1,L=this.renderAudit(v);return{auditRef:v,auditEl:L,overallImpact:y,overallLinearImpact:w,guidanceLevel:P}}),l=c.filter(v=>!A.showAsPassed(v.auditRef.result)),d=c.filter(v=>A.showAsPassed(v.auditRef.result)),m={};for(let v of a){let y=this.renderAuditGroup(n[v]);y[0].classList.add(`lh-audit-group--${v}`),m[v]=y}function h(v){for(let y of c)if(v==="All")y.auditEl.hidden=!1;else{let w=y.auditRef.result.metricSavings?.[v]===void 0;y.auditEl.hidden=w}l.sort((y,w)=>{let P=y.auditRef.result.score||0,L=w.auditRef.result.score||0;if(P!==L)return P-L;if(v!=="All"){let R=y.auditRef.result.metricSavings?.[v]??-1,M=w.auditRef.result.metricSavings?.[v]??-1;if(R!==M)return M-R}return y.overallImpact!==w.overallImpact?w.overallImpact*w.guidanceLevel-y.overallImpact*y.guidanceLevel:y.overallImpact===0&&w.overallImpact===0&&y.overallLinearImpact!==w.overallLinearImpact?w.overallLinearImpact*w.guidanceLevel-y.overallLinearImpact*y.guidanceLevel:w.guidanceLevel-y.guidanceLevel});for(let y of l){if(!y.auditRef.group)continue;let w=m[s(y.auditRef)];if(!w)continue;let[P,L]=w;P.insertBefore(y.auditEl,L)}}let f=new Set;for(let v of l){let y=v.auditRef.result.metricSavings||{};for(let[w,P]of Object.entries(y))typeof P=="number"&&f.add(w)}let C=i.filter(v=>v.acronym&&f.has(v.acronym));C.length&&this.renderMetricAuditFilter(C,o,h),h("All");for(let v of a)if(l.some(y=>s(y.auditRef)===v)){let y=m[v];if(!y)continue;o.append(y[0])}if(!d.length)return o;let g={auditRefsOrEls:d.map(v=>v.auditEl),groupDefinitions:n},_=this.renderClump("passed",g);return o.append(_),o}renderMetricAuditFilter(e,n,a){let i=this.dom.createElement("div","lh-metricfilter"),o=this.dom.createChildOf(i,"span","lh-metricfilter__text");o.textContent=b.strings.showRelevantAudits;let r=[{acronym:"All",id:"All"},...e],s=b.getUniqueSuffix();for(let p of r){let c=`metric-${p.acronym}-${s}`,l=this.dom.createChildOf(i,"input","lh-metricfilter__radio");l.type="radio",l.name=`metricsfilter-${s}`,l.id=c;let d=this.dom.createChildOf(i,"label","lh-metricfilter__label");d.htmlFor=c,d.title="result"in p?p.result.title:"",d.textContent=p.acronym||p.id,p.acronym==="All"&&(l.checked=!0,d.classList.add("lh-metricfilter__label--active")),n.append(i),l.addEventListener("input",m=>{for(let f of n.querySelectorAll("label.lh-metricfilter__label"))f.classList.toggle("lh-metricfilter__label--active",f.htmlFor===c);n.classList.toggle("lh-category--filtered",p.acronym!=="All"),a(p.acronym||"All");let h=n.querySelectorAll("div.lh-audit-group, details.lh-audit-group");for(let f of h){f.hidden=!1;let C=Array.from(f.querySelectorAll("div.lh-audit")),g=!!C.length&&C.every(_=>_.hidden);f.hidden=g}})}}};var dt=class{constructor(e){this._dom=e,this._opts={}}renderReport(e,n,a){if(!this._dom.rootEl&&n){console.warn("Please adopt the new report API in renderer/api.js.");let o=n.closest(".lh-root");o?this._dom.rootEl=o:(n.classList.add("lh-root","lh-vars"),this._dom.rootEl=n)}else this._dom.rootEl&&n&&(this._dom.rootEl=n);a&&(this._opts=a),this._dom.setLighthouseChannel(e.configSettings.channel||"unknown");let i=A.prepareReportResult(e);return this._dom.rootEl.textContent="",this._dom.rootEl.append(this._renderReport(i)),this._opts.occupyEntireViewport&&this._dom.rootEl.classList.add("lh-max-viewport"),this._dom.rootEl}_renderReportTopbar(e){let n=this._dom.createComponent("topbar"),a=this._dom.find("a.lh-topbar__url",n);return a.textContent=e.finalDisplayedUrl,a.title=e.finalDisplayedUrl,this._dom.safelySetHref(a,e.finalDisplayedUrl),n}_renderReportHeader(){let e=this._dom.createComponent("heading"),n=this._dom.createComponent("scoresWrapper");return this._dom.find(".lh-scores-wrapper-placeholder",e).replaceWith(n),e}_renderReportFooter(e){let n=this._dom.createComponent("footer");return this._renderMetaBlock(e,n),this._dom.find(".lh-footer__version_issue",n).textContent=b.strings.footerIssue,this._dom.find(".lh-footer__version",n).textContent=e.lighthouseVersion,n}_renderMetaBlock(e,n){let a=A.getEmulationDescriptions(e.configSettings||{}),i=e.userAgent.match(/(\w*Chrome\/[\d.]+)/),o=Array.isArray(i)?i[1].replace("/"," ").replace("Chrome","Chromium"):"Chromium",r=e.configSettings.channel,s=e.environment.benchmarkIndex.toFixed(0),p=e.environment.credits?.["axe-core"],c=[`${b.strings.runtimeSettingsBenchmark}: ${s}`,`${b.strings.runtimeSettingsCPUThrottling}: ${a.cpuThrottling}`];a.screenEmulation&&c.push(`${b.strings.runtimeSettingsScreenEmulation}: ${a.screenEmulation}`),p&&c.push(`${b.strings.runtimeSettingsAxeVersion}: ${p}`);let l=b.strings.runtimeAnalysisWindow;e.gatherMode==="timespan"?l=b.strings.runtimeAnalysisWindowTimespan:e.gatherMode==="snapshot"&&(l=b.strings.runtimeAnalysisWindowSnapshot);let d=[["date",`Captured at ${b.i18n.formatDateTime(e.fetchTime)}`],["devices",`${a.deviceEmulation} with Lighthouse ${e.lighthouseVersion}`,c.join(`
2867
2875
  `)],["samples-one",b.strings.runtimeSingleLoad,b.strings.runtimeSingleLoadTooltip],["stopwatch",l],["networkspeed",`${a.summary}`,`${b.strings.runtimeSettingsNetworkThrottling}: ${a.networkThrottling}`],["chrome",`Using ${o}`+(r?` with ${r}`:""),`${b.strings.runtimeSettingsUANetwork}: "${e.environment.networkUserAgent}"`]],m=this._dom.find(".lh-meta__items",n);for(let[h,f,C]of d){let g=this._dom.createChildOf(m,"li","lh-meta__item");if(g.textContent=f,C){g.classList.add("lh-tooltip-boundary");let _=this._dom.createChildOf(g,"div","lh-tooltip");_.textContent=C}g.classList.add("lh-report-icon",`lh-report-icon--${h}`)}}_renderReportWarnings(e){if(!e.runWarnings||e.runWarnings.length===0)return this._dom.createElement("div");let n=this._dom.createComponent("warningsToplevel"),a=this._dom.find(".lh-warnings__msg",n);a.textContent=b.strings.toplevelWarningsMessage;let i=[];for(let o of e.runWarnings){let r=this._dom.createElement("li");r.append(this._dom.convertMarkdownLinkSnippets(o)),i.push(r)}return this._dom.find("ul",n).append(...i),n}_renderScoreGauges(e,n,a){let i=[],o=[];for(let r of Object.values(e.categories)){let p=(a[r.id]||n).renderCategoryScore(r,e.categoryGroups||{},{gatherMode:e.gatherMode}),c=this._dom.find("a.lh-gauge__wrapper, a.lh-fraction__wrapper",p);c&&(this._dom.safelySetHref(c,`#${r.id}`),c.addEventListener("click",l=>{if(!c.matches('[href^="#"]'))return;let d=c.getAttribute("href"),m=this._dom.rootEl;if(!d||!m)return;let h=this._dom.find(d,m);l.preventDefault(),h.scrollIntoView()}),this._opts.onPageAnchorRendered?.(c)),A.isPluginCategory(r.id)?o.push(p):i.push(p)}return[...i,...o]}_renderReport(e){b.apply({providedStrings:e.i18n.rendererFormattedStrings,i18n:new ce(e.configSettings.locale),reportJson:e});let n=new _e(this._dom,{fullPageScreenshot:e.fullPageScreenshot??void 0,entities:e.entities}),a=new se(this._dom,n),i={performance:new mt(this._dom,n)},o=this._dom.createElement("div");o.append(this._renderReportHeader());let r=this._dom.createElement("div","lh-container"),s=this._dom.createElement("div","lh-report");s.append(this._renderReportWarnings(e));let p;Object.keys(e.categories).length===1?o.classList.add("lh-header--solo-category"):p=this._dom.createElement("div","lh-scores-header");let l=this._dom.createElement("div");if(l.classList.add("lh-scorescale-wrap"),l.append(this._dom.createComponent("scorescale")),p){let f=this._dom.find(".lh-scores-container",o);p.append(...this._renderScoreGauges(e,a,i)),f.append(p,l);let C=this._dom.createElement("div","lh-sticky-header");C.append(...this._renderScoreGauges(e,a,i)),r.append(C)}let d=this._dom.createElement("div","lh-categories");s.append(d);let m={gatherMode:e.gatherMode};for(let f of Object.values(e.categories)){let C=i[f.id]||a;C.dom.createChildOf(d,"div","lh-category-wrapper").append(C.render(f,e.categoryGroups,m))}a.injectFinalScreenshot(d,e.audits,l);let h=this._dom.createFragment();return this._opts.omitGlobalStyles||h.append(this._dom.createComponent("styles")),this._opts.omitTopbar||h.append(this._renderReportTopbar(e)),h.append(r),s.append(this._renderReportFooter(e)),r.append(o,s),e.fullPageScreenshot&&le.installFullPageScreenshot(this._dom.rootEl,e.fullPageScreenshot.screenshot),h}};function Ce(t,e){let n=t.rootEl;typeof e>"u"?n.classList.toggle("lh-dark"):n.classList.toggle("lh-dark",e)}var zo=typeof btoa<"u"?btoa:t=>Buffer.from(t).toString("base64"),jo=typeof atob<"u"?atob:t=>Buffer.from(t,"base64").toString();async function Mo(t,e){let n=new TextEncoder().encode(t);if(e.gzip)if(typeof CompressionStream<"u"){let o=new CompressionStream("gzip"),r=o.writable.getWriter();r.write(n),r.close();let s=await new Response(o.readable).arrayBuffer();n=new Uint8Array(s)}else n=window.pako.gzip(t);let a="",i=5e3;for(let o=0;o<n.length;o+=i)a+=String.fromCharCode(...n.subarray(o,o+i));return zo(a)}function Ho(t,e){let n=jo(t),a=Uint8Array.from(n,i=>i.charCodeAt(0));return e.gzip?window.pako.ungzip(a,{to:"string"}):new TextDecoder().decode(a)}var La={toBase64:Mo,fromBase64:Ho};function Gt(){let t=window.location.host.endsWith(".vercel.app"),e=new URLSearchParams(window.location.search).has("dev");return t?`https://${window.location.host}/gh-pages`:e?"http://localhost:7333":"https://googlechrome.github.io/lighthouse"}function Vt(t){let e=t.generatedTime,n=t.fetchTime||e;return`${t.lighthouseVersion}-${t.finalDisplayedUrl}-${n}`}function Fo(t,e,n){let a=new URL(e).origin;window.addEventListener("message",function o(r){r.origin===a&&i&&r.data.opened&&(i.postMessage(t,a),window.removeEventListener("message",o))});let i=window.open(e,n)}async function Ta(t,e,n){let a=new URL(e),i=!!window.CompressionStream;a.hash=await La.toBase64(JSON.stringify(t),{gzip:i}),i&&a.searchParams.set("gzip","1"),window.open(a.toString(),n)}async function Ua(t){let e="viewer-"+Vt(t),n=Gt()+"/viewer/";await Ta({lhr:t},n,e)}async function Ia(t){let e="viewer-"+Vt(t),n=Gt()+"/viewer/";Fo({lhr:t},n,e)}function Ra(t){if(!t.audits["script-treemap-data"].details)throw new Error("no script treemap data found");let n={lhr:{mainDocumentUrl:t.mainDocumentUrl,finalUrl:t.finalUrl,finalDisplayedUrl:t.finalDisplayedUrl,audits:{"script-treemap-data":t.audits["script-treemap-data"]},configSettings:{locale:t.configSettings.locale}}},a=Gt()+"/treemap/",i="treemap-"+Vt(t);Ta(n,a,i)}var ht=class{constructor(e){this._dom=e,this._toggleEl,this._menuEl,this.onDocumentKeyDown=this.onDocumentKeyDown.bind(this),this.onToggleClick=this.onToggleClick.bind(this),this.onToggleKeydown=this.onToggleKeydown.bind(this),this.onMenuFocusOut=this.onMenuFocusOut.bind(this),this.onMenuKeydown=this.onMenuKeydown.bind(this),this._getNextMenuItem=this._getNextMenuItem.bind(this),this._getNextSelectableNode=this._getNextSelectableNode.bind(this),this._getPreviousMenuItem=this._getPreviousMenuItem.bind(this)}setup(e){this._toggleEl=this._dom.find(".lh-topbar button.lh-tools__button",this._dom.rootEl),this._toggleEl.addEventListener("click",this.onToggleClick),this._toggleEl.addEventListener("keydown",this.onToggleKeydown),this._menuEl=this._dom.find(".lh-topbar div.lh-tools__dropdown",this._dom.rootEl),this._menuEl.addEventListener("keydown",this.onMenuKeydown),this._menuEl.addEventListener("click",e)}close(){this._toggleEl.classList.remove("lh-active"),this._toggleEl.setAttribute("aria-expanded","false"),this._menuEl.contains(this._dom.document().activeElement)&&this._toggleEl.focus(),this._menuEl.removeEventListener("focusout",this.onMenuFocusOut),this._dom.document().removeEventListener("keydown",this.onDocumentKeyDown)}open(e){this._toggleEl.classList.contains("lh-active")?e.focus():this._menuEl.addEventListener("transitionend",()=>{e.focus()},{once:!0}),this._toggleEl.classList.add("lh-active"),this._toggleEl.setAttribute("aria-expanded","true"),this._menuEl.addEventListener("focusout",this.onMenuFocusOut),this._dom.document().addEventListener("keydown",this.onDocumentKeyDown)}onToggleClick(e){e.preventDefault(),e.stopImmediatePropagation(),this._toggleEl.classList.contains("lh-active")?this.close():this.open(this._getNextMenuItem())}onToggleKeydown(e){switch(e.code){case"ArrowUp":e.preventDefault(),this.open(this._getPreviousMenuItem());break;case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.open(this._getNextMenuItem());break;default:}}onMenuKeydown(e){let n=e.target;switch(e.code){case"ArrowUp":e.preventDefault(),this._getPreviousMenuItem(n).focus();break;case"ArrowDown":e.preventDefault(),this._getNextMenuItem(n).focus();break;case"Home":e.preventDefault(),this._getNextMenuItem().focus();break;case"End":e.preventDefault(),this._getPreviousMenuItem().focus();break;default:}}onDocumentKeyDown(e){e.keyCode===27&&this.close()}onMenuFocusOut(e){let n=e.relatedTarget;this._menuEl.contains(n)||this.close()}_getNextSelectableNode(e,n){let a=e.filter(o=>o instanceof HTMLElement).filter(o=>!(o.hasAttribute("disabled")||window.getComputedStyle(o).display==="none")),i=n?a.indexOf(n)+1:0;return i>=a.length&&(i=0),a[i]}_getNextMenuItem(e){let n=Array.from(this._menuEl.childNodes);return this._getNextSelectableNode(n,e)}_getPreviousMenuItem(e){let n=Array.from(this._menuEl.childNodes).reverse();return this._getNextSelectableNode(n,e)}};var gt=class{constructor(e,n){this.lhr,this._reportUIFeatures=e,this._dom=n,this._dropDownMenu=new ht(this._dom),this._copyAttempt=!1,this.topbarEl,this.categoriesEl,this.stickyHeaderEl,this.highlightEl,this.onDropDownMenuClick=this.onDropDownMenuClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onCopy=this.onCopy.bind(this),this.collapseAllDetails=this.collapseAllDetails.bind(this)}enable(e){this.lhr=e,this._dom.rootEl.addEventListener("keyup",this.onKeyUp),this._dom.document().addEventListener("copy",this.onCopy),this._dropDownMenu.setup(this.onDropDownMenuClick),this._setUpCollapseDetailsAfterPrinting(),this._dom.find(".lh-topbar__logo",this._dom.rootEl).addEventListener("click",()=>Ce(this._dom)),this._setupStickyHeader()}onDropDownMenuClick(e){e.preventDefault();let n=e.target;if(!(!n||!n.hasAttribute("data-action"))){switch(n.getAttribute("data-action")){case"copy":this.onCopyButtonClick();break;case"print-summary":this.collapseAllDetails(),this._print();break;case"print-expanded":this.expandAllDetails(),this._print();break;case"save-json":{let a=JSON.stringify(this.lhr,null,2);this._reportUIFeatures._saveFile(new Blob([a],{type:"application/json"}));break}case"save-html":{let a=this._reportUIFeatures.getReportHtml();try{this._reportUIFeatures._saveFile(new Blob([a],{type:"text/html"}))}catch(i){this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"error",msg:"Could not export as HTML. "+i.message})}break}case"open-viewer":{this._dom.isDevTools()?Ua(this.lhr):Ia(this.lhr);break}case"save-gist":{this._reportUIFeatures.saveAsGist();break}case"toggle-dark":{Ce(this._dom);break}case"view-unthrottled-trace":this._reportUIFeatures._opts.onViewTrace?.()}this._dropDownMenu.close()}}onCopy(e){this._copyAttempt&&e.clipboardData&&(e.preventDefault(),e.clipboardData.setData("text/plain",JSON.stringify(this.lhr,null,2)),this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:"Report JSON copied to clipboard"})),this._copyAttempt=!1}onCopyButtonClick(){this._dom.fireEventOn("lh-analytics",this._dom.document(),{name:"copy"});try{this._dom.document().queryCommandSupported("copy")&&(this._copyAttempt=!0,this._dom.document().execCommand("copy")||(this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"warn",msg:"Your browser does not support copy to clipboard."})))}catch(e){this._copyAttempt=!1,this._dom.fireEventOn("lh-log",this._dom.document(),{cmd:"log",msg:e.message})}}onKeyUp(e){(e.ctrlKey||e.metaKey)&&e.keyCode===80&&this._dropDownMenu.close()}expandAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!0)}collapseAllDetails(){this._dom.findAll(".lh-categories details",this._dom.rootEl).map(n=>n.open=!1)}_print(){this._reportUIFeatures._opts.onPrintOverride?this._reportUIFeatures._opts.onPrintOverride(this._dom.rootEl):self.print()}resetUIState(){this._dropDownMenu.close()}_getScrollParent(e){let{overflowY:n}=window.getComputedStyle(e);return n!=="visible"&&n!=="hidden"?e:e.parentElement?this._getScrollParent(e.parentElement):document}_setUpCollapseDetailsAfterPrinting(){"onbeforeprint"in self?self.addEventListener("afterprint",this.collapseAllDetails):self.matchMedia("print").addListener(n=>{n.matches?this.expandAllDetails():this.collapseAllDetails()})}_setupStickyHeader(){this.topbarEl=this._dom.find("div.lh-topbar",this._dom.rootEl),this.categoriesEl=this._dom.find("div.lh-categories",this._dom.rootEl),window.requestAnimationFrame(()=>window.requestAnimationFrame(()=>{try{this.stickyHeaderEl=this._dom.find("div.lh-sticky-header",this._dom.rootEl)}catch{return}this.highlightEl=this._dom.createChildOf(this.stickyHeaderEl,"div","lh-highlighter");let e=this._getScrollParent(this._dom.find(".lh-container",this._dom.rootEl));e.addEventListener("scroll",()=>this._updateStickyHeader());let n=e instanceof window.Document?document.documentElement:e;new window.ResizeObserver(()=>this._updateStickyHeader()).observe(n)}))}_updateStickyHeader(){if(!this.stickyHeaderEl)return;let e=this.topbarEl.getBoundingClientRect().bottom,n=this.categoriesEl.getBoundingClientRect().top,a=e>=n,o=Array.from(this._dom.rootEl.querySelectorAll(".lh-category")).filter(d=>d.getBoundingClientRect().top-window.innerHeight/2<0),r=o.length>0?o.length-1:0,s=this.stickyHeaderEl.querySelectorAll(".lh-gauge__wrapper, .lh-fraction__wrapper"),p=s[r],c=s[0].getBoundingClientRect().left,l=p.getBoundingClientRect().left-c;this.highlightEl.style.transform=`translate(${l}px)`,this.stickyHeaderEl.classList.toggle("lh-sticky-header--visible",a)}};function Na(t,e){let n=e?new Date(e):new Date,a=n.toLocaleTimeString("en-US",{hour12:!1}),i=n.toLocaleDateString("en-US",{year:"numeric",month:"2-digit",day:"2-digit"}).split("/");i.unshift(i.pop());let o=i.join("-");return`${t}_${o}_${a}`.replace(/[/?<>\\:*|"]/g,"-")}function Da(t){let e=new URL(t.finalDisplayedUrl).hostname;return Na(e,t.fetchTime)}function za(t){let e=t.steps[0].lhr,n=t.name.replace(/\s/g,"-");return Na(n,e.fetchTime)}function Oo(t){return Array.from(t.tBodies[0].rows)}var ft=class{constructor(e,n={}){this.json,this._dom=e,this._opts=n,this._topbar=n.omitTopbar?null:new gt(this,e),this.onMediaQueryChange=this.onMediaQueryChange.bind(this)}initFeatures(e){this.json=e,this._fullPageScreenshot=U.getFullPageScreenshot(e),this._topbar&&(this._topbar.enable(e),this._topbar.resetUIState()),this._setupMediaQueryListeners(),this._setupThirdPartyFilter(),this._setupElementScreenshotOverlay(this._dom.rootEl);let n=this._dom.isDevTools()||this._opts.disableDarkMode||this._opts.disableAutoDarkModeAndFireworks;!n&&window.matchMedia("(prefers-color-scheme: dark)").matches&&Ce(this._dom,!0);let i=["performance","accessibility","best-practices","seo"].every(p=>{let c=e.categories[p];return c&&c.score===1}),o=this._opts.disableFireworks||this._opts.disableAutoDarkModeAndFireworks;if(i&&!o&&(this._enableFireworks(),n||Ce(this._dom,!0)),e.categories.performance&&e.categories.performance.auditRefs.some(p=>!!(p.group==="metrics"&&e.audits[p.id].errorMessage))){let p=this._dom.find("input.lh-metrics-toggle__input",this._dom.rootEl);p.checked=!0}this.json.audits["script-treemap-data"]&&this.json.audits["script-treemap-data"].details&&this.addButton({text:b.strings.viewTreemapLabel,icon:"treemap",onClick:()=>Ra(this.json)}),this._opts.onViewTrace&&(e.configSettings.throttlingMethod==="simulate"?this._dom.find('a[data-action="view-unthrottled-trace"]',this._dom.rootEl).classList.remove("lh-hidden"):this.addButton({text:b.strings.viewTraceLabel,onClick:()=>this._opts.onViewTrace?.()})),this._opts.getStandaloneReportHTML&&this._dom.find('a[data-action="save-html"]',this._dom.rootEl).classList.remove("lh-hidden");for(let p of this._dom.findAll("[data-i18n]",this._dom.rootEl)){let l=p.getAttribute("data-i18n");p.textContent=b.strings[l]}}addButton(e){let n=this._dom.rootEl.querySelector(".lh-audit-group--metrics");if(!n)return;let a=n.querySelector(".lh-buttons");a||(a=this._dom.createChildOf(n,"div","lh-buttons"));let i=["lh-button"];e.icon&&(i.push("lh-report-icon"),i.push(`lh-report-icon--${e.icon}`));let o=this._dom.createChildOf(a,"button",i.join(" "));return o.textContent=e.text,o.addEventListener("click",e.onClick),o}resetUIState(){this._topbar&&this._topbar.resetUIState()}getReportHtml(){if(!this._opts.getStandaloneReportHTML)throw new Error("`getStandaloneReportHTML` is not set");return this.resetUIState(),this._opts.getStandaloneReportHTML()}saveAsGist(){throw new Error("Cannot save as gist from base report")}_enableFireworks(){this._dom.find(".lh-scores-container",this._dom.rootEl).classList.add("lh-score100")}_setupMediaQueryListeners(){let e=self.matchMedia("(max-width: 500px)");e.addListener(this.onMediaQueryChange),this.onMediaQueryChange(e)}_resetUIState(){this._topbar&&this._topbar.resetUIState()}onMediaQueryChange(e){this._dom.rootEl.classList.toggle("lh-narrow",e.matches)}_setupThirdPartyFilter(){let e=["uses-rel-preconnect","third-party-facades"],n=["legacy-javascript"];Array.from(this._dom.rootEl.querySelectorAll("table.lh-table")).filter(o=>o.querySelector("td.lh-table-column--url, td.lh-table-column--source-location")).filter(o=>{let r=o.closest(".lh-audit");if(!r)throw new Error(".lh-table not within audit");return!e.includes(r.id)}).forEach(o=>{let r=Oo(o),s=r.filter(g=>!g.classList.contains("lh-sub-item-row")),p=this._getThirdPartyRows(s,U.getFinalDisplayedUrl(this.json)),c=r.some(g=>g.classList.contains("lh-row--even")),l=this._dom.createComponent("3pFilter"),d=this._dom.find("input",l);d.addEventListener("change",g=>{let _=g.target instanceof HTMLInputElement&&!g.target.checked,v=!0,y=s[0];for(;y;){let w=_&&p.includes(y);do y.classList.toggle("lh-row--hidden",w),c&&(y.classList.toggle("lh-row--even",!w&&v),y.classList.toggle("lh-row--odd",!w&&!v)),y=y.nextElementSibling;while(y&&y.classList.contains("lh-sub-item-row"));w||(v=!v)}});let m=p.filter(g=>!g.classList.contains("lh-row--group")).length;this._dom.find(".lh-3p-filter-count",l).textContent=`${m}`,this._dom.find(".lh-3p-ui-string",l).textContent=b.strings.thirdPartyResourcesLabel;let h=p.length===s.length,f=!p.length;if((h||f)&&(this._dom.find("div.lh-3p-filter",l).hidden=!0),!o.parentNode)return;o.parentNode.insertBefore(l,o);let C=o.closest(".lh-audit");if(!C)throw new Error(".lh-table not within audit");n.includes(C.id)&&!h&&d.click()})}_setupElementScreenshotOverlay(e){this._fullPageScreenshot&&le.installOverlayFeature({dom:this._dom,rootEl:e,overlayContainerEl:e,fullPageScreenshot:this._fullPageScreenshot})}_getThirdPartyRows(e,n){let a=U.getEntityFromUrl(n,this.json.entities),i=this.json.entities?.find(r=>r.isFirstParty===!0)?.name,o=[];for(let r of e){if(i){if(!r.dataset.entity||r.dataset.entity===i)continue}else{let s=r.querySelector("div.lh-text__url");if(!s)continue;let p=s.dataset.url;if(!p||!(U.getEntityFromUrl(p,this.json.entities)!==a))continue}o.push(r)}return o}_saveFile(e){let n=e.type.match("json")?".json":".html",a=Da({finalDisplayedUrl:U.getFinalDisplayedUrl(this.json),fetchTime:this.json.fetchTime})+n;this._opts.onSaveFileOverride?this._opts.onSaveFileOverride(e,a):this._dom.saveFile(e,a)}};function ja(t,e={}){let n=document.createElement("article");n.classList.add("lh-root","lh-vars");let a=new re(n.ownerDocument,n);return new dt(a).renderReport(t,n,e),new ft(a,e).initFeatures(t),n}function Ma(t,e){let n=new re(document,document.documentElement),a=new _e(n);return new se(n,a).renderCategoryScore(t,{},e)}function Ha(t,e){new re(document,document.documentElement).saveFile(t,e)}function Fa(t){return new re(document,document.documentElement).convertMarkdownCodeSnippets(t)}function Oa(){return new re(document,document.documentElement).createComponent("styles")}var Ba=({category:t,href:e,gatherMode:n})=>{let a=ie(()=>Ma(t,{gatherMode:n,omitLabel:!0,onPageAnchorRendered:i=>i.href=e}),[t,e]);return u("div",{ref:a,"data-testid":"CategoryScore"})};var Ga=({text:t})=>{let e=ie(()=>Fa(t),[t]);return u("span",{ref:e})};var Bo=2;function Go(t,e){switch(t){case"navigation":return e.navigationReport;case"timespan":return e.timespanReport;case"snapshot":return e.snapshotReport}}function Vo(t,e){switch(t){case"pass":return e.ratingPass;case"average":return e.ratingAverage;case"fail":return e.ratingFail;case"error":return e.ratingError}}function Va(t){return t.weight*(1-t.result.score)}var $o=({audit:t})=>{let e=A.calculateRating(t.result.score,t.result.scoreDisplayMode);return u("div",{className:`SummaryTooltipAudit SummaryTooltipAudit--${e}`,children:u(Ga,{text:t.result.title})})},qo=({category:t})=>{let e=D();function n(i){return i.result.score!==null&&i.group!=="metrics"&&i.group!=="hidden"&&(i.weight>0||i.group==="diagnostics")&&!A.showAsPassed(i.result)}let a=t.auditRefs.filter(n).sort((i,o)=>{let r=Va(i),s=Va(o);if(r!==s)return s-r;if(i.result.score!==o.result.score)return i.result.score-o.result.score;let p=i.result.metricSavings?.LCP||0;return(o.result.metricSavings?.LCP||0)-p}).splice(0,Bo);return a.length?u("div",{className:"SummaryTooltipAudits",children:[u("div",{className:"SummaryTooltipAudits__title",children:e.highestImpact}),a.map(i=>u($o,{audit:i},i.id))]}):null},Wo=({category:t,gatherMode:e,url:n})=>{let a=D(),i=ct(),{numPassed:o,numPassableAudits:r,numInformative:s,totalWeight:p}=A.calculateCategoryFraction(t),c=Ne(),l=A.shouldDisplayAsFraction(e),d=l?o/r:t.score,m=d===null?"error":A.calculateRating(d);return u("div",{className:"SummaryTooltip",children:[u("div",{className:"SummaryTooltip__title",children:Go(e,a)}),u("div",{className:"SummaryTooltip__url",children:n}),u($,{}),u("div",{className:"SummaryTooltip__category",children:[u("div",{className:"SummaryTooltip__category-title",children:t.title}),p!==0&&u("div",{className:`SummaryTooltip__rating SummaryTooltip__rating--${m}`,children:[u("span",{children:Vo(m,a)}),!l&&t.score!==null&&u(N,{children:[u("span",{children:" · "}),u("span",{children:c.formatter.formatInteger(t.score*100)})]})]})]}),u("div",{className:"SummaryTooltip__fraction",children:[u("span",{children:i(a.passedAuditCount,{numPassed:o})}),u("span",{children:" / "}),u("span",{children:i(a.passableAuditCount,{numPassableAudits:r})})]}),s!==0&&u("div",{className:"SummaryTooltip__informative",children:i(a.informativeAuditCount,{numInformative:s})}),u(qo,{category:t})]})},$a=({category:t,href:e,gatherMode:n,finalDisplayedUrl:a})=>u("div",{className:"SummaryCategory",children:t?u("div",{className:"SummaryCategory__content",children:[u(Ba,{category:t,href:e,gatherMode:n}),u(Wo,{category:t,gatherMode:n,url:a})]}):u("div",{className:"SummaryCategory__null","data-testid":"SummaryCategory__null"})});var Jo=["performance","accessibility","best-practices","seo"],Zo=40,Ko=({lhr:t})=>{let e=D();return u("div",{className:"SummaryNavigationHeader","data-testid":"SummaryNavigationHeader",children:[u(oe,{}),u("div",{className:"SummaryNavigationHeader__url",children:u("a",{rel:"noopener",target:"_blank",href:t.finalDisplayedUrl,children:t.finalDisplayedUrl})}),u("div",{className:"SummaryNavigationHeader__category",children:e.categoryPerformance}),u("div",{className:"SummaryNavigationHeader__category",children:e.categoryAccessibility}),u("div",{className:"SummaryNavigationHeader__category",children:e.categoryBestPractices}),u("div",{className:"SummaryNavigationHeader__category",children:e.categorySeo})]})},Xo=({lhr:t,label:e,hashIndex:n})=>{let a=Q(()=>A.prepareReportResult(t),[t]),i=D(),o=Ye(t.gatherMode,i);return u("div",{className:"SummaryFlowStep",children:[t.gatherMode==="navigation"||n===0?u(Ko,{lhr:t}):u("div",{className:"SummaryFlowStep__separator",children:[u(oe,{}),u($,{})]}),u(Qe,{lhr:t,width:Zo}),u(oe,{mode:t.gatherMode}),u("div",{className:"SummaryFlowStep__label",children:[u("div",{className:"SummaryFlowStep__mode",children:o}),u("a",{className:"SummaryFlowStep__link",href:`#index=${n}`,children:e})]}),Jo.map(r=>u($a,{category:a.categories[r],href:`#index=${n}&anchor=${r}`,gatherMode:t.gatherMode,finalDisplayedUrl:t.finalDisplayedUrl},r))]})},Yo=()=>{let t=B();return u("div",{className:"SummaryFlow",children:t.steps.map((e,n)=>u(Xo,{lhr:e.lhr,label:e.name,hashIndex:n},e.lhr.fetchTime))})},Qo=()=>{let t=B(),e=D(),n=ct(),a=0,i=0,o=0;for(let p of t.steps)switch(p.lhr.gatherMode){case"navigation":a++;break;case"timespan":i++;break;case"snapshot":o++;break}let r=[];a&&r.push(n(e.navigationReportCount,{numNavigation:a})),i&&r.push(n(e.timespanReportCount,{numTimespan:i})),o&&r.push(n(e.snapshotReportCount,{numSnapshot:o}));let s=r.join(" · ");return u("div",{className:"SummaryHeader",children:[u("div",{className:"SummaryHeader__title",children:e.summary}),u("div",{className:"SummaryHeader__subtitle",children:s})]})},er=({children:t})=>u("div",{className:"SummarySectionHeader",children:[u("div",{className:"SummarySectionHeader__content",children:t}),u($,{})]}),qa=()=>{let t=D();return u("div",{className:"Summary","data-testid":"Summary",children:[u(Qo,{}),u($,{}),u(er,{children:t.allReports}),u(Yo,{})]})};function tr(t,e){let n=t.cloneNode(!0);if(!n.hash)return n;let a=t.hash.substr(1);n.hash=`#index=${e}&anchor=${a}`,n.onclick=i=>{i.preventDefault();let o=document.getElementById(a);o&&o.scrollIntoView()},t.replaceWith(n)}var Wa=({hashState:t})=>{let e=ie(()=>ja(t.currentLhr,{disableFireworks:!0,disableDarkMode:!0,omitTopbar:!0,omitGlobalStyles:!0,onPageAnchorRendered:n=>tr(n,t.index)}),[t]);return u("div",{ref:e,"data-testid":"Report"})};var $t=t=>{let e=D();return u("div",{className:"HelpDialogColumn",children:[u("div",{className:"HelpDialogColumn__legend",children:[u("div",{className:"HelpDialogColumnTimeline",children:[t.icon,u("div",{className:"HelpDialogColumnTimeline__line"})]}),u("div",{className:"HelpDialogColumn__legend-label",children:t.userFriendlyModeLabel})]}),u("div",{className:"HelpDialogColumn__header",children:[u("div",{className:"HelpDialogColumn__header-title",children:t.lighthouseOfficialModeLabel}),u("p",{children:t.modeDescription})]}),u("div",{className:"HelpDialogColumn__use-cases",children:[u("p",{children:t.useCaseInstruction}),u("ul",{children:t.useCases.map((n,a)=>u("li",{children:n},a))})]}),u("div",{className:"HelpDialogColumn__categories",children:[u("p",{children:e.categories}),u("ul",{children:t.availableCategories.map((n,a)=>u("li",{children:n},a))})]})]})},Ja=({onClose:t})=>{let e=D();return u("div",{className:"HelpDialog",children:[u("div",{className:"HelpDialog__title",children:[u("div",{children:e.helpDialogTitle}),u("div",{style:{flexGrow:1}}),u("button",{className:"HelpDialog__close",onClick:t,children:u(Rn,{})})]}),u("div",{className:"HelpDialog__columns",children:[u($t,{icon:u(Ze,{}),userFriendlyModeLabel:e.navigationDescription,lighthouseOfficialModeLabel:e.navigationReport,modeDescription:e.navigationLongDescription,useCaseInstruction:e.helpUseCaseInstructionNavigation,useCases:[e.helpUseCaseNavigation1,e.helpUseCaseNavigation2,e.helpUseCaseNavigation3],availableCategories:[e.categoryPerformance,e.categoryAccessibility,e.categoryBestPractices,e.categorySeo]}),u($t,{icon:u(Ke,{}),userFriendlyModeLabel:e.timespanDescription,lighthouseOfficialModeLabel:e.timespanReport,modeDescription:e.timespanLongDescription,useCaseInstruction:e.helpUseCaseInstructionTimespan,useCases:[e.helpUseCaseTimespan1,e.helpUseCaseTimespan2],availableCategories:[e.categoryPerformance,e.categoryBestPractices]}),u($t,{icon:u(Xe,{}),userFriendlyModeLabel:e.snapshotDescription,lighthouseOfficialModeLabel:e.snapshotReport,modeDescription:e.snapshotLongDescription,useCaseInstruction:e.helpUseCaseInstructionSnapshot,useCases:[e.helpUseCaseSnapshot1,e.helpUseCaseSnapshot2],availableCategories:[e.categoryPerformance,e.categoryAccessibility,e.categoryBestPractices,e.categorySeo]})]})]})};function qt(t,e){let n=new Blob([e],{type:"text/html"}),a=za(t)+".html";qt.saveFile(n,a)}qt.saveFile=Ha;var nr=()=>u("svg",{role:"img",class:"lh-topbar__logo",title:"Lighthouse logo",width:"24",height:"24",fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",children:[u("path",{d:"m14 7 10-7 10 7v10h5v7h-5l5 24H9l5-24H9v-7h5V7Z",fill:"#F63"}),u("path",{d:"M31.561 24H14l-1.689 8.105L31.561 24ZM18.983 48H9l1.022-4.907L35.723 32.27l1.663 7.98L18.983 48Z",fill:"#FFA385"}),u("path",{fill:"#FF3",d:"M20.5 10h7v7h-7z"})]}),vt=({onClick:t,label:e,children:n})=>u("button",{className:"TopbarButton",onClick:t,"aria-label":e,children:n}),Za=({onMenuClick:t})=>{let e=B(),n=D(),[a,i]=ae(!1),{getReportHtml:o,saveAsGist:r}=Bn();return u("div",{className:"Topbar",children:[u(vt,{onClick:t,label:"Button that opens and closes the sidebar",children:u(jn,{})}),u("div",{className:"Topbar__logo",children:u(nr,{})}),u("div",{className:"Topbar__title",children:n.title}),o&&u(vt,{onClick:()=>{let s=o(e);qt(e,s)},label:"Button that saves the report as HTML",children:n.save}),r&&u(vt,{onClick:()=>r(e),label:"Button that saves the report to a gist",children:n.dropdownSaveGist}),u("div",{style:{flexGrow:1}}),u(vt,{onClick:()=>i(s=>!s),label:"Button that toggles the help dialog",children:u("div",{className:"Topbar__help-label",children:[u(Mn,{}),n.helpLabel]})}),a?u(Ja,{onClose:()=>i(!1)}):null]})};var ar=80,ir=120,Wt=({lhr:t,position:e})=>{let n=e==="main"?ir:ar;return u("div",{className:`HeaderThumbnail HeaderThumbnail--${e}`,children:[u(Qe,{lhr:t,height:n}),u("div",{className:"HeaderThumbnail__icon",children:u(kt,{mode:t.gatherMode})})]})},Ka=({hashState:t})=>{let e=B(),{index:n}=t,a=e.steps[n],i=e.steps[n-1],o=e.steps[n+1],r=D(),s=Ye(a.lhr.gatherMode,r);return u("div",{className:"Header",children:[i&&u(N,{children:[e.steps[n-2]&&u("div",{className:"Header__segment"}),u("div",{className:"Header__prev-thumbnail",children:[u(Wt,{lhr:i.lhr,position:"prev"}),u("div",{className:"Header__segment"})]}),u("a",{className:"Header__prev-title",href:`#index=${n-1}`,children:i.name})]}),u("div",{className:"Header__current-thumbnail",children:u(Wt,{lhr:a.lhr,position:"main"})}),u("div",{className:"Header__current-title",children:[a.name,u("div",{className:"Header__current-description",children:s})]}),o&&u(N,{children:[u("div",{className:"Header__next-thumbnail",children:[u("div",{className:"Header__segment"}),u(Wt,{lhr:o.lhr,position:"next"})]}),u("a",{className:"Header__next-title",href:`#index=${n+1}`,children:o.name}),e.steps[n+2]&&u("div",{className:"Header__segment"})]})]})};var Xa=()=>{let t=ie(Oa);return u("div",{ref:t})};function or(t){return!t||!t.anchor?null:document.getElementById(t.anchor)}var rr=()=>{let t=be(),e=We(null);return qe(()=>{let n=or(t);n?n.scrollIntoView():e.current&&(e.current.scrollTop=0)},[t]),u("div",{ref:e,className:"Content",children:t?u(N,{children:[u(Ka,{hashState:t}),u(Wa,{hashState:t})]}):u(qa,{})})},Ya=({flowResult:t,options:e})=>{let[n,a]=ae(!1),i=Q(()=>e||{},[e]);return u(St.Provider,{value:i,children:u(xt.Provider,{value:t,children:u(Ca,{children:[u(Xa,{}),u("div",{className:ve("App",{"App--collapsed":n}),"data-testid":"App",children:[u(Za,{onMenuClick:()=>a(o=>!o)}),u(xa,{}),u(rr,{})]})]})})})};function Qa(t,e,n){e.classList.add("flow-vars","lh-vars","lh-root"),vn(yt(Ya,{flowResult:t,options:n}),e)}function sr(){let t=document.body.querySelector("main");if(!t)throw Error("Container element not found");Qa(window.__LIGHTHOUSE_FLOW_JSON__,t,{getReportHtml:()=>document.documentElement.outerHTML})}window.__initLighthouseFlowReport__=sr;window.__initLighthouseFlowReport__();})();
2868
2876
  /**
2869
2877
  * @license