1var e=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),t=function(e){return`/`+e},n={},r=await 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}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}o=l(i.map(i=>{if(i=t(i,a),i=u(i),i in n)return;n[i]=!0;let o=i.endsWith(`.css`);for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}let s=document.createElement(`link`);if(s.rel=o?`stylesheet`:e,o||(s.as=`script`),s.crossOrigin=``,s.href=i,c&&s.setAttribute(`nonce`,c),document.head.appendChild(s),o)return new Promise((e,t)=>{s.addEventListener(`load`,e),s.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}).filter(e=>e!==void 0))}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)})}(()=>import(`./three.module.CR-jQ73u.js`),[]),i={type:`ICOSAHEDRON`,radius:1,detail:4},a={maxPixelRatio:2,antialias:!0},o={targetFPS:60,lazyRender:!0,adaptiveFPS:!0,minFPS:30},s={time:{type:`f`,value:1},pointscale:{type:`f`,value:1},decay:{type:`f`,value:2},complex:{type:`f`,value:2},waves:{type:`f`,value:3},eqcolor:{type:`f`,value:3},fragment:{type:`i`,value:!1},dnoise:{type:`f`,value:0},qnoise:{type:`f`,value:4},r_color:{type:`f`,value:0},g_color:{type:`f`,value:0},b_color:{type:`f`,value:0}},c={perlin:{vel:.002,speed:1/1e4,perlins:1,decay:.31,complex:0,waves:10,eqcolor:3,fragment:!1,redhell:!0},rgb:{r_color:8.4,g_color:5,b_color:5.4}},l,u,d,f,p,m,h,g,_,v=0,y=!1,b=!0,x=null,S=o.targetFPS,C=[],w=0,T=2e3,E=!0;window.addEventListener(`load`,()=>{D()},{passive:!0,once:!0});function D(){if(x=document.getElementById(`sphere`),!x){console.error(`Container element with id "sphere" not found`);return}z(),O(),A(),M(),g=performance.now()-1e4,y=!0,x&&x.classList.add(`active`),N()}function O(){if(!x)return;let e=x.getBoundingClientRect();f=e.width,p=e.height,l=new r.Scene,l.background=new r.Color(0),u=new r.PerspectiveCamera(35,f/p,1,1e3),u.position.set(0,0,10),d=new r.WebGLRenderer({antialias:a.antialias,powerPreference:`high-performance`,stencil:!1,depth:!0}),d.setSize(f,p),d.setPixelRatio(Math.min(window.devicePixelRatio,a.maxPixelRatio)),d.sortObjects=!1,x.appendChild(d.domElement);let t;new ResizeObserver(()=>{clearTimeout(t),t=setTimeout(k,250)}).observe(x)}function k(){if(!y||!x)return;let e=x.getBoundingClientRect();f=e.width,p=e.height,u.aspect=f/p,u.updateProjectionMatrix(),d.setSize(f,p)}function A(){_=new r.HemisphereLight(16777215,0,1.4),l.add(_)}var j=class{constructor(){this.mesh=new r.Object3D;let e=new r.IcosahedronGeometry(i.radius,i.detail);m=new r.ShaderMaterial({wireframe:!1,uniforms:s,vertexShader:`precision mediump float;\r 2\r 3vec3 mod289(vec3 x)\r 4{\r 5 return x - floor(x * (1.0 / 289.0)) * 289.0;\r 6}\r 7\r 8vec4 mod289(vec4 x)\r 9{\r 10 return x - floor(x * (1.0 / 289.0)) * 289.0;\r 11}\r 12\r 13vec4 permute(vec4 x)\r 14{\r 15 return mod289(((x*34.0)+1.0)*x);\r 16}\r 17\r 18vec4 taylorInvSqrt(vec4 r)\r 19{\r 20 return 1.79284291400159 - 0.85373472095314 * r;\r 21}\r 22\r 23vec3 fade(vec3 t) {\r 24 return t*t*t*(t*(t*6.0-15.0)+10.0);\r 25}\r 26\r 27// Classic Perlin noise\r 28float cnoise(vec3 P)\r 29{\r 30 vec3 Pi0 = floor(P);\r 31 vec3 Pi1 = Pi0 + vec3(1.0);\r 32 Pi0 = mod289(Pi0);\r 33 Pi1 = mod289(Pi1);\r 34 vec3 Pf0 = fract(P);\r 35 vec3 Pf1 = Pf0 - vec3(1.0);\r 36 vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\r 37 vec4 iy = vec4(Pi0.yy, Pi1.yy);\r 38 vec4 iz0 = Pi0.zzzz;\r 39 vec4 iz1 = Pi1.zzzz;\r 40\r 41 vec4 ixy = permute(permute(ix) + iy);\r 42 vec4 ixy0 = permute(ixy + iz0);\r 43 vec4 ixy1 = permute(ixy + iz1);\r 44\r 45 vec4 gx0 = ixy0 * (1.0 / 7.0);\r 46 vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\r 47 gx0 = fract(gx0);\r 48 vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\r 49 vec4 sz0 = step(gz0, vec4(0.0));\r 50 gx0 -= sz0 * (step(0.0, gx0) - 0.5);\r 51 gy0 -= sz0 * (step(0.0, gy0) - 0.5);\r 52\r 53 vec4 gx1 = ixy1 * (1.0 / 7.0);\r 54 vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\r 55 gx1 = fract(gx1);\r 56 vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\r 57 vec4 sz1 = step(gz1, vec4(0.0));\r 58 gx1 -= sz1 * (step(0.0, gx1) - 0.5);\r 59 gy1 -= sz1 * (step(0.0, gy1) - 0.5);\r 60\r 61 vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\r 62 vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\r 63 vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\r 64 vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\r 65 vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\r 66 vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\r 67 vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\r 68 vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\r 69\r 70 vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\r 71 g000 *= norm0.x;\r 72 g010 *= norm0.y;\r 73 g100 *= norm0.z;\r 74 g110 *= norm0.w;\r 75 vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\r 76 g001 *= norm1.x;\r 77 g011 *= norm1.y;\r 78 g101 *= norm1.z;\r 79 g111 *= norm1.w;\r 80\r 81 float n000 = dot(g000, Pf0);\r 82 float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\r 83 float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\r 84 float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\r 85 float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\r 86 float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\r 87 float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\r 88 float n111 = dot(g111, Pf1);\r 89\r 90 vec3 fade_xyz = fade(Pf0);\r 91 vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\r 92 vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\r 93 float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\r 94 return 2.2 * n_xyz;\r 95}\r 96\r 97// Classic Perlin noise, periodic variant\r 98float pnoise(vec3 P, vec3 rep)\r 99{\r 100 vec3 Pi0 = mod(floor(P), rep);\r 101 vec3 Pi1 = mod(Pi0 + vec3(1.0), rep);\r 102 Pi0 = mod289(Pi0);\r 103 Pi1 = mod289(Pi1);\r 104 vec3 Pf0 = fract(P);\r 105 vec3 Pf1 = Pf0 - vec3(1.0);\r 106 vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\r 107 vec4 iy = vec4(Pi0.yy, Pi1.yy);\r 108 vec4 iz0 = Pi0.zzzz;\r 109 vec4 iz1 = Pi1.zzzz;\r 110\r 111 vec4 ixy = permute(permute(ix) + iy);\r 112 vec4 ixy0 = permute(ixy + iz0);\r 113 vec4 ixy1 = permute(ixy + iz1);\r 114\r 115 vec4 gx0 = ixy0 * (1.0 / 7.0);\r 116 vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\r 117 gx0 = fract(gx0);\r 118 vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\r 119 vec4 sz0 = step(gz0, vec4(0.0));\r 120 gx0 -= sz0 * (step(0.0, gx0) - 0.5);\r 121 gy0 -= sz0 * (step(0.0, gy0) - 0.5);\r 122\r 123 vec4 gx1 = ixy1 * (1.0 / 7.0);\r 124 vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\r 125 gx1 = fract(gx1);\r 126 vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\r 127 vec4 sz1 = step(gz1, vec4(0.0));\r 128 gx1 -= sz1 * (step(0.0, gx1) - 0.5);\r 129 gy1 -= sz1 * (step(0.0, gy1) - 0.5);\r 130\r 131 vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\r 132 vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\r 133 vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\r 134 vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\r 135 vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\r 136 vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\r 137 vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\r 138 vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\r 139\r 140 vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\r 141 g000 *= norm0.x;\r 142 g010 *= norm0.y;\r 143 g100 *= norm0.z;\r 144 g110 *= norm0.w;\r 145 vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\r 146 g001 *= norm1.x;\r 147 g011 *= norm1.y;\r 148 g101 *= norm1.z;\r 149 g111 *= norm1.w;\r 150\r 151 float n000 = dot(g000, Pf0);\r 152 float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\r 153 float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\r 154 float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\r 155 float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\r 156 float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\r 157 float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\r 158 float n111 = dot(g111, Pf1);\r 159\r 160 vec3 fade_xyz = fade(Pf0);\r 161 vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\r 162 vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\r 163 float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\r 164 return 1.5 * n_xyz;\r 165}\r 166\r 167// Turbulence By Jaume Sanchez => https://codepen.io/spite/\r 168varying vec2 vUv;\r 169varying float noise;\r 170varying float qnoise;\r 171varying float displacement;\r 172\r 173uniform float time;\r 174uniform float pointscale;\r 175uniform float decay;\r 176uniform float complex;\r 177uniform float waves;\r 178uniform float eqcolor;\r 179uniform bool fragment;\r 180\r 181float turbulence( vec3 p) {\r 182 float t = - 0.1;\r 183\r 184 t += abs(pnoise(p * 2.0, vec3(10.0)) / 2.0);\r 185 t += abs(pnoise(p * 4.0, vec3(10.0)) / 4.0);\r 186 // ÐкÑава 8.0 ÑбÑана: ÑÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ 25% ALU на веÑÑинÑ, визÑалÑно поÑÑи незамеÑно\r 187\r 188 return t;\r 189}\r 190\r 191void main() {\r 192 vUv = uv;\r 193\r 194 // ÐÐШÐРУÐÐ ÐЫÐÐÐ: ÑÑиÑаем ÑÑÑбÑленÑноÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз!\r 195 float turb = turbulence( decay * abs(normal + time) );\r 196\r 197 noise = (1.0 * - waves) * turb;\r 198 qnoise = (2.0 * - eqcolor) * turb;\r 199\r 200 float b = pnoise( complex * (position) + vec3( 1.0 * time ), vec3( 100.0 ) );\r 201\r 202 if (fragment == true) {\r 203 displacement = - sin(noise) + normalize(b * 0.5);\r 204 } else {\r 205 displacement = - sin(noise) + cos(b * 0.5);\r 206 }\r 207\r 208 vec3 newPosition = (position) + (normal * displacement);\r 209 gl_Position = (projectionMatrix * modelViewMatrix) * vec4( newPosition, 1.0 );\r 210 gl_PointSize = (pointscale);\r 211}\r 212`,fragmentShader:`precision mediump float;\r 213varying float qnoise;\r 214\r 215uniform float time;\r 216uniform bool redhell;\r 217uniform float r_color;\r 218uniform float g_color;\r 219uniform float b_color;\r 220\r 221void main() {\r 222 float r, g, b;\r 223\r 224 r = cos(qnoise + (r_color));\r 225 g = cos(qnoise + g_color);\r 226 b = cos(qnoise + (b_color));\r 227\r 228 gl_FragColor = vec4(r, g, b, 1.0);\r 229}\r 230`});let t=new r.Mesh(e,m);this.mesh.add(t)}};function M(){h=new j,h.mesh.scale.set(1,1,1),l.add(h.mesh)}function N(){if(requestAnimationFrame(N),!y||!b)return;let e=performance.now();P(e)&&(I(e),d.render(l,u),o.adaptiveFPS&&F(e),v=e)}function P(e){let t=e-v,n=1e3/S;return!(o.lazyRender&&t<n)}function F(e){let t=e-v;if(C.push(t),C.length>30&&C.shift(),e-w>T){w=e;let t=1e3/(C.reduce((e,t)=>
230e+t,0)/C.length);t<S*.8?(S=Math.max(o.minFPS,Math.floor(S*.9)),console.log(`Performance adjusted: Target FPS reduced to ${S}`)):t>S*1.2&&S<o.targetFPS&&(S=Math.min(o.targetFPS,Math.floor(S*1.1)),console.log(`Performance adjusted: Target FPS increased to ${S}`))}}function I(){h?.mesh&&(h.mesh.rotation.y+=.001),E&&L(),m?.uniforms&&(m.uniforms.time.value=c.perlin.speed*(performance.now()-g))}function L(){m?.uniforms&&(m.uniforms.pointscale.value=c.perlin.perlins,m.uniforms.decay.value=c.perlin.decay,m.uniforms.complex.value=c.perlin.complex,m.uniforms.waves.value=c.perlin.waves,m.uniforms.eqcolor.value=c.perlin.eqcolor,m.uniforms.fragment.value=c.perlin.fragment,m.uniforms.r_color.value=c.rgb.r_color,m.uniforms.g_color.value=c.rgb.g_color,m.uniforms.b_color.value=c.rgb.b_color,E=!1)}document.addEventListener(`visibilitychange`,()=>{b=!document.hidden,b&&(v=0)},{passive:!0});function R(e){switch(e){case`LOW`:i.detail=5,o.targetFPS=30,a.antialias=!1,a.maxPixelRatio=1,S=30;break;case`MEDIUM`:i.detail=5,o.targetFPS=45,a.antialias=!0,a.maxPixelRatio=1.5,S=45;break;default:i.detail=6,o.targetFPS=60,a.antialias=!0,S=60;let e=navigator.userAgent.toLowerCase().includes(`mac`),t=window.devicePixelRatio>=2;a.maxPixelRatio=e&&t?1.5:2}console.log(`Performance profile set to: ${e} (FPS: ${S})`)}function z(){let e=navigator.userAgent.toLowerCase(),t=/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(e),n=/ipad|tablet|playbook|silk/i.test(e),r=/iphone|ipad|ipod/i.test(e),i=/android/i.test(e),a=/chrome/i.test(e),o=/firefox/i.test(e),s=/safari/i.test(e)&&!a,c=navigator.hardwareConcurrency||4,l=performance.memory?performance.memory.jsHeapSizeLimit:0,u=window.devicePixelRatio||1,d=`DESKTOP`;n?d=`TABLET`:t&&(d=`MOBILE`);let f=0;if(c>=8?f+=3:c>=6?f+=2:c>=4&&(f+=1),l>0&&(l>2e9?f+=3:l>1e9?f+=2:l>5e8&&(f+=1)),a?f+=2:(o||s)&&(f+=1),d===`DESKTOP`)f+=3;else if(d===`TABLET`)f+=2;else if(d===`MOBILE`){if(r){let t=/iphone (1[2-9]|[2-9][0-9])|iphone [89]|iphone x/i.test(e);f+=t?2:1}else f+=i&&c>=6?2:1}u>=3?f+=2:u>=2&&(f+=1);let p;p=f>=10?`HIGH`:f>=6?`MEDIUM`:`LOW`,console.log(`Performance detection: 231 Device: ${d} 232 Cores: ${c} 233 Memory: ${l>0?(l/1e9).toFixed(1)+`GB`:`unknown`} 234 Browser: ${a?`Chrome`:o?`Firefox`:s?`Safari`:`Other`} 235 Pixel Ratio: ${u} 236 Performance Score: ${f} 237 Profile: ${p}`),R(p)}
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.