UNPKG

jspredict-dc

Version:

Satellite propagation and visibility utilities built on satellite.js.

3 lines (2 loc) 40.8 kB
function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function e(t){if(Object.prototype.hasOwnProperty.call(t,"__esModule"))return t;var e=t.default;if("function"==typeof e){var n=function t(){return this instanceof t?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach((function(e){var o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,o.get?o:{enumerable:!0,get:function(){return t[e]}})})),n}var n,o;function i(){return o?n:(o=1,n={printIntervalInfo:!1,maxIterations:99999})}var r,a=Math.PI,s=2*a,c=a/180,d=180/a,l=398600.8,u=6378.135,m=60/Math.sqrt(650942.9922085947),h=u*m/60,f=1/m,p=.001082616,g=-253881e-11,M=-165597e-11,x=g/p,b=2/3,v=1440/(2*a),y=Object.freeze({__proto__:null,deg2rad:c,earthRadius:u,j2:p,j3:g,j3oj2:x,j4:M,minutesPerDay:1440,mu:l,pi:a,rad2deg:d,tumin:f,twoPi:s,vkmpersec:h,x2o3:b,xke:m,xpdotp:v});function z(t,e){for(var n=[31,t%4==0?29:28,31,30,31,30,31,31,30,31,30,31],o=Math.floor(e),i=1,r=0;o>r+n[i-1]&&i<12;)r+=n[i-1],i+=1;var a=i,s=o-r,c=24*(e-o),d=Math.floor(c);c=60*(c-d);var l=Math.floor(c);return{mon:a,day:s,hr:d,minute:l,sec:60*(c-l)}}function T(t,e,n,o,i,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;return 367*t-Math.floor(7*(t+Math.floor((e+9)/12))*.25)+Math.floor(275*e/9)+n+1721013.5+((a/6e4+r/60+i)/60+o)/24}function E(t,e,n,o,i,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;if(t instanceof Date){var s=t;return T(s.getUTCFullYear(),s.getUTCMonth()+1,s.getUTCDate(),s.getUTCHours(),s.getUTCMinutes(),s.getUTCSeconds(),s.getUTCMilliseconds())}return T(t,e,n,o,i,r,a)}function O(t,e){var n,o,i,r,c,d,l,u,m,h,f,p,g,M,x,b,v,y,z=t.e3,T=t.ee2,E=t.peo,O=t.pgho,N=t.pho,I=t.pinco,w=t.plo,S=t.se2,_=t.se3,A=t.sgh2,C=t.sgh3,P=t.sgh4,R=t.sh2,D=t.sh3,F=t.si2,q=t.si3,j=t.sl2,k=t.sl3,$=t.sl4,L=t.t,U=t.xgh2,H=t.xgh3,Y=t.xgh4,B=t.xh2,W=t.xh3,V=t.xi2,G=t.xi3,Z=t.xl2,J=t.xl3,K=t.xl4,X=t.zmol,Q=t.zmos,tt=e.init,et=e.opsmode,nt=e.ep,ot=e.inclp,it=e.nodep,rt=e.argpp,at=e.mp;y=Q+119459e-10*L,"y"===tt&&(y=Q),v=y+.0335*Math.sin(y);var st=S*(l=.5*(M=Math.sin(v))*M-.25)+_*(u=-.5*M*Math.cos(v)),ct=F*l+q*u,dt=j*l+k*u+$*M,lt=A*l+C*u+P*M,ut=R*l+D*u;return y=X+.00015835218*L,"y"===tt&&(y=X),v=y+.1098*Math.sin(y),m=st+(T*(l=.5*(M=Math.sin(v))*M-.25)+z*(u=-.5*M*Math.cos(v))),p=ct+(V*l+G*u),g=dt+(Z*l+J*u+K*M),h=lt+(U*l+H*u+Y*M),f=ut+(B*l+W*u),"n"===tt&&(g-=w,h-=O,f-=N,ot+=p-=I,nt+=m-=E,r=Math.sin(ot),i=Math.cos(ot),ot>=.2?(rt+=h-=i*(f/=r),it+=f,at+=g):(n=r*(d=Math.sin(it)),o=r*(c=Math.cos(it)),n+=f*c+p*i*d,o+=-f*d+p*i*c,(it%=s)<0&&"a"===et&&(it+=s),x=at+rt+i*it,x+=g+h-p*it*r,b=it,(it=Math.atan2(n,o))<0&&"a"===et&&(it+=s),Math.abs(b-it)>a&&(it<b?it+=s:it-=s),rt=x-(at+=g)-i*it)),{ep:nt,inclp:ot,nodep:it,argpp:rt,mp:at}}function N(t){var e=(t-2451545)/36525,n=-62e-7*e*e*e+.093104*e*e+3164400184.812866*e+67310.54841;return(n=n*c/240%s)<0&&(n+=s),n}function I(t,e,n,o,i,r,a){return t instanceof Date?N(E(t)):N(void 0!==e?E(t,e,n,o,i,r,a):t)}function w(t,e){var n,o,i,c,d,l,f,g,M,v,y,z,T,E,N,I,w,S,_,A,C,P,R,D,F,q;t.t=e,t.error=r.None;var j=t.mo+t.mdot*t.t,k=t.argpo+t.argpdot*t.t,$=t.nodeo+t.nodedot*t.t;g=k,A=j;var L=t.t*t.t;if(P=$+t.nodecf*L,I=1-t.cc1*t.t,w=t.bstar*t.cc4*t.t,S=t.t2cof*L,1!==t.isimp){l=t.omgcof*t.t;var U=1+t.eta*Math.cos(j);A=j+(N=l+t.xmcof*(U*U*U-t.delmo)),g=k-N,z=(y=L*t.t)*t.t,I=I-t.d2*L-t.d3*y-t.d4*z,w+=t.bstar*t.cc5*(Math.sin(A)-t.sinmao),S=S+t.t3cof*y+z*(t.t4cof+t.t*t.t5cof)}C=t.no;var H=t.ecco;if(_=t.inclo,"d"===t.method){T=t.t;var Y=function(t){var e,n,o,i,r,a,c,d,l=t.irez,u=t.d2201,m=t.d2211,h=t.d3210,f=t.d3222,p=t.d4410,g=t.d4422,M=t.d5220,x=t.d5232,b=t.d5421,v=t.d5433,y=t.dedt,z=t.del1,T=t.del2,E=t.del3,O=t.didt,N=t.dmdt,I=t.dnodt,w=t.domdt,S=t.argpo,_=t.argpdot,A=t.t,C=t.tc,P=t.gsto,R=t.xfact,D=t.xlamo,F=t.no,q=t.atime,j=t.em,k=t.argpm,$=t.inclm,L=t.xli,U=t.mm,H=t.xni,Y=t.nodem,B=t.nm,W=.13130908,V=2.8843198,G=.37448087,Z=5.7686396,J=.95240898,K=1.8014998,X=1.050833,Q=4.4108898,tt=259200,et=0,nt=0,ot=(P+.0043752690880113*C)%s;if(j+=y*A,$+=O*A,k+=w*A,Y+=I*A,U+=N*A,0!==l){(0===q||A*q<=0||Math.abs(A)<Math.abs(q))&&(q=0,H=F,L=D),e=A>0?720:-720;for(var it=381;381===it;)2!==l?(c=z*Math.sin(L-W)+T*Math.sin(2*(L-V))+E*Math.sin(3*(L-G)),r=H+R,a=z*Math.cos(L-W)+2*T*Math.cos(2*(L-V))+3*E*Math.cos(3*(L-G)),a*=r):(o=(d=S+_*q)+d,n=L+L,c=u*Math.sin(o+L-Z)+m*Math.sin(L-Z)+h*Math.sin(d+L-J)+f*Math.sin(-d+L-J)+p*Math.sin(o+n-K)+g*Math.sin(n-K)+M*Math.sin(d+L-X)+x*Math.sin(-d+L-X)+b*Math.sin(d+n-Q)+v*Math.sin(-d+n-Q),r=H+R,a=u*Math.cos(o+L-Z)+m*Math.cos(L-Z)+h*Math.cos(d+L-J)+f*Math.cos(-d+L-J)+M*Math.cos(d+L-X)+x*Math.cos(-d+L-X)+2*(p*Math.cos(o+n-K)+g*Math.cos(n-K)+b*Math.cos(d+n-Q)+v*Math.cos(-d+n-Q)),a*=r),Math.abs(A-q)>=720?it=381:(nt=A-q,it=0),381===it&&(L+=r*e+c*tt,H+=c*e+a*tt,q+=e);B=H+c*nt+a*nt*nt*.5,i=L+r*nt+c*nt*nt*.5,1!==l?(U=i-2*Y+2*ot,et=B-F):(U=i-Y-k+ot,et=B-F),B=F+et}return{atime:q,em:j,argpm:k,inclm:$,xli:L,mm:U,xni:H,nodem:Y,dndt:et,nm:B}}({irez:t.irez,d2201:t.d2201,d2211:t.d2211,d3210:t.d3210,d3222:t.d3222,d4410:t.d4410,d4422:t.d4422,d5220:t.d5220,d5232:t.d5232,d5421:t.d5421,d5433:t.d5433,dedt:t.dedt,del1:t.del1,del2:t.del2,del3:t.del3,didt:t.didt,dmdt:t.dmdt,dnodt:t.dnodt,domdt:t.domdt,argpo:t.argpo,argpdot:t.argpdot,t:t.t,tc:T,gsto:t.gsto,xfact:t.xfact,xlamo:t.xlamo,no:t.no,atime:t.atime,em:H,argpm:g,inclm:_,xli:t.xli,mm:A,xni:t.xni,nodem:P,nm:C});H=Y.em,g=Y.argpm,_=Y.inclm,A=Y.mm,P=Y.nodem,C=Y.nm}if(C<=0)return t.error=r.MeanMotionBelowZero,null;var B=Math.pow(m/C,b)*I*I;if(C=m/Math.pow(B,1.5),(H-=w)>=1||H<-.001)return t.error=r.MeanEccentricityOutOfRange,null;H<1e-6&&(H=1e-6),D=(A+=t.no*S)+g+P;var W={am:B,em:H,im:_,Om:P%=s,om:g%=s,mm:A=((D%=s)-g-P)%s,nm:C},V=H;if(R=_,M=g,q=P,F=A,c=Math.sin(_),i=Math.cos(_),"d"===t.method){var G=O(t,{inclo:t.inclo,init:"n",ep:V,inclp:R,nodep:q,argpp:M,mp:F,opsmode:t.operationmode});if(V=G.ep,q=G.nodep,M=G.argpp,F=G.mp,(R=G.inclp)<0&&(R=-R,q+=a,M-=a),V<0||V>1)return t.error=r.PerturbedEccentricityOutOfRange,null}"d"===t.method&&(c=Math.sin(R),i=Math.cos(R),t.aycof=-.5*x*c,Math.abs(i+1)>15e-13?t.xlcof=-.25*x*c*(3+5*i)/(1+i):t.xlcof=-.25*x*c*(3+5*i)/15e-13);var Z=V*Math.cos(M);N=1/(B*(1-V*V));var J=V*Math.sin(M)+N*t.aycof,K=(F+M+q+N*t.xlcof*Z-q)%s;f=K,E=9999.9;for(var X=1;Math.abs(E)>=1e-12&&X<=10;)o=Math.sin(f),E=(K-J*(n=Math.cos(f))+Z*o-f)/(E=1-n*Z-o*J),Math.abs(E)>=.95&&(E=E>0?.95:-.95),f+=E,X+=1;var Q=Z*n+J*o,tt=Z*o-J*n,et=Z*Z+J*J,nt=B*(1-et);if(nt<0)return t.error=r.SemiLatusRectumBelowZero,null;var ot=B*(1-Q),it=Math.sqrt(B)*tt/ot,rt=Math.sqrt(nt)/ot,at=Math.sqrt(1-et),st=B/ot*(o-J-Z*(N=tt/(1+at))),ct=B/ot*(n-Z+J*N);v=Math.atan2(st,ct);var dt=(ct+ct)*st,lt=1-2*st*st,ut=.5*p*(N=1/nt),mt=ut*N;"d"===t.method&&(d=i*i,t.con41=3*d-1,t.x1mth2=1-d,t.x7thm1=7*d-1);var ht=ot*(1-1.5*mt*at*t.con41)+.5*ut*t.x1mth2*lt;if(ht<1)return t.error=r.Decayed,null;v-=.25*mt*t.x7thm1*dt;var ft=q+1.5*mt*i*dt,pt=R+1.5*mt*i*c*lt,gt=it-C*ut*t.x1mth2*dt/m,Mt=rt+C*ut*(t.x1mth2*lt+1.5*t.con41)/m,xt=Math.sin(v),bt=Math.cos(v),vt=Math.sin(ft),yt=Math.cos(ft),zt=Math.sin(pt),Tt=Math.cos(pt),Et=-vt*Tt,Ot=yt*Tt,Nt=Et*xt+yt*bt,It=Ot*xt+vt*bt,wt=zt*xt;return{position:{x:ht*Nt*u,y:ht*It*u,z:ht*wt*u},velocity:{x:(gt*Nt+Mt*(Et*bt-yt*xt))*h,y:(gt*It+Mt*(Ot*bt-vt*xt))*h,z:(gt*wt+Mt*(zt*bt))*h},meanElements:W}}function S(t,e){var n=e.opsmode;e.satn;var o,i,r,c,d,l,h,g,v,y,z,T,E,N,S,_,A,C,P,R,D,F,q,j,k,$,L,U,H,Y,B,W,V,G,Z,J,K,X,Q,tt,et,nt,ot,it,rt,at,st,ct,dt,lt,ut,mt,ht=e.epoch,ft=e.xbstar,pt=e.xecco,gt=e.xargpo,Mt=e.xinclo,xt=e.xmo,bt=e.xno,vt=e.xnodeo,yt=t;yt.isimp=0,yt.method="n",yt.aycof=0,yt.con41=0,yt.cc1=0,yt.cc4=0,yt.cc5=0,yt.d2=0,yt.d3=0,yt.d4=0,yt.delmo=0,yt.eta=0,yt.argpdot=0,yt.omgcof=0,yt.sinmao=0,yt.t=0,yt.t2cof=0,yt.t3cof=0,yt.t4cof=0,yt.t5cof=0,yt.x1mth2=0,yt.x7thm1=0,yt.mdot=0,yt.nodedot=0,yt.xlcof=0,yt.xmcof=0,yt.nodecf=0,yt.irez=0,yt.d2201=0,yt.d2211=0,yt.d3210=0,yt.d3222=0,yt.d4410=0,yt.d4422=0,yt.d5220=0,yt.d5232=0,yt.d5421=0,yt.d5433=0,yt.dedt=0,yt.del1=0,yt.del2=0,yt.del3=0,yt.didt=0,yt.dmdt=0,yt.dnodt=0,yt.domdt=0,yt.e3=0,yt.ee2=0,yt.peo=0,yt.pgho=0,yt.pho=0,yt.pinco=0,yt.plo=0,yt.se2=0,yt.se3=0,yt.sgh2=0,yt.sgh3=0,yt.sgh4=0,yt.sh2=0,yt.sh3=0,yt.si2=0,yt.si3=0,yt.sl2=0,yt.sl3=0,yt.sl4=0,yt.gsto=0,yt.xfact=0,yt.xgh2=0,yt.xgh3=0,yt.xgh4=0,yt.xh2=0,yt.xh3=0,yt.xi2=0,yt.xi3=0,yt.xl2=0,yt.xl3=0,yt.xl4=0,yt.xlamo=0,yt.zmol=0,yt.zmos=0,yt.atime=0,yt.xli=0,yt.xni=0,yt.bstar=ft,yt.ecco=pt,yt.argpo=gt,yt.inclo=Mt,yt.mo=xt,yt.no=bt,yt.nodeo=vt,yt.operationmode=n;var zt=78/u+1;yt.init="y",yt.t=0;var Tt=function(t){var e=t.ecco,n=t.epoch,o=t.inclo,i=t.opsmode,r=t.no,a=e*e,c=1-a,d=Math.sqrt(c),l=Math.cos(o),u=l*l,h=Math.pow(m/r,b),f=.75*p*(3*u-1)/(d*c),g=f/(h*h),M=h*(1-g*g-g*(1/3+134*g*g/81));r/=1+(g=f/(M*M));var x,v=Math.pow(m/r,b),y=Math.sin(o),z=v*c,T=1-5*u,E=-T-u-u,O=1/v,N=z*z,w=v*(1-e);if("a"===i){var S=n-7305,_=Math.floor(S+1e-8),A=.017202791694070362;(x=(1.7321343856509375+A*_+(A+s)*(S-_)+S*S*5075514194322695e-30)%s)<0&&(x+=s)}else x=I(n+2433281.5);return{no:r,method:"n",ainv:O,ao:v,con41:E,con42:T,cosio:l,cosio2:u,eccsq:a,omeosq:c,posq:N,rp:w,rteosq:d,sinio:y,gsto:x}}({ecco:yt.ecco,epoch:ht,inclo:yt.inclo,no:yt.no,method:yt.method,opsmode:yt.operationmode}),Et=Tt.ao,Ot=Tt.con42,Nt=Tt.cosio,It=Tt.cosio2,wt=Tt.eccsq,St=Tt.omeosq,_t=Tt.posq,At=Tt.rp,Ct=Tt.rteosq,Pt=Tt.sinio;if(yt.no=Tt.no,yt.con41=Tt.con41,yt.gsto=Tt.gsto,yt.a=Math.pow(yt.no*f,-2/3),yt.alta=yt.a*(1+yt.ecco)-1,yt.altp=yt.a*(1-yt.ecco)-1,yt.error=0,St>=0||yt.no>=0){if(yt.isimp=0,At<1.034492841559484&&(yt.isimp=1),j=zt,C=1.880279159015271e-9,(S=(At-1)*u)<156){j=S-78,S<98&&(j=20);var Rt=(120-j)/u;C=Rt*Rt*Rt*Rt,j=j/u+1}_=1/_t,nt=1/(Et-j),yt.eta=Et*yt.ecco*nt,T=yt.eta*yt.eta,z=yt.ecco*yt.eta,A=Math.abs(1-T),c=(h=(l=C*Math.pow(nt,4))/Math.pow(A,3.5))*yt.no*(Et*(1+1.5*T+z*(4+T))+.375*p*nt/A*yt.con41*(8+3*T*(8+T))),yt.cc1=yt.bstar*c,d=0,yt.ecco>1e-4&&(d=-2*l*nt*x*yt.no*Pt/yt.ecco),yt.x1mth2=1-It,yt.cc4=2*yt.no*h*Et*St*(yt.eta*(2+.5*T)+yt.ecco*(.5+2*T)-p*nt/(Et*A)*(-3*yt.con41*(1-2*z+T*(1.5-.5*z))+.75*yt.x1mth2*(2*T-z*(1+T))*Math.cos(2*yt.argpo))),yt.cc5=2*h*Et*St*(1+2.75*(T+z)+z*T),g=It*It,tt=.5*(Q=1.5*p*_*yt.no)*p*_,et=-.46875*M*_*_*yt.no,yt.mdot=yt.no+.5*Q*Ct*yt.con41+.0625*tt*Ct*(13-78*It+137*g),yt.argpdot=-.5*Q*Ot+.0625*tt*(7-114*It+395*g)+et*(3-36*It+49*g),it=-Q*Nt,yt.nodedot=it+(.5*tt*(4-19*It)+2*et*(3-7*It))*Nt,ot=yt.argpdot+yt.nodedot,yt.omgcof=yt.bstar*d*Math.cos(yt.argpo),yt.xmcof=0,yt.ecco>1e-4&&(yt.xmcof=-.6666666666666666*l*yt.bstar/z),yt.nodecf=3.5*St*it*yt.cc1,yt.t2cof=1.5*yt.cc1,Math.abs(Nt+1)>15e-13?yt.xlcof=-.25*x*Pt*(3+5*Nt)/(1+Nt):yt.xlcof=-.25*x*Pt*(3+5*Nt)/15e-13,yt.aycof=-.5*x*Pt;var Dt=1+yt.eta*Math.cos(yt.mo);if(yt.delmo=Dt*Dt*Dt,yt.sinmao=Math.sin(yt.mo),yt.x7thm1=7*It-1,2*a/yt.no>=225){yt.method="d",yt.isimp=1,E=yt.inclo;var Ft=function(t){var e,n,o,i,r,a,c,d,l,u,m,h,f,p,g,M,x,b,v,y,z,T,E,O,N,I,w,S,_,A,C,P,R,D,F,q,j,k,$,L,U,H,Y,B,W,V,G,Z,J,K,X,Q,tt,et,nt,ot,it,rt,at,st,ct,dt,lt,ut=t.epoch,mt=t.ep,ht=t.argpp,ft=t.tc,pt=t.inclp,gt=t.nodep,Mt=.01675,xt=.0549,bt=t.np,vt=mt,yt=Math.sin(gt),zt=Math.cos(gt),Tt=Math.sin(ht),Et=Math.cos(ht),Ot=Math.sin(pt),Nt=Math.cos(pt),It=vt*vt,wt=1-It,St=Math.sqrt(wt),_t=ut+18261.5+ft/1440,At=(4.523602-.00092422029*_t)%s,Ct=Math.sin(At),Pt=Math.cos(At),Rt=.91375164-.03568096*Pt,Dt=Math.sqrt(1-Rt*Rt),Ft=.089683511*Ct/Dt,qt=Math.sqrt(1-Ft*Ft),jt=5.8351514+.001944368*_t,kt=.39785416*Ct/Dt,$t=qt*Pt+.91744867*Ft*Ct;kt=Math.atan2(kt,$t),kt+=jt-At;var Lt=Math.cos(kt),Ut=Math.sin(kt);y=.1945905,z=-.98088458,O=.91744867,N=.39785416,T=zt,E=yt,m=29864797e-13;for(var Ht=1/bt,Yt=0;Yt<2;)nt=-6*(e=y*T+z*O*E)*(r=-Ot*(c=-y*E+z*O*T)+Nt*(d=z*N))+It*(-24*(h=e*Et+(n=Nt*c+Ot*d)*Tt)*(b=r*Et)-6*(p=-e*Tt+n*Et)*(M=r*Tt)),ot=-6*(e*(a=-Ot*(l=z*E+y*O*T)+Nt*(u=y*N))+(o=-z*T+y*O*E)*r)+It*(-24*((f=o*Et+(i=Nt*l+Ot*u)*Tt)*b+h*(v=a*Et))+-6*(p*(x=a*Tt)+(g=-o*Tt+i*Et)*M)),it=-6*o*a+It*(-24*f*v-6*g*x),rt=6*n*r+It*(24*h*M-6*p*b),at=6*(i*r+n*a)+It*(24*(f*M+h*x)-6*(g*b+p*v)),st=6*i*a+It*(24*f*x-6*g*v),Q=(Q=3*(e*e+n*n)+(ct=12*h*h-3*p*p)*It)+Q+wt*ct,tt=(tt=6*(e*o+n*i)+(dt=24*h*f-6*p*g)*It)+tt+wt*dt,et=(et=3*(o*o+i*i)+(lt=12*f*f-3*g*g)*It)+et+wt*lt,V=-.5*(G=m*Ht)/St,W=-15*vt*(Z=G*St),J=h*p+f*g,K=f*p+h*g,X=f*g-h*p,1===(Yt+=1)&&(I=W,w=V,S=G,_=Z,A=J,C=K,P=X,R=Q,D=tt,F=et,q=nt,j=ot,k=it,$=rt,L=at,U=st,H=ct,Y=dt,B=lt,y=Lt,z=Ut,O=Rt,N=Dt,T=qt*zt+Ft*yt,E=yt*qt-zt*Ft,m=4.7968065e-7);return{snodm:yt,cnodm:zt,sinim:Ot,cosim:Nt,sinomm:Tt,cosomm:Et,day:_t,e3:2*W*X,ee2:2*W*K,em:vt,emsq:It,gam:jt,peo:0,pgho:0,pho:0,pinco:0,plo:0,rtemsq:St,se2:2*I*C,se3:2*I*P,sgh2:2*_*Y,sgh3:2*_*(B-H),sgh4:-18*_*Mt,sh2:-2*w*L,sh3:-2*w*(U-$),si2:2*w*j,si3:2*w*(k-q),sl2:-2*S*D,sl3:-2*S*(F-R),sl4:-2*S*(-21-9*It)*Mt,s1:W,s2:V,s3:G,s4:Z,s5:J,s6:K,s7:X,ss1:I,ss2:w,ss3:S,ss4:_,ss5:A,ss6:C,ss7:P,sz1:R,sz2:D,sz3:F,sz11:q,sz12:j,sz13:k,sz21:$,sz22:L,sz23:U,sz31:H,sz32:Y,sz33:B,xgh2:2*Z*dt,xgh3:2*Z*(lt-ct),xgh4:-18*Z*xt,xh2:-2*V*at,xh3:-2*V*(st-rt),xi2:2*V*ot,xi3:2*V*(it-nt),xl2:-2*G*tt,xl3:-2*G*(et-Q),xl4:-2*G*(-21-9*It)*xt,nm:bt,z1:Q,z2:tt,z3:et,z11:nt,z12:ot,z13:it,z21:rt,z22:at,z23:st,z31:ct,z32:dt,z33:lt,zmol:(.2299715*_t-jt+4.7199672)%s,zmos:(6.2565837+.017201977*_t)%s}}({epoch:ht,ep:yt.ecco,argpp:yt.argpo,tc:0,inclp:yt.inclo,nodep:yt.nodeo,np:yt.no,e3:yt.e3,ee2:yt.ee2,peo:yt.peo,pgho:yt.pgho,pho:yt.pho,pinco:yt.pinco,plo:yt.plo,se2:yt.se2,se3:yt.se3,sgh2:yt.sgh2,sgh3:yt.sgh3,sgh4:yt.sgh4,sh2:yt.sh2,sh3:yt.sh3,si2:yt.si2,si3:yt.si3,sl2:yt.sl2,sl3:yt.sl3,sl4:yt.sl4,xgh2:yt.xgh2,xgh3:yt.xgh3,xgh4:yt.xgh4,xh2:yt.xh2,xh3:yt.xh3,xi2:yt.xi2,xi3:yt.xi3,xl2:yt.xl2,xl3:yt.xl3,xl4:yt.xl4,zmol:yt.zmol,zmos:yt.zmos});yt.e3=Ft.e3,yt.ee2=Ft.ee2,yt.peo=Ft.peo,yt.pgho=Ft.pgho,yt.pho=Ft.pho,yt.pinco=Ft.pinco,yt.plo=Ft.plo,yt.se2=Ft.se2,yt.se3=Ft.se3,yt.sgh2=Ft.sgh2,yt.sgh3=Ft.sgh3,yt.sgh4=Ft.sgh4,yt.sh2=Ft.sh2,yt.sh3=Ft.sh3,yt.si2=Ft.si2,yt.si3=Ft.si3,yt.sl2=Ft.sl2,yt.sl3=Ft.sl3,yt.sl4=Ft.sl4,i=Ft.sinim,o=Ft.cosim,v=Ft.em,y=Ft.emsq,P=Ft.s1,R=Ft.s2,D=Ft.s3,F=Ft.s4,q=Ft.s5,k=Ft.ss1,$=Ft.ss2,L=Ft.ss3,U=Ft.ss4,H=Ft.ss5,Y=Ft.sz1,B=Ft.sz3,W=Ft.sz11,V=Ft.sz13,G=Ft.sz21,Z=Ft.sz23,J=Ft.sz31,K=Ft.sz33,yt.xgh2=Ft.xgh2,yt.xgh3=Ft.xgh3,yt.xgh4=Ft.xgh4,yt.xh2=Ft.xh2,yt.xh3=Ft.xh3,yt.xi2=Ft.xi2,yt.xi3=Ft.xi3,yt.xl2=Ft.xl2,yt.xl3=Ft.xl3,yt.xl4=Ft.xl4,yt.zmol=Ft.zmol,yt.zmos=Ft.zmos,N=Ft.nm,rt=Ft.z1,at=Ft.z3,st=Ft.z11,ct=Ft.z13,dt=Ft.z21,lt=Ft.z23,ut=Ft.z31,mt=Ft.z33;var qt=O(yt,{inclo:E,init:yt.init,ep:yt.ecco,inclp:yt.inclo,nodep:yt.nodeo,argpp:yt.argpo,mp:yt.mo,opsmode:yt.operationmode});yt.ecco=qt.ep,yt.inclo=qt.inclp,yt.nodeo=qt.nodep,yt.argpo=qt.argpp,yt.mo=qt.mp;var jt=function(t){var e,n,o,i,r,c,d,l,u,h,f,p,g,M,x,v,y,z=t.cosim,T=t.argpo,E=t.s1,O=t.s2,N=t.s3,I=t.s4,w=t.s5,S=t.sinim,_=t.ss1,A=t.ss2,C=t.ss3,P=t.ss4,R=t.ss5,D=t.sz1,F=t.sz3,q=t.sz11,j=t.sz13,k=t.sz21,$=t.sz23,L=t.sz31,U=t.sz33,H=t.t,Y=t.tc,B=t.gsto,W=t.mo,V=t.mdot,G=t.no,Z=t.nodeo,J=t.nodedot,K=t.xpidot,X=t.z1,Q=t.z3,tt=t.z11,et=t.z13,nt=t.z21,ot=t.z23,it=t.z31,rt=t.z33,at=t.ecco,st=t.eccsq,ct=t.emsq,dt=t.em,lt=t.argpm,ut=t.inclm,mt=t.mm,ht=t.nm,ft=t.nodem,pt=t.irez,gt=t.atime,Mt=t.d2201,xt=t.d2211,bt=t.d3210,vt=t.d3222,yt=t.d4410,zt=t.d4422,Tt=t.d5220,Et=t.d5232,Ot=t.d5421,Nt=t.d5433,It=t.dedt,wt=t.didt,St=t.dmdt,_t=t.dnodt,At=t.domdt,Ct=t.del1,Pt=t.del2,Rt=t.del3,Dt=t.xfact,Ft=t.xlamo,qt=t.xli,jt=t.xni,kt=.0043752690880113,$t=.00015835218,Lt=119459e-10;pt=0,ht<.0052359877&&ht>.0034906585&&(pt=1),ht>=.00826&&ht<=.00924&&dt>=.5&&(pt=2);var Ut=-119459e-10*A*(k+$);(ut<.052359877||ut>a-.052359877)&&(Ut=0),0!==S&&(Ut/=S);var Ht=-.00015835218*O*(nt+ot);(ut<.052359877||ut>a-.052359877)&&(Ht=0),At=P*Lt*(L+U-6)-z*Ut+I*$t*(it+rt-6),_t=Ut,0!==S&&(At-=z/S*Ht,_t+=Ht/S);var Yt=(B+Y*kt)%s;if(dt+=(It=_*Lt*R+E*$t*w)*H,ut+=(wt=A*Lt*(q+j)+O*$t*(tt+et))*H,lt+=At*H,ft+=_t*H,mt+=(St=-119459e-10*C*(D+F-14-6*ct)-$t*N*(X+Q-14-6*ct))*H,0!==pt){if(x=Math.pow(ht/m,b),2===pt){var Bt=dt,Wt=ct;y=(dt=at)*(ct=st),dt<=.65?(o=3.616-13.247*dt+16.29*ct,i=117.39*dt-19.302-228.419*ct+156.591*y,r=109.7927*dt-18.9068-214.6334*ct+146.5816*y,c=242.694*dt-41.122-471.094*ct+313.953*y,d=841.88*dt-146.407-1629.014*ct+1083.435*y,l=3017.977*dt-532.114-5740.032*ct+3708.276*y):(o=331.819*dt-72.099-508.738*ct+266.724*y,i=1582.851*dt-346.844-2415.925*ct+1246.113*y,r=1554.908*dt-342.585-2366.899*ct+1215.972*y,c=4758.686*dt-1052.797-7193.992*ct+3651.957*y,d=16178.11*dt-3581.69-24462.77*ct+12422.52*y,l=dt>.715?29936.92*dt-5149.66-54087.36*ct+31324.56*y:1464.74-4664.75*dt+3763.64*ct),dt<.7?(f=4988.61*dt-919.2277-9064.77*ct+5542.21*y,u=4568.6173*dt-822.71072-8491.4146*ct+5337.524*y,h=4690.25*dt-853.666-8624.77*ct+5341.4*y):(f=161616.52*dt-37995.78-229838.2*ct+109377.94*y,u=218913.95*dt-51752.104-309468.16*ct+146349.42*y,h=170470.89*dt-40023.88-242699.48*ct+115605.82*y),Mt=(g=17891679e-13*(M=ht*ht*3*(x*x)))*(e=.75*(1+2*z+(v=z*z)))*(-.306-.44*(dt-.64)),xt=g*(1.5*(p=S*S))*o,bt=(g=3.7393792e-7*(M*=x))*(1.875*S*(1-2*z-3*v))*i,vt=g*(-1.875*S*(1+2*z-3*v))*r,yt=(g=2*(M*=x)*7.3636953e-9)*(35*p*e)*c,zt=g*(39.375*p*p)*d,Tt=(g=1.1428639e-7*(M*=x))*(9.84375*S*(p*(1-2*z-5*v)+.33333333*(4*z-2+6*v)))*l,Et=g*(S*(4.92187512*p*(-2-4*z+10*v)+6.56250012*(1+2*z-3*v)))*h,Ot=(g=2*M*2.1765803e-9)*(29.53125*S*(2-8*z+v*(8*z-12+10*v)))*u,Nt=g*(29.53125*S*(-2-8*z+v*(12+8*z-10*v)))*f,Ft=(W+Z+Z-(Yt+Yt))%s,Dt=V+St+2*(J+_t-kt)-G,dt=Bt,ct=Wt}1===pt&&(n=1+z,Pt=2*(Ct=3*ht*ht*x*x)*(e=.75*(1+z)*(1+z))*(1+ct*(.8125*ct-2.5))*17891679e-13,Rt=3*Ct*(n*=1.875*n*n)*(1+ct*(6.60937*ct-6))*2.2123015e-7*x,Ct=Ct*(.9375*S*S*(1+3*z)-.75*(1+z))*(i=1+2*ct)*21460748e-13*x,Ft=(W+Z+T-Yt)%s,Dt=V+K+St+At+_t-(G+kt)),qt=Ft,jt=G,gt=0,ht=G+0}return{em:dt,argpm:lt,inclm:ut,mm:mt,nm:ht,nodem:ft,irez:pt,atime:gt,d2201:Mt,d2211:xt,d3210:bt,d3222:vt,d4410:yt,d4422:zt,d5220:Tt,d5232:Et,d5421:Ot,d5433:Nt,dedt:It,didt:wt,dmdt:St,dndt:0,dnodt:_t,domdt:At,del1:Ct,del2:Pt,del3:Rt,xfact:Dt,xlamo:Ft,xli:qt,xni:jt}}({cosim:o,emsq:y,argpo:yt.argpo,s1:P,s2:R,s3:D,s4:F,s5:q,sinim:i,ss1:k,ss2:$,ss3:L,ss4:U,ss5:H,sz1:Y,sz3:B,sz11:W,sz13:V,sz21:G,sz23:Z,sz31:J,sz33:K,t:yt.t,tc:0,gsto:yt.gsto,mo:yt.mo,mdot:yt.mdot,no:yt.no,nodeo:yt.nodeo,nodedot:yt.nodedot,xpidot:ot,z1:rt,z3:at,z11:st,z13:ct,z21:dt,z23:lt,z31:ut,z33:mt,ecco:yt.ecco,eccsq:wt,em:v,argpm:0,inclm:E,mm:0,nm:N,nodem:0,irez:yt.irez,atime:yt.atime,d2201:yt.d2201,d2211:yt.d2211,d3210:yt.d3210,d3222:yt.d3222,d4410:yt.d4410,d4422:yt.d4422,d5220:yt.d5220,d5232:yt.d5232,d5421:yt.d5421,d5433:yt.d5433,dedt:yt.dedt,didt:yt.didt,dmdt:yt.dmdt,dnodt:yt.dnodt,domdt:yt.domdt,del1:yt.del1,del2:yt.del2,del3:yt.del3,xfact:yt.xfact,xlamo:yt.xlamo,xli:yt.xli,xni:yt.xni});yt.irez=jt.irez,yt.atime=jt.atime,yt.d2201=jt.d2201,yt.d2211=jt.d2211,yt.d3210=jt.d3210,yt.d3222=jt.d3222,yt.d4410=jt.d4410,yt.d4422=jt.d4422,yt.d5220=jt.d5220,yt.d5232=jt.d5232,yt.d5421=jt.d5421,yt.d5433=jt.d5433,yt.dedt=jt.dedt,yt.didt=jt.didt,yt.dmdt=jt.dmdt,yt.dnodt=jt.dnodt,yt.domdt=jt.domdt,yt.del1=jt.del1,yt.del2=jt.del2,yt.del3=jt.del3,yt.xfact=jt.xfact,yt.xlamo=jt.xlamo,yt.xli=jt.xli,yt.xni=jt.xni}1!==yt.isimp&&(r=yt.cc1*yt.cc1,yt.d2=4*Et*nt*r,X=yt.d2*nt*yt.cc1/3,yt.d3=(17*Et+j)*X,yt.d4=.5*X*Et*nt*(221*Et+31*j)*yt.cc1,yt.t3cof=yt.d2+2*r,yt.t4cof=.25*(3*yt.d3+yt.cc1*(12*yt.d2+10*r)),yt.t5cof=.2*(3*yt.d4+12*yt.cc1*yt.d3+6*yt.d2*yt.d2+15*r*(2*yt.d2+r)))}w(yt,0),yt.init="n"}!function(t){t[t.None=0]="None",t[t.MeanEccentricityOutOfRange=1]="MeanEccentricityOutOfRange",t[t.MeanMotionBelowZero=2]="MeanMotionBelowZero",t[t.PerturbedEccentricityOutOfRange=3]="PerturbedEccentricityOutOfRange",t[t.SemiLatusRectumBelowZero=4]="SemiLatusRectumBelowZero",t[t.Decayed=6]="Decayed"}(r||(r={}));var _=7292115e-11;function A(t){return t*d}function C(t){return t*c}function P(t){var e=t.longitude,n=t.latitude,o=t.height,i=6378.137,r=(i-6356.7523142)/i,a=2*r-r*r,s=i/Math.sqrt(1-a*(Math.sin(n)*Math.sin(n)));return{x:(s+o)*Math.cos(n)*Math.cos(e),y:(s+o)*Math.cos(n)*Math.sin(e),z:(s*(1-a)+o)*Math.sin(n)}}var R,D,F,q,j,k,$,L,U=e(Object.freeze({__proto__:null,get SatRecError(){return r},constants:y,degreesLat:function(t){if(t<-a/2||t>a/2)throw new RangeError("Latitude radians must be in range [-pi/2; pi/2].");return A(t)},degreesLong:function(t){if(t<-a||t>a)throw new RangeError("Longitude radians must be in range [-pi; pi].");return A(t)},degreesToRadians:C,dopplerFactor:function(t,e,n){var o=e.x-t.x,i=e.y-t.y,r=e.z-t.z,a=Math.sqrt(Math.pow(o,2)+Math.pow(i,2)+Math.pow(r,2));return 1-(o*(n.x+_*t.y)+i*(n.y-_*t.x)+r*n.z)/a/299792.458},ecfToEci:function(t,e){return{x:t.x*Math.cos(e)-t.y*Math.sin(e),y:t.x*Math.sin(e)+t.y*Math.cos(e),z:t.z}},ecfToLookAngles:function(t,e){var n,o,i,r,s,c,d=function(t,e){var n=t.longitude,o=t.latitude,i=P(t),r=e.x-i.x,a=e.y-i.y,s=e.z-i.z;return{topS:Math.sin(o)*Math.cos(n)*r+Math.sin(o)*Math.sin(n)*a-Math.cos(o)*s,topE:-Math.sin(n)*r+Math.cos(n)*a,topZ:Math.cos(o)*Math.cos(n)*r+Math.cos(o)*Math.sin(n)*a+Math.sin(o)*s}}(t,e);return o=(n=d).topS,i=n.topE,r=n.topZ,s=Math.sqrt(o*o+i*i+r*r),c=Math.asin(r/s),{azimuth:Math.atan2(-i,o)+a,elevation:c,rangeSat:s}},eciToEcf:function(t,e){return{x:t.x*Math.cos(e)+t.y*Math.sin(e),y:t.x*-Math.sin(e)+t.y*Math.cos(e),z:t.z}},eciToGeodetic:function(t,e){for(var n=6378.137,o=Math.sqrt(t.x*t.x+t.y*t.y),i=(n-6356.7523142)/n,r=2*i-i*i,c=Math.atan2(t.y,t.x)-e;c<-a;)c+=s;for(;c>a;)c-=s;for(var d,l=0,u=Math.atan2(t.z,Math.sqrt(t.x*t.x+t.y*t.y));l++<20;)d=1/Math.sqrt(1-r*(Math.sin(u)*Math.sin(u))),u=Math.atan2(t.z+n*d*r*Math.sin(u),o);return{longitude:c,latitude:u,height:o/Math.cos(u)-n*d}},geodeticToEcf:P,gstime:I,invjday:function(t,e){var n=t-2415019.5,o=n/365.25,i=1900+Math.floor(o),r=Math.floor(.25*(i-1901)),a=n-(365*(i-1900)+r)+1e-11;a<1&&(a=n-(365*((i-=1)-1900)+(r=Math.floor(.25*(i-1901)))));var s=z(i,a),c=s.mon,d=s.day,l=s.hr,u=s.minute,m=s.sec-864e-9;return e?[i,c,d,l,u,Math.floor(m)]:new Date(Date.UTC(i,c-1,d,l,u,Math.floor(m)))},jday:E,json2satrec:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"i",n=t.NORAD_CAT_ID.toString(),o=new Date(t.EPOCH.endsWith("Z")?t.EPOCH:t.EPOCH+"Z"),i=o.getUTCFullYear(),r=Number(i.toString().slice(-2)),a=(o.valueOf()-new Date(Date.UTC(i,0,1,0,0,0)).valueOf())/864e5+1,s=Number(t.MEAN_MOTION_DOT),d=Number(t.MEAN_MOTION_DDOT),l=Number(t.BSTAR),u=Number(t.INCLINATION)*c,m=Number(t.RA_OF_ASC_NODE)*c,h=Number(t.ECCENTRICITY),f=Number(t.ARG_OF_PERICENTER)*c,p=Number(t.MEAN_ANOMALY)*c,g=Number(t.MEAN_MOTION)/v,M=z(i,a),x={error:0,satnum:n,epochyr:r,epochdays:a,ndot:s,nddot:d,bstar:l,inclo:u,nodeo:m,ecco:h,argpo:f,mo:p,no:g,jdsatepoch:E(i,M.mon,M.day,M.hr,M.minute,M.sec)};return S(x,{opsmode:e,satn:x.satnum,epoch:x.jdsatepoch-2433281.5,xbstar:x.bstar,xecco:x.ecco,xargpo:x.argpo,xinclo:x.inclo,xmo:x.mo,xno:x.no,xnodeo:x.nodeo}),x},propagate:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),o=1;o<e;o++)n[o-1]=arguments[o];return w(t,1440*(E.apply(void 0,n)-t.jdsatepoch))},radiansLat:function(t){if(t<-90||t>90)throw new RangeError("Latitude degrees must be in range [-90; 90].");return C(t)},radiansLong:function(t){if(t<-180||t>180)throw new RangeError("Longitude degrees must be in range [-180; 180].");return C(t)},radiansToDegrees:A,sgp4:w,sunPos:function(t){var e=(t-2451545)/36525,n=e,o=(357.5277233+35999.05034*n*c)%s;o<0&&(o+=s);var i=((280.46+36000.77*e)%360+1.914666471*Math.sin(o)+.019994643*Math.sin(2*o))%360*c,r=(23.439291-.0130042*n)*c,d=1.000140612-.016708617*Math.cos(o)-139589e-9*Math.cos(2*o),l=[d*Math.cos(i),d*Math.cos(r)*Math.sin(i),d*Math.sin(r)*Math.sin(i)],u=Math.atan(Math.cos(r)*Math.tan(i)),m=u;return Math.abs(i-m)>.5*a&&(m+=.5*a*Math.round((i-u)/(.5*a))),{rsun:l,rtasc:m,decl:Math.asin(Math.sin(r)*Math.sin(i))}},twoline2satrec:function(t,e){var n=t.substring(2,7),o=parseInt(t.substring(18,20),10),i=parseFloat(t.substring(20,32)),r=parseFloat(t.substring(33,43)),a=parseFloat("".concat(t.substring(44,45),".").concat(t.substring(45,50),"E").concat(t.substring(50,52))),s=parseFloat("".concat(t.substring(53,54),".").concat(t.substring(54,59),"E").concat(t.substring(59,61))),d=parseFloat(e.substring(8,16))*c,l=parseFloat(e.substring(17,25))*c,u=parseFloat(".".concat(e.substring(26,33).replace(/\s/g,"0"))),m=parseFloat(e.substring(34,42))*c,h=parseFloat(e.substring(43,51))*c,f=parseFloat(e.substring(52,63))/v,p=o<57?o+2e3:o+1900,g=z(p,i),M={error:0,satnum:n,epochyr:o,epochdays:i,ndot:r,nddot:a,bstar:s,inclo:d,nodeo:l,ecco:u,argpo:m,mo:h,no:f,jdsatepoch:E(p,g.mon,g.day,g.hr,g.minute,g.sec)};return S(M,{opsmode:"i",satn:M.satnum,epoch:M.jdsatepoch-2433281.5,xbstar:M.bstar,xecco:M.ecco,xargpo:M.argpo,xinclo:M.inclo,xmo:M.mo,xno:M.no,xnodeo:M.nodeo}),M}}));function H(){if(q)return F;q=1;const t=U,{astronomicalUnitKm:e,deg2rad:n,earthRadiusKm:o,msPerDay:r}=function(){if(D)return R;D=1;const t=Math.PI/180,e=180/Math.PI;return R={deg2rad:t,rad2deg:e,earthRadiusKm:6378.137,earthDiameterKm:12756.274,solarRadiusKm:696e3,astronomicalUnitKm:149597870.7,muKm3PerS2:398600.5,msPerDay:864e5,defaultMinElevation:4,defaultStepSeconds:60,defaultMaxIterations:99999}}(),a=new Set;function s(t){return Boolean(t)&&"[object Object]"===Object.prototype.toString.call(t)}function c(t){if(null==t)return new Date;if(t instanceof Date)return new Date(t.getTime());if("number"==typeof t&&Number.isFinite(t))return new Date(t);if("string"==typeof t){const e=new Date(t);if(!Number.isNaN(e.getTime()))return e}if("function"==typeof t.valueOf){const e=t.valueOf();if("number"==typeof e&&Number.isFinite(e))return new Date(e)}throw new Error("Invalid time value")}function d(t,e=6e4){if(null==t)return e;if("number"==typeof t){if(!Number.isFinite(t)||t<=0)throw new Error("Interval must be a positive number");return t}if("string"==typeof t){const e=Number(t);if(Number.isFinite(e)&&e>0)return e}if(s(t)){const e={milliseconds:1,ms:1,seconds:1e3,second:1e3,s:1e3,minutes:6e4,minute:6e4,m:6e4,hours:36e5,hour:36e5,h:36e5,days:864e5,day:864e5,d:864e5,weeks:6048e5,week:6048e5,w:6048e5},n=Object.entries(t).reduce(((t,[n,o])=>{const i=e[n];return i&&"number"==typeof o?t+o*i:t}),0);if(n>0)return n}throw new Error("Invalid interval value")}function l(t,e){a.has(e)||(a.add(e),console.warn(`[jspredict-dc] ${t}`))}function u(t,e){if(!Number.isFinite(t))throw new Error(`Observer ${e} must be a finite number`)}function m(t,e){const[n,o,i]=t,r=`${e} observerLocation`;Math.abs(n)>90&&l(`${r}: latitude=${n} is outside [-90, 90]. You may have passed [lon, lat, alt] instead of [lat, lon, alt].`,`${e}|lat-out-of-range|${n}|${o}`),Math.abs(o)>180&&l(`${r}: longitude=${o} is outside [-180, 180].`,`${e}|lon-out-of-range|${o}`),Math.abs(n)>90&&Math.abs(o)<=90&&l(`${r}: value pattern strongly suggests [lon, lat, alt] was provided.`,`${e}|swapped-lat-lon|${n}|${o}`),i>20&&l(`${r}: altitude=${i} km is unusually high for a ground observer. Check that altitude is provided in kilometers.`,`${e}|alt-high|${i}`),i>100&&l(`${r}: altitude=${i} km is likely not a ground-observer altitude. Unit may be meters instead of kilometers.`,`${e}|alt-very-high|${i}`),i<-1&&l(`${r}: altitude=${i} km is below a typical ground range. Check unit and sign.`,`${e}|alt-low|${i}`)}function h(t){if(null==t)return null;if(Array.isArray(t)){if(t.length<3)throw new Error("Observer location must contain latitude, longitude, and altitude");const e=[Number(t[0]),Number(t[1]),Number(t[2])];return u(e[0],"latitude"),u(e[1],"longitude"),u(e[2],"altitude"),e}if(s(t)){const e=t.latitude??t.lat,n=t.longitude??t.lon??t.lng,o=t.altitude??t.height??t.alt;if([e,n,o].some((t=>null==t)))throw new Error("Observer location object must expose latitude, longitude, and altitude");const i=[Number(e),Number(n),Number(o)];return u(i[0],"latitude"),u(i[1],"longitude"),u(i[2],"altitude"),i}throw new Error("Unsupported observer location format")}function f(t,e){const n=h(t);if(!n)throw new Error(`${e} requires observerLocation`);return m(n,e),n}function p(t,e,n){return Math.min(n,Math.max(e,t))}function g(t){let e=t;for(;e<-180;)e+=360;for(;e>180;)e-=360;return e}function M(t,e){const n=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=[new RegExp(`<${n}\\b[^>]*>([\\s\\S]*?)</${n}>`,"i"),new RegExp(`<[^:>]+:${n}\\b[^>]*>([\\s\\S]*?)</[^:>]+:${n}>`,"i")];for(const e of o){const n=e.exec(t);if(n)return n[1].trim()}}function x(t){const e={},n=["OBJECT_NAME","OBJECT_ID","CENTER_NAME","REF_FRAME","TIME_SYSTEM","MEAN_MOTION","ECCENTRICITY","INCLINATION","RA_OF_ASC_NODE","ARG_OF_PERICENTER","MEAN_ANOMALY","EPHEMERIS_TYPE","CLASSIFICATION_TYPE","NORAD_CAT_ID","ELEMENT_SET_NO","REV_AT_EPOCH","BSTAR","MEAN_MOTION_DOT","MEAN_MOTION_DDOT","EPOCH"];for(const o of n){const n=t[o];null!=n&&""!==n&&(e[o]="string"==typeof n?n.trim():n)}return e.EPOCH instanceof Date&&(e.EPOCH=e.EPOCH.toISOString()),e}function b(t){const e={},n=["OBJECT_NAME","OBJECT_ID","CENTER_NAME","REF_FRAME","TIME_SYSTEM","MEAN_MOTION","ECCENTRICITY","INCLINATION","RA_OF_ASC_NODE","ARG_OF_PERICENTER","MEAN_ANOMALY","EPHEMERIS_TYPE","CLASSIFICATION_TYPE","NORAD_CAT_ID","ELEMENT_SET_NO","REV_AT_EPOCH","BSTAR","MEAN_MOTION_DOT","MEAN_MOTION_DDOT","EPOCH"];for(const o of n){const n=M(t,o);void 0!==n&&(e[o]=n)}if(!e.EPOCH){const n=M(t,"EPOCH");n&&(e.EPOCH=n)}return x(e)}function v(t){if(t&&"object"==typeof t&&"satrec"===t.kind&&t.satrec)return{kind:"satrec",satrec:t.satrec};if(t&&"object"==typeof t&&"tle"===t.kind&&t.tle)return{kind:"tle",tle:{line1:String(t.tle.line1).trim(),line2:String(t.tle.line2).trim()}};if(t&&"object"==typeof t&&"omm"===t.kind&&t.omm)return{kind:"omm",omm:x(t.omm)};if(t&&"object"==typeof t&&null!=t.no&&null!=t.ecco&&null!=t.inclo)return{kind:"satrec",satrec:t};if("string"==typeof t){const e=t.trim();if(!e)throw new Error("Orbit source is empty");if(function(t){return/^\s*<[\s\S]+>\s*$/.test(t)}(e))return{kind:"omm",source:e,omm:b(e)};if(function(t){return/^\s*[{[]/.test(t)}(e))try{return v(JSON.parse(e))}catch(t){throw new Error(`Invalid JSON orbit source: ${t.message}`)}const n=function(t){return t.replace(/\r/g,"\n").split("\n").map((t=>t.trim())).filter(Boolean)}(e);if(2===n.length)return{kind:"tle",source:e,tle:{line1:n[0],line2:n[1]}};if(n.length>=3)return{kind:"tle",source:e,tle:{line1:n[n.length-2],line2:n[n.length-1]}};throw new Error("Invalid orbit source string")}if(Array.isArray(t))throw new Error("Orbit source cannot be an array");if(s(t)){if(t.line1&&t.line2)return{kind:"tle",tle:{line1:String(t.line1).trim(),line2:String(t.line2).trim()}};if("tle"===t.type&&t.tle)return v(t.tle);if("tle"===t.format&&t.line1&&t.line2)return{kind:"tle",tle:{line1:String(t.line1).trim(),line2:String(t.line2).trim()}};if("omm"===t.type&&t.omm)return{kind:"omm",omm:x(t.omm)};if(null!=t.MEAN_MOTION||null!=t.ECCENTRICITY||null!=t.INCLINATION||null!=t.NORAD_CAT_ID)return{kind:"omm",omm:x(t)}}throw new Error("Unsupported orbit source format")}function y(e){const n=v(e),o=t;if("satrec"===n.kind)return n.satrec;if("tle"===n.kind)return o.twoline2satrec(n.tle.line1,n.tle.line2);if("omm"===n.kind){if("function"!=typeof o.json2satrec)throw new Error("satellite.js json2satrec is unavailable in this build");return o.json2satrec(n.omm)}throw new Error("Unable to convert orbit source to satrec")}function z(e){const n=t.jday(e);try{return t.gstime(n)}catch(n){return t.gstime(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())}}function T(e,n){try{const o=t.propagate(n,e);if(o&&o.position)return o}catch(t){}return t.propagate(n,e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds())}function E(o){if("function"==typeof t.sunPos){const n=t.sunPos(t.jday(o));if(n&&Array.isArray(n.rsun)&&n.rsun.length>=3)return{x:n.rsun[0]*e,y:n.rsun[1]*e,z:n.rsun[2]*e}}const i=o.getTime()/r+2444238.5-2415020,a=1900+i/365.25,s=(i+(26.465+.747622*(a-1950)+1.886913*Math.sin(2*Math.PI*(a-1975)/33))/(r/1e3))/36525,c=n*((358.47583+35999.04975*s%360-(15e-5+33e-7*s)*Math.pow(s,2))%360),d=n*((279.69668+36000.76892*s%360+3025e-7*Math.pow(s,2))%360),l=.01675104-(418e-7+126e-9*s)*s,u=n*((1.91946-(.004789+1e-4*s)*s)*Math.sin(c)+(.020094-1e-4*s)*Math.sin(2*c)+293e-6*Math.sin(3*c)),m=n*((259.18-1934.142*s)%360),h=(d+u-n*(.00569-.00479*Math.sin(m)))%(2*Math.PI),f=(c+u)%(2*Math.PI);let p=1.0000002*(1-Math.pow(l,2))/(1+l*Math.cos(f));const g=n*(23.452294-(.0130125+(164e-8-503e-9*s)*s)*s+.00256*Math.cos(m));return p*=e,{x:p*Math.cos(h),y:p*Math.sin(h)*Math.cos(g),z:p*Math.sin(h)*Math.sin(g)}}function O(t,e){const n=Math.sqrt(t.x**2+t.y**2+t.z**2),i=e.x-t.x,r=e.y-t.y,a=e.z-t.z,s=Math.sqrt(i**2+r**2+a**2),c=o,d=Math.asin(p(c/n,-1,1)),l=Math.asin(p(696e3/s,-1,1)),u=-t.x,m=-t.y,h=-t.z,f=e.x*u+e.y*m+e.z*h,g=d-l-Math.acos(p(f/(Math.sqrt(e.x**2+e.y**2+e.z**2)*n),-1,1));return{depth:g,eclipsed:d>=l&&g>=0}}function N(t){const e=24*t.no*60/(2*Math.PI);return Math.abs(e-1.0027)<.005}function I(t,e){let i=24*t.no*60/(2*Math.PI);if(0===i)return!1;let r=t.inclo/n;r>=90&&(r=180-r);const a=331.25*Math.exp(Math.log(1440/i)*(2/3))*(1+t.ecco)-o;return Math.acos(o/(a+o))+r*n>Math.abs(e[0]*n)}function w(t,e){const n=function(t){if(Number.isFinite(t.jdsatepoch))return(t.jdsatepoch-2440587.5)*r;if(Number.isFinite(t.epochyr)&&Number.isFinite(t.epochdays)){const e=t.epochyr<100?2e3+t.epochyr:t.epochyr;return Date.UTC(e,0,1)+(t.epochdays-1)*r}return NaN}(t),o=24*t.no*60/(2*Math.PI),i=24*t.ndot*60*24*60/(2*Math.PI);return!(!Number.isFinite(n)||!Number.isFinite(o)||0===i)&&n+r*((16.666666-o)/(10*Math.abs(i)))<e}function S(t,e,n){return!(!e||I(t,e))||!(null==n||!w(t,n))}function _(t,e){return{x:t.x-e.x,y:t.y-e.y,z:t.z-e.z}}function A(t){return Math.sqrt(t.x**2+t.y**2+t.z**2)}function C(e,i,r){const a=y(e),s=c(r),d=T(s,a);if(!d||!d.position)return null;const l=z(s),u=t.eciToGeodetic(d.position,l),f=E(s),M=O(d.position,f),x=u.height,b=p(o/Math.max(o+x,1e-6),-1,1),v={eci:d,gmst:l,latitude:u.latitude/n,longitude:g(u.longitude/n),altitude:x,footprint:2*o*Math.acos(b),sunlit:!M.eclipsed,eclipseDepth:M.depth/n},N=h(i);if(N){m(N,"observeAt");const e={longitude:N[1]*n,latitude:N[0]*n,height:N[2]},o=t.eciToEcf(d.position,l),i=t.eciToEcf(d.velocity,l),r=t.geodeticToEcf(e),a=t.ecfToLookAngles(e,o),s=t.dopplerFactor(r,o,i);v.azimuth=a.azimuth/n,v.elevation=a.elevation/n,v.rangeSat=a.rangeSat,v.doppler=s}return v}function P(t,e,n){let o=n,a=C(t,e,o);if(!a)return null;let s=0,c=0;if(a.elevation>0)return o;for(;a.elevation<-1&&c<i().maxIterations&&(o-=35e-5*r*(a.elevation*(a.altitude/8400+.46)-2),a=C(t,e,o),a);)c+=1;for(c=0;0===s&&c<i().maxIterations&&a;)Math.abs(a.elevation)<.5?s=o:(o-=r*a.elevation*Math.sqrt(a.altitude)/53e4,a=C(t,e,o)),c+=1;return 0===s?null:s}function j(t,e,n){let o=n,a=C(t,e,o),s=0,c=0;for(;0===s&&c<i().maxIterations;){if(Math.abs(a.elevation)<.5)s=o;else if(o+=r*a.elevation*Math.sqrt(a.altitude)/502500,a=C(t,e,o),!a)break;c+=1}return s}function k(t,e,o,a){if(N(t))return null;if(S(t,e,o))return null;const s={};let c=0,d=0;const l=i().maxIterations;let u=P(t,e,o);if(!u)return null;s.start=u;let m=C(t,e,u);if(!m)return null;let h=Math.round(m.elevation),f=0,p=0,g=360,M=0;for(;h>=0&&d<l&&(!a||u<a)&&(c=h,u+=r*Math.cos((m.elevation-1)*n)*Math.sqrt(m.altitude)/25e3,m=C(t,e,u),m);)h=Math.round(m.elevation),f<m.elevation&&(f=m.elevation,p=m.azimuth),M=Math.max(M,m.azimuth),g=Math.min(g,m.azimuth),d+=1;return 0!==c&&(u=j(t,e,u)),s.end=u,s.maxElevation=f,s.apexAzimuth=p,s.maxAzimuth=M,s.minAzimuth=g,s.duration=s.end-s.start,s}function $(t,e){const n=_(e,t);if(0===A(n))return!1;const i=n.x*n.x+n.y*n.y+n.z*n.z,r=2*(t.x*n.x+t.y*n.y+t.z*n.z),a=r*r-4*i*(t.x*t.x+t.y*t.y+t.z*t.z-o*o);if(a<0)return!0;const s=(-r+Math.sqrt(a))/(2*i),c=(-r-Math.sqrt(a))/(2*i);return s<0||s>1||c<0||c>1}function L(t,e,n,o){const i=A(_(e.position,t.position)),r=A(_(e.velocity,t.velocity));if(0===r)return o;const a=Math.max(1,Math.min(o,i/r));return n?o:Math.min(o,a/2)}function H(t,e,n,o,r,a=100){const s=c(n),d=c(o),l=y(t),u=null==r?4:r,m=null==a?i().maxIterations:a,h=f(e,"findTransits");if(!Number.isFinite(m)||m<0)throw new Error("maxTransits must be a non-negative number");return Y(l,h,s.getTime(),d.getTime(),u,m).transits}function Y(t,e,n,o,r,a){if(S(t,e,n))return{transits:[],iterations:0,terminationReason:"badSat"};const s=[];let c=n,d=0,l="maxIterationsReached";const u=i().maxIterations;for(;d<u&&s.length<a;){const i=k(t,e,c,o);if(!i){l="noTransitPredicted";break}if(i.end>o){l="windowEnded";break}i.end>n&&i.maxElevation>=r&&s.push(i),c=i.end+6e4,d+=1}return s.length>=a&&(l="maxTransitsReached"),{transits:s,iterations:d,terminationReason:l,lastScanTime:c}}return F={parseOrbitSource:v,normalizeOrbitSource:v,fromTle:(t,e)=>v(e?{line1:t,line2:e}:t),fromJsonGp:t=>v(x(t)),fromOmmXml:t=>v(b(t)),toSatrec:y,observeAt:C,ephemeris:function(t,e,n,o,r){const a=c(n),s=c(o),l=d(r,6e4),u=[],m=i().maxIterations;let h=new Date(a.getTime()),f=0;for(;h<s&&f<m;){const n=C(t,e,h);if(!n)break;u.push(n),h=new Date(h.getTime()+l),i().printIntervalInfo&&console.log(h.toISOString()),f+=1}return u},findTransits:H,findTransitsDebug:function(t,e,n,o,r,a=100,s={}){const l=c(n),u=c(o),m=y(t),h=null==r?4:r,p=null==a?i().maxIterations:a,g=f(e,"findTransitsDebug"),M=d(s.scanStepMs,6e4);if(!Number.isFinite(p)||p<0)throw new Error("maxTransits must be a non-negative number");const x=Y(m,g,l.getTime(),u.getTime(),h,p),b=function(t,e,n,o,r){const a={scanStepMs:r,maxElevationInWindow:Number.NEGATIVE_INFINITY,closestToHorizonAt:null,closestToHorizonElevation:null,latestNearHorizonAt:null,sampledPoints:0};if(o<=n)return a.maxElevationInWindow=null,a;let s=n,c=Number.POSITIVE_INFINITY,d=0;const l=i().maxIterations;for(;s<=o&&d<l;){const n=C(t,e,s);if(!n)break;if(a.sampledPoints+=1,Number.isFinite(n.elevation)){n.elevation>a.maxElevationInWindow&&(a.maxElevationInWindow=n.elevation);const t=Math.abs(n.elevation);t<c&&(c=t,a.closestToHorizonAt=s,a.closestToHorizonElevation=n.elevation),t<=1&&(a.latestNearHorizonAt=s)}s+=r,d+=1}return a.maxElevationInWindow===Number.NEGATIVE_INFINITY&&(a.maxElevationInWindow=null),a}(m,g,l.getTime(),u.getTime(),M);return{transits:x.transits,diagnostics:{...b,thresholdElevation:h,searchIterations:x.iterations,terminationReason:x.terminationReason,lastScanTime:x.lastScanTime}}},transitSegment:function(t,e,n,o){const i=c(n),r=c(o),a=y(t),s=f(e,"transitSegment");return S(a,s,i.getTime())?null:k(a,s,i.getTime(),r.getTime())},visibilityWindows:function(t,e,n,o){const i=c(n),r=c(o),a=y(t),s=f(e,"visibilityWindows");if(N(a)&&I(a,s))return[[i.getTime(),r.getTime()]];const d=H(a,s,i,r);return d&&0!==d.length?d.map((t=>[t.start,t.end])):[]},satelliteVisibilityWindows:function(t,e,n,o,r=60){const a=y(t),s=y(e),d=c(n),l=c(o),u=[];let m=new Date(d.getTime()),h=!1,f=null;const p=i().maxIterations;for(;m<=l&&u.length<p;){const t=T(m,a),e=T(m,s);if(!t.position||!e.position)break;const n=$(t.position,e.position);n&&!h?(h=!0,f=m.getTime()):!n&&h&&(h=!1,u.push([f,m.getTime()]),f=null);const o=L(t,e,n,r);m=new Date(m.getTime()+1e3*o)}return h&&null!=f&&u.push([f,l.getTime()]),u},orbitalPeriodFromOrbitSource:function(t){const e=y(t).a*o;return 2*Math.PI*Math.sqrt(Math.pow(e,3)/398600.5)},orbitalPeriodFromCartesian3:function(t=[0,0,0]){const[e,n,o]=t,i=Math.sqrt(e*e+n*n+o*o);return i<=0?0:2*Math.PI*Math.sqrt(Math.pow(i,3)/398600.5)},_internals:{boundLongitude:g,clamp:p,getPropagation:T,getGmst:z,getSunVector:E,satEclipsed:O,isGeostationary:N,badSat:S,aosHappens:I,decayed:w,findAOS:P,findLOS:j,quickPredict:k,isSatToSatVisible:$,adaptiveStep:L,vecSub:_,magnitude:A,scalarMultiply:function(t,e){return{x:t*e.x,y:t*e.y,z:t*e.z}},angle:function(t,e){const n=t.x*e.x+t.y*e.y+t.z*e.z;return Math.acos(n/(A(t)*A(e)))}}}}function Y(){return k?j:(k=1,j=H())}var B=function(){if(L)return $;L=1;const t=i(),e=Y();function n(e){if(null==e)return t.maxIterations;if(!Number.isFinite(e)||e<=0)throw new Error("max must be a positive number");return t.maxIterations=Math.floor(e),t.maxIterations}function o(e){return t.printIntervalInfo=Boolean(e),t.printIntervalInfo}const r={printIntervalInfo:o,setDebugIntervalLogging:o,setMax:n,setIterationLimit:n,normalizeOrbitSource:e.normalizeOrbitSource,fromTle:e.fromTle,fromJsonGp:e.fromJsonGp,fromOmmXml:e.fromOmmXml,observeAt:e.observeAt,getPositionByTime:e.observeAt,ephemeris:e.ephemeris,getEphemeris:e.ephemeris,findTransits:e.findTransits,transits:e.findTransits,findTransitsDebug:e.findTransitsDebug,transitSegment:e.transitSegment,getTransitSegment:e.transitSegment,visibilityWindows:e.visibilityWindows,getVisibilityWindows:e.visibilityWindows,satelliteVisibilityWindows:e.satelliteVisibilityWindows,getSatelliteVisibilityWindows:e.satelliteVisibilityWindows,orbitalPeriodFromOrbitSource:e.orbitalPeriodFromOrbitSource,orbitalPeriodFromTle:e.orbitalPeriodFromOrbitSource,getOrbitalPeriodByTle:e.orbitalPeriodFromOrbitSource,orbitalPeriodFromCartesian3:e.orbitalPeriodFromCartesian3,getOrbitalPeriodByCartesian3:e.orbitalPeriodFromCartesian3};return $=r}(),W=t(B);export{W as default}; //# sourceMappingURL=jspredict-dc.esm.js.map