PageSourceSearch

https://www.yolo.blue/assets/js/54a01191.f95edd09.js

js yolo.blue collected 2026-09-24 10:41:00 UTC 27,310 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkyolo=self.webpackChunkyolo||[]).push([["5072"],{24668(e,i,s){s.r(i),s.d(i,{metadata:()=>t,default:()=>c,frontMatter:()=>l,contentTitle:()=>d,toc:()=>o,assets:()=>h});var t=JSON.parse('{"id":"notes/develop/web/ipv6-pitfalls-and-happy-eyeballs/index","title":"IPv6 Pitfalls and Happy Eyeballs","description":"IPv6 is the future but with pitfalls, so we need \\"Happy Eyeballs\\" to make dual-stack applications more responsive to users by attempting to connect using both IPv4 and IPv6 at the same time (preferring IPv6).","source":"@site/docs/notes/develop/web/ipv6-pitfalls-and-happy-eyeballs/index.mdx","sourceDirName":"notes/develop/web/ipv6-pitfalls-and-happy-eyeballs","slug":"/notes/develop/web/ipv6-pitfalls-and-happy-eyeballs/","permalink":"/docs/notes/develop/web/ipv6-pitfalls-and-happy-eyeballs/","draft":false,"unlisted":false,"tags":[{"inline":false,"label":"Network","permalink":"/docs/tags/network"}],"version":"current","lastUpdatedAt":1783065864000,"frontMatter":{"description":"IPv6 is the future but with pitfalls, so we need \\"Happy Eyeballs\\" to make dual-stack applications more responsive to users by attempting to connect using both IPv4 and IPv6 at the same time (preferring IPv6).","tags":["network"]},"sidebar":"docsSidebar","previous":{"title":"HTTP/3 \u6765\u4E86","permalink":"/docs/notes/develop/web/http3-is-coming"},"next":{"title":"Page Loading Optimizations","permalink":"/docs/notes/develop/web/page-loading-optimization"}}'),n=s(74848),r=s(28453);let l={description:'IPv6 is the future but with pitfalls, so we need "Happy Eyeballs" to make dual-stack applications more responsive to users by attempting to connect using both IPv4 and IPv6 at the same time (preferring IPv6).',tags:["network"]},d="IPv6 Pitfalls and Happy Eyeballs",h={},o=[{value:"IPv4 versus IPv6",id:"ipv4-versus-ipv6",level:2},{value:"Which one am I using?",id:"which-one-am-i-using",level:2},{value:"IPv6 Pitfalls",id:"ipv6-pitfalls",level:2},{value:"What is "Happy Eyeballs"?",id:"what-is-happy-eyeballs",level:2},{value:"References",id:"references",level:2}];function a(e){let i={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components},{Details:t}=i;return t||function(e,i){throw Error("Expected "+(i?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.header,{children:(0,n.jsx)(i.h1,{id:"ipv6-pitfalls-and-happy-eyeballs",children:"IPv6 Pitfalls and Happy Eyeballs"})}),"\n",(0,n.jsx)(i.h2,{id:"ipv4-versus-ipv6",children:"IPv4 versus IPv6"}),"\n",(0,n.jsx)(i.p,{children:"Internet Protocol has 2 versions to date:"}),"\n",(0,n.jsxs)(i.table,{children:[(0,n.jsx)(i.thead,{children:(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.th,{children:"Version"}),(0,n.jsx)(i.th,{children:"Introduction"})]})}),(0,n.jsxs)(i.tbody,{children:[(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:(0,n.jsx)(i.a,{href:"https://en.wikipedia.org/wiki/IPv4",children:"IPv4"})}),(0,n.jsx)(i.td,{children:"January 1980"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:(0,n.jsx)(i.a,{href:"https://en.wikipedia.org/wiki/IPv6",children:"IPv6"})}),(0,n.jsx)(i.td,{children:"December 1995"})]})]})]}),"\n",(0,n.jsxs)(i.p,{children:["IPv6 was developed to deal with the long-anticipated problem of ",(0,n.jsx)(i.a,{href:"https://en.wikipedia.org/wiki/IPv4_address_exhaustion",children:"IPv4 address exhaustion"}),", and was intended to replace IPv4. But as of July 2026, the transition is still far from completion."]}),"\n",(0,n.jsx)(i.h2,{id:"which-one-am-i-using",children:"Which one am I using?"}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.code,{children:"Windows"})," uses a prefix table to determine which address to use when multiple addresses are available for a Domain Name System (",(0,n.jsx)(i.code,{children:"DNS"}),") name."]}
1),"\n",(0,n.jsxs)(i.p,{children:["Open ",(0,n.jsx)(i.code,{children:"CMD"})," or ",(0,n.jsx)(i.code,{children:"PowerShell"}),", use this command to view prefix policies:"]}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-shell",children:"netsh interface ipv6 show prefixpolicies\n"})}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"prefix policies",src:s(216).A+"",width:"468",height:"269"})}),"\n",(0,n.jsxs)(t,{children:[(0,n.jsx)("summary",{children:"Explanation for Prefixes"}),(0,n.jsxs)(i.table,{children:[(0,n.jsx)(i.thead,{children:(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.th,{children:"Prefix"}),(0,n.jsx)(i.th,{children:"Precedence"}),(0,n.jsx)(i.th,{children:"Label"}),(0,n.jsx)(i.th,{children:"Usage"})]})}),(0,n.jsxs)(i.tbody,{children:[(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"::1/128"}),(0,n.jsx)(i.td,{children:"50"}),(0,n.jsx)(i.td,{children:"0"}),(0,n.jsx)(i.td,{children:"Localhost"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"::/0"}),(0,n.jsx)(i.td,{children:"40"}),(0,n.jsx)(i.td,{children:"1"}),(0,n.jsx)(i.td,{children:"Default unicast"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"::ffff:0:0/96"}),(0,n.jsx)(i.td,{children:"35"}),(0,n.jsx)(i.td,{children:"4"}),(0,n.jsx)(i.td,{children:"IPv4-mapped IPv6 address"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"2002::/16"}),(0,n.jsx)(i.td,{children:"30"}),(0,n.jsx)(i.td,{children:"2"}),(0,n.jsx)(i.td,{children:"6to4"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"2001::/32"}),(0,n.jsx)(i.td,{children:"5"}),(0,n.jsx)(i.td,{children:"5"}),(0,n.jsx)(i.td,{children:"Teredo tunneling"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"fc00::/7"}),(0,n.jsx)(i.td,{children:"3"}),(0,n.jsx)(i.td,{children:"13"}),(0,n.jsx)(i.td,{children:"Unique local address"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"::/96"}),(0,n.jsx)(i.td,{children:"1"}),(0,n.jsx)(i.td,{children:"3"}),(0,n.jsx)(i.td,{children:"IPv4-compatible addresses (deprecated)"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"fec0::/10"}),(0,n.jsx)(i.td,{children:"1"}),(0,n.jsx)(i.td,{children:"11"}),(0,n.jsx)(i.td,{children:"Site-local address (deprecated)"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"3ffe::/16"}),(0,n.jsx)(i.td,{children:"1"}),(0,n.jsx)(i.td,{children:"12"}),(0,n.jsx)(i.td,{children:"6bone (returned)"})]})]})]}),(0,n.jsxs)(i.p,{children:["Source: ",(0,n.jsx)("cite",{children:(0,n.jsx)(i.a,{href:"https://en.wikipedia.org/wiki/IPv6_address#Default_address_selection",children:"Wikipedia"})})]})]}),"\n",(0,n.jsxs)(i.p,{children:["To prefer IPv6 over IPv4, the ",(0,n.jsx)(i.code,{children:"::/0"})," prefix should have a higher precedence than the ",(0,n.jsx)(i.code,{children:"::ffff:0:0/96"})," prefix, and vice versa."]}),"\n",(0,n.jsx)(i.p,{children:"To confirm preference of IPv6 over IPv4, perform the following commands:"}),"\n",(0,n.jsxs)(i.ol,{children:["\n",(0,n.jsxs)(i.li,{children:["Open the ",(0,n.jsx)(i.code,{children:"CMD"})," or ",(0,n.jsx)(i.code,{children:"PowerShell"}),"."]}),"\n",(0,n.jsxs)(i.li,{children:["Use the ",(0,n.jsx)(i.code,{children:"ping"})," command to check the preferred IP version. For example, ",(0,n.jsx)(i.code,{children:"ping example.com"}),"."]}),"\n",(0,n.jsx)(i.li,{children:"If IPv6 is preferred, you should see an IPv6 address being returned in the response."}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"ping result",src:s(36777).A+"",width:"606",height:"138"})}),"\n",(0,n.jsx)(i.admonition,{type:"tip",children:(0,n.jsxs)(i.p,{children:["By default, ",(0,n.jsx)(i.code,{children:"Windows"})," favors IPv6 global unicast addresses over IPv4 addresses. You can ",(0,n.jsx)(i.a,{href:"https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/configure-ipv6-in-windows#use-registry-key-to-configure-ipv6",children:"use registry key to configure it"}),"."]})}),"\n",(0,n.jsx)(i.h2,{id:"ipv6-pitfalls",children:"IPv6 Pitfalls"}),"\n",(0,n.jsxs)(i.p,{children:["As IPv6 is the future, we should prioritize using it. Unfortunately, sometimes it will let us down, for things like ",(0,n.jsx)(i.a,{href:"https://en.wikipedia.org/wiki/IPv6_brokenness_and_DNS_whitelisting",children:"IPv6 brokenness"}),", that many IPv6 networks are unreachable from parts of the Internet, and applications that try to reach those networks appear unresponsive."]}),"\n",(0,n.jsxs)(i.p,{children:["For example, we ",(0,n.jsx)(i.co
1de,{children:"ping"})," the same domain ",(0,n.jsx)(i.a,{href:"https://example.com/",children:"example.com"})," using IPv6 and IPv4 respectively:"]}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"ping using IPv6",src:s(36777).A+"",width:"606",height:"138"})}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"ping using IPv4",src:s(10139).A+"",width:"516",height:"137"})}),"\n",(0,n.jsxs)(i.p,{children:["IPv6 keeps getting timeout, while IPv4 is good. What a bummer. So we are stuck with the old boring IPv4? Not necessarily, here comes ",(0,n.jsx)(i.a,{href:"https://en.wikipedia.org/wiki/Happy_Eyeballs",children:(0,n.jsx)(i.code,{children:"Happy Eyeballs"})})," to the rescue."]}),"\n",(0,n.jsx)(i.h2,{id:"what-is-happy-eyeballs",children:'What is "Happy Eyeballs"?'}),"\n",(0,n.jsxs)(i.blockquote,{children:["\n",(0,n.jsxs)(i.p,{children:["Happy Eyeballs (also called Fast Fallback) is an algorithm published by the ",(0,n.jsx)(i.a,{href:"https://en.wikipedia.org/wiki/IETF",children:"IETF"}),' that makes dual-stack applications (those that understand both IPv4 and IPv6) more responsive to users by attempting to connect using both IPv4 and IPv6 at the same time (preferring IPv6), thus minimizing IPv6 brokenness and DNS whitelisting experienced by users that have imperfect IPv6 connections or setups. The name "happy eyeballs" derives from the term "eyeball" to describe endpoints which represent human Internet end-users, as opposed to servers.']}),"\n"]}),"\n",(0,n.jsxs)(i.p,{children:["Implementations of Happy Eyeballs exist in major browsers like ",(0,n.jsx)(i.code,{children:"Chrome"}),", ",(0,n.jsx)(i.code,{children:"Firefox"}),", and tools like ",(0,n.jsx)(i.code,{children:"curl"}),"."]}),"\n",(0,n.jsx)(i.p,{children:"It has 3 versions to date:"}),"\n",(0,n.jsxs)(i.table,{children:[(0,n.jsx)(i.thead,{children:(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.th,{children:"Version"}),(0,n.jsx)(i.th,{children:"Introduction"})]})}),(0,n.jsxs)(i.tbody,{children:[(0,n.jsxs)(i.tr,{children:[(0,n.jsxs)(i.td,{children:["Version 1 (",(0,n.jsx)(i.a,{href:"https://datatracker.ietf.org/doc/html/rfc6555",children:"RFC 6555"}),")"]}),(0,n.jsx)(i.td,{children:"April 2012"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsxs)(i.td,{children:["Version 2 (",(0,n.jsx)(i.a,{href:"https://datatracker.ietf.org/doc/html/rfc8305",children:"RFC 8305"}),")"]}),(0,n.jsx)(i.td,{children:"December 2017"})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:(0,n.jsx)(i.a,{href:"https://datatracker.ietf.org/doc/draft-ietf-happy-happyeyeballs-v3/",children:"Version 3"})}),(0,n.jsx)(i.td,{children:"In draft"})]})]})]}),"\n",(0,n.jsx)(i.h2,{id:"references",children:"References"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.a,{href:"https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/configure-ipv6-in-windows",children:"Configure IPv6 for advanced users - Windows Server | Microsoft Learn"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.a,{href:"https://slugcat.systems/post/24-06-16-ipv6-is-hard-happy-eyeballs-dotnet-httpclient/",children:"IPv6 is hard: Happy Eyeballs and .NET HttpClient | PJB blog"})}),"\n",(0,n.jsx)(i.li,{children:(0,n.jsx)(i.a,{href:"https://24days.in/umbraco-cms/2025/timeout-mystery/",children:"Fixing 42-Second API Delays: An IPv6 Timeout Mystery - 24 Days In Umbraco"})}),"\n"]})]})}function c(e={}){let{wrapper:i}={...(0,r.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},10139(e,i,s){s.d(i,{A:()=>t});let t="data:image/png;base64,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"},36777(e,i,s){s.d(i,{A:()=>t});let t="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAl4AAACKBAMAAACJP1mlAAAAMFBMVEUMDAzMzMyDg4OlpaVUVFS3t7eYmJg1NTVubm7CwsIhISGMjIyvr69iYmJFRUV4eHi7haHvAAAMy0lEQVR42u2cW2xsUxjH/7P3dGYMPWbNtaXYMz2GhIc9rbqTPVKEEDN1SRExu5xSDzLjToQZlBARdTkUkSGc8OQcicghklMicU1OHzxIPPQBCU/EJR482N+3ZvaeK604c6Rdv4fTnb32mlnn1299XW3/KRQKxf+RW9ag2ABvltCK/yesh7wwsbW4YynJlaWl0MohcayH1y7aYr6CS3P2br5IAiijyeE3YV3oW8yXPoIgmIU6cOZjcFG+elHhtnXBbufKAH4bvRn6J0tfIi8idHE2dom5CIjhlWT5sOdgr1VGr0d+4fnl8pmPju0nXzwEwm8nDHw1epM/ufzoc9iU5Lmv10qAXgBw3tKXeuL95fJr5zm+Ytkx5CampK/Vmb2F4NOHH4NbskUrf1YybeSu3vsc+eIh+WIvnjgynMjG/LHVuSg2JXkLDtvqgH8EDvfG9DhqP0FzfKVgh2MYkr6m6sNxrC6UALyyO29E80bOCh3DvniIsNdgObNyt0V92zerLwNNLgfCj4/erEfgM9hXBGl/FIdKX0KIOAKJOt6azJnSFxBlXzxEPA3AZyI9vXl9cf+S1CzsSTyGPr6enp6+EIc6vj59O93ui4e2ii99pLkfcYiJky1Ad7ad6yuYbO7HhTVqYntK/qPwSsOXNRylh+QQfuT9iE2+H7ctfZj9ifq9e2LVx95fKn97Xvx88oXcXKPf/7AzY1C/D8Yu/uJa6evzvSkcGsuu0RBCSeeZZKbE/X7z+sIdxbEqnycQ3tmouOI1yAkRZV+7xNsRKXZBlPg8sZh4WEhfi4n9CNsJi4bgf5GfKdB5YjP7asEus68I2ghE0Jsctji3rPXy9eY+5asf3b4eyC7tV77W7yuduB7Kl0KhUCgUCoVCoVAoFAqFQqFQKBQKxabEn8KBQZ88AwMiNDlZRSez6IvPArMIxOFQsRAqNCfNwWEebVQEQw8HTHRwyfo8ixj+Ft+lA/S1YoCxhUOS1xdBX+6Kt/vKAnqVPc4OWbPsyy8cUmghCoeaYGJgcoJS00sW1kF4+qN/8GUAu5ZerCP84FMYXnkRfMH8gRitJ4FvRnfzEHP/igm+4/HGaQaOFTfTEM8CEfwzBp5OQx2Btnn+x/1/JcHsKibr4YXR91prJYVc4xm6U8jTnWBkdvZO9jxPuoMdvpgd8JjKLDwH/F7Hupj8R1/hpbncbnyXuBH5mcYFc6TjK5bJRv2J8SPlEJHeYYLvuGwrXlHVYtkEDfEsEFryUvB0Z2i07vrqqK8aPFbm7NKbycYrV8oAu5D1xXdChVNlY5qFRtWTFsl2X/ly09cIAiXPgJ9f87/yhScwVAgvWxRq0Y+gC8Y/ghhF8lKBFHJ1GgJxj26C73ghjmcA/UnsWaMhmgUiWJ8ETz9kH37e37u+EIzC4z4cFgmt4fL+vi4rkK+0I3uxqpXc/djtSyu0+eKNApz5aGwtbCfTYL4RN+DTcuDooNhpcQiaw9Tsi4aY88QMhos765yhdn1RzkCLcwYxFKcLCmU7l4gFt2
1No3yEmahYNcS4KjhS+Q8/wnbQFBF7AXhriWTSd18nTfYbjiYLbPepryG0zzOslL8rAQyW4kK9L57nh6UUjbQQMuR/HySkto9VXpdrhKzxtA7kJe58eGy+CGE6c8CzuNn/+KZjZEecQNIepMdkYIvyjb69UV2dskzPULb6GTP2a4iySr05H+QK1EmU9YxzS9t20PW/QEEJJ6Yvv0DN8Z+qrRDU8lb2Gh3gWD2EScrqJtEHB7R71VaTnxt0G/1EdwKVoEhRlwCeIhNyPt1cdQ6HU7Mzl5lC14QuQy5C+nGdNIKfTpELT1/CRQBrIlQORV0xIX/pVWLWGkzsBhI/kUJwMU082huAQOBp+Z5aeokxdq69a1ffFCUvlaPqkKF9QCFTfx77ssi8Tyxs0BPwoffEdeobvjH24N4XfxLs8xLNoiH3xFo9lcz9RcLu7vobmub5cPTN1IDSCJrYJgsw8CO73/pRj6GTM+vwR2rDzs+ySltFWX5oAAiWv39vPSV/QIs4S9oCgz4MF+yqEf5mUoUsZDp5sDskULBCDFu/wte0l+BynxpF3PBTlCx4psS9n6N0b8zwERjflHTRJ1IejgZfDC2UekrPAvnh62D7yZ4uC2931NRFoq6/woybwwz5PKbuUvmR94Tp/gQ9iiC8CIXFbwZ3d6iufbvWVEzvXun0dctL0dB17rsJhL2Y6fPHQ3/n64TOKTr9iOE3qKL7gHjCRSVQxPMLdaj8Nub74DprEEI76djs7j4Z4luuLpjtcycHtbl9o94VDU86nro4Gjh63vsYbvnx3FWCTxutmgPn5kNnT16l5tPcvuL4qJRRBBF4GnI2aRH5/WPqSYeqcHKI9QvsRPfbjq7E6hq5yNi99EeQLeniVW0HgCLhfH939yHfc/Xh5PXSMY3mVffEsdz/SdGDXMRTc9nzl3NoJtPf7QCqcPh29fGWlL76pFTCBSoSUa9c58yNd+xFdvrZN29Nl8qUnG/1+2/Jchvt95aRvPv6VfHGYGnsmbqYh7sHbluayoH7f7st+KrNdS5ywXKdDFl/Qw1w5OKQE9/zFbfWBY2eO4ztuv0/P7H1Bj52wXKYhmsVDoczlmTJND46L3Rzclr48OutrPrNiBkYzGauHrxnXlwlf1DFWSdEM/UED/ggt4x98Uf83yJfTHdJgvl9K8nkiVJy14+SLw9TYJS6jIf4a71wk+DzR5osD1zhW3MCHeLqghxu+Vqvwzvf+F/nhON9xzxNaMVkOvyNulkOQ5wleoUXTg2PvAhTcbvFVs7Rol6+9Tr/n/xckmuvLFqbs94Be4nYeTE6Rr8qt0pc8TxQFk6AGJgu3J/bfhzf/h98/ikI5GBAW+9LFCHpSE1WvviDryzmUAUHxSLJm6AVqYDrvxy7y6E/4pb6+/qc/n0jzB/8I1of05ZGzEEoBO5AeiehcXxsglFk4qr8vRSeauMJSvhSKA0+g6h0jNNOWH9DCBBQt+KM14RCVou6K8wc6EhfoMGIpX53kW+sLAGlKhUy/46vsU7660YUD/USRSbI2rRQyyRfdjEHRSkd98Yehqmaq+upFbqQoZBFdBi3S9LUjLyzamOeUlK9+v8ysGRr/xsPmZg9QfZ2fUr46ffmFgwEEU1oCp8IhTj8FkP1+Tvnq8hUBdAMO6alFi7Zj3JEUkr7yyle/+kIlc0oUgFYSUdeXbilffeorUNDMmgUEDN6P6vzVx9eNsr5CI9BM5x/ocbkfvfO9X1ShaFDcHuFMyjgfJPIl+Ow4CK++hh5SP7Vpwr+dzIkyGoGmS7GInPeD6byIKF99SAsLDjeiHbUfFQqFYpOgmZCcjINCMA4soo0d6EaeqofKOLh4voIpHBQo9Xiq97v2GOAXTMlTSikA9qXFOdyGg0VAMCYtiQAxwDgzu0jQ3TJmQYwDviraCabQ8IVzvd/F88Lkew2OCtVXipbkLWRwcWbpYlGvIt/iSzCpNl9R+WmNo9UXLYzeC4Pjjohm+k5q9zXAOLP0dS7YV8hRUh2HnjH5fq/6ivMzeTC0MHqvgTKhmXNo9zXAOLP0dXIJeTi+ChhyfEFz64tnyf6Vlb74mTzv6ygtjN+Ls9jaiihgAHC/b+tfA4wzS1/B2XZfbn3xLFlflXKrr2Amk9lOC+P34iz2zx9mqjjQ2IJJttXXAOPMst8jX+5dXzxL+goYXfuRF0bvxdk8ew0DoTaCjv04wDizrC8EzHNbfGGo1P310R9prS+GF0bvxb6+HvsAA0CbmLQ69uOg4syeL6QW4fZ7QBCd/f6krv7FC6P3Yl/hh4v7cOC5TjNnO+prYHFmzxcWW+qrFisAdrV9PwJd/YsXRu/FvoBDj8YBx1fSTL3U7mtwcWbP14Nwz196HJW4MNDS74XodZ7ghdF7sa8TMgtP4kCjxaGZSFttvgYWZ3b7PXCy58shzRFbmtVdX+4yeWH8XrLfi50HvuNPgXwh5vavgcP1VSQ97vePRSquSsdpyk+Lc8/3BxGt0UYO+kLc+uoP+9LFFvjj5wqFQiFR+eiNovLRG0PlozeIykdvDJWP3ggqH/0vUPnoDaLy0RtB5aM3iMpHbwiVj94gKh+9flQ+ekOofPRBR+WjFQqFYnOj8tEqH92Jykc3X9Bb4XrY2vloekFvhetgi+ej6QXdFf4zWz4fDUx6K+S/Z40TRQL92PL5aHpBd4X896wPH8scjz6ofDS/YHOFt9HfNw38QyJza+ej+QWbK9xOvoaXPt+P3qh8tNu/eIXsC2/sGENftno+ml+wucJf2RewZw192PL5aH7B5gpfI1/a29ll9Eblo+ULNlfo534vRm9GT1Q+eqOofLRCoVAoFIr/AX8BFfUoQebmj2EAAAAASUVORK5CYII="},216(e,i,s){s.d(i,{A:()=>t});let t="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdQAAAENBAMAAABEOIm4AAAAMFBMVEUMDAzMzMyDg4OlpaVUVFRwcHA1NTW3t7fCwsKUlJQhISGdnZ2MjIyvr69FRUViYmLNhUqEAAARjUlEQVR42uycWWgrVRjH/5klMVXbOZlJYmyrSaqWomKSuoOSaN0RJm5xQUjEXYSkWkVxK+5aJam7iMQNFHywggs+SPVBRASt4PKgGMEHUQT1RV8Ez/fNmKkmsRF9mNH5cS/97pzvnOaXc+acyZm5QUhISOC4oIf/C8+/hFGoRj88DsPQtqYxhOPGaBCjGhysXhEFKrJBeMH4XLY6zf2ppAaKjqkPvLLVslfk8dXavhiAkz2eOzw7tio36Fb3ePZUUt3FAuEFYxNdfbmzyUEGAAl45MoDr+y8rlfk0elhAC+ZmWxdZ4+pyg161T1UUtXfAOEFY6MmEQXzaBc46twdVIlB1aPGOD9uG28Aj26QVf8JjTYkJ27KKAvU9ngS6serR2Nqa7qeE0JA2RJNNSmPEJoQwFFnmz0q4pxI+vt0D4tAVNxbhraRzuJX8er25NkfvtrEV5v996bf4FTr7m7160SsAIB+6ZcQN23d5FRfdKt/Vt91LyriZFatCAM4RSxzQMncIMahYkNSfQlQqcJJq1+q5sIsflx+t3lh54wlVD/K23yEmFjqAMVS50Mq4hyt89hbnyx9sXRyNP+Ihcragcmp9AF3bku+4d07dm/ird5hP6dtSPoNyuobhcpxa5E2q6bfv6t+UuaJWaoepQa5+qWFqs1FlMyqz55kQNvj7S2bAkrmBsdTLfOZ1AW0JEVXmmoKHRzWnbJ4lG70AHlkAw45oFiPG1Tk5mTVhBDCkmozlFxWr8ePZS+5rCd1Czdi9qN3UwC8BmU7auqrnxYjWVa1ULWVBIpU/RhqkKtPZe51iiiZVaEY2HUvaBzw76IGx1P15sVrgYnz93hSlSIQQjiqv8x+ADqyTRUKq3o5WJQ1T180cSuAiDy8TRVITGQmk0h3pxKQeA2aUKzI/j/ze01HIlnFglt90a2OzvVOESX3VXcpgAMnmRoci4a3nFbLeCt9rvM6bl1aOpkOYOKc1oeDqlTEOX3V3dfyjuouBy8tdf+gitd3S8HEBKtyg57q3KWV3jZVt7qn+tZfqnIyNTjuDOwOYGrhiDIc1dd7/fN4t70GVamIc/qqlR8mTB6cu94PiTeAZWdWf34J13b1JACvQR7Aakd9C+4A/pFVuXpfdWpm2ilyBrDRH8AccDI3iHGYXP1of5umJfciwlX95u58Fs+v5XsH5B+9pa86udRZqpMqF1GOnJ+6/MoaB//6qf1NJt+evGs9vy35c3mK7rJlI7f87j0g+g3STKN+Ef8UhDr7/urFJyVPhlN90a1O0xIVOdPSbuZC7+uTrOMnV9cXQAElc4MYi8taszYvNpi421OdfF28BG1L9Dri3l5fVRVCZEmViygnxyfmIqC3VjYMeaSJ71antyXX0j8gvgegtKbrIPoN0vqhTCumO7haNys8GXH1Rbc6LTZUxMmY2EiXi0IkZE4abjDNDeLv0qnj36aI8VCNnYp8/+HGr6pAqBqqBo94G/8XHNVYHY0yBzYARVhgUpBoBpQCR1CC+75UBJOEkkRRBilcYMZoyQLi8oenenDHuVgNrqrELIKo6lkgKtUitjemWTXHvaoUUBGMhYCSi7cTIE4Aq0r6qjp3eGwfUgVTayKwdLLxtpIBitY1juocckKSBpx/J6FYCcHOgJZqIKh0ioIwASsqf0i1iuX0Kg/X41OwgISBeNNJb0YDO3xRg6QEwKIejRrAA64qVBsaq2oG1BQP9nYHamBdq0KSgNurUoogVT55
1dYN6MWIgUuLBTuesmkAw+WOvkuqCQvZS9qFYNl4g1aSB2gkIPIOqi0qB+zVqaEYsK49GlgyUYjYgtY9FcPnTAG4CSVc1bhcTVTpbD9EM3dBlidIsXdbEAiTf8jYNB4HB69UHU4AU0g1XtSLKtWVShWY0eBcvZpeQj8xJaX2ad485CB7Cdq774gX3XAVvgysGpG5CehaQQwmo4AhAW+N7AhwEhY5gMtBJSQggknV7VVJFRdh0PAvgOme4B3X+Hb7fHxISEhISEhISEhISEhISEhISEhIS8t8hmsLVkTrfaHTvqtKWt4tewHBqcGnY0JIYIC4PN6kBPz1fJb2sC5MAIrarurB+BN9Hl0QTI1WrMscAikLMU/IfIf2Kze9bSywKUYcfiJRhoVEHqvW+agGnk6dgMn/Vq3oTWBjsU+HQxglAPAuf3JudAywQLUHYjuohztAeDvclmMZxBbWp2hjFwdWVxiXZEnxBouo+omWg36uHyiMpqdpx5IcwH3U6fB3rV9Wihwy56WXRHUq9Xbokg44/HgCKJxC1qPti5W2q5El/uHwY1wJYAdFoK4NTz2MAq8aFERMoJuEHqiWplAKxXbVxMat2zkhjGHo66aqqMqjao1ShnplQRDtiwwc8XIJ+DanmBJPYpmoArTKGEevIM3BlHoibHSEyLXvEAEYNPqKE+MMpEI26mgWgnvO7asKVH2Suhkp9pVFGEUTUHNWrFoTI+WWxKSF2lqN6ArapRlPQDFqKNAuDHFrDA1iJF9yHag/BCFVdmIhUyj5ZbEqoSK3H6PWR6hxiJ0nVmjymN0mVfAapRS2saClgAUpTa46agSVX1+Jtnyw2JSxLrXVAN0h1AZHLpGpRDmClTaoRe6hqvIAVLNPEHU3FysN6FWDDSCJq+mOxQUkxkMIK0AKplnBCfL2gWxkamaSKodQiNpKYB7QmiY1UVdPxNHL+OFVRqpRRFE0Uy/z4r+xgqdqpxwxUeKoaoYq4aFK5YKw/q2rC0GVbcQvFyx7IZOALSit/nnKASAGYp8mmZeIfEitgEZFAPwUfEhISEhISEhLyH6MihNiH9hrGCXaolYWL1i/yR5AFcUE+nz9e/t1nnADE6FpluET7Rf4Iwkf0Q0JCQkJCQkL8gvID/i/86It7yWOgCWFiamsNf8Wve2xikIu2CpAcxsHEo3u8R98H5+MvXdbM/L6oLBc3/yonPTeDQXKvkaqW5OD5jMzJlXzyFMhwjQSAjbq6J0azawrFLga4XCXV+D0c6D1ci8PpGxZ9i2YtAbdCtzCaXQqoltGn/z/uWbWx6QYo4tHubrfAt2hC3I7M00sJjCby+D6VLBy871FwDd+quwGuwjPLr/l4Op485LjVXiJ38F+q5k1P1ft2DDacuNsNoCeht2Z8cmd5BD9mZ6444y9V33nFU/VgQ30vN8A3H+LR3gt3wLdoPTyVlefq3jucqz+MUI0V3GDyvi5moPnj4bThGk1U7XFn4MEBTO8BBxO5IwETUz5WVcwD7uqOs64OTkunzS/vh0/hBLvuITfviqV3fTyAMS/eHOtqaXCxKQph0YDlgL8H90VfXy39Q3a9B/8X/kcfa0JCQgLBQfi/4OdroyGciR03XKLnmxiK2uSri6AwA3OnDRdl+ioMpWLzNWNA0JIwd9pwiXYXMZRHu84ngWCgWzB32nABSHVwwyU6w5/vgnKLfjcDJm+4jK3qbbjslnL3YoKB+iFM0IbL2Kre59Xn27QXExjVSBsmaMNlbFWPao/2YgKj2ijl0zZvuPx91avA52pQPtz8KIQo0Az8twcwvz1BmoGBnddVPX9tvj44Le3eBIK0rv7G3vm8wBRFcfz4kd+/hoT8aPzY+FUYK6XmyU40ysKGEFthNiiLQVF+hI3sJuVXNsZCssJClsTKStkoK3+A8s53xruOe58zNDXnvXe/q8u9Lx1N9937ed9zDpF+WmKY4tN9JJwX6rT0/3peoF9uvNZERUVVUqXYvdDgeXftSTawDWVm3K69YLv+JgXK5DV4nrP4dcsNyB0qMACUwWchtI4er2YvXb+Uki2rWgqUyWvwPH2FG4jPdhgAykxcsHZxF62jx6spn+k9JXUdygS0HfddN5AfYzFgKDPtXXr7eXiRxq8ZZyjZ2dSgTAi4NPAV2Q0wBQSTDRjKTKhTUl9pAMtMObCNktrilgJlfOCCBs9Hd3/cef/XoMtTQDDZAFBmE62so3X0mHV40Tr6sm//CgXK+PfViVxdgKvD7Pg1aPIUEEw2YCiT9sTe3ELr6HHr3gV+JczXoIwn/wcs7TAYMJSZ0Vu2t5m2jjbQa+TVoT3c11mBMsOGCgTjBm1inebW0QZC7R26xP4qBcr4wMULFVPYeLNBn1k9XuhaR49P029tXJA6Pt8qngZ/W/JDxRRep9kAUGbK6tpL1zp6fJrVWbRO9/EO/7LBISkbAMpMWf6G+J+w7cmLUKZi15qoqKhCqzr7kB28EgYu2jcbpAtletS52uXjAZ4SU8ArbIexgFfCwEX5Eod0IRd359bml3zow1NiCngFdhgDeCUMXDSHC9KFMh2kqSdwlOen5BTjFdhhTOCVEHDRHS60WfxK5wGm8FOYEp4XnIgt4JUgcNEdLtSWRf0AUwZPtaXnBaFawCtB4KI7XORdc28LMIWfwpTwvCBUE3glBFw0hwvShZzmXOvDFDwlphivIFQbeCUEXBSHC9KFnL5+6sMUPCWn2oRQjeCVEHBRdmBOF3K6u6BL2Q7MU8LzglAt4JUgcFEdLkgXcv8z51etyd6rmBKeF9hhDOCVMHAZxuFS/70u//zstIQp4XmBHSbilRKpOteaqKio4qg6O5Nl4ALB4aLUeQkDF+AVAVyY4PAao69YOFyUOi9h4AK8IoALExxeY9QmnNT1Oi9h4AK8IoALExxeY7RuDRwuSp2XPODSkElGIDi8xlJnNSc4XJQ6L7nApSGTjEBwsIZMCg4Xpc5LHnBpyCQjEBxeY5At9aXxke/1PODSkElGIDhYY1NwuCh1XnKAiwy1PSA4vMam4HBR6ryEgQtCFcAFBOfuAqOvVThctDovYeACvCKACxMcrCGTUhwuMPTmA5emAC5McHiNSWIYgUu81kRFRZVC5dqZ0gSi4gKXRyeXdjEIV8YFQ5GZRCw+QuAsIYALt+gwei1nvX/ae4JBuDIuMxSZSQQlp/rkRQKXFN7ctGfkyXScZktoICvjgqE4bScIvhic+wVwSer0yvRXuAc3KEdpqGAoMjthV+0UfDEgLwK4HGnSOTKsYx+6fwsVDGUgZBJNXvz6fYuBC8iLBC6m647SlNqpv4YKhjIQMolmrqDJ8MWAvEjgQtMtmlsc3N2/6S+hgqE4NZBDQ/DFgLz8AVzSdD/Lwi8vL1QwFD9UBi5/1HBpF6A6/Uwl1J4MdeYKsQNL4HLT8q31ziqU0A8IBXHBUESoczq31rr3qgAuRFfIsN7mbksoiAuGIkKlb51F5E5LDrgU4WwYgUuVrzVRUVFFVHX2oQK+QpmqaGlHnkzVZ1EkqIqaduTJVH0WRYKqqGlHvmzVZxlWHKqSduSn1ZuqzzKaUCVwcfcYU/VZRhOqBC7ODmCrPstoQgVw8WWsPsuIQg2iXWP1WUYSKuCK/wO2VJ9FkaQqStqRvy2Zqs+iSFIVJe3If9nE+iylVHWuNVFRUUVWufaqQjtcAFxyp5A35DtcIN/hwovxOcemAFzyp5A35DlcIN/hgsXJKaspRQAu+VN/5A1tJyff4YLF8LrblAzVnxKh8h9+1J7R5N6iuu9wwTyyjWxKD1U6XOYu2nCJkqsbF3oOFyzmojBWb7B6qNLhMuksfW/2PlPTc7hgMZtfShAq/jCBsxMYwoQcLg2YX8oS6rStO3d2OVTf4YJ5ZBvZ1L+GOvM6Q5jPRCGHi+kdGMAlfwp5Q9LhcvnWKvq6ZNUN3+GCxXbfq7nAxbV8bv7pcFlKc57XTvgOFyy2e1qiiGCqfa2Jiooqh0q4Mw2aE5UNuKAyrsg/cs2JUhWlaO4QwAVFc2X+UdaciFWUornDABdUxpX5R4PmRFBxiuYOc7OhzTL/iP82Iy+FKZo7XKhtmX+UNSdi8lKYorl6qCiaK/OP0JwoIy+FKZqrhoqiuTL/iP/WkZfiFM39OUJeRT00F5xMQaKIkZehc2guIa9CD81FAG6QV+EjL0Pm0FxiBlzgh+Yi9h8xGyCNvAyRQ3OJHXBRQN1/xGyANPIyemjusAbDsFszCkYBzQEAhYZb5vumP6oAAAAASUVORK5CYII="},28453(e,i,s){s.d(i,{R:()=>l,x:()=>d});var t=s(96540);let n={},r=t.createContext(n);function l(e){let i=t.useContext(r);return t.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),t.createElement(r.Provider,{value:i},e.children)}}}]);

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.