mars3d-wind 3.8.1 → 3.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
3
3
  *
4
- * 版本信息:v3.8.1
5
- * 编译日期:2024-09-03 18:36:55
4
+ * 版本信息:v3.8.3
5
+ * 编译日期:2024-09-25 19:54:09
6
6
  * 版权所有:Copyright by 火星科技 http://mars3d.cn
7
7
  * 使用单位:免费公开版 ,2024-08-01
8
8
  */
@@ -11,5 +11,5 @@
11
11
  typeof define === 'function' && define.amd ? define(['exports', 'mars3d'], factory) :
12
12
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["mars3d-wind"] = {}, global.mars3d));
13
13
  })(this, (function (exports, mars3d) {
14
- 'use strict';(function(_0x474cda,_0x4e4e81){function _0x46ef80(_0x4bee6b,_0x44bc64){return _0x25e8(_0x44bc64-0x23e,_0x4bee6b);}function _0x5f4c0a(_0x12dc2d,_0x2dfec5){return _0x25e8(_0x2dfec5-0x262,_0x12dc2d);}const _0x3d22b1=_0x474cda();while(!![]){try{const _0x292e20=-parseInt(_0x5f4c0a(0x2ff,0x336))/0x1*(-parseInt(_0x5f4c0a(0x389,0x36f))/0x2)+parseInt(_0x46ef80(0x372,0x359))/0x3*(-parseInt(_0x46ef80(0x3e4,0x3b5))/0x4)+parseInt(_0x5f4c0a(0x3a3,0x3eb))/0x5*(-parseInt(_0x5f4c0a(0x350,0x352))/0x6)+-parseInt(_0x46ef80(0x291,0x311))/0x7+-parseInt(_0x46ef80(0x422,0x3e3))/0x8*(-parseInt(_0x46ef80(0x323,0x2fd))/0x9)+parseInt(_0x46ef80(0x2a8,0x32b))/0xa+parseInt(_0x5f4c0a(0x297,0x323))/0xb*(parseInt(_0x5f4c0a(0x3ab,0x329))/0xc);if(_0x292e20===_0x4e4e81)break;else _0x3d22b1['push'](_0x3d22b1['shift']());}catch(_0x30ff36){_0x3d22b1['push'](_0x3d22b1['shift']());}}}(_0x12a6,0xa2842));function _interopNamespace(_0x5196aa){function _0x7dfc20(_0x58f2ae,_0x106e81){return _0x25e8(_0x58f2ae- -0x36a,_0x106e81);}if(_0x5196aa&&_0x5196aa['__esModule'])return _0x5196aa;function _0x48ba28(_0x3e8244,_0x4a4ccc){return _0x25e8(_0x3e8244- -0x21a,_0x4a4ccc);}var _0x4a4c10=Object['create'](null);return _0x5196aa&&Object['keys'](_0x5196aa)[_0x48ba28(-0x116,-0x90)](function(_0x2ba75e){function _0x2dfd69(_0xc83b12,_0x1efac8){return _0x48ba28(_0xc83b12-0x305,_0x1efac8);}if(_0x2ba75e!=='default'){var _0x478c55=Object['getOwnPropertyDescriptor'](_0x5196aa,_0x2ba75e);Object['defineProperty'](_0x4a4c10,_0x2ba75e,_0x478c55[_0x2dfd69(0x21e,0x284)]?_0x478c55:{'enumerable':!![],'get':function(){return _0x5196aa[_0x2ba75e];}});}}),_0x4a4c10[_0x48ba28(-0x88,-0x10e)]=_0x5196aa,_0x4a4c10;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x4e6f1a,_0x4a4788){const _0x2b561f=_0x4e6f1a*Math[_0x49e5cc(-0x17c,-0x149)](Cesium$7[_0x5d65fe(0x249,0x225)]['toRadians'](_0x4a4788));function _0x49e5cc(_0xa303c8,_0x23839d){return _0x25e8(_0x23839d- -0x2d3,_0xa303c8);}function _0x5d65fe(_0x42a6fd,_0x44797a){return _0x25e8(_0x44797a-0x11a,_0x42a6fd);}return _0x2b561f;}function getV(_0x57b6dc,_0x4d3535){const _0x2c92b0=_0x57b6dc*Math[_0x1916eb(0x235,0x2c4)](Cesium$7[_0x1916eb(0x204,0x19f)]['toRadians'](_0x4d3535));function _0x1916eb(_0x1a4801,_0x2ea442){return _0x25e8(_0x1a4801-0xf9,_0x2ea442);}function _0x33b640(_0x341ae3,_0x1b0e2c){return _0x25e8(_0x1b0e2c- -0x193,_0x341ae3);}return _0x2c92b0;}function getSpeed(_0x21fc36,_0x4cd0b0){function _0x49a240(_0x456188,_0x151bbf){return _0x25e8(_0x151bbf-0x325,_0x456188);}function _0x100b52(_0x58f988,_0x5062cd){return _0x25e8(_0x58f988- -0x25d,_0x5062cd);}const _0x1fe5a7=Math[_0x49a240(0x465,0x3e0)](Math['pow'](_0x21fc36,0x2)+Math[_0x100b52(-0x87,-0xe7)](_0x4cd0b0,0x2));return _0x1fe5a7;}function getDirection(_0x5c2453,_0x4dd3ae){let _0x2de657=Cesium$7['Math']['toDegrees'](Math['atan2'](_0x4dd3ae,_0x5c2453));return _0x2de657+=_0x2de657<0x0?0x168:0x0,_0x2de657;}const _0x2c63d8={};function _0x12a6(){const _0x102c53=['RGB','update','mode','particlesRendering','xmax','particles','_updateIng','previousParticlesPosition','show','get','once','createCommand','globeBoundingSphere','canvas','createFramebuffer','calculateSpeed','lon','Geometry','sin','applyViewerParameters','clearFramebuffers','DrawCommand','refreshTimer','Color','postMessage','_setOptionsHook','viewRectangleToLonLatRange','reverseY','mouse_move','createSegmentsGeometry','interval','EllipsoidalOccluder','keys','LayerUtil','Compute','position','canvasResize','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','canvasContext','hidden','defines','preExecute','Pass','globalCompositeOperation','worker','container','mouseMove','absolute','none','cancelAnimationFrame','pixelDatatype','LINEAR','nextTrailsDepth','drawingBufferWidth','uniformMap','getFullscreenQuad','max','_onMap_preRenderEvent','_onMouseDownEvent','FLOAT','lonRange','segmentsDepth','_data','lng','dynamic','dimension','left','PixelFormat','DepthFunction','addPrimitives','#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x20Unit\x20converted\x20to\x20degrees\x20of\x20longitude\x20and\x20latitude\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20speed;\x0a\x20\x20if(length(speed.rgb)\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a','abs','frameRate','fromCache','#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20W;\x20//\x20upward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0auniform\x20float\x20speedScaleFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20//\x20map\x20the\x20z-axis\x20value\x20to\x20the\x20nearest\x20bit\x20plane\x20to\x20ensure\x20that\x20the\x20result\x20is\x20an\x20integer\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205,\x207,\x208,\x209],\x20width\x20=\x202,\x20height\x20=\x202,\x20level\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x206\x207\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x202\x203\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0afloat\x20interpolateTexture(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x201.0f\x20*\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x201.0f\x20*\x20interval.y;\x0a\x0a\x20\x20float\x20lon0_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon1_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon0_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat1,\x20lev));\x0a\x20\x20float\x20lon1_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat1,\x20lev));\x0a\x0a\x20\x20float\x20lon_lat0\x20=\x20mix(lon0_lat0,\x20lon1_lat0,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat1\x20=\x20mix(lon0_lat1,\x20lon1_lat1,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat\x20=\x20mix(lon_lat0,\x20lon_lat1,\x20lat\x20-\x20lat0);\x0a\x20\x20return\x20lon_lat;\x0a}\x0a\x0avec3\x20linearInterpolation(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bilinear_interpolation\x0a\x20\x20float\x20u\x20=\x20interpolateTexture(U,\x20lonLatLev);\x0a\x20\x20float\x20v\x20=\x20interpolateTexture(V,\x20lonLatLev);\x0a\x20\x20float\x20w\x20=\x20interpolateTexture(W,\x20lonLatLev);\x0a\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec3\x20convertSpeedUnitToLonLat(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20float\x20w\x20=\x20speed.z;\x0a\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20return\x20windVectorInLonLatLev;\x0a}\x0a\x0avec3\x20calculateSpeedByRungeKutta2(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec3\x20y_n\x20=\x20lonLatLev;\x0a\x20\x20vec3\x20f_n\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec3\x20speed\x20=\x20h\x20*\x20linearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20getRange(vec2\x20range)\x20{\x0a\x20\x20float\x20x1\x20=\x200.0f\x20-\x20range.x;\x0a\x20\x20float\x20x2\x20=\x20range.y\x20-\x200.0f;\x0a\x20\x20if(x1\x20<\x200.0f\x20||\x20x2\x20<\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(abs(x1),\x20abs(x2));\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x20abs(max(x1,\x20x2)));\x0a\x20\x20}\x0a}\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20vec2\x20uRange\x20=\x20getRange(uSpeedRange);\x0a\x20\x20vec2\x20vRange\x20=\x20getRange(vSpeedRange);\x0a\x20\x20vec2\x20wRange\x20=\x20getRange(wSpeedRange);\x0a\x20\x20if(length(speed.xyz)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x200.0f;\x0a\x20\x20}\x0a\x0a\x20\x20percent.x\x20=\x20(abs(speed.x)\x20-\x20uRange.x)\x20/\x20(uRange.y\x20-\x20uRange.x);\x0a\x20\x20percent.y\x20=\x20(abs(speed.y)\x20-\x20vRange.x)\x20/\x20(vRange.y\x20-\x20vRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(abs(speed.z)\x20-\x20wRange.x)\x20/\x20(wRange.y\x20-\x20wRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speedOrigin\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLatLev);\x0a\x20\x20vec3\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLatLev,\x20speed);\x0a\x0a\x20\x20vec4\x20particleSpeed\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speed\x20/\x20speedScaleFactor));\x0a\x20\x20\x20\x20//\x20gl_FragColor\x20=\x20particleSpeed;\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a','_canrefresh','shaderProgram','8PQCuEx','_mountedHook','GeometryAttributes','colors','textures','framebuffers','_onMouseUpEvent','_randomParticle','resize','CanvasWindField','colorTextures','camera','depthTest','redraw','pixelFormat','umax','top','Cesium','1159430ffXDBS','cos','updateViewerParameters','getColorTexture','blue','segments','NEAREST','clear','_pointerEvents','default','push','PrimitiveType','attributeLocations','off','getV','particleSystem','currentTrails','canvasWidth','fadeOpacity','dimensions','latRange','mouseHidden','mouse_down','#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0aout\x20vec4\x20fragColor;\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0f\x20*\x20trailsColor)\x20/\x20255.0f;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20if(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20pointsColor;\x0a\x20\x20}\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20trailsColor;\x0a\x20\x20}\x0a\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a','willReadFrequently','randomBetween','_bilinearInterpolation','_map','104tiUYSV','init','commandType','currentParticlesPosition','toDegrees','removeAll','lat','clientWidth','DEPTH_COMPONENT','primitiveType','Framebuffer','rows','DISABLE_GL_POSITION_LOG_DEPTH','UNSIGNED_BYTE','getRandomLatLng','BaseLayer','maxParticles','depthMask','clientHeight','particlesNumber','speed','CanvasWindLayer','type','options','ZERO','_onMapWhellEvent','RenderState','destroy','north','mouseUp','random','register','xmin','all','createRawRenderState','context','WindUtil','height','createRenderingPrimitives','windTextures','createTexture','windField','source','_onMouseMoveEvent','particlesTextureSize','primitives','ShaderSource','blending','maxAge','pow','viewerParameters','fragmentShaderSource','Cartesian2','sources','cols','_tomap','randomizeParticles','sqrt','strokeStyle','style','udata','875727oUdxPw','STATIC_DRAW','11AFiMDJ','Cartesian3','mouseDown','outputTexture','visibility','round','16798068wAYryq','pointerEvents','_removedHook','depthTexture','autoClear','addEventListener','IDENTITY','_colorRamp','dropRateBump','stroke','fixedHeight','particleHeight','6986287yfNEpI','11xwETHC','setOptions','clampToLatitudeRange','length','_addedHook','createRenderingTextures','speedFactor','east','nextTrails','preRender','layer','clearCommand','setData','array','geometry','data','PixelDatatype','_updateIng2','width','particlesTextures','tlat','visible','age','Draw','TWO_PI','1162000MlbyCI','add','isDestroy','6OlcsqN','lineWidth','currentTrailsDepth','speedRate','ComponentDatatype','framebuffer','#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20trailsColor;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a','zIndex','wind','ComputeCommand','VertexArray','getUVByXY','_calc_speedRate','red','vertexShaderSource','scene','setDate','defined','globalAlpha','destination-in','forEach','fromGeometry','Sampler','vdata','_calcUV','OPAQUE','createWindTextures','Math','frameTime','13442epOHsx','BoundingSphere','lev','commandToExecute','nextParticlesPosition','colorTable','postProcessingPosition','ymin','ClearCommand','destroyParticlesTextures','reverse','owner','TextureMagnificationFilter','_animateFrame','1438974CAObiD','windData','createRenderingFramebuffers','min','GeometryAttribute','particlesComputing','EventType','trails','ymax','WindLayer','ShaderProgram','Matrix4','tlng','RGBA','_speedRate'];_0x12a6=function(){return _0x102c53;};return _0x12a6();}_0x2c63d8['__proto__']=null,_0x2c63d8['getU']=getU,_0x2c63d8[_0x51a8ec(0x143,0xc4)]=getV,_0x2c63d8['getSpeed']=getSpeed,_0x2c63d8['getDirection']=getDirection;var WindUtil=_0x2c63d8;const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x259887){function _0x674848(_0x4b0cc7,_0xff921e){return _0x51a8ec(_0x4b0cc7,_0xff921e-0x4a9);}this['commandType']=_0x259887['commandType'],this['geometry']=_0x259887[_0x674848(0x447,0x4b8)];function _0x1567d8(_0x3d84ae,_0xbc4ced){return _0x51a8ec(_0xbc4ced,_0x3d84ae- -0x35);}this['attributeLocations']=_0x259887['attributeLocations'],this[_0x674848(0x59c,0x584)]=_0x259887[_0x674848(0x518,0x584)],this[_0x674848(0x4c4,0x536)]=_0x259887['uniformMap'],this[_0x674848(0x45d,0x4d4)]=_0x259887['vertexShaderSource'],this['fragmentShaderSource']=_0x259887[_0x1567d8(0xd0,0x70)],this['rawRenderState']=_0x259887['rawRenderState'],this['framebuffer']=_0x259887['framebuffer'],this['outputTexture']=_0x259887[_0x1567d8(-0x44,0x4c)],this[_0x674848(0x47e,0x4a1)]=_0x259887[_0x674848(0x46a,0x4a1)]??![],this['preExecute']=_0x259887[_0x674848(0x4ef,0x529)],this[_0x674848(0x4e4,0x508)]=!![],this['commandToExecute']=undefined,this['clearCommand']=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6[(_0x1567d8(0xd,0x29))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x1567d8(-0x13,0xc)],'pass':Cesium$6[_0x1567d8(0x4c,-0x3)][_0x674848(0x53a,0x4df)]}));}[_0x3e8737(0xf7,0xbf)](_0x4dbe3b){function _0x11839(_0x3dbedd,_0x5e4e6e){return _0x3e8737(_0x3dbedd-0x212,_0x5e4e6e);}function _0xb8abd(_0x349fca,_0x3fcd13){return _0x51a8ec(_0x349fca,_0x3fcd13- -0xa8);}switch(this[_0x11839(0x37b,0x30f)]){case _0xb8abd(-0x6b,-0x90):{const _0x440a10=Cesium$6['VertexArray']['fromGeometry']({'context':_0x4dbe3b,'geometry':this[_0x11839(0x2b6,0x2b6)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage'][_0xb8abd(-0x56,-0xbb)]}),_0x4fe873={};_0x4fe873[_0xb8abd(0x9a,0x4d)]=_0x4dbe3b,_0x4fe873['attributeLocations']=this[_0xb8abd(0x4b,0x1a)],_0x4fe873[_0xb8abd(-0x86,-0x7d)]=this[_0x11839(0x2d2,0x340)],_0x4fe873['fragmentShaderSource']=this['fragmentShaderSource'];const _0x39d415=Cesium$6[_0x11839(0x2f9,0x2bd)][_0xb8abd(0x1d,-0x8)](_0x4fe873),_0x5ce38b=Cesium$6[_0x11839(0x393,0x327)][_0xb8abd(-0x85,-0x8)](this['rawRenderState']);return new Cesium$6[(_0xb8abd(-0x66,-0x3c))]({'owner':this,'vertexArray':_0x440a10,'primitiveType':this['primitiveType'],'uniformMap':this[_0x11839(0x334,0x35a)],'modelMatrix':Cesium$6[_0x11839(0x2fa,0x2d4)][_0xb8abd(-0xaa,-0xae)],'shaderProgram':_0x39d415,'framebuffer':this['framebuffer'],'renderState':_0x5ce38b,'pass':Cesium$6['Pass']['OPAQUE']});}case'Compute':{const _0x86e926={};return _0x86e926[_0xb8abd(-0x53,-0x63)]=this,_0x86e926[_0xb8abd(0x4,0x5d)]=this[_0x11839(0x3ac,0x43c)],_0x86e926[_0x11839(0x334,0x321)]=this['uniformMap'],_0x86e926['outputTexture']=this['outputTexture'],_0x86e926['persists']=!![],new Cesium$6[(_0x11839(0x2cd,0x27b))](_0x86e926);}}}['setGeometry'](_0x1639b7,_0x541fc1){this[_0x1bc232(0x4c1,0x45a)]=_0x541fc1;const _0x2f365b=Cesium$6[_0x1bc232(0x45a,0x472)][_0x1bc232(0x4f9,0x47d)]({'context':_0x1639b7,'geometry':this[_0x1bc232(0x409,0x45a)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});function _0x1bc232(_0x520395,_0x40b3be){return _0x3e8737(_0x40b3be-0x3b6,_0x520395);}function _0x341f46(_0x19869a,_0x6f8a52){return _0x51a8ec(_0x19869a,_0x6f8a52- -0x20f);}this['commandToExecute']['vertexArray']=_0x2f365b;}['update'](_0x4fc1a8){if(!this[_0x4388ab(0x31,-0x36)])return;if(_0x4fc1a8[_0x4388ab(0x2b,-0xd)]!==Cesium$6['SceneMode']['SCENE3D'])return;!Cesium$6[_0x4388ab(0x0,0x79)](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x4fc1a8['context']));Cesium$6['defined'](this['preExecute'])&&this['preExecute']();Cesium$6[_0x19ce14(0x1b9,0x18f)](this['clearCommand'])&&_0x4fc1a8['commandList']['push'](this['clearCommand']);function _0x19ce14(_0x413c40,_0x29cbe2){return _0x51a8ec(_0x413c40,_0x29cbe2-0x161);}function _0x4388ab(_0x34ce21,_0x1b973c){return _0x51a8ec(_0x1b973c,_0x34ce21- -0x2e);}_0x4fc1a8['commandList'][_0x4388ab(0x92,0x34)](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){function _0x9c5380(_0x509d24,_0x64586c){return _0x3e8737(_0x509d24- -0x1fc,_0x64586c);}function _0x2e10b6(_0x2ac2b9,_0x4e2868){return _0x51a8ec(_0x2ac2b9,_0x4e2868-0x208);}if(this['clearCommand']){var _0x2a5d64,_0x4c22d4;(_0x2a5d64=this['clearCommand'])!==null&&_0x2a5d64!==void 0x0&&_0x2a5d64['vertexArray']&&this[_0x2e10b6(0x1a5,0x214)]['vertexArray'][_0x2e10b6(0x2d8,0x2f5)](),(_0x4c22d4=this['clearCommand'])!==null&&_0x4c22d4!==void 0x0&&_0x4c22d4['shaderProgram']&&this['clearCommand']['shaderProgram']['destroy'](),delete this['clearCommand'];}return this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray'][_0x9c5380(-0x7a,-0xaf)](),this[_0x9c5380(-0x12a,-0x1ae)][_0x2e10b6(0x2f7,0x2ab)]&&this['commandToExecute']['shaderProgram']['destroy'](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0x1eeb91=function(){const _0x17e0f2=new Cesium$5[(_0x6c8296(0x325,0x2c6))]({'attributes':new Cesium$5[(_0x6c8296(0x363,0x3b0))]({'position':new Cesium$5[(_0x6c8296(0x309,0x27b))]({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype'][_0x55d6f0(-0x205,-0x26a)],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});function _0x6c8296(_0x58b7cb,_0x88bb1f){return _0x25e8(_0x58b7cb-0x1ea,_0x88bb1f);}function _0x55d6f0(_0x465c33,_0x3c07c5){return _0x25e8(_0x3c07c5- -0x3cf,_0x465c33);}return _0x17e0f2;},_0x2846a4=function(_0x44082a,_0x2fd047){if(Cesium$5['defined'](_0x2fd047)){const _0x1ebf6f={};_0x1ebf6f['arrayBufferView']=_0x2fd047,_0x44082a[_0x471da4(0x2d1,0x271)]=_0x1ebf6f;}function _0x471da4(_0x23fbec,_0x24053c){return _0x25e8(_0x23fbec-0x102,_0x24053c);}const _0x4364ce=new Cesium$5['Texture'](_0x44082a);return _0x4364ce;},_0x390d57=function(_0x2417de,_0x5237a8,_0x107cdb){const _0xf07499={};_0xf07499['context']=_0x2417de;function _0x396d6c(_0x24dae5,_0x556726){return _0x25e8(_0x556726-0x204,_0x24dae5);}_0xf07499[_0x3f5b3e(0x1bb,0x12b)]=[_0x5237a8],_0xf07499['depthTexture']=_0x107cdb;const _0x368044=new Cesium$5[(_0x3f5b3e(0x15f,0x159))](_0xf07499);function _0x3f5b3e(_0xceedd9,_0x35e6dc){return _0x25e8(_0x35e6dc- -0x56,_0xceedd9);}return _0x368044;},_0x4d0c41=function(_0x2d4c03){function _0x4175e2(_0x13c2bb,_0x1f151a){return _0x25e8(_0x13c2bb- -0x22b,_0x1f151a);}const _0x39b160=!![],_0x20aad8=![],_0x514e8c={};_0x514e8c['viewport']=_0x2d4c03['viewport'],_0x514e8c['depthTest']=_0x2d4c03[_0x15e2c1(-0x1c4,-0x185)],_0x514e8c[_0x15e2c1(-0x191,-0x1d2)]=_0x2d4c03[_0x4175e2(-0x75,-0x15)],_0x514e8c['blending']=_0x2d4c03[_0x4175e2(-0x57,0x5)];function _0x15e2c1(_0xc178d2,_0x4441b5){return _0x25e8(_0xc178d2- -0x347,_0x4441b5);}const _0x2c0d5f=_0x514e8c,_0x2c5772=Cesium$5['Appearance']['getDefaultRenderState'](_0x39b160,_0x20aad8,_0x2c0d5f);return _0x2c5772;},_0x2973c5=function(_0x15fa64){const _0x73029f={},_0x2abb35=Cesium$5['Math']['mod'](_0x15fa64['west'],Cesium$5[_0x2551b8(0x44,0x8a)][_0x2551b8(0x25,0x5e)]),_0x20aae7=Cesium$5[_0x3a34a7(0x1b7,0x1d6)]['mod'](_0x15fa64[_0x2551b8(0x14,-0x10)],Cesium$5['Math']['TWO_PI']);function _0x3a34a7(_0x27a7f4,_0x2a81b3){return _0x25e8(_0x27a7f4-0xac,_0x2a81b3);}const _0x3d9861=_0x15fa64['width'];let _0x29fb5c,_0x28c7aa;_0x3d9861>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x29fb5c=0x0,_0x28c7aa=Cesium$5['Math']['TWO_PI']):_0x20aae7-_0x2abb35<_0x3d9861?(_0x29fb5c=_0x2abb35,_0x28c7aa=_0x2abb35+_0x3d9861):(_0x29fb5c=_0x2abb35,_0x28c7aa=_0x20aae7);_0x73029f['lon']={'min':Cesium$5['Math']['toDegrees'](_0x29fb5c),'max':Cesium$5[_0x2551b8(0x44,0x4c)]['toDegrees'](_0x28c7aa)};const _0x2e775e=_0x15fa64['south'],_0x46ee9f=_0x15fa64[_0x3a34a7(0x26d,0x2c7)],_0x10cc82=_0x15fa64[_0x3a34a7(0x276,0x217)],_0x35aafd=_0x10cc82>Cesium$5[_0x2551b8(0x44,-0x29)]['PI']/0xc?_0x10cc82/0x2:0x0;function _0x2551b8(_0x4a9320,_0x339397){return _0x25e8(_0x4a9320- -0xc7,_0x339397);}let _0x229bc1=Cesium$5['Math']['clampToLatitudeRange'](_0x2e775e-_0x35aafd),_0x485bd1=Cesium$5['Math'][_0x3a34a7(0x182,0x185)](_0x46ee9f+_0x35aafd);return _0x229bc1<-Cesium$5[_0x3a34a7(0x1b7,0x206)]['PI_OVER_THREE']&&(_0x229bc1=-Cesium$5['Math']['PI_OVER_TWO']),_0x485bd1>Cesium$5['Math']['PI_OVER_THREE']&&(_0x485bd1=Cesium$5[_0x2551b8(0x44,0x94)]['PI_OVER_TWO']),_0x73029f['lat']={'min':Cesium$5[_0x2551b8(0x44,-0x30)][_0x2551b8(0xe2,0x54)](_0x229bc1),'max':Cesium$5[_0x2551b8(0x44,0x1b)]['toDegrees'](_0x485bd1)},_0x73029f;},_0x617ad8={};_0x617ad8['getFullscreenQuad']=_0x1eeb91,_0x617ad8['createTexture']=_0x2846a4,_0x617ad8[_0x467b5d(-0x177,-0x154)]=_0x390d57;function _0x467b5d(_0x5481e1,_0x5d20b5){return _0x3e8737(_0x5d20b5- -0x24e,_0x5481e1);}return _0x617ad8['createRawRenderState']=_0x4d0c41,_0x617ad8['viewRectangleToLonLatRange']=_0x2973c5,_0x617ad8;}());var fullscreenVert='#version\x20300\x20es\x0a\x0ain\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20gl_Position\x20=\x20vec4(position,\x201.0f);\x0a}\x0a',screenDrawFrag=_0x51a8ec(0x9d,0x23),segmentDrawFrag='#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20bool\x20colour;\x0a\x0ain\x20float\x20heightNormalization;\x0ain\x20float\x20speedNormalization;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speedNormalization\x20>\x20zero)\x20{\x0a\x20\x20\x20\x20if(colour)\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(heightNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',segmentDrawVert='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20lines\x20drawing\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0auniform\x20vec2\x20hRange;\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0aout\x20float\x20heightNormalization;\x0aout\x20float\x20speedNormalization;\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight\x20+\x20lonLatLev.z;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0f,\x20360.0f)\x20-\x20180.0f;\x0a\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0f;\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(speed.z\x20-\x20wSpeedRange.x)\x20/\x20(wSpeedRange.y\x20-\x20wSpeedRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20vec3\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rgb;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x20\x20\x20\x20//\x20render\x20lines\x20with\x20triangles\x20and\x20miter\x20joint\x0a\x20\x20\x20\x20//\x20read\x20https://blog.scottlogic.com/2019/11/18/drawing-lines-with-webgl.html\x20for\x20detail\x0a\x20\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20projectedCoordinates.next,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.next\x20+\x20offset;\x0a\x20\x20}\x0a\x0a\x20\x20heightNormalization\x20=\x20(currentPosition.z\x20-\x20hRange.x)\x20/\x20(hRange.y\x20-\x20hRange.x);\x0a\x0a\x20\x20speedNormalization\x20=\x20texture(particlesSpeed,\x20particleIndex).a;\x0a}\x0a',trailDrawFrag=_0x3e8737(0x162,0x1a7);const Cesium$4=mars3d__namespace['Cesium'];function _0x3e8737(_0x5a4613,_0x33f73a){return _0x25e8(_0x5a4613- -0x3e,_0x33f73a);}class ParticlesRendering{constructor(_0x13e199,_0x4324b7,_0x1a4c7e,_0x324699,_0x3a610e){function _0x5eafdf(_0x3d8c4c,_0x5e8af2){return _0x3e8737(_0x3d8c4c- -0x2f5,_0x5e8af2);}this['colour']=_0x1a4c7e['colors']==='height',this[_0x5eafdf(-0x25a,-0x27a)](_0x13e199,_0x4324b7,_0x1a4c7e['colors']),this[_0x35827e(0x3b7,0x3e1)](_0x13e199);function _0x35827e(_0x4046a4,_0xae4ad3){return _0x51a8ec(_0xae4ad3,_0x4046a4-0x36d);}this['createRenderingPrimitives'](_0x13e199,_0x4324b7,_0x1a4c7e,_0x324699,_0x3a610e);}['createRenderingTextures'](_0x380730,_0x59e2c3,_0x35be6c){const _0x16f89d={};_0x16f89d[_0x17b408(-0x21b,-0x241)]=_0x380730,_0x16f89d[_0x17c83d(0x20,0x42)]=_0x380730[_0x17c83d(0x99,0x19)],_0x16f89d['height']=_0x380730['drawingBufferHeight'],_0x16f89d[_0x17c83d(0xbf,0x14c)]=Cesium$4['PixelFormat']['RGBA'];function _0x17b408(_0x4fab3c,_0x590c06){return _0x3e8737(_0x4fab3c- -0x3a5,_0x590c06);}_0x16f89d[_0x17b408(-0x287,-0x2af)]=Cesium$4['PixelDatatype'][_0x17c83d(0xec,0x88)];const _0x39b78a=_0x16f89d,_0x2d4f65={};_0x2d4f65[_0x17c83d(0x102,0x194)]=_0x380730;function _0x17c83d(_0x41a4cf,_0xd42ae2){return _0x51a8ec(_0xd42ae2,_0x41a4cf-0xd);}_0x2d4f65['width']=_0x380730[_0x17b408(-0x284,-0x20d)],_0x2d4f65['height']=_0x380730['drawingBufferHeight'],_0x2d4f65['pixelFormat']=Cesium$4[_0x17b408(-0x276,-0x2d7)][_0x17c83d(0xe7,0x157)],_0x2d4f65[_0x17c83d(0x96,0xbc)]=Cesium$4['PixelDatatype']['UNSIGNED_INT'];const _0xf70750=_0x2d4f65,_0x50794c=_0x35be6c['length'],_0x5ebbae=new Float32Array(_0x50794c*0x3);for(let _0x1d6759=0x0;_0x1d6759<_0x50794c;_0x1d6759++){const _0x2deae7=Cesium$4['Color']['fromCssColorString'](_0x35be6c[_0x1d6759]);_0x5ebbae[0x3*_0x1d6759]=_0x2deae7[_0x17c83d(0x37,0x1c)],_0x5ebbae[0x3*_0x1d6759+0x1]=_0x2deae7['green'],_0x5ebbae[0x3*_0x1d6759+0x2]=_0x2deae7[_0x17b408(-0x256,-0x207)];}const _0x52b059={'context':_0x380730,'width':_0x50794c,'height':0x1,'pixelFormat':Cesium$4['PixelFormat'][_0x17c83d(0x64,0xd4)],'pixelDatatype':Cesium$4[_0x17c83d(0x1e,0x66)]['FLOAT'],'sampler':new Cesium$4[(_0x17b408(-0x2dd,-0x302))]({'minificationFilter':Cesium$4['TextureMinificationFilter'][_0x17b408(-0x286,-0x260)],'magnificationFilter':Cesium$4[_0x17c83d(0x53,0x7e)]['LINEAR']})};this[_0x17c83d(0xb5,0x86)]={'segmentsColor':Util[_0x17c83d(0x107,0x14d)](_0x39b78a),'segmentsDepth':Util['createTexture'](_0xf70750),'currentTrailsColor':Util['createTexture'](_0x39b78a),'currentTrailsDepth':Util[_0x17c83d(0x107,0x12d)](_0xf70750),'nextTrailsColor':Util[_0x17c83d(0x107,0x7f)](_0x39b78a),'nextTrailsDepth':Util['createTexture'](_0xf70750),'colorTable':Util[_0x17b408(-0x216,-0x22f)](_0x52b059,_0x5ebbae)};}['createRenderingFramebuffers'](_0x54fe42){function _0x205336(_0x582317,_0x2f1bce){return _0x3e8737(_0x582317- -0x2bc,_0x2f1bce);}function _0x7af47d(_0x39b114,_0x5a4544){return _0x3e8737(_0x39b114-0x1dc,_0x5a4544);}this['framebuffers']={'segments':Util['createFramebuffer'](_0x54fe42,this[_0x7af47d(0x319,0x335)]['segmentsColor'],this[_0x7af47d(0x319,0x308)]['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x54fe42,this['textures']['currentTrailsColor'],this['textures'][_0x205336(-0x208,-0x287)]),'nextTrails':Util[_0x7af47d(0x2d6,0x297)](_0x54fe42,this[_0x7af47d(0x319,0x2f1)]['nextTrailsColor'],this['textures'][_0x205336(-0x19c,-0x16e)])};}[_0x51a8ec(-0x4,0x74)](_0x4b20f1){const _0x4046af=0x4;let _0x511575=[];for(let _0x3260d8=0x0;_0x3260d8<_0x4b20f1[_0x1892c0(-0xa1,-0x85)];_0x3260d8++){for(let _0x109599=0x0;_0x109599<_0x4b20f1['particlesTextureSize'];_0x109599++){for(let _0x5010f7=0x0;_0x5010f7<_0x4046af;_0x5010f7++){_0x511575[_0x1892c0(-0xdf,-0x120)](_0x3260d8/_0x4b20f1['particlesTextureSize']),_0x511575['push'](_0x109599/_0x4b20f1[_0x1892c0(-0xa1,-0x94)]);}}}_0x511575=new Float32Array(_0x511575);function _0x1892c0(_0x21c714,_0x1ba156){return _0x51a8ec(_0x1ba156,_0x21c714- -0x19f);}let _0x312a83=[];for(let _0xf267f=0x0;_0xf267f<_0x4b20f1[_0x1892c0(-0xbd,-0xe1)];_0xf267f++){_0x312a83[_0x1892c0(-0xdf,-0x60)](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x312a83=new Float32Array(_0x312a83);function _0x3f7779(_0x4017c3,_0x343a9b){return _0x3e8737(_0x4017c3- -0x378,_0x343a9b);}let _0x44e7d1=[];for(let _0x14323d=0x0,_0x24bd82=0x0;_0x14323d<_0x4b20f1['maxParticles'];_0x14323d++){_0x44e7d1['push'](_0x24bd82+0x0,_0x24bd82+0x1,_0x24bd82+0x2,_0x24bd82+0x2,_0x24bd82+0x1,_0x24bd82+0x3),_0x24bd82+=_0x4046af;}_0x44e7d1=new Uint32Array(_0x44e7d1);const _0x3e08e2=new Cesium$4['Geometry']({'attributes':new Cesium$4[(_0x1892c0(-0xf9,-0xe3))]({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4[_0x3f7779(-0x2c2,-0x2dd)]['FLOAT'],'componentsPerAttribute':0x2,'values':_0x511575}),'normal':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4[_0x1892c0(-0x17e,-0xf8)][_0x1892c0(-0x10d,-0x196)],'componentsPerAttribute':0x3,'values':_0x312a83})}),'indices':_0x44e7d1});return _0x3e08e2;}[_0x3e8737(0x18d,0x1c0)](_0x14b3e9,_0x148467,_0x53566a,_0x33a5ce,_0x1c598f){const _0x2f0350=this;function _0x2b1f1a(_0x1a9853,_0x1fb792){return _0x51a8ec(_0x1fb792,_0x1a9853-0x2e);}const _0x281727={};_0x281727['st']=0x0,_0x281727['normal']=0x1;const _0x2a79e4={};_0x2a79e4[_0x1b6f27(0x33c,0x32c)]=[segmentDrawVert];const _0x12bd88={};_0x12bd88['sources']=[segmentDrawFrag];const _0x9d7da3={};_0x9d7da3['enabled']=!![];const _0x32ae99={};function _0x1b6f27(_0x47ed8f,_0x2b08b5){return _0x3e8737(_0x47ed8f-0x2c3,_0x2b08b5);}_0x32ae99['viewport']=undefined,_0x32ae99['depthTest']=_0x9d7da3,_0x32ae99['depthMask']=!![];const _0x2f5dc3={};_0x2f5dc3['position']=0x0,_0x2f5dc3['st']=0x1;const _0x439082={};_0x439082['defines']=[_0x1b6f27(0x436,0x428)],_0x439082['sources']=[fullscreenVert];const _0x4210c8={};_0x4210c8[_0x1b6f27(0x3d7,0x3fc)]=['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],_0x4210c8[_0x1b6f27(0x33c,0x38a)]=[trailDrawFrag];const _0x38001c={};_0x38001c['position']=0x0,_0x38001c['st']=0x1;const _0x42e3c2={};_0x42e3c2['defines']=['DISABLE_GL_POSITION_LOG_DEPTH'],_0x42e3c2['sources']=[fullscreenVert];const _0x1547ae={};_0x1547ae['defines']=[_0x1b6f27(0x3d4,0x34e)],_0x1547ae[_0x1b6f27(0x33c,0x382)]=[screenDrawFrag];const _0x201cc9={};_0x201cc9['enabled']=![];const _0x3bb397={};_0x3bb397['enabled']=!![],this[_0x2b1f1a(0x12d,0x182)]={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x281727,'geometry':this['createSegmentsGeometry'](_0x53566a),'primitiveType':Cesium$4[_0x2b1f1a(0xef,0xee)]['TRIANGLES'],'uniformMap':{'previousParticlesPosition':function(){function _0x324f49(_0x258240,_0x4d55c4){return _0x1b6f27(_0x4d55c4- -0x3bc,_0x258240);}return _0x1c598f[_0x324f49(0x24,-0x50)]['previousParticlesPosition'];},'currentParticlesPosition':function(){function _0x2d1504(_0x17ae06,_0x5a4b38){return _0x1b6f27(_0x17ae06-0x8,_0x5a4b38);}return _0x1c598f[_0x2d1504(0x374,0x368)]['currentParticlesPosition'];},'postProcessingPosition':function(){return _0x1c598f['particlesTextures']['postProcessingPosition'];},'particlesSpeed':function(){return _0x1c598f['particlesTextures']['particlesSpeed'];},'colorTable':function(){function _0x5b28c3(_0x1bf82c,_0x333a34){return _0x2b1f1a(_0x333a34- -0xd7,_0x1bf82c);}function _0x411b58(_0x2e8de5,_0x25e90b){return _0x1b6f27(_0x2e8de5- -0x29b,_0x25e90b);}return _0x2f0350[_0x411b58(0x165,0x166)][_0x411b58(0xfc,0xfa)];},'aspect':function(){return _0x14b3e9['drawingBufferWidth']/_0x14b3e9['drawingBufferHeight'];},'H':function(){return _0x148467['H']['array'];},'hRange':function(){function _0x11a059(_0x594ee9,_0x215299){return _0x2b1f1a(_0x215299- -0x123,_0x594ee9);}function _0x2ab834(_0x4fef35,_0x32124b){return _0x2b1f1a(_0x4fef35-0x32c,_0x32124b);}return new Cesium$4[(_0x2ab834(0x33d,0x2dd))](_0x148467['H'][_0x11a059(-0x7e,-0xaa)],_0x148467['H'][_0x11a059(-0x86,-0x66)]);},'uSpeedRange':function(){function _0x4c4874(_0x57c377,_0x3c5b6a){return _0x2b1f1a(_0x3c5b6a-0x293,_0x57c377);}return new Cesium$4['Cartesian2'](_0x148467['U']['min'],_0x148467['U'][_0x4c4874(0x310,0x350)]);},'vSpeedRange':function(){function _0x2a6af7(_0x1572e0,_0x1eb8bc){return _0x1b6f27(_0x1eb8bc-0x10a,_0x1572e0);}function _0x277c84(_0x4214cf,_0x24e309){return _0x1b6f27(_0x24e309- -0x1e4,_0x4214cf);}return new Cesium$4[(_0x277c84(0x167,0x157))](_0x148467['V'][_0x2a6af7(0x4f1,0x4ad)],_0x148467['V'][_0x277c84(0x1f3,0x203)]);},'wSpeedRange':function(){function _0x521a7c(_0x3f4c15,_0x538b07){return _0x2b1f1a(_0x538b07- -0xa5,_0x3f4c15);}function _0x77d891(_0x8de4ce,_0x2195b2){return _0x1b6f27(_0x8de4ce- -0x63f,_0x2195b2);}return new Cesium$4[(_0x521a7c(-0x59,-0x94))](_0x148467['W'][_0x77d891(-0x29c,-0x22a)],_0x148467['W']['max']);},'pixelSize':function(){return _0x33a5ce['pixelSize'];},'lineWidth':function(){return _0x53566a['lineWidth'];},'particleHeight':function(){function _0x3f0451(_0x1e66b9,_0x539758){return _0x2b1f1a(_0x539758-0x197,_0x1e66b9);}return _0x53566a[_0x3f0451(0x1ee,0x1c4)];},'colour':function(){return _0x2f0350['colour'];}},'vertexShaderSource':new Cesium$4['ShaderSource'](_0x2a79e4),'fragmentShaderSource':new Cesium$4[(_0x1b6f27(0x458,0x420))](_0x12bd88),'rawRenderState':Util['createRawRenderState'](_0x32ae99),'framebuffer':this[_0x2b1f1a(0xd7,0xef)][_0x1b6f27(0x413,0x41e)],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x2f5dc3,'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4[_0x2b1f1a(0xef,0x12f)]['TRIANGLES'],'uniformMap':{'segmentsColorTexture':function(){return _0x2f0350['textures']['segmentsColor'];},'segmentsDepthTexture':function(){function _0x2ba400(_0x4c8e3f,_0x2ba2d0){return _0x2b1f1a(_0x2ba2d0- -0xba,_0x4c8e3f);}return _0x2f0350['textures'][_0x2ba400(0x91,0x8)];},'currentTrailsColor':function(){function _0x10c60d(_0xefcce0,_0x2a721c){return _0x1b6f27(_0x2a721c- -0x109,_0xefcce0);}return _0x2f0350['framebuffers']['currentTrails'][_0x10c60d(0x395,0x308)](0x0);},'trailsDepthTexture':function(){function _0x22a73b(_0x477c81,_0x8a625b){return _0x2b1f1a(_0x477c81- -0x46,_0x8a625b);}function _0x152495(_0x11b951,_0x4ac1a8){return _0x1b6f27(_0x11b951- -0x90,_0x4ac1a8);}return _0x2f0350[_0x22a73b(0x91,0xf1)][_0x22a73b(0xae,0x122)]['depthTexture'];},'fadeOpacity':function(){return _0x53566a['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource'](_0x439082),'fragmentShaderSource':new Cesium$4['ShaderSource'](_0x4210c8),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4[_0x1b6f27(0x3f3,0x454)]['ALWAYS']},'depthMask':!![]}),'framebuffer':this[_0x1b6f27(0x401,0x40a)]['nextTrails'],'autoClear':!![],'preExecute':function(){function _0x14e1ca(_0x39d0cf,_0x183ca4){return _0x1b6f27(_0x39d0cf- -0x193,_0x183ca4);}if(_0x53566a['dynamic']){const _0x5121a8=_0x2f0350['framebuffers']['currentTrails'];_0x2f0350['framebuffers']['currentTrails']=_0x2f0350['framebuffers'][_0x14e1ca(0x1ce,0x1d2)],_0x2f0350['framebuffers']['nextTrails']=_0x5121a8;}function _0x44f8cb(_0x4aaa7d,_0xa3e0a1){return _0x1b6f27(_0xa3e0a1-0x134,_0x4aaa7d);}_0x2f0350['primitives']['trails'][_0x14e1ca(0x202,0x271)]['framebuffer']=_0x2f0350['framebuffers']['nextTrails'],_0x2f0350['primitives']['trails']['clearCommand']['framebuffer']=_0x2f0350['framebuffers']['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x38001c,'geometry':Util[_0x1b6f27(0x3e6,0x3f8)](),'primitiveType':Cesium$4[_0x2b1f1a(0xef,0x101)]['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){function _0xb2a3a(_0x11c34f,_0x249ffd){return _0x2b1f1a(_0x249ffd-0x3a3,_0x11c34f);}return _0x2f0350[_0xb2a3a(0x486,0x47a)]['nextTrails']['getColorTexture'](0x0);},'trailsDepthTexture':function(){function _0x5f1fba(_0x1eba44,_0x3d49eb){return _0x2b1f1a(_0x3d49eb-0x38f,_0x1eba44);}function _0x5f54e8(_0x19dc01,_0x1040c1){return _0x2b1f1a(_0x1040c1-0x150,_0x19dc01);}return _0x2f0350['framebuffers'][_0x5f54e8(0x196,0x187)][_0x5f1fba(0x3e5,0x3b4)];}},'vertexShaderSource':new Cesium$4['ShaderSource'](_0x42e3c2),'fragmentShaderSource':new Cesium$4['ShaderSource'](_0x1547ae),'rawRenderState':Util[_0x2b1f1a(0x122,0xa2)]({'viewport':undefined,'depthTest':_0x201cc9,'depthMask':!![],'blending':_0x3bb397}),'framebuffer':undefined})};}}var CalculateSpeedShader=_0x51a8ec(0x65,0xa1),PostProcessingPositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x0a\x0auniform\x20sampler2D\x20H;\x20//\x20particles\x20height\x20textures\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0auniform\x20vec2\x20viewerLonRange;\x0auniform\x20vec2\x20viewerLatRange;\x0a\x0aconst\x20float\x20randomCoefficient\x20=\x200.1f;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0aconst\x20float\x20dropRate\x20=\x200.1f;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0aconst\x20float\x20dropRateBump\x20=\x200.1f;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0avec4\x20getTextureValue(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20vec4\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D);\x0a\x20\x20return\x20result;\x0a}\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0abool\x20particleNoSpeed(vec3\x20particle)\x20{\x0a\x20\x20vec4\x20speed\x20=\x20getTextureValue(particlesSpeed,\x20particle);\x0a\x20\x20return\x20speed.r\x20==\x200.0f\x20&&\x20speed.g\x20==\x200.0f;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0f);\x0a\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20float\x20height\x20=\x20getTextureValue(H,\x20vec3(randomLon,\x20randomLat,\x20lev)).r;\x0a\x0a\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20height);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20viewerLatRange.x\x20||\x20particle.y\x20>\x20viewerLatRange.y\x20||\x20particle.x\x20<\x20viewerLonRange.x\x20||\x20particle.x\x20>\x20viewerLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f);\x0a\x20\x20}\x0a}\x0a',UpdatePositionShader=_0x51a8ec(0xd6,0x9d);const Cesium$3=mars3d__namespace[_0x51a8ec(0xc5,0xb5)];class ParticlesComputing{constructor(_0x51b74d,_0x580f22,_0x356250,_0x4b4c08){this['data']=_0x580f22,this['createWindTextures'](_0x51b74d,_0x580f22),this['createParticlesTextures'](_0x51b74d,_0x356250,_0x4b4c08),this['createComputingPrimitives'](_0x580f22,_0x356250,_0x4b4c08);}[_0x51a8ec(-0x46,0x37)](_0x8b86,_0x220ae1){function _0x4dcd96(_0x1b6c1a,_0x42c5d3){return _0x3e8737(_0x42c5d3-0x17d,_0x1b6c1a);}var _0x4b3ee8;function _0x1e07fc(_0x5660b4,_0x592609){return _0x51a8ec(_0x5660b4,_0x592609-0x360);}const _0x62813f={'context':_0x8b86,'width':_0x220ae1['dimensions']['lon'],'height':_0x220ae1['dimensions']['lat']*(_0x220ae1[_0x1e07fc(0x397,0x429)]['lev']||0x1),'pixelFormat':Cesium$3[_0x1e07fc(0x455,0x3fa)]['RED'],'pixelDatatype':Cesium$3[_0x4dcd96(0x19f,0x223)][_0x1e07fc(0x428,0x3f2)],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x4dcd96(0x2d8,0x2ce)]})};this['windTextures']={'U':Util[_0x1e07fc(0x4ca,0x45a)](_0x62813f,_0x220ae1['U'][_0x4dcd96(0x1ce,0x220)]),'V':Util[_0x4dcd96(0x33c,0x30c)](_0x62813f,_0x220ae1['V']['array']),'W':Util['createTexture'](_0x62813f,((_0x4b3ee8=_0x220ae1['W'])===null||_0x4b3ee8===void 0x0?void 0x0:_0x4b3ee8[_0x1e07fc(0x310,0x36e)])??_0x220ae1['U'][_0x4dcd96(0x1b8,0x220)]),'H':Util['createTexture'](_0x62813f,_0x220ae1['H']['array'])};}['createParticlesTextures'](_0x139ae9,_0x5e1385,_0x2c32ec){const _0xf23f10={'context':_0x139ae9,'width':_0x5e1385['particlesTextureSize'],'height':_0x5e1385[_0xb50ca6(0x241,0x267)],'pixelFormat':Cesium$3['PixelFormat'][_0xb50ca6(0x1f4,0x1be)],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x48dde3(0x17c,0x1e1))]({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0xb50ca6(0x1ac,0x225)],'magnificationFilter':Cesium$3[_0xb50ca6(0x22a,0x1af)][_0xb50ca6(0x29a,0x225)]})};function _0x48dde3(_0x40fd64,_0x22a85f){return _0x51a8ec(_0x40fd64,_0x22a85f-0x1ae);}const _0x237418=this[_0xb50ca6(0x159,0x150)](_0x5e1385[_0xb50ca6(0x29b,0x24b)],_0x2c32ec),_0x48c328=new Float32Array(0x4*_0x5e1385['maxParticles'])['fill'](0x0);function _0xb50ca6(_0x5a625e,_0x4696b2){return _0x51a8ec(_0x5a625e,_0x4696b2-0x169);}this[_0x48dde3(0x241,0x1c2)]={'previousParticlesPosition':Util['createTexture'](_0xf23f10,_0x237418),'currentParticlesPosition':Util['createTexture'](_0xf23f10,_0x237418),'nextParticlesPosition':Util['createTexture'](_0xf23f10,_0x237418),'postProcessingPosition':Util[_0x48dde3(0x225,0x2a8)](_0xf23f10,_0x237418),'particlesSpeed':Util['createTexture'](_0xf23f10,_0x48c328)};}['randomizeParticles'](_0x234c8f,_0x48c3d6){const _0xad20f4=new Float32Array(0x4*_0x234c8f);for(let _0x2d78d6=0x0;_0x2d78d6<_0x234c8f;_0x2d78d6++){_0xad20f4[0x4*_0x2d78d6]=Cesium$3['Math']['randomBetween'](_0x48c3d6['lonRange']['x'],_0x48c3d6['lonRange']['y']),_0xad20f4[0x4*_0x2d78d6+0x1]=Cesium$3['Math']['randomBetween'](_0x48c3d6[_0xb23c39(0x3ce,0x3d8)]['x'],_0x48c3d6[_0xb23c39(0x3ae,0x3d8)]['y']),_0xad20f4[0x4*_0x2d78d6+0x2]=Cesium$3['Math'][_0xb23c39(0x353,0x3dd)](this['data']['lev']['min'],this['data'][_0x4b991a(0x456,0x408)][_0x4b991a(0x4e8,0x45b)]),_0xad20f4[0x4*_0x2d78d6+0x3]=0x0;}function _0xb23c39(_0x3b46ca,_0x4639f7){return _0x51a8ec(_0x3b46ca,_0x4639f7-0x30e);}function _0x4b991a(_0xee8668,_0x30c9cb){return _0x3e8737(_0x30c9cb-0x337,_0xee8668);}return _0xad20f4;}['getValidRange'](_0x53a3a8){const _0x42d08e=[_0x53a3a8[_0x444f25(0x3b,0x53)]['lon'],_0x53a3a8['dimensions'][_0x444f25(-0x18,0x62)],_0x53a3a8[_0x46f845(0x240,0x262)][_0x46f845(0x1cc,0x1d5)]];function _0x444f25(_0xf83d20,_0x33cae9){return _0x51a8ec(_0xf83d20,_0x33cae9- -0x76);}const _0x2c144d=[_0x53a3a8['lon'][_0x46f845(0x241,0x1e4)],_0x53a3a8[_0x444f25(0xa8,0x62)]['min'],_0x53a3a8[_0x444f25(0x55,-0x3a)]['min']],_0x41f883=[_0x53a3a8['lon'][_0x444f25(-0x53,0x19)],_0x53a3a8['lat']['max'],_0x53a3a8['lev']['max']],_0x2794ca=[(_0x41f883[0x0]-_0x2c144d[0x0])/(_0x42d08e[0x0]-0x1),(_0x41f883[0x1]-_0x2c144d[0x1])/(_0x42d08e[0x1]-0x1),_0x42d08e[0x2]>0x1?(_0x41f883[0x2]-_0x2c144d[0x2])/(_0x42d08e[0x2]-0x1):0x1],_0x5e56de=Math['floor'](Math['random']()*_0x53a3a8['U']['array'][_0x444f25(0xc,-0x72)]),_0x2182d4=_0x5e56de%(_0x42d08e[0x0]*_0x42d08e[0x1]),_0x3c5002=Math['floor'](_0x2182d4/_0x42d08e[0x0]),_0x2ea6c8=_0x2182d4%_0x42d08e[0x0],_0x4a003d=Cesium$3['Math']['randomBetween'](_0x2c144d[0x0]+_0x2ea6c8*_0x2794ca[0x0],_0x2c144d[0x0]+(_0x2ea6c8+0x1)*_0x2794ca[0x0]),_0x173b0d=Cesium$3['Math'][_0x46f845(0x29f,0x268)](_0x2c144d[0x1]+(_0x3c5002-0x1)*_0x2794ca[0x1],_0x2c144d[0x1]+_0x3c5002*_0x2794ca[0x1]);function _0x46f845(_0x4bd18a,_0x44551a){return _0x51a8ec(_0x4bd18a,_0x44551a-0x199);}const _0x53e140=_0x53a3a8['H'][_0x46f845(0x1f8,0x1a7)][_0x5e56de]||0x0;return[_0x4a003d,_0x173b0d,_0x53e140];}['destroyParticlesTextures'](){function _0x376942(_0x5e7ef4,_0x351e68){return _0x3e8737(_0x351e68- -0x311,_0x5e7ef4);}function _0x427a63(_0x2e2d57,_0x8cdcc9){return _0x51a8ec(_0x8cdcc9,_0x2e2d57-0x214);}Object[_0x427a63(0x28b,0x272)](this['particlesTextures'])[_0x427a63(0x245,0x25b)](_0xdd9063=>{function _0x11fabe(_0x413cf5,_0x4e4402){return _0x376942(_0x413cf5,_0x4e4402-0x6db);}this[_0x11fabe(0x4a6,0x473)][_0xdd9063]['destroy']();});}['createComputingPrimitives'](_0x3d9842,_0x4f4fe7,_0x38b6d3){const _0xb85423=new Cesium$3[(_0x361bba(0xa9,0x69))](_0x3d9842['dimensions']['lon'],_0x3d9842['dimensions']['lat'],_0x3d9842['dimensions'][_0x1d339a(0x260,0x281)]),_0x3b00a5=new Cesium$3['Cartesian3'](_0x3d9842['lon']['min'],_0x3d9842[_0x1d339a(0x2ba,0x31d)][_0x361bba(0x105,0x191)],_0x3d9842['lev'][_0x361bba(0x105,0x91)]),_0x3141f5=new Cesium$3[(_0x1d339a(0x27b,0x234))](_0x3d9842[_0x1d339a(0x2d2,0x2ac)][_0x361bba(0x149,0x1b4)],_0x3d9842['lat']['max'],_0x3d9842[_0x361bba(0xf6,0x137)]['max']),_0x2af72f=new Cesium$3[(_0x1d339a(0x29c,0x234))]((_0x3141f5['x']-_0x3b00a5['x'])/(_0xb85423['x']-0x1),(_0x3141f5['y']-_0x3b00a5['y'])/(_0xb85423['y']-0x1),_0xb85423['z']>0x1?(_0x3141f5['z']-_0x3b00a5['z'])/(_0xb85423['z']-0x1):0x1),_0xde71c3=new Cesium$3[(_0x1d339a(0x280,0x228))](_0x3d9842['lon']['min'],_0x3d9842[_0x361bba(0x121,0xdc)][_0x1d339a(0x2e5,0x2d4)]),_0x1cf5f7=new Cesium$3[(_0x361bba(0x9d,0x57))](_0x3d9842[_0x1d339a(0x371,0x31d)][_0x361bba(0x105,0xb4)],_0x3d9842['lat'][_0x361bba(0x149,0x13a)]),_0x39755c=new Cesium$3['Cartesian2'](_0x3d9842['U'][_0x1d339a(0x2bd,0x290)],_0x3d9842['U'][_0x361bba(0x149,0x184)]),_0x1d30a1=new Cesium$3['Cartesian2'](_0x3d9842['V'][_0x1d339a(0x24c,0x290)],_0x3d9842['V']['max']),_0x2c696f=new Cesium$3['Cartesian2'](_0x3d9842['W']['min'],_0x3d9842['W']['max']);function _0x1d339a(_0x31b0e8,_0x1d0765){return _0x51a8ec(_0x31b0e8,_0x1d0765-0x245);}const _0x1b1830=this,_0x573eac={};_0x573eac['U']=function(){function _0x5efcf9(_0x446d4f,_0x4dde5a){return _0x361bba(_0x4dde5a- -0x2e6,_0x446d4f);}return _0x1b1830[_0x5efcf9(-0x172,-0x133)]['U'];},_0x573eac['V']=function(){return _0x1b1830['windTextures']['V'];},_0x573eac['W']=function(){function _0x340924(_0x165dcd,_0x2b575c){return _0x1d339a(_0x2b575c,_0x165dcd- -0x164);}return _0x1b1830[_0x340924(0x1da,0x215)]['W'];},_0x573eac[_0x1d339a(0x2fb,0x31a)]=function(){return _0x1b1830['particlesTextures']['currentParticlesPosition'];},_0x573eac[_0x361bba(0x152,0x19c)]=function(){return _0xb85423;},_0x573eac['minimum']=function(){return _0x3b00a5;},_0x573eac['maximum']=function(){return _0x3141f5;},_0x573eac[_0x361bba(0x12f,0xe9)]=function(){return _0x2af72f;};function _0x361bba(_0x193940,_0xae251b){return _0x3e8737(_0x193940-0x25,_0xae251b);}_0x573eac['uSpeedRange']=function(){return _0x39755c;},_0x573eac['vSpeedRange']=function(){return _0x1d30a1;},_0x573eac['wSpeedRange']=function(){return _0x2c696f;},_0x573eac['speedScaleFactor']=function(){function _0x310366(_0x105f82,_0x117685){return _0x361bba(_0x117685-0x107,_0x105f82);}return _0x38b6d3['pixelSize']*_0x4f4fe7[_0x310366(0x137,0x1c8)];};const _0x2becdf={};_0x2becdf['sources']=[CalculateSpeedShader];const _0x5bf8c2={};_0x5bf8c2[_0x361bba(0x9e,0x98)]=[UpdatePositionShader];const _0xbe5946={};_0xbe5946['sources']=[PostProcessingPositionShader],this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':_0x361bba(0x133,0xc9),'uniformMap':_0x573eac,'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x2becdf),'outputTexture':this['particlesTextures']['particlesSpeed'],'preExecute':function(){function _0x1d5143(_0x17a89f,_0x44383b){return _0x1d339a(_0x44383b,_0x17a89f- -0x1f2);}function _0x5e79ac(_0x2d202d,_0xc67ecf){return _0x361bba(_0xc67ecf-0x15f,_0x2d202d);}if(_0x4f4fe7!==undefined&&_0x4f4fe7[_0x5e79ac(0x265,0x2b0)]){const _0x3a97ca=_0x1b1830[_0x5e79ac(0x275,0x22d)][_0x5e79ac(0x295,0x277)];_0x1b1830['particlesTextures']['previousParticlesPosition']=_0x1b1830['particlesTextures']['currentParticlesPosition'],_0x1b1830[_0x5e79ac(0x1b9,0x22d)]['currentParticlesPosition']=_0x1b1830['particlesTextures'][_0x5e79ac(0x24e,0x259)],_0x1b1830['particlesTextures']['postProcessingPosition']=_0x3a97ca;}_0x1b1830['primitives'][_0x5e79ac(0x2a3,0x27f)]['commandToExecute']['outputTexture']=_0x1b1830['particlesTextures']['particlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':_0x1d339a(0x2f8,0x2be),'uniformMap':{'currentParticlesPosition':function(){return _0x1b1830['particlesTextures']['currentParticlesPosition'];},'particlesSpeed':function(){function _0x25d6df(_0x345fe0,_0x363921){return _0x1d339a(_0x363921,_0x345fe0- -0x2ec);}return _0x1b1830[_0x25d6df(-0x93,-0x1d)]['particlesSpeed'];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x5bf8c2),'outputTexture':this[_0x361bba(0xce,0xd8)]['nextParticlesPosition'],'preExecute':function(){function _0x36fcfb(_0x260064,_0x2da267){return _0x361bba(_0x260064- -0x1b0,_0x2da267);}function _0x254310(_0x4e6568,_0x2e1352){return _0x1d339a(_0x4e6568,_0x2e1352-0x18f);}_0x1b1830[_0x254310(0x4da,0x4d3)]['updatePosition'][_0x254310(0x3a5,0x411)]['outputTexture']=_0x1b1830[_0x36fcfb(-0xe2,-0x160)][_0x254310(0x410,0x412)];}}),'postProcessingPosition':new CustomPrimitive({'commandType':_0x361bba(0x133,0x168),'uniformMap':{'nextParticlesPosition':function(){return _0x1b1830['particlesTextures']['nextParticlesPosition'];},'particlesSpeed':function(){function _0x3cb946(_0x4f2daa,_0x88a9eb){return _0x361bba(_0x88a9eb-0x342,_0x4f2daa);}return _0x1b1830[_0x3cb946(0x48a,0x410)]['particlesSpeed'];},'viewerLonRange':function(){return _0x38b6d3['lonRange'];},'viewerLatRange':function(){return _0x38b6d3['latRange'];},'lonRange':function(){return _0xde71c3;},'latRange':function(){return _0x1cf5f7;},'dimension':function(){return _0xb85423;},'minimum':function(){return _0x3b00a5;},'maximum':function(){return _0x3141f5;},'interval':function(){return _0x2af72f;},'H':function(){return _0x1b1830['windTextures']['H'];},'randomCoefficient':function(){function _0x58817a(_0x31b46d,_0x3d3efc){return _0x361bba(_0x31b46d- -0x339,_0x3d3efc);}const _0x36bca1=Math[_0x58817a(-0x18f,-0x1aa)]();return _0x36bca1;},'dropRate':function(){return _0x4f4fe7['dropRate'];},'dropRateBump':function(){return _0x4f4fe7['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0xbe5946),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){function _0x40cfb5(_0xb04d7b,_0x23eec9){return _0x361bba(_0x23eec9- -0x2ed,_0xb04d7b);}function _0x1ee466(_0x16585c,_0x3ef779){return _0x1d339a(_0x3ef779,_0x16585c- -0x5a);}_0x1b1830['primitives']['postProcessingPosition'][_0x40cfb5(-0x21b,-0x1f6)][_0x40cfb5(-0x289,-0x242)]=_0x1b1830[_0x40cfb5(-0x25e,-0x21f)]['postProcessingPosition'];}})};}}const Cesium$2=mars3d__namespace[_0x51a8ec(0x3a,0xb5)];class ParticleSystem{constructor(_0x10b238,_0x44cc8c,_0x59ee44,_0x310403){function _0x335caa(_0x342f02,_0xca5d20){return _0x51a8ec(_0xca5d20,_0x342f02- -0x2f0);}this['context']=_0x10b238,_0x44cc8c={..._0x44cc8c};_0x44cc8c['udata']&&_0x44cc8c[_0x42e3a6(0x2ed,0x347)]&&(_0x44cc8c[_0x335caa(-0x227,-0x19f)]={},_0x44cc8c[_0x335caa(-0x227,-0x279)]['lon']=_0x44cc8c['cols'],_0x44cc8c[_0x335caa(-0x227,-0x1d4)]['lat']=_0x44cc8c[_0x335caa(-0x213,-0x289)],_0x44cc8c['dimensions'][_0x335caa(-0x2b4,-0x2a5)]=_0x44cc8c[_0x42e3a6(0x2f5,0x2f5)]||0x1,_0x44cc8c['lon']={},_0x44cc8c[_0x42e3a6(0x320,0x33a)]['min']=_0x44cc8c['xmin'],_0x44cc8c['lon']['max']=_0x44cc8c['xmax'],_0x44cc8c[_0x335caa(-0x218,-0x29c)]={},_0x44cc8c['lat'][_0x335caa(-0x2a5,-0x316)]=_0x44cc8c['ymin'],_0x44cc8c['lat']['max']=_0x44cc8c['ymax'],_0x44cc8c[_0x335caa(-0x2b4,-0x246)]={},_0x44cc8c['lev']['min']=_0x44cc8c['levmin']??0x1,_0x44cc8c[_0x335caa(-0x2b4,-0x288)]['max']=_0x44cc8c['levmax']??0x1,_0x44cc8c['U']={},_0x44cc8c['U']['array']=new Float32Array(_0x44cc8c['udata']),_0x44cc8c['U'][_0x42e3a6(0x304,0x272)]=_0x44cc8c['umin']??Math[_0x42e3a6(0x304,0x2cd)](..._0x44cc8c['udata']),_0x44cc8c['U'][_0x335caa(-0x261,-0x27b)]=_0x44cc8c[_0x42e3a6(0x36c,0x3d5)]??Math[_0x335caa(-0x261,-0x2ee)](..._0x44cc8c[_0x42e3a6(0x2a4,0x2a9)]),_0x44cc8c['V']={},_0x44cc8c['V'][_0x335caa(-0x2e2,-0x35f)]=new Float32Array(_0x44cc8c['vdata']),_0x44cc8c['V'][_0x42e3a6(0x304,0x360)]=_0x44cc8c['vmin']??Math[_0x335caa(-0x2a5,-0x22f)](..._0x44cc8c[_0x42e3a6(0x2ed,0x311)]),_0x44cc8c['V']['max']=_0x44cc8c['vmax']??Math[_0x42e3a6(0x348,0x395)](..._0x44cc8c[_0x335caa(-0x2bc,-0x299)]));!_0x44cc8c['W']&&(_0x44cc8c['W']={'array':new Float32Array(_0x44cc8c['U'][_0x42e3a6(0x2c7,0x2a8)]['length']),'min':0x0,'max':0x0});if(!_0x44cc8c['H']){var _0x135edf;_0x44cc8c['H']={'array':new Float32Array(_0x44cc8c['U'][_0x42e3a6(0x2c7,0x281)]['length']),'min':0x0,'max':0x0};if((_0x135edf=_0x44cc8c[_0x42e3a6(0x2f5,0x352)])!==null&&_0x135edf!==void 0x0&&_0x135edf['array']){const {lon:_0xd239c4,lat:_0x18a4ef,lev:_0x538af7}=_0x44cc8c['dimensions'];for(let _0x378ebc=0x0;_0x378ebc<_0x538af7;_0x378ebc++){for(let _0x49e127=0x0;_0x49e127<_0x18a4ef;_0x49e127++){for(let _0x499ddf=0x0;_0x499ddf<_0xd239c4;_0x499ddf++){const _0x185c93=_0x378ebc*(_0xd239c4*_0x18a4ef)+_0x49e127*_0xd239c4+_0x499ddf;_0x44cc8c['H']['array'][_0x185c93]=_0x44cc8c[_0x335caa(-0x2b4,-0x2d4)][_0x335caa(-0x2e2,-0x29a)][_0x378ebc];}}}_0x44cc8c['H']['min']=Math[_0x42e3a6(0x304,0x330)](..._0x44cc8c['lev']['array']),_0x44cc8c['H'][_0x42e3a6(0x348,0x2bc)]=Math['max'](..._0x44cc8c[_0x335caa(-0x2b4,-0x284)]['array']);}}this[_0x335caa(-0x2e0,-0x29f)]=_0x44cc8c,this[_0x42e3a6(0x3a2,0x3b7)]=_0x59ee44;function _0x42e3a6(_0x582712,_0x2c3643){return _0x3e8737(_0x582712-0x224,_0x2c3643);}this['viewerParameters']=_0x310403,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this[_0x42e3a6(0x3a2,0x3f5)],this[_0x42e3a6(0x3bd,0x343)]),this['particlesRendering']=new ParticlesRendering(this['context'],this[_0x42e3a6(0x2c9,0x310)],this[_0x335caa(-0x207,-0x1ea)],this['viewerParameters'],this['particlesComputing']);}['canvasResize'](_0x3187fb){this[_0xc740b7(0xb,-0x33)]['destroyParticlesTextures'](),Object['keys'](this['particlesComputing'][_0xc740b7(0xd9,0x79)])['forEach'](_0x3e924f=>{function _0x2d8edc(_0x3d37bd,_0x2c164c){return _0xc740b7(_0x3d37bd,_0x2c164c-0x2a1);}function _0x3b1fca(_0x1da6c1,_0x3afccd){return _0xc740b7(_0x3afccd,_0x1da6c1- -0x175);}this[_0x2d8edc(0x2cf,0x26e)]['windTextures'][_0x3e924f][_0x2d8edc(0x27d,0x30e)]();}),this['particlesRendering'][_0xc740b7(0x57,0x28)][_0x19202a(-0x19,-0x3d)]['destroy']();function _0x19202a(_0xc17099,_0x55c842){return _0x3e8737(_0x55c842- -0x111,_0xc17099);}function _0xc740b7(_0x1c9b2f,_0x206d0f){return _0x51a8ec(_0x1c9b2f,_0x206d0f- -0x80);}Object[_0x19202a(-0xf,-0x5)](this['particlesRendering'][_0xc740b7(0x34,0x29)])['forEach'](_0x4b0c64=>{function _0x504762(_0x669a93,_0x13245f){return _0xc740b7(_0x13245f,_0x669a93-0x537);}this['particlesRendering'][_0x504762(0x560,0x5e1)][_0x4b0c64]['destroy']();}),this[_0x19202a(0xd2,0x79)]=_0x3187fb,this[_0x19202a(-0x8,-0x2f)]=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this[_0xc740b7(-0x1b,-0x26)]=new ParticlesRendering(this[_0xc740b7(0x98,0x75)],this['data'],this['options'],this['viewerParameters'],this['particlesComputing']);}['clearFramebuffers'](){const _0x5a33d1=new Cesium$2[(_0x4dfab6(0x1ac,0x1dc))]({'color':new Cesium$2[(_0x4dfab6(0x27b,0x208))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2[_0x4dfab6(0x23a,0x21b)]['OPAQUE']});function _0x505df2(_0x38f5db,_0x100005){return _0x51a8ec(_0x100005,_0x38f5db- -0x33);}function _0x4dfab6(_0x25926c,_0x2145b7){return _0x51a8ec(_0x25926c,_0x2145b7-0x19a);}Object[_0x4dfab6(0x288,0x211)](this['particlesRendering'][_0x4dfab6(0x2a7,0x243)])['forEach'](_0x259b9c=>{_0x5a33d1[_0x3b3784(-0x2f2,-0x356)]=this[_0x1c15a3(0x3d3,0x3dc)]['framebuffers'][_0x259b9c];function _0x1c15a3(_0x442faf,_0x3daafb){return _0x4dfab6(_0x3daafb,_0x442faf-0x1df);}function _0x3b3784(_0x315394,_0x24a82f){return _0x4dfab6(_0x24a82f,_0x315394- -0x4ae);}_0x5a33d1['execute'](this[_0x3b3784(-0x21f,-0x284)]);});}['refreshParticles'](_0x2bae19,_0x280b9a=!![]){function _0x5612f9(_0x327c3c,_0x491ddd){return _0x3e8737(_0x491ddd-0x62,_0x327c3c);}function _0x4b71c0(_0x4ba51d,_0x5b60a1){return _0x51a8ec(_0x5b60a1,_0x4ba51d-0x252);}_0x280b9a&&(this[_0x5612f9(0x123,0x162)](),this['particlesComputing'][_0x4b71c0(0x295,0x325)](),this[_0x4b71c0(0x29f,0x2de)]['createParticlesTextures'](this['context'],this[_0x4b71c0(0x33b,0x35e)],this['viewerParameters']));if(_0x2bae19){var _0x335cbf;const _0x23cc4a=this[_0x5612f9(0xef,0x151)][_0x5612f9(0x1f7,0x16b)](this['options']);this['particlesRendering']['primitives']['segments']['geometry']=_0x23cc4a;const _0x3f7c73=Cesium$2['VertexArray']['fromGeometry']({'context':this[_0x4b71c0(0x347,0x333)],'geometry':_0x23cc4a,'attributeLocations':this['particlesRendering']['primitives']['segments']['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0x335cbf=this['particlesRendering'][_0x5612f9(0x1c5,0x1f6)])!==null&&_0x335cbf!==void 0x0&&(_0x335cbf=_0x335cbf['segments'])!==null&&_0x335cbf!==void 0x0&&_0x335cbf['commandToExecute']&&(this[_0x4b71c0(0x2ac,0x2ff)][_0x5612f9(0x252,0x1f6)][_0x5612f9(0x234,0x1b2)][_0x5612f9(0x1ba,0x134)]['vertexArray']=_0x3f7c73);}}['setOptions'](_0x4d1282){function _0x4276df(_0x2125cf,_0x16a766){return _0x51a8ec(_0x2125cf,_0x16a766- -0x239);}let _0x48d4d8=![];this['options']['maxParticles']!==_0x4d1282['maxParticles']&&(_0x48d4d8=!![]);Object[_0x4276df(-0x204,-0x1c2)](_0x4d1282)[_0x4276df(-0x1c8,-0x208)](_0x24cccf=>{this['options'][_0x24cccf]=_0x4d1282[_0x24cccf];});function _0x5bf62d(_0x4d0a10,_0x47bf9f){return _0x3e8737(_0x47bf9f- -0x18d,_0x4d0a10);}this['refreshParticles'](_0x48d4d8,_0x4d1282['dynamic']);}['applyViewerParameters'](_0x3ad4a5){Object['keys'](_0x3ad4a5)['forEach'](_0x2d0e21=>{function _0x39ca77(_0x5731dd,_0x287891){return _0x25e8(_0x5731dd-0x1f4,_0x287891);}this[_0x39ca77(0x3cb,0x43c)][_0x2d0e21]=_0x3ad4a5[_0x2d0e21];}),this['refreshParticles'](![]);function _0x324499(_0x283550,_0x5ce338){return _0x3e8737(_0x5ce338-0x395,_0x283550);}function _0x31d571(_0x417b9a,_0x528b81){return _0x51a8ec(_0x417b9a,_0x528b81-0x2e3);}!this[_0x324499(0x4fd,0x513)]['dynamic']&&(this[_0x31d571(0x367,0x3cc)]['dynamic']=!![],this[_0x31d571(0x29d,0x2e5)](this['options']),setTimeout(()=>{this['options'][_0x3c1f33(0x4bf,0x4dd)]=![];function _0x3c1f33(_0x1b3b9e,_0x171707){return _0x31d571(_0x1b3b9e,_0x171707-0x163);}function _0xb04278(_0x1fb7ef,_0x323933){return _0x324499(_0x323933,_0x1fb7ef- -0xaf);}this[_0x3c1f33(0x3b8,0x448)](this['options']);},0x1f4));}[_0x51a8ec(0x6c,0xed)](){clearTimeout(this['canrefresh']),this['particlesComputing']['destroyParticlesTextures']();function _0x3f5667(_0x24c7e2,_0x3262bd){return _0x51a8ec(_0x24c7e2,_0x3262bd- -0x2cd);}Object[_0x156293(0x4de,0x4e8)](this['particlesComputing']['windTextures'])['forEach'](_0x460586=>{function _0x218d67(_0x20cc63,_0x348812){return _0x156293(_0x348812,_0x20cc63- -0x5c0);}this['particlesComputing'][_0x218d67(-0x56,0x1c)][_0x460586]['destroy']();}),this['particlesRendering']['textures'][_0x3f5667(-0x21f,-0x28e)][_0x156293(0x568,0x55e)]();function _0x156293(_0x2aeae9,_0x48eb23){return _0x51a8ec(_0x2aeae9,_0x48eb23-0x471);}Object[_0x3f5667(-0x22c,-0x256)](this[_0x3f5667(-0x235,-0x273)]['framebuffers'])['forEach'](_0x14982e=>{this['particlesRendering']['framebuffers'][_0x14982e]['destroy']();});for(const _0xe140ee in this){delete this[_0xe140ee];}}}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer'][_0x3e8737(0x176,0xfd)],_0x2b6d2a={};_0x2b6d2a['particlesNumber']=0x1000,_0x2b6d2a['fixedHeight']=0x0,_0x2b6d2a['fadeOpacity']=0.996;function _0x25e8(_0x24f960,_0x3b9145){const _0x12a68f=_0x12a6();return _0x25e8=function(_0x25e87b,_0x39698d){_0x25e87b=_0x25e87b-0xb6;let _0x5c9c99=_0x12a68f[_0x25e87b];return _0x5c9c99;},_0x25e8(_0x24f960,_0x3b9145);}function _0x51a8ec(_0x3bf0b5,_0x2ec7cb){return _0x25e8(_0x2ec7cb- -0xd3,_0x3bf0b5);}_0x2b6d2a['dropRate']=0.003,_0x2b6d2a[_0x51a8ec(-0x72,-0x4)]=0.01,_0x2b6d2a[_0x3e8737(0x9c,0xa4)]=0.5,_0x2b6d2a[_0x3e8737(0xb3,0x2b)]=0x2,_0x2b6d2a['colors']=['rgb(206,255,255)'],_0x2b6d2a['dynamic']=!![];const DEF_OPTIONS=_0x2b6d2a;class WindLayer extends BaseLayer$1{constructor(_0x542e2c={}){_0x542e2c={...DEF_OPTIONS,..._0x542e2c},super(_0x542e2c),this['_setOptionsHook'](_0x542e2c);}get['layer'](){function _0x3535f4(_0x1dd1e6,_0x247e67){return _0x51a8ec(_0x247e67,_0x1dd1e6-0x15e);}return this[_0x3535f4(0x25d,0x2c6)];}get[_0x3e8737(0xa5,0xb0)](){return this['_data'];}set['data'](_0x5275f3){this['setData'](_0x5275f3);}get[_0x51a8ec(0x82,0xa7)](){function _0x53bfbe(_0x5f104f,_0x105c3c){return _0x51a8ec(_0x5f104f,_0x105c3c- -0x98);}return this[_0x53bfbe(-0x31,0x51)]['colors'];}set[_0x3e8737(0x13c,0xf0)](_0x501dd5){this[_0x129af5(-0x5d,0x3)][_0x129af5(-0x66,-0x3f)]=_0x501dd5;function _0x129af5(_0x1a214a,_0x4252f2){return _0x51a8ec(_0x1a214a,_0x4252f2- -0xe6);}function _0x86ab81(_0x3d17aa,_0x5ff6e4){return _0x51a8ec(_0x5ff6e4,_0x3d17aa-0x2e7);}if(this['particleSystem']){const _0x24171d={};_0x24171d[_0x86ab81(0x38e,0x311)]=_0x501dd5,this['particleSystem'][_0x86ab81(0x2e9,0x295)](_0x24171d);}this['resize']();}[_0x3e8737(0x13a,0xb3)](){}['_addedHook'](){function _0x30eac1(_0x4f06a4,_0x33072e){return _0x3e8737(_0x33072e-0x60,_0x4f06a4);}this['scene']=this[_0x2e5569(-0xbe,-0x42)][_0x30eac1(0x15f,0x121)],this[_0x30eac1(0x169,0x1a4)]=this[_0x2e5569(-0xbe,-0x125)]['camera'],this['primitives']=new Cesium$1['PrimitiveCollection'](),this['_map']['scene']['primitives']['add'](this[_0x2e5569(-0x90,-0xba)]),this[_0x30eac1(0x24d,0x1f9)]={'lonRange':new Cesium$1[(_0x2e5569(-0x1ac,-0x1f2))](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0,'lonDisplayRange':new Cesium$1['Cartesian2'](),'latDisplayRange':new Cesium$1['Cartesian2']()},this[_0x30eac1(0x15b,0x158)]=new Cesium$1[(_0x30eac1(0x139,0x130))](Cesium$1['Cartesian3'][_0x2e5569(-0xa5,-0x2d)],0.99*0x615299),this['updateViewerParameters'](),window[_0x30eac1(0x66,0xee)]('resize',this[_0x30eac1(0x216,0x1a1)]['bind'](this),![]);function _0x2e5569(_0x27e621,_0x1bc8a9){return _0x51a8ec(_0x1bc8a9,_0x27e621- -0x18f);}this['mouse_down']=![],this['mouse_move']=![],this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x2e5569(-0xbe,-0x3c)]['on'](mars3d__namespace['EventType'][_0x2e5569(-0x19f,-0x170)],this[_0x2e5569(-0xfe,-0xcc)],this),this[_0x2e5569(-0xbe,-0x87)]['on'](mars3d__namespace[_0x2e5569(-0x141,-0x194)][_0x2e5569(-0xa0,-0x56)],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x2e5569(-0x10a,-0x9a)],this[_0x30eac1(0x23e,0x1f2)],this),this[_0x30eac1(0x166,0x18a)]&&this[_0x2e5569(-0x182,-0x1ce)](this[_0x30eac1(0x193,0x18a)]);}['_removedHook'](){window['removeEventListener']('resize',this[_0x1b6e1c(-0x26a,-0x234)]),this['_map']['off'](mars3d__namespace['EventType']['preRender'],this['_onMap_preRenderEvent'],this),this[_0x1b6e1c(-0x257,-0x20f)][_0x3ade7d(0x3fe,0x3f7)](mars3d__namespace[_0x3ade7d(0x3da,0x382)]['wheel'],this['_onMapWhellEvent'],this),this['_map'][_0x3ade7d(0x451,0x3f7)](mars3d__namespace[_0x1b6e1c(-0x231,-0x292)]['mouseDown'],this['_onMouseDownEvent'],this),this[_0x1b6e1c(-0x28c,-0x20f)][_0x3ade7d(0x378,0x3f7)](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);function _0x1b6e1c(_0x5e7644,_0x565581){return _0x3e8737(_0x565581- -0x375,_0x5e7644);}function _0x3ade7d(_0x4b9d98,_0x3db3d0){return _0x51a8ec(_0x4b9d98,_0x3db3d0-0x334);}this[_0x1b6e1c(-0x233,-0x1e1)][_0x1b6e1c(-0x187,-0x209)](),this[_0x1b6e1c(-0x24a,-0x20f)][_0x1b6e1c(-0x2c2,-0x2b4)][_0x1b6e1c(-0x1b9,-0x1e1)]['remove'](this[_0x3ade7d(0x457,0x433)]);}[_0x3e8737(0x141,0x110)](){if(!this[_0x3b418b(0x2ad,0x2a5)]||!this[_0x434571(0x2be,0x271)])return;this['primitives']['show']=![],this['primitives']['removeAll']();function _0x3b418b(_0xba269a,_0x4ed24d){return _0x51a8ec(_0xba269a,_0x4ed24d-0x246);}function _0x434571(_0x317b53,_0x133fac){return _0x51a8ec(_0x317b53,_0x133fac-0x1ac);}this[_0x434571(0x20a,0x27d)][_0x3b418b(0x303,0x2a7)](mars3d__namespace['EventType'][_0x3b418b(0x20e,0x250)],this['_onMap_preRenderEvent'],this);}[_0x51a8ec(0x12,0x90)](_0x23ccff){function _0x16283f(_0x34b93e,_0x5c9ae6){return _0x51a8ec(_0x5c9ae6,_0x34b93e-0x28d);}this['particleSystem'][_0x16283f(0x308,0x297)](this['scene']['context']),this[_0x16283f(0x329,0x2cb)]();function _0x3fcd1(_0x3f9e2e,_0x4ccbe5){return _0x51a8ec(_0x3f9e2e,_0x4ccbe5-0x88);}this[_0x16283f(0x38c,0x36f)]['show']=!![];}[_0x3e8737(0x180,0x100)](_0x13f1e9){clearTimeout(this[_0x111de7(-0x201,-0x21d)]);if(!this[_0xe1b3b2(-0x1a1,-0x1f8)]||!this['particleSystem'])return;function _0xe1b3b2(_0x4f6d53,_0x3bb05b){return _0x3e8737(_0x3bb05b- -0x2ec,_0x4f6d53);}function _0x111de7(_0x3ae115,_0x2b0f51){return _0x51a8ec(_0x2b0f51,_0x3ae115- -0x26e);}this['primitives'][_0xe1b3b2(-0x1b5,-0x1f8)]=![],this[_0xe1b3b2(-0x164,-0x1ea)]=setTimeout(()=>{if(!this['show'])return;this['redraw']();},0xc8);}['_onMouseDownEvent'](_0x13c62a){function _0x461966(_0x21c4b3,_0x25b27f){return _0x3e8737(_0x25b27f-0x19c,_0x21c4b3);}this[_0x461966(0x35e,0x2fd)]=!![];}[_0x3e8737(0x192,0x175)](_0xf7dd0c){if(!this['show']||!this[_0x36836f(-0xd5,-0x123)])return;function _0x4ff454(_0x1e1606,_0x57cc5f){return _0x3e8737(_0x57cc5f- -0xe6,_0x1e1606);}function _0x36836f(_0xc51eb0,_0x2add3a){return _0x51a8ec(_0xc51eb0,_0x2add3a- -0x1e8);}this[_0x36836f(-0xd4,-0x11c)]&&(this[_0x4ff454(0x12d,0xae)]['show']=![],this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x421de4){if(!this[_0x7bce04(-0x106,-0x89)]||!this[_0xdfa6(0x55b,0x54e)])return;this['mouse_down']&&this[_0xdfa6(0x48f,0x4fc)]&&this['redraw']();function _0xdfa6(_0x5aa04f,_0x1591d8){return _0x3e8737(_0x1591d8-0x3f4,_0x5aa04f);}this['primitives'][_0x7bce04(-0x12,-0x89)]=!![],this['mouse_down']=![];function _0x7bce04(_0x183827,_0x9d1bf4){return _0x3e8737(_0x9d1bf4- -0x17d,_0x183827);}this['mouse_move']=![];}['redraw'](){if(!this[_0x508174(0x1e8,0x245)]||!this['show'])return;function _0x508174(_0x3e93ad,_0x34ad11){return _0x51a8ec(_0x3e93ad,_0x34ad11-0x174);}this[_0x1fda98(0x1b,0xad)](),this['particleSystem'][_0x508174(0x21e,0x1de)](this['viewerParameters']);function _0x1fda98(_0x46f68b,_0x5776e5){return _0x3e8737(_0x5776e5- -0xa0,_0x46f68b);}this['primitives'][_0x508174(0x1e6,0x1d3)]=!![];}['setData'](_0x30e910){function _0x7d682f(_0x21ddcf,_0x3826ac){return _0x3e8737(_0x21ddcf- -0x326,_0x3826ac);}function _0x16186e(_0x144654,_0x441d5a){return _0x3e8737(_0x441d5a-0x53,_0x144654);}this[_0x16186e(0xef,0x17d)]=_0x30e910,this[_0x7d682f(-0x1cc,-0x18a)]&&this['particleSystem'][_0x7d682f(-0x1a4,-0x12c)](),this['particleSystem']=new ParticleSystem(this['scene'][_0x7d682f(-0x19c,-0x1a4)],_0x30e910,this['getOptions'](),this[_0x16186e(0x223,0x1ec)]),this['addPrimitives']();}['_setOptionsHook'](_0x155fad,_0x1e0b88){function _0x30a8cc(_0x3fb599,_0x336fd2){return _0x3e8737(_0x3fb599- -0x172,_0x336fd2);}if(_0x155fad)for(const _0x5862bb in _0x155fad){this[_0x5862bb]=_0x155fad[_0x5862bb];}this['particleSystem']&&this['particleSystem'][_0x30a8cc(-0xdb,-0x128)](this['getOptions']());}['getOptions'](){const _0x78bc2c=Math['ceil'](Math['sqrt'](this[_0x29fdeb(0x4ca,0x4a9)]));function _0x29fdeb(_0x43c10f,_0x570bab){return _0x51a8ec(_0x43c10f,_0x570bab-0x3c4);}this[_0xcba91a(-0x24c,-0x1bb)]=_0x78bc2c*_0x78bc2c;const _0x377616={};_0x377616[_0xcba91a(-0x171,-0x1a2)]=_0x78bc2c,_0x377616['maxParticles']=this[_0x29fdeb(0x4ce,0x4a9)],_0x377616[_0x29fdeb(0x472,0x46b)]=this['colors'],_0x377616[_0xcba91a(-0x2ca,-0x2a1)]=this['fixedHeight'],_0x377616[_0xcba91a(-0x20f,-0x1d8)]=this['fadeOpacity'],_0x377616['dropRate']=this['dropRate'],_0x377616['dropRateBump']=this['dropRateBump'],_0x377616['speedFactor']=this[_0x29fdeb(0x436,0x3cb)],_0x377616['lineWidth']=this['lineWidth'];function _0xcba91a(_0x1b8d88,_0x55b988){return _0x51a8ec(_0x1b8d88,_0x55b988- -0x2a0);}return _0x377616['dynamic']=this['dynamic'],_0x377616;}['addPrimitives'](){this['primitives']['add'](this['particleSystem'][_0x2d7c05(0x1dd,0x16d)][_0x206fbd(0x2c5,0x2ea)]['calculateSpeed']),this[_0x2d7c05(0x24b,0x21f)][_0x206fbd(0x218,0x206)](this[_0x2d7c05(0x16e,0x1e5)]['particlesComputing']['primitives']['updatePosition']),this['primitives']['add'](this[_0x2d7c05(0x171,0x1e5)][_0x206fbd(0x1c7,0x238)]['primitives'][_0x2d7c05(0x1c3,0x160)]),this[_0x206fbd(0x309,0x2ea)][_0x206fbd(0x203,0x206)](this['particleSystem']['particlesRendering'][_0x2d7c05(0x21c,0x21f)][_0x2d7c05(0x1e5,0x1db)]);function _0x206fbd(_0x1bde3b,_0x3bce28){return _0x3e8737(_0x3bce28-0x156,_0x1bde3b);}function _0x2d7c05(_0x185194,_0x3c1352){return _0x51a8ec(_0x185194,_0x3c1352-0x120);}this[_0x206fbd(0x271,0x2ea)][_0x206fbd(0x27b,0x206)](this[_0x206fbd(0x319,0x2b0)]['particlesRendering']['primitives'][_0x206fbd(0x222,0x23a)]),this[_0x2d7c05(0x20e,0x21f)]['add'](this[_0x2d7c05(0x235,0x1e5)]['particlesRendering'][_0x206fbd(0x25e,0x2ea)]['screen']);}['updateViewerParameters'](){let _0x1041c9=this['camera']['computeViewRectangle'](this['scene']['globe']['ellipsoid']);if(!_0x1041c9){const _0x1a8316=this['_map']['getExtent']();_0x1041c9=Cesium$1['Rectangle']['fromDegrees'](_0x1a8316['xmin'],_0x1a8316['ymin'],_0x1a8316['xmax'],_0x1a8316['ymax']);}const _0x53ad0b=Util[_0x499ac5(0x1d1,0x1f5)](_0x1041c9);function _0x5ba48a(_0x486504,_0x381c08){return _0x51a8ec(_0x381c08,_0x486504- -0x23d);}function _0x499ac5(_0x563846,_0x5c1427){return _0x51a8ec(_0x5c1427,_0x563846-0x160);}this['_data']?(this['viewerParameters'][_0x5ba48a(-0x1aa,-0x192)]['x']=Math['max'](_0x53ad0b[_0x5ba48a(-0x1d6,-0x161)][_0x499ac5(0x1ab,0x1c0)],this[_0x499ac5(0x1f5,0x1ab)][_0x5ba48a(-0x14b,-0xbe)]),this['viewerParameters']['lonRange']['y']=Math[_0x499ac5(0x1ab,0x20f)](_0x53ad0b['lon']['max'],this[_0x5ba48a(-0x1a8,-0x144)][_0x499ac5(0x1bb,0x21a)]),this['viewerParameters']['latRange']['x']=Math['max'](_0x53ad0b['lat']['min'],this['_data']['ymin']),this['viewerParameters'][_0x499ac5(0x22a,0x256)]['y']=Math['min'](_0x53ad0b['lat'][_0x5ba48a(-0x1ae,-0x178)],this['_data']['ymax'])):(this[_0x5ba48a(-0x139,-0x1aa)]['lonRange']['x']=_0x53ad0b['lon']['min'],this[_0x499ac5(0x264,0x248)][_0x499ac5(0x1f3,0x1f6)]['y']=_0x53ad0b['lon']['max'],this['viewerParameters']['latRange']['x']=_0x53ad0b[_0x499ac5(0x238,0x28c)]['min'],this[_0x499ac5(0x264,0x243)]['latRange']['y']=_0x53ad0b['lat']['max']);const _0x514b65=this['camera']['getPixelSize'](this['globeBoundingSphere'],this['scene']['drawingBufferWidth'],this['scene']['drawingBufferHeight']);_0x514b65>0x0&&(this['viewerParameters']['pixelSize']=_0x514b65);}}mars3d__namespace[_0x3e8737(0x10d,0x106)][_0x51a8ec(0x64,0xf1)](_0x51a8ec(-0x2d,0x25),WindLayer),mars3d__namespace['layer'][_0x51a8ec(0xad,0x51)]=WindLayer;class CanvasParticle{constructor(){function _0xaad548(_0x5a06ff,_0x13bf33){return _0x3e8737(_0x5a06ff- -0x388,_0x13bf33);}this[_0x1fc841(0x27a,0x2b0)]=null,this[_0xaad548(-0x21b,-0x28c)]=null,this['tlng']=null,this['tlat']=null;function _0x1fc841(_0x5f2780,_0x134b31){return _0x3e8737(_0x134b31-0x185,_0x5f2780);}this[_0xaad548(-0x2dc,-0x293)]=null,this['speed']=null;}[_0x51a8ec(0xe1,0xed)](){for(const _0x12fd04 in this){delete this[_0x12fd04];}}}class CanvasWindField{constructor(_0xb25055){this['setOptions'](_0xb25055);}get[_0x3e8737(0xb5,0xf6)](){return this['_speedRate'];}set[_0x3e8737(0xb5,0x64)](_0x40a82a){function _0x2b3d53(_0x4ea708,_0x21aaaf){return _0x51a8ec(_0x21aaaf,_0x4ea708- -0x1de);}function _0x514de4(_0x26e54d,_0x28bdbb){return _0x3e8737(_0x26e54d-0xc,_0x28bdbb);}this[_0x514de4(0xf7,0x151)]=(0x64-(_0x40a82a>0x63?0x63:_0x40a82a))*0x64,this['_calc_speedRate']=[(this[_0x2b3d53(-0x183,-0x144)]-this['xmin'])/this[_0x514de4(0xf7,0xb9)],(this['ymax']-this[_0x2b3d53(-0x19d,-0x1d8)])/this['_speedRate']];}get['maxAge'](){return this['_maxAge'];}set['maxAge'](_0x5142b9){this['_maxAge']=_0x5142b9;}['setOptions'](_0x27c1b6){this['options']=_0x27c1b6,this[_0x38215a(-0x95,-0x126)]=_0x27c1b6[_0x2c9f66(0x4b1,0x502)]||0x78,this['speedRate']=_0x27c1b6['speedRate']||0x32;function _0x38215a(_0x1009d7,_0x298a42){return _0x3e8737(_0x1009d7- -0x22c,_0x298a42);}function _0x2c9f66(_0x3f8a08,_0x3fd6b4){return _0x3e8737(_0x3fd6b4-0x36b,_0x3f8a08);}this['particles']=[];const _0x54c238=_0x27c1b6[_0x38215a(-0xb2,-0x49)]||0x1000;for(let _0x3d0789=0x0;_0x3d0789<_0x54c238;_0x3d0789++){const _0x280454=this[_0x38215a(-0xec,-0xa6)](new CanvasParticle());this['particles']['push'](_0x280454);}}[_0x3e8737(0xc2,0x65)](_0x1bb1dd){this['rows']=_0x1bb1dd[_0x23c867(0x31d,0x2d4)],this['cols']=_0x1bb1dd['cols'],this[_0x1939bc(0x152,0x141)]=_0x1bb1dd['xmin'],this[_0x1939bc(0xba,0xaa)]=_0x1bb1dd['xmax'],this[_0x23c867(0x2c7,0x238)]=_0x1bb1dd[_0x23c867(0x1fb,0x238)],this[_0x1939bc(0x5f,0x9f)]=_0x1bb1dd[_0x1939bc(0x55,0x9f)],this['grid']=[];function _0x23c867(_0x2e76cf,_0x3558b4){return _0x51a8ec(_0x2e76cf,_0x3558b4-0x1f7);}const _0x2a7285=_0x1bb1dd[_0x23c867(0x209,0x1e2)];function _0x1939bc(_0xd77b6e,_0x221d44){return _0x51a8ec(_0xd77b6e,_0x221d44-0x4f);}const _0x21515f=_0x1bb1dd[_0x23c867(0x29a,0x22b)];let _0x1803de=![];_0x2a7285[_0x23c867(0x1c9,0x1fb)]===this['rows']&&_0x2a7285[0x0]['length']===this['cols']&&(_0x1803de=!![]);let _0xc79239=0x0,_0x56c366=null,_0x4be38d=null;for(let _0x58ab82=0x0;_0x58ab82<this['rows'];_0x58ab82++){_0x56c366=[];for(let _0x55a1d0=0x0;_0x55a1d0<this['cols'];_0x55a1d0++,_0xc79239++){_0x1803de?_0x4be38d=this[_0x23c867(0x2ae,0x22c)](_0x2a7285[_0x58ab82][_0x55a1d0],_0x21515f[_0x58ab82][_0x55a1d0]):_0x4be38d=this['_calcUV'](_0x2a7285[_0xc79239],_0x21515f[_0xc79239]),_0x56c366[_0x1939bc(0x127,0x10f)](_0x4be38d);}this['grid'][_0x1939bc(0x80,0x10f)](_0x56c366);}this[_0x23c867(0x2c4,0x2e0)]['reverseY']&&this['grid'][_0x1939bc(0x4,0x93)]();}['clear'](){delete this['rows'],delete this[_0x44763d(0x33b,0x33b)],delete this['xmin'],delete this['xmax'],delete this['ymin'],delete this['ymax'];function _0x44763d(_0x15223e,_0x2d8cdd){return _0x51a8ec(_0x15223e,_0x2d8cdd-0x356);}delete this['grid'],delete this['particles'];}['toGridXY'](_0xca434b,_0x5091c8){const _0x2d1704=(_0xca434b-this['xmin'])/(this[_0x38a2d6(0x2b6,0x288)]-this[_0x38a2d6(0x34d,0x2be)])*(this['cols']-0x1),_0x59fd9e=(this[_0x38a2d6(0x2ab,0x297)]-_0x5091c8)/(this['ymax']-this['ymin'])*(this[_0x4c5e64(-0xc5,-0x35)]-0x1);function _0x38a2d6(_0x164b7d,_0x1dd930){return _0x3e8737(_0x164b7d-0x1c6,_0x1dd930);}function _0x4c5e64(_0xc216e5,_0x39c074){return _0x51a8ec(_0xc216e5,_0x39c074- -0x112);}return[_0x2d1704,_0x59fd9e];}['getUVByXY'](_0x19a9eb,_0x58ef3e){if(_0x19a9eb<0x0||_0x19a9eb>=this[_0x4f53dd(-0x206,-0x272)]||_0x58ef3e>=this['rows'])return[0x0,0x0,0x0];const _0x325506=Math['floor'](_0x19a9eb);function _0x4f53dd(_0x1487d9,_0x17c768){return _0x3e8737(_0x17c768- -0x2ec,_0x1487d9);}const _0x50a766=Math['floor'](_0x58ef3e);if(_0x325506===_0x19a9eb&&_0x50a766===_0x58ef3e)return this['grid'][_0x58ef3e][_0x19a9eb];function _0x403bd(_0x21a218,_0x28ce27){return _0x3e8737(_0x21a218-0x187,_0x28ce27);}const _0x871157=_0x325506+0x1,_0x48c7d9=_0x50a766+0x1,_0x3622eb=this[_0x4f53dd(-0x2a9,-0x22f)](_0x325506,_0x50a766),_0x6185fc=this[_0x4f53dd(-0x1f6,-0x22f)](_0x871157,_0x50a766),_0x8c87ff=this['getUVByXY'](_0x325506,_0x48c7d9),_0x3e7f87=this['getUVByXY'](_0x871157,_0x48c7d9);let _0x23d7c4=null;try{_0x23d7c4=this[_0x403bd(0x2ec,0x341)](_0x19a9eb-_0x325506,_0x58ef3e-_0x50a766,_0x3622eb,_0x6185fc,_0x8c87ff,_0x3e7f87);}catch(_0x172fb0){console['log'](_0x19a9eb,_0x58ef3e);}return _0x23d7c4;}[_0x51a8ec(0xb1,0xd0)](_0x4061b7,_0x4e53a2,_0x1c3418,_0x152635,_0x52a5e8,_0xf3f10d){const _0x3220a2=0x1-_0x4061b7,_0x179dda=0x1-_0x4e53a2,_0x329ab=_0x3220a2*_0x179dda,_0x4b8503=_0x4061b7*_0x179dda,_0xba68fb=_0x3220a2*_0x4e53a2,_0x18cf69=_0x4061b7*_0x4e53a2;function _0x378829(_0xd2e7f4,_0x293f95){return _0x51a8ec(_0xd2e7f4,_0x293f95-0x36c);}const _0x19fcbe=_0x1c3418[0x0]*_0x329ab+_0x152635[0x0]*_0x4b8503+_0x52a5e8[0x0]*_0xba68fb+_0xf3f10d[0x0]*_0x18cf69,_0x424029=_0x1c3418[0x1]*_0x329ab+_0x152635[0x1]*_0x4b8503+_0x52a5e8[0x1]*_0xba68fb+_0xf3f10d[0x1]*_0x18cf69;return this[_0x378829(0x41b,0x3a1)](_0x19fcbe,_0x424029);}[_0x3e8737(0xca,0xb2)](_0x2a146d,_0x1358c1){function _0x528b59(_0x19237c,_0x1a7dde){return _0x3e8737(_0x1a7dde-0x2c7,_0x19237c);}return[+_0x2a146d,+_0x1358c1,Math[_0x528b59(0x2cb,0x344)](_0x2a146d*_0x2a146d+_0x1358c1*_0x1358c1)];}['getUVByPoint'](_0x5b607f,_0x548cc0){if(!this['isInExtent'](_0x5b607f,_0x548cc0))return null;const _0xfd54d8=this['toGridXY'](_0x5b607f,_0x548cc0),_0x2d6df5=this[_0x230ced(0x414,0x42f)](_0xfd54d8[0x0],_0xfd54d8[0x1]);function _0x230ced(_0x3ef83a,_0x59b95c){return _0x51a8ec(_0x59b95c,_0x3ef83a-0x3ec);}return _0x2d6df5;}['isInExtent'](_0x10b8d8,_0x5e80f8){function _0x34c583(_0x32c384,_0x5ab2f7){return _0x51a8ec(_0x5ab2f7,_0x32c384- -0x29b);}function _0x3d644f(_0x150d33,_0x529114){return _0x51a8ec(_0x150d33,_0x529114-0x62);}return _0x10b8d8>=this[_0x34c583(-0x1a9,-0x169)]&&_0x10b8d8<=this['xmax']&&_0x5e80f8>=this[_0x34c583(-0x25a,-0x2d6)]&&_0x5e80f8<=this['ymax']?!![]:![];}[_0x3e8737(0x175,0x1ec)](){const _0x187ede=fRandomByfloat(this['xmin'],this[_0x20b832(-0x1de,-0x203)]);function _0x20b832(_0x1ea38a,_0x138273){return _0x51a8ec(_0x1ea38a,_0x138273- -0x25e);}const _0x35649f=fRandomByfloat(this[_0x20b832(-0x19d,-0x21d)],this[_0x498abc(0x311,0x337)]),_0x488866={};function _0x498abc(_0x4159a8,_0xe2a7bf){return _0x51a8ec(_0x4159a8,_0xe2a7bf-0x2e7);}return _0x488866['lat']=_0x35649f,_0x488866[_0x498abc(0x338,0x37d)]=_0x187ede,_0x488866;}['getParticles'](){let _0x34eb61,_0x52e7b4,_0x2d005c;function _0x3bc447(_0x22c332,_0x1cfc4e){return _0x51a8ec(_0x1cfc4e,_0x22c332-0xf2);}function _0x395d2b(_0x402dba,_0x2bc2aa){return _0x51a8ec(_0x402dba,_0x2bc2aa-0x0);}for(let _0x495d78=0x0,_0x32a902=this['particles']['length'];_0x495d78<_0x32a902;_0x495d78++){let _0xa4dc92=this[_0x3bc447(0x14e,0x139)][_0x495d78];_0xa4dc92[_0x395d2b(-0x77,0x17)]<=0x0&&(_0xa4dc92=this['_randomParticle'](_0xa4dc92));if(_0xa4dc92['age']>0x0){const _0x253120=_0xa4dc92[_0x395d2b(0xaa,0x54)],_0x32b329=_0xa4dc92['tlat'];_0x2d005c=this['getUVByPoint'](_0x253120,_0x32b329),_0x2d005c?(_0x34eb61=_0x253120+this['_calc_speedRate'][0x0]*_0x2d005c[0x0],_0x52e7b4=_0x32b329+this['_calc_speedRate'][0x1]*_0x2d005c[0x1],_0xa4dc92[_0x395d2b(0x56,0x96)]=_0x253120,_0xa4dc92['lat']=_0x32b329,_0xa4dc92[_0x395d2b(0xc9,0x54)]=_0x34eb61,_0xa4dc92['tlat']=_0x52e7b4,_0xa4dc92[_0x3bc447(0x1d8,0x1dc)]=_0x2d005c[0x2],_0xa4dc92['age']--):_0xa4dc92['age']=0x0;}}return this['particles'];}['_randomParticle'](_0x59e0e3){let _0x23bd99,_0x3cc0ff;for(let _0x3eabae=0x0;_0x3eabae<0x1e;_0x3eabae++){_0x23bd99=this['getRandomLatLng'](),_0x3cc0ff=this['getUVByPoint'](_0x23bd99['lng'],_0x23bd99['lat']);if(_0x3cc0ff&&_0x3cc0ff[0x2]>0x0)break;}function _0x26e61d(_0x23692f,_0x589a7f){return _0x3e8737(_0x23692f-0x139,_0x589a7f);}if(!_0x3cc0ff)return _0x59e0e3;const _0x76a5c5=_0x23bd99['lng']+this[_0x2680a3(0x414,0x45c)][0x0]*_0x3cc0ff[0x0],_0x1ab030=_0x23bd99['lat']+this['_calc_speedRate'][0x1]*_0x3cc0ff[0x1];function _0x2680a3(_0x3e6026,_0xc70d67){return _0x51a8ec(_0x3e6026,_0xc70d67-0x433);}return _0x59e0e3[_0x2680a3(0x4ce,0x4c9)]=_0x23bd99[_0x26e61d(0x264,0x22d)],_0x59e0e3[_0x2680a3(0x53d,0x50b)]=_0x23bd99['lat'],_0x59e0e3['tlng']=_0x76a5c5,_0x59e0e3['tlat']=_0x1ab030,_0x59e0e3[_0x26e61d(0x1e5,0x1e0)]=Math[_0x26e61d(0x1c1,0x23e)](Math['random']()*this['maxAge']),_0x59e0e3['speed']=_0x3cc0ff[0x2],_0x59e0e3;}[_0x51a8ec(0xd6,0xed)](){for(const _0x509c4b in this){delete this[_0x509c4b];}}}function fRandomByfloat(_0x5e0650,_0x27e77b){return _0x5e0650+Math['random']()*(_0x27e77b-_0x5e0650);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x147489={}){super(_0x147489);function _0x4de259(_0x4fe368,_0x46e325){return _0x51a8ec(_0x4fe368,_0x46e325-0x3bc);}this[_0x18b776(0x576,0x514)](_0x147489),this[_0x18b776(0x476,0x508)]=null;function _0x18b776(_0x3f2eb8,_0x47df55){return _0x51a8ec(_0x3f2eb8,_0x47df55-0x4a4);}_0x147489[_0x18b776(0x510,0x54b)]&&_0x147489['steps']&&(this['_colorRamp']=new mars3d__namespace['ColorRamp'](_0x147489));}['_setOptionsHook'](_0x10ee55,_0x212edc){this['frameTime']=0x3e8/(_0x10ee55[_0x213e6b(0x195,0x169)]||0xa),this['_pointerEvents']=this['options'][_0xd2eddb(-0x1b6,-0x1e5)]??![];function _0x213e6b(_0x26ec80,_0x47a65e){return _0x3e8737(_0x47a65e-0x35,_0x26ec80);}this['color']=_0x10ee55['color']||'#ffffff';function _0xd2eddb(_0x3ac55f,_0x21f3ba){return _0x51a8ec(_0x3ac55f,_0x21f3ba- -0x1da);}this['lineWidth']=_0x10ee55['lineWidth']||0x1,this[_0xd2eddb(-0x1fd,-0x1dc)]=_0x10ee55[_0x213e6b(0xb1,0xc8)]??0x0,this[_0x213e6b(0xe1,0x13c)]=_0x10ee55[_0xd2eddb(-0x137,-0x168)]??![],this['windField']&&this['windField'][_0x213e6b(0xf3,0xcc)](_0x10ee55);}get['layer'](){function _0x4fdc91(_0x45ff40,_0x325079){return _0x51a8ec(_0x325079,_0x45ff40-0x2e4);}return this[_0x4fdc91(0x348,0x361)];}get[_0x51a8ec(0x130,0xc7)](){function _0x4185d5(_0x148f4c,_0x185d4d){return _0x3e8737(_0x148f4c-0x3ca,_0x185d4d);}function _0x11a446(_0x20384a,_0x38f757){return _0x51a8ec(_0x38f757,_0x20384a-0x2fa);}return this[_0x11a446(0x3cb,0x363)]['scene']['canvas'][_0x4185d5(0x538,0x586)];}get['canvasHeight'](){function _0x483407(_0x3d2e0a,_0x14f0d5){return _0x51a8ec(_0x14f0d5,_0x3d2e0a- -0x2b7);}return this['_map']['scene']['canvas'][_0x483407(-0x1d3,-0x1f3)];}get['pointerEvents'](){return this['_pointerEvents'];}set[_0x3e8737(0x8a,0x28)](_0x18e979){function _0x12c497(_0x2236d4,_0x48295c){return _0x3e8737(_0x48295c- -0x1cc,_0x2236d4);}this[_0x2ba2d2(0x367,0x3dc)]=_0x18e979;function _0x2ba2d2(_0x5f1fbb,_0x1e5809){return _0x51a8ec(_0x5f1fbb,_0x1e5809-0x31e);}if(!this[_0x2ba2d2(0x3c9,0x382)])return;_0x18e979?this['canvas']['style']['pointer-events']=_0x2ba2d2(0x470,0x411):this[_0x12c497(-0xdd,-0xd3)]['style']['pointer-events']=_0x2ba2d2(0x368,0x3a5);}get[_0x51a8ec(0xaf,0xe5)](){function _0x32274a(_0xf0c0c4,_0x2812ff){return _0x3e8737(_0xf0c0c4- -0x31c,_0x2812ff);}return this[_0x32274a(-0x19e,-0x1d5)]['particlesNumber'];}set['particlesNumber'](_0x2461e7){function _0x4ee787(_0x88362b,_0x95de20){return _0x51a8ec(_0x95de20,_0x88362b-0x130);}this['options']['particlesNumber']=_0x2461e7,clearTimeout(this['_canrefresh']),this[_0x4ee787(0x1d2,0x251)]=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x51a8ec(-0x55,0x20)](){return this['options']['speedRate'];}set['speedRate'](_0x5e6ed2){function _0x5c2dfc(_0x71aa92,_0x5ec7b9){return _0x3e8737(_0x71aa92- -0x198,_0x5ec7b9);}this['options']['speedRate']=_0x5e6ed2,this[_0x5c2dfc(-0x8,-0x93)]&&(this['windField']['speedRate']=_0x5e6ed2);}get[_0x51a8ec(0xe6,0x102)](){return this['options']['maxAge'];}set['maxAge'](_0x2ec939){this[_0x3f2c4e(0x3d4,0x380)]['maxAge']=_0x2ec939;function _0x3f2c4e(_0x3f95cb,_0x26428a){return _0x51a8ec(_0x26428a,_0x3f95cb-0x2eb);}function _0x465e36(_0x2e08e9,_0x88c8d){return _0x3e8737(_0x2e08e9- -0x250,_0x88c8d);}this[_0x3f2c4e(0x3e6,0x41d)]&&(this[_0x465e36(-0xc0,-0xf5)]['maxAge']=_0x2ec939);}get[_0x3e8737(0xa5,0x41)](){return this['windData'];}set['data'](_0x1b1d25){function _0x389cae(_0x2a2358,_0x4d1385){return _0x3e8737(_0x2a2358-0x387,_0x4d1385);}this[_0x389cae(0x429,0x3e1)](_0x1b1d25);}['_showHook'](_0x68e063){function _0x3073d1(_0x3defc2,_0x126e21){return _0x3e8737(_0x126e21-0xd4,_0x3defc2);}function _0x3b9a6f(_0x151ea5,_0x504c8e){return _0x51a8ec(_0x504c8e,_0x151ea5- -0x121);}_0x68e063?this[_0x3b9a6f(-0x11c,-0xa0)]():(this['windData']&&(this['options'][_0x3073d1(0x1e9,0x179)]=this[_0x3b9a6f(-0xd8,-0x9e)]),this[_0x3073d1(0x112,0x15f)]());}['_mountedHook'](){function _0x562934(_0x1703c1,_0x3334ce){return _0x51a8ec(_0x3334ce,_0x1703c1- -0x2eb);}this['options'][_0x562934(-0x268,-0x286)]?this['initWorker']():this['windField']=new CanvasWindField(this['options']);}[_0x51a8ec(-0x5f,0x5)](){this[_0x1de2f2(0x127,0xd4)]=this['_createCanvas']();function _0x1de2f2(_0x158493,_0xc22825){return _0x51a8ec(_0x158493,_0xc22825-0x70);}const _0x405ac9={};function _0x32240d(_0x1e99e1,_0x5397bf){return _0x3e8737(_0x5397bf- -0x2ab,_0x1e99e1);}_0x405ac9[_0x1de2f2(0x13c,0x13e)]=!![],this['canvasContext']=this[_0x1de2f2(0x163,0xd4)]['getContext']('2d',_0x405ac9),this['bindEvent'](),this['options']['data']&&this[_0x32240d(-0x247,-0x209)](this['options'][_0x32240d(-0x21b,-0x206)]);}['_removedHook'](){this['clear']();function _0x3a2b90(_0x387424,_0x3e4a4e){return _0x3e8737(_0x3e4a4e- -0x312,_0x387424);}function _0x1dc4bf(_0x3592cd,_0x18f287){return _0x3e8737(_0x3592cd-0x2c0,_0x18f287);}this['unbindEvent'](),this['canvas']&&(this[_0x1dc4bf(0x426,0x43c)][_0x1dc4bf(0x3d9,0x40f)]['removeChild'](this['canvas']),delete this[_0x3a2b90(-0x287,-0x219)]);}['_createCanvas'](){const _0x4193f9=mars3d__namespace['DomUtil']['create']('canvas','mars3d-canvasWind',this[_0x3d8535(0x580,0x57b)][_0x3d8535(0x5a3,0x52e)]);_0x4193f9['style'][_0x3a3b98(-0x209,-0x28c)]=_0x3a3b98(-0x1fd,-0x248);function _0x3a3b98(_0x1871f8,_0x52c53f){return _0x51a8ec(_0x52c53f,_0x1871f8- -0x283);}_0x4193f9[_0x3a3b98(-0x299,-0x2c5)][_0x3d8535(0x5dc,0x55e)]='0px';function _0x3d8535(_0x356f2e,_0x2bab98){return _0x3e8737(_0x2bab98-0x415,_0x356f2e);}return _0x4193f9['style'][_0x3a3b98(-0x1ea,-0x271)]='0px',_0x4193f9['style'][_0x3a3b98(-0x270,-0x21c)]=this['_map'][_0x3a3b98(-0x257,-0x288)]['canvas']['clientWidth']+'px',_0x4193f9[_0x3d8535(0x4cf,0x494)]['height']=this[_0x3a3b98(-0x1b2,-0x218)]['scene']['canvas']['clientHeight']+'px',_0x4193f9['style']['pointerEvents']=this[_0x3a3b98(-0x1c5,-0x16b)]?'auto':_0x3a3b98(-0x1fc,-0x1e9),_0x4193f9[_0x3d8535(0x431,0x494)][_0x3a3b98(-0x25f,-0x1de)]=this['options']['zIndex']??0x9,_0x4193f9['width']=this['_map'][_0x3d8535(0x48a,0x4d6)]['canvas'][_0x3a3b98(-0x1aa,-0x1ec)],_0x4193f9[_0x3a3b98(-0x18c,-0x196)]=this[_0x3a3b98(-0x1b2,-0x1ef)][_0x3a3b98(-0x257,-0x276)]['canvas']['clientHeight'],_0x4193f9;}['resize'](){function _0x51b770(_0xe4e5bb,_0x565ed7){return _0x51a8ec(_0xe4e5bb,_0x565ed7-0x185);}function _0x36788b(_0xde7b08,_0x4e3bb0){return _0x3e8737(_0x4e3bb0-0x124,_0xde7b08);}this['canvas']&&(this[_0x51b770(0x1c7,0x1e9)][_0x51b770(0x153,0x16f)]['width']=this['_map'][_0x51b770(0x158,0x1b1)]['canvas']['clientWidth']+'px',this['canvas']['style']['height']=this['_map']['scene']['canvas'][_0x51b770(0x259,0x269)]+'px',this[_0x36788b(0x211,0x21d)]['width']=this['_map']['scene'][_0x36788b(0x1af,0x21d)][_0x51b770(0x238,0x25e)],this[_0x51b770(0x248,0x1e9)]['height']=this['_map'][_0x36788b(0x19f,0x1e5)]['canvas'][_0x36788b(0x2ca,0x29d)]);}['bindEvent'](){const _0xc046c9=this;let _0x1a6a43=Date['now']();function _0x6e895(_0xa9ab55,_0xba9f67){return _0x51a8ec(_0xa9ab55,_0xba9f67-0xee);}(function _0x302fd3(){if(_0xc046c9[_0x42eeed(-0x3,0x2e)])return;function _0x42eeed(_0x50f9aa,_0x51fb7e){return _0x25e8(_0x50f9aa- -0xf2,_0x51fb7e);}function _0x19a122(_0x46f140,_0x5ed001){return _0x25e8(_0x5ed001-0xe4,_0x46f140);}_0xc046c9['_animateFrame']=window['requestAnimationFrame'](_0x302fd3);if(_0xc046c9[_0x19a122(0x1ba,0x216)]&&_0xc046c9['windField']){const _0x741a97=Date['now'](),_0x3b33b7=_0x741a97-_0x1a6a43;_0x3b33b7>_0xc046c9['frameTime']&&(_0x1a6a43=_0x741a97-_0x3b33b7%_0xc046c9[_0x19a122(0x18b,0x1f0)],_0xc046c9[_0x42eeed(0x39,0x4f)]());}}());function _0x25a53e(_0x219dc4,_0x1eae55){return _0x3e8737(_0x1eae55- -0x180,_0x219dc4);}window[_0x6e895(0x14f,0xe7)](_0x25a53e(-0x39,-0x3f),this['resize']['bind'](this),![]),this[_0x6e895(0x228,0x1ba)]=![],this['mouse_move']=![],this[_0x25a53e(0x15,-0x2)]['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this[_0x6e895(0x163,0x17f)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this));}['unbindEvent'](){function _0x3edc28(_0x39f143,_0x59760d){return _0x51a8ec(_0x59760d,_0x39f143-0x3fd);}window[_0x209369(0xc9,0xa5)](this[_0x209369(0x88,0xbb)]),delete this['_animateFrame'];function _0x209369(_0x5e8074,_0x2de5fc){return _0x51a8ec(_0x2de5fc,_0x5e8074-0x41);}window['removeEventListener']('resize',this['resize']),this['options'][_0x3edc28(0x4c8,0x4af)]&&(this['_map'][_0x3edc28(0x4c0,0x51a)](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x209369(0x112,0xe7)]['off'](mars3d__namespace['EventType']['mouseDown'],this[_0x3edc28(0x48e,0x484)],this),this[_0x209369(0x112,0x163)][_0x3edc28(0x4c0,0x4c3)](mars3d__namespace['EventType']['mouseUp'],this[_0x209369(0xeb,0xc4)],this),this[_0x209369(0x112,0x160)]['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this));}[_0x51a8ec(0x10f,0xeb)](_0x15f955){clearTimeout(this[_0x4593e7(0x237,0x1c4)]);function _0x4593e7(_0xe3345e,_0x21b7bb){return _0x51a8ec(_0xe3345e,_0x21b7bb-0x157);}if(!this[_0x58ad9e(0x4a6,0x4f0)]||!this['canvas'])return;this[_0x4593e7(0x1f2,0x1bb)][_0x58ad9e(0x50d,0x47b)]['visibility']=_0x58ad9e(0x54c,0x50f);function _0x58ad9e(_0x5882c1,_0x2e16c5){return _0x51a8ec(_0x5882c1,_0x2e16c5-0x491);}this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;this['redraw']();function _0x9c81f0(_0x1f9ed2,_0x6f1e40){return _0x4593e7(_0x6f1e40,_0x1f9ed2-0x32c);}function _0xc9c978(_0x3ad7fa,_0x3cabec){return _0x4593e7(_0x3ad7fa,_0x3cabec- -0x39d);}this['canvas'][_0x9c81f0(0x46d,0x4aa)][_0x9c81f0(0x475,0x46d)]='visible';},0xc8);}[_0x51a8ec(0x1e,0x91)](_0x395225){function _0x18d6ea(_0x355d0e,_0x46537f){return _0x51a8ec(_0x355d0e,_0x46537f-0x40d);}this['mouse_down']=!![],this['_map']['off'](mars3d__namespace['EventType'][_0x18d6ea(0x4ba,0x492)],this['_onMouseMoveEvent'],this);function _0x2fffb3(_0x550e83,_0x4fadb6){return _0x51a8ec(_0x4fadb6,_0x550e83-0x290);}this[_0x18d6ea(0x4a0,0x4de)]['on'](mars3d__namespace[_0x18d6ea(0x44c,0x45b)][_0x18d6ea(0x49d,0x492)],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x39c686){if(!this['show']||!this[_0x22551e(-0x1a3,-0x20a)])return;function _0x3d552e(_0x339e36,_0x1fada6){return _0x51a8ec(_0x1fada6,_0x339e36- -0x186);}function _0x22551e(_0x410600,_0x222312){return _0x51a8ec(_0x410600,_0x222312- -0x26e);}this['mouse_down']&&(this['canvas'][_0x3d552e(-0x19c,-0x1be)]['visibility']='hidden',this[_0x22551e(-0x25f,-0x1fb)]=!![]);}[_0x3e8737(0x13f,0xcc)](_0x506a23){if(!this['show']||!this['canvas'])return;this[_0x3e89c3(-0x5c,0x6)]['off'](mars3d__namespace[_0x3e89c3(-0xbf,-0x7d)]['mouseMove'],this['_onMouseMoveEvent'],this);this['mouse_down']&&this['mouse_move']&&this[_0x3e89c3(-0xf,-0x1a)]();function _0x1555b5(_0x2821a7,_0x42658c){return _0x51a8ec(_0x2821a7,_0x42658c-0x42d);}function _0x3e89c3(_0x104237,_0x2b27d9){return _0x51a8ec(_0x104237,_0x2b27d9- -0xcb);}this['canvas'][_0x1555b5(0x494,0x417)]['visibility']=_0x3e89c3(-0x13f,-0xb5),this[_0x1555b5(0x492,0x4f9)]=![],this['mouse_move']=![];}[_0x51a8ec(-0x8,0xd)](_0x16c6a7){this['clear']();function _0x2c118f(_0x4ed390,_0x554741){return _0x51a8ec(_0x554741,_0x4ed390-0x458);}this[_0x2c118f(0x4a1,0x4e2)]=_0x16c6a7;function _0x225d05(_0x3f052d,_0x1bf622){return _0x51a8ec(_0x3f052d,_0x1bf622-0x23f);}this[_0x2c118f(0x553,0x4e6)]['setDate'](_0x16c6a7),this['redraw']();}['redraw'](){if(!this['show'])return;this[_0x10b963(-0x100,-0x18b)][_0x54f173(0x121,0x1a5)](this['options']);function _0x54f173(_0x2f6a2c,_0x4f48e9){return _0x3e8737(_0x2f6a2c-0x8a,_0x4f48e9);}function _0x10b963(_0x3fc97e,_0x2d5017){return _0x51a8ec(_0x2d5017,_0x3fc97e- -0x1fb);}this['update']();}[_0x51a8ec(0x70,0x58)](){if(this[_0x84a882(0x429,0x3ff)])return;function _0x10fbdb(_0x89b8c,_0x104e7e){return _0x3e8737(_0x104e7e-0x1ca,_0x89b8c);}function _0x84a882(_0x23d7d7,_0x410e67){return _0x3e8737(_0x410e67-0x30d,_0x23d7d7);}this['_updateIng']=!![];if(this['worker'])this['windField'][_0x10fbdb(0x2ed,0x2b7)]();else{const _0x5a0b92=this[_0x84a882(0x4f1,0x49d)]['getParticles']();this['_drawLines'](_0x5a0b92);}this['_updateIng']=![];}['_drawLines'](_0x5f544f){this['canvasContext'][_0x1fd128(0x542,0x515)]=_0x1fd128(0x476,0x4c3),this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this[_0x1bc909(0x3e2,0x3c8)]['globalCompositeOperation']='lighter',this[_0x1bc909(0x3e2,0x3cb)][_0x1bc909(0x394,0x36d)]=0.9;function _0x1bc909(_0x2a2cce,_0x4c94d5){return _0x3e8737(_0x2a2cce-0x2d0,_0x4c94d5);}function _0x1fd128(_0x49dabd,_0xfc5bd2){return _0x51a8ec(_0x49dabd,_0xfc5bd2-0x493);}const _0x3d7b18=this[_0x1bc909(0x436,0x3be)][_0x1fd128(0x548,0x4bf)]['mode']!==Cesium['SceneMode']['SCENE3D'],_0x2d5399=this[_0x1fd128(0x5b4,0x55a)]*0.25;if(this[_0x1bc909(0x360,0x3d8)])for(let _0x1ccee3=0x0,_0x2ac5c3=_0x5f544f['length'];_0x1ccee3<_0x2ac5c3;_0x1ccee3++){const _0xdb4317=_0x5f544f[_0x1ccee3],_0x16cdf9=this['_tomap'](_0xdb4317['lng'],_0xdb4317['lat'],_0xdb4317),_0x308b30=this[_0x1fd128(0x4f7,0x479)](_0xdb4317[_0x1fd128(0x46c,0x4e7)],_0xdb4317['tlat'],_0xdb4317);if(!_0x16cdf9||!_0x308b30)continue;if(_0x3d7b18&&Math['abs'](_0x16cdf9[0x0]-_0x308b30[0x0])>=_0x2d5399)continue;this['canvasContext']['beginPath'](),this['canvasContext']['lineWidth']=this[_0x1bc909(0x383,0x3b4)],this['canvasContext']['strokeStyle']=this['_colorRamp']['getColor'](_0xdb4317['speed']),this['canvasContext']['moveTo'](_0x16cdf9[0x0],_0x16cdf9[0x1]),this['canvasContext']['lineTo'](_0x308b30[0x0],_0x308b30[0x1]),this[_0x1bc909(0x3e2,0x3f2)]['stroke']();}else{this['canvasContext']['beginPath'](),this[_0x1bc909(0x3e2,0x382)][_0x1fd128(0x4d8,0x4b1)]=this['lineWidth'],this[_0x1fd128(0x51d,0x510)][_0x1bc909(0x34e,0x36b)]=this['color'];for(let _0x211458=0x0,_0x17c322=_0x5f544f['length'];_0x211458<_0x17c322;_0x211458++){const _0x2d0143=_0x5f544f[_0x211458],_0xda13d7=this[_0x1fd128(0x3f7,0x479)](_0x2d0143['lng'],_0x2d0143[_0x1fd128(0x503,0x56b)],_0x2d0143),_0x9d06e1=this['_tomap'](_0x2d0143['tlng'],_0x2d0143[_0x1fd128(0x46b,0x4a8)],_0x2d0143);if(!_0xda13d7||!_0x9d06e1)continue;if(_0x3d7b18&&Math[_0x1fd128(0x5a5,0x531)](_0xda13d7[0x0]-_0x9d06e1[0x0])>=_0x2d5399)continue;this['canvasContext']['moveTo'](_0xda13d7[0x0],_0xda13d7[0x1]),this['canvasContext']['lineTo'](_0x9d06e1[0x0],_0x9d06e1[0x1]);}this['canvasContext'][_0x1fd128(0x484,0x490)]();}}[_0x3e8737(0x7b,0x36)](_0x26efee,_0x341a87,_0x1a643f){function _0x10bb98(_0x398686,_0x1599d9){return _0x3e8737(_0x398686- -0x261,_0x1599d9);}const _0x46326f=Cesium['Cartesian3']['fromDegrees'](_0x26efee,_0x341a87,this[_0x40020c(0x24a,0x1ec)]),_0x500106=this[_0x10bb98(-0xfb,-0xe0)]['scene'];function _0x40020c(_0x25cc71,_0x2fa7f5){return _0x3e8737(_0x25cc71-0x1b7,_0x2fa7f5);}if(_0x500106['mode']===Cesium['SceneMode']['SCENE3D']){const _0x542356=new Cesium[(_0x40020c(0x2c2,0x27f))](_0x500106['globe']['ellipsoid'],_0x500106[_0x10bb98(-0x11d,-0x1a2)]['positionWC']),_0x276b52=_0x542356['isPointVisible'](_0x46326f);if(!_0x276b52)return _0x1a643f['age']=0x0,null;}const _0x34bd15=mars3d__namespace['PointTrans']['toWindowCoordinates'](this[_0x10bb98(-0xfb,-0x136)][_0x40020c(0x278,0x2f9)],_0x46326f);return _0x34bd15?[_0x34bd15['x'],_0x34bd15['y']]:null;}[_0x3e8737(0x152,0x1a3)](){this['windField'][_0x4ab1f0(0x28a,0x26e)]();function _0x4ab1f0(_0x43feda,_0x1a558f){return _0x3e8737(_0x43feda-0x138,_0x1a558f);}function _0x15f0e5(_0x2c3be3,_0x4380e1){return _0x51a8ec(_0x2c3be3,_0x4380e1-0x470);}delete this[_0x4ab1f0(0x216,0x23c)];}['initWorker'](){function _0x37c7f6(_0x4f8cfb,_0x9a9375){return _0x3e8737(_0x4f8cfb- -0x1f4,_0x9a9375);}this[_0x37c7f6(-0xdc,-0xcf)]=new Worker(this[_0x37c7f6(-0x76,-0x37)][_0x37c7f6(-0xdc,-0x165)]),this[_0x37c7f6(-0xdc,-0xe2)]['onmessage']=_0x2a76dc=>{function _0x354ceb(_0x2a5a36,_0x2c753b){return _0x37c7f6(_0x2c753b-0x38d,_0x2a5a36);}this['_drawLines'](_0x2a76dc[_0x354ceb(0x204,0x23e)]['particles']),this['_updateIng2']=![];},this['windField']={'init':_0x5692ad=>{function _0x147308(_0x440c66,_0x44571b){return _0x4b8a9c(_0x44571b- -0x557,_0x440c66);}const _0x4c9bf4={};function _0x5ce9e4(_0x395df2,_0x3ff141){return _0x4b8a9c(_0x3ff141- -0x3a5,_0x395df2);}_0x4c9bf4['type']='init',_0x4c9bf4[_0x5ce9e4(-0x81,-0x3b)]=_0x5692ad,this[_0x5ce9e4(-0x103,-0xa1)][_0x5ce9e4(-0xf5,-0xb5)](_0x4c9bf4);},'setOptions':_0x4be999=>{const _0x4eb1b6={};_0x4eb1b6['type']='setOptions';function _0x11638c(_0x3dee7e,_0x4a953f){return _0x37c7f6(_0x3dee7e- -0xa1,_0x4a953f);}_0x4eb1b6['options']=_0x4be999,this['worker'][_0x11638c(-0x191,-0x176)](_0x4eb1b6);},'setDate':_0xa35422=>{const _0x400980={};_0x400980['type']=_0x2b63b4(0x3,0x17);function _0x2b63b4(_0x54d8f4,_0x5e7a69){return _0x37c7f6(_0x5e7a69-0x149,_0x54d8f4);}_0x400980['data']=_0xa35422,this['worker']['postMessage'](_0x400980);},'update':()=>{function _0x328fa4(_0x108c86,_0x4847f6){return _0x37c7f6(_0x4847f6- -0xd4,_0x108c86);}if(this['_updateIng2'])return;this[_0x328fa4(-0x1f2,-0x221)]=!![];const _0x205057={};_0x205057[_0x328fa4(-0x1d1,-0x14b)]=_0x3ca0c9(0xd6,0x84);function _0x3ca0c9(_0x2fcaa2,_0x14e318){return _0x4b8a9c(_0x2fcaa2- -0x203,_0x14e318);}this['worker'][_0x3ca0c9(0xed,0xd2)](_0x205057);},'clear':()=>{const _0x2608b5={};function _0x5ce798(_0x1e3c1e,_0x124683){return _0x4b8a9c(_0x1e3c1e-0x21e,_0x124683);}_0x2608b5['type']=_0x4629c7(0x120,0x10e);function _0x4629c7(_0x29b401,_0x2b2c05){return _0x4b8a9c(_0x29b401- -0x21e,_0x2b2c05);}this[_0x5ce798(0x522,0x52d)]['postMessage'](_0x2608b5);}};function _0x4b8a9c(_0x41ec89,_0x5e1399){return _0x51a8ec(_0x5e1399,_0x41ec89-0x281);}this['windField'][_0x37c7f6(-0x8c,0x4)](this['options']);}}mars3d__namespace['LayerUtil'][_0x3e8737(0x186,0x1ff)]('canvasWind',CanvasWindLayer),mars3d__namespace[_0x3e8737(0xa0,0x100)][_0x3e8737(0x17c,0x200)]=CanvasWindLayer,mars3d__namespace[_0x51a8ec(0xde,0xad)]=CanvasWindField,mars3d__namespace[_0x51a8ec(0x170,0xf6)]=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x3e8737(0x17c,0x1f4)]=CanvasWindLayer,exports[_0x51a8ec(0xc,0x51)]=WindLayer,exports[_0x3e8737(0x18b,0x162)]=WindUtil;const _0x45e0ca={};_0x45e0ca['value']=!![],Object['defineProperty'](exports,'__esModule',_0x45e0ca);
14
+ 'use strict';(function(_0x34d376,_0x97bd3f){function _0x19a04c(_0x3e34bc,_0x31b61a){return _0xa9df(_0x31b61a- -0x248,_0x3e34bc);}function _0x57daf9(_0x588ed0,_0x2d0560){return _0xa9df(_0x588ed0- -0x25b,_0x2d0560);}const _0x36e242=_0x34d376();while(!![]){try{const _0x5a643d=-parseInt(_0x19a04c(-0xa9,-0x50))/0x1+parseInt(_0x57daf9(-0xf0,-0xf5))/0x2*(-parseInt(_0x57daf9(-0x25,-0x10))/0x3)+parseInt(_0x57daf9(-0xd8,-0xd8))/0x4+-parseInt(_0x57daf9(-0xdb,-0x6f))/0x5*(parseInt(_0x57daf9(-0x68,-0x8e))/0x6)+-parseInt(_0x57daf9(-0x55,0x2d))/0x7*(parseInt(_0x57daf9(-0x3a,-0x71))/0x8)+parseInt(_0x57daf9(-0x69,-0x5f))/0x9*(parseInt(_0x57daf9(-0x1e,0x19))/0xa)+parseInt(_0x57daf9(-0xa7,-0x104))/0xb;if(_0x5a643d===_0x97bd3f)break;else _0x36e242['push'](_0x36e242['shift']());}catch(_0x1991fe){_0x36e242['push'](_0x36e242['shift']());}}}(_0x1a65,0xdc567));function _interopNamespace(_0x3a0b4){if(_0x3a0b4&&_0x3a0b4['__esModule'])return _0x3a0b4;var _0x4b6bc8=Object['create'](null);_0x3a0b4&&Object['keys'](_0x3a0b4)[_0x2bea97(0x68,0xca)](function(_0x1f25dc){function _0x4c8e56(_0x1c6255,_0x3abed3){return _0x2bea97(_0x3abed3- -0x37,_0x1c6255);}function _0x494c25(_0x492b57,_0x4707a1){return _0x2bea97(_0x4707a1-0x16b,_0x492b57);}if(_0x1f25dc!=='default'){var _0x3d88ff=Object[_0x494c25(0xe5,0x149)](_0x3a0b4,_0x1f25dc);Object['defineProperty'](_0x4b6bc8,_0x1f25dc,_0x3d88ff[_0x494c25(0x12c,0x125)]?_0x3d88ff:{'enumerable':!![],'get':function(){return _0x3a0b4[_0x1f25dc];}});}});_0x4b6bc8[_0x2bea97(-0x7a,-0x78)]=_0x3a0b4;function _0x4ac237(_0x143ce7,_0x5ef043){return _0xa9df(_0x5ef043-0x2fc,_0x143ce7);}function _0x2bea97(_0x35a0ae,_0x570bd7){return _0xa9df(_0x35a0ae- -0x1ff,_0x570bd7);}return _0x4b6bc8;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x1495da,_0x4c7395){const _0x17b982=_0x1495da*Math['cos'](Cesium$7['Math']['toRadians'](_0x4c7395));return _0x17b982;}function getV(_0x30b248,_0x200a7b){const _0x5c4ce9=_0x30b248*Math['sin'](Cesium$7['Math'][_0x2138d0(0x3fb,0x37c)](_0x200a7b));function _0x2138d0(_0x320802,_0x383919){return _0xa9df(_0x320802-0x17e,_0x383919);}return _0x5c4ce9;}function getSpeed(_0x1b928d,_0xb0b878){const _0x5b8b4c=Math[_0x37847d(-0x19f,-0x178)](Math['pow'](_0x1b928d,0x2)+Math['pow'](_0xb0b878,0x2));function _0x37847d(_0x43100c,_0x208dd4){return _0xa9df(_0x208dd4- -0x301,_0x43100c);}return _0x5b8b4c;}function getDirection(_0x1fb8b9,_0x4a6503){let _0xa9fef7=Cesium$7[_0x5c561c(0x41b,0x3ac)][_0x5c561c(0x3e6,0x3c6)](Math['atan2'](_0x4a6503,_0x1fb8b9));function _0x5c561c(_0x2d0b0d,_0x173a2a){return _0xa9df(_0x2d0b0d-0x26b,_0x173a2a);}_0xa9fef7+=_0xa9fef7<0x0?0x168:0x0;function _0x2aea07(_0x3ebb40,_0x49e45b){return _0xa9df(_0x49e45b- -0xf8,_0x3ebb40);}return _0xa9fef7;}const _0x591255={};_0x591255['__proto__']=null,_0x591255[_0x2c6bea(0x20c,0x281)]=getU,_0x591255['getV']=getV,_0x591255['getSpeed']=getSpeed,_0x591255['getDirection']=getDirection;var WindUtil=_0x591255;const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x1cf8ba){this[_0x31d073(0x4e1,0x4f5)]=_0x1cf8ba[_0x586557(-0x1de,-0x1c4)],this['geometry']=_0x1cf8ba['geometry'],this['attributeLocations']=_0x1cf8ba['attributeLocations'],this['primitiveType']=_0x1cf8ba[_0x31d073(0x5ab,0x54f)];function _0x31d073(_0x3d6880,_0x318956){return _0x2c6bea(_0x318956-0x3bd,_0x3d6880);}this[_0x586557(-0x16b,-0x1dd)]=_0x1cf8ba['uniformMap'],this['vertexShaderSource']=_0x1cf8ba['vertexShaderSource'],this['fragmentShaderSource']=_0x1cf8ba['fragmentShaderSource'],this[_0x586557(-0x120,-0x17a)]=_0x1cf8ba['rawRenderState'],this[_0x31d073(0x474,0x4f1)]=_0x1cf8ba['framebuffer'],this['outputTexture']=_0x1cf8ba[_0x31d073(0x5a9,0x53b)],this['autoClear']=_0x1cf8ba['autoClear']??![],this['preExecute']=_0x1cf8ba['preExecute'],this[_0x586557(-0x1f1,-0x182)]=!![],this[_0x586557(-0xda,-0x132)]=undefined;function _0x586557(_0x169f59,_0x37e041){return _0x2c6bea(_0x37e041- -0x2fc,_0x169f59);}this['clearCommand']=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6[(_0x586557(-0x182,-0x18a))]({'color':new Cesium$6[(_0x31d073(0x514,0x51e))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x586557(-0x14c,-0x1c8)],'pass':Cesium$6['Pass'][_0x586557(-0x94,-0xe5)]}));}['createCommand'](_0x3cb420){function _0x3689e6(_0x2b6866,_0x22a0ea){return _0x2c6bea(_0x2b6866- -0x368,_0x22a0ea);}function _0x497f33(_0x16729c,_0x48af08){return _0x2c6bea(_0x16729c- -0xfc,_0x48af08);}switch(this[_0x497f33(0x3c,-0x36)]){case'Draw':{const _0x1533ff=Cesium$6['VertexArray'][_0x497f33(0xb2,0x105)]({'context':_0x3cb420,'geometry':this[_0x497f33(0x50,0xb6)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0xfa1d2a={};_0xfa1d2a['context']=_0x3cb420,_0xfa1d2a['attributeLocations']=this['attributeLocations'],_0xfa1d2a[_0x3689e6(-0x1ad,-0x23a)]=this['vertexShaderSource'],_0xfa1d2a[_0x497f33(0xca,0x11c)]=this['fragmentShaderSource'];const _0x5d9508=Cesium$6['ShaderProgram']['fromCache'](_0xfa1d2a),_0x5c5900=Cesium$6['RenderState'][_0x3689e6(-0x189,-0x129)](this['rawRenderState']);return new Cesium$6[(_0x497f33(0xa4,0xd6))]({'owner':this,'vertexArray':_0x1533ff,'primitiveType':this[_0x497f33(0x96,0x67)],'uniformMap':this['uniformMap'],'modelMatrix':Cesium$6[_0x3689e6(-0x1bf,-0x202)][_0x3689e6(-0x18c,-0x11d)],'shaderProgram':_0x5d9508,'framebuffer':this['framebuffer'],'renderState':_0x5c5900,'pass':Cesium$6['Pass']['OPAQUE']});}case _0x3689e6(-0x165,-0x1a8):{const _0x46cb6c={};return _0x46cb6c['owner']=this,_0x46cb6c['fragmentShaderSource']=this['fragmentShaderSource'],_0x46cb6c[_0x497f33(0x23,0x4e)]=this[_0x497f33(0x23,0x33)],_0x46cb6c[_0x3689e6(-0x1ea,-0x1ba)]=this['outputTexture'],_0x46cb6c[_0x3689e6(-0x24f,-0x1c9)]=!![],new Cesium$6['ComputeCommand'](_0x46cb6c);}}}['setGeometry'](_0x4ac83a,_0x2e3706){this[_0x4bdc07(0x73,0xe5)]=_0x2e3706;function _0x4bdc07(_0x562da9,_0xaad863){return _0x2c6bea(_0xaad863- -0x67,_0x562da9);}function _0xd689ed(_0x1facfe,_0x580adf){return _0x2c6bea(_0x1facfe-0x23f,_0x580adf);}const _0x38443e=Cesium$6['VertexArray']['fromGeometry']({'context':_0x4ac83a,'geometry':this[_0x4bdc07(0xf9,0xe5)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x38443e;}[_0x5bac0c(0x490,0x4de)](_0x458009){if(!this[_0x1415ac(0xdc,0xb7)])return;function _0x1415ac(_0x1a4be4,_0x5d5d3e){return _0x5bac0c(_0x1a4be4,_0x5d5d3e- -0x3b4);}if(_0x458009['mode']!==Cesium$6[_0x1415ac(0x83,0x81)][_0x1415ac(0x61,0xcb)])return;!Cesium$6[_0x155bbb(0x26d,0x29b)](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x458009['context']));function _0x155bbb(_0x12ba76,_0x341087){return _0x2c6bea(_0x12ba76-0xc1,_0x341087);}Cesium$6[_0x155bbb(0x26d,0x2ac)](this[_0x1415ac(0x9b,0x8a)])&&this['preExecute'](),Cesium$6['defined'](this['clearCommand'])&&_0x458009['commandList']['push'](this['clearCommand']),_0x458009['commandList']['push'](this['commandToExecute']);}[_0x2c6bea(0x1f4,0x1bb)](){return![];}[_0x5bac0c(0x4b7,0x428)](){function _0x2c6a61(_0x9f22,_0x4d4a94){return _0x2c6bea(_0x4d4a94-0x172,_0x9f22);}if(this['clearCommand']){var _0x17ef0b,_0x587e4d;(_0x17ef0b=this['clearCommand'])!==null&&_0x17ef0b!==void 0x0&&_0x17ef0b[_0x2c6a61(0x2d1,0x2c7)]&&this[_0x339a5b(0x518,0x52f)][_0x2c6a61(0x2a2,0x2c7)]['destroy'](),(_0x587e4d=this['clearCommand'])!==null&&_0x587e4d!==void 0x0&&_0x587e4d[_0x339a5b(0x5ea,0x573)]&&this[_0x2c6a61(0x326,0x327)][_0x2c6a61(0x3ac,0x36b)]['destroy'](),delete this[_0x2c6a61(0x381,0x327)];}function _0x339a5b(_0x1d02ae,_0x31d660){return _0x5bac0c(_0x1d02ae,_0x31d660-0x89);}return this[_0x2c6a61(0x33d,0x33c)]&&(this['commandToExecute'][_0x339a5b(0x555,0x4cf)]&&this['commandToExecute']['vertexArray']['destroy'](),this[_0x339a5b(0x569,0x544)]['shaderProgram']&&this[_0x339a5b(0x4bb,0x544)][_0x339a5b(0x54d,0x573)]['destroy'](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0xcf3542=function(){function _0x5a49ca(_0x2fba94,_0x45a323){return _0xa9df(_0x45a323- -0xc3,_0x2fba94);}function _0x1187c4(_0x503aee,_0xe3efe0){return _0xa9df(_0x503aee-0x2e4,_0xe3efe0);}const _0x243e64=new Cesium$5['Geometry']({'attributes':new Cesium$5[(_0x1187c4(0x4b7,0x427))]({'position':new Cesium$5[(_0x5a49ca(0x115,0x122))]({'componentDatatype':Cesium$5[_0x5a49ca(0x1eb,0x168)]['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x243e64;};function _0x435628(_0x281e5c,_0x11735d){return _0x5bac0c(_0x281e5c,_0x11735d- -0x499);}const _0x47faa7=function(_0x3b2b06,_0x5a2ca0){if(Cesium$5['defined'](_0x5a2ca0)){const _0x42c8be={};_0x42c8be[_0x218dc1(-0xc3,-0x33)]=_0x5a2ca0,_0x3b2b06['source']=_0x42c8be;}function _0x218dc1(_0x55ac27,_0x494c2b){return _0xa9df(_0x494c2b- -0x23b,_0x55ac27);}const _0x426f76=new Cesium$5['Texture'](_0x3b2b06);return _0x426f76;},_0x52db28=function(_0xe20c2b,_0x52122f,_0x44158a){const _0x685d79={};_0x685d79['context']=_0xe20c2b;function _0x46dbfe(_0xff4988,_0x498bc1){return _0xa9df(_0xff4988-0xc6,_0x498bc1);}_0x685d79['colorTextures']=[_0x52122f],_0x685d79['depthTexture']=_0x44158a;const _0x4c7a88=new Cesium$5[(_0x46dbfe(0x321,0x2d7))](_0x685d79);return _0x4c7a88;},_0x256ff5=function(_0x50fb4e){const _0x4eb19d=!![],_0xf2faf6=![],_0xc68bdf={};_0xc68bdf[_0x18a0fb(0x1c4,0x1a3)]=_0x50fb4e['viewport'],_0xc68bdf[_0x41fb8d(0x3cf,0x3dc)]=_0x50fb4e[_0x18a0fb(0x21e,0x24e)];function _0x18a0fb(_0x339ab9,_0x2f24a6){return _0xa9df(_0x2f24a6-0x2,_0x339ab9);}_0xc68bdf[_0x18a0fb(0x196,0x1ba)]=_0x50fb4e['depthMask'],_0xc68bdf['blending']=_0x50fb4e[_0x18a0fb(0x112,0x17e)];const _0x2072d5=_0xc68bdf,_0x3dcea8=Cesium$5['Appearance']['getDefaultRenderState'](_0x4eb19d,_0xf2faf6,_0x2072d5);function _0x41fb8d(_0x2340fe,_0x52a587){return _0xa9df(_0x52a587-0x190,_0x2340fe);}return _0x3dcea8;},_0x10441b=function(_0x597b28){const _0x2a5171={};function _0x1d7dc1(_0x6e43c4,_0x120c30){return _0xa9df(_0x6e43c4-0xe8,_0x120c30);}const _0x512389=Cesium$5['Math']['mod'](_0x597b28['west'],Cesium$5[_0x1d7dc1(0x298,0x29a)]['TWO_PI']),_0x27f3c0=Cesium$5['Math']['mod'](_0x597b28['east'],Cesium$5[_0x1d7dc1(0x298,0x323)]['TWO_PI']),_0x17bab3=_0x597b28['width'];let _0x1f65f0,_0x2f6bf2;_0x17bab3>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x1f65f0=0x0,_0x2f6bf2=Cesium$5['Math'][_0x52c4d7(0x406,0x3ef)]):_0x27f3c0-_0x512389<_0x17bab3?(_0x1f65f0=_0x512389,_0x2f6bf2=_0x512389+_0x17bab3):(_0x1f65f0=_0x512389,_0x2f6bf2=_0x27f3c0);_0x2a5171['lon']={'min':Cesium$5['Math'][_0x1d7dc1(0x263,0x29a)](_0x1f65f0),'max':Cesium$5[_0x52c4d7(0x34a,0x395)]['toDegrees'](_0x2f6bf2)};const _0x4a07f7=_0x597b28['south'],_0x5a4842=_0x597b28['north'],_0x564b51=_0x597b28['height'],_0x1bf487=_0x564b51>Cesium$5[_0x1d7dc1(0x298,0x263)]['PI']/0xc?_0x564b51/0x2:0x0;let _0x2adcdc=Cesium$5['Math']['clampToLatitudeRange'](_0x4a07f7-_0x1bf487),_0x329daf=Cesium$5['Math']['clampToLatitudeRange'](_0x5a4842+_0x1bf487);_0x2adcdc<-Cesium$5['Math'][_0x1d7dc1(0x306,0x28f)]&&(_0x2adcdc=-Cesium$5['Math']['PI_OVER_TWO']);_0x329daf>Cesium$5[_0x1d7dc1(0x298,0x243)][_0x52c4d7(0x39e,0x403)]&&(_0x329daf=Cesium$5['Math'][_0x52c4d7(0x3e3,0x432)]);_0x2a5171['lat']={'min':Cesium$5[_0x52c4d7(0x406,0x395)]['toDegrees'](_0x2adcdc),'max':Cesium$5['Math']['toDegrees'](_0x329daf)};function _0x52c4d7(_0x1b39d6,_0x1a35b5){return _0xa9df(_0x1a35b5-0x1e5,_0x1b39d6);}return _0x2a5171;},_0x4569dd={};_0x4569dd['getFullscreenQuad']=_0xcf3542,_0x4569dd['createTexture']=_0x47faa7,_0x4569dd['createFramebuffer']=_0x52db28;function _0x19614c(_0x171bae,_0x2603a3){return _0x2c6bea(_0x2603a3- -0x1c3,_0x171bae);}return _0x4569dd[_0x19614c(-0x35,0xa)]=_0x256ff5,_0x4569dd[_0x435628(-0x92,-0x6a)]=_0x10441b,_0x4569dd;}());var fullscreenVert='#version\x20300\x20es\x0a\x0ain\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20gl_Position\x20=\x20vec4(position,\x201.0f);\x0a}\x0a',screenDrawFrag=_0x5bac0c(0x4b9,0x515),segmentDrawFrag='#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20bool\x20colour;\x0a\x0ain\x20float\x20heightNormalization;\x0ain\x20float\x20speedNormalization;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speedNormalization\x20>\x20zero)\x20{\x0a\x20\x20\x20\x20if(colour)\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(heightNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',segmentDrawVert=_0x2c6bea(0x1e9,0x1bd),trailDrawFrag=_0x2c6bea(0x22d,0x1f4);const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0xd13cd6,_0xba2be0,_0x2b04c3,_0x186878,_0xe318b9){this['colour']=_0x2b04c3['colors']===_0x57828e(-0xc3,-0xc2),this[_0x57828e(-0x4e,-0xcb)](_0xd13cd6,_0xba2be0,_0x2b04c3[_0x371c16(-0x9b,-0x8b)]);function _0x371c16(_0x175288,_0x51ef57){return _0x2c6bea(_0x51ef57- -0x21f,_0x175288);}function _0x57828e(_0x463979,_0x56375e){return _0x2c6bea(_0x56375e- -0x21e,_0x463979);}this['createRenderingFramebuffers'](_0xd13cd6),this['createRenderingPrimitives'](_0xd13cd6,_0xba2be0,_0x2b04c3,_0x186878,_0xe318b9);}[_0x2c6bea(0x153,0x1aa)](_0x5f4f45,_0x3fc308,_0x15a515){function _0x20d19a(_0x35f657,_0x274e3e){return _0x2c6bea(_0x274e3e-0x5b,_0x35f657);}const _0x28e12c={};_0x28e12c[_0x538bbc(0x7e,0x8a)]=_0x5f4f45,_0x28e12c['width']=_0x5f4f45['drawingBufferWidth'],_0x28e12c['height']=_0x5f4f45[_0x20d19a(0x1b3,0x172)],_0x28e12c['pixelFormat']=Cesium$4['PixelFormat']['RGBA'],_0x28e12c[_0x20d19a(0x222,0x274)]=Cesium$4['PixelDatatype']['UNSIGNED_BYTE'];const _0x2538bf=_0x28e12c,_0x25ec92={};_0x25ec92['context']=_0x5f4f45,_0x25ec92['width']=_0x5f4f45['drawingBufferWidth'];function _0x538bbc(_0x4283f2,_0x5aef7c){return _0x2c6bea(_0x5aef7c- -0x147,_0x4283f2);}_0x25ec92['height']=_0x5f4f45['drawingBufferHeight'],_0x25ec92[_0x20d19a(0x25a,0x218)]=Cesium$4['PixelFormat'][_0x538bbc(0x70,0x3c)],_0x25ec92[_0x538bbc(0x114,0xd2)]=Cesium$4[_0x538bbc(0x53,0x77)]['UNSIGNED_INT'];const _0x3fe129=_0x25ec92,_0x23fa8a=_0x15a515[_0x538bbc(0x10,0x35)],_0x2a362a=new Float32Array(_0x23fa8a*0x3);for(let _0x595948=0x0;_0x595948<_0x23fa8a;_0x595948++){const _0x4a519f=Cesium$4['Color'][_0x20d19a(0x1d1,0x1a0)](_0x15a515[_0x595948]);_0x2a362a[0x3*_0x595948]=_0x4a519f['red'],_0x2a362a[0x3*_0x595948+0x1]=_0x4a519f['green'],_0x2a362a[0x3*_0x595948+0x2]=_0x4a519f[_0x538bbc(0x71,-0xd)];}const _0x25b761={'context':_0x5f4f45,'width':_0x23fa8a,'height':0x1,'pixelFormat':Cesium$4[_0x538bbc(-0x35,0x1d)]['RGB'],'pixelDatatype':Cesium$4[_0x538bbc(0x8c,0x77)]['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4[_0x20d19a(0x1e9,0x27a)]['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this['textures']={'segmentsColor':Util[_0x538bbc(0xec,0xd4)](_0x2538bf),'segmentsDepth':Util['createTexture'](_0x3fe129),'currentTrailsColor':Util[_0x538bbc(0x59,0xd4)](_0x2538bf),'currentTrailsDepth':Util['createTexture'](_0x3fe129),'nextTrailsColor':Util['createTexture'](_0x2538bf),'nextTrailsDepth':Util[_0x538bbc(0x44,0xd4)](_0x3fe129),'colorTable':Util['createTexture'](_0x25b761,_0x2a362a)};}['createRenderingFramebuffers'](_0x426c82){function _0x250d4f(_0xe2a245,_0x23672f){return _0x2c6bea(_0x23672f-0x361,_0xe2a245);}function _0x2b5751(_0x23c44f,_0xbd8440){return _0x5bac0c(_0x23c44f,_0xbd8440- -0x59d);}this[_0x250d4f(0x54f,0x55c)]={'segments':Util['createFramebuffer'](_0x426c82,this[_0x250d4f(0x467,0x4b9)]['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x426c82,this['textures']['currentTrailsColor'],this[_0x250d4f(0x442,0x4b9)]['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x426c82,this[_0x2b5751(-0x1d5,-0x154)][_0x2b5751(-0x156,-0x101)],this[_0x250d4f(0x452,0x4b9)][_0x2b5751(-0x1fe,-0x18f)])};}['createSegmentsGeometry'](_0xc2a58f){const _0x65a3c1=0x4;let _0x54a8de=[];for(let _0x5f5544=0x0;_0x5f5544<_0xc2a58f['particlesTextureSize'];_0x5f5544++){for(let _0x2bc08a=0x0;_0x2bc08a<_0xc2a58f[_0x304d0f(0x107,0xda)];_0x2bc08a++){for(let _0x4202e2=0x0;_0x4202e2<_0x65a3c1;_0x4202e2++){_0x54a8de[_0x304d0f(0x211,0x197)](_0x5f5544/_0xc2a58f['particlesTextureSize']),_0x54a8de[_0x304d0f(0x17d,0x197)](_0x2bc08a/_0xc2a58f[_0x26d85b(0x39c,0x39b)]);}}}function _0x304d0f(_0x55ee8e,_0x2fcbbe){return _0x5bac0c(_0x55ee8e,_0x2fcbbe- -0x382);}_0x54a8de=new Float32Array(_0x54a8de);let _0x5da009=[];for(let _0x32a343=0x0;_0x32a343<_0xc2a58f[_0x26d85b(0x3b6,0x36e)];_0x32a343++){_0x5da009[_0x304d0f(0x1c5,0x197)](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x5da009=new Float32Array(_0x5da009);let _0x376c94=[];for(let _0x5cebe7=0x0,_0x3abeac=0x0;_0x5cebe7<_0xc2a58f['maxParticles'];_0x5cebe7++){_0x376c94['push'](_0x3abeac+0x0,_0x3abeac+0x1,_0x3abeac+0x2,_0x3abeac+0x2,_0x3abeac+0x1,_0x3abeac+0x3),_0x3abeac+=_0x65a3c1;}_0x376c94=new Uint32Array(_0x376c94);const _0x38eab7=new Cesium$4['Geometry']({'attributes':new Cesium$4[(_0x26d85b(0x3ae,0x3d2))]({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x54a8de}),'normal':new Cesium$4[(_0x304d0f(0x13f,0xfe))]({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x5da009})}),'indices':_0x376c94});function _0x26d85b(_0x5a3a42,_0x32ea75){return _0x5bac0c(_0x32ea75,_0x5a3a42- -0xc0);}return _0x38eab7;}['createRenderingPrimitives'](_0x4695e3,_0x100ea3,_0x447564,_0x1c7a69,_0x169208){const _0x72babf=this,_0x2e34f8={};_0x2e34f8['st']=0x0,_0x2e34f8[_0x492f5b(-0x1c0,-0x13e)]=0x1;const _0x46b28b={};_0x46b28b[_0x492f5b(-0x1a4,-0x234)]=[segmentDrawVert];const _0x2288a3={};_0x2288a3['sources']=[segmentDrawFrag];const _0x31a04e={};_0x31a04e['enabled']=!![];const _0x11efd2={};_0x11efd2[_0x36534b(0x346,0x333)]=undefined,_0x11efd2['depthTest']=_0x31a04e,_0x11efd2[_0x36534b(0x34c,0x34a)]=!![];function _0x36534b(_0x4716d1,_0xc267cd){return _0x2c6bea(_0xc267cd-0x1e8,_0x4716d1);}const _0x4af987={};_0x4af987[_0x492f5b(-0x20c,-0x20a)]=0x0,_0x4af987['st']=0x1;const _0x1092aa={};_0x1092aa['defines']=['DISABLE_GL_POSITION_LOG_DEPTH'],_0x1092aa[_0x492f5b(-0x1a4,-0x220)]=[fullscreenVert];const _0x7e2786={};_0x7e2786[_0x492f5b(-0x163,-0x1a1)]=[_0x36534b(0x3f7,0x3b6)],_0x7e2786['sources']=[trailDrawFrag];const _0x37f97e={};_0x37f97e['position']=0x0,_0x37f97e['st']=0x1;const _0x14af9f={};_0x14af9f[_0x492f5b(-0x163,-0x112)]=[_0x492f5b(-0x1d5,-0x263)],_0x14af9f['sources']=[fullscreenVert];const _0x28cc28={};_0x28cc28['defines']=['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],_0x28cc28['sources']=[screenDrawFrag];const _0x1d2f6d={};_0x1d2f6d['enabled']=![];const _0xe39ce3={};function _0x492f5b(_0x6e71ce,_0x7e9983){return _0x2c6bea(_0x6e71ce- -0x373,_0x7e9983);}_0xe39ce3['enabled']=!![],this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x2e34f8,'geometry':this[_0x36534b(0x454,0x406)](_0x447564),'primitiveType':Cesium$4[_0x36534b(0x472,0x3e5)]['TRIANGLES'],'uniformMap':{'previousParticlesPosition':function(){function _0x2701ff(_0x68bf17,_0x1129ed){return _0x492f5b(_0x68bf17-0x33,_0x1129ed);}return _0x169208['particlesTextures'][_0x2701ff(-0x17b,-0x128)];},'currentParticlesPosition':function(){function _0x4eabdf(_0x32dae0,_0x363e3d){return _0x36534b(_0x363e3d,_0x32dae0-0x19c);}return _0x169208[_0x4eabdf(0x4ff,0x523)]['currentParticlesPosition'];},'postProcessingPosition':function(){function _0x36fb60(_0x41f077,_0x3c7cb3){return _0x492f5b(_0x3c7cb3-0x3,_0x41f077);}return _0x169208[_0x36fb60(-0x228,-0x1f5)]['postProcessingPosition'];},'particlesSpeed':function(){function _0x367d86(_0x3a7857,_0x51c154){return _0x492f5b(_0x3a7857-0x656,_0x51c154);}return _0x169208['particlesTextures'][_0x367d86(0x431,0x3ce)];},'colorTable':function(){return _0x72babf['textures']['colorTable'];},'aspect':function(){return _0x4695e3['drawingBufferWidth']/_0x4695e3['drawingBufferHeight'];},'H':function(){return _0x100ea3['H']['array'];},'hRange':function(){return new Cesium$4['Cartesian2'](_0x100ea3['H']['min'],_0x100ea3['H']['max']);},'uSpeedRange':function(){function _0x18d25c(_0x259e54,_0x39cc53){return _0x36534b(_0x39cc53,_0x259e54- -0x272);}return new Cesium$4[(_0x18d25c(0x11b,0x11a))](_0x100ea3['U']['min'],_0x100ea3['U']['max']);},'vSpeedRange':function(){function _0xfb5d99(_0x3c12f0,_0x52465d){return _0x492f5b(_0x3c12f0-0x12,_0x52465d);}return new Cesium$4['Cartesian2'](_0x100ea3['V'][_0xfb5d99(-0x14b,-0x1d9)],_0x100ea3['V']['max']);},'wSpeedRange':function(){function _0x20bb02(_0x5dbc61,_0x3f3239){return _0x36534b(_0x5dbc61,_0x3f3239- -0x10e);}return new Cesium$4['Cartesian2'](_0x100ea3['W'][_0x20bb02(0x2e7,0x2f0)],_0x100ea3['W']['max']);},'pixelSize':function(){return _0x1c7a69['pixelSize'];},'lineWidth':function(){function _0x366cdb(_0x26bee9,_0x105bf9){return _0x36534b(_0x26bee9,_0x105bf9-0x19d);}return _0x447564[_0x366cdb(0x5ff,0x5a5)];},'particleHeight':function(){function _0xbf66b6(_0x46c3b0,_0x9cdf1b){return _0x36534b(_0x9cdf1b,_0x46c3b0- -0x8c);}return _0x447564[_0xbf66b6(0x2fd,0x2a5)];},'colour':function(){return _0x72babf['colour'];}},'vertexShaderSource':new Cesium$4[(_0x492f5b(-0x25d,-0x2a2))](_0x46b28b),'fragmentShaderSource':new Cesium$4[(_0x36534b(0x32b,0x2fe))](_0x2288a3),'rawRenderState':Util[_0x36534b(0x3f4,0x3b5)](_0x11efd2),'framebuffer':this[_0x492f5b(-0x178,-0xfd)]['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x4af987,'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType'][_0x36534b(0x310,0x33f)],'uniformMap':{'segmentsColorTexture':function(){return _0x72babf['textures']['segmentsColor'];},'segmentsDepthTexture':function(){return _0x72babf['textures']['segmentsDepth'];},'currentTrailsColor':function(){function _0x4a1b41(_0x3f20fb,_0x2c0304){return _0x492f5b(_0x2c0304-0xe4,_0x3f20fb);}return _0x72babf['framebuffers'][_0x4a1b41(-0x174,-0x109)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){function _0x214806(_0x21b11e,_0x199f0a){return _0x492f5b(_0x199f0a-0x3c8,_0x21b11e);}return _0x72babf[_0x214806(0x1d3,0x250)]['currentTrails']['depthTexture'];},'fadeOpacity':function(){return _0x447564['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource'](_0x1092aa),'fragmentShaderSource':new Cesium$4[(_0x36534b(0x2a2,0x2fe))](_0x7e2786),'rawRenderState':Util[_0x36534b(0x41e,0x3b5)]({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction']['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){function _0x1e42c3(_0x11203a,_0x46751e){return _0x492f5b(_0x46751e-0x75a,_0x11203a);}if(_0x447564['dynamic']){const _0x454081=_0x72babf[_0x1e42c3(0x579,0x5e2)][_0xafa868(0x541,0x568)];_0x72babf[_0xafa868(0x607,0x5dd)][_0xafa868(0x578,0x568)]=_0x72babf['framebuffers'][_0x1e42c3(0x60b,0x5e9)],_0x72babf[_0x1e42c3(0x658,0x5e2)]['nextTrails']=_0x454081;}_0x72babf[_0xafa868(0x5b1,0x573)]['trails'][_0xafa868(0x59f,0x5ac)]['framebuffer']=_0x72babf['framebuffers'][_0xafa868(0x5d8,0x5e4)];function _0xafa868(_0x1ff19f,_0x94b94a){return _0x492f5b(_0x94b94a-0x755,_0x1ff19f);}_0x72babf['primitives'][_0xafa868(0x574,0x503)]['clearCommand'][_0xafa868(0x53b,0x516)]=_0x72babf[_0x1e42c3(0x5e8,0x5e2)]['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':_0x36534b(0x44d,0x3ec),'attributeLocations':_0x37f97e,'geometry':Util[_0x36534b(0x42e,0x3fc)](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){function _0x14c268(_0x2a2360,_0x35fdff){return _0x492f5b(_0x2a2360-0x6bf,_0x35fdff);}return _0x72babf['framebuffers'][_0x14c268(0x54e,0x58d)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){function _0xe15aa8(_0x291a15,_0x4d4409){return _0x492f5b(_0x4d4409- -0x1c,_0x291a15);}function _0x18e951(_0x19890a,_0x2c45d5){return _0x492f5b(_0x2c45d5-0x196,_0x19890a);}return _0x72babf[_0x18e951(0x2f,0x1e)][_0xe15aa8(-0x1eb,-0x18d)][_0x18e951(-0x9c,-0x74)];}},'vertexShaderSource':new Cesium$4[(_0x36534b(0x322,0x2fe))](_0x14af9f),'fragmentShaderSource':new Cesium$4[(_0x492f5b(-0x25d,-0x250))](_0x28cc28),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':_0x1d2f6d,'depthMask':!![],'blending':_0xe39ce3}),'framebuffer':undefined})};}}var CalculateSpeedShader='#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20W;\x20//\x20upward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0auniform\x20float\x20speedScaleFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20//\x20map\x20the\x20z-axis\x20value\x20to\x20the\x20nearest\x20bit\x20plane\x20to\x20ensure\x20that\x20the\x20result\x20is\x20an\x20integer\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205,\x207,\x208,\x209],\x20width\x20=\x202,\x20height\x20=\x202,\x20level\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x206\x207\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x202\x203\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0afloat\x20interpolateTexture(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x201.0f\x20*\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x201.0f\x20*\x20interval.y;\x0a\x0a\x20\x20float\x20lon0_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon1_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon0_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat1,\x20lev));\x0a\x20\x20float\x20lon1_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat1,\x20lev));\x0a\x0a\x20\x20float\x20lon_lat0\x20=\x20mix(lon0_lat0,\x20lon1_lat0,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat1\x20=\x20mix(lon0_lat1,\x20lon1_lat1,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat\x20=\x20mix(lon_lat0,\x20lon_lat1,\x20lat\x20-\x20lat0);\x0a\x20\x20return\x20lon_lat;\x0a}\x0a\x0avec3\x20linearInterpolation(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bilinear_interpolation\x0a\x20\x20float\x20u\x20=\x20interpolateTexture(U,\x20lonLatLev);\x0a\x20\x20float\x20v\x20=\x20interpolateTexture(V,\x20lonLatLev);\x0a\x20\x20float\x20w\x20=\x20interpolateTexture(W,\x20lonLatLev);\x0a\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec3\x20convertSpeedUnitToLonLat(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20float\x20w\x20=\x20speed.z;\x0a\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20return\x20windVectorInLonLatLev;\x0a}\x0a\x0avec3\x20calculateSpeedByRungeKutta2(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec3\x20y_n\x20=\x20lonLatLev;\x0a\x20\x20vec3\x20f_n\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec3\x20speed\x20=\x20h\x20*\x20linearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20getRange(vec2\x20range)\x20{\x0a\x20\x20float\x20x1\x20=\x200.0f\x20-\x20range.x;\x0a\x20\x20float\x20x2\x20=\x20range.y\x20-\x200.0f;\x0a\x20\x20if(x1\x20<\x200.0f\x20||\x20x2\x20<\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(abs(x1),\x20abs(x2));\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x20abs(max(x1,\x20x2)));\x0a\x20\x20}\x0a}\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20vec2\x20uRange\x20=\x20getRange(uSpeedRange);\x0a\x20\x20vec2\x20vRange\x20=\x20getRange(vSpeedRange);\x0a\x20\x20vec2\x20wRange\x20=\x20getRange(wSpeedRange);\x0a\x20\x20if(length(speed.xyz)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x200.0f;\x0a\x20\x20}\x0a\x0a\x20\x20percent.x\x20=\x20(abs(speed.x)\x20-\x20uRange.x)\x20/\x20(uRange.y\x20-\x20uRange.x);\x0a\x20\x20percent.y\x20=\x20(abs(speed.y)\x20-\x20vRange.x)\x20/\x20(vRange.y\x20-\x20vRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(abs(speed.z)\x20-\x20wRange.x)\x20/\x20(wRange.y\x20-\x20wRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speedOrigin\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLatLev);\x0a\x20\x20vec3\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLatLev,\x20speed);\x0a\x0a\x20\x20vec4\x20particleSpeed\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speed\x20/\x20speedScaleFactor));\x0a\x20\x20\x20\x20//\x20gl_FragColor\x20=\x20particleSpeed;\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a',PostProcessingPositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x0a\x0auniform\x20sampler2D\x20H;\x20//\x20particles\x20height\x20textures\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0auniform\x20vec2\x20viewerLonRange;\x0auniform\x20vec2\x20viewerLatRange;\x0a\x0aconst\x20float\x20randomCoefficient\x20=\x200.1f;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0aconst\x20float\x20dropRate\x20=\x200.1f;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0aconst\x20float\x20dropRateBump\x20=\x200.1f;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0avec4\x20getTextureValue(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20vec4\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D);\x0a\x20\x20return\x20result;\x0a}\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0abool\x20particleNoSpeed(vec3\x20particle)\x20{\x0a\x20\x20vec4\x20speed\x20=\x20getTextureValue(particlesSpeed,\x20particle);\x0a\x20\x20return\x20speed.r\x20==\x200.0f\x20&&\x20speed.g\x20==\x200.0f;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0f);\x0a\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20float\x20height\x20=\x20getTextureValue(H,\x20vec3(randomLon,\x20randomLat,\x20lev)).r;\x0a\x0a\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20height);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20viewerLatRange.x\x20||\x20particle.y\x20>\x20viewerLatRange.y\x20||\x20particle.x\x20<\x20viewerLonRange.x\x20||\x20particle.x\x20>\x20viewerLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f);\x0a\x20\x20}\x0a}\x0a',UpdatePositionShader=_0x5bac0c(0x4ac,0x4ed);const Cesium$3=mars3d__namespace[_0x5bac0c(0x385,0x409)];class ParticlesComputing{constructor(_0x11dd18,_0x4efb33,_0x544882,_0x32aa69){function _0x25e301(_0x335336,_0x50d781){return _0x5bac0c(_0x335336,_0x50d781- -0x1c4);}this['data']=_0x4efb33,this['createWindTextures'](_0x11dd18,_0x4efb33),this['createParticlesTextures'](_0x11dd18,_0x544882,_0x32aa69),this[_0x25e301(0x27a,0x300)](_0x4efb33,_0x544882,_0x32aa69);}['createWindTextures'](_0x5b244c,_0x3e3019){function _0x47bd89(_0x41fbe2,_0x40d0d9){return _0x5bac0c(_0x41fbe2,_0x40d0d9- -0x418);}var _0x58938a;function _0x12d010(_0x3ef443,_0x5848c9){return _0x2c6bea(_0x3ef443-0x40e,_0x5848c9);}const _0x59d3bb={'context':_0x5b244c,'width':_0x3e3019['dimensions']['lon'],'height':_0x3e3019[_0x47bd89(0x95,0x4e)]['lat']*(_0x3e3019[_0x47bd89(-0x5,0x4e)][_0x47bd89(0x5c,0xcb)]||0x1),'pixelFormat':Cesium$3[_0x12d010(0x572,0x5a0)]['RED'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x12d010(0x5e5,0x5d2))]({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x47bd89(0x155,0xe8)],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x47bd89(0x170,0xe8)]})};this['windTextures']={'U':Util['createTexture'](_0x59d3bb,_0x3e3019['U']['array']),'V':Util['createTexture'](_0x59d3bb,_0x3e3019['V']['array']),'W':Util['createTexture'](_0x59d3bb,((_0x58938a=_0x3e3019['W'])===null||_0x58938a===void 0x0?void 0x0:_0x58938a['array'])??_0x3e3019['U']['array']),'H':Util['createTexture'](_0x59d3bb,_0x3e3019['H'][_0x47bd89(0x79,0x14)])};}['createParticlesTextures'](_0x5e9243,_0x459f5f,_0xfbd424){const _0x302780={'context':_0x5e9243,'width':_0x459f5f['particlesTextureSize'],'height':_0x459f5f['particlesTextureSize'],'pixelFormat':Cesium$3[_0x55c53e(0x46d,0x473)]['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x4eabfa(0x4cc,0x539)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x236275=this['randomizeParticles'](_0x459f5f[_0x4eabfa(0x442,0x44f)],_0xfbd424),_0x560b60=new Float32Array(0x4*_0x459f5f['maxParticles'])[_0x4eabfa(0x4a5,0x4c3)](0x0);function _0x4eabfa(_0x5c6ff2,_0x4b27c4){return _0x2c6bea(_0x5c6ff2-0x2bd,_0x4b27c4);}function _0x55c53e(_0x1da45f,_0x1adda1){return _0x2c6bea(_0x1adda1-0x30f,_0x1da45f);}this['particlesTextures']={'previousParticlesPosition':Util['createTexture'](_0x302780,_0x236275),'currentParticlesPosition':Util[_0x55c53e(0x4ec,0x52a)](_0x302780,_0x236275),'nextParticlesPosition':Util['createTexture'](_0x302780,_0x236275),'postProcessingPosition':Util['createTexture'](_0x302780,_0x236275),'particlesSpeed':Util['createTexture'](_0x302780,_0x560b60)};}[_0x2c6bea(0x21d,0x1c1)](_0x1a7428,_0x228983){function _0x4ffc76(_0x9e65d,_0x4f8879){return _0x5bac0c(_0x4f8879,_0x9e65d- -0x1c2);}const _0x4ac55f=new Float32Array(0x4*_0x1a7428);for(let _0x59a7e4=0x0;_0x59a7e4<_0x1a7428;_0x59a7e4++){_0x4ac55f[0x4*_0x59a7e4]=Cesium$3[_0x4ed12f(0x188,0x1f1)]['randomBetween'](_0x228983['lonRange']['x'],_0x228983['lonRange']['y']),_0x4ac55f[0x4*_0x59a7e4+0x1]=Cesium$3['Math']['randomBetween'](_0x228983[_0x4ffc76(0x276,0x289)]['x'],_0x228983['latRange']['y']),_0x4ac55f[0x4*_0x59a7e4+0x2]=Cesium$3['Math']['randomBetween'](this['data']['lev'][_0x4ed12f(0x244,0x264)],this['data'][_0x4ffc76(0x321,0x34e)][_0x4ed12f(0x24f,0x1ce)]),_0x4ac55f[0x4*_0x59a7e4+0x3]=0x0;}function _0x4ed12f(_0x106717,_0x5ee3ae){return _0x5bac0c(_0x5ee3ae,_0x106717- -0x2c3);}return _0x4ac55f;}['getValidRange'](_0x43e987){const _0x1ff06b=[_0x43e987['dimensions'][_0x7d8ef0(0x5c,0x3)],_0x43e987['dimensions']['lat'],_0x43e987[_0x3b775c(0x535,0x50a)][_0x7d8ef0(0x120,0x9f)]],_0x80974b=[_0x43e987['lon']['min'],_0x43e987['lat'][_0x7d8ef0(0x141,0xc3)],_0x43e987[_0x3b775c(0x5b2,0x620)]['min']],_0x26b7e2=[_0x43e987['lon']['max'],_0x43e987['lat'][_0x7d8ef0(0xef,0xce)],_0x43e987[_0x3b775c(0x5b2,0x5ba)]['max']],_0x2b2e9b=[(_0x26b7e2[0x0]-_0x80974b[0x0])/(_0x1ff06b[0x0]-0x1),(_0x26b7e2[0x1]-_0x80974b[0x1])/(_0x1ff06b[0x1]-0x1),_0x1ff06b[0x2]>0x1?(_0x26b7e2[0x2]-_0x80974b[0x2])/(_0x1ff06b[0x2]-0x1):0x1],_0x3a6fe6=Math[_0x7d8ef0(0x46,-0x4)](Math['random']()*_0x43e987['U'][_0x3b775c(0x4fb,0x481)]['length']),_0x36b7ab=_0x3a6fe6%(_0x1ff06b[0x0]*_0x1ff06b[0x1]),_0x4a7baa=Math[_0x7d8ef0(0x54,-0x4)](_0x36b7ab/_0x1ff06b[0x0]);function _0x7d8ef0(_0x1075db,_0x361084){return _0x2c6bea(_0x361084- -0x153,_0x1075db);}const _0x2b79ce=_0x36b7ab%_0x1ff06b[0x0];function _0x3b775c(_0x158f93,_0x4a601a){return _0x2c6bea(_0x158f93-0x3c0,_0x4a601a);}const _0x2b852c=Cesium$3[_0x7d8ef0(-0x5c,0x7)]['randomBetween'](_0x80974b[0x0]+_0x2b79ce*_0x2b2e9b[0x0],_0x80974b[0x0]+(_0x2b79ce+0x1)*_0x2b2e9b[0x0]),_0x287568=Cesium$3['Math']['randomBetween'](_0x80974b[0x1]+(_0x4a7baa-0x1)*_0x2b2e9b[0x1],_0x80974b[0x1]+_0x4a7baa*_0x2b2e9b[0x1]),_0xd2aa0b=_0x43e987['H'][_0x3b775c(0x4fb,0x4bb)][_0x3a6fe6]||0x0;return[_0x2b852c,_0x287568,_0xd2aa0b];}[_0x2c6bea(0x232,0x27d)](){function _0x1541aa(_0x28a055,_0x34565a){return _0x5bac0c(_0x28a055,_0x34565a- -0x89);}function _0x20a1bc(_0x28a9f9,_0x4a9f1d){return _0x2c6bea(_0x28a9f9-0x300,_0x4a9f1d);}Object['keys'](this[_0x20a1bc(0x47b,0x483)])[_0x1541aa(0x4d5,0x479)](_0x427f5c=>{function _0x19ab69(_0x501a38,_0x1528b2){return _0x1541aa(_0x501a38,_0x1528b2- -0x1b);}this[_0x19ab69(0x357,0x3c8)][_0x427f5c]['destroy']();});}['createComputingPrimitives'](_0x1fcb23,_0x4006f8,_0x540937){function _0x1c3164(_0xcef12e,_0x484d99){return _0x2c6bea(_0xcef12e-0x209,_0x484d99);}const _0x4b9119=new Cesium$3['Cartesian3'](_0x1fcb23['dimensions']['lon'],_0x1fcb23['dimensions'][_0x1c3164(0x3e7,0x38b)],_0x1fcb23[_0x1c3164(0x37e,0x372)][_0x1c3164(0x3fb,0x414)]),_0x5ace32=new Cesium$3['Cartesian3'](_0x1fcb23[_0x34c9fa(0x352,0x38d)]['min'],_0x1fcb23['lat']['min'],_0x1fcb23[_0x34c9fa(0x3ee,0x3c7)]['min']),_0x40dd85=new Cesium$3[(_0x34c9fa(0x327,0x2fb))](_0x1fcb23['lon'][_0x1c3164(0x42a,0x4a3)],_0x1fcb23[_0x1c3164(0x3e7,0x432)]['max'],_0x1fcb23['lev'][_0x34c9fa(0x41d,0x3b4)]),_0x3e97bb=new Cesium$3['Cartesian3']((_0x40dd85['x']-_0x5ace32['x'])/(_0x4b9119['x']-0x1),(_0x40dd85['y']-_0x5ace32['y'])/(_0x4b9119['y']-0x1),_0x4b9119['z']>0x1?(_0x40dd85['z']-_0x5ace32['z'])/(_0x4b9119['z']-0x1):0x1);function _0x34c9fa(_0x250329,_0x15237a){return _0x5bac0c(_0x15237a,_0x250329- -0xf5);}const _0x246b12=new Cesium$3['Cartesian2'](_0x1fcb23[_0x1c3164(0x35f,0x3bb)][_0x34c9fa(0x412,0x42b)],_0x1fcb23['lon'][_0x1c3164(0x42a,0x48c)]),_0x3902e2=new Cesium$3['Cartesian2'](_0x1fcb23['lat']['min'],_0x1fcb23['lat']['max']),_0x12d8d5=new Cesium$3[(_0x34c9fa(0x3a1,0x36f))](_0x1fcb23['U']['min'],_0x1fcb23['U']['max']),_0x3ac416=new Cesium$3[(_0x34c9fa(0x3a1,0x426))](_0x1fcb23['V']['min'],_0x1fcb23['V']['max']),_0x115416=new Cesium$3['Cartesian2'](_0x1fcb23['W'][_0x1c3164(0x41f,0x3bc)],_0x1fcb23['W'][_0x34c9fa(0x41d,0x463)]),_0x3f2eb8=this,_0x5dc0e2={};_0x5dc0e2['U']=function(){return _0x3f2eb8['windTextures']['U'];},_0x5dc0e2['V']=function(){return _0x3f2eb8['windTextures']['V'];},_0x5dc0e2['W']=function(){function _0x2bf9fc(_0x39fe98,_0x194015){return _0x34c9fa(_0x39fe98- -0x4f3,_0x194015);}return _0x3f2eb8[_0x2bf9fc(-0x16d,-0x124)]['W'];},_0x5dc0e2['currentParticlesPosition']=function(){function _0x37c25c(_0x5e6c50,_0xcdc75d){return _0x34c9fa(_0xcdc75d-0x181,_0x5e6c50);}function _0x26a0c7(_0x5b2358,_0x28a607){return _0x34c9fa(_0x28a607-0xb7,_0x5b2358);}return _0x3f2eb8[_0x37c25c(0x55c,0x4f8)][_0x26a0c7(0x459,0x48e)];},_0x5dc0e2['dimension']=function(){return _0x4b9119;},_0x5dc0e2['minimum']=function(){return _0x5ace32;},_0x5dc0e2[_0x1c3164(0x3a3,0x396)]=function(){return _0x40dd85;},_0x5dc0e2[_0x1c3164(0x42b,0x412)]=function(){return _0x3e97bb;},_0x5dc0e2['uSpeedRange']=function(){return _0x12d8d5;},_0x5dc0e2[_0x34c9fa(0x3c0,0x411)]=function(){return _0x3ac416;},_0x5dc0e2[_0x34c9fa(0x3bb,0x3ee)]=function(){return _0x115416;},_0x5dc0e2['speedScaleFactor']=function(){function _0x1eaaaa(_0x4d1c0f,_0xedcdd8){return _0x1c3164(_0xedcdd8- -0x64,_0x4d1c0f);}return _0x540937[_0x1eaaaa(0x325,0x2d3)]*_0x4006f8['speedFactor'];};const _0x2eb904={};_0x2eb904['sources']=[CalculateSpeedShader];const _0x3f567c={};_0x3f567c[_0x34c9fa(0x3cb,0x3ac)]=[UpdatePositionShader];const _0x2c1168={};_0x2c1168['sources']=[PostProcessingPositionShader],this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':_0x5dc0e2,'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x2eb904),'outputTexture':this[_0x34c9fa(0x377,0x3b4)]['particlesSpeed'],'preExecute':function(){function _0x50d7e5(_0x2926aa,_0x461764){return _0x1c3164(_0x2926aa- -0x413,_0x461764);}if(_0x4006f8!==undefined&&_0x4006f8[_0x50d7e5(-0x9,-0x58)]){const _0x35e840=_0x3f2eb8['particlesTextures'][_0x335a01(-0x1b8,-0x127)];_0x3f2eb8['particlesTextures'][_0x50d7e5(-0x45,0x17)]=_0x3f2eb8['particlesTextures'][_0x50d7e5(-0x2f,-0x9b)],_0x3f2eb8[_0x335a01(-0x11b,-0x171)][_0x50d7e5(-0x2f,-0xae)]=_0x3f2eb8['particlesTextures'][_0x50d7e5(-0xb8,-0x89)],_0x3f2eb8[_0x50d7e5(-0x8f,-0x108)]['postProcessingPosition']=_0x35e840;}function _0x335a01(_0x25466f,_0x3d6549){return _0x34c9fa(_0x3d6549- -0x4e8,_0x25466f);}_0x3f2eb8['primitives']['calculateSpeed'][_0x335a01(-0xf9,-0x122)]['outputTexture']=_0x3f2eb8['particlesTextures']['particlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':_0x34c9fa(0x3ff,0x38f),'uniformMap':{'currentParticlesPosition':function(){function _0x138434(_0x5a8063,_0x5ab06a){return _0x1c3164(_0x5a8063- -0x14,_0x5ab06a);}function _0x2d4179(_0x1ca3a1,_0x5ec08c){return _0x34c9fa(_0x1ca3a1- -0x4db,_0x5ec08c);}return _0x3f2eb8[_0x2d4179(-0x164,-0x145)][_0x138434(0x3d0,0x42f)];},'particlesSpeed':function(){function _0x131f3f(_0x25f0df,_0x9c2198){return _0x1c3164(_0x9c2198- -0x449,_0x25f0df);}return _0x3f2eb8[_0x131f3f(-0xbc,-0xc5)]['particlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x1c3164(0x31f,0x399))](_0x3f567c),'outputTexture':this[_0x34c9fa(0x377,0x390)]['nextParticlesPosition'],'preExecute':function(){function _0x2cd76d(_0x41fea0,_0x56c20d){return _0x1c3164(_0x41fea0- -0x11e,_0x56c20d);}function _0x25be1d(_0x51334c,_0xfebf57){return _0x34c9fa(_0x51334c- -0x446,_0xfebf57);}_0x3f2eb8['primitives'][_0x2cd76d(0x20d,0x27c)]['commandToExecute'][_0x25be1d(-0xcc,-0x4d)]=_0x3f2eb8['particlesTextures']['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){function _0x3c220f(_0x789c80,_0x1bd68f){return _0x34c9fa(_0x789c80-0x72,_0x1bd68f);}return _0x3f2eb8['particlesTextures'][_0x3c220f(0x389,0x325)];},'particlesSpeed':function(){return _0x3f2eb8['particlesTextures']['particlesSpeed'];},'viewerLonRange':function(){return _0x540937['lonRange'];},'viewerLatRange':function(){function _0x3bae7d(_0x3ec620,_0x46ba1a){return _0x34c9fa(_0x46ba1a- -0x125,_0x3ec620);}return _0x540937[_0x3bae7d(0x1f8,0x21e)];},'lonRange':function(){return _0x246b12;},'latRange':function(){return _0x3902e2;},'dimension':function(){return _0x4b9119;},'minimum':function(){return _0x5ace32;},'maximum':function(){return _0x40dd85;},'interval':function(){return _0x3e97bb;},'H':function(){return _0x3f2eb8['windTextures']['H'];},'randomCoefficient':function(){const _0x1ac4e4=Math['random']();return _0x1ac4e4;},'dropRate':function(){return _0x4006f8['dropRate'];},'dropRateBump':function(){return _0x4006f8['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x2c1168),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){function _0x550823(_0x2fdda2,_0x3f5012){return _0x1c3164(_0x3f5012- -0x94,_0x2fdda2);}function _0x59f3b9(_0x3044c5,_0xcddb9b){return _0x1c3164(_0x3044c5- -0x495,_0xcddb9b);}_0x3f2eb8[_0x59f3b9(-0xfb,-0x119)]['postProcessingPosition']['commandToExecute']['outputTexture']=_0x3f2eb8[_0x59f3b9(-0x111,-0xad)]['postProcessingPosition'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x5ca970,_0x28df24,_0x22c529,_0x35ea97){this[_0x52c132(-0xa5,-0x68)]=_0x5ca970,_0x28df24={..._0x28df24};function _0xcd4812(_0x13932f,_0x13bb6c){return _0x5bac0c(_0x13932f,_0x13bb6c- -0x66e);}_0x28df24['udata']&&_0x28df24['vdata']&&(_0x28df24['dimensions']={},_0x28df24[_0xcd4812(-0x1db,-0x208)][_0xcd4812(-0x25f,-0x227)]=_0x28df24[_0x52c132(-0x14f,-0xfc)],_0x28df24['dimensions']['lat']=_0x28df24['rows'],_0x28df24['dimensions']['lev']=_0x28df24['lev']||0x1,_0x28df24['lon']={},_0x28df24['lon'][_0xcd4812(-0x16f,-0x167)]=_0x28df24[_0xcd4812(-0x20c,-0x1cc)],_0x28df24['lon'][_0x52c132(-0x55,-0x58)]=_0x28df24['xmax'],_0x28df24['lat']={},_0x28df24['lat'][_0x52c132(-0x60,0x0)]=_0x28df24['ymin'],_0x28df24[_0xcd4812(-0x156,-0x19f)][_0x52c132(-0x55,-0x4d)]=_0x28df24['ymax'],_0x28df24[_0x52c132(-0x84,-0x50)]={},_0x28df24[_0xcd4812(-0x1df,-0x18b)][_0xcd4812(-0x1ae,-0x167)]=_0x28df24[_0xcd4812(-0x209,-0x20c)]??0x1,_0x28df24['lev'][_0xcd4812(-0xf3,-0x15c)]=_0x28df24[_0x52c132(-0x102,-0xcc)]??0x1,_0x28df24['U']={},_0x28df24['U'][_0xcd4812(-0x23a,-0x242)]=new Float32Array(_0x28df24[_0x52c132(-0xe9,-0x130)]),_0x28df24['U'][_0xcd4812(-0x1d5,-0x167)]=_0x28df24['umin']??Math['min'](..._0x28df24[_0x52c132(-0xe9,-0x130)]),_0x28df24['U'][_0x52c132(-0x55,-0xe5)]=_0x28df24['umax']??Math['max'](..._0x28df24[_0x52c132(-0xe9,-0xb0)]),_0x28df24['V']={},_0x28df24['V'][_0xcd4812(-0x1d7,-0x242)]=new Float32Array(_0x28df24['vdata']),_0x28df24['V']['min']=_0x28df24['vmin']??Math[_0x52c132(-0x60,0x4)](..._0x28df24[_0xcd4812(-0x241,-0x1c6)]),_0x28df24['V']['max']=_0x28df24['vmax']??Math[_0xcd4812(-0x136,-0x15c)](..._0x28df24[_0xcd4812(-0x190,-0x1c6)]));!_0x28df24['W']&&(_0x28df24['W']={'array':new Float32Array(_0x28df24['U'][_0xcd4812(-0x22b,-0x242)]['length']),'min':0x0,'max':0x0});if(!_0x28df24['H']){var _0x5f173a;_0x28df24['H']={'array':new Float32Array(_0x28df24['U'][_0xcd4812(-0x288,-0x242)][_0x52c132(-0xfa,-0x89)]),'min':0x0,'max':0x0};if((_0x5f173a=_0x28df24[_0x52c132(-0x84,-0x6d)])!==null&&_0x5f173a!==void 0x0&&_0x5f173a[_0xcd4812(-0x1f6,-0x242)]){const {lon:_0x3df598,lat:_0x2e5916,lev:_0x5a5d3f}=_0x28df24['dimensions'];for(let _0x461552=0x0;_0x461552<_0x5a5d3f;_0x461552++){for(let _0x2e69a3=0x0;_0x2e69a3<_0x2e5916;_0x2e69a3++){for(let _0x24e3de=0x0;_0x24e3de<_0x3df598;_0x24e3de++){const _0x69491b=_0x461552*(_0x3df598*_0x2e5916)+_0x2e69a3*_0x3df598+_0x24e3de;_0x28df24['H']['array'][_0x69491b]=_0x28df24[_0x52c132(-0x84,-0xfc)]['array'][_0x461552];}}}_0x28df24['H'][_0x52c132(-0x60,-0x8c)]=Math['min'](..._0x28df24['lev']['array']),_0x28df24['H']['max']=Math['max'](..._0x28df24[_0x52c132(-0x84,-0x59)]['array']);}}this['data']=_0x28df24,this['options']=_0x22c529,this['viewerParameters']=_0x35ea97;function _0x52c132(_0x3a829e,_0x25111b){return _0x2c6bea(_0x3a829e- -0x276,_0x25111b);}this[_0x52c132(-0x106,-0x17d)]=new ParticlesComputing(this[_0x52c132(-0xa5,-0xff)],this[_0x52c132(-0x64,0x1b)],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this[_0x52c132(-0xa5,-0xa9)],this['data'],this[_0x52c132(-0x93,-0xfd)],this['viewerParameters'],this[_0x52c132(-0x106,-0x17c)]);}[_0x2c6bea(0x1c1,0x23d)](_0x55d247){this[_0x1cbc1e(0x26f,0x1f9)][_0x1cbc1e(0x331,0x35a)](),Object['keys'](this[_0x1bff46(0x558,0x4e6)]['windTextures'])[_0x1bff46(0x5f9,0x5e6)](_0x1f126e=>{function _0x48c589(_0x3084b3,_0xbcdf97){return _0x1cbc1e(_0xbcdf97- -0x3f3,_0x3084b3);}this[_0x48c589(-0x1cc,-0x184)]['windTextures'][_0x1f126e]['destroy']();}),this['particlesRendering'][_0x1bff46(0x540,0x4cc)][_0x1bff46(0x5be,0x55d)][_0x1cbc1e(0x236,0x1d0)](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x2c802b=>{function _0x455cab(_0x319d13,_0x195030){return _0x1bff46(_0x319d13- -0x352,_0x195030);}this['particlesRendering']['framebuffers'][_0x2c802b][_0x455cab(0x1cd,0x1e6)]();});function _0x1bff46(_0x16924c,_0x2f7231){return _0x5bac0c(_0x2f7231,_0x16924c-0xf7);}this[_0x1cbc1e(0x2d0,0x2f5)]=_0x55d247,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']);function _0x1cbc1e(_0x27d34e,_0xd1bdb6){return _0x5bac0c(_0xd1bdb6,_0x27d34e- -0x1f2);}this[_0x1bff46(0x557,0x4f9)]=new ParticlesRendering(this['context'],this[_0x1bff46(0x5fa,0x599)],this['options'],this[_0x1bff46(0x5f3,0x58e)],this['particlesComputing']);}['clearFramebuffers'](){function _0x3d5e19(_0x354b39,_0x493525){return _0x5bac0c(_0x493525,_0x354b39- -0x1ce);}const _0x1c49b7=new Cesium$2[(_0x3d5e19(0x295,0x23c))]({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2[_0x3d5e19(0x2ef,0x2fa)]['OPAQUE']});function _0x2715c2(_0x1c02a6,_0x2a1498){return _0x5bac0c(_0x1c02a6,_0x2a1498- -0x243);}Object['keys'](this['particlesRendering'][_0x3d5e19(0x31e,0x398)])['forEach'](_0x278c00=>{function _0x3f7c18(_0x15a3cf,_0x56dc57){return _0x3d5e19(_0x56dc57- -0x120,_0x15a3cf);}function _0x205b65(_0x3d605f,_0x19f9db){return _0x2715c2(_0x3d605f,_0x19f9db- -0x3b7);}_0x1c49b7['framebuffer']=this[_0x3f7c18(0x1a0,0x172)]['framebuffers'][_0x278c00],_0x1c49b7[_0x3f7c18(0x12a,0x19a)](this['context']);});}['refreshParticles'](_0x42b422,_0x1021f0=!![]){function _0x457606(_0x279270,_0x3b6447){return _0x2c6bea(_0x3b6447- -0x207,_0x279270);}_0x1021f0&&(this[_0x457606(-0x11f,-0xae)](),this['particlesComputing'][_0x457606(0xa,0x2b)](),this[_0x22e8ab(0x109,0x14f)]['createParticlesTextures'](this['context'],this[_0x457606(0x33,-0x24)],this['viewerParameters']));function _0x22e8ab(_0x560de7,_0x386501){return _0x2c6bea(_0x560de7- -0x67,_0x386501);}if(_0x42b422){var _0x2a3c98;const _0x411df9=this['particlesRendering'][_0x457606(0x64,0x17)](this['options']);this[_0x22e8ab(0x108,0x138)]['primitives']['segments'][_0x22e8ab(0xe5,0x148)]=_0x411df9;const _0xd734b7=Cesium$2['VertexArray'][_0x457606(-0x35,-0x59)]({'context':this[_0x22e8ab(0x16a,0x132)],'geometry':_0x411df9,'attributeLocations':this['particlesRendering']['primitives'][_0x457606(-0x38,-0x17)]['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0x2a3c98=this['particlesRendering'][_0x22e8ab(0x12a,0x1a1)])!==null&&_0x2a3c98!==void 0x0&&(_0x2a3c98=_0x2a3c98[_0x457606(-0x7e,-0x17)])!==null&&_0x2a3c98!==void 0x0&&_0x2a3c98['commandToExecute']&&(this['particlesRendering']['primitives']['segments']['commandToExecute'][_0x457606(-0x34,-0xb2)]=_0xd734b7);}}['setOptions'](_0x4089ff){let _0x5bd0e1=![];this[_0x1328c9(0x9e,0x21)]['maxParticles']!==_0x4089ff[_0x59706f(0x30a,0x391)]&&(_0x5bd0e1=!![]);Object['keys'](_0x4089ff)[_0x1328c9(0xcc,0x13c)](_0x2b139a=>{this['options'][_0x2b139a]=_0x4089ff[_0x2b139a];});function _0x1328c9(_0x28f329,_0x5097b9){return _0x2c6bea(_0x28f329- -0x145,_0x5097b9);}function _0x59706f(_0x11ca8e,_0x570c78){return _0x5bac0c(_0x11ca8e,_0x570c78- -0xe5);}this['refreshParticles'](_0x5bd0e1,_0x4089ff['dynamic']);}['applyViewerParameters'](_0x39a5fd){Object['keys'](_0x39a5fd)[_0x2e37bc(0x119,0xc4)](_0x33b093=>{this['viewerParameters'][_0x33b093]=_0x39a5fd[_0x33b093];});function _0x1b44ba(_0x1e257f,_0x3888ac){return _0x5bac0c(_0x1e257f,_0x3888ac- -0x619);}function _0x2e37bc(_0x31d48c,_0x270765){return _0x5bac0c(_0x31d48c,_0x270765- -0x43e);}this['refreshParticles'](![]),!this['options']['dynamic']&&(this['options']['dynamic']=!![],this[_0x2e37bc(0xd0,0x62)](this['options']),setTimeout(()=>{this['options']['dynamic']=![],this['setOptions'](this['options']);},0x1f4));}['destroy'](){function _0x323fa(_0x2cfa48,_0x49279f){return _0x5bac0c(_0x2cfa48,_0x49279f- -0x57e);}clearTimeout(this[_0x323fa(-0x6e,-0xca)]),this[_0x31ecab(0xa9,0xe4)][_0x31ecab(0x16b,0x1fa)](),Object[_0x31ecab(0x116,0x17d)](this[_0x31ecab(0xa9,0xad)]['windTextures'])['forEach'](_0xfafc5f=>{function _0x312f75(_0x373e6f,_0x16bdf7){return _0x31ecab(_0x373e6f- -0x5d,_0x16bdf7);}this['particlesComputing'][_0x312f75(0x66,0xf6)][_0xfafc5f]['destroy']();}),this['particlesRendering']['textures'][_0x31ecab(0x10f,0x177)][_0x323fa(-0xd7,-0x156)]();function _0x31ecab(_0x34c8c8,_0x33c324){return _0x2c6bea(_0x34c8c8- -0xc7,_0x33c324);}Object['keys'](this[_0x31ecab(0xa8,0xb4)]['framebuffers'])[_0x31ecab(0x14a,0x192)](_0x213f58=>{this['particlesRendering']['framebuffers'][_0x213f58]['destroy']();});for(const _0x8c6562 in this){delete this[_0x8c6562];}}}const Cesium$1=mars3d__namespace[_0x2c6bea(0x118,0x16f)],BaseLayer$1=mars3d__namespace['layer'][_0x2c6bea(0x190,0x19e)],_0x23d3b6={};_0x23d3b6['particlesNumber']=0x1000,_0x23d3b6['fixedHeight']=0x0,_0x23d3b6['fadeOpacity']=0.996;function _0x2c6bea(_0x5be79b,_0x61c73){return _0xa9df(_0x5be79b- -0x56,_0x61c73);}function _0xa9df(_0x1ed943,_0x6d03c5){const _0x1a658a=_0x1a65();return _0xa9df=function(_0xa9dfef,_0x45c19f){_0xa9dfef=_0xa9dfef-0x169;let _0xb16aaf=_0x1a658a[_0xa9dfef];return _0xb16aaf;},_0xa9df(_0x1ed943,_0x6d03c5);}_0x23d3b6['dropRate']=0.003;function _0x5bac0c(_0x3c4d1d,_0x31a096){return _0xa9df(_0x31a096-0x29b,_0x3c4d1d);}_0x23d3b6['dropRateBump']=0.01,_0x23d3b6['speedFactor']=0.5,_0x23d3b6[_0x2c6bea(0x220,0x21f)]=0x2,_0x23d3b6['colors']=['rgb(206,255,255)'],_0x23d3b6['dynamic']=!![];const DEF_OPTIONS=_0x23d3b6;class WindLayer extends BaseLayer$1{constructor(_0x57aab2={}){_0x57aab2={...DEF_OPTIONS,..._0x57aab2};function _0x4e5ab4(_0x6c5d0e,_0x5b60c7){return _0x5bac0c(_0x6c5d0e,_0x5b60c7- -0x31b);}super(_0x57aab2),this[_0x4e5ab4(0x1a0,0x149)](_0x57aab2);}get['layer'](){return this['primitives'];}get['data'](){return this['_data'];}set['data'](_0x83fb4f){this['setData'](_0x83fb4f);}get['colors'](){function _0x42ffa5(_0x1a8eab,_0x3147dc){return _0x2c6bea(_0x3147dc- -0x29d,_0x1a8eab);}return this[_0x42ffa5(-0xa7,-0xba)]['colors'];}set['colors'](_0x103760){function _0x53e93b(_0x5807d8,_0x11bc13){return _0x5bac0c(_0x11bc13,_0x5807d8- -0x640);}function _0x1f129a(_0x484cce,_0x454fe3){return _0x5bac0c(_0x454fe3,_0x484cce- -0x3db);}this[_0x1f129a(0xf9,0x146)]['colors']=_0x103760;if(this['particleSystem']){const _0x46ddce={};_0x46ddce['colors']=_0x103760,this['particleSystem'][_0x1f129a(0xc5,0xdc)](_0x46ddce);}this['resize']();}[_0x2c6bea(0x14a,0x185)](){}['_addedHook'](){function _0x22b770(_0x5b6331,_0x5088cf){return _0x2c6bea(_0x5088cf- -0x33e,_0x5b6331);}this['scene']=this['_map']['scene'],this['camera']=this[_0x22b770(-0x199,-0x212)][_0x4dab57(0x360,0x30c)],this['primitives']=new Cesium$1[(_0x22b770(-0x27f,-0x201))](),this['_map']['scene']['primitives']['add'](this[_0x4dab57(0x39d,0x3dc)]),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0,'lonDisplayRange':new Cesium$1[(_0x4dab57(0x3b1,0x435))](),'latDisplayRange':new Cesium$1['Cartesian2']()},this[_0x22b770(-0xbe,-0x138)]=new Cesium$1[(_0x4dab57(0x33d,0x2f8))](Cesium$1['Cartesian3']['ZERO'],0.99*0x615299),this['updateViewerParameters'](),window['addEventListener']('resize',this[_0x22b770(-0x191,-0x194)]['bind'](this),![]),this[_0x22b770(-0x111,-0x182)]=![],this['mouse_move']=![];function _0x4dab57(_0x35194d,_0x283e35){return _0x2c6bea(_0x35194d-0x20c,_0x283e35);}this['_map']['on'](mars3d__namespace['EventType'][_0x4dab57(0x3c4,0x412)],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x4dab57(0x416,0x442)],this['_onMouseDownEvent'],this),this[_0x22b770(-0x272,-0x212)]['on'](mars3d__namespace[_0x22b770(-0x1dd,-0x21b)][_0x22b770(-0x12a,-0x19a)],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x4dab57(0x3ee,0x40d)],this['_onMouseMoveEvent'],this),this['_data']&&this[_0x4dab57(0x33c,0x35f)](this[_0x4dab57(0x413,0x475)]);}['_removedHook'](){window['removeEventListener']('resize',this['resize']),this['_map']['off'](mars3d__namespace[_0x212aa1(-0x151,-0x16a)][_0x212aa1(-0xab,-0x76)],this[_0x4410a2(0x18d,0x122)],this);function _0x212aa1(_0x50230e,_0x14a893){return _0x2c6bea(_0x50230e- -0x274,_0x14a893);}this['_map'][_0x4410a2(0xf3,0xed)](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x212aa1(-0x148,-0x17c)]['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace[_0x4410a2(0x80,0xd)]['mouseUp'],this[_0x4410a2(0xc9,0x11a)],this),this['_map'][_0x4410a2(0xf3,0xd9)](mars3d__namespace['EventType'][_0x4410a2(0x13f,0x16a)],this['_onMouseMoveEvent'],this);function _0x4410a2(_0x1fa14b,_0x353a60){return _0x5bac0c(_0x353a60,_0x1fa14b- -0x394);}this[_0x4410a2(0xee,0x104)][_0x212aa1(-0xeb,-0xff)](),this['_map']['scene']['primitives'][_0x212aa1(-0x114,-0xcb)](this['primitives']);}['resize'](){if(!this[_0x50c7ea(0x4d3,0x45d)]||!this['particleSystem'])return;function _0x31414e(_0x458811,_0x45b9de){return _0x5bac0c(_0x458811,_0x45b9de- -0x14a);}function _0x50c7ea(_0xc95c99,_0x2d40b7){return _0x5bac0c(_0xc95c99,_0x2d40b7- -0xe);}this['primitives']['show']=![],this[_0x50c7ea(0x478,0x474)]['removeAll'](),this['_map']['once'](mars3d__namespace['EventType']['preRender'],this[_0x50c7ea(0x4f1,0x513)],this);}[_0x5bac0c(0x5ac,0x521)](_0x206342){this[_0x764aba(0x80,0xd5)]['canvasResize'](this['scene'][_0x7a2312(0x1b9,0x1cd)]);function _0x7a2312(_0x10234f,_0x4f4441){return _0x5bac0c(_0x10234f,_0x4f4441- -0x2f5);}this['addPrimitives']();function _0x764aba(_0x1370e4,_0x45caf2){return _0x2c6bea(_0x45caf2- -0x99,_0x1370e4);}this['primitives'][_0x7a2312(0x164,0x176)]=!![];}['_onMapWhellEvent'](_0x1878fa){function _0x2db820(_0x238a41,_0xbfbe45){return _0x5bac0c(_0xbfbe45,_0x238a41- -0x1c1);}function _0x4e9be3(_0x456054,_0x4daf22){return _0x5bac0c(_0x456054,_0x4daf22-0xe9);}clearTimeout(this[_0x2db820(0x32f,0x37c)]);if(!this[_0x4e9be3(0x500,0x554)]||!this['particleSystem'])return;this[_0x2db820(0x2c1,0x249)][_0x2db820(0x2aa,0x28f)]=![],this[_0x4e9be3(0x661,0x5d9)]=setTimeout(()=>{function _0x1f440e(_0x4ad2b,_0x11c064){return _0x4e9be3(_0x4ad2b,_0x11c064- -0x399);}if(!this['show'])return;this[_0x1f440e(0x27b,0x24e)]();},0xc8);}['_onMouseDownEvent'](_0x55980c){this['mouse_down']=!![];}['_onMouseMoveEvent'](_0x5850c2){if(!this['show']||!this['particleSystem'])return;function _0x3f752a(_0x144c44,_0x53a213){return _0x5bac0c(_0x144c44,_0x53a213- -0x4c1);}function _0x2cbe19(_0x5e2619,_0x519036){return _0x2c6bea(_0x519036- -0x335,_0x5e2619);}this['mouse_down']&&(this[_0x2cbe19(-0x1ac,-0x1a4)]['show']=![],this[_0x3f752a(-0xbe,-0x4f)]=!![]);}[_0x2c6bea(0x16c,0xfa)](_0x21dfd){function _0x51d11b(_0x45274f,_0x2f11e5){return _0x2c6bea(_0x2f11e5- -0x38b,_0x45274f);}if(!this['show']||!this[_0x51d11b(-0x1cc,-0x21d)])return;function _0x3b4637(_0x202b83,_0x1c231f){return _0x5bac0c(_0x1c231f,_0x202b83-0x33);}this['mouse_down']&&this['mouse_move']&&this[_0x3b4637(0x531,0x4bd)](),this[_0x51d11b(-0x236,-0x1fa)][_0x3b4637(0x49e,0x49f)]=!![],this['mouse_down']=![],this[_0x3b4637(0x4a5,0x514)]=![];}['redraw'](){if(!this['_map']||!this['show'])return;function _0x228468(_0x195693,_0x58cd3f){return _0x5bac0c(_0x58cd3f,_0x195693- -0x47e);}function _0x21349f(_0x10c071,_0x1a84c7){return _0x5bac0c(_0x10c071,_0x1a84c7- -0x4a8);}this[_0x228468(-0x20,-0x5c)](),this['particleSystem']['applyViewerParameters'](this['viewerParameters']),this[_0x21349f(0x13,-0x26)]['show']=!![];}[_0x2c6bea(0x130,0x15b)](_0x3d3a5a){this['_data']=_0x3d3a5a;function _0x387db8(_0x32308c,_0x5446fc){return _0x2c6bea(_0x32308c-0x382,_0x5446fc);}function _0x1e8f40(_0x3906e8,_0x3cee1b){return _0x2c6bea(_0x3906e8-0x10e,_0x3cee1b);}this['particleSystem']&&this[_0x1e8f40(0x27c,0x242)]['destroy'](),this['particleSystem']=new ParticleSystem(this['scene']['context'],_0x3d3a5a,this['getOptions'](),this[_0x387db8(0x58d,0x514)]),this['addPrimitives']();}[_0x5bac0c(0x462,0x464)](_0x1b78b4,_0x2a8245){if(_0x1b78b4)for(const _0x56d583 in _0x1b78b4){this[_0x56d583]=_0x1b78b4[_0x56d583];}this['particleSystem']&&this['particleSystem']['setOptions'](this['getOptions']());}[_0x2c6bea(0x1ee,0x185)](){const _0x171144=Math['ceil'](Math['sqrt'](this[_0x4b462e(0x294,0x21d)]));this['particlesNumber']=_0x171144*_0x171144;const _0x25f694={};_0x25f694['particlesTextureSize']=_0x171144,_0x25f694[_0x4b462e(0x2ff,0x2cf)]=this['particlesNumber'];function _0x4b462e(_0x54b678,_0xd2ab32){return _0x5bac0c(_0xd2ab32,_0x54b678- -0x177);}function _0x3f4393(_0x47e097,_0x2f9c37){return _0x2c6bea(_0x2f9c37-0xea,_0x47e097);}return _0x25f694[_0x4b462e(0x30e,0x2be)]=this['colors'],_0x25f694[_0x3f4393(0x2b0,0x28b)]=this['fixedHeight'],_0x25f694['fadeOpacity']=this['fadeOpacity'],_0x25f694['dropRate']=this[_0x4b462e(0x29e,0x258)],_0x25f694['dropRateBump']=this['dropRateBump'],_0x25f694[_0x4b462e(0x2cb,0x313)]=this['speedFactor'],_0x25f694[_0x3f4393(0x2c9,0x30a)]=this['lineWidth'],_0x25f694['dynamic']=this[_0x4b462e(0x37b,0x315)],_0x25f694;}['addPrimitives'](){this[_0x4f2f19(-0x198,-0x123)][_0x4f2f19(-0x77,-0xc8)](this['particleSystem']['particlesComputing']['primitives']['calculateSpeed']),this['primitives']['add'](this[_0x4f2f19(-0x18e,-0x146)]['particlesComputing'][_0x507f5d(-0x16f,-0x129)]['updatePosition']),this['primitives']['add'](this['particleSystem']['particlesComputing'][_0x507f5d(-0x112,-0x129)]['postProcessingPosition']);function _0x4f2f19(_0x403ea3,_0x109191){return _0x5bac0c(_0x403ea3,_0x109191- -0x5a5);}function _0x507f5d(_0x52adad,_0x581987){return _0x2c6bea(_0x581987- -0x2ba,_0x52adad);}this[_0x507f5d(-0x181,-0x129)]['add'](this['particleSystem']['particlesRendering']['primitives']['segments']),this[_0x4f2f19(-0x195,-0x123)][_0x507f5d(-0x137,-0xce)](this['particleSystem']['particlesRendering']['primitives'][_0x4f2f19(-0x17f,-0x193)]),this[_0x507f5d(-0xcf,-0x129)][_0x507f5d(-0xc2,-0xce)](this['particleSystem']['particlesRendering']['primitives']['screen']);}['updateViewerParameters'](){let _0xe6be5b=this['camera']['computeViewRectangle'](this[_0x4d2f7d(0x99,0x110)]['globe']['ellipsoid']);function _0x4d2f7d(_0x401b83,_0x12ae90){return _0x5bac0c(_0x401b83,_0x12ae90- -0x349);}function _0x4bc0f5(_0x14b448,_0xeb0742){return _0x5bac0c(_0xeb0742,_0x14b448- -0x59a);}if(!_0xe6be5b){const _0xd3d38d=this['_map']['getExtent']();_0xe6be5b=Cesium$1[_0x4d2f7d(0x20e,0x181)][_0x4bc0f5(-0x163,-0x183)](_0xd3d38d['xmin'],_0xd3d38d['ymin'],_0xd3d38d['xmax'],_0xd3d38d['ymax']);}const _0x25a1a9=Util[_0x4d2f7d(0x121,0xe6)](_0xe6be5b);this[_0x4d2f7d(0x191,0x1af)]?(this[_0x4d2f7d(0x22a,0x1b3)]['lonRange']['x']=Math['max'](_0x25a1a9['lon']['min'],this[_0x4d2f7d(0x22e,0x1af)]['xmin']),this['viewerParameters']['lonRange']['y']=Math['min'](_0x25a1a9[_0x4d2f7d(0xca,0xfe)][_0x4bc0f5(-0x88,-0x4)],this[_0x4d2f7d(0x185,0x1af)][_0x4d2f7d(0x74,0xe1)]),this['viewerParameters']['latRange']['x']=Math[_0x4bc0f5(-0x88,-0x112)](_0x25a1a9['lat']['min'],this['_data'][_0x4bc0f5(-0xbe,-0xf6)]),this['viewerParameters']['latRange']['y']=Math['min'](_0x25a1a9[_0x4d2f7d(0x1dc,0x186)]['max'],this['_data'][_0x4bc0f5(-0x101,-0x90)])):(this[_0x4d2f7d(0x1c7,0x1b3)]['lonRange']['x']=_0x25a1a9['lon']['min'],this[_0x4bc0f5(-0x9e,-0xaa)][_0x4d2f7d(0x23c,0x1bb)]['y']=_0x25a1a9[_0x4d2f7d(0x10f,0xfe)][_0x4bc0f5(-0x88,-0xd8)],this[_0x4bc0f5(-0x9e,-0xb3)]['latRange']['x']=_0x25a1a9[_0x4d2f7d(0x160,0x186)][_0x4bc0f5(-0x93,-0x74)],this['viewerParameters']['latRange']['y']=_0x25a1a9['lat']['max']);const _0x2c81e4=this[_0x4d2f7d(0xf2,0xfc)][_0x4bc0f5(-0x116,-0x18b)](this[_0x4d2f7d(0x16c,0x1ae)],this['scene'][_0x4bc0f5(-0xc3,-0xa3)],this[_0x4bc0f5(-0x141,-0xf3)]['drawingBufferHeight']);_0x2c81e4>0x0&&(this[_0x4bc0f5(-0x9e,-0x4d)]['pixelSize']=_0x2c81e4);}}mars3d__namespace[_0x5bac0c(0x41c,0x456)]['register']('wind',WindLayer),mars3d__namespace[_0x5bac0c(0x501,0x520)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){function _0x5c69a6(_0xeadd0b,_0x1f6b0b){return _0x5bac0c(_0xeadd0b,_0x1f6b0b-0x6d);}this['lng']=null,this[_0x5808a0(0x5cb,0x60f)]=null,this['tlng']=null,this['tlat']=null,this['age']=null;function _0x5808a0(_0x453601,_0x502404){return _0x5bac0c(_0x502404,_0x453601-0xfc);}this[_0x5808a0(0x5ed,0x5af)]=null;}[_0x2c6bea(0x137,0x147)](){for(const _0x3f9b49 in this){delete this[_0x3f9b49];}}}class CanvasWindField{constructor(_0xff9c1d){this['setOptions'](_0xff9c1d);}get[_0x2c6bea(0x128,0x167)](){function _0x10c27e(_0x9dfc61,_0x2257da){return _0x2c6bea(_0x2257da- -0x238,_0x9dfc61);}return this[_0x10c27e(-0xbc,-0xdb)];}set['speedRate'](_0x1da6ed){function _0x5e5692(_0x5d4eff,_0x17fb27){return _0x2c6bea(_0x5d4eff-0x32c,_0x17fb27);}function _0x37ca1f(_0x3041b3,_0x190244){return _0x2c6bea(_0x3041b3-0x2b5,_0x190244);}this['_speedRate']=(0x64-(_0x1da6ed>0x63?0x63:_0x1da6ed))*0x64,this[_0x37ca1f(0x477,0x403)]=[(this['xmax']-this[_0x37ca1f(0x466,0x4cb)])/this[_0x5e5692(0x489,0x473)],(this[_0x37ca1f(0x45d,0x3d8)]-this['ymin'])/this['_speedRate']];}get[_0x2c6bea(0x11e,0xd1)](){return this['_maxAge'];}set['maxAge'](_0x5f0bca){this['_maxAge']=_0x5f0bca;}[_0x2c6bea(0x1af,0x17b)](_0x20b090){function _0x29906a(_0x1bc9f8,_0x380aaa){return _0x5bac0c(_0x380aaa,_0x1bc9f8- -0x13e);}this['options']=_0x20b090,this['maxAge']=_0x20b090[_0x29906a(0x2d1,0x282)]||0x78,this['speedRate']=_0x20b090['speedRate']||0x32,this['particles']=[];const _0x3491de=_0x20b090['particlesNumber']||0x1000;for(let _0x3e69db=0x0;_0x3e69db<_0x3491de;_0x3e69db++){const _0x202b8a=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x202b8a);}}['setDate'](_0x337c5e){this['rows']=_0x337c5e[_0x2bedb9(0x389,0x386)],this['cols']=_0x337c5e[_0x1620c1(0x3ed,0x3f1)],this[_0x2bedb9(0x32c,0x3b5)]=_0x337c5e[_0x2bedb9(0x32c,0x2e1)],this[_0x1620c1(0x393,0x403)]=_0x337c5e[_0x1620c1(0x410,0x403)],this['ymin']=_0x337c5e['ymin'],this['ymax']=_0x337c5e['ymax'];function _0x2bedb9(_0x15f4f9,_0x3861d8){return _0x2c6bea(_0x15f4f9-0x17b,_0x3861d8);}this[_0x1620c1(0x4d3,0x4f6)]=[];const _0x4761ee=_0x337c5e['udata'],_0x8d2306=_0x337c5e['vdata'];let _0x324305=![];_0x4761ee['length']===this['rows']&&_0x4761ee[0x0]['length']===this[_0x2bedb9(0x2a2,0x27c)]&&(_0x324305=!![]);function _0x1620c1(_0x3d5d5e,_0x5abb80){return _0x5bac0c(_0x3d5d5e,_0x5abb80- -0x27);}let _0x214163=0x0,_0x176c15=null,_0x122604=null;for(let _0xa3fff3=0x0;_0xa3fff3<this['rows'];_0xa3fff3++){_0x176c15=[];for(let _0x19434e=0x0;_0x19434e<this[_0x1620c1(0x38e,0x3f1)];_0x19434e++,_0x214163++){_0x324305?_0x122604=this[_0x1620c1(0x41c,0x41a)](_0x4761ee[_0xa3fff3][_0x19434e],_0x8d2306[_0xa3fff3][_0x19434e]):_0x122604=this['_calcUV'](_0x4761ee[_0x214163],_0x8d2306[_0x214163]),_0x176c15['push'](_0x122604);}this[_0x1620c1(0x51c,0x4f6)]['push'](_0x176c15);}this['options'][_0x2bedb9(0x34f,0x352)]&&this[_0x1620c1(0x47a,0x4f6)][_0x2bedb9(0x33b,0x392)]();}['clear'](){delete this[_0x231200(0x37d,0x32c)],delete this['cols'],delete this[_0xac25f7(-0x199,-0x10d)],delete this['xmax'],delete this['ymin'],delete this['ymax'];function _0x231200(_0x1fcd0b,_0x4d6d55){return _0x5bac0c(_0x4d6d55,_0x1fcd0b- -0x182);}function _0xac25f7(_0x5c5ef1,_0x5bd0b7){return _0x2c6bea(_0x5bd0b7- -0x2be,_0x5c5ef1);}delete this[_0xac25f7(-0xa3,-0x92)],delete this['particles'];}['toGridXY'](_0x422316,_0x331dbf){function _0x2b58cb(_0x441d3e,_0x408448){return _0x5bac0c(_0x408448,_0x441d3e- -0x55d);}function _0x1e47f6(_0x558cb9,_0x1d5bea){return _0x2c6bea(_0x558cb9- -0x294,_0x1d5bea);}const _0x5e17c6=(_0x422316-this['xmin'])/(this['xmax']-this[_0x2b58cb(-0xbb,-0xd1)])*(this[_0x2b58cb(-0x145,-0x1a0)]-0x1),_0x173ea2=(this['ymax']-_0x331dbf)/(this[_0x2b58cb(-0xc4,-0x3a)]-this['ymin'])*(this[_0x1e47f6(-0x86,-0x96)]-0x1);return[_0x5e17c6,_0x173ea2];}['getUVByXY'](_0x348009,_0xed7483){if(_0x348009<0x0||_0x348009>=this['cols']||_0xed7483>=this[_0x48fa62(0x267,0x2d6)])return[0x0,0x0,0x0];function _0x48fa62(_0x470991,_0x5b5fb5){return _0x2c6bea(_0x470991-0x59,_0x5b5fb5);}const _0xfae7ce=Math[_0x545f4c(0x36e,0x2f3)](_0x348009),_0x47e86e=Math[_0x545f4c(0x2ec,0x2f3)](_0xed7483);if(_0xfae7ce===_0x348009&&_0x47e86e===_0xed7483)return this['grid'][_0xed7483][_0x348009];const _0x341c68=_0xfae7ce+0x1;function _0x545f4c(_0xfd55f9,_0x5750c2){return _0x2c6bea(_0x5750c2-0x1a4,_0xfd55f9);}const _0x47c6eb=_0x47e86e+0x1,_0x105957=this['getUVByXY'](_0xfae7ce,_0x47e86e),_0x390803=this['getUVByXY'](_0x341c68,_0x47e86e),_0x540f80=this[_0x545f4c(0x2f5,0x36b)](_0xfae7ce,_0x47c6eb),_0x35c0ba=this[_0x48fa62(0x220,0x203)](_0x341c68,_0x47c6eb);let _0x202624=null;try{_0x202624=this['_bilinearInterpolation'](_0x348009-_0xfae7ce,_0xed7483-_0x47e86e,_0x105957,_0x390803,_0x540f80,_0x35c0ba);}catch(_0x5b3b97){console['log'](_0x348009,_0xed7483);}return _0x202624;}[_0x5bac0c(0x4f7,0x470)](_0x57ecf0,_0x2bff62,_0x31f532,_0xdbb407,_0x58154a,_0x6a02a2){const _0x37b83e=0x1-_0x57ecf0,_0x1415ef=0x1-_0x2bff62,_0x451730=_0x37b83e*_0x1415ef,_0x3d9eec=_0x57ecf0*_0x1415ef,_0x46d1e=_0x37b83e*_0x2bff62,_0x10d84c=_0x57ecf0*_0x2bff62,_0x59b25b=_0x31f532[0x0]*_0x451730+_0xdbb407[0x0]*_0x3d9eec+_0x58154a[0x0]*_0x46d1e+_0x6a02a2[0x0]*_0x10d84c,_0x33590f=_0x31f532[0x1]*_0x451730+_0xdbb407[0x1]*_0x3d9eec+_0x58154a[0x1]*_0x46d1e+_0x6a02a2[0x1]*_0x10d84c;return this['_calcUV'](_0x59b25b,_0x33590f);}['_calcUV'](_0x2efed8,_0x1abd3e){function _0x411027(_0x4edd50,_0x12b5e8){return _0x2c6bea(_0x4edd50- -0x1ca,_0x12b5e8);}return[+_0x2efed8,+_0x1abd3e,Math[_0x411027(-0x97,-0x113)](_0x2efed8*_0x2efed8+_0x1abd3e*_0x1abd3e)];}[_0x5bac0c(0x498,0x4e2)](_0x2362f5,_0x5aea71){if(!this['isInExtent'](_0x2362f5,_0x5aea71))return null;const _0x7c3d5f=this[_0x14f3c3(0x27,-0x5a)](_0x2362f5,_0x5aea71),_0x2a8fc9=this['getUVByXY'](_0x7c3d5f[0x0],_0x7c3d5f[0x1]);function _0x14f3c3(_0x340b4d,_0x11ce7e){return _0x2c6bea(_0x11ce7e- -0x1d3,_0x340b4d);}return _0x2a8fc9;}['isInExtent'](_0x13cc95,_0x929d6b){function _0x7772ef(_0x173087,_0x1016b8){return _0x2c6bea(_0x173087- -0x227,_0x1016b8);}function _0x2885f3(_0x26f2ae,_0x45ec1f){return _0x2c6bea(_0x45ec1f- -0x7d,_0x26f2ae);}return _0x13cc95>=this['xmin']&&_0x13cc95<=this['xmax']&&_0x929d6b>=this[_0x7772ef(-0x3c,-0x1c)]&&_0x929d6b<=this[_0x2885f3(0x171,0x12b)]?!![]:![];}['getRandomLatLng'](){function _0x5c58f7(_0xb9ff02,_0x21f92e){return _0x2c6bea(_0x21f92e-0x275,_0xb9ff02);}const _0x1401f2=fRandomByfloat(this[_0x5c58f7(0x3bc,0x426)],this['xmax']),_0x2ec7e5=fRandomByfloat(this['ymin'],this['ymax']);function _0x1f6c7c(_0x5165a9,_0x307ac2){return _0x2c6bea(_0x307ac2-0x39,_0x5165a9);}const _0x402105={};return _0x402105[_0x1f6c7c(0x222,0x217)]=_0x2ec7e5,_0x402105[_0x5c58f7(0x3c3,0x3b5)]=_0x1401f2,_0x402105;}['getParticles'](){function _0x56123c(_0x84a90b,_0x450f75){return _0x2c6bea(_0x84a90b-0x3c0,_0x450f75);}let _0x4b4945,_0x5a5031,_0x274fb7;for(let _0x121f25=0x0,_0x42dd33=this['particles'][_0x304559(0x3d5,0x42f)];_0x121f25<_0x42dd33;_0x121f25++){let _0x5e65ec=this['particles'][_0x121f25];_0x5e65ec['age']<=0x0&&(_0x5e65ec=this['_randomParticle'](_0x5e65ec));if(_0x5e65ec['age']>0x0){const _0x102849=_0x5e65ec[_0x304559(0x406,0x3b4)],_0xe3939b=_0x5e65ec['tlat'];_0x274fb7=this['getUVByPoint'](_0x102849,_0xe3939b),_0x274fb7?(_0x4b4945=_0x102849+this[_0x56123c(0x582,0x5ee)][0x0]*_0x274fb7[0x0],_0x5a5031=_0xe3939b+this['_calc_speedRate'][0x1]*_0x274fb7[0x1],_0x5e65ec[_0x304559(0x399,0x3c5)]=_0x102849,_0x5e65ec[_0x304559(0x437,0x3a8)]=_0xe3939b,_0x5e65ec['tlng']=_0x4b4945,_0x5e65ec['tlat']=_0x5a5031,_0x5e65ec['speed']=_0x274fb7[0x2],_0x5e65ec[_0x304559(0x38b,0x3ce)]--):_0x5e65ec['age']=0x0;}}function _0x304559(_0x16cfd7,_0x537fe7){return _0x5bac0c(_0x537fe7,_0x16cfd7- -0x98);}return this['particles'];}['_randomParticle'](_0xe8d888){function _0x2152ac(_0x5d7735,_0x488d36){return _0x5bac0c(_0x488d36,_0x5d7735- -0x5e5);}let _0x23cbc2,_0x56f32f;for(let _0x4821be=0x0;_0x4821be<0x1e;_0x4821be++){_0x23cbc2=this[_0x46b572(0x1d9,0x256)](),_0x56f32f=this['getUVByPoint'](_0x23cbc2['lng'],_0x23cbc2[_0x2152ac(-0x116,-0xf9)]);if(_0x56f32f&&_0x56f32f[0x2]>0x0)break;}if(!_0x56f32f)return _0xe8d888;const _0x426a39=_0x23cbc2['lng']+this['_calc_speedRate'][0x0]*_0x56f32f[0x0],_0x414862=_0x23cbc2['lat']+this['_calc_speedRate'][0x1]*_0x56f32f[0x1];_0xe8d888[_0x2152ac(-0x1b4,-0x129)]=_0x23cbc2[_0x46b572(0x1e0,0x23b)],_0xe8d888[_0x46b572(0x2fc,0x2d9)]=_0x23cbc2[_0x46b572(0x278,0x2d9)],_0xe8d888[_0x2152ac(-0x147,-0x140)]=_0x426a39,_0xe8d888[_0x2152ac(-0x159,-0x1d9)]=_0x414862;function _0x46b572(_0x3e4083,_0x595889){return _0x5bac0c(_0x3e4083,_0x595889- -0x1f6);}return _0xe8d888['age']=Math['round'](Math[_0x46b572(0x288,0x265)]()*this['maxAge']),_0xe8d888['speed']=_0x56f32f[0x2],_0xe8d888;}['destroy'](){for(const _0x1c34e5 in this){delete this[_0x1c34e5];}}}function fRandomByfloat(_0x14e886,_0x39bf29){function _0xed2994(_0x5eac6e,_0x4ed29e){return _0x5bac0c(_0x5eac6e,_0x4ed29e- -0x4d2);}return _0x14e886+Math[_0xed2994(-0x1b,-0x77)]()*(_0x39bf29-_0x14e886);}function _0x1a65(){const _0x2ec549=['Compute','Draw','Framebuffer','globeBoundingSphere','_data','windData','pointerEvents','mouseDown','viewerParameters','getU','redraw','rows','NEAREST','defines','forEach','data','lonRange','getFullscreenQuad','_createCanvas','min','OPAQUE','windField','pixelDatatype','pointer-events','createTexture','_tomap','randomizeParticles','createSegmentsGeometry','TextureMinificationFilter','lineWidth','max','interval','__esModule','#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20trailsColor;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a','value','toWindowCoordinates','toRadians','push','visibility','mars3d-canvasWind','setDate','grid','#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0aout\x20vec4\x20fragColor;\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0f\x20*\x20trailsColor)\x20/\x20255.0f;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20if(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20pointsColor;\x0a\x20\x20}\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20trailsColor;\x0a\x20\x20}\x0a\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a','globalCompositeOperation','layer','_onMap_preRenderEvent','_updateIng2','destroyParticlesTextures','_removedHook','_updateIng','ColorRamp','28rJTGRl','ShaderSource','drawingBufferHeight','Cesium','persists','particlesNumber','nextParticlesPosition','_onMouseMoveEvent','nextTrailsDepth','maxAge','uniformMap','lineTo','trails','updatePosition','EventType','dropRate','toDegrees','blending','cols','speedRate','frameTime','175045hLnKwp','Cartesian3','_map','4095480YOlXGx','pixelSize','default','setData','BoundingSphere','age','sqrt','framebuffer','now','_canrefresh','destroy','commandType','xmax','blue','array','visible','PrimitiveCollection','viewRectangleToLonLatRange','positionWC','lng','onmessage','hidden','canvasWind','SceneMode','fromCssColorString','fromDegrees','latRange','requestAnimationFrame','stroke','_mountedHook','viewport','geometry','preExecute','particlesSpeed','floor','_calcUV','speedFactor','postProcessingPosition','createRenderingTextures','camera','vertexArray','lon','TRIANGLES','textures','clearFramebuffers','Math','getRandomLatLng','height','_speedRate','32569493LnayjX','canvasContext','remove','Color','depthMask','get','PixelFormat','LayerUtil','_onMapWhellEvent','position','scene','depthTexture','random','particlesTextureSize','_onMouseUpEvent','updateViewerParameters','particleSystem','particlesRendering','particlesComputing','levmin','ClearCommand','_setOptionsHook','levmax','dimensions','canvasHeight','#ffffff','EllipsoidalOccluder','toGridXY','show','particlesTextures','length','GeometryAttributes','outputTexture','_bilinearInterpolation','_animateFrame','mouse_move','rawRenderState','DEPTH_COMPONENT','zIndex','maxParticles','currentTrails','getOwnPropertyDescriptor','_colorRamp','removeAll','windTextures','steps','strokeStyle','udata','SCENE3D','GeometryAttribute','BaseLayer','primitives','primitiveType','getPixelSize','colors','willReadFrequently','off','execute','getColor','auto','maximum','tlat','9OCHoBP','24LZHiam','DISABLE_GL_POSITION_LOG_DEPTH','style','DrawCommand','particleHeight','727277HTaMLY','clientWidth','mouseUp','Cartesian2','globalAlpha','type','ymax','Matrix4','resize','nextTrailsColor','defined','tlng','fromGeometry','setOptions','342223qqFAXE','xmin','arrayBufferView','normal','TWO_PI','clearCommand','canvas','vdata','wheel','container','width','vertexShaderSource','mouse_down','pixelFormat','PixelDatatype','wSpeedRange','reverse','canvasResize','_calc_speedRate','canrefresh','vSpeedRange','previousParticlesPosition','fragmentShaderSource','getUVByXY','PI_OVER_THREE','preRender','commandToExecute','280ugCbRu','Pass','createRawRenderState','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','sources','clear','context','worker','createComputingPrimitives','reverseY','ComponentDatatype','colorTable','Sampler','_drawLines','Rectangle','CanvasWindLayer','currentParticlesPosition','IDENTITY','keys','lat','fromCache','116826lpthZO','fixedHeight','mouseMove','options','WindUtil','0px','drawingBufferWidth','413860hjZPlO','fill','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20lines\x20drawing\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0auniform\x20vec2\x20hRange;\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0aout\x20float\x20heightNormalization;\x0aout\x20float\x20speedNormalization;\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight\x20+\x20lonLatLev.z;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0f,\x20360.0f)\x20-\x20180.0f;\x0a\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0f;\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(speed.z\x20-\x20wSpeedRange.x)\x20/\x20(wSpeedRange.y\x20-\x20wSpeedRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20vec3\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rgb;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x20\x20\x20\x20//\x20render\x20lines\x20with\x20triangles\x20and\x20miter\x20joint\x0a\x20\x20\x20\x20//\x20read\x20https://blog.scottlogic.com/2019/11/18/drawing-lines-with-webgl.html\x20for\x20detail\x0a\x20\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20projectedCoordinates.next,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.next\x20+\x20offset;\x0a\x20\x20}\x0a\x0a\x20\x20heightNormalization\x20=\x20(currentPosition.z\x20-\x20hRange.x)\x20/\x20(hRange.y\x20-\x20hRange.x);\x0a\x0a\x20\x20speedNormalization\x20=\x20texture(particlesSpeed,\x20particleIndex).a;\x0a}\x0a','getParticles','ymin','add','update','getOptions','_addedHook','segments','getUVByPoint','lev','destination-in','isDestroyed','addEventListener','depthTest','PI_OVER_TWO','_pointerEvents','shaderProgram','postMessage','framebuffers','#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x20Unit\x20converted\x20to\x20degrees\x20of\x20longitude\x20and\x20latitude\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20speed;\x0a\x20\x20if(length(speed.rgb)\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a','PrimitiveType','canvasWidth','refreshTimer','speed','dynamic','nextTrails'];_0x1a65=function(){return _0x2ec549;};return _0x1a65();}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x5067ee={}){function _0xccd961(_0x1ffc0f,_0x33c657){return _0x2c6bea(_0x33c657-0x120,_0x1ffc0f);}super(_0x5067ee),this['_setOptionsHook'](_0x5067ee);function _0x5708eb(_0x1eb910,_0x49ec7e){return _0x5bac0c(_0x1eb910,_0x49ec7e-0x105);}this['canvas']=null,_0x5067ee[_0x5708eb(0x612,0x58a)]&&_0x5067ee[_0x5708eb(0x553,0x581)]&&(this['_colorRamp']=new mars3d__namespace[(_0x5708eb(0x49a,0x50a))](_0x5067ee));}['_setOptionsHook'](_0x63bcd5,_0xf5c2ca){this['frameTime']=0x3e8/(_0x63bcd5['frameRate']||0xa),this['_pointerEvents']=this['options'][_0x191fbd(0x643,0x607)]??![],this['color']=_0x63bcd5['color']||_0x191fbd(0x54f,0x575);function _0xffd5c9(_0x31d07a,_0x502209){return _0x5bac0c(_0x502209,_0x31d07a- -0x21a);}this[_0xffd5c9(0x2f7,0x2fc)]=_0x63bcd5['lineWidth']||0x1,this[_0x191fbd(0x642,0x5df)]=_0x63bcd5['fixedHeight']??0x0,this[_0xffd5c9(0x2ab,0x275)]=_0x63bcd5['reverseY']??![];function _0x191fbd(_0x1bc62e,_0x49dae7){return _0x2c6bea(_0x49dae7-0x3fe,_0x1bc62e);}this['windField']&&this['windField']['setOptions'](_0x63bcd5);}get['layer'](){return this['canvas'];}get['canvasWidth'](){function _0x59416b(_0x25dbeb,_0x1f790d){return _0x5bac0c(_0x25dbeb,_0x1f790d- -0x53e);}return this['_map']['scene'][_0x59416b(-0xa5,-0x97)]['clientWidth'];}get[_0x5bac0c(0x4d2,0x467)](){function _0x394af3(_0x1831eb,_0x48bfa2){return _0x5bac0c(_0x1831eb,_0x48bfa2- -0x15d);}function _0x12ffe1(_0x1df6a5,_0x5f2ee5){return _0x5bac0c(_0x5f2ee5,_0x1df6a5- -0x28d);}return this[_0x12ffe1(0x190,0x1f1)]['scene'][_0x394af3(0x2d0,0x34a)]['clientHeight'];}get[_0x5bac0c(0x4df,0x4fa)](){function _0x3cda00(_0x25fd0d,_0x41703e){return _0x5bac0c(_0x25fd0d,_0x41703e- -0x132);}return this[_0x3cda00(0x3cd,0x3b7)];}set[_0x5bac0c(0x4d7,0x4fa)](_0x407277){this['_pointerEvents']=_0x407277;if(!this['canvas'])return;function _0x315b27(_0x47a089,_0xf43922){return _0x2c6bea(_0x47a089-0x293,_0xf43922);}function _0x1cb738(_0x16f960,_0x107c01){return _0x5bac0c(_0x16f960,_0x107c01-0x75);}_0x407277?this['canvas']['style'][_0x1cb738(0x55b,0x580)]='all':this[_0x1cb738(0x48d,0x51c)]['style']['pointer-events']='none';}get[_0x2c6bea(0x11a,0x121)](){function _0x12afe7(_0x118509,_0x12d772){return _0x2c6bea(_0x12d772- -0x5b,_0x118509);}function _0x1ac7b8(_0x2538ad,_0x5ab225){return _0x2c6bea(_0x2538ad-0x3be,_0x5ab225);}return this[_0x1ac7b8(0x5a1,0x5a4)][_0x1ac7b8(0x4d8,0x4fa)];}set[_0x2c6bea(0x11a,0x98)](_0x1e3966){this['options']['particlesNumber']=_0x1e3966,clearTimeout(this['_canrefresh']);function _0xfd33ad(_0x4a2595,_0x34cd72){return _0x2c6bea(_0x34cd72- -0x2b7,_0x4a2595);}this[_0xfd33ad(-0x20e,-0x181)]=setTimeout(()=>{function _0x2b06b6(_0x11d436,_0x291dd1){return _0xfd33ad(_0x291dd1,_0x11d436-0x6a9);}this[_0x2b06b6(0x5ff,0x5cf)]();},0x1f4);}get['speedRate'](){return this['options']['speedRate'];}set['speedRate'](_0x98f4a7){function _0x3ce889(_0x6ce62a,_0x59aed6){return _0x2c6bea(_0x6ce62a-0x396,_0x59aed6);}this['options'][_0x3ce889(0x4be,0x54d)]=_0x98f4a7;function _0x1c7653(_0x5b898b,_0x11a93b){return _0x5bac0c(_0x5b898b,_0x11a93b- -0x547);}this[_0x3ce889(0x5ae,0x623)]&&(this['windField']['speedRate']=_0x98f4a7);}get[_0x5bac0c(0x403,0x40f)](){return this['options']['maxAge'];}set[_0x2c6bea(0x11e,0x178)](_0x1a1ba6){this['options']['maxAge']=_0x1a1ba6;function _0x14df51(_0x350859,_0x151b56){return _0x2c6bea(_0x151b56-0x2a5,_0x350859);}this['windField']&&(this['windField'][_0x14df51(0x345,0x3c3)]=_0x1a1ba6);}get[_0x5bac0c(0x53d,0x503)](){return this['windData'];}set[_0x5bac0c(0x54a,0x503)](_0x54d57c){function _0x960be4(_0x30d6ab,_0x4671dd){return _0x2c6bea(_0x30d6ab- -0x1fa,_0x4671dd);}this[_0x960be4(-0xca,-0x75)](_0x54d57c);}['_showHook'](_0x17d311){function _0x1480f3(_0x37c6d5,_0x3ff3f4){return _0x5bac0c(_0x3ff3f4,_0x37c6d5- -0x5f5);}function _0x559ac2(_0x553487,_0x27ce40){return _0x5bac0c(_0x27ce40,_0x553487- -0x399);}_0x17d311?this['_addedHook']():(this['windData']&&(this[_0x559ac2(0x13b,0x16e)]['data']=this[_0x1480f3(-0xfc,-0x167)]),this[_0x559ac2(0x18b,0x103)]());}[_0x2c6bea(0x14a,0x12a)](){function _0x3081d0(_0x2fa797,_0x344633){return _0x5bac0c(_0x344633,_0x2fa797-0x54);}function _0x111a6b(_0x54dec4,_0x5d4329){return _0x5bac0c(_0x54dec4,_0x5d4329- -0x5be);}this['options']['worker']?this['initWorker']():this[_0x3081d0(0x55d,0x578)]=new CanvasWindField(this[_0x3081d0(0x528,0x56b)]);}[_0x5bac0c(0x4a5,0x4e0)](){function _0x2730cb(_0x421549,_0x7241fe){return _0x5bac0c(_0x7241fe,_0x421549- -0x2bd);}this['canvas']=this[_0x2868d6(-0x1c,-0xa7)]();const _0x5a5b17={};_0x5a5b17[_0x2868d6(-0x9c,-0x5e)]=!![],this['canvasContext']=this['canvas']['getContext']('2d',_0x5a5b17);function _0x2868d6(_0xc55ab5,_0x519d50){return _0x2c6bea(_0xc55ab5- -0x231,_0x519d50);}this['bindEvent'](),this[_0x2868d6(-0x4e,-0x27)][_0x2868d6(-0x1f,-0x89)]&&this[_0x2730cb(0x164,0x11f)](this['options']['data']);}['_removedHook'](){function _0x2bba34(_0x30af23,_0x308a2d){return _0x2c6bea(_0x308a2d- -0x326,_0x30af23);}this[_0x2bba34(-0xe2,-0x156)](),this['unbindEvent'](),this['canvas']&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x4c8543=mars3d__namespace['DomUtil']['create']('canvas',_0x3aaf6e(0x35d,0x392),this['_map'][_0x3aaf6e(0x2f4,0x321)]);_0x4c8543['style']['position']='absolute',_0x4c8543['style']['top']=_0x3aaf6e(0x367,0x34d),_0x4c8543[_0x39272c(0x562,0x523)]['left']='0px',_0x4c8543['style'][_0x3aaf6e(0x392,0x322)]=this['_map']['scene'][_0x39272c(0x579,0x5b7)][_0x3aaf6e(0x2c4,0x30b)]+'px';function _0x3aaf6e(_0x599b44,_0x5e4553){return _0x2c6bea(_0x5e4553-0x168,_0x599b44);}_0x4c8543[_0x39272c(0x562,0x4e8)]['height']=this[_0x39272c(0x4ef,0x473)]['scene']['canvas']['clientHeight']+'px',_0x4c8543['style']['pointerEvents']=this['_pointerEvents']?_0x3aaf6e(0x336,0x301):'none',_0x4c8543[_0x39272c(0x562,0x51b)][_0x3aaf6e(0x279,0x2ec)]=this['options']['zIndex']??0x9,_0x4c8543[_0x39272c(0x57d,0x512)]=this['_map']['scene'][_0x39272c(0x579,0x581)]['clientWidth'],_0x4c8543[_0x39272c(0x51f,0x4e1)]=this['_map']['scene'][_0x3aaf6e(0x2b0,0x31e)]['clientHeight'];function _0x39272c(_0x16c297,_0x5c7fb2){return _0x2c6bea(_0x16c297-0x3c3,_0x5c7fb2);}return _0x4c8543;}['resize'](){function _0x503103(_0x45062f,_0x4dfbea){return _0x2c6bea(_0x4dfbea-0x13,_0x45062f);}function _0x34870f(_0x2a08bd,_0x1016d7){return _0x2c6bea(_0x1016d7- -0x277,_0x2a08bd);}this['canvas']&&(this[_0x34870f(-0x12a,-0xc1)]['style']['width']=this['_map'][_0x34870f(-0xf7,-0x10f)][_0x503103(0x142,0x1c9)]['clientWidth']+'px',this[_0x503103(0x18c,0x1c9)][_0x503103(0x1b0,0x1b2)]['height']=this[_0x34870f(-0x132,-0x14b)]['scene'][_0x503103(0x249,0x1c9)]['clientHeight']+'px',this['canvas']['width']=this['_map'][_0x34870f(-0x17c,-0x10f)]['canvas']['clientWidth'],this[_0x34870f(-0xa1,-0xc1)]['height']=this['_map'][_0x34870f(-0x17c,-0x10f)]['canvas']['clientHeight']);}['bindEvent'](){function _0x24b5aa(_0x4d9d75,_0x2383d5){return _0x5bac0c(_0x2383d5,_0x4d9d75-0x10c);}const _0xecd788=this;let _0x4178f3=Date[_0x24b5aa(0x532,0x5b5)]();(function _0x5823a9(){function _0x59b95e(_0x2af88c,_0x2e7ee4){return _0x24b5aa(_0x2e7ee4- -0x261,_0x2af88c);}function _0x288bea(_0x7f8441,_0x51e46a){return _0x24b5aa(_0x7f8441- -0x33d,_0x51e46a);}if(_0xecd788['isDestroy'])return;_0xecd788[_0x59b95e(0x2c1,0x31c)]=window[_0x288bea(0x208,0x1e8)](_0x5823a9);if(_0xecd788['show']&&_0xecd788['windField']){const _0x5533ba=Date['now'](),_0x1a3bf3=_0x5533ba-_0x4178f3;_0x1a3bf3>_0xecd788[_0x288bea(0x1e9,0x189)]&&(_0x4178f3=_0x5533ba-_0x1a3bf3%_0xecd788[_0x288bea(0x1e9,0x1a2)],_0xecd788['update']());}}(),window[_0x24b5aa(0x5f2,0x5bc)]('resize',this[_0x1814c5(-0xb1,-0x37)]['bind'](this),![]));function _0x1814c5(_0x482bea,_0x4d7be9){return _0x5bac0c(_0x4d7be9,_0x482bea- -0x54c);}this[_0x24b5aa(0x5b9,0x5e4)]=![],this['mouse_move']=![],this[_0x1814c5(-0x78,-0xae)]['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this[_0x24b5aa(0x563,0x557)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x24b5aa(0x529,0x5b9)]['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this));}['unbindEvent'](){function _0x2f68ea(_0x12f2e7,_0x3aaa8e){return _0x2c6bea(_0x3aaa8e-0x9e,_0x12f2e7);}window['cancelAnimationFrame'](this[_0x5178e(0x30c,0x2df)]),delete this[_0x5178e(0x30c,0x2fa)],window['removeEventListener']('resize',this[_0x5178e(0x336,0x373)]);function _0x5178e(_0x4d29f4,_0x44c0aa){return _0x5bac0c(_0x44c0aa,_0x4d29f4- -0x165);}this['options']['mouseHidden']&&(this['_map']['off'](mars3d__namespace['EventType'][_0x5178e(0x344,0x368)],this[_0x2f68ea(0x181,0x204)],this),this[_0x5178e(0x2b8,0x341)]['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x5178e(0x2b8,0x319)]['off'](mars3d__namespace[_0x5178e(0x2af,0x244)]['mouseUp'],this[_0x5178e(0x2f8,0x335)],this),this['_map']['off'](mars3d__namespace[_0x5178e(0x2af,0x303)][_0x5178e(0x36e,0x357)],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x38db89){function _0x5087c5(_0x399e85,_0x4ffd05){return _0x5bac0c(_0x399e85,_0x4ffd05- -0x23c);}clearTimeout(this['refreshTimer']);if(!this[_0x305758(-0x113,-0x112)]||!this['canvas'])return;function _0x305758(_0x13b1b7,_0x4889fc){return _0x2c6bea(_0x13b1b7- -0x28d,_0x4889fc);}this['canvas']['style']['visibility']=_0x5087c5(0x23a,0x1f7),this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;function _0x8e84ea(_0x2d0940,_0x40cba0){return _0x5087c5(_0x2d0940,_0x40cba0-0x381);}function _0x5de8d0(_0x2c55bb,_0xb3ac40){return _0x5087c5(_0xb3ac40,_0x2c55bb- -0xf5);}this[_0x5de8d0(0x1cd,0x150)](),this[_0x8e84ea(0x566,0x5ec)]['style'][_0x5de8d0(0x1e9,0x24f)]=_0x5de8d0(0xfc,0x186);},0xc8);}['_onMouseDownEvent'](_0xad6d45){this['mouse_down']=!![],this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x1de834){function _0x370b18(_0x428c06,_0x1534c5){return _0x2c6bea(_0x428c06-0x411,_0x1534c5);}function _0x483953(_0x4dd486,_0x339769){return _0x2c6bea(_0x339769-0x11c,_0x4dd486);}if(!this['show']||!this['canvas'])return;this['mouse_down']&&(this[_0x483953(0x273,0x2d2)][_0x483953(0x323,0x2bb)]['visibility']='hidden',this['mouse_move']=!![]);}[_0x2c6bea(0x16c,0x19e)](_0x462f04){function _0x22179c(_0x4d6d41,_0x440d3d){return _0x5bac0c(_0x4d6d41,_0x440d3d- -0x56d);}if(!this[_0x31a2fb(-0xd8,-0x95)]||!this['canvas'])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x22179c(-0x162,-0x160)],this);this['mouse_down']&&this['mouse_move']&&this[_0x31a2fb(-0x45,0x8)]();function _0x31a2fb(_0x2abb45,_0x2b1915){return _0x2c6bea(_0x2abb45- -0x252,_0x2b1915);}this[_0x31a2fb(-0x9c,-0x20)]['style']['visibility']=_0x31a2fb(-0x116,-0x196),this['mouse_down']=![],this[_0x31a2fb(-0xd1,-0x90)]=![];}['setData'](_0x2f6c5f){this['clear'](),this[_0x24ef12(0x301,0x313)]=_0x2f6c5f;function _0x24ef12(_0x1c12ab,_0x435a70){return _0x5bac0c(_0x1c12ab,_0x435a70- -0x1e6);}this['windField'][_0x24ef12(0x35a,0x336)](_0x2f6c5f);function _0x4d7f2e(_0x2a0601,_0x17ff52){return _0x5bac0c(_0x2a0601,_0x17ff52- -0x42c);}this[_0x4d7f2e(0x12b,0xd2)]();}['redraw'](){function _0x3a63d6(_0x15e5ca,_0x2b6298){return _0x5bac0c(_0x2b6298,_0x15e5ca-0x149);}function _0x3f647b(_0xa279aa,_0x1b787c){return _0x5bac0c(_0x1b787c,_0xa279aa- -0xe7);}if(!this['show'])return;this[_0x3f647b(0x422,0x431)][_0x3a63d6(0x5e9,0x55d)](this['options']),this['update']();}[_0x5bac0c(0x500,0x4de)](){if(this[_0x473a29(-0x218,-0x231)])return;function _0x516d36(_0x1f0709,_0x42406d){return _0x5bac0c(_0x1f0709,_0x42406d-0xf);}this['_updateIng']=!![];function _0x473a29(_0x393f08,_0x4500e8){return _0x2c6bea(_0x4500e8- -0x344,_0x393f08);}if(this['worker'])this['windField'][_0x473a29(-0x1dd,-0x157)]();else{const _0x26f6fc=this['windField'][_0x516d36(0x4a5,0x4ea)]();this['_drawLines'](_0x26f6fc);}this['_updateIng']=![];}['_drawLines'](_0xf2c0b1){this['canvasContext'][_0x461675(0x5ec,0x5cc)]=_0x461675(0x602,0x591),this[_0x461675(0x4cd,0x4fd)]['fillRect'](0x0,0x0,this[_0x461675(0x52d,0x59c)],this['canvasHeight']),this['canvasContext'][_0x461675(0x540,0x5cc)]='lighter',this['canvasContext'][_0x461675(0x4c5,0x544)]=0.9;const _0x451405=this[_0x461675(0x4ef,0x4ca)]['scene']['mode']!==Cesium['SceneMode']['SCENE3D'];function _0x461675(_0x2ea895,_0x2ba644){return _0x2c6bea(_0x2ba644-0x39e,_0x2ea895);}function _0x59b4f(_0x4d164f,_0x3b0e1d){return _0x2c6bea(_0x3b0e1d-0x156,_0x4d164f);}const _0x2935f8=this['canvasWidth']*0.25;if(this[_0x461675(0x4ca,0x526)])for(let _0x514351=0x0,_0x24b624=_0xf2c0b1['length'];_0x514351<_0x24b624;_0x514351++){const _0x2749d3=_0xf2c0b1[_0x514351],_0x4ea3d7=this['_tomap'](_0x2749d3['lng'],_0x2749d3['lat'],_0x2749d3),_0x32f403=this['_tomap'](_0x2749d3['tlng'],_0x2749d3[_0x59b4f(0x295,0x2f1)],_0x2749d3);if(!_0x4ea3d7||!_0x32f403)continue;if(_0x451405&&Math['abs'](_0x4ea3d7[0x0]-_0x32f403[0x0])>=_0x2935f8)continue;this['canvasContext']['beginPath'](),this[_0x59b4f(0x259,0x2b5)][_0x59b4f(0x365,0x376)]=this['lineWidth'],this[_0x461675(0x4c7,0x4fd)][_0x461675(0x5a4,0x52a)]=this[_0x59b4f(0x35c,0x2de)][_0x461675(0x4db,0x536)](_0x2749d3['speed']),this['canvasContext']['moveTo'](_0x4ea3d7[0x0],_0x4ea3d7[0x1]),this['canvasContext'][_0x461675(0x47b,0x4be)](_0x32f403[0x0],_0x32f403[0x1]),this['canvasContext'][_0x59b4f(0x2ec,0x29f)]();}else{this[_0x461675(0x4fd,0x4fd)]['beginPath'](),this[_0x59b4f(0x31a,0x2b5)][_0x461675(0x626,0x5be)]=this['lineWidth'],this['canvasContext'][_0x59b4f(0x34c,0x2e2)]=this['color'];for(let _0x4490ed=0x0,_0x51e2b5=_0xf2c0b1['length'];_0x4490ed<_0x51e2b5;_0x4490ed++){const _0x411ed9=_0xf2c0b1[_0x4490ed],_0x41117c=this['_tomap'](_0x411ed9['lng'],_0x411ed9[_0x59b4f(0x37c,0x334)],_0x411ed9),_0x15ee73=this[_0x461675(0x5aa,0x5ba)](_0x411ed9['tlng'],_0x411ed9['tlat'],_0x411ed9);if(!_0x41117c||!_0x15ee73)continue;if(_0x451405&&Math['abs'](_0x41117c[0x0]-_0x15ee73[0x0])>=_0x2935f8)continue;this['canvasContext']['moveTo'](_0x41117c[0x0],_0x41117c[0x1]),this['canvasContext']['lineTo'](_0x15ee73[0x0],_0x15ee73[0x1]);}this['canvasContext'][_0x461675(0x511,0x4e7)]();}}['_tomap'](_0x9f83c9,_0x3034b8,_0x2c81e3){function _0x7e1156(_0x4411a8,_0x52730c){return _0x5bac0c(_0x4411a8,_0x52730c- -0x65d);}const _0x23bca7=Cesium[_0x58e251(0xb7,0x4b)][_0x7e1156(-0x1fb,-0x226)](_0x9f83c9,_0x3034b8,this['fixedHeight']),_0xca0673=this['_map']['scene'];function _0x58e251(_0xfb2c06,_0x63ee16){return _0x5bac0c(_0xfb2c06,_0x63ee16- -0x3d1);}if(_0xca0673['mode']===Cesium[_0x58e251(0x11,0x64)]['SCENE3D']){const _0x6f92d6=new Cesium[(_0x58e251(0x18,0x98))](_0xca0673['globe']['ellipsoid'],_0xca0673['camera'][_0x7e1156(-0x1b5,-0x22d)]),_0x5be4a1=_0x6f92d6['isPointVisible'](_0x23bca7);if(!_0x5be4a1)return _0x2c81e3['age']=0x0,null;}const _0x34b4cd=mars3d__namespace['PointTrans'][_0x7e1156(-0x137,-0x146)](this['_map'][_0x7e1156(-0x1bd,-0x204)],_0x23bca7);return _0x34b4cd?[_0x34b4cd['x'],_0x34b4cd['y']]:null;}['clear'](){this['windField']['clear']();function _0x38fe59(_0x2460fa,_0x643a03){return _0x5bac0c(_0x643a03,_0x2460fa- -0x4b8);}delete this[_0x38fe59(0x41,0x5a)];}['initWorker'](){this['worker']=new Worker(this['options'][_0x2a1233(0x1d4,0x162)]);function _0x2a1233(_0x5a344a,_0x142e34){return _0x5bac0c(_0x5a344a,_0x142e34- -0x361);}this[_0x2a1233(0x1f2,0x162)][_0x1d1e71(-0x1d9,-0x15c)]=_0x2d8a4c=>{this[_0x1336fa(0x54a,0x5a3)](_0x2d8a4c[_0x543010(0x247,0x275)]['particles']);function _0x1336fa(_0x323fae,_0x3fd182){return _0x2a1233(_0x323fae,_0x3fd182-0x43b);}function _0x543010(_0x188d93,_0x792648){return _0x2a1233(_0x792648,_0x188d93-0xa5);}this[_0x543010(0x266,0x287)]=![];},this['windField']={'init':_0x3b2151=>{const _0xfe6ff1={};function _0x2daf17(_0x46e7d5,_0x55df88){return _0x2a1233(_0x55df88,_0x46e7d5- -0x6a);}_0xfe6ff1[_0x2bb6b3(-0x178,-0x1aa)]='init',_0xfe6ff1['options']=_0x3b2151;function _0x2bb6b3(_0x562037,_0x5c8550){return _0x1d1e71(_0x5c8550,_0x562037- -0x82);}this['worker'][_0x2daf17(0x120,0x10e)](_0xfe6ff1);},'setOptions':_0x4d6cf1=>{const _0x5b2995={};function _0x18ab2d(_0x101f56,_0x4da5e5){return _0x1d1e71(_0x4da5e5,_0x101f56-0x3ec);}function _0x331194(_0x44c806,_0x599843){return _0x2a1233(_0x44c806,_0x599843- -0x2b6);}_0x5b2995[_0x18ab2d(0x2f6,0x2aa)]='setOptions',_0x5b2995['options']=_0x4d6cf1,this[_0x18ab2d(0x321,0x380)]['postMessage'](_0x5b2995);},'setDate':_0x28d5d3=>{const _0x4d3bae={};_0x4d3bae['type']='setDate';function _0x351b79(_0x44c0a3,_0xd237b9){return _0x1d1e71(_0x44c0a3,_0xd237b9-0x576);}_0x4d3bae[_0x351b79(0x502,0x4eb)]=_0x28d5d3;function _0x45030b(_0x15b508,_0x15ddc4){return _0x1d1e71(_0x15ddc4,_0x15b508-0x5ba);}this[_0x45030b(0x4ef,0x4db)][_0x45030b(0x517,0x4b8)](_0x4d3bae);},'update':()=>{if(this['_updateIng2'])return;this['_updateIng2']=!![];function _0x2f09b3(_0x43df56,_0x32bb92){return _0x2a1233(_0x43df56,_0x32bb92-0x2e5);}const _0x2827f5={};_0x2827f5['type']='update',this[_0x2f09b3(0x41f,0x447)]['postMessage'](_0x2827f5);},'clear':()=>{const _0x2b0f6f={};_0x2b0f6f['type']='clear',this['worker']['postMessage'](_0x2b0f6f);}};function _0x1d1e71(_0x3036c6,_0x24915c){return _0x5bac0c(_0x3036c6,_0x24915c- -0x58e);}this[_0x1d1e71(-0xfb,-0x85)]['init'](this['options']);}}mars3d__namespace['LayerUtil']['register'](_0x5bac0c(0x457,0x434),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace[_0x5bac0c(0x55f,0x4d5)]=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x5bac0c(0x54d,0x4cb)]=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x5bac0c(0x4fc,0x4d5)]=WindUtil;const _0x1efec6={};_0x1efec6[_0x2c6bea(0x225,0x200)]=!![],Object['defineProperty'](exports,_0x5bac0c(0x51a,0x514),_0x1efec6);
15
15
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mars3d-wind",
3
- "version": "3.8.1",
3
+ "version": "3.8.3",
4
4
  "description": "Mars3D平台插件,支持气象 风向图 功能插件",
5
5
  "main": "dist/mars3d-wind.js",
6
6
  "files": [
@@ -8,7 +8,7 @@
8
8
  ],
9
9
  "peerDependencies": {},
10
10
  "devDependencies": {
11
- "mars3d": "~3.8.1"
11
+ "mars3d": "~3.8.3"
12
12
  },
13
13
  "scripts": {
14
14
  "lint": "eslint ./src/**/*.{js,ts} --fix"