1!function(){try{var e="u">typeof window?window:"u">typeof global?global:"u">typeof globalThis?globalThis:"u">typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="05f755d4-1dad-4c24-b670-3711d290beb6",e._sentryDebugIdIdentifier="sentry-dbid-05f755d4-1dad-4c24-b670-3711d290beb6")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9643],{89643:(e,t,r)=>{r.d(t,{SL:()=>w,fW:()=>g,yS:()=>k});var n=r(66352),l=r(95132),s=r(13554),a=r.n(s),i=r(55836),u=r(36706),c=r(70436),o=r(77804),b=r(2786),d=r(8227),f=r(588);let h=3e3,p=400,m=[.45,0,.55,1],g=e=>"string"==typeof e?e:e.src,y=e=>{if(!e)return Promise.resolve();let t=new window.Image;return(t.decoding="async",t.src=e,"function"==typeof t.decode)?t.decode().catch(()=>void 0):new Promise(e=>{t.onload=()=>e(),t.onerror=()=>e()})},v=(e,t=p)=>e?Promise.race([Promise.all([y(g(e.before)),y(g(e.after))]).then(()=>void 0),new Promise(e=>{window.setTimeout(e,t)})]):Promise.resolve(),w=({pairs:e,enabled:t=!0,intervalMs:r=h,defaultIndex:n=0,stopOnManualSelect:s=!1,onIndexChange:a})=>{let i=Math.min(Math.max(n,0),Math.max(e.length-1,0)),[u,c]=(0,l.useState)(i),[o,b]=(0,l.useState)(!0),[d,f]=(0,l.useState)(!1),[p,m]=(0,l.useState)(!1),[g,y]=(0,l.useState)(!1),w=(0,l.useRef)(u),x=(0,l.useRef)(!1),P=(0,l.useRef)(a),j=(0,l.useRef)(e);w.current=u,P.current=a,j.current=e;let C=e[u]??e[0],R=t&&e.length>1&&o&&!d&&!p&&!g,k=(0,l.useCallback)(e=>{e<0||e>=j.current.length||(s&&m(!0),c(e),P.current?.(e))},[s]),E=(0,l.useCallback)(e=>{x.current=e},[]),N=(0,l.useMemo)(()=>({onPointerEnter:e=>{"mouse"===e.pointerType&&f(!0)},onPointerLeave:e=>{"mouse"!==e.pointerType||x.current||f(!1)}}),[]);return(0,l.useEffect)(()=>{let e=window.matchMedia("(prefers-reduced-motion: reduce)"),t=()=>y(e.matches);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,l.useEffect)(()=>{let e=()=>b("hidden"!==document.visibilityState);return e(),document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[]),(0,l.useEffect)(()=>{0!==e.length&&u>=e.length&&c(0)},[u,e.length]),(0,l.useEffect)(()=>{let e=j.current,t=e[u],r=e[(u+1)%e.length];v(t).catch(()=>void 0),r&&r!==t&&v(r).catch(()=>void 0)},[u,e]),(0,l.useEffect)(()=>{if(!R)return;let e=!1,t=0,n=async()=>{if(e||x.current){e||(t=window.setTimeout(n,r));return}let l=j.current,s=w.current,a=(s+1)%l.length;if(a!==s){if(await v(l[a]),e||x.current){e||(t=window.setTimeout(n,r));return}c(a)}e||(t=window.setTimeout(n,r))};return t=window.setTimeout(n,r),()=>{e=!0,window.clearTimeout(t)}},[R,r]),{activeIndex:u,currentPair:C,selectIndex:k,handleDragChange:E,hoverBind:N}},x=e=>`inset(0 0 0 ${e}%)`,P=({className:e,style:t,children:r})=>(0,n.jsx)("div",{className:(0,b.cn)("tb-absolute tb-px-4 tb-py-[6px] tb-bg-[var(--c-bg-diff-tag)] tb-font-light tb-text-[15px] tb-leading-[1.1] tb-text-white",e),style:t,children:r}),j=(0,l.memo)(function({src:e,alt:t,cover:r,priority:l,nativeImg:s,overlay:i,fetchPriority:u="auto"}){let c=r?"tb-object-cover":"tb-object-contain",o=i?"tb-absolute tb-top-0 tb-cinset-0 tb-w-full tb-h-full tb-rounded-[inherit] tb-select-none [-webkit-touch-callout:none]":"tb-w-full tb-h-full tb-rounded-[inherit] tb-select-none [-webkit-touch-callout:none]";return s?(0,n.jsx)("img",{alt:t,src:e,draggable:!1,crossOrigin:(0,d.vv)(e),loading:l?"eager":"lazy",fetchPriority:u,decoding:"async",className:(0,b.cn)(o,c)}):(0,n.jsx)(a(),{alt:t,src:e,draggable:!1,crossOrigin:(0,d.vv)(e),fill:!0,loading:l?"eager":"lazy",fetchPriority:u,unoptimized:"string"==typeof e&&e.startsWith("http"),className:(0,b.cn)(o,c),sizes:"(max-width: 768px) 100vw, 620px"})}),C={duration:.42,ease:m},R=e=>{let{fadeKey:t,instant:r,...l}=e;return r?(0,n.jsx)(j,{...l,overlay:!0}):(0,n.jsx)(u.N,{initial:!1,children:(0,n.jsx)(c.P.div,{initial:{opacity:0}
1,animate:{opacity:1},exit:{opacity:0},transition:C,className:"tb-absolute tb-inset-0 tb-pointer-events-none",children:(0,n.jsx)(j,{...l,overlay:!0})},t)})},k=e=>{let{className:t,style:r,children:s,hideDiffTag:a,alt:u="",cover:c,priority:d,onReport:h,onDragChange:p,aspectRatio:g="620/424",nativeImg:y=!1,introSwipe:v=!1,onIntroChange:w}=e,C=(0,l.useRef)(null),k=(0,l.useRef)(null),E=(0,l.useRef)(null),N=(0,l.useRef)(!1),M=(0,l.useRef)(50*!v),T=(0,l.useRef)(0),L=(0,l.useRef)(0),U=(0,l.useRef)(0),I=(0,l.useRef)(null),S=(0,l.useRef)(h),z=(0,l.useRef)(p),D=(e=>{let[t,r]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{if(!e)return void r(!1);let t=window.matchMedia("(prefers-reduced-motion: reduce)"),n=()=>r(t.matches);return n(),t.addEventListener("change",n),()=>t.removeEventListener("change",n)},[e]),t})(v),{$tl:_}=(0,f.W)();S.current=h,z.current=p;let $=(0,l.useMemo)(()=>!y&&"auto"!==g&&!r?.height,[y,g,r]),W=(0,l.useMemo)(()=>$?(e=>{let[t,r]=e.split("/").map(Number);return`${r/t*100}%`})(g):void 0,[g,$]),O=(0,l.useCallback)(e=>{M.current=e;let t=x(e),r=k.current;r&&(r.style.clipPath=t,r.style.setProperty("-webkit-clip-path",t));let n=E.current;if(n){let t=C.current?.offsetWidth||0;t?(n.style.left="0px",n.style.transform=`translate3d(${e/100*t}px, 0, 0)`):(n.style.left=`${e}%`,n.style.transform="")}},[]),A=(0,l.useCallback)(()=>{let e=C.current;if(!e)return;let t=e.getBoundingClientRect();T.current=t.width,L.current=t.left},[]),F=(0,l.useCallback)(()=>{U.current=0;let e=I.current;if(null==e)return;I.current=null;let t=T.current;t&&O(Math.max(0,Math.min(t,e-L.current))/t*100)},[O]),K=(0,l.useCallback)(e=>{I.current=e,U.current||(U.current=window.requestAnimationFrame(F))},[F]),X=(0,l.useCallback)(e=>{let t=k.current;t&&(t.style.willChange=e?"clip-path":"");let r=E.current;r&&(r.style.willChange=e?"transform":"")},[]),q=(0,l.useCallback)(()=>{N.current&&(N.current=!1,U.current&&(window.cancelAnimationFrame(U.current),U.current=0,F()),X(!1),z.current?.(!1),S.current?.())},[F,X]),B=(({enabled:e,pairKey:t,applyClip:r,draggingRef:n,prefersReducedMotion:s,onIntroChange:a})=>{let i=(0,l.useRef)(a),u=(0,l.useRef)(()=>void 0),c=(0,l.useRef)(!1);return i.current=a,(0,l.useLayoutEffect)(()=>{if(!e)return;if(s||window.matchMedia("(prefers-reduced-motion: reduce)").matches){r(50),i.current?.(!1);return}let t=!0,l=c.current?.42:.4;c.current=!0;let a=1.1+.8;i.current?.(!0),r(0);let b=(0,o.i)(0,[0,100,50],{type:"tween",delay:l,duration:a,times:[0,1.1/a,1],ease:m,onUpdate:e=>{t&&!n.current&&r(e)},onComplete:()=>{t&&i.current?.(!1)}});return u.current=()=>{t=!1,b.stop(),i.current?.(!1)},()=>{t=!1,b.stop(),u.current=()=>void 0}},[r,n,e,t,s]),u})({enabled:v,pairKey:`${e.sourceUrl}::${e.afterUrl}`,applyClip:O,draggingRef:N,prefersReducedMotion:D,onIntroChange:w}),G=(0,l.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),N.current=!0,B.current(),A(),X(!0),e.currentTarget.setPointerCapture(e.pointerId),z.current?.(!0),K(e.clientX)},[A,B,K,X]),H=(0,l.useCallback)(e=>{N.current&&(e.preventDefault(),K(e.clientX))},[K]),J=(0,l.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),q()},[q]);(0,l.useLayoutEffect)(()=>{A(),O(M.current);let e=C.current;if(!e||"u"<typeof ResizeObserver)return;let t=new ResizeObserver(()=>{N.current||(A(),O(M.current))});return t.observe(e),()=>t.disconnect()},[O,A]);let Q={alt:u,cover:c,priority:d,nativeImg:y,fetchPriority:d?"high":"auto"},V=(0,n.jsxs)(n.Fragment,{children:[a?null:(0,n.jsx)(P,{className:"tb-left-0 tb-top-[12.5px] tb-rounded-r-[80px]",children:_("general.compare.before")}),v?(0,n.jsx)("div",{className:"tb-absolute tb-inset-0",children:(0,n.jsx)(R,{fadeKey:e.sourceUrl,src:e.sourceUrl,instant:D,...Q})}):(0,n.jsx)(j,{src:e.sourceUrl,...Q}),(0,n.jsxs)("div",{ref:k,className:"tb-absolute tb-cinset-0 tb-w-full tb-h-full tb-rounded-[inherit]",style:v?void 0:{clipPath:x(50),WebkitClipPath:x(50)},children:[v?(0,n.jsx)(R,{fadeKey:e.afterUrl,src:e.afterUrl,instant:D,...Q}):(0,n.jsx)(j,{src:e.afterUrl,overlay:!0,...Q}),a?null:(0,n.jsx)(P,{className:"tb-right-0 tb-top-[12.5px] tb-rou
1nded-l-[80px]",children:_("general.compare.after")})]}),(0,n.jsx)("button",{ref:E,onPointerDown:G,onPointerMove:H,onPointerUp:J,onPointerCancel:J,type:"button",className:"tb-touch-none tb-select-none tb-cursor-ew-resize tb-absolute tb-top-0 tb-bottom-0 tb-h-full tb-w-px tb-bg-[#fff]",style:v?void 0:{left:"50%"},"aria-orientation":"horizontal","aria-label":"Compare the dividing line",children:(0,n.jsx)("div",{className:"tb-w-6 tb-h-6 tb-absolute tb-top-1/2 -tb-translate-x-1/2 -tb-translate-y-1/2 tb-bg-white tb-rounded-full",children:(0,n.jsx)(i.A,{className:"tb-rotate-90 tb-absolute tb-top-1/2 tb-left-1/2 -tb-translate-x-1/2 -tb-translate-y-1/2 tb-w-6 tb-h-6 tb-text-black"})})}),s]});return $?(0,n.jsx)("div",{className:"tb-relative tb-w-full tb-h-0",style:{paddingBottom:W,...r},children:(0,n.jsx)("div",{ref:C,className:(0,b.cn)("tb-absolute tb-inset-0 tb-overflow-hidden tb-select-none",t),children:V})}):(0,n.jsx)("div",{ref:C,className:(0,b.cn)("tb-relative tb-overflow-hidden tb-select-none",t),style:r,children:V})}}}]);
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.