@rr0/ufoathome 0.59.0 → 0.60.0

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.
package/README.md CHANGED
@@ -282,14 +282,20 @@ coverage floor:
282
282
  shortens when it points away from the observer instead of across their sky. Half the apparitions have no
283
283
  recorded tail length and are drawn with no tail at all.
284
284
 
285
- - **Satellites** (`src/engine/astronomy/Satellites.ts`). Not which one historical orbital elements
286
- cannot be obtained, and propagating today's back to 1965 would invent a precise, confident pass.
287
- What is complete is the ILLUMINATION: `h = R(sec B - 1)` gives how high the Earth's shadow stood
285
+ - **Satellites** (`src/engine/astronomy/Satellites.ts`). For every date, the ILLUMINATION: `h = R(sec B - 1)` gives how high the Earth's shadow stood
288
286
  above the witness, so deep in the night nothing in low orbit is lit and a light crossing the sky
289
287
  then was not a satellite. Being lit and being seen are kept apart — everything in orbit is sunlit
290
288
  by day, and an Iridium flare at magnitude -8 was genuinely watched at noon. Also complete, and
291
289
  from CelesTrak's SATCAT: how many tracked objects were in orbit that month, and when each named
292
290
  class existed (Echo balloons, Iridium flares, ISS, Starlink trains).
291
+ And from February 2021, WHICH ones (`TleArchive.ts`, `SatellitePasses.ts`): Laurent Chabin (SCEAU)
292
+ has saved the public element sets once or twice a day since then. They are propagated with SGP4
293
+ (satellite.js), lit through the Earth's umbra and penumbra, and given the magnitudes that were
294
+ measured — McCants' standard magnitudes, then Stellarium's for later objects, Mallama's for
295
+ Starlink, with the orbit-raising value that makes a train as bright as it is reported. A set is
296
+ never used more than a week from its epoch; the archive's holes are reported as holes. Before
297
+ 2021 no pass is drawn: propagating today's elements back to 1965 would invent a precise,
298
+ confident pass.
293
299
 
294
300
  - **What the air itself did to the light** (`src/engine/atmosphere/`). Two families, and neither is drawn form by
295
301
  form. The ICE one traces sunlight through hexagonal prisms in a cirrus deck (`IceCrystal.ts`, `HaloSky.ts`) and
@@ -317,6 +323,15 @@ is its state on the way down — Echo 1 is listed at 419 x 394 km and spent its
317
323
  using them to describe a historical orbit would be quietly wrong. Which classes are worth naming,
318
324
  and how bright they got, stay hand-entered in the script; every date is derived.
319
325
 
