{"version":3,"file":"aladin.js","mappings":";;;;;;AAAA;AACA,EAAE,KAA4D;AAC9D,EAAE,CAC2G;AAC7G,CAAC,sBAAsB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,sBAAsB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wBAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,wDAAwD,uBAAuB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;AACD;;;;;;;;;;;;;;;;AC1YA;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,6DAA6D,uBAAuB,2BAA2B,mBAAmB,yBAAyB,KAAK,2BAA2B,uBAAuB,iBAAiB,YAAY,WAAW,GAAG,2BAA2B,yBAAyB,iBAAiB,cAAc,aAAa,GAAG,4BAA4B,yBAAyB,gBAAgB,iBAAiB,gBAAgB,wBAAwB,sBAAsB,GAAG,wBAAwB,iBAAiB,mCAAmC,yVAAyV,4BAA4B,mCAAmC,yBAAyB,6CAA6C,wB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BAAwB,WAAW,kBAAkB,KAAK,aAAa,iCAAiC,4BAA4B,YAAY,qBAAqB,WAAW,eAAe,KAAK,eAAe,cAAc,cAAc,yBAAyB,KAAK,qBAAqB,iCAAiC,cAAc,oBAAoB,KAAK,0CAA0C,mCAAmC,uCAAuC,uCAAuC,iCAAiC,8BAA8B,wBAAwB,YAAY,qEAAqE,eAAe,8BAA8B,wBAAwB,YAAY,qEAAqE,eAAe,6BAA6B,sBAAsB,sBAAsB,4CAA4C,kCAAkC,2BAA2B,iBAAiB,mCAAmC,KAAK,oCAAoC,gCAAgC,4CAA4C,qBAAqB,qBAAqB,mDAAmD,2FAA2F,2BAA2B,mDAAmD,4FAA4F,KAAK,8DAA8D,+BAA+B,YAAY,+BAA+B,4CAA4C,wCAAwC,yDAAyD,6BAA6B;;;;;;UCAr6G;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,IAAI;WACJ;WACA;WACA,IAAI;WACJ;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA,sGAAsG;WACtG;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA,EAAE;WACF;WACA;;;;;WClEA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA;WACA;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;;;;;WCVA;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WCzCA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WCVA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WCfA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL,eAAe;WACf;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;WACA;WACA;;;;;WCrFA;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAIA,KAAK,GAAI,YAAW;EAG3B;EACA,SAASA,KAAT,CAAeC,SAAf,EAA0BC,IAA1B,EAAgC;IAC5B,KAAK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,EAAE,GAAG,KAAK2N,UAAL,CAAgB,aAAhB,CAAL;MACH;;MACD,IAAI3N,EAAE,IAAE,IAAJ,IAAY,KAAK2N,UAAL,CAAgB4D,cAAhB,CAA+B,eAA/B,CAAhB,EAAiE;QAC7DvR,EAAE,GAAG,KAAK2N,UAAL,CAAgB,eAAhB,CAAL;MACH;;MAED,IAAI3N,EAAE,IAAI,IAAV,EAAgB;QACZ;QACA,IAAIA,EAAE,CAACtO,KAAH,CAAS,CAAT,EAAY,CAAZ,MAAmB,QAAvB,EAAiC;UAC7BsO,EAAE,GAAGA,EAAE,CAACtO,KAAH,CAAS,CAAT,CAAL;QACH,CAJW,CAMZ;;;QACAsO,EAAE,GAAGA,EAAE,CAACjU,OAAH,CAAW,KAAX,EAAkB,GAAlB,CAAL;MACH;;MAED,OAAOiU,EAAP;IACH;EAnCsB,CAA3B,CAvBoC,CAgEpC;EACA;;EACA,IAAIwgC,oBAAoB,GAAG;IAC3B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EArO+B,CAA3B;EAwOA,IAAIC,kBAAkB,GAAG,EAAzB,CA1SoC,CA0SP;;EAE7BT,cAAc,CAACU,iBAAf,GAAmC,kBAAnC;EAEA,IAAIC,uBAAuB,GAAG,sBAA9B;EACA,IAAIC,YAAY,GAAG,gBAAnB,CA/SoC,CA+SC;EACrC;EACA;;EACAZ,cAAc,CAACa,0BAAf,GAA4C,YAAW;IACnD,IAAI;MACA,IAAIC,IAAI,GAAGjxC,MAAM,CAACkxC,YAAP,CAAoBC,OAApB,CAA4BhB,cAAc,CAACU,iBAA3C,CAAX;MACA,OAAOI,IAAI,KAAK,IAAT,GAAgB,EAAhB,GAAqBjxC,MAAM,CAACkH,IAAP,CAAYC,KAAZ,CAAkB8pC,IAAlB,CAA5B;IACH,CAHD,CAIA,OAAMvwC,CAAN,EAAS;MACL;MACA,OAAO,EAAP;IACH;EACJ,CATD,CAlToC,CA6TpC;EACA;;;EACAyvC,cAAc,CAACiB,mBAAf,GAAqC,UAAStzB,UAAT,EAAqB;IACtD,IAAI;MACA9d,MAAM,CAACkxC,YAAP,CAAoBG,OAApB,CAA4BlB,cAAc,CAACU,iBAA3C,EAA8D7wC,MAAM,CAACkH,IAAP,CAAYE,SAAZ,CAAsB0W,UAAtB,CAA9D;IACH,CAFD,CAGA,OAAMpd,CAAN,EAAS;MACL;MACA,OAAO,KAAP;IACH;;IAED,OAAO,IAAP;EACH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","sources":["webpack://hips_webgl_renderer/./node_modules/autocompleter/autocomplete.js","webpack://hips_webgl_renderer/./src/css/aladin.css","webpack://hips_webgl_renderer/./node_modules/css-loader/dist/runtime/api.js","webpack://hips_webgl_renderer/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://hips_webgl_renderer/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://hips_webgl_renderer/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://hips_webgl_renderer/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://hips_webgl_renderer/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://hips_webgl_renderer/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://hips_webgl_renderer/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://hips_webgl_renderer/./src/glsl/webgl2/catalogs/aitoff.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/catalogs/arc.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/catalogs/catalog.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/catalogs/healpix.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/catalogs/mercator.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/catalogs/mollweide.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/catalogs/ortho.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/catalogs/ortho.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/catalogs/tan.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/colormaps/colormap.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/colormaps/colormap.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/grid/aitoff.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/grid/arc.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/grid/grid.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/grid/grid_cpu.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/grid/grid_cpu.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/grid/mercator.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/grid/mollweide.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/grid/ortho.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/grid/tan.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/aitoff.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/arc.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/color.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/gnomonic.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/grayscale_to_color.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/grayscale_to_color_i.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/grayscale_to_color_u.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/grayscale_to_colormap.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/grayscale_to_colormap_i.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/grayscale_to_colormap_u.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/healpix.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/mercator.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/mollweide.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/rasterizer/ortho.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/backcolor.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/backcolor.vert","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/color.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/grayscale_to_color.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/grayscale_to_color_i.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/grayscale_to_color_u.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/grayscale_to_colormap.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/grayscale_to_colormap_i.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/grayscale_to_colormap_u.frag","webpack://hips_webgl_renderer/./src/glsl/webgl2/hips/raytracer/raytracer.vert","webpack://hips_webgl_renderer/webpack/bootstrap","webpack://hips_webgl_renderer/webpack/runtime/async module","webpack://hips_webgl_renderer/webpack/runtime/compat get default export","webpack://hips_webgl_renderer/webpack/runtime/define property getters","webpack://hips_webgl_renderer/webpack/runtime/ensure chunk","webpack://hips_webgl_renderer/webpack/runtime/get javascript chunk filename","webpack://hips_webgl_renderer/webpack/runtime/global","webpack://hips_webgl_renderer/webpack/runtime/harmony module decorator","webpack://hips_webgl_renderer/webpack/runtime/hasOwnProperty shorthand","webpack://hips_webgl_renderer/webpack/runtime/load script","webpack://hips_webgl_renderer/webpack/runtime/make namespace object","webpack://hips_webgl_renderer/webpack/runtime/wasm loading","webpack://hips_webgl_renderer/webpack/runtime/publicPath","webpack://hips_webgl_renderer/webpack/runtime/jsonp chunk loading","webpack://hips_webgl_renderer/webpack/runtime/nonce","webpack://hips_webgl_renderer/./src/js/Popup.js","webpack://hips_webgl_renderer/./src/js/HealpixGrid.js","webpack://hips_webgl_renderer/./src/js/libs/astro/astroMath.js","webpack://hips_webgl_renderer/./src/js/libs/astro/projection.js","webpack://hips_webgl_renderer/./src/js/ProjectionEnum.js","webpack://hips_webgl_renderer/./src/js/CooFrameEnum.js","webpack://hips_webgl_renderer/./src/js/AladinUtils.js","webpack://hips_webgl_renderer/./src/js/Utils.js","webpack://hips_webgl_renderer/./src/js/libs/astro/coo.js","webpack://hips_webgl_renderer/./src/js/SimbadPointer.js","webpack://hips_webgl_renderer/./src/js/libs/Stats.js","webpack://hips_webgl_renderer/./src/js/ColorMap.js","webpack://hips_webgl_renderer/./src/js/Footprint.js","webpack://hips_webgl_renderer/./src/js/Circle.js","webpack://hips_webgl_renderer/./src/js/libs/RequestAnimationFrame.js","webpack://hips_webgl_renderer/./src/js/ShadersWebGL2.js","webpack://hips_webgl_renderer/./src/img/kernel.png","webpack://hips_webgl_renderer/./src/img/colormaps/colormaps.png","webpack://hips_webgl_renderer/./src/js/WebGL.js","webpack://hips_webgl_renderer/./src/js/Logger.js","webpack://hips_webgl_renderer/./src/js/events/ALEvent.js","webpack://hips_webgl_renderer/./src/js/View.js","webpack://hips_webgl_renderer/./src/js/libs/fits.js","webpack://hips_webgl_renderer/./src/js/CooConversion.js","webpack://hips_webgl_renderer/./src/js/Color.js","webpack://hips_webgl_renderer/./src/js/MOC.js","webpack://hips_webgl_renderer/./src/js/Line.js","webpack://hips_webgl_renderer/./src/js/Overlay.js","webpack://hips_webgl_renderer/./src/js/Ellipse.js","webpack://hips_webgl_renderer/./src/js/Polyline.js","webpack://hips_webgl_renderer/./src/js/Source.js","webpack://hips_webgl_renderer/./src/js/Catalog.js","webpack://hips_webgl_renderer/./src/js/ProgressiveCat.js","webpack://hips_webgl_renderer/./src/js/Sesame.js","webpack://hips_webgl_renderer/./src/js/MeasurementTable.js","webpack://hips_webgl_renderer/./src/js/Location.js","webpack://hips_webgl_renderer/./src/js/HiPSDefinition.js","webpack://hips_webgl_renderer/./src/js/HpxImageSurvey.js","webpack://hips_webgl_renderer/./src/js/URLBuilder.js","webpack://hips_webgl_renderer/./src/js/gui/AladinLogo.js","webpack://hips_webgl_renderer/./src/js/gui/ProjectionSelector.js","webpack://hips_webgl_renderer/./src/js/MocServer.js","webpack://hips_webgl_renderer/./src/js/gui/CatalogSelector.js","webpack://hips_webgl_renderer/./src/js/gui/HiPSSelector.js","webpack://hips_webgl_renderer/./src/js/gui/HiPSLayer.js","webpack://hips_webgl_renderer/./src/js/gui/Stack.js","webpack://hips_webgl_renderer/./src/css/aladin.css?e7d2","webpack://hips_webgl_renderer/./src/js/Aladin.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.autocomplete = factory());\n}(this, (function () { 'use strict';\n\n /*\r\n * https://github.com/kraaden/autocomplete\r\n * Copyright (c) 2016 Denys Krasnoshchok\r\n * MIT License\r\n */\r\n function autocomplete(settings) {\r\n // just an alias to minimize JS file size\r\n var doc = document;\r\n var container = settings.container || doc.createElement(\"div\");\r\n var containerStyle = container.style;\r\n var userAgent = navigator.userAgent;\r\n var mobileFirefox = ~userAgent.indexOf(\"Firefox\") && ~userAgent.indexOf(\"Mobile\");\r\n var debounceWaitMs = settings.debounceWaitMs || 0;\r\n var preventSubmit = settings.preventSubmit || false;\r\n var disableAutoSelect = settings.disableAutoSelect || false;\r\n // 'keyup' event will not be fired on Mobile Firefox, so we have to use 'input' event instead\r\n var keyUpEventName = mobileFirefox ? \"input\" : \"keyup\";\r\n var items = [];\r\n var inputValue = \"\";\r\n var minLen = 2;\r\n var showOnFocus = settings.showOnFocus;\r\n var selected;\r\n var keypressCounter = 0;\r\n var debounceTimer;\r\n if (settings.minLength !== undefined) {\r\n minLen = settings.minLength;\r\n }\r\n if (!settings.input) {\r\n throw new Error(\"input undefined\");\r\n }\r\n var input = settings.input;\r\n container.className = \"autocomplete \" + (settings.className || \"\");\r\n // IOS implementation for fixed positioning has many bugs, so we will use absolute positioning\r\n containerStyle.position = \"absolute\";\r\n /**\r\n * Detach the container from DOM\r\n */\r\n function detach() {\r\n var parent = container.parentNode;\r\n if (parent) {\r\n parent.removeChild(container);\r\n }\r\n }\r\n /**\r\n * Clear debouncing timer if assigned\r\n */\r\n function clearDebounceTimer() {\r\n if (debounceTimer) {\r\n window.clearTimeout(debounceTimer);\r\n }\r\n }\r\n /**\r\n * Attach the container to DOM\r\n */\r\n function attach() {\r\n if (!container.parentNode) {\r\n doc.body.appendChild(container);\r\n }\r\n }\r\n /**\r\n * Check if container for autocomplete is displayed\r\n */\r\n function containerDisplayed() {\r\n return !!container.parentNode;\r\n }\r\n /**\r\n * Clear autocomplete state and hide container\r\n */\r\n function clear() {\r\n // prevent the update call if there are pending AJAX requests\r\n keypressCounter++;\r\n items = [];\r\n inputValue = \"\";\r\n selected = undefined;\r\n detach();\r\n }\r\n /**\r\n * Update autocomplete position\r\n */\r\n function updatePosition() {\r\n if (!containerDisplayed()) {\r\n return;\r\n }\r\n containerStyle.height = \"auto\";\r\n containerStyle.width = input.offsetWidth + \"px\";\r\n var maxHeight = 0;\r\n var inputRect;\r\n function calc() {\r\n var docEl = doc.documentElement;\r\n var clientTop = docEl.clientTop || doc.body.clientTop || 0;\r\n var clientLeft = docEl.clientLeft || doc.body.clientLeft || 0;\r\n var scrollTop = window.pageYOffset || docEl.scrollTop;\r\n var scrollLeft = window.pageXOffset || docEl.scrollLeft;\r\n inputRect = input.getBoundingClientRect();\r\n var top = inputRect.top + input.offsetHeight + scrollTop - clientTop;\r\n var left = inputRect.left + scrollLeft - clientLeft;\r\n containerStyle.top = top + \"px\";\r\n containerStyle.left = left + \"px\";\r\n maxHeight = window.innerHeight - (inputRect.top + input.offsetHeight);\r\n if (maxHeight < 0) {\r\n maxHeight = 0;\r\n }\r\n containerStyle.top = top + \"px\";\r\n containerStyle.bottom = \"\";\r\n containerStyle.left = left + \"px\";\r\n containerStyle.maxHeight = maxHeight + \"px\";\r\n }\r\n // the calc method must be called twice, otherwise the calculation may be wrong on resize event (chrome browser)\r\n calc();\r\n calc();\r\n if (settings.customize && inputRect) {\r\n settings.customize(input, inputRect, container, maxHeight);\r\n }\r\n }\r\n /**\r\n * Redraw the autocomplete div element with suggestions\r\n */\r\n function update() {\r\n // delete all children from autocomplete DOM container\r\n while (container.firstChild) {\r\n container.removeChild(container.firstChild);\r\n }\r\n // function for rendering autocomplete suggestions\r\n var render = function (item, currentValue) {\r\n var itemElement = doc.createElement(\"div\");\r\n itemElement.textContent = item.label || \"\";\r\n return itemElement;\r\n };\r\n if (settings.render) {\r\n render = settings.render;\r\n }\r\n // function to render autocomplete groups\r\n var renderGroup = function (groupName, currentValue) {\r\n var groupDiv = doc.createElement(\"div\");\r\n groupDiv.textContent = groupName;\r\n return groupDiv;\r\n };\r\n if (settings.renderGroup) {\r\n renderGroup = settings.renderGroup;\r\n }\r\n var fragment = doc.createDocumentFragment();\r\n var prevGroup = \"#9?$\";\r\n items.forEach(function (item) {\r\n if (item.group && item.group !== prevGroup) {\r\n prevGroup = item.group;\r\n var groupDiv = renderGroup(item.group, inputValue);\r\n if (groupDiv) {\r\n groupDiv.className += \" group\";\r\n fragment.appendChild(groupDiv);\r\n }\r\n }\r\n var div = render(item, inputValue);\r\n if (div) {\r\n div.addEventListener(\"click\", function (ev) {\r\n settings.onSelect(item, input);\r\n clear();\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n });\r\n if (item === selected) {\r\n div.className += \" selected\";\r\n }\r\n fragment.appendChild(div);\r\n }\r\n });\r\n container.appendChild(fragment);\r\n if (items.length < 1) {\r\n if (settings.emptyMsg) {\r\n var empty = doc.createElement(\"div\");\r\n empty.className = \"empty\";\r\n empty.textContent = settings.emptyMsg;\r\n container.appendChild(empty);\r\n }\r\n else {\r\n clear();\r\n return;\r\n }\r\n }\r\n attach();\r\n updatePosition();\r\n updateScroll();\r\n }\r\n function updateIfDisplayed() {\r\n if (containerDisplayed()) {\r\n update();\r\n }\r\n }\r\n function resizeEventHandler() {\r\n updateIfDisplayed();\r\n }\r\n function scrollEventHandler(e) {\r\n if (e.target !== container) {\r\n updateIfDisplayed();\r\n }\r\n else {\r\n e.preventDefault();\r\n }\r\n }\r\n function keyupEventHandler(ev) {\r\n var keyCode = ev.which || ev.keyCode || 0;\r\n var ignore = settings.keysToIgnore || [38 /* Up */, 13 /* Enter */, 27 /* Esc */, 39 /* Right */, 37 /* Left */, 16 /* Shift */, 17 /* Ctrl */, 18 /* Alt */, 20 /* CapsLock */, 91 /* WindowsKey */, 9 /* Tab */];\r\n for (var _i = 0, ignore_1 = ignore; _i < ignore_1.length; _i++) {\r\n var key = ignore_1[_i];\r\n if (keyCode === key) {\r\n return;\r\n }\r\n }\r\n if (keyCode >= 112 /* F1 */ && keyCode <= 123 /* F12 */ && !settings.keysToIgnore) {\r\n return;\r\n }\r\n // the down key is used to open autocomplete\r\n if (keyCode === 40 /* Down */ && containerDisplayed()) {\r\n return;\r\n }\r\n startFetch(0 /* Keyboard */);\r\n }\r\n /**\r\n * Automatically move scroll bar if selected item is not visible\r\n */\r\n function updateScroll() {\r\n var elements = container.getElementsByClassName(\"selected\");\r\n if (elements.length > 0) {\r\n var element = elements[0];\r\n // make group visible\r\n var previous = element.previousElementSibling;\r\n if (previous && previous.className.indexOf(\"group\") !== -1 && !previous.previousElementSibling) {\r\n element = previous;\r\n }\r\n if (element.offsetTop < container.scrollTop) {\r\n container.scrollTop = element.offsetTop;\r\n }\r\n else {\r\n var selectBottom = element.offsetTop + element.offsetHeight;\r\n var containerBottom = container.scrollTop + container.offsetHeight;\r\n if (selectBottom > containerBottom) {\r\n container.scrollTop += selectBottom - containerBottom;\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Select the previous item in suggestions\r\n */\r\n function selectPrev() {\r\n if (items.length < 1) {\r\n selected = undefined;\r\n }\r\n else {\r\n if (selected === items[0]) {\r\n selected = items[items.length - 1];\r\n }\r\n else {\r\n for (var i = items.length - 1; i > 0; i--) {\r\n if (selected === items[i] || i === 1) {\r\n selected = items[i - 1];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Select the next item in suggestions\r\n */\r\n function selectNext() {\r\n if (items.length < 1) {\r\n selected = undefined;\r\n }\r\n if (!selected || selected === items[items.length - 1]) {\r\n selected = items[0];\r\n return;\r\n }\r\n for (var i = 0; i < (items.length - 1); i++) {\r\n if (selected === items[i]) {\r\n selected = items[i + 1];\r\n break;\r\n }\r\n }\r\n }\r\n function keydownEventHandler(ev) {\r\n var keyCode = ev.which || ev.keyCode || 0;\r\n if (keyCode === 38 /* Up */ || keyCode === 40 /* Down */ || keyCode === 27 /* Esc */) {\r\n var containerIsDisplayed = containerDisplayed();\r\n if (keyCode === 27 /* Esc */) {\r\n clear();\r\n }\r\n else {\r\n if (!containerIsDisplayed || items.length < 1) {\r\n return;\r\n }\r\n keyCode === 38 /* Up */\r\n ? selectPrev()\r\n : selectNext();\r\n update();\r\n }\r\n ev.preventDefault();\r\n if (containerIsDisplayed) {\r\n ev.stopPropagation();\r\n }\r\n return;\r\n }\r\n if (keyCode === 13 /* Enter */) {\r\n if (selected) {\r\n settings.onSelect(selected, input);\r\n clear();\r\n }\r\n if (preventSubmit) {\r\n ev.preventDefault();\r\n }\r\n }\r\n }\r\n function focusEventHandler() {\r\n if (showOnFocus) {\r\n startFetch(1 /* Focus */);\r\n }\r\n }\r\n function startFetch(trigger) {\r\n // If multiple keys were pressed, before we get an update from server,\r\n // this may cause redrawing autocomplete multiple times after the last key was pressed.\r\n // To avoid this, the number of times keyboard was pressed will be saved and checked before redraw.\r\n var savedKeypressCounter = ++keypressCounter;\r\n var inputText = input.value;\r\n var cursorPos = input.selectionStart || 0;\r\n if (inputText.length >= minLen || trigger === 1 /* Focus */) {\r\n clearDebounceTimer();\r\n debounceTimer = window.setTimeout(function () {\r\n settings.fetch(inputText, function (elements) {\r\n if (keypressCounter === savedKeypressCounter && elements) {\r\n items = elements;\r\n inputValue = inputText;\r\n selected = (items.length < 1 || disableAutoSelect) ? undefined : items[0];\r\n update();\r\n }\r\n }, trigger, cursorPos);\r\n }, trigger === 0 /* Keyboard */ ? debounceWaitMs : 0);\r\n }\r\n else {\r\n clear();\r\n }\r\n }\r\n function blurEventHandler() {\r\n // we need to delay clear, because when we click on an item, blur will be called before click and remove items from DOM\r\n setTimeout(function () {\r\n if (doc.activeElement !== input) {\r\n clear();\r\n }\r\n }, 200);\r\n }\r\n /**\r\n * Fixes #26: on long clicks focus will be lost and onSelect method will not be called\r\n */\r\n container.addEventListener(\"mousedown\", function (evt) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n });\r\n /**\r\n * Fixes #30: autocomplete closes when scrollbar is clicked in IE\r\n * See: https://stackoverflow.com/a/9210267/13172349\r\n */\r\n container.addEventListener(\"focus\", function () { return input.focus(); });\r\n /**\r\n * This function will remove DOM elements and clear event handlers\r\n */\r\n function destroy() {\r\n input.removeEventListener(\"focus\", focusEventHandler);\r\n input.removeEventListener(\"keydown\", keydownEventHandler);\r\n input.removeEventListener(keyUpEventName, keyupEventHandler);\r\n input.removeEventListener(\"blur\", blurEventHandler);\r\n window.removeEventListener(\"resize\", resizeEventHandler);\r\n doc.removeEventListener(\"scroll\", scrollEventHandler, true);\r\n clearDebounceTimer();\r\n clear();\r\n }\r\n // setup event handlers\r\n input.addEventListener(\"keydown\", keydownEventHandler);\r\n input.addEventListener(keyUpEventName, keyupEventHandler);\r\n input.addEventListener(\"blur\", blurEventHandler);\r\n input.addEventListener(\"focus\", focusEventHandler);\r\n window.addEventListener(\"resize\", resizeEventHandler);\r\n doc.addEventListener(\"scroll\", scrollEventHandler, true);\r\n return {\r\n destroy: destroy\r\n };\r\n }\n\n return autocomplete;\n\n})));\n//# sourceMappingURL=autocomplete.js.map\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".aladin-container {\\n\\tposition: relative;\\n\\tborder: 1px solid #ddd;\\n height: 100%;\\n /*overflow: hidden;*/\\n}\\n\\n\\n.aladin-imageCanvas {\\n\\tposition: absolute;\\n z-index: 1;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.aladin-catalogCanvas {\\n position: absolute;\\n z-index: 2;\\n left: 0;\\n top: 0;\\n}\\n\\n.aladin-logo-container {\\n position: absolute;\\n\\tbottom: 2px;\\n right: 5px;\\n\\tz-index: 20;\\n\\n min-width: 32px;\\n max-width: 90px;\\n}\\n\\n.aladin-logo-small {\\n padding: 0;\\n\\tbackground: url(data:image/gif;base64,R0lGODlhIAAgAJEAAJIsLdEwJAdMmP///yH5BAkAAAMALAAAAAAgACAAAAjMAAcIHEiwoMGDCBMqXMiwocOHECMaFCCxYkKKAAoK2MiRo0UBAEKKFOkxYUaCIEMSHBlyo0OQCke6HHDyJEWBKgcG2MlzoEyFMAXyHNqTZsubNFGeHLDT4FCcLREGZUqwaFGRUk82FfqUaQCoSH0OCLqVqlCuX42u9Kl1a1qzXnGGVaozLdG6cpMWxOrVblm4AOYOTNn2L1efYZdu5Eu0cV6cE0fW7QqV4WK+CAMLPnhZMtvAEDmy/CkWMtCOHVFaXC2VtevXsGPLZhgQADs=);\\n background-size: 100%;\\n background-repeat: no-repeat;\\n padding-top: 100%; /* aspect ratio of the background image */\\n}\\n\\n.aladin-logo-large {\\n padding: 0;\\n background: url('data:image/png;base64,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');\\n background-size: 100%;\\n background-repeat: no-repeat;\\n padding-top: 58.45%; /* aspect ratio of the background image */\\n}\\n\\n.aladin-col {\\n float: left;\\n width: 45.00%;\\n margin-right: 5.0%;\\n}\\n /* Clear floats after the columns */\\n.aladin-row:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n }\\n\\n.aladin-location {\\n\\tz-index: 20;\\n\\tposition:absolute;\\n top: 0px;\\n\\tpadding: 2px 4px 2px 4px;\\n\\tbackground-color: rgba(255, 255, 255, 0.5);\\n\\tfont-size: 11px;\\n}\\n\\n.aladin-projSelection {\\n\\tz-index: 20;\\n\\tposition:absolute;\\n top: 0px;\\n right: 48px;\\n\\tpadding: 2px 4px 2px 4px;\\n\\tbackground-color: rgba(255, 255, 255, 0.5);\\n\\tfont-size: 11px;\\n}\\n\\n.aladin-location-text {\\n\\tfont-size: 13px;\\n margin-left: 4px;\\n}\\n\\n.aladin-measurement-div {\\n\\tz-index: 77;\\n\\tposition:absolute;\\n bottom: 20px;\\n\\tbackground-color: rgba(255, 255, 255, 0.8);\\n font-family: monospace;\\n\\tfont-size: 12px;\\n display: none;\\n width: 100%;\\n overflow: auto;\\n}\\n\\n.aladin-measurement-div table {\\n\\tpadding: 2px 4px 2px 4px;\\n table-layout: fixed;\\n white-space: nowrap;\\n}\\n\\n.aladin-measurement-div thead {\\n background-color: #e0e0e0;\\n color: #000;\\n}\\n\\n.aladin-measurement-div td, .aladin-measurement-div th {\\n /*\\n border-left-color: #cbcbcb;\\n border-left-style: solid;\\n */\\n padding: 0.3em 0.3em;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n text-align: left;\\n}\\n\\n.aladin-marker-measurement {\\n max-height: 130px;\\n overflow-y: auto;\\n overflow-x: hidden;\\n font-family: monospace;\\n\\tfont-size: 11px;\\n color: #000;\\n}\\n.aladin-marker-measurement table {\\n table-layout: fixed;\\n width: 100%;\\n}\\n.aladin-marker-measurement table tr td{\\nword-wrap:break-word;\\n}\\n.aladin-marker-measurement tr:nth-child(even) {\\n background-color: #dddddd;\\n}\\n.aladin-marker-measurement td:first-child {\\n font-weight: bold;\\n}\\n\\n.aladin-fov {\\n z-index: 20;\\n position: absolute;\\n padding: 0;\\n font-size: 12px;\\n font-weight: bold;\\n bottom: 0px;\\n padding: 2px;\\n color: #321bdf;\\n /*text-shadow: 0 0 1px white, 0 0 1px white, 0 0 1px white, 0 0 1px white, 0 0 1px white;*/\\n\\tbackground-color: rgba(255, 255, 255, 0.5);\\n}\\n\\n/* maximize/restore size icons */\\n.aladin-maximize {\\n\\tposition: absolute;\\n\\ttop: 6px;\\n\\tright: 3px;\\n\\tz-index: 20;\\n\\twidth: 30px;\\n\\theight: 30px;\\n\\tbackground-image: url('data:image/gif;base64,R0lGODlhFgAWAOMJAAAAAAEBAQICAgMDAwUFBAUFBQcHBwgICAsLCv///////////////////////////yH5BAEKAA8ALAAAAAAWABYAAARm8MlJabr41i0T+CCQcJz3CYMwklsSEAUhspVnHEYw0x1w558VzYQTBXm24sgjJCUQykmT9dzxWlNq9vrwILYtqe/wRc6SBqszOE6DLZ/AT00FyKNcD4wQeLdQAiB+cCFHVxkZXA8RADs=');\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position:center center;\\n}\\n\\n.aladin-layersControl-container {\\n position: absolute;\\n top: 30px;\\n left: 4px;\\n cursor:pointer;\\n z-index: 20;\\n background: rgba(250, 250, 250, 0.8);\\n border-radius: 4px;\\n}\\n\\n.aladin-layersControl-container:hover {\\n\\tbackground: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-layersControl {\\n\\twidth: 32px;\\n height: 34px;\\n background-image: url('data:image/gif;base64,R0lGODlhGQAcAMIAAAAAADQ0NKahocvFxf///wAAAAAAAAAAACH5BAEKAAcALAAAAAAZABwAAANneLoH/hCwyaJ1dDrCuydY1gBfyYUaaZqosq0r+sKxNNP1pe98Hy2OgXBILLZGxWRSBlA6iZjgczrwWa9WIEDA7Xq/R8d3PGaSz97oFs0WYN9wiDZAr9vvYcB9v2fy/3ZqgIN0cYZYCQA7');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-layerBox {\\n top: 30px;\\n padding: 4px 4px;\\n max-height: 90%;\\n overflow-y: auto;\\n}\\n\\n.aladin-box {\\n\\tdisplay: none;\\n z-index: 30;\\n position: absolute;\\n background: #eee;\\n left: 4px;\\n border-radius: 4px;\\n font-size: 14px;\\n font-family: Verdana, Lucida, Arial;\\n line-height: 1.3;\\n color: #222;\\n padding: 0.8em;\\n}\\n\\n.aladin-dialog {\\n\\tdisplay: none;\\n z-index: 30;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n background: #eee;\\n border-radius: 4px;\\n font-family: Verdana, Lucida, Arial;\\n line-height: 1.3;\\n color: #222;\\n min-width: 300px;\\n max-width: 500px;\\n padding: 0.8em;\\n}\\n\\nselect {\\n padding: 4px;\\n}\\n\\n.aladin-surveySelection {\\n max-width: 230px;\\n}\\n\\ninput[type=text], input[type=number] {\\n padding: 4px;\\n width: 100%;\\n box-sizing: border-box;\\n}\\n\\n.aladin-box-title {\\n font-size: 16px;\\n font-family: Verdana, Lucida, Arial;\\n line-height: 2.0;\\n font-weight: bold;\\n cursor: pointer;\\n border-radius: 4px;\\n}\\n\\n.aladin-box-content {\\n padding: 10px;\\n}\\n\\n.aladin-text {\\n background-color: #bbb;\\n}\\n\\n.aladin-gotoControl-container {\\n\\tposition: absolute;\\n top: 68px;\\n left: 4px;\\n cursor:pointer;\\n z-index: 20;\\n background: rgba(250, 250, 250, 0.8);\\n border-radius: 4px;\\n}\\n\\n.aladin-gotoControl-container:hover {\\n background: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-gotoControl {\\n width: 32px;\\n height: 34px;\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASZJREFUeNpiYMAOpIG4GogPAPETIP4PpQ9AxaUZyARsQNwFxN+ghuLC36Dq2EgxXBSITxIwGB2fhOojyuXohl8C4hCk4JCG8i9hsYSgT9qRNPwE4hY8mtig8n+Q9LTjM1waaihMcQ6RQZqD5ig5XAobkRQeJjFRHEbS20iMoigSLYgixnHPkRSRmr6lkfQ+x6UIOfzZyMg3yPFAfx8wAfFNJL49iRYgq7+JS1EFlVJRBS5FcmjxkEak4WnE5gMGaMGFrBhUYjLjUMsMlUd21CJyyqLz0LJHAqpGAso/j6XQ+0NMHiKnNEW3JJyQJZzQ4PpJwLCf0GD5Q44l6DXac6R0jl6jhVBiCbEAlyUh9LDEm9aWPGegMkC35AkDDYAf1OUg7AoQYADEj7juEX/HNAAAAABJRU5ErkJggg==');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-gotoBox {\\n top: 68px;\\n padding: 4px;\\n}\\n\\n.aladin-target-form {\\n\\tpadding: 5px;\\n}\\n\\n\\n.aladin-simbadPointerControl-container {\\n position: absolute;\\n top: 106px;\\n left: 4px;\\n cursor:pointer;\\n z-index: 20;\\n background: rgba(250, 250, 250, 0.8);\\n border-radius: 4px;\\n}\\n\\n.aladin-simbadPointerControl-container:hover {\\n background: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-simbadPointerControl {\\n\\twidth: 32px;\\n height: 34px;\\n background-image: url('data:image/png;base64,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');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-shareControl-container {\\n position: absolute;\\n bottom: 30px;\\n left: 4px;\\n cursor:pointer;\\n z-index: 20;\\n background: rgba(250, 250, 250, 0.8);\\n border-radius: 4px;\\n}\\n\\n.aladin-shareControl-container:hover {\\n background: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-shareControl {\\n\\twidth: 32px;\\n height: 34px;\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAA/1BMVEUAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzP////6PkQMAAAAU3RSTlMAAAI2l9TiyXwcBmrj/cEvePX69MD+Vzl06Px5sMgDZPsbOwUfKFGAHVjSEkBgXTcMllbG8rbhdtcm26Ko5/M8F3clPqN1JK+usRpVQdNQBGN9OkYs7f8AAAABYktHRFTkA4ilAAAACXBIWXMAARCQAAEQkAGJrNK4AAABMUlEQVQoz13SeVuCQBAGcAYV5TREEpUQr9TMK9G8Nc/usvn+36VdRFDmz9/uwzuzA8NcFrCRaIyLJ3iAaxdECUnJShKu/UZFTGkyYpoPu67cZows5hKXnif3TfJ5MHS8C9wqcDaaRRILJQ254KBcqd7X6tShYePDmaH52Gp3uq7zacTe+fpTnwQ7gwxJKJqIw4iX++ygW6Ox66oIQf+T6WyOi+WK+osAvptri91sd/tDyF/3u+2GtdZvIT+slgucz6YT3xkQqb/DeHSKd3YnZzpD1wEyA0dHtf9R9h62R5/Snavbabc+m/4mvtBuuF6vfVcrP8EeONRK1MlcNvdrBQdx1A2SwNO58sLF4o45zBp/DUX3+/SKV8iOtRSGnYGkItP+JVEI/RnAH+NSLBphr/0f6ns3OQ1Zz7kAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTEtMThUMTQ6MzM6NTUrMDE6MDCINg3ZAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTExLTE4VDE0OjMzOjA0KzAxOjAwF/ywtQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII=');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-shareBox {\\n bottom: 30px;\\n padding: 4px;\\n}\\n\\n.aladin-shareInput {\\n width: 300px;\\n margin-top: 10px;\\n display: block;\\n}\\n\\n.aladin-target-form input {\\n\\twidth: 140px;\\n\\tmargin-left: 5px;\\n}\\n\\t\\n\\n\\n\\n.aladin-cb-list ul {\\n margin: 0;\\n padding-left: 4px;\\n list-style: none;\\n}\\n\\n.aladin-cb-list label {\\n\\tdisplay: inline;\\n}\\n\\n.aladin-cb-list input[type=\\\"checkbox\\\"] {\\n margin: 3px;\\n}\\n\\n.aladin-closeBtn {\\n\\tfloat:right;\\n margin-top: 0 0 2px 0;\\n cursor:pointer;\\n color: #605F61;\\n border: 1px solid #AEAEAE;\\n border-radius: 3px;\\n background: #fff;\\n font-size: 15px;\\n font-weight: bold;\\n display: inline-block;\\n line-height: 0px;\\n padding: 8px 2px; \\n}\\n\\n.aladin-closeBtn:hover {\\n\\tcolor: #201F21;\\n}\\n\\n.aladin-label {\\n\\tfont-weight: bold;\\n\\tpadding-bottom: 4px;\\n}\\n\\n.aladin-box-separator {\\n\\theight: 0;\\n border-top: 1px solid #bbb ;\\n margin: 5px 0px 5px -4px;\\n}\\n\\n.aladin-blank-separator {\\n\\theight: 10px;\\n}\\n\\n.aladin-restore {\\n\\tposition: absolute;\\n top: 6px;\\n right: 3px;\\n z-index: 20;\\n width: 30px;\\n height: 30px;\\n background-image: url('data:image/gif;base64,R0lGODlhFgAWAOMJAAAAAAEBAQICAgMDAwUFBAUFBQcHBwgICAsLCv///////////////////////////yH5BAEKAA8ALAAAAAAWABYAAARk8MlJ60zJapsAyhsFPp1xfKHUZeVhAOPWwYD5xjIABDacXrseLtQhFAiBIVEwEOh8P9VzquRgrhgrNhudTaHdJ1NQ1SQCRgL41zIE1sSa6w0361y0eqXtW7EReCNlIgh6XYMbEQA7');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-fullscreen {\\n\\tposition: fixed !important;\\n\\tz-index: 9999;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\theight: 100% !important;\\n\\twidth: 100% !important;\\n\\tborder: 0 !important;\\n max-width: none !important;\\n background: #fff; /* allows to hide all HTML elements in the background */\\n}\\n\\n.aladin-zoomControl {\\n\\tz-index: 20;\\n\\tposition:absolute;\\n\\ttop: 50%;\\n\\theight: 48px;\\n\\tright: 8px;\\n\\tpadding: 0;\\n\\tmargin: -24px 0 0 0;\\n\\tfont-weight: bold;\\n\\tfont-size: 18px;\\n\\tfont-family: Verdana, Lucida, Arial;\\n}\\n\\n\\n.aladin-zoomControl a {\\n\\twidth: 20px;\\n\\theight:20px;\\n\\tline-height: 18px;\\n\\tdisplay:block;\\n\\tbackground-color:rgba(250, 250, 250, 0.8);\\n\\tmargin:1px;\\n\\ttext-align:center;\\n\\tborder-radius:4px;\\n\\tborder:1px solid #aaa;\\n\\ttext-decoration:none;\\n\\tcolor:#222;\\n}\\n\\n.aladin-zoomControl a:hover {\\n\\tbackground-color: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-cmSelection {\\n width: 60px;\\n margin-right: 10px;\\n}\\n\\n.aladin-btn {\\n\\tdisplay: inline-block;\\n padding: 6px 8px;\\n margin-bottom: 0;\\n font-size: 12px;\\n font-weight: normal;\\n text-align: center;\\n white-space: nowrap;\\n vertical-align: middle;\\n cursor: pointer;\\n border: 1px solid transparent;\\n border-radius: 3px;\\n color: #ffffff;\\n background-color: #428bca;\\n border-color: #357ebd;\\n margin-right: 4px;\\n}\\n\\n.aladin-cancelBtn {\\n background-color: #ca4242;\\n border-color: #bd3935;\\n}\\n\\n.aladin-frame {\\n border: 1px solid transparent;\\n border-color: #aaa;\\n padding: 4px 4px 4px 4px;\\n}\\n\\n.aladin-box-content > div {\\n margin: 10px 0px 0px 0px;\\n}\\n\\n.aladin-btn-small {\\n\\tdisplay: inline-block;\\n border-radius: 3px;\\n margin-bottom: 0;\\n padding: 0;\\n vertical-align: middle;\\n cursor: pointer;\\n border: 1px solid transparent;\\n color: #ffffff;\\n font-size: 14px;\\n background-color: #428bca;\\n border-color: #357ebd;\\n margin-left: 2px;\\n min-width: 1.5em;\\n min-height: 1.5em;\\n}\\n\\n.aladin-button:hover {\\n\\tcolor: #ffffff;\\n background-color: #3276b1;\\n border-color: #285e8e;\\n}\\n\\n.aladin-unknownObject {\\n\\tborder: 3px solid red;\\n}\\n \\n.aladin-popup-container {\\n\\tz-index: 25;\\n\\tposition: absolute;\\n width: 200px;\\n display: none;\\n line-height: 1.3;\\n}\\n\\n.aladin-popup {\\n\\tfont-family: Verdana, Lucida, Arial;\\n font-size: 13px;\\n background: white;\\n border: 1px solid #bbb;\\n border-radius: 4px;\\n padding: 4px;\\n top: 80px;\\n left: 110px;\\n}\\n\\n\\n.aladin-popup-arrow {\\n display: block;\\n border-color: #fff transparent transparent;\\n border-style: solid;\\n border-width: 12px;\\n width: 0px;\\n height: 0px;\\n margin-top: -1px;\\n margin-left: auto;\\n margin-right: auto;\\n/*\\n width: 15px;\\n height: 15px;\\n background: white;\\n margin: -12px 94px;\\n padding-bottom: 10px;\\n overflow: hidden;\\n -webkit-transform: rotate(45deg);\\n -moz-transform: rotate(45deg);\\n -ms-transform: rotate(45deg);\\n -o-transform: rotate(45deg);\\n transform: rotate(45deg);\\n*/\\n}\\n\\n\\n.aladin-popupTitle {\\n font-weight: bold;\\n}\\n\\n.aladin-popupText {\\n}\\n\\n.aladin-options {\\n margin-top: 4px;\\n}\\n\\n.aladin-layer-label {\\n\\tpadding: 0 4px 0 4px;\\n\\tcolor: #ddd;\\n border-bottom-left-radius: 8px;\\n border-top-left-radius: 8px;\\n border-bottom-right-radius: 8px;\\n border-top-right-radius: 8px;\\n cursor: pointer;\\n user-select: none;\\n}\\n\\n.aladin-sp-title a {\\n text-decoration: none;\\n color: #317d8d;\\n}\\n\\n.aladin-sp-content {\\n font-size: 12px;\\n}\\n\\n.aladin-sp-content a {\\n text-decoration: none;\\n color: #478ade;\\n font-size: 11px;\\n}\\n\\n.aladin-cuts {\\n width: 8em;\\n}\\n\\n.add-layer-hips {\\n margin-top: 0.2em;\\n}\\n\\n\\n/* Icons figuring layers in the Stack */\\n.aladin-stack-icon {\\n\\twidth: 16px;\\n height: 16px;\\n background-repeat: no-repeat;\\n background-position:center center;\\n display: inline-block;\\n vertical-align: text-top;\\n}\\n\\n\\n\\n.aladin-chevron {\\n display: inline-block;\\n width: 16px;\\n height: 16px;\\n cursor: pointer;\\n vertical-align: middle;\\n background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ0IDQ0IiBzdHJva2U9IiM0NDQiIGJhY2tncm91bmQtY29sb3I9ImJsdWUiPgoKICAgIDxyZWN0IHg9IjIiIHk9IjIiIGhlaWdodD0iNDAiIHdpZHRoPSI0MCIgZmlsbD0idHJhbnNwYXJlbnQiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPgogICAgPHBhdGggZD0iTTEwIDEzIEwyMiAyMSBMMzQgMTMiIGZpbGw9InRyYW5zcGFyZW50IiBzdHJva2Utd2lkdGg9IjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPiAKICAgIDxwYXRoIGQ9Ik05IDI1IEwyMiAzMyBMMzUgMjUiIGZpbGw9InRyYW5zcGFyZW50IiBzdHJva2Utd2lkdGg9IjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPiAKCjwvc3ZnPgo=') no-repeat;\\n}\\n.aladin-chevron-down {\\n transform: rotate(0deg);\\n}\\n.aladin-chevron-left {\\n transform: rotate(90deg);\\n}\\n.aladin-chevron-up {\\n transform: rotate(180deg);\\n}\\n.aladin-chevron-right {\\n transform: rotate(270deg);\\n}\\n\\n.indicator {\\n font-family: monospace;\\n cursor: pointer;\\n}\\n\\n.right-triangle:before {\\n content: '\\\\25b6';\\n}\\n\\n.down-triangle:before {\\n content: '\\\\25bc';\\n}\\n\\n\\n/* *********************************************** */\\n\\n/* Cursors */\\n\\n/* Simbad pointer cursor */\\n.aladin-sp-cursor {\\n cursor: auto;\\n cursor: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEIEwUMBS20MQAAApRJREFUWEfdV7GO2zAMfXY7x1luzOFwDeB/KHCAB87eumvqmI/JWhTwF3TIrMFAv8JbgWyHG3IpOjbpcKJC02KipECHclIU+j2KfKRlAABRUyFYak3UgKiZiXUJAIt1d1ysu2PYn53DsPCucpbkRE3JAdxKTtQgWo6zJAfGGbAwLuEV7OB9/yrXIbqZ9/0+rMuhdb+RYfWmm+fged8fihzyoXXxlNcYB2KRxwwA6SzI9Crgd973B/5/u3IF8FYSw98M5D2QR86kRE3pfX+AMqKm8iEQoqYaWrfj/4bW7QgokMhCeSs5KeVrDM4K29C6Y6oE0YGEUlndocVGyg/rGZDXBQpr0kmjLiAlOOvk3vf7RJZM5Q+te2W/7coVEq+wnC1yCZYyS3B8MMYF3vBKK9Jz5PWmm8sab1eu4N9D63aaHEAsH88SzmQpnSHsHDmnWvlXIoiJ4JTviY8FRUJ8ZAiOEiJbLpcjARM1M0twpmjZOeGQrXYm1/7yMLz/eH8fnyus6XXOtmLgWBrKtdMguNKYPPystIausn9egsVDfI674KxS6003F/sX357AdOBwcADwWD9EjBKJubxYd0cml4RhP5IPrduFk04GjiZXMyZiRHKdAU3OWeB2lLNAk+tpl9IHY0zSlBo4OgsaTJpFzs+F0pxKYEXK73Nd8+3KFfWmG71qGfgSeQqPN0fvdlZrSvmUoXaJJ7EiocArZaS6tgzA+5RQe3gumUl5gPLXzy+6pEQNzDuhvFKx1ZuuEuTxliwmY/KuoHxGhzGv5QDw9PTx7senz88aLHUpJeOu8OHb17u+//4CTMm97/eFVQK5vqR8y6xOyipByjn3+0C3moUH4O++D1UX3PR9eJWzJCf6Tz5O/wDUeIfTLPlbywAAAABJRU5ErkJggg==') 15 15, auto;\\n}\\n\\n/* *********************************************** */\\n\\n/* Autocomplete styles (adapted from https://github.com/kraaden/autocomplete ) */\\n.autocomplete {\\n background: white;\\n z-index: 20000;\\n font: 14px/22px \\\"-apple-system\\\", BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial, sans-serif;\\n overflow: auto;\\n box-sizing: border-box;\\n border: 1px solid rgba(50, 50, 50, 0.6);\\n}\\n\\n.autocomplete * {\\n font: inherit;\\n}\\n\\n.autocomplete > div {\\n padding: 0 4px;\\n}\\n\\n.autocomplete .group {\\n background: #eee;\\n}\\n\\n.autocomplete > div:hover:not(.group),\\n.autocomplete > div.selected {\\n background: #81ca91;\\n cursor: pointer;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/css/aladin.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".aladin-container {\\n\\tposition: relative;\\n\\tborder: 1px solid #ddd;\\n height: 100%;\\n /*overflow: hidden;*/\\n}\\n\\n\\n.aladin-imageCanvas {\\n\\tposition: absolute;\\n z-index: 1;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.aladin-catalogCanvas {\\n position: absolute;\\n z-index: 2;\\n left: 0;\\n top: 0;\\n}\\n\\n.aladin-logo-container {\\n position: absolute;\\n\\tbottom: 2px;\\n right: 5px;\\n\\tz-index: 20;\\n\\n min-width: 32px;\\n max-width: 90px;\\n}\\n\\n.aladin-logo-small {\\n padding: 0;\\n\\tbackground: url(data:image/gif;base64,R0lGODlhIAAgAJEAAJIsLdEwJAdMmP///yH5BAkAAAMALAAAAAAgACAAAAjMAAcIHEiwoMGDCBMqXMiwocOHECMaFCCxYkKKAAoK2MiRo0UBAEKKFOkxYUaCIEMSHBlyo0OQCke6HHDyJEWBKgcG2MlzoEyFMAXyHNqTZsubNFGeHLDT4FCcLREGZUqwaFGRUk82FfqUaQCoSH0OCLqVqlCuX42u9Kl1a1qzXnGGVaozLdG6cpMWxOrVblm4AOYOTNn2L1efYZdu5Eu0cV6cE0fW7QqV4WK+CAMLPnhZMtvAEDmy/CkWMtCOHVFaXC2VtevXsGPLZhgQADs=);\\n background-size: 100%;\\n background-repeat: no-repeat;\\n padding-top: 100%; /* aspect ratio of the background image */\\n}\\n\\n.aladin-logo-large {\\n padding: 0;\\n background: url('data:image/png;base64,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');\\n background-size: 100%;\\n background-repeat: no-repeat;\\n padding-top: 58.45%; /* aspect ratio of the background image */\\n}\\n\\n.aladin-col {\\n float: left;\\n width: 45.00%;\\n margin-right: 5.0%;\\n}\\n /* Clear floats after the columns */\\n.aladin-row:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n }\\n\\n.aladin-location {\\n\\tz-index: 20;\\n\\tposition:absolute;\\n top: 0px;\\n\\tpadding: 2px 4px 2px 4px;\\n\\tbackground-color: rgba(255, 255, 255, 0.5);\\n\\tfont-size: 11px;\\n}\\n\\n.aladin-projSelection {\\n\\tz-index: 20;\\n\\tposition:absolute;\\n top: 0px;\\n right: 48px;\\n\\tpadding: 2px 4px 2px 4px;\\n\\tbackground-color: rgba(255, 255, 255, 0.5);\\n\\tfont-size: 11px;\\n}\\n\\n.aladin-location-text {\\n\\tfont-size: 13px;\\n margin-left: 4px;\\n}\\n\\n.aladin-measurement-div {\\n\\tz-index: 77;\\n\\tposition:absolute;\\n bottom: 20px;\\n\\tbackground-color: rgba(255, 255, 255, 0.8);\\n font-family: monospace;\\n\\tfont-size: 12px;\\n display: none;\\n width: 100%;\\n overflow: auto;\\n}\\n\\n.aladin-measurement-div table {\\n\\tpadding: 2px 4px 2px 4px;\\n table-layout: fixed;\\n white-space: nowrap;\\n}\\n\\n.aladin-measurement-div thead {\\n background-color: #e0e0e0;\\n color: #000;\\n}\\n\\n.aladin-measurement-div td, .aladin-measurement-div th {\\n /*\\n border-left-color: #cbcbcb;\\n border-left-style: solid;\\n */\\n padding: 0.3em 0.3em;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n text-align: left;\\n}\\n\\n.aladin-marker-measurement {\\n max-height: 130px;\\n overflow-y: auto;\\n overflow-x: hidden;\\n font-family: monospace;\\n\\tfont-size: 11px;\\n color: #000;\\n}\\n.aladin-marker-measurement table {\\n table-layout: fixed;\\n width: 100%;\\n}\\n.aladin-marker-measurement table tr td{\\nword-wrap:break-word;\\n}\\n.aladin-marker-measurement tr:nth-child(even) {\\n background-color: #dddddd;\\n}\\n.aladin-marker-measurement td:first-child {\\n font-weight: bold;\\n}\\n\\n.aladin-fov {\\n z-index: 20;\\n position: absolute;\\n padding: 0;\\n font-size: 12px;\\n font-weight: bold;\\n bottom: 0px;\\n padding: 2px;\\n color: #321bdf;\\n /*text-shadow: 0 0 1px white, 0 0 1px white, 0 0 1px white, 0 0 1px white, 0 0 1px white;*/\\n\\tbackground-color: rgba(255, 255, 255, 0.5);\\n}\\n\\n/* maximize/restore size icons */\\n.aladin-maximize {\\n\\tposition: absolute;\\n\\ttop: 6px;\\n\\tright: 3px;\\n\\tz-index: 20;\\n\\twidth: 30px;\\n\\theight: 30px;\\n\\tbackground-image: url('data:image/gif;base64,R0lGODlhFgAWAOMJAAAAAAEBAQICAgMDAwUFBAUFBQcHBwgICAsLCv///////////////////////////yH5BAEKAA8ALAAAAAAWABYAAARm8MlJabr41i0T+CCQcJz3CYMwklsSEAUhspVnHEYw0x1w558VzYQTBXm24sgjJCUQykmT9dzxWlNq9vrwILYtqe/wRc6SBqszOE6DLZ/AT00FyKNcD4wQeLdQAiB+cCFHVxkZXA8RADs=');\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position:center center;\\n}\\n\\n.aladin-layersControl-container {\\n position: absolute;\\n top: 30px;\\n left: 4px;\\n cursor:pointer;\\n z-index: 20;\\n background: rgba(250, 250, 250, 0.8);\\n border-radius: 4px;\\n}\\n\\n.aladin-layersControl-container:hover {\\n\\tbackground: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-layersControl {\\n\\twidth: 32px;\\n height: 34px;\\n background-image: url('data:image/gif;base64,R0lGODlhGQAcAMIAAAAAADQ0NKahocvFxf///wAAAAAAAAAAACH5BAEKAAcALAAAAAAZABwAAANneLoH/hCwyaJ1dDrCuydY1gBfyYUaaZqosq0r+sKxNNP1pe98Hy2OgXBILLZGxWRSBlA6iZjgczrwWa9WIEDA7Xq/R8d3PGaSz97oFs0WYN9wiDZAr9vvYcB9v2fy/3ZqgIN0cYZYCQA7');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-layerBox {\\n top: 30px;\\n padding: 4px 4px;\\n max-height: 90%;\\n overflow-y: auto;\\n}\\n\\n.aladin-box {\\n\\tdisplay: none;\\n z-index: 30;\\n position: absolute;\\n background: #eee;\\n left: 4px;\\n border-radius: 4px;\\n font-size: 14px;\\n font-family: Verdana, Lucida, Arial;\\n line-height: 1.3;\\n color: #222;\\n padding: 0.8em;\\n}\\n\\n.aladin-dialog {\\n\\tdisplay: none;\\n z-index: 30;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n background: #eee;\\n border-radius: 4px;\\n font-family: Verdana, Lucida, Arial;\\n line-height: 1.3;\\n color: #222;\\n min-width: 300px;\\n max-width: 500px;\\n padding: 0.8em;\\n}\\n\\nselect {\\n padding: 4px;\\n}\\n\\n.aladin-surveySelection {\\n max-width: 230px;\\n}\\n\\ninput[type=text], input[type=number] {\\n padding: 4px;\\n width: 100%;\\n box-sizing: border-box;\\n}\\n\\n.aladin-box-title {\\n font-size: 16px;\\n font-family: Verdana, Lucida, Arial;\\n line-height: 2.0;\\n font-weight: bold;\\n cursor: pointer;\\n border-radius: 4px;\\n}\\n\\n.aladin-box-content {\\n padding: 10px;\\n}\\n\\n.aladin-text {\\n background-color: #bbb;\\n}\\n\\n.aladin-gotoControl-container {\\n\\tposition: absolute;\\n top: 68px;\\n left: 4px;\\n cursor:pointer;\\n z-index: 20;\\n background: rgba(250, 250, 250, 0.8);\\n border-radius: 4px;\\n}\\n\\n.aladin-gotoControl-container:hover {\\n background: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-gotoControl {\\n width: 32px;\\n height: 34px;\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASZJREFUeNpiYMAOpIG4GogPAPETIP4PpQ9AxaUZyARsQNwFxN+ghuLC36Dq2EgxXBSITxIwGB2fhOojyuXohl8C4hCk4JCG8i9hsYSgT9qRNPwE4hY8mtig8n+Q9LTjM1waaihMcQ6RQZqD5ig5XAobkRQeJjFRHEbS20iMoigSLYgixnHPkRSRmr6lkfQ+x6UIOfzZyMg3yPFAfx8wAfFNJL49iRYgq7+JS1EFlVJRBS5FcmjxkEak4WnE5gMGaMGFrBhUYjLjUMsMlUd21CJyyqLz0LJHAqpGAso/j6XQ+0NMHiKnNEW3JJyQJZzQ4PpJwLCf0GD5Q44l6DXac6R0jl6jhVBiCbEAlyUh9LDEm9aWPGegMkC35AkDDYAf1OUg7AoQYADEj7juEX/HNAAAAABJRU5ErkJggg==');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-gotoBox {\\n top: 68px;\\n padding: 4px;\\n}\\n\\n.aladin-target-form {\\n\\tpadding: 5px;\\n}\\n\\n\\n.aladin-simbadPointerControl-container {\\n position: absolute;\\n top: 106px;\\n left: 4px;\\n cursor:pointer;\\n z-index: 20;\\n background: rgba(250, 250, 250, 0.8);\\n border-radius: 4px;\\n}\\n\\n.aladin-simbadPointerControl-container:hover {\\n background: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-simbadPointerControl {\\n\\twidth: 32px;\\n height: 34px;\\n background-image: url('data:image/png;base64,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');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-shareControl-container {\\n position: absolute;\\n bottom: 30px;\\n left: 4px;\\n cursor:pointer;\\n z-index: 20;\\n background: rgba(250, 250, 250, 0.8);\\n border-radius: 4px;\\n}\\n\\n.aladin-shareControl-container:hover {\\n background: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-shareControl {\\n\\twidth: 32px;\\n height: 34px;\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAA/1BMVEUAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzP////6PkQMAAAAU3RSTlMAAAI2l9TiyXwcBmrj/cEvePX69MD+Vzl06Px5sMgDZPsbOwUfKFGAHVjSEkBgXTcMllbG8rbhdtcm26Ko5/M8F3clPqN1JK+usRpVQdNQBGN9OkYs7f8AAAABYktHRFTkA4ilAAAACXBIWXMAARCQAAEQkAGJrNK4AAABMUlEQVQoz13SeVuCQBAGcAYV5TREEpUQr9TMK9G8Nc/usvn+36VdRFDmz9/uwzuzA8NcFrCRaIyLJ3iAaxdECUnJShKu/UZFTGkyYpoPu67cZows5hKXnif3TfJ5MHS8C9wqcDaaRRILJQ254KBcqd7X6tShYePDmaH52Gp3uq7zacTe+fpTnwQ7gwxJKJqIw4iX++ygW6Ox66oIQf+T6WyOi+WK+osAvptri91sd/tDyF/3u+2GtdZvIT+slgucz6YT3xkQqb/DeHSKd3YnZzpD1wEyA0dHtf9R9h62R5/Snavbabc+m/4mvtBuuF6vfVcrP8EeONRK1MlcNvdrBQdx1A2SwNO58sLF4o45zBp/DUX3+/SKV8iOtRSGnYGkItP+JVEI/RnAH+NSLBphr/0f6ns3OQ1Zz7kAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTEtMThUMTQ6MzM6NTUrMDE6MDCINg3ZAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTExLTE4VDE0OjMzOjA0KzAxOjAwF/ywtQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII=');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-shareBox {\\n bottom: 30px;\\n padding: 4px;\\n}\\n\\n.aladin-shareInput {\\n width: 300px;\\n margin-top: 10px;\\n display: block;\\n}\\n\\n.aladin-target-form input {\\n\\twidth: 140px;\\n\\tmargin-left: 5px;\\n}\\n\\t\\n\\n\\n\\n.aladin-cb-list ul {\\n margin: 0;\\n padding-left: 4px;\\n list-style: none;\\n}\\n\\n.aladin-cb-list label {\\n\\tdisplay: inline;\\n}\\n\\n.aladin-cb-list input[type=\\\"checkbox\\\"] {\\n margin: 3px;\\n}\\n\\n.aladin-closeBtn {\\n\\tfloat:right;\\n margin-top: 0 0 2px 0;\\n cursor:pointer;\\n color: #605F61;\\n border: 1px solid #AEAEAE;\\n border-radius: 3px;\\n background: #fff;\\n font-size: 15px;\\n font-weight: bold;\\n display: inline-block;\\n line-height: 0px;\\n padding: 8px 2px; \\n}\\n\\n.aladin-closeBtn:hover {\\n\\tcolor: #201F21;\\n}\\n\\n.aladin-label {\\n\\tfont-weight: bold;\\n\\tpadding-bottom: 4px;\\n}\\n\\n.aladin-box-separator {\\n\\theight: 0;\\n border-top: 1px solid #bbb ;\\n margin: 5px 0px 5px -4px;\\n}\\n\\n.aladin-blank-separator {\\n\\theight: 10px;\\n}\\n\\n.aladin-restore {\\n\\tposition: absolute;\\n top: 6px;\\n right: 3px;\\n z-index: 20;\\n width: 30px;\\n height: 30px;\\n background-image: url('data:image/gif;base64,R0lGODlhFgAWAOMJAAAAAAEBAQICAgMDAwUFBAUFBQcHBwgICAsLCv///////////////////////////yH5BAEKAA8ALAAAAAAWABYAAARk8MlJ60zJapsAyhsFPp1xfKHUZeVhAOPWwYD5xjIABDacXrseLtQhFAiBIVEwEOh8P9VzquRgrhgrNhudTaHdJ1NQ1SQCRgL41zIE1sSa6w0361y0eqXtW7EReCNlIgh6XYMbEQA7');\\n background-repeat: no-repeat;\\n background-position:center center;\\n}\\n\\n.aladin-fullscreen {\\n\\tposition: fixed !important;\\n\\tz-index: 9999;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\theight: 100% !important;\\n\\twidth: 100% !important;\\n\\tborder: 0 !important;\\n max-width: none !important;\\n background: #fff; /* allows to hide all HTML elements in the background */\\n}\\n\\n.aladin-zoomControl {\\n\\tz-index: 20;\\n\\tposition:absolute;\\n\\ttop: 50%;\\n\\theight: 48px;\\n\\tright: 8px;\\n\\tpadding: 0;\\n\\tmargin: -24px 0 0 0;\\n\\tfont-weight: bold;\\n\\tfont-size: 18px;\\n\\tfont-family: Verdana, Lucida, Arial;\\n}\\n\\n\\n.aladin-zoomControl a {\\n\\twidth: 20px;\\n\\theight:20px;\\n\\tline-height: 18px;\\n\\tdisplay:block;\\n\\tbackground-color:rgba(250, 250, 250, 0.8);\\n\\tmargin:1px;\\n\\ttext-align:center;\\n\\tborder-radius:4px;\\n\\tborder:1px solid #aaa;\\n\\ttext-decoration:none;\\n\\tcolor:#222;\\n}\\n\\n.aladin-zoomControl a:hover {\\n\\tbackground-color: rgba(220, 220, 220, 0.8);\\n}\\n\\n.aladin-cmSelection {\\n width: 60px;\\n margin-right: 10px;\\n}\\n\\n.aladin-btn {\\n\\tdisplay: inline-block;\\n padding: 6px 8px;\\n margin-bottom: 0;\\n font-size: 12px;\\n font-weight: normal;\\n text-align: center;\\n white-space: nowrap;\\n vertical-align: middle;\\n cursor: pointer;\\n border: 1px solid transparent;\\n border-radius: 3px;\\n color: #ffffff;\\n background-color: #428bca;\\n border-color: #357ebd;\\n margin-right: 4px;\\n}\\n\\n.aladin-cancelBtn {\\n background-color: #ca4242;\\n border-color: #bd3935;\\n}\\n\\n.aladin-frame {\\n border: 1px solid transparent;\\n border-color: #aaa;\\n padding: 4px 4px 4px 4px;\\n}\\n\\n.aladin-box-content > div {\\n margin: 10px 0px 0px 0px;\\n}\\n\\n.aladin-btn-small {\\n\\tdisplay: inline-block;\\n border-radius: 3px;\\n margin-bottom: 0;\\n padding: 0;\\n vertical-align: middle;\\n cursor: pointer;\\n border: 1px solid transparent;\\n color: #ffffff;\\n font-size: 14px;\\n background-color: #428bca;\\n border-color: #357ebd;\\n margin-left: 2px;\\n min-width: 1.5em;\\n min-height: 1.5em;\\n}\\n\\n.aladin-button:hover {\\n\\tcolor: #ffffff;\\n background-color: #3276b1;\\n border-color: #285e8e;\\n}\\n\\n.aladin-unknownObject {\\n\\tborder: 3px solid red;\\n}\\n \\n.aladin-popup-container {\\n\\tz-index: 25;\\n\\tposition: absolute;\\n width: 200px;\\n display: none;\\n line-height: 1.3;\\n}\\n\\n.aladin-popup {\\n\\tfont-family: Verdana, Lucida, Arial;\\n font-size: 13px;\\n background: white;\\n border: 1px solid #bbb;\\n border-radius: 4px;\\n padding: 4px;\\n top: 80px;\\n left: 110px;\\n}\\n\\n\\n.aladin-popup-arrow {\\n display: block;\\n border-color: #fff transparent transparent;\\n border-style: solid;\\n border-width: 12px;\\n width: 0px;\\n height: 0px;\\n margin-top: -1px;\\n margin-left: auto;\\n margin-right: auto;\\n/*\\n width: 15px;\\n height: 15px;\\n background: white;\\n margin: -12px 94px;\\n padding-bottom: 10px;\\n overflow: hidden;\\n -webkit-transform: rotate(45deg);\\n -moz-transform: rotate(45deg);\\n -ms-transform: rotate(45deg);\\n -o-transform: rotate(45deg);\\n transform: rotate(45deg);\\n*/\\n}\\n\\n\\n.aladin-popupTitle {\\n font-weight: bold;\\n}\\n\\n.aladin-popupText {\\n}\\n\\n.aladin-options {\\n margin-top: 4px;\\n}\\n\\n.aladin-layer-label {\\n\\tpadding: 0 4px 0 4px;\\n\\tcolor: #ddd;\\n border-bottom-left-radius: 8px;\\n border-top-left-radius: 8px;\\n border-bottom-right-radius: 8px;\\n border-top-right-radius: 8px;\\n cursor: pointer;\\n user-select: none;\\n}\\n\\n.aladin-sp-title a {\\n text-decoration: none;\\n color: #317d8d;\\n}\\n\\n.aladin-sp-content {\\n font-size: 12px;\\n}\\n\\n.aladin-sp-content a {\\n text-decoration: none;\\n color: #478ade;\\n font-size: 11px;\\n}\\n\\n.aladin-cuts {\\n width: 8em;\\n}\\n\\n.add-layer-hips {\\n margin-top: 0.2em;\\n}\\n\\n\\n/* Icons figuring layers in the Stack */\\n.aladin-stack-icon {\\n\\twidth: 16px;\\n height: 16px;\\n background-repeat: no-repeat;\\n background-position:center center;\\n display: inline-block;\\n vertical-align: text-top;\\n}\\n\\n\\n\\n.aladin-chevron {\\n display: inline-block;\\n width: 16px;\\n height: 16px;\\n cursor: pointer;\\n vertical-align: middle;\\n background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ0IDQ0IiBzdHJva2U9IiM0NDQiIGJhY2tncm91bmQtY29sb3I9ImJsdWUiPgoKICAgIDxyZWN0IHg9IjIiIHk9IjIiIGhlaWdodD0iNDAiIHdpZHRoPSI0MCIgZmlsbD0idHJhbnNwYXJlbnQiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPgogICAgPHBhdGggZD0iTTEwIDEzIEwyMiAyMSBMMzQgMTMiIGZpbGw9InRyYW5zcGFyZW50IiBzdHJva2Utd2lkdGg9IjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPiAKICAgIDxwYXRoIGQ9Ik05IDI1IEwyMiAzMyBMMzUgMjUiIGZpbGw9InRyYW5zcGFyZW50IiBzdHJva2Utd2lkdGg9IjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPiAKCjwvc3ZnPgo=') no-repeat;\\n}\\n.aladin-chevron-down {\\n transform: rotate(0deg);\\n}\\n.aladin-chevron-left {\\n transform: rotate(90deg);\\n}\\n.aladin-chevron-up {\\n transform: rotate(180deg);\\n}\\n.aladin-chevron-right {\\n transform: rotate(270deg);\\n}\\n\\n.indicator {\\n font-family: monospace;\\n cursor: pointer;\\n}\\n\\n.right-triangle:before {\\n content: '\\\\25b6';\\n}\\n\\n.down-triangle:before {\\n content: '\\\\25bc';\\n}\\n\\n\\n/* *********************************************** */\\n\\n/* Cursors */\\n\\n/* Simbad pointer cursor */\\n.aladin-sp-cursor {\\n cursor: auto;\\n cursor: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEIEwUMBS20MQAAApRJREFUWEfdV7GO2zAMfXY7x1luzOFwDeB/KHCAB87eumvqmI/JWhTwF3TIrMFAv8JbgWyHG3IpOjbpcKJC02KipECHclIU+j2KfKRlAABRUyFYak3UgKiZiXUJAIt1d1ysu2PYn53DsPCucpbkRE3JAdxKTtQgWo6zJAfGGbAwLuEV7OB9/yrXIbqZ9/0+rMuhdb+RYfWmm+fged8fihzyoXXxlNcYB2KRxwwA6SzI9Crgd973B/5/u3IF8FYSw98M5D2QR86kRE3pfX+AMqKm8iEQoqYaWrfj/4bW7QgokMhCeSs5KeVrDM4K29C6Y6oE0YGEUlndocVGyg/rGZDXBQpr0kmjLiAlOOvk3vf7RJZM5Q+te2W/7coVEq+wnC1yCZYyS3B8MMYF3vBKK9Jz5PWmm8sab1eu4N9D63aaHEAsH88SzmQpnSHsHDmnWvlXIoiJ4JTviY8FRUJ8ZAiOEiJbLpcjARM1M0twpmjZOeGQrXYm1/7yMLz/eH8fnyus6XXOtmLgWBrKtdMguNKYPPystIausn9egsVDfI674KxS6003F/sX357AdOBwcADwWD9EjBKJubxYd0cml4RhP5IPrduFk04GjiZXMyZiRHKdAU3OWeB2lLNAk+tpl9IHY0zSlBo4OgsaTJpFzs+F0pxKYEXK73Nd8+3KFfWmG71qGfgSeQqPN0fvdlZrSvmUoXaJJ7EiocArZaS6tgzA+5RQe3gumUl5gPLXzy+6pEQNzDuhvFKx1ZuuEuTxliwmY/KuoHxGhzGv5QDw9PTx7senz88aLHUpJeOu8OHb17u+//4CTMm97/eFVQK5vqR8y6xOyipByjn3+0C3moUH4O++D1UX3PR9eJWzJCf6Tz5O/wDUeIfTLPlbywAAAABJRU5ErkJggg==') 15 15, auto;\\n}\\n\\n/* *********************************************** */\\n\\n/* Autocomplete styles (adapted from https://github.com/kraaden/autocomplete ) */\\n.autocomplete {\\n background: white;\\n z-index: 20000;\\n font: 14px/22px \\\"-apple-system\\\", BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial, sans-serif;\\n overflow: auto;\\n box-sizing: border-box;\\n border: 1px solid rgba(50, 50, 50, 0.6);\\n}\\n\\n.autocomplete * {\\n font: inherit;\\n}\\n\\n.autocomplete > div {\\n padding: 0 4px;\\n}\\n\\n.autocomplete .group {\\n background: #eee;\\n}\\n\\n.autocomplete > div:hover:not(.group),\\n.autocomplete > div.selected {\\n background: #81ca91;\\n cursor: pointer;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","module.exports = \"#version 300 es\\nprecision lowp float;layout(location=0)in vec2 offset;layout(location=1)in vec2 uv;layout(location=2)in vec3 center;uniform float current_time;uniform mat4 model;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform vec2 kernel_size;out vec2 out_uv;out vec3 out_p;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){vec3 p=vec3(inv_model*vec4(center,1.0f));vec2 center_pos_clip_space=world2clip_aitoff(p);vec2 pos_clip_space=center_pos_clip_space;gl_Position=vec4((pos_clip_space/(ndc_to_clip*czf))+offset*kernel_size,0.f,1.f);out_uv=uv;out_p=p;}\"","module.exports = \"#version 300 es\\nprecision lowp float;layout(location=0)in vec2 offset;layout(location=1)in vec2 uv;layout(location=2)in vec3 center;uniform float current_time;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform vec2 kernel_size;out vec2 out_uv;out vec3 out_p;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){vec3 p=vec3(inv_model*vec4(center,1.0f));vec2 center_pos_clip_space=world2clip_arc(p);vec2 pos_clip_space=center_pos_clip_space;gl_Position=vec4((pos_clip_space/(ndc_to_clip*czf))+offset*kernel_size,0.f,1.f);out_uv=uv;out_p=p;}\"","module.exports = \"#version 300 es\\nprecision lowp float;in vec2 out_uv;in vec3 out_p;out vec4 color;uniform sampler2D kernel_texture;uniform float max_density;uniform float fov;uniform float strength;void main(){color=texture(kernel_texture,out_uv)/max(log2(fov*100.),1.);color.r*=strength;}\"","module.exports = \"#version 300 es\\nprecision lowp float;layout(location=0)in vec2 offset;layout(location=1)in vec2 uv;layout(location=2)in vec3 center;uniform float current_time;uniform mat4 model;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform vec2 kernel_size;out vec2 out_uv;out vec3 out_p;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){vec3 p=vec3(inv_model*vec4(center,1.0f));vec2 center_pos_clip_space=world2clip_healpix(p);vec2 pos_clip_space=center_pos_clip_space;gl_Position=vec4((pos_clip_space/(ndc_to_clip*czf))+offset*kernel_size,0.f,1.f);out_uv=uv;out_p=p;}\"","module.exports = \"#version 300 es\\nprecision lowp float;layout(location=0)in vec2 offset;layout(location=1)in vec2 uv;layout(location=2)in vec3 center;uniform float current_time;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform vec2 kernel_size;out vec2 out_uv;out vec3 out_p;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){vec3 p=vec3(inv_model*vec4(center,1.0f));vec2 center_pos_clip_space=world2clip_mercator(p);vec2 pos_clip_space=center_pos_clip_space;gl_Position=vec4((pos_clip_space/(ndc_to_clip*czf))+offset*kernel_size,0.f,1.f);out_uv=uv;out_p=p;}\"","module.exports = \"#version 300 es\\nprecision lowp float;layout(location=0)in vec2 offset;layout(location=1)in vec2 uv;layout(location=2)in vec3 center;uniform float current_time;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform vec2 kernel_size;out vec2 out_uv;out vec3 out_p;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){vec3 p=vec3(inv_model*vec4(center,1.0f));vec2 center_pos_clip_space=world2clip_mollweide(p);vec2 pos_clip_space=center_pos_clip_space;gl_Position=vec4((pos_clip_space/(ndc_to_clip*czf))+offset*kernel_size,0.f,1.f);out_uv=uv;out_p=p;}\"","module.exports = \"#version 300 es\\nprecision lowp float;in vec2 out_uv;in vec3 out_p;out vec4 color;uniform sampler2D kernel_texture;uniform float max_density;uniform float fov;uniform float strength;void main(){if(out_p.z<0.f){discard;}color=texture(kernel_texture,out_uv)/max(log2(fov*100.),1.);color.r*=strength;}\"","module.exports = \"#version 300 es\\nprecision lowp float;layout(location=0)in vec2 offset;layout(location=1)in vec2 uv;layout(location=2)in vec3 center;uniform float current_time;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform vec2 kernel_size;out vec2 out_uv;out vec3 out_p;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){vec3 p=vec3(inv_model*vec4(center,1.0f));vec2 center_pos_clip_space=world2clip_orthographic(p);vec2 pos_clip_space=center_pos_clip_space;gl_Position=vec4((pos_clip_space/(ndc_to_clip*czf))+offset*kernel_size,0.f,1.f);out_uv=uv;out_p=p;}\"","module.exports = \"#version 300 es\\nprecision lowp float;layout(location=0)in vec2 offset;layout(location=1)in vec2 uv;layout(location=2)in vec3 center;uniform float current_time;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform vec2 kernel_size;out vec2 out_uv;out vec3 out_p;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){vec3 p=vec3(inv_model*vec4(center,1.0f));vec2 center_pos_clip_space=world2clip_gnomonic(p);vec2 pos_clip_space=center_pos_clip_space;gl_Position=vec4((pos_clip_space/(ndc_to_clip*czf))+offset*kernel_size,0.f,1.f);out_uv=uv;out_p=p;}\"","module.exports = \"#version 300 es\\nprecision lowp float;precision lowp sampler2D;in vec2 out_uv;out vec4 color;uniform sampler2D texture_fbo;uniform float alpha;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}void main(){float opacity=texture(texture_fbo,out_uv).r;float o=smoothstep(0.,0.1,opacity);color=colormap_f(opacity);color.a=o*alpha;}\"","module.exports = \"#version 300 es\\nprecision lowp float;precision lowp sampler2D;layout(location=0)in vec2 position;layout(location=1)in vec2 uv;out vec2 out_uv;void main(){gl_Position=vec4(position,0.f,1.f);out_uv=uv;}\"","module.exports = \"#version 300 es\\nprecision highp float;out vec4 c;in vec2 pos_clip;uniform vec4 color;uniform mat4 model;uniform mat4 to_icrs;uniform mat4 to_galactic;uniform mat4 inv_model;uniform float czf;uniform float meridians[20];uniform int num_meridians;uniform float parallels[10];uniform int num_parallels;uniform vec2 window_size;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}bool is_included_inside_projection(vec2 pos_clip_space){float px2=pos_clip_space.x*pos_clip_space.x;float py2=pos_clip_space.y*pos_clip_space.y;return(px2*0.25+py2)<=0.25;}vec3 clip2world_aitoff(vec2 pos_clip_space){if(!is_included_inside_projection(pos_clip_space)){discard;}vec2 uv=vec2(pos_clip_space.x*PI*0.5,pos_clip_space.y*PI);float c=length(uv);float phi=asin(uv.y*sin(c)/c);float theta=atan(uv.x*sin(c),c*cos(c))*2.;vec3 world=vec3(sin(theta)*cos(phi),sin(phi),cos(theta)*cos(phi));return world;}float d_isolon(vec3 pos_model,float theta){vec3 posmodel=pos_model;vec3 n=vec3(cos(theta),0.,-sin(theta));vec3 e_xz=vec3(-n.z,0.,n.x);if(dot(posmodel,e_xz)<0.){return 1e3;}float d=abs(dot(n,posmodel));vec3 h_model=normalize(posmodel-n*d);vec3 h_world=vec3(inv_model*to_icrs*vec4(h_model,1.f));h_world=check_inversed_longitude(h_world);vec2 h_clip=world2clip_aitoff(h_world);return length(pos_clip-h_clip)*2.;}float d_isolat(vec3 pos_model,float delta){vec3 posmodel=pos_model;float y=atan(posmodel.y,length(pos_model.xz));float d=abs(y-delta);return d;}float grid_alpha(vec3 p){float v=1e10;float delta=asin(p.y);float theta=atan(p.x,p.z);float m=0.;float mdist=10.;for(int i=0;iPI){tmp-=2.*PI;}float d=abs(theta-tmp);if(d1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}float sinc_positive(float x){if(x>1.0e-4){return sin(x)/x;}else{x=x*x;return 1.-x*(1.-x/20.)/6.;}}vec3 clip2world_arc(vec2 pos_clip_space){float x=pos_clip_space.x*PI;float y=pos_clip_space.y*PI;float r=length(vec2(x,y));if(r<=PI){float z=cos(r);r=sinc_positive(r);return vec3(x*r,y*r,z);}discard;}float d_isolon(vec3 pos_model,float theta){vec3 n=vec3(cos(theta),0.,-sin(theta));vec3 e_xz=vec3(-n.z,0.,n.x);if(dot(pos_model,e_xz)<0.){return 1e3;}float d=abs(dot(n,pos_model));vec3 h_model=normalize(pos_model-n*d);vec3 h_world=vec3(inv_model*to_icrs*vec4(h_model,1.f));vec2 h_clip=world2clip_arc(h_world);return length(pos_clip-h_clip)*2.;}float d_isolat(vec3 pos_model,float delta){float y=atan(pos_model.y,length(pos_model.xz));float d=abs(y-delta);return d;}float grid_alpha(vec3 p){float v=1e10;float delta=asin(p.y);float theta=atan(p.x,p.z);float m=0.;float mdist=10.;for(int i=0;iPI){tmp-=2.*PI;}float d=abs(theta-tmp);if(d1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}vec3 clip2world_mercator(vec2 p){float theta=p.x*PI;float delta=atan(sinh(p.y))*PI;return vec3(sin(theta)*cos(delta),sin(delta),cos(theta)*cos(delta));}float d_isolon(vec3 pos_model,float theta){vec3 n=vec3(cos(theta),0.,-sin(theta));vec3 e_xz=vec3(-n.z,0.,n.x);if(dot(pos_model,e_xz)<0.){return 1e3;}float d=abs(dot(n,pos_model));vec3 h_model=normalize(pos_model-n*d);vec3 h_world=vec3(inv_model*to_icrs*vec4(h_model,1.f));h_world=check_inversed_longitude(h_world);vec2 h_clip=world2clip_mercator(h_world);return length(pos_clip-h_clip)*2.;}float d_isolat(vec3 pos_model,float delta){float y=atan(pos_model.y,length(pos_model.xz));float d=abs(y-delta);return d;}float grid_alpha(vec3 p){float v=1e10;float delta=asin(p.y);float theta=atan(p.x,p.z);float m=0.;float mdist=10.;for(int i=0;iPI){tmp-=2.*PI;}float d=abs(theta-tmp);if(d1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}bool is_included_inside_projection(vec2 pos_clip_space){float px2=pos_clip_space.x*pos_clip_space.x;float py2=pos_clip_space.y*pos_clip_space.y;return(px2*0.25+py2)<=0.25;}vec3 clip2world_mollweide(vec2 pos_clip_space){if(!is_included_inside_projection(pos_clip_space)){discard;}float y2=pos_clip_space.y*pos_clip_space.y;float k=sqrt(1.-4.*y2);float theta=PI*pos_clip_space.x/k;float delta=asin((2.*asin(2.*pos_clip_space.y)+4.*pos_clip_space.y*k)/PI);return vec3(sin(theta)*cos(delta),sin(delta),cos(theta)*cos(delta));}float d_isolon(vec3 pos_model,float theta){vec3 n=vec3(cos(theta),0.,-sin(theta));vec3 e_xz=vec3(-n.z,0.,n.x);if(dot(pos_model,e_xz)<0.){return 1e3;}float d=abs(dot(n,pos_model));vec3 h_model=normalize(pos_model-n*d);vec3 h_world=vec3(inv_model*to_icrs*vec4(h_model,1.f));h_world=check_inversed_longitude(h_world);vec2 h_clip=world2clip_mollweide(h_world);return length(pos_clip-h_clip)*2.;}float d_isolat(vec3 pos_model,float delta){float y=atan(pos_model.y,length(pos_model.xz));float d=abs(y-delta);return d;}float grid_alpha(vec3 p){float v=1e10;float delta=asin(p.y);float theta=atan(p.x,p.z);float m=0.;float mdist=10.;for(int i=0;iPI){tmp-=2.*PI;}float d=abs(theta-tmp);if(d1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}vec3 clip2world_orthographic(vec2 pos_clip_space){float z=1.f-dot(pos_clip_space,pos_clip_space);if(z>0.f){return vec3(pos_clip_space.x,pos_clip_space.y,sqrt(z));}else{discard;}}float d_isolon(vec3 pos_model,float theta){vec3 n=vec3(cos(theta),0.,-sin(theta));vec3 e_xz=vec3(-n.z,0.,n.x);if(dot(pos_model,e_xz)<0.){return 1e3;}float d=abs(dot(n,pos_model));vec3 h_model=normalize(pos_model-n*d);vec3 h_world=vec3(inv_model*to_icrs*vec4(h_model,1.f));h_world=check_inversed_longitude(h_world);vec2 h_clip=world2clip_orthographic(h_world);return length(pos_clip-h_clip)*2.;}float d_isolat(vec3 pos_model,float delta){float y=atan(pos_model.y,length(pos_model.xz));float d=abs(y-delta);return d*2.;}float grid_alpha(vec3 p){float v=1e10;float delta=asin(p.y);float theta=atan(p.x,p.z);float m=0.;float mdist=10.;for(int i=0;iPI){tmp-=2.*PI;}float d=abs(theta-tmp);if(d1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}vec3 clip2world_gnomonic(vec2 pos_clip_space){float x_2d=pos_clip_space.x*PI;float y_2d=pos_clip_space.y*PI;float r=x_2d*x_2d+y_2d*y_2d;float z=sqrt(1.+r);return vec3(z*x_2d,z*y_2d,z);}float d_isolon(vec3 pos_model,float theta){vec3 n=vec3(cos(theta),0.,-sin(theta));vec3 e_xz=vec3(-n.z,0.,n.x);if(dot(pos_model,e_xz)<0.){return 1e3;}float d=abs(dot(n,pos_model));vec3 h_model=normalize(pos_model-n*d);vec3 h_world=vec3(inv_model*to_icrs*vec4(h_model,1.f));h_world=check_inversed_longitude(h_world);vec2 h_clip=world2clip_gnomonic(h_world);return length(pos_clip-h_clip)*2.;}float d_isolat(vec3 pos_model,float delta){float y=atan(pos_model.y,length(pos_model.xz));float d=abs(y-delta);return d;}float grid_alpha(vec3 p){float v=1e10;float delta=asin(p.y);float theta=atan(p.x,p.z);float m=0.;float mdist=10.;for(int i=0;iPI){tmp-=2.*PI;}float d=abs(theta-tmp);if(d1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){gl_Position=vec4(ndc_pos,0.,1.);frag_uv_start=uv_start;frag_uv_end=uv_end;frag_blending_factor=min((current_time-time_tile_received)/500.,1.);m_start=m0;m_end=m1;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision mediump int;layout(location=0)in vec2 ndc_pos;layout(location=1)in vec3 uv_start;layout(location=2)in vec3 uv_end;layout(location=3)in float time_tile_received;layout(location=4)in float m0;layout(location=5)in float m1;out vec3 frag_uv_start;out vec3 frag_uv_end;out float frag_blending_factor;out float m_start;out float m_end;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform float current_time;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){gl_Position=vec4(ndc_pos,0.,1.);frag_uv_start=uv_start;frag_uv_end=uv_end;frag_blending_factor=min((current_time-time_tile_received)/500.,1.);m_start=m0;m_end=m1;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp isampler2D;precision mediump int;in vec3 frag_uv_start;in vec3 frag_uv_end;in float frag_blending_factor;in float m_start;in float m_end;out vec4 out_frag_color;uniform float opacity;uniform sampler2D tex1;uniform sampler2D tex2;uniform sampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}vec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return vec4(0.,1.,0.,1.);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_color_from_texture(vec3 UV){return get_pixels(UV);}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha)*color.a,vec4(0.),float(x==blank||isnan(x)));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a*color.a),vec4(0.),float(x==blank||isnan(x)));}void main(){vec4 color_start=get_color_from_texture(frag_uv_start);vec4 color_end=get_color_from_texture(frag_uv_end);out_frag_color=mix(color_start,color_end,frag_blending_factor);out_frag_color.a=opacity*out_frag_color.a;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision mediump int;layout(location=0)in vec2 ndc_pos;layout(location=1)in vec3 uv_start;layout(location=2)in vec3 uv_end;layout(location=3)in float time_tile_received;layout(location=4)in float m0;layout(location=5)in float m1;out vec3 frag_uv_start;out vec3 frag_uv_end;out float frag_blending_factor;out float m_start;out float m_end;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform float current_time;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){gl_Position=vec4(ndc_pos,0.,1.);frag_uv_start=uv_start;frag_uv_end=uv_end;frag_blending_factor=min((current_time-time_tile_received)/500.,1.);m_start=m0;m_end=m1;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp isampler2D;precision mediump int;in vec3 frag_uv_start;in vec3 frag_uv_end;in float frag_blending_factor;in float m_start;in float m_end;out vec4 out_frag_color;uniform sampler2D tex1;uniform sampler2D tex2;uniform sampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}vec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return vec4(0.,1.,0.,1.);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_color_from_texture(vec3 UV){return get_pixels(UV);}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha)*color.a,vec4(0.),float(x==blank||isnan(x)));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a*color.a),vec4(0.),float(x==blank||isnan(x)));}uniform float opacity;vec4 get_color(vec3 uv,float empty){vec4 color=mix(get_color_from_grayscale_texture(uv),vec4(0.),empty);return color;}void main(){vec4 color_start=get_color(frag_uv_start,m_start);vec4 color_end=get_color(frag_uv_end,m_end);out_frag_color=mix(color_start,color_end,frag_blending_factor);out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp isampler2D;precision mediump int;in vec3 frag_uv_start;in vec3 frag_uv_end;in float frag_blending_factor;in float m_start;in float m_end;out vec4 out_frag_color;uniform isampler2D tex1;uniform isampler2D tex2;uniform isampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}ivec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return ivec4(0,0,0,1);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha),vec4(0.),float(x==blank));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a),vec4(0.),float(x==blank));}uniform float opacity;vec4 get_color(vec3 uv,float empty){vec4 color=mix(get_color_from_grayscale_texture(uv),vec4(0.),empty);return color;}void main(){vec4 color_start=get_color(frag_uv_start,m_start);vec4 color_end=get_color(frag_uv_end,m_end);out_frag_color=mix(color_start,color_end,frag_blending_factor);out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp isampler2D;precision highp usampler2D;precision mediump int;in vec3 frag_uv_start;in vec3 frag_uv_end;in float frag_blending_factor;in float m_start;in float m_end;out vec4 out_frag_color;uniform usampler2D tex1;uniform usampler2D tex2;uniform usampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}uvec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return uvec4(0,0,0,1);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha),vec4(0.),float(x==blank));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a),vec4(0.),float(x==blank));}uniform float opacity;vec4 get_color(vec3 uv,float empty){vec4 color=mix(get_color_from_grayscale_texture(uv),vec4(0.),empty);return color;}void main(){vec4 color_start=get_color(frag_uv_start,m_start);vec4 color_end=get_color(frag_uv_end,m_end);out_frag_color=mix(color_start,color_end,frag_blending_factor);out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp isampler2D;precision mediump int;in vec3 frag_uv_start;in vec3 frag_uv_end;in float frag_blending_factor;in float m_start;in float m_end;out vec4 out_frag_color;uniform sampler2D tex1;uniform sampler2D tex2;uniform sampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}vec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return vec4(0.,1.,0.,1.);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_color_from_texture(vec3 UV){return get_pixels(UV);}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha)*color.a,vec4(0.),float(x==blank||isnan(x)));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a*color.a),vec4(0.),float(x==blank||isnan(x)));}uniform float opacity;void main(){vec4 color_start=get_colormap_from_grayscale_texture(frag_uv_start);vec4 color_end=get_colormap_from_grayscale_texture(frag_uv_end);out_frag_color=mix(color_start,color_end,frag_blending_factor);out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp isampler2D;precision mediump int;in vec3 frag_uv_start;in vec3 frag_uv_end;in float frag_blending_factor;in float m_start;in float m_end;out vec4 out_frag_color;uniform isampler2D tex1;uniform isampler2D tex2;uniform isampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}ivec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return ivec4(0,0,0,1);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha),vec4(0.),float(x==blank));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a),vec4(0.),float(x==blank));}uniform float opacity;void main(){vec4 color_start=get_colormap_from_grayscale_texture(frag_uv_start);vec4 color_end=get_colormap_from_grayscale_texture(frag_uv_end);out_frag_color=mix(color_start,color_end,frag_blending_factor);out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp isampler2D;precision highp usampler2D;precision mediump int;in vec3 frag_uv_start;in vec3 frag_uv_end;in float frag_blending_factor;in float m_start;in float m_end;out vec4 out_frag_color;uniform usampler2D tex1;uniform usampler2D tex2;uniform usampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}uvec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return uvec4(0,0,0,1);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha),vec4(0.),float(x==blank));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a),vec4(0.),float(x==blank));}uniform float opacity;void main(){vec4 color_start=get_colormap_from_grayscale_texture(frag_uv_start);vec4 color_end=get_colormap_from_grayscale_texture(frag_uv_end);out_frag_color=mix(color_start,color_end,frag_blending_factor);out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision mediump int;layout(location=0)in vec2 ndc_pos;layout(location=1)in vec3 uv_start;layout(location=2)in vec3 uv_end;layout(location=3)in float time_tile_received;layout(location=4)in float m0;layout(location=5)in float m1;out vec3 frag_uv_start;out vec3 frag_uv_end;out float frag_blending_factor;out float m_start;out float m_end;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform float current_time;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){gl_Position=vec4(ndc_pos,0.,1.);frag_uv_start=uv_start;frag_uv_end=uv_end;frag_blending_factor=min((current_time-time_tile_received)/500.,1.);m_start=m0;m_end=m1;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision mediump int;layout(location=0)in vec2 ndc_pos;layout(location=1)in vec3 uv_start;layout(location=2)in vec3 uv_end;layout(location=3)in float time_tile_received;layout(location=4)in float m0;layout(location=5)in float m1;out vec3 frag_uv_start;out vec3 frag_uv_end;out float frag_blending_factor;out float m_start;out float m_end;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform float current_time;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){gl_Position=vec4(ndc_pos,0.,1.);frag_uv_start=uv_start;frag_uv_end=uv_end;frag_blending_factor=min((current_time-time_tile_received)/500.,1.);m_start=m0;m_end=m1;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision mediump int;layout(location=0)in vec2 ndc_pos;layout(location=1)in vec3 uv_start;layout(location=2)in vec3 uv_end;layout(location=3)in float time_tile_received;layout(location=4)in float m0;layout(location=5)in float m1;out vec3 frag_uv_start;out vec3 frag_uv_end;out float frag_blending_factor;out float m_start;out float m_end;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform float current_time;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){gl_Position=vec4(ndc_pos,0.,1.);frag_uv_start=uv_start;frag_uv_end=uv_end;frag_blending_factor=min((current_time-time_tile_received)/500.,1.);m_start=m0;m_end=m1;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision mediump int;layout(location=0)in vec2 ndc_pos;layout(location=1)in vec3 uv_start;layout(location=2)in vec3 uv_end;layout(location=3)in float time_tile_received;layout(location=4)in float m0;layout(location=5)in float m1;out vec3 frag_uv_start;out vec3 frag_uv_end;out float frag_blending_factor;out float m_start;out float m_end;uniform mat4 inv_model;uniform vec2 ndc_to_clip;uniform float czf;uniform float current_time;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){gl_Position=vec4(ndc_pos,0.,1.);frag_uv_start=uv_start;frag_uv_end=uv_end;frag_blending_factor=min((current_time-time_tile_received)/500.,1.);m_start=m0;m_end=m1;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp usampler2D;precision highp isampler2D;precision highp int;out vec4 out_frag_color;uniform vec4 font_color;void main(){out_frag_color=font_color;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp int;layout(location=0)in vec2 pos_clip_space;uniform vec2 ndc_to_clip;uniform float czf;void main(){gl_Position=vec4(pos_clip_space/(ndc_to_clip*czf),0.,1.);}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp usampler2D;precision highp isampler2D;precision highp int;in vec2 out_clip_pos;in vec3 frag_pos;out vec4 out_frag_color;struct Tile{int uniq;int texture_idx;float start_time;float empty;};uniform Tile textures_tiles[12];uniform int num_tiles;uniform sampler2D tex1;uniform sampler2D tex2;uniform sampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}vec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return vec4(0.,1.,0.,1.);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_color_from_texture(vec3 UV){return get_pixels(UV);}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha)*color.a,vec4(0.),float(x==blank||isnan(x)));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a*color.a),vec4(0.),float(x==blank||isnan(x)));}const float TWICE_PI=6.28318530718;const float PI=3.141592653589793;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;int quarter(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int q=(x_neg+y_neg)|(y_neg<<1);return q;}float xpm1(vec2 p){bool x_neg=(p.x<0.);bool y_neg=(p.y<0.);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return 1.-x02;}else{return x02-1.;}}float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.0f-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1f){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}int ij2z(int i,int j){int i4=i|(j<<2);int j4=(i4^(i4>>1))&0x22222222;int i5=i4^j4^(j4<<1);return i5;}struct HashDxDy{int idx;float dx;float dy;};uniform sampler2D ang2pixd;HashDxDy hash_with_dxdy2(vec2 radec){vec2 aa=vec2(radec.x/TWICE_PI+1.,(radec.y/PI)+0.5);vec3 v=texture(ang2pixd,aa).rgb;return HashDxDy(int(v.x*255.),v.y,v.z);}HashDxDy hash_with_dxdy(int depth,vec3 p){int nside=1<TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,2.-sqrt_3_one_min_z);d0h=q;}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,sqrt_3_one_min_z);d0h=q+8;}else{float y_pm1=p.z*TRANSITION_Z_INV;int q01=int(x_pm1>y_pm1);int q12=int(x_pm1>=-y_pm1);int q03=1-q12;int q1=q01&q12;p_proj=vec2(x_pm1-float(q01+q12-1),y_pm1+float(q01+q03));d0h=((q01+q03)<<2)+((q+q1)&3);}float x=(half_nside*(p_proj.x+p_proj.y));float y=(half_nside*(p_proj.y-p_proj.x));int i=int(x);int j=int(y);return HashDxDy((d0h<<(depth<<1))+ij2z(i,j),x-float(i),y-float(j));}uniform float opacity;vec4 get_tile_color(vec3 pos){HashDxDy result=hash_with_dxdy(0,pos.zxy);int idx=result.idx;vec2 uv=vec2(result.dy,result.dx);Tile tile=textures_tiles[idx];int idx_texture=tile.texture_idx>>6;int off=tile.texture_idx&0x3F;float idx_row=float(off>>3);float idx_col=float(off&0x7);vec2 offset=(vec2(idx_col,idx_row)+uv)*0.125;vec3 UV=vec3(offset,float(idx_texture));vec4 color=get_color_from_texture(UV);return color;}uniform sampler2D position_tex;uniform mat4 model;void main(){vec2 uv=out_clip_pos*0.5+0.5;vec4 c=get_tile_color(normalize(frag_pos));out_frag_color=vec4(c.rgb,opacity*c.a);}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp usampler2D;precision highp isampler2D;precision highp int;in vec2 out_clip_pos;in vec3 frag_pos;out vec4 out_frag_color;struct Tile{int uniq;int texture_idx;float start_time;float empty;};uniform Tile textures_tiles[12];uniform sampler2D tex1;uniform sampler2D tex2;uniform sampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}vec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return vec4(0.,1.,0.,1.);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_color_from_texture(vec3 UV){return get_pixels(UV);}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha)*color.a,vec4(0.),float(x==blank||isnan(x)));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a*color.a),vec4(0.),float(x==blank||isnan(x)));}const float TWICE_PI=6.28318530718;const float PI=3.141592653589793;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;int quarter(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int q=(x_neg+y_neg)|(y_neg<<1);return q;}float xpm1(vec2 p){bool x_neg=(p.x<0.);bool y_neg=(p.y<0.);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return 1.-x02;}else{return x02-1.;}}float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.0f-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1f){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}int ij2z(int i,int j){int i4=i|(j<<2);int j4=(i4^(i4>>1))&0x22222222;int i5=i4^j4^(j4<<1);return i5;}struct HashDxDy{int idx;float dx;float dy;};uniform sampler2D ang2pixd;HashDxDy hash_with_dxdy2(vec2 radec){vec2 aa=vec2(radec.x/TWICE_PI+1.,(radec.y/PI)+0.5);vec3 v=texture(ang2pixd,aa).rgb;return HashDxDy(int(v.x*255.),v.y,v.z);}HashDxDy hash_with_dxdy(int depth,vec3 p){int nside=1<TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,2.-sqrt_3_one_min_z);d0h=q;}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,sqrt_3_one_min_z);d0h=q+8;}else{float y_pm1=p.z*TRANSITION_Z_INV;int q01=int(x_pm1>y_pm1);int q12=int(x_pm1>=-y_pm1);int q03=1-q12;int q1=q01&q12;p_proj=vec2(x_pm1-float(q01+q12-1),y_pm1+float(q01+q03));d0h=((q01+q03)<<2)+((q+q1)&3);}float x=(half_nside*(p_proj.x+p_proj.y));float y=(half_nside*(p_proj.y-p_proj.x));int i=int(x);int j=int(y);return HashDxDy((d0h<<(depth<<1))+ij2z(i,j),x-float(i),y-float(j));}uniform float opacity;vec4 get_tile_color(vec3 pos){HashDxDy result=hash_with_dxdy(0,pos.zxy);int idx=result.idx;vec2 uv=vec2(result.dy,result.dx);Tile tile=textures_tiles[idx];int idx_texture=tile.texture_idx>>6;int off=tile.texture_idx&0x3F;float idx_row=float(off>>3);float idx_col=float(off&0x7);vec2 offset=(vec2(idx_col,idx_row)+uv)*0.125;vec3 UV=vec3(offset,float(idx_texture));vec4 color=get_color_from_grayscale_texture(UV);color.a*=(1.-tile.empty);return color;}uniform sampler2D position_tex;uniform mat4 model;void main(){vec4 c=get_tile_color(normalize(frag_pos));out_frag_color=c;out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp usampler2D;precision highp isampler2D;precision highp int;in vec2 out_clip_pos;in vec3 frag_pos;out vec4 out_frag_color;struct Tile{int uniq;int texture_idx;float start_time;float empty;};uniform Tile textures_tiles[12];struct TileColor{Tile tile;vec4 color;bool found;};uniform isampler2D tex1;uniform isampler2D tex2;uniform isampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}ivec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return ivec4(0,0,0,1);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha),vec4(0.),float(x==blank));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a),vec4(0.),float(x==blank));}const float TWICE_PI=6.28318530718;const float PI=3.141592653589793;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;int quarter(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int q=(x_neg+y_neg)|(y_neg<<1);return q;}float xpm1(vec2 p){bool x_neg=(p.x<0.);bool y_neg=(p.y<0.);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return 1.-x02;}else{return x02-1.;}}float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.0f-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1f){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}int ij2z(int i,int j){int i4=i|(j<<2);int j4=(i4^(i4>>1))&0x22222222;int i5=i4^j4^(j4<<1);return i5;}struct HashDxDy{int idx;float dx;float dy;};uniform sampler2D ang2pixd;HashDxDy hash_with_dxdy2(vec2 radec){vec2 aa=vec2(radec.x/TWICE_PI+1.,(radec.y/PI)+0.5);vec3 v=texture(ang2pixd,aa).rgb;return HashDxDy(int(v.x*255.),v.y,v.z);}HashDxDy hash_with_dxdy(int depth,vec3 p){int nside=1<TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,2.-sqrt_3_one_min_z);d0h=q;}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,sqrt_3_one_min_z);d0h=q+8;}else{float y_pm1=p.z*TRANSITION_Z_INV;int q01=int(x_pm1>y_pm1);int q12=int(x_pm1>=-y_pm1);int q03=1-q12;int q1=q01&q12;p_proj=vec2(x_pm1-float(q01+q12-1),y_pm1+float(q01+q03));d0h=((q01+q03)<<2)+((q+q1)&3);}float x=(half_nside*(p_proj.x+p_proj.y));float y=(half_nside*(p_proj.y-p_proj.x));int i=int(x);int j=int(y);return HashDxDy((d0h<<(depth<<1))+ij2z(i,j),x-float(i),y-float(j));}uniform float opacity;vec4 get_tile_color(vec3 pos){HashDxDy result=hash_with_dxdy(0,pos.zxy);int idx=result.idx;vec2 uv=vec2(result.dy,result.dx);Tile tile=textures_tiles[idx];int idx_texture=tile.texture_idx>>6;int off=tile.texture_idx&0x3F;float idx_row=float(off>>3);float idx_col=float(off&0x7);vec2 offset=(vec2(idx_col,idx_row)+uv)*0.125;vec3 UV=vec3(offset,float(idx_texture));vec4 color=get_color_from_grayscale_texture(UV);color.a*=(1.-tile.empty);return color;}uniform sampler2D position_tex;uniform mat4 model;void main(){vec4 c=get_tile_color(frag_pos);out_frag_color=c;out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp usampler2D;precision highp isampler2D;precision highp int;in vec2 out_clip_pos;in vec3 frag_pos;out vec4 out_frag_color;struct Tile{int uniq;int texture_idx;float start_time;float empty;};uniform Tile textures_tiles[12];struct TileColor{Tile tile;vec4 color;bool found;};uniform usampler2D tex1;uniform usampler2D tex2;uniform usampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}uvec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return uvec4(0,0,0,1);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha),vec4(0.),float(x==blank));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a),vec4(0.),float(x==blank));}const float TWICE_PI=6.28318530718;const float PI=3.141592653589793;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;int quarter(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int q=(x_neg+y_neg)|(y_neg<<1);return q;}float xpm1(vec2 p){bool x_neg=(p.x<0.);bool y_neg=(p.y<0.);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return 1.-x02;}else{return x02-1.;}}float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.0f-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1f){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}int ij2z(int i,int j){int i4=i|(j<<2);int j4=(i4^(i4>>1))&0x22222222;int i5=i4^j4^(j4<<1);return i5;}struct HashDxDy{int idx;float dx;float dy;};uniform sampler2D ang2pixd;HashDxDy hash_with_dxdy2(vec2 radec){vec2 aa=vec2(radec.x/TWICE_PI+1.,(radec.y/PI)+0.5);vec3 v=texture(ang2pixd,aa).rgb;return HashDxDy(int(v.x*255.),v.y,v.z);}HashDxDy hash_with_dxdy(int depth,vec3 p){int nside=1<TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,2.-sqrt_3_one_min_z);d0h=q;}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,sqrt_3_one_min_z);d0h=q+8;}else{float y_pm1=p.z*TRANSITION_Z_INV;int q01=int(x_pm1>y_pm1);int q12=int(x_pm1>=-y_pm1);int q03=1-q12;int q1=q01&q12;p_proj=vec2(x_pm1-float(q01+q12-1),y_pm1+float(q01+q03));d0h=((q01+q03)<<2)+((q+q1)&3);}float x=(half_nside*(p_proj.x+p_proj.y));float y=(half_nside*(p_proj.y-p_proj.x));int i=int(x);int j=int(y);return HashDxDy((d0h<<(depth<<1))+ij2z(i,j),x-float(i),y-float(j));}uniform float opacity;vec4 get_tile_color(vec3 pos){HashDxDy result=hash_with_dxdy(0,pos.zxy);int idx=result.idx;vec2 uv=vec2(result.dy,result.dx);Tile tile=textures_tiles[idx];int idx_texture=tile.texture_idx>>6;int off=tile.texture_idx&0x3F;float idx_row=float(off>>3);float idx_col=float(off&0x7);vec2 offset=(vec2(idx_col,idx_row)+uv)*0.125;vec3 UV=vec3(offset,float(idx_texture));vec4 color=get_color_from_grayscale_texture(UV);color.a*=(1.-tile.empty);return color;}uniform sampler2D position_tex;uniform mat4 model;void main(){vec4 c=get_tile_color(frag_pos);out_frag_color=c;out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp usampler2D;precision highp isampler2D;precision highp int;in vec3 frag_pos;in vec2 out_clip_pos;out vec4 out_frag_color;struct Tile{int uniq;int texture_idx;float start_time;float empty;};uniform Tile textures_tiles[12];uniform float opacity;struct TileColor{Tile tile;vec4 color;bool found;};uniform sampler2D tex1;uniform sampler2D tex2;uniform sampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}vec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return vec4(0.,1.,0.,1.);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_color_from_texture(vec3 UV){return get_pixels(UV);}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha)*color.a,vec4(0.),float(x==blank||isnan(x)));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));vec4 color=get_pixels(uv);float x=color.r;float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a*color.a),vec4(0.),float(x==blank||isnan(x)));}const float TWICE_PI=6.28318530718;const float PI=3.141592653589793;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;int quarter(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int q=(x_neg+y_neg)|(y_neg<<1);return q;}float xpm1(vec2 p){bool x_neg=(p.x<0.);bool y_neg=(p.y<0.);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return 1.-x02;}else{return x02-1.;}}float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.0f-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1f){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}int ij2z(int i,int j){int i4=i|(j<<2);int j4=(i4^(i4>>1))&0x22222222;int i5=i4^j4^(j4<<1);return i5;}struct HashDxDy{int idx;float dx;float dy;};uniform sampler2D ang2pixd;HashDxDy hash_with_dxdy2(vec2 radec){vec2 aa=vec2(radec.x/TWICE_PI+1.,(radec.y/PI)+0.5);vec3 v=texture(ang2pixd,aa).rgb;return HashDxDy(int(v.x*255.),v.y,v.z);}HashDxDy hash_with_dxdy(int depth,vec3 p){int nside=1<TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,2.-sqrt_3_one_min_z);d0h=q;}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,sqrt_3_one_min_z);d0h=q+8;}else{float y_pm1=p.z*TRANSITION_Z_INV;int q01=int(x_pm1>y_pm1);int q12=int(x_pm1>=-y_pm1);int q03=1-q12;int q1=q01&q12;p_proj=vec2(x_pm1-float(q01+q12-1),y_pm1+float(q01+q03));d0h=((q01+q03)<<2)+((q+q1)&3);}float x=(half_nside*(p_proj.x+p_proj.y));float y=(half_nside*(p_proj.y-p_proj.x));int i=int(x);int j=int(y);return HashDxDy((d0h<<(depth<<1))+ij2z(i,j),x-float(i),y-float(j));}vec4 get_tile_color(vec3 pos){HashDxDy result=hash_with_dxdy(0,pos.zxy);int idx=result.idx;vec2 uv=vec2(result.dy,result.dx);Tile tile=textures_tiles[idx];int idx_texture=tile.texture_idx>>6;int off=tile.texture_idx&0x3F;float idx_row=float(off>>3);float idx_col=float(off&0x7);vec2 offset=(vec2(idx_col,idx_row)+uv)*0.125;vec3 UV=vec3(offset,float(idx_texture));vec4 color=get_colormap_from_grayscale_texture(UV);color.a*=(1.-tile.empty);return color;}uniform sampler2D position_tex;uniform mat4 model;void main(){vec4 c=get_tile_color(normalize(frag_pos));out_frag_color=c;out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp usampler2D;precision highp isampler2D;precision highp int;in vec3 frag_pos;in vec2 out_clip_pos;out vec4 out_frag_color;struct Tile{int uniq;int texture_idx;float start_time;float empty;};uniform Tile textures_tiles[12];uniform float opacity;uniform isampler2D tex1;uniform isampler2D tex2;uniform isampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}ivec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return ivec4(0,0,0,1);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha),vec4(0.),float(x==blank));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a),vec4(0.),float(x==blank));}const float TWICE_PI=6.28318530718;const float PI=3.141592653589793;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;int quarter(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int q=(x_neg+y_neg)|(y_neg<<1);return q;}float xpm1(vec2 p){bool x_neg=(p.x<0.);bool y_neg=(p.y<0.);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return 1.-x02;}else{return x02-1.;}}float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.0f-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1f){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}int ij2z(int i,int j){int i4=i|(j<<2);int j4=(i4^(i4>>1))&0x22222222;int i5=i4^j4^(j4<<1);return i5;}struct HashDxDy{int idx;float dx;float dy;};uniform sampler2D ang2pixd;HashDxDy hash_with_dxdy2(vec2 radec){vec2 aa=vec2(radec.x/TWICE_PI+1.,(radec.y/PI)+0.5);vec3 v=texture(ang2pixd,aa).rgb;return HashDxDy(int(v.x*255.),v.y,v.z);}HashDxDy hash_with_dxdy(int depth,vec3 p){int nside=1<TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,2.-sqrt_3_one_min_z);d0h=q;}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,sqrt_3_one_min_z);d0h=q+8;}else{float y_pm1=p.z*TRANSITION_Z_INV;int q01=int(x_pm1>y_pm1);int q12=int(x_pm1>=-y_pm1);int q03=1-q12;int q1=q01&q12;p_proj=vec2(x_pm1-float(q01+q12-1),y_pm1+float(q01+q03));d0h=((q01+q03)<<2)+((q+q1)&3);}float x=(half_nside*(p_proj.x+p_proj.y));float y=(half_nside*(p_proj.y-p_proj.x));int i=int(x);int j=int(y);return HashDxDy((d0h<<(depth<<1))+ij2z(i,j),x-float(i),y-float(j));}vec4 get_tile_color(vec3 pos){HashDxDy result=hash_with_dxdy(0,pos.zxy);int idx=result.idx;vec2 uv=vec2(result.dy,result.dx);Tile tile=textures_tiles[idx];int idx_texture=tile.texture_idx>>6;int off=tile.texture_idx&0x3F;float idx_row=float(off>>3);float idx_col=float(off&0x7);vec2 offset=(vec2(idx_col,idx_row)+uv)*0.125;vec3 UV=vec3(offset,float(idx_texture));vec4 color=get_colormap_from_grayscale_texture(UV);color.a*=(1.-tile.empty);return color;}uniform sampler2D position_tex;uniform mat4 model;void main(){vec4 c=get_tile_color(normalize(frag_pos));out_frag_color=c;out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp sampler2D;precision highp usampler2D;precision highp isampler2D;precision highp int;in vec3 frag_pos;in vec2 out_clip_pos;out vec4 out_frag_color;struct Tile{int uniq;int texture_idx;float start_time;float empty;};uniform Tile textures_tiles[12];uniform float opacity;uniform usampler2D tex1;uniform usampler2D tex2;uniform usampler2D tex3;uniform int num_tex;uniform float scale;uniform float offset;uniform float blank;uniform float min_value;uniform float max_value;uniform int H;uniform float size_tile_uv;uniform int tex_storing_fits;uniform sampler2D colormaps;uniform float num_colormaps;uniform float colormap_id;uniform float reversed;vec4 colormap_f(float x){x=mix(x,1.-x,reversed);float id=(colormap_id+0.5)/num_colormaps;return texture(colormaps,vec2(x,id));}float linear_f(float x,float min_value,float max_value){return clamp((x-min_value)/(max_value-min_value),0.,1.);}float sqrt_f(float x,float min_value,float max_value){float a=linear_f(x,min_value,max_value);return sqrt(a);}float log_f(float x,float min_value,float max_value){float y=linear_f(x,min_value,max_value);float a=1000.;return log(a*y+1.)/log(a);}float asinh_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return asinh(10.*d)/3.;}float pow2_f(float x,float min_value,float max_value){float d=linear_f(x,min_value,max_value);return d*d;}float transfer_func(int H,float x,float min_value,float max_value){if(H==0){return linear_f(x,min_value,max_value);}else if(H==1){return sqrt_f(x,min_value,max_value);}else if(H==2){return log_f(x,min_value,max_value);}else if(H==3){return asinh_f(x,min_value,max_value);}else{return pow2_f(x,min_value,max_value);}}uvec4 get_pixels(vec3 uv){int idx_texture=int(uv.z);if(idx_texture==0){return texture(tex1,uv.xy);}else if(idx_texture==1){return texture(tex2,uv.xy);}else if(idx_texture==2){return texture(tex3,uv.xy);}else{return uvec4(0,0,0,1);}}vec3 reverse_uv(vec3 uv){uv.y=size_tile_uv+2.*size_tile_uv*floor(uv.y/size_tile_uv)-uv.y;return uv;}vec4 get_colormap_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(colormap_f(alpha),vec4(0.),float(x==blank));}uniform vec4 C;uniform float K;vec4 get_color_from_grayscale_texture(vec3 UV){vec3 uv=mix(UV,reverse_uv(UV),float(tex_storing_fits==1));float x=float(get_pixels(uv).r);float alpha=x*scale+offset;alpha=transfer_func(H,alpha,min_value,max_value);return mix(vec4(C.rgb*K*alpha,C.a),vec4(0.),float(x==blank));}const float TWICE_PI=6.28318530718;const float PI=3.141592653589793;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;int quarter(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int q=(x_neg+y_neg)|(y_neg<<1);return q;}float xpm1(vec2 p){bool x_neg=(p.x<0.);bool y_neg=(p.y<0.);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return 1.-x02;}else{return x02-1.;}}float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.0f-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1f){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}int ij2z(int i,int j){int i4=i|(j<<2);int j4=(i4^(i4>>1))&0x22222222;int i5=i4^j4^(j4<<1);return i5;}struct HashDxDy{int idx;float dx;float dy;};uniform sampler2D ang2pixd;HashDxDy hash_with_dxdy2(vec2 radec){vec2 aa=vec2(radec.x/TWICE_PI+1.,(radec.y/PI)+0.5);vec3 v=texture(ang2pixd,aa).rgb;return HashDxDy(int(v.x*255.),v.y,v.z);}HashDxDy hash_with_dxdy(int depth,vec3 p){int nside=1<TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,2.-sqrt_3_one_min_z);d0h=q;}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2(x_pm1*sqrt_3_one_min_z,sqrt_3_one_min_z);d0h=q+8;}else{float y_pm1=p.z*TRANSITION_Z_INV;int q01=int(x_pm1>y_pm1);int q12=int(x_pm1>=-y_pm1);int q03=1-q12;int q1=q01&q12;p_proj=vec2(x_pm1-float(q01+q12-1),y_pm1+float(q01+q03));d0h=((q01+q03)<<2)+((q+q1)&3);}float x=(half_nside*(p_proj.x+p_proj.y));float y=(half_nside*(p_proj.y-p_proj.x));int i=int(x);int j=int(y);return HashDxDy((d0h<<(depth<<1))+ij2z(i,j),x-float(i),y-float(j));}vec4 get_tile_color(vec3 pos){HashDxDy result=hash_with_dxdy(0,pos.zxy);int idx=result.idx;vec2 uv=vec2(result.dy,result.dx);Tile tile=textures_tiles[idx];int idx_texture=tile.texture_idx>>6;int off=tile.texture_idx&0x3F;float idx_row=float(off>>3);float idx_col=float(off&0x7);vec2 offset=(vec2(idx_col,idx_row)+uv)*0.125;vec3 UV=vec3(offset,float(idx_texture));vec4 color=get_colormap_from_grayscale_texture(UV);color.a*=(1.-tile.empty);return color;}uniform sampler2D position_tex;uniform mat4 model;void main(){vec4 c=get_tile_color(normalize(frag_pos));out_frag_color=c;out_frag_color.a=out_frag_color.a*opacity;}\"","module.exports = \"#version 300 es\\nprecision highp float;precision highp int;layout(location=0)in vec2 pos_clip_space;out vec2 out_clip_pos;out vec3 frag_pos;uniform vec2 ndc_to_clip;uniform float czf;uniform mat4 model;uniform sampler2D position_tex;const float PI=3.1415926535897932384626433832795;const mat4 GAL2J2000=mat4(-0.4448296299195045,0.7469822444763707,0.4941094279435681,0.,-0.1980763734646737,0.4559837762325372,-0.8676661489811610,0.,-0.873437090247923,-0.4838350155267381,-0.0548755604024359,0.,0.,0.,0.,1.);const mat4 J20002GAL=mat4(-0.4448296299195045,-0.1980763734646737,-0.873437090247923,0.,0.7469822444763707,0.4559837762325372,-0.4838350155267381,0.,0.4941094279435681,-0.8676661489811610,-0.0548755604024359,0.,0.,0.,0.,1.);vec2 world2clip_orthographic(vec3 p){return vec2(-p.x,p.y);}vec2 world2clip_aitoff(vec3 p){float delta=asin(p.y);float theta=atan(-p.x,p.z);float theta_by_two=theta*0.5;float alpha=acos(cos(delta)*cos(theta_by_two));float inv_sinc_alpha=1.;if(alpha>1e-4){inv_sinc_alpha=alpha/sin(alpha);}float x=2.*inv_sinc_alpha*cos(delta)*sin(theta_by_two);float y=inv_sinc_alpha*sin(delta);return vec2(x/PI,y/PI);}vec2 world2clip_mollweide(vec3 p){int max_iter=10;float delta=asin(p.y);float theta=atan(p.x,p.z);float cst=PI*sin(delta);float phi=delta;float dx=phi+sin(phi)-cst;int k=0;while(abs(dx)>1e-6&&k1e-4){return asin(x)/x;}else{float x2=x*x;return 1.+x2*(1.+x2*9./20.)/6.;}}vec2 world2clip_arc(vec3 p){if(p.z>-1.){float r=length(p.xy);if(p.z>0.){r=arc_sinc(r);}else{r=acos(p.z)/r;}float x=p.x*r;float y=p.y*r;return vec2(-x/PI,y/PI);}else{return vec2(1.,0.);}}vec2 world2clip_gnomonic(vec3 p){if(p.z<=1e-2){return vec2(1.,0.);}else{return vec2((-p.x/p.z)/PI,(p.y/p.z)/PI);}}const float TWICE_PI=6.28318530718;const float FOUR_OVER_PI=1.27323954474;const float TRANSITION_Z=0.66666666666;const float TRANSITION_Z_INV=1.5;float one_minus_z_pos(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return 1.-p.z;}float one_minus_z_neg(vec3 p){float d2=dot(p.xy,p.xy);if(d2<1e-1){return d2*(0.5+d2*(0.125+d2*(0.0625+d2*(0.0390625+d2*0.02734375))));}return p.z+1.;}vec2 xpm1_and_offset(vec2 p){int x_neg=int(p.x<0.);int y_neg=int(p.y<0.);int offset=-(y_neg<<2)+1+((x_neg^y_neg)<<1);float lon=atan(abs(p.y),abs(p.x));float x02=lon*FOUR_OVER_PI;if(x_neg!=y_neg){return vec2(1.-x02,float(offset));}else{return vec2(x02-1.,float(offset));}}vec2 world2clip_healpix(vec3 p){vec2 x_pm1_and_offset=xpm1_and_offset(p.xy);vec2 p_proj=vec2(0.);if(p.z>TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_pos(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,2.-sqrt_3_one_min_z);}else if(p.z<-TRANSITION_Z){float sqrt_3_one_min_z=sqrt(3.*one_minus_z_neg(p));p_proj=vec2((x_pm1_and_offset.x*sqrt_3_one_min_z)+x_pm1_and_offset.y,-2.+sqrt_3_one_min_z);}else{p_proj=vec2(atan(p.y,p.x)*FOUR_OVER_PI,p.z*TRANSITION_Z_INV);}return p_proj*vec2(-0.25,0.5);}void main(){vec2 uv=pos_clip_space*0.5+0.5;vec3 world_pos=texture(position_tex,uv).rgb;frag_pos=vec3(model*vec4(world_pos,1.));gl_Position=vec4(pos_clip_space/(ndc_to_clip*czf),0.,1.);out_clip_pos=pos_clip_space;}\"","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && !queue.d) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = 1);\n\tif(queue) queue.moduleId = module.id;\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tpromise.moduleId = module.id;\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && (queue.d = 0);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".aladin.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"hips_webgl_renderer:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.v = (exports, wasmModuleId, wasmModuleHash, importsObj) => {\n\tvar req = fetch(__webpack_require__.p + \"\" + wasmModuleHash + \".module.wasm\");\n\tif (typeof WebAssembly.instantiateStreaming === 'function') {\n\t\treturn WebAssembly.instantiateStreaming(req, importsObj)\n\t\t\t.then((res) => (Object.assign(exports, res.instance.exports)));\n\t}\n\treturn req\n\t\t.then((x) => (x.arrayBuffer()))\n\t\t.then((bytes) => (WebAssembly.instantiate(bytes, importsObj)))\n\t\t.then((res) => (Object.assign(exports, res.instance.exports)));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhips_webgl_renderer\"] = self[\"webpackChunkhips_webgl_renderer\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File Popup.js\n * \n * Author: Thomas Boch [CDS]\n * \n *****************************************************************************/\n\nexport let Popup = (function() {\n \n \n // constructor\n function Popup(parentDiv, view) {\n this.domEl = $('');\n this.domEl.appendTo(parentDiv);\n\n this.view = view;\n\n\n var self = this;\n // close popup\n this.domEl.find('.aladin-closeBtn').click(function() {self.hide();});\n \n };\n \n Popup.prototype.hide = function() {\n this.domEl.hide();\n\n this.view.mustClearCatalog=true;\n this.view.catalogForPopup.hide();\n };\n\n Popup.prototype.show = function() {\n this.domEl.show();\n };\n\n Popup.prototype.setTitle = function(title) {\n this.domEl.find('.aladin-popupTitle').html(title || '');\n };\n\n Popup.prototype.setText = function(text) {\n this.domEl.find('.aladin-popupText').html(text || '');\n this.w = this.domEl.outerWidth();\n this.h = this.domEl.outerHeight();\n };\n\n Popup.prototype.setSource = function(source) {\n // remove reference to popup for previous source\n if (this.source) {\n this.source.popup = null;\n }\n source.popup = this;\n this.source = source;\n this.setPosition(source.x, source.y);\n };\n\n Popup.prototype.setPosition = function(x, y) {\n var newX = x - this.w/2;\n var newY = y - this.h;\n if (this.source) {\n newY += this.source.catalog.sourceSize/2;\n }\n\n this.domEl[0].style.left = newX + 'px';\n this.domEl[0].style.top = newY + 'px';\n };\n \n return Popup;\n})();\n\n","// Copyright 2015 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File HealpixGrid\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nexport let HealpixGrid = (function() {\n\tfunction HealpixGrid() {\n\t}\n\t\n\tHealpixGrid.prototype.redraw = function(ctx, cornersXYViewMap, fov, norder) {\n\t\t// on dessine les lignes\n\t\tctx.lineWidth = 1;\n\t\tctx.strokeStyle = \"rgb(150,150,220)\";\n\t\tctx.beginPath();\n\t\tvar cornersXYView;\n\t\tvar ipix;\n\t\tfor (var k=0, len=cornersXYViewMap.length; k Radians (rad = deg*AstroMath.D2R)\nAstroMath.D2R = Math.PI/180.0;\n// Constant for conversion Radians => Degrees (deg = rad*AstroMath.R2D)\nAstroMath.R2D = 180.0/Math.PI;\n/**\n * Function sign\n * @param x value for checking the sign\n * @return -1, 0, +1 respectively if x < 0, = 0, > 0\n */\nAstroMath.sign = function(x) { return x > 0 ? 1 : (x < 0 ? -1 : 0 ); };\n\n/**\n * Function cosd(degrees)\n * @param x angle in degrees\n * @returns the cosine of the angle\n */\nAstroMath.cosd = function(x) {\n\tif (x % 90 == 0) {\n\t\tvar i = Math.abs(Math.floor(x / 90 + 0.5)) % 4;\n\t\tswitch (i) {\n\t\t\tcase 0:\treturn 1;\n\t\t\tcase 1:\treturn 0;\n\t\t\tcase 2:\treturn -1;\n\t\t\tcase 3:\treturn 0;\n\t\t}\n\t}\n\treturn Math.cos(x*AstroMath.D2R);\n};\n\n/**\n * Function sind(degrees)\n * @param x angle in degrees\n * @returns the sine of the angle\n */\nAstroMath.sind = function(x) {\n\tif (x % 90 === 0) {\n\t\tvar i = Math.abs(Math.floor(x / 90 - 0.5)) % 4;\n\t\tswitch (i) {\n\t\t\tcase 0:\treturn 1;\n\t\t\tcase 1:\treturn 0;\n\t\t\tcase 2:\treturn -1;\n\t\t\tcase 3:\treturn 0;\n\t\t}\n\t}\n\n\treturn Math.sin(x*AstroMath.D2R);\n};\n\n/**\n * Function tand(degrees)\n * @param x angle in degrees\n * @returns the tangent of the angle\n */\nAstroMath.tand = function(x) {\n\tvar resid;\n\n\tresid = x % 360;\n\tif (resid == 0 || Math.abs(resid) == 180) {\n\t\treturn 0;\n\t} else if (resid == 45 || resid == 225) {\n\t\treturn 1;\n\t} else if (resid == -135 || resid == -315) {\n\t\treturn -1\n\t}\n\n\treturn Math.tan(x * AstroMath.D2R);\n};\n\n/**\n * Function asin(degrees)\n * @param sine value [0,1]\n * @return the angle in degrees\n */\nAstroMath.asind = function(x) { return Math.asin(x)*AstroMath.R2D; };\n\n/**\n * Function acos(degrees)\n * @param cosine value [0,1]\n * @return the angle in degrees\n */\nAstroMath.acosd = function(x) { return Math.acos(x)*AstroMath.R2D; };\n\n/**\n * Function atan(degrees)\n * @param tangent value\n * @return the angle in degrees\n */\nAstroMath.atand = function(x) { return Math.atan(x)*AstroMath.R2D; };\n\n/**\n * Function atan2(y,x)\n * @param y y component of the vector\n * @param x x component of the vector\n * @return the angle in radians\n */\nAstroMath.atan2 = function(y,x) {\n\tif (y != 0.0) {\n\t\tvar sgny = AstroMath.sign(y);\n\t\tif (x != 0.0) {\n\t\t\tvar phi = Math.atan(Math.abs(y/x));\n\t\t\tif (x > 0.0) return phi*sgny;\n\t\t\telse if (x < 0) return (Math.PI-phi)*sgny;\n\t\t} else return (Math.PI/2)*sgny;\n\t} else {\n\t\treturn x > 0.0 ? 0.0 : (x < 0 ? Math.PI : 0.0/0.0);\n\t}\n} \n\n/**\n * Function atan2d(y,x)\n * @param y y component of the vector\n * @param x x component of the vector\n * @return the angle in degrees\n */\nAstroMath.atan2d = function(y,x) {\n\treturn AstroMath.atan2(y,x)*AstroMath.R2D;\n}\n\n/*=========================================================================*/\n/**\n * Computation of hyperbolic cosine\n * @param x argument\n */\nAstroMath.cosh = function(x) {\n\treturn (Math.exp(x)+Math.exp(-x))/2;\n}\n\n/**\n * Computation of hyperbolic sine\n * @param x argument\n */\nAstroMath.sinh = function(x) {\n\treturn (Math.exp(x)-Math.exp(-x))/2;\n}\n\n/**\n * Computation of hyperbolic tangent\n * @param x argument\n */\nAstroMath.tanh = function(x) {\n\treturn (Math.exp(x)-Math.exp(-x))/(Math.exp(x)+Math.exp(-x));\n}\n\n/**\n * Computation of Arg cosh\n * @param x argument in degrees. Must be in the range [ 1, +infinity ]\n */\nAstroMath.acosh = function(x) {\n\treturn(Math.log(x+Math.sqrt(x*x-1.0)));\n}\n\n/**\n * Computation of Arg sinh\n * @param x argument in degrees\n */\nAstroMath.asinh = function(x) {\n\treturn(Math.log(x+Math.sqrt(x*x+1.0)));\n}\n\n/**\n * Computation of Arg tanh\n * @param x argument in degrees. Must be in the range ] -1, +1 [\n */\nAstroMath.atanh = function(x) {\n\treturn(0.5*Math.log((1.0+x)/(1.0-x)));\n}\n\n//=============================================================================\n// Special Functions using trigonometry\n//=============================================================================\n/**\n * Computation of sin(x)/x\n *\t@param x in degrees.\n * For small arguments x <= 0.001, use approximation \n */\nAstroMath.sinc = function(x) {\n\tvar ax = Math.abs(x);\n\tvar y;\n\n\tif (ax <= 0.001) {\n\t\tax *= ax;\n\t\ty = 1 - ax*(1.0-ax/20.0)/6.0;\n\t} else {\n\t\ty = Math.sin(ax)/ax;\n\t}\n\n\treturn y;\n}\n\n/**\n * Computes asin(x)/x\n * @param x in degrees.\n * For small arguments x <= 0.001, use an approximation\n */\nAstroMath.asinc = function(x) {\n\tvar ax = Math.abs(x);\n\tvar y;\n\n\tif (ax <= 0.001) {\n\t\tax *= ax; \n\t\ty = 1 + ax*(6.0 + ax*(9.0/20.0))/6.0;\n\t} else {\n\t\ty = Math.asin(ax)/ax;\t// ???? radians ???\n\t}\n\n\treturn (y);\n}\n\n\n//=============================================================================\n/**\n * Computes the hypotenuse of x and y\n * @param x value\n * @param y value\n * @return sqrt(x*x+y*y)\n */\nAstroMath.hypot = function(x,y) {\n\treturn Math.sqrt(x*x+y*y);\n}\n\n/** Generate the rotation matrix from the Euler angles\n * @param z\tEuler angle\n * @param theta\tEuler angle\n * @param zeta\tEuler angles\n * @return R [3][3]\t\tthe rotation matrix\n * The rotation matrix is defined by:
\n *    R =      R_z(-z)      *        R_y(theta)     *     R_z(-zeta)\n *   |cos.z -sin.z  0|   |cos.the  0 -sin.the|   |cos.zet -sin.zet 0|\n * = |sin.z  cos.z  0| x |   0     1     0   | x |sin.zet  cos.zet 0|\n *   |   0      0   1|   |sin.the  0  cos.the|   |   0        0    1|\n * 
\n */\nAstroMath.eulerMatrix = function(z, theta, zeta) {\n\tvar R = new Array(3);\n\tR[0] = new Array(3);\n\tR[1] = new Array(3);\n\tR[2] = new Array(3);\n\tvar cosdZ = AstroMath.cosd(z);\n\tvar sindZ = AstroMath.sind(z);\n\tvar cosdTheta = AstroMath.cosd(theta);\n\tvar w = AstroMath.sind(theta) ;\n\tvar cosdZeta = AstroMath.cosd(zeta);\n\tvar sindZeta = AstroMath.sind(zeta);\n\n\tR[0][0] = cosdZeta*cosdTheta*cosdZ - sindZeta*sindZ;\n\tR[0][1] = -sindZeta*cosdTheta*cosdZ - cosdZeta*sindZ;\n\tR[0][2] = -w*cosdZ;\n\n\tR[1][0] = cosdZeta*cosdTheta*sindZ + sindZeta*cosdZ;\n\tR[1][1] = -sindZeta*cosdTheta*sindZ + cosdZeta*cosdZ;\n\tR[1][2] = -w*sindZ;\n\n\tR[2][0] = -w*cosdZeta;\n\tR[2][1] = -w*cosdZ;\n\tR[2][2] = cosdTheta;\n\treturn R ;\n};\n\n\nAstroMath.displayMatrix = function(m) {\n\t// Number of rows\n\tvar nbrows = m.length;\n\t// Max column count\n\tvar nbcols = 0\n\tfor (var i=0; i nbcols) nbcols = m[i].length;\n\t}\n\tvar str = '\\n';\n\tfor (var i=0; i X,Y\n\t * alpha, delta = longitude, lattitude\n\t */\n\tproject: function(alpha, delta) {\n var u1 = this.tr_ou(alpha, delta);\t// u1[3]\n\t\tvar u2 = this.tr_uu(u1, this.ROT);\t// u2[3]\n\t\tvar P = this.tr_up(this.PROJECTION, u2);\t// P[2] = [X,Y]\n\t\tif (P == null) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif( this.longitudeIsReversed) {\n return { X: P[0], Y: -P[1] };\n }\n else {\n\t\t return { X: -P[0], Y: -P[1] };\n }\n //return { X: -P[0], Y: -P[1] };\n\t},\n\n\t/**\n\t * Computes the coordinates from a projection point : X,Y => ra,dec\n\t * return o = [ ra, dec ]\n\t */\n\tunproject: function(X,Y) {\n\t\tif ( ! this.longitudeIsReversed) {\n X = -X;\n }\n\t\tY = -Y;\n\t\tvar u1 = this.tr_pu(this.PROJECTION, X, Y);\t// u1[3]\n\t\tvar u2 = this.tr_uu1(u1, this.ROT);\t// u2[3]\n\t\tvar o = this.tr_uo(u2);\t// o[2]\n\n/*\n\t\tif (this.longitudeIsReversed) {\n return { ra: 360-o[0], dec: o[1] };\n }\n else {\n\t\t return { ra: o[0], dec: o[1] };\n }\n*/\n return { ra: o[0], dec: o[1] };\n\t},\n\n\t/**\n\t * Compute projections from unit vector\n\t * The center of the projection correspond to u = [1, 0, 0)\n\t * proj = projection system (integer code like _PROJ_MERCATOR_\n\t * u[3] = unit vector\n\t * return: an array [x,y] or null\n\t */\n\ttr_up: function(proj, u) {\n\t\tvar x = u[0]; var y = u[1]; var z = u[2];\n\t\tvar r, den;\n\t\tvar pp;\n\t\tvar X,Y;\n\n\t\tr = AstroMath.hypot(x,y);\t\t\t// r = cos b\n\t\tif (r == 0.0 && z == 0.0) return null;\n\n\t\tswitch(proj) {\n\t\t\tdefault:\n\t\t\t\tpp = null;\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_AITOFF:\n\t\t\t\tden = Math.sqrt(r*(r+x)/2.0); \t\t// cos b . cos l/2\n\t\t\t\tX = Math.sqrt(2.0*r*(r-x));\n\t\t\t\tden = Math.sqrt((1.0 + den)/2.0); \n\t\t\t\tX = X / den;\n\t\t\t\tY = z / den;\n\t\t\t\tif (y < 0.0) X = -X;\n\t\t\t\tpp = [ X, Y];\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_GLS:\n\t\t\t\tY = Math.asin(z);\t\t\t\t// sin b\n\t\t\t\tX = (r != 0) ? Math.atan2(y,x)*r : 0.0;\n\t\t\t\tpp = [ X, Y];\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_MERCATOR:\n\t\t\t\tif (r != 0) {\n\t\t\t\t\tX = Math.atan2(y,x);\n\t\t\t\t\tY = AstroMath.atanh(z);\n\t\t\t\t\tpp = [ X, Y];\n\t\t\t\t} else {\n\t\t\t\t\tpp = null;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_TAN:\n\t\t\t\tif (x > 0.0) {\n\t\t\t\t\tX = y/x;\n\t\t\t\t\tY = z/x;\n\t\t\t\t\tpp = [ X, Y ];\n\t\t\t\t} else {\n\t\t\t\t\tpp = null;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_TAN2:\n\t\t\t\tden = (1.0 + x)/2.0;\n\t\t\t\tif (den > 0.0)\t{\n\t\t\t\t\tX = y/den;\n\t\t\t\t\tY = z/den;\n\t\t\t\t\tpp = [ X, Y ];\n\t\t\t\t} else {\n\t\t\t\t\tpp = null;\n\t\t\t\t}\n\t\t\t \tbreak;\n\n\t\t\tcase Projection.PROJ_ARC:\n\t\t\t\tif (x <= -1.0) {\n\t\t\t\t\t// Distance of 180 degrees\n\t\t\t\t\tX = Math.PI\n\t\t\t\t\tY = 0.0;\n\t\t\t\t} else {\n\t\t\t\t\t// Arccos(x) = Arcsin(r)\n\t\t\t\t\tr = AstroMath.hypot(y,z);\n\t\t\t\t\tif (x > 0.0) den = AstroMath.asinc(r);\n\t\t\t\t\telse den = Math.acos(x)/r;\n\t\t\t\t\tX = y * den;\n\t\t\t\t\tY = z * den;\n\t\t\t\t}\n\t\t\t\tpp = [ X, Y ];\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_SIN:\n\t\t\t\tif (x >= 0.0) {\n\t\t\t\t\tX = y;\n\t\t\t\t\tY = z;\n\t\t\t\t\tpp = [ X, Y ];\n\t\t\t\t} else {\n\t\t\t\t\tpp = null;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_SIN2:\t// Always possible\n\t\t\t\tden = Math.sqrt((1.0 + x)/2.0);\n\t\t\t\tif (den != 0)\t{\n\t\t\t\t\tX = y / den;\n\t\t\t\t\tY = z / den;\n\t\t\t\t} else {\n\t\t\t\t\t// For x = -1\n\t\t\t\t\tX = 2.0;\n\t\t\t\t\tY = 0.0;\n\t\t\t\t}\n\t\t\t\tpp = [ X, Y ];\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_LAMBERT:\t// Always possible\n\t\t\t\tY = z;\n\t\t\t\tX = 0;\n\t\t\t\tif (r != 0)\tX = Math.atan2(y,x);\n\t\t\t\tpp = [ X, Y ];\n\t\t\t\tbreak;\n\t }\n\t return pp;\n\t},\n\n\t/**\n\t * Computes Unit vector from a position in projection centered at position (0,0).\n\t * proj = projection code\n\t * X,Y : coordinates of the point in the projection\n\t * returns : the unit vector u[3] or a face number for cube projection. \n\t * null if the point is outside the limits, or if the projection is unknown.\n\t */\n\ttr_pu: function( proj, X, Y ) {\n\t\tvar r,s,x,y,z;\n\n\t\tswitch(proj) {\n\t\t\tdefault:\n\t\t\treturn null;\n\n\t\t\tcase Projection.PROJ_AITOFF:\n\t\t\t\t// Limit is ellipse with axises \n\t\t\t\t// a = 2 * sqrt(2) , b = sqrt(2)\n\t\t\t\t// Compute dir l/2, b\n\t\t\t\tr = X*X/8.e0 + Y*Y/2.e0; \t// 1 - cos b . cos l/2\n\t\t\t\tif (r > 1.0) {\n\t \t\t\t\t// Test outside domain */\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tx = 1.0 - r ;\t// cos b . cos l/2\n\t\t\t\ts = Math.sqrt(1.0 - r/2.0) ;\t// sqrt(( 1 + cos b . cos l/2)/2)\n\t\t\t\ty = X * s / 2.0;\n\t\t\t\tz = Y * s ;\n\t\t\t\t// From (l/2,b) to (l,b)\n\t\t\t\tr = AstroMath.hypot( x, y ) ;\t// cos b\n\t\t\t\tif (r != 0.0) {\n\t\t\t\t\ts = x;\n\t\t\t\t\tx = (s*s - y*y) /r;\n\t\t\t\t\ty = 2.0 * s * y/r;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_GLS:\n\t\t\t\t// Limit is |Y| <= pi/2\n\t\t\t\tz = Math.sin(Y);\n\t\t\t\tr = 1 - z*z;\t\t// cos(b) ** 2\n\t\t\t\tif (r < 0.0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tr = Math.sqrt(r);\t\t// cos b\n\t\t\t\tif (r != 0.0) {\n\t\t\t\t\ts = X/r;\t// Longitude\n\t\t\t\t} else {\n\t\t\t\t\ts = 0.0;\t// For poles\n\t\t\t\t}\n\t\t\t\tx = r * Math.cos(s);\n\t\t\t\ty = r * Math.sin(s);\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_MERCATOR:\n\t\t\t\tz = AstroMath.tanh(Y);\n\t\t\t\tr = 1.0/AstroMath.cosh(Y);\n\t\t\t\tx = r * Math.cos(X);\n\t\t\t\ty = r * Math.sin(X);\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_LAMBERT:\n\t\t\t\t// Always possible\n\t\t\t\tz = Y;\n\t\t\t\tr = 1 - z*z;\t\t// cos(b) ** 2\n\t\t\t\tif (r < 0.0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tr = Math.sqrt(r);\t\t// cos b\n\t\t\t\tx = r * Math.cos(X);\n\t\t\t\ty = r * Math.sin(X);\n\t\t\t\tbreak;\n\t\n\t\t\tcase Projection.PROJ_TAN:\n\t\t\t\t// No limit\n\t\t\t\tx = 1.0 / Math.sqrt(1.0 + X*X + Y*Y);\n\t\t\t\ty = X * x;\n\t\t\t\tz = Y * x;\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_TAN2:\n\t\t\t\t// No limit\n\t\t\t\tr = (X*X + Y*Y)/4.0;\n\t\t\t\ts = 1.0 + r;\n\t\t\t\tx = (1.0 - r)/s;\n\t\t\t\ty = X / s;\n\t\t\t\tz = Y / s;\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_ARC:\n\t\t\t\t// Limit is circle, radius PI\n\t\t\t\tr = AstroMath.hypot(X, Y);\n\t\t\t\tif (r > Math.PI) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\ts = AstroMath.sinc(r);\n\t\t\t\tx = Math.cos(r);\n\t\t\t\ty = s * X;\n\t\t\t\tz = s * Y;\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_SIN:\n\t\t\t\t// Limit is circle, radius 1\n\t\t\t\ts = 1.0 - X*X - Y*Y;\n\t\t\t\tif (s < 0.0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tx = Math.sqrt(s);\n\t\t\t\ty = X;\n\t\t\t\tz = Y;\n\t\t\t\tbreak;\n\n\t\t\tcase Projection.PROJ_SIN2:\n\t\t\t\t// Limit is circle, radius 2\t*/\n\t\t\t\tr = (X*X + Y*Y)/4.e0;\n\t\t\t\tif (r > 1.0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\ts = Math.sqrt(1.0 - r);\n\t\t\t\tx = 1.0 - 2.0 * r;\n\t\t\t\ty = s * X;\n\t\t\t\tz = s * Y;\n\t\t\t\tbreak;\n\t }\n\t return [ x,y,z ];\n\t},\n\n\t/**\n\t * Creates the rotation matrix R[3][3] defined as\n\t * R[0] (first row) = unit vector towards Zenith\n\t * R[1] (second row) = unit vector towards East\n\t * R[2] (third row) = unit vector towards North\n\t * o[2] original angles\n\t * @return rotation matrix\n\t */\n\ttr_oR: function(lon, lat) {\n\t\tvar R = new Array(3);\n\t\tR[0] = new Array(3);\n\t\tR[1] = new Array(3);\n\t\tR[2] = new Array(3);\n\t\tR[2][2] = AstroMath.cosd(lat);\n\t\tR[0][2] = AstroMath.sind(lat);\n\t\tR[1][1] = AstroMath.cosd(lon);\n\t\tR[1][0] = -AstroMath.sind(lon);\n\t\tR[1][2] = 0.0;\n\t\tR[0][0] = R[2][2] * R[1][1]; \n\t\tR[0][1] = -R[2][2] * R[1][0];\n\t\tR[2][0] = -R[0][2] * R[1][1];\n\t\tR[2][1] = R[0][2] * R[1][0];\n\t\treturn R;\n\t},\n\n\t/**\n\t * Transformation from polar coordinates to Unit vector\n\t * @return U[3]\n\t */\n\ttr_ou: function(ra, dec) {\n\t\tvar u = new Array(3);\n\t\tvar cosdec = AstroMath.cosd(dec);\n\n\t\tu[0] = cosdec * AstroMath.cosd(ra);\n\t\tu[1] = cosdec * AstroMath.sind(ra);\n\t\tu[2] = AstroMath.sind(dec);\n\n\t\treturn u;\n\t},\n\n\t/**\n\t * Rotates the unit vector u1 using the rotation matrix\n\t * u1[3] unit vector\n\t * R[3][3] rotation matrix\n\t * return resulting unit vector u2[3]\n\t */\n\ttr_uu: function( u1, R ) {\n\t\tvar u2 = new Array(3);\n\t\tvar x = u1[0];\n\t\tvar y = u1[1];\n\t\tvar z = u1[2];\n\n\t\tu2[0] = R[0][0]*x + R[0][1]*y + R[0][2]*z ;\n\t\tu2[1] = R[1][0]*x + R[1][1]*y + R[1][2]*z ;\n\t\tu2[2] = R[2][0]*x + R[2][1]*y + R[2][2]*z ;\n\n\t\treturn u2;\n\t},\n\n\t/**\n\t * reverse rotation the unit vector u1 using the rotation matrix\n\t * u1[3] unit vector\n\t * R[3][3] rotation matrix\n\t * return resulting unit vector u2[3]\n\t */\n\ttr_uu1: function( u1 , R) {\n\t\tvar u2 = new Array(3);\n\t\tvar x = u1[0];\n\t\tvar y = u1[1];\n\t\tvar z = u1[2];\n\n\t\tu2[0] = R[0][0]*x + R[1][0]*y + R[2][0]*z;\n\t\tu2[1] = R[0][1]*x + R[1][1]*y + R[2][1]*z;\n\t\tu2[2] = R[0][2]*x + R[1][2]*y + R[2][2]*z;\n\n\t\treturn u2;\n\t},\n\n\t/**\n\t * Computes angles from direction cosines\n\t * u[3] = direction cosines vector\n\t * return o = [ ra, dec ]\n\t */\n\ttr_uo: function(u) {\n\t\tvar x = u[0]; var y = u[1]; var z = u[2]; \n\t\tvar r2 = x*x + y*y;\n\t\tvar ra, dec;\n\t\tif (r2 == 0.0) {\n\t \t\t// in case of poles\n\t\t\tif (z == 0.0) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tra = 0.0;\n\t\t\tdec = z > 0.0 ? 90.0 : -90.0;\n\t\t} else {\n\t\t\tdec = AstroMath.atand( z / Math.sqrt(r2));\n\t\t\tra = AstroMath.atan2d (y , x );\n\t\t\tif (ra < 0.0) ra += 360.0;\n\t\t}\n\n\t\treturn [ ra, dec ];\n\t}\n}\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File CooFrameEnum\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\n import { Projection } from \"./libs/astro/projection.js\";\n\n export let ProjectionEnum = {\n SIN: Projection.PROJ_SIN,\n AITOFF: Projection.PROJ_AITOFF,\n MERCATOR: Projection.PROJ_MERCATOR,\n ARC: Projection.PROJ_ARC,\n TAN: Projection.PROJ_TAN,\n MOL: Projection.PROJ_MOLLWEIDE,\n HPX: Projection.PROJ_HEALPIX,\n };\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File CooFrameEnum\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n \nexport let CooFrameEnum = (function() {\n\n var systems = {J2000: 'J2000', GAL: 'Galactic'};\n return {\n SYSTEMS: systems,\n\n J2000: {label: \"J2000\", system: systems.J2000},\n J2000d: {label: \"J2000d\", system: systems.J2000},\n GAL: {label: \"Galactic\", system: systems.GAL},\n\n fromString: function(str, defaultValue) {\n if (! str) {\n return defaultValue ? defaultValue : null;\n }\n \n str = str.toLowerCase().replace(/^\\s+|\\s+$/g, ''); // convert to lowercase and trim\n \n if (str.indexOf('j2000d')==0 || str.indexOf('icrsd')==0) {\n return CooFrameEnum.J2000d;\n }\n else if (str.indexOf('j2000')==0 || str.indexOf('icrs')==0) {\n return CooFrameEnum.J2000;\n }\n else if (str.indexOf('gal')==0) {\n return CooFrameEnum.GAL;\n }\n else {\n return defaultValue ? defaultValue : null;\n }\n }\n };\n \n})();\n\n\n\n\n\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File AladinUtils\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nimport { Projection } from \"./libs/astro/projection.js\";\nimport { CooFrameEnum } from \"./CooFrameEnum.js\";\n\nexport let AladinUtils = (function() {\n\n return {\n \t/**\n \t * passage de xy projection à xy dans la vue écran \n \t * @param x\n \t * @param y\n \t * @param width\n \t * @param height\n \t * @param largestDim largest dimension of the view\n \t * @returns position in the view\n \t */\n \txyToView: function(x, y, width, height, largestDim, zoomFactor, round) {\n \t if (round==undefined) {\n // we round by default\n \t round = true;\n \t }\n\n \t if (round) {\n \t // we round the result for potential performance gains\n \t return {vx: AladinUtils.myRound(largestDim/2*(1+zoomFactor*x)-(largestDim-width)/2), vy: AladinUtils.myRound(largestDim/2*(1+zoomFactor*y)-(largestDim-height)/2)};\n\n \t }\n \t else {\n return {vx: largestDim/2*(1+zoomFactor*x)-(largestDim-width)/2, vy: largestDim/2*(1+zoomFactor*y)-(largestDim-height)/2};\n \t }\n \t},\n \t\n \t/**\n \t * passage de xy dans la vue écran à xy projection\n \t * @param vx\n \t * @param vy\n \t * @param width\n \t * @param height\n \t * @param largestDim\n \t * @param zoomFactor\n \t * @returns position in xy projection\n \t */\n \tviewToXy: function(vx, vy, width, height, largestDim, zoomFactor) {\n \t\treturn {x: ((2*vx+(largestDim-width))/largestDim-1)/zoomFactor, y: ((2*vy+(largestDim-height))/largestDim-1)/zoomFactor};\n \t},\n\n \t/**\n \t * convert a \n \t * @returns position x,y in the view. Null if projection is impossible\n \t */\n /*radecToViewXy: function(ra, dec, currentProjection, currentFrame, width, height, largestDim, zoomFactor) {\n var xy;\n if (currentFrame.system != CooFrameEnum.SYSTEMS.J2000) {\n var lonlat = CooConversion.J2000ToGalactic([ra, dec]);\n xy = currentProjection.project(lonlat[0], lonlat[1]);\n }\n else {\n xy = currentProjection.project(ra, dec);\n }\n if (!xy) {\n return null;\n }\n\n return AladinUtils.xyToView(xy.X, xy.Y, width, height, largestDim, zoomFactor, false);\n },*/\n radecToViewXy: function(ra, dec, view) {\n //var xy;\n //if (currentFrame.system != CooFrameEnum.SYSTEMS.J2000) {\n // var lonlat = CooConversion.J2000ToGalactic([ra, dec]);\n // xy = view.aladin.webglAPI.worldToScreen(lonlat[0], lonlat[1]);\n //}\n //else {\n //var lonlat = CooConversion.J2000ToGalactic([ra, dec]);\n let xy = view.aladin.webglAPI.worldToScreen(ra, dec);\n //}\n //if (!xy) {\n // return null;\n //}\n\n return xy;\n },\n \t\n \tmyRound: function(a) {\n \t\tif (a<0) {\n \t\t\treturn -1*( (-a) | 0);\n \t\t}\n \t\telse {\n \t\t\treturn a | 0;\n \t\t}\n \t},\n \t\n \t/**\n \t * Test whether a xy position is the view\n \t * @param vx\n \t * @param vy\n \t * @param width\n \t * @param height\n \t * @returns a boolean whether (vx, vy) is in the screen\n \t */\n \tisInsideViewXy: function(vx, vy, width, height) {\n \t\treturn vx >= 0 && vx < width && vy >= 0 && vy < height\n \t},\n \t\n \t/**\n \t * tests whether a healpix pixel is visible or not\n \t * @param pixCorners array of position (xy view) of the corners of the pixel\n \t * @param viewW\n \t */\n \tisHpxPixVisible: function(pixCorners, viewWidth, viewHeight) {\n \t\tfor (var i = 0; i=-20 && pixCorners[i].vx<(viewWidth+20) &&\n \t\t\t\t pixCorners[i].vy>=-20 && pixCorners[i].vy<(viewHeight+20) ) {\n \t\t\t\treturn true;\n \t\t\t}\n \t\t}\n \t\treturn false;\n \t},\n \t\n \tipixToIpix: function(npixIn, norderIn, norderOut) {\n \t\tvar npixOut = [];\n \t\tif (norderIn>=norderOut) {\n \t\t}\n \t},\n // Zoom is handled in the backend\n /*getZoomFactorForAngle: function(angleInDegrees, projectionMethod) {\n var p1 = {ra: 0, dec: 0};\n var p2 = {ra: angleInDegrees, dec: 0};\n var projection = new Projection(angleInDegrees/2, 0);\n projection.setProjection(projectionMethod);\n var p1Projected = projection.project(p1.ra, p1.dec);\n var p2Projected = projection.project(p2.ra, p2.dec);\n \n var zoomFactor = 1/Math.abs(p1Projected.X - p2Projected.Y);\n\n return zoomFactor;\n },*/\n\n counterClockwiseTriangle: function(x1, y1, x2, y2, x3, y3) {\n // From: https://math.stackexchange.com/questions/1324179/how-to-tell-if-3-connected-points-are-connected-clockwise-or-counter-clockwise\n // | x1, y1, 1 |\n // | x2, y2, 1 | > 0 => the triangle is given in anticlockwise order\n // | x3, y3, 1 |\n \n return x1*y2 + y1*x3 + x2*y3 - x3*y2 - y3*x1 - x2*y1 >= 0;\n },\n\n // grow array b of vx,vy view positions by *val* pixels\n grow2: function(b, val) {\n var j=0;\n for ( var i=0; i<4; i++ ) {\n if ( b[i]==null ) {\n j++;\n }\n }\n\n if( j>1 ) {\n return b;\n }\n\n var b1 = [];\n for ( var i=0; i<4; i++ ) {\n b1.push( {vx: b[i].vx, vy: b[i].vy} );\n }\n \n for ( var i=0; i<2; i++ ) {\n var a = i==1 ? 1 : 0;\n var c = i==1 ? 3 : 2;\n\n if ( b1[a]==null ) {\n var d,g;\n if ( a==0 || a==3 ) {\n d=1;\n g=2;\n }\n else {\n d=0;\n g=3;\n }\n b1[a] = {vx: (b1[d].vx+b1[g].vx)/2, vy: (b1[d].vy+b1[g].vy)/2};\n }\n if ( b1[c]==null ) {\n var d,g;\n if ( c==0 || c==3 ) {\n d=1;\n g=2;\n }\n else {\n d=0;\n g=3;\n }\n b1[c] = {vx: (b1[d].vx+b1[g].vx)/2, vy: (b1[d].vy+b1[g].vy)/2};\n }\n if( b1[a]==null || b1[c]==null ) {\n continue;\n }\n\n var angle = Math.atan2(b1[c].vy-b1[a].vy, b1[c].vx-b1[a].vx);\n var chouilla = val*Math.cos(angle);\n b1[a].vx -= chouilla;\n b1[c].vx += chouilla;\n chouilla = val*Math.sin(angle);\n b1[a].vy-=chouilla;\n b1[c].vy+=chouilla;\n }\n return b1;\n },\n\n // SVG icons templates are stored here rather than in a CSS, as to allow\n // to dynamically change the fill color\n // Pretty ugly, haven't found a prettier solution yet\n //\n // TODO: store this in the Stack class once it will exist\n //\n SVG_ICONS: {\n CATALOG: '',\n MOC: '',\n OVERLAY: ''\n }\n \n };\n\n})();\n\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File Utils\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nimport { Aladin } from \"./Aladin.js\";\n\nexport let Utils = {};\n\n// list of URL domains that can be safely switched from HTTP to HTTPS\nUtils.HTTPS_WHITELIIST = ['alasky.u-strasbg.fr', 'alaskybis.u-strasbg.fr', 'alasky.unistra.fr', 'alaskybis.unistra.fr',\n 'alasky.cds.unistra.fr', 'alaskybis.cds.unistra.fr', 'hips.astron.nl', 'jvo.nao.ac.jp',\n 'archive.cefca.es', 'cade.irap.omp.eu', 'skies.esac.esa.int'];\n\nUtils.cssScale = undefined;\n// adding relMouseCoords to HTMLCanvasElement prototype (see http://stackoverflow.com/questions/55677/how-do-i-get-the-coordinates-of-a-mouse-click-on-a-canvas-element ) \nfunction relMouseCoords(event) {\n var totalOffsetX = 0;\n var totalOffsetY = 0;\n var canvasX = 0;\n var canvasY = 0;\n var currentElement = this;\n \n if (event.offsetX) {\n return {x: event.offsetX, y:event.offsetY};\n } \n else {\n if (!Utils.cssScale) {\n var st = window.getComputedStyle(document.body, null);\n var tr = st.getPropertyValue(\"-webkit-transform\") ||\n st.getPropertyValue(\"-moz-transform\") ||\n st.getPropertyValue(\"-ms-transform\") ||\n st.getPropertyValue(\"-o-transform\") ||\n st.getPropertyValue(\"transform\");\n var matrixRegex = /matrix\\((-?\\d*\\.?\\d+),\\s*0,\\s*0,\\s*(-?\\d*\\.?\\d+),\\s*0,\\s*0\\)/;\n var matches = tr.match(matrixRegex);\n if (matches) {\n Utils.cssScale = parseFloat(matches[1]);\n }\n else {\n Utils.cssScale = 1;\n }\n }\n var e = event;\n var canvas = e.target;\n // http://www.jacklmoore.com/notes/mouse-position/\n var target = e.target || e.srcElement;\n var style = target.currentStyle || window.getComputedStyle(target, null);\n var borderLeftWidth = parseInt(style['borderLeftWidth'], 10);\n var borderTopWidth = parseInt(style['borderTopWidth'], 10);\n var rect = target.getBoundingClientRect();\n\n var clientX = e.clientX;\n var clientY = e.clientY;\n if (e.originalEvent.changedTouches) {\n clientX = e.originalEvent.changedTouches[0].clientX;\n clientY = e.originalEvent.changedTouches[0].clientY;\n }\n\n var offsetX = clientX - borderLeftWidth - rect.left;\n var offsetY = clientY - borderTopWidth - rect.top\n\n return {x: parseInt(offsetX/Utils.cssScale), y: parseInt(offsetY/Utils.cssScale)};\n }\n}\nHTMLCanvasElement.prototype.relMouseCoords = relMouseCoords;\n\n\n\n//Function.prototype.bind polyfill from \n//https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind\nif (!Function.prototype.bind) {\n Function.prototype.bind = function (obj) {\n // closest thing possible to the ECMAScript 5 internal IsCallable function\n if (typeof this !== 'function') {\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var slice = [].slice,\n args = slice.call(arguments, 1),\n self = this,\n nop = function () { },\n bound = function () {\n return self.apply(this instanceof nop ? this : (obj || {}),\n args.concat(slice.call(arguments)));\n };\n\n bound.prototype = this.prototype;\n\n return bound;\n };\n}\n\n\n\n\n\n\n\n\n//$ = $ || jQuery;\n\n/* source : http://stackoverflow.com/a/8764051 */\n$.urlParam = function(name, queryString){\n if (queryString===undefined) {\n queryString = location.search;\n }\n\treturn decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(queryString)||[,\"\"])[1].replace(/\\+/g, '%20'))||null;\n};\n\n/* source: http://stackoverflow.com/a/1830844 */\nUtils.isNumber = function(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\nUtils.isInt = function(n) {\n return Utils.isNumber(n) && Math.floor(n)==n;\n};\n\n/* a debounce function, used to prevent multiple calls to the same function if less than delay milliseconds have passed */\nUtils.debounce = function(fn, delay) {\n var timer = null;\n return function () {\n var context = this, args = arguments;\n clearTimeout(timer);\n timer = setTimeout(function () {\n fn.apply(context, args);\n }, delay);\n };\n};\n\n/* return a throttled function, to rate limit the number of calls (by default, one call every 250 milliseconds) */\nUtils.throttle = function(fn, threshhold, scope) {\n threshhold || (threshhold = 250);\n var last,\n deferTimer;\n return function () {\n var context = scope || this;\n\n var now = +new Date,\n args = arguments;\n if (last && now < last + threshhold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = setTimeout(function () {\n last = now;\n fn.apply(context, args);\n }, threshhold);\n } else {\n last = now;\n fn.apply(context, args);\n }\n };\n}\n\n\n/* A LRU cache, inspired by https://gist.github.com/devinus/409353#file-gistfile1-js */\n// TODO : utiliser le LRU cache pour les tuiles images\nUtils.LRUCache = function (maxsize) {\n this._keys = [];\n this._items = {};\n this._expires = {};\n this._size = 0;\n this._maxsize = maxsize || 1024;\n};\n \nUtils.LRUCache.prototype = {\n set: function (key, value) {\n var keys = this._keys,\n items = this._items,\n expires = this._expires,\n size = this._size,\n maxsize = this._maxsize;\n\n if (size >= maxsize) { // remove oldest element when no more room\n keys.sort(function (a, b) {\n if (expires[a] > expires[b]) return -1;\n if (expires[a] < expires[b]) return 1;\n return 0;\n });\n\n size--;\n }\n\n keys[size] = key;\n items[key] = value;\n expires[key] = Date.now();\n size++;\n\n this._keys = keys;\n this._items = items;\n this._expires = expires;\n this._size = size;\n },\n\n get: function (key) {\n var item = this._items[key];\n if (item) { this._expires[key] = Date.now(); }\n return item;\n },\n \n keys: function() {\n return this._keys;\n }\n};\n\n////////////////////////////////////////////////////////////////////////////:\n\n/**\n Make an AJAX call, given a list of potential mirrors\n First successful call will result in options.onSuccess being called back\n If all calls fail, onFailure is called back at the end\n\n This method assumes the URL are CORS-compatible, no proxy will be used\n */\nUtils.loadFromMirrors = function(urls, options) {\n var data = options && options.data || null;\n var method = options && options.method || 'GET';\n var dataType = options && options.dataType || null;\n var timeout = options && options.timeout || 20;\n\n var onSuccess = options && options.onSuccess || null;\n var onFailure = options && options.onFailure || null;\n\n if (urls.length === 0) {\n (typeof onFailure === 'function') && onFailure();\n }\n else {\n var ajaxOptions = {\n url: urls[0],\n data: data\n }\n if (dataType) {\n ajaxOptions.dataType = dataType;\n }\n\n $.ajax(ajaxOptions)\n .done(function(data) {\n (typeof onSuccess === 'function') && onSuccess(data);\n })\n .fail(function() {\n Utils.loadFromMirrors(urls.slice(1), options);\n });\n }\n} \n\n// return the jquery ajax object configured with the requested parameters\n// by default, we use the proxy (safer, as we don't know if the remote server supports CORS)\nUtils.getAjaxObject = function(url, method, dataType, useProxy) {\n if (useProxy!==false) {\n useProxy = true;\n }\n\n if (useProxy===true) {\n var urlToRequest = Aladin.JSONP_PROXY + '?url=' + encodeURIComponent(url);\n }\n else {\n urlToRequest = url;\n }\n method = method || 'GET';\n dataType = dataType || null;\n\n return $.ajax({\n url: urlToRequest,\n method: method,\n dataType: dataType\n });\n};\n\n// return true if script is executed in a HTTPS context\n// return false otherwise\nUtils.isHttpsContext = function() {\n return ( window.location.protocol === 'https:' );\n};\n\n// generate an absolute URL from a relative URL\n// example: getAbsoluteURL('foo/bar/toto') return http://cds.unistra.fr/AL/foo/bar/toto if executed from page http://cds.unistra.fr/AL/\nUtils.getAbsoluteURL = function(url) {\n var a = document.createElement('a');\n a.href = url;\n\n return a.href;\n};\n\n// generate a valid v4 UUID\nUtils.uuidv4 = function() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\n/**\n * @function\n * @description Deep clone a class instance.\n * @param {object} instance The class instance you want to clone.\n * @returns {object} A new cloned instance.\n */\nUtils.clone = function(instance) {\n return Object.assign(\n Object.create(\n // Set the prototype of the new object to the prototype of the instance.\n // Used to allow new object behave like class instance.\n Object.getPrototypeOf(instance),\n ),\n // Prevent shallow copies of nested structures like arrays, etc\n JSON.parse(JSON.stringify(instance)),\n );\n}\n\n","//=================================\n// Class Coo\n//=================================\n\nimport { AstroMath } from \"./astroMath.js\";\n\n/**\n * Constructor\n * @param longitude longitude (decimal degrees)\n * @param latitude latitude (decimal degrees)\n * @param prec precision\n * (8: 1/1000th sec, 7: 1/100th sec, 6: 1/10th sec, 5: sec, 4: 1/10th min, 3: min, 2: 1/10th deg, 1: deg\n */\nexport let Coo = function(longitude, latitude, prec) {\n\tthis.lon = longitude;\n\tthis.lat = latitude;\n\tthis.prec = prec;\n\tthis.frame = null;\n\n\tthis.computeDirCos();\n};\n\nCoo.factor = [ 3600.0, 60.0, 1.0 ];\nCoo.prototype = {\n\tsetFrame: function(astroframe) {\n\t\tthis.frame = astroframe;\n\t},\n\tcomputeDirCos: function() {\n\t\tvar coslat = AstroMath.cosd(this.lat);\n\n\t\tthis.x = coslat*AstroMath.cosd(this.lon);\n\t\tthis.y = coslat*AstroMath.sind(this.lon);\n\t\tthis.z = AstroMath.sind(this.lat);\t\n\t}, \n\tcomputeLonLat: function() {\n\t\tvar r2 = this.x*this.x+this.y*this.y;\n\t\tthis.lon = 0.0;\n\t\tif (r2 == 0.0) {\n\t\t\t// In case of poles\n\t\t\tif (this.z == 0.0) {\n\t\t\t\tthis.lon = 0.0/0.0;\n\t\t\t\tthis.lat = 0.0/0.0;\n\t\t\t} else {\n\t\t\t\tthis.lat = (this.z > 0.0) ? 90.0 : -90.0;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.lon = AstroMath.atan2d(this.y, this.x);\n\t\t\tthis.lat = AstroMath.atan2d(this.z, Math.sqrt(r2));\n\t\t\tif (this.lon < 0) this.lon += 360.0;\n\t\t}\n\t},\n\n /**\n * Squared distance between 2 points (= 4.sin2(r/2))\n * @param pos another position on the sphere\n * @return ||pos-this||2 = 4.sin2(r/2)\n **/\n dist2: function(pos) {\n// \tif ((this.x==0)&&(this.y==0)&&(this.z==0)) return(0./0.);\n// \tif ((pos.x==0)&&(pos.y==0)&&(pos.z==0)) return(0./0.);\n\tvar w = pos.x - this.x;\n\tvar r2 = w * w;\n\tw = pos.y - this.y; r2 += w * w;\n\tw = pos.z - this.z; r2 += w * w;\n\treturn r2;\n },\n\n /**\n * Distance between 2 points on the sphere.\n * @param pos another position on the sphere\n * @return distance in degrees in range [0, 180]\n **/\n distance: function(pos) {\n // Take care of NaN:\n \tif ((pos.x==0)&&(pos.y==0)&&(pos.z==0)) return(0./0.);\n \tif ((this.x==0)&&(this.y==0)&&(this.z==0)) return(0./0.);\n return (2. * AstroMath.asind(0.5 * Math.sqrt(this.dist2(pos))));\n },\n\n /**\n * Transform the position into another frame.\n * @param new_frame\tThe frame of the resulting position.\n **/\n convertTo: function(new_frame) {\n\t\t// Verify first if frames identical -- then nothing to do !\n\t\tif (this.frame.equals(new_frame)) {\n\t \t\treturn;\n\t\t}\n\n\t\t// Move via ICRS\n\t\tthis.frame.toICRS(this.coo);\t// Position now in ICRS\n\t\tnew_frame.fromICRS(this.coo);\t// Position now in new_frame\n\t\tthis.frame = new_frame;\n\t\tthis.lon = this.lat = 0./0.;\t// Actual angles not recomputed\n },\n\n /**\n * Rotate a coordinate (apply a rotation to the position).\n * @param R [3][3] Rotation Matrix\n */\n rotate: function(R) {\n var X, Y, Z;\n\t\tif (R == Umatrix3) return;\n\t\tX = R[0][0]*this.x + R[0][1]*this.y + R[0][2]*this.z;\n\t\tY = R[1][0]*this.x + R[1][1]*this.y + R[1][2]*this.z;\n\t\tZ = R[2][0]*this.x + R[2][1]*this.y + R[2][2]*this.z;\n \t// this.set(X, Y, Z); Not necessary to compute positions each time.\n\t\tthis.x = X; this.y = Y; this.z = Z;\n\t\tthis.lon = this.lat = 0./0.;\n },\n\n /**\n * Rotate a coordinate (apply a rotation to the position) in reverse direction.\n * The method is the inverse of rotate.\n * @param R [3][3] Rotation Matrix\n */\n rotate_1: function(R) {\n var X, Y, Z;\n if (R == Umatrix3) return;\n\t\tX = R[0][0]*this.x + R[1][0]*this.y + R[2][0]*this.z;\n\t\tY = R[0][1]*this.x + R[1][1]*this.y + R[2][1]*this.z;\n\t\tZ = R[0][2]*this.x + R[1][2]*this.y + R[2][2]*this.z;\n \t// this.set(X, Y, Z); Not necessary to compute positions each time.\n\t\tthis.x = X; this.y = Y; this.z = Z;\n\t\tthis.lon = this.lat = 0./0.;\n },\n\n\n /**\n * Test equality of Coo.\n * @param coo Second coordinate to compare with\n * @return True if the two coordinates are equal\n */\n equals: function(coo) {\n\t\treturn this.x == coo.x && this.y == coo.y && this.z == coo.z;\n },\n\n\t/**\n\t * parse a coordinate string. The coordinates can be in decimal or sexagesimal\n\t * @param str string to parse\n\t * @return true if the parsing succeded, false otherwise\n\t */\n\tparse: function(str) {\n\t\tvar p = str.indexOf('+');\n\t\tif (p < 0) p = str.indexOf('-');\n\t\tif (p < 0) p = str.indexOf(' ');\n\t\tif (p < 0) {\n\t\t\tthis.lon = 0.0/0.0;\n\t\t\tthis.lat = 0.0/0.0;\n\t\t\tthis.prec = 0;\n\t\t\treturn false;\n\t\t}\n\t\tvar strlon = str.substring(0,p);\n\t\tvar strlat = str.substring(p);\n\t\n\t\tthis.lon = this.parseLon(strlon);\t// sets the precision parameter\n\t\tthis.lat = this.parseLat(strlat);\t// sets the precision parameter\n\t\treturn true;\n\t},\n\n\tparseLon: function(str) {\n\t\tvar str = str.trim();\n str = str.replace(/:/g, ' ');\n\n\t\tif (str.indexOf(' ') < 0) {\n\t\t\t// The longitude is a integer or decimal number\n\t\t\tvar p = str.indexOf('.');\n\t\t\tthis.prec = p < 0 ? 0 : str.length - p - 1;\n\t\t\treturn parseFloat(str);\n\t\t} else {\n\t\t\tvar stok = new Tokenizer(str,' ');\n\t\t\tvar i = 0;\n\t\t\tvar l = 0;\n\t\t\tvar pr = 0;\n\t\t\twhile (stok.hasMore()) {\n\t\t\t\tvar tok = stok.nextToken();\n\t\t\t\tvar dec = tok.indexOf('.');\n\t\t\t\tl += parseFloat(tok)*Coo.factor[i];\n//\t\t\t\tpr = dec < 0 ? 1 : 2;\n\t\t\t\tswitch (i) {\n\t\t\t\t\tcase 0: pr = dec < 0 ? 1 : 2; break;\n\t\t\t\t\tcase 1: pr = dec < 0 ? 3 : 4; break;\n\t\t\t\t\tcase 2: pr = dec < 0 ? 5 : 4+tok.length-dec;\n\t\t\t\t\tdefault: break;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tthis.prec = pr;\n\t\t\treturn l*15/3600.0;\t\n\t\t}\n\t},\n\t\t\t\n\tparseLat: function(str) {\n\t\tvar str = str.trim();\n str = str.replace(/:/g, ' ');\n\n\t\tvar sign;\n\t\tif (str.charAt(0) == '-') {\n\t\t\tsign = -1;\n\t\t\tstr = str.substring(1);\n\t\t} else if (str.charAt(0) == '-') {\n\t\t\tsign = 1;\n\t\t\tstr = str.substring(1);\n\t\t} else {\n\t\t\t// No sign specified\n\t\t\tsign = 1;\n\t\t}\n\t\tif (str.indexOf(' ') < 0) {\n\t\t\t// The longitude is a integer or decimal number\n\t\t\tvar p = str.indexOf('.');\n\t\t\tthis.prec = p < 0 ? 0 : str.length - p - 1;\n\t\t\treturn parseFloat(str)*sign;\n\t\t} else {\n\t\t\tvar stok = new Tokenizer(str,' ');\n\t\t\tvar i = 0;\n\t\t\tvar l = 0;\n\t\t\tvar pr = 0;\n\t\t\twhile (stok.hasMore()) {\n\t\t\t\tvar tok = stok.nextToken();\n\t\t\t\tvar dec = tok.indexOf('.');\n\t\t\t\tl += parseFloat(tok)*Coo.factor[i];\n\t\t\t\tswitch (i) {\n\t\t\t\t\tcase 0: pr = dec < 0 ? 1 : 2; break;\n\t\t\t\t\tcase 1: pr = dec < 0 ? 3 : 4; break;\n\t\t\t\t\tcase 2: pr = dec < 0 ? 5 : 4+tok.length-dec;\n\t\t\t\t\tdefault: break;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tthis.prec = pr;\n\t\t\treturn l*sign/3600.0;\t\n\t\t}\n\t},\n\n\t/**\n\t * Format coordinates according to the options\n\t * @param options 'd': decimal, 's': sexagésimal, '/': space separated, '2': return [ra,dec] in an array\n\t * @return the formatted coordinates\n\t */\n\tformat: function(options) {\n\t\tif (isNaN(this.lon)) this.computeLonLat();\n\t\tvar strlon = \"\", strlat = \"\";\n\t\tif (options.indexOf('d') >= 0) {\n\t\t\t// decimal display\n\t\t\tstrlon = Numbers.format(this.lon, this.prec);\n\t\t\tstrlat = Numbers.format(this.lat, this.prec);\n\t\t} else {\n\t\t\t// sexagesimal display\n\t\t\tvar hlon = this.lon/15.0;\n\t\t\tvar strlon = Numbers.toSexagesimal(hlon, this.prec+1, false);\n\t\t\tvar strlat = Numbers.toSexagesimal(this.lat, this.prec, false);\n\t\t}\n\t\tif (this.lat > 0) strlat = '+'+strlat;\n\n\t\tif (options.indexOf('/') >= 0) {\n\t\t\treturn strlon+' '+strlat;\n\t\t} else if (options.indexOf('2') >= 0) {\n\t\t\treturn [strlon, strlat];\n\t\t}\n\t\treturn strlon+strlat;\n\t}\n\t\t\n}\n\n/**\n * Distance between 2 points on the sphere.\n * @param coo1 firs\tvar coslat = AstroMath.cosd(this.lat);\n\n\tthis.x = coslat*AstroMath.cosd(this.lon);\n\tthis.y = coslat*AstroMath.sind(this.lon);\n\tthis.z = AstroMath.sind(this.lat);\nt coordinates point\n * @param coo2 second coordinates point\n * @return distance in degrees in range [0, 180]\n**/\n/*\nCoo.distance = function(Coo coo1, Coo coo2) {\n\treturn Coo.distance(coo1.lon, coo1.lat, coo2.lon, coo2.lat);\n}\n*/\n/**\n * Distance between 2 points on the sphere.\n * @param lon1 longitude of first point in degrees\n * @param lat1 latitude of first point in degrees\n * @param lon2 longitude of second point in degrees\n * @param lat2 latitude of second point in degrees\n * @return distance in degrees in range [0, 180]\n**/\n/*\nCoo.distance = function(lon1, lat1, lon2, lat2) {\n\tvar c1 = AstroMath.cosd(lat1);\n\tvar c2 = AstroMath.cosd(lat2);\n\n\tvar w, r2;\n\tw = c1 * AstroMath.cosd(lon1) - c2 * AstroMath.cosd(lon2);\n\tr2 = w*w;\n\tw = c1 * AstroMath.sind(lon1) - c2 * AstroMath.sind(lon2);\n\tr2 += w*w;\n\tw = AstroMath.sind(lat1) - AstroMath.sind(lat2);\n\tr2 += w*w;\n\n\treturn 2. * AstroMath.asind(0.5 * Math.sqrt(r2));\n}\n\n\n//===================================\n// Class Tokenizer (similar to Java)\n//===================================\n\n/**\n * Constructor\n * @param str String to tokenize\n * @param sep token separator char\n */\nfunction Tokenizer(str, sep) {\n\tthis.string = Strings.trim(str, sep);\n\tthis.sep = sep;\n\tthis.pos = 0;\n}\n\nTokenizer.prototype = {\n\t/**\n\t * Check if the string has more tokens\n\t * @return true if a token remains (read with nextToken())\n\t */\n\thasMore: function() {\n\t\treturn this.pos < this.string.length;\n\t},\n\n\t/**\n\t * Returns the next token (as long as hasMore() is true)\n\t * @return the token string\n\t */\n\tnextToken: function() {\n\t\t// skip all the separator chars\n\t\tvar p0 = this.pos;\n\t\twhile (p0 < this.string.length && this.string.charAt(p0) == this.sep) p0++;\n\t\tvar p1 = p0;\n\t\t// get the token\n\t\twhile (p1 < this.string.length && this.string.charAt(p1) != this.sep) p1++;\n\t\tthis.pos = p1;\n\t\treturn this.string.substring(p0, p1);\n\t},\n}\n\n//================================\n// Class Strings (static methods)\n//================================\nfunction Strings() {}\n\n/**\n * Removes a given char at the beginning and the end of a string\n * @param str string to trim\n * @param c char to remove\n * @return the trimmed string\n */\n\nStrings.trim = function(str, c) {\n\tvar p0=0, p1=str.length-1;\n\twhile (p0 < str.length && str.charAt(p0) == c) p0++;\n\tif (p0 == str.length) return \"\";\n\twhile (p1 > p0 && str.charAt(p1) == c) p1--;\n\treturn str.substring(p0, p1+1);\n}\n\n//================================\n// Class Numbers (static methods)\n//================================\nfunction Numbers() {}\n// 0 1 2 3 4 5 6 7 8 9\nNumbers.pow10 = [ 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000,\n// 10 11 12 13 14\n\t10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000 ];\n// 0 1 2 3 4 5 6 7\nNumbers.rndval = [ 0.5, 0.05, 0.005, 0.0005, 0.00005, 0.000005, 0.0000005, 0.00000005,\n// 8 9 10 11 12\n\t0.000000005, 0.0000000005, 0.00000000005, 0.000000000005, 0.0000000000005,\n// 13 14\n\t0.00000000000005, 0.00000000000005 ];\n/**\n * Format a integer or decimal number, adjusting the value with 'prec' decimal digits\n * @param num number (integer or decimal)\n * @param prec precision (= number of decimal digit to keep or append)\n * @return a string with the formatted number\n */\nNumbers.format = function(num, prec) {\n\t\tif (prec <= 0) {\n\t\t\t// Return an integer number\n\t\t\treturn (Math.round(num)).toString();\n\t\t}\n\t\tvar str = num.toString();\n\t\tvar p = str.indexOf('.');\n\t\tvar nbdec = p >= 0 ? str.length-p-1 : 0;\n\t\tif (prec >= nbdec) {\n\t\t\tif (p < 0) str += '.';\n\t\t\tfor (var i=0; i 0 and prec < nbdec\n\t\tstr = (num+Numbers.rndval[prec]).toString();\n\t\treturn str.substr(0, p+prec+1);\n}\n\n\n/**\n * Convert a decimal coordinate into sexagesimal string, according to the given precision
\n * 8: 1/1000th sec, 7: 1/100th sec, 6: 1/10th sec, 5: sec, 4: 1/10th min, 3: min, 2: 1/10th deg, 1: deg\n * @param num number (integer or decimal)\n * @param prec precision (= number of decimal digit to keep or append)\n * @param plus if true, the '+' sign is displayed\n * @return a string with the formatted sexagesimal number\n */\nNumbers.toSexagesimal = function(num, prec, plus) {\n\tvar resu = \"\";\n\tvar sign = num < 0 ? '-' : (plus ? '+' : '');\n\tvar n = Math.abs(num);\n\n\tswitch (prec) {\n\t\tcase 1:\t// deg\n\t\t\tvar n1 = Math.round(n);\n\t\t\treturn sign+n1.toString();\n\t\tcase 2:\t// deg.d\n\t\t\treturn sign+Numbers.format(n, 1);\n\t\tcase 3:\t// deg min\n\t\t\tvar n1 = Math.floor(n);\n\t\t\tvar n2 = Math.round((n-n1)*60);\n\t\t\treturn sign+n1+' '+n2;\n\t\tcase 4:\t// deg min.d\n\t\t\tvar n1 = Math.floor(n);\n\t\t\tvar n2 = (n-n1)*60;\n\t\t\treturn sign+n1+' '+Numbers.format(n2, 1);\n\t\tcase 5:\t// deg min sec\n\t\t\tvar n1 = Math.floor(n);\t// d\n\t\t\tvar n2 = (n-n1)*60;\t\t// M.d\n\t\t\tvar n3 = Math.floor(n2);// M\n\t\t\tvar n4 = Math.round((n2-n3)*60);\t// S\n\t\t\treturn sign+n1+' '+n3+' '+n4;\n\t\tcase 6:\t// deg min sec.d\n\t\tcase 7:\t// deg min sec.dd\n\t\tcase 8:\t// deg min sec.ddd\n\t\t\tvar n1 = Math.floor(n);\t// d\n\t\t\tif (n1<10) n1 = '0' + n1;\n\t\t\tvar n2 = (n-n1)*60;\t\t// M.d\n\t\t\tvar n3 = Math.floor(n2);// M\n\t\t\tif (n3<10) n3 = '0' + n3;\n\t\t\tvar n4 = (n2-n3)*60;\t\t// S.ddd\n\t\t\treturn sign+n1+' '+n3+' '+Numbers.format(n4, prec-5);\n\t\tdefault:\n\t\t\treturn sign+Numbers.format(n, 1);\n\t}\n}\n","// Copyright 2018 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File SimbadPointer.js\n *\n * The SIMBAD pointer will query Simbad for a given position and radius and\n * return information on the object with \n * \n * Author: Thomas Boch [CDS]\n * \n *****************************************************************************/\nimport { Coo } from \"./libs/astro/coo.js\";\nimport { Utils } from \"./Utils.js\";\n\nexport let SimbadPointer = (function() {\n const SimbadPointer = {};\n\n SimbadPointer.MIRRORS = ['https://alasky.u-strasbg.fr/cgi/simbad-flat/simbad-quick.py', 'https://alaskybis.u-strasbg.fr/cgi/simbad-flat/simbad-quick.py']; // list of base URL for Simbad pointer service\n\n \n SimbadPointer.query = function(ra, dec, radiusDegrees, aladinInstance) {\n var coo = new Coo(ra, dec, 7);\n var params = {Ident: coo.format('s/'), SR: radiusDegrees}\n var successCallback = function(result) {\n aladinInstance.view.setCursor('pointer');\n\n var regexp = /(.*?)\\/(.*?)\\((.*?),(.*?)\\)/g;\n var match = regexp.exec(result);\n if (match) {\n var objCoo = new Coo();\n objCoo.parse(match[1]);\n var objName = match[2];\n var title = '';\n var content = '
';\n content += 'Type: ' + match[4] + '
';\n var magnitude = match[3];\n if (Utils.isNumber(magnitude)) {\n content += 'Mag: ' + magnitude + '
';\n }\n content += '
Query in CDS portal';\n content += '
';\n aladinInstance.showPopup(objCoo.lon, objCoo.lat, title, content);\n }\n else {\n aladinInstance.hidePopup();\n }\n };\n var failureCallback = function() {\n aladinInstance.view.setCursor('pointer');\n aladinInstance.hidePopup();\n };\n Utils.loadFromMirrors(SimbadPointer.MIRRORS, {data: params, onSuccess: successCallback, onFailure: failureCallback, timeout: 5});\n\n };\n\n return SimbadPointer;\n})();\n \n","// stats.js r6 - http://github.com/mrdoob/stats.js\nexport let Stats=function(){function s(a,g,d){var f,c,e;for(c=0;c<30;c++)for(f=0;f<73;f++)e=(f+c*74)*4,a[e]=a[e+4],a[e+1]=a[e+5],a[e+2]=a[e+6];for(c=0;c<30;c++)e=(73+c*74)*4,c'+n+\" MS (\"+z+\"-\"+A+\")\";o.putImageData(B,0,0);F=j;if(j>\nv+1E3){l=Math.round(u*1E3/(j-v));w=Math.min(w,l);x=Math.max(x,l);s(y.data,Math.min(30,30-l/100*30),\"fps\");d.innerHTML=''+l+\" FPS (\"+w+\"-\"+x+\")\";m.putImageData(y,0,0);if(t==3)p=performance.memory.usedJSHeapSize*9.54E-7,C=Math.min(C,p),D=Math.max(D,p),s(E.data,Math.min(30,30-p/2),\"mb\"),i.innerHTML=''+Math.round(p)+\" MB (\"+Math.round(C)+\"-\"+Math.round(D)+\")\",q.putImageData(E,0,0);v=j;u=0}}}};\n\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File ColorMap.js\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nimport { AladinUtils } from \"./AladinUtils.js\";\n\nexport let ColorMap = (function() {\n \n \n // constructor\n let ColorMap = function(view) {\n this.view = view;\n this.reversed = false;\n this.mapName = 'native';\n this.sig = this.signature();\n };\n \nColorMap.MAPS = {};\n \n ColorMap.MAPS['eosb'] = {\n name: 'Eos B',\n r: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,27,36,45,49,57,72,81,91,100,109,118,127,\n 136,131,139,163,173,182,191,200,209,218,227,213,221,255,255,255,255,255,\n 255,255,255,229,229,255,255,255,255,255,255,255,255,229,229,255,255,255,\n 255,255,255,255,255,229,229,255,255,255,255,255,255,255,255,229,229,255,\n 255,255,255,255,255,255,255,229,229,255,255,255,255,255,255,255,255,229,\n 229,255,255,255,255,255,255,255,255,229,229,255,255,255,255,255,255,255,\n 255,229,229,255,255,255,255,255,255,255,255,229,229,255,253,251,249,247,\n 245,243,241,215,214,235,234,232,230,228,226,224,222,198,196,216,215,213,\n 211,209,207,205,203,181,179,197,196,194,192,190,188,186,184,164,162,178,\n 176,175,173,171,169,167,165,147,145,159,157,156,154,152,150,148,146,130,\n 128,140,138,137,135,133,131,129,127,113,111,121,119,117,117],\n g: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,23,31,39,47,55,57,64,79,87,95,\n 103,111,119,127,135,129,136,159,167,175,183,191,199,207,215,200,207,239,\n 247,255,255,255,255,255,255,229,229,255,255,255,255,255,255,255,255,229,\n 229,255,255,255,255,255,255,255,255,229,229,255,250,246,242,238,233,229,\n 225,198,195,212,208,204,199,195,191,187,182,160,156,169,165,161,157,153,\n 148,144,140,122,118,127,125,123,121,119,116,114,112,99,97,106,104,102,\n 99,97,95,93,91,80,78,84,82,80,78,76,74,72,70,61,59,63,61,59,57,55,53,50,\n 48,42,40,42,40,38,36,33,31,29,27,22,21,21,19,16,14,12,13,8,6,3,1,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\n b: [116,121,127,131,136,140,144,148,153,\n 157,145,149,170,174,178,182,187,191,195,199,183,187,212,216,221,225,229,\n 233,238,242,221,225,255,247,239,231,223,215,207,199,172,164,175,167,159,\n 151,143,135,127,119,100,93,95,87,79,71,63,55,47,39,28,21,15,7,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0]\n };\n ColorMap.MAPS['rainbow'] = {\n name: 'Rainbow',\n r: [0,4,9,13,18,22,27,31,36,40,45,50,54,\n 58,61,64,68,69,72,74,77,79,80,82,83,85,84,86,87,88,86,87,87,87,85,84,84,\n 84,83,79,78,77,76,71,70,68,66,60,58,55,53,46,43,40,36,33,25,21,16,12,4,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,12,21,25,29,33,42,\n 46,51,55,63,67,72,76,80,89,93,97,101,110,114,119,123,131,135,140,144,153,\n 157,161,165,169,178,182,187,191,199,203,208,212,221,225,229,233,242,246,\n 250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255],\n g: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,4,8,16,21,25,29,38,42,46,51,55,63,67,72,76,84,89,93,97,\n 106,110,114,119,127,131,135,140,144,152,157,161,165,174,178,182,187,195,\n 199,203,208,216,220,225,229,233,242,246,250,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,250,242,238,233,229,221,216,212,208,199,195,191,187,178,174,170,165,\n 161,153,148,144,140,131,127,123,119,110,106,102,97,89,85,80,76,72,63,59,\n 55,51,42,38,34,29,21,17,12,8,0],\n b: [0,3,7,10,14,19,23,28,32,38,43,48,53,\n 59,63,68,72,77,81,86,91,95,100,104,109,113,118,122,127,132,136,141,145,\n 150,154,159,163,168,173,177,182,186,191,195,200,204,209,214,218,223,227,\n 232,236,241,245,250,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n 255,255,255,255,255,255,246,242,238,233,225,220,216,212,203,199,195,191,\n 187,178,174,170,165,157,152,148,144,135,131,127,123,114,110,106,102,97,\n 89,84,80,76,67,63,59,55,46,42,38,34,25,21,16,12,8,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]\n };\n ColorMap.MAPS['cubehelix'] = {\n name: 'Cubehelix',\n r: [0,1,3,4,6,8,9,10,12,13,14,15,17,18,\n 19,20,20,21,22,23,23,24,24,25,25,25,26,26,26,26,26,26,26,26,26,26,26,25,\n 25,25,25,24,24,24,23,23,23,23,22,22,22,21,21,21,21,21,21,20,20,20,21,21,\n 21,21,21,22,22,22,23,23,24,25,26,27,27,28,30,31,32,33,35,36,38,39,41,43,\n 45,47,49,51,53,55,57,60,62,65,67,70,72,75,78,81,83,86,89,92,95,98,101,104,\n 107,110,113,116,120,123,126,129,132,135,138,141,144,147,150,153,155,158,\n 161,164,166,169,171,174,176,178,181,183,185,187,189,191,193,194,196,198,\n 199,201,202,203,204,205,206,207,208,209,209,210,211,211,211,212,212,212,\n 212,212,212,212,212,211,211,211,210,210,210,209,208,208,207,207,206,205,\n 205,204,203,203,202,201,201,200,199,199,198,197,197,196,196,195,195,194,\n 194,194,193,193,193,193,193,193,193,193,193,193,194,194,195,195,196,196,\n 197,198,199,200,200,202,203,204,205,206,208,209,210,212,213,215,217,218,\n 220,222,223,225,227,229,231,232,234,236,238,240,242,244,245,247,249,251,\n 253,255],\n g: [0,0,1,1,2,2,3,4,4,5,6,6,7,8,9,10,\n 11,11,12,13,14,15,17,18,19,20,21,22,24,25,26,28,29,31,32,34,35,37,38,40,\n 41,43,45,46,48,50,52,53,55,57,58,60,62,64,66,67,69,71,73,74,76,78,79,81,\n 83,84,86,88,89,91,92,94,95,97,98,99,101,102,103,104,106,107,108,109,110,\n 111,112,113,114,114,115,116,116,117,118,118,119,119,120,120,120,121,121,\n 121,121,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,121,\n 121,121,121,121,121,121,121,121,120,120,120,120,120,120,120,120,120,120,\n 121,121,121,121,121,122,122,122,123,123,124,124,125,125,126,127,127,128,\n 129,130,131,131,132,133,135,136,137,138,139,140,142,143,144,146,147,149,\n 150,152,154,155,157,158,160,162,164,165,167,169,171,172,174,176,178,180,\n 182,183,185,187,189,191,193,194,196,198,200,202,203,205,207,208,210,212,\n 213,215,216,218,219,221,222,224,225,226,228,229,230,231,232,233,235,236,\n 237,238,239,240,240,241,242,243,244,244,245,246,247,247,248,248,249,250,\n 250,251,251,252,252,253,253,254,255],\n b: [0,1,3,4,6,8,9,11,13,15,17,19,21,23,\n 25,27,29,31,33,35,37,39,41,43,45,47,48,50,52,54,56,57,59,60,62,63,65,66,\n 67,69,70,71,72,73,74,74,75,76,76,77,77,77,78,78,78,78,78,78,78,77,77,77,\n 76,76,75,75,74,73,73,72,71,70,69,68,67,66,66,65,64,63,61,60,59,58,58,57,\n 56,55,54,53,52,51,51,50,49,49,48,48,47,47,47,46,46,46,46,46,47,47,47,48,\n 48,49,50,50,51,52,53,55,56,57,59,60,62,64,65,67,69,71,74,76,78,81,83,86,\n 88,91,94,96,99,102,105,108,111,114,117,120,124,127,130,133,136,140,143,\n 146,149,153,156,159,162,165,169,172,175,178,181,184,186,189,192,195,197,\n 200,203,205,207,210,212,214,216,218,220,222,224,226,227,229,230,231,233,\n 234,235,236,237,238,239,239,240,241,241,242,242,242,243,243,243,243,243,\n 243,243,243,243,243,242,242,242,242,241,241,241,241,240,240,240,239,239,\n 239,239,239,238,238,238,238,238,238,238,238,239,239,239,240,240,240,241,\n 242,242,243,244,245,246,247,248,249,250,252,253,255]\n };\n\n\n \n ColorMap.MAPS_CUSTOM = ['cubehelix', 'eosb', 'rainbow'];\n ColorMap.MAPS_NAMES = ['native', 'grayscale'].concat(ColorMap.MAPS_CUSTOM);\n \n ColorMap.prototype.reverse = function(val) {\n if (val) {\n this.reversed = val;\n }\n else {\n this.reversed = ! this.reversed;\n }\n this.sig = this.signature();\n this.view.requestRedraw();\n };\n \n \n ColorMap.prototype.signature = function() {\n var s = this.mapName;\n \n if (this.reversed) {\n s += ' reversed';\n }\n \n return s;\n };\n \n ColorMap.prototype.update = function(mapName) {\n this.mapName = mapName;\n this.sig = this.signature();\n this.view.requestRedraw();\n };\n \n ColorMap.prototype.apply = function(img) {\n if ( this.sig=='native' ) {\n return img;\n }\n \n if (img.cmSig==this.sig) {\n return img.cmImg; // return cached pixels\n }\n \n var canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n \n var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n var pixelData = imageData.data;\n var length = pixelData.length;\n var a, b, c;\n var switchCase = 3;\n if (this.mapName=='grayscale') {\n switchCase = 1;\n }\n else if (ColorMap.MAPS_CUSTOM.indexOf(this.mapName)>=0) {\n switchCase = 2;\n }\n for (var i = 0; i < length; i+= 4) {\n switch(switchCase) {\n case 1:\n a = b = c = AladinUtils.myRound((pixelData[i]+pixelData[i+1]+pixelData[i+2])/3);\n break;\n case 2:\n if (this.reversed) {\n a = ColorMap.MAPS[this.mapName].r[255-pixelData[i]];\n b = ColorMap.MAPS[this.mapName].g[255-pixelData[i+1]];\n c = ColorMap.MAPS[this.mapName].b[255-pixelData[i+2]];\n }\n else {\n a = ColorMap.MAPS[this.mapName].r[pixelData[i]];\n b = ColorMap.MAPS[this.mapName].g[pixelData[i+1]];\n c = ColorMap.MAPS[this.mapName].b[pixelData[i+2]];\n }\n break;\n default:\n a = pixelData[i];\n b = pixelData[i + 1];\n c = pixelData[i + 2];\n \n }\n if (switchCase!=2 && this.reversed) {\n a = 255-a;\n b = 255-b;\n c = 255-c;\n \n }\n pixelData[i] = a;\n pixelData[i + 1] = b;\n pixelData[i + 2] = c;\n \n }\n //imageData.data = pixelData; // not needed, and create an error in strict mode !\n ctx.putImageData(imageData, 0, 0);\n \n // cache image with color map applied\n img.cmSig = this.sig;\n img.cmImg = canvas;\n\n return img.cmImg;\n };\n \n return ColorMap;\n})();\n \n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File Footprint\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nimport { Utils } from \"./Utils.js\";\n\nexport let Footprint = (function() {\n // constructor\n let Footprint = function(polygons) {\n this.polygons = polygons;\n \tthis.overlay = null;\n\n // TODO : all graphic overlays should have an id\n this.id = 'footprint-' + Utils.uuidv4();\n \t\n \tthis.isShowing = true;\n \tthis.isSelected = false;\n };\n \n Footprint.prototype.setOverlay = function(overlay) {\n this.overlay = overlay;\n };\n \n Footprint.prototype.show = function() {\n if (this.isShowing) {\n return;\n }\n this.isShowing = true;\n if (this.overlay) {\n this.overlay.reportChange();\n }\n };\n \n Footprint.prototype.hide = function() {\n if (! this.isShowing) {\n return;\n }\n this.isShowing = false;\n if (this.overlay) {\n this.overlay.reportChange();\n }\n };\n\n Footprint.prototype.dispatchClickEvent = function() {\n if (this.overlay) {\n // footprint selection code adapted from Fabrizio Giordano dev. from Serco for ESA/ESDC\n //window.dispatchEvent(new CustomEvent(\"footprintClicked\", {\n this.overlay.view.aladinDiv.dispatchEvent(new CustomEvent(\"footprintClicked\", {\n detail: {\n footprintId: this.id,\n overlayName: this.overlay.name\n }\n }));\n }\n };\n \n Footprint.prototype.select = function() {\n if (this.isSelected) {\n return;\n }\n this.isSelected = true;\n if (this.overlay) {\n/*\n // footprint selection code adapted from Fabrizio Giordano dev. from Serco for ESA/ESDC\n //window.dispatchEvent(new CustomEvent(\"footprintClicked\", {\n this.overlay.view.aladinDiv.dispatchEvent(new CustomEvent(\"footprintClicked\", {\n detail: {\n footprintId: this.id,\n overlayName: this.overlay.name\n }\n }));\n*/\n\n this.overlay.reportChange();\n }\n };\n\n Footprint.prototype.deselect = function() {\n if (! this.isSelected) {\n return;\n }\n this.isSelected = false;\n if (this.overlay) {\n this.overlay.reportChange();\n }\n };\n \n return Footprint;\n})();\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File Circle\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nimport { Utils } from \"./Utils.js\";\nimport { AladinUtils } from \"./AladinUtils.js\";\nimport { CooFrameEnum } from \"./CooFrameEnum.js\";\nimport { Aladin } from \"./Aladin.js\";\n\n// TODO : Circle and Footprint should inherit from the same root object\nexport let Circle = (function() {\n // constructor\n let Circle = function(centerRaDec, radiusDegrees, options) {\n options = options || {};\n\n this.color = options['color'] || undefined;\n\n // TODO : all graphic overlays should have an id\n this.id = 'circle-' + Utils.uuidv4();\n\n this.setCenter(centerRaDec);\n this.setRadius(radiusDegrees);\n \tthis.overlay = null;\n \t\n \tthis.isShowing = true;\n \tthis.isSelected = false;\n };\n\n Circle.prototype.setOverlay = function(overlay) {\n this.overlay = overlay;\n };\n \n Circle.prototype.show = function() {\n if (this.isShowing) {\n return;\n }\n this.isShowing = true;\n if (this.overlay) {\n this.overlay.reportChange();\n }\n };\n \n Circle.prototype.hide = function() {\n if (! this.isShowing) {\n return;\n }\n this.isShowing = false;\n if (this.overlay) {\n this.overlay.reportChange();\n }\n };\n \n Circle.prototype.dispatchClickEvent = function() {\n if (this.overlay) {\n // footprint selection code adapted from Fabrizio Giordano dev. from Serco for ESA/ESDC\n //window.dispatchEvent(new CustomEvent(\"footprintClicked\", {\n this.overlay.view.aladinDiv.dispatchEvent(new CustomEvent(\"footprintClicked\", {\n detail: {\n footprintId: this.id,\n overlayName: this.overlay.name\n }\n }));\n }\n };\n \n Circle.prototype.select = function() {\n if (this.isSelected) {\n return;\n }\n this.isSelected = true;\n if (this.overlay) {\n/*\n this.overlay.view.aladinDiv.dispatchEvent(new CustomEvent(\"footprintClicked\", {\n detail: {\n footprintId: this.id,\n overlayName: this.overlay.name\n }\n }));\n*/\n\n this.overlay.reportChange();\n }\n };\n\n Circle.prototype.deselect = function() {\n if (! this.isSelected) {\n return;\n }\n this.isSelected = false;\n if (this.overlay) {\n this.overlay.reportChange();\n }\n };\n\n\n \n Circle.prototype.setCenter = function(centerRaDec) {\n this.centerRaDec = centerRaDec;\n if (this.overlay) {\n this.overlay.reportChange();\n }\n };\n\n Circle.prototype.setRadius = function(radiusDegrees) {\n this.radiusDegrees = radiusDegrees;\n if (this.overlay) {\n this.overlay.reportChange();\n }\n };\n\n // TODO\n Circle.prototype.draw = function(ctx, view, projection, frame, width, height, largestDim, zoomFactor, noStroke) {\n if (! this.isShowing) {\n return;\n }\n noStroke = noStroke===true || false;\n\n /*var centerXy;\n if (frame.system != CooFrameEnum.SYSTEMS.J2000) {\n var lonlat = CooConversion.J2000ToGalactic([this.centerRaDec[0], this.centerRaDec[1]]);\n centerXy = projection.project(lonlat[0], lonlat[1]);\n }\n else {\n centerXy = projection.project(this.centerRaDec[0], this.centerRaDec[1]);\n }\n if (!centerXy) {\n return;\n }\n var centerXyview = AladinUtils.xyToView(centerXy.X, centerXy.Y, width, height, largestDim, zoomFactor, false);*/\n var centerXyview = AladinUtils.radecToViewXy(this.centerRaDec[0], this.centerRaDec[1], view);\n if (!centerXyview) {\n // the center goes out of the projection\n // we do not draw it\n return;\n }\n // compute value of radius in pixels in current projection\n var ra = this.centerRaDec[0];\n var dec = this.centerRaDec[1] + (ra>0 ? - this.radiusDegrees : this.radiusDegrees);\n /*\n var circlePtXy;\n if (frame.system != CooFrameEnum.SYSTEMS.J2000) {\n var lonlat = CooConversion.J2000ToGalactic([ra, dec]);\n circlePtXy = projection.project(lonlat[0], lonlat[1]);\n }\n else {\n circlePtXy = projection.project(ra, dec);\n }\n if (!circlePtXy) {\n return;\n }\n var circlePtXyView = AladinUtils.xyToView(circlePtXy.X, circlePtXy.Y, width, height, largestDim, zoomFactor, false);\n */\n let circlePtXyView = AladinUtils.radecToViewXy(ra, dec, view);\n if (!circlePtXyView) {\n // the circle border goes out of the projection\n // we do not draw it\n return;\n }\n var dx = circlePtXyView[0] - centerXyview[0];\n var dy = circlePtXyView[1] - centerXyview[1];\n var radiusInPix = Math.sqrt(dx*dx + dy*dy);\n\n // TODO : check each 4 point until show\n var baseColor = this.color;\n if (! baseColor && this.overlay) {\n baseColor = this.overlay.color;\n }\n if (! baseColor) {\n baseColor = '#ff0000';\n }\n \n if (this.isSelected) {\n ctx.strokeStyle= Overlay.increaseBrightness(baseColor, 50);\n }\n else {\n ctx.strokeStyle= baseColor;\n }\n\n ctx.beginPath();\n ctx.arc(centerXyview[0], centerXyview[1], radiusInPix, 0, 2*Math.PI, false);\n if (!noStroke) {\n ctx.stroke();\n }\n }; \n \n return Circle;\n})();\n","// requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n/*export let requestAnimFrame = (function() {\n\treturn window.requestAnimationFrame || \n\t\t\twindow.webkitRequestAnimationFrame || \n\t\t\twindow.mozRequestAnimationFrame || \n\t\t\twindow.oRequestAnimationFrame || \n\t\t\twindow.msRequestAnimationFrame || \n\t\t\tfunction( callback, element){\n\t\t\t\twindow.setTimeout(callback, 1000 / 60);\n\t\t\t};\n})();\n*/\n\nexport let requestAnimFrame = (function() {\n\treturn window.requestAnimationFrame || \n\t\t\twindow.webkitRequestAnimationFrame || \n\t\t\twindow.mozRequestAnimationFrame || \n\t\t\twindow.oRequestAnimationFrame || \n\t\t\twindow.msRequestAnimationFrame;\n})();\n","/* Import all the shaders here*/ \n// Catalog shaders\nimport CatalogAitoffVS from '../glsl/webgl2/catalogs/aitoff.vert';\nimport CatalogMercatVS from '../glsl/webgl2/catalogs/mercator.vert';\nimport CatalogArcVS from '../glsl/webgl2/catalogs/arc.vert';\nimport CatalogTanVS from '../glsl/webgl2/catalogs/tan.vert';\nimport CatalogMollVS from '../glsl/webgl2/catalogs/mollweide.vert';\nimport CatalogHEALPixVS from '../glsl/webgl2/catalogs/healpix.vert';\nimport CatalogOrthoVS from '../glsl/webgl2/catalogs/ortho.vert';\nimport CatalogOrthoFS from '../glsl/webgl2/catalogs/ortho.frag';\nimport CatalogFS from '../glsl/webgl2/catalogs/catalog.frag';\n\n// Colormap shaders\nimport ColormapCatalogVS from '../glsl/webgl2/colormaps/colormap.vert'\nimport ColormapCatalogFS from '../glsl/webgl2/colormaps/colormap.frag'\n\n// Grid shader\nimport GridVS from '../glsl/webgl2/grid/grid.vert'\nimport GridAitoffFS from '../glsl/webgl2/grid/aitoff.frag'\nimport GridMollFS from '../glsl/webgl2/grid/mollweide.frag'\nimport GridOrthoFS from '../glsl/webgl2/grid/ortho.frag'\nimport GridMercatorFS from '../glsl/webgl2/grid/mercator.frag'\nimport GridArcFS from '../glsl/webgl2/grid/arc.frag'\nimport GridTanFS from '../glsl/webgl2/grid/tan.frag'\nimport GridVS_CPU from '../glsl/webgl2/grid/grid_cpu.vert'\nimport GridFS_CPU from '../glsl/webgl2/grid/grid_cpu.frag'\n\n// HiPS shaders\n// Raytracer\nimport RayTracerVS from '../glsl/webgl2/hips/raytracer/raytracer.vert'\nimport RayTracerColorFS from '../glsl/webgl2/hips/raytracer/color.frag'\nimport RayTracerGrayscale2ColorFS from '../glsl/webgl2/hips/raytracer/grayscale_to_color.frag'\nimport RayTracerGrayscale2ColormapFS from '../glsl/webgl2/hips/raytracer/grayscale_to_colormap.frag'\nimport RayTracerGrayscale2ColorIntegerFS from '../glsl/webgl2/hips/raytracer/grayscale_to_color_i.frag'\nimport RayTracerGrayscale2ColormapIntegerFS from '../glsl/webgl2/hips/raytracer/grayscale_to_colormap_i.frag'\nimport RayTracerGrayscale2ColorUnsignedFS from '../glsl/webgl2/hips/raytracer/grayscale_to_color_u.frag'\nimport RayTracerGrayscale2ColormapUnsignedFS from '../glsl/webgl2/hips/raytracer/grayscale_to_colormap_u.frag'\nimport RayTracerFontVS from '../glsl/webgl2/hips/raytracer/backcolor.vert'\nimport RayTracerFontFS from '../glsl/webgl2/hips/raytracer/backcolor.frag'\n\n// Rasterizer\nimport RasterizerOrthoVS from '../glsl/webgl2/hips/rasterizer/ortho.vert'\nimport RasterizerHEALPixVS from '../glsl/webgl2/hips/rasterizer/healpix.vert'\nimport RasterizerMercatorVS from '../glsl/webgl2/hips/rasterizer/mercator.vert'\nimport RasterizerAitoffVS from '../glsl/webgl2/hips/rasterizer/aitoff.vert'\nimport RasterizerGnomonicVS from '../glsl/webgl2/hips/rasterizer/gnomonic.vert'\nimport RasterizerArcVS from '../glsl/webgl2/hips/rasterizer/arc.vert'\nimport RasterizerMollVS from '../glsl/webgl2/hips/rasterizer/mollweide.vert'\nimport RasterizerColorFS from '../glsl/webgl2/hips/rasterizer/color.frag'\nimport RasterizerGrayscale2ColorFS from '../glsl/webgl2/hips/rasterizer/grayscale_to_color.frag'\nimport RasterizerGrayscale2ColormapFS from '../glsl/webgl2/hips/rasterizer/grayscale_to_colormap.frag'\nimport RasterizerGrayscale2ColorIntegerFS from '../glsl/webgl2/hips/rasterizer/grayscale_to_color_i.frag'\nimport RasterizerGrayscale2ColormapIntegerFS from '../glsl/webgl2/hips/rasterizer/grayscale_to_colormap_i.frag'\nimport RasterizerGrayscale2ColorUnsignedFS from '../glsl/webgl2/hips/rasterizer/grayscale_to_color_u.frag'\nimport RasterizerGrayscale2ColormapUnsignedFS from '../glsl/webgl2/hips/rasterizer/grayscale_to_colormap_u.frag'\n\nlet shaders = [\n // Catalog shaders\n {\n id: \"CatalogAitoffVS\",\n content: CatalogAitoffVS,\n },\n {\n id: \"CatalogHEALPixVS\",\n content: CatalogHEALPixVS,\n },\n {\n id: \"CatalogMercatVS\",\n content: CatalogMercatVS,\n },\n {\n id: \"CatalogArcVS\",\n content: CatalogArcVS,\n },\n {\n id: \"CatalogTanVS\",\n content: CatalogTanVS,\n },\n {\n id: \"CatalogMollVS\",\n content: CatalogMollVS,\n },\n {\n id: \"CatalogOrthoVS\",\n content: CatalogOrthoVS,\n },\n {\n id: \"CatalogOrthoFS\",\n content: CatalogOrthoFS,\n },\n {\n id: \"CatalogFS\",\n content: CatalogFS, \n },\n // Colormap shaders\n {\n id: \"ColormapCatalogVS\",\n content: ColormapCatalogVS,\n },\n {\n id: \"ColormapCatalogFS\",\n content: ColormapCatalogFS,\n },\n // Grid shader\n {\n id: \"GridVS\",\n content: GridVS,\n },\n {\n id: \"GridAitoffFS\",\n content: GridAitoffFS,\n },\n {\n id: \"GridMollFS\",\n content: GridMollFS,\n },\n {\n id: \"GridOrthoFS\",\n content: GridOrthoFS,\n },\n {\n id: \"GridMercatorFS\",\n content: GridMercatorFS,\n },\n {\n id: \"GridArcFS\",\n content: GridArcFS,\n },\n {\n id: \"GridTanFS\",\n content: GridTanFS,\n },\n {\n id: \"GridFS_CPU\",\n content: GridFS_CPU,\n },\n {\n id: \"GridVS_CPU\",\n content: GridVS_CPU,\n },\n // HiPS shaders\n // Raytracer\n {\n id: \"RayTracerVS\",\n content: RayTracerVS,\n },\n {\n id: \"RayTracerColorFS\",\n content: RayTracerColorFS,\n },\n {\n id: \"RayTracerGrayscale2ColorFS\",\n content: RayTracerGrayscale2ColorFS,\n },\n {\n id: \"RayTracerGrayscale2ColormapFS\",\n content: RayTracerGrayscale2ColormapFS,\n },\n {\n id: \"RayTracerGrayscale2ColorIntegerFS\",\n content: RayTracerGrayscale2ColorIntegerFS,\n },\n {\n id: \"RayTracerGrayscale2ColormapIntegerFS\",\n content: RayTracerGrayscale2ColormapIntegerFS,\n },\n {\n id: \"RayTracerGrayscale2ColorUnsignedFS\",\n content: RayTracerGrayscale2ColorUnsignedFS,\n },\n {\n id: \"RayTracerGrayscale2ColormapUnsignedFS\",\n content: RayTracerGrayscale2ColormapUnsignedFS,\n },\n {\n id: \"RayTracerFontVS\",\n content: RayTracerFontVS,\n },\n {\n id: \"RayTracerFontFS\",\n content: RayTracerFontFS,\n },\n /// Rasterizer\n {\n id: \"RasterizerOrthoVS\",\n content: RasterizerOrthoVS,\n },\n {\n id: \"RasterizerMercatorVS\",\n content: RasterizerMercatorVS,\n },\n {\n id: \"RasterizerAitoffVS\",\n content: RasterizerAitoffVS,\n },\n {\n id: \"RasterizerHEALPixVS\",\n content: RasterizerHEALPixVS,\n },\n {\n id: \"RasterizerArcVS\",\n content: RasterizerArcVS,\n },\n {\n id: \"RasterizerGnomonicVS\",\n content: RasterizerGnomonicVS,\n },\n {\n id: \"RasterizerMollVS\",\n content: RasterizerMollVS,\n },\n {\n id: \"RasterizerColorFS\",\n content: RasterizerColorFS,\n },\n {\n id: \"RasterizerGrayscale2ColorFS\",\n content: RasterizerGrayscale2ColorFS,\n },\n {\n id: \"RasterizerGrayscale2ColormapFS\",\n content: RasterizerGrayscale2ColormapFS,\n },\n {\n id: \"RasterizerGrayscale2ColorIntegerFS\",\n content: RasterizerGrayscale2ColorIntegerFS,\n },\n {\n id: \"RasterizerGrayscale2ColormapIntegerFS\",\n content: RasterizerGrayscale2ColormapIntegerFS,\n },\n {\n id: \"RasterizerGrayscale2ColorUnsignedFS\",\n content: RasterizerGrayscale2ColorUnsignedFS,\n },\n {\n id: \"RasterizerGrayscale2ColormapUnsignedFS\",\n content: RasterizerGrayscale2ColormapUnsignedFS,\n },\n];\n\nexport function loadShadersWebGL2() {\n return shaders;\n}\n","export default __webpack_public_path__ + \"ccdb93d24585bd08a4261722b95e9e3d.png\";","export default __webpack_public_path__ + \"5e9c973e186349126dbb60d66890dbeb.png\";","//import { loadShadersWebGL1 } from \"./ShadersWebGL1\";\nimport { loadShadersWebGL2 } from \"./ShadersWebGL2\";\n// Import resources images\nimport kernel from '../img/kernel.png';\nimport colormaps from '../img/colormaps/colormaps.png';\n\nexport let WebGLCtx = (function() {\n /** Constructor */\n async function WebGLCtx () {\n // Check for webgl2 support\n const webGL2support = checkForWebGL2Support();\n\n if (webGL2support) {\n return await import('../../pkg-webgl2');\n } else {\n // WebGL1 not supported\n // According to caniuse, https://caniuse.com/webgl2, webgl2 is supported by 89% of users\n throw \"WebGL2 not supported by your browser\";\n //return await import('../core/pkg-webgl1');\n }\n };\n\n WebGLCtx.checkForWebGL2Support = checkForWebGL2Support;\n\n WebGLCtx.init = function(ctx, div) {\n //const shaders = WebGLCtx.checkForWebGL2Support() ? loadShadersWebGL2() : loadShadersWebGL1();\n const shaders = loadShadersWebGL2();\n return new ctx.WebClient(\n div,\n shaders,\n {\n 'kernel': kernel,\n 'colormaps': colormaps,\n }\n );\n }\n\n return WebGLCtx;\n})();\n\nfunction checkForWebGL2Support() { \n const gl = document\n .createElement('canvas')\n .getContext('webgl2');\n return gl;\n /*\n // Run WebGL1 version only\n return false;\n */\n}\n\n\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n// log \nexport let Logger = {};\n\nLogger.log = function(action, params) {\n try {\n var logUrl = \"//alasky.unistra.fr/cgi/AladinLiteLogger/log.py\";\n var paramStr = \"\";\n if (params) {\n paramStr = JSON.stringify(params);\n }\n \n $.ajax({\n url: logUrl,\n data: {\"action\": action, \"params\": paramStr, \"pageUrl\": window.location.href, \"referer\": document.referrer ? document.referrer : \"\"},\n method: 'GET',\n dataType: 'json' // as alasky supports CORS, we do not need JSONP any longer\n });\n \n }\n catch(e) {\n window.console && console.log('Exception: ' + e);\n }\n\n};\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File events/ALEvent\n * \n * List of events emitted by Aladin Lite\n * \n * Author: Thomas Boch [CDS]\n * \n *****************************************************************************/\n\n export class ALEvent {\n static COO_GRID_ENABLED = new ALEvent(\"AL:cooGrid.enabled\");\n static COO_GRID_DISABLED = new ALEvent(\"AL:cooGrid.disabled\");\n static COO_GRID_UPDATED = new ALEvent(\"AL:cooGrid.updated\");\n\n static PROJECTION_CHANGED = new ALEvent(\"AL:projection.changed\");\n\n static HIPS_LAYER_ADDED = new ALEvent(\"AL:HiPSLayer.added\");\n static HIPS_LAYER_REMOVED = new ALEvent(\"AL:HiPSLayer.removed\");\n\n static HIPS_LAYER_CHANGED = new ALEvent(\"AL:HiPSLayer.changed\");\n\n static GRAPHIC_OVERLAY_LAYER_ADDED = new ALEvent(\"AL:GraphicOverlayLayer.added\");\n static GRAPHIC_OVERLAY_LAYER_REMOVED = new ALEvent(\"AL:GraphicOverlayLayer.removed\");\n\n static GRAPHIC_OVERLAY_LAYER_CHANGED = new ALEvent(\"AL:GraphicOverlayLayer.changed\");\n \n constructor(name) {\n this.name = name;\n }\n\n dispatchedTo(domEl, options) {\n if (options) {\n domEl.dispatchEvent(new CustomEvent(this.name, {detail: options}));\n }\n else {\n domEl.dispatchEvent(new CustomEvent(this.name));\n }\n }\n\n listenedBy(domEl, fn) {\n domEl.addEventListener(this.name, fn);\n }\n\n remove(domEl, fn) {\n domEl.removeEventListener(this.name, fn);\n }\n }\n \n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File View.js\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nimport { Aladin } from \"./Aladin.js\";\nimport { Popup } from \"./Popup.js\";\nimport { HealpixGrid } from \"./HealpixGrid.js\";\nimport { ProjectionEnum } from \"./ProjectionEnum.js\";\nimport { Projection } from \"./libs/astro/projection.js\";\nimport { AladinUtils } from \"./AladinUtils.js\";\nimport { Utils } from \"./Utils.js\";\nimport { SimbadPointer } from \"./SimbadPointer.js\";\nimport { Stats } from \"./libs/Stats.js\";\nimport { ColorMap } from \"./ColorMap.js\";\nimport { Footprint } from \"./Footprint.js\";\nimport { Circle } from \"./Circle.js\";\nimport { CooFrameEnum } from \"./CooFrameEnum.js\";\nimport { requestAnimFrame } from \"./libs/RequestAnimationFrame.js\";\nimport { WebGLCtx } from \"./WebGL.js\";\nimport { Logger } from \"./Logger.js\";\nimport { ALEvent } from \"./events/ALEvent.js\";\n\nexport let View = (function() {\n\n /** Constructor */\n function View (aladin, location, fovDiv, cooFrame, zoom) {\n this.aladin = aladin;\n // Add a reference to the WebGL API\n this.options = aladin.options;\n this.aladinDiv = this.aladin.aladinDiv;\n this.popup = new Popup(this.aladinDiv, this);\n this.webGL2Support = WebGLCtx.checkForWebGL2Support();\n this.createCanvases();\n // Init the WebGL context\n // At this point, the view has been created so the image canvas too\n try {\n // Start our Rust application. You can find `WebClient` in `src/lib.rs`\n // The Rust part should also create a new WebGL2 or WebGL1 context depending on the WebGL2 brower support.\n this.aladin.webglAPI = new WebGLCtx.init(Aladin.wasmLibs.webgl, this.aladinDiv.id);\n } catch(e) {\n // For browsers not supporting WebGL2:\n // 1. Print the original exception message in the console\n console.error(e)\n // 2. Add a more explicite message to the end user\n alert(\"Problem initializing Aladin Lite. Please contact the support by contacting Matthieu Baumann (baumannmatthieu0@gmail.com) or Thomas Boch (thomas.boch@astro.unistra.fr). You can also open an issue on the Aladin Lite github repository here: https://github.com/cds-astro/aladin-lite. Message error:\" + e)\n }\n\n this.location = location;\n this.fovDiv = fovDiv;\n this.mustClearCatalog = true;\n //this.imageSurveysToSet = [];\n this.mode = View.PAN;\n \n this.minFOV = this.maxFOV = null; // by default, no restriction\n this.fov_limit = 180.0;\n \n this.healpixGrid = new HealpixGrid();\n this.then = Date.now();\n \n var lon, lat;\n lon = lat = 0;\n \n this.projection = new Projection(lon, lat);\n this.projection.setProjection(ProjectionEnum.SIN);\n //this.zoomLevel = 0;\n // Prev time of the last frame\n this.prev = 0;\n //this.zoomFactor = this.computeZoomFactor(this.zoomLevel);\n this.zoomFactor = this.aladin.webglAPI.getClipZoomFactor();\n\n this.viewCenter = {lon: lon, lat: lat}; // position of center of view\n\n if (cooFrame) {\n this.cooFrame = cooFrame;\n } else {\n this.cooFrame = CooFrameEnum.GAL;\n }\n\n // Frame setting\n this.changeFrame(this.cooFrame);\n\n // Zoom starting setting\n const si = 500000.0;\n const alpha = 40.0;\n\n let initialFov = zoom || 360.0;\n this.pinchZoomParameters = {\n isPinching: false, // true if a pinch zoom is ongoing\n initialFov: undefined,\n initialDistance: undefined,\n initialAccDelta: Math.pow(si / initialFov, 1.0/alpha)\n };\n this.setZoom(initialFov);\n // current reference image survey displayed\n this.imageSurveys = new Map();\n this.imageSurveysWaitingList = new Map();\n this.imageSurveysIdx = new Map();\n\n this.overlayLayers = [];\n // current catalogs displayed\n this.catalogs = [];\n // a dedicated catalog for the popup\n var c = document.createElement('canvas');\n c.width = c.height = 24;\n var ctx= c.getContext('2d');\n ctx.lineWidth = 6.0;\n ctx.beginPath();\n ctx.strokeStyle = '#eee';\n ctx.arc(12, 12, 8, 0, 2*Math.PI, true);\n ctx.stroke();\n ctx.lineWidth = 3.0;\n ctx.beginPath();\n ctx.strokeStyle = '#c38';\n ctx.arc(12, 12, 8, 0, 2*Math.PI, true);\n ctx.stroke();\n this.catalogForPopup = A.catalog({shape: c, sourceSize: 24});\n //this.catalogForPopup = A.catalog({sourceSize: 18, shape: 'circle', color: '#c38'});\n this.catalogForPopup.hide();\n this.catalogForPopup.setView(this);\n // overlays (footprints for instance)\n this.overlays = [];\n // MOCs\n this.mocs = [];\n // reference to all overlay layers (= catalogs + overlays + mocs)\n this.allOverlayLayers = []\n \n\n \n this.fixLayoutDimensions();\n \n this.firstHiPS = true;\n this.curNorder = 1;\n this.realNorder = 1;\n \n // some variables for mouse handling\n this.dragging = false;\n this.dragx = null;\n this.dragy = null;\n this.rightclickx = null;\n this.rightclicky = null;\n this.selectedSurveyLayer = 'base';\n\n this.needRedraw = true;\n\n // two-fingers rotation\n this.fingersRotationParameters = {\n initialViewAngleFromCenter: undefined,\n initialFingerAngle: undefined,\n rotationInitiated: false\n }\n\n this.fadingLatestUpdate = null;\n \n this.dateRequestRedraw = null;\n \n \n init(this);\n \n\n // listen to window resize and reshape canvases\n this.resizeTimer = null;\n var self = this;\n $(window).resize(function() {\n self.fixLayoutDimensions(self);\n self.requestRedraw();\n });\n\n // in some contexts (Jupyter notebook for instance), the parent div changes little time after Aladin Lite creation\n // this results in canvas dimension to be incorrect.\n // The following line tries to fix this issue\n setTimeout(function() {\n var computedWidth = $(self.aladinDiv).width();\n var computedHeight = $(self.aladinDiv).height();\n\n if (self.width!==computedWidth || self.height===computedHeight) {\n self.fixLayoutDimensions();\n // As the WebGL backend has been resized correctly by\n // the previous call, we can get the zoom factor from it\n \n self.setZoom(self.fov); // needed to force recomputation of displayed FoV\n }\n }, 1000);\n\n };\n \n // different available modes\n View.PAN = 0;\n View.SELECT = 1;\n View.TOOL_SIMBAD_POINTER = 2;\n \n \n // TODO: should be put as an option at layer level \n View.DRAW_SOURCES_WHILE_DRAGGING = true;\n View.DRAW_MOCS_WHILE_DRAGGING = true;\n\n View.CALLBACKS_THROTTLE_TIME_MS = 100; // minimum time between two consecutive callback calls\n\n \n // (re)create needed canvases\n View.prototype.createCanvases = function() {\n var a = $(this.aladinDiv);\n a.find('.aladin-imageCanvas').remove();\n a.find('.aladin-catalogCanvas').remove();\n \n // canvas to draw the images\n this.imageCanvas = $(\"\").appendTo(this.aladinDiv)[0];\n // canvas to draw the catalogs\n this.catalogCanvas = $(\"\").appendTo(this.aladinDiv)[0];\n };\n \n // called at startup and when window is resized\n // The WebGL backend is resized\n View.prototype.fixLayoutDimensions = function() {\n Utils.cssScale = undefined;\n\n var computedWidth = $(this.aladinDiv).width();\n var computedHeight = $(this.aladinDiv).height();\n\n this.width = Math.max(computedWidth, 1);\n this.height = Math.max(computedHeight, 1); // this prevents many problems when div size is equal to 0\n\n this.cx = this.width/2;\n this.cy = this.height/2;\n \n this.largestDim = Math.max(this.width, this.height);\n this.smallestDim = Math.min(this.width, this.height);\n this.ratio = this.largestDim/this.smallestDim;\n\n this.mouseMoveIncrement = 160/this.largestDim;\n\n // reinitialize 2D context\n this.imageCtx = this.imageCanvas.getContext(this.webGL2Support ? \"webgl2\" : \"webgl\");\n this.aladin.webglAPI.resize(this.width, this.height);\n this.catalogCtx = this.catalogCanvas.getContext(\"2d\");\n\n this.catalogCtx.canvas.width = this.width; \n this.catalogCtx.canvas.height = this.height;\n\n pixelateCanvasContext(this.imageCtx, this.aladin.options.pixelateCanvas);\n\n // change logo\n if (!this.logoDiv) {\n this.logoDiv = $(this.aladinDiv).find('.aladin-logo')[0];\n }\n if (this.width>800) {\n $(this.logoDiv).removeClass('aladin-logo-small');\n $(this.logoDiv).addClass('aladin-logo-large');\n $(this.logoDiv).css('width', '90px');\n }\n else {\n $(this.logoDiv).addClass('aladin-logo-small');\n $(this.logoDiv).removeClass('aladin-logo-large');\n $(this.logoDiv).css('width', '32px');\n }\n\n this.computeNorder();\n };\n\n var pixelateCanvasContext = function(ctx, pixelateFlag) {\n var enableSmoothing = ! pixelateFlag;\n ctx.imageSmoothingEnabled = enableSmoothing;\n ctx.webkitImageSmoothingEnabled = enableSmoothing;\n ctx.mozImageSmoothingEnabled = enableSmoothing;\n ctx.msImageSmoothingEnabled = enableSmoothing;\n ctx.oImageSmoothingEnabled = enableSmoothing;\n }\n \n\n View.prototype.setMode = function(mode) {\n this.mode = mode;\n if (this.mode==View.SELECT) {\n this.setCursor('crosshair');\n }\n else if (this.mode==View.TOOL_SIMBAD_POINTER) {\n this.popup.hide();\n this.catalogCanvas.style.cursor = '';\n $(this.catalogCanvas).addClass('aladin-sp-cursor');\n }\n else {\n this.setCursor('default');\n }\n };\n \n View.prototype.setCursor = function(cursor) {\n if (this.catalogCanvas.style.cursor==cursor) {\n return;\n }\n if (this.mode==View.TOOL_SIMBAD_POINTER) {\n return;\n }\n this.catalogCanvas.style.cursor = cursor;\n };\n\n \n \n /**\n * return dataURL string corresponding to the current view\n */\n View.prototype.getCanvasDataURL = function(imgType, width, height) {\n imgType = imgType || \"image/png\"; \n var c = document.createElement('canvas');\n width = width || this.width;\n height = height || this.height;\n c.width = width;\n c.height = height;\n var ctx = c.getContext('2d');\n\n //ctx.drawImage(this.imageCanvas, 0, 0, c.width, c.height);\n const canvas = this.aladin.webglAPI.canvas();\n ctx.drawImage(canvas, 0, 0, c.width, c.height);\n ctx.drawImage(this.catalogCanvas, 0, 0, c.width, c.height);\n\n return c.toDataURL(imgType);\n //return c.toDataURL(\"image/jpeg\", 0.01); // setting quality only works for JPEG (?)\n };\n\n\n View.prototype.setActiveHiPSLayer = function(layer) {\n if (!this.imageSurveys.has(layer)) {\n throw layer + ' does not exists. So cannot be selected';\n }\n\n this.selectedSurveyLayer = layer;\n };\n\n View.prototype.updateFovDiv = function() {\n if (isNaN(this.fov)) {\n this.fovDiv.html(\"FoV:\");\n return;\n }\n // update FoV value\n var fovStr;\n if (this.fov>1) {\n fovStr = Math.round(this.fov*100)/100 + \"°\";\n }\n else if (this.fov*60>1) {\n fovStr = Math.round(this.fov*60*100)/100 + \"'\";\n }\n else {\n fovStr = Math.round(this.fov*3600*100)/100 + '\"';\n }\n this.fovDiv.html(\"FoV: \" + fovStr);\n }\n \n var createListeners = function(view) {\n var hasTouchEvents = false;\n if ('ontouchstart' in window) {\n hasTouchEvents = true;\n }\n \n // various listeners\n let onDblClick = function(e) {\n var xymouse = view.imageCanvas.relMouseCoords(e);\n /*if(view.aladin.webglAPI.posOnUi()) {\n return;\n }*/\n try {\n const lonlat = view.aladin.webglAPI.screenToWorld(xymouse.x, xymouse.y);\n var radec = view.aladin.webglAPI.viewToICRSJ2000CooSys(lonlat[0], lonlat[1]);\n view.pointTo(radec[0], radec[1], {forceAnimation: true});\n }\n catch(err) {\n return;\n }\n \n };\n if (! hasTouchEvents) {\n $(view.catalogCanvas).dblclick(onDblClick);\n }\n\n $(view.catalogCanvas).bind(\"contextmenu\", function(e) {\n // do something here... \n e.preventDefault(); \n }, false);\n\n let cutMinInit = null\n let cutMaxInit = null;\n\n $(view.catalogCanvas).bind(\"mousedown touchstart\", function(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var xymouse = view.imageCanvas.relMouseCoords(e);\n\n if (e.which === 3 || e.button === 2) {\n view.rightClick = true;\n view.rightclickx = xymouse.x;\n view.rightclicky = xymouse.y;\n\n const survey = view.imageSurveys.get(view.selectedSurveyLayer);\n if (survey) {\n // Take as start cut values what is inside the properties\n // If the cuts are not defined in the metadata of the survey\n // then we take what has been defined by the user\n if (!survey.colored) {\n if (survey.fits) {\n // properties default cuts always refers to fits tiles\n cutMinInit = survey.properties.minCutout || survey.options.minCut;\n cutMaxInit = survey.properties.maxCutout || survey.options.maxCut;\n } else {\n cutMinInit = survey.options.minCut;\n cutMaxInit = survey.options.maxCut;\n }\n } else {\n // todo: contrast\n }\n }\n\n return;\n }\n\n // zoom pinching\n if (e.type==='touchstart' && e.originalEvent && e.originalEvent.targetTouches && e.originalEvent.targetTouches.length==2) {\n view.dragging = false;\n\n view.pinchZoomParameters.isPinching = true;\n //var fov = view.aladin.getFov();\n //view.pinchZoomParameters.initialFov = Math.max(fov[0], fov[1]);\n var fov = view.aladin.webglAPI.getFieldOfView();\n view.pinchZoomParameters.initialFov = fov;\n view.pinchZoomParameters.initialDistance = Math.sqrt(Math.pow(e.originalEvent.targetTouches[0].clientX - e.originalEvent.targetTouches[1].clientX, 2) + Math.pow(e.originalEvent.targetTouches[0].clientY - e.originalEvent.targetTouches[1].clientY, 2));\n\n view.fingersRotationParameters.initialViewAngleFromCenter = view.aladin.webglAPI.getRotationAroundCenter();\n view.fingersRotationParameters.initialFingerAngle = Math.atan2(e.originalEvent.targetTouches[1].clientY - e.originalEvent.targetTouches[0].clientY, e.originalEvent.targetTouches[1].clientX - e.originalEvent.targetTouches[0].clientX) * 180.0 / Math.PI;\n\n return;\n }\n\n var xymouse = view.imageCanvas.relMouseCoords(e);\n if (e.originalEvent && e.originalEvent.targetTouches) {\n view.dragx = e.originalEvent.targetTouches[0].clientX;\n view.dragy = e.originalEvent.targetTouches[0].clientY;\n }\n else {\n /*\n view.dragx = e.clientX;\n view.dragy = e.clientY;\n */\n view.dragx = xymouse.x;\n view.dragy = xymouse.y;\n }\n\n view.dragging = true;\n if (view.mode==View.PAN) {\n view.setCursor('move');\n }\n else if (view.mode==View.SELECT) {\n view.selectStartCoo = {x: view.dragx, y: view.dragy};\n }\n\n view.aladin.webglAPI.pressLeftMouseButton(view.dragx, view.dragy);\n return false; // to disable text selection\n });\n\n $(view.catalogCanvas).bind(\"mouseup\", function(e) {\n if (view.rightClick) {\n view.rightClick = false;\n view.rightclickx = null;\n view.rightclicky = null;\n\n return;\n }\n });\n\n $(view.catalogCanvas).bind(\"click mouseout touchend\", function(e) { // reacting on 'click' rather on 'mouseup' is more reliable when panning the view \n if (e.type==='touchend' && view.pinchZoomParameters.isPinching) {\n view.pinchZoomParameters.isPinching = false;\n view.pinchZoomParameters.initialFov = view.pinchZoomParameters.initialDistance = undefined;\n \n return;\n }\n if (e.type==='touchend' && view.fingersRotationParameters.rotationInitiated) {\n view.fingersRotationParameters.initialViewAngleFromCenter = undefined;\n view.fingersRotationParameters.initialFingerAngle = undefined;\n view.fingersRotationParameters.rotationInitiated = false;\n \n return;\n }\n\n var wasDragging = view.realDragging === true;\n var selectionHasEnded = view.mode===View.SELECT && view.dragging;\n\n if (view.dragging) { // if we were dragging, reset to default cursor\n view.setCursor('default');\n view.dragging = false;\n\n if (wasDragging) {\n view.realDragging = false;\n \n // call positionChanged one last time after dragging, with dragging: false\n var posChangedFn = view.aladin.callbacksByEventName['positionChanged'];\n if (typeof posChangedFn === 'function') {\n var pos = view.aladin.pix2world(view.width/2, view.height/2);\n if (pos !== undefined) {\n posChangedFn({ra: pos[0], dec: pos[1], dragging: false});\n }\n }\n }\n } // end of \"if (view.dragging) ... \"\n\n if (selectionHasEnded) {\n view.aladin.fire('selectend', \n view.getObjectsInBBox(view.selectStartCoo.x, view.selectStartCoo.y,\n view.dragx-view.selectStartCoo.x, view.dragy-view.selectStartCoo.y)); \n\n view.requestRedraw();\n\n return;\n }\n\n view.mustClearCatalog = true;\n view.dragx = view.dragy = null;\n const xymouse = view.imageCanvas.relMouseCoords(e);\n\n if (e.type===\"mouseout\" || e.type===\"touchend\") {\n //view.requestRedraw();\n view.updateLocation(xymouse.x, xymouse.y, true);\n\n if (e.type===\"mouseout\") {\n if (view.mode===View.TOOL_SIMBAD_POINTER) {\n view.setMode(View.PAN);\n }\n\n return;\n }\n }\n\n if (view.mode==View.TOOL_SIMBAD_POINTER) {\n let radec = view.aladin.pix2world(xymouse.x, xymouse.y);\n\n // Convert from view to ICRSJ2000\n radec = view.aladin.webglAPI.viewToICRSJ2000CooSys(radec[0], radec[1]);\n\n view.setMode(View.PAN);\n view.setCursor('wait');\n if (radec) {\n SimbadPointer.query(radec[0], radec[1], Math.min(1, 15 * view.fov / view.largestDim), view.aladin);\n } else {\n console.log(\"Cannot unproject at the location you clicked on\")\n }\n\n return; // when in TOOL_SIMBAD_POINTER mode, we do not call the listeners\n }\n\n // popup to show ?\n var objs = view.closestObjects(xymouse.x, xymouse.y, 5);\n if (! wasDragging && objs) {\n var o = objs[0];\n\n // footprint selection code adapted from Fabrizio Giordano dev. from Serco for ESA/ESDC\n if (o instanceof Footprint || o instanceof Circle) {\n o.dispatchClickEvent();\n }\n\n // display marker\n else if (o.marker) {\n // could be factorized in Source.actionClicked\n view.popup.setTitle(o.popupTitle);\n view.popup.setText(o.popupDesc);\n view.popup.setSource(o);\n view.popup.show();\n }\n // show measurements\n else {\n if (view.lastClickedObject) {\n view.lastClickedObject.actionOtherObjectClicked && view.lastClickedObject.actionOtherObjectClicked();\n }\n o.actionClicked();\n }\n view.lastClickedObject = o;\n var objClickedFunction = view.aladin.callbacksByEventName['objectClicked'];\n (typeof objClickedFunction === 'function') && objClickedFunction(o);\n }\n else {\n if (view.lastClickedObject && ! wasDragging) {\n view.aladin.measurementTable.hide();\n view.popup.hide();\n\n if (view.lastClickedObject instanceof Footprint) {\n //view.lastClickedObject.deselect();\n }\n else {\n view.lastClickedObject.actionOtherObjectClicked();\n }\n\n view.lastClickedObject = null;\n var objClickedFunction = view.aladin.callbacksByEventName['objectClicked'];\n (typeof objClickedFunction === 'function') && objClickedFunction(null);\n }\n }\n\n // call listener of 'click' event\n var onClickFunction = view.aladin.callbacksByEventName['click'];\n if (typeof onClickFunction === 'function') {\n var pos = view.aladin.pix2world(xymouse.x, xymouse.y);\n if (pos !== undefined) {\n onClickFunction({ra: pos[0], dec: pos[1], x: xymouse.x, y: xymouse.y, isDragging: wasDragging});\n }\n }\n\n // TODO : remplacer par mecanisme de listeners\n // on avertit les catalogues progressifs\n view.refreshProgressiveCats();\n\n //view.requestRedraw();\n view.aladin.webglAPI.releaseLeftButtonMouse();\n });\n var lastHoveredObject; // save last object hovered by mouse\n var lastMouseMovePos = null;\n $(view.catalogCanvas).bind(\"mousemove touchmove\", function(e) {\n e.preventDefault();\n var xymouse = view.imageCanvas.relMouseCoords(e);\n\n if (view.rightClick && view.selectedSurveyLayer) {\n let selectedSurvey = view.imageSurveys.get(view.selectedSurveyLayer);\n if (!selectedSurvey.colored) {\n // we try to match DS9 contrast adjustment behaviour with right click\n const cs = {\n x: view.catalogCanvas.clientWidth * 0.5,\n y: view.catalogCanvas.clientHeight * 0.5,\n };\n const cx = (xymouse.x - cs.x) / view.catalogCanvas.clientWidth;\n const cy = -(xymouse.y - cs.y) / view.catalogCanvas.clientHeight;\n\n const offset = (cutMaxInit - cutMinInit) * cx;\n\n const lr = offset + (1.0 - 2.0*cy)*cutMinInit;\n const rr = offset + (1.0 + 2.0*cy)*cutMaxInit;\n if (lr <= rr) {\n selectedSurvey.setCuts([lr, rr])\n }\n\n return;\n }\n }\n\n if (e.type==='touchmove' && view.pinchZoomParameters.isPinching && e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length==2) {\n\n // rotation\n var currentFingerAngle = Math.atan2(e.originalEvent.targetTouches[1].clientY - e.originalEvent.targetTouches[0].clientY, e.originalEvent.targetTouches[1].clientX - e.originalEvent.targetTouches[0].clientX) * 180.0 / Math.PI;\n var fingerAngleDiff = view.fingersRotationParameters.initialFingerAngle - currentFingerAngle;\n // rotation is initiated when angle is equal or greater than 7 degrees\n if (! view.fingersRotationParameters.rotationInitiated && Math.abs(fingerAngleDiff)>=7) {\n view.fingersRotationParameters.rotationInitiated = true;\n view.fingersRotationParameters.initialFingerAngle = currentFingerAngle;\n fingerAngleDiff = 0;\n }\n if (view.fingersRotationParameters.rotationInitiated) {\n view.aladin.webglAPI.setRotationAroundCenter(fingerAngleDiff + view.fingersRotationParameters.initialViewAngleFromCenter);\n }\n\n // zoom\n const dist = Math.sqrt(Math.pow(e.originalEvent.touches[0].clientX - e.originalEvent.touches[1].clientX, 2) + Math.pow(e.originalEvent.touches[0].clientY - e.originalEvent.touches[1].clientY, 2));\n const fov = Math.min(Math.max(view.pinchZoomParameters.initialFov * view.pinchZoomParameters.initialDistance / dist, 0.00002777777), 360.0);\n view.setZoom(fov);\n\n return;\n }\n\n if (!view.dragging || hasTouchEvents) {\n // update location box\n view.updateLocation(xymouse.x, xymouse.y, false);\n // call listener of 'mouseMove' event\n var onMouseMoveFunction = view.aladin.callbacksByEventName['mouseMove'];\n if (typeof onMouseMoveFunction === 'function') {\n var pos = view.aladin.pix2world(xymouse.x, xymouse.y);\n if (pos !== undefined) {\n onMouseMoveFunction({ra: pos[0], dec: pos[1], x: xymouse.x, y: xymouse.y});\n }\n // send null ra and dec when we go out of the \"sky\"\n else if (lastMouseMovePos != null) {\n onMouseMoveFunction({ra: null, dec: null, x: xymouse.x, y: xymouse.y});\n }\n lastMouseMovePos = pos;\n }\n\n\n if (!view.dragging && ! view.mode==View.SELECT) {\n // objects under the mouse ?\n var closest = view.closestObjects(xymouse.x, xymouse.y, 5);\n if (closest) {\n view.setCursor('pointer');\n var objHoveredFunction = view.aladin.callbacksByEventName['objectHovered'];\n if (typeof objHoveredFunction === 'function' && closest[0]!=lastHoveredObject) {\n var ret = objHoveredFunction(closest[0]);\n }\n lastHoveredObject = closest[0];\n \n }\n else {\n view.setCursor('default');\n var objHoveredFunction = view.aladin.callbacksByEventName['objectHovered'];\n if (typeof objHoveredFunction === 'function' && lastHoveredObject) {\n lastHoveredObject = null;\n // call callback function to notify we left the hovered object\n var ret = objHoveredFunction(null);\n }\n }\n }\n if (!hasTouchEvents) {\n return;\n }\n }\n\n if (! view.dragging) {\n return;\n }\n //var xoffset, yoffset;\n var s1, s2;\n if (e.originalEvent && e.originalEvent.targetTouches) {\n /*xoffset = e.originalEvent.targetTouches[0].clientX-view.dragx;\n yoffset = e.originalEvent.targetTouches[0].clientY-view.dragy;\n var xy1 = AladinUtils.viewToXy(e.originalEvent.targetTouches[0].clientX, e.originalEvent.targetTouches[0].clientY, view.width, view.height, view.largestDim, view.zoomFactor);\n var xy2 = AladinUtils.viewToXy(view.dragx, view.dragy, view.width, view.height, view.largestDim, view.zoomFactor);\n\n pos1 = view.projection.unproject(xy1.x, xy1.y);\n pos2 = view.projection.unproject(xy2.x, xy2.y);*/\n s1 = {x: view.dragx, y: view.dragy};\n s2 = {x: e.originalEvent.targetTouches[0].clientX, y: e.originalEvent.targetTouches[0].clientY};\n }\n else {\n /*\n xoffset = e.clientX-view.dragx;\n yoffset = e.clientY-view.dragy;\n\n xoffset = xymouse.x-view.dragx;\n yoffset = xymouse.y-view.dragy;\n var xy1 = AladinUtils.viewToXy(xymouse.x, xymouse.y, view.width, view.height, view.largestDim, view.zoomFactor);\n var xy2 = AladinUtils.viewToXy(view.dragx, view.dragy, view.width, view.height, view.largestDim, view.zoomFactor);\n */\n //pos1 = view.projection.unproject(xy1.x, xy1.y);\n //pos2 = view.projection.unproject(xy2.x, xy2.y);\n\n /*pos1 = webglAPI.screenToWorld(view.dragx, view.dragy);\n pos2 = webglAPI.screenToWorld(xymouse.x, xymouse.y);\n\n if (pos2 == undefined) {\n return;\n }*/\n s1 = {x: view.dragx, y: view.dragy};\n s2 = {x: xymouse.x, y: xymouse.y};\n }\n\n\n \n // TODO : faut il faire ce test ??\n// var distSquared = xoffset*xoffset+yoffset*yoffset;\n// if (distSquared<3) {\n// return;\n// }\n if (e.originalEvent && e.originalEvent.targetTouches) {\n view.dragx = e.originalEvent.targetTouches[0].clientX;\n view.dragy = e.originalEvent.targetTouches[0].clientY;\n }\n else {\n view.dragx = xymouse.x;\n view.dragy = xymouse.y;\n /*\n view.dragx = e.clientX;\n view.dragy = e.clientY;\n */\n }\n \n if (view.mode==View.SELECT) {\n view.requestRedraw();\n return;\n }\n\n view.realDragging = true;\n\n //webglAPI.goFromTo(pos1[0], pos1[1], pos2[0], pos2[1]);\n view.aladin.webglAPI.goFromTo(s1.x, s1.y, s2.x, s2.y);\n //webglAPI.setCenter(pos2[0], pos2[1]);\n const [ra, dec] = view.aladin.webglAPI.getCenter();\n view.viewCenter.lon = ra;\n view.viewCenter.lat = dec;\n if (view.viewCenter.lon < 0.0) {\n view.viewCenter.lon += 360.0;\n }\n }); //// endof mousemove ////\n \n // disable text selection on IE\n $(view.aladinDiv).onselectstart = function () { return false; }\n\n $(view.catalogCanvas).on('wheel', function(event) { \n event.preventDefault();\n event.stopPropagation();\n\n if (view.rightClick) {\n return;\n }\n //var xymouse = view.imageCanvas.relMouseCoords(event);\n\n /*if(view.aladin.webglAPI.posOnUi()) {\n return;\n }*/\n //var xymouse = view.imageCanvas.relMouseCoords(event);\n //var level = view.zoomLevel;\n\n var delta = event.deltaY;\n // this seems to happen in context of Jupyter notebook --> we have to invert the direction of scroll\n // hope this won't trigger some side effects ...\n if (event.hasOwnProperty('originalEvent')) {\n delta = -event.originalEvent.deltaY;\n } \n /*if (delta>0) {\n level += 1;\n //zoom\n }\n else {\n level -= 1;\n //unzoom\n }*/\n // The value of the field of view is determined\n // inside the backend\n if (delta > 0.0) {\n view.increaseZoom();\n } else {\n view.decreaseZoom();\n }\n\n if (!view.debounceProgCatOnZoom) {\n var self = view;\n view.debounceProgCatOnZoom = Utils.debounce(function() {\n self.refreshProgressiveCats();\n self.drawAllOverlays();\n }, 300);\n }\n view.debounceProgCatOnZoom();\n //view.setZoomLevel(level);\n //view.refreshProgressiveCats();\n\n return false;\n });\n };\n \n var init = function(view) {\n var stats = new Stats();\n stats.domElement.style.top = '50px';\n if ($('#aladin-statsDiv').length>0) {\n $('#aladin-statsDiv')[0].appendChild( stats.domElement );\n }\n \n view.stats = stats;\n\n createListeners(view);\n\n view.executeCallbacksThrottled = Utils.throttle(\n function() {\n var pos = view.aladin.pix2world(view.width/2, view.height/2);\n var fov = view.fov;\n if (pos===undefined || fov===undefined) {\n return;\n }\n\n var ra = pos[0];\n var dec = pos[1];\n // trigger callback only if position has changed !\n if (ra!==this.ra || dec!==this.dec) {\n var posChangedFn = view.aladin.callbacksByEventName['positionChanged'];\n (typeof posChangedFn === 'function') && posChangedFn({ra: ra, dec: dec, dragging: true});\n \n // finally, save ra and dec value\n this.ra = ra;\n this.dec = dec;\n }\n\n // trigger callback only if FoV (zoom) has changed !\n if (fov!==this.old_fov) {\n var fovChangedFn = view.aladin.callbacksByEventName['zoomChanged'];\n (typeof fovChangedFn === 'function') && fovChangedFn(fov);\n \n // finally, save fov value\n this.old_fov = fov;\n }\n\n },\n View.CALLBACKS_THROTTLE_TIME_MS);\n\n\n view.displayHpxGrid = false;\n view.displaySurvey = true;\n view.displayCatalog = false;\n view.displayReticle = true;\n\n // initial draw\n //view.fov = computeFov(view);\n //updateFovDiv(view);\n //view.redraw();\n };\n\n View.prototype.updateLocation = function(mouseX, mouseY, isViewCenterPosition) {\n if (!this.projection) {\n return;\n }\n\n if(isViewCenterPosition) {\n //const [ra, dec] = this.aladin.webglAPI.ICRSJ2000ToViewCooSys(this.viewCenter.lon, this.viewCenter.lat);\n this.location.update(this.viewCenter.lon, this.viewCenter.lat, this.cooFrame, true);\n } else {\n let radec = this.aladin.webglAPI.screenToWorld(mouseX, mouseY); // This is given in the frame of the view\n if (radec) {\n if (radec[0]<0) {\n radec = [radec[0] + 360.0, radec[1]];\n }\n\n this.location.update(radec[0], radec[1], this.cooFrame, false);\n }\n }\n }\n \n View.prototype.requestRedrawAtDate = function(date) {\n this.dateRequestDraw = date;\n };\n\n /**\n * Return the color of the lowest intensity pixel \n * in teh current color map of the current background image HiPS\n */\n View.prototype.getBackgroundColor = function() {\n var white = 'rgb(255, 255, 255)';\n var black = 'rgb(0, 0, 0)';\n\n if (! this.imageSurvey) {\n return black;\n }\n\n var cm = this.imageSurvey.getColorMap();\n if (!cm) {\n return black;\n }\n if (cm.mapName == 'native' || cm.mapName == 'grayscale') {\n return cm.reversed ? white : black;\n }\n\n var idx = cm.reversed ? 255 : 0;\n var r = ColorMap.MAPS[cm.mapName].r[idx];\n var g = ColorMap.MAPS[cm.mapName].g[idx];\n var b = ColorMap.MAPS[cm.mapName].b[idx];\n\n return 'rgb(' + r + ',' + g + ',' + b + ')';\n };\n\n View.prototype.getViewParams = function() {\n var resolution = this.width > this.height ? this.fov / this.width : this.fov / this.height;\n return {\n fov: [this.width * resolution, this.height * resolution], \n width: this.width, \n height: this.height \n };\n };\n\n /**\n * redraw the whole view\n */\n View.prototype.redraw = function() {\n // calc elapsed time since last loop\n // Put your drawing code here\n try {\n //var dt = now_update - this.prev;\n this.aladin.webglAPI.update(Date.now() - this.then);\n } catch(e) {\n console.error(e)\n }\n\n // check whether a catalog has been parsed and\n // is ready to be plot\n let catReady = this.aladin.webglAPI.isCatalogLoaded();\n if (catReady) {\n var callbackFn = this.aladin.callbacksByEventName['catalogReady'];\n (typeof callbackFn === 'function') && callbackFn();\n }\n\n try {\n this.aladin.webglAPI.render(this.needRedraw);\n } catch(e) {\n console.error(\"Error: \", e);\n }\n\n ////// 2. Draw catalogues////////\n const isViewRendering = this.aladin.webglAPI.isRendering();\n if (isViewRendering || this.needRedraw) {\n this.drawAllOverlays();\n }\n this.needRedraw = false;\n\n // objects lookup\n if (!this.dragging) {\n this.updateObjectsLookup();\n }\n\n this.then = Date.now();\n // request another frame\n requestAnimFrame(this.redraw.bind(this));\n };\n\n View.prototype.drawAllOverlays = function() {\n var catalogCtx = this.catalogCtx;\n var catalogCanvasCleared = false;\n if (this.mustClearCatalog) {\n catalogCtx.clearRect(0, 0, this.width, this.height);\n catalogCanvasCleared = true;\n this.mustClearCatalog = false;\n }\n\n if (this.catalogs && this.catalogs.length>0 && this.displayCatalog && (! this.dragging || View.DRAW_SOURCES_WHILE_DRAGGING)) {\n // TODO : do not clear every time\n //// clear canvas ////\n if (!catalogCanvasCleared) {\n catalogCtx.clearRect(0, 0, this.width, this.height);\n catalogCanvasCleared = true;\n }\n\n for (var i=0; i0) {\n if (!catalogCanvasCleared) {\n catalogCtx.clearRect(0, 0, this.width, this.height);\n catalogCanvasCleared = true;\n }\n\n this.catalogForPopup.draw(catalogCtx, this.projection, this.cooFrame, this.width, this.height, this.largestDim, this.zoomFactor);\n }\n\n ////// 3. Draw overlays////////\n var overlayCtx = this.catalogCtx;\n if (this.overlays && this.overlays.length>0 && (! this.dragging || View.DRAW_SOURCES_WHILE_DRAGGING)) {\n if (!catalogCanvasCleared) {\n catalogCtx.clearRect(0, 0, this.width, this.height);\n catalogCanvasCleared = true;\n }\n\n for (var i=0; i=3) {\n if (this.curNorder==3) {\n cornersXYViewMapHighres = cornersXYViewMapAllsky;\n }\n else {\n cornersXYViewMapHighres = this.getVisibleCells(this.curNorder);\n }\n }\n if (cornersXYViewMapHighres && this.curNorder>3) {\n this.healpixGrid.redraw(healpixGridCtx, cornersXYViewMapHighres, this.fov, this.curNorder);\n }\n else {\n this.healpixGrid.redraw(healpixGridCtx, cornersXYViewMapAllsky, this.fov, 3);\n }\n }\n\n\n // draw MOCs\n var mocCtx = catalogCtx;\n if (this.mocs && this.mocs.length>0 && (! this.dragging || View.DRAW_MOCS_WHILE_DRAGGING)) {\n if (!catalogCanvasCleared) {\n catalogCtx.clearRect(0, 0, this.width, this.height);\n catalogCanvasCleared = true;\n }\n\n for (var i=0; i=60 && this.aladin.options['showAllskyRing'] === true) {\n if (! catalogCanvasCleared) {\n reticleCtx.clearRect(0, 0, this.width, this.height);\n catalogCanvasCleared = true;\n }\n\n reticleCtx.strokeStyle = this.aladin.options['allskyRingColor'];\n var ringWidth = this.aladin.options['allskyRingWidth'];\n reticleCtx.lineWidth = ringWidth;\n reticleCtx.beginPath();\n var maxCxCy = this.cx>this.cy ? this.cx : this.cy;\n reticleCtx.arc(this.cx, this.cy, (maxCxCy-(ringWidth/2.0)+1) / this.zoomFactor, 0, 2*Math.PI, true);\n reticleCtx.stroke();\n }\n };\n \n View.prototype.refreshProgressiveCats = function() {\n if (! this.catalogs) {\n return;\n }\n\n for (var i=0; i pixList.push(Number(x)));\n \n return pixList;\n };\n \n View.prototype.setAngleRotation = function(theta) {\n\n }\n\n // TODO: optimize this method !!\n View.prototype.getVisibleCells = function(norder) {\n var cells = []; // array to be returned\n var cornersXY = [];\n var nside = Math.pow(2, norder); // TODO : to be modified\n var npix = 12 * nside * nside;\n var ipixCenter = null;\n \n // build list of pixels\n var pixList = this.getVisiblePixList(norder)\n var ipix;\n var lon, lat;\n var corners;\n for (var ipixIdx=0, len=pixList.length; ipixIdx0) { \n continue;\n }\n var cornersXYView = [];\n //corners = HealpixCache.corners_nest(ipix, nside);\n corners = this.aladin.webglAPI.hpxNestedVertices(Math.log2(nside), ipix);\n\n for (var k=0; k<4; k++) {\n const lon = corners[k*2];\n const lat = corners[k*2 + 1];\n cornersXY[k] = this.aladin.webglAPI.worldToScreen(lon, lat);\n }\n\n if (cornersXY[0] == null || cornersXY[1] == null || cornersXY[2] == null || cornersXY[3] == null ) {\n continue;\n }\n\n for (var k=0; k<4; k++) {\n //cornersXYView[k] = AladinUtils.xyToView(cornersXY[k].X, cornersXY[k].Y, this.width, this.height, this.largestDim, this.zoomFactor);\n cornersXYView[k] = {\n vx: cornersXY[k][0],\n vy: cornersXY[k][1],\n };\n }\n\n // detect pixels outside view. Could be improved !\n // we minimize here the number of cells returned\n if( cornersXYView[0].vx<0 && cornersXYView[1].vx<0 && cornersXYView[2].vx<0 &&cornersXYView[3].vx<0) {\n continue;\n }\n if( cornersXYView[0].vy<0 && cornersXYView[1].vy<0 && cornersXYView[2].vy<0 &&cornersXYView[3].vy<0) {\n continue;\n }\n if( cornersXYView[0].vx>=this.width && cornersXYView[1].vx>=this.width && cornersXYView[2].vx>=this.width &&cornersXYView[3].vx>=this.width) {\n continue;\n }\n if( cornersXYView[0].vy>=this.height && cornersXYView[1].vy>=this.height && cornersXYView[2].vy>=this.height &&cornersXYView[3].vy>=this.height) {\n continue;\n }\n\n // check if pixel is visible\n// if (this.fov<160) { // don't bother checking if fov is large enough\n// if ( ! AladinUtils.isHpxPixVisible(cornersXYView, this.width, this.height) ) {\n// continue;\n// }\n// }\n // check if we have a pixel at the edge of the view in allsky projections\n //if (this.projection.PROJECTION!=ProjectionEnum.SIN && this.projection.PROJECTION!=ProjectionEnum.TAN) {\n /*var xdiff = cornersXYView[0].vx-cornersXYView[2].vx;\n var ydiff = cornersXYView[0].vy-cornersXYView[2].vy;\n var distDiag = Math.sqrt(xdiff*xdiff + ydiff*ydiff);\n if (distDiag>this.largestDim/5) {\n continue;\n }\n xdiff = cornersXYView[1].vx-cornersXYView[3].vx;\n ydiff = cornersXYView[1].vy-cornersXYView[3].vy;\n distDiag = Math.sqrt(xdiff*xdiff + ydiff*ydiff);\n if (distDiag>this.largestDim/5) {\n continue;\n }*/\n\n // New faster approach: when a vertex from a cell gets to the other side of the projection\n // its vertices order change from counter-clockwise to clockwise!\n // So if the vertices describing a cell are given in clockwise order\n // we know it crosses the projection, so we do not plot them!\n if (!AladinUtils.counterClockwiseTriangle(cornersXYView[0].vx, cornersXYView[0].vy, cornersXYView[1].vx, cornersXYView[1].vy, cornersXYView[2].vx, cornersXYView[2].vy) ||\n !AladinUtils.counterClockwiseTriangle(cornersXYView[0].vx, cornersXYView[0].vy, cornersXYView[2].vx, cornersXYView[2].vy, cornersXYView[3].vx, cornersXYView[3].vy)) {\n continue;\n }\n //}\n\n if (this.projection.PROJECTION == ProjectionEnum.HPX) {\n const triIdxInCollignonZone = ((p) => {\n const x = ((p.vx / this.catalogCanvas.clientWidth) - 0.5) * this.zoomFactor;\n const y = ((p.vy / this.catalogCanvas.clientHeight) - 0.5) * this.zoomFactor;\n\n const xZone = Math.floor((x + 0.5) * 4);\n return xZone + 4 * (y > 0.0);\n });\n\n const isInCollignon = ((p) => {\n const y = ((p.vy / this.catalogCanvas.clientHeight) - 0.5) * this.zoomFactor;\n\n return y < -0.25 || y > 0.25;\n });\n\n if (isInCollignon(cornersXYView[0]) && isInCollignon(cornersXYView[1]) && isInCollignon(cornersXYView[2]) && isInCollignon(cornersXYView[3])) {\n const allVerticesInSameCollignonRegion = (triIdxInCollignonZone(cornersXYView[0]) == triIdxInCollignonZone(cornersXYView[1])) && (triIdxInCollignonZone(cornersXYView[0]) == triIdxInCollignonZone(cornersXYView[2])) && (triIdxInCollignonZone(cornersXYView[0]) == triIdxInCollignonZone(cornersXYView[3]));\n if (!allVerticesInSameCollignonRegion) {\n continue;\n }\n }\n }\n \n cornersXYView.ipix = ipix;\n cells.push(cornersXYView);\n }\n \n return cells;\n };\n \n /*View.prototype.computeZoomFactor = function(level) {\n if (level>0) {\n return AladinUtils.getZoomFactorForAngle(180.0/Math.pow(1.35, level), this.projectionMethod);\n }\n else {\n return 1 + 0.1*level;\n }\n };*/\n /*View.prototype.computeZoomLevelFromFOV = function() {\n if (level>0) {\n return AladinUtils.getZoomFactorForAngle(180/Math.pow(1.15, level), this.projectionMethod);\n }\n else {\n return 1 + 0.1*level;\n }\n };*/\n \n // Called for touchmove events\n // initialAccDelta must be consistent with fovDegrees here\n View.prototype.setZoom = function(fovDegrees) {\n const si = 500000.0;\n const alpha = 40.0;\n this.pinchZoomParameters.initialAccDelta = Math.pow(si / fovDegrees, 1.0/alpha);\n /*if (fovDegrees<0) {\n return;\n }*/\n //const si = 500000.0;\n //const alpha = 40.0;\n\n // Erase the field of view state of the backend by\n this.aladin.webglAPI.setFieldOfView(fovDegrees);\n //var zoomLevel = Math.log(180/fovDegrees)/Math.log(1.15);\n //this.setZoomLevel(zoomLevel);\n this.updateZoomState();\n this.updateFovDiv();\n };\n\n View.prototype.increaseZoom = function() {\n const si = 500000.0;\n const alpha = 40.0;\n const amount = 0.005;\n\n this.pinchZoomParameters.initialAccDelta += amount;\n\n if (this.pinchZoomParameters.initialAccDelta <= 0.0) {\n this.pinchZoomParameters.initialAccDelta = 1e-3;\n }\n let new_fov = si / Math.pow(this.pinchZoomParameters.initialAccDelta, alpha);\n\n if (new_fov > 360.0) {\n new_fov = 360.0;\n //this.pinchZoomParameters.initialAccDelta = Math.pow(si / new_fov, 1.0/alpha);\n } \n if (new_fov < 0.00002777777) {\n new_fov = 0.00002777777;\n //this.pinchZoomParameters.initialAccDelta = Math.pow(si / new_fov, 1.0/alpha);\n }\n\n this.setZoom(new_fov);\n }\n\n View.prototype.decreaseZoom = function() {\n const si = 500000.0;\n const alpha = 40.0;\n const amount = 0.005;\n\n this.pinchZoomParameters.initialAccDelta -= amount;\n\n if (this.pinchZoomParameters.initialAccDelta <= 0.0) {\n this.pinchZoomParameters.initialAccDelta = 1e-3;\n }\n\n let new_fov = si / Math.pow(this.pinchZoomParameters.initialAccDelta, alpha);\n if (new_fov > 360.0) {\n new_fov = 360.0;\n //this.pinchZoomParameters.initialAccDelta = Math.pow(si / new_fov, 1.0/alpha);\n } \n if (new_fov < 0.00002777777) {\n new_fov = 0.00002777777;\n //this.pinchZoomParameters.initialAccDelta = Math.pow(si / new_fov, 1.0/alpha);\n } \n\n this.setZoom(new_fov);\n }\n\n View.prototype.setGridConfig = function(gridCfg) {\n this.aladin.webglAPI.setGridConfig(gridCfg);\n\n // send events\n if (gridCfg) {\n if (gridCfg.hasOwnProperty('enabled')) {\n this.showCooGrid = true;\n\n if (gridCfg.enabled === true) {\n ALEvent.COO_GRID_ENABLED.dispatchedTo(this.aladinDiv);\n }\n else {\n ALEvent.COO_GRID_DISABLED.dispatchedTo(this.aladinDiv);\n }\n }\n if (gridCfg.color) {\n ALEvent.COO_GRID_UPDATED.dispatchedTo(this.aladinDiv, {color: gridCfg.color});\n }\n }\n this.requestRedraw();\n };\n\n View.prototype.updateZoomState = function() {\n this.zoomFactor = this.aladin.webglAPI.getClipZoomFactor();\n this.fov = this.aladin.webglAPI.getFieldOfView();\n \n this.computeNorder();\n };\n \n /**\n * compute and set the norder corresponding to the current view resolution\n */\n View.prototype.computeNorder = function() {\n /*var resolution = this.fov / this.largestDim; // in degree/pixel\n var tileSize = 512; // TODO : read info from HpxImageSurvey.tileSize\n const calculateNSide = (pixsize) => {\n const NS_MAX = 536870912;\n const ORDER_MAX = 29;\n \n // Available nsides ..always power of 2 ..\n const NSIDELIST = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048,\n 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288,\n 1048576, 2097152, 4194304, 8388608, 16777216, 33554432,\n 67108864, 134217728, 268435456, 536870912];\n\n let res = 0;\n const pixelArea = pixsize * pixsize;\n const degrad = 180. / Math.PI;\n const skyArea = 4. * Math.PI * degrad * degrad * 3600. * 3600.;\n const castToInt = function (x) {\n if (x > 0) {\n return Math.floor(x);\n }\n else {\n return Math.ceil(x);\n }\n };\n const npixels = castToInt(skyArea / pixelArea);\n const nsidesq = npixels / 12;\n const nside_req = Math.sqrt(nsidesq);\n var mindiff = NS_MAX;\n var indmin = 0;\n for (var i = 0; i < NSIDELIST.length; i++) {\n if (Math.abs(nside_req - NSIDELIST[i]) <= mindiff) {\n mindiff = Math.abs(nside_req - NSIDELIST[i]);\n res = NSIDELIST[i];\n indmin = i;\n }\n if ((nside_req > res) && (nside_req < NS_MAX))\n res = NSIDELIST[indmin + 1];\n if (nside_req > NS_MAX) {\n console.log(\"nside cannot be bigger than \" + NS_MAX);\n return NS_MAX;\n }\n \n }\n return res;\n };*/\n\n //var nside = calculateNSide(3600*tileSize*resolution); // 512 = size of a \"tile\" image\n //var norder = Math.log(nside)/Math.log(2);\n //norder = Math.max(norder, 1);\n\n var norder = this.aladin.webglAPI.getNOrder();\n\n this.realNorder = norder;\n // here, we force norder to 3 (otherwise, the display is \"blurry\" for too long when zooming in)\n if (this.fov<=50 && norder<=2) {\n norder = 3;\n }\n\n // that happens if we do not wish to display tiles coming from Allsky.[jpg|png]\n if (this.imageSurvey && norder<=2 && this.imageSurvey.minOrder>2) {\n norder = this.imageSurvey.minOrder;\n }\n\n if (this.imageSurvey && norder>this.imageSurvey.maxOrder) {\n norder = this.imageSurvey.maxOrder;\n }\n\n // should never happen, as calculateNSide will return something <=HealpixIndex.ORDER_MAX\n if (norder>29) {\n norder = 29;\n }\n \n this.curNorder = norder;\n };\n\n View.prototype.untaintCanvases = function() {\n this.createCanvases();\n createListeners(this);\n this.fixLayoutDimensions();\n };\n\n View.prototype.setBaseImageLayer = function(baseSurveyPromise) {\n this.setOverlayImageSurvey(baseSurveyPromise, \"base\");\n };\n\n View.prototype.setOverlayImageSurvey = function(survey, layer = \"overlay\") {\n const surveyIdx = this.imageSurveysIdx.get(layer) || 0;\n const newSurveyIdx = surveyIdx + 1;\n this.imageSurveysIdx.set(layer, newSurveyIdx);\n survey.orderIdx = newSurveyIdx;\n\n // Check whether this layer already exist\n const idxOverlaySurveyFound = this.overlayLayers.findIndex(overlayLayer => overlayLayer == layer);\n\n if (idxOverlaySurveyFound == -1) {\n if (layer === \"base\") {\n // insert at the beginning\n this.overlayLayers.splice(0, 0, layer);\n } else {\n this.overlayLayers.push(layer);\n }\n } else {\n // find the survey by layer and erase it by the new value\n this.overlayLayers[ idxOverlaySurveyFound ] = layer;\n }\n\n /// async part\n if (this.options.log && survey.properties) {\n Logger.log(\"setImageLayer\", survey.properties.url);\n }\n\n survey.added = true;\n survey.layer = layer;\n survey.existedBefore = false;\n\n const pastSurvey = this.imageSurveys.get(layer);\n if (pastSurvey && pastSurvey.ready && pastSurvey.added) {\n survey.existedBefore = true;\n }\n\n this.imageSurveys.set(layer, survey);\n\n if (survey.ready) {\n this.commitSurveysToBackend(survey, layer);\n }\n };\n\n View.prototype.buildSortedImageSurveys = function() {\n let sortedImageSurveys = [];\n\n this.overlayLayers.forEach((overlaidLayer) => {\n sortedImageSurveys.push(\n this.imageSurveys.get(overlaidLayer)\n );\n });\n\n return sortedImageSurveys;\n }\n\n View.prototype.updateImageLayerStack = function() {\n try {\n let surveys = this.buildSortedImageSurveys()\n .filter(s => s !== undefined && s.properties )\n .map(s => {\n //let {backend, ...survey} = s;\n //return survey;\n return {\n layer: s.layer,\n properties: s.properties,\n meta: s.meta,\n // rust accepts it in upper case whereas the js API handles 'jpeg', 'png' or 'fits' in lower case\n imgFormat: s.options.imgFormat.toUpperCase(),\n };\n });\n console.log(surveys)\n this.aladin.webglAPI.setImageSurveys(surveys);\n } catch(e) {\n console.error(e)\n }\n };\n\n View.prototype.removeImageSurvey = function(layer) {\n this.imageSurveys.delete(layer);\n\n const idxOverlaidSurveyFound = this.overlayLayers.findIndex(overlaidLayer => overlaidLayer == layer);\n if (idxOverlaidSurveyFound == -1) {\n // layer not found\n return;\n }\n\n // Remove it from the layer stack\n this.overlayLayers.splice(idxOverlaidSurveyFound, 1);\n\n // Update the backend\n this.updateImageLayerStack();\n\n if (this.selectedSurveyLayer === layer) {\n this.selectedSurveyLayer = null;\n }\n\n ALEvent.HIPS_LAYER_REMOVED.dispatchedTo(this.aladinDiv, {layer: layer});\n };\n\n View.prototype.commitSurveysToBackend = function(survey, layer = \"base\") {\n //const layerAlreadyContained = this.imageSurveys.has(layer); true\n\n try {\n this.updateImageLayerStack();\n\n if (survey.existedBefore) {\n //if (this.selectedSurveyLayer && this.selectedSurveyLayer === layer) {\n // this.selectedSurveyLayer = layer;\n //}\n ALEvent.HIPS_LAYER_CHANGED.dispatchedTo(this.aladinDiv, {survey: survey});\n } else {\n survey.existedBefore = true;\n ALEvent.HIPS_LAYER_ADDED.dispatchedTo(this.aladinDiv, {survey: survey});\n }\n } catch(e) {\n // En error occured while loading the HiPS\n // Remove it from the View\n // - First, from the image dict\n this.imageSurveys.delete(layer);\n \n // Tell the survey object that it is not linked to the view anymore\n survey.added = false;\n\n // Finally delete the layer\n const idxOverlaidSurveyFound = this.overlayLayers.findIndex(overlaidLayer => overlaidLayer == layer);\n if (idxOverlaidSurveyFound >= 0) { \n // Remove it from the layer stack\n this.overlayLayers.splice(idxOverlaidSurveyFound, 1);\n }\n\n throw 'Error loading the HiPS ' + survey + ':' + e;\n }\n }\n\n View.prototype.getImageSurvey = function(layer = \"base\") {\n const survey = this.imageSurveys.get(layer);\n return survey;\n };\n\n View.prototype.getImageSurveyMeta = function(layer = \"base\") {\n try {\n return this.aladin.webglAPI.getImageSurveyMeta(layer);\n } catch(e) {\n console.error(e);\n }\n };\n\n View.prototype.setImageSurveyMeta = function(layer = \"base\", meta) {\n try {\n this.aladin.webglAPI.setImageSurveyMeta(layer, meta);\n } catch(e) {\n console.error(e);\n }\n };\n\n /*View.prototype.setImageSurveysLayer = function(surveys, layer) {\n this.imageSurveys.set(layer, new Map());\n\n surveys.forEach(survey => {\n const url = survey.properties.url;\n survey.layer = layer;\n \n this.imageSurveys.get(layer).set(url, survey);\n });\n\n // Then we send the current surveys to the backend\n this.setHiPS();\n };*/\n\n /*View.prototype.removeImageSurveysLayer = function (layer) {\n this.imageSurveys.delete(layer);\n\n this.setHiPS();\n };*/\n\n /*View.prototype.moveImageSurveysLayerForward = function(layer) {\n this.aladin.webglAPI.moveImageSurveysLayerForward(layer);\n }*/\n\n View.prototype.requestRedraw = function() {\n this.needRedraw = true;\n };\n \n View.prototype.setProjection = function(projectionName) {\n switch (projectionName) {\n case \"AIT\":\n this.projection.setProjection(ProjectionEnum.AITOFF);\n //this.projectionMethod = ProjectionEnum.AITOFF;\n break;\n case \"HPX\":\n this.projection.setProjection(ProjectionEnum.HPX);\n //this.projectionMethod = ProjectionEnum.HPX;\n break;\n case \"TAN\":\n this.projection.setProjection(ProjectionEnum.TAN);\n //this.projectionMethod = ProjectionEnum.TAN;\n break;\n case \"ARC\":\n this.projection.setProjection(ProjectionEnum.ARC);\n //this.projectionMethod = ProjectionEnum.ARC;\n break;\n case \"MER\":\n this.projection.setProjection(ProjectionEnum.MERCATOR);\n //this.projectionMethod = ProjectionEnum.MERCATOR;\n break;\n case \"MOL\":\n this.projection.setProjection(ProjectionEnum.MOL);\n //this.projectionMethod = ProjectionEnum.MOL;\n break;\n case \"SIN\":\n default:\n this.projection.setProjection(ProjectionEnum.SIN);\n //this.projectionMethod = ProjectionEnum.SIN;\n }\n // Change the projection here\n this.aladin.webglAPI = this.aladin.webglAPI.setProjection(projectionName, this.width, this.height);\n\n this.requestRedraw();\n };\n\n View.prototype.changeFrame = function(cooFrame) {\n this.cooFrame = cooFrame;\n\n // Set the new frame to the backend\n if (this.cooFrame.system == CooFrameEnum.SYSTEMS.GAL) {\n this.aladin.webglAPI.setCooSystem(Aladin.wasmLibs.webgl.CooSystem.GAL);\n }\n else if (this.cooFrame.system == CooFrameEnum.SYSTEMS.J2000) {\n this.aladin.webglAPI.setCooSystem(Aladin.wasmLibs.webgl.CooSystem.ICRSJ2000);\n }\n\n // Get the new view center position (given in icrsj2000)\n let [ra, dec] = this.aladin.webglAPI.getCenter();\n this.viewCenter.lon = ra;\n this.viewCenter.lat = dec;\n if (this.viewCenter.lon < 0.0) {\n this.viewCenter.lon += 360.0;\n }\n this.location.update(this.viewCenter.lon, this.viewCenter.lat, this.cooFrame, true);\n\n this.requestRedraw();\n };\n\n View.prototype.showHealpixGrid = function(show) {\n this.displayHpxGrid = show;\n\n if (!this.displayHpxGrid) {\n this.mustClearCatalog = true;\n }\n\n this.requestRedraw();\n };\n \n View.prototype.showSurvey = function(show) {\n this.displaySurvey = show;\n\n this.requestRedraw();\n };\n \n View.prototype.showCatalog = function(show) {\n this.displayCatalog = show;\n\n if (!this.displayCatalog) {\n this.mustClearCatalog = true;\n }\n this.requestRedraw();\n };\n \n View.prototype.showReticle = function(show) {\n this.displayReticle = show;\n\n if (!this.displayReticle) {\n this.mustClearCatalog = true;\n }\n\n this.requestRedraw();\n };\n\n /**\n * \n * @API Point to a specific location in ICRSJ2000\n * \n * @param ra ra expressed in ICRS J2000 frame\n * @param dec dec expressed in ICRS J2000 frame\n * @param options\n * \n */\n View.prototype.pointTo = function(ra, dec, options) {\n options = options || {};\n ra = parseFloat(ra);\n dec = parseFloat(dec);\n\n if (isNaN(ra) || isNaN(dec)) {\n return;\n }\n this.viewCenter.lon = ra;\n this.viewCenter.lat = dec;\n if (this.viewCenter.lon < 0.0) {\n this.viewCenter.lon += 360.0;\n }\n this.location.update(this.viewCenter.lon, this.viewCenter.lat, this.cooFrame, true);\n\n // Put a javascript code here to do some animation\n //this.projection.setCenter(this.viewCenter.lon, this.viewCenter.lat);\n this.aladin.webglAPI.setCenter(this.viewCenter.lon, this.viewCenter.lat);\n \n this.requestRedraw();\n\n var self = this;\n setTimeout(function() {self.refreshProgressiveCats();}, 1000);\n };\n View.prototype.makeUniqLayerName = function(name) {\n if (! this.layerNameExists(name)) {\n return name;\n }\n for (var k=1;;++k) {\n var newName = name + '_' + k;\n if ( ! this.layerNameExists(newName)) {\n return newName;\n }\n }\n };\n View.prototype.layerNameExists = function(name) {\n var c = this.allOverlayLayers;\n for (var k=0; k=x && s.x<=x+w && s.y>=y && s.y<=y+h) {\n objList.push(s);\n }\n }\n }\n }\n return objList;\n \n };\n\n // update objLookup, lookup table \n View.prototype.updateObjectsLookup = function() {\n this.objLookup = [];\n\n var cat, sources, s, xRounded, yRounded;\n if (this.catalogs) {\n for (var k=0; k> 8);\n },\n J: function(value) {\n return ((value & 0xFF) << 24) | ((value & 0xFF00) << 8) | ((value >> 8) & 0xFF00) | ((value >> 24) & 0xFF);\n }\n };\n\n DataUnit.swapEndian[8] = DataUnit.swapEndian['B'];\n\n DataUnit.swapEndian[16] = DataUnit.swapEndian['I'];\n\n DataUnit.swapEndian[32] = DataUnit.swapEndian['J'];\n\n function DataUnit(header, data) {\n if (data instanceof ArrayBuffer) {\n this.buffer = data;\n } else {\n this.blob = data;\n }\n }\n\n return DataUnit;\n\n })(Base);\n\n astro.FITS.DataUnit = DataUnit;\n\n HeaderVerify = {\n verifyOrder: function(keyword, order) {\n if (order !== this.cardIndex) {\n return console.warn(\"\" + keyword + \" should appear at index \" + this.cardIndex + \" in the FITS header\");\n }\n },\n verifyBetween: function(keyword, value, lower, upper) {\n if (!(value >= lower && value <= upper)) {\n throw \"The \" + keyword + \" value of \" + value + \" is not between \" + lower + \" and \" + upper;\n }\n },\n verifyBoolean: function(value) {\n if (value === \"T\") {\n return true;\n } else {\n return false;\n }\n },\n VerifyFns: {\n SIMPLE: function() {\n var args, value;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n value = arguments[0];\n this.primary = true;\n this.verifyOrder(\"SIMPLE\", 0);\n return this.verifyBoolean(value);\n },\n XTENSION: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n this.extension = true;\n this.extensionType = arguments[0];\n this.verifyOrder(\"XTENSION\", 0);\n return this.extensionType;\n },\n BITPIX: function() {\n var args, key, value;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n key = \"BITPIX\";\n value = parseInt(arguments[0]);\n this.verifyOrder(key, 1);\n if (value !== 8 && value !== 16 && value !== 32 && value !== (-32) && value !== (-64)) {\n throw \"\" + key + \" value \" + value + \" is not permitted\";\n }\n return value;\n },\n NAXIS: function() {\n var args, array, key, required, value, _ref;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n key = \"NAXIS\";\n value = parseInt(arguments[0]);\n array = arguments[1];\n if (!array) {\n this.verifyOrder(key, 2);\n this.verifyBetween(key, value, 0, 999);\n if (this.isExtension()) {\n if ((_ref = this.extensionType) === \"TABLE\" || _ref === \"BINTABLE\") {\n required = 2;\n if (value !== required) {\n throw \"\" + key + \" must be \" + required + \" for TABLE and BINTABLE extensions\";\n }\n }\n }\n }\n return value;\n },\n PCOUNT: function() {\n var args, key, order, required, value, _ref;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n key = \"PCOUNT\";\n value = parseInt(arguments[0]);\n order = 1 + 1 + 1 + this.get(\"NAXIS\");\n this.verifyOrder(key, order);\n if (this.isExtension()) {\n if ((_ref = this.extensionType) === \"IMAGE\" || _ref === \"TABLE\") {\n required = 0;\n if (value !== required) {\n throw \"\" + key + \" must be \" + required + \" for the \" + this.extensionType + \" extensions\";\n }\n }\n }\n return value;\n },\n GCOUNT: function() {\n var args, key, order, required, value, _ref;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n key = \"GCOUNT\";\n value = parseInt(arguments[0]);\n order = 1 + 1 + 1 + this.get(\"NAXIS\") + 1;\n this.verifyOrder(key, order);\n if (this.isExtension()) {\n if ((_ref = this.extensionType) === \"IMAGE\" || _ref === \"TABLE\" || _ref === \"BINTABLE\") {\n required = 1;\n if (value !== required) {\n throw \"\" + key + \" must be \" + required + \" for the \" + this.extensionType + \" extensions\";\n }\n }\n }\n return value;\n },\n EXTEND: function() {\n var args, value;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n value = arguments[0];\n if (!this.isPrimary()) {\n throw \"EXTEND must only appear in the primary header\";\n }\n return this.verifyBoolean(value);\n },\n BSCALE: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseFloat(arguments[0]);\n },\n BZERO: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseFloat(arguments[0]);\n },\n BLANK: function() {\n var args, value;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n value = arguments[0];\n if (!(this.get(\"BITPIX\") > 0)) {\n console.warn(\"BLANK is not to be used for BITPIX = \" + (this.get('BITPIX')));\n }\n return parseInt(value);\n },\n DATAMIN: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseFloat(arguments[0]);\n },\n DATAMAX: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseFloat(arguments[0]);\n },\n EXTVER: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseInt(arguments[0]);\n },\n EXTLEVEL: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseInt(arguments[0]);\n },\n TFIELDS: function() {\n var args, value;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n value = parseInt(arguments[0]);\n this.verifyBetween(\"TFIELDS\", value, 0, 999);\n return value;\n },\n TBCOL: function() {\n var args, index, value;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n value = arguments[0];\n index = arguments[2];\n this.verifyBetween(\"TBCOL\", index, 0, this.get(\"TFIELDS\"));\n return value;\n },\n ZIMAGE: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return this.verifyBoolean(arguments[0]);\n },\n ZCMPTYPE: function() {\n var args, value;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n value = arguments[0];\n if (value !== 'GZIP_1' && value !== 'RICE_1' && value !== 'PLIO_1' && value !== 'HCOMPRESS_1') {\n throw \"ZCMPTYPE value \" + value + \" is not permitted\";\n }\n if (value !== 'RICE_1') {\n throw \"Compress type \" + value + \" is not yet implement\";\n }\n return value;\n },\n ZBITPIX: function() {\n var args, value;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n value = parseInt(arguments[0]);\n if (value !== 8 && value !== 16 && value !== 32 && value !== 64 && value !== (-32) && value !== (-64)) {\n throw \"ZBITPIX value \" + value + \" is not permitted\";\n }\n return value;\n },\n ZNAXIS: function() {\n var args, array, value;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n value = parseInt(arguments[0]);\n array = arguments[1];\n value = value;\n if (!array) {\n this.verifyBetween(\"ZNAXIS\", value, 0, 999);\n }\n return value;\n },\n ZTILE: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseInt(arguments[0]);\n },\n ZSIMPLE: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n if (arguments[0] === \"T\") {\n return true;\n } else {\n return false;\n }\n },\n ZPCOUNT: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseInt(arguments[0]);\n },\n ZGCOUNT: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseInt(arguments[0]);\n },\n ZDITHER0: function() {\n var args;\n args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\n return parseInt(arguments[0]);\n }\n }\n };\n\n astro.FITS.HeaderVerify = HeaderVerify;\n\n Header = (function(_super) {\n __extends(Header, _super);\n\n Header.include(HeaderVerify);\n\n Header.prototype.arrayPattern = /(\\D+)(\\d+)/;\n\n Header.prototype.maxLines = 600;\n\n function Header(block) {\n var method, name, _ref;\n this.primary = false;\n this.extension = false;\n this.verifyCard = {};\n _ref = this.VerifyFns;\n for (name in _ref) {\n method = _ref[name];\n this.verifyCard[name] = this.proxy(method);\n }\n this.cards = {};\n this.cards[\"COMMENT\"] = [];\n this.cards[\"HISTORY\"] = [];\n this.cardIndex = 0;\n this.block = block;\n this.readBlock(block);\n }\n\n Header.prototype.get = function(key) {\n if (this.contains(key)) {\n return this.cards[key].value;\n } else {\n return null;\n }\n };\n\n Header.prototype.set = function(key, value, comment) {\n comment = comment || '';\n this.cards[key] = {\n index: this.cardIndex,\n value: value,\n comment: comment\n };\n return this.cardIndex += 1;\n };\n\n Header.prototype.contains = function(key) {\n return this.cards.hasOwnProperty(key);\n };\n\n Header.prototype.readLine = function(l) {\n var blank, comment, firstByte, indicator, key, value, _ref;\n key = l.slice(0, 8).trim();\n blank = key === '';\n if (blank) {\n return;\n }\n indicator = l.slice(8, 10);\n value = l.slice(10);\n if (indicator !== \"= \") {\n if (key === 'COMMENT' || key === 'HISTORY') {\n this.cards[key].push(value.trim());\n }\n return;\n }\n _ref = value.split(' /'), value = _ref[0], comment = _ref[1];\n value = value.trim();\n firstByte = value[0];\n if (firstByte === \"'\") {\n value = value.slice(1, -1).trim();\n } else {\n if (value !== 'T' && value !== 'F') {\n value = parseFloat(value);\n }\n }\n value = this.validate(key, value);\n return this.set(key, value, comment);\n };\n\n Header.prototype.validate = function(key, value) {\n var baseKey, index, isArray, match, _ref;\n index = null;\n baseKey = key;\n isArray = this.arrayPattern.test(key);\n if (isArray) {\n match = this.arrayPattern.exec(key);\n _ref = match.slice(1), baseKey = _ref[0], index = _ref[1];\n }\n if (baseKey in this.verifyCard) {\n value = this.verifyCard[baseKey](value, isArray, index);\n }\n return value;\n };\n\n Header.prototype.readBlock = function(block) {\n var i, line, lineWidth, nLines, _i, _ref, _results;\n lineWidth = 80;\n nLines = block.length / lineWidth;\n nLines = nLines < this.maxLines ? nLines : this.maxLines;\n _results = [];\n for (i = _i = 0, _ref = nLines - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n line = block.slice(i * lineWidth, (i + 1) * lineWidth);\n _results.push(this.readLine(line));\n }\n return _results;\n };\n\n Header.prototype.hasDataUnit = function() {\n if (this.get(\"NAXIS\") === 0) {\n return false;\n } else {\n return true;\n }\n };\n\n Header.prototype.getDataLength = function() {\n var i, length, naxis, _i, _ref;\n if (!this.hasDataUnit()) {\n return 0;\n }\n naxis = [];\n for (i = _i = 1, _ref = this.get(\"NAXIS\"); 1 <= _ref ? _i <= _ref : _i >= _ref; i = 1 <= _ref ? ++_i : --_i) {\n naxis.push(this.get(\"NAXIS\" + i));\n }\n length = naxis.reduce(function(a, b) {\n return a * b;\n }) * Math.abs(this.get(\"BITPIX\")) / 8;\n length += this.get(\"PCOUNT\");\n return length;\n };\n\n Header.prototype.getDataType = function() {\n switch (this.extensionType) {\n case 'BINTABLE':\n if (this.contains('ZIMAGE')) {\n return 'CompressedImage';\n }\n return 'BinaryTable';\n case 'TABLE':\n return 'Table';\n default:\n if (this.hasDataUnit()) {\n return 'Image';\n } else {\n return null;\n }\n }\n };\n\n Header.prototype.isPrimary = function() {\n return this.primary;\n };\n\n Header.prototype.isExtension = function() {\n return this.extension;\n };\n\n return Header;\n\n })(Base);\n\n astro.FITS.Header = Header;\n\n ImageUtils = {\n getExtent: function(arr) {\n var index, max, min, value;\n index = arr.length;\n while (index--) {\n value = arr[index];\n if (isNaN(value)) {\n continue;\n }\n min = max = value;\n break;\n }\n if (index === -1) {\n return [NaN, NaN];\n }\n while (index--) {\n value = arr[index];\n if (isNaN(value)) {\n continue;\n }\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n }\n return [min, max];\n },\n getPixel: function(arr, x, y) {\n return arr[y * this.width + x];\n }\n };\n\n astro.FITS.ImageUtils = ImageUtils;\n\n Image = (function(_super) {\n __extends(Image, _super);\n\n Image.include(ImageUtils);\n\n Image.prototype.allocationSize = 16777216;\n\n function Image(header, data) {\n var begin, frame, i, naxis, _i, _j, _ref;\n Image.__super__.constructor.apply(this, arguments);\n naxis = header.get(\"NAXIS\");\n this.bitpix = header.get(\"BITPIX\");\n this.naxis = [];\n for (i = _i = 1; 1 <= naxis ? _i <= naxis : _i >= naxis; i = 1 <= naxis ? ++_i : --_i) {\n this.naxis.push(header.get(\"NAXIS\" + i));\n }\n this.width = header.get(\"NAXIS1\");\n this.height = header.get(\"NAXIS2\") || 1;\n this.depth = header.get(\"NAXIS3\") || 1;\n this.bzero = header.get(\"BZERO\") || 0;\n this.bscale = header.get(\"BSCALE\") || 1;\n this.bytes = Math.abs(this.bitpix) / 8;\n this.length = this.naxis.reduce(function(a, b) {\n return a * b;\n }) * Math.abs(this.bitpix) / 8;\n this.frame = 0;\n this.frameOffsets = [];\n this.frameLength = this.bytes * this.width * this.height;\n this.nBuffers = this.buffer != null ? 1 : 2;\n for (i = _j = 0, _ref = this.depth - 1; 0 <= _ref ? _j <= _ref : _j >= _ref; i = 0 <= _ref ? ++_j : --_j) {\n begin = i * this.frameLength;\n frame = {\n begin: begin\n };\n if (this.buffer != null) {\n frame.buffers = [this.buffer.slice(begin, begin + this.frameLength)];\n }\n this.frameOffsets.push(frame);\n }\n }\n\n Image.prototype._getFrame = function(buffer, bitpix, bzero, bscale) {\n var arr, bytes, dataType, i, nPixels, swapEndian, tmp, value;\n bytes = Math.abs(bitpix) / 8;\n nPixels = i = buffer.byteLength / bytes;\n dataType = Math.abs(bitpix);\n if (bitpix > 0) {\n switch (bitpix) {\n case 8:\n tmp = new Uint8Array(buffer);\n tmp = new Uint16Array(tmp);\n swapEndian = function(value) {\n return value;\n };\n break;\n case 16:\n tmp = new Int16Array(buffer);\n swapEndian = function(value) {\n return ((value & 0xFF) << 8) | ((value >> 8) & 0xFF);\n };\n break;\n case 32:\n tmp = new Int32Array(buffer);\n swapEndian = function(value) {\n return ((value & 0xFF) << 24) | ((value & 0xFF00) << 8) | ((value >> 8) & 0xFF00) | ((value >> 24) & 0xFF);\n };\n }\n if (!(parseInt(bzero) === bzero && parseInt(bscale) === bscale)) {\n arr = new Float32Array(tmp.length);\n } else {\n arr = tmp;\n }\n while (nPixels--) {\n tmp[nPixels] = swapEndian(tmp[nPixels]);\n arr[nPixels] = bzero + bscale * tmp[nPixels];\n }\n } else {\n arr = new Uint32Array(buffer);\n swapEndian = function(value) {\n return ((value & 0xFF) << 24) | ((value & 0xFF00) << 8) | ((value >> 8) & 0xFF00) | ((value >> 24) & 0xFF);\n };\n while (i--) {\n value = arr[i];\n arr[i] = swapEndian(value);\n }\n arr = new Float32Array(buffer);\n while (nPixels--) {\n arr[nPixels] = bzero + bscale * arr[nPixels];\n }\n }\n return arr;\n };\n\n Image.prototype._getFrameAsync = function(buffers, callback, opts) {\n var URL, blobGetFrame, blobOnMessage, fn1, fn2, i, mime, msg, onmessage, pixels, start, urlGetFrame, urlOnMessage, worker,\n _this = this;\n onmessage = function(e) {\n var arr, bitpix, bscale, buffer, bzero, data, url;\n data = e.data;\n buffer = data.buffer;\n bitpix = data.bitpix;\n bzero = data.bzero;\n bscale = data.bscale;\n url = data.url;\n importScripts(url);\n arr = _getFrame(buffer, bitpix, bzero, bscale);\n return postMessage(arr);\n };\n fn1 = onmessage.toString().replace('return postMessage', 'postMessage');\n fn1 = \"onmessage = \" + fn1;\n fn2 = this._getFrame.toString();\n fn2 = fn2.replace('function', 'function _getFrame');\n mime = \"application/javascript\";\n blobOnMessage = new Blob([fn1], {\n type: mime\n });\n blobGetFrame = new Blob([fn2], {\n type: mime\n });\n URL = window.URL || window.webkitURL;\n urlOnMessage = URL.createObjectURL(blobOnMessage);\n urlGetFrame = URL.createObjectURL(blobGetFrame);\n worker = new Worker(urlOnMessage);\n msg = {\n buffer: buffers[0],\n bitpix: this.bitpix,\n bzero: this.bzero,\n bscale: this.bscale,\n url: urlGetFrame\n };\n i = 0;\n pixels = null;\n start = 0;\n worker.onmessage = function(e) {\n var arr;\n arr = e.data;\n if (pixels == null) {\n pixels = new arr.constructor(_this.width * _this.height);\n }\n pixels.set(arr, start);\n start += arr.length;\n i += 1;\n if (i === _this.nBuffers) {\n _this.invoke(callback, opts, pixels);\n URL.revokeObjectURL(urlOnMessage);\n URL.revokeObjectURL(urlGetFrame);\n return worker.terminate();\n } else {\n msg.buffer = buffers[i];\n return worker.postMessage(msg, [buffers[i]]);\n }\n };\n worker.postMessage(msg, [buffers[0]]);\n };\n\n Image.prototype.getFrame = function(frame, callback, opts) {\n var begin, blobFrame, blobs, buffers, bytesPerBuffer, frameInfo, i, nRowsPerBuffer, reader, start, _i, _ref,\n _this = this;\n this.frame = frame || this.frame;\n frameInfo = this.frameOffsets[this.frame];\n buffers = frameInfo.buffers;\n if ((buffers != null ? buffers.length : void 0) === this.nBuffers) {\n return this._getFrameAsync(buffers, callback, opts);\n } else {\n this.frameOffsets[this.frame].buffers = [];\n begin = frameInfo.begin;\n blobFrame = this.blob.slice(begin, begin + this.frameLength);\n blobs = [];\n nRowsPerBuffer = Math.floor(this.height / this.nBuffers);\n bytesPerBuffer = nRowsPerBuffer * this.bytes * this.width;\n for (i = _i = 0, _ref = this.nBuffers - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {\n start = i * bytesPerBuffer;\n if (i === this.nBuffers - 1) {\n blobs.push(blobFrame.slice(start));\n } else {\n blobs.push(blobFrame.slice(start, start + bytesPerBuffer));\n }\n }\n buffers = [];\n reader = new FileReader();\n reader.frame = this.frame;\n i = 0;\n reader.onloadend = function(e) {\n var buffer;\n frame = e.target.frame;\n buffer = e.target.result;\n _this.frameOffsets[frame].buffers.push(buffer);\n i += 1;\n if (i === _this.nBuffers) {\n return _this.getFrame(frame, callback, opts);\n } else {\n return reader.readAsArrayBuffer(blobs[i]);\n }\n };\n return reader.readAsArrayBuffer(blobs[0]);\n }\n };\n\n Image.prototype.getFrames = function(frame, number, callback, opts) {\n var cb,\n _this = this;\n cb = function(arr, opts) {\n _this.invoke(callback, opts, arr);\n number -= 1;\n frame += 1;\n if (!number) {\n return;\n }\n return _this.getFrame(frame, cb, opts);\n };\n return this.getFrame(frame, cb, opts);\n };\n\n Image.prototype.isDataCube = function() {\n if (this.naxis.length > 2) {\n return true;\n } else {\n return false;\n }\n };\n\n return Image;\n\n })(DataUnit);\n\n astro.FITS.Image = Image;\n\n Tabular = (function(_super) {\n __extends(Tabular, _super);\n\n Tabular.prototype.maxMemory = 1048576;\n\n function Tabular(header, data) {\n Tabular.__super__.constructor.apply(this, arguments);\n this.rowByteSize = header.get(\"NAXIS1\");\n this.rows = header.get(\"NAXIS2\");\n this.cols = header.get(\"TFIELDS\");\n this.length = this.rowByteSize * this.rows;\n this.heapLength = header.get(\"PCOUNT\");\n this.columns = this.getColumns(header);\n if (this.buffer != null) {\n this.rowsInMemory = this._rowsInMemoryBuffer;\n this.heap = this.buffer.slice(this.length, this.length + this.heapLength);\n } else {\n this.rowsInMemory = this._rowsInMemoryBlob;\n this.firstRowInBuffer = this.lastRowInBuffer = 0;\n this.nRowsInBuffer = Math.floor(this.maxMemory / this.rowByteSize);\n }\n this.accessors = [];\n this.descriptors = [];\n this.elementByteLengths = [];\n this.setAccessors(header);\n }\n\n Tabular.prototype._rowsInMemoryBuffer = function() {\n return true;\n };\n\n Tabular.prototype._rowsInMemoryBlob = function(firstRow, lastRow) {\n if (firstRow < this.firstRowInBuffer) {\n return false;\n }\n if (lastRow > this.lastRowInBuffer) {\n return false;\n }\n return true;\n };\n\n Tabular.prototype.getColumns = function(header) {\n var columns, i, key, _i, _ref;\n columns = [];\n for (i = _i = 1, _ref = this.cols; 1 <= _ref ? _i <= _ref : _i >= _ref; i = 1 <= _ref ? ++_i : --_i) {\n key = \"TTYPE\" + i;\n if (!header.contains(key)) {\n return null;\n }\n columns.push(header.get(key));\n }\n return columns;\n };\n\n Tabular.prototype.getColumn = function(name, callback, opts) {\n var accessor, cb, column, descriptor, elementByteLength, elementByteOffset, factor, i, index, iterations, rowsPerIteration,\n _this = this;\n if (this.blob != null) {\n index = this.columns.indexOf(name);\n descriptor = this.descriptors[index];\n accessor = this.accessors[index];\n elementByteLength = this.elementByteLengths[index];\n elementByteOffset = this.elementByteLengths.slice(0, index);\n if (elementByteOffset.length === 0) {\n elementByteOffset = 0;\n } else {\n elementByteOffset = elementByteOffset.reduce(function(a, b) {\n return a + b;\n });\n }\n column = this.typedArray[descriptor] != null ? new this.typedArray[descriptor](this.rows) : [];\n rowsPerIteration = ~~(this.maxMemory / this.rowByteSize);\n rowsPerIteration = Math.min(rowsPerIteration, this.rows);\n factor = this.rows / rowsPerIteration;\n iterations = Math.floor(factor) === factor ? factor : Math.floor(factor) + 1;\n i = 0;\n index = 0;\n cb = function(buffer, opts) {\n var nRows, offset, startRow, view;\n nRows = buffer.byteLength / _this.rowByteSize;\n view = new DataView(buffer);\n offset = elementByteOffset;\n while (nRows--) {\n column[i] = accessor(view, offset)[0];\n i += 1;\n offset += _this.rowByteSize;\n }\n iterations -= 1;\n index += 1;\n if (iterations) {\n startRow = index * rowsPerIteration;\n return _this.getTableBuffer(startRow, rowsPerIteration, cb, opts);\n } else {\n _this.invoke(callback, opts, column);\n }\n };\n return this.getTableBuffer(0, rowsPerIteration, cb, opts);\n } else {\n cb = function(rows, opts) {\n column = rows.map(function(d) {\n return d[name];\n });\n return _this.invoke(callback, opts, column);\n };\n return this.getRows(0, this.rows, cb, opts);\n }\n };\n\n Tabular.prototype.getTableBuffer = function(row, number, callback, opts) {\n var begin, blobRows, end, reader,\n _this = this;\n number = Math.min(this.rows - row, number);\n begin = row * this.rowByteSize;\n end = begin + number * this.rowByteSize;\n blobRows = this.blob.slice(begin, end);\n reader = new FileReader();\n reader.row = row;\n reader.number = number;\n reader.onloadend = function(e) {\n return _this.invoke(callback, opts, e.target.result);\n };\n return reader.readAsArrayBuffer(blobRows);\n };\n\n Tabular.prototype.getRows = function(row, number, callback, opts) {\n var begin, blobRows, buffer, end, reader, rows,\n _this = this;\n if (this.rowsInMemory(row, row + number)) {\n if (this.blob != null) {\n buffer = this.buffer;\n } else {\n begin = row * this.rowByteSize;\n end = begin + number * this.rowByteSize;\n buffer = this.buffer.slice(begin, end);\n }\n rows = this._getRows(buffer, number);\n this.invoke(callback, opts, rows);\n return rows;\n } else {\n begin = row * this.rowByteSize;\n end = begin + Math.max(this.nRowsInBuffer * this.rowByteSize, number * this.rowByteSize);\n blobRows = this.blob.slice(begin, end);\n reader = new FileReader();\n reader.row = row;\n reader.number = number;\n reader.onloadend = function(e) {\n var target;\n target = e.target;\n _this.buffer = target.result;\n _this.firstRowInBuffer = _this.lastRowInBuffer = target.row;\n _this.lastRowInBuffer += target.number;\n return _this.getRows(row, number, callback, opts);\n };\n return reader.readAsArrayBuffer(blobRows);\n }\n };\n\n return Tabular;\n\n })(DataUnit);\n\n astro.FITS.Tabular = Tabular;\n\n Table = (function(_super) {\n __extends(Table, _super);\n\n function Table() {\n _ref = Table.__super__.constructor.apply(this, arguments);\n return _ref;\n }\n\n Table.prototype.dataAccessors = {\n A: function(value) {\n return value.trim();\n },\n I: function(value) {\n return parseInt(value);\n },\n F: function(value) {\n return parseFloat(value);\n },\n E: function(value) {\n return parseFloat(value);\n },\n D: function(value) {\n return parseFloat(value);\n }\n };\n\n Table.prototype.setAccessors = function(header) {\n var descriptor, form, i, match, pattern, type, _i, _ref1, _results,\n _this = this;\n pattern = /([AIFED])(\\d+)\\.*(\\d+)*/;\n _results = [];\n for (i = _i = 1, _ref1 = this.cols; 1 <= _ref1 ? _i <= _ref1 : _i >= _ref1; i = 1 <= _ref1 ? ++_i : --_i) {\n form = header.get(\"TFORM\" + i);\n type = header.get(\"TTYPE\" + i);\n match = pattern.exec(form);\n descriptor = match[1];\n _results.push((function(descriptor) {\n var accessor;\n accessor = function(value) {\n return _this.dataAccessors[descriptor](value);\n };\n return _this.accessors.push(accessor);\n })(descriptor));\n }\n return _results;\n };\n\n Table.prototype._getRows = function(buffer) {\n var accessor, arr, begin, end, i, index, line, nRows, row, rows, subarray, value, _i, _j, _k, _len, _len1, _ref1, _ref2;\n nRows = buffer.byteLength / this.rowByteSize;\n arr = new Uint8Array(buffer);\n rows = [];\n for (i = _i = 0, _ref1 = nRows - 1; 0 <= _ref1 ? _i <= _ref1 : _i >= _ref1; i = 0 <= _ref1 ? ++_i : --_i) {\n begin = i * this.rowByteSize;\n end = begin + this.rowByteSize;\n subarray = arr.subarray(begin, end);\n line = '';\n for (_j = 0, _len = subarray.length; _j < _len; _j++) {\n value = subarray[_j];\n line += String.fromCharCode(value);\n }\n line = line.trim().split(/\\s+/);\n row = {};\n _ref2 = this.accessors;\n for (index = _k = 0, _len1 = _ref2.length; _k < _len1; index = ++_k) {\n accessor = _ref2[index];\n value = line[index];\n row[this.columns[index]] = accessor(value);\n }\n rows.push(row);\n }\n return rows;\n };\n\n return Table;\n\n })(Tabular);\n\n astro.FITS.Table = Table;\n\n BinaryTable = (function(_super) {\n __extends(BinaryTable, _super);\n\n function BinaryTable() {\n _ref1 = BinaryTable.__super__.constructor.apply(this, arguments);\n return _ref1;\n }\n\n BinaryTable.prototype.typedArray = {\n B: Uint8Array,\n I: Uint16Array,\n J: Uint32Array,\n E: Float32Array,\n D: Float64Array,\n 1: Uint8Array,\n 2: Uint16Array,\n 4: Uint32Array\n };\n\n BinaryTable.offsets = {\n L: 1,\n B: 1,\n I: 2,\n J: 4,\n K: 8,\n A: 1,\n E: 4,\n D: 8,\n C: 8,\n M: 16\n };\n\n BinaryTable.prototype.dataAccessors = {\n L: function(view, offset) {\n var val, x;\n x = view.getInt8(offset);\n offset += 1;\n val = x === 84 ? true : false;\n return [val, offset];\n },\n B: function(view, offset) {\n var val;\n val = view.getUint8(offset);\n offset += 1;\n return [val, offset];\n },\n I: function(view, offset) {\n var val;\n val = view.getInt16(offset);\n offset += 2;\n return [val, offset];\n },\n J: function(view, offset) {\n var val;\n val = view.getInt32(offset);\n offset += 4;\n return [val, offset];\n },\n K: function(view, offset) {\n var factor, highByte, lowByte, mod, val;\n highByte = Math.abs(view.getInt32(offset));\n offset += 4;\n lowByte = Math.abs(view.getInt32(offset));\n offset += 4;\n mod = highByte % 10;\n factor = mod ? -1 : 1;\n highByte -= mod;\n val = factor * ((highByte << 32) | lowByte);\n return [val, offset];\n },\n A: function(view, offset) {\n var val;\n val = view.getUint8(offset);\n val = String.fromCharCode(val);\n offset += 1;\n return [val, offset];\n },\n E: function(view, offset) {\n var val;\n val = view.getFloat32(offset);\n offset += 4;\n return [val, offset];\n },\n D: function(view, offset) {\n var val;\n val = view.getFloat64(offset);\n offset += 8;\n return [val, offset];\n },\n C: function(view, offset) {\n var val, val1, val2;\n val1 = view.getFloat32(offset);\n offset += 4;\n val2 = view.getFloat32(offset);\n offset += 4;\n val = [val1, val2];\n return [val, offset];\n },\n M: function(view, offset) {\n var val, val1, val2;\n val1 = view.getFloat64(offset);\n offset += 8;\n val2 = view.getFloat64(offset);\n offset += 8;\n val = [val1, val2];\n return [val, offset];\n }\n };\n\n BinaryTable.prototype.toBits = function(byte) {\n var arr, i;\n arr = [];\n i = 128;\n while (i >= 1) {\n arr.push((byte & i ? 1 : 0));\n i /= 2;\n }\n return arr;\n };\n\n BinaryTable.prototype.getFromHeap = function(view, offset, descriptor) {\n var arr, heapOffset, heapSlice, i, length;\n length = view.getInt32(offset);\n offset += 4;\n heapOffset = view.getInt32(offset);\n offset += 4;\n heapSlice = this.heap.slice(heapOffset, heapOffset + length);\n arr = new this.typedArray[descriptor](heapSlice);\n i = arr.length;\n while (i--) {\n arr[i] = this.constructor.swapEndian[descriptor](arr[i]);\n }\n return [arr, offset];\n };\n\n BinaryTable.prototype.setAccessors = function(header) {\n var count, descriptor, form, i, isArray, match, pattern, type, _i, _ref2, _results,\n _this = this;\n pattern = /(\\d*)([P|Q]*)([L|X|B|I|J|K|A|E|D|C|M]{1})/;\n _results = [];\n for (i = _i = 1, _ref2 = this.cols; 1 <= _ref2 ? _i <= _ref2 : _i >= _ref2; i = 1 <= _ref2 ? ++_i : --_i) {\n form = header.get(\"TFORM\" + i);\n type = header.get(\"TTYPE\" + i);\n match = pattern.exec(form);\n count = parseInt(match[1]) || 1;\n isArray = match[2];\n descriptor = match[3];\n _results.push((function(descriptor, count) {\n var accessor, nBytes;\n _this.descriptors.push(descriptor);\n _this.elementByteLengths.push(_this.constructor.offsets[descriptor] * count);\n if (isArray) {\n switch (type) {\n case \"COMPRESSED_DATA\":\n accessor = function(view, offset) {\n var arr, pixels, _ref3;\n _ref3 = _this.getFromHeap(view, offset, descriptor), arr = _ref3[0], offset = _ref3[1];\n pixels = new _this.typedArray[_this.algorithmParameters[\"BYTEPIX\"]](_this.ztile[0]);\n Decompress.Rice(arr, _this.algorithmParameters[\"BLOCKSIZE\"], _this.algorithmParameters[\"BYTEPIX\"], pixels, _this.ztile[0], Decompress.RiceSetup);\n return [pixels, offset];\n };\n break;\n case \"GZIP_COMPRESSED_DATA\":\n accessor = function(view, offset) {\n var arr;\n arr = new Float32Array(_this.width);\n i = arr.length;\n while (i--) {\n arr[i] = NaN;\n }\n return [arr, offset];\n };\n break;\n default:\n accessor = function(view, offset) {\n return _this.getFromHeap(view, offset, descriptor);\n };\n }\n } else {\n if (count === 1) {\n accessor = function(view, offset) {\n var value, _ref3;\n _ref3 = _this.dataAccessors[descriptor](view, offset), value = _ref3[0], offset = _ref3[1];\n return [value, offset];\n };\n } else {\n if (descriptor === 'X') {\n nBytes = Math.log(count) / Math.log(2);\n accessor = function(view, offset) {\n var arr, bits, buffer, byte, bytes, _j, _len;\n buffer = view.buffer.slice(offset, offset + nBytes);\n bytes = new Uint8Array(buffer);\n bits = [];\n for (_j = 0, _len = bytes.length; _j < _len; _j++) {\n byte = bytes[_j];\n arr = _this.toBits(byte);\n bits = bits.concat(arr);\n }\n offset += nBytes;\n return [bits.slice(0, +(count - 1) + 1 || 9e9), offset];\n };\n } else if (descriptor === 'A') {\n accessor = function(view, offset) {\n var arr, buffer, s, value, _j, _len;\n buffer = view.buffer.slice(offset, offset + count);\n arr = new Uint8Array(buffer);\n s = '';\n for (_j = 0, _len = arr.length; _j < _len; _j++) {\n value = arr[_j];\n s += String.fromCharCode(value);\n }\n s = s.trim();\n offset += count;\n return [s, offset];\n };\n } else {\n accessor = function(view, offset) {\n var data, value, _ref3;\n i = count;\n data = [];\n while (i--) {\n _ref3 = _this.dataAccessors[descriptor](view, offset), value = _ref3[0], offset = _ref3[1];\n data.push(value);\n }\n return [data, offset];\n };\n }\n }\n }\n return _this.accessors.push(accessor);\n })(descriptor, count));\n }\n return _results;\n };\n\n BinaryTable.prototype._getRows = function(buffer, nRows) {\n var accessor, index, offset, row, rows, value, view, _i, _len, _ref2, _ref3;\n view = new DataView(buffer);\n offset = 0;\n rows = [];\n while (nRows--) {\n row = {};\n _ref2 = this.accessors;\n for (index = _i = 0, _len = _ref2.length; _i < _len; index = ++_i) {\n accessor = _ref2[index];\n _ref3 = accessor(view, offset), value = _ref3[0], offset = _ref3[1];\n row[this.columns[index]] = value;\n }\n rows.push(row);\n }\n return rows;\n };\n\n return BinaryTable;\n\n })(Tabular);\n\n astro.FITS.BinaryTable = BinaryTable;\n\n Decompress = {\n RiceSetup: {\n 1: function(array) {\n var fsbits, fsmax, lastpix, pointer;\n pointer = 1;\n fsbits = 3;\n fsmax = 6;\n lastpix = array[0];\n return [fsbits, fsmax, lastpix, pointer];\n },\n 2: function(array) {\n var bytevalue, fsbits, fsmax, lastpix, pointer;\n pointer = 2;\n fsbits = 4;\n fsmax = 14;\n lastpix = 0;\n bytevalue = array[0];\n lastpix = lastpix | (bytevalue << 8);\n bytevalue = array[1];\n lastpix = lastpix | bytevalue;\n return [fsbits, fsmax, lastpix, pointer];\n },\n 4: function(array) {\n var bytevalue, fsbits, fsmax, lastpix, pointer;\n pointer = 4;\n fsbits = 5;\n fsmax = 25;\n lastpix = 0;\n bytevalue = array[0];\n lastpix = lastpix | (bytevalue << 24);\n bytevalue = array[1];\n lastpix = lastpix | (bytevalue << 16);\n bytevalue = array[2];\n lastpix = lastpix | (bytevalue << 8);\n bytevalue = array[3];\n lastpix = lastpix | bytevalue;\n return [fsbits, fsmax, lastpix, pointer];\n }\n },\n Rice: function(array, blocksize, bytepix, pixels, nx, setup) {\n var b, bbits, diff, fs, fsbits, fsmax, i, imax, k, lastpix, nbits, nonzeroCount, nzero, pointer, _ref2, _ref3;\n bbits = 1 << fsbits;\n _ref2 = setup[bytepix](array), fsbits = _ref2[0], fsmax = _ref2[1], lastpix = _ref2[2], pointer = _ref2[3];\n nonzeroCount = new Uint8Array(256);\n nzero = 8;\n _ref3 = [128, 255], k = _ref3[0], i = _ref3[1];\n while (i >= 0) {\n while (i >= k) {\n nonzeroCount[i] = nzero;\n i -= 1;\n }\n k = k / 2;\n nzero -= 1;\n }\n nonzeroCount[0] = 0;\n b = array[pointer++];\n nbits = 8;\n i = 0;\n while (i < nx) {\n nbits -= fsbits;\n while (nbits < 0) {\n b = (b << 8) | array[pointer++];\n nbits += 8;\n }\n fs = (b >> nbits) - 1;\n b &= (1 << nbits) - 1;\n imax = i + blocksize;\n if (imax > nx) {\n imax = nx;\n }\n if (fs < 0) {\n while (i < imax) {\n pixels[i] = lastpix;\n i += 1;\n }\n } else if (fs === fsmax) {\n while (i < imax) {\n k = bbits - nbits;\n diff = b << k;\n k -= 8;\n while (k >= 0) {\n b = array[pointer++];\n diff |= b << k;\n k -= 8;\n }\n if (nbits > 0) {\n b = array[pointer++];\n diff |= b >> (-k);\n b &= (1 << nbits) - 1;\n } else {\n b = 0;\n }\n if ((diff & 1) === 0) {\n diff = diff >> 1;\n } else {\n diff = ~(diff >> 1);\n }\n pixels[i] = diff + lastpix;\n lastpix = pixels[i];\n i++;\n }\n } else {\n while (i < imax) {\n while (b === 0) {\n nbits += 8;\n b = array[pointer++];\n }\n nzero = nbits - nonzeroCount[b];\n nbits -= nzero + 1;\n b ^= 1 << nbits;\n nbits -= fs;\n while (nbits < 0) {\n b = (b << 8) | array[pointer++];\n nbits += 8;\n }\n diff = (nzero << fs) | (b >> nbits);\n b &= (1 << nbits) - 1;\n if ((diff & 1) === 0) {\n diff = diff >> 1;\n } else {\n diff = ~(diff >> 1);\n }\n pixels[i] = diff + lastpix;\n lastpix = pixels[i];\n i++;\n }\n }\n }\n return pixels;\n }\n };\n\n astro.FITS.Decompress = Decompress;\n\n CompressedImage = (function(_super) {\n __extends(CompressedImage, _super);\n\n CompressedImage.include(ImageUtils);\n\n CompressedImage.extend(Decompress);\n\n CompressedImage.randomGenerator = function() {\n var a, i, m, random, seed, temp, _i;\n a = 16807;\n m = 2147483647;\n seed = 1;\n random = new Float32Array(10000);\n for (i = _i = 0; _i <= 9999; i = ++_i) {\n temp = a * seed;\n seed = temp - m * parseInt(temp / m);\n random[i] = seed / m;\n }\n return random;\n };\n\n CompressedImage.randomSequence = CompressedImage.randomGenerator();\n\n function CompressedImage(header, data) {\n var i, key, value, ztile, _i, _ref2;\n CompressedImage.__super__.constructor.apply(this, arguments);\n this.zcmptype = header.get(\"ZCMPTYPE\");\n this.zbitpix = header.get(\"ZBITPIX\");\n this.znaxis = header.get(\"ZNAXIS\");\n this.zblank = header.get(\"ZBLANK\");\n this.blank = header.get(\"BLANK\");\n this.zdither = header.get('ZDITHER0') || 0;\n this.ztile = [];\n for (i = _i = 1, _ref2 = this.znaxis; 1 <= _ref2 ? _i <= _ref2 : _i >= _ref2; i = 1 <= _ref2 ? ++_i : --_i) {\n ztile = header.contains(\"ZTILE\" + i) ? header.get(\"ZTILE\" + i) : i === 1 ? header.get(\"ZNAXIS1\") : 1;\n this.ztile.push(ztile);\n }\n this.width = header.get(\"ZNAXIS1\");\n this.height = header.get(\"ZNAXIS2\") || 1;\n this.algorithmParameters = {};\n if (this.zcmptype === 'RICE_1') {\n this.algorithmParameters[\"BLOCKSIZE\"] = 32;\n this.algorithmParameters[\"BYTEPIX\"] = 4;\n }\n i = 1;\n while (true) {\n key = \"ZNAME\" + i;\n if (!header.contains(key)) {\n break;\n }\n value = \"ZVAL\" + i;\n this.algorithmParameters[header.get(key)] = header.get(value);\n i += 1;\n }\n this.zmaskcmp = header.get(\"ZMASKCMP\");\n this.zquantiz = header.get(\"ZQUANTIZ\") || \"LINEAR_SCALING\";\n this.bzero = header.get(\"BZERO\") || 0;\n this.bscale = header.get(\"BSCALE\") || 1;\n }\n\n CompressedImage.prototype._getRows = function(buffer, nRows) {\n var accessor, arr, blank, data, i, index, nTile, offset, r, rIndex, row, scale, seed0, seed1, value, view, zero, _i, _j, _len, _len1, _ref2, _ref3;\n view = new DataView(buffer);\n offset = 0;\n arr = new Float32Array(this.width * this.height);\n while (nRows--) {\n row = {};\n _ref2 = this.accessors;\n for (index = _i = 0, _len = _ref2.length; _i < _len; index = ++_i) {\n accessor = _ref2[index];\n _ref3 = accessor(view, offset), value = _ref3[0], offset = _ref3[1];\n row[this.columns[index]] = value;\n }\n data = row['COMPRESSED_DATA'] || row['UNCOMPRESSED_DATA'] || row['GZIP_COMPRESSED_DATA'];\n blank = row['ZBLANK'] || this.zblank;\n scale = row['ZSCALE'] || this.bscale;\n zero = row['ZZERO'] || this.bzero;\n nTile = this.height - nRows;\n seed0 = nTile + this.zdither - 1;\n seed1 = (seed0 - 1) % 10000;\n rIndex = parseInt(this.constructor.randomSequence[seed1] * 500);\n for (index = _j = 0, _len1 = data.length; _j < _len1; index = ++_j) {\n value = data[index];\n i = (nTile - 1) * this.width + index;\n if (value === -2147483647) {\n arr[i] = NaN;\n } else if (value === -2147483646) {\n arr[i] = 0;\n } else {\n r = this.constructor.randomSequence[rIndex];\n arr[i] = (value - r + 0.5) * scale + zero;\n }\n rIndex += 1;\n if (rIndex === 10000) {\n seed1 = (seed1 + 1) % 10000;\n rIndex = parseInt(this.randomSequence[seed1] * 500);\n }\n }\n }\n return arr;\n };\n\n CompressedImage.prototype.getFrame = function(nFrame, callback, opts) {\n var heapBlob, reader,\n _this = this;\n if (this.heap) {\n this.frame = nFrame || this.frame;\n return this.getRows(0, this.rows, callback, opts);\n } else {\n heapBlob = this.blob.slice(this.length, this.length + this.heapLength);\n reader = new FileReader();\n reader.onloadend = function(e) {\n _this.heap = e.target.result;\n return _this.getFrame(nFrame, callback, opts);\n };\n return reader.readAsArrayBuffer(heapBlob);\n }\n };\n\n return CompressedImage;\n\n })(BinaryTable);\n\n astro.FITS.CompressedImage = CompressedImage;\n\n HDU = (function() {\n function HDU(header, data) {\n this.header = header;\n this.data = data;\n }\n\n HDU.prototype.hasData = function() {\n if (this.data != null) {\n return true;\n } else {\n return false;\n }\n };\n\n return HDU;\n\n })();\n\n astro.FITS.HDU = HDU;\n\n return astro;\n\n})();\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\nexport let CooConversion = (function() {\n\n let CooConversion = {};\n \n CooConversion.GALACTIC_TO_J2000 = [\n -0.0548755604024359, 0.4941094279435681, -0.8676661489811610,\n -0.8734370902479237, -0.4448296299195045, -0.1980763734646737,\n -0.4838350155267381, 0.7469822444763707, 0.4559837762325372 ];\n \n CooConversion.J2000_TO_GALACTIC = [\n -0.0548755604024359, -0.873437090247923, -0.4838350155267381,\n 0.4941094279435681, -0.4448296299195045, 0.7469822444763707,\n -0.8676661489811610, -0.1980763734646737, 0.4559837762325372 ];\n \n // adapted from www.robertmartinayers.org/tools/coordinates.html\n // radec : array of ra, dec in degrees\n // return coo in degrees\n CooConversion.Transform = function( radec, matrix ) {// returns a radec array of two elements\n radec[0] = radec[0]*Math.PI/180;\n radec[1] = radec[1]*Math.PI/180;\n var r0 = new Array ( \n Math.cos(radec[0]) * Math.cos(radec[1]),\n Math.sin(radec[0]) * Math.cos(radec[1]),\n Math.sin(radec[1]) );\n \n var s0 = new Array (\n r0[0]*matrix[0] + r0[1]*matrix[1] + r0[2]*matrix[2], \n r0[0]*matrix[3] + r0[1]*matrix[4] + r0[2]*matrix[5], \n r0[0]*matrix[6] + r0[1]*matrix[7] + r0[2]*matrix[8] ); \n \n var r = Math.sqrt ( s0[0]*s0[0] + s0[1]*s0[1] + s0[2]*s0[2] ); \n \n var result = new Array ( 0.0, 0.0 );\n result[1] = Math.asin ( s0[2]/r ); // New dec in range -90.0 -- +90.0 \n // or use sin^2 + cos^2 = 1.0 \n var cosaa = ( (s0[0]/r) / Math.cos(result[1] ) );\n var sinaa = ( (s0[1]/r) / Math.cos(result[1] ) );\n result[0] = Math.atan2 (sinaa,cosaa);\n if ( result[0] < 0.0 ) result[0] = result[0] + 2*Math.PI;\n \n result[0] = result[0]*180/Math.PI;\n result[1] = result[1]*180/Math.PI;\n return result;\n };\n \n // coo : array of lon, lat in degrees\n CooConversion.GalacticToJ2000 = function(coo) {\n return CooConversion.Transform(coo, CooConversion.GALACTIC_TO_J2000);\n };\n // coo : array of lon, lat in degrees\n CooConversion.J2000ToGalactic = function(coo) {\n return CooConversion.Transform(coo, CooConversion.J2000_TO_GALACTIC);\n };\n return CooConversion;\n})();\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File Color\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nexport let Color = (function() {\n\n\n let Color = {};\n \n Color.curIdx = 0;\n Color.colors = ['#ff0000', '#0000ff', '#99cc00', '#ffff00','#000066', '#00ffff', '#9900cc', '#0099cc', '#cc9900', '#cc0099', '#00cc99', '#663333', '#ffcc9a', '#ff9acc', '#ccff33', '#660000', '#ffcc33', '#ff00ff', '#00ff00', '#ffffff'];\n\n \n Color.getNextColor = function() {\n var c = Color.colors[Color.curIdx % (Color.colors.length)];\n Color.curIdx++;\n return c;\n };\n\n /** return most suited (ie readable) color for a label, given a background color\n * bkgdColor: color, given as a 'rgb(, , )' . This is returned by $().css('background-color')\n * \n * example call: Color.getLabelColorForBackground('rgb(3, 123, 42)')\n * adapted from http://stackoverflow.com/questions/1855884/determine-font-color-based-on-background-color\n */\n Color.getLabelColorForBackground = function(rgbBkgdColor) {\n var lightLabel = '#eee' \n var darkLabel = '#111' \n var rgb = rgbBkgdColor.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n if (rgb==null) {\n // we return the dark label color if we can't parse the color\n return darkLabel\n }\n var r = parseInt(rgb[1]);\n var g = parseInt(rgb[2]);\n var b = parseInt(rgb[3]);\n \n var d = 0;\n // Counting the perceptive luminance - human eye favors green color... \n var a = 1 - ( 0.299 * r + 0.587 * g + 0.114 * b) / 255;\n\n if (a < 0.5) {\n return darkLabel; // bright color --> dark font\n }\n else {\n return lightLabel; // dark color --> light font\n }\n };\n\n // convert hexadecimal string to r, g, b components\n Color.hexToRgb = function(hex) {\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, function(m, r, g, b) {\n return r + r + g + g + b + b;\n });\n \n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n };\n\n Color.rgbToHex = function (r, g, b) {\n return \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n }\n \n return Color;\n})();\n\n","/******************************************************************************\n * Aladin Lite project\n * \n * File MOC\n *\n * This class represents a MOC (Multi Order Coverage map) layer\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nimport { astro } from \"./libs/fits.js\";\nimport { CooFrameEnum } from \"./CooFrameEnum.js\";\nimport { Aladin } from \"./Aladin.js\";\nimport { ProjectionEnum } from \"./ProjectionEnum.js\";\nimport { Utils } from \"./Utils.js\";\nimport { AladinUtils } from \"./AladinUtils.js\";\nimport { CooConversion } from \"./CooConversion.js\";\nimport { Color } from \"./Color\";\n\n\nexport let MOC = (function() {\n let MOC = function(options) {\n this.order = undefined;\n\n this.uuid = Utils.uuidv4();\n this.type = 'moc';\n\n // TODO homogenize options parsing for all kind of overlay (footprints, catalog, MOC)\n options = options || {};\n this.name = options.name || \"MOC\";\n this.color = options.color || Color.getNextColor();\n this.opacity = options.opacity || 1;\n this.opacity = Math.max(0, Math.min(1, this.opacity)); // 0 <= this.opacity <= 1\n this.lineWidth = options[\"lineWidth\"] || 1;\n this.adaptativeDisplay = options['adaptativeDisplay'] !== false;\n\n this.proxyCalled = false; // this is a flag to check whether we already tried to load the MOC through the proxy\n\n // index of MOC cells at high and low resolution\n this._highResIndexOrder3 = new Array(768);\n this._lowResIndexOrder3 = new Array(768);\n for (var k=0; k<768; k++) {\n this._highResIndexOrder3[k] = {};\n this._lowResIndexOrder3[k] = {};\n }\n\n this.nbCellsDeepestLevel = 0; // needed to compute the sky fraction of the MOC\n\n this.isShowing = true;\n this.ready = false;\n }\n\n \n function log2(val) {\n return Math.log(val) / Math.LN2;\n }\n\n // max norder we can currently handle (limitation of healpix.js)\n MOC.MAX_NORDER = 13; // NSIDE = 8192\n\n MOC.LOWRES_MAXORDER = 6; // 5 or 6 ??\n MOC.HIGHRES_MAXORDER = 11; // ??\n\n // TODO: options to modifiy this ?\n MOC.PIVOT_FOV = 30; // when do we switch from low res cells to high res cells (fov in degrees)\n\n // at end of parsing, we need to remove duplicates from the 2 indexes\n MOC.prototype._removeDuplicatesFromIndexes = function() {\n var a, aDedup;\n for (var k=0; k<768; k++) {\n for (var key in this._highResIndexOrder3[k]) {\n a = this._highResIndexOrder3[k][key];\n aDedup = uniq(a);\n this._highResIndexOrder3[k][key] = aDedup;\n }\n for (var key in this._lowResIndexOrder3[k]) {\n a = this._lowResIndexOrder3[k][key];\n aDedup = uniq(a);\n this._lowResIndexOrder3[k][key] = aDedup;\n }\n }\n \n }\n\n // add pixel (order, ipix)\n MOC.prototype._addPix = function(order, ipix) {\n var ipixOrder3 = Math.floor( ipix * Math.pow(4, (3 - order)) );\n // fill low and high level cells\n // 1. if order <= LOWRES_MAXORDER, just store value in low and high res cells\n if (order<=MOC.LOWRES_MAXORDER) {\n if (! (order in this._lowResIndexOrder3[ipixOrder3])) {\n this._lowResIndexOrder3[ipixOrder3][order] = [];\n this._highResIndexOrder3[ipixOrder3][order] = [];\n }\n this._lowResIndexOrder3[ipixOrder3][order].push(ipix);\n this._highResIndexOrder3[ipixOrder3][order].push(ipix);\n }\n // 2. if LOWRES_MAXORDER < order <= HIGHRES_MAXORDER , degrade ipix for low res cells\n else if (order<=MOC.HIGHRES_MAXORDER) {\n if (! (order in this._highResIndexOrder3[ipixOrder3])) {\n this._highResIndexOrder3[ipixOrder3][order] = [];\n }\n this._highResIndexOrder3[ipixOrder3][order].push(ipix);\n \n var degradedOrder = MOC.LOWRES_MAXORDER; \n var degradedIpix = Math.floor(ipix / Math.pow(4, (order - degradedOrder)));\n var degradedIpixOrder3 = Math.floor( degradedIpix * Math.pow(4, (3 - degradedOrder)) );\n if (! (degradedOrder in this._lowResIndexOrder3[degradedIpixOrder3])) {\n this._lowResIndexOrder3[degradedIpixOrder3][degradedOrder]= [];\n }\n this._lowResIndexOrder3[degradedIpixOrder3][degradedOrder].push(degradedIpix);\n }\n // 3. if order > HIGHRES_MAXORDER , degrade ipix for low res and high res cells\n else {\n // low res cells\n var degradedOrder = MOC.LOWRES_MAXORDER; \n var degradedIpix = Math.floor(ipix / Math.pow(4, (order - degradedOrder)));\n var degradedIpixOrder3 = Math.floor(degradedIpix * Math.pow(4, (3 - degradedOrder)) );\n if (! (degradedOrder in this._lowResIndexOrder3[degradedIpixOrder3])) {\n this._lowResIndexOrder3[degradedIpixOrder3][degradedOrder]= [];\n }\n this._lowResIndexOrder3[degradedIpixOrder3][degradedOrder].push(degradedIpix);\n\n \n // high res cells\n degradedOrder = MOC.HIGHRES_MAXORDER; \n degradedIpix = Math.floor(ipix / Math.pow(4, (order - degradedOrder)));\n var degradedIpixOrder3 = Math.floor(degradedIpix * Math.pow(4, (3 - degradedOrder)) );\n if (! (degradedOrder in this._highResIndexOrder3[degradedIpixOrder3])) {\n this._highResIndexOrder3[degradedIpixOrder3][degradedOrder]= [];\n }\n this._highResIndexOrder3[degradedIpixOrder3][degradedOrder].push(degradedIpix);\n }\n\n this.nbCellsDeepestLevel += Math.pow(4, (this.order - order));\n };\n\n\n /**\n * Return a value between 0 and 1 denoting the fraction of the sky\n * covered by the MOC\n */\n MOC.prototype.skyFraction = function() {\n return this.nbCellsDeepestLevel / (12 * Math.pow(4, this.order));\n };\n\n /**\n * set MOC data by parsing a MOC serialized in JSON\n * (as defined in IVOA MOC document, section 3.1.1)\n */\n MOC.prototype.dataFromJSON = function(jsonMOC) {\n var order, ipix;\n // 1. Compute the order (order of the deepest cells contained in the moc)\n for (var orderStr in jsonMOC) {\n if (jsonMOC.hasOwnProperty(orderStr)) {\n order = parseInt(orderStr);\n if (this.order===undefined || order > this.order) {\n this.order = order;\n }\n }\n }\n\n // 2. Build the mocs (LOW and HIGH res ones)\n for (var orderStr in jsonMOC) {\n if (jsonMOC.hasOwnProperty(orderStr)) {\n order = parseInt(orderStr);\n for (var k=0; k let's try again through the proxy\n if (this.hdus.length == 0) {\n if (self.proxyCalled !== true) {\n self.proxyCalled = true;\n var proxiedURL = Aladin.JSONP_PROXY + '?url=' + encodeURIComponent(self.dataURL);\n new astro.FITS(proxiedURL, callback);\n }\n\n return;\n }\n hdr0 = this.getHeader(0);\n }\n catch (e) {\n console.error('Could not get header of extension #0');\n return;\n }\n var hdr1 = this.getHeader(1);\n\n if (hdr0.contains('HPXMOC')) {\n self.order = hdr0.get('HPXMOC')\n }\n else if (hdr0.contains('MOCORDER')) {\n self.order = hdr0.get('MOCORDER')\n }\n else if (hdr1.contains('HPXMOC')) {\n self.order = hdr1.get('HPXMOC')\n }\n else if (hdr1.contains('MOCORDER')) {\n self.order = hdr1.get('MOCORDER')\n }\n else {\n console.error('Can not find MOC order in FITS file');\n return;\n }\n\n\n var data = this.getDataUnit(1);\n var colName = data.columns[0];\n data.getRows(0, data.rows, function(rows) {\n for (var k=0; k MOC.PIVOT_FOV && this.adaptativeDisplay ? this._lowResIndexOrder3 : this._highResIndexOrder3;\n\n this._drawCells(ctx, mocCells, fov, projection, viewFrame, CooFrameEnum.J2000, width, height, largestDim, zoomFactor);\n };\n\n MOC.prototype._drawCells = function(ctx, mocCellsIdxOrder3, fov, projection, viewFrame, surveyFrame, width, height, largestDim, zoomFactor) {\n ctx.lineWidth = this.lineWidth;\n // if opacity==1, we draw solid lines, else we fill each HEALPix cell\n if (this.opacity==1) {\n ctx.strokeStyle = this.color;\n }\n else {\n ctx.fillStyle = this.color;\n ctx.globalAlpha = this.opacity;\n }\n\n\n ctx.beginPath();\n\n var orderedKeys = [];\n for (var k=0; k<768; k++) {\n var mocCells = mocCellsIdxOrder3[k];\n for (var key in mocCells) {\n orderedKeys.push(parseInt(key));\n }\n }\n orderedKeys.sort(function(a, b) {return a - b;});\n var norderMax = orderedKeys[orderedKeys.length-1];\n\n var nside, xyCorners, ipix;\n var potentialVisibleHpxCellsOrder3 = this.view.getVisiblePixList(3);\n var visibleHpxCellsOrder3 = [];\n // let's test first all potential visible cells and keep only the one with a projection inside the view\n for (var k=0; k=width && cornersXYView[1].vx>=width && cornersXYView[2].vx>=width &&cornersXYView[3].vx>=width) {\n return null;\n }\n if( cornersXYView[0].vy>=height && cornersXYView[1].vy>=height && cornersXYView[2].vy>=height &&cornersXYView[3].vy>=height) {\n return null;\n }\n\n // check if we have a pixel at the edge of the view in allsky projections\n //if (projection.PROJECTION!=ProjectionEnum.SIN && projection.PROJECTION!=ProjectionEnum.TAN) {\n // Faster approach: when a vertex from a cell gets to the other side of the projection\n // its vertices order change from counter-clockwise to clockwise!\n // So if the vertices describing a cell are given in clockwise order\n // we know it crosses the projection, so we do not plot them!\n if (!AladinUtils.counterClockwiseTriangle(cornersXYView[0].vx, cornersXYView[0].vy, cornersXYView[1].vx, cornersXYView[1].vy, cornersXYView[2].vx, cornersXYView[2].vy) ||\n !AladinUtils.counterClockwiseTriangle(cornersXYView[0].vx, cornersXYView[0].vy, cornersXYView[2].vx, cornersXYView[2].vy, cornersXYView[3].vx, cornersXYView[3].vy)) {\n return null;\n }\n //}\n\n //cornersXYView = AladinUtils.grow2(cornersXYView, 1);\n return cornersXYView;\n };\n\n MOC.prototype.reportChange = function() {\n this.view && this.view.requestRedraw();\n };\n\n MOC.prototype.show = function() {\n if (this.isShowing) {\n return;\n }\n this.isShowing = true;\n this.reportChange();\n };\n\n MOC.prototype.hide = function() {\n if (! this.isShowing) {\n return;\n }\n this.isShowing = false;\n this.reportChange();\n };\n\n // Tests whether a given (ra, dec) point on the sky is within the current MOC object\n //\n // returns true if point is contained, false otherwise\n MOC.prototype.contains = function(ra, dec) {\n var hpxIdx = new HealpixIndex(Math.pow(2, this.order));\n hpxIdx.init();\n var polar = HealpixIndex.utils.radecToPolar(ra, dec);\n var ipix = hpxIdx.ang2pix_nest(polar.theta, polar.phi);\n var ipixMapByOrder = {};\n for (var curOrder=0; curOrder<=this.order; curOrder++) {\n ipixMapByOrder[curOrder] = Math.floor(ipix / Math.pow(4, this.order - curOrder));\n }\n\n // first look for large HEALPix cells (order<3)\n for (var ipixOrder3=0; ipixOrder3<768; ipixOrder3++) {\n var mocCells = this._highResIndexOrder3[ipixOrder3];\n for (var order in mocCells) {\n if (order<3) {\n for (var k=mocCells[order].length; k>=0; k--) {\n if (ipixMapByOrder[order] == mocCells[order][k]) {\n return true;\n } \n }\n }\n }\n }\n\n // look for finer cells\n var ipixOrder3 = ipixMapByOrder[3];\n var mocCells = this._highResIndexOrder3[ipixOrder3];\n for (var order in mocCells) {\n for (var k=mocCells[order].length; k>=0; k--) {\n if (ipixMapByOrder[order] == mocCells[order][k]) {\n return true;\n } \n }\n }\n\n return false;\n };\n\n\n\n return MOC;\n\n})();\n\n \n","// Copyright 2015 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * Class Line\n * \n * A line is a graphical overlay connecting 2 points\n * \n * Author: Matthieu Baumann[CDS]\n * \n *****************************************************************************/\n\nexport let Line = (function() {\n // constructor\n let Line = function(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n };\n\n // Method for testing whether a line is inside the view\n // http://www.jeffreythompson.org/collision-detection/line-rect.php\n Line.prototype.isInsideView = function(rw, rh) {\n if (this.x1 >= 0 && this.x1 <= rw && this.y1 >= 0 && this.y1 <= rh) {\n return true;\n }\n if (this.x2 >= 0 && this.x2 <= rw && this.y2 >= 0 && this.y2 <= rh) {\n return true;\n }\n\n // check if the line has hit any of the rectangle's sides\n // uses the Line/Line function below\n let left = Line.intersectLine(this.x1, this.y1, this.x2, this.y2, 0, 0, 0, rh);\n let right = Line.intersectLine(this.x1, this.y1, this.x2, this.y2, rw, 0, rw, rh);\n let top = Line.intersectLine(this.x1, this.y1, this.x2, this.y2, 0, 0, rw, 0);\n let bottom = Line.intersectLine(this.x1, this.y1, this.x2, this.y2, 0, rh, rw, rh);\n \n // if ANY of the above are true, the line\n // has hit the rectangle\n if (left || right || top || bottom) {\n return true;\n }\n\n return false;\n };\n\n Line.prototype.draw = function(ctx) {\n ctx.moveTo(this.x1, this.y1);\n ctx.lineTo(this.x2, this.y2);\n };\n\n Line.intersectLine = function(x1, y1, x2, y2, x3, y3, x4, y4) {\n // Calculate the direction of the lines\n let uA = ((x4-x3)*(y1-y3) - (y4-y3)*(x1-x3)) / ((y4-y3)*(x2-x1) - (x4-x3)*(y2-y1));\n let uB = ((x2-x1)*(y1-y3) - (y2-y1)*(x1-x3)) / ((y4-y3)*(x2-x1) - (x4-x3)*(y2-y1));\n \n // If uA and uB are between 0-1, lines are colliding\n if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n return true;\n }\n return false;\n };\n\n return Line;\n})();","// Copyright 2015 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File Overlay\n *\n * Description: a plane holding overlays (footprints, polylines, circles)\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nimport { AladinUtils } from \"./AladinUtils.js\";\nimport { Footprint } from \"./Footprint.js\";\nimport { CooFrameEnum } from \"./CooFrameEnum.js\";\nimport { Line } from './Line.js';\nimport { Utils } from './Utils.js';\n\nexport let Overlay = (function() {\n let Overlay = function(options) {\n options = options || {};\n\n this.uuid = Utils.uuidv4();\n this.type = 'overlay';\n\n \tthis.name = options.name || \"overlay\";\n \tthis.color = options.color || Color.getNextColor();\n \n \tthis.lineWidth = options[\"lineWidth\"] || 2;\n \t\n \t//this.indexationNorder = 5; // at which level should we index overlays?\n \tthis.overlays = [];\n \tthis.overlay_items = []; // currently Circle or Polyline\n \t//this.hpxIdx = new HealpixIndex(this.indexationNorder);\n \t//this.hpxIdx.init();\n \t\n \tthis.isShowing = true;\n };\n \n\n // TODO : show/hide methods should be integrated in a parent class \n Overlay.prototype.show = function() {\n if (this.isShowing) {\n return;\n }\n this.isShowing = true;\n this.reportChange();\n };\n \n Overlay.prototype.hide = function() {\n if (! this.isShowing) {\n return;\n }\n this.isShowing = false;\n this.reportChange();\n };\n \n // return an array of Footprint from a STC-S string\n Overlay.parseSTCS = function(stcs) {\n var footprints = [];\n var parts = stcs.match(/\\S+/g);\n var k = 0, len = parts.length;\n while(k 6, e.g. `E0F` --> `EE00FF`\n if(hex.length == 3){\n hex = hex.replace(/(.)/g, '$1$1');\n }\n\n var r = parseInt(hex.substr(0, 2), 16),\n g = parseInt(hex.substr(2, 2), 16),\n b = parseInt(hex.substr(4, 2), 16);\n\n return '#' +\n ((0|(1<<8) + r + (256 - r) * percent / 100).toString(16)).substr(1) +\n ((0|(1<<8) + g + (256 - g) * percent / 100).toString(16)).substr(1) +\n ((0|(1<<8) + b + (256 - b) * percent / 100).toString(16)).substr(1);\n };\n \n \n Overlay.prototype.drawFootprint = function(f, ctx, projection, frame, width, height, largestDim, zoomFactor) {\n if (! f.isShowing) {\n return null;\n }\n var xyviewArray = [];\n //var show = false;\n var radecArray = f.polygons;\n for(var l=0; l=0 && xyview.vy<=height && xyview.vy>=0) {\n show = true;\n }\n }\n\n if (show) {\n ctx.moveTo(xyviewArray[0].vx, xyviewArray[0].vy);\n for (var k=1, len=xyviewArray.length; k
');\n var m = '
';\n m += '
';\n for (var key in this.data) {\n m += '';\n }\n m += '
' + key + '' + this.data[key] + '
';\n m += '';\n view.popup.setText(m);\n view.popup.setSource(this);\n view.popup.show();\n }\n else if (typeof this.catalog.onClick === 'function') {\n this.catalog.onClick(this);\n view.lastClickedObject = this;\n }\n\n }\n };\n\n \n Source.prototype.actionOtherObjectClicked = function() {\n if (this.catalog && this.catalog.onClick) {\n this.deselect();\n }\n };\n \n return Source;\n})();\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File Catalog\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nimport { Source } from \"./Source.js\"\nimport { Color } from \"./Color.js\"\n//import { HealpixIndex } from \"./libs/healpix.js\";\nimport { CooFrameEnum } from \"./CooFrameEnum.js\";\nimport { Utils } from \"./Utils.js\";\nimport { AladinUtils } from \"./AladinUtils.js\";\nimport { Coo } from \"./libs/astro/coo.js\";\n\n// TODO : harmoniser parsing avec classe ProgressiveCat\nexport let Catalog = (function() {\n\n function Catalog(options) {\n options = options || {};\n\n this.uuid = Utils.uuidv4();\n this.type = 'catalog';\n this.name = options.name || \"catalog\";\n \tthis.color = options.color || Color.getNextColor();\n \tthis.sourceSize = options.sourceSize || 8;\n \tthis.markerSize = options.sourceSize || 12;\n \tthis.shape = options.shape || \"square\";\n this.maxNbSources = options.limit || undefined;\n this.onClick = options.onClick || undefined;\n\n this.raField = options.raField || undefined; // ID or name of the field holding RA\n this.decField = options.decField || undefined; // ID or name of the field holding dec\n\n \tthis.indexationNorder = 5; // à quel niveau indexe-t-on les sources\n \tthis.sources = [];\n \t//this.hpxIdx = new HealpixIndex(this.indexationNorder);\n \t//this.hpxIdx.init();\n\n this.displayLabel = options.displayLabel || false;\n this.labelColor = options.labelColor || this.color;\n this.labelFont = options.labelFont || '10px sans-serif';\n if (this.displayLabel) {\n this.labelColumn = options.labelColumn;\n if (!this.labelColumn) {\n this.displayLabel = false;\n }\n }\n \t\n if (this.shape instanceof Image || this.shape instanceof HTMLCanvasElement) {\n this.sourceSize = this.shape.width;\n }\n this._shapeIsFunction = false; // if true, the shape is a function drawing on the canvas\n if ($.isFunction(this.shape)) {\n this._shapeIsFunction = true;\n }\n \n \tthis.selectionColor = '#00ff00';\n \t\n\n // create this.cacheCanvas \t\n \t// cacheCanvas permet de ne créer le path de la source qu'une fois, et de le réutiliser (cf. http://simonsarris.com/blog/427-increasing-performance-by-caching-paths-on-canvas)\n this.updateShape(options);\n\n this.cacheMarkerCanvas = document.createElement('canvas');\n this.cacheMarkerCanvas.width = this.markerSize;\n this.cacheMarkerCanvas.height = this.markerSize;\n var cacheMarkerCtx = this.cacheMarkerCanvas.getContext('2d');\n cacheMarkerCtx.fillStyle = this.color;\n cacheMarkerCtx.beginPath();\n var half = (this.markerSize)/2.;\n cacheMarkerCtx.arc(half, half, half-2, 0, 2 * Math.PI, false);\n cacheMarkerCtx.fill();\n cacheMarkerCtx.lineWidth = 2;\n cacheMarkerCtx.strokeStyle = '#ccc';\n cacheMarkerCtx.stroke();\n \n\n this.isShowing = true;\n };\n \n Catalog.createShape = function(shapeName, color, sourceSize) {\n if (shapeName instanceof Image || shapeName instanceof HTMLCanvasElement) { // in this case, the shape is already created\n return shapeName;\n }\n var c = document.createElement('canvas');\n c.width = c.height = sourceSize;\n var ctx= c.getContext('2d');\n ctx.beginPath();\n ctx.strokeStyle = color;\n ctx.lineWidth = 2.0;\n if (shapeName==\"plus\") {\n ctx.moveTo(sourceSize/2., 0);\n ctx.lineTo(sourceSize/2., sourceSize);\n ctx.stroke();\n \n ctx.moveTo(0, sourceSize/2.);\n ctx.lineTo(sourceSize, sourceSize/2.);\n ctx.stroke();\n }\n else if (shapeName==\"cross\") {\n ctx.moveTo(0, 0);\n ctx.lineTo(sourceSize-1, sourceSize-1);\n ctx.stroke();\n \n ctx.moveTo(sourceSize-1, 0);\n ctx.lineTo(0, sourceSize-1);\n ctx.stroke();\n }\n else if (shapeName==\"rhomb\") {\n ctx.moveTo(sourceSize/2, 0);\n ctx.lineTo(0, sourceSize/2);\n ctx.lineTo(sourceSize/2, sourceSize);\n ctx.lineTo(sourceSize, sourceSize/2);\n ctx.lineTo(sourceSize/2, 0);\n ctx.stroke();\n }\n else if (shapeName==\"triangle\") {\n ctx.moveTo(sourceSize/2, 0);\n ctx.lineTo(0, sourceSize-1);\n ctx.lineTo(sourceSize-1, sourceSize-1);\n ctx.lineTo(sourceSize/2, 0);\n ctx.stroke();\n }\n else if (shapeName==\"circle\") {\n ctx.arc(sourceSize/2, sourceSize/2, sourceSize/2 - 1, 0, 2*Math.PI, true);\n ctx.stroke();\n }\n else { // default shape: square\n ctx.moveTo(1, 0);\n ctx.lineTo(1, sourceSize-1);\n ctx.lineTo( sourceSize-1, sourceSize-1);\n ctx.lineTo( sourceSize-1, 1);\n ctx.lineTo(1, 1);\n ctx.stroke();\n }\n \n return c;\n \n };\n \n\n // find RA, Dec fields among the given fields\n //\n // @param fields: list of objects with ucd, unit, ID, name attributes\n // @param raField: index or name of right ascension column (might be undefined)\n // @param decField: index or name of declination column (might be undefined)\n //\n function findRADecFields(fields, raField, decField) {\n var raFieldIdx, decFieldIdx;\n raFieldIdx = decFieldIdx = null;\n\n // first, look if RA/DEC fields have been already given\n if (raField) { // ID or name of RA field given at catalogue creation\n for (var l=0, len=fields.length; l0) {\n prefix = '';\n }\n else {\n // Select all data in the document\n prefix = $xml.find(\"*\").first();\n\n if (prefix.length==0) {\n return '';\n }\n\n // get name of the first tag\n prefix = prefix.prop(\"tagName\");\n\n var idx = prefix.indexOf(':');\n\n prefix = prefix.substring(0, idx) + \"\\\\:\";\n\n\n }\n\n return prefix;\n }\n\n function doParseVOTable(xml, callback) {\n xml = xml.replace(/^\\s+/g, ''); // we need to trim whitespaces at start of document\n var attributes = [\"name\", \"ID\", \"ucd\", \"utype\", \"unit\", \"datatype\", \"arraysize\", \"width\", \"precision\"];\n \n var fields = [];\n var k = 0;\n var $xml = $($.parseXML(xml));\n var prefix = getPrefix($xml);\n $xml.find(prefix + \"FIELD\").each(function() {\n var f = {};\n for (var i=0; i {\n radec.push({ra: s.ra, dec: s.dec});\n })\n var sourcesXY = catalogInstance.view.aladin.webglAPI.worldToScreenVec(radec);\n let sourcesInView = [];\n /*\n // TODO : we could factorize this code with Aladin.world2pix\n var xy;\n if (frame.system != CooFrameEnum.SYSTEMS.J2000) {\n var lonlat = CooConversion.J2000ToGalactic([s.ra, s.dec]);\n xy = projection.project(lonlat[0], lonlat[1]);\n }\n else {\n xy = projection.project(s.ra, s.dec);\n }\n */\n for(var i = 0; i < sources.length; i++) {\n let xy = [sourcesXY[2*i], sourcesXY[2*i + 1]];\n\n if(xy[0] != -1 && xy[1] != -1) {\n let s = sources[i];\n //var xyview = AladinUtils.xyToView(xy.X, xy.Y, width, height, largestDim, zoomFactor, true);\n var xyview = {vx: xy[0], vy: xy[1]};\n var max = s.popup ? 100 : s.sourceSize;\n if (xyview) {\n // TODO : index sources by HEALPix cells at level 3, 4 ?\n \n // check if source is visible in view\n if (xyview.vx>(width+max) || xyview.vx<(0-max) ||\n xyview.vy>(height+max) || xyview.vy<(0-max)) {\n s.x = s.y = undefined;\n } else {\n s.x = xyview.vx;\n s.y = xyview.vy;\n if (catalogInstance._shapeIsFunction) {\n catalogInstance.shape(s, ctx, catalogInstance.view.getViewParams());\n }\n else if (s.marker && s.useMarkerDefaultIcon) {\n ctx.drawImage(catalogInstance.cacheMarkerCanvas, s.x-sourceSize/2, s.y-sourceSize/2);\n }\n else {\n ctx.drawImage(catalogInstance.cacheCanvas, s.x-catalogInstance.cacheCanvas.width/2, s.y-catalogInstance.cacheCanvas.height/2);\n }\n \n // has associated popup ?\n if (s.popup) {\n s.popup.setPosition(s.x, s.y);\n }\n }\n }\n \n sourcesInView.push(s);\n }\n }\n\n return sourcesInView;\n };\n \n Catalog.drawSource = function(catalogInstance, s, ctx, width, height) {\n if (! s.isShowing) {\n return false;\n }\n var sourceSize = catalogInstance.sourceSize;\n //console.log('COMPUTE', aladin.webglAPI.worldToScreen(s.ra, s.dec));\n var xy = catalogInstance.view.aladin.webglAPI.worldToScreen(s.ra, s.dec);\n\n /*\n // TODO : we could factorize this code with Aladin.world2pix\n var xy;\n if (frame.system != CooFrameEnum.SYSTEMS.J2000) {\n var lonlat = CooConversion.J2000ToGalactic([s.ra, s.dec]);\n xy = projection.project(lonlat[0], lonlat[1]);\n }\n else {\n xy = projection.project(s.ra, s.dec);\n }\n */\n\n if (xy) {\n //var xyview = AladinUtils.xyToView(xy.X, xy.Y, width, height, largestDim, zoomFactor, true);\n var xyview = {vx: xy[0], vy: xy[1]};\n var max = s.popup ? 100 : s.sourceSize;\n if (xyview) {\n // TODO : index sources by HEALPix cells at level 3, 4 ?\n\n // check if source is visible in view\n if (xyview.vx>(width+max) || xyview.vx<(0-max) ||\n xyview.vy>(height+max) || xyview.vy<(0-max)) {\n s.x = s.y = undefined;\n return false;\n }\n\n s.x = xyview.vx;\n s.y = xyview.vy;\n if (catalogInstance._shapeIsFunction) {\n catalogInstance.shape(s, ctx, catalogInstance.view.getViewParams());\n }\n else if (s.marker && s.useMarkerDefaultIcon) {\n ctx.drawImage(catalogInstance.cacheMarkerCanvas, s.x-sourceSize/2, s.y-sourceSize/2);\n }\n else {\n ctx.drawImage(catalogInstance.cacheCanvas, s.x-catalogInstance.cacheCanvas.width/2, s.y-catalogInstance.cacheCanvas.height/2);\n }\n\n // has associated popup ?\n if (s.popup) {\n s.popup.setPosition(s.x, s.y);\n }\n }\n return true;\n }\n else {\n return false;\n }\n };\n \n Catalog.drawSourceSelection = function(catalogInstance, s, ctx) {\n if (!s || !s.isShowing || !s.x || !s.y) {\n return;\n }\n var sourceSize = catalogInstance.selectSize;\n \n ctx.drawImage(catalogInstance.cacheSelectCanvas, s.x-sourceSize/2, s.y-sourceSize/2);\n };\n\n Catalog.drawSourceLabel = function(catalogInstance, s, ctx) {\n if (!s || !s.isShowing || !s.x || !s.y) {\n return;\n }\n\n var label = s.data[catalogInstance.labelColumn];\n if (!label) {\n return;\n }\n\n ctx.fillText(label, s.x, s.y);\n };\n\n \n // callback function to be called when the status of one of the sources has changed\n Catalog.prototype.reportChange = function() {\n this.view && this.view.requestRedraw();\n };\n \n Catalog.prototype.show = function() {\n if (this.isShowing) {\n return;\n }\n this.isShowing = true;\n this.reportChange();\n };\n \n Catalog.prototype.hide = function() {\n if (! this.isShowing) {\n return;\n }\n this.isShowing = false;\n if (this.view && this.view.popup && this.view.popup.source && this.view.popup.source.catalog==this) {\n this.view.popup.hide();\n }\n\n this.reportChange();\n };\n\n return Catalog;\n})();\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File ProgressiveCat.js\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\n import { Catalog } from \"./Catalog.js\";\n import { Source } from \"./Source.js\";\n import { Color } from \"./Color.js\";\n import { Coo } from \"./libs/astro/coo.js\";\n import { Utils } from \"./Utils.js\";\n import { CooFrameEnum } from \"./CooFrameEnum.js\";\n\n// TODO: index sources according to their HEALPix ipix\n// TODO : merge parsing with class Catalog\nexport let ProgressiveCat = (function() {\n \n // TODO : test if CORS support. If no, need to pass through a proxy\n // currently, we suppose CORS is supported\n \n // constructor\n let ProgressiveCat = function(rootUrl, frameStr, maxOrder, options) {\n options = options || {};\n\n this.uuid = Utils.uuidv4();\n this.type = 'progressivecat';\n \n this.rootUrl = rootUrl; // TODO: method to sanitize rootURL (absolute, no duplicate slashes, remove end slash if existing)\n // fast fix for HTTPS support --> will work for all HiPS served by CDS\n if (Utils.isHttpsContext() && ( /u-strasbg.fr/i.test(this.rootUrl) || /unistra.fr/i.test(this.rootUrl) ) ) {\n this.rootUrl = this.rootUrl.replace('http://', 'https://');\n }\n\n this.frameStr = frameStr;\n this.frame = CooFrameEnum.fromString(frameStr) || CooFrameEnum.J2000;\n this.maxOrder = maxOrder;\n this.isShowing = true; // TODO : inherit from catalogue\n\n this.name = options.name || \"progressive-cat\";\n this.color = options.color || Color.getNextColor();\n this.shape = options.shape || \"square\";\n this.sourceSize = options.sourceSize || 6;\n this.selectSize = this.sourceSize + 2;\n this.selectionColor = '#00ff00'; // TODO: to be merged with Catalog\n\n // allows for filtering of sources\n this.filterFn = options.filter || undefined; // TODO: do the same for catalog\n\n\n this.onClick = options.onClick || undefined; // TODO: inherit from catalog\n\n \n\n // we cache the list of sources in each healpix tile. Key of the cache is norder+'-'+npix\n this.sourcesCache = new Utils.LRUCache(256);\n\n this.updateShape(options);\n\n\n\n\n this.maxOrderAllsky = 2;\n this.isReady = false;\n };\n\n // TODO: to be put higher in the class diagram, in a HiPS generic class\n ProgressiveCat.readProperties = function(rootUrl, successCallback, errorCallback) {\n if (! successCallback) {\n return;\n }\n\n var propertiesURL = rootUrl + '/properties';\n $.ajax({\n url: propertiesURL,\n method: 'GET',\n dataType: 'text',\n success: function(propertiesTxt) {\n var props = {};\n var lines = propertiesTxt.split('\\n');\n for (var k=0; kthis.maxOrder) {\n norder = this.maxOrder;\n }\n if (norder<=this.maxOrderAllsky) {\n return; // nothing to do, hurrayh !\n }\n var cells = this.view.getVisibleCells(norder);\n\n var ipixList, ipix;\n for (var curOrder=3; curOrder<=norder; curOrder++) {\n ipixList = [];\n for (var k=0; k, dec: }\n * if not successful, errorCallback is called\n */\n Sesame.getTargetRADec = function(target, callback, errorCallback) {\n if (!callback) {\n return;\n }\n var isObjectName = /[a-zA-Z]/.test(target);\n\n // try to parse as a position\n if ( ! isObjectName) {\n var coo = new Coo();\n\n coo.parse(target);\n if (callback) {\n callback({ra: coo.lon, dec: coo.lat});\n }\n }\n // ask resolution by Sesame\n else {\n Sesame.resolve(target,\n function(data) { // success callback\n callback({ra: data.Target.Resolver.jradeg,\n dec: data.Target.Resolver.jdedeg});\n },\n\n function(data) { // error callback\n if (errorCallback) {\n errorCallback();\n }\n }\n );\n }\n };\n \n Sesame.resolve = function(objectName, callbackFunctionSuccess, callbackFunctionError) {\n var sesameUrl = Sesame.SESAME_URL;\n if (Utils.isHttpsContext()) {\n sesameUrl = sesameUrl.replace('http://', 'https://')\n }\n \n\n $.ajax({\n url: sesameUrl ,\n data: {\"object\": objectName},\n method: 'GET',\n dataType: 'jsonp',\n success: function(data) {\n if (data.Target && data.Target.Resolver && data.Target.Resolver) {\n callbackFunctionSuccess(data);\n }\n else {\n callbackFunctionError(data);\n }\n },\n error: callbackFunctionError\n });\n };\n \n return Sesame;\n})();\n\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File MeasurementTable\n *\n * Graphic object showing measurement of a catalog\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\nexport let MeasurementTable = (function() {\n\n\n // constructor\n function MeasurementTable(aladinLiteDiv) {\n this.isShowing = false;\n\n this.divEl = $('
');\n \n $(aladinLiteDiv).append(this.divEl);\n }\n\n // show measurement associated with a given source\n MeasurementTable.prototype.showMeasurement = function(source) {\n this.divEl.empty();\n var header = '';\n var content = '';\n for (let key in source.data) {\n header += '' + key + '';\n content += '' + source.data[key] + '';\n }\n header += '';\n content += '';\n this.divEl.append('' + header + content + '
');\n this.show();\n };\n\n MeasurementTable.prototype.show = function() {\n this.divEl.show();\n };\n \n MeasurementTable.prototype.hide = function() {\n this.divEl.hide();\n };\n \n \n return MeasurementTable;\n})();\n\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File Location.js\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\n\nimport { Coo } from \"./libs/astro/coo.js\";\nimport { CooFrameEnum } from \"./CooFrameEnum.js\";\n\nexport let Location = (function () {\n // constructor\n function Location(locationDiv) {\n this.$div = $(locationDiv);\n };\n\n Location.prototype.update = function (lon, lat, cooFrame, isViewCenterPosition) {\n var coo = new Coo(lon, lat, 7);\n if (cooFrame == CooFrameEnum.J2000) {\n this.$div.html(coo.format('s/'));\n }\n else if (cooFrame == CooFrameEnum.J2000d) {\n this.$div.html(coo.format('d/'));\n }\n else {\n this.$div.html(coo.format('d/'));\n }\n\n this.$div.toggleClass('aladin-reticleColor', isViewCenterPosition);\n };\n\n return Location;\n})();\n\n","// Copyright 2013-2017 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File HiPSDefinition\n * \n * Author: Thomas Boch [CDS]\n * \n *****************************************************************************/\n\nimport { Utils } from \"./Utils.js\";\n\nexport let HiPSDefinition = (function() {\n\n // constructor\n function HiPSDefinition(properties) {\n this.properties = properties; // key-value object corresponding to the properties file\n\n this.id = this.getID();\n this.obsTitle = properties['obs_title'];\n this.frame = properties['hips_frame'];\n this.order = parseInt(properties['hips_order']);\n this.clientSortKey = properties['client_sort_key'];\n this.tileFormats = properties.hasOwnProperty('hips_tile_format') && properties['hips_tile_format'].split(' ');\n this.urls = [];\n this.urls.push(properties['hips_service_url']);\n var k = 1;\n while (properties.hasOwnProperty('hips_service_url_' + k)) {\n this.urls.push(properties['hips_service_url_' + k]);\n k++;\n }\n\n this.clientApplications = properties['client_application'];\n };\n\n HiPSDefinition.prototype = {\n\n getServiceURLs: function(httpsOnly) {\n httpsOnly = httpsOnly === true;\n\n // TODO: TO BE COMPLETED\n },\n\n // return the ID according to the properties\n getID: function() {\n // ID is explicitely given\n if (this.properties.hasOwnProperty('ID')) {\n return this.properties['ID'];\n }\n\n var id = null;\n // ID might be built from different fields\n if (this.properties.hasOwnProperty('creator_did')) {\n id = this.properties['creator_did'];\n }\n if (id==null && this.properties.hasOwnProperty('publisher_did')) {\n id = this.properties['publisher_did'];\n }\n\n if (id != null) {\n // remove ivo:// prefix\n if (id.slice(0, 6) === 'ivo://') {\n id = id.slice(6);\n }\n\n // '?' are replaced by '/'\n id = id.replace(/\\?/g, '/')\n }\n\n return id;\n }\n\n\n\n };\n\n // cache (at the source code level) of the list of HiPS\n // this is the result to a query to http://alasky.u-strasbg.fr/MocServer/query?dataproduct_type=image&client_application=AladinLite&fmt=json&fields=ID,obs_title,client_sort_key,client_application,hips_service_url*,hips_order,hips_tile_format,hips_frame\n var AL_CACHE_CLASS_LEVEL = [\n /*{\n \"ID\": \"CDS/P/2MASS/color\",\n \"obs_title\": \"2MASS color J (1.23 microns), H (1.66 microns), K (2.16 microns)\",\n \"client_sort_key\": \"04-001-00\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"9\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/2MASS/Color\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/2MASS/Color\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/2MASS/Color\"\n }, {\n \"ID\": \"CDS/P/AKARI/FIS/Color\",\n \"obs_title\": \"AKARI Far-infrared All-Sky Survey - color composition WideL/WideS/N60\",\n \"client_sort_key\": \"04-05-00\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"5\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"png jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/AKARI-FIS/ColorLSN60\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/AKARI-FIS/ColorLSN60\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/AKARI-FIS/ColorLSN60\"\n }, {\n \"ID\": \"CDS/P/DECaLS/DR3/color\",\n \"obs_title\": \"DECaLS DR3 color\",\n \"hips_frame\": \"equatorial\",\n \"hips_order\": \"11\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/DECaLS/DR3/color\"\n}, {\n \"ID\": \"CDS/P/DSS2/blue\",\n \"obs_title\": \"DSS2 Blue (XJ+S)\",\n \"client_sort_key\": \"03-01-03\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"9\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"jpeg fits\",\n \"hips_service_url\": \"http://alasky.unistra.fr/DSS/DSS2-blue-XJ-S\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/DSS/DSS2-blue-XJ-S\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/DSS/DSS2-blue-XJ-S\",\n \"hips_service_url_3\": \"http://healpix.ias.u-psud.fr/DSS2Blue\"\n}, {\n \"ID\": \"CDS/P/DSS2/color\",\n \"obs_title\": \"DSS colored\",\n \"client_sort_key\": \"03-00\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"9\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/DSS/DSSColor\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/DSS/DSSColor\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/DSS/DSSColor\",\n \"hips_service_url_3\": \"http://healpix.ias.u-psud.fr/DSSColorNew\",\n \"hips_service_url_4\": \"http://skies.esac.esa.int/DSSColor/\"\n}, {\n \"ID\": \"CDS/P/DSS2/red\",\n \"obs_title\": \"DSS2 Red (F+R)\",\n \"client_sort_key\": \"03-01-02\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"9\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"jpeg fits\",\n \"hips_service_url\": \"http://alasky.unistra.fr/DSS/DSS2Merged\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/DSS/DSS2Merged\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/DSS/DSS2Merged\",\n \"hips_service_url_3\": \"http://healpix.ias.u-psud.fr/DSS2Merged\"\n}, {\n \"ID\": \"P/PanSTARRS/DR1/g\",\n \"hips_service_url\": \"http://alasky.u-strasbg.fr/Pan-STARRS/DR1/g\",\n \"obs_title\": \"PanSTARRS DR1 g\",\n \"hips_order\": 11,\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"jpeg fits\"\n}, {\n \"ID\": \"CDS/P/Fermi/color\",\n \"obs_title\": \"Fermi Color HEALPix survey\",\n \"client_sort_key\": \"00-01-01\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"3\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/Fermi/Color\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/Fermi/Color\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/Fermi/Color\"\n}, {\n \"ID\": \"CDS/P/Finkbeiner\",\n \"obs_title\": \"Finkbeiner Halpha composite survey\",\n \"client_sort_key\": \"06-01\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"3\",\n \"hips_frame\": \"galactic\",\n \"hips_tile_format\": \"jpeg fits\",\n \"hips_service_url\": \"http://alasky.unistra.fr/FinkbeinerHalpha\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/FinkbeinerHalpha\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/FinkbeinerHalpha\"\n}, {\n \"ID\": \"CDS/P/GALEXGR6/AIS/color\",\n \"obs_title\": \"GALEX GR6 AIS (until March 2014)- Color composition\",\n \"client_sort_key\": \"02-01-01\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"8\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"png jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/GALEX/GR6-03-2014/AIS-Color\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/GALEX/GR6-03-2014/AIS-Color\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/GALEX/GR6-03-2014/AIS-Color\"\n}, {\n \"ID\": \"CDS/P/IRIS/color\",\n \"obs_title\": \"IRAS-IRIS HEALPix survey, color\",\n \"client_sort_key\": \"04-02-01\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"3\",\n \"hips_frame\": \"galactic\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/IRISColor\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/IRISColor\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/IRISColor\",\n \"hips_service_url_3\": \"http://healpix.ias.u-psud.fr/IRISColor\",\n \"hips_service_url_4\": \"http://skies.esac.esa.int/IRISColor/\"\n}, {\n \"ID\": \"CDS/P/Mellinger/color\",\n \"obs_title\": \"Mellinger optical survey, color\",\n \"client_sort_key\": \"03-03\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"4\",\n \"hips_frame\": \"galactic\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/MellingerRGB\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/MellingerRGB\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/MellingerRGB\"\n}, {\n \"ID\": \"CDS/P/SDSS9/color\",\n \"obs_title\": \"SDSS 9 color\",\n \"client_sort_key\": \"03-02-01\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"10\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/SDSS/DR9/color\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/SDSS/DR9/color\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/SDSS/DR9/color\",\n \"hips_service_url_3\": \"http://healpix.ias.u-psud.fr/SDSS9Color\",\n \"hips_service_url_4\": \"http://skies.esac.esa.int/SDSS9Color/\"\n}, {\n \"ID\": \"CDS/P/SPITZER/color\",\n \"obs_title\": \"IRAC HEALPix survey, color\",\n \"client_sort_key\": \"04-03-00\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"9\",\n \"hips_frame\": \"galactic\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/SpitzerI1I2I4color\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/SpitzerI1I2I4color\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/SpitzerI1I2I4color\",\n \"hips_service_url_3\": \"http://healpix.ias.u-psud.fr/SPITZERColor\"\n}, {\n \"ID\": \"CDS/P/allWISE/color\",\n \"obs_title\": \"AllWISE color Red (W4) , Green (W2) , Blue (W1) from raw Atlas Images\",\n \"client_sort_key\": \"04-003-00\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"8\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://alasky.unistra.fr/AllWISE/RGB-W4-W2-W1\",\n \"hips_service_url_1\": \"http://alaskybis.unistra.fr/AllWISE/RGB-W4-W2-W1\",\n \"hips_service_url_2\": \"https://alaskybis.unistra.fr/AllWISE/RGB-W4-W2-W1\"\n}, {\n \"ID\": \"IPAC/P/GLIMPSE360\",\n \"obs_title\": \"GLIMPSE360: Spitzer's Infrared Milky Way\",\n \"client_sort_key\": \"04-03-0\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"9\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"jpeg\",\n \"hips_service_url\": \"http://www.spitzer.caltech.edu/glimpse360/aladin/data\"\n}, {\n \"ID\": \"JAXA/P/MAXI_SSC_SUM\",\n \"hips_tile_format\": \"png\",\n \"hips_frame\": \"equatorial\",\n \"obs_title\": \"MAXI SSC all-sky image integrated for 4.5 years\",\n \"hips_order\": \"6\",\n \"hips_service_url\": \"http://darts.isas.jaxa.jp/pub/judo2/HiPS/maxi_ssc_sum\",\n \"hips_service_url_1\": \"http://alasky.unistra.fr//JAXA/JAXA_P_MAXI_SSC_SUM\",\n \"hips_service_url_2\": \"http://alaskybis.unistra.fr//JAXA/JAXA_P_MAXI_SSC_SUM\",\n \"hips_service_url_3\": \"https://alaskybis.unistra.fr//JAXA/JAXA_P_MAXI_SSC_SUM\"\n}, {\n \"ID\": \"JAXA/P/SWIFT_BAT_FLUX\",\n \"hips_tile_format\": \"png\",\n \"hips_frame\": \"equatorial\",\n \"obs_title\": \"Swift-BAT 70-month all-sray hard X-ray survey image\",\n \"hips_order\": \"6\",\n \"hips_service_url\": \"http://darts.isas.jaxa.jp/pub/judo2/HiPS/swift_bat_flux/\",\n \"hips_service_url_1\": \"http://alasky.unistra.fr//JAXA/JAXA_P_SWIFT_BAT_FLUX\",\n \"hips_service_url_2\": \"http://alaskybis.unistra.fr//JAXA/JAXA_P_SWIFT_BAT_FLUX\",\n \"hips_service_url_3\": \"https://alaskybis.unistra.fr//JAXA/JAXA_P_SWIFT_BAT_FLUX\"\n}, {\n \"ID\": \"ov-gso/P/VTSS/Ha\",\n \"obs_title\": \"Virginia Tech Spectral-Line Survey (VTSS) - Halpha image\",\n \"client_sort_key\": \"06-xx\",\n \"client_application\":[ \"AladinLite\", \"AladinDesktop\"],\n \"hips_order\": \"3\",\n \"hips_frame\": [\"galactic\", \"galactic\"],\n \"hips_tile_format\": \"png jpeg fits\",\n \"hips_service_url\": \"http://cade.irap.omp.eu/documents/Ancillary/4Aladin/VTSS\",\n \"hips_service_url_1\": \"http://alasky.unistra.fr/IRAP/VTSS\",\n \"hips_service_url_2\": \"http://alaskybis.unistra.fr/IRAP/VTSS\",\n \"hips_service_url_3\": \"https://alaskybis.unistra.fr/IRAP/VTSS\"\n}, {\n \"ID\": \"xcatdb/P/XMM/EPIC\",\n \"obs_title\": \"XMM-Newton stacked EPIC images\",\n \"hips_frame\": \"equatorial\",\n \"hips_order\": \"7\",\n \"hips_service_url\": \"http://saada.u-strasbg.fr/xmmallsky\",\n \"hips_tile_format\": \"png fits\",\n \"hips_service_url_1\": \"http://alasky.unistra.fr/SSC/xmmallsky\",\n \"hips_service_url_2\": \"http://alaskybis.unistra.fr/SSC/xmmallsky\",\n \"hips_service_url_3\": \"https://alaskybis.unistra.fr/SSC/xmmallsky\"\n}, {\n \"ID\": \"xcatdb/P/XMM/PN/color\",\n \"obs_title\": \"False color X-ray images (Red=0.5-1 Green=1-2 Blue=2-4.5)Kev\",\n \"hips_order\": \"7\",\n \"hips_frame\": \"equatorial\",\n \"hips_tile_format\": \"png jpeg\",\n \"hips_service_url\": \"http://saada.unistra.fr/PNColor\",\n \"hips_service_url_1\": \"http://alasky.u-strasbg.fr/SSC/xcatdb_P_XMM_PN_color\",\n \"hips_service_url_2\": \"http://alaskybis.u-strasbg.fr/SSC/xcatdb_P_XMM_PN_color\",\n \"hips_service_url_3\": \"https://alaskybis.u-strasbg.fr/SSC/xcatdb_P_XMM_PN_color\"\n}\n*/\n];\n\n var listHipsProperties = []; // this variable stores our current knowledge\n\n HiPSDefinition.LOCAL_STORAGE_KEY = 'aladin:hips-list';\n \n var RETRIEVAL_TIMESTAMP_KEY = '_timestamp_retrieved';\n var LAST_URL_KEY = '_last_used_url'; // URL previousy used to retrieve data from this HiPS\n // retrieve definitions previousy stored in local storage\n // @return an array with the HiPS definitions, empty array if nothing found or if an error occured\n HiPSDefinition.getLocalStorageDefinitions = function() {\n try {\n var defs = window.localStorage.getItem(HiPSDefinition.LOCAL_STORAGE_KEY);\n return defs === null ? [] : window.JSON.parse(defs);\n }\n catch(e) {\n // silently fail and return empty array\n return [];\n }\n };\n\n // store in local storage a list of HiPSDefinition objects\n // @return true if storage was successful\n HiPSDefinition.storeInLocalStorage = function(properties) {\n try {\n window.localStorage.setItem(HiPSDefinition.LOCAL_STORAGE_KEY, window.JSON.stringify(properties));\n }\n catch(e) {\n // silently fail and return false\n return false;\n }\n\n return true;\n };\n\n var MOCSERVER_MIRRORS_HTTP = ['http://alasky.u-strasbg.fr/MocServer/query', 'http://alaskybis.u-strasbg.fr/MocServer/query']; // list of base URL for MocServer mirrors, available in HTTP\n var MOCSERVER_MIRRORS_HTTPS = ['https://alasky.u-strasbg.fr/MocServer/query', 'https://alaskybis.unistra.fr/MocServer/query']; // list of base URL for MocServer mirrors, available in HTTPS\n\n // get HiPS definitions, by querying the MocServer\n // return data as dict-like objects\n HiPSDefinition.getRemoteDefinitions = function(params, successCallbackFn, failureCallbackFn) {\n var params = params || {client_application: 'AladinLite'}; // by default, retrieve only HiPS tagged \"Aladin Lite\"\n\n params['fmt'] = 'json';\n params['fields'] = 'ID,obs_title,client_sort_key,client_application,hips_service_url*,hips_order,hips_tile_format,hips_frame';\n\n var urls = Utils.isHttpsContext() ? MOCSERVER_MIRRORS_HTTPS : MOCSERVER_MIRRORS_HTTP;\n\n var successCallback = function(data) {\n (typeof successCallbackFn === 'function') && successCallbackFn(data);\n };\n var failureCallback = function() {\n console.error('Could not load HiPS definitions from urls ' + urls);\n (typeof failureCallbackFn === 'function') && failureCallbackFn();\n };\n\n Utils.loadFromMirrors(urls, {data: params, onSuccess: successCallback, onFailure: failureCallback, timeout: 5});\n };\n\n // complement the baseList with the items in newList\n var merge = function(baseList, newList) {\n var updatedList = [];\n var newListById = {};\n for (var k=0; k 1000 * HiPSDefinition.CACHE_RETENTION_TIME_SECONDS) {\n indicesToRemove.push(k);\n }\n }\n // we have to browse the array in reverse order in order not to mess up indices\n for (var k = indicesToRemove.length - 1; k >= 0; k--) {\n localDefs.splice(indicesToRemove[k],1);\n }\n // 2.2 merge\n listHipsProperties = merge(listHipsProperties, localDefs);\n\n // third, retrieve remote definitions, merge and save\n HiPSDefinition.getRemoteDefinitions({dataproduct_type: 'image', client_application: 'AladinLite'}, function(remoteDefs) {\n // adding timestamp of retrieval\n var now = new Date().getTime();\n for (var k=0; k0) {\n (typeof callback === 'function') && callback(candidates);\n return;\n }\n\n // then remotely\n findByIDRemote(id, callback);\n };\n\n // find a HiPSDefinition by id.\n // search is done on the local knowledge of HiPSDefinitions\n HiPSDefinition.findByIDLocal = function(id2search, callback) {\n var candidates = [];\n for (var k=0; k in that case, we add as an attribyte the URL that was given as input parameter\n var hipsPropertiesDict = HiPSDefinition.parseHiPSProperties(properties);\n if (! hipsPropertiesDict.hasOwnProperty('hips_service_url')) {\n hipsPropertiesDict['hips_service_url'] = hipsUrl;\n }\n (typeof callback === 'function') && callback(new HiPSDefinition(hipsPropertiesDict));\n };\n\n // try first without proxy\n var ajax = Utils.getAjaxObject(propertiesUrl, 'GET', 'text', false);\n ajax\n .done(function(data) {\n callbackWhenPropertiesLoaded(data);\n })\n .fail(function() {\n // if not working, try with the proxy\n var ajax = Utils.getAjaxObject(propertiesUrl, 'GET', 'text', true);\n ajax\n .done(function(data) {\n callbackWhenPropertiesLoaded(data);\n })\n .fail(function() {\n (typeof callback === 'function') && callback(null);\n })\n });\n };\n\n // HiPSDefinition generation from a properties dict-like object\n HiPSDefinition.fromProperties = function(properties) {\n return new HiPSDefinition(properties);\n };\n\n\n\n\n HiPSDefinition.init();\n\n return HiPSDefinition;\n\n})();\n\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File HpxImageSurvey\n * \n * Authors: Thomas Boch & Matthieu Baumann [CDS]\n * \n *****************************************************************************/\nimport { Utils } from \"./Utils.js\";\nimport { HiPSDefinition} from \"./HiPSDefinition.js\";\nimport { ALEvent } from \"./events/ALEvent.js\";\n\nexport async function fetchSurveyProperties(rootURLOrId) {\n if (!rootURLOrId) {\n throw 'An hosting survey URL or an ID (i.e. DSS2/red) must be given';\n }\n\n let isUrl = false;\n if (rootURLOrId.includes(\"http\")) {\n isUrl = true;\n }\n\n const request = async (url) => {\n const response = await fetch(url);\n const json = await response.json();\n\n return json;\n };\n\n let metadata = {};\n // If an HiPS id has been given\n if (!isUrl) {\n // Use the MOCServer to retrieve the\n // properties\n const id = rootURLOrId;\n const MOCServerUrl = 'https://alasky.cds.unistra.fr/MocServer/query?ID=*' + encodeURIComponent(id) + '*&get=record&fmt=json';\n\n metadata = await request(MOCServerUrl);\n\n // We get the property here\n // 1. Ensure there is exactly one survey matching\n if (!metadata) {\n throw 'no surveys matching';\n } else {\n if (metadata.length > 1) {\n let ids = [];\n let surveyFound = false;\n for (let i = 0; i < metadata.length; i++) {\n ids.push(metadata[i].ID)\n if (metadata[i].ID === id) {\n metadata = metadata[i];\n surveyFound = true;\n break;\n }\n }\n\n if (!surveyFound) {\n throw ids + ' surveys are matching. Please use one from this list.';\n }\n } else if (metadata.length === 0) {\n throw 'no surveys matching';\n } else {\n // Exactly one matching\n metadata = metadata[0];\n }\n }\n } else {\n // Fetch the properties of the survey\n let rootURL = rootURLOrId;\n // Use the url for retrieving the HiPS properties\n // remove final slash\n if (rootURL.slice(-1) === '/') {\n rootURL = rootURL.substr(0, rootURL.length-1);\n }\n\n // make URL absolute\n rootURL = Utils.getAbsoluteURL(rootURL);\n\n // fast fix for HTTPS support --> will work for all HiPS served by CDS\n if (Utils.isHttpsContext()) {\n const switchToHttps = Utils.HTTPS_WHITELIIST.some(element => {\n return rootURL.includes(element);\n });\n\n if (switchToHttps) {\n rootURL = rootURL.replace('http://', 'https://');\n }\n }\n\n const url = rootURL + '/properties';\n metadata = await fetch(url)\n .then((response) => response.text());\n // We get the property here\n metadata = HiPSDefinition.parseHiPSProperties(metadata);\n\n // 1. Ensure there is exactly one survey matching\n if (!metadata) {\n throw 'no surveys matching';\n }\n // Set the service url if not found\n metadata.hips_service_url = rootURLOrId;\n }\n\n return metadata;\n}\n\nexport let HpxImageSurvey = (function() {\n /** Constructor\n * cooFrame and maxOrder can be set to null\n * They will be determined by reading the properties file\n * \n */\n function HpxImageSurvey(id, name, rootURL, view, options) {\n // A reference to the view\n this.backend = view;\n // A number used to ensure the correct layer ordering in the aladin lite view\n this.orderIdx = null;\n // Set to true once its metadata has been received\n this.ready = false;\n // Name of the layer\n this.layer = null;\n this.added = false;\n this.id = id;\n this.name = name;\n // Default options\n this.options = options || {};\n \n if (this.options.imgFormat) {\n // Img format preprocessing\n // transform to upper case\n this.options.imgFormat = this.options.imgFormat.toUpperCase();\n\n // convert JPG -> JPEG\n if (this.options.imgFormat === \"JPG\") {\n this.options.imgFormat = \"JPEG\";\n }\n }\n\n if (this.options.imgFormat === 'FITS') {\n //tileFormat = \"FITS\";\n this.fits = true;\n } else if (this.options.imgFormat === \"PNG\") {\n //tileFormat = \"PNG\";\n this.fits = false;\n } else {\n // jpeg default case\n //tileFormat = \"JPG\";\n this.fits = false;\n }\n\n if (this.options.longitudeReversed === undefined) {\n this.options.longitudeReversed = false;\n }\n\n\n if (this.options.opacity === undefined) {\n this.options.opacity = 1.0;\n }\n\n let idxSelectedHiPS = 0;\n const surveyFound = HpxImageSurvey.SURVEYS.some(s => {\n let res = this.id.endsWith(s.id);\n if (!res) {\n idxSelectedHiPS += 1;\n }\n\n return res;\n });\n // The survey has not been found among the ones cached\n if (!surveyFound) {\n HpxImageSurvey.SURVEYS.push({\n id: this.id,\n name: this.name,\n options: this.options\n });\n } else {\n let surveyDef = HpxImageSurvey.SURVEYS[idxSelectedHiPS];\n surveyDef.options = this.options;\n }\n\n this.updateMeta();\n let self = this;\n (async () => {\n const metadata = await fetchSurveyProperties(rootURL || id);\n\n // HiPS url\n self.name = self.name || metadata.obs_title;\n let url = metadata.hips_service_url;\n if (!url) {\n throw 'no valid service URL for retrieving the tiles'\n }\n\n if (Utils.isHttpsContext()) {\n const switchToHttps = Utils.HTTPS_WHITELIIST.some(element => {\n return url.includes(element);\n });\n if (switchToHttps) {\n url = url.replace('http://', 'https://');\n }\n }\n\n // HiPS order\n const order = (+metadata.hips_order);\n\n // HiPS tile format\n const tileFormats = metadata.hips_tile_format.split(' ').map((fmt) => fmt.toUpperCase());\n if (self.options.imgFormat) {\n // user wants a fits but the metadata tells this format is not available\n if (self.options.imgFormat === \"FITS\" && tileFormats.indexOf('FITS') < 0) {\n throw self.name + \" does not provide fits tiles\";\n }\n \n if (self.options.imgFormat === \"PNG\" && tileFormats.indexOf('PNG') < 0) {\n throw self.name + \" does not provide png tiles\";\n }\n \n if (self.options.imgFormat === \"JPEG\" && tileFormats.indexOf('JPEG') < 0) {\n throw self.name + \" does not provide jpeg tiles\";\n }\n } else {\n // user wants nothing then we choose one from the metadata\n if (tileFormats.indexOf('PNG') >= 0) {\n self.options.imgFormat = \"PNG\";\n self.fits = false;\n } else if (tileFormats.indexOf('JPEG') >= 0) {\n self.options.imgFormat = \"JPEG\";\n self.fits = false;\n } else if (tileFormats.indexOf('FITS') >= 0) {\n self.options.imgFormat = \"FITS\";\n self.fits = true;\n } else {\n throw \"Unsupported format(s) found in the metadata: \" + tileFormats;\n }\n }\n\n // HiPS tile size\n let tileSize = +metadata.hips_tile_width;\n if (tileSize & (tileSize - 1) !== 0) {\n // not a power of 2\n tileSize = 512;\n }\n\n // HiPS coverage sky fraction\n const skyFraction = +metadata.moc_sky_fraction || 1.0;\n\n // HiPS frame\n self.options.cooFrame = self.options.cooFrame || metadata.hips_frame;\n let frame = null;\n if (self.options.cooFrame == \"ICRS\" || self.options.cooFrame == \"ICRSd\" || self.options.cooFrame == \"equatorial\" || self.options.cooFrame == \"j2000\") {\n frame = \"ICRSJ2000\";\n } else if (self.options.cooFrame == \"galactic\") {\n frame = \"GAL\";\n } else if (self.options.cooFrame === undefined) {\n frame = \"ICRSJ2000\";\n console.warn('No cooframe given. Coordinate systems supported: \"ICRS\", \"ICRSd\", \"j2000\" or \"galactic\". ICRS is chosen by default');\n } else {\n frame = \"ICRSJ2000\";\n console.warn('Invalid cooframe given: ' + self.options.cooFrame + '. Coordinate systems supported: \"ICRS\", \"ICRSd\", \"j2000\" or \"galactic\". ICRS is chosen by default');\n }\n\n // HiPS grayscale\n self.colored = false;\n if (metadata.dataproduct_subtype && (metadata.dataproduct_subtype.includes(\"color\") || metadata.dataproduct_subtype[0].includes(\"color\") )) {\n self.colored = true;\n }\n\n if (!self.colored) {\n // Grayscale hips, this is not mandatory that there are fits tiles associated with it unfortunately\n // For colored HiPS, no fits tiles provided\n\n // HiPS cutouts\n let cuts = (metadata.hips_pixel_cut && metadata.hips_pixel_cut.split(\" \")) || undefined;\n let propertiesDefaultMinCut = undefined;\n let propertiesDefaultMaxCut = undefined;\n if ( cuts ) {\n propertiesDefaultMinCut = parseFloat(cuts[0]);\n propertiesDefaultMaxCut = parseFloat(cuts[1]);\n }\n\n // HiPS bitpix\n const bitpix = +metadata.hips_pixel_bitpix;\n\n self.properties = {\n url: url,\n maxOrder: order,\n frame: frame,\n tileSize: tileSize,\n formats: tileFormats,\n minCutout: propertiesDefaultMinCut,\n maxCutout: propertiesDefaultMaxCut,\n bitpix: bitpix,\n skyFraction: skyFraction\n };\n } else {\n self.properties = {\n url: url,\n maxOrder: order,\n frame: frame,\n tileSize: tileSize,\n formats: tileFormats,\n skyFraction: skyFraction\n };\n }\n\n if (!self.colored) {\n self.options.stretch = self.options.stretch || \"Linear\";\n\n // For grayscale JPG/PNG hipses\n if (!self.fits) {\n // Erase the cuts with the default one for image tiles\n self.options.minCut = self.options.minCut || 0.0;\n self.options.maxCut = self.options.maxCut || 255.0;\n // For FITS hipses\n } else {\n self.options.minCut = self.options.minCut || self.properties.minCutout;\n self.options.maxCut = self.options.maxCut || self.properties.maxCutout;\n }\n }\n self.updateMeta();\n self.ready = true;\n\n ////// Update SURVEYS\n let idxSelectedHiPS = 0;\n const surveyFound = HpxImageSurvey.SURVEYS.some(s => {\n let res = self.id.endsWith(s.id);\n if (!res) {\n idxSelectedHiPS += 1;\n }\n\n return res;\n });\n // The survey has not been found among the ones cached\n if (!surveyFound) {\n throw 'Should have been found!'\n } else {\n // Update the HpxImageSurvey\n let surveyDef = HpxImageSurvey.SURVEYS[idxSelectedHiPS];\n surveyDef.options = self.options;\n surveyDef.maxOrder = self.properties.maxOrder;\n surveyDef.url = self.properties.url;\n }\n /////\n\n // Discard further processing if the layer has been associated to another hips\n // before the request has been resolved\n if (self.orderIdx < self.backend.imageSurveysIdx.get(self.layer)) {\n return;\n }\n\n // If the layer has been set then it is linked to the aladin lite view\n // so we add it\n if (self.added) {\n self.backend.commitSurveysToBackend(self, self.layer);\n }\n })();\n };\n\n HpxImageSurvey.prototype.updateMeta = function() {\n let blend = {\n srcColorFactor: 'SrcAlpha',\n dstColorFactor: 'OneMinusSrcAlpha',\n func: 'FuncAdd' \n };\n\n const additiveBlending = this.options.additive;\n if (additiveBlending) {\n blend = {\n srcColorFactor: 'SrcAlpha',\n dstColorFactor: 'One',\n func: 'FuncAdd' \n }\n }\n\n // reset the whole meta object\n this.meta = {};\n // populate him with the updated fields\n this.updateColor();\n this.meta.blendCfg = blend;\n this.meta.opacity = this.options.opacity;\n this.meta.longitudeReversed = this.options.longitudeReversed;\n }\n\n HpxImageSurvey.prototype.updateColor = function() {\n if (this.colored) {\n this.meta.color = \"color\";\n } else {\n let minCut = this.options.minCut;\n let maxCut = this.options.maxCut;\n\n if (this.options.imgFormat !== \"FITS\") {\n minCut /= 255.0;\n maxCut /= 255.0;\n }\n\n if (this.options.color) {\n this.meta.color = {\n grayscale: {\n stretch: this.options.stretch,\n minCut: minCut,\n maxCut: maxCut,\n color: {\n color: this.options.color,\n }\n }\n };\n } else {\n // If not defined we set the colormap to grayscale\n if (!this.options.colormap) {\n this.options.colormap = \"grayscale\";\n }\n\n if (this.options.colormap === \"native\") {\n this.options.colormap = \"grayscale\";\n }\n\n let reversed = this.options.reversed;\n if (this.options.reversed === undefined) {\n reversed = false;\n }\n\n this.meta.color = {\n grayscale: {\n stretch: this.options.stretch,\n minCut: minCut,\n maxCut: maxCut,\n color: {\n colormap: {\n reversed: reversed,\n name: this.options.colormap,\n }\n }\n }\n };\n }\n }\n };\n\n // @api\n HpxImageSurvey.prototype.setOpacity = function(opacity) {\n opacity = +opacity; // coerce to number\n this.options.opacity = Math.max(0, Math.min(opacity, 1));\n\n this.updateMeta();\n\n // Tell the view its meta have changed\n if( this.ready && this.added ) {\n this.backend.aladin.webglAPI.setImageSurveyMeta(this.layer, this.meta);\n ALEvent.HIPS_LAYER_CHANGED.dispatchedTo(this.backend.aladinDiv, {survey: this});\n }\n };\n\n HpxImageSurvey.prototype.setAlpha = HpxImageSurvey.prototype.setOpacity;\n\n // @api\n HpxImageSurvey.prototype.getOpacity = function() {\n return this.options.opacity;\n };\n\n // @api\n HpxImageSurvey.prototype.setBlendingConfig = function(additive = false) {\n this.options.additive = additive;\n\n this.updateMeta();\n\n // Tell the view its meta have changed\n if( this.ready && this.added ) {\n this.backend.aladin.webglAPI.setImageSurveyMeta(this.layer, this.meta);\n ALEvent.HIPS_LAYER_CHANGED.dispatchedTo(this.backend.aladinDiv, {survey: this});\n }\n };\n\n // @api\n HpxImageSurvey.prototype.setColor = function(color, options) {\n this.options = {...this.options, ...options};\n // Erase the colormap given first\n if (this.options.colormap) {\n delete this.options.colormap;\n }\n this.options.color = color;\n\n this.updateColor();\n\n // Tell the view its meta have changed\n if( this.ready && this.added ) {\n this.backend.aladin.webglAPI.setImageSurveyMeta(this.layer, this.meta);\n ALEvent.HIPS_LAYER_CHANGED.dispatchedTo(this.backend.aladinDiv, {survey: this});\n }\n };\n\n // @api\n HpxImageSurvey.prototype.setColormap = function(colormap, options) {\n this.options = {...this.options, ...options};\n // Erase the color given first\n if (this.options.color) {\n delete this.options.color;\n }\n this.options.colormap = colormap;\n\n this.updateColor();\n\n // Tell the view its meta have changed\n if( this.ready && this.added ) {\n this.backend.aladin.webglAPI.setImageSurveyMeta(this.layer, this.meta);\n ALEvent.HIPS_LAYER_CHANGED.dispatchedTo(this.backend.aladinDiv, {survey: this});\n }\n }\n\n // @api\n HpxImageSurvey.prototype.setCuts = function(cuts) {\n this.options.minCut = cuts[0];\n this.options.maxCut = cuts[1];\n\n this.updateColor();\n\n // Tell the view its meta have changed\n if( this.ready && this.added ) {\n this.backend.aladin.webglAPI.setImageSurveyMeta(this.layer, this.meta);\n ALEvent.HIPS_LAYER_CHANGED.dispatchedTo(this.backend.aladinDiv, {survey: this});\n }\n };\n\n HpxImageSurvey.prototype.setOptions = function(options) {\n this.options = options;\n this.updateMeta();\n\n // Tell the view its meta have changed\n if( this.ready && this.added ) {\n this.backend.aladin.webglAPI.setImageSurveyMeta(this.layer, this.meta);\n ALEvent.HIPS_LAYER_CHANGED.dispatchedTo(this.backend.aladinDiv, {survey: this});\n }\n };\n\n // @api\n HpxImageSurvey.prototype.changeImageFormat = function(format) {\n const prevImageFmt = this.options.imgFormat;\n let imgFormat = format.toUpperCase();\n if (imgFormat !== \"FITS\" && imgFormat !== \"PNG\" && imgFormat !== \"JPG\" && imgFormat !== \"JPEG\") {\n throw 'Formats must lie in [\"fits\", \"png\", \"jpg\"]';\n }\n\n if (imgFormat === \"JPG\") {\n imgFormat = \"JPEG\";\n }\n\n // Check the properties to see if the given format is available among the list\n // If the properties have not been retrieved yet, it will be tested afterwards\n if (this.properties) {\n const availableFormats = this.properties.formats;\n const idSurvey = this.properties.id;\n // user wants a fits but the metadata tells this format is not available\n if (imgFormat === \"FITS\" && availableFormats.indexOf('FITS') < 0) {\n throw idSurvey + \" does not provide fits tiles\";\n }\n \n if (imgFormat === \"PNG\" && availableFormats.indexOf('PNG') < 0) {\n throw idSurvey + \" does not provide png tiles\";\n }\n \n if (imgFormat === \"JPEG\" && availableFormats.indexOf('JPEG') < 0) {\n throw idSurvey + \" does not provide jpeg tiles\";\n }\n }\n\n // Passed the check, we erase the image format with the new one\n // We do nothing if the imgFormat is the same\n if (this.options.imgFormat === imgFormat) {\n return;\n }\n\n this.options.imgFormat = imgFormat;\n // Check if it is a fits\n this.fits = (this.options.imgFormat === 'FITS');\n\n // Tell the view its meta have changed\n try {\n if ( this.ready && this.added ) {\n this.backend.aladin.webglAPI.setImageSurveyImageFormat(this.layer, imgFormat);\n ALEvent.HIPS_LAYER_CHANGED.dispatchedTo(this.backend.aladinDiv, {survey: this});\n }\n } catch(e) {\n console.error(e);\n\n this.options.imgFormat = prevImageFmt;\n this.fits = (this.options.imgFormat === 'FITS');\n }\n };\n\n // @api\n HpxImageSurvey.prototype.getMeta = function() {\n return this.meta;\n };\n \n // @api\n HpxImageSurvey.prototype.getAlpha = function() {\n return this.meta.opacity;\n };\n\n // @api\n HpxImageSurvey.prototype.readPixel = function(x, y) {\n return this.backend.aladin.webglAPI.readPixel(x, y, this.layer);\n };\n\n HpxImageSurvey.DEFAULT_SURVEY_ID = \"P/DSS2/color\";\n \n HpxImageSurvey.SURVEYS_OBJECTS = {};\n HpxImageSurvey.SURVEYS = [\n {\n id: \"CDS/P/2MASS/color\",\n name: \"2MASS colored\",\n url: \"https://alasky.cds.unistra.fr/2MASS/Color\",\n maxOrder: 9,\n },\n {\n id: \"CDS/P/DSS2/color\",\n name: \"DSS colored\",\n url: \"https://alasky.cds.unistra.fr/DSS/DSSColor\",\n maxOrder: 9,\n },\n {\n id: \"P/DSS2/red\",\n name: \"DSS2 Red (F+R)\",\n url: \"https://alasky.cds.unistra.fr/DSS/DSS2Merged\",\n maxOrder: 9,\n // options\n options: {\n minCut: 1000.0,\n maxCut: 10000.0,\n imgFormat: \"fits\",\n colormap: \"magma\",\n stretch: 'Linear'\n }\n },\n /*{\n id: \"P/MeerKAT/Galactic-Centre-1284MHz-StokesI\",\n name: \"MeerKAT Galactic Centre 1284MHz StokesI\",\n url: \"https://alasky.cds.unistra.fr/MeerKAT/CDS_P_MeerKAT_Galactic-Centre-1284MHz-StokesI\",\n maxOrder: 9,\n // options\n options: {\n minCut: -4e-4,\n maxCut: 0.01,\n imgFormat: \"fits\",\n colormap: \"rainbow\",\n stretch: 'Linear'\n }\n },*/\n {\n id: \"P/DM/I/350/gaiaedr3\",\n name: \"Density map for Gaia EDR3 (I/350/gaiaedr3)\",\n url: \"https://alasky.cds.unistra.fr/ancillary/GaiaEDR3/density-map\",\n maxOrder: 7,\n // options\n options: {\n minCut: 0,\n maxCut: 12000,\n stretch: 'Asinh',\n colormap: \"rdyibu\",\n imgFormat: \"fits\",\n }\n },\n {\n id: \"P/PanSTARRS/DR1/g\",\n name: \"PanSTARRS DR1 g\",\n url: \"https://alasky.cds.unistra.fr/Pan-STARRS/DR1/g\",\n maxOrder: 11,\n // options\n options: {\n minCut: -34,\n maxCut: 7000,\n stretch: 'Asinh',\n colormap: \"redtemperature\",\n imgFormat: \"fits\",\n }\n },\n {\n id: \"P/PanSTARRS/DR1/color-z-zg-g\",\n name: \"PanSTARRS DR1 color\",\n url: \"https://alasky.cds.unistra.fr/Pan-STARRS/DR1/color-z-zg-g\",\n maxOrder: 11, \n },\n {\n id: \"P/DECaPS/DR1/color\",\n name: \"DECaPS DR1 color\",\n url: \"https://alasky.cds.unistra.fr/DECaPS/DR1/color\",\n maxOrder: 11,\n },\n {\n id: \"P/Fermi/color\",\n name: \"Fermi color\",\n url: \"https://alasky.cds.unistra.fr/Fermi/Color\",\n maxOrder: 3,\n },\n {\n id: \"P/Finkbeiner\",\n name: \"Halpha\",\n url: \"https://alasky.cds.unistra.fr/FinkbeinerHalpha\",\n maxOrder: 3,\n // options\n options: {\n minCut: -10,\n maxCut: 800,\n colormap: \"rdbu\",\n imgFormat: \"fits\",\n }\n },\n {\n id: \"P/GALEXGR6_7/color\",\n name: \"GALEX GR6/7 - Color composition\",\n url: \"https://alasky.cds.unistra.fr/GALEX/GALEXGR6_7_color/\",\n maxOrder: 8,\n },\n {\n id: \"P/IRIS/color\",\n name: \"IRIS colored\",\n url: \"https://alasky.cds.unistra.fr/IRISColor\",\n maxOrder: 3,\n },\n {\n id: \"P/Mellinger/color\",\n name: \"Mellinger colored\",\n url: \"https://alasky.cds.unistra.fr/MellingerRGB\",\n maxOrder: 4,\n },\n {\n id: \"P/SDSS9/color\",\n name: \"SDSS9 colored\",\n url: \"https://alasky.cds.unistra.fr/SDSS/DR9/color\",\n maxOrder: 10,\n },\n {\n id: \"P/SDSS9/g\",\n name: \"SDSS9 band-g\",\n url: \"https://alasky.cds.unistra.fr/SDSS/DR9/band-g\",\n maxOrder: 10,\n options: {\n stretch: 'Asinh',\n colormap: \"redtemperature\",\n imgFormat: \"fits\",\n }\n },\n {\n id: \"P/SPITZER/color\",\n name: \"IRAC color I1,I2,I4 - (GLIMPSE, SAGE, SAGE-SMC, SINGS)\",\n url: \"https://alasky.cds.unistra.fr/SpitzerI1I2I4color\",\n maxOrder: 9,\n },\n {\n id: \"P/VTSS/Ha\",\n name: \"VTSS-Ha\",\n url: \"https://alasky.cds.unistra.fr/VTSS/Ha\",\n maxOrder: 3,\n options: {\n minCut: -10.0,\n maxCut: 100.0,\n colormap: \"grayscale\",\n imgFormat: \"fits\"\n }\n },\n /*\n // Seems to be not hosted on saada anymore\n {\n id: \"P/XMM/EPIC\",\n name: \"XMM-Newton stacked EPIC images (no phot. normalization)\",\n url: \"https://alasky.cds.unistra.fr/cgi/JSONProxy?url=https://saada.cds.unistra.fr/xmmallsky\",\n maxOrder: 7,\n },*/\n {\n id: \"xcatdb/P/XMM/PN/color\",\n name: \"XMM PN colored\",\n url: \"https://alasky.cds.unistra.fr/cgi/JSONProxy?url=https://saada.unistra.fr/PNColor\",\n maxOrder: 7,\n },\n {\n id: \"CDS/P/allWISE/color\",\n name: \"AllWISE color\",\n url: \"https://alasky.cds.unistra.fr/AllWISE/RGB-W4-W2-W1/\",\n maxOrder: 8,\n },\n /*\n The page is down\n {\n id: \"P/GLIMPSE360\",\n name: \"GLIMPSE360\",\n url: \"https://alasky.cds.unistra.fr/cgi/JSONProxy?url=http://www.spitzer.caltech.edu/glimpse360/aladin/data\",\n maxOrder: 9,\n },*/\n ];\n\n HpxImageSurvey.getAvailableSurveys = function() {\n return HpxImageSurvey.SURVEYS;\n };\n\n return HpxImageSurvey;\n})();\n\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File URLBuilder\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\nimport { Coo } from './libs/astro/coo.js';\nimport { Utils } from './Utils.js';\nexport let URLBuilder = (function() { \n\n let URLBuilder = {\n buildSimbadCSURL: function(target, radiusDegrees) {\n if (target && (typeof target === \"object\")) {\n if ('ra' in target && 'dec' in target) {\n var coo = new Coo(target.ra, target.dec, 7);\n target = coo.format('s');\n }\n }\n return 'https://alasky.unistra.fr/cgi/simbad-flat/simbad-cs.py?target=' + encodeURIComponent(target) + '&SR=' + radiusDegrees + '&format=votable&SRUNIT=deg&SORTBY=nbref';\n },\n\n buildNEDPositionCSURL: function(ra, dec, radiusDegrees) {\n return 'https://ned.ipac.caltech.edu/cgi-bin/nph-objsearch?search_type=Near+Position+Search&of=xml_main&RA=' + ra + '&DEC=' + dec + '&SR=' + radiusDegrees;\n },\n\n buildNEDObjectCSURL: function(object, radiusDegrees) {\n return 'https://ned.ipac.caltech.edu/cgi-bin/nph-objsearch?search_type=Near+Name+Search&radius=' + (60 * radiusDegrees) + '&of=xml_main&objname=' + object;\n },\n\n buildVizieRCSURL: function(vizCatId, target, radiusDegrees, options) {\n console.log(target)\n if (target && (typeof target === \"object\")) {\n if ('ra' in target && 'dec' in target) {\n var coo = new Coo(target.ra, target.dec, 7);\n\n target = coo.format('s');\n }\n }\n\n var maxNbSources = 1e5;\n if (options && options.hasOwnProperty('limit') && Utils.isNumber(options.limit)) {\n maxNbSources = parseInt(options.limit);\n }\n return 'https://vizier.unistra.fr/viz-bin/votable?-source=' + vizCatId + '&-c=' + encodeURIComponent(target) + '&-out.max=' + maxNbSources + '&-c.rd=' + radiusDegrees;\n },\n\n buildSkyBotCSURL: function(ra, dec, radius, epoch, queryOptions) {\n var url = 'http://vo.imcce.fr/webservices/skybot/skybotconesearch_query.php?-from=AladinLite';\n url += '&RA=' + encodeURIComponent(ra);\n url += '&DEC=' + encodeURIComponent(dec);\n url += '&SR=' + encodeURIComponent(radius);\n url += '&EPOCH=' + encodeURIComponent(epoch);\n\n if (queryOptions) {\n for (var key in queryOptions) {\n if (queryOptions.hasOwnProperty(key)) {\n url += '&' + key + '=' + encodeURIComponent(queryOptions[key]);\n }\n }\n }\n\n return url;\n }\n \n\n };\n\n return URLBuilder;\n \n})();\n\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File gui/AladinLogo.js\n *\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\n export const AladinLogo = (function () {\n\n // Constructor\n const AladinLogo = function (parentDiv) {\n const newDiv = document.createElement('div');\n newDiv.classList.add('aladin-logo-container');\n\n const link = document.createElement('a');\n link.href ='https://aladin.cds.unistra.fr/' \n link.title = 'Powered by Aladin Lite';\n link.target = '_blank';\n\n const logoDiv = document.createElement('div');\n logoDiv.classList.add('aladin-logo');\n\n link.appendChild(logoDiv);\n newDiv.appendChild(link);\n\n parentDiv.appendChild(newDiv);\n };\n\n\n return AladinLogo;\n})();\n","// Copyright 2013 - UDS/CNRS\n// The Aladin Lite program is distributed under the terms\n// of the GNU General Public License version 3.\n//\n// This file is part of Aladin Lite.\n//\n// Aladin Lite is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, version 3 of the License.\n//\n// Aladin Lite is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// The GNU General Public License is available in COPYING file\n// along with Aladin Lite.\n//\n\n\n/******************************************************************************\n * Aladin Lite project\n * \n * File gui/ProjectionSelector.js\n *\n * \n * Author: Thomas Boch[CDS]\n * \n *****************************************************************************/\n\n import { ALEvent } from \"../events/ALEvent.js\";\n \n export class ProjectionSelector {\n \n // Constructor\n constructor(parentDiv, aladin) {\n this.aladin = aladin;\n \n this.mainDiv = document.createElement('div');\n this.mainDiv.classList.add('aladin-projSelection');\n \n parentDiv.appendChild(this.mainDiv);\n \n this._createComponent();\n this._addListeners();\n }\n \n _createComponent() {\n $(this.mainDiv).append('');\n\n this.selectProjection = $(this.mainDiv).find('select');\n\n this.selectProjection.empty();\n \n [\"SIN\", \"AIT\", \"MOL\", \"MER\", \"ARC\", \"TAN\", \"HPX\"].forEach(p => {\n this.selectProjection.append($(\"';\n }\n // Add the native which is special:\n // - for FITS hipses, it is changed to grayscale\n // - for JPG/PNG hipses, we do not use any colormap in the backend\n this.nameRadioColorChoice = encodeURIComponent(Utils.uuidv4());\n cmListStr += '';\n this.mainDiv = $('
' +\n '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
Stretch
Format
Min cut
Max cut
Blending mode
Opacity
' +\n '
');\n\n this._addListeners();\n this._updateHiPSLayerOptions();\n\n let self = this;\n this.layerChangedListener = function(e) {\n const survey = e.detail.survey;\n\n\n if (survey.layer === self.survey.layer) {\n // Update the survey to the new one\n self.survey = survey;\n self._updateHiPSLayerOptions();\n }\n self._updateSurveysDropdownList();\n };\n ALEvent.HIPS_LAYER_CHANGED.listenedBy(this.aladin.aladinDiv, this.layerChangedListener);\n }\n\n destroy() {\n ALEvent.HIPS_LAYER_CHANGED.remove(this.aladin.aladinDiv, this.layerChangedListener);\n this.mainDiv[0].removeEventListener(\"click\", this.clickOnAladinFrameListener);\n }\n\n _addListeners() {\n const self = this;\n // HEADER DIV listeners\n // Click opener\n const clickOpener = this.headerDiv.find('.indicator');\n clickOpener.unbind(\"click\");\n clickOpener.click(function () {\n if (clickOpener.hasClass('right-triangle')) {\n clickOpener.removeClass('right-triangle');\n clickOpener.addClass('down-triangle');\n self.mainDiv.slideDown(300);\n\n self.aladin.aladinDiv.dispatchEvent(new CustomEvent('select-layer', {\n detail: self.survey.layer\n }));\n }\n else {\n clickOpener.removeClass('down-triangle');\n clickOpener.addClass('right-triangle');\n self.mainDiv.slideUp(300);\n }\n });\n\n // Click on aladin options should select the layer clicked\n let aladinOptionsFrame = self.mainDiv[0];\n this.clickOnAladinFrameListener = function(e) {\n self.aladin.aladinDiv.dispatchEvent(new CustomEvent('select-layer', {\n detail: self.survey.layer\n }));\n };\n aladinOptionsFrame.addEventListener(\"click\", this.clickOnAladinFrameListener);\n\n // Update list of surveys\n self._updateSurveysDropdownList();\n const surveySelector = this.headerDiv.find('.aladin-surveySelection');\n surveySelector.unbind(\"change\");\n surveySelector.change(function () {\n let cfg = HpxImageSurvey.SURVEYS[$(this)[0].selectedIndex];\n if (self.hidden) {\n cfg.options.opacity = 0.0;\n }\n\n const survey = self.aladin.createImageSurvey(\n cfg.id,\n cfg.name,\n cfg.url,\n undefined,\n cfg.maxOrder,\n cfg.options\n );\n self.aladin.setOverlayImageLayer(survey, self.survey.layer);\n\n self.aladin.aladinDiv.dispatchEvent(new CustomEvent('select-layer', {\n detail: self.survey.layer\n }));\n });\n\n // Search HiPS button\n const hipsSelector = this.headerDiv.find('.aladin-HiPSSelector');\n hipsSelector.unbind(\"click\");\n hipsSelector.click(function () {\n if (!self.hipsSelector) {\n self.hipsSelector = new HiPSSelector(self.aladin.aladinDiv, (IDOrURL) => {\n const layerName = self.survey.layer;\n self.aladin.setOverlayImageLayer(IDOrURL, layerName);\n }, self.aladin);\n }\n self.hipsSelector.show();\n });\n\n // Delete HiPS button\n const deleteLayer = this.headerDiv.find('.aladin-delete-layer');\n deleteLayer.unbind('click');\n deleteLayer.click(function () {\n const removeLayerEvent = new CustomEvent('remove-layer', {\n detail: self.survey.layer\n });\n self.aladin.aladinDiv.dispatchEvent(removeLayerEvent);\n });\n\n // Hide HiPS button\n const hideLayer = this.headerDiv.find('.aladin-layer-hide');\n hideLayer.unbind(\"click\");\n hideLayer.click(function () {\n self.hidden = !self.hidden;\n let opacitySlider = self.mainDiv.find('.opacity').eq(0);\n\n let newOpacity = 0.0;\n if (self.hidden) {\n self.lastOpacity = self.survey.getOpacity();\n hideLayer.text('');\n } else {\n newOpacity = self.lastOpacity;\n hideLayer.text('👁️');\n }\n // Update the opacity slider\n opacitySlider.val(newOpacity);\n opacitySlider.get(0).disabled = self.hidden;\n\n self.survey.setOpacity(newOpacity);\n\n // Update HpxImageSurvey.SURVEYS definition\n /*const idxSelectedHiPS = self.headerDiv.find('.aladin-surveySelection')[0].selectedIndex;\n let surveyDef = HpxImageSurvey.SURVEYS[idxSelectedHiPS];\n let options = surveyDef.options || {};\n options.opacity = newOpacity;\n surveyDef.options = options;*/\n });\n\n // MAIN DIV listeners\n // blending method\n if (self.survey.layer === \"base\") {\n this.mainDiv.find('tr').eq(8).hide();\n } else {\n const blendingSelector = this.mainDiv.find('.blending').eq(0);\n blendingSelector.unbind(\"change\");\n blendingSelector.change(function () {\n let mode = blendingSelector.val()\n self.survey.setBlendingConfig( mode === \"Additive\" );\n });\n }\n\n // image format\n const format4ImgLayer = this.mainDiv.find('.format').eq(0);\n const minCut4ImgLayer = this.mainDiv.find('.min-cut').eq(0);\n const maxCut4ImgLayer = this.mainDiv.find('.max-cut').eq(0);\n format4ImgLayer.unbind(\"change\");\n format4ImgLayer.change(function () {\n const imgFormat = format4ImgLayer.val();\n\n self.survey.changeImageFormat(imgFormat);\n\n\n let minCut = 0;\n let maxCut = 255;\n if (imgFormat === \"FITS\") {\n // FITS format\n minCut = self.survey.properties.minCutout;\n maxCut = self.survey.properties.maxCutout;\n }\n self.survey.setCuts([minCut, maxCut]);\n\n // update the cuts only\n minCut4ImgLayer.val(parseFloat(minCut.toFixed(5)));\n maxCut4ImgLayer.val(parseFloat(maxCut.toFixed(5)));\n\n // update HpxImageSurvey.SURVEYS definition\n /*const idxSelectedHiPS = self.headerDiv.find('.aladin-surveySelection')[0].selectedIndex;\n let surveyDef = HpxImageSurvey.SURVEYS[idxSelectedHiPS];\n let options = surveyDef.options || {};\n options.minCut = minCut;\n options.maxCut = maxCut;\n options.imgFormat = imgFormat;\n surveyDef.options = options;*/\n });\n // min/max cut\n minCut4ImgLayer.unbind(\"input blur\");\n maxCut4ImgLayer.unbind(\"input blur\");\n minCut4ImgLayer.add(maxCut4ImgLayer).on('input blur', function (e) {\n let minCutValue = parseFloat(minCut4ImgLayer.val());\n let maxCutValue = parseFloat(maxCut4ImgLayer.val());\n\n if (isNaN(minCutValue) || isNaN(maxCutValue)) {\n return;\n }\n self.survey.setCuts([minCutValue, maxCutValue]);\n\n // update HpxImageSurvey.SURVEYS definition\n /*const idxSelectedHiPS = self.surveySelectionDiv[0].selectedIndex;\n let surveyDef = HpxImageSurvey.SURVEYS[idxSelectedHiPS];\n let options = surveyDef.options || {};\n options.minCut = minCutValue;\n options.maxCut = maxCutValue;\n surveyDef.options = options;*/\n });\n\n // colormap\n const colorMapSelect4ImgLayer = this.mainDiv.find('.colormap-selector').eq(0);\n const stretchSelect4ImgLayer = this.mainDiv.find('.stretch').eq(0);\n const reverseCmCb = this.mainDiv.find('.reversed').eq(0);\n const colorSelect4ImgLayer = self.mainDiv.find('.color-selector').eq(0);\n\n reverseCmCb.unbind(\"change\");\n colorMapSelect4ImgLayer.unbind(\"change\");\n stretchSelect4ImgLayer.unbind(\"change\");\n const colorMode = this.mainDiv[0].getElementsByClassName('colormap-color-selector');\n colorMapSelect4ImgLayer.add(reverseCmCb).add(stretchSelect4ImgLayer).change(function () {\n const stretch = stretchSelect4ImgLayer.val();\n if (colorMode[0].checked) {\n // Color map case\n const cmap = colorMapSelect4ImgLayer.val();\n const reverse = reverseCmCb[0].checked;\n self.survey.setColormap(cmap, { reversed: reverse, stretch: stretch });\n } else {\n // Single color case\n const colorHex = colorSelect4ImgLayer.val();\n let colorRgb = Color.hexToRgb(colorHex);\n self.survey.setColor([colorRgb.r / 255.0, colorRgb.g / 255.0, colorRgb.b / 255.0, 1.0], { stretch: stretch });\n }\n\n // update HpxImageSurvey.SURVEYS definition\n /*const idxSelectedHiPS = self.headerDiv.find('.aladin-surveySelection')[0].selectedIndex;\n let surveyDef = HpxImageSurvey.SURVEYS[idxSelectedHiPS];\n let options = surveyDef.options || {};\n options.colormap = cmap;\n options.stretch = stretch;\n options.reversed = reverse;\n surveyDef.options = options;*/\n });\n\n // Redefine the event for the newly added DOM\n colorSelect4ImgLayer.unbind(\"input\");\n colorSelect4ImgLayer.on('input', function () {\n const colorHex = colorSelect4ImgLayer.val();\n let colorRgb = Color.hexToRgb(colorHex);\n self.survey.setColor([colorRgb.r / 255.0, colorRgb.g / 255.0, colorRgb.b / 255.0, 1.0]);\n });\n\n // colormap/color radio\n const colorMapTr = this.mainDiv.find('tr').eq(1);\n const colorTr = this.mainDiv.find('tr').eq(2);\n const [colormapChoiceRadioBtn, colorChoiceRadioBtn] = document.querySelectorAll('input[name=\"' + this.nameRadioColorChoice + '\"]');\n $(colormapChoiceRadioBtn).on(\"click\", function (e) {\n // set the colormap\n const cmap = colorMapSelect4ImgLayer.val();\n self.survey.setColormap(cmap);\n });\n $(colorChoiceRadioBtn).on(\"click\", function (e) {\n // set the color\n const colorHex = colorSelect4ImgLayer.val();\n let colorRgb = Color.hexToRgb(colorHex);\n self.survey.setColor([colorRgb.r / 255.0, colorRgb.g / 255.0, colorRgb.b / 255.0, 1.0]);\n });\n\n // opacity\n const opacity4ImgLayer = self.mainDiv.find('.opacity').eq(0);\n opacity4ImgLayer.unbind(\"input\");\n opacity4ImgLayer.on('input', function () {\n const opacity = +opacity4ImgLayer.val();\n self.survey.setOpacity(opacity);\n\n // update HpxImageSurvey.SURVEYS definition\n /*const idxSelectedHiPS = self.headerDiv.find('.aladin-surveySelection')[0].selectedIndex;\n let surveyDef = HpxImageSurvey.SURVEYS[idxSelectedHiPS];\n let options = surveyDef.options || {};\n options.opacity = opacity;\n surveyDef.options = options;*/\n });\n }\n\n _updateHiPSLayerOptions() {\n const colorModeTr = this.mainDiv.find('tr').eq(0);\n const colorMapTr = this.mainDiv.find('tr').eq(1);\n const colorTr = this.mainDiv.find('tr').eq(2);\n const reverseTr = this.mainDiv.find('tr').eq(3);\n const stretchTr = this.mainDiv.find('tr').eq(4);\n const formatTr = this.mainDiv.find('tr').eq(5);\n const minCutTr = this.mainDiv.find('tr').eq(6);\n const maxCutTr = this.mainDiv.find('tr').eq(7);\n\n const colorMode = this.mainDiv.find('.colormap-color-selector').eq(0);\n const reverseCmCb = this.mainDiv.find('.reversed').eq(0);\n const colorMapSelect4ImgLayer = this.mainDiv.find('.colormap-selector').eq(0);\n const stretchSelect4ImgLayer = this.mainDiv.find('.stretch').eq(0);\n const formatSelect4ImgLayer = this.mainDiv.find('.format').eq(0);\n const opacity4ImgLayer = this.mainDiv.find('.opacity').eq(0);\n const minCut = this.mainDiv.find('.min-cut').eq(0);\n const maxCut = this.mainDiv.find('.max-cut').eq(0);\n\n formatSelect4ImgLayer.empty();\n this.survey.properties.formats.forEach(format => {\n formatSelect4ImgLayer.append($('