1var e=`modulepreload`,t=function(e){return`/`+e},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};(function(){let e=document.querySelector(`[data-blog-grid]`);if(!e)return;let t=document.querySelector(`[data-blog-pagination]`),n=document.querySelector(`[data-blog-load-sentinel]`),r=document.querySelector(`[data-blog-load-status]`),i=Number(e.dataset.maxPages||`1`),a=e.dataset.restUrl,o=e.dataset.pageId,s=Number(e.dataset.currentPage||`1`),c=!1,l;if(!a||!n||i<=s||!(`IntersectionObserver`in window))return;t&&(t.hidden=!0);let u=e=>{r&&(r.innerHTML=e,r.classList.toggle(`hidden`,!e))},d=async()=>{if(!(c||s>=i)){c=!0,u(` 2 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 50" class="h-5 stroke-primary fill-primary mx-auto"><circle stroke-width="15" r="15" cx="35" cy="25"><animate attributeName="cx" calcMode="spline" dur="2" values="35;165;165;35;35" keySplines="0 .1 .5 1;0 .1 .5 1;0 .1 .5 1;0 .1 .5 1" repeatCount="indefinite" begin="0"></animate></circle><circle stroke-width="15" opacity=".8" r="15" cx="35" cy="25"><animate attributeName="cx" calcMode="spline" dur="2" values="35;165;165;35;35" keySplines="0 .1 .5 1;0 .1 .5 1;0 .1 .5 1;0 .1 .5 1" repeatCount="indefinite" begin="0.05"></animate></circle><circle stroke-width="15" opacity=".6" r="15" cx="35" cy="25"><animate attributeName="cx" calcMode="spline" dur="2" values="35;165;165;35;35" keySplines="0 .1 .5 1;0 .1 .5 1;0 .1 .5 1;0 .1 .5 1" repeatCount="indefinite" begin=".1"></animate></circle><circle stroke-width="15" opacity=".4" r="15" cx="35" cy="25"><animate attributeName="cx" calcMode="spline" dur="2" values="35;165;165;35;35" keySplines="0 .1 .5 1;0 .1 .5 1;0 .1 .5 1;0 .1 .5 1" repeatCount="indefinite" begin=".15"></animate></circle><circle stroke-width="15" opacity=".2" r="15" cx="35" cy="25"><animate attributeName="cx" calcMode="spline" dur="2" values="35;165;165;35;35" keySplines="0 .1 .5 1;0 .1 .5 1;0 .1 .5 1;0 .1 .5 1" repeatCount="indefinite" begin=".2"></animate></circle></svg> 3 <div class='mt-2'>Loading More Posts...</div> 4 `);try{let t=new URLSearchParams({paged:String(s+1),page_id:o}),n=await fetch(`${a}?${t}`,{method:`GET`,credentials:`same-origin`});if(!n.ok)throw Error(`Failed to fetch next page`);let r=await n.json(),c=r?.html||``,d=document.createElement(`div`);d.innerHTML=c;let f=d.querySelectorAll(`article`);if(!f.length){l?.disconnect(),u(``);return}f.forEach(t=>e.appendChild(t)),s+=1,e.dataset.currentPage=String(s),(!r?.has_more||s>=i)&&l?.disconnect(),u(``)}catch(e){console.error(`Infinite loading failed`,e),t&&(t.hidden=!1),l?.disconnect(),u(`Could not load more posts.`)}finally{c=!1}}};l=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&d()},{rootMargin:`400px 0px`}),l.observe(n)})(),(function(){let e=document.querySelector(`#template-blog`);if(!e)return;let t=e.querySelector(`#toc-list`);if(!t)return;let n=t.querySelectorAll(`.toc-link`);if(!n.length)return;let r=null;function i(e){e!==r&&(r?.removeAttribute(`data-active`),e?.toggleAttribute(`data-active`,!0),r=e)}let a=new Map;
4if(n.forEach(e=>{let t=e.dataset.tocId,n=t&&document.getElementById(t);n&&a.set(n,e)}),!a.size)return;let o=[...a.keys()],s=new IntersectionObserver(e=>{for(let t of e)t.target._tocVisible=t.isIntersecting;let t=o.find(e=>e._tocVisible);t&&i(a.get(t))},{rootMargin:`0px 0px -70% 0px`,threshold:0});o.forEach(e=>s.observe(e)),n.forEach(e=>{e.addEventListener(`click`,t=>{let n=e.dataset.tocId,r=n&&document.getElementById(n);r&&(t.preventDefault(),r.scrollIntoView({behavior:`smooth`,block:`start`}),i(e))})})})(),(async()=>{let{preferredSource:e}=await r(async()=>{let{preferredSource:e}=await import(`https://news.google.com/swg/js/v1/publisher.mjs`);return{preferredSource:e}},[]);document.querySelectorAll(`.blog-template-google-preferred-source`).forEach(t=>{t.addEventListener(`click`,()=>{e.addPreferredSource(),window.dataLayer?.push({event:`preferred_source_click`,buttonName:`Add to Preferred Sources`,buttonLocation:`Blog`})})})})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.