326
+ **Rebuilding the orbital element archive.** `npm run build:tle` reads a local copy of
327
+ [ufowaves.org/gp/my_tles](https://ufowaves.org/gp/my_tles/) in `scripts/data/tle/<year>/` (the
328
+ `Visible` zips and the `tle/*_visual.tle` and `*_starlink.tle` files), plus `scripts/data/satcat.csv`
329
+ for launch dates and `scripts/data/qs.mag` ([McCants](https://www.mmccants.org/programs/qsmag.zip))
330
+ and `scripts/data/stellarium-satellites.json` for magnitudes, and writes `public/tle/` (committed, served by ufoathome.org at `/tle/`):
331
+ weekly 44-byte-record bins per list, the object names, and an index with the archive's gaps. Every
332
+ day is kept for naked-eye objects and for Starlinks in their first 60 days; one set a week otherwise.
333
+ 838 MB of snapshots become 44 MB. Rebuild and commit it when the archive has grown.
334
+
320
335
  **Regenerating the comet catalog.** `src/engine/astronomy/cometCatalog.ts` is generated by
321
336
  `npm run build:comets`, which asks [JPL Horizons](https://ssd.jpl.nasa.gov/horizons/) for osculating elements at
322
337
  each apparition's own perihelion and caches the answers under `scripts/data/horizons/` (gitignored). The list of
@@ -968,6 +983,7 @@ npm run build:all # all three
968
983
  npm run build:site # ufoathome.org, into dist-site/
969
984
  npm run build:comets # regenerate the comet catalog from JPL Horizons
970
985
  npm run build:satellites # regenerate the satellite catalog from CelesTrak's SATCAT
986
+ npm run build:tle # rebuild public/tle/ from a local copy of the orbital element archive
971
987
  ```
972
988
 
973
989
  ## The site
@@ -0,0 +1 @@
1
+ var Pa=Math.PI,R=Pa*2,$a=Pa/180,V0=1440,j0=398600.8,La=6378.135,Xa=60/Math.sqrt(La*La*La/j0),C0=La*Xa/60,R0=1/Xa,n0=.001082616,ar=-253881e-11,rr=-165597e-11,o0=ar/n0,x0=2/3,nr=1440/(2*Pa);function or(r,n){for(var o=[31,r%4===0?29:28,31,30,31,30,31,31,30,31,30,31],v=Math.floor(n),e=1,t=0;v>t+o[e-1]&&e<12;)t+=o[e-1],e+=1;var d=e,s=v-t,h=(n-v)*24,m=Math.floor(h);h=(h-m)*60;var c=Math.floor(h),l=(h-c)*60;return{mon:d,day:s,hr:m,minute:c,sec:l}}function S0(r,n,o,v,e,t){var d=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0;return 367*r-Math.floor(7*(r+Math.floor((n+9)/12))*.25)+Math.floor(275*n/9)+o+17210135e-1+((d/6e4+t/60+e)/60+v)/24}function M0(r,n,o,v,e,t){var d=arguments.length>6&&arguments[6]!==void 0?arguments[6]:0;if(r instanceof Date){var s=r;return S0(s.getUTCFullYear(),s.getUTCMonth()+1,s.getUTCDate(),s.getUTCHours(),s.getUTCMinutes(),s.getUTCSeconds(),s.getUTCMilliseconds())}return S0(r,n,o,v,e,t,d)}function B0(r,n){var o=r.e3,v=r.ee2,e=r.peo,t=r.pgho,d=r.pho,s=r.pinco,h=r.plo,m=r.se2,c=r.se3,l=r.sgh2,T=r.sgh3,f=r.sgh4,V=r.sh2,G=r.sh3,B=r.si2,E=r.si3,X=r.sl2,k=r.sl3,U=r.sl4,u=r.t,g=r.xgh2,K=r.xgh3,z=r.xgh4,w=r.xh2,ea=r.xh3,Z=r.xi2,O=r.xi3,aa=r.xl2,Q=r.xl3,ta=r.xl4,y=r.zmol,ia=r.zmos,J=n.init,W=n.opsmode,sa=n.ep,S=n.inclp,N=n.nodep,Oa=n.argpp,ma=n.mp,M,x,ra,L,$,I,Aa,na,ca,D,C,oa,q,A,P,p,_,H,j,F,Y,la=119459e-10,ga=.01675,Ma=.00015835218,pa=.0549;Y=ia+la*u,J==="y"&&(Y=ia),F=Y+2*ga*Math.sin(Y),_=Math.sin(F),D=.5*_*_-.25,C=-.5*_*Math.cos(F);var Da=m*D+c*C,qa=B*D+E*C,a=X*D+k*C+U*_,xa=l*D+T*C+f*_,da=V*D+G*C;Y=y+Ma*u,J==="y"&&(Y=y),F=Y+2*pa*Math.sin(Y),_=Math.sin(F),D=.5*_*_-.25,C=-.5*_*Math.cos(F);var Ca=v*D+o*C,Ea=Z*D+O*C,va=aa*D+Q*C+ta*_,fa=g*D+K*C+z*_,ka=w*D+ea*C;return oa=Da+Ca,P=qa+Ea,p=a+va,q=xa+fa,A=da+ka,J==="n"&&(oa-=e,P-=s,p-=h,q-=t,A-=d,S+=P,sa+=oa,L=Math.sin(S),ra=Math.cos(S),S>=.2?(A/=L,q-=ra*A,Oa+=q,N+=A,ma+=p):(I=Math.sin(N),$=Math.cos(N),M=L*I,x=L*$,Aa=A*$+P*ra*I,na=-A*I+P*ra*$,M+=Aa,x+=na,N%=R,N<0&&W==="a"&&(N+=R),H=ma+Oa+ra*N,ca=p+q-P*N*L,H+=ca,j=N,N=Math.atan2(M,x),N<0&&W==="a"&&(N+=R),Math.abs(j-N)>Pa&&(N<j?N+=R:N-=R),ma+=p,Oa=H-ma-ra*N)),{ep:sa,inclp:S,nodep:N,argpp:Oa,mp:ma}}function vr(r){var n=r.epoch,o=r.ep,v=r.argpp,e=r.tc,t=r.inclp,d=r.nodep,s=r.np,h,m,c,l,T,f,V,G,B,E,X,k,U,u,g,K,z,w,ea,Z,O,aa,Q,ta,y,ia,J,W,sa,S,N,Oa,ma,M,x,ra,L,$,I,Aa,na,ca,D,C,oa,q,A,P,p,_,H,j,F,Y,la,ga,Ma,pa,Da,qa,a,xa,da,Ca=.01675,Ea=.0549,va=29864797e-13,fa=47968065e-14,ka=.39785416,wa=.91744867,za=.1945905,Ya=-.98088458,_a=s,Ka=o,Fa=Math.sin(d),ba=Math.cos(d),ya=Math.sin(v),Na=Math.cos(v),Ba=Math.sin(t),Wa=Math.cos(t),i=Ka*Ka,Ua=1-i,Sa=Math.sqrt(Ua),Va=0,b=0,v0=0,d0=0,h0=0,Ga=n+18261.5+e/1440,Ha=(4.523602-.00092422029*Ga)%R,ua=Math.sin(Ha),Za=Math.cos(Ha),e0=.91375164-.03568096*Za,t0=Math.sqrt(1-e0*e0),Ta=.089683511*ua/t0,Ia=Math.sqrt(1-Ta*Ta),ha=5.8351514+.001944368*Ga,ja=.39785416*ua/t0,f0=Ia*Za+.91744867*Ta*ua;ja=Math.atan2(ja,f0),ja+=ha-Ha;var z0=Math.cos(ja),p0=Math.sin(ja);Z=za,O=Ya,ta=wa,y=ka,aa=ba,Q=Fa,X=va;for(var u0=1/_a,s0=0;s0<2;)s0+=1,h=Z*aa+O*ta*Q,c=-O*aa+Z*ta*Q,V=-Z*Q+O*ta*aa,G=O*y,B=O*Q+Z*ta*aa,E=Z*y,m=Wa*V+Ba*G,l=Wa*B+Ba*E,T=-Ba*V+Wa*G,f=-Ba*B+Wa*E,k=h*Na+m*ya,U=c*Na+l*ya,u=-h*ya+m*Na,g=-c*ya+l*Na,K=T*ya,z=f*ya,w=T*Na,ea=f*Na,a=12*k*k-3*u*u,xa=24*k*U-6*u*g,da=12*U*U-3*g*g,j=3*(h*h+m*m)+a*i,F=6*(h*c+m*l)+xa*i,Y=3*(c*c+l*l)+da*i,la=-6*h*T+i*(-24*k*w-6*u*K),ga=-6*(h*f+c*T)+i*(-24*(U*w+k*ea)+-6*(u*z+g*K)),Ma=-6*c*f+i*(-24*U*ea-6*g*z),pa=6*m*T+i*(24*k*K-6*u*w),Da=6*(l*T+m*f)+i*(24*(U*K+k*z)-6*(g*w+u*ea)),qa=6*l*f+i*(24*U*z-6*g*ea),j=j+j+Ua*a,F=F+F+Ua*xa,Y=Y+Y+Ua*da,A=X*u0,q=-.5*A/Sa,P=A*Sa,oa=-15*Ka*P,p=k*u+U*g,_=U*u+k*g,H=U*g-k*u,s0===1&&(ia=oa,J=q,W=A,sa=P,S=p,N=_,Oa=H,ma=j,M=F,x=Y,ra=la,L=ga,$=Ma,I=pa,Aa=Da,na=qa,ca=a,D=xa,C=da,Z=z0,O=p0,ta=e0,y=t0,aa=Ia*ba+Ta*Fa,Q=Fa*Ia-ba*Ta,X=fa);var m0=(4.7199672+(.2299715*Ga-ha))%R,O0=(6.2565837+.017201977*Ga)%R,y0=2*ia*N,Ra=2*ia*Oa,a0=2*J*L,N0=2*J*($-ra),A0=-2*W*M,E0=-2*W*(x-ma),T0=-2*W*(-21-9*i)*Ca,i0=2*sa*D,I0=2*sa*(C-ca),D0=-18*sa*Ca,c0=-2*J*Aa,l0=-2*J*(na-I),g0=2*oa*_,q0=2*oa*H,w0=2*q*ga,K0=2*q*(Ma-la),W0=-2*A*F,H0=-2*A*(Y-j),Y0=-2*A*(-21-9*i)*Ea,G0=2*P*xa,J0=2*P*(da-a),$0=-18*P*Ea,X0=-2*q*Da,Q0=-2*q*(qa-pa);return{snodm:Fa,cnodm:ba,sinim:Ba,cosim:Wa,sinomm:ya,cosomm:Na,day:Ga,e3:q0,ee2:g0,em:Ka,emsq:i,gam:ha,peo:Va,pgho:d0,pho:h0,pinco:b,plo:v0,rtemsq:Sa,se2:y0,se3:Ra,sgh2:i0,sgh3:I0,sgh4:D0,sh2:c0,sh3:l0,si2:a0,si3:N0,sl2:A0,sl3:E0,sl4:T0,s1:oa,s2:q,s3:A,s4:P,s5:p,s6:_,s7:H,ss1:ia,ss2:J,ss3:W,ss4:sa,ss5:S,ss6:N,ss7:Oa,sz1:ma,sz2:M,sz3:x,sz11:ra,sz12:L,sz13:$,sz21:I,sz22:Aa,sz23:na,sz31:ca,sz32:D,sz33:C,xgh2:G0,xgh3:J0,xgh4:$0,xh2:X0,xh3:Q0,xi2:w0,xi3:K0,xl2:W0,xl3:H0,xl4:Y0,nm:_a,z1:j,z2:F,z3:Y,z11:la,z12:ga,z13:Ma,z21:pa,z22:Da,z23:qa,z31:a,z32:xa,z33:da,zmol:m0,zmos:O0}}function er(r){var n=r.cosim,o=r.argpo,v=r.s1,e=r.s2,t=r.s3,d=r.s4,s=r.s5,h=r.sinim,m=r.ss1,c=r.ss2,l=r.ss3,T=r.ss4,f=r.ss5,V=r.sz1,G=r.sz3,B=r.sz11,E=r.sz13,X=r.sz21,k=r.sz23,U=r.sz31,u=r.sz33,g=r.t,K=r.tc,z=r.gsto,w=r.mo,ea=r.mdot,Z=r.no,O=r.nodeo,aa=r.nodedot,Q=r.xpidot,ta=r.z1,y=r.z3,ia=r.z11,J=r.z13,W=r.z21,sa=r.z23,S=r.z31,N=r.z33,Oa=r.ecco,ma=r.eccsq,M=r.emsq,x=r.em,ra=r.argpm,L=r.inclm,$=r.mm,I=r.nm,Aa=r.nodem,na=r.irez,ca=r.atime,D=r.d2201,C=r.d2211,oa=r.d3210,q=r.d3222,A=r.d4410,P=r.d4422,p=r.d5220,_=r.d5232,H=r.d5421,j=r.d5433,F=r.dedt,Y=r.didt,la=r.dmdt,ga=r.dnodt,Ma=r.domdt,pa=r.del1,Da=r.del2,qa=r.del3,a=r.xfact,xa=r.xlamo,da=r.xli,Ca=r.xni,Ea,va,fa,ka,wa,za,Ya,_a,Ka,Fa,ba,ya,Na,Ba,Wa,i,Ua,Sa,Va,b,v0,d0,h0,Ga,Ha,ua,Za,e0,t0,Ta,Ia,ha,ja=17891679e-13,f0=21460748e-13,z0=22123015e-14,p0=17891679e-13,u0=73636953e-16,s0=21765803e-16,m0=.0043752690880113,O0=37393792e-14,y0=11428639e-14,Ra=.00015835218,a0=119459e-10;na=0,I<.0052359877&&I>.0034906585&&(na=1),I>=.00826&&I<=.00924&&x>=.5&&(na=2);var N0=m*a0*f,A0=c*a0*(B+E),E0=-a0*l*(V+G-14-6*M),T0=T*a0*(U+u-6),i0=-a0*c*(X+k);(L<.052359877||L>Pa-.052359877)&&(i0=0),h!==0&&(i0/=h);var I0=T0-n*i0;F=N0+v*Ra*s,Y=A0+e*Ra*(ia+J),la=E0-Ra*t*(ta+y-14-6*M);var D0=d*Ra*(S+N-6),c0=-Ra*e*(W+sa);(L<.052359877||L>Pa-.052359877)&&(c0=0),Ma=I0+D0,ga=i0,h!==0&&(Ma-=n/h*c0,ga+=c0/h);var l0=0,g0=(z+K*m0)%R;if(x+=F*g,L+=Y*g,ra+=Ma*g,Aa+=ga*g,$+=la*g,na!==0){if(Ta=Math.pow(I/Xa,x0),na===2){Ia=n*n;var q0=x;x=Oa;var w0=M;M=ma,ha=x*M,Ba=-.306-(x-.64)*.44,x<=.65?(Wa=3.616-13.247*x+16.29*M,Ua=-19.302+117.39*x-228.419*M+156.591*ha,Sa=-18.9068+109.7927*x-214.6334*M+146.5816*ha,Va=-41.122+242.694*x-471.094*M+313.953*ha,b=-146.407+841.88*x-1629.014*M+1083.435*ha,v0=-532.114+3017.977*x-5740.032*M+3708.276*ha):(Wa=-72.099+331.819*x-508.738*M+266.724*ha,Ua=-346.844+1582.851*x-2415.925*M+1246.113*ha,Sa=-342.585+1554.908*x-2366.899*M+1215.972*ha,Va=-1052.797+4758.686*x-7193.992*M+3651.957*ha,b=-3581.69+16178.11*x-24462.77*M+12422.52*ha,x>.715?v0=-5149.66+29936.92*x-54087.36*M+31324.56*ha:v0=1464.74-4664.75*x+3763.64*M),x<.7?(Ga=-919.2277+4988.61*x-9064.77*M+5542.21*ha,d0=-822.71072+4568.6173*x-8491.4146*M+5337.524*ha,h0=-853.666+4690.25*x-8624.77*M+5341.4*ha):(Ga=-37995.78+161616.52*x-229838.2*M+109377.94*ha,d0=-51752.104+218913.95*x-309468.16*M+146349.42*ha,h0=-40023.88+170470.89*x-242699.48*M+115605.82*ha),Ha=h*h,Ea=.75*(1+2*n+Ia),va=1.5*Ha,ka=1.875*h*(1-2*n-3*Ia),wa=-1.875*h*(1+2*n-3*Ia),Ya=35*Ha*Ea,_a=39.375*Ha*Ha,Ka=9.84375*h*(Ha*(1-2*n-5*Ia)+.33333333*(-2+4*n+6*Ia)),Fa=h*(4.92187512*Ha*(-2-4*n+10*Ia)+6.56250012*(1+2*n-3*Ia)),ba=29.53125*h*(2-8*n+Ia*(-12+8*n+10*Ia)),ya=29.53125*h*(-2-8*n+Ia*(12+8*n-10*Ia)),e0=I*I,t0=Ta*Ta,Za=3*e0*t0,ua=Za*p0,D=ua*Ea*Ba,C=ua*va*Wa,Za*=Ta,ua=Za*O0,oa=ua*ka*Ua,q=ua*wa*Sa,Za*=Ta,ua=2*Za*u0,A=ua*Ya*Va,P=ua*_a*b,Za*=Ta,ua=Za*y0,p=ua*Ka*v0,_=ua*Fa*h0,ua=2*Za*s0,H=ua*ba*d0,j=ua*ya*Ga,xa=(w+O+O-(g0+g0))%R,a=ea+la+2*(aa+ga-m0)-Z,x=q0,M=w0}na===1&&(Na=1+M*(-2.5+.8125*M),Ua=1+2*M,i=1+M*(-6+6.60937*M),Ea=.75*(1+n)*(1+n),fa=.9375*h*h*(1+3*n)-.75*(1+n),za=1+n,za*=1.875*za*za,pa=3*I*I*Ta*Ta,Da=2*pa*Ea*Na*ja,qa=3*pa*za*i*z0*Ta,pa=pa*fa*Ua*f0*Ta,xa=(w+O+o-g0)%R,a=ea+Q+la+Ma+ga-(Z+m0)),da=xa,Ca=Z,ca=0,I=Z+l0}return{em:x,argpm:ra,inclm:L,mm:$,nm:I,nodem:Aa,irez:na,atime:ca,d2201:D,d2211:C,d3210:oa,d3222:q,d4410:A,d4422:P,d5220:p,d5232:_,d5421:H,d5433:j,dedt:F,didt:Y,dmdt:la,dndt:l0,dnodt:ga,domdt:Ma,del1:pa,del2:Da,del3:qa,xfact:a,xlamo:xa,xli:da,xni:Ca}}function L0(r){var n=(r-2451545)/36525,o=-62e-7*n*n*n+.093104*n*n+(876600*3600+8640184812866e-6)*n+67310.54841;return o=o*$a/240%R,o<0&&(o+=R),o}function U0(r,n,o,v,e,t,d){return r instanceof Date?L0(M0(r)):L0(r)}function tr(r){var n=r.ecco,o=r.epoch,v=r.inclo,e=r.opsmode,t=r.no,d=n*n,s=1-d,h=Math.sqrt(s),m=Math.cos(v),c=m*m,l=Math.pow(Xa/t,x0),T=.75*n0*(3*c-1)/(h*s),f=T/(l*l),V=l*(1-f*f-f*(1/3+134*f*f/81));f=T/(V*V),t/=1+f;var G=Math.pow(Xa/t,x0),B=Math.sin(v),E=G*s,X=1-5*c,k=-X-c-c,U=1/G,u=E*E,g=G*(1-n),K="n",z;if(e==="a"){var w=o-7305,ea=Math.floor(w+1e-8),Z=w-ea,O=.017202791694070362,aa=1.7321343856509375,Q=5075514194322695e-30,ta=O+R;z=(aa+O*ea+ta*Z+w*w*Q)%R,z<0&&(z+=R)}else z=U0(o+24332815e-1);return{no:t,method:K,ainv:U,ao:G,con41:k,con42:X,cosio:m,cosio2:c,eccsq:d,omeosq:s,posq:u,rp:g,rteosq:h,sinio:B,gsto:z}}function ir(r){var n=r.irez,o=r.d2201,v=r.d2211,e=r.d3210,t=r.d3222,d=r.d4410,s=r.d4422,h=r.d5220,m=r.d5232,c=r.d5421,l=r.d5433,T=r.dedt,f=r.del1,V=r.del2,G=r.del3,B=r.didt,E=r.dmdt,X=r.dnodt,k=r.domdt,U=r.argpo,u=r.argpdot,g=r.t,K=r.tc,z=r.gsto,w=r.xfact,ea=r.xlamo,Z=r.no,O=r.atime,aa=r.em,Q=r.argpm,ta=r.inclm,y=r.xli,ia=r.mm,J=r.xni,W=r.nodem,sa=r.nm,S=.13130908,N=2.8843198,Oa=.37448087,ma=5.7686396,M=.95240898,x=1.8014998,ra=1.050833,L=4.4108898,$=.0043752690880113,I=720,Aa=-720,na=259200,ca,D,C,oa,q,A,P,p,_=0,H=0,j=(z+K*$)%R;if(aa+=T*g,ta+=B*g,Q+=k*g,W+=X*g,ia+=E*g,n!==0){(O===0||g*O<=0||Math.abs(g)<Math.abs(O))&&(O=0,J=Z,y=ea),g>0?ca=I:ca=Aa;for(var F=381;F===381;)n!==2?(P=f*Math.sin(y-S)+V*Math.sin(2*(y-N))+G*Math.sin(3*(y-Oa)),q=J+w,A=f*Math.cos(y-S)+2*V*Math.cos(2*(y-N))+3*G*Math.cos(3*(y-Oa)),A*=q):(p=U+u*O,C=p+p,D=y+y,P=o*Math.sin(C+y-ma)+v*Math.sin(y-ma)+e*Math.sin(p+y-M)+t*Math.sin(-p+y-M)+d*Math.sin(C+D-x)+s*Math.sin(D-x)+h*Math.sin(p+y-ra)+m*Math.sin(-p+y-ra)+c*Math.sin(p+D-L)+l*Math.sin(-p+D-L),q=J+w,A=o*Math.cos(C+y-ma)+v*Math.cos(y-ma)+e*Math.cos(p+y-M)+t*Math.cos(-p+y-M)+h*Math.cos(p+y-ra)+m*Math.cos(-p+y-ra)+2*(d*Math.cos(C+D-x)+s*Math.cos(D-x)+c*Math.cos(p+D-L)+l*Math.cos(-p+D-L)),A*=q),Math.abs(g-O)>=I?F=381:(H=g-O,F=0),F===381&&(y+=q*ca+P*na,J+=P*ca+A*na,O+=ca);sa=J+P*H+A*H*H*.5,oa=y+q*H+P*H*H*.5,n!==1?(ia=oa-2*W+2*j,_=sa-Z):(ia=oa-W-Q+j,_=sa-Z),sa=Z+_}return{atime:O,em:aa,argpm:Q,inclm:ta,xli:y,mm:ia,xni:J,nodem:W,dndt:_,nm:sa}}var Qa;(function(r){r[r.None=0]="None",r[r.MeanEccentricityOutOfRange=1]="MeanEccentricityOutOfRange",r[r.MeanMotionBelowZero=2]="MeanMotionBelowZero",r[r.PerturbedEccentricityOutOfRange=3]="PerturbedEccentricityOutOfRange",r[r.SemiLatusRectumBelowZero=4]="SemiLatusRectumBelowZero",r[r.Decayed=6]="Decayed"})(Qa||(Qa={}));function Z0(r,n){var o,v,e,t,d,s,h,m,c,l,T,f,V,G,B,E,X,k,U,u,g,K,z,w,ea,Z,O,aa=15e-13;r.t=n,r.error=Qa.None;var Q=r.mo+r.mdot*r.t,ta=r.argpo+r.argpdot*r.t,y=r.nodeo+r.nodedot*r.t;c=ta,g=Q;var ia=r.t*r.t;if(z=y+r.nodecf*ia,X=1-r.cc1*r.t,k=r.bstar*r.cc4*r.t,U=r.t2cof*ia,r.isimp!==1){h=r.omgcof*r.t;var J=1+r.eta*Math.cos(Q);s=r.xmcof*(J*J*J-r.delmo),E=h+s,g=Q+E,c=ta-E,f=ia*r.t,V=f*r.t,X=X-r.d2*ia-r.d3*f-r.d4*V,k+=r.bstar*r.cc5*(Math.sin(g)-r.sinmao),U=U+r.t3cof*f+V*(r.t4cof+r.t*r.t5cof)}K=r.no;var W=r.ecco;if(u=r.inclo,r.method==="d"){G=r.t;var sa={irez:r.irez,d2201:r.d2201,d2211:r.d2211,d3210:r.d3210,d3222:r.d3222,d4410:r.d4410,d4422:r.d4422,d5220:r.d5220,d5232:r.d5232,d5421:r.d5421,d5433:r.d5433,dedt:r.dedt,del1:r.del1,del2:r.del2,del3:r.del3,didt:r.didt,dmdt:r.dmdt,dnodt:r.dnodt,domdt:r.domdt,argpo:r.argpo,argpdot:r.argpdot,t:r.t,tc:G,gsto:r.gsto,xfact:r.xfact,xlamo:r.xlamo,no:r.no,atime:r.atime,em:W,argpm:c,inclm:u,xli:r.xli,mm:g,xni:r.xni,nodem:z,nm:K},S=ir(sa);W=S.em,c=S.argpm,u=S.inclm,g=S.mm,z=S.nodem,K=S.nm}if(K<=0)return r.error=Qa.MeanMotionBelowZero,null;var N=Math.pow(Xa/K,x0)*X*X;if(K=Xa/Math.pow(N,1.5),W-=k,W>=1||W<-.001)return r.error=Qa.MeanEccentricityOutOfRange,null;W<1e-6&&(W=1e-6),g+=r.no*U,ea=g+c+z,z%=R,c%=R,ea%=R,g=(ea-c-z)%R;var Oa={am:N,em:W,im:u,Om:z,om:c,mm:g,nm:K},ma=Math.sin(u),M=Math.cos(u),x=W;if(w=u,l=c,O=z,Z=g,t=ma,e=M,r.method==="d"){var ra={inclo:r.inclo,init:"n",ep:x,inclp:w,nodep:O,argpp:l,mp:Z,opsmode:r.operationmode},L=B0(r,ra);if(x=L.ep,O=L.nodep,l=L.argpp,Z=L.mp,w=L.inclp,w<0&&(w=-w,O+=Pa,l-=Pa),x<0||x>1)return r.error=Qa.PerturbedEccentricityOutOfRange,null}r.method==="d"&&(t=Math.sin(w),e=Math.cos(w),r.aycof=-.5*o0*t,Math.abs(e+1)>15e-13?r.xlcof=-.25*o0*t*(3+5*e)/(1+e):r.xlcof=-.25*o0*t*(3+5*e)/aa);var $=x*Math.cos(l);E=1/(N*(1-x*x));var I=x*Math.sin(l)+E*r.aycof,Aa=Z+l+O+E*r.xlcof*$,na=(Aa-O)%R;m=na,B=9999.9;for(var ca=1;Math.abs(B)>=1e-12&&ca<=10;)v=Math.sin(m),o=Math.cos(m),B=1-o*$-v*I,B=(na-I*o+$*v-m)/B,Math.abs(B)>=.95&&(B>0?B=.95:B=-.95),m+=B,ca+=1;var D=$*o+I*v,C=$*v-I*o,oa=$*$+I*I,q=N*(1-oa);if(q<0)return r.error=Qa.SemiLatusRectumBelowZero,null;var A=N*(1-D),P=Math.sqrt(N)*C/A,p=Math.sqrt(q)/A,_=Math.sqrt(1-oa);E=C/(1+_);var H=N/A*(v-I-$*E),j=N/A*(o-$+I*E);T=Math.atan2(H,j);var F=(j+j)*H,Y=1-2*H*H;E=1/q;var la=.5*n0*E,ga=la*E;r.method==="d"&&(d=e*e,r.con41=3*d-1,r.x1mth2=1-d,r.x7thm1=7*d-1);var Ma=A*(1-1.5*ga*_*r.con41)+.5*la*r.x1mth2*Y;if(Ma<1)return r.error=Qa.Decayed,null;T-=.25*ga*r.x7thm1*F;var pa=O+1.5*ga*e*F,Da=w+1.5*ga*e*t*Y,qa=P-K*la*r.x1mth2*F/Xa,a=p+K*la*(r.x1mth2*Y+1.5*r.con41)/Xa,xa=Math.sin(T),da=Math.cos(T),Ca=Math.sin(pa),Ea=Math.cos(pa),va=Math.sin(Da),fa=Math.cos(Da),ka=-Ca*fa,wa=Ea*fa,za=ka*xa+Ea*da,Ya=wa*xa+Ca*da,_a=va*xa,Ka=ka*da-Ea*xa,Fa=wa*da-Ca*xa,ba=va*da,ya={x:Ma*za*La,y:Ma*Ya*La,z:Ma*_a*La},Na={x:(qa*za+a*Ka)*C0,y:(qa*Ya+a*Fa)*C0,z:(qa*_a+a*ba)*C0};return{position:ya,velocity:Na,meanElements:Oa}}function dr(r,n){var o=n.opsmode,v=n.epoch,e=n.xbstar,t=n.xecco,d=n.xargpo,s=n.xinclo,h=n.xmo,m=n.xno,c=n.xnodeo,l,T,f,V,G,B,E,X,k,U,u,g,K,z,w,ea,Z,O,aa,Q,ta,y,ia,J,W,sa,S,N,Oa,ma,M,x,ra,L,$,I,Aa,na,ca,D,C,oa,q,A,P,p,_,H,j,F,Y,la,ga,Ma,pa,Da,qa=15e-13,a=r;a.isimp=0,a.method="n",a.aycof=0,a.con41=0,a.cc1=0,a.cc4=0,a.cc5=0,a.d2=0,a.d3=0,a.d4=0,a.delmo=0,a.eta=0,a.argpdot=0,a.omgcof=0,a.sinmao=0,a.t=0,a.t2cof=0,a.t3cof=0,a.t4cof=0,a.t5cof=0,a.x1mth2=0,a.x7thm1=0,a.mdot=0,a.nodedot=0,a.xlcof=0,a.xmcof=0,a.nodecf=0,a.irez=0,a.d2201=0,a.d2211=0,a.d3210=0,a.d3222=0,a.d4410=0,a.d4422=0,a.d5220=0,a.d5232=0,a.d5421=0,a.d5433=0,a.dedt=0,a.del1=0,a.del2=0,a.del3=0,a.didt=0,a.dmdt=0,a.dnodt=0,a.domdt=0,a.e3=0,a.ee2=0,a.peo=0,a.pgho=0,a.pho=0,a.pinco=0,a.plo=0,a.se2=0,a.se3=0,a.sgh2=0,a.sgh3=0,a.sgh4=0,a.sh2=0,a.sh3=0,a.si2=0,a.si3=0,a.sl2=0,a.sl3=0,a.sl4=0,a.gsto=0,a.xfact=0,a.xgh2=0,a.xgh3=0,a.xgh4=0,a.xh2=0,a.xh3=0,a.xi2=0,a.xi3=0,a.xl2=0,a.xl3=0,a.xl4=0,a.xlamo=0,a.zmol=0,a.zmos=0,a.atime=0,a.xli=0,a.xni=0,a.bstar=e,a.ecco=t,a.argpo=d,a.inclo=s,a.mo=h,a.no=m,a.nodeo=c,a.operationmode=o;var xa=78/La+1,da=42/La,Ca=da*da*da*da;a.init="y",a.t=0;var Ea={ecco:a.ecco,epoch:v,inclo:a.inclo,no:a.no,method:a.method,opsmode:a.operationmode},va=tr(Ea),fa=va.ao,ka=va.con42,wa=va.cosio,za=va.cosio2,Ya=va.eccsq,_a=va.omeosq,Ka=va.posq,Fa=va.rp,ba=va.rteosq,ya=va.sinio;if(a.no=va.no,a.con41=va.con41,a.gsto=va.gsto,a.a=Math.pow(a.no*R0,-2/3),a.alta=a.a*(1+a.ecco)-1,a.altp=a.a*(1-a.ecco)-1,a.error=0,_a>=0||a.no>=0){if(a.isimp=0,Fa<220/La+1&&(a.isimp=1),S=xa,ta=Ca,O=(Fa-1)*La,O<156){S=O-78,O<98&&(S=20);var Na=(120-S)/La;ta=Na*Na*Na*Na,S=S/La+1}aa=1/Ka,p=1/(fa-S),a.eta=fa*a.ecco*p,g=a.eta*a.eta,u=a.ecco*a.eta,Q=Math.abs(1-g),B=ta*Math.pow(p,4),E=B/Math.pow(Q,3.5),V=E*a.no*(fa*(1+1.5*g+u*(4+g))+.375*n0*p/Q*a.con41*(8+3*g*(8+g))),a.cc1=a.bstar*V,G=0,a.ecco>1e-4&&(G=-2*B*p*o0*a.no*ya/a.ecco),a.x1mth2=1-za,a.cc4=2*a.no*E*fa*_a*(a.eta*(2+.5*g)+a.ecco*(.5+2*g)-n0*p/(fa*Q)*(-3*a.con41*(1-2*u+g*(1.5-.5*u))+.75*a.x1mth2*(2*g-u*(1+g))*Math.cos(2*a.argpo))),a.cc5=2*E*fa*_a*(1+2.75*(g+u)+u*g),X=za*za,q=1.5*n0*aa*a.no,A=.5*q*n0*aa,P=-.46875*rr*aa*aa*a.no,a.mdot=a.no+.5*q*ba*a.con41+.0625*A*ba*(13-78*za+137*X),a.argpdot=-.5*q*ka+.0625*A*(7-114*za+395*X)+P*(3-36*za+49*X),H=-q*wa,a.nodedot=H+(.5*A*(4-19*za)+2*P*(3-7*za))*wa,_=a.argpdot+a.nodedot,a.omgcof=a.bstar*G*Math.cos(a.argpo),a.xmcof=0,a.ecco>1e-4&&(a.xmcof=-x0*B*a.bstar/u),a.nodecf=3.5*_a*H*a.cc1,a.t2cof=1.5*a.cc1,Math.abs(wa+1)>15e-13?a.xlcof=-.25*o0*ya*(3+5*wa)/(1+wa):a.xlcof=-.25*o0*ya*(3+5*wa)/qa,a.aycof=-.5*o0*ya;var Ba=1+a.eta*Math.cos(a.mo);if(a.delmo=Ba*Ba*Ba,a.sinmao=Math.sin(a.mo),a.x7thm1=7*za-1,2*Pa/a.no>=225){a.method="d",a.isimp=1,C=0,w=a.inclo;var Wa={epoch:v,ep:a.ecco,argpp:a.argpo,tc:C,inclp:a.inclo,nodep:a.nodeo,np:a.no,e3:a.e3,ee2:a.ee2,peo:a.peo,pgho:a.pgho,pho:a.pho,pinco:a.pinco,plo:a.plo,se2:a.se2,se3:a.se3,sgh2:a.sgh2,sgh3:a.sgh3,sgh4:a.sgh4,sh2:a.sh2,sh3:a.sh3,si2:a.si2,si3:a.si3,sl2:a.sl2,sl3:a.sl3,sl4:a.sl4,xgh2:a.xgh2,xgh3:a.xgh3,xgh4:a.xgh4,xh2:a.xh2,xh3:a.xh3,xi2:a.xi2,xi3:a.xi3,xl2:a.xl2,xl3:a.xl3,xl4:a.xl4,zmol:a.zmol,zmos:a.zmos},i=vr(Wa);a.e3=i.e3,a.ee2=i.ee2,a.peo=i.peo,a.pgho=i.pgho,a.pho=i.pho,a.pinco=i.pinco,a.plo=i.plo,a.se2=i.se2,a.se3=i.se3,a.sgh2=i.sgh2,a.sgh3=i.sgh3,a.sgh4=i.sgh4,a.sh2=i.sh2,a.sh3=i.sh3,a.si2=i.si2,a.si3=i.si3,a.sl2=i.sl2,a.sl3=i.sl3,a.sl4=i.sl4,T=i.sinim,l=i.cosim,k=i.em,U=i.emsq,y=i.s1,ia=i.s2,J=i.s3,W=i.s4,sa=i.s5,N=i.ss1,Oa=i.ss2,ma=i.ss3,M=i.ss4,x=i.ss5,ra=i.sz1,L=i.sz3,$=i.sz11,I=i.sz13,Aa=i.sz21,na=i.sz23,ca=i.sz31,D=i.sz33,a.xgh2=i.xgh2,a.xgh3=i.xgh3,a.xgh4=i.xgh4,a.xh2=i.xh2,a.xh3=i.xh3,a.xi2=i.xi2,a.xi3=i.xi3,a.xl2=i.xl2,a.xl3=i.xl3,a.xl4=i.xl4,a.zmol=i.zmol,a.zmos=i.zmos,Z=i.nm,j=i.z1,F=i.z3,Y=i.z11,la=i.z13,ga=i.z21,Ma=i.z23,pa=i.z31,Da=i.z33;var Ua={inclo:w,init:a.init,ep:a.ecco,inclp:a.inclo,nodep:a.nodeo,argpp:a.argpo,mp:a.mo,opsmode:a.operationmode},Sa=B0(a,Ua);a.ecco=Sa.ep,a.inclo=Sa.inclp,a.nodeo=Sa.nodep,a.argpo=Sa.argpp,a.mo=Sa.mp,K=0,z=0,ea=0;var Va={cosim:l,emsq:U,argpo:a.argpo,s1:y,s2:ia,s3:J,s4:W,s5:sa,sinim:T,ss1:N,ss2:Oa,ss3:ma,ss4:M,ss5:x,sz1:ra,sz3:L,sz11:$,sz13:I,sz21:Aa,sz23:na,sz31:ca,sz33:D,t:a.t,tc:C,gsto:a.gsto,mo:a.mo,mdot:a.mdot,no:a.no,nodeo:a.nodeo,nodedot:a.nodedot,xpidot:_,z1:j,z3:F,z11:Y,z13:la,z21:ga,z23:Ma,z31:pa,z33:Da,ecco:a.ecco,eccsq:Ya,em:k,argpm:K,inclm:w,mm:ea,nm:Z,nodem:z,irez:a.irez,atime:a.atime,d2201:a.d2201,d2211:a.d2211,d3210:a.d3210,d3222:a.d3222,d4410:a.d4410,d4422:a.d4422,d5220:a.d5220,d5232:a.d5232,d5421:a.d5421,d5433:a.d5433,dedt:a.dedt,didt:a.didt,dmdt:a.dmdt,dnodt:a.dnodt,domdt:a.domdt,del1:a.del1,del2:a.del2,del3:a.del3,xfact:a.xfact,xlamo:a.xlamo,xli:a.xli,xni:a.xni},b=er(Va);a.irez=b.irez,a.atime=b.atime,a.d2201=b.d2201,a.d2211=b.d2211,a.d3210=b.d3210,a.d3222=b.d3222,a.d4410=b.d4410,a.d4422=b.d4422,a.d5220=b.d5220,a.d5232=b.d5232,a.d5421=b.d5421,a.d5433=b.d5433,a.dedt=b.dedt,a.didt=b.didt,a.dmdt=b.dmdt,a.dnodt=b.dnodt,a.domdt=b.domdt,a.del1=b.del1,a.del2=b.del2,a.del3=b.del3,a.xfact=b.xfact,a.xlamo=b.xlamo,a.xli=b.xli,a.xni=b.xni}a.isimp!==1&&(f=a.cc1*a.cc1,a.d2=4*fa*p*f,oa=a.d2*p*a.cc1/3,a.d3=(17*fa+S)*oa,a.d4=.5*oa*fa*p*(221*fa+31*S)*a.cc1,a.t3cof=a.d2+2*f,a.t4cof=.25*(3*a.d3+a.cc1*(12*a.d2+10*f)),a.t5cof=.2*(3*a.d4+12*a.cc1*a.d3+6*a.d2*a.d2+15*f*(2*a.d2+f)))}Z0(a,0),a.init="n"}function hr(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"i",o=0,v=r.NORAD_CAT_ID.toString(),e=new Date(r.EPOCH.endsWith("Z")?r.EPOCH:r.EPOCH+"Z"),t=e.getUTCFullYear(),d=Number(t.toString().slice(-2)),s=(e.valueOf()-new Date(Date.UTC(t,0,1,0,0,0)).valueOf())/(86400*1e3)+1,h=Number(r.MEAN_MOTION_DOT),m=Number(r.MEAN_MOTION_DDOT),c=Number(r.BSTAR),l=Number(r.INCLINATION)*$a,T=Number(r.RA_OF_ASC_NODE)*$a,f=Number(r.ECCENTRICITY),V=Number(r.ARG_OF_PERICENTER)*$a,G=Number(r.MEAN_ANOMALY)*$a,B=Number(r.MEAN_MOTION)/nr,E=or(t,s),X=E.mon,k=E.day,U=E.hr,u=E.minute,g=E.sec,K=M0(t,X,k,U,u,g),z={error:o,satnum:v,epochyr:d,epochdays:s,ndot:h,nddot:m,bstar:c,inclo:l,nodeo:T,ecco:f,argpo:V,mo:G,no:B,jdsatepoch:K};return dr(z,{opsmode:n,satn:z.satnum,epoch:z.jdsatepoch-24332815e-1,xbstar:z.bstar,xecco:z.ecco,xargpo:z.argpo,xinclo:z.inclo,xmo:z.mo,xno:z.no,xnodeo:z.nodeo}),z}function P0(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),v=1;v<n;v++)o[v-1]=arguments[v];var e=M0.apply(void 0,o),t=(e-r.jdsatepoch)*V0;return Z0(r,t)}function _0(r){return r*$a}function k0(r){var n=r.longitude,o=r.latitude,v=r.height,e=6378.137,t=6356.7523142,d=(e-t)/e,s=2*d-d*d,h=e/Math.sqrt(1-s*(Math.sin(o)*Math.sin(o))),m=(h+v)*Math.cos(o)*Math.cos(n),c=(h+v)*Math.cos(o)*Math.sin(n),l=(h*(1-s)+v)*Math.sin(o);return{x:m,y:c,z:l}}function sr(r,n){var o=r.x*Math.cos(n)-r.y*Math.sin(n),v=r.x*Math.sin(n)+r.y*Math.cos(n),e=r.z;return{x:o,y:v,z:e}}function F0(r,n){var o=r.x*Math.cos(n)+r.y*Math.sin(n),v=r.x*-Math.sin(n)+r.y*Math.cos(n),e=r.z;return{x:o,y:v,z:e}}function mr(r,n){var o=r.longitude,v=r.latitude,e=k0(r),t=n.x-e.x,d=n.y-e.y,s=n.z-e.z,h=Math.sin(v)*Math.cos(o)*t+Math.sin(v)*Math.sin(o)*d-Math.cos(v)*s,m=-Math.sin(o)*t+Math.cos(o)*d,c=Math.cos(v)*Math.cos(o)*t+Math.cos(v)*Math.sin(o)*d+Math.sin(v)*s;return{topS:h,topE:m,topZ:c}}function cr(r){var n=r.topS,o=r.topE,v=r.topZ,e=Math.sqrt(n*n+o*o+v*v),t=Math.asin(v/e),d=Math.atan2(-o,n)+Pa;return{azimuth:d,elevation:t,rangeSat:e}}function b0(r,n){var o=mr(r,n);return cr(o)}function gr(r){var n=(r-2451545)/36525,o=(280.46+36000.77*n)%360,v=n,e=(357.5277233+35999.05034*v*$a)%R;e<0&&(e+=R);var t=(o+1.914666471*Math.sin(e)+.019994643*Math.sin(2*e))%360*$a,d=(23.439291-.0130042*v)*$a,s=1.000140612-.016708617*Math.cos(e)-139589e-9*Math.cos(2*e),h=[s*Math.cos(t),s*Math.cos(d)*Math.sin(t),s*Math.sin(d)*Math.sin(t)],m=Math.atan(Math.cos(d)*Math.tan(t)),c=m;Math.abs(t-c)>Pa*.5&&(c+=.5*Pa*Math.round((t-m)/(.5*Pa)));var l=Math.asin(Math.sin(d)*Math.sin(t));return{rsun:h,rtasc:c,decl:l}}class Ja{static STARLINK_ERAS=[{launchedFrom:"2019-05-24",magnitude1000Km:5.93},{launchedFrom:"2020-08-07",magnitude1000Km:7.21}];static STARLINK_ORBIT_RAISING={belowKm:357,magnitude1000Km:4.58};static MEASURED_CONSTELLATIONS=[{namePrefix:"ONEWEB-",eras:[{launchedFrom:"2019-02-27",magnitude1000Km:7.18}]},{namePrefix:"SPACEMOBILE-",eras:[{launchedFrom:"2024-09-12",magnitude1000Km:3.77},{launchedFrom:"2025-12-24",magnitude1000Km:4.32}]}];static of(n,o,v,e,t=1/0){if(e<=0)return;let d;if(n.stdMag!==void 0){const s=(1+Math.cos(_0(v)))/2;if(s<=0)return;d=n.stdMag-15.75+2.5*Math.log10(o*o/s)}else{const s=Ja.measured1000Km(n,t);s!==void 0&&(d=s+5*Math.log10(o/1e3))}return d===void 0?void 0:d-2.5*Math.log10(e)}static measured1000Km(n,o=1/0){if(n.kind==="starlink"){const e=Ja.STARLINK_ORBIT_RAISING;return o<e.belowKm?e.magnitude1000Km:Ja.starlinkMagnitude1000Km(n.launch)}const v=Ja.MEASURED_CONSTELLATIONS.find(e=>n.name.startsWith(e.namePrefix));return v?Ja.eraOf(v.eras,n.launch):void 0}static starlinkMagnitude1000Km(n){return Ja.eraOf(Ja.STARLINK_ERAS,n)}static eraOf(n,o){return([...n].reverse().find(e=>o!==void 0&&o>=e.launchedFrom)??n[n.length-1]).magnitude1000Km}}class r0{static CANDIDATE_WINDOW_S=60;static CANDIDATE_BELOW_HORIZON_DEG=-10;records;candidates;constructor(n){this.records=[];for(const o of n){const v=r0.satrecOf(o);v&&this.records.push({object:o,satrec:v})}}get size(){return this.records.length}static satrecOf(n){const o=n.elements;try{const v=hr({OBJECT_NAME:n.name,OBJECT_ID:String(n.norad),EPOCH:new Date(o.epochMs).toISOString().replace("Z",""),MEAN_MOTION:o.meanMotion,ECCENTRICITY:o.eccentricity,INCLINATION:o.inclinationDeg,RA_OF_ASC_NODE:o.raanDeg,ARG_OF_PERICENTER:o.argOfPerigeeDeg,MEAN_ANOMALY:o.meanAnomalyDeg,NORAD_CAT_ID:n.norad,ELEMENT_SET_NO:999,BSTAR:o.bstar,MEAN_MOTION_DOT:0,MEAN_MOTION_DDOT:0});return v.error?void 0:v}catch{return}}positionsAt(n,o,v=0){const e=this.frameAt(n,o),t=[];for(const d of this.candidateIndices(n,o)){const s=this.positionOf(this.records[d],n,e);s&&s.altitudeDeg>=v&&t.push(s)}return t}passesDuring(n,o,v,e=10){const t=[],d=new Map;for(let s=n.getTime();s<=o.getTime();s+=e*1e3){const h=new Date(s);for(const m of this.positionsAt(h,v)){if(m.sunlitFraction<=0)continue;const c=d.get(m.object.norad);if(!c||s-c.end.getTime()>e*1e3){const l={object:m.object,start:h,end:h,peak:{...m,date:h}};d.set(m.object.norad,l),t.push(l);continue}c.end=h,r0.outshines(m,c.peak)&&(c.peak={...m,date:h})}}return t}static outshines(n,o){return n.magnitude!==void 0&&o.magnitude!==void 0?n.magnitude<o.magnitude:n.magnitude!==void 0?!0:o.magnitude!==void 0?!1:n.altitudeDeg>o.altitudeDeg}frameAt(n,o){const v=U0(n),e={latitude:_0(o.lat),longitude:_0(o.lng),height:o.elevationM/1e3},t=sr(k0(e),v),[d,s,h]=gr(M0(n)).rsun;return{gmst:v,geodetic:e,observerEci:t,sunEciAu:{x:d,y:s,z:h}}}positionOf(n,o,v){const e=P0(n.satrec,o);if(!e||!e.position||Number.isNaN(e.position.x))return;const t=e.position,d=b0(v.geodetic,F0(t,v.gmst)),s=1-r0.shadowFraction(t,v.sunEciAu),h=r0.phaseAngleDeg(t,v.sunEciAu,v.observerEci),m=Math.hypot(t.x,t.y,t.z)-6371;return{object:n.object,azimuthDeg:d.azimuth*180/Math.PI,altitudeDeg:d.elevation*180/Math.PI,rangeKm:d.rangeSat,heightKm:m,sunlitFraction:s,phaseAngleDeg:h,magnitude:Ja.of(n.object,d.rangeSat,h,s,m)}}static shadowFraction(n,o){const v=1495978707e-1,e=696e3,t=6378.137,d=[o.x*v-n.x,o.y*v-n.y,o.z*v-n.z],s=Math.hypot(d[0],d[1],d[2]),h=Math.hypot(n.x,n.y,n.z),m=Math.asin(Math.min(1,e/s)),c=Math.asin(Math.min(1,t/h)),l=-(n.x*d[0]+n.y*d[1]+n.z*d[2])/(h*s),T=Math.acos(Math.max(-1,Math.min(1,l)));if(T>=m+c)return 0;if(T<=c-m)return 1;const f=(T*T+m*m-c*c)/(2*T),V=Math.sqrt(Math.max(0,m*m-f*f)),G=m*m*Math.acos(Math.max(-1,Math.min(1,f/m)))+c*c*Math.acos(Math.max(-1,Math.min(1,(T-f)/c)))-T*V;return Math.min(1,Math.max(0,G/(Math.PI*m*m)))}static phaseAngleDeg(n,o,v){const e=1495978707e-1,t=[o.x*e-n.x,o.y*e-n.y,o.z*e-n.z],d=[v.x-n.x,v.y-n.y,v.z-n.z],h=(t[0]*d[0]+t[1]*d[1]+t[2]*d[2])/(Math.hypot(t[0],t[1],t[2])*Math.hypot(d[0],d[1],d[2]));return Math.acos(Math.max(-1,Math.min(1,h)))*180/Math.PI}candidateIndices(n,o){const v=r0.CANDIDATE_WINDOW_S*1e3,e=Math.floor(n.getTime()/v)*v,t=`${o.lat.toFixed(2)},${o.lng.toFixed(2)}`;if(this.candidates?.windowStart===e&&this.candidates.observerKey===t)return this.candidates.indices;const d=new Date(e+v/2),s=this.frameAt(d,o),h=[];return this.records.forEach((m,c)=>{const l=P0(m.satrec,d);if(!l||!l.position||Number.isNaN(l.position.x))return;b0(s.geodetic,F0(l.position,s.gmst)).elevation*180/Math.PI>=r0.CANDIDATE_BELOW_HORIZON_DEG&&h.push(c)}),this.candidates={windowStart:e,observerKey:t,indices:h},h}}export{Ja as SatelliteMagnitude,r0 as SatellitePasses};