{"version":3,"sources":["images/COVID.png","images/IOT.png","images/NDVI.png","images/agriculture.png","images/flood.png","HelpComponent.js","GlobalSetting.js","LayerInfo/OverLayLayer.js","LayerInfo/BaseLayer.js","LayerInfo/LidarLayer.js","LayerInfo/ModelSetLayer.js","LayerInfo/Acute3DLayer.js","LayerInfo/VisualizedDataGridOverlay.js","LayerInfo/VisualizedDataGridOverlay_DataCube.js","LayerInfo/MoveModelLayer.js","LayerInfo/PipelineLayer.js","LayerInfo/ModelLayer.js","LayerInfo/ProjectorLayer.js","LayerInfo/I3SLayer.js","LayerInfo/3DTilesLayer.js","LayerInfo/CustomLayer.js","LayerInfo/Layer3DGroup.js","LayerInfo/NoiseLayer.js","LayerInfo/TerrainLayer.js","ParticleList.js","LayerList.js","LayerOption.js","WidgetListSidebar.js","OtherList.js","CloudModule.js","MenuSide.js","serviceWorker.js","index.js"],"names":["module","exports","HelpComponent","this","props","onHelpClick","videoSrc","className","style","width","height","zIndex","left","open","onClick","closeModal","bind","title","src","frameborder","allow","allowfullscreen","React","Component","AboutUs","state","isBubbleUIOpen","bubbleUI","element","BBparameterBD","bubbleboxBD","window","ov","UI","BubbleUI","document","getElementById","appendContent","main","OView","UIContext","addUI","Pos","Geo3DPoint","V","Up","Camera","gotoCamera","setState","removeUI","margin","e","aboutUs","id","textAlign","fontSize","href","target","ContourLineSetting","handleClick","displayColorPicker","handleClose","handleChange","color","setContourLine","contourLine","interval","hex","rgb","hexColor","r","g","b","a","helpMode","drawTerrainSetting","GLCOLOR","Number","event","valueAsNumber","mode","styles","reactCSS","borderRadius","background","swatch","padding","boxShadow","display","cursor","popover","position","right","cover","top","bottom","ReactDOM","render","unmountComponentAtNode","class","alignSelf","type","checked","setContourLineOpen","for","placeholder","value","onChange","IntervalChange","LightSetting","lightRendering","lightScattering","modelShadow","almanac","realTime","realTimeIntervalId","date","Date","now","lightZenith","lightAzimuth","realTimeInterva","enableLight","enableVolumetricLightScattering","enableShadow","LightProperty","lightProperty","clearInterval","alertify","success","setInterval","isAutoUpdateByDate","isAbs","toDate","azimuthAngle","zenithAngle","enableDrawLightDirectionSketchMap","isRealTime","siderRangeCSS","input","inputProps","disabled","DatetimeChange","locale","lang","isRealTimeOpen","setLightRenderingOpen","setLightScatteringOpen","setModelShadowOpen","setAlmanacOpen","min","max","defaultValue","step","onMouseEnter","lightMouseEnter","onMouseLeave","lightMouseLeave","setLightAzimuth","setLightZenith","TerrainDrawSetting","fillMode","terrainElevation","throughSurface","waterRipple","waterLevel","noElevation","getTerrainOverlay","show","showWater","waterQuality","fillModeChange","setTerrainElevationOpen","setThroughSurfaceOpen","setWaterRippleOpen","waterLevelChange","GlobalSettingSidebar","sidebarSwitch","setglobalSettingOpen","sideMenuCSS","overflow","transform","isglobalSettingOpen","overflowY","OverlayOption","sidebarChange","deleteLayerList","gotoLayer","opacity","layer","layerType","layerName","defaultOpacity","Layer","TITLE","TYPE","toFixed","OverlayLayer","List","Data","wmtsLayerChecked","layerThis","WMTSLayerList","LAYER_GROUP_2DWMTS","WMTS_LAYERS","WMTS_GROUP","map","layers","getWMTSLayerInfo","URL","url","identifier","push","ID","CHECKED","prevProps","prevState","snapshot","layerList","currentTime","i","undefined","TIMELINE","changeSetting","deleteList","len","length","layername","LAYERNAME","removeTerrainOverlay","error","index","current","format","SELECTEDINTERVAL","hasOwnProperty","data","setting","LOCAL_SERVER","drawColor","DRAWCOLOR","fillColor","FILLCOLOR","conditions","CONDITIONS","extraSettings","EXTRASETTINGS","cond","SQL","join","DrawColor","FillColor","setConditionOverlayLayer","list","setOpenLayer","LayerEPSG","EPSG","deleteLayer","setTimeLineSwitch","LayerLength","forEach","l","setTimeLineContent","time","formData","Object","keys","keyName","encodeURIComponent","fetch","FETCHURL","method","body","headers","Headers","then","res","json","catch","console","log","addTerrainWMTSOverlay","pgmapserver","epsg","urlTemplate","data-tooltip","name","htmlFor","BaseLayer","baseLayerChecked","UserSetting","setBaseLayer","TERRAIN_SERVER","URLTemplate","BASE_LAYERS","key","defaultChecked","LidarOption","LidarLayer","layerHandel","AltitudeMin","AltitudeMax","gap","setColorSet","updateScreen","ColorLegendOpen","isColorLegendOpen","isSettingOpen","isEDLOpen","isAltitudeOpen","EDL","AltitudeType","getAltitude","goto","enableEDL","edlStrength","enableAltitude","ColorLegend","Math","round","data-tooltip-position","data-tooltip-type","settingOpen","EDLOpen","setEDLLevel","AltitudeOpen","typeChange","isChecked","lidarLayer","lidarLayerChecked","removeLayer","addPointCloudLayer","callback","_layer","UrlManager","SetTemplate","ModelSetOption","isHaveModel","drawMode","scale","isNoiceOpen","setEntityColor","ModelSetLayer","layerMode","setDrawMode","GROUP","group","layerLocation","POS","x","y","z","UP","setOverlayName","removeEntityColorFunction","changeNoiceInfo","timeLine","attr","infoBoxAttr","BuildNoice","ATTR","layerId","building_id","setinfoBox","getColAndAttrs","attrs","setEntityColorFunction","Attrs","noice","LayerList_2D","coverChange","NoiceToggleOpen","modelSetLayer","modelSetLayerChecked","time1","parse","time2","abs","parseInt","dt_s","TIMElINEINTERVAL","range","divTime","d","area","assign","LEGEND","getNoiseData","addModelSetLayer","setUseLight","setOnClickEntity","pos","setinfoBoxOpen","LOCATION","setLegendBoxContent","Acute3DOption","Acute3DLayer","Token","Acute3DLayerChecked","addAcute3DLayer","token","OFFSET","setOffset","VisualizedDataGridOption","VisualizedDataGridOverlay","VisualizedDataGridOverlayChecked","vaColorMapKey","vaColorMapValue","vOverlay","vLayerSrc","vaDate","vWidgetTimeline","vWidgetTimelinePlayer","hide","vaFloodDataList","vaFloodData","fromUrl","tiff","getImage","image","pixelIsArea","readRGB","readRasters","datetime","getTime","vaData","GetFloodData","vFloodData","date_new","getWidth","getHeight","bbox","getBoundingBox","coord_ws","GeoPoint","coord_en","GetEPSGEngine","Transfer","source","boundary","GeoBoundary","heightScale","useStepLayeredColorMap","layeredColorMapKey","layeredColorMapValue","playSpeed","repeat","addTerrainVisualizedDataGridOverlay","CFloodData","FloodDataList","floodData","SetTerrainOverlayAll","Widget","Timeline","view","startTime","stopTime","isRepeat","TimelinePlayer","timeline","play","addLink","VisualizedDataGridOption_DataCube","VisualizedDataGridOverlay_DataCube","VisualizedDataGridOverlay_DataCubeChecked","vaTemp","split","Promise","resolve","reject","xhr","XMLHttpRequest","responseType","setRequestHeader","onload","oEvent","status","response","statusText","onerror","send","GetGeoTiffBuffer","arrayBuffer","fromArrayBuffer","GetNameFromURL","arraybuffer","remove","MoveModelOption","MoveModelLayer","MoveModelLayerChecked","vGltfCar","vTheta","vDateStart","vDateEnd","delta","_NowTime","vCustomLayer","cos","PI","sin","update","tmpPos","camera","v","up","vMoveModelLayerCotainer","UpdateModel","requestAnimationFrame","addTimeEvent","start","end","onEnter","onLeave","addEventListener","addCustomLayer","addGLTFEntity","rotate","w","maxPlaySpeed","minPlaySpeed","playSpeedStep","minUpdateInterval","SetTimeEvent","PipelineOption","isEntityFlowOpen","PipelineLayer","setDrawAllFlow","setFlowUseTexture","setFlowTextureMaxDensity","setFlowColorWeight","SettingType","layerClass","EntityFlowtoggleOpen","pipelineLayreChecked","addPipelineLayer","BIMAttrsOption","openAttrsList","isOtherEnable","onChangeAttrs","Name","isTrue","enable","DeleteBIMAttrs","splice","overflowX","isAttrsEnable","deleteAttrsOption","ModelOption","attrsList","BIMAttrsChange","BIMAttrsList","NAME","ATTRS","ModelLayer","isBIMModel","BIMAttrsAddChange","AddBIMAttrs","enableOtherAttr","clearEntityColor","ModelLayerChecked","addModelLayer","ProjectorOption","VideoPOS","VideoV","VideoUP","ProjectorLayer","ProjectorLayerChecked","_Cust","param","ImageType","PROJECTOR_IMAGE","WIDE","SrcType","PROJECTOR_SRC","IMAGE","VideoPath","HFov","VFov","ImgW","ImgH","Near","Far","addProjectorEntity","I3SOption","I3SLayer","I3SLayerChecked","addI3SLayer","ThreeDTilesOption","ThreeDTilesLayer","ThreeDTilesLayerChecked","add3DTilesLayer","CustomOption","customLayer","entities","entity","_Entities","_Opacity","CustomLayer","geojsonData","dtData","customLayerChecked","getDtData","drawEntity","val","legend","dt","_entity","removeAllEntity","GEOMETRY","features","f","properties","polygon","GeoPolygonSet","FromGeoJSON","geometry","addPolygonPrismEntity","geo","getColor","drawBorder","borderColor","setTooltip","polyline","GeoPolyline","Buffer","addGroundPolylineEntity","size","GEOJSONURL","Layer3DGroup","setLegendBoxSwitch","NoiseLayer","LAYER_GROUP_NOISEMAP","LAYER","TerrainLayer","terrainLayerChecked","reloadTerrain","TERRAIN_LAYERS","ParticleList","LightningModule","timelinePlayer","showLightning","terrainview","initialPos","initialV","initialUp","initialCamera","getModule","LightningStartTime","addLightningEntity","endHeight","Color","minWidth","maxWidth","splitRate","completeShowTime","completeVanishTime","onPlay","setAllEntityTime","removeAllLightningEntity","addTimeBlock","setCloudModuleOpen","borderLeft","setParticleRainOpen","setParticleExplosionOpen","ParticleRain","ParticleModule","rainEntity","windSpeedX","windSpeedY","level","RAIN","LOW","closeCard","createRain","clearRain","isOpen","updateRain","removeParticleEntity","_rainEntity","addRainEntity","windSpeed","_ParticleModule","updateGenerator","particleVelocity","HIGH","MEDIUM","cardStyle","marginTop","windSpeedXChange","windSpeedYChange","levelChange","ParticleExplosion","explosionEntity","Size","Period","rotatePerSec","weight","createExplosion","clearExplosion","_explosionEntity","addExplosionEntity","generatePeriod","rotatePerSecond","rgbWeight","_Size","particleScale","_Period","particleMaxLife","_rotatePerSec","particleRotatePerSecond","_weight","parseFloat","sizeChange","lineHeight","periodChange","rotatePerSecChange","weightChange","TerrainSiderBar","siderValue","intervalID","componentThis","terrainAlpha","LayerList","layerHandelr","LAYER_GROUP_3DMODEL","LAYER_GROUP_DataLake","DataLake_SERVER","TOKEN","LayerListSidebar","setlayerListOpen","islayerListOpen","LayerOptionSidebar","setlayerOptionOpen","islayerOptionOpen","Layer_2D","LayerList_3D","Layer_3D","LayerList_Noise","Layer_Noise","Layer2DLength","Layer3DLength","LayerNoiseLength","WidgetListSidebar","isBaseLayerOpen","widgetFPS","widgetBaseLayer","widgetSatellite","widgetTimeline","widgetTimelinePlayer","widgetDTM","widgetSensorThings","widgetWeather","widgetPipeline","widgetTrack","widgetSeaBed","showFPS","showBaseLayer","showSatellite","showDTM","showSensorThings","showWeather","showPipeline","showTrack","showSeaBed","setWidgetListOpen","FPS","BaseMap","listX","iconX","iconWidth","iconHeight","SatelliteWidget","apiKey","proxy","DTM","querySelectorAll","setAttribute","SensorThings","Weather","authorization","Pipeline","TrackWidget","SeaBed","layerParam","currentSrc","ReadilyAvailableHouseDisplay","_WidgetUI","_PosX","widget","widgetContent","getElementsByClassName","widgetFile","childElementCount","createElement","text","prepend","ReadilyAvailableHouseInspection","OGCLayer","widgetUrl","querySelector","Socioeconomic","parentElement","classList","add","KML","currentview","widgetMultiWindow","MultiWindow","getSubTerrainView","mapList","innerHTML","append","addOGCI3SLayer","modelSet","findLayer","BuildingOverlay","options","buildingLayer","legendUrl","selectedObj","JSON","img","GmlPipeline","setTerrain","innerText","LandAPI","isWidgetListOpen","showHouseDisplay","showHouseInspection","showOGCLayer","showSocioeconomic","showKML","showMultiWindow","showBuildingOverlay","showGmlPipeline","showLandAPI","OtherListSidebar","setOtherListOpen","isOtherListOpen","CovidBg","alt","viewBox","fill","xmlns","fill-rule","clip-rule","IotBg","NdviBg","AgriBg","FloodBg","CloudModule","cloudModule","surfaceHeight","createCloud","clearCloud","_cloudModule","inputSurfacePolygon","onCompleted","addCloudEntity","removeAllCloudEntity","surfaceHeightChange","heightChange","LegendBox","startX","startY","onMove","onStop","t","drag","preventDefault","clientX","offsetLeft","clientY","offsetTop","removeEventListener","legendBoxContent","COLOR","VALUE","legendrag","StatusBar","FPSintervalId","TerrainintervalId","MouseintervalId","fps","terrainNod","cameraPOS","getTerrainNod","cancelAnimationFrame","getFPS","getTerrainNodeProgress","ToolBar","errorHandler","onChangeCallback","selectedInterval","isSideMenu","globalSetting","layerOption","WidgetList","OtherList","googleSearch","IoTSensorThings","isCard","surveying","analysis","particleRain","particleExplosion","modalIsOpen","isinfoBoxOpen","COL","showLegend","legendList","showTimeLine","TimeLineContent","timelineInterval","isPlay","setgoogleSearchOpen","setIoTSensorThingsOpen","setSurveyingOpen","setAnalysisOpen","item","timerID","tick","next","content","needTimeLine","includes","layerListOpen","CardOpen","openLayer","layer2D","MODE","CLASS","ISBIM","BIMATTRS","setLegendList","DeleteList","closeTimeline","active","layerOptionOpen","WidgetListOpen","OtherListOpen","Layer_2D_Length","infoBoxOpen","GlobalSetting","LayerOption","setTimeLineInterval","ticksNumber","onUpdateCallback","formatTick","ms","InfoBox","infoBoxSwitch","infoBoxStyle","transition","en_zh","NO","roofElevat","floors","colspan","col","Boolean","location","hostname","match","SetDefaultObj","decodeURIComponent","RegExp","exec","search","replace","click","setTimeout","navigator","serviceWorker","ready","registration","unregister"],"mappings":"qJAAAA,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,iC,oBCA3CD,EAAOC,QAAU,IAA0B,kC,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,mC,sMCqB5BC,E,qLAjBPC,KAAKC,MAAMC,YAAY,U,+BAGvB,IAAMC,EAAWH,KAAKC,MAAME,SAC5B,OACI,yBAAKC,UAAU,0BAA0BC,MAAO,CAACC,MAAM,QAAQC,OAAO,QAAQC,OAAO,SAASC,KAAK,QAC/F,4BAAQL,UAAU,WAAWM,MAAI,GAC7B,uBAAGN,UAAU,aAAaO,QAASX,KAAKY,WAAWC,KAAKb,QACxD,yBAAKI,UAAU,WACX,4BAAQU,MAAM,OAAOR,MAAM,MAAMC,OAAO,MAAMQ,IAAKZ,EAAUa,YAAY,IAAIC,MAAM,0EAA0EC,iBAAe,W,GAXxKC,IAAMC,WCK5BC,E,YACF,aAAc,IAAD,8BACT,+CACKC,MAAO,CACRC,gBAAiB,EACjBC,SAAW,GACXC,QAAU,IALL,E,uEAST,IAAIF,GAAkBvB,KAAKsB,MAAMC,eAEjC,GAAGA,EAAe,CACd,IAAIG,EAAgB,CACpBA,MAAsB,IACtBA,OAAuB,IACvBA,EAAkB,mBAClBA,EAAkB,mBAClBA,EAAkB,iBAClBA,oBAAoC,SACpCA,kBAAkC,SAClCA,YAA2B,GACvBC,EAAc,IAAIC,OAAOC,GAAGC,GAAGC,SAASL,GACxCD,EAAUO,SAASC,eAAe,iBACvB,OAAZR,IACCA,EAAUzB,KAAKsB,MAAMG,SAEzBE,EAAYO,cAAcT,GAC1BG,OAAOO,KAAKC,MAAMC,UAAUC,MAAMX,GAClC,IAAIY,EAAM,IAAIX,OAAOY,WAAW,mBAAoB,SAAS,QACzDC,EAAI,IAAIb,OAAOY,WAAW,EAAE,GAAG,GAC/BE,EAAK,IAAId,OAAOY,WAAW,EAAE,EAAE,GAC/BG,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,GACrC3C,KAAK6C,SAAS,CAACtB,eAAeA,EAAeC,SAASG,EAAYF,QAAQA,SAG1EG,OAAOO,KAAKC,MAAMC,UAAUS,SAAS9C,KAAKsB,MAAME,UAChDxB,KAAK6C,SAAS,CAACtB,eAAeA,EAAeC,SAAS,O,+BAGrD,IAAD,OACJ,OACI,6BACI,yBAAKpB,UAAU,+BAA+BC,MAAO,CAAC0C,OAAQ,aAAcpC,QAAS,SAACqC,GAAD,OAAK,EAAKC,YAC3F,yBAAK7C,UAAU,WACX,wBAAIA,UAAU,UAAd,8BAGR,yBAAK8C,GAAG,iBAEAlD,KAAKsB,MAAMC,eACX,yBAAK2B,GAAG,WACJ,yBAAKA,GAAG,gBAAgB7C,MAAO,CAAC8C,UAAU,WAClC,yBAAKpC,IAAI,wCAAoBV,MAAO,CAACC,MAAM,QAAQyC,OAAO,uBAElE,yBAAKG,GAAG,iBAAiB7C,MAAO,CAAC0C,OAAO,oBAAoBK,SAAS,SACjE,yBAAKhD,UAAU,WACX,yBAAKA,UAAU,sBAAf,kCAGA,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,aADjB,eAIJ,yBAAKA,UAAU,WACX,yBAAKA,UAAU,sBAAf,kCAGA,yBAAKA,UAAU,sBACP,uBAAGA,UAAU,gBADrB,wEAIJ,yBAAKA,UAAU,WACX,yBAAKA,UAAU,sBAAf,8CAGA,yBAAKA,UAAU,sBACP,uBAAGA,UAAU,eAAiB,uBAAGiD,KAAK,0CAA0CC,OAAO,UAAzD,+CAIzC,W,GAlFXnC,IAAMC,WA0FtBmC,E,YACF,aAAc,IAAD,8BACT,+CAeJC,YAAc,WACV,EAAKX,SAAS,CAAEY,oBAAqB,EAAKnC,MAAMmC,sBAjBvC,EAoBbC,YAAc,WACV,EAAKb,SAAS,CAAEY,oBAAoB,KArB3B,EAwBbE,aAAe,SAACC,GACZ,EAAKC,eAAe,EAAKvC,MAAMwC,YAAY,EAAKxC,MAAMyC,SAASH,EAAMI,KACrE,EAAKnB,SAAS,CAAEe,MAAOA,EAAMK,IAAKC,SAASN,EAAMI,OAxBjD,EAAK1C,MAAQ,CACTwC,aAAY,EACZC,SAAS,IACTN,oBAAoB,EACpBG,MAAO,CACLO,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,KAELJ,SAAS,UACTK,SAAW,QAbN,E,4EA4BET,EAAYC,EAASH,GAEhChC,OAAOO,KAAKC,MAAMoC,mBAAqB,CACnC,eAAkB,CACd,OAAUV,EACV,MAAS,IAAIlC,OAAO6C,QAAQb,GAC5B,SAAYG,EACZ,MAASW,OANO1E,KAMgBsB,MAAMsC,MAAMU,O,2CAKpDtE,KAAK6D,gBAAgB7D,KAAKsB,MAAMwC,YAAY9D,KAAKsB,MAAMyC,SAAS/D,KAAKsB,MAAM4C,UAC3ElE,KAAK6C,SAAS,CAACiB,aAAa9D,KAAKsB,MAAMwC,gB,qCAE5Ba,GACX3E,KAAK6D,eAAe7D,KAAKsB,MAAMwC,YAAYa,EAAMrB,OAAOsB,cAAc5E,KAAKsB,MAAM4C,UACjFlE,KAAK6C,SAAS,CAACkB,SAASY,EAAMrB,OAAOsB,kB,kCAE7BC,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEf,EAAc9D,KAAKsB,MAAMwC,YACzBgB,EAASC,IAAS,CACpB,QAAW,CACPnB,MAAO,CACHtD,MAAO,QACPC,OAAQ,OACRyE,aAAc,MACdC,WAAW,QAAD,OAAWjF,KAAKsB,MAAMsC,MAAMO,EAA5B,aAAoCnE,KAAKsB,MAAMsC,MAAMQ,EAArD,aAA6DpE,KAAKsB,MAAMsC,MAAMS,EAA9E,aAAsFrE,KAAKsB,MAAMsC,MAAMU,EAAvG,MAEdY,OAAQ,CACJC,QAAS,MACTF,WAAY,OACZD,aAAc,OACdI,UAAW,2BACXC,QAAS,eACTC,OAAQ,WAEZC,QAAS,CACLC,SAAU,WACVhF,OAAQ,QACRiF,MAAO,OAEXC,MAAO,CACHF,SAAU,QACVG,IAAK,MACLF,MAAO,MACPG,OAAQ,MACRnF,KAAM,UAIlB,OAAOT,KAAKsB,MAAMiD,UACd,IAAK,cACDsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SACtJ,MACJ,IAAK,OACD4D,IAASE,uBAAuB/D,SAASC,eAAe,SAGhE,OACI,yBAAK+D,MAAM,UAAU3F,MAAO,CAAC0C,OAAO,wBAChC,yBAAKiD,MAAM,WACP,yBAAKA,MAAM,UAAX,kCACA,yBAAKA,MAAM,eACP,yBAAK5F,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,uCAEI,4BAAQA,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,OAAQzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,iBAC7G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAIzD,yBAAKxD,UAAU,sBACX,yBAAK4F,MAAM,sBACP,2BAAOE,KAAK,WAAWhD,GAAG,cAAciD,QAASnG,KAAKsB,MAAMwC,YAAanD,QAAS,SAACqC,GAAD,OAAK,EAAKoD,wBAC5F,2BAAOC,IAAI,mBAKnBvC,EACI,yBAAK1D,UAAU,WACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,uBAEJ,yBAAKA,UAAU,sBACX,yBAAK4F,MAAM,0BACP,2BAAOE,KAAK,SAASI,YAAY,eAAKC,MAAOvG,KAAKsB,MAAMyC,SAAU1D,MAAO,CAACC,MAAM,QAASkG,SAAU,SAACxD,GAAD,OAAK,EAAKyD,eAAezD,SAIxI,yBAAK5C,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,uBAEJ,yBAAKA,UAAU,sBACX,6BACI,yBAAKC,MAAQyE,EAAOI,OAASvE,QAAUX,KAAKwD,aACxC,yBAAKnD,MAAQyE,EAAOlB,SAGhB5D,KAAKsB,MAAMmC,mBAAqB,yBAAKpD,MAAQyE,EAAOS,SACpD,yBAAKlF,MAAQyE,EAAOY,MAAQ/E,QAAUX,KAAK0D,cAC3C,kBAAC,IAAD,CAAcE,MAAQ5D,KAAKsB,MAAMsC,MAAQ4C,SAAWxG,KAAK2D,gBAChD,UAM5B,Y,GAjJRxC,IAAMC,WA0JjCsF,E,YACF,aAAc,IAAD,8BACT,+CACKpF,MAAQ,CACTqF,gBAAiB,EACjBC,iBAAkB,EAClBC,aAAc,EACdC,SAAU,EACVC,UAAW,EACXC,mBAAqB,GACrBC,KAAO,IAAIC,KAAKA,KAAKC,OACrBC,YAAc,GACdC,aAAe,GACf9C,SAAW,QAEf,EAAK+C,gBAAkB,EAAKA,gBAAgBzG,KAArB,gBAdd,E,qFAiBTe,OAAOO,KAAKC,MAAMmF,aAAevH,KAAKsB,MAAMqF,eAC5C3G,KAAK6C,SAAS,CAAC8D,gBAAgB3G,KAAKsB,MAAMqF,mB,+CAG1C/E,OAAOO,KAAKC,MAAMoF,iCAAmCxH,KAAKsB,MAAMsF,gBAChE5G,KAAK6C,SAAS,CAAC+D,iBAAiB5G,KAAKsB,MAAMsF,oB,2CAG3ChF,OAAOO,KAAKC,MAAMqF,cAAgBzH,KAAKsB,MAAMuF,YAC7C7G,KAAK6C,SAAS,CAACgE,aAAe7G,KAAKsB,MAAMuF,gB,uCAGzC,IAAIa,EAAgB9F,OAAOO,KAAKC,MAAMuF,cAClCX,EAAqBhH,KAAKsB,MAAM0F,mBAGpC,GAFAY,cAAcZ,GACdA,EAAqB,IACjBhH,KAAKsB,MAAMwF,SAAS9G,KAAKsB,MAAMyF,SAAS,CACxCnF,OAAOiG,SAASC,QAAQ,sEACxB,IAAIb,EAAO,IAAIC,KACftF,OAAOO,KAAKC,MAAM6E,KAAOA,EACzBD,EAAqBe,YAAY/H,KAAKsH,gBAAiB,KAE3DI,EAAcM,oBAAqBhI,KAAKsB,MAAMwF,QAC9CY,EAAcO,OAAQjI,KAAKsB,MAAMwF,QACjClF,OAAOO,KAAKC,MAAMuF,cAAgBD,EAClC1H,KAAK6C,SAAS,CAACiE,SAAW9G,KAAKsB,MAAMwF,QAASE,mBAAmBA,M,qCAEtDrC,GACR3E,KAAKsB,MAAMyF,SACV/G,KAAK6C,SAAS,CAACoE,KAAKjH,KAAKsB,MAAM2F,QAG/BrF,OAAOO,KAAKC,MAAM6E,KAAOtC,EAAMuD,SAC/BlI,KAAK6C,SAAS,CAACoE,KAAKtC,EAAMuD,c,sCAGlBvD,GACZ,IAAI+C,EAAgB9F,OAAOO,KAAKC,MAAMuF,cACtCD,EAAcS,aAAexD,EAAMrB,OAAOsB,cAC1ChD,OAAOO,KAAKC,MAAMuF,cAAgBD,EAClC1H,KAAK6C,SAAS,CAACwE,aAAa1C,EAAMrB,OAAOsB,kB,qCAE9BD,GACX,IAAI+C,EAAgB9F,OAAOO,KAAKC,MAAMuF,cACtCD,EAAcU,YAAczD,EAAMrB,OAAOsB,cACzChD,OAAOO,KAAKC,MAAMuF,cAAgBD,EAClC1H,KAAK6C,SAAS,CAACuE,YAAYzC,EAAMrB,OAAOsB,kB,wCAGxC,IAAI8C,EAAgB9F,OAAOO,KAAKC,MAAMuF,cACtC/F,OAAOO,KAAKC,MAAMiG,mCAAoC,EACnDX,EAAcS,eAAenI,KAAKsB,MAAM+F,cAAgBK,EAAcU,cAAcpI,KAAKsB,MAAM8F,aAC9FpH,KAAK6C,SAAS,CAACwE,aAAaK,EAAcS,aAAaf,YAAYM,EAAcU,gB,wCAGrFxG,OAAOO,KAAKC,MAAMiG,mCAAoC,I,wCAGtD,IAAIpB,EAAO,IAAIC,KACftF,OAAOO,KAAKC,MAAM6E,KAAOA,EACzBjH,KAAK6C,SAAS,CAACoE,KAAKA,M,uCAGpB,IAAIF,GAAY/G,KAAKsB,MAAMyF,SACvBC,EAAqBhH,KAAKsB,MAAM0F,mBACpC,GAAGhH,KAAKsB,MAAMyF,SACVnF,OAAOiG,SAASC,QAAQ,sEACxBF,cAAcZ,GACdA,EAAqB,GACrBhH,KAAK6C,SAAS,CAACkE,SAASA,EAASC,mBAAmBA,QAEpD,CACApF,OAAOiG,SAASC,QAAQ,sEACxB,IAAIb,EAAO,IAAIC,KACftF,OAAOO,KAAKC,MAAM6E,KAAOA,EACzBD,EAAqBe,YAAY/H,KAAKsH,gBAAiB,KACvDtH,KAAK6C,SAAS,CAACkE,SAASA,EAASC,mBAAmBA,EAAmBC,KAAKA,O,kCAIxEpC,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAIDyD,EAJA,OACEC,EAAe,CACjBtD,WAAY,0HAqBhB,OAjBIqD,EADDtI,KAAKsB,MAAMyF,SAEV,6BACI,kBAAC,IAAD,CAAUR,MAAOvG,KAAKsB,MAAM2F,KAAMuB,OAAO,EAAOC,WAAY,CAACC,UAAS,GAAOlC,SAAU,SAACxD,GAAD,OAAK,EAAK2F,eAAe3F,IAAI4F,OAAO,QAAQC,KAAK,UACxI,yBAAKzI,UAAU,6BACX,4BAAQA,UAAU,oBAAoBO,QAAS,SAACqC,GAAD,OAAK,EAAK8F,mBAAzD,0CAMR,6BACI,kBAAC,IAAD,CAAUvC,MAAOvG,KAAKsB,MAAM2F,KAAMuB,OAAO,EAAOhC,SAAU,SAACxD,GAAD,OAAK,EAAK2F,eAAe3F,IAAI4F,OAAO,QAAQC,KAAK,UAC3G,yBAAKzI,UAAU,6BACX,4BAAQA,UAAU,oBAAoBO,QAAS,SAACqC,GAAD,OAAK,EAAK8F,mBAAzD,0CAIL9I,KAAKsB,MAAMiD,UACd,IAAK,qBACDsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SACtJ,MACJ,IAAK,sBACD4D,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SACtJ,MACJ,IAAK,kBACD4D,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SACtJ,MACJ,IAAK,cACD4D,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SACtJ,MACJ,IAAK,cACD4D,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SACtJ,MACJ,IAAK,OACD4D,IAASE,uBAAuB/D,SAASC,eAAe,SAGhE,OACI,yBAAK7B,UAAU,UAAUC,MAAO,CAAC0C,OAAO,wBACpC,yBAAK3C,UAAU,WACX,yBAAKA,UAAU,UAAf,4BACA,yBAAKA,UAAU,eACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,iCACI,4BAAQA,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,OAAQzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,wBAC7G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAIzD,yBAAKxD,UAAU,sBACX,yBAAKA,UAAU,sBACX,2BAAO8F,KAAK,WAAWhD,GAAG,iBAAiBiD,QAASnG,KAAKsB,MAAMqF,eAAgBhG,QAAS,SAACqC,GAAD,OAAK,EAAK+F,2BAClG,2BAAO1C,IAAI,sBAKnBrG,KAAKsB,MAAMqF,eACP,yBAAKvG,UAAU,WACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,iCACI,4BAAQA,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,OAAQzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,yBAC7G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAIzD,yBAAKxD,UAAU,sBACX,yBAAKA,UAAU,sBACX,2BAAO8F,KAAK,WAAWhD,GAAG,kBAAmBiD,QAASnG,KAAKsB,MAAMsF,gBAAiBjG,QAAS,SAACqC,GAAD,OAAK,EAAKgG,4BACrG,2BAAO3C,IAAI,uBAIvB,yBAAKjG,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,iCACI,4BAAQA,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,OAAQzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,qBAC7G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAIzD,yBAAKxD,UAAU,sBACX,yBAAKA,UAAU,sBACX,2BAAO8F,KAAK,WAAWhD,GAAG,cAAciD,QAASnG,KAAKsB,MAAMuF,YAAalG,QAAS,SAACqC,GAAD,OAAK,EAAKiG,wBAC5F,2BAAO5C,IAAI,mBAIvB,yBAAKjG,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,2BACI,4BAAQA,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,OAAQzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,iBACzG,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAI7D,yBAAKxD,UAAU,sBACX,yBAAKA,UAAU,sBACX,2BAAO8F,KAAK,WAAWhD,GAAG,UAAUiD,QAASnG,KAAKsB,MAAMwF,QAASnG,QAAS,SAACqC,GAAD,OAAK,EAAKkG,oBACpF,2BAAO7C,IAAI,eAKnBrG,KAAKsB,MAAMwF,QACXwB,EAEA,6BACI,yBAAKlI,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,2BACI,4BAAQA,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,OAAQzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,iBAC7G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAIzD,yBAAKxD,UAAU,sBACX,2BAAO8F,KAAK,QAAQiD,IAAI,OAAOC,IAAI,MAAMC,aAAcrJ,KAAKsB,MAAM+F,aAAcd,MAAOvG,KAAKsB,MAAM+F,aAAciC,KAAK,IAAIjJ,MAAOkI,EAAegB,aAAc,SAACvG,GAAD,OAAK,EAAKwG,mBAAmBC,aAAc,SAACzG,GAAD,OAAK,EAAK0G,mBAAmBlD,SAAU,SAACxD,GAAD,OAAK,EAAK2G,gBAAgB3G,QAGjR,yBAAK5C,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,uBAEJ,yBAAKA,UAAU,sBACX,2BAAO8F,KAAK,QAAQiD,IAAI,IAAIC,IAAI,MAAMC,aAAcrJ,KAAKsB,MAAM8F,YAAab,MAAOvG,KAAKsB,MAAM8F,YAAakC,KAAK,IAAIjJ,MAAOkI,EAAegB,aAAc,SAACvG,GAAD,OAAK,EAAKwG,mBAAmBC,aAAc,SAACzG,GAAD,OAAK,EAAK0G,mBAAmBlD,SAAU,SAACxD,GAAD,OAAK,EAAK4G,eAAe5G,WAOlR,Y,GAlPd7B,IAAMC,WA2P3ByI,E,YACF,aAAc,IAAD,8BACT,+CACKvI,MAAQ,CACTwI,SAAW,UACXC,kBAAmB,EACnBC,gBAAiB,EACjBC,aAAc,EACdC,WAAa,IACb3F,SAAW,QARN,E,4EAWEI,GACX,IAAMmF,EAAWnF,EAAMrB,OAAOiD,MAC9B,OAAOuD,GACH,IAAK,UACDlI,OAAOO,KAAKC,MAAMoC,mBAAqB,CACnC,MAAQ,EACR,iBAAmB,EACnB,kBAAqB,CAAE,QAAU,GACjC,mBAAsB,CAAE,QAAU,GAClC,mBAAsB,CAAE,QAAU,GAClC,eAAkB,UAClB,SAAW,GAEf,MACJ,IAAK,WACD5C,OAAOO,KAAKC,MAAMoC,mBAAqB,CACnC,MAAQ,EACR,iBAAmB,EACnB,8BAAgC,EAChC,kBAAqB,CAAE,QAAU,GACjC,mBAAsB,CAAE,QAAU,GAClC,mBAAsB,CAAE,QAAU,GAClC,eAAkB,UAClB,SAAW,GAEf,MACJ,IAAK,OACD5C,OAAOO,KAAKC,MAAMoC,mBAAqB,CACnC,MAAQ,EACR,iBAAmB,EACnB,kBAAqB,CAAE,QAAU,GACjC,mBAAsB,CAAE,QAAU,GAClC,mBAAsB,CAAE,QAAU,GAClC,eAAkB,UAClB,SAAW,GAEf,MACJ,IAAK,QACD5C,OAAOO,KAAKC,MAAMoC,mBAAqB,CACnC,MAAQ,EACR,iBAAmB,EACnB,kBAAqB,CAAE,QAAU,GACjC,mBAAsB,CAAE,QAAU,GAClC,mBAAsB,CAAE,QAAU,GAClC,eAAkB,UAClB,SAAW,GAEf,MACJ,IAAK,SACD5C,OAAOO,KAAKC,MAAMoC,mBAAqB,CACnC,MAAQ,EACR,iBAAmB,EACnB,kBAAqB,CAAE,QAAU,GACjC,mBAAsB,CAAE,QAAU,GAClC,mBAAsB,CAAE,QAAU,GAClC,eAAkB,UAClB,SAAW,GAEf,MACJ,IAAK,SACD5C,OAAOO,KAAKC,MAAMoC,mBAAqB,CACnC,MAAQ,EACR,iBAAmB,EACnB,kBAAqB,CAAE,QAAU,GACjC,mBAAsB,CAAE,QAAU,GAClC,mBAAsB,CAAE,QAAU,GAClC,eAAkB,UAClB,SAAW,GAIvBxE,KAAK6C,SAAS,CAACiH,SAASA,M,gDAGxBlI,OAAOO,KAAKC,MAAMoC,mBAAqB,CAAE2F,YAAanK,KAAKsB,MAAMyI,kBACjE/J,KAAK6C,SAAS,CAACkH,kBAAoB/J,KAAKsB,MAAMyI,qB,8CAG9CnI,OAAOO,KAAKC,MAAM4H,gBAAkBhK,KAAKsB,MAAM0I,eAC/ChK,KAAK6C,SAAS,CAACmH,gBAAkBhK,KAAKsB,MAAM0I,mB,2CAG5CpI,OAAOO,KAAKC,MAAMgI,kBAAkB,SAASC,MAAQrK,KAAKsB,MAAM2I,YAChErI,OAAOO,KAAKC,MAAMoC,mBAAqB,CAAE8F,WAAYtK,KAAKsB,MAAM2I,aAChEjK,KAAK6C,SAAS,CAACoH,aAAejK,KAAKsB,MAAM2I,gB,kCAEjCpF,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,uCAEXF,GACb,IAAMuF,EAAavF,EAAMrB,OAAOiD,MAChC,OAAO2D,GACH,IAAK,IACDtI,OAAOO,KAAKC,MAAMoC,mBAAqB,CAAE+F,aAAc,OACvD,MACJ,IAAK,IACD3I,OAAOO,KAAKC,MAAMoC,mBAAqB,CAAE+F,aAAc,UACvD,MACJ,IAAK,IACD3I,OAAOO,KAAKC,MAAMoC,mBAAqB,CAAE+F,aAAc,QACvD,MACJ,IAAK,IACD3I,OAAOO,KAAKC,MAAMoC,mBAAqB,CAAE+F,aAAc,aAG/DvK,KAAK6C,SAAS,CAACqH,WAAWA,M,+BAErB,IAAD,OACJ,OAAOlK,KAAKsB,MAAMiD,UACd,IAAK,UACDsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SACtJ,MACJ,IAAK,iBACD4D,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SACtJ,MACJ,IAAK,cACD4D,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SACtJ,MACJ,IAAK,OACD4D,IAASE,uBAAuB/D,SAASC,eAAe,SAGhE,OACI,yBAAK7B,UAAU,UAAUC,MAAO,CAAC0C,OAAO,wBACpC,yBAAK3C,UAAU,WACX,yBAAKA,UAAU,UAAf,wCACA,yBAAKA,UAAU,eACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,iCAEI,4BAAQA,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,OAAQzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,aAC7G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAIzD,yBAAKxD,UAAU,sBACX,4BAAQA,UAAU,+BAA+BoG,SAAU,SAACxD,GAAD,OAAK,EAAKwH,eAAexH,IAAIuD,MAAOvG,KAAKsB,MAAMwI,SAAUzJ,MAAO,CAACC,MAAM,SAC9H,4BAAQiG,MAAM,WAAd,gBACA,4BAAQA,MAAM,YAAd,gBACA,4BAAQA,MAAM,QAAd,gBACA,4BAAQA,MAAM,SAAd,4BACA,4BAAQA,MAAM,UAAd,4BACA,4BAAQA,MAAM,UAAd,+BAIZ,yBAAKnG,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,mCAEJ,yBAAKA,UAAU,sBACX,yBAAK4F,MAAM,sBACP,2BAAOE,KAAK,WAAWhD,GAAG,mBAAmBiD,QAASnG,KAAKsB,MAAMyI,iBAAkBpJ,QAAS,SAACqC,GAAD,OAAK,EAAKyH,6BACtG,2BAAOpE,IAAI,wBAIvB,yBAAKjG,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,iCACI,4BAAQA,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,OAAQzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,oBAC7G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAIzD,yBAAKxD,UAAU,sBACX,yBAAK4F,MAAM,sBACP,2BAAOE,KAAK,WAAWhD,GAAG,iBAAiBiD,QAASnG,KAAKsB,MAAM0I,eAAgBrJ,QAAS,SAACqC,GAAD,OAAK,EAAK0H,2BAClG,2BAAOrE,IAAI,sBAIvB,yBAAKjG,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,iCACI,4BAAQA,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,OAAQzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,iBAC7G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAIzD,yBAAKxD,UAAU,sBACX,yBAAK4F,MAAM,sBACP,2BAAOE,KAAK,WAAWhD,GAAG,cAAciD,QAASnG,KAAKsB,MAAM2I,YAAatJ,QAAS,SAACqC,GAAD,OAAK,EAAK2H,wBAC5F,2BAAOtE,IAAI,mBAKnBrG,KAAKsB,MAAM2I,YACX,yBAAK7J,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,mCAEJ,yBAAKA,UAAU,sBACX,4BAAQA,UAAU,+BAA+BoG,SAAU,SAACxD,GAAD,OAAK,EAAK4H,iBAAiB5H,IAAIuD,MAAOvG,KAAKsB,MAAM4I,WAAY7J,MAAO,CAACC,MAAM,SAClI,4BAAQiG,MAAM,KAAd,UACA,4BAAQA,MAAM,KAAd,gBACA,4BAAQA,MAAM,KAAd,UACA,4BAAQA,MAAM,KAAd,mBAGH,Y,GAtNJpF,IAAMC,WA8QxByJ,E,YA9CX,aAAe,IAAD,8BACV,+CACKC,cAAgB,EAAKA,cAAcjK,KAAnB,gBAFX,E,6EAKVb,KAAKC,MAAM8K,yB,+BAEN,IAAD,OAEEC,EAAa,CACfC,SAAW,UACXC,UAHwBlL,KAAKC,MAAMkL,oBAGH,uBAAuB,2BACvD7K,MAAQ,SAKZ,OACI,6BACI,yBAAKF,UAAU,wCAAwC8C,GAAG,WAAW7C,MAAO2K,GACxE,yBAAK5K,UAAU,WACX,yBAAKA,UAAU,MAAM8C,GAAG,iBACpB,yBAAK9C,UAAU,wBACX,wBAAIA,UAAU,YAAYC,MATjC,CACb0C,OAAQ,wBASgB,uBAAG3C,UAAU,kBACb,yBAAKA,UAAU,WAAf,8BAKR,yBAAKA,UAAU,kBAAkB8C,GAAG,mBAChC,uBAAG9C,UAAU,cAAc8C,GAAG,YAAYvC,QAAS,SAACqC,GAAD,OAAK,EAAK8H,cAAc9H,SAIvF,yBAAK3C,MAAO,CAAC+K,UAAW,WACpB,kBAAC,EAAD,MACA,kBAAC,EAAD,MACA,kBAAC,EAAD,MACA,kBAAC,EAAD,a,GAxCWjK,IAAMC,W,SChtBnCiK,E,YACF,aAAe,IAAD,8BACV,+CACKC,cAAgB,EAAKA,cAAczK,KAAnB,gBACrB,EAAK0K,gBAAkB,EAAKA,gBAAgB1K,KAArB,gBACvB,EAAK2K,UAAY,EAAKA,UAAU3K,KAAf,gBACjB,EAAKS,MAAQ,CACTmK,QAAU,GACVlH,SAAW,QAPL,E,kFAWV,GAAkC,WAA9BvE,KAAKC,MAAMyL,MAAMC,UAAwB,CACzC,IAAMC,EAAY5L,KAAKC,MAAMyL,MAAME,UAC7BC,EAA0E,IAAzDjK,OAAOO,KAAKC,MAAMgI,kBAAkBwB,GAAWH,QACtEzL,KAAK6C,SAAS,CAAC4I,QAAQI,O,oCAGjBlH,GACV,IAAMiH,EAAY5L,KAAKC,MAAMyL,MAAME,UACnChK,OAAOO,KAAKC,MAAMgI,kBAAkBwB,GAAWH,QAAU9G,EAAMrB,OAAOiD,MAAM,IAC5E,IAAMsF,EAA0E,IAAzDjK,OAAOO,KAAKC,MAAMgI,kBAAkBwB,GAAWH,QACtEzL,KAAK6C,SAAS,CAAC4I,QAAQI,M,sCAEXH,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAG3B,IAAIvJ,EAAM,IAAIX,OAAOY,WAAW,kBAAkB,mBAAmB,mBACjEC,EAAI,IAAIb,OAAOY,WAAW,EAAE,GAAG,GAC/BE,EAAK,IAAId,OAAOY,WAAW,EAAE,EAAE,GAC/BG,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,K,kCAE7BkC,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEiH,EAAQ9L,KAAKC,MAAMyL,MAUzB,MAN2B,gBAAxB1L,KAAKsB,MAAMiD,SACVsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAE1H,SAAxBjC,KAAKsB,MAAMiD,UACfsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,yBAAK7B,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,2BACX,wBAAIA,UAAU,gBAAgB0L,EAAMF,UAChC,4BAAQxL,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,QAASzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,iBAC9G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,gBAKhC,YAApBkI,EAAMH,UACH,2BAAOvL,UAAU,oCAAqCJ,KAAKsB,MAAMmK,QAASQ,QAAQ,GAAlF,KACF,MAIe,YAApBH,EAAMH,UACH,6BACI,2BAAOzF,KAAK,QAAQiD,IAAI,IAAIC,IAAI,MAAMC,aAAcrJ,KAAKsB,MAAMmK,QAASnC,KAAK,IAAI9C,SAAU,SAACxD,GAAD,OAAK,EAAKsI,cAActI,IAAI3C,MA5BtH,CACjB4E,WAAY,6HA4BS,KAEjB,yBAAK7E,UAAU,WACX,yBAAKA,UAAU,qBAAqB8C,GAAG,kBAAkBvC,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,KACxF,uBAAG1L,UAAU,gCAEjB,yBAAKA,UAAU,0BACf,yBAAKA,UAAU,qBAAqB8C,GAAG,gBAAgBvC,QAAS,SAACqC,GAAD,OAAK,EAAKwI,cACtE,uBAAGpL,UAAU,uB,GAhFTe,IAAMC,WAwF5B8K,E,YACF,aAAe,IAAD,8BACV,+CACK5K,MAAQ,CACT6K,KAAK,GACLC,KAAK,IAET,EAAKC,iBAAmB,EAAKA,iBAAiBxL,KAAtB,gBANd,E,kFASV,IAAIyL,EAAYtM,KACVuM,EAAgB3K,OAAO4K,mBAAmBC,YAChD7K,OAAO4K,mBAAmBE,WAAWC,KACjC,SAACC,GAAD,OACAhL,OAAOC,GAAGgL,iBAAiBD,EAAOE,KAAI,SAAS9J,GACxCA,EAAE+J,KAAK/J,EAAEgK,YACRT,EAAcU,KAAK,CACflB,MAAM/I,EAAElC,OAAOkC,EAAEgK,WACjBhB,KAAK,UACLkB,GAAGlK,EAAEgK,WACLF,IAAI9J,EAAE+J,IACNI,SAAQ,IAGhBb,EAAUzJ,SAAS,CAACsJ,KAAKI,Y,yCAIlBa,EAAWC,EAAWC,GACrC,IAAMC,EAAYvN,KAAKsB,MAAM6K,KAC7B,GAAIiB,EAAUI,cAAcxN,KAAKC,MAAMuN,YACnC,IAAK,IAAIC,KAAKF,EACNA,EAAUE,GAAGN,SAAgC,oBAArBI,EAAUE,GAAGzB,WAAwD0B,IAA1BH,EAAUE,GAAGE,UAChF3N,KAAK4N,cAAcL,EAAUE,GAAIA,GAI7C,GAAuC,YAApCzN,KAAKC,MAAM4N,WAAWlC,WAA8D,oBAAnC3L,KAAKC,MAAM4N,WAAWlC,UACtE,IAAK,IAAI8B,EAAI,EAAGK,EAAM9N,KAAKsB,MAAM6K,KAAK4B,OAAQN,EAAIK,EAAKL,IACnD,GAAIF,EAAUE,GAAG1B,QAAU/L,KAAKC,MAAM4N,WAAWjC,WAC1C2B,EAAUE,GAAGN,QAAQ,CACpBI,EAAUE,GAAGN,SAAWI,EAAUE,GAAGN,QACrC,IAAIa,EAAmC,qBAAtBT,EAAUE,GAAGzB,KAA+BuB,EAAUE,GAAGQ,UAAYV,EAAUE,GAAG1B,MAInG,OAHAnK,OAAOO,KAAKC,MAAM8L,qBAAqBF,GACvCpM,OAAOiG,SAASsG,MAAM,uCAASZ,EAAUE,GAAG1B,YAC5C/L,KAAK6C,SAAS,CAACsJ,KAAKoB,O,oCAO1B7B,EAAO0C,GACjB,IAAI9B,EAAYtM,KACZoM,EAAOE,EAAUhL,MAAM8K,KACvBiC,EAAUC,YAAO5C,EAAMiC,SAASY,iBAAiB,GAAG,cAGxD,GAF0C,GAAtCjC,EAAUrM,MAAMuN,YAAYO,SAC5BM,EAAUC,YAAOhC,EAAUrM,MAAMuN,YAAY,GAAG,eAC/CpB,EAAKoC,eAAe9C,EAAMwB,IAG3B,GAAKd,EAAKV,EAAMwB,IAAIsB,eAAeH,GAE5B,CACH,IAAII,EAAOrC,EAAKV,EAAMwB,IAClBwB,EAAU,CACV3B,IAAKnL,OAAO+M,aAAa7B,IACzBlB,UAAWF,EAAMwB,GACjB0B,UAAWlD,EAAMmD,UACjBC,UAAWpD,EAAMqD,UACjBC,WAAYtD,EAAMuD,WAClBC,cAAexD,EAAMyD,eAErBC,EAAO,GACX,GAAgB,aAAZ1D,EAAMwB,GAAmB,CAOzB,IAAK,IAAIhK,KANTkM,EAAO,CACH,YAAc,GACd,YAAc,GACd,YAAc,GACd,YAAc,IAEHX,EAAKJ,GAChBI,EAAKJ,GAASnL,GAAM,GAAKkM,EAAK,aAAanC,KAAK,IAAI/J,EAAG,KACvDuL,EAAKJ,GAASnL,GAAM,GAAKkM,EAAK,aAAanC,KAAK,IAAI/J,EAAG,KACvDuL,EAAKJ,GAASnL,GAAM,EAAIkM,EAAK,aAAanC,KAAK,IAAI/J,EAAG,KACtDkM,EAAK,aAAanC,KAAK,IAAI/J,EAAG,KAElC,IAAK,IAAIU,KAASwL,EACdV,EAAQM,WAAW/B,KAAK,CACpBoC,IAAK,sBAAYD,EAAKxL,GAAO0L,KAAK,KAAK,IACvCC,UAAW3L,QAGhB,CAcH,IAAK,IAAIV,KAbTkM,EAAO,CACH,YAAc,GACd,YAAc,GACd,YAAc,GACd,YAAc,GACd,YAAc,GACd,YAAc,GACd,YAAc,GACd,YAAc,GACd,YAAc,GACd,YAAc,GACd,YAAc,IAEHX,EAAKJ,GAChBI,EAAKJ,GAASnL,GAAM,IAAMkM,EAAK,aAAanC,KAAK/J,GACjDuL,EAAKJ,GAASnL,GAAM,IAAMkM,EAAK,aAAanC,KAAK/J,GACjDuL,EAAKJ,GAASnL,GAAM,IAAMkM,EAAK,aAAanC,KAAK/J,GACjDuL,EAAKJ,GAASnL,GAAM,IAAMkM,EAAK,aAAanC,KAAK/J,GACjDuL,EAAKJ,GAASnL,GAAM,GAAKkM,EAAK,aAAanC,KAAK/J,GAChDuL,EAAKJ,GAASnL,GAAM,GAAKkM,EAAK,aAAanC,KAAK/J,GAChDuL,EAAKJ,GAASnL,GAAM,GAAKkM,EAAK,aAAanC,KAAK/J,GAChDuL,EAAKJ,GAASnL,GAAM,GAAKkM,EAAK,aAAanC,KAAK/J,GAChDuL,EAAKJ,GAASnL,GAAM,GAAKkM,EAAK,aAAanC,KAAK/J,GAChDuL,EAAKJ,GAASnL,GAAM,EAAIkM,EAAK,aAAanC,KAAK/J,GAC/CkM,EAAK,aAAanC,KAAK/J,GAE3B,IAAK,IAAIU,KAASwL,EACdV,EAAQM,WAAW/B,KAAK,CACpBoC,IAAK,eAAeD,EAAKxL,GAAO0L,KAAK,KAAK,IAC1CE,UAAW5L,IAIvBhC,OAAOO,KAAKC,MAAMqN,yBAAyBf,GAAS,SAAU1L,GAC1D,GAAGA,EAAE8E,QAAQ,CACT,IAAI4H,EAAOpD,EAAUhL,MAAM6K,KACtBT,EAAMyB,QAMPuC,EAAKtB,GAAOH,UAAYjL,EAAEgL,WAL1BpM,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCO,EAAUrM,MAAM0P,aAAajE,EAAM,MACnCgE,EAAKtB,GAAOjB,SAAWzB,EAAMyB,QAC7BuC,EAAKtB,GAAOH,UAAYjL,EAAEgL,WAI9B1B,EAAUzJ,SAAS,CAACsJ,KAAKuD,SACjB1M,EAAE8E,SACL4D,EAAMyB,SACPvL,OAAOiG,SAASsG,MAAM,6CAAUzC,EAAMK,uB,uCAM7CL,EAAM0C,GAAO,IAAD,OACnBsB,EAAO1P,KAAKsB,MAAM6K,KAClByD,EAAYlE,EAAMmE,MAAQ,KAC1BvD,EAAYtM,KAClB,GAAI0L,EAAMyB,QAoEN,CACA,IAAIa,EAA4B,qBAAftC,EAAMM,KAA+B0D,EAAKtB,GAAOH,UAAYvC,EAAMK,MACpFnK,OAAOO,KAAKC,MAAM8L,qBAAqBF,GACvC1B,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrC2D,EAAKtB,GAAOjB,SAAWzB,EAAMyB,QAC7Bb,EAAUzJ,SAAS,CAACsJ,KAAKuD,SACFhC,IAAnBhC,EAAMiC,UACNrB,EAAUrM,MAAM8P,yBA3EpB,GAAG/P,KAAKC,MAAM+P,YAAY,GACtB,OAAOtE,EAAMM,MACT,IAAK,mBACD0D,EAAKO,SAAQ,SAAUC,GACfA,EAAE/C,SAAqB,oBAAV+C,EAAElE,MAA8BkE,EAAEnE,QAAUL,EAAMK,OAC/DnK,OAAOO,KAAKC,MAAM8L,qBAAqBgC,EAAEjC,WACzCiC,EAAE/C,SAAU,UAEGO,IAAnBhC,EAAMiC,UACNrB,EAAUrM,MAAMkQ,mBAAmBzE,EAAMiC,UAC7C,IAAIvB,EAAOpM,KAAKsB,MAAM8K,KAEhBqC,EAAM,CAAE2B,KADA9B,YAAO5C,EAAMiC,SAASY,iBAAiB,GAAG,eAElD8B,EAAWC,OAAOC,KAAK9B,GAAM9B,KAC/B,SAAU6D,GACN,OAAOC,mBAAmBD,GAAW,IAAMC,mBAAmBhC,EAAK+B,OAEzElB,KAAK,KACFlD,EAAKoC,eAAe9C,EAAMwB,IAkB3BlN,KAAK4N,cAAc8B,EAAKtB,GAAQA,GAjBhCsC,MAAMhF,EAAMiF,SAAU,CACdC,OAAQ,OACRC,KAAMR,EACNS,QAAS,IAAIC,QAAQ,CACjB,eAAgB,wCAGvBC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,UAChBF,MAAK,SAAAvC,GACFrC,EAAKV,EAAMwB,IAAMuB,EACjB,EAAK5L,SAAS,CAACuJ,SACf,EAAKwB,cAAc8B,EAAKtB,GAAQA,MAEnC+C,OAAM,SAAAnO,GACHoO,QAAQC,IAAI,2CAKxB,MACJ,IAAK,UACDzP,OAAOO,KAAKC,MAAMkP,sBAAsB,CACpCvE,IAAKrB,EAAMoB,IACXE,WAAYtB,EAAMwB,GAClBc,UAAWtC,EAAMK,MACjBwF,aAAa,EACbC,KAAM5B,EACN6B,YAAa,UACd,SAAUzO,GACNA,GACCpB,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCO,EAAUrM,MAAM0P,aAAajE,EAAM,MACnCgE,EAAKtB,GAAOjB,SAAWzB,EAAMyB,QAC7Bb,EAAUzJ,SAAS,CAACsJ,KAAKuD,KAEpB1M,GACLpB,OAAOiG,SAASsG,MAAM,6CAAUzC,EAAMK,eAStDnK,OAAOiG,SAASsG,MAAM,oI,+BAezB,IAAD,OACEhC,EAAMnM,KAAKsB,MAAM6K,KACvB,OACI,yBAAK/L,UAAU,iBAEP+L,EAAKQ,KACD,SAACC,EAAOwB,GAAR,OACA,yBAAKhO,UAAU,cAAcsR,eAAc9E,EAAOb,OAC9C,2BAAO7F,KAAK,WAAWyL,KAAK,aAAazO,GAAI0J,EAAOb,MAAOvF,SAAU,SAACxD,GAAD,OAAK,EAAKqJ,iBAAiBO,EAAOwB,IAAQjI,QAASyG,EAAOO,UAC/H,2BAAOyE,QAAShF,EAAOb,OAAQa,EAAOb,gB,GAhPvC5K,IAAMC,WCvDlByQ,E,YAnCX,aAAe,IAAD,8BACV,+CACKC,iBAAmB,EAAKA,iBAAiBjR,KAAtB,gBACxB,EAAKS,MAAQ,CAACyQ,YAAY,IAHhB,E,8EAKGnF,GACbhL,OAAOO,KAAKC,MAAM4P,aAAa,CAC3BjF,IAAKH,EAAOE,IACZE,WAAYJ,EAAOM,GACnBuE,YAAa7P,OAAOqQ,eAAeC,gB,+BAGlC,IAAD,OACJ,OACI,yBAAK9R,UAAU,iBAEPwB,OAAOuQ,YAAYxF,KACnB,SAACC,EAAOwB,GAAR,OACU,IAAVA,EACA,yBAAKhO,UAAU,oBAAoBgS,IAAKxF,EAAOb,OAC3C,2BAAO7F,KAAK,QAAQyL,KAAK,YAAYzO,GAAI0J,EAAOb,MAAOsG,eAAe,UAAU1R,QAAS,SAACqC,GAAD,OAAK,EAAK8O,iBAAiBlF,MACpH,2BAAOgF,QAAShF,EAAOb,OAAQa,EAAOb,QAG1C,yBAAK3L,UAAU,oBAAoBgS,IAAKxF,EAAOb,OAC3C,2BAAO7F,KAAK,QAAQyL,KAAK,YAAYzO,GAAI0J,EAAOb,MAAOpL,QAAS,SAACqC,GAAD,OAAK,EAAK8O,iBAAiBlF,MAC3F,2BAAOgF,QAAShF,EAAOb,OAAQa,EAAOb,gB,GA3BtC5K,IAAMC,WCIxBkR,E,YACF,aAAe,IAAD,8BACV,+CA6BJ9O,YAAc,WACV,EAAKX,SAAS,CAAEY,oBAAqB,EAAKnC,MAAMmC,sBA/BtC,EAkCdC,YAAc,WACV,EAAKb,SAAS,CAAEY,oBAAoB,KAnC1B,EAsCdE,aAAe,SAACC,GACZ,IAAI2O,EAAa,EAAKtS,MAAMyL,MAAM8G,YAC9BC,EAAc,EAAKnR,MAAMmR,YACzBC,EAAc,EAAKpR,MAAMoR,YACzBC,GAAOD,EAAcD,GAAa,EACtCF,EAAWK,YACP,CACIhP,EAAMK,IAAIE,EAAGP,EAAMK,IAAIG,EAAGR,EAAMK,IAAII,EAAGT,EAAMK,IAAIK,EACnC,IAAdV,EAAMK,IAAIE,EAAwB,IAAdP,EAAMK,IAAIG,EAAwB,IAAdR,EAAMK,IAAII,EAAUT,EAAMK,IAAIK,EACxD,GAAdV,EAAMK,IAAIE,EAAuB,GAAdP,EAAMK,IAAIG,EAAuB,GAAdR,EAAMK,IAAII,EAAST,EAAMK,IAAIK,EACrD,IAAdV,EAAMK,IAAIE,EAAwB,IAAdP,EAAMK,IAAIG,EAAwB,IAAdR,EAAMK,IAAII,EAAUT,EAAMK,IAAIK,EACtE,EAAG,EAAG,EAAGV,EAAMK,IAAIK,GAEvB,CAACoO,EAAaA,EAAcC,EAAKD,EAAoB,EAANC,EAASD,EAAoB,EAANC,EAASD,EAAoB,EAANC,IACjG/Q,OAAOO,KAAKC,MAAMyQ,eAClB,EAAKhQ,SAAS,CAAEe,MAAOA,EAAMK,IAAIC,SAASN,EAAMI,OArDtC,EAoJd8O,gBAAiB,WACb,EAAKjQ,SAAS,CAAEkQ,mBAAoB,EAAKzR,MAAMyR,qBAnJ/C,EAAKxH,gBAAkB,EAAKA,gBAAgB1K,KAArB,gBACvB,EAAK2K,UAAY,EAAKA,UAAU3K,KAAf,gBACjB,EAAKS,MAAQ,CACT0R,eAAgB,EAChBC,WAAY,EACZC,gBAAiB,EACjBH,mBAAoB,EACpBtP,oBAAoB,EACpB0P,IAAI,EACJvP,MAAO,CACHO,EAAG,MACHC,EAAG,MACHC,EAAG,KACHC,EAAG,KAEPJ,SAAS,UACTkP,aAAe,2BACfX,YAAc,EACdC,YAAc,EACdnO,SAAW,QArBL,E,iFAyBV,IAAIgO,EAAavS,KAAKC,MAAMyL,MAAM8G,YAC9BC,EAAcF,EAAWc,cAAcZ,YACvCC,EAAcH,EAAWc,cAAcX,YAC3C1S,KAAK6C,SAAS,CAAC6P,YAAYA,EAAYD,YAAYA,M,sCA2BvC/G,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAGV9L,KAAKC,MAAMyL,MAAM8G,YACvBc,S,oCAGXtT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,gCAG1BhT,KAAKC,MAAMyL,MAAM8G,YACvBe,WAAWvT,KAAKsB,MAAM2R,WACjCjT,KAAK6C,SAAS,CAAEoQ,WAAYjT,KAAKsB,MAAM2R,c,kCAE/BtO,GACS3E,KAAKC,MAAMyL,MAAM8G,YACvBgB,YAAc7O,EAAMrB,OAAOsB,cACtChD,OAAOO,KAAKC,MAAMyQ,eAClB7S,KAAK6C,SAAS,CAACsQ,IAAIxO,EAAMrB,OAAOsB,kB,qCAGhC,IAGI+N,EAHAJ,EAAavS,KAAKC,MAAMyL,MAAM8G,YAC9BC,EAAczS,KAAKsB,MAAMmR,YACzBC,EAAc1S,KAAKsB,MAAMoR,YAEE,6BAA5B1S,KAAKsB,MAAM8R,cACVT,GAAOD,EAAcD,GAAa,EAClCF,EAAWkB,gBAAgBzT,KAAKsB,MAAM4R,gBACtCX,EAAWK,YACP,CACI5S,KAAKsB,MAAMsC,MAAMO,EAAGnE,KAAKsB,MAAMsC,MAAMQ,EAAGpE,KAAKsB,MAAMsC,MAAMS,EAAGrE,KAAKsB,MAAMsC,MAAMU,EACxD,IAArBtE,KAAKsB,MAAMsC,MAAMO,EAA+B,IAArBnE,KAAKsB,MAAMsC,MAAMQ,EAA+B,IAArBpE,KAAKsB,MAAMsC,MAAMS,EAAUrE,KAAKsB,MAAMsC,MAAMU,EAC7E,GAArBtE,KAAKsB,MAAMsC,MAAMO,EAA8B,GAArBnE,KAAKsB,MAAMsC,MAAMQ,EAA8B,GAArBpE,KAAKsB,MAAMsC,MAAMS,EAASrE,KAAKsB,MAAMsC,MAAMU,EAC1E,IAArBtE,KAAKsB,MAAMsC,MAAMO,EAA+B,IAArBnE,KAAKsB,MAAMsC,MAAMQ,EAA+B,IAArBpE,KAAKsB,MAAMsC,MAAMS,EAAUrE,KAAKsB,MAAMsC,MAAMU,EAClG,EAAG,EAAG,EAAGtE,KAAKsB,MAAMsC,MAAMU,GAE9B,CAACoO,EAAaA,EAAcC,EAAKD,EAAoB,EAANC,EAASD,EAAoB,EAANC,EAASD,EAAoB,EAANC,IACjG/Q,OAAOO,KAAKC,MAAMyQ,eAClB7S,KAAK6C,SAAS,CAAEqQ,gBAAiBlT,KAAKsB,MAAM4R,kBAEZ,6BAA5BlT,KAAKsB,MAAM8R,eACfT,GAAOD,EAAcD,GAAa,EAClCF,EAAWkB,gBAAgBzT,KAAKsB,MAAM4R,gBACtCX,EAAWK,YACP,CACI,IAAK,EAAG,EAAG,IACX,IAAK,IAAK,EAAG,IACb,EAAG,IAAK,EAAG,IACX,EAAG,EAAG,EAAG,KAEb,CAACF,EAAaA,EAAcC,EAAKD,EAAoB,EAANC,EAASD,EAAoB,EAANC,IAC1E/Q,OAAOO,KAAKC,MAAMyQ,eAClB7S,KAAK6C,SAAS,CAAEqQ,gBAAiBlT,KAAKsB,MAAM4R,oB,iCAGzCvO,GACP,IAGIgO,EAHAJ,EAAavS,KAAKC,MAAMyL,MAAM8G,YAC9BC,EAAczS,KAAKsB,MAAMmR,YACzBC,EAAc1S,KAAKsB,MAAMoR,YAEH,6BAAvB/N,EAAMrB,OAAOiD,OACZoM,GAAOD,EAAcD,GAAa,EAClCF,EAAWK,YACP,CACI5S,KAAKsB,MAAMsC,MAAMO,EAAGnE,KAAKsB,MAAMsC,MAAMQ,EAAGpE,KAAKsB,MAAMsC,MAAMS,EAAGrE,KAAKsB,MAAMsC,MAAMU,EACxD,IAArBtE,KAAKsB,MAAMsC,MAAMO,EAA+B,IAArBnE,KAAKsB,MAAMsC,MAAMQ,EAA+B,IAArBpE,KAAKsB,MAAMsC,MAAMS,EAAUrE,KAAKsB,MAAMsC,MAAMU,EAC7E,GAArBtE,KAAKsB,MAAMsC,MAAMO,EAA8B,GAArBnE,KAAKsB,MAAMsC,MAAMQ,EAA8B,GAArBpE,KAAKsB,MAAMsC,MAAMS,EAASrE,KAAKsB,MAAMsC,MAAMU,EAC1E,IAArBtE,KAAKsB,MAAMsC,MAAMO,EAA+B,IAArBnE,KAAKsB,MAAMsC,MAAMQ,EAA+B,IAArBpE,KAAKsB,MAAMsC,MAAMS,EAAUrE,KAAKsB,MAAMsC,MAAMU,EAClG,EAAG,EAAG,EAAGtE,KAAKsB,MAAMsC,MAAMU,GAE9B,CAACoO,EAAaA,EAAcC,EAAKD,EAAoB,EAANC,EAASD,EAAoB,EAANC,EAASD,EAAoB,EAANC,IACjG/Q,OAAOO,KAAKC,MAAMyQ,eAClB7S,KAAK6C,SAAS,CAAEuQ,aAAazO,EAAMrB,OAAOiD,SAEf,6BAAvB5B,EAAMrB,OAAOiD,QACjBoM,GAAOD,EAAcD,GAAa,EAClCF,EAAWK,YACP,CACI,IAAK,EAAG,EAAG,IACX,IAAK,IAAK,EAAG,IACb,EAAG,IAAK,EAAG,IACX,EAAG,EAAG,EAAG,KAEb,CAACF,EAAaA,EAAcC,EAAKD,EAAoB,EAANC,EAASD,EAAoB,EAANC,IAC1E/Q,OAAOO,KAAKC,MAAMyQ,eAClB7S,KAAK6C,SAAS,CAAEuQ,aAAazO,EAAMrB,OAAOiD,W,kCAMtC1B,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEiH,EAAQ9L,KAAKC,MAAMyL,MACnB+G,EAAczS,KAAKsB,MAAMmR,YACzBC,EAAc1S,KAAKsB,MAAMoR,YACzBC,GAAOD,EAAcD,GAAa,EACpCiB,EAAc,KACf1T,KAAKsB,MAAM0R,eAAehT,KAAKsB,MAAM4R,gBAA4C,6BAA5BlT,KAAKsB,MAAM8R,cAAyBpT,KAAKsB,MAAMyR,oBACnGW,EACI,yBAAKtT,UAAU,WACX,yBAAK8C,GAAG,eACJ,yBAAKA,GAAG,kBACJ,yBAAKA,GAAG,oBAAR,gDAGA,yBAAKA,GAAG,mBACJ,yBAAKA,GAAG,uBACR,yBAAK7C,MAAO,CAAC8E,QAAQ,QAEbwO,KAAKC,MAAMlB,EAAcC,EAAMF,GAAe,IAAMkB,KAAKC,MAAMlB,EAAcD,KAIzF,yBAAKvP,GAAG,mBACJ,yBAAKA,GAAG,yBACR,yBAAK7C,MAAO,CAAC8E,QAAQ,QAEbwO,KAAKC,MAAMlB,EAAkB,EAAJC,EAAQF,GAAe,IAAMkB,KAAKC,MAAMlB,EAAcC,EAAMF,KAIjG,yBAAKvP,GAAG,mBACJ,yBAAKA,GAAG,yBACR,yBAAK7C,MAAO,CAAC8E,QAAQ,QAEbwO,KAAKC,MAAMlB,EAAkB,EAAJC,EAAQF,GAAe,IAAMkB,KAAKC,MAAMlB,EAAkB,EAAJC,EAAQF,SASvH,IAGM3N,EAASC,IAAS,CACpB,QAAW,CACPnB,MAAO,CACHtD,MAAO,QACPC,OAAQ,OACRyE,aAAc,MACdC,WAAW,QAAD,OAAWjF,KAAKsB,MAAMsC,MAAMO,EAA5B,aAAoCnE,KAAKsB,MAAMsC,MAAMQ,EAArD,aAA6DpE,KAAKsB,MAAMsC,MAAMS,EAA9E,aAAsFrE,KAAKsB,MAAMsC,MAAMU,EAAvG,MAEdY,OAAQ,CACJC,QAAS,MACTF,WAAY,OACZD,aAAc,OACdI,UAAW,2BACXC,QAAS,eACTC,OAAQ,WAEZC,QAAS,CACLC,SAAU,QACVhF,OAAQ,QAEZkF,MAAO,CACHF,SAAU,QACVG,IAAK,MACLF,MAAO,MACPG,OAAQ,MACRnF,KAAM,UAUlB,MAN2B,cAAxBT,KAAKsB,MAAMiD,SACVsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAE1H,SAAxBjC,KAAKsB,MAAMiD,UACfsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,yBAAK7B,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,sBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,UAChC,4BAAQxL,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,QAASzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,eAC9G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,kBAMjE,yBAAKxD,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BACvK,uBAAGtR,UAAU,yBAIjBJ,KAAKsB,MAAM0R,cACP,yBAAK5S,UAAU,oCACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,+CAEJ,yBAAKA,UAAU,sBACX,yBAAK4F,MAAM,sBACP,2BAAOE,KAAK,WAAWhD,GAAI4I,EAAMF,UAAY,YAAazF,QAASnG,KAAKsB,MAAM2R,UAAWtS,QAAS,SAACqC,GAAD,OAAK,EAAKgR,aAC5G,2BAAO3N,IAAKyF,EAAMF,UAAY,iBAKtC5L,KAAKsB,MAAM2R,UACX,6BACI,2BAAO/M,KAAK,QAAQiD,IAAI,IAAIC,IAAI,MAAMC,aAAcrJ,KAAKsB,MAAM6R,IAAK7J,KAAK,IAAIjJ,MAlFpF,CACjB4E,WAAY,0HAiF+GuB,SAAU,SAACxD,GAAD,OAAK,EAAKiR,YAAYjR,OAC9H,KAIb,yBAAK5C,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,+CAEJ,yBAAKA,UAAU,sBACX,yBAAK4F,MAAM,sBACP,2BAAOE,KAAK,WAAWhD,GAAI4I,EAAMF,UAAY,iBAAkBzF,QAASnG,KAAKsB,MAAM4R,eAAgBvS,QAAS,SAACqC,GAAD,OAAK,EAAKkR,kBACtH,2BAAO7N,IAAKyF,EAAMF,UAAY,sBAKtC5L,KAAKsB,MAAM4R,eACP,yBAAK9S,UAAU,WACX,yBAAKA,UAAU,wBACf,4BAAQA,UAAU,+BAA+BoG,SAAU,SAACxD,GAAD,OAAK,EAAKmR,WAAWnR,IAAIuD,MAAOvG,KAAKsB,MAAM8R,cAClG,4BAAQ7M,MAAM,4BAAd,4BACA,4BAAQA,MAAM,4BAAd,8BAGJ,yBAAKnG,UAAU,uBAAuBC,MAAO,CAAC4F,UAAW,WAErB,6BAA5BjG,KAAKsB,MAAM8R,aACX,yBAAK/S,MAAO,CAAC8C,UAAW,WACpB,yBAAK9C,MAAQyE,EAAOI,OAASvE,QAAUX,KAAKwD,aACxC,yBAAKnD,MAAQyE,EAAOlB,SAGpB5D,KAAKsB,MAAMmC,mBACP,yBAAKpD,MAAQyE,EAAOS,SAChB,yBAAKlF,MAAQyE,EAAOY,MAAQ/E,QAAUX,KAAK0D,cACvC,kBAAC,IAAD,CAAcE,MAAQ5D,KAAKsB,MAAMsC,MAAQ4C,SAAWxG,KAAK2D,gBACpD,MAGzB,yBAAKtD,MAAO,CAAC8C,UAAW,WACpB,4BAAQ6C,MAAM,iBAAiBrF,QAASX,KAAK8S,iBAAkB9S,KAAKsB,MAAMyR,kBAAkB,mDAAW,uDAI9G,KAEhBW,GACI,U,GAxUPvS,IAAMC,WA+U1BmR,E,YACF,aAAc,IAAD,8BACT,+CACKjR,MAAQ,CACT8S,WAAU,EACVC,WAAW,IAEf,EAAKC,kBAAoB,EAAKA,kBAAkBzT,KAAvB,gBANhB,E,kFAST,GAAGb,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACxBA,IACCxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM+S,YACzCzS,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAUC,WAAW,S,wCAIxC3I,GACd,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACdoU,GAqBAxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM+S,YACzC/H,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUC,WAAW,MAxBnDzS,OAAOO,KAAKC,MAAMoS,mBAAmB,CACjCzH,IAAKnL,OAAOqQ,eAAenF,IAC3BE,WAAYtB,EAAMwB,GAClBuE,YAAa7P,OAAOqQ,eAAeC,YACnCuC,SAAU,SAAUzR,EAAEqR,GACfrR,GACCqR,EAAWK,OAAOC,WAAWC,YAAYhT,OAAOqQ,eAAeC,aAC/DmC,EAAWf,OACX1R,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCO,EAAUrM,MAAM0P,aAAajE,EAAM2I,GACnCD,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUC,WAAWA,KAE9CrR,GACLpB,OAAOiG,SAASsG,MAAM,8CAAWzC,EAAMK,Y,+BAalD,IAAD,OACEL,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,aAAazO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAKsR,kBAAkB5I,MAC/H,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GAxD3B5K,IAAMC,WChVzByT,E,YACF,aAAc,IAAD,8BACT,+CACKvT,MAAM,CACP0R,eAAc,EACd8B,aAAY,EACZC,SAAW,IACXC,MAAQ,EACRtP,MAAQ,OACRnB,SAAW,OACX0Q,aAAc,GAElB,EAAKC,eAAe,EAAKA,eAAerU,KAApB,gBAXX,E,kFAcT,IAAM6K,EAAQ1L,KAAKC,MAAMyL,MACrByJ,EAAgBnV,KAAKC,MAAMyL,MAAM8G,YACjB,MAAjB9G,EAAM0J,YACD1J,EAAM0J,WACND,EAAcE,YAAY,EAAG,GAC7BrV,KAAK6C,SAAS,CAACkS,SAAS,IAAID,aAAY,MAExCK,EAAcE,YAAY,EAAG,GAC7BrV,KAAK6C,SAAS,CAACkS,SAAS,IAAID,aAAY,MAG7C9U,KAAKsB,MAAM2T,aACVjV,KAAKkV,mB,sCAGGxJ,GACZ,IAAMI,EAAQ,CACVwJ,MAAM5J,EAAM6J,MACZxJ,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAG3B,GAAmC,MAAhC9L,KAAKC,MAAMyL,MAAM8J,cAAoB,CACpC,IAAIjT,EAAM,IAAIX,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIC,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIE,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIG,GAC7InT,EAAI,IAAIb,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEiT,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEkT,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEmT,GACrIlT,EAAK,IAAId,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGH,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGF,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGD,GACzIjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,OAErC,CACoB3C,KAAKC,MAAMyL,MAAM8G,YACvBc,U,oCAIlBtT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,kCAEnCrO,GACR,IAAIe,EAAQf,EAAMrB,OAAOiD,MACrB4O,EAAgBnV,KAAKC,MAAMyL,MAAM8G,YACxB,SAAV9M,GACCyP,EAAcW,eAAe,IAC7BlU,OAAOO,KAAKC,MAAMyQ,iBAGlBsC,EAAcW,eAAepQ,GAC7B9D,OAAOO,KAAKC,MAAMyQ,gBAEtB7S,KAAK6C,SAAS,CAAC6C,MAAQA,M,kCAEfb,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,wCAGxB,IAAIsQ,EAAgBnV,KAAKC,MAAMyL,MAAM8G,YAClCxS,KAAKsB,MAAM2T,aACVE,EAAcY,4BAElB/V,KAAK6C,SAAS,CAACoS,aAAajV,KAAKsB,MAAM2T,gB,yCAExB7H,EAAWC,EAAWC,GAClCF,EAAUI,cAAcxN,KAAKC,MAAMuN,aAAeH,EAAU4H,cAAcjV,KAAKsB,MAAM2T,cACpFjV,KAAKkV,iBACLlV,KAAKgW,qB,wCAIT,IAAM1J,EAAYtM,KAClB,QAAuC0N,IAAnCpB,EAAUrM,MAAMyL,MAAMuK,SAAwB,CAC9C,IAAIC,EAAO5J,EAAUrM,MAAMkW,YAEvB/F,EAAO9B,YAAOhC,EAAUrM,MAAMyL,MAAMuK,SAAS1H,iBAAiB,GAAG,cAC3B,GAAtCjC,EAAUrM,MAAMuN,YAAYO,SAC5BqC,EAAO9B,YAAOhC,EAAUrM,MAAMuN,YAAY,GAAG,eACjD,IAAIiB,EAAO7M,OAAOwU,WAClB,GAAwB,GAApBF,EAAKG,KAAKtI,OAAa,CACvB,IAAIuI,EAAUhK,EAAUrM,MAAMyL,MAAMxI,GACpC,GAAIuL,EAAKD,eAAe8H,GAAU,CAC9B,IAAIC,EAAcL,EAAKG,KAAK,GAAG,IAAIH,EAAKG,KAAK,GACzC5H,EAAK6H,GAASlG,GAAM5B,eAAe+H,GACnCL,EAAKG,KAAK,GAAK5H,EAAK6H,GAASlG,GAAMmG,GAEnCL,EAAKG,KAAK,GAAK,qBAEnB/J,EAAUrM,MAAMuW,WAAWN,QAE3B5J,EAAUrM,MAAMyL,MAAM8G,YAAYiE,eAAeP,EAAKG,KAAK,IAAI,SAASK,GACpER,EAAKG,KAAK,GAAK,qBACf/J,EAAUrM,MAAMuW,WAAWE,U,uCAO3C,QAAkChJ,IAA9B1N,KAAKC,MAAMyL,MAAMuK,SAAwB,CACzC,IAAId,EAAgBnV,KAAKC,MAAMyL,MAAM8G,YACjCpC,EAAO9B,YAAOtO,KAAKC,MAAMyL,MAAMuK,SAAS1H,iBAAiB,GAAG,cAC3B,GAAjCvO,KAAKC,MAAMuN,YAAYO,SACvBqC,EAAO9B,YAAOtO,KAAKC,MAAMuN,YAAY,GAAG,eAC5C,IAAIiB,EAAO7M,OAAOwU,WAClB,GAAIpW,KAAKsB,MAAM2T,YAAa,CACxB,IAAIqB,EAAUtW,KAAKC,MAAMyL,MAAMxI,GAC/BiS,EAAcwB,uBAAuB,CAAC,KAAM,SAAU,UAAU,SAAUzT,EAAI0T,EAAOhT,GACjF,IAAI2S,EAAcK,EAAM,GAAK,IAAMA,EAAM,GACrCC,EAAQ,EA8EZ,OA7EIpI,EAAKD,eAAe8H,IAChB7H,EAAK6H,GAASlG,GAAM5B,eAAe+H,KACnCM,EAAQpI,EAAK6H,GAASlG,GAAMmG,IAGhCM,EAAQ,IACRjT,EAAM,GAAK,GACXA,EAAM,GAAK,IACXA,EAAM,GAAK,GACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,GACXA,EAAM,GAAK,IACXA,EAAM,GAAK,GACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,GACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,GACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,GACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,GACXA,EAAM,GAAK,IACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,GACXA,EAAM,GAAK,GACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,GACXA,EAAM,GAAK,GACXA,EAAM,GAAK,KACJiT,EAAQ,IAAMA,GAAS,IAC9BjT,EAAM,GAAK,IACXA,EAAM,GAAK,GACXA,EAAM,GAAK,GACXA,EAAM,GAAK,KACJiT,GAAS,IAChBjT,EAAM,GAAK,GACXA,EAAM,GAAK,GACXA,EAAM,GAAK,GACXA,EAAM,GAAK,MAEXA,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,IACXA,EAAM,GAAK,MAGR,S,+BAKd,IAAD,OACEkT,EAAe9W,KAAKC,MAAM6W,aAC1BhL,EAAQ9L,KAAKC,MAAMyL,MAazB,MAZ2B,iBAAxB1L,KAAKsB,MAAMiD,SACPvE,KAAKsB,MAAMwT,YACVjP,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAItJ4D,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAG9H,SAAxBjC,KAAKsB,MAAMiD,UACfsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,yBAAK7B,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,yBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,UAChC,4BAAQxL,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,QAASzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,kBAC9G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,kBAMjE,yBAAKxD,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BACvK,uBAAGtR,UAAU,yBAIjBJ,KAAKsB,MAAM0R,cACX,yBAAK5S,UAAU,oCACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,mCAEJ,yBAAKA,UAAU,sBACX,4BAAQA,UAAU,+BAA+BoG,SAAU,SAACxD,GAAD,OAAK,EAAK+T,YAAY/T,IAAIuD,MAAOvG,KAAKsB,MAAMoE,MAAOrF,MAAO,CAACC,MAAM,SACxH,4BAAQiG,MAAM,QAAd,UAEIuQ,EAAanK,KACT,SAACjB,GAAD,OACI,4BAAQnF,MAAOmF,EAAME,WAAYF,EAAME,iBAM/D,yBAAKxL,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,+CAEJ,yBAAKA,UAAU,sBACX,yBAAK4F,MAAM,sBACP,2BAAOE,KAAK,WAAWhD,GAAI4I,EAAMF,UAAY,cAAezF,QAASnG,KAAKsB,MAAM2T,YAAatU,QAAS,SAACqC,GAAD,OAAK,EAAKgU,qBAChH,2BAAO3Q,IAAKyF,EAAMF,UAAY,oBAIrC,U,GArRAzK,IAAMC,WA4R7B+T,E,YACF,aAAc,IAAD,8BACT,+CACK7T,MAAQ,CACT8S,WAAU,EACV6C,cAAc,IAElB,EAAKC,qBAAuB,EAAKA,qBAAqBrW,KAA1B,gBANnB,E,+HAWT,GAAGb,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACxBA,IACCxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM2V,eACzCrV,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAU6C,cAAc,S,8BAIrD7G,GACJ,IAAI+G,EAAQjQ,KAAKkQ,MAAMhH,EAAK,IACxBiH,EAAQnQ,KAAKkQ,MAAMhH,EAAK,IAC5B,OAAOuD,KAAK2D,IAAIC,UAAUF,EAAQF,GAAS,IAAO,S,qCAGlD,IAAIzL,EAAQ1L,KAAKC,MAAMyL,MACnB8L,EAAOlJ,YAAO5C,EAAMiC,SAAS8J,iBAAiB,GAAG,cACjDC,EAAQ1X,KAAK2X,QAAQjM,EAAMiC,SAAS8J,kBAElCG,EAAI,CACN1R,KAAM,WACN2R,KAAMnM,EAAMwB,GACZsK,KAAMA,EACNE,MAAOA,GAELrH,EAAWC,OAAOC,KAAKqH,GAAGjL,KAAI,SAAU6D,GAC1C,OAAOC,mBAAmBD,GAAW,IAAMC,mBAAmBmH,EAAEpH,OACjElB,KAAK,KACH1N,OAAOwU,WAAW5H,eAAe9C,EAAMwB,UACjBQ,IAAnBhC,EAAMiF,UACND,MAAMhF,EAAMiF,SAAU,CACdC,OAAQ,OACRC,KAAMR,EACNS,QAAS,IAAIC,QAAQ,CACjB,eAAgB,wCAGvBC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,UAChBF,MAAK,SAAAvC,GACF6B,OAAOwH,OAAOlW,OAAOwU,WAAY3H,MAEpC0C,OAAM,SAAAnO,GACHoO,QAAQC,IAAIrO,GACZoO,QAAQC,IAAI,6C,2CAKX3F,GACjB,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACdoU,GAsDAxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM2V,eACzC3K,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAU6C,cAAc,YAzDjCvJ,IAAjBhC,EAAMqM,QACN/X,KAAKgY,eAETpW,OAAOO,KAAKC,MAAM6V,iBAAiB,CAC/BlL,IAAKnL,OAAO+M,aAAa7B,IACzBE,WAAYtB,EAAMwB,GAClBuE,YAAa7P,OAAOqQ,eAAeC,YACnCuC,SAAU,SAAUzR,EAAEiU,GAClB,GAAGjU,EAAE,CAmBD,GAlBAiU,EAAciB,aAAY,GAC1BjB,EAAckB,kBAAiB,SAASjV,EAAIkV,GACxCnB,EAAcR,eAAevT,GAAI,SAASwT,GACtC,IAAItG,EAAO9B,YAAO5C,EAAMiC,SAASY,iBAAiB,GAAG,cACX,GAAtCjC,EAAUrM,MAAMuN,YAAYO,SAC5BqC,EAAO9B,YAAOhC,EAAUrM,MAAMuN,YAAY,GAAG,eACjD,IAAIiB,EAAO7M,OAAOwU,WAElB,GADAM,EAAML,KAAK,GAAK,qBACZ5H,EAAKD,eAAe9C,EAAMwB,IAAK,CAC/B,IAAIqJ,EAAcG,EAAML,KAAK,GAAG,IAAIK,EAAML,KAAK,GAC3C5H,EAAK/C,EAAMwB,IAAIkD,GAAM5B,eAAe+H,KACpCG,EAAML,KAAK,GAAK5H,EAAK/C,EAAMwB,IAAIkD,GAAMmG,IAG7CjK,EAAUrM,MAAMoY,iBAChB/L,EAAUrM,MAAMuW,WAAWE,SAGhB,MAAhBhL,EAAM4M,SAAe,CACpB,IAAI/V,EAAM,IAAIX,OAAOY,WAAWkJ,EAAM4M,SAAS7C,IAAIC,EAAIhK,EAAM4M,SAAS7C,IAAIE,EAAIjK,EAAM4M,SAAS7C,IAAIG,GAC7FnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAM4M,SAAS7V,EAAEiT,EAAIhK,EAAM4M,SAAS7V,EAAEkT,EAAIjK,EAAM4M,SAAS7V,EAAEmT,GACrFlT,EAAK,IAAId,OAAOY,WAAWkJ,EAAM4M,SAASzC,GAAGH,EAAIhK,EAAM4M,SAASzC,GAAGF,EAAIjK,EAAM4M,SAASzC,GAAGD,GACzFjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,QAGrCsU,EAAc3D,OAElB1R,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCO,EAAUrM,MAAM0P,aAAajE,EAAMuL,GACnC7C,GAAaA,EACb9H,EAAUzJ,SAAS,CAAEuR,UAAWA,EAAW6C,cAAeA,SACrCvJ,IAAjBhC,EAAMqM,QACNzL,EAAUrM,MAAMsY,oBAAoB7M,EAAMqM,aACvBrK,IAAnBhC,EAAMiC,UACNrB,EAAUrM,MAAMkQ,mBAAmBzE,EAAMiC,eAExC3K,GACLpB,OAAOiG,SAASsG,MAAM,8CAAWzC,EAAMK,a,+BAalD,IAAD,OACEL,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,gBAAgBzO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAKkU,qBAAqBxL,MACrI,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GAlIxB5K,IAAMC,WC7R5BoX,E,YACF,aAAc,IAAD,8BACT,+CACKlX,MAAM,CACP0R,eAAc,EACdtN,MAAQ,OACRnB,SAAW,QALN,E,6EAQGmH,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAGR9L,KAAKC,MAAMyL,MAAM8G,YACvBc,S,oCAGbtT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,kCAEnCrO,GACR,IAAIe,EAAQf,EAAMrB,OAAOiD,MACrBkS,EAAezY,KAAKC,MAAMyL,MAAM8G,YACvB,SAAV9M,GACC+S,EAAa3C,iBACblU,OAAOO,KAAKC,MAAMyQ,iBAGlB4F,EAAa3C,eAAepQ,GAC5B9D,OAAOO,KAAKC,MAAMyQ,gBAEtB7S,KAAK6C,SAAS,CAAC6C,MAAQA,M,kCAEfb,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEiS,EAAe9W,KAAKC,MAAM6W,aAC1BhL,EAAQ9L,KAAKC,MAAMyL,MAOzB,MAN2B,gBAAxB1L,KAAKsB,MAAMiD,SACVsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAE1H,SAAxBjC,KAAKsB,MAAMiD,UACfsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,yBAAK7B,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,qBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,UAChC,4BAAQxL,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,QAASzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,iBAC9G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,kBAMjE,yBAAKxD,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BACvK,uBAAGtR,UAAU,yBAIjBJ,KAAKsB,MAAM0R,cACX,yBAAK5S,UAAU,oCACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,mCAEJ,yBAAKA,UAAU,sBACX,4BAAQA,UAAU,+BAA+BoG,SAAU,SAACxD,GAAD,OAAK,EAAK+T,YAAY/T,IAAIuD,MAAOvG,KAAKsB,MAAMoE,MAAOrF,MAAO,CAACC,MAAM,SACxH,4BAAQiG,MAAM,QAAd,UAEIuQ,EAAanK,KACT,SAACjB,GAAD,OACI,4BAAQnF,MAAOmF,EAAME,WAAYF,EAAME,kBAM1D,U,GA9FDzK,IAAMC,WAqG5BqX,E,YACF,aAAc,IAAD,8BACT,+CACKnX,MAAQ,CACT8S,WAAU,EACVqE,aAAc,GACd3L,IAAKlL,OAAO+M,aAAa7B,IACzBoF,YAAatQ,OAAO+M,aAAauD,YACjCwG,MAAM,IAEV,EAAKC,oBAAsB,EAAKA,oBAAoB9X,KAAzB,gBATlB,E,iFAYTb,KAAK6C,SAAS,CACViK,IAAK9M,KAAKC,MAAM6M,IAChBoF,YAAalS,KAAKC,MAAMiS,YACxBwG,MAAO1Y,KAAKC,MAAMyY,U,2CAItB,GAAG1Y,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACxBA,IACCxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMmX,cACzC7W,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAUqE,aAAa,S,0CAIxC/M,GAChB,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACboU,GA0CDxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMmX,cACzCnM,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUqE,aAAa,MA7CrD7W,OAAOO,KAAKC,MAAMwW,gBAAgB,CAC9B7L,IAAK/M,KAAKsB,MAAMwL,IAChBE,WAAYtB,EAAMwB,GAClBuE,YAAazR,KAAKsB,MAAM4Q,YACxB2G,MAAO7Y,KAAKsB,MAAMoX,MAClBjE,SAAU,SAAUzR,EAAGyV,GAEnB,GAAIzV,EACJ,CAQI,GANoB,MAAhB0I,EAAMoN,QAENL,EAAaM,UAAUrN,EAAMoN,OAAOpD,EAAGhK,EAAMoN,OAAOnD,EAAGjK,EAAMoN,OAAOlD,GAIlD,MAAlBlK,EAAM4M,eAA2C5K,IAAvBhC,EAAM4M,SAAS7C,IAC7C,CACI,IAAIlT,EAAM,IAAIX,OAAOY,WAAWkJ,EAAM4M,SAAS7C,IAAIC,EAAGhK,EAAM4M,SAAS7C,IAAIE,EAAGjK,EAAM4M,SAAS7C,IAAIG,GAC3FnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAM4M,SAAS7V,EAAEiT,EAAGhK,EAAM4M,SAAS7V,EAAEkT,EAAGjK,EAAM4M,SAAS7V,EAAEmT,GACnFlT,EAAK,IAAId,OAAOY,WAAWkJ,EAAM4M,SAASzC,GAAGH,EAAGhK,EAAM4M,SAASzC,GAAGF,EAAGjK,EAAM4M,SAASzC,GAAGD,GACvFjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAKE,EAAGC,GAC1Cd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,QAIrC8V,EAAanF,OAGjB1R,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCO,EAAUrM,MAAM0P,aAAajE,EAAM+M,GACnCrE,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUqE,aAAaA,SAEhDzV,GACLpB,OAAOiG,SAASsG,MAAM,8CAAWzC,EAAMK,Y,+BAalD,IAAD,OACEL,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,eAAezO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAK2V,oBAAoBjN,MACnI,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GAvFzB5K,IAAMC,W,wBCpG3B4X,E,YACF,aAAc,IAAD,8BACT,+CACK1X,MAAM,CACP0R,eAAc,EACdtN,MAAQ,OACRnB,SAAW,QALN,E,6EAQGmH,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAGK9L,KAAKC,MAAMyL,MAAM8G,YACvBc,S,oCAG1BtT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,kCAEnCrO,GACR,IAAIe,EAAQf,EAAMrB,OAAOiD,MACrB0S,EAA4BjZ,KAAKC,MAAMyL,MAAM8G,YACpC,SAAV9M,GACCuT,EAA0BnD,iBAC1BlU,OAAOO,KAAKC,MAAMyQ,iBAGlBoG,EAA0BnD,eAAepQ,GACzC9D,OAAOO,KAAKC,MAAMyQ,gBAEtB7S,KAAK6C,SAAS,CAAC6C,MAAQA,M,kCAEfb,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEiS,EAAe9W,KAAKC,MAAM6W,aAC1BhL,EAAQ9L,KAAKC,MAAMyL,MASzB,MAR4B,2BAAxB1L,KAAKsB,MAAMiD,UAEXsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAE9H,SAAxBjC,KAAKsB,MAAMiD,UAEXsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,yBAAK7B,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,qBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,UAChC,4BAAQxL,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,QAASzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,iBAC9G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,kBAMjE,yBAAKxD,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BACvK,uBAAGtR,UAAU,yBAIjBJ,KAAKsB,MAAM0R,cACX,yBAAK5S,UAAU,oCACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,mCAEJ,yBAAKA,UAAU,sBACX,4BAAQA,UAAU,+BAA+BoG,SAAU,SAACxD,GAAD,OAAK,EAAK+T,YAAY/T,IAAIuD,MAAOvG,KAAKsB,MAAMoE,MAAOrF,MAAO,CAACC,MAAM,SACxH,4BAAQiG,MAAM,QAAd,UAEIuQ,EAAanK,KACT,SAACjB,GAAD,OACI,4BAAQnF,MAAOmF,EAAME,WAAYF,EAAME,kBAM1D,U,GAhGUzK,IAAMC,WAuGvC6X,E,YACF,aACC,IAAD,uBACI,+CACK3X,MAAQ,CACT8S,WAAU,EACV6E,0BAA0B,IAE9B,EAAKC,iCAAmC,EAAKA,iCAAiCrY,KAAtC,gBAExC,EAAKsY,cAAgB,CACjB,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GAGJ,EAAKC,gBAAkB,CACnB,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aAIJ,EAAKC,SAAW,KAChB,EAAKC,UAAY,KAEjB,EAAKC,OAAS,GACd,IAAItS,EAAO,IAAIC,KAnCnB,OAoCI,EAAKqS,OAAOtM,KAAKhG,GAEjB,EAAKuS,gBAAkB,KACvB,EAAKC,sBAAwB,KAvCjC,E,kFA2CI,GAAIzZ,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MACzD,CACI,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACvBA,IAGApU,KAAKqZ,SAAShP,MAAO,EACrBrK,KAAKqZ,SAAS5N,QAAU,EACxBzL,KAAKwZ,gBAAgBE,OACrB1Z,KAAKyZ,sBAAsBC,OAG3B9X,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAU6E,0BAA0B,S,mCAItDU,EAAiBC,EAAa1W,G,0FAGZ,OAAzB0W,EAAY1W,GAAIuL,K,wBAEZ1B,EAAM,2CAA6C4M,EAAgBzW,G,mBACtD2W,YAAQ9M,I,cAArB+M,E,0BACcA,EAAKC,Y,YAAnBC,E,QAEMC,c,4CACOD,EAAME,W,QAAnBzL,E,0DAEauL,EAAMG,e,QAAnB1L,E,eACJmL,EAAY1W,GAAIuL,KAAOA,EAAK,GAC5BmL,EAAY1W,GAAI8W,MAAQA,EACxBJ,EAAY1W,GAAIkX,SAAWpa,KAAKuZ,OAAO,GAAGc,UAAY,KAASnX,E,iCAG5D0W,EAAY1W,I,kCAGnBkO,QAAQC,IAAI,gCAAsC,K,sGAG/BsI,EAAiBC,G,0FAEpCU,EAAS,GAGJ7M,EAAI,E,YAAGA,EAAImM,EAAY7L,Q,2CAEL/N,KAAKua,aAAaZ,EAAiBC,EAAanM,I,OAAnE+M,E,OACJF,EAAOrN,KAAKuN,EAAW/L,MAEd,GAALhB,IAEIgN,EAAW,IAAIvT,KAAKsT,EAAWJ,UACnCpa,KAAKuZ,OAAOtM,KAAKwN,I,OARehN,I,uBAapC+M,EAAaZ,EAAY,GACzBtZ,EAAQka,EAAWR,MAAMU,WACzBna,EAASia,EAAWR,MAAMW,YAC1BC,EAAOJ,EAAWR,MAAMa,iBACxBC,EAAW,IAAIlZ,OAAOmZ,SAASH,EAAK,GAAIA,EAAK,IAC7CI,EAAW,IAAIpZ,OAAOmZ,SAASH,EAAK,GAAIA,EAAK,IACjDhZ,OAAOqZ,gBAAgBC,SAAS,KAAM,KAAMJ,GAC5ClZ,OAAOqZ,gBAAgBC,SAAS,KAAM,KAAMF,GAI5Chb,KAAKsZ,UAAY,CACbtL,UAAW,QACXmN,OAAQb,EACRc,SAAU,IAAIxZ,OAAOyZ,YAAYP,EAASpF,EAAGoF,EAASnF,EAAGqF,EAAStF,EAAGsF,EAASrF,GAC9ErV,MAAOA,EACPC,OAAQA,EACR+a,YAAa,IACbrU,KAAMjH,KAAKuZ,OACXgC,wBAAwB,EACxBC,mBAAoBxb,KAAKmZ,cACzBsC,qBAAsBzb,KAAKoZ,gBAC3BsC,UAAW,KACXC,QAAQ,GAGZ3b,KAAKqZ,SAAWzX,OAAOO,KAAKC,MAAMwZ,oCAAoC5b,KAAKsZ,W,yGAExC5N,G,+FAE/B0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACboU,E,oBAEqB,OAAlBpU,KAAKqZ,S,iBAYL,IARSwC,EAAT,SAAoBlK,GAChB3R,KAAK2R,KAAOA,EACZ3R,KAAKyO,KAAO,KACZzO,KAAKga,MAAQ,KACbha,KAAKoa,SAAW,MANhBT,EAAkBjO,EAAMoQ,cASxBlC,EAAc,GACTnM,EAAI,EAAGA,EAAIkM,EAAgB5L,OAAQN,IACpCsO,EAAY,IAAIF,EAAWlC,EAAgBlM,IAC/CmM,EAAY3M,KAAK8O,G,2BAGf/b,KAAKgc,qBAAqBrC,EAAiBC,I,QAGjD5Z,KAAKwZ,gBAAkB,IAAI5X,OAAOC,GAAGoa,OAAOC,SAAS,CAAEC,KAAMva,OAAOO,KAAKC,MAAOga,UAAWpc,KAAKuZ,OAAO,GAAGc,UAAWgC,SAAUrc,KAAKuZ,OAAO,GAAGc,UAAY,MAAUra,KAAKuZ,OAAOxL,OAAS,GAAIuO,UAAU,IACvMtc,KAAKyZ,sBAAwB,IAAI7X,OAAOC,GAAGoa,OAAOM,eAAe,CAAEJ,KAAMva,OAAOO,KAAKC,MAAOoa,SAAUxc,KAAKwZ,gBAAiBkC,UAAW,IAAQe,MAAM,IACrJzc,KAAKwZ,gBAAgBkD,QAAQ1c,KAAKqZ,U,wBAIlCrZ,KAAKqZ,SAAShP,MAAO,EACrBrK,KAAKqZ,SAAS5N,QAAU,EACxBzL,KAAKwZ,gBAAgBnP,OACrBrK,KAAKyZ,sBAAsBpP,O,QAIT,MAAlBqB,EAAM4M,WAEF/V,EAAM,IAAIX,OAAOY,WAAWkJ,EAAM4M,SAAS7C,IAAIC,EAAGhK,EAAM4M,SAAS7C,IAAIE,EAAGjK,EAAM4M,SAAS7C,IAAIG,GAC3FnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAM4M,SAAS7V,EAAEiT,EAAGhK,EAAM4M,SAAS7V,EAAEkT,EAAGjK,EAAM4M,SAAS7V,EAAEmT,GACnFlT,EAAK,IAAId,OAAOY,WAAWkJ,EAAM4M,SAASzC,GAAGH,EAAGhK,EAAM4M,SAASzC,GAAGF,EAAGjK,EAAM4M,SAASzC,GAAGD,GACvFjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAKE,EAAGC,GAC1Cd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,IAIzCf,OAAOiG,SAASC,QAAQ,uCAAW4D,EAAMK,OACzCO,EAAUrM,MAAM0P,aAAajE,EAAOuN,GACpC7E,GAAaA,EACb9H,EAAUzJ,SAAS,CAAEuR,UAAWA,EAAW6E,0BAA2BA,I,wBAKtEjZ,KAAKqZ,SAAShP,MAAO,EACrBrK,KAAKqZ,SAAS5N,QAAU,EACxBzL,KAAKwZ,gBAAgBE,OACrB1Z,KAAKyZ,sBAAsBC,OAG3BpN,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAAEuR,UAAWA,EAAW6E,0BAA2B,K,iFAGrE,IAAD,OACEvN,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,4BAA4BzO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAKkW,iCAAiCxN,MAC7J,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GA/MZ5K,IAAMC,WCvGxCub,E,YACF,aAAc,IAAD,8BACT,+CACKrb,MAAM,CACP0R,eAAc,EACdtN,MAAQ,OACRnB,SAAW,QALN,E,6EAQGmH,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAGc9L,KAAKC,MAAMyL,MAAM8G,YACvBc,S,oCAGnCtT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,kCAEnCrO,GACR,IAAIe,EAAQf,EAAMrB,OAAOiD,MACrBqW,EAAqC5c,KAAKC,MAAMyL,MAAM8G,YAC7C,SAAV9M,GACCkX,EAAmC9G,iBACnClU,OAAOO,KAAKC,MAAMyQ,iBAGlB+J,EAAmC9G,eAAepQ,GAClD9D,OAAOO,KAAKC,MAAMyQ,gBAEtB7S,KAAK6C,SAAS,CAAC6C,MAAQA,M,kCAEfb,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEiS,EAAe9W,KAAKC,MAAM6W,aAC1BhL,EAAQ9L,KAAKC,MAAMyL,MASzB,MAR4B,2BAAxB1L,KAAKsB,MAAMiD,UAEXsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAE9H,SAAxBjC,KAAKsB,MAAMiD,UAEXsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,yBAAK7B,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,qBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,UAChC,4BAAQxL,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,QAASzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,iBAC9G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,kBAMjE,yBAAKxD,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BACvK,uBAAGtR,UAAU,yBAIjBJ,KAAKsB,MAAM0R,cACX,yBAAK5S,UAAU,oCACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,mCAEJ,yBAAKA,UAAU,sBACX,4BAAQA,UAAU,+BAA+BoG,SAAU,SAACxD,GAAD,OAAK,EAAK+T,YAAY/T,IAAIuD,MAAOvG,KAAKsB,MAAMoE,MAAOrF,MAAO,CAACC,MAAM,SACxH,4BAAQiG,MAAM,QAAd,UAEIuQ,EAAanK,KACT,SAACjB,GAAD,OACI,4BAAQnF,MAAOmF,EAAME,WAAYF,EAAME,kBAM1D,U,GAhGmBzK,IAAMC,WAuGhDwb,E,YACF,aACC,IAAD,uBACI,+CACKtb,MAAQ,CACT8S,WAAU,EACVwI,mCAAmC,IAEvC,EAAKC,0CAA4C,EAAKA,0CAA0Chc,KAA/C,gBAEjD,EAAKsY,cAAgB,CACjB,EACA,GACA,EACA,EACA,EACA,EACA,GAGJ,EAAKC,gBAAkB,CACnB,YACA,YACA,YACA,YACA,YACA,YACA,aAIJ,EAAKC,SAAW,KAChB,EAAKC,UAAY,KAEjB,EAAKC,OAAS,GACd,IAAItS,EAAO,IAAIC,KAjCnB,OAkCI,EAAKqS,OAAOtM,KAAKhG,GAEjB,EAAKuS,gBAAkB,KACvB,EAAKC,sBAAwB,KArCjC,E,kFAyCI,GAAIzZ,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MACzD,CACI,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACvBA,IAGApU,KAAKqZ,SAAShP,MAAO,EACrBrK,KAAKqZ,SAAS5N,QAAU,EACxBzL,KAAKwZ,gBAAgBE,OACrB1Z,KAAKyZ,sBAAsBC,OAG3B9X,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAUwI,mCAAmC,S,qCAInE7P,GAEX,IAAI+P,EAAS/P,EAAIgQ,MAAM,KAEvB,OAAID,EAAO/O,OAAS,EAET+O,EAAO,IAId1L,QAAQC,IAAI,+BACL,M,uCAGEtE,GAEb,OAAO,IAAIiQ,SAAQ,SAAUC,EAASC,GAElC,IAAIC,EAAM,IAAIC,eACdD,EAAIzc,KAAK,OAAQqM,GAAK,GACtBoQ,EAAIE,aAAe,cACnBF,EAAIG,iBAAiB,gBAAiB,kCACtCH,EAAII,OAAS,SAAUC,GACfxd,KAAKyd,QAAU,KAAOzd,KAAKyd,OAAS,IACpCR,EAAQE,EAAIO,UAGZR,EAAO,CACHO,OAAQzd,KAAKyd,OACbE,WAAYR,EAAIQ,cAI5BR,EAAIS,QAAU,WACVV,EAAO,CACHO,OAAQzd,KAAKyd,OACbE,WAAYR,EAAIQ,cAGxBR,EAAIU,Y,mCAGOlE,EAAiBC,EAAa1W,G,0FAGZ,OAAzB0W,EAAY1W,GAAIuL,K,2CAEQzO,KAAK8d,iBAAiBlE,EAAY1W,GAAI6J,M,cAA1DgR,E,OACJnE,EAAY1W,GAAI6a,YAAcA,E,mBACbC,YAAgBD,I,cAA7BjE,E,2BACcA,EAAKC,Y,eAAnBC,E,2BACaA,EAAMG,e,QAAnB1L,E,OACJmL,EAAY1W,GAAIuL,KAAOA,EAAK,GAC5BmL,EAAY1W,GAAI8W,MAAQA,EACxBJ,EAAY1W,GAAIyO,KAAO3R,KAAKie,eAAerE,EAAY1W,GAAI6J,KAC3D6M,EAAY1W,GAAIkX,SAAWpa,KAAKuZ,OAAO,GAAGc,UAAY,KAASnX,E,iCAG5D0W,EAAY1W,I,kCAGnBkO,QAAQC,IAAI,gCAAsC,K,sGAG/BsI,EAAiBC,G,oFAEpCU,EAAS,GAGJ7M,EAAI,E,YAAGA,EAAImM,EAAY7L,Q,2CAEL/N,KAAKua,aAAaZ,EAAiBC,EAAanM,I,OAAnE+M,E,OACJF,EAAOrN,KAAKuN,EAAW/L,MAEd,GAALhB,GACAzN,KAAKuZ,OAAOtM,KAAKuN,EAAWJ,U,OANI3M,I,uBAUpC+M,EAAaZ,EAAY,GACzBtZ,EAAQka,EAAWR,MAAMU,WACzBna,EAASia,EAAWR,MAAMW,YAC1BC,EAAOJ,EAAWR,MAAMa,iBAG5B7a,KAAKsZ,UAAY,CACbtL,UAAW,QACXmN,OAAQb,EACRc,SAAU,IAAIxZ,OAAOyZ,YAAYT,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjEta,MAAOA,EACPC,OAAQA,EACR+a,YAAa,IACbrU,KAAMjH,KAAKuZ,OACXgC,wBAAwB,EAGxBG,UAAW,KACXC,QAAQ,GAGZ3b,KAAKqZ,SAAWzX,OAAOO,KAAKC,MAAMwZ,oCAAoC5b,KAAKsZ,W,kHAE/B5N,G,+FAExC0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACboU,E,oBAEqB,OAAlBpU,KAAKqZ,S,iBAeL,IAXSwC,EAAT,SAAoB9O,GAEhB/M,KAAK2R,KAAO,GACZ3R,KAAK+M,IAAMA,EACX/M,KAAKke,YAAc,KACnBle,KAAKyO,KAAO,KACZzO,KAAKga,MAAQ,KACbha,KAAKoa,SAAW,MAThBT,EAAkBjO,EAAMoQ,cAYxBlC,EAAc,GACTnM,EAAI,EAAGA,EAAIkM,EAAgB5L,OAAQN,IACpCsO,EAAY,IAAIF,EAAWlC,EAAgBlM,IAC/CmM,EAAY3M,KAAK8O,G,2BAGf/b,KAAKgc,qBAAqBrC,EAAiBC,I,QAGjD5Z,KAAKwZ,gBAAkB,IAAI5X,OAAOC,GAAGoa,OAAOC,SAAS,CAAEC,KAAMva,OAAOO,KAAKC,MAAOga,UAAWpc,KAAKuZ,OAAO,GAAGc,UAAWgC,SAAUrc,KAAKuZ,OAAO,GAAGc,UAAY,MAAUra,KAAKuZ,OAAOxL,OAAS,GAAIuO,UAAU,IACvMtc,KAAKyZ,sBAAwB,IAAI7X,OAAOC,GAAGoa,OAAOM,eAAe,CAAEJ,KAAMva,OAAOO,KAAKC,MAAOoa,SAAUxc,KAAKwZ,gBAAiBkC,UAAW,IAAQe,MAAM,IACrJzc,KAAKwZ,gBAAgBkD,QAAQ1c,KAAKqZ,U,wBAIlCrZ,KAAKqZ,SAAShP,MAAO,EACrBrK,KAAKqZ,SAAS5N,QAAU,EACxBzL,KAAKwZ,gBAAkB,IAAI5X,OAAOC,GAAGoa,OAAOC,SAAS,CAAEC,KAAMva,OAAOO,KAAKC,MAAOga,UAAWpc,KAAKuZ,OAAO,GAAGc,UAAWgC,SAAUrc,KAAKuZ,OAAO,GAAGc,UAAY,MAAUra,KAAKuZ,OAAOxL,OAAS,GAAIuO,UAAU,IACvMtc,KAAKyZ,sBAAwB,IAAI7X,OAAOC,GAAGoa,OAAOM,eAAe,CAAEJ,KAAMva,OAAOO,KAAKC,MAAOoa,SAAUxc,KAAKwZ,gBAAiBkC,UAAW,IAAQe,MAAM,IACrJzc,KAAKwZ,gBAAgBkD,QAAQ1c,KAAKqZ,U,QAIhB,MAAlB3N,EAAM4M,WAEF/V,EAAM,IAAIX,OAAOY,WAAWkJ,EAAM4M,SAAS7C,IAAIC,EAAGhK,EAAM4M,SAAS7C,IAAIE,EAAGjK,EAAM4M,SAAS7C,IAAIG,GAC3FnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAM4M,SAAS7V,EAAEiT,EAAGhK,EAAM4M,SAAS7V,EAAEkT,EAAGjK,EAAM4M,SAAS7V,EAAEmT,GACnFlT,EAAK,IAAId,OAAOY,WAAWkJ,EAAM4M,SAASzC,GAAGH,EAAGhK,EAAM4M,SAASzC,GAAGF,EAAGjK,EAAM4M,SAASzC,GAAGD,GACvFjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAKE,EAAGC,GAC1Cd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,IAIzCf,OAAOiG,SAASC,QAAQ,uCAAW4D,EAAMK,OACzCO,EAAUrM,MAAM0P,aAAajE,EAAOkR,GACpCxI,GAAaA,EACb9H,EAAUzJ,SAAS,CAAEuR,UAAWA,EAAWwI,mCAAoCA,I,wBAK/E5c,KAAKqZ,SAAShP,MAAO,EACrBrK,KAAKqZ,SAAS5N,QAAU,EACxBzL,KAAKwZ,gBAAgB2E,SACrBne,KAAKyZ,sBAAsB0E,SAG3B7R,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAAEuR,UAAWA,EAAWwI,mCAAoC,K,iFAG9E,IAAD,OACElR,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,qCAAqCzO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAK6Z,0CAA0CnR,MAC/K,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GAjPH5K,IAAMC,WCxGjDgd,E,YACF,aAAc,IAAD,8BACT,+CACK9c,MAAM,CACP0R,eAAc,EACdtN,MAAQ,OACRnB,SAAW,QALN,E,6EAQGmH,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAGN9L,KAAKC,MAAMyL,MAAM8G,YACvBc,S,oCAGftT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,kCAEnCrO,GACR,IAAIe,EAAQf,EAAMrB,OAAOiD,MACrB8X,EAAiBre,KAAKC,MAAMyL,MAAM8G,YACzB,SAAV9M,GACC2Y,EAAevI,iBACflU,OAAOO,KAAKC,MAAMyQ,iBAGlBwL,EAAevI,eAAepQ,GAC9B9D,OAAOO,KAAKC,MAAMyQ,gBAEtB7S,KAAK6C,SAAS,CAAC6C,MAAQA,M,kCAEfb,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEiS,EAAe9W,KAAKC,MAAM6W,aAC1BhL,EAAQ9L,KAAKC,MAAMyL,MAOzB,MAN2B,kBAAxB1L,KAAKsB,MAAMiD,SACVsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAE1H,SAAxBjC,KAAKsB,MAAMiD,UACfsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,yBAAK7B,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,qBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,UAChC,4BAAQxL,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,QAASzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,mBAC9G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,kBAMjE,yBAAKxD,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BACvK,uBAAGtR,UAAU,yBAIjBJ,KAAKsB,MAAM0R,cACX,yBAAK5S,UAAU,oCACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,mCAEJ,yBAAKA,UAAU,sBACX,4BAAQA,UAAU,+BAA+BoG,SAAU,SAACxD,GAAD,OAAK,EAAK+T,YAAY/T,IAAIuD,MAAOvG,KAAKsB,MAAMoE,MAAOrF,MAAO,CAACC,MAAM,SACxH,4BAAQiG,MAAM,QAAd,UAEIuQ,EAAanK,KACT,SAACjB,GAAD,OACI,4BAAQnF,MAAOmF,EAAME,WAAYF,EAAME,kBAM1D,U,GA9FCzK,IAAMC,WAqG9Bid,E,YACF,aACC,IAAD,8BACI,+CACK/c,MAAQ,CACT8S,WAAU,EACViK,eAAe,IAEnB,EAAKC,sBAAwB,EAAKA,sBAAsBzd,KAA3B,gBAG7B,EAAK2Y,gBAAkB,KACvB,EAAKC,sBAAwB,KAE7B,EAAK8E,SAAW,KAChB,EAAKC,OAAS,GACd,EAAKC,YAAa,IAAIvX,MAAOmT,UAC7B,EAAKqE,SAAW,EAAKD,WAAa,IAftC,E,kFAmBI,GAAGze,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACvBA,IAGApU,KAAKwZ,gBAAgBE,OACrB1Z,KAAKyZ,sBAAsBC,OAG3B9X,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM+c,gBACzCzc,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAUiK,eAAe,S,oCAO1D,IAAIM,EAA4D,MAAnD3e,KAAKwZ,gBAAgBoF,SAAW5e,KAAKye,YAElD,GAA0B,OAAtBze,KAAK6e,aAAuB,CAE5B,IAAIzG,EAAM,IAAIxW,OAAOmZ,SAAS,mBAAoB,SAAU,KAC5DnZ,OAAOqZ,gBAAgBC,SAAS,KAAM,KAAM9C,GAE5CA,EAAI1C,GAAK/B,KAAKmL,IAAK9e,KAAKwe,OAAS,IAAO7K,KAAKoL,GAAK,GAAKJ,EAAQ,MAC/DvG,EAAIzC,GAAKhC,KAAKqL,IAAKhf,KAAKwe,OAAS,IAAO7K,KAAKoL,GAAK,GAAKJ,EAAQ,MAE/D/c,OAAOqZ,gBAAgBC,SAAS,KAAM,KAAM9C,GAC5CpY,KAAKue,SAASU,OAAO,CAAEzZ,SAAU4S,O,qCAMrC,IAAI8G,EAAStd,OAAOO,KAAKC,MAAM+c,OAAO/G,IACtCxW,OAAOqZ,gBAAgBC,SAAS,KAAM,KAAMgE,GAC5CA,EAAOxJ,GAAmD,EAA9C/B,KAAKmL,IAAK9e,KAAKwe,OAAS,IAAO7K,KAAKoL,GAAK,GAAS,MAC9DG,EAAOvJ,GAAmD,EAA9ChC,KAAKqL,IAAKhf,KAAKwe,OAAS,IAAO7K,KAAKoL,GAAK,GAAS,MAE9Dnd,OAAOqZ,gBAAgBC,SAAS,KAAM,KAAMgE,GAE5C,IAAIE,EAAIxd,OAAOO,KAAKC,MAAM+c,OAAOC,EAC7BC,EAAKzd,OAAOO,KAAKC,MAAM+c,OAAOE,GAC9BF,EAAS,IAAIvd,OAAOC,GAAGc,OAAOuc,EAAQE,EAAGC,GAC7Czd,OAAOO,KAAKC,MAAMQ,WAAWuc,GAAQ,K,mCAE5B/O,GAETxO,OAAOO,KAAKC,MAAMyQ,eAClBjR,OAAOO,KAAKC,MAAMkd,wBAAwBC,cAC1C3d,OAAO4d,sBAAsB5d,OAAOO,KAAKC,MAAMkd,wBAAwBzM,gB,qCAMvE,IAAMvG,EAAYtM,KAElB4B,OAAOO,KAAKC,MAAMqd,aAAa,CAC3BC,MAAO1f,KAAKye,WACZkB,IAAK3f,KAAK0e,SACV5d,MAAO,uCACP8e,QAAS,WACLtT,EAAUuG,gBAEdgN,QAAS,WACL,IAAIzH,EAAM,IAAIxW,OAAOmZ,SAAS,mBAAoB,SAAU,KAC5DzO,EAAUiS,SAASU,OAAO,CAAEzZ,SAAU4S,OAI9CpY,KAAKwZ,gBAAgBsG,iBAAiB,QAAQ,WAAW1O,QAAQC,IAAI,iCACrErR,KAAKyZ,sBAAsBqG,iBAAiB,QAAQ,WAAW1O,QAAQC,IAAI,iCAC3ErR,KAAKyZ,sBAAsBqG,iBAAiB,SAAS,WAAW1O,QAAQC,IAAI,oC,sCAI5ED,QAAQC,IAAI,qB,4CAGM3F,GAClB,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACboU,GAkEDpU,KAAKwZ,gBAAgBE,OACrB1Z,KAAKyZ,sBAAsBC,OAG3B9X,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM+c,gBACzC/R,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUiK,eAAe,MAxEvDzc,OAAOO,KAAKC,MAAM2d,eAAe,CAC7B/R,UAAW,YACXyG,SAAU,SAAUzR,EAAGqb,GAEnB,GAAIrb,EACJ,CA+BI,GA9BApB,OAAOO,KAAKC,MAAMkd,wBAA0BhT,EAG5CA,EAAUiS,SAAWF,EAAe2B,cAAc,CAC9Cxa,SAAU,IAAI5D,OAAOmZ,SAAS,mBAAoB,SAAU,KAC5Dha,IAAK,8BACLiU,MAAO,GACPiL,OAAQ,CAAEvK,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGsK,EAAG,OAInC5T,EAAUkN,gBAAkB,IAAI5X,OAAOC,GAAGoa,OAAOC,SAAS,CACtDC,KAAMva,OAAOO,KAAKC,MAClB/B,MAAO,CAAEI,KAAM,QAASmF,OAAQ,OAAQtF,MAAO,sBAC/C8b,UAAW9P,EAAUmS,WAAYpC,SAAU/P,EAAUoS,SAAUpC,UAAU,IAE7EhQ,EAAUmN,sBAAwB,IAAI7X,OAAOC,GAAGoa,OAAOM,eAAe,CAClEJ,KAAMva,OAAOO,KAAKC,MAAOoa,SAAUlQ,EAAUkN,gBAAiBkC,UAAW,EAAGe,MAAM,EAAM0D,aAAc,GAAIC,aAAc,EAAGC,cAAc,GAAKC,kBAAmB,GACjKjgB,MAAO,CAAEI,KAAM,OAAQmF,OAAQ,UAEnC0G,EAAUiU,eAIU,MAAhB7U,EAAMoN,QAENuF,EAAetF,UAAUrN,EAAMoN,OAAOpD,EAAGhK,EAAMoN,OAAOnD,EAAGjK,EAAMoN,OAAOlD,GAIpD,MAAlBlK,EAAM4M,SACV,CACI,IAAI/V,EAAM,IAAIX,OAAOY,WAAWkJ,EAAM4M,SAAS7C,IAAIC,EAAGhK,EAAM4M,SAAS7C,IAAIE,EAAGjK,EAAM4M,SAAS7C,IAAIG,GAC3FnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAM4M,SAAS7V,EAAEiT,EAAGhK,EAAM4M,SAAS7V,EAAEkT,EAAGjK,EAAM4M,SAAS7V,EAAEmT,GACnFlT,EAAK,IAAId,OAAOY,WAAWkJ,EAAM4M,SAASzC,GAAGH,EAAGhK,EAAM4M,SAASzC,GAAGF,EAAGjK,EAAM4M,SAASzC,GAAGD,GACvFjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAKE,EAAGC,GAC1Cd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,QAIrC0b,EAAe/K,OAGnB1R,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCO,EAAUrM,MAAM0P,aAAajE,EAAM2S,GACnCjK,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUiK,eAAeA,SAElDrb,GACLpB,OAAOiG,SAASsG,MAAM,8CAAWzC,EAAMK,Y,+BAoBlD,IAAD,OACEL,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,iBAAiBzO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAKsb,sBAAsB5S,MACvI,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GA5LvB5K,IAAMC,WCrG7Bof,E,YACF,aAAc,IAAD,8BACT,+CACKlf,MAAM,CACP0R,eAAc,EACdyN,kBAAiB,EACjBlc,SAAW,QALN,E,6EAQGmH,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAG3B,GAAmC,MAAhC9L,KAAKC,MAAMyL,MAAM8J,cAAoB,CACpC,IAAIjT,EAAM,IAAIX,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIC,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIE,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIG,GAC7InT,EAAI,IAAIb,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEiT,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEkT,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEmT,GACrIlT,EAAK,IAAId,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGH,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGF,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGD,GACzIjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,OAErC,CACoB3C,KAAKC,MAAMyL,MAAM8G,YACvBc,U,oCAKlBtT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,6CAG3C,IAAI0N,EAAgB1gB,KAAKC,MAAMyL,MAAM8G,YACjCxS,KAAKsB,MAAMmf,iBAOXC,EAAcC,gBAAe,IAN7BD,EAAcC,gBAAe,GAC7BD,EAAcE,mBAAkB,GAChCF,EAAcG,yBAAyB,KAAM,GAC7CH,EAAcI,mBAAmB,GAAI,GAAI,KAK7C9gB,KAAK6C,SAAS,CAAC4d,kBAAkBzgB,KAAKsB,MAAMmf,qB,kCAEpC5b,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEiH,EAAQ9L,KAAKC,MAAMyL,MACnBqV,EAAoC,aAArBjV,EAAMkV,WAA2B,qBAAqB,8BAO3E,MAN2B,iBAAxBhhB,KAAKsB,MAAMiD,SACVsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAE1H,SAAxBjC,KAAKsB,MAAMiD,UACfsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,yBAAK7B,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,yBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,UAEX,aAArBE,EAAMkV,WACN,4BAAQ5gB,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,QAASzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,kBAC9G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,cACrC,SAM5B,yBAAKxD,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BACvK,uBAAGtR,UAAW2gB,MAIjB/gB,KAAKsB,MAAM0R,eAAoC,aAArBlH,EAAMkV,WACjC,yBAAK5gB,UAAU,oCACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,mCAEJ,yBAAKA,UAAU,sBACX,yBAAK4F,MAAM,sBACP,2BAAOE,KAAK,WAAWhD,GAAI4I,EAAMF,UAAY,mBAAoBzF,QAASnG,KAAKsB,MAAM2R,UAAWtS,QAAS,SAACqC,GAAD,OAAK,EAAKie,0BACnH,2BAAO5a,IAAKyF,EAAMF,UAAY,yBAIrC,U,GAtGAzK,IAAMC,WA8G7Bsf,E,YACF,aAAc,IAAD,8BACT,+CACKpf,MAAQ,CACT8S,WAAU,EACVsM,cAAc,MAElB,EAAKQ,qBAAuB,EAAKA,qBAAqBrgB,KAA1B,gBANnB,E,kFAST,GAAGb,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACxBA,IACCxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMof,eACzC9e,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAUsM,cAAc,W,2CAIxChV,GACjB,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACdoU,GA8BAxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMof,eACzCpU,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUsM,cAAc,MAjCtD9e,OAAOO,KAAKC,MAAM+e,iBAAiB,CAC/BpU,IAAKnL,OAAOqQ,eAAenF,IAC3BE,WAAYtB,EAAMwB,GAClBuE,YAAa7P,OAAOqQ,eAAeC,YACnCuC,SAAU,SAAUzR,EAAE0d,GAClB,GAAG1d,EAAE,CACD,GAAmB,MAAhB0I,EAAM4M,SAAe,CACpB,IAAI/V,EAAM,IAAIX,OAAOY,WAAWkJ,EAAM4M,SAAS7C,IAAIC,EAAIhK,EAAM4M,SAAS7C,IAAIE,EAAIjK,EAAM4M,SAAS7C,IAAIG,GAC7FnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAM4M,SAAS7V,EAAEiT,EAAIhK,EAAM4M,SAAS7V,EAAEkT,EAAIjK,EAAM4M,SAAS7V,EAAEmT,GACrFlT,EAAK,IAAId,OAAOY,WAAWkJ,EAAM4M,SAASzC,GAAGH,EAAIhK,EAAM4M,SAASzC,GAAGF,EAAIjK,EAAM4M,SAASzC,GAAGD,GACzFjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,QAGrC+d,EAAcpN,OAElB1R,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCnK,OAAOiG,SAASC,QAAQ,8FACxBwE,EAAUrM,MAAM0P,aAAajE,EAAMgV,GACnCtM,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUsM,cAAcA,SAEjD1d,GACLpB,OAAOiG,SAASsG,MAAM,8CAAWzC,EAAMK,Y,+BAalD,IAAD,OACEL,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,gBAAgBzO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAKke,qBAAqBxV,MACrI,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GAjExB5K,IAAMC,WC5G5BggB,E,YACF,aAAc,IAAD,8BACT,+CA2CJ5d,YAAc,WACV,EAAKX,SAAS,CAAEY,oBAAqB,EAAKnC,MAAMmC,sBA7CvC,EAgDbC,YAAc,WACV,EAAKb,SAAS,CAAEY,oBAAoB,KAjD3B,EAoDbE,aAAe,SAACC,GACZ,IAAI4O,EAAc,EAAKlR,MAAMkR,YACzB6O,EAAgB,EAAK/f,MAAM+f,cAC3BC,EAAgB,EAAKrhB,MAAMqhB,cAC3B1K,EAAQ,EAAKtV,MAAMsV,MACnB2K,EAAgB,EAAKthB,MAAMshB,cAC/B,EAAK1e,SAAS,CACVe,MAAOA,EAAMK,IACbC,SAASN,EAAMI,MAEnB,IAAI,IAAIyJ,EAAE,EAAEA,EAAE4T,EAActT,OAAON,IAC/B,GAAG4T,EAAc5T,GAAG+T,OAAS5K,EAAM4K,KAAK,CACpCH,EAAc5T,GAAGtJ,EAAIyS,EAAMzS,EAAIP,EAAMK,IAAIE,EACzCkd,EAAc5T,GAAGrJ,EAAIwS,EAAMxS,EAAIR,EAAMK,IAAIG,EACzCid,EAAc5T,GAAGpJ,EAAIuS,EAAMvS,EAAIT,EAAMK,IAAII,EACzCgd,EAAc5T,GAAGnJ,EAAIsS,EAAMtS,EAAkB,IAAdV,EAAMK,IAAIK,EACzC,MAGRkO,EAAYmE,uBAAuB,CAAC,WAAW,SAASzT,EAAIwT,EAAO9S,GAE/D,IADA,IAAI6d,GAAS,EACLhU,EAAI,EAAIA,EAAI4T,EAActT,OAASN,IACvC,GAAGiJ,EAAM,KAAO2K,EAAc5T,GAAGmJ,MAM7B,OALAhT,EAAM,GAAKyd,EAAc5T,GAAGtJ,EAC5BP,EAAM,GAAKyd,EAAc5T,GAAGrJ,EAC5BR,EAAM,GAAKyd,EAAc5T,GAAGpJ,EAC5BT,EAAM,GAAKyd,EAAc5T,GAAGnJ,EAC5Bmd,GAAS,EACFJ,EAAc5T,GAAGiU,OAGhC,IAAID,EAEA,OADA7d,EAAM,GAAK,EACJ0d,KAGfC,EAAcF,GACd,EAAKxe,SAAS,CACVwe,cAAcA,EACdzK,MAAMA,KAzFV,EAAKtV,MAAQ,CACTkR,YAAY,GACZ6O,cAAc,GACdzK,MAAM,GACNnT,oBAAoB,EACpBG,MAAO,CACHO,EAAG,IACHC,EAAG,EACHC,EAAG,EACHC,EAAG,KAEPJ,SAAS,WAbJ,E,iFAiBT,IAAIsO,EAAcxS,KAAKC,MAAMuS,YACzB6O,EAAgBrhB,KAAKC,MAAMohB,cAC3BC,EAAgBthB,KAAKC,MAAMqhB,cAC3B1K,EAAQ5W,KAAKC,MAAM2W,MACvBpE,EAAYmE,uBAAuB,CAAC,WAAW,SAASzT,EAAIwT,EAAO9S,GAE/D,IADA,IAAI6d,GAAS,EACLhU,EAAI,EAAIA,EAAI4T,EAActT,OAASN,IACvC,GAAGiJ,EAAM,KAAO2K,EAAc5T,GAAGmJ,MAM7B,OALAhT,EAAM,GAAKyd,EAAc5T,GAAGtJ,EAC5BP,EAAM,GAAKyd,EAAc5T,GAAGrJ,EAC5BR,EAAM,GAAKyd,EAAc5T,GAAGpJ,EAC5BT,EAAM,GAAKyd,EAAc5T,GAAGnJ,EAC5Bmd,GAAS,EACFJ,EAAc5T,GAAGiU,OAGhC,IAAID,EAEA,OADA7d,EAAM,GAAK,EACJ0d,KAGfthB,KAAK6C,SAAS,CACV2P,YAAYA,EACZ6O,cAAcA,EACdzK,MAAMA,M,sCA4DV,IALA,IAAIpE,EAAcxS,KAAKsB,MAAMkR,YACzB6O,EAAgBrhB,KAAKsB,MAAM+f,cAC3BC,EAAgBthB,KAAKC,MAAMqhB,cAC3B1K,EAAQ5W,KAAKsB,MAAMsV,MACnB2K,EAAgBvhB,KAAKC,MAAMshB,cACvB9T,EAAE,EAAEA,EAAE4T,EAActT,OAAON,IAC/B,GAAG4T,EAAc5T,GAAG+T,OAAS5K,EAAM4K,KAAK,CACpCH,EAAc5T,GAAGiU,OAAS9K,EAAM8K,QAAU9K,EAAM8K,OAChD,MAGRlP,EAAYmE,uBAAuB,CAAC,WAAW,SAASzT,EAAIwT,EAAO9S,GAE/D,IADA,IAAI6d,GAAS,EACLhU,EAAI,EAAIA,EAAI4T,EAActT,OAASN,IACvC,GAAGiJ,EAAM,KAAO2K,EAAc5T,GAAGmJ,MAM7B,OALAhT,EAAM,GAAKyd,EAAc5T,GAAGtJ,EAC5BP,EAAM,GAAKyd,EAAc5T,GAAGrJ,EAC5BR,EAAM,GAAKyd,EAAc5T,GAAGpJ,EAC5BT,EAAM,GAAKyd,EAAc5T,GAAGnJ,EAC5Bmd,GAAS,EACFJ,EAAc5T,GAAGiU,OAGhC,IAAID,EAEA,OADA7d,EAAM,GAAK,EACJ0d,KAGfC,EAAcF,GACdrhB,KAAK6C,SAAS,CACVwe,cAAcA,EACdzK,MAAMA,M,0CAUV,IALA,IAAIpE,EAAcxS,KAAKsB,MAAMkR,YACzB6O,EAAgBrhB,KAAKsB,MAAM+f,cAC3BC,EAAgBthB,KAAKC,MAAMqhB,cAC3B1K,EAAQ5W,KAAKsB,MAAMsV,MACnB+K,EAAiB3hB,KAAKC,MAAM0hB,eACxBlU,EAAE,EAAEA,EAAE4T,EAActT,OAAON,IAC/B,GAAG4T,EAAc5T,GAAG+T,OAAS5K,EAAM4K,KAAK,CACpCH,EAAcO,OAAOnU,EAAE,GACvB,MAGR+E,EAAYmE,uBAAuB,CAAC,WAAW,SAASzT,EAAIwT,EAAO9S,GAE/D,IADA,IAAI6d,GAAS,EACLhU,EAAI,EAAIA,EAAI4T,EAActT,OAASN,IACvC,GAAGiJ,EAAM,KAAO2K,EAAc5T,GAAGmJ,MAM7B,OALAhT,EAAM,GAAKyd,EAAc5T,GAAGtJ,EAC5BP,EAAM,GAAKyd,EAAc5T,GAAGrJ,EAC5BR,EAAM,GAAKyd,EAAc5T,GAAGpJ,EAC5BT,EAAM,GAAKyd,EAAc5T,GAAGnJ,EAC5Bmd,GAAS,EACFJ,EAAc5T,GAAGiU,OAGhC,IAAID,EAEA,OADA7d,EAAM,GAAK,EACJ0d,KAGfK,EAAeN,EAAczK,K,+BAGxB,IAAD,OACEF,EAAQ1W,KAAKC,MAAM2W,MACnB9R,EAASC,IAAS,CACpB,QAAW,CACTnB,MAAO,CACLtD,MAAO,OACPC,OAAQ,OACRyE,aAAc,MACdC,WAAW,QAAD,OAAWjF,KAAKsB,MAAMsC,MAAMO,EAA5B,aAAoCnE,KAAKsB,MAAMsC,MAAMQ,EAArD,aAA6DpE,KAAKsB,MAAMsC,MAAMS,EAA9E,aAAsFrE,KAAKsB,MAAMsC,MAAMU,EAAvG,MAEZY,OAAQ,CACNC,QAAS,MACT7E,MAAO,OACP2E,WAAY,OACZD,aAAc,OACdI,UAAW,2BACXC,QAAS,eACTC,OAAQ,WAEVC,QAAS,CACPC,SAAU,QACVhF,OAAQ,QAEVkF,MAAO,CACLF,SAAU,QACVG,IAAK,MACLF,MAAO,MACPG,OAAQ,MACRnF,KAAM,UAId,OACI,yBAAKL,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,SAAS4b,UAAU,WACtE,wBAAIzhB,UAAU,gBAAgBsW,EAAM8K,OAExC,yBAAKphB,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,yBAAK5F,MAAO,CAAC8C,UAAW,WACpB,yBAAK9C,MAAQyE,EAAOI,OAASvE,QAAUX,KAAKwD,aACxC,yBAAKnD,MAAQyE,EAAOlB,SAGpB5D,KAAKsB,MAAMmC,mBACP,yBAAKpD,MAAQyE,EAAOS,SAChB,yBAAKlF,MAAQyE,EAAOY,MAAQ/E,QAAUX,KAAK0D,cACvC,kBAAC,IAAD,CAAcE,MAAQ5D,KAAKsB,MAAMsC,MAAQ4C,SAAWxG,KAAK2D,gBACpD,OAI7B,yBAAKvD,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,4BAAQD,MAAM,0BAA0BrF,QAAS,SAACqC,GAAD,OAAK,EAAK8e,kBAEnD9hB,KAAKsB,MAAMsV,MAAM8K,OACjB,uBAAG1b,MAAM,cAAiB,uBAAGA,MAAM,kBAK/C,yBAAK5F,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,4BAAQD,MAAM,0BAA0BrF,QAAS,SAACqC,GAAD,OAAK,EAAK+e,sBACvD,uBAAG/b,MAAM,sB,GAlOJ7E,IAAMC,WA0O7B4gB,E,YACF,aAAc,IAAD,8BACT,+CACK1gB,MAAM,CACP0R,eAAc,EACdtN,MAAQ,OACRuc,UAAY,GACZZ,cAAgB,GAChBa,eAAiB,GACjBZ,eAAgB,EAChB/c,SAAW,QATN,E,iFAeT,IAFA,IAAI0d,EAAY,GACZE,EAAeniB,KAAKC,MAAMyL,MAAMyW,aAC5B1U,EAAE,EAAEA,EAAE0U,EAAapU,OAAON,IAC9BwU,EAAUhV,KACN,CACImV,KAAKD,EAAa1U,GAAG2U,KACrBC,MAAMF,EAAa1U,GAAG4U,QAIlCriB,KAAK6C,SAAS,CAACof,UAAUA,EAAUC,eAAeD,EAAU,O,sCAEhDvW,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAGV9L,KAAKC,MAAMyL,MAAM8G,YACvBc,S,oCAGXtT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,kCAEnCrO,GACR,IAAIe,EAAQf,EAAMrB,OAAOiD,MACrB+b,EAAatiB,KAAKC,MAAMyL,MAAM8G,YACrB,SAAV9M,GACC4c,EAAWxM,iBACXlU,OAAOO,KAAKC,MAAMyQ,iBAGlByP,EAAWxM,eAAepQ,GAC1B9D,OAAOO,KAAKC,MAAMyQ,gBAEtB7S,KAAK6C,SAAS,CAAC6C,MAAQA,M,wCAETf,GAGd,IAFA,IAAIsd,EAAYjiB,KAAKsB,MAAM2gB,UACvBC,EAAiB,GACbzU,EAAE,EAAEA,EAAEwU,EAAUlU,OAAON,IAC3B,GAAGwU,EAAUxU,GAAG4U,QAAU1d,EAAMrB,OAAOiD,MAGnC,OAFA2b,EAAiBD,EAAUxU,GAC3BzN,KAAK6C,SAAS,CAACqf,eAAeA,IACvB,O,oCAQf,IAHA,IAAID,EAAYjiB,KAAKsB,MAAM2gB,UACvBZ,EAAgBrhB,KAAKsB,MAAM+f,cAC3Ba,EAAiBliB,KAAKsB,MAAM4gB,eACxBzU,EAAE,EAAEA,EAAEwU,EAAUlU,OAAON,IAC3B,GAAGwU,EAAUxU,KAAOyU,EAgBhB,OAfAb,EAAcpU,KAAK,CACfuU,KAAKS,EAAUxU,GAAG2U,KAClBxL,MAAMqL,EAAUxU,GAAG4U,MACnBle,EAAE,IACFC,EAAE,EACFC,EAAE,EACFC,EAAE,IACFod,QAAO,IAEXO,EAAUL,OAAOnU,EAAE,GAEfyU,EADDD,EAAUxU,GACQwU,EAAUxU,GAEVwU,EAAU,GAC/BjiB,KAAK6C,SAAS,CAACof,UAAUA,EAAUZ,cAAcA,EAAca,eAAeA,IACvE,O,oCAILb,GACVrhB,KAAK6C,SAAS,CAACwe,cAAcA,M,qCAElBA,EAAczK,GACzB,IAAIqL,EAAYjiB,KAAKsB,MAAM2gB,UAC3BA,EAAUhV,KACN,CACImV,KAAKxL,EAAM4K,KACXa,MAAMzL,EAAMA,QAGpB5W,KAAK6C,SAAS,CAACwe,cAAcA,EAAcY,UAAUA,M,wCAGrD,IAAIX,GAAiBthB,KAAKsB,MAAMggB,cAC1B9O,EAAcxS,KAAKC,MAAMyL,MAAM8G,YACjC6O,EAAgBrhB,KAAKsB,MAAM+f,cAC/B7O,EAAYmE,uBAAuB,CAAC,WAAW,SAASzT,EAAIwT,EAAO9S,GAE/D,IADA,IAAI6d,GAAS,EACLhU,EAAI,EAAIA,EAAI4T,EAActT,OAASN,IACvC,GAAGiJ,EAAM,KAAO2K,EAAc5T,GAAGmJ,MAM7B,OALAhT,EAAM,GAAKyd,EAAc5T,GAAGtJ,EAC5BP,EAAM,GAAKyd,EAAc5T,GAAGrJ,EAC5BR,EAAM,GAAKyd,EAAc5T,GAAGpJ,EAC5BT,EAAM,GAAKyd,EAAc5T,GAAGnJ,EAC5Bmd,GAAS,EACFJ,EAAc5T,GAAGiU,OAGhC,IAAID,EAEA,OADA7d,EAAM,GAAK,EACJ0d,KAGfthB,KAAK6C,SAAS,CAACye,cAAcA,M,yCAQ7B,IALA,IAAIW,EAAY,GAEZE,EAAeniB,KAAKC,MAAMyL,MAAMyW,aAC9B3P,EAAcxS,KAAKC,MAAMyL,MAAM8G,YACjC8O,EAAgBthB,KAAKsB,MAAMggB,cACvB7T,EAAE,EAAEA,EAAE0U,EAAapU,OAAON,IAC9BwU,EAAUhV,KACN,CACImV,KAAKD,EAAa1U,GAAG2U,KACrBC,MAAMF,EAAa1U,GAAG4U,QAI9Bf,IACAA,GAAgB,GACpB9O,EAAYuD,4BACZ/V,KAAK6C,SAAS,CAACof,UAAUA,EAAUZ,cAff,GAe2CC,cAAcA,EAAcY,eAAeD,EAAU,O,kCAE5Gpd,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAGD0d,EAHA,OACEzL,EAAe9W,KAAKC,MAAM6W,aAC1BhL,EAAQ9L,KAAKC,MAAMyL,MAiFzB,OA9EI6W,EADDzW,EAAMyW,WAEL,yBAAKniB,UAAU,oCACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,uBAAuBC,MAAO,CAAC4F,UAAW,WACrD,wBAAI7F,UAAU,gBAAd,yCAEJ,yBAAKA,UAAU,wBACX,yBAAKA,UAAU,4BACX,4BAAQA,UAAU,0BAA0BoG,SAAU,SAACxD,GAAD,OAAK,EAAKwf,kBAAkBxf,KAE1EhD,KAAKsB,MAAM2gB,UAAUtV,KACjB,SAAC+J,GAAD,OACI,4BAAQnQ,MAAOmQ,EAAM2L,OAAQ3L,EAAM0L,UAInD,yBAAKhiB,UAAU,iBAAiBO,QAAS,SAACqC,GAAD,OAAK,EAAKyf,gBAC/C,uBAAGriB,UAAU,kBAMzBJ,KAAKsB,MAAM+f,cAAc1U,KACrB,SAACiK,GAAD,OACA,kBAAC,EAAD,CACIA,MAAOA,EACPpE,YAAa1G,EAAM0G,YACnB6O,cAAe,EAAK/f,MAAM+f,cAC1BC,cAAe,EAAKhgB,MAAMggB,cAC1BC,cAAe,SAACF,GAAD,OAAiB,EAAKE,cAAcF,IACnDM,eAAgB,SAACN,EAAczK,GAAf,OAAuB,EAAK+K,eAAeN,EAAczK,IACzExE,IAAKwE,EAAM4K,UAIvB,yBAAKphB,UAAU,WACX,yBAAKA,UAAU,uBAAuBC,MAAO,CAAC4F,UAAW,WAEjDjG,KAAKsB,MAAMggB,cACX,4BAAQtb,MAAM,0BAA0BrF,QAAS,SAACqC,GAAD,OAAK,EAAK0f,oBAA3D,gEAEA,4BAAQ1c,MAAM,uBAAuBrF,QAAS,SAACqC,GAAD,OAAK,EAAK0f,oBAAxD,iEAGR,yBAAKtiB,UAAU,wBACX,4BAAQ4F,MAAM,2BAA2BrF,QAAS,SAACqC,GAAD,OAAK,EAAK2f,qBAA5D,2CAOZ,yBAAKviB,UAAU,oCACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAqBC,MAAO,CAAC4F,UAAW,WACnD,wBAAI7F,UAAU,gBAAd,mCAEJ,yBAAKA,UAAU,sBACX,4BAAQA,UAAU,+BAA+BoG,SAAU,SAACxD,GAAD,OAAK,EAAK+T,YAAY/T,IAAIuD,MAAOvG,KAAKsB,MAAMoE,MAAOrF,MAAO,CAACC,MAAM,SACxH,4BAAQiG,MAAM,QAAd,UAEIuQ,EAAanK,KACT,SAACjB,GAAD,OACI,4BAAQnF,MAAOmF,EAAME,WAAYF,EAAME,kBAQ5C,cAAxB5L,KAAKsB,MAAMiD,SACVsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAE1H,SAAxBjC,KAAKsB,MAAMiD,UACfsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,yBAAK7B,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,2BAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,UAChC,4BAAQxL,UAAU,uCAAuCC,MAAO,CAAC+C,SAAS,QAASzC,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,eAC9G,uBAAGE,UAAU,kBAAkBC,MAAO,CAACuD,MAAM,kBAMjE,yBAAKxD,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BACvK,uBAAGtR,UAAU,yBAIjBJ,KAAKsB,MAAM0R,cAAeuP,EAAa,U,GAlQjCphB,IAAMC,WA2Q1BkhB,E,YACF,aAAc,IAAD,8BACT,+CACKhhB,MAAQ,CACT8S,WAAU,EACVkO,WAAW,IAEf,EAAKM,kBAAoB,EAAKA,kBAAkB/hB,KAAvB,gBANhB,E,kFAST,GAAGb,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACxBA,IACCxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMghB,YACzC1gB,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAUkO,WAAW,S,wCAIxC5W,GACd,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACdoU,GAoBAxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMghB,YACzChW,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUkO,WAAW,MAvBnD1gB,OAAOO,KAAKC,MAAMygB,cAAc,CAC5B9V,IAAKnL,OAAOqQ,eAAenF,IAC3BE,WAAYtB,EAAMwB,GAClBuE,YAAa7P,OAAOqQ,eAAeC,YACnCuC,SAAU,SAAUzR,EAAEsf,GACftf,GACCsf,EAAWhP,OACX1R,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCO,EAAUrM,MAAM0P,aAAajE,EAAM4W,GACnClO,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUkO,WAAWA,KAE9Ctf,GACLpB,OAAOiG,SAASsG,MAAM,8CAAWzC,EAAMK,Y,+BAalD,IAAD,OACEL,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,aAAazO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAK4f,kBAAkBlX,MAC/H,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GAvD3B5K,IAAMC,WCzfzB0hB,E,YACF,aAAc,IAAD,8BACT,+CACKxhB,MAAM,CACP0R,eAAc,EACdtN,MAAQ,OACRnB,SAAW,QALN,E,6EAQGmH,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAG3B,IAAIvJ,EAAM,IAAIX,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAMqX,SAASrN,EAAI1V,KAAKC,MAAMyL,MAAMqX,SAASpN,EAAI3V,KAAKC,MAAMyL,MAAMqX,SAASnN,GAClHnT,EAAI,IAAIb,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAMsX,OAAOtN,EAAI1V,KAAKC,MAAMyL,MAAMsX,OAAOrN,EAAI3V,KAAKC,MAAMyL,MAAMsX,OAAOpN,GAC1GlT,EAAK,IAAId,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAMuX,QAAQvN,EAAI1V,KAAKC,MAAMyL,MAAMuX,QAAQtN,EAAI3V,KAAKC,MAAMyL,MAAMuX,QAAQrN,GAC9GjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,K,kCAE7BgC,GACR,IAAIe,EAAQf,EAAMrB,OAAOiD,MACrB2c,EAAiBljB,KAAKC,MAAMyL,MAAM8G,YACzB,SAAV9M,GACCwd,EAAepN,iBACflU,OAAOO,KAAKC,MAAMyQ,iBAGlBqQ,EAAepN,eAAepQ,GAC9B9D,OAAOO,KAAKC,MAAMyQ,gBAEtB7S,KAAK6C,SAAS,CAAC6C,MAAQA,M,+BAElB,IAAD,OACEoG,EAAQ9L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,qBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,cAKhD,yBAAKxL,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAYuO,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BACrI,uBAAGtR,UAAU,uC,GA3DPe,IAAMC,WAkE9B8hB,E,YACF,aAAc,IAAD,8BACT,+CACK5hB,MAAQ,CACT8S,WAAU,EACV8O,eAAe,IAEnB,EAAKC,sBAAwB,EAAKA,sBAAsBtiB,KAA3B,gBANpB,E,kFAST,GAAGb,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACxBA,IACCxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM4hB,gBACzCthB,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAU8O,eAAe,S,4CAIxCxX,GAClB,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UAE3B,GAAIA,EA6BAxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM4hB,gBA9B3BljB,KA+BJC,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EAjCCpU,KAkCJ6C,SAAS,CAACuR,UAAUA,EAAU8O,eAAe,SAjC7C,CACV,IAAIE,EAAQxhB,OAAOO,KAAKC,MAAM2d,eAAe,CACzC/R,UAAYtC,EAAMK,QAElBsX,EAAQ,GACZA,EAAMC,UAAY1hB,OAAOC,GAAG0hB,gBAAgBC,KAC5CH,EAAMI,QAAU7hB,OAAOC,GAAG6hB,cAAcC,MACxCN,EAAMO,UAAYlY,EAAMkY,UACxBP,EAAM9gB,IAAMmJ,EAAMqX,SAClBM,EAAM5gB,EAAIiJ,EAAMsX,OAChBK,EAAM3gB,GAAKgJ,EAAMuX,QACjBI,EAAMQ,KAAOnY,EAAMmY,KAAKnY,EAAMmY,KAAK,GACnCR,EAAMS,KAAOpY,EAAMoY,KAAKpY,EAAMoY,KAAK,GACnCT,EAAMU,KAAOrY,EAAMqY,KAAKrY,EAAMqY,KAAK,KACnCV,EAAMW,KAAOtY,EAAMsY,KAAKtY,EAAMsY,KAAK,KACnCX,EAAMY,KAAOvY,EAAMuY,KAAKvY,EAAMuY,KAAK,EACnCZ,EAAMa,IAAMxY,EAAMwY,IAAIxY,EAAMwY,IAAI,IAChCd,EAAMe,mBAAmBd,GACzBzhB,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OAnBzB/L,KAoBJC,MAAM0P,aAAajE,EAAM0X,GACnChP,GAAaA,EACb,IAAI7R,EAAM,IAAIX,OAAOY,WAAWkJ,EAAMqX,SAASrN,EAAIhK,EAAMqX,SAASpN,EAAIjK,EAAMqX,SAASnN,GACjFnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAMsX,OAAOtN,EAAIhK,EAAMsX,OAAOrN,EAAIjK,EAAMsX,OAAOpN,GACzElT,EAAK,IAAId,OAAOY,WAAWkJ,EAAMuX,QAAQvN,EAAIhK,EAAMqX,SAASpN,EAAIjK,EAAMuX,QAAQrN,GAC9EjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,GA1BvB3C,KA2BJ6C,SAAS,CAACuR,UAAUA,EAAU8O,eAAeE,O,+BAUtD,IAAD,OACE1X,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,iBAAiBzO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAKmgB,sBAAsBzX,MACvI,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GAhEvB5K,IAAMC,WChE7BgjB,E,YACF,aAAc,IAAD,8BACT,+CACK9iB,MAAM,CACP0R,eAAc,EACdtN,MAAQ,OACRnB,SAAW,QALN,E,6EAQGmH,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAG3B,GAAmC,MAAhC9L,KAAKC,MAAMyL,MAAM8J,cAAoB,CACpC,IAAIjT,EAAM,IAAIX,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIC,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIE,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIG,GAC7InT,EAAI,IAAIb,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEiT,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEkT,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEmT,GACrIlT,EAAK,IAAId,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGH,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGF,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGD,GACzIjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,OAErC,CACe3C,KAAKC,MAAMyL,MAAM8G,YACvBc,U,oCAIbtT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,kCAEnCnO,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEiH,EAAQ9L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,qBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,cAKhD,yBAAKxL,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBO,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAC5I,uBAAGtR,UAAU,uC,GA1Dbe,IAAMC,WAiExBijB,E,YACF,aAAc,IAAD,8BACT,+CACK/iB,MAAQ,CACT8S,WAAU,EACViQ,SAAS,IAEb,EAAKC,gBAAkB,EAAKA,gBAAgBzjB,KAArB,gBANd,E,kFAST,GAAGb,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACxBA,IACCxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM+iB,UACzCziB,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAUiQ,SAAS,S,sCAIxC3Y,GACZ,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACdoU,GA4BAxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAM+iB,UACzC/X,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUiQ,SAAS,MA/BjDziB,OAAOO,KAAKC,MAAMmiB,YAAY,CAC1BxX,IAAKrB,EAAMoB,IACX2E,YAAa7P,OAAOqQ,eAAeC,YACnCuC,SAAU,SAAUzR,EAAEqhB,GAClB,GAAGrhB,EAAE,CACD,GAAmB,MAAhB0I,EAAM4M,SAAe,CACpB,IAAI/V,EAAM,IAAIX,OAAOY,WAAWkJ,EAAM4M,SAAS7C,IAAIC,EAAIhK,EAAM4M,SAAS7C,IAAIE,EAAIjK,EAAM4M,SAAS7C,IAAIG,GAC7FnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAM4M,SAAS7V,EAAEiT,EAAIhK,EAAM4M,SAAS7V,EAAEkT,EAAIjK,EAAM4M,SAAS7V,EAAEmT,GACrFlT,EAAK,IAAId,OAAOY,WAAWkJ,EAAM4M,SAASzC,GAAGH,EAAIhK,EAAM4M,SAASzC,GAAGF,EAAIjK,EAAM4M,SAASzC,GAAGD,GACzFjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,QAGrC0hB,EAAS/Q,OAEb1R,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCO,EAAUrM,MAAM0P,aAAajE,EAAM2Y,GACnCjQ,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUiQ,SAASA,SAE5CrhB,GACLpB,OAAOiG,SAASsG,MAAM,8CAAWzC,EAAMK,Y,+BAalD,IAAD,OACEL,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,WAAWzO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAKshB,gBAAgB5Y,MAC3H,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GA/D7B5K,IAAMC,WCjEvBojB,E,YACF,aAAc,IAAD,8BACT,+CACKljB,MAAM,CACP0R,eAAc,EACdtN,MAAQ,OACRnB,SAAW,QALN,E,6EAQGmH,GACZ,IAAMI,EAAQ,CACVC,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAG3B,GAAmC,MAAhC9L,KAAKC,MAAMyL,MAAM8J,cAAoB,CACpC,IAAIjT,EAAM,IAAIX,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIC,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIE,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIG,GAC7InT,EAAI,IAAIb,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEiT,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEkT,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEmT,GACrIlT,EAAK,IAAId,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGH,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGF,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGD,GACzIjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,OAErC,CACuB3C,KAAKC,MAAMyL,MAAM8G,YACvBc,U,oCAIrBtT,KAAK6C,SAAS,CAAEmQ,eAAgBhT,KAAKsB,MAAM0R,kB,kCAEnCnO,GACR7E,KAAK6C,SAAS,CAAC0B,SAASM,M,+BAEnB,IAAD,OACEiH,EAAQ9L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,qBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,cAKhD,yBAAKxL,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,yBAAKA,UAAU,qBAAqBO,QAAS,SAACqC,GAAD,OAAK,EAAK+Q,eAAeF,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAC5I,uBAAGtR,UAAU,uC,GA1DLe,IAAMC,WAiEhCqjB,E,YACF,aAAc,IAAD,8BACT,+CACKnjB,MAAQ,CACT8S,WAAU,EACVqQ,iBAAiB,IAErB,EAAKC,wBAA0B,EAAKA,wBAAwB7jB,KAA7B,gBANtB,E,kFAST,GAAGb,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACxBA,IACCxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMmjB,kBACzC7iB,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAUqQ,iBAAiB,S,8CAIxC/Y,GACpB,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UACrB9H,EAAYtM,KACdoU,GA4BAxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMmjB,kBACzCnY,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUqQ,iBAAiB,MA/BzD7iB,OAAOO,KAAKC,MAAMuiB,gBAAgB,CAC9B5X,IAAKrB,EAAMoB,IACX2E,YAAa,QACbgD,SAAU,SAAUzR,EAAEyhB,GAClB,GAAGzhB,EAAE,CACD,GAAmB,MAAhB0I,EAAM4M,SAAe,CACpB,IAAI/V,EAAM,IAAIX,OAAOY,WAAWkJ,EAAM4M,SAAS7C,IAAIC,EAAIhK,EAAM4M,SAAS7C,IAAIE,EAAIjK,EAAM4M,SAAS7C,IAAIG,GAC7FnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAM4M,SAAS7V,EAAEiT,EAAIhK,EAAM4M,SAAS7V,EAAEkT,EAAIjK,EAAM4M,SAAS7V,EAAEmT,GACrFlT,EAAK,IAAId,OAAOY,WAAWkJ,EAAM4M,SAASzC,GAAGH,EAAIhK,EAAM4M,SAASzC,GAAGF,EAAIjK,EAAM4M,SAASzC,GAAGD,GACzFjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,QAGrC8hB,EAAiBnR,OAErB1R,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,OACvCO,EAAUrM,MAAM0P,aAAajE,EAAM+Y,GACnCrQ,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUqQ,iBAAiBA,SAEpDzhB,GACLpB,OAAOiG,SAASsG,MAAM,8CAAWzC,EAAMK,Y,+BAalD,IAAD,OACEL,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,mBAAmBzO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAK0hB,wBAAwBhZ,MAC3I,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GA/DrB5K,IAAMC,WChE/BwjB,G,YACF,aAAc,IAAD,8BACT,+CACKtjB,MAAM,CACPmK,QAAU,IAHL,E,kFAOKzL,KAAKC,MAAMyL,MACP1L,KAAKC,MAAMyL,MAAM8G,YACnCxS,KAAK6C,SAAS,CAAC4I,QAAS,Q,oCAEd9G,GACV,IAAMkgB,EAAc7kB,KAAKC,MAAMyL,MAAM8G,YACrCqS,EAAYC,SAAS7U,SAAQ,SAAS8U,GAClCA,EAAO9F,OAAO,CAACxT,QAAS9G,EAAMrB,OAAOiD,MAAM,SAE/C,IAAMsF,EAA4D,IAA3CgZ,EAAYnQ,OAAOsQ,UAAU,GAAGC,SACvDjlB,KAAK6C,SAAS,CAAC4I,QAAQI,M,sCAEXH,GACZ,IAAMI,EAAQ,CACVwJ,MAAM5J,EAAM6J,MACZxJ,MAAML,EAAME,UACZI,KAAKN,EAAMC,WAEf3L,KAAKC,MAAMsL,gBAAgBO,K,kCAG3B,GAAmC,MAAhC9L,KAAKC,MAAMyL,MAAM8J,cAAoB,CACpC,IAAIjT,EAAM,IAAIX,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIC,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIE,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcC,IAAIG,GAC7InT,EAAI,IAAIb,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEiT,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEkT,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAc/S,EAAEmT,GACrIlT,EAAK,IAAId,OAAOY,WAAWxC,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGH,EAAI1V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGF,EAAI3V,KAAKC,MAAMyL,MAAM8J,cAAcK,GAAGD,GACzIjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,OAErC,CACkB3C,KAAKC,MAAMyL,MAAM8G,YACvBc,U,+BAGX,IAAD,OAEExH,GADe9L,KAAKC,MAAM6W,aAClB9W,KAAKC,MAAMyL,OAIzB,OACI,yBAAKtL,UAAU,qBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,qBAAsBC,MAAO,CAAC4F,UAAW,WACpD,yBAAK7F,UAAU,WACX,yBAAKA,UAAU,sBACX,uBAAGA,UAAU,yBAEjB,yBAAKA,UAAU,0BAA0BC,MAAO,CAAC4F,UAAW,WACxD,wBAAI7F,UAAU,gBAAgB0L,EAAMF,cAIhD,yBAAKxL,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKuI,gBAAgBO,IAAQ+H,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,4BAChL,uBAAGtR,UAAU,sCAEjB,yBAAKA,UAAU,qBAAqBC,MAAO,CAACiF,OAAO,WAAY3E,QAAS,SAACqC,GAAD,OAAK,EAAKwI,aAAaqI,wBAAsB,aAAaC,oBAAkB,QAAQpC,eAAa,wCACrK,uBAAGtR,UAAU,uBAEjB,2BAAOA,UAAU,oCAAqCJ,KAAKsB,MAAMmK,QAASQ,QAAQ,GAAlF,KACA,2BAAO/F,KAAK,QAAQiD,IAAI,IAAIC,IAAI,MAAMC,aAAcrJ,KAAKsB,MAAMmK,QAASnC,KAAK,IAAI9C,SAAU,SAACxD,GAAD,OAAK,EAAKsI,cAActI,IAAI3C,MAvB9G,CACjB4E,WAAY,kI,GA7CG9D,IAAMC,WA0E3B8jB,G,YACF,aAAc,IAAD,8BACT,+CACK5jB,MAAQ,CACT8S,WAAU,EACVyQ,YAAY,GACZM,YAAa,GACbC,OAAQ,IAEZ,EAAKC,mBAAqB,EAAKA,mBAAmBxkB,KAAxB,gBARjB,E,gFAUMuM,EAAWC,EAAWC,GAWrC,GAVID,EAAUwX,cAAgB7kB,KAAKsB,MAAMujB,aAAe7kB,KAAKsB,MAAM8S,WAC/DpU,KAAKslB,YAELlY,EAAU1B,MAAMK,QAAU/L,KAAKC,MAAMyL,MAAMK,OAAyC,GAAhCqB,EAAUI,YAAYO,QACtEV,EAAU+G,WAAa9F,YAAOlB,EAAUI,YAAY,GAAI,gBAAkBc,YAAOtO,KAAKC,MAAMuN,YAAY,GAAI,eACxGxN,KAAKsB,MAAM8S,WACXpU,KAAKulB,aAIdvlB,KAAKC,MAAM4N,WAAWjC,YAAc5L,KAAKC,MAAMyL,MAAMK,MAAM,CAC1D,IAAIqI,EAAYpU,KAAKsB,MAAM8S,UACxBA,IACCxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMujB,aACzCjjB,OAAOiG,SAASsG,MAAM,uCAASnO,KAAKC,MAAMyL,MAAMK,OAChDqI,GAAaA,EACbpU,KAAK6C,SAAS,CAACuR,UAAUA,EAAUyQ,YAAY,S,+BAIlDW,GAEL,IADA,IAAIC,EAASzlB,KAAKC,MAAMyL,MAAMqM,OACrBtK,EAAI,EAAGA,EAAIgY,EAAM,MAAU1X,OAAQN,IAAM,CAC9C,GAAW,MAAP+X,GAAqC,sBAAtBC,EAAM,MAAUhY,GAC/B,OAAOgY,EAAM,MAAUhY,GACpB,GAAI+X,EAAMC,EAAM,MAAUhY,IAAY,IAANA,EACnC,OAAOgY,EAAM,MAAUhY,EAAI,GACxB,GAAIgY,EAAM,MAAUhY,GAAK+X,GAAO/X,EAAE,GAAKgY,EAAM,MAAU1X,OAC1D,OAAO0X,EAAM,MAAUhY,GAG/B,OAAOgY,EAAM,MAAU,K,mCAGvB,IAAI/Z,EAAQ1L,KAAKC,MAAMyL,MACnB8G,EAAcxS,KAAKsB,MAAMujB,YACzBpW,EAAOzO,KAAKsB,MAAM8jB,OAClBM,EAAKpX,YAAO5C,EAAMiC,SAASY,iBAAiB,GAAG,cACd,GAAjCvO,KAAKC,MAAMuN,YAAYO,SACvB2X,EAAKpX,YAAOtO,KAAKC,MAAMuN,YAAY,GAAG,eAC1C,IAAI/B,EAAU,EACV+G,EAAYsS,SAAS/W,OAAS,IAC9BtC,EAAU+G,EAAYsS,SAAS,GAAGa,QAAQV,UAE9CzS,EAAYoT,kBACZ,IAAMtZ,EAAYtM,KAClB,OAAQ0L,EAAMma,UACV,IAAK,UACDvZ,EAAUhL,MAAM6jB,YAAYW,SAAS7V,SAAQ,SAAU8V,GACnD,IAAI7iB,EAAK6iB,EAAEC,WAAF,QACLR,EAAM,UACM9X,GAAZe,EAAKiX,KACLF,EAAM/W,EAAKiX,GAAIxiB,IACnB,IAAI+iB,EAAU,IAAIrkB,OAAOskB,cACzBD,EAAQE,YAAYJ,EAAEK,UACtB5T,EAAY6T,sBAAsB,CAC9BC,IAAKL,EACLriB,MAAO0I,EAAUia,SAASf,GAC1B/Z,QAASA,EACT+a,YAAY,EACZC,YAAa,UACbjV,KAAM,OACPkV,WAAW,gBAAaX,EAAEC,WAAF,QAA0B,iCAAuB,MAAPR,EAAe,qBAAQA,OAEhG,MACJ,IAAK,WACD,IAAItf,EAAoB,sBAAZwF,EAAMwB,GAA8B,2BAAS,2BACzDZ,EAAUhL,MAAM6jB,YAAYW,SAAS7V,SAAQ,SAAU8V,GACnD,IAAI7iB,EAAK6iB,EAAEC,WAAW,kBAClBR,EAAM,UACM9X,GAAZe,EAAKiX,KACLF,EAAM/W,EAAKiX,GAAIxiB,IACnB,IAAIyjB,EAAW,IAAI/kB,OAAOglB,YAC1BD,EAASR,YAAYJ,EAAEK,UACnBO,EAASE,OAAO9Y,OAAS,GACzByE,EAAYsU,wBAAwB,CAChCR,IAAKK,EACL/iB,MAAO0I,EAAUia,SAASf,GAC1BuB,KAAM,EACNtb,QAASA,EACT+F,KAAM,OACPkV,WAAWX,EAAEC,WAAW,gBAAM,QAAQD,EAAEC,WAAW,sBAAO,QAAQ9f,EAAK,UAAc,MAAPsf,EAAe,qBAAQA,U,8BAMpHpV,GACJ,IAAI+G,EAAQjQ,KAAKkQ,MAAMhH,EAAK,IACxBiH,EAAQnQ,KAAKkQ,MAAMhH,EAAK,IAC5B,OAAOuD,KAAK2D,IAAIC,UAAUF,EAAQF,GAAS,IAAO,S,kCAE1C,IAAD,OACHzL,EAAQ1L,KAAKC,MAAMyL,MAEnB8L,GADcxX,KAAKsB,MAAMujB,YAClBvW,YAAO5C,EAAMiC,SAAS8J,iBAAiB,GAAG,eACjDC,EAAQ1X,KAAK2X,QAAQjM,EAAMiC,SAAS8J,kBAClCG,EAAI,CACN1R,KAAMwF,EAAMwB,GACZsK,KAAMA,EACNE,MAAOA,GAELrH,EAAWC,OAAOC,KAAKqH,GAAGjL,KAAI,SAAU6D,GAC1C,OAAOC,mBAAmBD,GAAW,IAAMC,mBAAmBmH,EAAEpH,OACjElB,KAAK,KACHtP,KAAKsB,MAAM8jB,OAAO5W,eAAegJ,GAoBlCxX,KAAKulB,kBAnBkB7X,IAAnBhC,EAAMiF,UACND,MAAMhF,EAAMiF,SAAU,CACdC,OAAQ,OACRC,KAAMR,EACNS,QAAS,IAAIC,QAAQ,CACjB,eAAgB,wCAGvBC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,UAChBF,MAAK,SAAAvC,GACF,EAAK5L,SAAS,CAACuiB,OAAQ3W,IACvB,EAAK8W,gBAERpU,OAAM,SAAAnO,GACHoO,QAAQC,IAAIrO,GACZoO,QAAQC,IAAI,6C,yCAOb3F,GACf,IAAI0I,EAAYpU,KAAKsB,MAAM8S,UAErB9H,EAAYtM,KACdoU,GA6CAxS,OAAOO,KAAKC,MAAMmS,YAAYvU,KAAKsB,MAAMujB,aACzCvY,EAAUrM,MAAM6P,YAAYpE,GAC5B9J,OAAOiG,SAASsG,MAAM,uCAASzC,EAAMK,OACrCqI,GAAaA,EACb9H,EAAUzJ,SAAS,CAACuR,UAAUA,EAAUyQ,YAAY,OAhDpDjjB,OAAOO,KAAKC,MAAMoC,mBAAqB,CAAC2F,aAAa,GACrDvI,OAAOO,KAAKC,MAAM2d,eAAe,CAC7B/R,UAAWtC,EAAMwB,GACjBuH,SAAU,SAAU3M,EAAS+c,GACzB,GAAI/c,EAAS,CAiBT,GAhBKwE,EAAUhL,MAAM6jB,YAAY3W,eAAe,aAC5CkC,MAAMhF,EAAMsb,WAAY,CAChBpW,OAAQ,MACRE,QAAS,IAAIC,QAAQ,CACjB,eAAgB,uBAGvBC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,UAChBF,MAAK,SAAAvC,GACFnC,EAAUzJ,SAAS,CAACsiB,YAAa1W,OAEpC0C,OAAM,SAAAnO,GACHoO,QAAQC,IAAIrO,GACZoO,QAAQC,IAAI,sCAGJ,MAAhB3F,EAAM4M,SAAgB,CACtB,IAAI/V,EAAM,IAAIX,OAAOY,WAAWkJ,EAAM4M,SAAS7C,IAAIC,EAAIhK,EAAM4M,SAAS7C,IAAIE,EAAIjK,EAAM4M,SAAS7C,IAAIG,GAC7FnT,EAAI,IAAIb,OAAOY,WAAWkJ,EAAM4M,SAAS7V,EAAEiT,EAAIhK,EAAM4M,SAAS7V,EAAEkT,EAAIjK,EAAM4M,SAAS7V,EAAEmT,GACrFlT,EAAK,IAAId,OAAOY,WAAWkJ,EAAM4M,SAASzC,GAAGH,EAAIhK,EAAM4M,SAASzC,GAAGF,EAAIjK,EAAM4M,SAASzC,GAAGD,GACzFjT,EAAS,IAAIf,OAAOC,GAAGc,OAAOJ,EAAIE,EAAEC,GACxCd,OAAOO,KAAKC,MAAMQ,WAAWD,GAAQ,QAErCkiB,EAAYvR,OAEhBhH,EAAUrM,MAAM0P,aAAajE,EAAMmZ,GACnCzQ,GAAaA,EACb9H,EAAUzJ,SAAS,CAAEuR,UAAWA,EAAWyQ,YAAaA,IACxDjjB,OAAOiG,SAASC,QAAQ,uCAAS4D,EAAMK,YAClB2B,IAAjBhC,EAAMqM,QACNzL,EAAUrM,MAAMsY,oBAAoB7M,EAAMqM,aACvBrK,IAAnBhC,EAAMiC,UACNrB,EAAUrM,MAAMkQ,mBAAmBzE,EAAMiC,eAE7C/L,OAAOiG,SAASsG,MAAM,8CAAazC,EAAMK,a,+BAYpD,IAAD,OACEL,EAAQ1L,KAAKC,MAAMyL,MACzB,OACI,yBAAKtL,UAAU,eACX,2BAAO8F,KAAK,WAAWyL,KAAK,cAAczO,GAAIwI,EAAMK,MAAO5F,QAASnG,KAAKsB,MAAM8S,UAAW5N,SAAU,SAACxD,GAAD,OAAK,EAAKqiB,mBAAmB3Z,MACjI,2BAAOkG,QAASlG,EAAMK,OAAQL,EAAMK,Y,GAzM1B5K,IAAMC,WCGjB6lB,G,YAlEX,aAAc,IAAD,8BACT,+CACK3lB,MAAQ,CACT6K,KAAM,GACNW,IAAKlL,OAAOqQ,eAAenF,IAC3BoF,YAAatQ,OAAOqQ,eAAeC,YACnCwG,MAAO,IANF,E,iFAUT1Y,KAAK6C,SAAS,CACVsJ,KAAMnM,KAAKC,MAAMkM,KACjBW,IAAK9M,KAAKC,MAAM6M,IAChBoF,YAAalS,KAAKC,MAAMiS,YACxBwG,MAAO1Y,KAAKC,MAAMyY,U,+BAGjB,IAAD,OACEvM,EAAOnM,KAAKsB,MAAM6K,KAClBW,EAAM9M,KAAKsB,MAAMwL,IACjBoF,EAAclS,KAAKsB,MAAM4Q,YACzBwG,EAAQ1Y,KAAKsB,MAAMoX,MACnB7K,EAAa7N,KAAKC,MAAM4N,WAC9B,OACI,yBAAKzN,UAAU,iBAEP+L,EAAKQ,KACD,SAACjB,EAAM0C,GAEH,OAAO1C,EAAMM,MACT,IAAK,QACD,OAAO,kBAAC,EAAD,CAAYN,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,IACzL,IAAK,WACD,OAAO,kBAAC,EAAD,CAAenC,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,EAAY2I,WAAY,SAACN,GAAD,OAAQ,EAAKjW,MAAMuW,WAAWN,IAAOmC,eAAkB,EAAKpY,MAAMoY,eAAgB6O,mBAAoB,EAAKjnB,MAAMinB,mBAAoB3O,oBAAqB,EAAKtY,MAAMsY,oBAAqBpI,mBAAsB,EAAKlQ,MAAMkQ,mBAAoB3C,YAAa,EAAKvN,MAAMuN,cAC3d,IAAK,UACD,OAAO,kBAAC,EAAD,CAAc9B,MAAOA,EAAOiE,aAAc,SAACjE,EAAO8G,GAAR,OAAwB,EAAKvS,MAAM0P,aAAajE,EAAO8G,IAAc1C,YAAa,SAACpE,GAAD,OAAW,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,EAAYf,IAAKA,EAAKoF,YAAaA,EAAawG,MAAOA,IACpP,IAAK,qBACD,OAAO,kBAAC,EAAD,CAA2BhN,MAAOA,EAAOiE,aAAc,SAACjE,EAAO8G,GAAR,OAAwB,EAAKvS,MAAM0P,aAAajE,EAAO8G,IAAc1C,YAAa,SAACpE,GAAD,OAAW,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,IAC1M,IAAK,8BACD,OAAO,kBAAC,EAAD,CAAoCnC,MAAOA,EAAOiE,aAAc,SAACjE,EAAO8G,GAAR,OAAwB,EAAKvS,MAAM0P,aAAajE,EAAO8G,IAAc1C,YAAa,SAACpE,GAAD,OAAW,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,IACnN,IAAK,YACD,OAAO,kBAAC,EAAD,CAAgBnC,MAAOA,EAAOiE,aAAc,SAACjE,EAAO8G,GAAR,OAAwB,EAAKvS,MAAM0P,aAAajE,EAAO8G,IAAc1C,YAAa,SAACpE,GAAD,OAAW,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,IAC/L,IAAK,WACD,OAAO,kBAAC,EAAD,CAAenC,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,IAC5L,IAAK,QACD,OAAO,kBAAC,EAAD,CAAYnC,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,IACzL,IAAK,YACD,OAAO,kBAAC,EAAD,CAAgBnC,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,IAC7L,IAAK,MACD,OAAO,kBAAC,EAAD,CAAUnC,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,IACvL,IAAK,UACD,OAAO,kBAAC,EAAD,CAAkBnC,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,IAC/L,IAAK,SACD,OAAO,kBAAC,GAAD,CAAanC,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,EAAY2I,WAAY,SAACN,GAAD,OAAQ,EAAKjW,MAAMuW,WAAWN,IAAOgR,mBAAoB,EAAKjnB,MAAMinB,mBAAoB3O,oBAAqB,EAAKtY,MAAMsY,oBAAqBpI,mBAAsB,EAAKlQ,MAAMkQ,mBAAoB3C,YAAa,EAAKvN,MAAMuN,uB,GAtDjbrM,IAAMC,WC2BlB+lB,G,YApCX,aAAc,IAAD,8BACT,+CACK7lB,MAAQ,CACT6K,KAAK,IAHA,E,iFAOT,IAAIA,EAAOvK,OAAOwlB,qBAAqBC,MACvCrnB,KAAK6C,SAAS,CAACsJ,KAAKA,M,+BAEf,IAAD,OACEA,EAAOnM,KAAKsB,MAAM6K,KAClB0B,EAAa7N,KAAKC,MAAM4N,WAC9B,OACI,yBAAKzN,UAAU,iBAEP+L,EAAKQ,KACD,SAACjB,EAAM0C,GAEH,OAAO1C,EAAMM,MACT,IAAK,WACD,OAAO,kBAAC,EAAD,CAAeN,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,EAAY2I,WAAY,SAACN,GAAD,OAAQ,EAAKjW,MAAMuW,WAAWN,IAAOmC,eAAkB,EAAKpY,MAAMoY,eAAgB6O,mBAAoB,EAAKjnB,MAAMinB,mBAAoB3O,oBAAqB,EAAKtY,MAAMsY,oBAAqBpI,mBAAsB,EAAKlQ,MAAMkQ,mBAAoB3C,YAAa,EAAKvN,MAAMuN,cAC3d,IAAK,SACD,OAAO,kBAAC,GAAD,CAAa9B,MAAOA,EAAOiE,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAKvS,MAAM0P,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKzL,MAAM6P,YAAYpE,IAAQmC,WAAYA,EAAY2I,WAAY,SAACN,GAAD,OAAQ,EAAKjW,MAAMuW,WAAWN,IAAOgR,mBAAoB,EAAKjnB,MAAMinB,mBAAoB3O,oBAAqB,EAAKtY,MAAMsY,oBAAqBpI,mBAAsB,EAAKlQ,MAAMkQ,mBAAoB3C,YAAa,EAAKvN,MAAMuN,uB,GAxBnbrM,IAAMC,WC4BhBkmB,G,YA9BX,aAAe,IAAD,8BACV,+CACKC,oBAAsB,EAAKA,oBAAoB1mB,KAAzB,gBAFjB,E,iFAIM+L,GAChBhL,OAAOO,KAAKC,MAAMolB,cAAc5a,EAAOM,M,+BAElC,IAAD,OACJ,OACI,yBAAK9M,UAAU,iBAEPwB,OAAO6lB,eAAe9a,KACtB,SAACC,EAAOwB,GAAR,OACU,IAAVA,EACA,yBAAKhO,UAAU,oBAAoBgS,IAAKxF,EAAOb,OAC3C,2BAAO7F,KAAK,QAAQyL,KAAK,eAAezO,GAAI0J,EAAOb,MAAOsG,eAAe,UAAU1R,QAAS,SAACqC,GAAD,OAAK,EAAKukB,oBAAoB3a,MAC1H,2BAAOgF,QAAShF,EAAOb,OAAQa,EAAOb,QAG1C,yBAAK3L,UAAU,oBAAoBgS,IAAKxF,EAAOb,OAC3C,2BAAO7F,KAAK,QAAQyL,KAAK,eAAezO,GAAI0J,EAAOb,MAAOpL,QAAS,SAACqC,GAAD,OAAK,EAAKukB,oBAAoB3a,MACjG,2BAAOgF,QAAShF,EAAOb,OAAQa,EAAOb,gB,GAtBnC5K,IAAMC,WCA3BsmB,G,YACL,aAAe,IAAD,8BACb,+CACKpmB,MAAQ,CACZqmB,gBAAiB,KACjBnL,SAAU,KACVoL,eAAgB,MAEX,EAAKC,cAAgB,EAAKA,cAAchnB,KAAnB,gBAPd,E,6EAUb,IAAI8mB,EAAkB3nB,KAAKsB,MAAMqmB,gBAC7BnL,EAAWxc,KAAKsB,MAAMkb,SACtBoL,EAAiB5nB,KAAKsB,MAAMsmB,eAChC,GAAwB,OAApBD,EAA0B,CAC7B,IAAIG,EAAclmB,OAAOO,KAAKC,MAC1B2lB,EAAa,IAAInmB,OAAOmZ,SAAS,mBAAoB,kBAAmB,mBACxEiN,EAAW,IAAIpmB,OAAOY,WAAW,kBAAoB,mBAAqB,qBAC1EylB,EAAY,IAAIrmB,OAAOY,WAAW,oBAAsB,oBAAsB,mBAC9E0lB,EAAgB,IAAItmB,OAAOC,GAAGc,OAAOolB,EAAYC,EAAUC,GAC/DH,EAAYllB,WAAWslB,GAAe,GAEtCP,EAAkBG,EAAYK,UAAU,aACxC3L,EAAW,IAAI5a,OAAOC,GAAGoa,OAAOC,SAAS,CACxCC,KAAM2L,EACNznB,MAAO,CAAEI,KAAM,QAASH,MAAO,MAAOsF,OAAQ,QAC9CwW,WAAW,IAAIlV,MAAOmT,UACtBgC,UAAU,IAAInV,MAAOmT,UAAY,KACjCiC,UAAU,IAEXsL,EAAiB,IAAIhmB,OAAOC,GAAGoa,OAAOM,eAAe,CACpDJ,KAAM2L,EACNtL,SAAUA,EACVd,UAAW,EACXrb,MAAO,CAACI,KAAM,QAASmF,OAAQ,UAEhC,IAAIwiB,GAAqB,IAAIlhB,MAAOmT,UAAY,IAChDyN,EAAYrI,aAAa,CACxBC,MAAO0I,EACPzI,IAAKyI,EAAqB,IAC1BxI,QAAS,WACR+H,EAAgBU,mBAAmB,CAClC7iB,SAAU,IAAI5D,OAAOY,WAAW,mBAAoB,mBAAoB,KACxE8lB,UAAW,EACX1kB,MAAO,IAAIhC,OAAOC,GAAG0mB,MAAM,IAAK,IAAK,KACrCC,SAAU,GACVC,SAAU,GACVC,UAAW,GACXC,iBAAkB,GAClBC,mBAAoB,MAGtBC,OAAQ,SAASzY,GAChBuX,EAAgBmB,kBAAkB1Y,EAAOgY,GAAsB,MAEhEvI,QAAS,WACR8H,EAAgBoB,8BAGlBvM,EAASwM,aAAa,CACrBtJ,MAAO0I,EACPzI,IAAKyI,EAAqB,IAC1BxkB,MAAO,QAER5D,KAAK6C,SAAS,CAAC8kB,kBAAiBnL,WAAUoL,wBAE1CD,EAAgBoB,2BAChBvM,EAAS2B,SACTyJ,EAAezJ,SACfne,KAAK6C,SAAS,CAAC8kB,gBAAiB,KAAMnL,SAAU,KAAMoL,eAAgB,S,+BAG9D,IAAD,OACR,OACC,oCACC,uBAAGxnB,UAAU,oBAAoB8C,GAAG,iBAAiBvC,QAAS,SAACqC,GAAD,OAAO,EAAK/C,MAAMgpB,sBAAsB5oB,MAAO,CAAC0C,OAAQ,MAAOmmB,WAAY,sBACxI,6BAAK,uBAAG9oB,UAAU,eAAlB,uBAED,uBAAGA,UAAU,oBAAoB8C,GAAG,qBAAqBvC,QAAS,SAACqC,GAAD,OAAO,EAAK6kB,iBAAiBxnB,MAAO,CAAC0C,OAAQ,MAAOmmB,WAAY,sBACjI,6BAAK,uBAAG9oB,UAAU,mBAAlB,6BAED,uBAAGA,UAAU,oBAAoB8C,GAAG,gBAAgBvC,QAAS,SAACqC,GAAD,OAAO,EAAK/C,MAAMkpB,uBAAuB9oB,MAAO,CAAC0C,OAAQ,MAAOmmB,WAAY,sBACxI,6BAAK,uBAAG9oB,UAAU,cAAlB,6BAED,uBAAGA,UAAU,oBAAoB8C,GAAG,qBAAqBvC,QAAS,SAACqC,GAAD,OAAO,EAAK/C,MAAMmpB,4BAA4B/oB,MAAO,CAAC0C,OAAQ,MAAOmmB,WAAY,sBAClJ,6BAAK,uBAAG9oB,UAAU,cAAlB,sB,GArFsBe,IAAMC,WA4F3BioB,G,YACL,aAAe,IAAD,8BACb,+CACK/nB,MAAQ,CACZgoB,eAAgB,KAChBC,WAAY,KACZC,WAAY,EACZC,WAAY,EACZC,MAAO9nB,OAAOC,GAAG8nB,KAAKC,KAEvB,EAAKC,UAAY,EAAKA,UAAUhpB,KAAf,gBACjB,EAAKipB,WAAa,EAAKA,WAAWjpB,KAAhB,gBAClB,EAAKkpB,UAAY,EAAKA,UAAUlpB,KAAf,gBAXJ,E,kFAaQ,IAAD,EACiBb,KAAKsB,MAAnBioB,GADH,EACbD,eADa,EACGC,YACnBvpB,KAAKC,MAAM+pB,SACI,MAAdT,EACHvpB,KAAK8pB,aAEL9pB,KAAKiqB,gB,6CAKDjqB,KAAK+pB,c,kCAGL/pB,KAAK+pB,YACX/pB,KAAKC,MAAMkpB,wB,uCAEKnmB,GAChBhD,KAAK6C,SAAS,CAAC2mB,WAAYxmB,EAAEM,OAAOsB,kB,uCAEpB5B,GAChBhD,KAAK6C,SAAS,CAAC4mB,WAAYzmB,EAAEM,OAAOsB,kB,kCAEzB5B,GAAI,IAAD,EAC+ChD,KAAKsB,MAA3DgoB,EADO,EACPA,eAAgBC,EADT,EACSA,WAAYC,EADrB,EACqBA,WAAYC,EADjC,EACiCA,WAC/CH,EAAeY,qBAAqBX,GACpC,IAAIY,EAAcb,EAAec,cAAc,CAC9CC,UAAW,IAAIzoB,OAAOmZ,SAASxD,SAASiS,GAAajS,SAASkS,IAC9DC,MAAOnS,SAASvU,EAAEM,OAAOiD,SAE1BvG,KAAK6C,SAAS,CAAC0mB,WAAYY,EAAaT,MAAO1mB,EAAEM,OAAOiD,U,mCAE3C,IAAD,EACwDvG,KAAKsB,MAAlEgoB,EADK,EACLA,eAAgBC,EADX,EACWA,WAAYC,EADvB,EACuBA,WAAYC,EADnC,EACmCA,WAAYC,EAD/C,EAC+CA,MACvDY,EAAkB,KAClBH,EAAc,KAClB,GAAoB,OAAhBvoB,OAAOO,OACa,OAAnBmnB,GACHgB,EAAkB1oB,OAAOO,KAAKC,MAAM+lB,UAAU,YAC9CnoB,KAAK6C,SAAS,CAACymB,eAAgBgB,KAE/BA,EAAkBhB,EAEA,OAAfC,GAAqB,CACxBY,EAAcG,EAAgBF,cAAc,CAC3CC,UAAW,IAAIzoB,OAAOmZ,SAASxD,SAASiS,GAAajS,SAASkS,IAC9DC,MAAOnS,SAASmS,KAEjB1pB,KAAK6C,SAAS,CAAC0mB,WAAYY,IAC3B,IAAIpC,EAAa,IAAInmB,OAAOmZ,SAAS,mBAAoB,kBAAmB,mBACxEiN,EAAW,IAAIpmB,OAAOY,WAAW,kBAAoB,mBAAqB,qBAC1EylB,EAAY,IAAIrmB,OAAOY,WAAW,oBAAsB,oBAAsB,mBAC9E0lB,EAAgB,IAAItmB,OAAOC,GAAGc,OAAOolB,EAAYC,EAAUC,GAC/DrmB,OAAOO,KAAKC,MAAMQ,WAAWslB,GAAe,M,mCAIjC,IAAD,EACwDloB,KAAKsB,MAAlDioB,GADX,EACLD,eADK,EACWC,YAAYC,EADvB,EACuBA,WAAYC,EADnC,EACmCA,WAAYC,EAD/C,EAC+CA,MACvD7nB,EAAKD,OAAOC,GACE,MAAd0nB,EACHA,EAAWgB,gBAAgB,CAC1BC,iBAAkB,IAAI5oB,OAAOY,WAAW+U,SAASiS,GAAajS,SAASkS,GAAcC,GAAS7nB,EAAG8nB,KAAKc,MAAS,IAAOf,GAAS7nB,EAAG8nB,KAAKe,QAAW,KAAO,OAG1J1qB,KAAK8pB,e,kCAGO,IAAD,EACyB9pB,KAAKsB,MAAnCgoB,EADK,EACLA,eAAgBC,EADX,EACWA,WACA,OAAnBD,IACHA,EAAeY,qBAAqBX,GACjB,OAAfA,GAAqBvpB,KAAK6C,SAAS,CAAC0mB,WAAY,U,+BAG5C,IAAD,OAEFoB,EAAY,CACjBnqB,OAAQ,MACR0K,UAHclL,KAAKC,MAAM+pB,OAGL,uBAAyB,0BAC7CxkB,SAAU,QACVG,IAAK,MACLF,MAAO,OACPmlB,UAAW,MACXtqB,MAAO,SAER,OACC,yBAAKF,UAAU,UAAUC,MAAOsqB,GAC/B,yBAAKvqB,UAAU,iBACd,yBAAKA,UAAU,WACd,yBAAKA,UAAU,6BACd,4BAAQA,UAAU,0BAA0BO,QAASX,KAAK6pB,UAAUhpB,KAAKb,OACxE,uBAAGI,UAAU,mBAIhB,yBAAKA,UAAU,UACd,uBAAGA,UAAU,cADd,4BAIA,yBAAKA,UAAU,QACd,qGAKF,yBAAKA,UAAU,UAAUC,MAAO,CAAC8C,UAAW,WAC3C,yBAAK/C,UAAU,eACd,yBAAKA,UAAU,WACd,yBAAKA,UAAU,MAAM8C,GAAG,gBACvB,yBAAK9C,UAAU,oBAAf,uBAGA,yBAAKA,UAAU,qBACd,yBAAK4F,MAAM,0BACV,2BAAOE,KAAK,SAASI,YAAY,sBAAYC,MAAOvG,KAAKsB,MAAMkoB,WAAYhjB,SAAU,SAACxD,GAAD,OAAK,EAAK6nB,iBAAiB7nB,UAKpH,yBAAK5C,UAAU,WACd,yBAAKA,UAAU,MAAM8C,GAAG,gBACvB,yBAAK9C,UAAU,oBAAf,uBAGA,yBAAKA,UAAU,qBACd,yBAAK4F,MAAM,0BACV,2BAAOE,KAAK,SAASI,YAAY,sBAAYC,MAAOvG,KAAKsB,MAAMmoB,WAAYjjB,SAAU,SAACxD,GAAD,OAAK,EAAK8nB,iBAAiB9nB,UAKpH,yBAAK5C,UAAU,WACd,yBAAKA,UAAU,MAAM8C,GAAG,gBACvB,yBAAK9C,UAAU,oBAAf,gBAGA,yBAAKA,UAAU,qBACd,yBAAK4F,MAAM,oCACV,yBAAKA,MAAM,qBACV,2BAAO9C,GAAG,WAAWgD,KAAK,QAAQK,MAAM,IAAIoL,KAAK,QAAQxL,QAA6B,GAApBnG,KAAKsB,MAAMooB,MAAYljB,SAAU,SAACxD,GAAD,OAAK,EAAK+nB,YAAY/nB,MACzH,2BAAOqD,IAAI,YAAX,WAED,yBAAKL,MAAM,qBACV,2BAAO9C,GAAG,cAAcgD,KAAK,QAAQK,MAAM,IAAIoL,KAAK,QAAQxL,QAA6B,GAApBnG,KAAKsB,MAAMooB,MAAYljB,SAAU,SAACxD,GAAD,OAAK,EAAK+nB,YAAY/nB,MAC5H,2BAAOqD,IAAI,eAAX,WAED,yBAAKL,MAAM,qBACV,2BAAO9C,GAAG,YAAYgD,KAAK,QAAQK,MAAM,IAAIoL,KAAK,QAAQxL,QAA6B,GAApBnG,KAAKsB,MAAMooB,MAAYljB,SAAU,SAACxD,GAAD,OAAK,EAAK+nB,YAAY/nB,MAC1H,2BAAOqD,IAAI,aAAX,sB,GAnKgBlF,IAAMC,WAgL3B4pB,G,YACL,aAAe,IAAD,8BACb,+CACK1pB,MAAQ,CACZgoB,eAAgB,KAChB2B,gBAAiB,KACjBC,KAAM,GACNC,OAAQ,EACRC,aAAc,EACdC,OAAQ,CAAC,EAAG,EAAG,IAEhB,EAAKC,gBAAkB,EAAKA,gBAAgBzqB,KAArB,gBACvB,EAAKgpB,UAAY,EAAKA,UAAUhpB,KAAf,gBACjB,EAAK0qB,eAAiB,EAAKA,eAAe1qB,KAApB,gBAZT,E,kFAeTb,KAAKC,MAAM+pB,SACmB,MAA7BhqB,KAAKsB,MAAMgoB,gBAAwD,MAA9BtpB,KAAKsB,MAAM2pB,iBACnDjrB,KAAKsrB,qB,wCAIW,IAAD,EAC6DtrB,KAAKsB,MAA5EgoB,EADU,EACVA,eAAgB2B,EADN,EACMA,gBAAiBC,EADvB,EACuBA,KAAMC,EAD7B,EAC6BA,OAAQC,EADrC,EACqCA,aAAcC,EADnD,EACmDA,OAChEf,EAAkB,KAClBkB,EAAmB,KACvB,GAAoB,OAAhB5pB,OAAOO,OACa,OAAnBmnB,GACHgB,EAAkB1oB,OAAOO,KAAKC,MAAM+lB,UAAU,YAC9CnoB,KAAK6C,SAAS,CAACymB,eAAgBgB,KAE/BA,EAAkBhB,EAEK,OAApB2B,GAA0B,CAC7BO,EAAmBlB,EAAgBmB,mBAAmB,CACrDjmB,SAAU,IAAI5D,OAAOY,WAAW,WAAY,UAAW,IACvDukB,KAAMmE,EACNQ,eAAgBP,EAChBQ,gBAAiBP,EACjBQ,UAAWP,IAEZrrB,KAAK6C,SAAS,CAACooB,gBAAiBO,IAChC,IAAIzD,EAAa,IAAInmB,OAAOmZ,SAAS,mBAAoB,mBAAoB,oBACzEkN,EAAY,IAAIrmB,OAAOY,WAAW,qBAAuB,oBAAsB,mBAC/EwlB,EAAW,IAAIpmB,OAAOY,WAAW,kBAAoB,mBAAqB,qBAC1E0lB,EAAgB,IAAItmB,OAAOC,GAAGc,OAAOolB,EAAYC,EAAUC,GAC/DrmB,OAAOO,KAAKC,MAAMQ,WAAWslB,GAAe,M,kCAK9CloB,KAAKurB,iBACLvrB,KAAKC,MAAMmpB,6B,uCAEM,IAAD,EAC0BppB,KAAKsB,MAAxCgoB,EADS,EACTA,eAAgB2B,EADP,EACOA,gBACA,OAAnB3B,IACHA,EAAeY,qBAAqBe,GACpCjrB,KAAK6C,SAAS,CACbooB,gBAAiB,KACjBC,KAAM,GACNC,OAAQ,EACRC,aAAc,EACdC,OAAQ,CAAC,EAAG,EAAG,Q,iCAIProB,GACV,IAAI6oB,EAAQtU,SAASvU,EAAEM,OAAOiD,OAC9BvG,KAAKsB,MAAM2pB,gBAAgBV,gBAAgB,CAACuB,cAAeD,IAC3D7rB,KAAK6C,SAAS,CAACqoB,KAAMW,M,mCAET7oB,GACZ,IAAI+oB,EAAUxU,SAASvU,EAAEM,OAAOiD,OAChCvG,KAAKsB,MAAM2pB,gBAAgBV,gBAAgB,CAACyB,gBAAiBD,IAC7D/rB,KAAK6C,SAAS,CAACsoB,OAAQY,M,yCAEL/oB,GAClB,IAAIipB,EAAgB1U,SAASvU,EAAEM,OAAOiD,OACtCvG,KAAKsB,MAAM2pB,gBAAgBV,gBAAgB,CAAC2B,wBAAyBD,IACrEjsB,KAAK6C,SAAS,CAACuoB,aAAca,M,mCAEjBjpB,EAAGoL,GAAQ,IAAD,EACgDpO,KAAKsB,MAApEgoB,EADe,EACfA,eAAgB2B,EADD,EACCA,gBAAiBC,EADlB,EACkBA,KAAMC,EADxB,EACwBA,OAAQC,EADhC,EACgCA,aAClDe,EAAUnsB,KAAKsB,MAAM+pB,OACzBc,EAAQ/d,GAASge,WAAWppB,EAAEM,OAAOiD,OACrC+iB,EAAeY,qBAAqBe,GACpC,IAAIO,EAAmBlC,EAAemC,mBAAmB,CACxDjmB,SAAU,IAAI5D,OAAOY,WAAW,WAAY,UAAW,IACvDukB,KAAMmE,EACNQ,eAAgBP,EAChBQ,gBAAiBP,EACjBQ,UAAWO,IAEZnsB,KAAK6C,SAAS,CAACooB,gBAAiBO,EAAkBH,OAAQc,M,+BAEjD,IAAD,OAEFxB,EAAY,CACjBnqB,OAAQ,MACR0K,UAHclL,KAAKC,MAAM+pB,OAGL,uBAAyB,0BAC7CxkB,SAAU,QACVG,IAAK,MACLF,MAAO,OACPmlB,UAAW,MACXtqB,MAAO,SAEFiI,EAAgB,CACrBtD,WAAY,0HAEb,OACC,yBAAK7E,UAAU,UAAUC,MAAOsqB,GAC/B,yBAAKvqB,UAAU,iBACd,yBAAKA,UAAU,WACd,yBAAKA,UAAU,6BACd,4BAAQA,UAAU,0BAA0BO,QAASX,KAAK6pB,UAAUhpB,KAAKb,OACxE,uBAAGI,UAAU,mBAIhB,yBAAKA,UAAU,UACd,uBAAGA,UAAU,cADd,gBAIA,yBAAKA,UAAU,QACd,qGAKF,yBAAKA,UAAU,UAAUC,MAAO,CAAC8C,UAAW,WAC3C,yBAAK/C,UAAU,eACd,yBAAKA,UAAU,WACd,yBAAKA,UAAU,MAAM8C,GAAG,gBACvB,yBAAK9C,UAAU,oBAAf,4BAGA,yBAAKA,UAAU,mBACd,yBAAK4F,MAAM,0BACV,2BAAOE,KAAK,QAAQiD,IAAI,IAAIC,IAAI,KAAK7C,MAAOvG,KAAKsB,MAAM4pB,KAAM5hB,KAAK,IAAI9C,SAAU,SAACxD,GAAD,OAAK,EAAKqpB,WAAWrpB,IAAI3C,MAAOkI,MAGlH,yBAAKvC,MAAM,mBAAmBhG,KAAKsB,MAAM4pB,QAG3C,yBAAK9qB,UAAU,WACd,yBAAKA,UAAU,MAAM8C,GAAG,gBACvB,yBAAK9C,UAAU,mBAAmBC,MAAO,CAACisB,WAAY,UAAtD,iCAGA,yBAAKlsB,UAAU,mBACd,yBAAK4F,MAAM,0BACV,2BAAOE,KAAK,QAAQiD,IAAI,IAAIC,IAAI,IAAI7C,MAAOvG,KAAKsB,MAAM6pB,OAAQ7hB,KAAK,IAAI9C,SAAU,SAACxD,GAAD,OAAK,EAAKupB,aAAavpB,IAAI3C,MAAOkI,MAGrH,yBAAKvC,MAAM,mBAAmBhG,KAAKsB,MAAM6pB,UAG3C,yBAAK/qB,UAAU,WACd,yBAAKA,UAAU,MAAM8C,GAAG,gBACvB,yBAAK9C,UAAU,mBAAmBC,MAAO,CAACisB,WAAY,UAAtD,wCAGA,yBAAKlsB,UAAU,mBACd,yBAAK4F,MAAM,0BACV,2BAAOE,KAAK,QAAQiD,IAAI,MAAMC,IAAI,KAAK7C,MAAOvG,KAAKsB,MAAM8pB,aAAc9hB,KAAK,IAAI9C,SAAU,SAACxD,GAAD,OAAK,EAAKwpB,mBAAmBxpB,IAAI3C,MAAOkI,MAGpI,yBAAKvC,MAAM,mBAAmBhG,KAAKsB,MAAM8pB,gBAG3C,yBAAKhrB,UAAU,WACd,yBAAKA,UAAU,MAAM8C,GAAG,gBACvB,yBAAK9C,UAAU,oBAAf,iBAGA,yBAAKA,UAAU,mBACd,yBAAK4F,MAAM,0BACV,2BAAOE,KAAK,QAAQiD,IAAI,IAAIC,IAAI,KAAK7C,MAAOvG,KAAKsB,MAAM+pB,OAAO,GAAI/hB,KAAK,MAAM9C,SAAU,SAACxD,GAAD,OAAK,EAAKypB,aAAazpB,EAAG,IAAI3C,MAAOkI,MAG9H,yBAAKvC,MAAM,mBAAmBhG,KAAKsB,MAAM+pB,OAAO,MAGlD,yBAAKjrB,UAAU,WACd,yBAAKA,UAAU,MAAM8C,GAAG,gBACvB,yBAAK9C,UAAU,oBAAf,iBAGA,yBAAKA,UAAU,mBACd,yBAAK4F,MAAM,0BACV,2BAAOE,KAAK,QAAQiD,IAAI,IAAIC,IAAI,KAAK7C,MAAOvG,KAAKsB,MAAM+pB,OAAO,GAAI/hB,KAAK,MAAM9C,SAAU,SAACxD,GAAD,OAAK,EAAKypB,aAAazpB,EAAG,IAAI3C,MAAOkI,MAG9H,yBAAKvC,MAAM,mBAAmBhG,KAAKsB,MAAM+pB,OAAO,MAGlD,yBAAKjrB,UAAU,WACd,yBAAKA,UAAU,MAAM8C,GAAG,gBACvB,yBAAK9C,UAAU,oBAAf,iBAGA,yBAAKA,UAAU,mBACd,yBAAK4F,MAAM,0BACV,2BAAOE,KAAK,QAAQiD,IAAI,IAAIC,IAAI,KAAK7C,MAAOvG,KAAKsB,MAAM+pB,OAAO,GAAI/hB,KAAK,MAAM9C,SAAU,SAACxD,GAAD,OAAK,EAAKypB,aAAazpB,EAAG,IAAI3C,MAAOkI,MAG9H,yBAAKvC,MAAM,mBAAmBhG,KAAKsB,MAAM+pB,OAAO,a,GA/MxBlqB,IAAMC,WCpQhCsrB,G,YACF,aAAe,IAAD,8BACV,+CACKphB,cAAgB,EAAKA,cAAczK,KAAnB,gBACrB,EAAKS,MAAQ,CACTqrB,WAAW,IACXC,WAAW,MALL,E,iFASV,IAAID,EAAa,IACbE,EAAgB7sB,KAChB4sB,EAAa7kB,aAAY,WACzB4kB,EAA8C,IAAjC/qB,OAAOO,KAAKC,MAAM0qB,aAC/BD,EAAchqB,SAAS,CAAC8pB,WAAWA,MACpC,KACH3sB,KAAK6C,SAAS,CAAC+pB,WAAWA,M,oCAEhBjoB,GACV/C,OAAOO,KAAKC,MAAM0qB,aAAenoB,EAAMrB,OAAOiD,MAAM,IACpDvG,KAAK6C,SAAS,CAAC8pB,WAAWhoB,EAAMrB,OAAOiD,U,+BAElC,IAAD,OAIJ,OACI,yBAAKnG,UAAU,qBACX,yBAAKA,UAAU,WACX,wBAAIA,UAAU,wBAAd,4BACA,2BAAOA,UAAU,sCAAsCJ,KAAKsB,MAAMqrB,WAAa,MAGnF,6BACI,2BAAOzmB,KAAK,QAAQiD,IAAI,IAAIC,IAAI,MAAM7C,MAAOvG,KAAKsB,MAAMqrB,WAAYrjB,KAAK,IAAI9C,SAAU,SAACxD,GAAD,OAAK,EAAKsI,cAActI,IAAI3C,MAX1G,CACjB4E,WAAY,kI,GAxBM9D,IAAMC,WAyC9B2rB,G,YACF,aAAc,IAAD,8BACT,+CACKpd,aAAe,EAAKA,aAAa9O,KAAlB,gBACpB,EAAKiP,YAAc,EAAKA,YAAYjP,KAAjB,gBACnB,EAAK2V,WAAa,EAAKA,WAAW3V,KAAhB,gBAJT,E,0EAMA6K,EAAMshB,GACfhtB,KAAKC,MAAM0P,aAAajE,EAAMshB,K,kCAEtBthB,GACR1L,KAAKC,MAAM6P,YAAYpE,K,iCAEhBgL,GACP1W,KAAKC,MAAMuW,WAAWE,K,+BAEjB,IAAD,OACE7I,EAAa7N,KAAKC,MAAM4N,WACxBmC,EAAchQ,KAAKC,MAAM+P,YAC/B,OACI,yBAAK5P,UAAU,mBAAmB8C,GAAG,eACjC,kBAAC,GAAD,MACA,6BAAS9C,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,gBAIA,kBAAC,GAAD,OAEJ,6BAASA,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,gBAIA,kBAAC,EAAD,OAEJ,6BAASA,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,kBAIA,kBAAC,EAAD,CAAcuP,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAK7C,aAAajE,EAAM8G,IAAc1C,YAAe,SAACpE,GAAD,OAAS,EAAKoE,YAAYpE,IAAQmC,WAAYA,EAAYmC,YAAaA,EAAaG,mBAAoBnQ,KAAKC,MAAMkQ,mBAAoBJ,kBAAmB/P,KAAKC,MAAM8P,kBAAmBvC,YAAaxN,KAAKC,MAAMuN,eAE5T,6BAASpN,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,kBAIA,kBAAC,GAAD,CACIuP,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAK7C,aAAajE,EAAM8G,IAC7D1C,YAAe,SAACpE,GAAD,OAAS,EAAKoE,YAAYpE,IACzCmC,WAAYA,EACZ2I,WAAc,SAACE,GAAD,OAAS,EAAKF,WAAWE,IACvC2B,eAAkBrY,KAAKC,MAAMoY,eAC7B6O,mBAAsBlnB,KAAKC,MAAMinB,mBACjC3O,oBAAuBvY,KAAKC,MAAMsY,oBAClCpI,mBAAsBnQ,KAAKC,MAAMkQ,mBACjC3C,YAAaxN,KAAKC,MAAMuN,YACxBrB,KAAMvK,OAAOqrB,oBAAoB5F,MACjCva,IAAKlL,OAAOqQ,eAAenF,IAC3BoF,YAAatQ,OAAOqQ,eAAeC,YACnCwG,MAAO,MAGf,6BAAStY,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,4BAIA,kBAAC,GAAD,CACIuP,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAK7C,aAAajE,EAAM8G,IAC7D1C,YAAe,SAACpE,GAAD,OAAS,EAAKoE,YAAYpE,IACzCmC,WAAYA,EACZ2I,WAAc,SAACE,GAAD,OAAS,EAAKF,WAAWE,IACvC2B,eAAkBrY,KAAKC,MAAMoY,eAC7B6O,mBAAsBlnB,KAAKC,MAAMinB,mBACjC3O,oBAAuBvY,KAAKC,MAAMsY,oBAClCpI,mBAAsBnQ,KAAKC,MAAMkQ,mBACjC3C,YAAaxN,KAAKC,MAAMuN,eAGhC,6BAASpN,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,4BAIA,kBAAC,GAAD,CAAc6oB,mBAAoBjpB,KAAKC,MAAMgpB,mBAAoBE,oBAAqBnpB,KAAKC,MAAMkpB,oBAAqBC,yBAA0BppB,KAAKC,MAAMmpB,4BAE/J,6BAAShpB,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,uCAIA,kBAAC,GAAD,CACIuP,aAAc,SAACjE,EAAO8G,GAAR,OAAwB,EAAK7C,aAAajE,EAAO8G,IAC/D1C,YAAa,SAACpE,GAAD,OAAW,EAAKoE,YAAYpE,IACzCmC,WAAYA,EACZ2I,WAAY,SAACE,GAAD,OAAW,EAAKF,WAAWE,IACvC2B,eAAgBrY,KAAKC,MAAMoY,eAC3B6O,mBAAoBlnB,KAAKC,MAAMinB,mBAC/B3O,oBAAqBvY,KAAKC,MAAMsY,oBAChCpI,mBAAoBnQ,KAAKC,MAAMkQ,mBAC/B3C,YAAaxN,KAAKC,MAAMuN,YACxBrB,KAAMvK,OAAOsrB,qBAAqB7F,MAClCva,IAAKlL,OAAOurB,gBAAgBrgB,IAC5BoF,YAAatQ,OAAOurB,gBAAgBjb,YACpCwG,MAAO9W,OAAOurB,gBAAgBC,c,GA1G9BjsB,IAAMC,WA2MfisB,G,YAvFX,aAAe,IAAD,8BACV,+CACKviB,cAAgB,EAAKA,cAAcjK,KAAnB,gBACrB,EAAK8O,aAAe,EAAKA,aAAa9O,KAAlB,gBACpB,EAAKiP,YAAc,EAAKA,YAAYjP,KAAjB,gBACnB,EAAK2V,WAAa,EAAKA,WAAW3V,KAAhB,gBAClB,EAAKS,MAAQ,CACTiD,SAAW,QAPL,E,6EAWVvE,KAAKC,MAAMqtB,qB,mCAEF5hB,EAAMshB,GACfhtB,KAAKC,MAAM0P,aAAajE,EAAMshB,K,iCAEvBtW,GACP1W,KAAKC,MAAMuW,WAAWE,K,kCAEdhL,GACR1L,KAAKC,MAAM6P,YAAYpE,K,kCAEf7G,GACR7E,KAAK6C,SAAS,CAAC0B,SAAWM,M,+BAErB,IAAD,OACE0oB,EAAkBvtB,KAAKC,MAAMstB,gBAC7B1f,EAAa7N,KAAKC,MAAM4N,WACxBmC,EAAchQ,KAAKC,MAAM+P,YACzBhF,EAAa,CACfC,SAAW,UACXC,UAAYqiB,EAAgB,uBAAuB,2BACnDjtB,MAAQ,SAWZ,MAN2B,cAAxBN,KAAKsB,MAAMiD,SACVsB,IAASC,OAAO,kBAAC,EAAD,CAAe3F,SAAS,4CAA4CD,YAAa,SAAC8C,GAAD,OAAK,EAAK9C,YAAY8C,MAAOhB,SAASC,eAAe,SAE1H,SAAxBjC,KAAKsB,MAAMiD,UACfsB,IAASE,uBAAuB/D,SAASC,eAAe,SAGxD,6BACI,yBAAK7B,UAAU,wCAAwC8C,GAAG,WAAW7C,MAAO2K,GACxE,yBAAK5K,UAAU,WACX,yBAAKA,UAAU,MAAM8C,GAAG,iBACpB,yBAAK9C,UAAU,sBACX,wBAAIA,UAAU,YAAYC,MAfjC,CACb0C,OAAQ,wBAegB,uBAAG3C,UAAU,iBACb,yBAAKA,UAAU,WAAf,wBAKR,yBAAKA,UAAU,kBAAkB8C,GAAG,kBAAkB7C,MAAO,CAAC4F,UAAU,SAAS9C,UAAU,UACvF,4BAAQ/C,UAAU,mCAAmCC,MAAO,CAAC+C,SAAS,OAAO6B,WAAW,QAAStE,QAAS,SAACqC,GAAD,OAAK,EAAK9C,YAAY,eAC5H,uBAAGE,UAAU,sBAGrB,yBAAKA,UAAU,kBAAkB8C,GAAG,mBAChC,uBAAG9C,UAAU,cAAc8C,GAAG,YAAYvC,QAAS,SAACqC,GAAD,OAAK,EAAK8H,cAAc9H,SAIvF,kBAAC,GAAD,CACI2M,aAAgB,SAACjE,EAAMshB,GAAP,OAAsB,EAAKrd,aAAajE,EAAMshB,IAC9Dld,YAAe,SAACpE,GAAD,OAAS,EAAKoE,YAAYpE,IACzCmC,WAAYA,EACZmC,YAAaA,EACbwG,WAAc,SAACE,GAAD,OAAS,EAAKF,WAAWE,IACvC2B,eAAkBrY,KAAKC,MAAMoY,eAC7B6O,mBAAsBlnB,KAAKC,MAAMinB,mBACjC3O,oBAAuBvY,KAAKC,MAAMsY,oBAClCpI,mBAAsBnQ,KAAKC,MAAMkQ,mBACjC3C,YAAaxN,KAAKC,MAAMuN,YACxByb,mBAAoBjpB,KAAKC,MAAMgpB,mBAC/BE,oBAAqBnpB,KAAKC,MAAMkpB,oBAChCC,yBAA0BppB,KAAKC,MAAMmpB,iC,GAhF9BjoB,IAAMC,WCtJ/BsrB,G,YACF,aAAe,IAAD,8BACV,+CACKphB,cAAgB,EAAKA,cAAczK,KAAnB,gBACrB,EAAKS,MAAQ,CACTqrB,WAAW,IACXC,WAAW,MALL,E,iFASV,IAAID,EAAa,IACbE,EAAgB7sB,KAChB4sB,EAAa7kB,aAAY,WACzB4kB,EAA8C,IAAjC/qB,OAAOO,KAAKC,MAAM0qB,aAC/BD,EAAchqB,SAAS,CAAC8pB,WAAWA,MACpC,KACH3sB,KAAK6C,SAAS,CAAC+pB,WAAWA,M,oCAEhBjoB,GACV/C,OAAOO,KAAKC,MAAM0qB,aAAenoB,EAAMrB,OAAOiD,MAAM,IACpDvG,KAAK6C,SAAS,CAAC8pB,WAAWhoB,EAAMrB,OAAOiD,U,+BAElC,IAAD,OAIJ,OACI,yBAAKnG,UAAU,qBACX,yBAAKA,UAAU,WACX,wBAAIA,UAAU,wBAAd,4BACA,2BAAOA,UAAU,sCAAsCJ,KAAKsB,MAAMqrB,WAAa,MAGnF,6BACI,2BAAOzmB,KAAK,QAAQiD,IAAI,IAAIC,IAAI,MAAM7C,MAAOvG,KAAKsB,MAAMqrB,WAAYrjB,KAAK,IAAI9C,SAAU,SAACxD,GAAD,OAAK,EAAKsI,cAActI,IAAI3C,MAX1G,CACjB4E,WAAY,kI,GAxBM9D,IAAMC,WAqLrBosB,G,YA3IX,aAAe,IAAD,8BACV,+CACK1iB,cAAgB,EAAKA,cAAcjK,KAAnB,gBACrB,EAAK0K,gBAAkB,EAAKA,gBAAgB1K,KAArB,gBAHb,E,6EAMVb,KAAKC,MAAMwtB,uB,sCAEC/hB,GACZ1L,KAAKC,MAAMsL,gBAAgBG,K,+BAEtB,IAAD,OACEgiB,EAAoB1tB,KAAKC,MAAMytB,kBAC/B5W,EAAe9W,KAAKC,MAAM8sB,UAAUY,SACpCC,EAAe5tB,KAAKC,MAAM8sB,UAAUc,SACpCC,EAAkB9tB,KAAKC,MAAM8sB,UAAUgB,YACvCC,EAAiBhuB,KAAKC,MAAM8sB,UAAUY,SAAU5f,OAChDkgB,EAAiBjuB,KAAKC,MAAM8sB,UAAUc,SAAU9f,OAChDmgB,EAAoBluB,KAAKC,MAAM8sB,UAAUgB,YAAahgB,OACtD/C,EAAa,CACfC,SAAW,UACXC,UAAYwiB,EAAkB,uBAAuB,2BACrDptB,MAAQ,SAKZ,OACI,6BACI,yBAAKF,UAAU,wCAAwC8C,GAAG,WAAW7C,MAAO2K,GACxE,yBAAK5K,UAAU,WACX,yBAAKA,UAAU,MAAM8C,GAAG,iBACpB,yBAAK9C,UAAU,wBACX,wBAAIA,UAAU,YAAYC,MATjC,CACb0C,OAAQ,wBASgB,uBAAG3C,UAAU,iBACb,yBAAKA,UAAU,WAAf,8BAKR,yBAAKA,UAAU,kBAAkB8C,GAAG,mBAChC,uBAAG9C,UAAU,cAAc8C,GAAG,YAAYvC,QAAS,SAACqC,GAAD,OAAK,EAAK8H,cAAc9H,SAIvF,yBAAKE,GAAG,eACJ,kBAAC,GAAD,MACA,6BAAS9C,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,iBAI0B,IAAlB4tB,EAAsB,KACtB,yBAAK9qB,GAAG,MAAM8C,MAAM,iDAAiD3F,MAAO,CAACsF,IAAK,QAASqoB,IAI/FlX,EAAanK,KACT,SAACjB,GAAD,OACI,kBAAC,EAAD,CAAeA,MAAOA,EAAOH,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,gBAI/G,6BAASxL,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,iBAI0B,IAAlB6tB,EAAsB,KACtB,yBAAK/qB,GAAG,MAAM8C,MAAM,iDAAiD3F,MAAO,CAACsF,IAAK,QAASsoB,IAI/FL,EAAajhB,KACT,SAACjB,GAEG,OAAOA,EAAMC,WACT,IAAK,QACD,OAAO,kBAAC,EAAD,CAAaD,MAAOA,EAAOH,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YACxG,IAAK,WACD,OAAO,kBAAC,EAAD,CAAgBF,MAAOA,EAAOoL,aAAcA,EAAcvL,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,UAAWsb,mBAAoB,EAAKjnB,MAAMinB,mBAAoB1Z,YAAa,EAAKvN,MAAMuN,YAAa2I,YAAa,EAAKlW,MAAMkW,YAAaK,WAAY,EAAKvW,MAAMuW,aACtS,IAAK,UACD,OAAO,kBAAC,EAAD,CAAe9K,MAAOA,EAAOoL,aAAcA,EAAcvL,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YACtI,IAAK,qBACD,OAAO,kBAAC,EAAD,CAA0BF,MAAOA,EAAOoL,aAAcA,EAAcvL,gBAAiB,SAACG,GAAD,OAAW,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YACnJ,IAAK,8BACD,OAAO,kBAAC,EAAD,CAAmCF,MAAOA,EAAOoL,aAAcA,EAAcvL,gBAAiB,SAACG,GAAD,OAAW,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YAC5J,IAAK,YACD,OAAO,kBAAC,EAAD,CAAiBF,MAAOA,EAAOoL,aAAcA,EAAcvL,gBAAiB,SAACG,GAAD,OAAW,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YAC1I,IAAK,WACD,OAAO,kBAAC,EAAD,CAAgBF,MAAOA,EAAOH,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YAC3G,IAAK,QACD,OAAO,kBAAC,EAAD,CAAaF,MAAOA,EAAOH,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YACxG,IAAK,YACD,OAAO,kBAAC,EAAD,CAAiBF,MAAOA,EAAOH,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YAC5G,IAAK,MACD,OAAO,kBAAC,EAAD,CAAWF,MAAOA,EAAOH,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YACtG,IAAK,UACD,OAAO,kBAAC,EAAD,CAAmBF,MAAOA,EAAOH,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,YAC9G,IAAK,SACD,OAAO,kBAAC,GAAD,CAAcF,MAAOA,EAAOoL,aAAcA,EAAcvL,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,UAAWsb,mBAAoB,EAAKjnB,MAAMinB,mBAAoB1Z,YAAa,EAAKvN,MAAMuN,YAAa2I,YAAa,EAAKlW,MAAMkW,YAAaK,WAAY,EAAKvW,MAAMuW,kBAQxT,6BAASpW,UAAU,qBACf,iCACI,uBAAGA,UAAU,kBADjB,2BAI6B,IAArB8tB,EAAyB,KACzB,yBAAKhrB,GAAG,MAAM8C,MAAM,iDAAiD3F,MAAO,CAACsF,IAAK,QAASuoB,IAI/FJ,EAAgBnhB,KACZ,SAACjB,GAEG,OAAOA,EAAMC,WACT,IAAK,WACD,OAAO,kBAAC,EAAD,CAAgBD,MAAOA,EAAOoL,aAAcA,EAAcvL,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,UAAWsb,mBAAoB,EAAKjnB,MAAMinB,mBAAoB1Z,YAAa,EAAKvN,MAAMuN,YAAa2I,YAAa,EAAKlW,MAAMkW,YAAaK,WAAY,EAAKvW,MAAMuW,aACtS,IAAK,SACD,OAAO,kBAAC,GAAD,CAAc9K,MAAOA,EAAOoL,aAAcA,EAAcvL,gBAAiB,SAACG,GAAD,OAAS,EAAKH,gBAAgBG,IAAQ0G,IAAK1G,EAAME,UAAWsb,mBAAoB,EAAKjnB,MAAMinB,mBAAoB1Z,YAAa,EAAKvN,MAAMuN,YAAa2I,YAAa,EAAKlW,MAAMkW,YAAaK,WAAY,EAAKvW,MAAMuW,yB,GA9H/SrV,IAAMC,WCsnBxB+sB,G,YA3qBX,aAAe,IAAD,8BACV,+CACK7sB,MAAQ,CACT8sB,iBAAiB,EACjBC,UAAW,KACXC,gBAAiB,KACjBC,gBAAiB,KACjBC,eAAgB,KAChBC,qBAAsB,KACtBC,UAAW,KACXC,mBAAoB,KACpBC,cAAe,KACfC,eAAgB,KAChBC,YAAa,KACbC,aAAc,MAElB,EAAKjkB,cAAgB,EAAKA,cAAcjK,KAAnB,gBACrB,EAAKmuB,QAAU,EAAKA,QAAQnuB,KAAb,gBACf,EAAKouB,cAAgB,EAAKA,cAAcpuB,KAAnB,gBACrB,EAAKquB,cAAgB,EAAKA,cAAcruB,KAAnB,gBACrB,EAAKsuB,QAAU,EAAKA,QAAQtuB,KAAb,gBACf,EAAKuuB,iBAAmB,EAAKA,iBAAiBvuB,KAAtB,gBACxB,EAAKwuB,YAAc,EAAKA,YAAYxuB,KAAjB,gBACnB,EAAKyuB,aAAe,EAAKA,aAAazuB,KAAlB,gBACpB,EAAK0uB,UAAY,EAAKA,UAAU1uB,KAAf,gBACjB,EAAK2uB,WAAa,EAAKA,WAAW3uB,KAAhB,gBAzBR,E,6EA4BVb,KAAKC,MAAMwvB,sB,gCAGX,IAAIpB,EAAYruB,KAAKsB,MAAM+sB,UACT,OAAdA,GACAA,EAAUlQ,SAEdkQ,EAAY,IAAIzsB,OAAOC,GAAGoa,OAAOyT,IAAI,CACjCvT,KAAMva,OAAOO,KAAKC,MAClB/B,MAAO,CAAEI,KAAM,OAAQH,MAAO,WAElCN,KAAK6C,SAAS,CAAEwrB,gB,sCAGhB,IAAIC,EAAkBtuB,KAAKsB,MAAMgtB,gBACjC,GAAwB,OAApBA,EACAA,EAAkB,IAAI1sB,OAAOC,GAAGoa,OAAO0T,QAAQ,CAC3CxT,KAAMva,OAAOO,KAAKC,MAClBwtB,MAAO,IACPC,MAAO,IACPC,UAAW,GACXC,WAAY,KAEhB/vB,KAAK6C,SAAS,CAACyrB,wBACZ,CACH,IAAItE,EAAShqB,KAAKsB,MAAM8sB,gBACpBpE,EACAsE,EAAgB5U,OAEhB4U,EAAgBjkB,OAEpBrK,KAAK6C,SAAS,CAACurB,iBAAkBpE,IAErChqB,KAAK8K,kB,sCAGL,IAAIyjB,EAAkBvuB,KAAKsB,MAAMitB,gBAC7BC,EAAiBxuB,KAAKsB,MAAMktB,eAC5BC,EAAuBzuB,KAAKsB,MAAMmtB,qBACtC,GAAwB,OAApBF,EAA0B,CAC1B,IAAIzG,EAAclmB,OAAOO,KAAKC,MAC9B0lB,EAAYK,UAAU,YACtBqG,EAAiB,IAAI5sB,OAAOC,GAAGoa,OAAOC,SAAS,CAC3CC,KAAM2L,EACNznB,MAAO,CAAEI,KAAM,QAASH,MAAO,MAAOsF,OAAQ,QAC9CwW,WAAW,IAAIlV,MAAOmT,UACtBgC,UAAU,IAAInV,MAAOmT,UAAY,MACjCiC,UAAU,IAEd,IAAImS,EAAuB,IAAI7sB,OAAOC,GAAGoa,OAAOM,eAAe,CAC3DJ,KAAM2L,EACNtL,SAAUgS,EACV9S,UAAW,IACXrb,MAAO,CAACI,KAAM,QAASmF,OAAQ,UAG/B2oB,EAAkB,IAAI3sB,OAAOC,GAAGoa,OAAO+T,gBAAgB,CACvD7T,KAAM2L,EACNtL,SAAUgS,EACV9e,KAJO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAK5FugB,OAAQ,4BACRC,MAAOtuB,OAAO+M,aAAauD,cAE/BlS,KAAK6C,SAAS,CAAC0rB,kBAAiBC,iBAAgBC,8BAEhDF,EAAgBpQ,SAChBqQ,EAAerQ,SACfsQ,EAAqBtQ,SACrBne,KAAK6C,SAAS,CAAC0rB,gBAAiB,KAAMC,eAAgB,KAAMC,qBAAsB,S,gCAItF,IAAIC,EAAY1uB,KAAKsB,MAAMotB,UACT,OAAdA,GACAA,EAAUvQ,SAEduQ,EAAY,IAAI9sB,OAAOC,GAAGoa,OAAOkU,IAAI,CAAChU,KAAMva,OAAOO,KAAKC,MAAO8tB,MAAO,cACtEluB,SAASouB,iBAAiB,uCAAuC,GAAG7pB,MAAQ,uCAC5EvE,SAASouB,iBAAiB,4CAA4C,GAAGC,aAAa,UAAU,GAChGruB,SAASouB,iBAAiB,qCAAqC,GAAGC,aAAa,UAAU,GACzFrwB,KAAK6C,SAAS,CAAC6rB,gB,yCAGf,IAAIC,EAAqB3uB,KAAKsB,MAAMqtB,mBACT,OAAvBA,GACAA,EAAmBxQ,SAEvBwQ,EAAqB,IAAI/sB,OAAOC,GAAGoa,OAAOqU,aAAa,CAACnU,KAAMva,OAAOO,KAAKC,MAAO8tB,MAAO,uBACxFlwB,KAAK6C,SAAS,CAAC8rB,yB,oCAGf,IAAIC,EAAgB5uB,KAAKsB,MAAMstB,cACT,OAAlBA,GACAA,EAAczQ,SAElByQ,EAAgB,IAAIhtB,OAAOC,GAAGoa,OAAOsU,QAAQ,CACzCpU,KAAMva,OAAOO,KAAKC,MAClB8tB,MAAOtuB,OAAO+M,aAAauD,YAC3Bse,cAAe,6CAEnBxwB,KAAK6C,SAAS,CAAE+rB,oB,qCAIhB,IAAIC,EAAiB7uB,KAAKsB,MAAMutB,eACT,OAAnBA,GACAA,EAAe1Q,SAEnB0Q,EAAiB,IAAIjtB,OAAOC,GAAGoa,OAAOwU,SAAS,CAC3CtU,KAAMva,OAAOO,KAAKC,MAClB8tB,MAAOtuB,OAAO+M,aAAauD,YAC3BxC,KAAM,CACF,CACI3C,IAAK,wBACLC,WAAY,oBAEhB,CACID,IAAK,wBACLC,WAAY,mBAEhB,CACID,IAAK,wBACLC,WAAY,wBAIxBhN,KAAK6C,SAAS,CAAEgsB,qB,kCAIhB,IAAIC,EAAc9uB,KAAKsB,MAAMwtB,YACzBN,EAAiBxuB,KAAKsB,MAAMktB,eAC5BC,EAAuBzuB,KAAKsB,MAAMmtB,qBAEtC,GAAoB,OAAhBK,EACJ,CACI,IAAIN,EAAiB,IAAI5sB,OAAOC,GAAGoa,OAAOC,SAAS,CAC/CC,KAAMva,OAAOO,KAAKC,MAClB/B,MAAO,CAAEI,KAAM,QAASH,MAAO,MAAOsF,OAAQ,UAG9C6oB,EAAuB,IAAI7sB,OAAOC,GAAGoa,OAAOM,eAAe,CAC3DJ,KAAMva,OAAOO,KAAKC,MAClBoa,SAAUgS,EACV9S,UAAW,IACXrb,MAAO,CAAEI,KAAM,QAASmF,OAAQ,UAGhCkpB,EAAc,IAAIltB,OAAOC,GAAGoa,OAAOyU,YAAY,CAC/CvU,KAAMva,OAAOO,KAAKC,MAClBoa,SAAUgS,EACV0B,MAAOtuB,OAAO+M,aAAauD,cAG/BlS,KAAK6C,SAAS,CAAEisB,cAAaN,iBAAgBC,8BAI7CK,EAAY3Q,SACZqQ,EAAerQ,SACfsQ,EAAqBtQ,SACrBne,KAAK6C,SAAS,CAAEisB,YAAa,KAAMN,eAAgB,KAAMC,qBAAsB,S,mCAKnF,IAAIM,EAAe/uB,KAAKsB,MAAMytB,aACT,OAAjBA,GACAA,EAAa5Q,SAEjB4Q,EAAe,IAAIntB,OAAOC,GAAGoa,OAAO0U,OAAO,CACvCxU,KAAMva,OAAOO,KAAKC,MAClBwuB,WAAY,CACR7jB,IAAK,6BACLC,WAAY,oBACZgB,UAAW,aACXyD,YAAa,oDAEjBof,WAAY,6EAGhB7wB,KAAK6C,SAAS,CAAEksB,mB,yCAGS,IAAIntB,OAAOC,GAAGoa,OAAO6U,6BAA6B,CACvE3U,KAAMva,OAAOO,KAAKC,MAClBqP,YAAa7P,OAAOqQ,eAAeC,cAEpB6e,UAAUC,MAAQ,IACrC,IAAIC,EAASjvB,SAASouB,iBAAiB,qBACvCa,EAAOA,EAAOljB,OAAS,GAAG1N,MAAMI,KAAO,QACvCT,KAAK8K,gBACL,IAAIomB,EAAgBlvB,SAASmvB,uBAAuB,2CAChDC,EAAapvB,SAASouB,iBAAiB,0DAC3C9f,OAAOC,KAAK6gB,GAAYnhB,SAAQ,SAACmC,GAC7Bgf,EAAWhf,GAAK+L,YAEpB7N,OAAOC,KAAK2gB,GAAejhB,SAAQ,SAACmC,GAChC,GAA4C,GAAxC8e,EAAc9e,GAAKif,kBAAwB,CAC3C,IAAI/sB,EAAItC,SAASsvB,cAAc,KAC/BhtB,EAAElE,UAAY,eACdkE,EAAEjB,KAAO,gCACTiB,EAAEitB,KAAO,2BACTL,EAAc9e,GAAKof,QAAQltB,S,4CAKP,IAAI1C,OAAOC,GAAGoa,OAAOwV,gCAAgC,CAC7EtV,KAAMva,OAAOO,KAAKC,MAClBqP,YAAa7P,OAAOqQ,eAAeC,cAEjB6e,UAAUC,MAAQ,IACxC,IAAIC,EAASjvB,SAASouB,iBAAiB,qBACvCa,EAAOA,EAAOljB,OAAS,GAAG1N,MAAMI,KAAO,QACvCT,KAAK8K,gBACL,IAAIomB,EAAgBlvB,SAASmvB,uBAAuB,2CAChDC,EAAapvB,SAASouB,iBAAiB,0DAC3C9f,OAAOC,KAAK6gB,GAAYnhB,SAAQ,SAACmC,GAC7Bgf,EAAWhf,GAAK+L,YAEpB7N,OAAOC,KAAK2gB,GAAejhB,SAAQ,SAACmC,GAChC,GAA4C,GAAxC8e,EAAc9e,GAAKif,kBAAwB,CAC3C,IAAI/sB,EAAItC,SAASsvB,cAAc,KAC/BhtB,EAAElE,UAAY,eACdkE,EAAEjB,KAAO,gCACTiB,EAAEitB,KAAO,2BACTL,EAAc9e,GAAKof,QAAQltB,S,qCAKd,IAAI1C,OAAOC,GAAGoa,OAAOyV,SAAS,CAC/CvV,KAAMva,OAAOO,KAAKC,MAClBqP,YAAa,UAEFsf,UAAUC,MAAQ,IACjC,IAAIC,EAASjvB,SAASouB,iBAAiB,qBACvCa,EAAOA,EAAOljB,OAAS,GAAG1N,MAAMI,KAAO,QACvCT,KAAK8K,gBACL,IAAIomB,EAAgBlvB,SAASmvB,uBAAuB,2CAA2C,GAC3FQ,EAAY3vB,SAAS4vB,cAAc,yDACtB,MAAbD,GACAA,EAAUxT,SAEd,IAAI7Z,EAAItC,SAASsvB,cAAc,KAC/BhtB,EAAElE,UAAY,cACdkE,EAAEjB,KAAO,8BACTiB,EAAEhB,OAAS,SACXgB,EAAEitB,KAAO,uCACTL,EAAcM,QAAQltB,GACtBtC,SAASmvB,uBAAuB,8BAA8B,GAAG5qB,MAAQ,6DAEzE3E,OAAOO,KAAKC,MAAMQ,WAAW,IAAIhB,OAAOC,GAAGc,OACvC,IAAIf,OAAOmZ,SAAS,mBAAoB,mBAAoB,mBAC5D,IAAInZ,OAAOY,YAAY,kBAAoB,mBAAqB,mBAChE,IAAIZ,OAAOY,YAAY,mBAAqB,mBAAqB,qBAClE,K,0CAGuB,IAAIZ,OAAOC,GAAGoa,OAAO4V,cAAc,CACzD1V,KAAMva,OAAOO,KAAKC,MAClBqP,YAAa7P,OAAOqQ,eAAeC,cAEnB6e,UAAUC,MAAQ,IACtC,IAAIC,EAASjvB,SAASouB,iBAAiB,qBACvCa,EAAOA,EAAOljB,OAAS,GAAG1N,MAAMI,KAAO,QACvCT,KAAK8K,gBACL,IAAIomB,EAAgBlvB,SAAS4vB,cAAc,yBAAyBE,cAAcA,cAClFZ,EAAca,UAAUC,IAAI,mCAC5B,IAAIZ,EAAapvB,SAAS4vB,cAAc,kDACtB,MAAdR,GACAA,EAAWjT,SAEf,IAAI7Z,EAAItC,SAASsvB,cAAc,KAC/BhtB,EAAElE,UAAY,eACdkE,EAAEjB,KAAO,wBACTiB,EAAEitB,KAAO,sCACTL,EAAcM,QAAQltB,K,gCAGT,IAAI1C,OAAOC,GAAGoa,OAAOgW,IAAI,CAClC9V,KAAMva,OAAOO,KAAKC,QAEf2uB,UAAUC,MAAQ,IACzBhvB,SAAS4vB,cAAc,qBAAqBvxB,MAAMI,KAAO,QACzDT,KAAK8K,gBACL,IAAIomB,EAAgBlvB,SAASmvB,uBAAuB,yBAAyB,GACzEC,EAAapvB,SAAS4vB,cAAc,wCACtB,MAAdR,GACAA,EAAWjT,SAEf,IAAI7Z,EAAItC,SAASsvB,cAAc,KAC/BhtB,EAAElE,UAAY,eACdkE,EAAEjB,KAAO,wDACTiB,EAAEjE,MAAMgF,QAAU,QAClBf,EAAEitB,KAAO,2BACTL,EAAcM,QAAQltB,K,wCAGtB,IAAI4tB,EAActwB,OAAOO,KAAKC,MAC1B+vB,EAAoB,IAAIvwB,OAAOC,GAAGoa,OAAOmW,YAAY,CACrDjW,KAAMva,OAAOO,KAAKC,MAClBqP,YAAa7P,OAAOqQ,eAAeC,cAEvCigB,EAAkBrS,iBAAiB,QAAQ,SAAC1R,GACxC,IAAI+N,EAAOgW,EAAkBE,kBAAkBjkB,GAE3CpB,EAAa,SACjB,OAAQoB,GACJ,KAAK,EACDpB,EAAa,QACb,MACJ,KAAK,EACDA,EAAa,SACb,MACJ,KAAK,EACDA,EAAa,QAKrBmP,EAAKnK,aAAa,CACdjF,IAhBM,gCAiBNC,WAAYA,EACZyE,YAAa,aAGrB0gB,EAAkBrS,iBAAiB,SAAS,SAAC1R,GACzC,IAAI+N,EAAOgW,EAAkBE,kBAAkBjkB,GAC/C8jB,EAAc/V,KAElBgW,EAAkBpB,UAAUC,MAAQ,IACpChvB,SAAS4vB,cAAc,+BAA+BvxB,MAAMI,KAAO,QACnET,KAAK8K,gBACL,IAAIomB,EAAgBlvB,SAAS4vB,cAAc,0CACWlkB,GAAlD1L,SAASmvB,uBAAuB,YAAY,IAC5CnvB,SAASmvB,uBAAuB,YAAY,GAAGhT,SAEnD,IAAImU,EAAUtwB,SAASsvB,cAAc,OACrCgB,EAAQlyB,UAAY,WACpBkyB,EAAQC,UAAY,4rBACpBrB,EAAcsB,OAAOF,GACrBtwB,SAASC,eAAe,kBAAkB6d,iBAAiB,SAAS,WAChEoS,EAAYlgB,aAAa,CACrBjF,IAAK,gCACLC,WAAY,SACZyE,YAAa,aAGrBzP,SAASC,eAAe,iBAAiB6d,iBAAiB,SAAS,WAC/DoS,EAAYlgB,aAAa,CACrBjF,IAAK,gCACLC,WAAY,QACZyE,YAAa,aAGrBzP,SAASC,eAAe,kBAAkB6d,iBAAiB,SAAS,WAChEoS,EAAYO,eAAe,CACvB1lB,IAAK,4DACL0E,YAAa,aAGrBzP,SAASC,eAAe,mBAAmB6d,iBAAiB,SAAS,WACjEoS,EAAY5gB,sBAAsB,CAC9BvE,IAAK,gCACLC,WAAY,SACZyE,YAAa,aAGrBzP,SAASC,eAAe,kBAAkB6d,iBAAiB,SAAS,WAChEoS,EAAY5gB,sBAAsB,CAC9BvE,IAAK,gCACLC,WAAY,gBACZyE,YAAa,aAGrBzP,SAASC,eAAe,uBAAuB6d,iBAAiB,SAAS,WACrEoS,EAAY5gB,sBAAsB,CAC9BvE,IAAK,gCACLC,WAAY,SACZyE,YAAa,e,4CAKrB,IACIihB,EAAW9wB,OAAOO,KAAKC,MAAMuwB,UADjB,WAEA,MAAZD,GACA9wB,OAAOO,KAAKC,MAAM6V,iBAAiB,CAC/BlL,IAAKnL,OAAO+M,aAAa7B,IACzBE,WAAY,UACZyE,YAAa7P,OAAOqQ,eAAeC,YACnCuC,SAAU,SAAC3M,EAAS4D,GACZ5D,IACA4qB,EAAWhnB,EACXA,EAAM4H,WAKA,IAAI1R,OAAOC,GAAGoa,OAAO2W,gBAAgB,CACvDzW,KAAMva,OAAOO,KAAKC,MAClBywB,QAAS,CAAC,CACNtB,KAAM,qEACNhrB,MAAO,CACHwG,IAAK,gCACLC,WAAY,SACZgB,UAAW,iBAEhB,CACCujB,KAAM,oDACNhrB,MAAO,CACHwG,IAAK,gCACLC,WAAY,oBACZgB,UAAW,6BAGnB8kB,cAAe,CACXnhB,KAAM,WAEVF,YAAa,UAEDsf,UAAUC,MAAQ,IAClChvB,SAAS4vB,cAAc,mCAAmCvxB,MAAMI,KAAO,QACvET,KAAK8K,gBAEL,IAAIomB,EAAgBlvB,SAAS4vB,cAAc,yCACvCmB,EAAY,yHACZzuB,EAAItC,SAASsvB,cAAc,KAC/BhtB,EAAElE,UAAY,4CACdkE,EAAEjB,KAAO0vB,EACTzuB,EAAEhB,OAAS,SACXgB,EAAEitB,KAAO,eACTL,EAAcsB,OAAOluB,GACrBtC,SAAS4vB,cAAc,yCAAyC9R,iBAAiB,UAAU,SAAC9c,GACxF,IAAIgwB,EAAcC,KAAK7b,MAAMpU,EAAEM,OAAOiD,OAClCkf,EAASzjB,SAAS4vB,cAAc,8CAIpC,GAHc,MAAVnM,GACAA,EAAOtH,SAEW,UAAlB6U,EAAY9vB,GAAgB,CAC5B,IAAIoB,EAAItC,SAASsvB,cAAc,KAC/BhtB,EAAElE,UAAY,4CACdkE,EAAEjB,KAAO0vB,EACTzuB,EAAEhB,OAAS,SACXgB,EAAEitB,KAAO,eACTL,EAAcsB,OAAOluB,QAClB,GAAsB,qBAAlB0uB,EAAY9vB,GAA2B,CAC9C,IAAIgwB,EAAMlxB,SAASsvB,cAAc,OACjC4B,EAAI9yB,UAAY,4CAChB8yB,EAAI7yB,MAAM0C,OAAS,SACnBmwB,EAAInyB,IAAM,oCACVmwB,EAAcsB,OAAOU,OAIdlxB,SAASouB,iBAAiB,mEAAmE,GACnGtQ,iBAAiB,WAAW,WACjC,IAAI4S,EAAW9wB,OAAOO,KAAKC,MAAMuwB,UAAU,WAC3B,MAAZD,GACA9wB,OAAOO,KAAKC,MAAMmS,YAAYme,Q,wCAMzB,IAAI9wB,OAAOC,GAAGoa,OAAOkX,YAAY,CAAEhX,KAAMva,OAAOO,KAAKC,MAAOqP,YAAa7P,OAAOqQ,eAAeC,cACrG6e,UAAUC,MAAQ,IACzBhvB,SAAS4vB,cAAc,+BAA+BvxB,MAAMI,KAAO,QACnET,KAAK8K,gBACLlJ,OAAOO,KAAKC,MAAM0qB,aAAe,GACjC,IAAIoE,EAAgBlvB,SAAS4vB,cAAc,oCACG,MAA1C5vB,SAAS4vB,cAAc,iBACvB5vB,SAAS4vB,cAAc,gBAAgBzT,SAE3C,IAAIiV,EAAapxB,SAASsvB,cAAc,OACxC8B,EAAWhzB,UAAY,cACvBgzB,EAAWb,UAAY,yMACvBrB,EAAcM,QAAQ4B,GACtBpxB,SAASC,eAAe,mBAAmB6d,iBAAiB,UAAU,SAAC9c,GACnE,IAAIwiB,EAAMxiB,EAAEM,OAAOiD,MACnBvE,SAAS4vB,cAAc,kBAAkByB,UAAzC,wCAA6D7N,EAA7D,KACA5jB,OAAOO,KAAKC,MAAM0qB,aAAetH,EAAI,S,oCAI5B,IAAI5jB,OAAOC,GAAGoa,OAAOqX,QAAQ,CACtCnX,KAAMva,OAAOO,KAAKC,MAClBqP,YAAa7P,OAAOqQ,eAAeC,cAEhC6e,UAAUC,MAAQ,IACzBhvB,SAAS4vB,cAAc,2BAA2BvxB,MAAMI,KAAO,QAC/DT,KAAK8K,gBAELlJ,OAAOO,KAAKC,MAAMQ,WAAW,IAAIhB,OAAOC,GAAGc,OACvC,IAAIf,OAAOmZ,SAAS,mBAAoB,mBAAoB,MAC5D,IAAInZ,OAAOY,WAAW,EAAG,GAAI,GAC7B,IAAIZ,OAAOY,WAAW,EAAG,EAAG,KAC7B,K,+BAEE,IAAD,OAEEwI,EAAa,CACfC,SAAW,UACXC,UAHqBlL,KAAKC,MAAMszB,iBAGH,uBAAuB,2BACpDjzB,MAAQ,SAKZ,OACI,6BACI,yBAAKF,UAAU,wCAAwC8C,GAAG,WAAW7C,MAAO2K,GACxE,yBAAK5K,UAAU,WACX,yBAAKA,UAAU,MAAM8C,GAAG,iBACpB,yBAAK9C,UAAU,wBACX,wBAAIA,UAAU,YAAYC,MATjC,CACb0C,OAAQ,wBASgB,uBAAG3C,UAAU,sBACb,yBAAKA,UAAU,WAAf,YAKR,yBAAKA,UAAU,kBAAkB8C,GAAG,mBAChC,uBAAG9C,UAAU,cAAc8C,GAAG,YAAYvC,QAAS,SAACqC,GAAD,OAAK,EAAK8H,cAAc9H,SAIvF,yBAAK5C,UAAU,eACX,yBAAKA,UAAU,4CAA4CC,MAAO,CAAE0C,OAAQ,cACxE,yBAAK3C,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,mBAAmBvC,QAAS,kBAAI,EAAKsuB,kBAC7E,uBAAG7uB,UAAU,aAAe,6BAC5B,4DAGR,yBAAKA,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,mBAAmBvC,QAAS,kBAAI,EAAKuuB,kBAC7E,uBAAG9uB,UAAU,cAAgB,6BAC7B,4DAGR,yBAAKA,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,aAAavC,QAAS,kBAAM,EAAKquB,YACzE,uBAAG5uB,UAAU,aAAe,6BAC5B,mDAGR,yBAAKA,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,aAAavC,QAAS,kBAAI,EAAKwuB,YACvE,uBAAG/uB,UAAU,eAAiB,6BAC9B,mDAGR,yBAAKA,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,iBAAiBvC,QAAS,kBAAM,EAAK0uB,gBAC7E,uBAAGjvB,UAAU,aAAe,6BAC5B,4DAGR,yBAAKA,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,kBAAkBvC,QAAS,kBAAM,EAAK2uB,iBAC9E,uBAAGlvB,UAAU,mBAAqB,6BAClC,4DAGR,yBAAKA,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,eAAevC,QAAS,kBAAM,EAAK4uB,cAC3E,uBAAGnvB,UAAU,eAAiB,6BAC9B,4DAGR,yBAAKA,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,gBAAgBvC,QAAS,kBAAM,EAAK6uB,eAC5E,uBAAGpvB,UAAU,oBAAsB,6BACnC,4DAGR,yBAAKA,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,sBAAsBvC,QAAS,kBAAM,EAAKyuB,qBAClF,uBAAGhvB,UAAU,kBAAoB,6BACjC,0BAAMC,MAAO,CAAC+C,SAAU,QAAxB,kBAGR,yBAAKhD,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,sBAAsBvC,QAAS,kBAAM,EAAK6yB,qBAClF,uBAAGpzB,UAAU,cAAgB,6BAC7B,0BAAMC,MAAO,CAAC+C,SAAU,QAAxB,0CAGR,yBAAKhD,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,yBAAyBvC,QAAS,kBAAM,EAAK8yB,wBACrF,uBAAGrzB,UAAU,SACT,uBAAGA,UAAU,cACb,uBAAGA,UAAU,uBACb,6BACJ,0BAAMC,MAAO,CAAC+C,SAAU,QAAxB,0CAGR,yBAAKhD,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,kBAAkBvC,QAAS,kBAAM,EAAK+yB,iBAC9E,uBAAGtzB,UAAU,kBAAoB,6BACjC,0BAAMC,MAAO,CAAC+C,SAAU,QAAxB,iCAGR,yBAAKhD,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,uBAAuBvC,QAAS,kBAAM,EAAKgzB,sBACnF,uBAAGvzB,UAAU,mBAAqB,6BAClC,0BAAMC,MAAO,CAAC+C,SAAU,QAAxB,0CAGR,yBAAKhD,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,aAAavC,QAAS,kBAAM,EAAKizB,YACzE,uBAAGxzB,UAAU,cAAgB,6BAC7B,0BAAMC,MAAO,CAAC+C,SAAU,QAAxB,iCAGR,yBAAKhD,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,qBAAqBvC,QAAS,kBAAM,EAAKkzB,oBACjF,uBAAGzzB,UAAU,iBAAmB,6BAChC,0BAAMC,MAAO,CAAC+C,SAAU,QAAxB,oCAGR,yBAAKhD,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,yBAAyBvC,QAAS,kBAAM,EAAKmzB,wBACrF,uBAAG1zB,UAAU,SACT,uBAAGA,UAAU,0BACb,uBAAGA,UAAU,qBACb,6BACJ,0BAAMC,MAAO,CAAC+C,SAAU,QAAxB,0CAGR,yBAAKhD,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,qBAAqBvC,QAAS,kBAAM,EAAKozB,oBACjF,0BAAM/tB,MAAM,4BAA4B3F,MAAO,CAACisB,WAAY,EAAG3mB,IAAK,QAApE,SACA,0BAAMtF,MAAO,CAAC+C,SAAU,QAAxB,iCAGR,yBAAKhD,UAAU,UACX,4BAAQA,UAAU,uBAAuB8C,GAAG,iBAAiBvC,QAAS,kBAAM,EAAKqzB,gBAC7E,uBAAG5zB,UAAU,SACT,uBAAGA,UAAU,oBACb,uBAAGA,UAAU,0BACb,6BACJ,0BAAMC,MAAO,CAAC+C,SAAU,QAAxB,oE,GAlqBJjC,IAAMC,W,yGC0JvB6yB,G,YAhJX,aAAe,IAAD,8BACV,+CACKnpB,cAAgB,EAAKA,cAAcjK,KAAnB,gBACrB,EAAK8O,aAAe,EAAKA,aAAa9O,KAAlB,gBAHV,E,6EAMVb,KAAKC,MAAMi0B,qB,mCAEFxoB,EAAMshB,GACfhtB,KAAKC,MAAM0P,aAAajE,EAAMshB,K,+BAEzB,IAAD,OAEEhiB,EAAa,CACfC,SAAW,UACXC,UAHoBlL,KAAKC,MAAMk0B,gBAGH,uBAAuB,2BACnD7zB,MAAQ,SAKZ,OACI,6BACI,yBAAKF,UAAU,wCAAwC8C,GAAG,WAAW7C,MAAO2K,GACxE,yBAAK5K,UAAU,WACX,yBAAKA,UAAU,MAAM8C,GAAG,iBACpB,yBAAK9C,UAAU,wBACX,wBAAIA,UAAU,YAAYC,MATjC,CACb0C,OAAQ,wBASgB,uBAAG3C,UAAU,gBACb,yBAAKA,UAAU,WAAf,8BAKR,yBAAKA,UAAU,kBAAkB8C,GAAG,mBAChC,uBAAG9C,UAAU,cAAc8C,GAAG,YAAYvC,QAAS,SAACqC,GAAD,OAAK,EAAK8H,cAAc9H,SAIvF,yBAAKgD,MAAM,cAAc9C,GAAG,eACxB,yBAAK9C,UAAU,SACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,SACX,yBAAKW,IAAKqzB,KAASC,IAAI,2DACvB,qEAEJ,yBAAKj0B,UAAU,WACX,yBAAKA,UAAU,UAAf,oHACA,yBAAKA,UAAU,QACX,uBAAGiD,KAAK,uCAAuCC,OAAO,UAAtD,2BACI,yBAAKhD,MAAM,KAAKC,OAAO,KAAK+zB,QAAQ,YAAYC,KAAK,OAAOC,MAAM,+BAC9D,0BAAMC,YAAU,UAAUC,YAAU,UAAU9c,EAAE,y6BAAy6B2c,KAAK,YAC99B,0BAAME,YAAU,UAAUC,YAAU,UAAU9c,EAAE,s2BAAs2B2c,KAAK,kBAOn7B,yBAAKn0B,UAAU,SACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,SACX,yBAAKW,IAAK4zB,KAAON,IAAI,uEACrB,iFAEJ,yBAAKj0B,UAAU,WACX,yBAAKA,UAAU,UAAf,sQACA,yBAAKA,UAAU,QACX,uBAAGiD,KAAK,gCAAgCC,OAAO,UAA/C,2BACI,yBAAKhD,MAAM,KAAKC,OAAO,KAAK+zB,QAAQ,YAAYC,KAAK,OAAOC,MAAM,+BAC9D,0BAAMC,YAAU,UAAUC,YAAU,UAAU9c,EAAE,y6BAAy6B2c,KAAK,YAC99B,0BAAME,YAAU,UAAUC,YAAU,UAAU9c,EAAE,s2BAAs2B2c,KAAK,kBAOn7B,yBAAKn0B,UAAU,SACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,SACX,yBAAKW,IAAK6zB,KAAQP,IAAI,2EACtB,qFAEJ,yBAAKj0B,UAAU,WACX,yBAAKA,UAAU,UAAf,kRACA,yBAAKA,UAAU,QACX,uBAAGiD,KAAK,iCAAiCC,OAAO,UAAhD,2BACI,yBAAKhD,MAAM,KAAKC,OAAO,KAAK+zB,QAAQ,YAAYC,KAAK,OAAOC,MAAM,+BAC9D,0BAAMC,YAAU,UAAUC,YAAU,UAAU9c,EAAE,y6BAAy6B2c,KAAK,YAC99B,0BAAME,YAAU,UAAUC,YAAU,UAAU9c,EAAE,s2BAAs2B2c,KAAK,kBAQn7B,yBAAKn0B,UAAU,SACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,SACX,yBAAKW,IAAK8zB,KAAQR,IAAI,6BACtB,yDAEJ,yBAAKj0B,UAAU,WACX,yBAAKA,UAAU,UAAf,sHACA,yBAAKA,UAAU,QACX,uBAAGiD,KAAK,gDAAgDC,OAAO,UAA/D,2BACI,yBAAKhD,MAAM,KAAKC,OAAO,KAAK+zB,QAAQ,YAAYC,KAAK,OAAOC,MAAM,+BAC9D,0BAAMC,YAAU,UAAUC,YAAU,UAAU9c,EAAE,y6BAAy6B2c,KAAK,YAC99B,0BAAME,YAAU,UAAUC,YAAU,UAAU9c,EAAE,s2BAAs2B2c,KAAK,kBAOn7B,yBAAKn0B,UAAU,SACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,SACX,yBAAKW,IAAK+zB,KAAST,IAAI,6BACvB,yDAEJ,yBAAKj0B,UAAU,WACX,yBAAKA,UAAU,UAAf,mIACA,yBAAKA,UAAU,QACX,uBAAGiD,KAAK,gDAAgDC,OAAO,UAA/D,2BACI,yBAAKhD,MAAM,KAAKC,OAAO,KAAK+zB,QAAQ,YAAYC,KAAK,OAAOC,MAAM,+BAC9D,0BAAMC,YAAU,UAAUC,YAAU,UAAU9c,EAAE,y6BAAy6B2c,KAAK,YAC99B,0BAAME,YAAU,UAAUC,YAAU,UAAU9c,EAAE,s2BAAs2B2c,KAAK,yB,GAlI56BpzB,IAAMC,WC4HtB2zB,G,YArId,aAAe,IAAD,8BACb,+CACKzzB,MAAQ,CACZ0zB,YAAa,KACbC,cAAe,IACf10B,OAAQ,KAET,EAAKspB,UAAY,EAAKA,UAAUhpB,KAAf,gBACjB,EAAKq0B,YAAc,EAAKA,YAAYr0B,KAAjB,gBACnB,EAAKs0B,WAAa,EAAKA,WAAWt0B,KAAhB,gBATL,E,oFAYPb,KAAKm1B,e,kCAGXn1B,KAAKm1B,aACLn1B,KAAKC,MAAMgpB,uB,0CAEQjmB,GACnBhD,KAAK6C,SAAS,CAACoyB,cAAejyB,EAAEM,OAAOsB,kB,mCAE3B5B,GACZhD,KAAK6C,SAAS,CAACtC,OAAQyC,EAAEM,OAAOsB,kB,oCAElB,IAAD,EACgC5E,KAAKsB,MAA3C0zB,EADM,EACNA,YAAaC,EADP,EACOA,cAAe10B,EADtB,EACsBA,OAC/B60B,EAAe,KACC,OAAhBxzB,OAAOO,OACU,OAAhB6yB,GACHI,EAAexzB,OAAOO,KAAKC,MAAM+lB,UAAU,SAC3CnoB,KAAK6C,SAAS,CAACmyB,YAAaI,KAE5BA,EAAeJ,EAEhBpzB,OAAOO,KAAKC,MAAMizB,oBAAoB,CACrCC,YAAa,SAAUrkB,GAClBA,EAAInJ,SACPstB,EAAaG,eAAe,CAC3BjP,IAAKrV,EAAIqV,IACT2O,cAAe7I,WAAW6I,GAC1B10B,OAAQ6rB,WAAW7rB,W,mCAOV,IACPy0B,EAAeh1B,KAAKsB,MAApB0zB,YACa,OAAhBA,GACHA,EAAYQ,yB,+BAGJ,IAAD,OAEF7K,EAAY,CACjBnqB,OAAQ,MACR0K,UAHclL,KAAKC,MAAM+pB,OAGL,uBAAyB,0BAC7CxkB,SAAU,QACVG,IAAK,MACLF,MAAO,OACPmlB,UAAW,MACXtqB,MAAO,SAER,OACC,yBAAKF,UAAU,UAAUC,MAAOsqB,GACnB,yBAAKvqB,UAAU,iBACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,6BACX,4BAAQA,UAAU,0BAA0BO,QAASX,KAAK6pB,UAAUhpB,KAAKb,OACrE,uBAAGI,UAAU,mBAIzB,yBAAKA,UAAU,UACX,uBAAGA,UAAU,eADjB,sBAIA,yBAAKA,UAAU,QACX,+FAKX,yBAAKA,UAAU,UAAUC,MAAO,CAAC8C,UAAW,WACxC,yBAAK/C,UAAU,eACX,yBAAKA,UAAU,WACX,yBAAKA,UAAU,MAAM8C,GAAG,gBACpB,yBAAK9C,UAAU,mBAAf,sBAGA,yBAAKA,UAAU,mBACX,yBAAK4F,MAAM,0BACP,2BAAOE,KAAK,SAASI,YAAY,qBAAMC,MAAOvG,KAAKsB,MAAM2zB,cAAezuB,SAAU,SAACxD,GAAD,OAAK,EAAKyyB,oBAAoBzyB,UAKhI,yBAAK5C,UAAU,WACX,yBAAKA,UAAU,MAAM8C,GAAG,gBACpB,yBAAK9C,UAAU,mBAAf,sBAGA,yBAAKA,UAAU,mBACX,yBAAK4F,MAAM,0BACP,2BAAOE,KAAK,SAASI,YAAY,qBAAMC,MAAOvG,KAAKsB,MAAMf,OAAQiG,SAAU,SAACxD,GAAD,OAAK,EAAK0yB,aAAa1yB,UAKlH,yBAAK5C,UAAU,WACX,yBAAKA,UAAU,OACX,yBAAKA,UAAU,qBACX,4BAAQA,UAAU,0BAA0BO,QAASX,KAAKk1B,aACtD,uBAAG90B,UAAU,cADjB,iBAKJ,yBAAKA,UAAU,qBACX,4BAAQA,UAAU,0BAA0BO,QAASX,KAAKm1B,YACtD,uBAAG/0B,UAAU,uBADjB,0B,GAxHPe,IAAMC,W,qBCW1Bu0B,G,YACF,aAAc,IAAD,8BACT,+CACKr0B,MAAQ,CACTs0B,OAAQ,EACRC,OAAQ,GAGZ,EAAKC,OAAS,EAAKA,OAAOj1B,KAAZ,gBACd,EAAKk1B,OAAS,EAAKA,OAAOl1B,KAAZ,gBARL,E,iFAWT,IAAIm1B,EAAIh2B,KACJ2R,EAAO,QAAU3R,KAAKC,MAAMmO,MAC5B6nB,EAAOj0B,SAAS4vB,cAAcjgB,GAClCskB,EAAKnW,iBAAiB,aAAa,SAAU9c,GACzCA,EAAEkzB,iBACF,IAAIN,EAAS5yB,EAAEmzB,QAAUF,EAAKG,WAC1BP,EAAS7yB,EAAEqzB,QAAUJ,EAAKK,UAC9BN,EAAEnzB,SAAS,CAAC+yB,SAAQC,WACpBj0B,OAAOke,iBAAiB,YAAakW,EAAEF,QAAQ,GAC/Cl0B,OAAOke,iBAAiB,UAAWkW,EAAED,QAAQ,Q,6BAG9C/yB,GACH,IAAI2O,EAAO,QAAU3R,KAAKC,MAAMmO,MAC5B6nB,EAAOj0B,SAAS4vB,cAAcjgB,GAC9B+D,EAAI1S,EAAEmzB,QAAUn2B,KAAKsB,MAAMs0B,OAC3BjgB,EAAI3S,EAAEqzB,QAAUr2B,KAAKsB,MAAMu0B,OAC/BI,EAAK51B,MAAMI,KAAOiV,EAAI,KACtBugB,EAAK51B,MAAMsF,IAAMgQ,EAAI,KACrBsgB,EAAK51B,MAAMoF,MAAQ,QACnBwwB,EAAK51B,MAAMuF,OAAS,U,+BAIpBhE,OAAO20B,oBAAoB,YADnBv2B,KACkC81B,QAAQ,GAClDl0B,OAAO20B,oBAAoB,UAFnBv2B,KAEgC+1B,QAAQ,K,+BAE3C,IAAD,EAC0B/1B,KAAKC,MAAMu2B,iBAAlCzqB,EADH,EACGA,MAAO0qB,EADV,EACUA,MAAOC,EADjB,EACiBA,MAEjBC,GADU32B,KAAKC,MAAMmO,MACT,iBAAmBpO,KAAKC,MAAMmO,OAC9C,OACI,yBAAKhO,UAAWu2B,EAAWt2B,MAAO,CAAC6K,UAAW,yBAC1C,yBAAK9K,UAAU,WACX,yBAAKA,UAAU,iBACX,4BAAK2L,GAED0qB,EAAM9pB,KAAI,SAAC6Y,EAAKpX,GACZ,OACI,oCACI,uBAAG/N,MAAO,CAAC4E,WAAYugB,GAAMplB,UAAU,iBACtCs2B,EAAMtoB,GAFX,IAEsC,uBAAjBsoB,EAAMtoB,GAAoB,KAAQA,GAASqoB,EAAM1oB,OAAO,EAAK,gBAAQ,MAAM2oB,EAAMtoB,EAAQ,GAC1G,wC,GAtDhBjN,IAAMC,WAkExBw1B,G,YACF,aAAc,IAAD,8BACT,+CACKt1B,MAAQ,CACT6d,OAAS,CACLzJ,EAAE,EACFC,EAAE,EACFC,EAAE,GAENihB,cAAc,GACdC,kBAAkB,GAClBC,gBAAgB,GAChBC,IAAI,EACJC,WAAW,GAEf,EAAKC,UAAY,EAAKA,UAAUr2B,KAAf,gBACjB,EAAK6uB,IAAM,EAAKA,IAAI7uB,KAAT,gBACX,EAAKs2B,cAAgB,EAAKA,cAAct2B,KAAnB,gBAhBZ,E,iFAmBT,IAAIk2B,EAAkBvX,sBAAsBxf,KAAKk3B,WAC7CL,EAAgBrX,sBAAsBxf,KAAK0vB,KAC3CoH,EAAoBtX,sBAAsBxf,KAAKm3B,eACnDn3B,KAAK6C,SAAS,CAACg0B,cAAeA,EAAcC,kBAAkBA,EAAkBC,gBAAiBA,M,6CAGjGK,qBAAqBp3B,KAAKsB,MAAMy1B,iBAChCK,qBAAqBp3B,KAAKsB,MAAMu1B,eAChCO,qBAAqBp3B,KAAKsB,MAAMw1B,qB,kCAGhC,IAAI3X,EAASvd,OAAOO,KAAKC,MAAM+c,OAAO/G,IAC1B,OAAT+G,GACCnf,KAAK6C,SAAS,CAACsc,OAAOA,IAC1BK,sBAAsBxf,KAAKk3B,a,4BAG3B,GAAmB,OAAhBt1B,OAAOO,KAAc,CACpB,IAAI60B,EAAOp1B,OAAOO,KAAKC,MAAMi1B,SAAUprB,QAAQ,GAC/CjM,KAAK6C,SAAS,CAACm0B,IAAIA,IACnBxX,sBAAsBxf,KAAK0vB,Q,sCAI/B,GAAmB,OAAhB9tB,OAAOO,KAAc,CACpB,IAAI80B,EAAcr1B,OAAOO,KAAKC,MAAMk1B,yBAA0BrrB,QAAQ,GACtEjM,KAAK6C,SAAS,CAACo0B,WAAWA,IAC1BzX,sBAAsBxf,KAAKm3B,kB,+BAI/B,IAAMzhB,EAAI1V,KAAKsB,MAAM6d,OAAOzJ,EACtBC,EAAI3V,KAAKsB,MAAM6d,OAAOxJ,EACtBC,EAAI5V,KAAKsB,MAAM6d,OAAOvJ,GAAG,KAAQ5V,KAAKsB,MAAM6d,OAAOvJ,EAAE,KAAM3J,QAAQ,GAAK,gBAASjM,KAAKsB,MAAM6d,OAAOvJ,EAAG3J,QAAQ,GAAG,gBACjH+qB,EAAMh3B,KAAKsB,MAAM01B,IACjBC,EAAqC,IAAxBj3B,KAAKsB,MAAM21B,WAC9B,OACI,yBAAK/zB,GAAG,aACJ,yBAAKA,GAAG,YAAR,6BAGuB,MAAf+zB,EACA,uBAAG72B,UAAU,qBAEb,uBAAGA,UAAU,yBAEhB62B,EAAa,IARlB,wBAQ6BD,EAR7B,6CAQyCphB,EARzC,6CAQmDF,EAAEzJ,QAAQ,GAR7D,6CAQwE0J,EAAE1J,QAAQ,S,GAlE1E9K,IAAMC,WA2ExBm2B,G,YACF,aAAe,IAAD,8BACV,+CA4YJC,aAAe,gBAAGrpB,EAAH,EAAGA,MAAH,OAAe,EAAKtL,SAAS,CAAEsL,WA7YhC,EA8YdspB,iBAAmB,SAACC,GAAD,OAAsB,EAAK70B,SAAS,CAAC60B,sBA5YpD,EAAKp2B,MAAQ,CACTq2B,WAAW,CAAC,CACRC,eAAc,EACdrqB,WAAU,EACVsqB,aAAY,EACZC,YAAY,EACZC,WAAW,EACXC,cAAa,EACbC,iBAAgB,IAEpBC,OAAO,CAAC,CACJC,WAAU,EACVC,UAAS,EACTpD,aAAY,EACZqD,cAAa,EACbC,mBAAkB,IAEtB/qB,UAAY,CACRogB,SAAS,GACTE,SAAS,GACTE,YAAY,IAEhBlgB,WAAa,GACbmC,YAAY,EACZuoB,aAAY,EACZC,eAAc,EACdriB,YAAY,CACRsiB,IAAI,GACJpiB,KAAK,IAETqiB,YAAY,EACZlC,iBAAiB,CACbzqB,MAAO,GACP2qB,MAAO,GACPD,MAAO,IAEXkC,WAAY,CACR73B,MAAO,GACP2kB,OAAQ,IAEZmT,cAAc,EACdC,gBAAiB,CACbphB,iBAAkB,GAClBlJ,iBAAkB,IAEtBmpB,iBAAiB,GACjBoB,iBAAiB,GACjB3qB,OAAO,EACP4qB,QAAQ,GAEZ,EAAKhuB,qBAAuB,EAAKA,qBAAqBlK,KAA1B,gBAC5B,EAAK4uB,kBAAoB,EAAKA,kBAAkB5uB,KAAvB,gBACzB,EAAKqzB,iBAAmB,EAAKA,iBAAiBrzB,KAAtB,gBACxB,EAAKysB,iBAAmB,EAAKA,iBAAiBzsB,KAAtB,gBACxB,EAAK4sB,mBAAqB,EAAKA,mBAAmB5sB,KAAxB,gBAC1B,EAAKm4B,oBAAsB,EAAKA,oBAAoBn4B,KAAzB,gBAC3B,EAAKo4B,uBAAyB,EAAKA,uBAAuBp4B,KAA5B,gBAC9B,EAAKq4B,iBAAmB,EAAKA,iBAAiBr4B,KAAtB,gBACxB,EAAKs4B,gBAAkB,EAAKA,gBAAgBt4B,KAArB,gBACvB,EAAKooB,mBAAqB,EAAKA,mBAAmBpoB,KAAxB,gBAC1B,EAAK8O,aAAe,EAAKA,aAAa9O,KAAlB,gBACpB,EAAKiP,YAAc,EAAKA,YAAYjP,KAAjB,gBACnB,EAAKD,WAAa,EAAKA,WAAWC,KAAhB,gBAClB,EAAKwX,eAAiB,EAAKA,eAAexX,KAApB,gBACtB,EAAK2V,WAAa,EAAKA,WAAW3V,KAAhB,gBAClB,EAAKqmB,mBAAqB,EAAKA,mBAAmBrmB,KAAxB,gBAC1B,EAAK0X,oBAAsB,EAAKA,oBAAoB1X,KAAzB,gBAC3B,EAAKsP,mBAAqB,EAAKA,mBAAmBtP,KAAxB,gBArEhB,E,kFAwEV,IAAI62B,EAAmB13B,KAAKsB,MAAMo2B,iBAClC11B,SAASouB,iBAAiB,qCAAqCngB,SAAQ,SAAUmpB,EAAMhrB,GACnFgrB,EAAK/I,aAAa,YAAa/hB,YAAOopB,EAAiBtpB,GAAQ,uB,4CAGjD,IAAD,OACbpO,KAAKsB,MAAMy3B,OACXnxB,cAAc5H,KAAKq5B,SAEnBr5B,KAAKq5B,QAAUtxB,aACX,kBAAM,EAAKuxB,SACX,KAGRt5B,KAAK6C,SAAS,CAACk2B,QAAS/4B,KAAKsB,MAAMy3B,W,6BAGnC,IAAIQ,EAAO,IAAIryB,KAAKlH,KAAKsB,MAAMo2B,iBAAiB,IAAIrd,UAAY,KAC5Dqd,EAAmB,GAEnBA,EADA6B,EAAO,IAAIryB,KAAKlH,KAAKsB,MAAMo2B,iBAAiB,IAAIrd,UAC7B,CACfra,KAAKsB,MAAMw3B,iBAAiB,GAC5B94B,KAAKsB,MAAMo2B,iBAAiB,IAGb,CACf,IAAIxwB,KAAKqyB,GACTv5B,KAAKsB,MAAMo2B,iBAAiB,IAGpC13B,KAAK6C,SAAS,CAAC60B,uB,yCAEA8B,GACgB,GAA3Bx5B,KAAKsB,MAAMs3B,cACX54B,KAAK6C,SAAS,CAAC+1B,cAAe54B,KAAKsB,MAAMs3B,eAE7C54B,KAAK6C,SAAS,CAAC60B,iBAAkB8B,EAAQjrB,iBAAkBuqB,iBAAkBU,EAAQ/hB,qB,sCAGrF,IAAIlK,EAAYvN,KAAKsB,MAAMiM,UAAUwgB,YACjC0L,GAAe,EACnBlsB,EAAU0C,SAAQ,SAAUvE,QACDgC,IAAnBhC,EAAMuK,WACNwjB,GAAe,OAElBA,GAAgBz5B,KAAKsB,MAAMs3B,cAC5B54B,KAAK6C,SAAS,CAAC+1B,cAAe54B,KAAKsB,MAAMs3B,iB,0CAE7BY,GACa,GAAzBx5B,KAAKsB,MAAMo3B,YACX14B,KAAKknB,qBAETlnB,KAAK6C,SAAS,CAAC2zB,iBAAkBgD,M,2CAGjCx5B,KAAK6C,SAAS,CAAC61B,YAAa14B,KAAKsB,MAAMo3B,e,sCAGvC,IAAInrB,EAAYvN,KAAKsB,MAAMiM,UAAUwgB,YACjC4K,EAAa,CACb73B,MAAO,GACP2kB,OAAQ,IAEZlY,EAAU0C,SAAQ,SAAUvE,QACHgC,IAAjBhC,EAAM+Z,SACDkT,EAAW73B,MAAM44B,SAAShuB,EAAM+Z,OAAO1Z,SACxC4sB,EAAW73B,MAAMmM,KAAKvB,EAAM+Z,OAAO1Z,OACnC4sB,EAAWlT,OAAOxY,KAAKvB,EAAM+Z,aAIzCzlB,KAAK6C,SAAS,CAAC81B,iB,iCAERziB,GACPlW,KAAK6C,SAAS,CAACsT,YAAaD,M,uCAEJ,IAAbxV,IAAY,yDACvBV,KAAK6C,SAAS,CAAC21B,cAAe93B,M,mCAG9BV,KAAK6C,SAAS,CAAC01B,aAAa,M,6CAG5B,IAAMoB,EAAgB,CAAC,CACnB/B,eAAe53B,KAAKsB,MAAMq2B,WAAW,GAAGC,cACxCrqB,WAAU,EACVsqB,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,cAAa,EACbC,iBAAgB,IAEpBj4B,KAAK6C,SAAS,CAAC80B,WAAWgC,M,0CAG1B,IAAMA,EAAgB,CAAC,CACnB/B,eAAe,EACfrqB,WAAW,EACXsqB,aAAa,EACbC,YAAa93B,KAAKsB,MAAMq2B,WAAW,GAAGG,WACtCC,WAAW,EACXC,cAAc,EACdC,iBAAiB,IAErBj4B,KAAK6C,SAAS,CAAE80B,WAAYgC,M,yCAG5B,IAAMA,EAAgB,CAAC,CACnB/B,eAAe,EACfrqB,WAAW,EACXsqB,aAAa,EACbC,YAAY,EACZC,WAAY/3B,KAAKsB,MAAMq2B,WAAW,GAAGI,UACrCC,cAAc,EACdC,iBAAiB,IAErBj4B,KAAK6C,SAAS,CAAE80B,WAAYgC,M,yCAG5B,IAAMA,EAAgB,CAAC,CACnB/B,eAAc,EACdrqB,WAAWvN,KAAKsB,MAAMq2B,WAAW,GAAGpqB,UACpCsqB,aAAY,EACZC,YAAY,EACZC,WAAW,EACXC,cAAa,EACbC,iBAAgB,IAEpBj4B,KAAK6C,SAAS,CAAC80B,WAAWgC,M,2CAG1B,IAAMA,EAAgB,CAAC,CACnB/B,eAAc,EACdrqB,WAAU,EACVsqB,aAAa73B,KAAKsB,MAAMq2B,WAAW,GAAGE,YACtCC,YAAY,EACZC,WAAW,EACXC,cAAa,EACbC,iBAAgB,IAEpBj4B,KAAK6C,SAAS,CAAC80B,WAAWgC,M,4CAG1B,IAAMA,EAAgB,CAAC,CACnB/B,eAAc,EACdrqB,WAAU,EACVsqB,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,cAAch4B,KAAKsB,MAAMq2B,WAAW,GAAGK,aACvCC,iBAAgB,IAEpBj4B,KAAK6C,SAAS,CAAC80B,WAAWgC,M,+CAG1B,IAAMA,EAAgB,CAAC,CACnB/B,eAAc,EACdrqB,WAAU,EACVsqB,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,cAAa,EACbC,iBAAiBj4B,KAAKsB,MAAMq2B,WAAW,GAAGM,kBAE9Cj4B,KAAK6C,SAAS,CAAC80B,WAAWgC,M,yCAG1B,IAAMC,EAAW,CAAC,CACdzB,WAAWn4B,KAAKsB,MAAM42B,OAAO,GAAGC,UAChCC,UAAS,IAEbp4B,KAAK6C,SAAS,CAACq1B,OAAO0B,M,wCAGtB,IAAMA,EAAW,CAAC,CACdzB,WAAU,EACVC,UAAUp4B,KAAKsB,MAAM42B,OAAO,GAAGE,WAEnCp4B,KAAK6C,SAAS,CAACq1B,OAAO0B,M,2CAGtB,IAAMA,EAAW,CAAC,CACdzB,WAAU,EACVC,UAAS,EACTpD,aAAah1B,KAAKsB,MAAM42B,OAAO,GAAGlD,YAClCqD,cAAa,EACbC,mBAAkB,IAEtBt4B,KAAK6C,SAAS,CAACq1B,OAAO0B,M,4CAGtB,IAAMA,EAAW,CAAC,CACdzB,WAAU,EACVC,UAAS,EACTpD,aAAY,EACZqD,cAAcr4B,KAAKsB,MAAM42B,OAAO,GAAGG,aACnCC,mBAAkB,IAEtBt4B,KAAK6C,SAAS,CAACq1B,OAAO0B,M,iDAGtB,IAAMA,EAAW,CAAC,CACdzB,WAAU,EACVC,UAAS,EACTpD,aAAY,EACZqD,cAAa,EACbC,mBAAmBt4B,KAAKsB,MAAM42B,OAAO,GAAGI,oBAE5Ct4B,KAAK6C,SAAS,CAACq1B,OAAO0B,M,mCAEbluB,EAAM8G,GACf,IAAIqnB,EAAY75B,KAAKsB,MAAMiM,UAC3B,GAAmB,qBAAf7B,EAAMM,KAA6B,CACnC,IAAI8tB,EAAUD,EAAUlM,SACF,GAAlBmM,EAAQ/rB,OACR8rB,EAAUlM,SAAS1gB,KAAK,CACpBrB,UAAYF,EAAMK,MAClBJ,UAAYD,EAAMM,OAGtB8tB,EAAQ7pB,SAAQ,SAAUC,GACH,oBAAfA,EAAEvE,YACFuE,EAAEtE,UAAYF,EAAMK,cAIV,YAAfL,EAAMM,KACb6tB,EAAUlM,SAAS1gB,KAAK,CACpBrB,UAAYF,EAAMK,MAClBJ,UAAYD,EAAMM,YAIF0B,IAAhBhC,EAAM4J,OAAsC,SAAf5J,EAAM4J,MACnCukB,EAAU9L,YAAY9gB,KAAK,CACvBsI,MAAQ7J,EAAM4J,MACd1J,UAAYF,EAAMK,MAClB7I,GAAKwI,EAAMwB,GACXvB,UAAYD,EAAMM,KAClBoJ,UAAY1J,EAAMquB,KAClB/Y,WAAatV,EAAMsuB,MACnBxkB,cAAgB9J,EAAM4M,SACtB9F,YAAcA,EACd+P,WAAa7W,EAAMuuB,MACnB9X,aAAezW,EAAMwuB,SACrBtW,UAAYlY,EAAMkY,UAClBb,SAAWrX,EAAMqX,SACjBC,OAAStX,EAAMsX,OACfC,QAAUvX,EAAMuX,QAChBY,KAAOnY,EAAMmY,KACbC,KAAOpY,EAAMoY,KACbI,IAAMxY,EAAMwY,IACZD,KAAOvY,EAAMuY,KACbF,KAAOrY,EAAMqY,KACbC,KAAOtY,EAAMsY,KACblX,IAAMpB,EAAMoB,IACZmJ,SAAWvK,EAAMiC,SACjB8X,OAAS/Z,EAAMqM,SAGnB8hB,EAAUhM,SAAS5gB,KAAK,CACpBrB,UAAYF,EAAMK,MAClB7I,GAAKwI,EAAMwB,GACXvB,UAAYD,EAAMM,KAClBoJ,UAAY1J,EAAMquB,KAClB/Y,WAAatV,EAAMsuB,MACnBxkB,cAAgB9J,EAAM4M,SACtB9F,YAAcA,EACd+P,WAAa7W,EAAMuuB,MACnB9X,aAAezW,EAAMwuB,SACrBtW,UAAYlY,EAAMkY,UAClBb,SAAWrX,EAAMqX,SACjBC,OAAStX,EAAMsX,OACfC,QAAUvX,EAAMuX,QAChBY,KAAOnY,EAAMmY,KACbC,KAAOpY,EAAMoY,KACbI,IAAMxY,EAAMwY,IACZD,KAAOvY,EAAMuY,KACbF,KAAOrY,EAAMqY,KACbC,KAAOtY,EAAMsY,KACblX,IAAMpB,EAAMoB,MAIxB,IAAIkD,EAAc6pB,EAAUlM,SAAS5f,OAAO8rB,EAAUhM,SAAS9f,OAAO8rB,EAAU9L,YAAYhgB,OAC5F/N,KAAK6C,SAAS,CAAC0K,UAAUssB,EAAUhsB,WAAW,GAAGmC,YAAYA,IAC7DhQ,KAAKm6B,kB,kCAEGzuB,GACR,IAAIH,EAAkBvL,KAAKsB,MAAMiM,UAC7B6sB,EAAa,CACbxuB,UAAYF,EAAMK,MAClBJ,UAAYD,EAAMM,MAEtB,GAAkB,YAAfN,EAAMM,MAAoC,oBAAdN,EAAMM,MACjC,IAAK,IAAIyB,EAAI,EAAGK,EAAMvC,EAAgBoiB,SAAS5f,OAAQN,EAAIK,EAAKL,IAC5D,GAAIlC,EAAgBoiB,SAASlgB,GAAG7B,YAAcF,EAAMK,MAAM,CACtDR,EAAgBoiB,SAAS/L,OAAOnU,EAAG,GACnC,IAAIuC,EAAczE,EAAgBoiB,SAAS5f,OAAOxC,EAAgBsiB,SAAS9f,OAAOxC,EAAgBwiB,YAAYhgB,OAE9G,YADA/N,KAAK6C,SAAS,CAAC0K,UAAUhC,EAAgBsC,WAAWusB,EAAWpqB,YAAYA,UAIhF,QAAmBtC,GAAfhC,EAAM4J,OAAqC,SAAf5J,EAAM4J,OACzC,IAAK,IAAI7H,EAAI,EAAGK,EAAMvC,EAAgBwiB,YAAYhgB,OAAQN,EAAIK,EAAKL,IAC/D,GAAIlC,EAAgBwiB,YAAYtgB,GAAG7B,YAAcF,EAAMK,MAAM,CACzDR,EAAgBwiB,YAAYnM,OAAOnU,EAAG,GACtC,IAAIuC,EAAczE,EAAgBoiB,SAAS5f,OAASxC,EAAgBsiB,SAAS9f,OAAOxC,EAAgBwiB,YAAYhgB,OAIhH,OAHA/N,KAAK6C,SAAS,CAAC0K,UAAUhC,EAAgBsC,WAAWusB,EAAWpqB,YAAYA,IAC3EhQ,KAAKm6B,qBACLn6B,KAAKq6B,sBAKb,IAAK,IAAI5sB,EAAI,EAAGK,EAAMvC,EAAgBsiB,SAAS9f,OAAQN,EAAIK,EAAKL,IAC5D,GAAIlC,EAAgBsiB,SAASpgB,GAAG7B,YAAcF,EAAMK,MAAM,CACtDR,EAAgBsiB,SAASjM,OAAOnU,EAAG,GACnC,IAAIuC,EAAczE,EAAgBoiB,SAAS5f,OAASxC,EAAgBsiB,SAAS9f,OAAOxC,EAAgBwiB,YAAYhgB,OAEhH,YADA/N,KAAK6C,SAAS,CAAC0K,UAAUhC,EAAgBsC,WAAWusB,EAAWpqB,YAAYA,O,+BAQlF,IAaDsqB,EAbA,OACE1C,EAAgB53B,KAAKsB,MAAMq2B,WAAW,GAAGC,cACzC+B,EAAgB35B,KAAKsB,MAAMq2B,WAAW,GAAGpqB,UACzCgtB,EAAkBv6B,KAAKsB,MAAMq2B,WAAW,GAAGE,YAC3C2C,EAAiBx6B,KAAKsB,MAAMq2B,WAAW,GAAGG,WAC1C2C,EAAgBz6B,KAAKsB,MAAMq2B,WAAW,GAAGI,UACzC/nB,EAAchQ,KAAKsB,MAAM0O,YACzB2oB,EAAa34B,KAAKsB,MAAMq3B,WACxB+B,EAAmB16B,KAAKsB,MAAMiM,UAAUogB,SAAU5f,OAClD4sB,EAAc36B,KAAKsB,MAAMk3B,cACzBI,EAAe54B,KAAKsB,MAAMs3B,aAV5B,EAWgD54B,KAAKsB,MAAlD6M,EAXH,EAWGA,MAAO2qB,EAXV,EAWUA,iBAAkBpB,EAX5B,EAW4BA,iBAQhC,OAJI4C,EADDt6B,KAAKsB,MAAMi3B,YACD,0BAEA,mBAGT,6BACI,yBAAKn4B,UAAWk6B,GACZ,4BAAQl6B,UAAU,WAAWM,MAAI,GAC7B,uBAAGN,UAAU,aAAaO,QAASX,KAAKY,WAAWC,KAAKb,QACxD,yBAAKI,UAAU,SAASC,MAAO,CAAC8C,UAAU,WAA1C,oDAGA,yBAAK/C,UAAU,UAAUC,MAAO,CAACE,OAAO,SACpC,4BAAQQ,IAAI,wDAAwDV,MAAO,CAACC,MAAM,OAAOC,OAAO,aAI5G,yBAAKH,UAAU,qDACX,uBAAGA,UAAU,OAAOO,QAAS,SAACqC,GAAD,OAAK,EAAK+H,yBACnC,uBAAG3K,UAAU,kBAEjB,uBAAGA,UAAU,OAAOO,QAAS,SAACqC,GAAD,OAAK,EAAKsqB,qBACnC,uBAAGltB,UAAU,wBADjB,uBAGA,uBAAGA,UAAU,OAAOO,QAAS,SAACqC,GAAD,OAAK,EAAKyqB,uBACnC,uBAAGrtB,UAAU,0BADjB,4BAGwB,IAAhB4P,EAAoB,KACpB,yBAAK9M,GAAG,MAAM8C,MAAM,sCAAsC3F,MAAO,CAACsF,IAAK,QAASqK,IAIxF,uBAAG5P,UAAU,OAAOO,QAAS,SAACqC,GAAD,OAAO,EAAKysB,sBACrC,uBAAGrvB,UAAU,+BADjB,WAGA,uBAAGA,UAAU,OAAOO,QAAS,SAACqC,GAAD,OAAO,EAAKkxB,qBACrC,uBAAG9zB,UAAU,yBADjB,8BAIJ,kBAACw6B,EAAD,CACIzvB,oBAAqBysB,EACrB7sB,qBAAsB/K,KAAK+K,qBAAqBlK,KAAKb,QAEzD,kBAAC,GAAD,CACIuzB,iBAAkBiH,EAClB/K,kBAAmBzvB,KAAKyvB,kBAAkB5uB,KAAKb,QAEnD,kBAAC+3B,GAAD,CACI5D,gBAAiBsG,EACjBvG,iBAAkBl0B,KAAKk0B,iBAAiBrzB,KAAKb,QAEjD,kBAAC,GAAD,CACIutB,gBAAiBoM,EACjBrM,iBAAkBttB,KAAKstB,iBAAiBzsB,KAAKb,MAC7C2P,aAAgB,SAACjE,EAAM8G,GAAP,OAAqB,EAAK7C,aAAajE,EAAM8G,IAC7DgE,WAAc,SAACN,GAAD,OAAQ,EAAKM,WAAWN,IACtCmC,eAAkBrY,KAAKqY,eACvB6O,mBAAsBlnB,KAAKknB,mBAC3B3O,oBAAuBvY,KAAKuY,oBAC5BpI,mBAAsBnQ,KAAKmQ,mBAC3BL,YAAe,SAACpE,GAAD,OAAS,EAAKoE,YAAYpE,IACzCmC,WAAc7N,KAAKsB,MAAMuM,WACzBmC,YAAe0qB,EACfltB,YAAakqB,EACbzO,mBAAoBjpB,KAAKipB,mBACzBE,oBAAqBnpB,KAAKmpB,oBAAoBtoB,KAAKb,MACnDopB,yBAA0BppB,KAAKopB,yBAAyBvoB,KAAKb,QAEjE,kBAAC66B,GAAD,CACInN,kBAAmB6M,EACnB9M,mBAAoBztB,KAAKytB,mBAAmB5sB,KAAKb,MACjDmW,YAAanW,KAAKsB,MAAM6U,YACxBK,WAAYxW,KAAKwW,WACjB0Q,mBAAoBlnB,KAAKknB,mBACzB3b,gBAAiB,SAACG,GAAD,OAAS,EAAKoE,YAAYpE,IAC3CqhB,UAAa/sB,KAAKsB,MAAMiM,UACxBC,YAAakqB,IAEjB,kBAAC,GAAD,CAAa1N,OAAQhqB,KAAKsB,MAAM42B,OAAO,GAAGlD,YAAa/L,mBAAoBjpB,KAAKipB,qBAChF,kBAAC,GAAD,CAAce,OAAQhqB,KAAKsB,MAAM42B,OAAO,GAAGG,aAAclP,oBAAqBnpB,KAAKmpB,oBAAoBtoB,KAAKb,QAC5G,kBAAC,GAAD,CAAmBgqB,OAAQhqB,KAAKsB,MAAM42B,OAAO,GAAGI,kBAAmBlP,yBAA0BppB,KAAKopB,yBAAyBvoB,KAAKb,QAChI,kBAAC,GAAD,CACIw4B,cAAemC,EACftiB,eAAgBrY,KAAKqY,eAAexX,KAAKb,MACzCmW,YAAanW,KAAKsB,MAAM6U,cAExBwiB,EAAWlT,OAAO9Y,KAAI,SAAC8Y,EAAQrX,GAC3B,OAAO,kBAAC,GAAD,CACHooB,iBAAkB/Q,EAClBrX,MAAOA,OAInB,yBAAKhO,UAAU,WAAWC,MAAO,CAACgF,QAASuzB,EAAa,QAAQ,SAC5D,uBAAGx4B,UAAWJ,KAAKsB,MAAMy3B,OAAS,4BAA8B,2BAA4Bp4B,QAAS,SAACqC,GAAD,OAAK,EAAK83B,yBAC/G,kBAAC,KAAD,CACI3sB,MAAOA,EACP7E,KAAM,KACNyxB,YAAa,EACbrD,iBAAkBA,EAClBoB,iBAAkBA,EAClBkC,iBAAkBh7B,KAAKw3B,aACvBC,iBAAkBz3B,KAAKy3B,iBACvBwD,WAAY,SAACC,GAAD,OAAQ5sB,YAAO,IAAIpH,KAAKg0B,GAAK,qBAGjD,kBAAC,GAAD,W,GAzgBM/5B,IAAMC,WAghBtB+5B,G,YACF,aAAe,IAAD,8BACV,+CACKC,cAAgB,EAAKA,cAAcv6B,KAAnB,gBAFX,E,2EAIAH,GACVV,KAAKC,MAAMoY,eAAe3X,K,+BAErB,IAAD,OAEE26B,EAAe,CACjBnwB,UAFkBlL,KAAKC,MAAMu4B,cAEJ,uBAAuB,0BAChD8C,WAAY,OACZ91B,SAAU,QACVG,IAAK,MACLF,MAAO,MACPnF,MAAO,OACPmoB,SAAU,SATV,EAWgBzoB,KAAKC,MAAMkW,YAAxBsiB,EAXH,EAWGA,IAAKpiB,EAXR,EAWQA,KACNklB,EAAQ,CACVC,GAAI,2BACJC,WAAY,yCACZC,OAAQ,qBACR7kB,MAAO,mDAEX,OACI,yBAAK3T,GAAG,UAAU7C,MAAOg7B,GACrB,yBAAKj7B,UAAU,0BACX,uBAAGA,UAAU,kBAAkBO,QAAS,SAACqC,GAAD,OAAK,EAAKo4B,eAAc,MAChE,2BAAOh7B,UAAU,2BACb,+BACI,4BACI,wBAAIu7B,QAAQ,KAAZ,8BAGR,+BAEIlD,EAAI9rB,KAAI,SAACivB,EAAKxtB,GACV,GAAIA,EAAQ,EACR,OACI,4BACI,4BAAKmtB,EAAMK,IACX,wBAAIx7B,UAAU,4BAA4BiW,EAAKjI,gB,GA3CrEjN,IAAMC,WAyDbm2B,MCvtBKsE,QACW,cAA7Bj6B,OAAOk6B,SAASC,UAEe,UAA7Bn6B,OAAOk6B,SAASC,UAEhBn6B,OAAOk6B,SAASC,SAASC,MACvB,2DCIN,SAASC,KAEL,IAAI/4B,EAJGg5B,oBAAoB,IAAIC,OAAO,QAIb,KAJ8B,uBAA4BC,KAAKx6B,OAAOk6B,SAASO,SAAW,CAAC,KAAM,KAAK,GAAGC,QAAQ,MAAO,SAAW,KAM5JlrB,QAAQC,IAAI,wBAA0BnO,GAE7B,MAANA,GAEClB,SAASC,eAAeiB,GAAIq5B,QAzBpC12B,IAASC,OAAO,kBAAC,GAAD,MAAa9D,SAASC,eAAe,SAAS,WAG1Du6B,WAAWP,GAAe,QD2HxB,kBAAmBQ,WACrBA,UAAUC,cAAcC,MAAM3rB,MAAK,SAAA4rB,GACjCA,EAAaC,iB","file":"static/js/main.f3e62290.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/COVID.b37589fb.png\";","module.exports = __webpack_public_path__ + \"static/media/IOT.4a428f9c.png\";","module.exports = __webpack_public_path__ + \"static/media/NDVI.c25eafa0.png\";","module.exports = __webpack_public_path__ + \"static/media/agriculture.2141e0bd.png\";","module.exports = __webpack_public_path__ + \"static/media/flood.49c32da3.png\";","import React from 'react';\r\n\r\nclass HelpComponent extends React.Component{\r\n closeModal(){\r\n this.props.onHelpClick(\"None\"); \r\n }\r\n render(){\r\n const videoSrc = this.props.videoSrc;\r\n return(\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default HelpComponent;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport reactCSS from 'reactcss';\r\nimport { SketchPicker } from 'react-color';\r\nimport Datetime from 'react-datetime';\r\nimport HelpComponent from './HelpComponent';\r\n\r\nclass AboutUs extends React.Component{\r\n constructor(){\r\n super();\r\n this.state ={\r\n isBubbleUIOpen : false,\r\n bubbleUI : {},\r\n element : {}\r\n };\r\n }\r\n aboutUs(){\r\n let isBubbleUIOpen = !this.state.isBubbleUIOpen;\r\n let UIthis = this;\r\n if(isBubbleUIOpen){\r\n let BBparameterBD = {};\r\n BBparameterBD.width = 600;\r\n BBparameterBD.height = 450;\r\n BBparameterBD.x = 120.99569205920561 // 24.782582152953882, 120.99569205920561\r\n BBparameterBD.y = 24.782582152953882\r\n BBparameterBD.z = 6.04001092910767;\r\n BBparameterBD.lockPointHorizontal = \"middle\";\r\n BBparameterBD.lockPointVertical = \"bottom\";\r\n BBparameterBD.haveButton = true;\r\n let bubbleboxBD = new window.ov.UI.BubbleUI(BBparameterBD);\r\n let element = document.getElementById(\"bubblebox_div\");\r\n if(element === null){\r\n element = this.state.element;\r\n }\r\n bubbleboxBD.appendContent(element);\r\n window.main.OView.UIContext.addUI(bubbleboxBD);\r\n let Pos = new window.Geo3DPoint(120.99569205920561, 24.78257,365.96);\r\n let V = new window.Geo3DPoint(0,0,-1);\r\n let Up = new window.Geo3DPoint(0,1,0);\r\n let Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n this.setState({isBubbleUIOpen:isBubbleUIOpen,bubbleUI:bubbleboxBD,element:element});\r\n }\r\n else{\r\n window.main.OView.UIContext.removeUI(this.state.bubbleUI);\r\n this.setState({isBubbleUIOpen:isBubbleUIOpen,bubbleUI:{}});\r\n }\r\n }\r\n render(){\r\n return(\r\n
\r\n
this.aboutUs()}>\r\n
\r\n

關於我們

\r\n
\r\n
\r\n
\r\n {\r\n this.state.isBubbleUIOpen?\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n 連絡電話:\r\n
\r\n
\r\n 03-5776085\r\n
\r\n
\r\n
\r\n
\r\n 連絡地址:\r\n
\r\n
\r\n 30076 新竹市東區研發六路7號\r\n
\r\n
\r\n
\r\n
\r\n 計畫入口網站:\r\n
\r\n \r\n
\r\n
\r\n
: null\r\n }\r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nclass ContourLineSetting extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n contourLine:false,\r\n interval:100,\r\n displayColorPicker: false,\r\n color: {\r\n r: '255',\r\n g: '255',\r\n b: '255',\r\n a: '1',\r\n },\r\n hexColor:\"#FFFFFF\",\r\n helpMode : \"None\"\r\n }\r\n } \r\n handleClick = () => {\r\n this.setState({ displayColorPicker: !this.state.displayColorPicker })\r\n };\r\n \r\n handleClose = () => {\r\n this.setState({ displayColorPicker: false })\r\n };\r\n \r\n handleChange = (color) => {\r\n this.setContourLine(this.state.contourLine,this.state.interval,color.hex);\r\n this.setState({ color: color.rgb, hexColor:color.hex }) \r\n };\r\n setContourLine(contourLine,interval,color){\r\n const ContourLineThis = this;\r\n window.main.OView.drawTerrainSetting = {\r\n \"contourSetting\": {\r\n \"isopen\": contourLine,\r\n \"color\": new window.GLCOLOR(color),\r\n \"interval\": interval,\r\n \"alpha\": Number(ContourLineThis.state.color.a)\r\n }\r\n };\r\n }\r\n setContourLineOpen(){ \r\n this.setContourLine(!this.state.contourLine,this.state.interval,this.state.hexColor);\r\n this.setState({contourLine:!this.state.contourLine});\r\n }\r\n IntervalChange(event){\r\n this.setContourLine(this.state.contourLine,event.target.valueAsNumber,this.state.hexColor);\r\n this.setState({interval:event.target.valueAsNumber});\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode});\r\n }\r\n render(){\r\n const contourLine = this.state.contourLine;\r\n const styles = reactCSS({\r\n 'default': {\r\n color: {\r\n width: '125px',\r\n height: '14px',\r\n borderRadius: '2px',\r\n background: `rgba(${ this.state.color.r }, ${ this.state.color.g }, ${ this.state.color.b }, ${ this.state.color.a })`,\r\n },\r\n swatch: {\r\n padding: '5px',\r\n background: '#fff',\r\n borderRadius: '10px',\r\n boxShadow: '0 0 0 1px rgba(0,0,0,.1)',\r\n display: 'inline-block',\r\n cursor: 'pointer',\r\n },\r\n popover: {\r\n position: 'absolute',\r\n zIndex: '20000',\r\n right: '0px'\r\n },\r\n cover: {\r\n position: 'fixed',\r\n top: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n left: '0px',\r\n },\r\n },\r\n });\r\n switch(this.state.helpMode){\r\n case \"ContourLine\":\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help')); \r\n break;\r\n case \"None\":\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help'));\r\n break;\r\n }\r\n return(\r\n
\r\n
\r\n
等高線設定
\r\n
\r\n
\r\n
\r\n
\r\n 開啟等高線:\r\n \r\n
\r\n
\r\n
\r\n
\r\n this.setContourLineOpen()}>\r\n \r\n
\r\n
\r\n
\r\n {\r\n contourLine?\r\n
\r\n
\r\n
\r\n
\r\n
間距:
\r\n
\r\n
\r\n
\r\n this.IntervalChange(e)}>\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
顏色:
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n { \r\n this.state.displayColorPicker ?
\r\n
\r\n \r\n
: null \r\n }\r\n
\r\n
\r\n
\r\n
\r\n
: null\r\n } \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass LightSetting extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n lightRendering : false,\r\n lightScattering : false, \r\n modelShadow : false,\r\n almanac : false,\r\n realTime : true,\r\n realTimeIntervalId : {},\r\n date : new Date(Date.now()),\r\n lightZenith : 45,\r\n lightAzimuth : 45,\r\n helpMode : \"None\"\r\n };\r\n this.realTimeInterva = this.realTimeInterva.bind(this);\r\n }\r\n setLightRenderingOpen(){\r\n window.main.OView.enableLight = !this.state.lightRendering;\r\n this.setState({lightRendering:!this.state.lightRendering});\r\n }\r\n setLightScatteringOpen(){\r\n window.main.OView.enableVolumetricLightScattering = !this.state.lightScattering;\r\n this.setState({lightScattering:!this.state.lightScattering});\r\n }\r\n setModelShadowOpen(){\r\n window.main.OView.enableShadow = !this.state.modelShadow;\r\n this.setState({modelShadow : !this.state.modelShadow});\r\n }\r\n setAlmanacOpen(){\r\n let LightProperty = window.main.OView.lightProperty;\r\n let realTimeIntervalId = this.state.realTimeIntervalId;\r\n clearInterval(realTimeIntervalId); \r\n realTimeIntervalId = {};\r\n if(!this.state.almanac&&this.state.realTime){\r\n window.alertify.success(\"已將日照設定為現在時間\");\r\n let date = new Date();\r\n window.main.OView.date = date;\r\n realTimeIntervalId = setInterval(this.realTimeInterva, 5000);\r\n }\r\n LightProperty.isAutoUpdateByDate =!this.state.almanac;\r\n LightProperty.isAbs =!this.state.almanac;\r\n window.main.OView.lightProperty = LightProperty;\r\n this.setState({almanac : !this.state.almanac ,realTimeIntervalId:realTimeIntervalId});\r\n }\r\n DatetimeChange(event){\r\n if(this.state.realTime){\r\n this.setState({date:this.state.date});\r\n }\r\n else{\r\n window.main.OView.date = event.toDate();\r\n this.setState({date:event.toDate()});\r\n } \r\n }\r\n setLightAzimuth(event){\r\n let LightProperty = window.main.OView.lightProperty;\r\n LightProperty.azimuthAngle = event.target.valueAsNumber;\r\n window.main.OView.lightProperty = LightProperty;\r\n this.setState({lightAzimuth:event.target.valueAsNumber});\r\n }\r\n setLightZenith(event){\r\n let LightProperty = window.main.OView.lightProperty;\r\n LightProperty.zenithAngle = event.target.valueAsNumber;\r\n window.main.OView.lightProperty = LightProperty;\r\n this.setState({lightZenith:event.target.valueAsNumber});\r\n }\r\n lightMouseEnter(){\r\n let LightProperty = window.main.OView.lightProperty;\r\n window.main.OView.enableDrawLightDirectionSketchMap = true;\r\n if(LightProperty.azimuthAngle!==this.state.lightAzimuth || LightProperty.zenithAngle!==this.state.lightZenith)\r\n this.setState({lightAzimuth:LightProperty.azimuthAngle,lightZenith:LightProperty.zenithAngle});\r\n }\r\n lightMouseLeave(){\r\n window.main.OView.enableDrawLightDirectionSketchMap = false;\r\n }\r\n realTimeInterva(){\r\n let date = new Date();\r\n window.main.OView.date = date;\r\n this.setState({date:date});\r\n }\r\n isRealTimeOpen(){\r\n let realTime = !this.state.realTime;\r\n let realTimeIntervalId = this.state.realTimeIntervalId;\r\n if(this.state.realTime){ \r\n window.alertify.success(\"現在可以自行設定時間了\"); \r\n clearInterval(realTimeIntervalId);\r\n realTimeIntervalId = {};\r\n this.setState({realTime:realTime,realTimeIntervalId:realTimeIntervalId});\r\n }\r\n else{\r\n window.alertify.success(\"已將日照設定為現在時間\");\r\n let date = new Date();\r\n window.main.OView.date = date;\r\n realTimeIntervalId = setInterval(this.realTimeInterva, 5000);\r\n this.setState({realTime:realTime,realTimeIntervalId:realTimeIntervalId,date:date});\r\n }\r\n \r\n }\r\n onHelpClick(mode){ \r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const siderRangeCSS ={\r\n background: \"linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%)\"\r\n };\r\n let isRealTime ;\r\n if(this.state.realTime){\r\n isRealTime = \r\n
\r\n this.DatetimeChange(e)} locale=\"zh-tw\" lang=\"zh-tw\"/>\r\n
\r\n \r\n
\r\n
;\r\n }\r\n else{\r\n isRealTime = \r\n
\r\n this.DatetimeChange(e)} locale=\"zh-tw\" lang=\"zh-tw\"/>\r\n
\r\n \r\n
\r\n
;\r\n } \r\n switch(this.state.helpMode){\r\n case \"LightRenderingHelp\":\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help')); \r\n break; \r\n case \"LightScatteringHelp\":\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n break;\r\n case \"ModelShadowHelp\":\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n break; \r\n case \"AlmanacHelp\":\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n break;\r\n case \"AzimuthHelp\":\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help')); \r\n break;\r\n case \"None\":\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help'));\r\n break;\r\n }\r\n return(\r\n
\r\n
\r\n
日光設定
\r\n
\r\n
\r\n
\r\n
日光渲染:\r\n \r\n
\r\n
\r\n
\r\n
\r\n this.setLightRenderingOpen()}>\r\n \r\n
\r\n
\r\n
\r\n {\r\n this.state.lightRendering?\r\n
\r\n
\r\n
\r\n
\r\n
光線散射:\r\n \r\n
\r\n
\r\n
\r\n
\r\n this.setLightScatteringOpen()}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
建物陰影:\r\n \r\n
\r\n
\r\n
\r\n
\r\n this.setModelShadowOpen()}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
天文曆:\r\n \r\n
\r\n
\r\n
\r\n
\r\n this.setAlmanacOpen()}>\r\n \r\n
\r\n
\r\n
\r\n {\r\n this.state.almanac?\r\n isRealTime\r\n :\r\n
\r\n
\r\n
\r\n
方位角:\r\n \r\n
\r\n
\r\n
\r\n this.lightMouseEnter()} onMouseLeave={(e)=>this.lightMouseLeave()} onChange={(e)=>this.setLightAzimuth(e)}> \r\n
\r\n
\r\n
\r\n
\r\n
仰角:
\r\n
\r\n
\r\n this.lightMouseEnter()} onMouseLeave={(e)=>this.lightMouseLeave()} onChange={(e)=>this.setLightZenith(e)}> \r\n
\r\n
\r\n
\r\n }\r\n \r\n
\r\n
: null\r\n } \r\n
\r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nclass TerrainDrawSetting extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n fillMode : \"default\",\r\n terrainElevation : false,\r\n throughSurface : false,\r\n waterRipple : false,\r\n waterLevel : \"1\",\r\n helpMode : \"None\"\r\n }; \r\n }\r\n fillModeChange(event){\r\n const fillMode = event.target.value;\r\n switch(fillMode){\r\n case \"default\" :\r\n window.main.OView.drawTerrainSetting = {\r\n \"grid\": false,\r\n \"vertexWireframe\": false,\r\n \"slopeColorSetting\": { \"isopen\": false },\r\n \"aspectColorSetting\": { \"isopen\": false },\r\n \"heightColorSetting\": { \"isopen\": false },\r\n \"wireframeColor\": \"#ffffff\",\r\n \"surface\": true\r\n };\r\n break;\r\n case \"wreframe\" :\r\n window.main.OView.drawTerrainSetting = {\r\n \"grid\": false,\r\n \"vertexWireframe\": true,\r\n \"vertexWireframeWithBaselayer\": true,\r\n \"slopeColorSetting\": { \"isopen\": false },\r\n \"aspectColorSetting\": { \"isopen\": false },\r\n \"heightColorSetting\": { \"isopen\": false },\r\n \"wireframeColor\": \"#ffffff\",\r\n \"surface\": false\r\n };\r\n break;\r\n case \"grid\" :\r\n window.main.OView.drawTerrainSetting = {\r\n \"grid\": true,\r\n \"vertexWireframe\": false,\r\n \"slopeColorSetting\": { \"isopen\": false },\r\n \"aspectColorSetting\": { \"isopen\": false },\r\n \"heightColorSetting\": { \"isopen\": false },\r\n \"wireframeColor\": \"#ffffff\",\r\n \"surface\": true\r\n };\r\n break;\r\n case \"slope\" :\r\n window.main.OView.drawTerrainSetting = {\r\n \"grid\": false,\r\n \"vertexWireframe\": false,\r\n \"slopeColorSetting\": { \"isopen\": true },\r\n \"aspectColorSetting\": { \"isopen\": false },\r\n \"heightColorSetting\": { \"isopen\": false },\r\n \"wireframeColor\": \"#ffffff\",\r\n \"surface\": true\r\n };\r\n break;\r\n case \"aspect\" :\r\n window.main.OView.drawTerrainSetting = {\r\n \"grid\": false,\r\n \"vertexWireframe\": false,\r\n \"slopeColorSetting\": { \"isopen\": false },\r\n \"aspectColorSetting\": { \"isopen\": true },\r\n \"heightColorSetting\": { \"isopen\": false },\r\n \"wireframeColor\": \"#ffffff\",\r\n \"surface\": true\r\n };\r\n break;\r\n case \"height\" :\r\n window.main.OView.drawTerrainSetting = {\r\n \"grid\": false,\r\n \"vertexWireframe\": false,\r\n \"slopeColorSetting\": { \"isopen\": false },\r\n \"aspectColorSetting\": { \"isopen\": false },\r\n \"heightColorSetting\": { \"isopen\": true },\r\n \"wireframeColor\": \"#ffffff\",\r\n \"surface\": true\r\n };\r\n break;\r\n };\r\n this.setState({fillMode:fillMode});\r\n }\r\n setTerrainElevationOpen(){\r\n window.main.OView.drawTerrainSetting = { noElevation: this.state.terrainElevation }; \r\n this.setState({terrainElevation : !this.state.terrainElevation});\r\n }\r\n setThroughSurfaceOpen(){\r\n window.main.OView.throughSurface = !this.state.throughSurface;\r\n this.setState({throughSurface : !this.state.throughSurface});\r\n } \r\n setWaterRippleOpen(){\r\n window.main.OView.getTerrainOverlay('Water').show = !this.state.waterRipple;\r\n window.main.OView.drawTerrainSetting = { showWater: !this.state.waterRipple }; \r\n this.setState({waterRipple : !this.state.waterRipple});\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode});\r\n }\r\n waterLevelChange(event){\r\n const waterLevel = event.target.value;\r\n switch(waterLevel){\r\n case \"0\" : \r\n window.main.OView.drawTerrainSetting = { waterQuality: \"low\"};\r\n break;\r\n case \"1\" :\r\n window.main.OView.drawTerrainSetting = { waterQuality: \"normal\"};\r\n break;\r\n case \"2\" : \r\n window.main.OView.drawTerrainSetting = { waterQuality: \"high\"};\r\n break;\r\n case \"3\" :\r\n window.main.OView.drawTerrainSetting = { waterQuality: \"very high\"};\r\n break;\r\n }\r\n this.setState({waterLevel:waterLevel});\r\n }\r\n render(){\r\n switch(this.state.helpMode){\r\n case \"fillMod\":\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help')); \r\n break;\r\n case \"ThroughSurface\":\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help')); \r\n break; \r\n case \"WaterRipple\":\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help')); \r\n break;\r\n case \"None\":\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help'));\r\n break;\r\n }\r\n return(\r\n
\r\n
\r\n
地形地表設定
\r\n
\r\n
\r\n
\r\n
\r\n 繪製模式:\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
地形高程:
\r\n
\r\n
\r\n
\r\n this.setTerrainElevationOpen()}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
穿越地表:\r\n \r\n
\r\n
\r\n
\r\n
\r\n this.setThroughSurfaceOpen()}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
水面波紋:\r\n \r\n
\r\n
\r\n
\r\n
\r\n this.setWaterRippleOpen()}>\r\n \r\n
\r\n
\r\n
\r\n {\r\n this.state.waterRipple ?\r\n
\r\n
\r\n
波紋等級:
\r\n
\r\n
\r\n \r\n
\r\n
: null\r\n } \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass GlobalSettingSidebar extends React.Component{\r\n constructor() {\r\n super();\r\n this.sidebarSwitch = this.sidebarSwitch.bind(this);\r\n }\r\n sidebarSwitch(){\r\n this.props.setglobalSettingOpen();\r\n }\r\n render(){\r\n const isglobalSettingOpen = this.props.isglobalSettingOpen; \r\n const sideMenuCSS ={\r\n overflow : 'inherit',\r\n transform : isglobalSettingOpen?'translate3d(0, 0, 0)':'translate3d(-120%, 0, 0)',\r\n width : '480px'\r\n };\r\n const titleCSS = {\r\n margin: '10px 10px 10px 10px' \r\n };\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n
\r\n 圖台設定\r\n
\r\n

\r\n
\r\n
\r\n this.sidebarSwitch(e)}> \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default GlobalSettingSidebar;","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\nimport { format } from \"date-fns\";\r\n\r\nclass OverlayOption extends React.Component{\r\n constructor() {\r\n super();\r\n this.sidebarChange = this.sidebarChange.bind(this);\r\n this.deleteLayerList = this.deleteLayerList.bind(this);\r\n this.gotoLayer = this.gotoLayer.bind(this);\r\n this.state = {\r\n opacity : \"\",\r\n helpMode : \"None\"\r\n };\r\n } \r\n componentWillMount(){ \r\n if (this.props.layer.layerType == \"Overlay\") {\r\n const layerName = this.props.layer.layerName;\r\n const defaultOpacity = window.main.OView.getTerrainOverlay(layerName).opacity * 100;\r\n this.setState({opacity:defaultOpacity});\r\n }\r\n }\r\n sidebarChange(event){\r\n const layerName = this.props.layer.layerName;\r\n window.main.OView.getTerrainOverlay(layerName).opacity = event.target.value/100;\r\n const defaultOpacity = window.main.OView.getTerrainOverlay(layerName).opacity * 100;\r\n this.setState({opacity:defaultOpacity});\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n var Pos = new window.Geo3DPoint(121.2347878442796,23.427553934089445,465850.0013822634);\r\n var V = new window.Geo3DPoint(0,0,-1);\r\n var Up = new window.Geo3DPoint(0,1,0);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const Layer = this.props.layer;\r\n const siderRangeCSS ={\r\n background: \"linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%)\"\r\n };\r\n if(this.state.helpMode === \"Layer2DHelp\" ){\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n } \r\n else if(this.state.helpMode === \"None\"){\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help')); \r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
{Layer.layerName}\r\n \r\n
\r\n
\r\n {\r\n (Layer.layerType === \"Overlay\") ? \r\n \r\n : null\r\n }\r\n
\r\n {\r\n (Layer.layerType === \"Overlay\") ? \r\n
\r\n this.sidebarChange(e)} style={siderRangeCSS}>\r\n
: null\r\n } \r\n
\r\n
this.deleteLayerList(Layer)}>\r\n \r\n
\r\n
\r\n
this.gotoLayer()}>\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass OverlayLayer extends React.Component{\r\n constructor() {\r\n super(); \r\n this.state = {\r\n List:[],\r\n Data:{}\r\n };\r\n this.wmtsLayerChecked = this.wmtsLayerChecked.bind(this);\r\n }\r\n componentWillMount(){\r\n var layerThis = this;\r\n const WMTSLayerList = window.LAYER_GROUP_2DWMTS.WMTS_LAYERS;\r\n window.LAYER_GROUP_2DWMTS.WMTS_GROUP.map(\r\n (layers) =>\r\n window.ov.getWMTSLayerInfo(layers.URL,function(e){\r\n if(e.url&&e.identifier){\r\n WMTSLayerList.push({\r\n TITLE:e.title||e.identifier,\r\n TYPE:\"Overlay\",\r\n ID:e.identifier,\r\n URL:e.url,\r\n CHECKED:false\r\n });\r\n }\r\n layerThis.setState({List:WMTSLayerList});\r\n })\r\n )\r\n }\r\n componentDidUpdate(prevProps, prevState, snapshot){\r\n const layerList = this.state.List;\r\n if (prevProps.currentTime!==this.props.currentTime) {\r\n for (var i in layerList) {\r\n if (layerList[i].CHECKED && layerList[i].TYPE == \"ConditionOverlay\" && layerList[i].TIMELINE !== undefined) {\r\n this.changeSetting(layerList[i], i);\r\n }\r\n }\r\n }\r\n if(this.props.deleteList.layerType === \"Overlay\" || this.props.deleteList.layerType == \"ConditionOverlay\"){\r\n for (let i = 0, len = this.state.List.length; i < len; i++){\r\n if (layerList[i].TITLE === this.props.deleteList.layerName){\r\n if(layerList[i].CHECKED){\r\n layerList[i].CHECKED = !layerList[i].CHECKED;\r\n let layername = (layerList[i].TYPE === \"ConditionOverlay\") ? layerList[i].LAYERNAME : layerList[i].TITLE;\r\n window.main.OView.removeTerrainOverlay(layername);\r\n window.alertify.error(\"已關閉圖層:\"+layerList[i].TITLE); \r\n this.setState({List:layerList});\r\n return ;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n changeSetting(layer, index) {\r\n let layerThis = this;\r\n let Data = layerThis.state.Data;\r\n let current = format(layer.TIMELINE.SELECTEDINTERVAL[0],'yyyyMMddHH');\r\n if (layerThis.props.currentTime.length != 0)\r\n current = format(layerThis.props.currentTime[0],'yyyyMMddHH');\r\n if (!Data.hasOwnProperty(layer.ID)) {\r\n\r\n } else {\r\n if (!Data[layer.ID].hasOwnProperty(current)) {\r\n\r\n } else {\r\n let data = Data[layer.ID];\r\n let setting = {\r\n url: window.LOCAL_SERVER.URL,\r\n layerName: layer.ID,\r\n drawColor: layer.DRAWCOLOR,\r\n fillColor: layer.FILLCOLOR,\r\n conditions: layer.CONDITIONS,\r\n extraSettings: layer.EXTRASETTINGS\r\n };\r\n let cond = {};\r\n if (layer.ID == \"taipei_vd\") {\r\n cond = {\r\n \"#FF009900\" : [],\r\n \"#FFFF9900\" : [],\r\n \"#FFFF0000\" : [],\r\n \"#FFAAAAAA\" : [],\r\n }\r\n for (var id in data[current]) {\r\n data[current][id] > 35 ? cond[\"#FF009900\"].push(\"'\"+id+\"'\") :\r\n data[current][id] > 15 ? cond[\"#FFFF9900\"].push(\"'\"+id+\"'\") :\r\n data[current][id] > 0 ? cond[\"#FFFF0000\"].push(\"'\"+id+\"'\") :\r\n cond[\"#FFAAAAAA\"].push(\"'\"+id+\"'\");\r\n }\r\n for (var color in cond) {\r\n setting.conditions.push({\r\n SQL: \"VD編號 IN (\"+cond[color].join(',')+\")\",\r\n DrawColor: color\r\n });\r\n }\r\n } else {\r\n cond = {\r\n \"#FFd82226\" : [],\r\n \"#FFe94529\" : [],\r\n \"#FFe36825\" : [],\r\n \"#FFf18624\" : [],\r\n \"#FFee9c26\" : [],\r\n \"#FFf4c723\" : [],\r\n \"#FFd4ca2a\" : [],\r\n \"#FFa2bd3c\" : [],\r\n \"#FF6cad47\" : [],\r\n \"#FF25a44b\" : [],\r\n \"#0025a44b\" : []\r\n };\r\n for (var id in data[current]) {\r\n data[current][id] > 140 ? cond[\"#FFd82226\"].push(id) :\r\n data[current][id] > 120 ? cond[\"#FFe94529\"].push(id) :\r\n data[current][id] > 110 ? cond[\"#FFe36825\"].push(id) :\r\n data[current][id] > 105 ? cond[\"#FFf18624\"].push(id) :\r\n data[current][id] > 90 ? cond[\"#FFee9c26\"].push(id) :\r\n data[current][id] > 80 ? cond[\"#FFf4c723\"].push(id) :\r\n data[current][id] > 60 ? cond[\"#FFd4ca2a\"].push(id) :\r\n data[current][id] > 50 ? cond[\"#FFa2bd3c\"].push(id) :\r\n data[current][id] > 30 ? cond[\"#FF6cad47\"].push(id) :\r\n data[current][id] > 0 ? cond[\"#FF25a44b\"].push(id) :\r\n cond[\"#0025a44b\"].push(id);\r\n }\r\n for (var color in cond) {\r\n setting.conditions.push({\r\n SQL: \"grid_ID IN (\"+cond[color].join(',')+\")\",\r\n FillColor: color\r\n });\r\n }\r\n }\r\n window.main.OView.setConditionOverlayLayer(setting, function (e) {\r\n if(e.success){\r\n let list = layerThis.state.List;\r\n if (!layer.CHECKED) {\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,null);\r\n list[index].CHECKED = !layer.CHECKED;\r\n list[index].LAYERNAME = e.layername;\r\n } else {\r\n list[index].LAYERNAME = e.layername;\r\n }\r\n layerThis.setState({List:list});\r\n } else if (!e.success) {\r\n if (!layer.CHECKED)\r\n window.alertify.error(\"開啟圖層失敗:\"+layer.TITLE);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n wmtsLayerChecked(layer,index){\r\n const list = this.state.List;\r\n const LayerEPSG = layer.EPSG || 3857;\r\n const layerThis = this; \r\n if(!layer.CHECKED){\r\n if(this.props.LayerLength<15){\r\n switch(layer.TYPE) {\r\n case \"ConditionOverlay\":\r\n list.forEach(function (l) {\r\n if (l.CHECKED && l.TYPE == \"ConditionOverlay\" && l.TITLE !== layer.TITLE)\r\n window.main.OView.removeTerrainOverlay(l.LAYERNAME);\r\n l.CHECKED = false;\r\n });\r\n if (layer.TIMELINE !== undefined)\r\n layerThis.props.setTimeLineContent(layer.TIMELINE);\r\n let Data = this.state.Data;\r\n let current = format(layer.TIMELINE.SELECTEDINTERVAL[0],'yyyyMMddHH');\r\n const data= { time: current };\r\n const formData = Object.keys(data).map(\r\n function (keyName) {\r\n return encodeURIComponent(keyName) + '=' + encodeURIComponent(data[keyName])\r\n }\r\n ).join('&');\r\n if (!Data.hasOwnProperty(layer.ID)) {\r\n fetch(layer.FETCHURL, {\r\n method: \"POST\",\r\n body: formData,\r\n headers: new Headers({\r\n \"Content-type\": \"application/x-www-form-urlencoded\"\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(data => {\r\n Data[layer.ID] = data;\r\n this.setState({Data});\r\n this.changeSetting(list[index], index);\r\n })\r\n .catch(e => {\r\n console.log(\"取得資料失敗\");\r\n })\r\n } else {\r\n this.changeSetting(list[index], index);\r\n }\r\n break;\r\n case \"Overlay\":\r\n window.main.OView.addTerrainWMTSOverlay({\r\n url: layer.URL,\r\n identifier: layer.ID,\r\n layername: layer.TITLE,\r\n pgmapserver: false,\r\n epsg: LayerEPSG,\r\n urlTemplate: \"{URL}\"\r\n }, function (e) {\r\n if(e){\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,null); \r\n list[index].CHECKED = !layer.CHECKED;\r\n layerThis.setState({List:list});\r\n }\r\n else if(!e){\r\n window.alertify.error(\"開啟圖層失敗:\"+layer.TITLE);\r\n }\r\n });\r\n break;\r\n defalt:\r\n break;\r\n }\r\n }\r\n else{\r\n window.alertify.error(\"為維持較好的使用效能,已達WMTS圖層開啟上限15張\");\r\n } \r\n }\r\n else{\r\n let layername = (layer.TYPE === \"ConditionOverlay\") ? list[index].LAYERNAME : layer.TITLE;\r\n window.main.OView.removeTerrainOverlay(layername);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE); \r\n list[index].CHECKED = !layer.CHECKED; \r\n layerThis.setState({List:list});\r\n if (layer.TIMELINE !== undefined)\r\n layerThis.props.setTimeLineSwitch();\r\n }\r\n \r\n }\r\n render(){\r\n const List =this.state.List;\r\n return( \r\n
\r\n {\r\n List.map(\r\n (layers,index)=> \r\n
\r\n this.wmtsLayerChecked(layers,index)} checked={layers.CHECKED}>\r\n \r\n
\r\n )\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {OverlayLayer,OverlayOption} ;","import React from 'react';\r\n\r\nclass BaseLayer extends React.Component{\r\n constructor() {\r\n super();\r\n this.baseLayerChecked = this.baseLayerChecked.bind(this);\r\n this.state = {UserSetting:\"\"};\r\n }\r\n baseLayerChecked(layers){\r\n window.main.OView.setBaseLayer({\r\n url: layers.URL,\r\n identifier: layers.ID,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate\r\n });\r\n }\r\n render(){\r\n return(\r\n
\r\n {\r\n window.BASE_LAYERS.map(\r\n (layers,index)=>\r\n index === 0 ?\r\n
\r\n this.baseLayerChecked(layers)}>\r\n \r\n
\r\n :\r\n
\r\n this.baseLayerChecked(layers)}>\r\n \r\n
\r\n )\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default BaseLayer;","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport reactCSS from 'reactcss';\r\nimport { SketchPicker } from 'react-color';\r\nimport HelpComponent from '../HelpComponent';\r\n\r\nclass LidarOption extends React.Component{\r\n constructor() {\r\n super();\r\n this.deleteLayerList = this.deleteLayerList.bind(this);\r\n this.gotoLayer = this.gotoLayer.bind(this);\r\n this.state = {\r\n isSettingOpen : false,\r\n isEDLOpen : false,\r\n isAltitudeOpen : false,\r\n isColorLegendOpen : false,\r\n displayColorPicker: false,\r\n EDL:0,\r\n color: {\r\n r: '241',\r\n g: '112',\r\n b: '19',\r\n a: '1',\r\n },\r\n hexColor:\"#F17013\",\r\n AltitudeType : \"單色漸層\",\r\n AltitudeMin : 0,\r\n AltitudeMax : 0,\r\n helpMode : \"None\"\r\n };\r\n } \r\n componentDidMount(){\r\n let LidarLayer = this.props.layer.layerHandel;\r\n let AltitudeMin = LidarLayer.getAltitude().AltitudeMin;\r\n let AltitudeMax = LidarLayer.getAltitude().AltitudeMax;\r\n this.setState({AltitudeMax:AltitudeMax,AltitudeMin:AltitudeMin});\r\n }\r\n handleClick = () => {\r\n this.setState({ displayColorPicker: !this.state.displayColorPicker })\r\n };\r\n \r\n handleClose = () => {\r\n this.setState({ displayColorPicker: false })\r\n };\r\n \r\n handleChange = (color) => {\r\n let LidarLayer = this.props.layer.layerHandel;\r\n let AltitudeMin = this.state.AltitudeMin;\r\n let AltitudeMax = this.state.AltitudeMax;\r\n let gap = (AltitudeMax - AltitudeMin)/4;\r\n LidarLayer.setColorSet(\r\n [\r\n color.rgb.r, color.rgb.g, color.rgb.b, color.rgb.a,\r\n color.rgb.r * 0.75, color.rgb.g * 0.75, color.rgb.b * 0.75, color.rgb.a,\r\n color.rgb.r * 0.5, color.rgb.g * 0.5, color.rgb.b * 0.5, color.rgb.a,\r\n color.rgb.r * 0.25, color.rgb.g * 0.25, color.rgb.b * 0.25, color.rgb.a,\r\n 0, 0, 0, color.rgb.a, \r\n ],\r\n [AltitudeMax, AltitudeMax - gap, AltitudeMax - gap * 2, AltitudeMax - gap * 3, AltitudeMax - gap * 4]);\r\n window.main.OView.updateScreen();\r\n this.setState({ color: color.rgb,hexColor:color.hex })\r\n };\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n let LidarLayer = this.props.layer.layerHandel;\r\n LidarLayer.goto();\r\n }\r\n settingOpen(){\r\n this.setState({ isSettingOpen: !this.state.isSettingOpen });\r\n }\r\n EDLOpen(){\r\n let LidarLayer = this.props.layer.layerHandel;\r\n LidarLayer.enableEDL(!this.state.isEDLOpen);\r\n this.setState({ isEDLOpen: !this.state.isEDLOpen });\r\n }\r\n setEDLLevel(event){ \r\n let LidarLayer = this.props.layer.layerHandel; \r\n LidarLayer.edlStrength = event.target.valueAsNumber;\r\n window.main.OView.updateScreen();\r\n this.setState({EDL:event.target.valueAsNumber});\r\n }\r\n AltitudeOpen(){\r\n let LidarLayer = this.props.layer.layerHandel;\r\n let AltitudeMin = this.state.AltitudeMin;\r\n let AltitudeMax = this.state.AltitudeMax;\r\n let gap;\r\n if(this.state.AltitudeType === \"單色漸層\"){\r\n gap = (AltitudeMax - AltitudeMin)/4;\r\n LidarLayer.enableAltitude(!this.state.isAltitudeOpen);\r\n LidarLayer.setColorSet(\r\n [\r\n this.state.color.r, this.state.color.g, this.state.color.b, this.state.color.a,\r\n this.state.color.r * 0.75, this.state.color.g * 0.75, this.state.color.b * 0.75, this.state.color.a,\r\n this.state.color.r * 0.5, this.state.color.g * 0.5, this.state.color.b * 0.5, this.state.color.a,\r\n this.state.color.r * 0.25, this.state.color.g * 0.25, this.state.color.b * 0.25, this.state.color.a,\r\n 0, 0, 0, this.state.color.a, \r\n ],\r\n [AltitudeMax, AltitudeMax - gap, AltitudeMax - gap * 2, AltitudeMax - gap * 3, AltitudeMax - gap * 4]);\r\n window.main.OView.updateScreen();\r\n this.setState({ isAltitudeOpen: !this.state.isAltitudeOpen });\r\n }\r\n else if(this.state.AltitudeType === \"分層設色\"){\r\n gap = (AltitudeMax - AltitudeMin)/3;\r\n LidarLayer.enableAltitude(!this.state.isAltitudeOpen);\r\n LidarLayer.setColorSet(\r\n [\r\n 255, 0, 0, 255,\r\n 255, 255, 0, 255,\r\n 0, 128, 0, 255,\r\n 0, 0, 0, 255, \r\n ],\r\n [AltitudeMax, AltitudeMax - gap, AltitudeMax - gap * 2, AltitudeMax - gap * 3]);\r\n window.main.OView.updateScreen();\r\n this.setState({ isAltitudeOpen: !this.state.isAltitudeOpen });\r\n }\r\n }\r\n typeChange(event){\r\n let LidarLayer = this.props.layer.layerHandel;\r\n let AltitudeMin = this.state.AltitudeMin;\r\n let AltitudeMax = this.state.AltitudeMax;\r\n let gap;\r\n if(event.target.value === \"單色漸層\"){ \r\n gap = (AltitudeMax - AltitudeMin)/4;\r\n LidarLayer.setColorSet(\r\n [\r\n this.state.color.r, this.state.color.g, this.state.color.b, this.state.color.a,\r\n this.state.color.r * 0.75, this.state.color.g * 0.75, this.state.color.b * 0.75, this.state.color.a,\r\n this.state.color.r * 0.5, this.state.color.g * 0.5, this.state.color.b * 0.5, this.state.color.a,\r\n this.state.color.r * 0.25, this.state.color.g * 0.25, this.state.color.b * 0.25, this.state.color.a,\r\n 0, 0, 0, this.state.color.a, \r\n ],\r\n [AltitudeMax, AltitudeMax - gap, AltitudeMax - gap * 2, AltitudeMax - gap * 3, AltitudeMax - gap * 4]);\r\n window.main.OView.updateScreen();\r\n this.setState({ AltitudeType:event.target.value });\r\n }\r\n else if(event.target.value === \"分層設色\"){ \r\n gap = (AltitudeMax - AltitudeMin)/3;\r\n LidarLayer.setColorSet(\r\n [\r\n 255, 0, 0, 255,\r\n 255, 255, 0, 255,\r\n 0, 128, 0, 255,\r\n 0, 0, 0, 255, \r\n ],\r\n [AltitudeMax, AltitudeMax - gap, AltitudeMax - gap * 2, AltitudeMax - gap * 3]);\r\n window.main.OView.updateScreen();\r\n this.setState({ AltitudeType:event.target.value });\r\n }\r\n }\r\n ColorLegendOpen= () => {\r\n this.setState({ isColorLegendOpen: !this.state.isColorLegendOpen })\r\n };\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const Layer = this.props.layer;\r\n const AltitudeMin = this.state.AltitudeMin;\r\n const AltitudeMax = this.state.AltitudeMax;\r\n const gap = (AltitudeMax - AltitudeMin)/3;\r\n let ColorLegend = null; \r\n if(this.state.isSettingOpen&&this.state.isAltitudeOpen&&this.state.AltitudeType === \"分層設色\"&&this.state.isColorLegendOpen){\r\n ColorLegend = (\r\n
\r\n
\r\n
\r\n
\r\n 圖例(單位:公尺)\r\n
\r\n
\r\n
\r\n
\r\n {\r\n Math.round(AltitudeMax - gap - AltitudeMin) + \"~\" + Math.round(AltitudeMax - AltitudeMin)\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n Math.round(AltitudeMax - gap*2 - AltitudeMin) + \"~\" + Math.round(AltitudeMax - gap - AltitudeMin)\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n Math.round(AltitudeMax - gap*3 - AltitudeMin) + \"~\" + Math.round(AltitudeMax - gap*2 - AltitudeMin)\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ); \r\n }\r\n const siderRangeCSS ={\r\n background: \"linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%)\"\r\n };\r\n const styles = reactCSS({\r\n 'default': {\r\n color: {\r\n width: '155px',\r\n height: '14px',\r\n borderRadius: '2px',\r\n background: `rgba(${ this.state.color.r }, ${ this.state.color.g }, ${ this.state.color.b }, ${ this.state.color.a })`,\r\n },\r\n swatch: {\r\n padding: '5px',\r\n background: '#fff',\r\n borderRadius: '10px',\r\n boxShadow: '0 0 0 1px rgba(0,0,0,.1)',\r\n display: 'inline-block',\r\n cursor: 'pointer',\r\n },\r\n popover: {\r\n position: 'fixed',\r\n zIndex: '2000'\r\n },\r\n cover: {\r\n position: 'fixed',\r\n top: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n left: '0px',\r\n },\r\n },\r\n });\r\n if(this.state.helpMode === \"LidarHelp\" ){\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n } \r\n else if(this.state.helpMode === \"None\"){\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help')); \r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n {\r\n this.state.isSettingOpen?\r\n
\r\n
\r\n
\r\n
邊界增強模式:
\r\n
\r\n
\r\n
\r\n this.EDLOpen()}>\r\n \r\n
\r\n
\r\n
\r\n {\r\n this.state.isEDLOpen?\r\n
\r\n this.setEDLLevel(e)}>\r\n
: null\r\n }\r\n \r\n\r\n
\r\n
\r\n
高度著色模式:
\r\n
\r\n
\r\n
\r\n this.AltitudeOpen()}>\r\n \r\n
\r\n
\r\n
\r\n {\r\n this.state.isAltitudeOpen?\r\n
\r\n
\r\n \r\n
\r\n
\r\n {\r\n this.state.AltitudeType === \"單色漸層\"?\r\n
\r\n
\r\n
\r\n
\r\n { \r\n this.state.displayColorPicker ? \r\n
\r\n
\r\n \r\n
: null \r\n }\r\n
:\r\n
\r\n \r\n
\r\n } \r\n
\r\n
: null\r\n }\r\n {ColorLegend}\r\n
: null\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass LidarLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n lidarLayer:{}\r\n }; \r\n this.lidarLayerChecked = this.lidarLayerChecked.bind(this); \r\n }\r\n componentDidUpdate(){\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if(isChecked){\r\n window.main.OView.removeLayer(this.state.lidarLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,lidarLayer:{}});\r\n } \r\n }\r\n }\r\n lidarLayerChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if(!isChecked){\r\n window.main.OView.addPointCloudLayer({\r\n url: window.TERRAIN_SERVER.URL,\r\n identifier: layer.ID,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate,\r\n callback: function (e,lidarLayer) {\r\n if(e){\r\n lidarLayer._layer.UrlManager.SetTemplate(window.TERRAIN_SERVER.URLTemplate);\r\n lidarLayer.goto();\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,lidarLayer); \r\n isChecked = !isChecked;\r\n layerThis.setState({isChecked:isChecked,lidarLayer:lidarLayer});\r\n }\r\n else if(!e){\r\n window.alertify.error(\"連結不到圖層::\"+layer.TITLE);\r\n }\r\n }\r\n }); \r\n }\r\n else{\r\n window.main.OView.removeLayer(this.state.lidarLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE); \r\n isChecked = !isChecked; \r\n layerThis.setState({isChecked:isChecked,lidarLayer:{}}); \r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.lidarLayerChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {LidarLayer,LidarOption};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\nimport { format } from \"date-fns\";\r\n\r\nclass ModelSetOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n isHaveModel:false,\r\n drawMode : \"0\",\r\n scale : 1,\r\n cover : \"null\",\r\n helpMode : \"None\",\r\n isNoiceOpen : true\r\n };\r\n this.setEntityColor=this.setEntityColor.bind(this);\r\n }\r\n componentWillMount(){\r\n const layer = this.props.layer;\r\n var ModelSetLayer = this.props.layer.layerHandel;\r\n if(layer.layerMode!=null){\r\n if (layer.layerMode) {\r\n ModelSetLayer.setDrawMode(1, 3);\r\n this.setState({drawMode:\"0\",isHaveModel:true});\r\n } else{\r\n ModelSetLayer.setDrawMode(0, 0);\r\n this.setState({drawMode:\"1\",isHaveModel:false});\r\n } \r\n }\r\n if(this.state.isNoiceOpen){\r\n this.setEntityColor();\r\n }\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n GROUP:layer.group,\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n if(this.props.layer.layerLocation!=null){\r\n var Pos = new window.Geo3DPoint(this.props.layer.layerLocation.POS.x , this.props.layer.layerLocation.POS.y , this.props.layer.layerLocation.POS.z);\r\n var V = new window.Geo3DPoint(this.props.layer.layerLocation.V.x , this.props.layer.layerLocation.V.y , this.props.layer.layerLocation.V.z);\r\n var Up = new window.Geo3DPoint(this.props.layer.layerLocation.UP.x , this.props.layer.layerLocation.UP.y , this.props.layer.layerLocation.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else{\r\n var ModelSetLayer = this.props.layer.layerHandel;\r\n ModelSetLayer.goto();\r\n }\r\n }\r\n settingOpen(){\r\n this.setState({ isSettingOpen: !this.state.isSettingOpen });\r\n }\r\n coverChange(event){\r\n var cover = event.target.value;\r\n var ModelSetLayer = this.props.layer.layerHandel;\r\n if(cover === \"null\"){\r\n ModelSetLayer.setOverlayName([]);\r\n window.main.OView.updateScreen();\r\n } \r\n else{\r\n ModelSetLayer.setOverlayName(cover);\r\n window.main.OView.updateScreen();\r\n } \r\n this.setState({cover : cover});\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n NoiceToggleOpen(){\r\n var ModelSetLayer = this.props.layer.layerHandel;\r\n if(this.state.isNoiceOpen){\r\n ModelSetLayer.removeEntityColorFunction(); \r\n }\r\n this.setState({isNoiceOpen:!this.state.isNoiceOpen});\r\n }\r\n componentDidUpdate(prevProps, prevState, snapshot){\r\n if(prevProps.currentTime!==this.props.currentTime || prevState.isNoiceOpen!==this.state.isNoiceOpen){\r\n this.setEntityColor();\r\n this.changeNoiceInfo();\r\n }\r\n }\r\n changeNoiceInfo(){\r\n const layerThis = this;\r\n if (layerThis.props.layer.timeLine !== undefined) {\r\n let attr = layerThis.props.infoBoxAttr;\r\n \r\n let time = format(layerThis.props.layer.timeLine.SELECTEDINTERVAL[0],'yyyyMMddHH');\r\n if (layerThis.props.currentTime.length != 0)\r\n time = format(layerThis.props.currentTime[0],'yyyyMMddHH');\r\n let data = window.BuildNoice;\r\n if (attr.ATTR.length != 0) {\r\n let layerId = layerThis.props.layer.id;\r\n if (data.hasOwnProperty(layerId)) {\r\n let building_id = attr.ATTR[1]+\"_\"+attr.ATTR[3];\r\n if (data[layerId][time].hasOwnProperty(building_id)) {\r\n attr.ATTR[4] = data[layerId][time][building_id];\r\n } else {\r\n attr.ATTR[4] = \"無資料\";\r\n }\r\n layerThis.props.setinfoBox(attr);\r\n } else {\r\n layerThis.props.layer.layerHandel.getColAndAttrs(attr.ATTR[0], function(attrs) {\r\n attr.ATTR[4] = \"無資料\";\r\n layerThis.props.setinfoBox(attrs);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n setEntityColor(){\r\n if (this.props.layer.timeLine !== undefined) {\r\n let ModelSetLayer = this.props.layer.layerHandel;\r\n let time = format(this.props.layer.timeLine.SELECTEDINTERVAL[0],'yyyyMMddHH');\r\n if (this.props.currentTime.length != 0)\r\n time = format(this.props.currentTime[0],'yyyyMMddHH');\r\n let data = window.BuildNoice;\r\n if (this.state.isNoiceOpen) {\r\n let layerId = this.props.layer.id;\r\n ModelSetLayer.setEntityColorFunction([\"NO\", \"floors\", \"noice\"], function (id, Attrs, color) {\r\n let building_id = Attrs[0] + \"_\" + Attrs[1];\r\n let noice = 0;\r\n if (data.hasOwnProperty(layerId)) {\r\n if (data[layerId][time].hasOwnProperty(building_id))\r\n noice = data[layerId][time][building_id];\r\n }\r\n\r\n if (noice < 30) {\r\n color[0] = 26; // R\r\n color[1] = 150; // G\r\n color[2] = 65; // B\r\n color[3] = 255; // A\r\n } else if (noice < 35 && noice >= 30) {\r\n color[0] = 73;\r\n color[1] = 188;\r\n color[2] = 62;\r\n color[3] = 255;\r\n } else if (noice < 40 && noice >= 35) {\r\n color[0] = 166;\r\n color[1] = 217;\r\n color[2] = 106;\r\n color[3] = 255;\r\n } else if (noice < 45 && noice >= 40) {\r\n color[0] = 207;\r\n color[1] = 229;\r\n color[2] = 106;\r\n color[3] = 255;\r\n } else if (noice < 50 && noice >= 45) {\r\n color[0] = 248;\r\n color[1] = 235;\r\n color[2] = 135;\r\n color[3] = 255;\r\n } else if (noice < 55 && noice >= 50) {\r\n color[0] = 255;\r\n color[1] = 206;\r\n color[2] = 89;\r\n color[3] = 255;\r\n } else if (noice < 60 && noice >= 55) {\r\n color[0] = 251;\r\n color[1] = 162;\r\n color[2] = 91;\r\n color[3] = 255;\r\n } else if (noice < 65 && noice >= 60) {\r\n color[0] = 251;\r\n color[1] = 121;\r\n color[2] = 20;\r\n color[3] = 255;\r\n } else if (noice < 70 && noice >= 65) {\r\n color[0] = 251;\r\n color[1] = 65;\r\n color[2] = 102;\r\n color[3] = 255;\r\n } else if (noice < 75 && noice >= 70) {\r\n color[0] = 234;\r\n color[1] = 23;\r\n color[2] = 47;\r\n color[3] = 255;\r\n } else if (noice < 80 && noice >= 75) {\r\n color[0] = 187;\r\n color[1] = 21;\r\n color[2] = 46;\r\n color[3] = 255;\r\n } else if (noice < 85 && noice >= 80) {\r\n color[0] = 143;\r\n color[1] = 21;\r\n color[2] = 46;\r\n color[3] = 255;\r\n } else if (noice >= 85) {\r\n color[0] = 88;\r\n color[1] = 21;\r\n color[2] = 46;\r\n color[3] = 255;\r\n } else {\r\n color[0] = 255; // R\r\n color[1] = 255; // G\r\n color[2] = 255; // B\r\n color[3] = 255; // A\r\n // 不符合的圖素白色\r\n } \r\n return true; // 回傳值為true則顯示,false則隱藏圖素\r\n });\r\n }\r\n }\r\n }\r\n render(){\r\n const LayerList_2D = this.props.LayerList_2D;\r\n const Layer = this.props.layer;\r\n if(this.state.helpMode === \"ModelSetHelp\" ){\r\n if(this.state.isHaveModel){\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n\r\n }\r\n else{\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n }\r\n } \r\n else if(this.state.helpMode === \"None\"){\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help')); \r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n {\r\n this.state.isSettingOpen?\r\n
\r\n
\r\n
\r\n
影像披覆:
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
噪音程度上色:
\r\n
\r\n
\r\n
\r\n this.NoiceToggleOpen()}>\r\n \r\n
\r\n
\r\n
\r\n
: null\r\n } \r\n
\r\n );\r\n }\r\n}\r\n\r\nclass ModelSetLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n modelSetLayer:{}\r\n }; \r\n this.modelSetLayerChecked = this.modelSetLayerChecked.bind(this); \r\n }\r\n componentDidMount(){\r\n }\r\n componentDidUpdate(){\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if(isChecked){\r\n window.main.OView.removeLayer(this.state.modelSetLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,modelSetLayer:{}});\r\n } \r\n }\r\n }\r\n divTime(time){\r\n let time1 = Date.parse(time[0]);\r\n let time2 = Date.parse(time[1]);\r\n return Math.abs(parseInt((time2 - time1) / 1000 / 3600));\r\n }\r\n getNoiseData(){\r\n let layer = this.props.layer;\r\n let dt_s = format(layer.TIMELINE.TIMElINEINTERVAL[0],'yyyyMMddHH');\r\n let range = this.divTime(layer.TIMELINE.TIMElINEINTERVAL);\r\n // let range = 3;\r\n const d = {\r\n type: \"building\",\r\n area: layer.ID,\r\n dt_s: dt_s,\r\n range: range\r\n };\r\n const formData = Object.keys(d).map(function (keyName) {\r\n return encodeURIComponent(keyName) + '=' + encodeURIComponent(d[keyName])\r\n }).join('&');\r\n if (!window.BuildNoice.hasOwnProperty(layer.ID)) {\r\n if (layer.FETCHURL !== undefined) {\r\n fetch(layer.FETCHURL, {\r\n method: \"POST\",\r\n body: formData,\r\n headers: new Headers({\r\n \"Content-type\": \"application/x-www-form-urlencoded\"\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(data => {\r\n Object.assign(window.BuildNoice, data);\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n console.log(\"取得資料失敗\");\r\n })\r\n }\r\n }\r\n }\r\n modelSetLayerChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if(!isChecked){\r\n if (layer.LEGEND !== undefined) {\r\n this.getNoiseData();\r\n }\r\n window.main.OView.addModelSetLayer({\r\n url: window.LOCAL_SERVER.URL,\r\n identifier: layer.ID,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate,\r\n callback: function (e,modelSetLayer) {\r\n if(e){\r\n modelSetLayer.setUseLight(false);\r\n modelSetLayer.setOnClickEntity(function(id, pos) {\r\n modelSetLayer.getColAndAttrs(id, function(attrs) {\r\n let time = format(layer.TIMELINE.SELECTEDINTERVAL[0],'yyyyMMddHH');\r\n if (layerThis.props.currentTime.length != 0)\r\n time = format(layerThis.props.currentTime[0],'yyyyMMddHH');\r\n let data = window.BuildNoice;\r\n attrs.ATTR[4] = \"無資料\";\r\n if (data.hasOwnProperty(layer.ID)) {\r\n let building_id = attrs.ATTR[1]+\"_\"+attrs.ATTR[3];\r\n if (data[layer.ID][time].hasOwnProperty(building_id)) {\r\n attrs.ATTR[4] = data[layer.ID][time][building_id];\r\n }\r\n }\r\n layerThis.props.setinfoBoxOpen();\r\n layerThis.props.setinfoBox(attrs);\r\n });\r\n });\r\n if(layer.LOCATION!=null){\r\n var Pos = new window.Geo3DPoint(layer.LOCATION.POS.x , layer.LOCATION.POS.y , layer.LOCATION.POS.z);\r\n var V = new window.Geo3DPoint(layer.LOCATION.V.x , layer.LOCATION.V.y , layer.LOCATION.V.z);\r\n var Up = new window.Geo3DPoint(layer.LOCATION.UP.x , layer.LOCATION.UP.y , layer.LOCATION.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else{\r\n modelSetLayer.goto();\r\n }\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,modelSetLayer); \r\n isChecked = !isChecked;\r\n layerThis.setState({ isChecked: isChecked, modelSetLayer: modelSetLayer });\r\n if (layer.LEGEND !== undefined)\r\n layerThis.props.setLegendBoxContent(layer.LEGEND);\r\n if (layer.TIMELINE !== undefined)\r\n layerThis.props.setTimeLineContent(layer.TIMELINE);\r\n }\r\n else if(!e){\r\n window.alertify.error(\"連結不到圖層::\"+layer.TITLE);\r\n }\r\n }\r\n }); \r\n }\r\n else{\r\n window.main.OView.removeLayer(this.state.modelSetLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE); \r\n isChecked = !isChecked;\r\n layerThis.setState({isChecked:isChecked,modelSetLayer:{}});\r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.modelSetLayerChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {ModelSetLayer,ModelSetOption};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\n\r\nclass Acute3DOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n cover : \"null\",\r\n helpMode : \"None\"\r\n };\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n var Acute3DLayer = this.props.layer.layerHandel;\r\n Acute3DLayer.goto();\r\n }\r\n settingOpen(){\r\n this.setState({ isSettingOpen: !this.state.isSettingOpen });\r\n }\r\n coverChange(event){\r\n var cover = event.target.value;\r\n var Acute3DLayer = this.props.layer.layerHandel;\r\n if(cover === \"null\"){\r\n Acute3DLayer.setOverlayName();\r\n window.main.OView.updateScreen();\r\n } \r\n else{\r\n Acute3DLayer.setOverlayName(cover);\r\n window.main.OView.updateScreen();\r\n } \r\n this.setState({cover : cover});\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const LayerList_2D = this.props.LayerList_2D;\r\n const Layer = this.props.layer;\r\n if(this.state.helpMode === \"Acute3DHelp\" ){\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n } \r\n else if(this.state.helpMode === \"None\"){\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help')); \r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n {\r\n this.state.isSettingOpen?\r\n
\r\n
\r\n
\r\n
影像披覆:
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
: null\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\nclass Acute3DLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n Acute3DLayer: {},\r\n URL: window.LOCAL_SERVER.URL,\r\n URLTemplate: window.LOCAL_SERVER.URLTemplate,\r\n Token:\"\"\r\n }; \r\n this.Acute3DLayerChecked = this.Acute3DLayerChecked.bind(this);\r\n }\r\n componentDidMount(){\r\n this.setState({\r\n URL: this.props.URL,\r\n URLTemplate: this.props.URLTemplate,\r\n Token: this.props.Token\r\n });\r\n }\r\n componentDidUpdate(){\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if(isChecked){\r\n window.main.OView.removeLayer(this.state.Acute3DLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,Acute3DLayer:{}});\r\n } \r\n }\r\n }\r\n Acute3DLayerChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if (!isChecked) {\r\n window.main.OView.addAcute3DLayer({\r\n url: this.state.URL,\r\n identifier: layer.ID,\r\n urlTemplate: this.state.URLTemplate,\r\n token: this.state.Token,\r\n callback: function (e, Acute3DLayer)\r\n {\r\n if (e)\r\n {\r\n // Set Offset\r\n if (layer.OFFSET != null)\r\n {\r\n Acute3DLayer.setOffset(layer.OFFSET.x, layer.OFFSET.y, layer.OFFSET.z);\r\n }\r\n\r\n // Set Location\r\n if (layer.LOCATION != null && layer.LOCATION.POS !== undefined)\r\n {\r\n var Pos = new window.Geo3DPoint(layer.LOCATION.POS.x, layer.LOCATION.POS.y, layer.LOCATION.POS.z);\r\n var V = new window.Geo3DPoint(layer.LOCATION.V.x, layer.LOCATION.V.y, layer.LOCATION.V.z);\r\n var Up = new window.Geo3DPoint(layer.LOCATION.UP.x, layer.LOCATION.UP.y, layer.LOCATION.UP.z);\r\n var Camera = new window.ov.Camera(Pos, V, Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else\r\n {\r\n Acute3DLayer.goto();\r\n }\r\n \r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,Acute3DLayer); \r\n isChecked = !isChecked;\r\n layerThis.setState({isChecked:isChecked,Acute3DLayer:Acute3DLayer});\r\n }\r\n else if(!e){\r\n window.alertify.error(\"連結不到圖層::\"+layer.TITLE);\r\n }\r\n }\r\n }); \r\n }\r\n else{\r\n window.main.OView.removeLayer(this.state.Acute3DLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE);\r\n isChecked = !isChecked; \r\n layerThis.setState({isChecked:isChecked,Acute3DLayer:{}}); \r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.Acute3DLayerChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {Acute3DLayer,Acute3DOption};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\nimport GeoTIFF, { fromUrl, fromUrls, fromArrayBuffer, fromBlob } from 'geotiff';\r\n\r\nclass VisualizedDataGridOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n cover : \"null\",\r\n helpMode : \"None\"\r\n };\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n var VisualizedDataGridOverlay = this.props.layer.layerHandel;\r\n VisualizedDataGridOverlay.goto();\r\n }\r\n settingOpen(){\r\n this.setState({ isSettingOpen: !this.state.isSettingOpen });\r\n }\r\n coverChange(event){\r\n var cover = event.target.value;\r\n var VisualizedDataGridOverlay = this.props.layer.layerHandel;\r\n if(cover === \"null\"){\r\n VisualizedDataGridOverlay.setOverlayName();\r\n window.main.OView.updateScreen();\r\n } \r\n else{\r\n VisualizedDataGridOverlay.setOverlayName(cover);\r\n window.main.OView.updateScreen();\r\n } \r\n this.setState({cover : cover});\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const LayerList_2D = this.props.LayerList_2D;\r\n const Layer = this.props.layer;\r\n if (this.state.helpMode === \"VisualizedDataGridHelp\") // xj helper 內容待改\r\n {\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n }\r\n if (this.state.helpMode === \"None\")\r\n {\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help')); \r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n {\r\n this.state.isSettingOpen?\r\n
\r\n
\r\n
\r\n
影像披覆:
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
: null\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\nclass VisualizedDataGridOverlay extends React.Component{\r\n constructor()\r\n {\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n VisualizedDataGridOverlay:{}\r\n }; \r\n this.VisualizedDataGridOverlayChecked = this.VisualizedDataGridOverlayChecked.bind(this);\r\n\r\n this.vaColorMapKey = [\r\n 0.0,\r\n 0.1,\r\n 1.0,\r\n 2.0,\r\n 3.0,\r\n 4.0,\r\n 5.0,\r\n 6.0\r\n ];\r\n\r\n this.vaColorMapValue = [\r\n \"#00000000\",\r\n \"#0000ff88\",\r\n \"#00ff0088\",\r\n \"#ffd80088\",\r\n \"#ff6a0088\",\r\n \"#ff000088\",\r\n \"#ff006e88\",\r\n \"#ff00dc88\"\r\n ];\r\n\r\n // Variables\r\n this.vOverlay = null;\r\n this.vLayerSrc = null;\r\n\r\n this.vaDate = [];\r\n let date = new Date(); // Set initial date\r\n this.vaDate.push(date);\r\n\r\n this.vWidgetTimeline = null;\r\n this.vWidgetTimelinePlayer = null;\r\n }\r\n componentDidUpdate()\r\n {\r\n if (this.props.deleteList.layerName === this.props.layer.TITLE)\r\n {\r\n let isChecked = this.state.isChecked;\r\n if (isChecked)\r\n {\r\n // Hide Layer & Timeline\r\n this.vOverlay.show = false; // 無效\r\n this.vOverlay.opacity = 0;\r\n this.vWidgetTimeline.hide();\r\n this.vWidgetTimelinePlayer.hide();\r\n\r\n // Update UI\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,VisualizedDataGridOverlay:{}});\r\n } \r\n }\r\n }\r\n async GetFloodData(vaFloodDataList, vaFloodData, id)\r\n {\r\n try {\r\n if (vaFloodData[id].data === null) \r\n {\r\n let url = \"../../xjstest/data/20190517_Shinchu_tif/\" + vaFloodDataList[id];\r\n let tiff = await fromUrl(url);\r\n let image = await tiff.getImage(); // by default, the first image is read.\r\n let data;\r\n if (image.pixelIsArea()) // 測試用判斷, 舊方法(DTMCrop 出的) 會用 readRaster(); 中心 WMS-DTM 取得的 才會用 readRGB()\r\n data = await image.readRGB();\r\n else\r\n data = await image.readRasters();\r\n vaFloodData[id].data = data[0];\r\n vaFloodData[id].image = image;\r\n vaFloodData[id].datetime = this.vaDate[0].getTime() + 360000 * id;\r\n }\r\n\r\n return vaFloodData[id];\r\n }\r\n catch (errMsg) {\r\n console.log(\"Error in GetFloodData: [\" + errMsg + \"]\");\r\n }\r\n }\r\n async SetTerrainOverlayAll(vaFloodDataList, vaFloodData)\r\n {\r\n let vaData = [];\r\n\r\n // Get all FloodData\r\n for (let i = 0; i < vaFloodData.length; i++)\r\n {\r\n let vFloodData = await this.GetFloodData(vaFloodDataList, vaFloodData, i);\r\n vaData.push(vFloodData.data);\r\n\r\n if (i != 0) // vaDate[0] 已經預先產生\r\n {\r\n let date_new = new Date(vFloodData.datetime);\r\n this.vaDate.push(date_new);\r\n }\r\n }\r\n\r\n // Get Basic info\r\n let vFloodData = vaFloodData[0];\r\n let width = vFloodData.image.getWidth();\r\n let height = vFloodData.image.getHeight();\r\n let bbox = vFloodData.image.getBoundingBox(); // [w,s,e,n]\r\n let coord_ws = new window.GeoPoint(bbox[0], bbox[1]);\r\n let coord_en = new window.GeoPoint(bbox[2], bbox[3]);\r\n window.GetEPSGEngine().Transfer(3826, 4326, coord_ws); // (source, target, coord)\r\n window.GetEPSGEngine().Transfer(3826, 4326, coord_en);\r\n\r\n // Set TerrainVisualizedDataGridOverlay\r\n \r\n this.vLayerSrc = {\r\n layername: \"Flood\",\r\n source: vaData,\r\n boundary: new window.GeoBoundary(coord_ws.x, coord_ws.y, coord_en.x, coord_en.y), // xj orig: (118.0, 21.0, 123.0, 25.0)\r\n width: width,\r\n height: height,\r\n heightScale: 10000, // xj 有作用,但該設多少? magic number!!\r\n date: this.vaDate,\r\n useStepLayeredColorMap: false,\r\n layeredColorMapKey: this.vaColorMapKey,\r\n layeredColorMapValue: this.vaColorMapValue,\r\n playSpeed: 0.0005, // default: 0.16\r\n repeat: true // default: true\r\n };\r\n\r\n this.vOverlay = window.main.OView.addTerrainVisualizedDataGridOverlay(this.vLayerSrc);\r\n }\r\n async VisualizedDataGridOverlayChecked(layer)\r\n {\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if (!isChecked)\r\n {\r\n if (this.vOverlay === null) // 第一次 Load 淹水資料\r\n {\r\n let vaFloodDataList = layer.FloodDataList;\r\n\r\n function CFloodData(name) {\r\n this.name = name;\r\n this.data = null;\r\n this.image = null;\r\n this.datetime = null; // 之後可由從檔名或外部輸入正確時間日期\r\n }\r\n\r\n var vaFloodData = []; // 改成 FloodData(data, image) 和 Overlay (Overlay, LayerSrc) 全部放在一起管理\r\n for (let i = 0; i < vaFloodDataList.length; i++) {\r\n let floodData = new CFloodData(vaFloodDataList[i]);\r\n vaFloodData.push(floodData);\r\n }\r\n\r\n await this.SetTerrainOverlayAll(vaFloodDataList, vaFloodData);\r\n\r\n // Set Time UI\r\n this.vWidgetTimeline = new window.ov.Widget.Timeline({ view: window.main.OView, startTime: this.vaDate[0].getTime(), stopTime: this.vaDate[0].getTime() + 360000 * (this.vaDate.length - 1), isRepeat: true });\r\n this.vWidgetTimelinePlayer = new window.ov.Widget.TimelinePlayer({ view: window.main.OView, timeline: this.vWidgetTimeline, playSpeed: 1000.0, play: true });\r\n this.vWidgetTimeline.addLink(this.vOverlay);\r\n }\r\n else\r\n {\r\n this.vOverlay.show = true;\r\n this.vOverlay.opacity = 1;\r\n this.vWidgetTimeline.show();\r\n this.vWidgetTimelinePlayer.show();\r\n }\r\n\r\n // Goto \r\n if (layer.LOCATION != null)\r\n {\r\n var Pos = new window.Geo3DPoint(layer.LOCATION.POS.x, layer.LOCATION.POS.y, layer.LOCATION.POS.z);\r\n var V = new window.Geo3DPoint(layer.LOCATION.V.x, layer.LOCATION.V.y, layer.LOCATION.V.z);\r\n var Up = new window.Geo3DPoint(layer.LOCATION.UP.x, layer.LOCATION.UP.y, layer.LOCATION.UP.z);\r\n var Camera = new window.ov.Camera(Pos, V, Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n\r\n // Update UI\r\n window.alertify.success(\"已開啟圖層:\" + layer.TITLE);\r\n layerThis.props.setOpenLayer(layer, VisualizedDataGridOverlay);\r\n isChecked = !isChecked;\r\n layerThis.setState({ isChecked: isChecked, VisualizedDataGridOverlay: VisualizedDataGridOverlay });\r\n }\r\n else\r\n {\r\n // Hide Layer & TimeLine\r\n this.vOverlay.show = false; // 無效\r\n this.vOverlay.opacity = 0; // 要再找確實移除的方法,並考慮是否要清除 load 的資料。\r\n this.vWidgetTimeline.hide();\r\n this.vWidgetTimelinePlayer.hide();\r\n\r\n // Update UI\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE);\r\n isChecked = !isChecked; \r\n layerThis.setState({ isChecked: isChecked, VisualizedDataGridOverlay: {} });\r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.VisualizedDataGridOverlayChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {VisualizedDataGridOverlay,VisualizedDataGridOption};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\nimport GeoTIFF, { fromUrl, fromUrls, fromArrayBuffer, fromBlob } from 'geotiff';\r\n\r\nclass VisualizedDataGridOption_DataCube extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n cover : \"null\",\r\n helpMode : \"None\"\r\n };\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n var VisualizedDataGridOverlay_DataCube = this.props.layer.layerHandel;\r\n VisualizedDataGridOverlay_DataCube.goto();\r\n }\r\n settingOpen(){\r\n this.setState({ isSettingOpen: !this.state.isSettingOpen });\r\n }\r\n coverChange(event){\r\n var cover = event.target.value;\r\n var VisualizedDataGridOverlay_DataCube = this.props.layer.layerHandel;\r\n if(cover === \"null\"){\r\n VisualizedDataGridOverlay_DataCube.setOverlayName();\r\n window.main.OView.updateScreen();\r\n } \r\n else{\r\n VisualizedDataGridOverlay_DataCube.setOverlayName(cover);\r\n window.main.OView.updateScreen();\r\n } \r\n this.setState({cover : cover});\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const LayerList_2D = this.props.LayerList_2D;\r\n const Layer = this.props.layer;\r\n if (this.state.helpMode === \"VisualizedDataGridHelp\") // xj helper 內容待改\r\n {\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n }\r\n if (this.state.helpMode === \"None\")\r\n {\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help')); \r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n {\r\n this.state.isSettingOpen?\r\n
\r\n
\r\n
\r\n
影像披覆:
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
: null\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\nclass VisualizedDataGridOverlay_DataCube extends React.Component{\r\n constructor()\r\n {\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n VisualizedDataGridOverlay_DataCube:{}\r\n }; \r\n this.VisualizedDataGridOverlay_DataCubeChecked = this.VisualizedDataGridOverlay_DataCubeChecked.bind(this);\r\n\r\n this.vaColorMapKey = [\r\n 0.0,\r\n 0.5,\r\n 1.0,\r\n 2.0,\r\n 3.0,\r\n 4.0,\r\n 5.0\r\n ];\r\n\r\n this.vaColorMapValue = [\r\n \"#00000000\",\r\n \"#0000ff88\",\r\n \"#00ff0088\",\r\n \"#ffd80088\",\r\n \"#ff6a0088\",\r\n \"#ff000088\",\r\n \"#ff006e88\"\r\n ];\r\n\r\n // Variables\r\n this.vOverlay = null;\r\n this.vLayerSrc = null;\r\n\r\n this.vaDate = [];\r\n let date = new Date(); // Set initial date\r\n this.vaDate.push(date);\r\n\r\n this.vWidgetTimeline = null;\r\n this.vWidgetTimelinePlayer = null;\r\n }\r\n componentDidUpdate()\r\n {\r\n if (this.props.deleteList.layerName === this.props.layer.TITLE)\r\n {\r\n let isChecked = this.state.isChecked;\r\n if (isChecked)\r\n {\r\n // Hide Layer & Timeline\r\n this.vOverlay.show = false; // 無效\r\n this.vOverlay.opacity = 0;\r\n this.vWidgetTimeline.hide();\r\n this.vWidgetTimelinePlayer.hide();\r\n\r\n // Update UI\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,VisualizedDataGridOverlay_DataCube:{}});\r\n } \r\n }\r\n }\r\n GetNameFromURL(url)\r\n {\r\n let vaTemp = url.split(\"\\\"\");\r\n\r\n if (vaTemp.length > 1)\r\n {\r\n return vaTemp[1];\r\n }\r\n else\r\n {\r\n console.log(\"error: name from url error.\");\r\n return \"\";\r\n }\r\n }\r\n GetGeoTiffBuffer(url)\r\n {\r\n return new Promise(function (resolve, reject)\r\n {\r\n let xhr = new XMLHttpRequest();\r\n xhr.open(\"POST\", url, true);\r\n xhr.responseType = \"arraybuffer\"; // or \"text\" (測試 GetCapbility 用)\r\n xhr.setRequestHeader('Authorization', 'Basic cmFzYWRtaW46cmFzYWRtaW4=');\r\n xhr.onload = function (oEvent) {\r\n if (this.status >= 200 && this.status < 300) {\r\n resolve(xhr.response); // GetCoverage Test (geotiff.fromArrayBuffer)\r\n }\r\n else {\r\n reject({\r\n status: this.status,\r\n statusText: xhr.statusText\r\n });\r\n }\r\n };\r\n xhr.onerror = function () {\r\n reject({\r\n status: this.status,\r\n statusText: xhr.statusText\r\n });\r\n };\r\n xhr.send();\r\n });\r\n }\r\n async GetFloodData(vaFloodDataList, vaFloodData, id)\r\n {\r\n try {\r\n if (vaFloodData[id].data === null) \r\n {\r\n let arrayBuffer = await this.GetGeoTiffBuffer(vaFloodData[id].url);\r\n vaFloodData[id].arrayBuffer = arrayBuffer;\r\n let tiff = await fromArrayBuffer(arrayBuffer);\r\n let image = await tiff.getImage(); // by default, the first image is read.\r\n let data = await image.readRasters();\r\n vaFloodData[id].data = data[0];\r\n vaFloodData[id].image = image;\r\n vaFloodData[id].name = this.GetNameFromURL(vaFloodData[id].url);\r\n vaFloodData[id].datetime = this.vaDate[0].getTime() + 360000 * id;\r\n }\r\n\r\n return vaFloodData[id];\r\n }\r\n catch (errMsg) {\r\n console.log(\"Error in GetFloodData: [\" + errMsg + \"]\");\r\n }\r\n }\r\n async SetTerrainOverlayAll(vaFloodDataList, vaFloodData)\r\n {\r\n let vaData = [];\r\n\r\n // Get all FloodData\r\n for (let i = 0; i < vaFloodData.length; i++)\r\n {\r\n let vFloodData = await this.GetFloodData(vaFloodDataList, vaFloodData, i);\r\n vaData.push(vFloodData.data);\r\n\r\n if (i != 0) // vaDate[0] 已經預先產生\r\n this.vaDate.push(vFloodData.datetime);\r\n }\r\n\r\n // Get Basic info\r\n let vFloodData = vaFloodData[0];\r\n let width = vFloodData.image.getWidth();\r\n let height = vFloodData.image.getHeight();\r\n let bbox = vFloodData.image.getBoundingBox(); // [w,s,e,n]\r\n\r\n // Set TerrainVisualizedDataGridOverlay_DataCube\r\n this.vLayerSrc = {\r\n layername: \"Flood\",\r\n source: vaData,\r\n boundary: new window.GeoBoundary(bbox[0], bbox[1], bbox[2], bbox[3]), // [w,s,e,n], ex. 118.0, 21.0, 123.0, 25.0\r\n width: width,\r\n height: height,\r\n heightScale: 5000, // xj 有作用,但該設多少? magic number!!\r\n date: this.vaDate,\r\n useStepLayeredColorMap: false,\r\n// layeredColorMapKey: this.vaColorMapKey,\r\n// layeredColorMapValue: this.vaColorMapValue,\r\n playSpeed: 0.0005, // default: 0.16\r\n repeat: true // default: true\r\n };\r\n\r\n this.vOverlay = window.main.OView.addTerrainVisualizedDataGridOverlay(this.vLayerSrc);\r\n }\r\n async VisualizedDataGridOverlay_DataCubeChecked(layer)\r\n {\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if (!isChecked)\r\n {\r\n if (this.vOverlay === null) // 第一次 Load 淹水資料\r\n {\r\n let vaFloodDataList = layer.FloodDataList;\r\n\r\n function CFloodData(url)\r\n {\r\n this.name = \"\";\r\n this.url = url;\r\n this.arraybuffer = null;\r\n this.data = null;\r\n this.image = null;\r\n this.datetime = null;\r\n }\r\n\r\n var vaFloodData = []; // 改成 FloodData(data, image) 和 Overlay (Overlay, LayerSrc) 全部放在一起管理\r\n for (let i = 0; i < vaFloodDataList.length; i++) {\r\n let floodData = new CFloodData(vaFloodDataList[i]);\r\n vaFloodData.push(floodData);\r\n }\r\n\r\n await this.SetTerrainOverlayAll(vaFloodDataList, vaFloodData);\r\n\r\n // Set Time UI\r\n this.vWidgetTimeline = new window.ov.Widget.Timeline({ view: window.main.OView, startTime: this.vaDate[0].getTime(), stopTime: this.vaDate[0].getTime() + 360000 * (this.vaDate.length - 1), isRepeat: true });\r\n this.vWidgetTimelinePlayer = new window.ov.Widget.TimelinePlayer({ view: window.main.OView, timeline: this.vWidgetTimeline, playSpeed: 1000.0, play: true });\r\n this.vWidgetTimeline.addLink(this.vOverlay);\r\n }\r\n else\r\n {\r\n this.vOverlay.show = true;\r\n this.vOverlay.opacity = 1;\r\n this.vWidgetTimeline = new window.ov.Widget.Timeline({ view: window.main.OView, startTime: this.vaDate[0].getTime(), stopTime: this.vaDate[0].getTime() + 360000 * (this.vaDate.length - 1), isRepeat: true });\r\n this.vWidgetTimelinePlayer = new window.ov.Widget.TimelinePlayer({ view: window.main.OView, timeline: this.vWidgetTimeline, playSpeed: 1000.0, play: true });\r\n this.vWidgetTimeline.addLink(this.vOverlay);\r\n }\r\n\r\n // Goto \r\n if (layer.LOCATION != null)\r\n {\r\n var Pos = new window.Geo3DPoint(layer.LOCATION.POS.x, layer.LOCATION.POS.y, layer.LOCATION.POS.z);\r\n var V = new window.Geo3DPoint(layer.LOCATION.V.x, layer.LOCATION.V.y, layer.LOCATION.V.z);\r\n var Up = new window.Geo3DPoint(layer.LOCATION.UP.x, layer.LOCATION.UP.y, layer.LOCATION.UP.z);\r\n var Camera = new window.ov.Camera(Pos, V, Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n\r\n // Update UI\r\n window.alertify.success(\"已開啟圖層:\" + layer.TITLE);\r\n layerThis.props.setOpenLayer(layer, VisualizedDataGridOverlay_DataCube);\r\n isChecked = !isChecked;\r\n layerThis.setState({ isChecked: isChecked, VisualizedDataGridOverlay_DataCube: VisualizedDataGridOverlay_DataCube });\r\n }\r\n else\r\n {\r\n // Hide Layer & Timeline\r\n this.vOverlay.show = false; // 無效\r\n this.vOverlay.opacity = 0; // 要再找確實移除的方法,並考慮是否要清除 load 的資料。\r\n this.vWidgetTimeline.remove();\r\n this.vWidgetTimelinePlayer.remove();\r\n\r\n // Update UI\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE);\r\n isChecked = !isChecked; \r\n layerThis.setState({ isChecked: isChecked, VisualizedDataGridOverlay_DataCube: {} });\r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.VisualizedDataGridOverlay_DataCubeChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {VisualizedDataGridOverlay_DataCube,VisualizedDataGridOption_DataCube};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\n\r\nclass MoveModelOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n cover : \"null\",\r\n helpMode : \"None\"\r\n };\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n var MoveModelLayer = this.props.layer.layerHandel;\r\n MoveModelLayer.goto();\r\n }\r\n settingOpen(){\r\n this.setState({ isSettingOpen: !this.state.isSettingOpen });\r\n }\r\n coverChange(event){\r\n var cover = event.target.value;\r\n var MoveModelLayer = this.props.layer.layerHandel;\r\n if(cover === \"null\"){\r\n MoveModelLayer.setOverlayName();\r\n window.main.OView.updateScreen();\r\n } \r\n else{\r\n MoveModelLayer.setOverlayName(cover);\r\n window.main.OView.updateScreen();\r\n } \r\n this.setState({cover : cover});\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const LayerList_2D = this.props.LayerList_2D;\r\n const Layer = this.props.layer;\r\n if(this.state.helpMode === \"MoveModelHelp\" ){\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n } \r\n else if(this.state.helpMode === \"None\"){\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help')); \r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n {\r\n this.state.isSettingOpen?\r\n
\r\n
\r\n
\r\n
影像披覆:
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
: null\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\nclass MoveModelLayer extends React.Component{\r\n constructor()\r\n {\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n MoveModelLayer:{}\r\n }; \r\n this.MoveModelLayerChecked = this.MoveModelLayerChecked.bind(this);\r\n\r\n // Member Variables\r\n this.vWidgetTimeline = null;\r\n this.vWidgetTimelinePlayer = null;\r\n\r\n this.vGltfCar = null;\r\n this.vTheta = 52.0; // 0~360\r\n this.vDateStart = new Date().getTime();\r\n this.vDateEnd = this.vDateStart + 10 * 1000;\r\n\r\n }\r\n componentDidUpdate(){\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if (isChecked)\r\n {\r\n // Hide Layer & Timeline // xj4 \r\n this.vWidgetTimeline.hide();\r\n this.vWidgetTimelinePlayer.hide();\r\n\r\n // Update UI\r\n window.main.OView.removeLayer(this.state.MoveModelLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,MoveModelLayer:{}});\r\n } \r\n }\r\n }\r\n\r\n UpdateModel()\r\n {\r\n let delta = (this.vWidgetTimeline._NowTime - this.vDateStart) * 0.001;\r\n\r\n if (this.vCustomLayer !== null) {\r\n // Update Model Pos\r\n let pos = new window.GeoPoint(120.72767596111555, 24.34817, 179);\r\n window.GetEPSGEngine().Transfer(4326, 3826, pos); // (source, target, coord)\r\n\r\n pos.x += Math.cos((this.vTheta / 360) * Math.PI * 2) * delta * 27.78; // Speed: 100 km/hr = 100000m/hr = 1667 m/min = 27.78 m/s\r\n pos.y += Math.sin((this.vTheta / 360) * Math.PI * 2) * delta * 27.78;\r\n\r\n window.GetEPSGEngine().Transfer(3826, 4326, pos);\r\n this.vGltfCar.update({ position: pos });\r\n }\r\n }\r\n UpdateCamera()\r\n {\r\n // Update Camera Pos\r\n let tmpPos = window.main.OView.camera.pos;\r\n window.GetEPSGEngine().Transfer(4326, 3826, tmpPos);\r\n tmpPos.x += Math.cos((this.vTheta / 360) * Math.PI * 2) * 3 * 27.78; // Speed: 100 km/hr = 100000m/hr = 1667 m/min = 27.78 m/s\r\n tmpPos.y += Math.sin((this.vTheta / 360) * Math.PI * 2) * 3 * 27.78; // Speed: 100 km/hr = 100000m/hr = 1667 m/min = 27.78 m/s\r\n\r\n window.GetEPSGEngine().Transfer(3826, 4326, tmpPos);\r\n\r\n let v = window.main.OView.camera.v;\r\n let up = window.main.OView.camera.up;\r\n let camera = new window.ov.Camera(tmpPos, v, up);\r\n window.main.OView.gotoCamera(camera, true);\r\n }\r\n updateScreen(time)\r\n {\r\n window.main.OView.updateScreen();\r\n window.main.OView.vMoveModelLayerCotainer.UpdateModel();\r\n window.requestAnimationFrame(window.main.OView.vMoveModelLayerCotainer.updateScreen);\r\n }\r\n\r\n // Set\r\n SetTimeEvent()\r\n {\r\n const layerThis = this;\r\n\r\n window.main.OView.addTimeEvent({\r\n start: this.vDateStart,\r\n end: this.vDateEnd,\r\n title: \"測試模型移動\",\r\n onEnter: function () {\r\n layerThis.updateScreen(); // 不確定更新速度,考慮改成 setInterval,自己控制更新秒數\r\n },\r\n onLeave: function () {\r\n let pos = new window.GeoPoint(120.72767596111555, 24.34817, 179);\r\n layerThis.vGltfCar.update({ position: pos });\r\n }\r\n });\r\n\r\n this.vWidgetTimeline.addEventListener(\"Stop\", function(){console.log(\"In New EventListener: Stop\");});\r\n this.vWidgetTimelinePlayer.addEventListener(\"Play\", function(){console.log(\"In New EventListener: Play\");});\r\n this.vWidgetTimelinePlayer.addEventListener(\"Pause\", function(){console.log(\"In New EventListener: Pause\");});\r\n }\r\n StopTimeEvnet()\r\n {\r\n console.log(\"Time Stop La~~~\"); // xj3\r\n }\r\n\r\n MoveModelLayerChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if (!isChecked)\r\n {\r\n window.main.OView.addCustomLayer({\r\n layername: \"MoveModel\",\r\n callback: function (e, MoveModelLayer)\r\n {\r\n if (e)\r\n {\r\n window.main.OView.vMoveModelLayerCotainer = layerThis; // For external use\r\n\r\n // Load Model\r\n layerThis.vGltfCar = MoveModelLayer.addGLTFEntity({\r\n position: new window.GeoPoint(120.72767596111555, 24.34817, 179),\r\n src: \"../../xjstest/data/car1.glb\",\r\n scale: 10,\r\n rotate: { x: 0, y: 1, z: 0, w: 140 }\r\n });\r\n\r\n // Set Time UI\r\n layerThis.vWidgetTimeline = new window.ov.Widget.Timeline({ \r\n view: window.main.OView, \r\n style: { left: \"120px\", bottom: \"60px\", width: \"calc(100% - 120px)\" },\r\n startTime: layerThis.vDateStart, stopTime: layerThis.vDateEnd, isRepeat: true \r\n });\r\n layerThis.vWidgetTimelinePlayer = new window.ov.Widget.TimelinePlayer({ \r\n view: window.main.OView, timeline: layerThis.vWidgetTimeline, playSpeed: 1, play: true, maxPlaySpeed: 10, minPlaySpeed: 1, playSpeedStep:0.1, minUpdateInterval: 33, \r\n style: { left: \"88px\", bottom: \"56px\" }\r\n });\r\n layerThis.SetTimeEvent();\r\n\r\n\r\n // Set Offset\r\n if (layer.OFFSET != null)\r\n {\r\n MoveModelLayer.setOffset(layer.OFFSET.x, layer.OFFSET.y, layer.OFFSET.z);\r\n }\r\n\r\n // Set Location\r\n if (layer.LOCATION != null)\r\n {\r\n var Pos = new window.Geo3DPoint(layer.LOCATION.POS.x, layer.LOCATION.POS.y, layer.LOCATION.POS.z);\r\n var V = new window.Geo3DPoint(layer.LOCATION.V.x, layer.LOCATION.V.y, layer.LOCATION.V.z);\r\n var Up = new window.Geo3DPoint(layer.LOCATION.UP.x, layer.LOCATION.UP.y, layer.LOCATION.UP.z);\r\n var Camera = new window.ov.Camera(Pos, V, Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else\r\n {\r\n MoveModelLayer.goto();\r\n }\r\n \r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,MoveModelLayer); \r\n isChecked = !isChecked;\r\n layerThis.setState({isChecked:isChecked,MoveModelLayer:MoveModelLayer});\r\n }\r\n else if(!e){\r\n window.alertify.error(\"連結不到圖層::\"+layer.TITLE);\r\n }\r\n }\r\n });\r\n\r\n // ====================================================================== \r\n }\r\n else {\r\n // Hide Layer & TimeLine // xj4 與淹水共用 timeline 的話,要在 Init 時 call get timeline func.\r\n this.vWidgetTimeline.hide();\r\n this.vWidgetTimelinePlayer.hide();\r\n\r\n // Update UI\r\n window.main.OView.removeLayer(this.state.MoveModelLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE);\r\n isChecked = !isChecked; \r\n layerThis.setState({isChecked:isChecked,MoveModelLayer:{}}); \r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.MoveModelLayerChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {MoveModelLayer,MoveModelOption};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\n\r\nclass PipelineOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n isEntityFlowOpen:false,\r\n helpMode : \"None\"\r\n };\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n if(this.props.layer.layerLocation!=null){\r\n var Pos = new window.Geo3DPoint(this.props.layer.layerLocation.POS.x , this.props.layer.layerLocation.POS.y , this.props.layer.layerLocation.POS.z);\r\n var V = new window.Geo3DPoint(this.props.layer.layerLocation.V.x , this.props.layer.layerLocation.V.y , this.props.layer.layerLocation.V.z);\r\n var Up = new window.Geo3DPoint(this.props.layer.layerLocation.UP.x , this.props.layer.layerLocation.UP.y , this.props.layer.layerLocation.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else{\r\n var PipelineLayer = this.props.layer.layerHandel;\r\n PipelineLayer.goto();\r\n }\r\n \r\n }\r\n settingOpen(){\r\n this.setState({ isSettingOpen: !this.state.isSettingOpen });\r\n }\r\n EntityFlowtoggleOpen(){\r\n var PipelineLayer = this.props.layer.layerHandel;\r\n if(!this.state.isEntityFlowOpen){\r\n PipelineLayer.setDrawAllFlow(true);\r\n PipelineLayer.setFlowUseTexture(false);\r\n PipelineLayer.setFlowTextureMaxDensity(null, 1);\r\n PipelineLayer.setFlowColorWeight(0.5,0.5,0.5);\r\n }\r\n else{\r\n PipelineLayer.setDrawAllFlow(false);\r\n }\r\n this.setState({isEntityFlowOpen:!this.state.isEntityFlowOpen});\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const Layer = this.props.layer;\r\n const SettingType = (Layer.layerClass === \"Pipeline\")?\"large setting icon\":\"large disabled setting icon\";\r\n if(this.state.helpMode === \"PipelineHelp\" ){\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n } \r\n else if(this.state.helpMode === \"None\"){\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help')); \r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n {\r\n Layer.layerClass === \"Pipeline\"?\r\n : null\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n {\r\n (this.state.isSettingOpen&&Layer.layerClass === \"Pipeline\")?\r\n
\r\n
\r\n
\r\n
管線流向:
\r\n
\r\n
\r\n
\r\n this.EntityFlowtoggleOpen()}>\r\n \r\n
\r\n
\r\n
\r\n
: null\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nclass PipelineLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n PipelineLayer:null\r\n }; \r\n this.pipelineLayreChecked = this.pipelineLayreChecked.bind(this); \r\n }\r\n componentDidUpdate(){\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if(isChecked){\r\n window.main.OView.removeLayer(this.state.PipelineLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,PipelineLayer:null});\r\n } \r\n }\r\n }\r\n pipelineLayreChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if(!isChecked){\r\n window.main.OView.addPipelineLayer({\r\n url: window.TERRAIN_SERVER.URL,\r\n identifier: layer.ID,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate,\r\n callback: function (e,PipelineLayer) {\r\n if(e){\r\n if(layer.LOCATION!=null){\r\n var Pos = new window.Geo3DPoint(layer.LOCATION.POS.x , layer.LOCATION.POS.y , layer.LOCATION.POS.z);\r\n var V = new window.Geo3DPoint(layer.LOCATION.V.x , layer.LOCATION.V.y , layer.LOCATION.V.z);\r\n var Up = new window.Geo3DPoint(layer.LOCATION.UP.x , layer.LOCATION.UP.y , layer.LOCATION.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else{\r\n PipelineLayer.goto();\r\n }\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n window.alertify.success(\"請調整地形透視已達到更好的效果\");\r\n layerThis.props.setOpenLayer(layer,PipelineLayer); \r\n isChecked = !isChecked;\r\n layerThis.setState({isChecked:isChecked,PipelineLayer:PipelineLayer});\r\n }\r\n else if(!e){\r\n window.alertify.error(\"連結不到圖層::\"+layer.TITLE);\r\n }\r\n }\r\n }); \r\n }\r\n else{\r\n window.main.OView.removeLayer(this.state.PipelineLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE); \r\n isChecked = !isChecked; \r\n layerThis.setState({isChecked:isChecked,PipelineLayer:{}}); \r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.pipelineLayreChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {PipelineLayer,PipelineOption};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport reactCSS from 'reactcss';\r\nimport { SketchPicker } from 'react-color';\r\nimport HelpComponent from '../HelpComponent';\r\n\r\nclass BIMAttrsOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n layerHandel:{},\r\n openAttrsList:[],\r\n Attrs:{},\r\n displayColorPicker: false,\r\n color: {\r\n r: 255,\r\n g: 0,\r\n b: 0,\r\n a: 100,\r\n },\r\n hexColor:\"#F17013\",\r\n };\r\n }\r\n componentDidMount(){\r\n let layerHandel = this.props.layerHandel;\r\n let openAttrsList = this.props.openAttrsList;\r\n let isOtherEnable = this.props.isOtherEnable;\r\n let Attrs = this.props.Attrs;\r\n layerHandel.setEntityColorFunction([\"Family\"], function(id, attrs, color) {\r\n let isTrue = false;\r\n for(let i = 0 ; i < openAttrsList.length ; i++){\r\n if(attrs[0] === openAttrsList[i].Attrs){\r\n color[0] = openAttrsList[i].r;\r\n color[1] = openAttrsList[i].g;\r\n color[2] = openAttrsList[i].b;\r\n color[3] = openAttrsList[i].a;\r\n isTrue = true;\r\n return openAttrsList[i].enable;\r\n }\r\n }\r\n if(!isTrue){\r\n color[3] = 0;\r\n return isOtherEnable;\r\n }\r\n })\r\n this.setState({\r\n layerHandel:layerHandel,\r\n openAttrsList:openAttrsList,\r\n Attrs:Attrs\r\n });\r\n }\r\n handleClick = () => {\r\n this.setState({ displayColorPicker: !this.state.displayColorPicker })\r\n };\r\n \r\n handleClose = () => {\r\n this.setState({ displayColorPicker: false })\r\n };\r\n \r\n handleChange = (color) => {\r\n let layerHandel = this.state.layerHandel;\r\n let openAttrsList = this.state.openAttrsList;\r\n let isOtherEnable = this.props.isOtherEnable;\r\n let Attrs = this.state.Attrs;\r\n let onChangeAttrs = this.props.onChangeAttrs;\r\n this.setState({\r\n color: color.rgb,\r\n hexColor:color.hex\r\n });\r\n for(let i=0;i\r\n
\r\n
{attrs.Name}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n { \r\n this.state.displayColorPicker ? \r\n
\r\n
\r\n \r\n
: null \r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass ModelOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n cover : \"null\",\r\n attrsList : [],\r\n openAttrsList : [],\r\n BIMAttrsChange : {},\r\n isOtherEnable : true,\r\n helpMode : \"None\"\r\n };\r\n }\r\n componentDidMount(){\r\n let attrsList = [];\r\n let BIMAttrsList = this.props.layer.BIMAttrsList;\r\n for(let i=0;i \r\n
\r\n
\r\n
依屬性上色:
\r\n
\r\n
\r\n
\r\n \r\n
this.AddBIMAttrs()}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n {\r\n this.state.openAttrsList.map(\r\n (Attrs) => \r\n this.onChangeAttrs(openAttrsList)} \r\n DeleteBIMAttrs={(openAttrsList,Attrs)=>this.DeleteBIMAttrs(openAttrsList,Attrs)} \r\n key={Attrs.Name}\r\n />\r\n )\r\n }\r\n
\r\n
\r\n {\r\n this.state.isOtherEnable?\r\n \r\n : \r\n \r\n }\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n }\r\n else{\r\n isBIMModel =\r\n
\r\n
\r\n
\r\n
影像披覆:
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n }\r\n if(this.state.helpMode === \"ModelHelp\" ){\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'));\r\n } \r\n else if(this.state.helpMode === \"None\"){\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help')); \r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n {\r\n this.state.isSettingOpen? isBIMModel : null\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nclass ModelLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n ModelLayer:{}\r\n }; \r\n this.ModelLayerChecked = this.ModelLayerChecked.bind(this); \r\n }\r\n componentDidUpdate(){\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if(isChecked){\r\n window.main.OView.removeLayer(this.state.ModelLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,ModelLayer:{}});\r\n } \r\n }\r\n }\r\n ModelLayerChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if(!isChecked){\r\n window.main.OView.addModelLayer({\r\n url: window.TERRAIN_SERVER.URL,\r\n identifier: layer.ID,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate,\r\n callback: function (e,ModelLayer) {\r\n if(e){\r\n ModelLayer.goto();\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,ModelLayer); \r\n isChecked = !isChecked;\r\n layerThis.setState({isChecked:isChecked,ModelLayer:ModelLayer});\r\n }\r\n else if(!e){\r\n window.alertify.error(\"連結不到圖層::\"+layer.TITLE);\r\n }\r\n }\r\n }); \r\n }\r\n else{\r\n window.main.OView.removeLayer(this.state.ModelLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE); \r\n isChecked = !isChecked; \r\n layerThis.setState({isChecked:isChecked,ModelLayer:{}}); \r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.ModelLayerChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {ModelLayer,ModelOption};","import React from 'react';\r\n\r\nclass ProjectorOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n cover : \"null\",\r\n helpMode : \"None\"\r\n };\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n var Pos = new window.Geo3DPoint(this.props.layer.VideoPOS.x , this.props.layer.VideoPOS.y , this.props.layer.VideoPOS.z);\r\n var V = new window.Geo3DPoint(this.props.layer.VideoV.x , this.props.layer.VideoV.y , this.props.layer.VideoV.z);\r\n var Up = new window.Geo3DPoint(this.props.layer.VideoUP.x , this.props.layer.VideoUP.y , this.props.layer.VideoUP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n coverChange(event){\r\n var cover = event.target.value;\r\n var ProjectorLayer = this.props.layer.layerHandel;\r\n if(cover === \"null\"){\r\n ProjectorLayer.setOverlayName();\r\n window.main.OView.updateScreen();\r\n } \r\n else{\r\n ProjectorLayer.setOverlayName(cover);\r\n window.main.OView.updateScreen();\r\n } \r\n this.setState({cover : cover});\r\n }\r\n render(){\r\n const Layer = this.props.layer;\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nclass ProjectorLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n ProjectorLayer:{}\r\n }; \r\n this.ProjectorLayerChecked = this.ProjectorLayerChecked.bind(this); \r\n }\r\n componentDidUpdate(){\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if(isChecked){\r\n window.main.OView.removeLayer(this.state.ProjectorLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,ProjectorLayer:{}});\r\n } \r\n }\r\n }\r\n ProjectorLayerChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if(!isChecked){\r\n var _Cust = window.main.OView.addCustomLayer({\r\n layername : layer.TITLE\r\n });\r\n var param = {};\r\n param.ImageType = window.ov.PROJECTOR_IMAGE.WIDE;\r\n param.SrcType = window.ov.PROJECTOR_SRC.IMAGE;\r\n param.VideoPath = layer.VideoPath;\r\n param.Pos = layer.VideoPOS;\r\n param.V = layer.VideoV;\r\n param.Up = layer.VideoUP;\r\n param.HFov = layer.HFov?layer.HFov:65;\r\n param.VFov = layer.VFov?layer.VFov:80;\r\n param.ImgW = layer.ImgW?layer.ImgW:5472; \r\n param.ImgH = layer.ImgH?layer.ImgH:3648; \r\n param.Near = layer.Near?layer.Near:5;\r\n param.Far = layer.Far?layer.Far:1000; \r\n _Cust.addProjectorEntity(param);\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,_Cust); \r\n isChecked = !isChecked; \r\n var Pos = new window.Geo3DPoint(layer.VideoPOS.x , layer.VideoPOS.y , layer.VideoPOS.z);\r\n var V = new window.Geo3DPoint(layer.VideoV.x , layer.VideoV.y , layer.VideoV.z);\r\n var Up = new window.Geo3DPoint(layer.VideoUP.x , layer.VideoPOS.y , layer.VideoUP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n layerThis.setState({isChecked:isChecked,ProjectorLayer:_Cust}); \r\n }\r\n else{\r\n window.main.OView.removeLayer(this.state.ProjectorLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE); \r\n isChecked = !isChecked; \r\n layerThis.setState({isChecked:isChecked,ProjectorLayer:{}}); \r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.ProjectorLayerChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {ProjectorLayer,ProjectorOption};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\n\r\nclass I3SOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n cover : \"null\",\r\n helpMode : \"None\"\r\n };\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n if(this.props.layer.layerLocation!=null){\r\n var Pos = new window.Geo3DPoint(this.props.layer.layerLocation.POS.x , this.props.layer.layerLocation.POS.y , this.props.layer.layerLocation.POS.z);\r\n var V = new window.Geo3DPoint(this.props.layer.layerLocation.V.x , this.props.layer.layerLocation.V.y , this.props.layer.layerLocation.V.z);\r\n var Up = new window.Geo3DPoint(this.props.layer.layerLocation.UP.x , this.props.layer.layerLocation.UP.y , this.props.layer.layerLocation.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else{\r\n var I3SLayer = this.props.layer.layerHandel;\r\n I3SLayer.goto();\r\n }\r\n }\r\n settingOpen(){\r\n this.setState({ isSettingOpen: !this.state.isSettingOpen });\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const Layer = this.props.layer;\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nclass I3SLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n I3SLayer:{}\r\n }; \r\n this.I3SLayerChecked = this.I3SLayerChecked.bind(this); \r\n }\r\n componentDidUpdate(){\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if(isChecked){\r\n window.main.OView.removeLayer(this.state.I3SLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,I3SLayer:{}});\r\n } \r\n }\r\n }\r\n I3SLayerChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if(!isChecked){\r\n window.main.OView.addI3SLayer({\r\n url: layer.URL,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate,\r\n callback: function (e,I3SLayer) {\r\n if(e){\r\n if(layer.LOCATION!=null){\r\n var Pos = new window.Geo3DPoint(layer.LOCATION.POS.x , layer.LOCATION.POS.y , layer.LOCATION.POS.z);\r\n var V = new window.Geo3DPoint(layer.LOCATION.V.x , layer.LOCATION.V.y , layer.LOCATION.V.z);\r\n var Up = new window.Geo3DPoint(layer.LOCATION.UP.x , layer.LOCATION.UP.y , layer.LOCATION.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else{\r\n I3SLayer.goto();\r\n }\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,I3SLayer); \r\n isChecked = !isChecked;\r\n layerThis.setState({isChecked:isChecked,I3SLayer:I3SLayer});\r\n }\r\n else if(!e){\r\n window.alertify.error(\"連結不到圖層::\"+layer.TITLE);\r\n }\r\n }\r\n }); \r\n }\r\n else{\r\n window.main.OView.removeLayer(this.state.I3SLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE); \r\n isChecked = !isChecked; \r\n layerThis.setState({isChecked:isChecked,I3SLayer:{}}); \r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.I3SLayerChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {I3SLayer ,I3SOption};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\n\r\nclass ThreeDTilesOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n isSettingOpen:false,\r\n cover : \"null\",\r\n helpMode : \"None\"\r\n };\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n if(this.props.layer.layerLocation!=null){\r\n var Pos = new window.Geo3DPoint(this.props.layer.layerLocation.POS.x , this.props.layer.layerLocation.POS.y , this.props.layer.layerLocation.POS.z);\r\n var V = new window.Geo3DPoint(this.props.layer.layerLocation.V.x , this.props.layer.layerLocation.V.y , this.props.layer.layerLocation.V.z);\r\n var Up = new window.Geo3DPoint(this.props.layer.layerLocation.UP.x , this.props.layer.layerLocation.UP.y , this.props.layer.layerLocation.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else{\r\n var ThreeDTilesLayer = this.props.layer.layerHandel;\r\n ThreeDTilesLayer.goto();\r\n }\r\n }\r\n settingOpen(){\r\n this.setState({ isSettingOpen: !this.state.isSettingOpen });\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode:mode})\r\n }\r\n render(){\r\n const Layer = this.props.layer;\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}\r\n
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n
this.settingOpen()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"圖層設定\">\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nclass ThreeDTilesLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n ThreeDTilesLayer:{}\r\n }; \r\n this.ThreeDTilesLayerChecked = this.ThreeDTilesLayerChecked.bind(this); \r\n }\r\n componentDidUpdate(){\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if(isChecked){\r\n window.main.OView.removeLayer(this.state.ThreeDTilesLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,ThreeDTilesLayer:{}});\r\n } \r\n }\r\n }\r\n ThreeDTilesLayerChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n const layerThis = this; \r\n if(!isChecked){\r\n window.main.OView.add3DTilesLayer({\r\n url: layer.URL,\r\n urlTemplate: \"{URL}\",\r\n callback: function (e,ThreeDTilesLayer) {\r\n if(e){\r\n if(layer.LOCATION!=null){\r\n var Pos = new window.Geo3DPoint(layer.LOCATION.POS.x , layer.LOCATION.POS.y , layer.LOCATION.POS.z);\r\n var V = new window.Geo3DPoint(layer.LOCATION.V.x , layer.LOCATION.V.y , layer.LOCATION.V.z);\r\n var Up = new window.Geo3DPoint(layer.LOCATION.UP.x , layer.LOCATION.UP.y , layer.LOCATION.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else{\r\n ThreeDTilesLayer.goto();\r\n }\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n layerThis.props.setOpenLayer(layer,ThreeDTilesLayer); \r\n isChecked = !isChecked;\r\n layerThis.setState({isChecked:isChecked,ThreeDTilesLayer:ThreeDTilesLayer});\r\n }\r\n else if(!e){\r\n window.alertify.error(\"連結不到圖層::\"+layer.TITLE);\r\n }\r\n }\r\n }); \r\n }\r\n else{\r\n window.main.OView.removeLayer(this.state.ThreeDTilesLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE); \r\n isChecked = !isChecked; \r\n layerThis.setState({isChecked:isChecked,ThreeDTilesLayer:{}}); \r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.ThreeDTilesLayerChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {ThreeDTilesLayer ,ThreeDTilesOption};","import React from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport HelpComponent from '../HelpComponent';\r\nimport { format } from \"date-fns\";\r\n\r\nclass CustomOption extends React.Component{\r\n constructor(){\r\n super();\r\n this.state={\r\n opacity : \"\",\r\n };\r\n }\r\n componentWillMount(){\r\n const layer = this.props.layer;\r\n var CustomLayer = this.props.layer.layerHandel;\r\n this.setState({opacity: 100});\r\n }\r\n sidebarChange(event){\r\n const customLayer = this.props.layer.layerHandel;\r\n customLayer.entities.forEach(function(entity) {\r\n entity.update({opacity: event.target.value/100});\r\n });\r\n const defaultOpacity = customLayer._layer._Entities[0]._Opacity * 100;\r\n this.setState({opacity:defaultOpacity});\r\n }\r\n deleteLayerList(layer){\r\n const Layer = {\r\n GROUP:layer.group,\r\n TITLE:layer.layerName,\r\n TYPE:layer.layerType\r\n };\r\n this.props.deleteLayerList(Layer);\r\n }\r\n gotoLayer(){\r\n if(this.props.layer.layerLocation!=null){\r\n var Pos = new window.Geo3DPoint(this.props.layer.layerLocation.POS.x , this.props.layer.layerLocation.POS.y , this.props.layer.layerLocation.POS.z);\r\n var V = new window.Geo3DPoint(this.props.layer.layerLocation.V.x , this.props.layer.layerLocation.V.y , this.props.layer.layerLocation.V.z);\r\n var Up = new window.Geo3DPoint(this.props.layer.layerLocation.UP.x , this.props.layer.layerLocation.UP.y , this.props.layer.layerLocation.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n }\r\n else{\r\n var CustomLayer = this.props.layer.layerHandel;\r\n CustomLayer.goto();\r\n }\r\n }\r\n render(){\r\n const LayerList_2D = this.props.LayerList_2D;\r\n const Layer = this.props.layer;\r\n const siderRangeCSS ={\r\n background: \"linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%)\"\r\n };\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{Layer.layerName}
\r\n
\r\n
\r\n
\r\n
this.deleteLayerList(Layer)} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"關閉圖層\">\r\n \r\n
\r\n
this.gotoLayer()} data-tooltip-position=\"top center\" data-tooltip-type=\"label\" data-tooltip=\"前往圖層位置\">\r\n \r\n
\r\n \r\n this.sidebarChange(e)} style={siderRangeCSS}>\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass CustomLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n isChecked:false,\r\n customLayer:{},\r\n geojsonData: {},\r\n dtData: {},\r\n }; \r\n this.customLayerChecked = this.customLayerChecked.bind(this); \r\n }\r\n componentDidUpdate(prevProps, prevState, snapshot){\r\n if (prevState.customLayer !== this.state.customLayer && this.state.isChecked) {\r\n this.getDtData();\r\n }\r\n if (prevProps.layer.TITLE === this.props.layer.TITLE && prevProps.currentTime.length != 0) {\r\n if (prevState.isChecked && format(prevProps.currentTime[0], 'yyyyMMddHH') !== format(this.props.currentTime[0], 'yyyyMMddHH')) {\r\n if (this.state.isChecked) {\r\n this.drawEntity();\r\n }\r\n }\r\n }\r\n if(this.props.deleteList.layerName === this.props.layer.TITLE){\r\n let isChecked = this.state.isChecked;\r\n if(isChecked){\r\n window.main.OView.removeLayer(this.state.customLayer);\r\n window.alertify.error(\"已關閉圖層:\"+this.props.layer.TITLE);\r\n isChecked = !isChecked;\r\n this.setState({isChecked:isChecked,customLayer:{}});\r\n } \r\n }\r\n }\r\n getColor(val){\r\n let legend = this.props.layer.LEGEND;\r\n for (var i = 0; i < legend[\"VALUE\"].length; i ++) {\r\n if (val == null && legend[\"VALUE\"][i] == \"無資料\") {\r\n return legend[\"COLOR\"][i];\r\n } else if (val < legend[\"VALUE\"][i] && i !== 0) {\r\n return legend[\"COLOR\"][i - 1];\r\n } else if (legend[\"VALUE\"][i] < val && i+1 == legend[\"VALUE\"].length) {\r\n return legend[\"COLOR\"][i];\r\n }\r\n }\r\n return legend[\"COLOR\"][0];\r\n }\r\n drawEntity(){\r\n let layer = this.props.layer;\r\n let layerHandel = this.state.customLayer;\r\n let data = this.state.dtData;\r\n let dt = format(layer.TIMELINE.SELECTEDINTERVAL[0],'yyyyMMddHH');\r\n if (this.props.currentTime.length != 0)\r\n dt = format(this.props.currentTime[0],'yyyyMMddHH');\r\n var opacity = 1;\r\n if (layerHandel.entities.length > 0) {\r\n opacity = layerHandel.entities[0]._entity._Opacity;\r\n }\r\n layerHandel.removeAllEntity();\r\n const layerThis = this; \r\n switch (layer.GEOMETRY) {\r\n case \"polygon\":\r\n layerThis.state.geojsonData.features.forEach(function (f) {\r\n let id = f.properties[\"grid_ID\"];\r\n let val = null;\r\n if (data[dt] != undefined)\r\n val = data[dt][id]\r\n let polygon = new window.GeoPolygonSet();\r\n polygon.FromGeoJSON(f.geometry);\r\n layerHandel.addPolygonPrismEntity({\r\n geo: polygon,\r\n color: layerThis.getColor(val),\r\n opacity: opacity,\r\n drawBorder: true,\r\n borderColor: \"#FFFFFF\",\r\n epsg: 4326\r\n }).setTooltip(\"grid_ID:\" + f.properties[\"grid_ID\"] + \"
噪音值:\" + ((val == null) ? \"無資料\" : val));\r\n });\r\n break;\r\n case \"polyline\":\r\n let type = (layer.ID == \"taipei_vd_avgspeed\") ? \"平均車速\" : \"總車流量\";\r\n layerThis.state.geojsonData.features.forEach(function (f) {\r\n let id = f.properties[\"VD編號\"];\r\n let val = null;\r\n if (data[dt] != undefined)\r\n val = data[dt][id]\r\n let polyline = new window.GeoPolyline();\r\n polyline.FromGeoJSON(f.geometry);\r\n if (polyline.Buffer.length > 1) {\r\n layerHandel.addGroundPolylineEntity({\r\n geo: polyline,\r\n color: layerThis.getColor(val),\r\n size: 4,\r\n opacity: opacity,\r\n epsg: 4326\r\n }).setTooltip(f.properties[\"道路\"]+\"
\"+f.properties[\"大街廓\"]+\"
\"+type+\":\"+ ((val == null) ? \"無資料\" : val));\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n divTime(time){\r\n let time1 = Date.parse(time[0]);\r\n let time2 = Date.parse(time[1]);\r\n return Math.abs(parseInt((time2 - time1) / 1000 / 3600));\r\n }\r\n getDtData(){\r\n let layer = this.props.layer;\r\n let layerHandel = this.state.customLayer;\r\n let dt_s = format(layer.TIMELINE.TIMElINEINTERVAL[0],'yyyyMMddHH');\r\n let range = this.divTime(layer.TIMELINE.TIMElINEINTERVAL);\r\n const d = {\r\n type: layer.ID,\r\n dt_s: dt_s,\r\n range: range\r\n };\r\n const formData = Object.keys(d).map(function (keyName) {\r\n return encodeURIComponent(keyName) + '=' + encodeURIComponent(d[keyName])\r\n }).join('&');\r\n if (!this.state.dtData.hasOwnProperty(dt_s)) {\r\n if (layer.FETCHURL !== undefined) {\r\n fetch(layer.FETCHURL, {\r\n method: \"POST\",\r\n body: formData,\r\n headers: new Headers({\r\n \"Content-type\": \"application/x-www-form-urlencoded\"\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(data => {\r\n this.setState({dtData: data});\r\n this.drawEntity();\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n console.log(\"取得資料失敗\");\r\n })\r\n }\r\n } else {\r\n this.drawEntity();\r\n }\r\n }\r\n customLayerChecked(layer){\r\n let isChecked = this.state.isChecked;\r\n let geojsonData = {};\r\n const layerThis = this; \r\n if(!isChecked){\r\n window.main.OView.drawTerrainSetting = {noElevation: true};\r\n window.main.OView.addCustomLayer({\r\n layername: layer.ID,\r\n callback: function (success, customLayer) {\r\n if (success) {\r\n if (!layerThis.state.geojsonData.hasOwnProperty(\"features\")) {\r\n fetch(layer.GEOJSONURL, {\r\n method: \"GET\",\r\n headers: new Headers({\r\n 'Content-Type': 'application/json'\r\n })\r\n })\r\n .then(res => res.json())\r\n .then(data => {\r\n layerThis.setState({geojsonData: data});\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n console.log(\"無法取得geojson\");\r\n })\r\n }\r\n if (layer.LOCATION!=null) {\r\n var Pos = new window.Geo3DPoint(layer.LOCATION.POS.x , layer.LOCATION.POS.y , layer.LOCATION.POS.z);\r\n var V = new window.Geo3DPoint(layer.LOCATION.V.x , layer.LOCATION.V.y , layer.LOCATION.V.z);\r\n var Up = new window.Geo3DPoint(layer.LOCATION.UP.x , layer.LOCATION.UP.y , layer.LOCATION.UP.z);\r\n var Camera = new window.ov.Camera(Pos,V,Up);\r\n window.main.OView.gotoCamera(Camera, true);\r\n } else {\r\n customLayer.goto();\r\n }\r\n layerThis.props.setOpenLayer(layer,customLayer); \r\n isChecked = !isChecked;\r\n layerThis.setState({ isChecked: isChecked, customLayer: customLayer });\r\n window.alertify.success(\"已開啟圖層:\"+layer.TITLE);\r\n if (layer.LEGEND !== undefined)\r\n layerThis.props.setLegendBoxContent(layer.LEGEND);\r\n if (layer.TIMELINE !== undefined)\r\n layerThis.props.setTimeLineContent(layer.TIMELINE);\r\n } else {\r\n window.alertify.error(\"連結不到圖層::\" + layer.TITLE);\r\n }\r\n }\r\n }); \r\n } else {\r\n window.main.OView.removeLayer(this.state.customLayer);\r\n layerThis.props.deleteLayer(layer);\r\n window.alertify.error(\"已關閉圖層:\"+layer.TITLE); \r\n isChecked = !isChecked;\r\n layerThis.setState({isChecked:isChecked,customLayer:{}});\r\n } \r\n } \r\n render(){\r\n const layer = this.props.layer;\r\n return(\r\n
\r\n this.customLayerChecked(layer)}>\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {CustomLayer, CustomOption};","/* eslint-disable array-callback-return */\r\nimport React from 'react';\r\nimport { LidarLayer } from './LidarLayer';\r\nimport { ModelSetLayer } from './ModelSetLayer';\r\nimport { Acute3DLayer } from './Acute3DLayer';\r\nimport { VisualizedDataGridOverlay } from './VisualizedDataGridOverlay';\r\nimport { VisualizedDataGridOverlay_DataCube } from './VisualizedDataGridOverlay_DataCube';\r\nimport { MoveModelLayer } from './MoveModelLayer';\r\nimport { PipelineLayer } from './PipelineLayer';\r\nimport { ModelLayer } from './ModelLayer';\r\nimport { ProjectorLayer } from './ProjectorLayer';\r\nimport { I3SLayer } from './I3SLayer';\r\nimport { ThreeDTilesLayer } from './3DTilesLayer';\r\nimport { CustomLayer } from './CustomLayer';\r\n\r\nclass Layer3DGroup extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n List: [],\r\n URL: window.TERRAIN_SERVER.URL,\r\n URLTemplate: window.TERRAIN_SERVER.URLTemplate,\r\n Token: \"\"\r\n };\r\n }\r\n componentDidMount(){\r\n this.setState({\r\n List: this.props.List,\r\n URL: this.props.URL,\r\n URLTemplate: this.props.URLTemplate,\r\n Token: this.props.Token\r\n });\r\n }\r\n render(){\r\n const List = this.state.List;\r\n const URL = this.state.URL;\r\n const URLTemplate = this.state.URLTemplate;\r\n const Token = this.state.Token;\r\n const deleteList = this.props.deleteList;\r\n return( \r\n
\r\n {\r\n List.map(\r\n (layer,index)=>\r\n {\r\n switch(layer.TYPE){\r\n case \"Lidar\" :\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList}/>;\r\n case \"ModelSet\":\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList} setinfoBox={(attr)=>this.props.setinfoBox(attr)} setinfoBoxOpen = {this.props.setinfoBoxOpen} setLegendBoxSwitch={this.props.setLegendBoxSwitch} setLegendBoxContent={this.props.setLegendBoxContent} setTimeLineContent = {this.props.setTimeLineContent} currentTime={this.props.currentTime}/>;\r\n case \"Acute3D\":\r\n return this.props.setOpenLayer(layer, layerHandel)} deleteLayer={(layer) => this.props.deleteLayer(layer)} deleteList={deleteList} URL={URL} URLTemplate={URLTemplate} Token={Token} />;\r\n case \"VisualizedDataGrid\":\r\n return this.props.setOpenLayer(layer, layerHandel)} deleteLayer={(layer) => this.props.deleteLayer(layer)} deleteList={deleteList} />;\r\n case \"VisualizedDataGrid_DataCube\":\r\n return this.props.setOpenLayer(layer, layerHandel)} deleteLayer={(layer) => this.props.deleteLayer(layer)} deleteList={deleteList} />;\r\n case \"MoveModel\":\r\n return this.props.setOpenLayer(layer, layerHandel)} deleteLayer={(layer) => this.props.deleteLayer(layer)} deleteList={deleteList} />;\r\n case \"Pipeline\":\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList}/>;\r\n case \"Model\":\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList}/>;\r\n case \"Projector\":\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList}/>;\r\n case \"I3S\":\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList}/>;\r\n case \"3DTiles\":\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList}/>;\r\n case \"Custom\":\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList} setinfoBox={(attr)=>this.props.setinfoBox(attr)} setLegendBoxSwitch={this.props.setLegendBoxSwitch} setLegendBoxContent={this.props.setLegendBoxContent} setTimeLineContent = {this.props.setTimeLineContent} currentTime={this.props.currentTime}/>;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n )\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Layer3DGroup;","/* eslint-disable array-callback-return */\r\nimport React from 'react';\r\nimport { ModelSetLayer } from './ModelSetLayer';\r\nimport { CustomLayer } from './CustomLayer';\r\n\r\nclass NoiseLayer extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n List:[]\r\n };\r\n }\r\n componentDidMount(){\r\n let List = window.LAYER_GROUP_NOISEMAP.LAYER;\r\n this.setState({List:List});\r\n }\r\n render(){\r\n const List = this.state.List;\r\n const deleteList = this.props.deleteList;\r\n return( \r\n
\r\n {\r\n List.map(\r\n (layer,index)=>\r\n {\r\n switch(layer.TYPE){\r\n case \"ModelSet\":\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList} setinfoBox={(attr)=>this.props.setinfoBox(attr)} setinfoBoxOpen = {this.props.setinfoBoxOpen} setLegendBoxSwitch={this.props.setLegendBoxSwitch} setLegendBoxContent={this.props.setLegendBoxContent} setTimeLineContent = {this.props.setTimeLineContent} currentTime={this.props.currentTime}/>;\r\n case \"Custom\":\r\n return this.props.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.props.deleteLayer(layer)} deleteList={deleteList} setinfoBox={(attr)=>this.props.setinfoBox(attr)} setLegendBoxSwitch={this.props.setLegendBoxSwitch} setLegendBoxContent={this.props.setLegendBoxContent} setTimeLineContent = {this.props.setTimeLineContent} currentTime={this.props.currentTime}/>;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n )\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default NoiseLayer;","import React from 'react';\r\n\r\nclass TerrainLayer extends React.Component{\r\n constructor() {\r\n super();\r\n this.terrainLayerChecked = this.terrainLayerChecked.bind(this);\r\n }\r\n terrainLayerChecked(layers){\r\n window.main.OView.reloadTerrain(layers.ID);\r\n }\r\n render(){\r\n return(\r\n
\r\n {\r\n window.TERRAIN_LAYERS.map(\r\n (layers,index)=>\r\n index === 0 ?\r\n
\r\n this.terrainLayerChecked(layers)}>\r\n \r\n
\r\n :\r\n
\r\n this.terrainLayerChecked(layers)}>\r\n \r\n
\r\n )\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default TerrainLayer;","import React from 'react';\r\n\r\nclass ParticleList extends React.Component {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.state = {\r\n\t\t\tLightningModule: null,\r\n\t\t\ttimeline: null,\r\n\t\t\ttimelinePlayer: null\r\n\t\t};\r\n this.showLightning = this.showLightning.bind(this);\r\n\t}\r\n\tshowLightning() {\r\n\t\tlet LightningModule = this.state.LightningModule;\r\n\t\tlet timeline = this.state.timeline;\r\n\t\tlet timelinePlayer = this.state.timelinePlayer;\r\n\t\tif (LightningModule === null) {\r\n\t\t\tlet terrainview = window.main.OView;\r\n\t\t\tlet initialPos = new window.GeoPoint(120.19522435571207, 22.77798280649094, 1366.059043463517);\r\n\t\t\tlet initialV = new window.Geo3DPoint(0.4576038108900927, 0.8890126321749483, -0.015919964415307384);\r\n\t\t\tlet initialUp = new window.Geo3DPoint(0.007286201300968689, 0.014155312601379129, 0.9999045715165764);\r\n\t\t\tlet initialCamera = new window.ov.Camera(initialPos, initialV, initialUp);\r\n\t\t\tterrainview.gotoCamera(initialCamera, false);\r\n\t\t\t\r\n\t\t\tLightningModule = terrainview.getModule(\"lightning\");\r\n\t\t\ttimeline = new window.ov.Widget.Timeline({\r\n\t\t\t\tview: terrainview,\r\n\t\t\t\tstyle: { left: \"160px\", width: \"77%\", bottom: \"30px\" },\r\n\t\t\t\tstartTime: new Date().getTime(),\r\n\t\t\t\tstopTime: new Date().getTime() + 1.5 * 1000.0,\r\n\t\t\t\tisRepeat: true\r\n\t\t\t});\r\n\t\t\ttimelinePlayer = new window.ov.Widget.TimelinePlayer({\r\n\t\t\t\tview: terrainview,\r\n\t\t\t\ttimeline: timeline,\r\n\t\t\t\tplaySpeed: 1.0,\r\n\t\t\t\tstyle: {left: \"100px\", bottom: \"30px\"}\r\n\t\t\t});\r\n\t\t\tlet LightningStartTime = new Date().getTime() + 0.25 * 1000.0;\r\n\t\t\tterrainview.addTimeEvent({\r\n\t\t\t\tstart: LightningStartTime,\r\n\t\t\t\tend: LightningStartTime + 1.0 * 1000.0,\r\n\t\t\t\tonEnter: function () {\r\n\t\t\t\t\tLightningModule.addLightningEntity({\r\n\t\t\t\t\t\tposition: new window.Geo3DPoint(120.22900665201502, 22.845749565179712, 5000.0),\r\n\t\t\t\t\t\tendHeight: 0.0,\r\n\t\t\t\t\t\tcolor: new window.ov.Color(176, 255, 255),\r\n\t\t\t\t\t\tminWidth: 10,\r\n\t\t\t\t\t\tmaxWidth: 10,\r\n\t\t\t\t\t\tsplitRate: 0.7,\r\n\t\t\t\t\t\tcompleteShowTime: 0.2,\r\n\t\t\t\t\t\tcompleteVanishTime: 0.5\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\tonPlay: function(time){\r\n\t\t\t\t\tLightningModule.setAllEntityTime((time - LightningStartTime) / 1000.0);\r\n\t\t\t\t},\r\n\t\t\t\tonLeave: function(){\r\n\t\t\t\t\tLightningModule.removeAllLightningEntity();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\ttimeline.addTimeBlock({\r\n\t\t\t\tstart: LightningStartTime,\r\n\t\t\t\tend: LightningStartTime + 1.0 * 1000.0,\r\n\t\t\t\tcolor: \"red\"\r\n\t\t\t});\r\n\t\t\tthis.setState({LightningModule, timeline, timelinePlayer});\r\n\t\t} else {\r\n\t\t\tLightningModule.removeAllLightningEntity();\r\n\t\t\ttimeline.remove();\r\n\t\t\ttimelinePlayer.remove();\r\n\t\t\tthis.setState({LightningModule: null, timeline: null, timelinePlayer: null});\r\n\t\t}\r\n\t}\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t this.props.setCloudModuleOpen()} style={{margin: \"5px\", borderLeft: \"1px solid #e9e9e9\"}}>\r\n\t\t\t\t\t
雲模組
\r\n\t\t\t\t
\r\n\t\t\t\t this.showLightning()} style={{margin: \"5px\", borderLeft: \"1px solid #e9e9e9\"}}>\r\n\t\t\t\t\t
閃電模組
\r\n\t\t\t\t
\r\n\t\t\t\t this.props.setParticleRainOpen()} style={{margin: \"5px\", borderLeft: \"1px solid #e9e9e9\"}}>\r\n\t\t\t\t\t
下雨效果
\r\n\t\t\t\t
\r\n\t\t\t\t this.props.setParticleExplosionOpen()} style={{margin: \"5px\", borderLeft: \"1px solid #e9e9e9\"}}>\r\n\t\t\t\t\t
爆炸
\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nclass ParticleRain extends React.Component {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.state = {\r\n\t\t\tParticleModule: null,\r\n\t\t\trainEntity: null,\r\n\t\t\twindSpeedX: 0,\r\n\t\t\twindSpeedY: 0,\r\n\t\t\tlevel: window.ov.RAIN.LOW\r\n\t\t};\r\n\t\tthis.closeCard = this.closeCard.bind(this);\r\n\t\tthis.createRain = this.createRain.bind(this);\r\n\t\tthis.clearRain = this.clearRain.bind(this);\r\n\t}\r\n\tcomponentDidUpdate() {\r\n\t\tconst {ParticleModule, rainEntity} = this.state;\r\n\t\tif (this.props.isOpen) {\r\n\t\t\tif (rainEntity == null) {\r\n\t\t\t\tthis.createRain();\r\n\t\t\t} else {\r\n\t\t\t\tthis.updateRain();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n componentWillUnmount() {\r\n this.clearRain();\r\n }\r\n\tcloseCard() {\r\n this.clearRain();\r\n\t\tthis.props.setParticleRainOpen();\r\n\t}\r\n\twindSpeedXChange(e) {\r\n\t\tthis.setState({windSpeedX: e.target.valueAsNumber});\r\n\t}\r\n\twindSpeedYChange(e) {\r\n\t\tthis.setState({windSpeedY: e.target.valueAsNumber});\r\n\t}\r\n\tlevelChange(e) {\r\n\t\tconst {ParticleModule, rainEntity, windSpeedX, windSpeedY} = this.state;\r\n\t\tParticleModule.removeParticleEntity(rainEntity);\r\n\t\tlet _rainEntity = ParticleModule.addRainEntity({\r\n\t\t\twindSpeed: new window.GeoPoint(parseInt(windSpeedX), parseInt(windSpeedY)),\r\n\t\t\tlevel: parseInt(e.target.value),\r\n\t\t});\r\n\t\tthis.setState({rainEntity: _rainEntity, level: e.target.value});\r\n\t}\r\n\tcreateRain() {\r\n\t\tconst {ParticleModule, rainEntity, windSpeedX, windSpeedY, level} = this.state;\r\n\t\tlet _ParticleModule = null;\r\n\t\tlet _rainEntity = null;\r\n\t\tif (window.main !== null) {\r\n\t\t\tif (ParticleModule === null) {\r\n\t\t\t\t_ParticleModule = window.main.OView.getModule(\"particle\");\r\n\t\t\t\tthis.setState({ParticleModule: _ParticleModule});\r\n\t\t\t} else {\r\n\t\t\t\t_ParticleModule = ParticleModule;\r\n\t\t\t}\r\n\t\t\tif (rainEntity === null) {\r\n\t\t\t\t_rainEntity = _ParticleModule.addRainEntity({\r\n\t\t\t\t\twindSpeed: new window.GeoPoint(parseInt(windSpeedX), parseInt(windSpeedY)),\r\n\t\t\t\t\tlevel: parseInt(level),\r\n\t\t\t\t});\r\n\t\t\t\tthis.setState({rainEntity: _rainEntity});\r\n\t\t\t\tlet initialPos = new window.GeoPoint(120.19522435571207, 22.77798280649094, 1366.059043463517);\r\n\t\t\t\tlet initialV = new window.Geo3DPoint(0.4576038108900927, 0.8890126321749483, -0.015919964415307384);\r\n\t\t\t\tlet initialUp = new window.Geo3DPoint(0.007286201300968689, 0.014155312601379129, 0.9999045715165764);\r\n\t\t\t\tlet initialCamera = new window.ov.Camera(initialPos, initialV, initialUp);\r\n\t\t\t\twindow.main.OView.gotoCamera(initialCamera, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tupdateRain() {\r\n\t\tconst {ParticleModule, rainEntity, windSpeedX, windSpeedY, level} = this.state;\r\n\t\tlet ov = window.ov;\r\n\t\tif (rainEntity != null) {\r\n\t\t\trainEntity.updateGenerator({\r\n\t\t\t\tparticleVelocity: new window.Geo3DPoint(parseInt(windSpeedX), parseInt(windSpeedY), (level == ov.RAIN.HIGH) ? -500 : (level == ov.RAIN.MEDIUM) ? -250 : -100)\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.createRain();\r\n\t\t}\r\n\t}\r\n\tclearRain () {\r\n\t\tconst {ParticleModule, rainEntity} = this.state;\r\n\t\tif (ParticleModule !== null) {\r\n\t\t\tParticleModule.removeParticleEntity(rainEntity);\r\n\t\t\tif (rainEntity !== null) this.setState({rainEntity: null});\r\n\t\t}\r\n\t}\r\n\trender() {\r\n\t\tconst isOpen = this.props.isOpen;\r\n\t\tconst cardStyle = {\r\n\t\t\tzIndex: \"100\",\r\n\t\t\ttransform: isOpen ? 'translate3d(0, 0, 0)' : 'translate3d(120%, 0, 0)',\r\n\t\t\tposition: \"fixed\",\r\n\t\t\ttop: \"3px\",\r\n\t\t\tright: \"10px\",\r\n\t\t\tmarginTop: \"5px\",\r\n\t\t\twidth: \"300px\"\r\n\t\t};\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t下雨效果\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t設定下方工具以調整效果\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t風速(m/s):X\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tthis.windSpeedXChange(e)}>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t 風速(m/s):Y\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tthis.windSpeedYChange(e)}>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t 雨勢\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\tthis.levelChange(e)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\tthis.levelChange(e)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\tthis.levelChange(e)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n\r\nclass ParticleExplosion extends React.Component {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.state = {\r\n\t\t\tParticleModule: null,\r\n\t\t\texplosionEntity: null,\r\n\t\t\tSize: 10,\r\n\t\t\tPeriod: 1,\r\n\t\t\trotatePerSec: 0,\r\n\t\t\tweight: [1, 1, 1]\r\n\t\t};\r\n\t\tthis.createExplosion = this.createExplosion.bind(this);\r\n\t\tthis.closeCard = this.closeCard.bind(this);\r\n\t\tthis.clearExplosion = this.clearExplosion.bind(this);\r\n\t}\r\n\tcomponentDidUpdate() {\r\n\t\tif (this.props.isOpen) {\r\n\t\t\tif (this.state.ParticleModule == null || this.state.explosionEntity == null) {\r\n\t\t\t\tthis.createExplosion();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tcreateExplosion() {\r\n\t\tconst {ParticleModule, explosionEntity, Size, Period, rotatePerSec, weight} = this.state;\r\n\t\tlet _ParticleModule = null;\r\n\t\tlet _explosionEntity = null;\r\n\t\tif (window.main !== null) {\r\n\t\t\tif (ParticleModule === null) {\r\n\t\t\t\t_ParticleModule = window.main.OView.getModule(\"particle\");\r\n\t\t\t\tthis.setState({ParticleModule: _ParticleModule});\r\n\t\t\t} else {\r\n\t\t\t\t_ParticleModule = ParticleModule;\r\n\t\t\t}\r\n\t\t\tif (explosionEntity === null) {\r\n\t\t\t\t_explosionEntity = _ParticleModule.addExplosionEntity({\r\n\t\t\t\t\tposition: new window.Geo3DPoint(120.254343, 22.842091, 20),\r\n\t\t\t\t\tsize: Size,\r\n\t\t\t\t\tgeneratePeriod: Period,\r\n\t\t\t\t\trotatePerSecond: rotatePerSec,\r\n\t\t\t\t\trgbWeight: weight\r\n\t\t\t\t});\r\n\t\t\t\tthis.setState({explosionEntity: _explosionEntity});\r\n\t\t\t\tlet initialPos = new window.GeoPoint(120.25414128635549, 22.841697948009113, 25.165497977162318);\r\n\t\t\t\tlet initialUp = new window.Geo3DPoint(0.0066371396740791235, 0.012902485293109322, 0.9998947315843842);\r\n\t\t\t\tlet initialV = new window.Geo3DPoint(0.4573857456478581, 0.8891500176732612, -0.014509505497849934);\r\n\t\t\t\tlet initialCamera = new window.ov.Camera(initialPos, initialV, initialUp);\r\n\t\t\t\twindow.main.OView.gotoCamera(initialCamera, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tcloseCard() {\r\n\t\tthis.clearExplosion();\r\n\t\tthis.props.setParticleExplosionOpen();\r\n\t}\r\n\tclearExplosion() {\r\n\t\tconst {ParticleModule, explosionEntity} = this.state;\r\n\t\tif (ParticleModule !== null) {\r\n\t\t\tParticleModule.removeParticleEntity(explosionEntity);\r\n\t\t\tthis.setState({\r\n\t\t\t\texplosionEntity: null,\r\n\t\t\t\tSize: 10,\r\n\t\t\t\tPeriod: 1,\r\n\t\t\t\trotatePerSec: 0,\r\n\t\t\t\tweight: [1, 1, 1]\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tsizeChange(e) {\r\n\t\tlet _Size = parseInt(e.target.value);\r\n\t\tthis.state.explosionEntity.updateGenerator({particleScale: _Size});\r\n\t\tthis.setState({Size: _Size});\r\n\t}\r\n\tperiodChange(e) {\r\n\t\tlet _Period = parseInt(e.target.value);\r\n\t\tthis.state.explosionEntity.updateGenerator({particleMaxLife: _Period});\r\n\t\tthis.setState({Period: _Period});\r\n\t}\r\n\trotatePerSecChange(e) {\r\n\t\tlet _rotatePerSec = parseInt(e.target.value);\r\n\t\tthis.state.explosionEntity.updateGenerator({particleRotatePerSecond: _rotatePerSec});\r\n\t\tthis.setState({rotatePerSec: _rotatePerSec});\r\n\t}\r\n\tweightChange(e, index) {\r\n\t\tconst {ParticleModule, explosionEntity, Size, Period, rotatePerSec} = this.state;\r\n\t\tlet _weight = this.state.weight;\r\n\t\t_weight[index] = parseFloat(e.target.value);\r\n\t\tParticleModule.removeParticleEntity(explosionEntity);\r\n\t\tlet _explosionEntity = ParticleModule.addExplosionEntity({\r\n\t\t\tposition: new window.Geo3DPoint(120.254343, 22.842091, 20),\r\n\t\t\tsize: Size,\r\n\t\t\tgeneratePeriod: Period,\r\n\t\t\trotatePerSecond: rotatePerSec,\r\n\t\t\trgbWeight: _weight\r\n\t\t});\r\n\t\tthis.setState({explosionEntity: _explosionEntity, weight: _weight});\r\n\t}\r\n\trender() {\r\n\t\tconst isOpen = this.props.isOpen;\r\n\t\tconst cardStyle = {\r\n\t\t\tzIndex: \"100\",\r\n\t\t\ttransform: isOpen ? 'translate3d(0, 0, 0)' : 'translate3d(120%, 0, 0)',\r\n\t\t\tposition: \"fixed\",\r\n\t\t\ttop: \"3px\",\r\n\t\t\tright: \"10px\",\r\n\t\t\tmarginTop: \"5px\",\r\n\t\t\twidth: \"300px\"\r\n\t\t};\r\n\t\tconst siderRangeCSS = {\r\n\t\t\tbackground: \"linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%)\"\r\n };\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t爆炸\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t設定下方工具以調整效果\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t爆炸大小\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tthis.sizeChange(e)} style={siderRangeCSS}>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
{this.state.Size}
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t 爆炸週期(sec)\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tthis.periodChange(e)} style={siderRangeCSS}>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
{this.state.Period}
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t 每秒旋轉角度\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tthis.rotatePerSecChange(e)} style={siderRangeCSS}>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
{this.state.rotatePerSec}
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t 權重R\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tthis.weightChange(e, 0)} style={siderRangeCSS}>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
{this.state.weight[0]}
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t 權重G\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tthis.weightChange(e, 1)} style={siderRangeCSS}>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
{this.state.weight[1]}
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t 權重B\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tthis.weightChange(e, 2)} style={siderRangeCSS}>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
{this.state.weight[2]}
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\nexport {ParticleList, ParticleRain, ParticleExplosion};","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport {OverlayLayer} from './LayerInfo/OverLayLayer';\r\nimport BaseLayer from './LayerInfo/BaseLayer';\r\nimport Layer3DGroup from './LayerInfo/Layer3DGroup';\r\nimport NoiseLayer from './LayerInfo/NoiseLayer';\r\nimport TerrainLayer from './LayerInfo/TerrainLayer';\r\nimport HelpComponent from './HelpComponent';\r\nimport { ParticleList } from './ParticleList';\r\n\r\nclass TerrainSiderBar extends React.Component{\r\n constructor() {\r\n super();\r\n this.sidebarChange = this.sidebarChange.bind(this);\r\n this.state = {\r\n siderValue:100,\r\n intervalID:null\r\n };\r\n }\r\n componentDidMount(){\r\n let siderValue = 100; \r\n let componentThis = this;\r\n var intervalID = setInterval(function() {\r\n siderValue = window.main.OView.terrainAlpha * 100; \r\n componentThis.setState({siderValue:siderValue});\r\n }, 1000); \r\n this.setState({intervalID:intervalID});\r\n }\r\n sidebarChange(event){ \r\n window.main.OView.terrainAlpha = event.target.value/100;\r\n this.setState({siderValue:event.target.value});\r\n }\r\n render(){\r\n const siderRangeCSS ={\r\n background: \"linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%)\"\r\n };\r\n return(\r\n
\r\n
\r\n

地形透視

\r\n \r\n
\r\n \r\n
\r\n this.sidebarChange(e)} style={siderRangeCSS}>\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass LayerList extends React.Component{\r\n constructor(){\r\n super();\r\n this.setOpenLayer = this.setOpenLayer.bind(this);\r\n this.deleteLayer = this.deleteLayer.bind(this);\r\n this.setinfoBox = this.setinfoBox.bind(this);\r\n } \r\n setOpenLayer(layer,layerHandelr){\r\n this.props.setOpenLayer(layer,layerHandelr);\r\n }\r\n deleteLayer(layer){\r\n this.props.deleteLayer(layer);\r\n } \r\n setinfoBox(attrs){\r\n this.props.setinfoBox(attrs);\r\n }\r\n render(){\r\n const deleteList = this.props.deleteList;\r\n const LayerLength = this.props.LayerLength;\r\n return( \r\n
\r\n \r\n
\r\n \r\n \r\n 地形\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n 底圖\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n 2D圖層 \r\n \r\n this.setOpenLayer(layer,layerHandel)} deleteLayer = {(layer)=>this.deleteLayer(layer)} deleteList={deleteList} LayerLength={LayerLength} setTimeLineContent={this.props.setTimeLineContent} setTimeLineSwitch={this.props.setTimeLineSwitch} currentTime={this.props.currentTime}/>\r\n
\r\n
\r\n \r\n \r\n 3D圖層\r\n \r\n this.setOpenLayer(layer,layerHandel)} \r\n deleteLayer = {(layer)=>this.deleteLayer(layer)} \r\n deleteList={deleteList} \r\n setinfoBox = {(attrs)=>this.setinfoBox(attrs)}\r\n setinfoBoxOpen = {this.props.setinfoBoxOpen}\r\n setLegendBoxSwitch = {this.props.setLegendBoxSwitch}\r\n setLegendBoxContent = {this.props.setLegendBoxContent}\r\n setTimeLineContent = {this.props.setTimeLineContent}\r\n currentTime={this.props.currentTime}\r\n List={window.LAYER_GROUP_3DMODEL.LAYER}\r\n URL={window.TERRAIN_SERVER.URL}\r\n URLTemplate={window.TERRAIN_SERVER.URLTemplate}\r\n Token={\"\"}\r\n />\r\n
\r\n
\r\n \r\n \r\n 噪音圖層\r\n \r\n this.setOpenLayer(layer,layerHandel)} \r\n deleteLayer = {(layer)=>this.deleteLayer(layer)} \r\n deleteList={deleteList} \r\n setinfoBox = {(attrs)=>this.setinfoBox(attrs)}\r\n setinfoBoxOpen = {this.props.setinfoBoxOpen}\r\n setLegendBoxSwitch = {this.props.setLegendBoxSwitch}\r\n setLegendBoxContent = {this.props.setLegendBoxContent}\r\n setTimeLineContent = {this.props.setTimeLineContent}\r\n currentTime={this.props.currentTime}\r\n />\r\n
\r\n
\r\n \r\n \r\n 粒子特效\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n 共用圖層 (DataLake)\r\n \r\n this.setOpenLayer(layer, layerHandel)}\r\n deleteLayer={(layer) => this.deleteLayer(layer)}\r\n deleteList={deleteList}\r\n setinfoBox={(attrs) => this.setinfoBox(attrs)}\r\n setinfoBoxOpen={this.props.setinfoBoxOpen}\r\n setLegendBoxSwitch={this.props.setLegendBoxSwitch}\r\n setLegendBoxContent={this.props.setLegendBoxContent}\r\n setTimeLineContent={this.props.setTimeLineContent}\r\n currentTime={this.props.currentTime}\r\n List={window.LAYER_GROUP_DataLake.LAYER}\r\n URL={window.DataLake_SERVER.URL}\r\n URLTemplate={window.DataLake_SERVER.URLTemplate}\r\n Token={window.DataLake_SERVER.TOKEN}\r\n />\r\n
\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass LayerListSidebar extends React.Component{\r\n constructor() {\r\n super();\r\n this.sidebarSwitch = this.sidebarSwitch.bind(this);\r\n this.setOpenLayer = this.setOpenLayer.bind(this);\r\n this.deleteLayer = this.deleteLayer.bind(this);\r\n this.setinfoBox = this.setinfoBox.bind(this);\r\n this.state = {\r\n helpMode : \"None\"\r\n }\r\n }\r\n sidebarSwitch(){\r\n this.props.setlayerListOpen();\r\n }\r\n setOpenLayer(layer,layerHandelr){\r\n this.props.setOpenLayer(layer,layerHandelr);\r\n }\r\n setinfoBox(attrs){\r\n this.props.setinfoBox(attrs);\r\n }\r\n deleteLayer(layer){\r\n this.props.deleteLayer(layer);\r\n }\r\n onHelpClick(mode){\r\n this.setState({helpMode : mode});\r\n }\r\n render(){\r\n const islayerListOpen = this.props.islayerListOpen;\r\n const deleteList = this.props.deleteList;\r\n const LayerLength = this.props.LayerLength;\r\n const sideMenuCSS ={\r\n overflow : 'inherit',\r\n transform : islayerListOpen?'translate3d(0, 0, 0)':'translate3d(-120%, 0, 0)',\r\n width : '480px'\r\n };\r\n const titleCSS = {\r\n margin: '10px 10px 10px 10px'\r\n };\r\n if(this.state.helpMode === \"LayerList\"){\r\n ReactDOM.render(this.onHelpClick(e)} />,document.getElementById('Help'))\r\n }\r\n else if(this.state.helpMode === \"None\"){\r\n ReactDOM.unmountComponentAtNode(document.getElementById('Help'));\r\n }\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n
\r\n 圖層集\r\n
\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n this.sidebarSwitch(e)}> \r\n
\r\n
\r\n
\r\n this.setOpenLayer(layer,layerHandelr)}\r\n deleteLayer = {(layer)=>this.deleteLayer(layer)} \r\n deleteList={deleteList} \r\n LayerLength={LayerLength} \r\n setinfoBox = {(attrs)=>this.setinfoBox(attrs)} \r\n setinfoBoxOpen = {this.props.setinfoBoxOpen}\r\n setLegendBoxSwitch = {this.props.setLegendBoxSwitch}\r\n setLegendBoxContent = {this.props.setLegendBoxContent}\r\n setTimeLineContent = {this.props.setTimeLineContent}\r\n currentTime={this.props.currentTime}\r\n setCloudModuleOpen={this.props.setCloudModuleOpen}\r\n setParticleRainOpen={this.props.setParticleRainOpen}\r\n setParticleExplosionOpen={this.props.setParticleExplosionOpen}\r\n /> \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default LayerListSidebar;","/* eslint-disable array-callback-return */\r\nimport React from 'react';\r\nimport {OverlayOption} from './LayerInfo/OverLayLayer';\r\nimport {LidarOption} from './LayerInfo/LidarLayer';\r\nimport {ModelSetOption} from './LayerInfo/ModelSetLayer';\r\nimport {Acute3DOption} from './LayerInfo/Acute3DLayer';\r\nimport {VisualizedDataGridOption} from './LayerInfo/VisualizedDataGridOverlay';\r\nimport {VisualizedDataGridOption_DataCube} from './LayerInfo/VisualizedDataGridOverlay_DataCube';\r\nimport { MoveModelOption } from './LayerInfo/MoveModelLayer';\r\nimport {PipelineOption} from './LayerInfo/PipelineLayer';\r\nimport {ModelOption} from './LayerInfo/ModelLayer';\r\nimport {ProjectorOption} from './LayerInfo/ProjectorLayer';\r\nimport {I3SOption} from './LayerInfo/I3SLayer';\r\nimport {ThreeDTilesOption} from './LayerInfo/3DTilesLayer';\r\nimport {CustomOption} from './LayerInfo/CustomLayer';\r\n\r\nclass TerrainSiderBar extends React.Component{\r\n constructor() {\r\n super();\r\n this.sidebarChange = this.sidebarChange.bind(this);\r\n this.state = {\r\n siderValue:100,\r\n intervalID:null\r\n };\r\n } \r\n componentDidMount(){\r\n let siderValue = 100;\r\n let componentThis = this;\r\n var intervalID = setInterval(function() {\r\n siderValue = window.main.OView.terrainAlpha * 100; \r\n componentThis.setState({siderValue:siderValue});\r\n }, 1000); \r\n this.setState({intervalID:intervalID});\r\n }\r\n sidebarChange(event){ \r\n window.main.OView.terrainAlpha = event.target.value/100;\r\n this.setState({siderValue:event.target.value});\r\n }\r\n render(){\r\n const siderRangeCSS ={\r\n background: \"linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%)\"\r\n };\r\n return(\r\n
\r\n
\r\n

地形透視

\r\n \r\n
\r\n \r\n
\r\n this.sidebarChange(e)} style={siderRangeCSS}>\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass LayerOptionSidebar extends React.Component{\r\n constructor() {\r\n super();\r\n this.sidebarSwitch = this.sidebarSwitch.bind(this);\r\n this.deleteLayerList = this.deleteLayerList.bind(this);\r\n }\r\n sidebarSwitch(){\r\n this.props.setlayerOptionOpen();\r\n }\r\n deleteLayerList(layer){\r\n this.props.deleteLayerList(layer);\r\n }\r\n render(){\r\n const islayerOptionOpen = this.props.islayerOptionOpen; \r\n const LayerList_2D = this.props.LayerList.Layer_2D;\r\n const LayerList_3D = this.props.LayerList.Layer_3D;\r\n const LayerList_Noise = this.props.LayerList.Layer_Noise;\r\n const Layer2DLength = (this.props.LayerList.Layer_2D).length;\r\n const Layer3DLength = (this.props.LayerList.Layer_3D).length;\r\n const LayerNoiseLength = (this.props.LayerList.Layer_Noise).length;\r\n const sideMenuCSS ={\r\n overflow : 'inherit',\r\n transform : islayerOptionOpen?'translate3d(0, 0, 0)':'translate3d(-120%, 0, 0)',\r\n width : '480px'\r\n };\r\n const titleCSS = {\r\n margin: '10px 10px 10px 10px' \r\n };\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n
\r\n 圖層設定\r\n
\r\n

\r\n
\r\n
\r\n this.sidebarSwitch(e)}> \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n 2D圖層\r\n {\r\n Layer2DLength === 0 ? null:\r\n
{Layer2DLength}
\r\n }\r\n
\r\n {\r\n LayerList_2D.map(\r\n (layer)=>\r\n this.deleteLayerList(layer)} key={layer.layerName}/>\r\n )\r\n } \r\n
\r\n
\r\n \r\n \r\n 3D圖層\r\n {\r\n Layer3DLength === 0 ? null:\r\n
{Layer3DLength}
\r\n }\r\n
\r\n {\r\n LayerList_3D.map(\r\n (layer)=>\r\n {\r\n switch(layer.layerType){\r\n case \"Lidar\" :\r\n return this.deleteLayerList(layer)} key={layer.layerName}/>;\r\n case \"ModelSet\":\r\n return this.deleteLayerList(layer)} key={layer.layerName} setLegendBoxSwitch={this.props.setLegendBoxSwitch} currentTime={this.props.currentTime} infoBoxAttr={this.props.infoBoxAttr} setinfoBox={this.props.setinfoBox}/>;\r\n case \"Acute3D\":\r\n return this.deleteLayerList(layer)} key={layer.layerName}/>;\r\n case \"VisualizedDataGrid\":\r\n return this.deleteLayerList(layer)} key={layer.layerName} />;\r\n case \"VisualizedDataGrid_DataCube\":\r\n return this.deleteLayerList(layer)} key={layer.layerName} />;\r\n case \"MoveModel\":\r\n return this.deleteLayerList(layer)} key={layer.layerName} />;\r\n case \"Pipeline\":\r\n return this.deleteLayerList(layer)} key={layer.layerName}/>;\r\n case \"Model\":\r\n return this.deleteLayerList(layer)} key={layer.layerName}/>;\r\n case \"Projector\":\r\n return this.deleteLayerList(layer)} key={layer.layerName}/>;\r\n case \"I3S\":\r\n return this.deleteLayerList(layer)} key={layer.layerName}/>;\r\n case \"3DTiles\":\r\n return this.deleteLayerList(layer)} key={layer.layerName}/>;\r\n case \"Custom\":\r\n return this.deleteLayerList(layer)} key={layer.layerName} setLegendBoxSwitch={this.props.setLegendBoxSwitch} currentTime={this.props.currentTime} infoBoxAttr={this.props.infoBoxAttr} setinfoBox={this.props.setinfoBox}/>;\r\n default:\r\n break;\r\n }\r\n }\r\n )\r\n } \r\n
\r\n
\r\n \r\n \r\n 噪音圖層\r\n {\r\n LayerNoiseLength === 0 ? null:\r\n
{LayerNoiseLength}
\r\n }\r\n
\r\n {\r\n LayerList_Noise.map(\r\n (layer)=>\r\n {\r\n switch(layer.layerType){\r\n case \"ModelSet\":\r\n return this.deleteLayerList(layer)} key={layer.layerName} setLegendBoxSwitch={this.props.setLegendBoxSwitch} currentTime={this.props.currentTime} infoBoxAttr={this.props.infoBoxAttr} setinfoBox={this.props.setinfoBox}/>;\r\n case \"Custom\":\r\n return this.deleteLayerList(layer)} key={layer.layerName} setLegendBoxSwitch={this.props.setLegendBoxSwitch} currentTime={this.props.currentTime} infoBoxAttr={this.props.infoBoxAttr} setinfoBox={this.props.setinfoBox}/>;\r\n default:\r\n break;\r\n }\r\n }\r\n )\r\n } \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default LayerOptionSidebar;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nclass WidgetListSidebar extends React.Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n isBaseLayerOpen: true,\r\n widgetFPS: null,\r\n widgetBaseLayer: null,\r\n widgetSatellite: null,\r\n widgetTimeline: null,\r\n widgetTimelinePlayer: null,\r\n widgetDTM: null,\r\n widgetSensorThings: null,\r\n widgetWeather: null,\r\n widgetPipeline: null,\r\n widgetTrack: null,\r\n widgetSeaBed: null\r\n };\r\n this.sidebarSwitch = this.sidebarSwitch.bind(this);\r\n this.showFPS = this.showFPS.bind(this);\r\n this.showBaseLayer = this.showBaseLayer.bind(this);\r\n this.showSatellite = this.showSatellite.bind(this);\r\n this.showDTM = this.showDTM.bind(this);\r\n this.showSensorThings = this.showSensorThings.bind(this);\r\n this.showWeather = this.showWeather.bind(this);\r\n this.showPipeline = this.showPipeline.bind(this);\r\n this.showTrack = this.showTrack.bind(this);\r\n this.showSeaBed = this.showSeaBed.bind(this);\r\n }\r\n sidebarSwitch(){\r\n this.props.setWidgetListOpen();\r\n }\r\n showFPS() {\r\n let widgetFPS = this.state.widgetFPS;\r\n if (widgetFPS !== null) {\r\n widgetFPS.remove();\r\n }\r\n widgetFPS = new window.ov.Widget.FPS({\r\n view: window.main.OView,\r\n style: { left: \"90px\", width: \"100px\" }\r\n });\r\n this.setState({ widgetFPS });\r\n }\r\n showBaseLayer() {\r\n let widgetBaseLayer = this.state.widgetBaseLayer;\r\n if (widgetBaseLayer === null) {\r\n widgetBaseLayer = new window.ov.Widget.BaseMap({\r\n view: window.main.OView,\r\n listX: 100,\r\n iconX: 100,\r\n iconWidth: 32,\r\n iconHeight: 32\r\n });\r\n this.setState({widgetBaseLayer});\r\n } else {\r\n let isOpen = this.state.isBaseLayerOpen;\r\n if (isOpen) {\r\n widgetBaseLayer.hide();\r\n } else {\r\n widgetBaseLayer.show();\r\n }\r\n this.setState({isBaseLayerOpen: !isOpen});\r\n }\r\n this.sidebarSwitch();\r\n }\r\n showSatellite() {\r\n let widgetSatellite = this.state.widgetSatellite;\r\n let widgetTimeline = this.state.widgetTimeline;\r\n let widgetTimelinePlayer = this.state.widgetTimelinePlayer;\r\n if (widgetSatellite === null) {\r\n let terrainview = window.main.OView;\r\n terrainview.getModule(\"military\");\r\n widgetTimeline = new window.ov.Widget.Timeline({\r\n view: terrainview,\r\n style: { left: \"160px\", width: \"77%\", bottom: \"30px\" },\r\n startTime: new Date().getTime(),\r\n stopTime: new Date().getTime() + 86400000,\r\n isRepeat: true\r\n });\r\n let widgetTimelinePlayer = new window.ov.Widget.TimelinePlayer({\r\n view: terrainview,\r\n timeline: widgetTimeline,\r\n playSpeed: 10000.0,\r\n style: {left: \"100px\", bottom: \"30px\"}\r\n });\r\n let list = [16613,20436,22823,25260,27421,38755,40053,44586,44587,28254,42920,38012,39019,33331,35946]; \r\n let widgetSatellite = new window.ov.Widget.SatelliteWidget({\r\n view: terrainview,\r\n timeline: widgetTimeline,\r\n list: list,\r\n apiKey: \"3XFHAJ-RLL9CP-5XWQ2G-4TX9\",\r\n proxy: window.LOCAL_SERVER.URLTemplate\r\n });\r\n this.setState({widgetSatellite, widgetTimeline, widgetTimelinePlayer});\r\n } else {\r\n widgetSatellite.remove();\r\n widgetTimeline.remove();\r\n widgetTimelinePlayer.remove();\r\n this.setState({widgetSatellite: null, widgetTimeline: null, widgetTimelinePlayer: null});\r\n }\r\n }\r\n showDTM() {\r\n let widgetDTM = this.state.widgetDTM;\r\n if (widgetDTM !== null) {\r\n widgetDTM.remove();\r\n }\r\n widgetDTM = new window.ov.Widget.DTM({view: window.main.OView, proxy: \"dtm.ashx?\" });\r\n document.querySelectorAll(\".ov-widget-DTM input[name='apikey']\")[0].value = \"fa0cecdf-4ea2-420e-b0eb-69a684d5af48\";\r\n document.querySelectorAll(\".ov-widget-DTM .ov-widget-inputContainer\")[0].setAttribute('hidden', true);\r\n document.querySelectorAll(\".ov-widget-DTM .ov-widget-divider\")[2].setAttribute('hidden', true);\r\n this.setState({widgetDTM});\r\n }\r\n showSensorThings() {\r\n let widgetSensorThings = this.state.widgetSensorThings;\r\n if (widgetSensorThings !== null) {\r\n widgetSensorThings.remove();\r\n }\r\n widgetSensorThings = new window.ov.Widget.SensorThings({view: window.main.OView, proxy: \"sensorthings.ashx?\"});\r\n this.setState({widgetSensorThings});\r\n }\r\n showWeather(){\r\n let widgetWeather = this.state.widgetWeather;\r\n if (widgetWeather !== null) {\r\n widgetWeather.remove();\r\n }\r\n widgetWeather = new window.ov.Widget.Weather({\r\n view: window.main.OView,\r\n proxy: window.LOCAL_SERVER.URLTemplate,\r\n authorization: \"CWB-37D2C858-E377-4B2C-94C5-FA38AA2DB521\"\r\n });\r\n this.setState({ widgetWeather });\r\n }\r\n showPipeline()\r\n {\r\n let widgetPipeline = this.state.widgetPipeline;\r\n if (widgetPipeline !== null) {\r\n widgetPipeline.remove();\r\n }\r\n widgetPipeline = new window.ov.Widget.Pipeline({\r\n view: window.main.OView,\r\n proxy: window.LOCAL_SERVER.URLTemplate,\r\n list: [\r\n {\r\n url: \"http://127.0.0.1:8080\",\r\n identifier: \"TaichungPipeline\"\r\n },\r\n {\r\n url: \"http://127.0.0.1:8080\",\r\n identifier: \"TaichungManHole\"\r\n },\r\n {\r\n url: \"http://127.0.0.1:8080\",\r\n identifier: \"TaichungEquipment\"\r\n }\r\n ]\r\n });\r\n this.setState({ widgetPipeline });\r\n }\r\n showTrack()\r\n {\r\n let widgetTrack = this.state.widgetTrack;\r\n let widgetTimeline = this.state.widgetTimeline;\r\n let widgetTimelinePlayer = this.state.widgetTimelinePlayer;\r\n\r\n if (widgetTrack === null)\r\n {\r\n let widgetTimeline = new window.ov.Widget.Timeline({\r\n view: window.main.OView,\r\n style: { left: \"160px\", width: \"77%\", bottom: \"30px\" } \r\n });\r\n\r\n let widgetTimelinePlayer = new window.ov.Widget.TimelinePlayer({\r\n view: window.main.OView,\r\n timeline: widgetTimeline,\r\n playSpeed: 500.0,\r\n style: { left: \"100px\", bottom: \"30px\" }\r\n });\r\n\r\n let widgetTrack = new window.ov.Widget.TrackWidget({\r\n view: window.main.OView,\r\n timeline: widgetTimeline,\r\n proxy: window.LOCAL_SERVER.URLTemplate\r\n });\r\n\r\n this.setState({ widgetTrack, widgetTimeline, widgetTimelinePlayer });\r\n }\r\n else\r\n {\r\n widgetTrack.remove();\r\n widgetTimeline.remove();\r\n widgetTimelinePlayer.remove();\r\n this.setState({ widgetTrack: null, widgetTimeline: null, widgetTimelinePlayer: null });\r\n }\r\n }\r\n showSeaBed()\r\n {\r\n let widgetSeaBed = this.state.widgetSeaBed;\r\n if (widgetSeaBed !== null) {\r\n widgetSeaBed.remove();\r\n }\r\n widgetSeaBed = new window.ov.Widget.SeaBed({\r\n view: window.main.OView,\r\n layerParam: {\r\n url: \"http://127.0.0.1:8080/wmts\",\r\n identifier: \"NTU_Space_contour\",\r\n layername: \"SeabedLine\",\r\n urlTemplate: \"https://sample.pilotgaea.com.tw/Oview.aspx?{URL}\"\r\n },\r\n currentSrc: \"https://sample.pilotgaea.com.tw/demo/index/src/testweb/sea/SADCP_std.csv\"\r\n// proxy: window.LOCAL_SERVER.URLTemplate,\r\n });\r\n this.setState({ widgetSeaBed });\r\n }\r\n showHouseDisplay() {\r\n let widgetHouseDisplay = new window.ov.Widget.ReadilyAvailableHouseDisplay({\r\n view: window.main.OView,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate\r\n });\r\n widgetHouseDisplay._WidgetUI._PosX = 145;\r\n let widget = document.querySelectorAll(\".ov-widget-corner\");\r\n widget[widget.length - 1].style.left = \"145px\";\r\n this.sidebarSwitch();\r\n let widgetContent = document.getElementsByClassName(\"ov-widget-readilyAvailableHouse-content\");\r\n let widgetFile = document.querySelectorAll(\".ov-widget-readilyAvailableHouse-content .example-file\");\r\n Object.keys(widgetFile).forEach((key) => {\r\n widgetFile[key].remove();\r\n });\r\n Object.keys(widgetContent).forEach((key) => {\r\n if (widgetContent[key].childElementCount == 3) {\r\n let a = document.createElement(\"a\");\r\n a.className = \"example-file\";\r\n a.href = \"src/ReadilyAvailableHouse.zip\";\r\n a.text = \"範例檔案\";\r\n widgetContent[key].prepend(a);\r\n }\r\n });\r\n }\r\n showHouseInspection() {\r\n let widgetHouseInspection = new window.ov.Widget.ReadilyAvailableHouseInspection({\r\n view: window.main.OView,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate\r\n });\r\n widgetHouseInspection._WidgetUI._PosX = 145;\r\n let widget = document.querySelectorAll(\".ov-widget-corner\");\r\n widget[widget.length - 1].style.left = \"145px\";\r\n this.sidebarSwitch();\r\n let widgetContent = document.getElementsByClassName(\"ov-widget-readilyAvailableHouse-content\");\r\n let widgetFile = document.querySelectorAll(\".ov-widget-readilyAvailableHouse-content .example-file\");\r\n Object.keys(widgetFile).forEach((key) => {\r\n widgetFile[key].remove();\r\n });\r\n Object.keys(widgetContent).forEach((key) => {\r\n if (widgetContent[key].childElementCount == 3) {\r\n let a = document.createElement(\"a\");\r\n a.className = \"example-file\";\r\n a.href = \"src/ReadilyAvailableHouse.zip\";\r\n a.text = \"範例檔案\";\r\n widgetContent[key].prepend(a);\r\n }\r\n });\r\n }\r\n showOGCLayer() {\r\n let widgetOGCLayer = new window.ov.Widget.OGCLayer({\r\n view: window.main.OView,\r\n urlTemplate: \"{URL}\"\r\n });\r\n widgetOGCLayer._WidgetUI._PosX = 145;\r\n let widget = document.querySelectorAll(\".ov-widget-corner\");\r\n widget[widget.length - 1].style.left = \"145px\";\r\n this.sidebarSwitch();\r\n let widgetContent = document.getElementsByClassName(\"ov-widget-ogcLayer-addOGCLayerContainer\")[0];\r\n let widgetUrl = document.querySelector(\".ov-widget-ogcLayer-addOGCLayerContainer .example-url\");\r\n if (widgetUrl != null) {\r\n widgetUrl.remove();\r\n }\r\n let a = document.createElement(\"a\");\r\n a.className = \"example-url\";\r\n a.href = \"https://3dmaps.nlsc.gov.tw/\";\r\n a.target = \"_blank\";\r\n a.text = \"介接服務說明\";\r\n widgetContent.prepend(a);\r\n document.getElementsByClassName(\"ov-widget-ogcLayer-urlText\")[0].value = \"https://i3s.nlsc.gov.tw/building/i3s/SceneServer/layers/13\";\r\n \r\n window.main.OView.gotoCamera(new window.ov.Camera(\r\n new window.GeoPoint(120.99656009774225, 24.782068349516408, 154.4618651421146),\r\n new window.Geo3DPoint(-0.8451241062117226, 0.3666476115084564, -0.3890177040636856),\r\n new window.Geo3DPoint(-0.35687954156487384, 0.15482818505500448, 0.9212302784456332)\r\n ), false); // NCHC\r\n }\r\n showSocioeconomic() {\r\n let widgetSocioeconomic = new window.ov.Widget.Socioeconomic({\r\n view: window.main.OView,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate\r\n });\r\n widgetSocioeconomic._WidgetUI._PosX = 145;\r\n let widget = document.querySelectorAll(\".ov-widget-corner\");\r\n widget[widget.length - 1].style.left = \"145px\";\r\n this.sidebarSwitch();\r\n let widgetContent = document.querySelector(\"[id^='Socioeconomic']\").parentElement.parentElement;\r\n widgetContent.classList.add(\"ov-widget-Socioeconomic-content\");\r\n let widgetFile = document.querySelector(\".ov-widget-Socioeconomic-content .example-file\");\r\n if (widgetFile != null) {\r\n widgetFile.remove();\r\n }\r\n let a = document.createElement(\"a\");\r\n a.className = \"example-file\";\r\n a.href = \"src/Socioeconomic.zip\";\r\n a.text = \"範例檔案(EPSG:4326)\";\r\n widgetContent.prepend(a);\r\n }\r\n showKML() {\r\n let widget = new window.ov.Widget.KML({\r\n view: window.main.OView\r\n });\r\n widget._WidgetUI._PosX = 145;\r\n document.querySelector(\".ov-widget-KML-ui\").style.left = \"145px\";\r\n this.sidebarSwitch();\r\n let widgetContent = document.getElementsByClassName(\"ov-widget-KML-content\")[0];\r\n let widgetFile = document.querySelector(\".ov-widget-KML-content .example-file\");\r\n if (widgetFile != null) {\r\n widgetFile.remove();\r\n }\r\n let a = document.createElement(\"a\");\r\n a.className = \"example-file\";\r\n a.href = \"src/省道陡坡圖資KML_11203.zip\";\r\n a.style.display = \"block\";\r\n a.text = \"範例檔案\";\r\n widgetContent.prepend(a);\r\n }\r\n showMultiWindow() {\r\n let currentview = window.main.OView;\r\n let widgetMultiWindow = new window.ov.Widget.MultiWindow({\r\n view: window.main.OView,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate\r\n });\r\n widgetMultiWindow.addEventListener(\"load\", (index) => {\r\n let view = widgetMultiWindow.getSubTerrainView(index);\r\n let url = \"https://wmts.nlsc.gov.tw/wmts\";\r\n let identifier = \"PHOTO2\";\r\n switch (index) {\r\n case 1:\r\n identifier = \"EMAP5\";\r\n break;\r\n case 2:\r\n identifier = \"PHOTO2\";\r\n break;\r\n case 3:\r\n identifier = \"EMAP5\";\r\n break;\r\n default:\r\n break;\r\n }\r\n view.setBaseLayer({\r\n url: url,\r\n identifier: identifier,\r\n urlTemplate: \"{URL}\"\r\n });\r\n });\r\n widgetMultiWindow.addEventListener(\"focus\", (index) => {\r\n let view = widgetMultiWindow.getSubTerrainView(index);\r\n currentview = view;\r\n });\r\n widgetMultiWindow._WidgetUI._PosX = 145;\r\n document.querySelector(\".ov-widget-multiWindow-main\").style.left = \"145px\";\r\n this.sidebarSwitch();\r\n let widgetContent = document.querySelector(\".ov-widget-multiWindow-contentDiv\");\r\n if (document.getElementsByClassName(\"map-list\")[0] != undefined) {\r\n document.getElementsByClassName(\"map-list\")[0].remove();\r\n }\r\n let mapList = document.createElement(\"div\");\r\n mapList.className = \"map-list\";\r\n mapList.innerHTML = '
選擇圖資
';\r\n widgetContent.append(mapList);\r\n document.getElementById(\"baseNLSCPhoto2\").addEventListener(\"click\", () => {\r\n currentview.setBaseLayer({\r\n url: \"https://wmts.nlsc.gov.tw/wmts\",\r\n identifier: \"PHOTO2\",\r\n urlTemplate: \"{URL}\"\r\n });\r\n });\r\n document.getElementById(\"baseNLSCEMap5\").addEventListener(\"click\", () => {\r\n currentview.setBaseLayer({\r\n url: \"https://wmts.nlsc.gov.tw/wmts\",\r\n identifier: \"EMAP5\",\r\n urlTemplate: \"{URL}\"\r\n });\r\n });\r\n document.getElementById(\"modelSetTaipei\").addEventListener(\"click\", () => {\r\n currentview.addOGCI3SLayer({\r\n url: \"https://i3s.nlsc.gov.tw/building/i3s/SceneServer/layers/0\",\r\n urlTemplate: \"{URL}\"\r\n });\r\n });\r\n document.getElementById(\"overlayLandUsed\").addEventListener(\"click\", () => {\r\n currentview.addTerrainWMTSOverlay({\r\n url: \"https://wmts.nlsc.gov.tw/wmts\",\r\n identifier: \"LUIMAP\",\r\n urlTemplate: \"{URL}\"\r\n });\r\n });\r\n document.getElementById(\"overlayGeology\").addEventListener(\"click\", () => {\r\n currentview.addTerrainWMTSOverlay({\r\n url: \"https://wmts.nlsc.gov.tw/wmts\",\r\n identifier: \"GeoSensitive2\",\r\n urlTemplate: \"{URL}\"\r\n });\r\n });\r\n document.getElementById(\"overlaySchoolRegion\").addEventListener(\"click\", () => {\r\n currentview.addTerrainWMTSOverlay({\r\n url: \"https://wmts.nlsc.gov.tw/wmts\",\r\n identifier: \"SCHOOL\",\r\n urlTemplate: \"{URL}\"\r\n });\r\n });\r\n }\r\n showBuildingOverlay() {\r\n let modelName = \"nangang\";\r\n let modelSet = window.main.OView.findLayer(modelName);\r\n if (modelSet == null) {\r\n window.main.OView.addModelSetLayer({\r\n url: window.LOCAL_SERVER.URL,\r\n identifier: \"nangang\",\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate,\r\n callback: (success, layer) => {\r\n if (success) {\r\n modelSet = layer;\r\n layer.goto();\r\n }\r\n }\r\n });\r\n }\r\n let buildingOverlay = new window.ov.Widget.BuildingOverlay({\r\n view: window.main.OView,\r\n options: [{\r\n text: \"國土利用現況調查成果圖\",\r\n value: {\r\n url: \"https://wmts.nlsc.gov.tw/wmts\",\r\n identifier: \"LUIMAP\",\r\n layername: \"LUIMAP_cover\"\r\n }\r\n }, {\r\n text: \"土壤液化潛勢_中級\",\r\n value: {\r\n url: \"https://wmts.nlsc.gov.tw/wmts\",\r\n identifier: \"SoilLiquefaction2\",\r\n layername: \"SoilLiquefaction2_cover\"\r\n }\r\n }],\r\n buildingLayer: {\r\n name: \"nangang\"\r\n },\r\n urlTemplate: \"{URL}\"\r\n });\r\n buildingOverlay._WidgetUI._PosX = 145;\r\n document.querySelector(\".ov-widget-BuildingOverlay-main\").style.left = \"145px\";\r\n this.sidebarSwitch();\r\n\r\n let widgetContent = document.querySelector(\".ov-widget-BuildingOverlay-contentDiv\");\r\n let legendUrl = \"https://maps.nlsc.gov.tw/demo/109%E5%B9%B4%E7%89%88%E5%9C%8B%E5%9C%9F%E5%88%A9%E7%94%A8%E8%89%B2%E7%A2%BC%E8%A1%A8.png\";\r\n let a = document.createElement(\"a\");\r\n a.className = \"ov-widget-BuildingOverlay-v-center legend\";\r\n a.href = legendUrl;\r\n a.target = \"_blank\";\r\n a.text = \"圖例\";\r\n widgetContent.append(a);\r\n document.querySelector(\".ov-widget-select.ov-widget-inputItem\").addEventListener(\"change\", (e) => {\r\n let selectedObj = JSON.parse(e.target.value);\r\n let legend = document.querySelector(\".ov-widget-BuildingOverlay-v-center.legend\");\r\n if (legend != null) {\r\n legend.remove();\r\n }\r\n if (selectedObj.id == \"LUIMAP\") {\r\n let a = document.createElement(\"a\");\r\n a.className = \"ov-widget-BuildingOverlay-v-center legend\";\r\n a.href = legendUrl;\r\n a.target = \"_blank\";\r\n a.text = \"圖例\";\r\n widgetContent.append(a);\r\n } else if (selectedObj.id == \"SoilLiquefaction2\") {\r\n let img = document.createElement(\"img\");\r\n img.className = \"ov-widget-BuildingOverlay-v-center legend\";\r\n img.style.margin = \"0 auto\";\r\n img.src = \"./img/SoilLiquefaction2Legend.png\";\r\n widgetContent.append(img);\r\n }\r\n });\r\n\r\n let closeBtn = document.querySelectorAll(\".ov-widget-BuildingOverlay-main .ov-widget-header .ov-ui-button\")[1];\r\n closeBtn.addEventListener(\"mouseup\", () => {\r\n let modelSet = window.main.OView.findLayer(\"nangang\");\r\n if (modelSet != null) {\r\n window.main.OView.removeLayer(modelSet);\r\n }\r\n });\r\n\r\n }\r\n showGmlPipeline() {\r\n let widget = new window.ov.Widget.GmlPipeline({ view: window.main.OView, urlTemplate: window.TERRAIN_SERVER.URLTemplate }); //選擇要綁定的terrainview並初始化介接GMLe管線操作Widget。\r\n widget._WidgetUI._PosX = 145;\r\n document.querySelector(\".ov-widget-gmlPipeline-main\").style.left = \"145px\";\r\n this.sidebarSwitch();\r\n window.main.OView.terrainAlpha = 0.3;\r\n let widgetContent = document.querySelector(\".ov-widget-gmlPipeline-container\");\r\n if (document.querySelector(\".set-terrain\") != null) {\r\n document.querySelector(\".set-terrain\").remove();\r\n }\r\n let setTerrain = document.createElement(\"div\");\r\n setTerrain.className = \"set-terrain\";\r\n setTerrain.innerHTML = '範例檔案

地形透視:30%

';\r\n widgetContent.prepend(setTerrain);\r\n document.getElementById(\"gmlTerrainAlpha\").addEventListener(\"change\", (e) => {\r\n let val = e.target.value;\r\n document.querySelector(\".set-terrain p\").innerText = `地形透視:${val}%`;\r\n window.main.OView.terrainAlpha = val/100;\r\n });\r\n }\r\n showLandAPI() {\r\n let widget = new window.ov.Widget.LandAPI({\r\n view: window.main.OView,\r\n urlTemplate: window.TERRAIN_SERVER.URLTemplate\r\n });\r\n widget._WidgetUI._PosX = 145;\r\n document.querySelector(\".ov-widget-LandApi-main\").style.left = \"145px\";\r\n this.sidebarSwitch();\r\n\r\n window.main.OView.gotoCamera(new window.ov.Camera(\r\n new window.GeoPoint(121.72172099819517, 25.111938318314614, 24000),\r\n new window.Geo3DPoint(0, 0, -1),\r\n new window.Geo3DPoint(0, 1, 0)\r\n ), false); // 基隆\r\n }\r\n render(){\r\n const isWidgetListOpen = this.props.isWidgetListOpen; \r\n const sideMenuCSS ={\r\n overflow : 'inherit',\r\n transform : isWidgetListOpen?'translate3d(0, 0, 0)':'translate3d(-120%, 0, 0)',\r\n width : '480px'\r\n };\r\n const titleCSS = {\r\n margin: '10px 10px 10px 10px' \r\n };\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n
\r\n Widget\r\n
\r\n

\r\n
\r\n
\r\n this.sidebarSwitch(e)}> \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default WidgetListSidebar;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport {OverlayLayer} from './LayerInfo/OverLayLayer';\r\nimport BaseLayer from './LayerInfo/BaseLayer';\r\nimport Layer3DGroup from './LayerInfo/Layer3DGroup';\r\nimport TerrainLayer from './LayerInfo/TerrainLayer';\r\nimport CovidBg from './images/COVID.png';\r\nimport IotBg from './images/IOT.png';\r\nimport NdviBg from './images/NDVI.png';\r\nimport AgriBg from './images/agriculture.png';\r\nimport FloodBg from './images/flood.png';\r\n\r\nclass OtherListSidebar extends React.Component{\r\n constructor() {\r\n super();\r\n this.sidebarSwitch = this.sidebarSwitch.bind(this);\r\n this.setOpenLayer = this.setOpenLayer.bind(this);\r\n }\r\n sidebarSwitch(){\r\n this.props.setOtherListOpen();\r\n }\r\n setOpenLayer(layer,layerHandelr){\r\n this.props.setOpenLayer(layer,layerHandelr);\r\n }\r\n render(){\r\n const isOtherListOpen = this.props.isOtherListOpen;\r\n const sideMenuCSS ={\r\n overflow : 'inherit',\r\n transform : isOtherListOpen?'translate3d(0, 0, 0)':'translate3d(-120%, 0, 0)',\r\n width : '480px'\r\n };\r\n const titleCSS = {\r\n margin: '10px 10px 10px 10px'\r\n };\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n
\r\n 其他應用\r\n
\r\n

\r\n
\r\n
\r\n this.sidebarSwitch(e)}> \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"臺灣疫調地圖示意圖\"\r\n

臺灣疫調地圖

\r\n
\r\n
\r\n
展示全臺各鄉鎮 COVID-19 累積確診人數之分布。
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"空汙即時資訊展示示意圖\"\r\n

空汙即時資訊展示

\r\n
\r\n
\r\n
連接自民生公共物聯網所提供的全臺空氣汙染感測器,能即時以柱狀圖等多樣方式展示空汙資料。
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"NDVI植物生長指數展示示意圖\"\r\n

NDVI植物生長指數展示

\r\n
\r\n
\r\n
全臺植物生長指數的展示範例(2011年份)。導入多年份的相關圖資後,即可清楚觀察植物生長環境的變化。
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \"農業應用\"\r\n

農業應用

\r\n
\r\n
\r\n
高雄市政府農業局智慧農業三維展示平台。
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"水利防汛\"\r\n

水利防汛

\r\n
\r\n
\r\n
台中市政府水利局-易淹水地區抽水站預警系統。
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default OtherListSidebar;","import React from 'react';\r\n\r\nclass CloudModule extends React.Component {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.state = {\r\n\t\t\tcloudModule: null,\r\n\t\t\tsurfaceHeight: 500,\r\n\t\t\theight: 250\r\n\t\t};\r\n\t\tthis.closeCard = this.closeCard.bind(this);\r\n\t\tthis.createCloud = this.createCloud.bind(this);\r\n\t\tthis.clearCloud = this.clearCloud.bind(this);\r\n\t}\r\n componentWillUnmount() {\r\n this.clearCloud();\r\n }\r\n\tcloseCard() {\r\n\t\tthis.clearCloud();\r\n\t\tthis.props.setCloudModuleOpen();\r\n\t}\r\n\tsurfaceHeightChange(e) {\r\n\t\tthis.setState({surfaceHeight: e.target.valueAsNumber});\r\n\t}\r\n\theightChange(e) {\r\n\t\tthis.setState({height: e.target.valueAsNumber});\r\n\t}\r\n\tcreateCloud() {\r\n\t\tconst {cloudModule, surfaceHeight, height} = this.state;\r\n\t\tvar _cloudModule = null;\r\n\t\tif (window.main !== null) {\r\n\t\t\tif (cloudModule === null) {\r\n\t\t\t\t_cloudModule = window.main.OView.getModule(\"cloud\");\r\n\t\t\t\tthis.setState({cloudModule: _cloudModule});\r\n\t\t\t} else {\r\n\t\t\t\t_cloudModule = cloudModule;\r\n\t\t\t}\r\n\t\t\twindow.main.OView.inputSurfacePolygon({\r\n\t\t\t\tonCompleted: function (res) {\r\n\t\t\t\t\tif (res.success) {\r\n\t\t\t\t\t\t_cloudModule.addCloudEntity({\r\n\t\t\t\t\t\t\tgeo: res.geo,\r\n\t\t\t\t\t\t\tsurfaceHeight: parseFloat(surfaceHeight),\r\n\t\t\t\t\t\t\theight: parseFloat(height)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tclearCloud () {\r\n\t\tconst {cloudModule} = this.state;\r\n\t\tif (cloudModule !== null) {\r\n\t\t\tcloudModule.removeAllCloudEntity();\r\n\t\t}\r\n\t}\r\n\trender() {\r\n\t\tconst isOpen = this.props.isOpen;\r\n\t\tconst cardStyle = {\r\n\t\t\tzIndex: \"100\",\r\n\t\t\ttransform: isOpen ? 'translate3d(0, 0, 0)' : 'translate3d(120%, 0, 0)',\r\n\t\t\tposition: \"fixed\",\r\n\t\t\ttop: \"3px\",\r\n\t\t\tright: \"10px\",\r\n\t\t\tmarginTop: \"5px\",\r\n\t\t\twidth: \"300px\"\r\n\t\t};\r\n\t\treturn (\r\n\t\t\t
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n 雲模組\r\n
\r\n
\r\n
\r\n 點擊下方按鈕選擇功能\r\n
\r\n
\r\n
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t 離地高\r\n\t
\r\n\t
\r\n\t
\r\n\t this.surfaceHeightChange(e)}>\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t 雲層高\r\n\t
\r\n\t
\r\n\t
\r\n\t this.heightChange(e)}>\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t \r\n\t
\r\n\t
\r\n\t \r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n\t
\r\n
\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default CloudModule;","/* eslint-disable jsx-a11y/anchor-is-valid */\r\n/* eslint-disable jsx-a11y/iframe-has-title */\r\nimport React from 'react';\r\nimport GlobalSettingSidebar from './GlobalSetting';\r\nimport LayerListSidebar from './LayerList';\r\nimport LayerOptionSidebar from './LayerOption';\r\nimport WidgetListSidebar from './WidgetListSidebar';\r\nimport OtherListSidebar from './OtherList';\r\nimport CloudModule from './CloudModule';\r\nimport { ParticleRain, ParticleExplosion } from './ParticleList';\r\nimport { format } from \"date-fns\";\r\nimport TimeRange from \"react-timeline-range-slider\";\r\n\r\nclass LegendBox extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n startX: 0,\r\n startY: 0\r\n }\r\n\r\n this.onMove = this.onMove.bind(this);\r\n this.onStop = this.onStop.bind(this);\r\n }\r\n componentDidMount(){\r\n let t = this;\r\n let name = '.drag' + this.props.index;\r\n let drag = document.querySelector(name);\r\n drag.addEventListener('mousedown', function (e) {\r\n e.preventDefault();\r\n let startX = e.clientX - drag.offsetLeft;\r\n let startY = e.clientY - drag.offsetTop;\r\n t.setState({startX, startY});\r\n window.addEventListener('mousemove', t.onMove, false);\r\n window.addEventListener('mouseup', t.onStop, false);\r\n });\r\n }\r\n onMove(e){\r\n let name = '.drag' + this.props.index;\r\n let drag = document.querySelector(name);\r\n let x = e.clientX - this.state.startX;\r\n let y = e.clientY - this.state.startY;\r\n drag.style.left = x + 'px';\r\n drag.style.top = y + 'px';\r\n drag.style.right = \"unset\";\r\n drag.style.bottom = \"unset\";\r\n }\r\n onStop(){\r\n let t = this;\r\n window.removeEventListener('mousemove', t.onMove, false);\r\n window.removeEventListener('mouseup', t.onStop, false);\r\n }\r\n render(){\r\n const {TITLE, COLOR, VALUE} = this.props.legendBoxContent;\r\n const index = this.props.index;\r\n let legendrag = \"legendBox drag\" + this.props.index;\r\n return(\r\n
\r\n
\r\n
\r\n
{TITLE}
\r\n {\r\n COLOR.map((val, index) => {\r\n return (\r\n <>\r\n \r\n {VALUE[index]} {(VALUE[index] === \"無資料\") ? null : (index == COLOR.length-1) ? ' 以上' : ' - '+VALUE[index + 1]}\r\n

\r\n \r\n )\r\n })\r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass StatusBar extends React.Component{\r\n constructor(){\r\n super();\r\n this.state = {\r\n camera : {\r\n x:0.00,\r\n y:0.00,\r\n z:0.00\r\n },\r\n FPSintervalId:{},\r\n TerrainintervalId:{},\r\n MouseintervalId:{},\r\n fps:0.0,\r\n terrainNod:0.00\r\n };\r\n this.cameraPOS = this.cameraPOS.bind(this);\r\n this.FPS = this.FPS.bind(this);\r\n this.getTerrainNod = this.getTerrainNod.bind(this);\r\n }\r\n componentDidMount(){\r\n var MouseintervalId = requestAnimationFrame(this.cameraPOS);\r\n var FPSintervalId = requestAnimationFrame(this.FPS);\r\n var TerrainintervalId = requestAnimationFrame(this.getTerrainNod);\r\n this.setState({FPSintervalId: FPSintervalId,TerrainintervalId:TerrainintervalId,MouseintervalId: MouseintervalId});\r\n }\r\n componentWillUnmount(){\r\n cancelAnimationFrame(this.state.MouseintervalId);\r\n cancelAnimationFrame(this.state.FPSintervalId);\r\n cancelAnimationFrame(this.state.TerrainintervalId);\r\n }\r\n cameraPOS(){\r\n var camera = window.main.OView.camera.pos;\r\n if(camera!==null)\r\n this.setState({camera:camera});\r\n requestAnimationFrame(this.cameraPOS);\r\n }\r\n FPS(){\r\n if(window.main !== null){\r\n var fps = (window.main.OView.getFPS()).toFixed(1);\r\n this.setState({fps:fps});\r\n requestAnimationFrame(this.FPS);\r\n } \r\n }\r\n getTerrainNod(){\r\n if(window.main !== null){\r\n var terrainNod = (window.main.OView.getTerrainNodeProgress()).toFixed(2);\r\n this.setState({terrainNod:terrainNod});\r\n requestAnimationFrame(this.getTerrainNod);\r\n }\r\n }\r\n render(){\r\n const x = this.state.camera.x;\r\n const y = this.state.camera.y;\r\n const z = this.state.camera.z>=1000 ? (this.state.camera.z/1000).toFixed(2) + \" 公里\" : (this.state.camera.z).toFixed(2)+\" 公尺\";\r\n const fps = this.state.fps;\r\n const terrainNod = this.state.terrainNod * 100;\r\n return(\r\n
\r\n
\r\n PilotGaea_v.13  \r\n {\r\n terrainNod === 100 ?\r\n \r\n :\r\n \r\n }\r\n {terrainNod + \"%\"}  FPS:{fps}  相機高度:{z}  相機經度:{x.toFixed(6)}  相機緯度:{y.toFixed(6)}\r\n
\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\n\r\nclass ToolBar extends React.Component{\r\n constructor() {\r\n super();\r\n this.state = {\r\n isSideMenu:[{\r\n globalSetting:false,\r\n layerList:false,\r\n layerOption:false,\r\n WidgetList: false,\r\n OtherList: false,\r\n googleSearch:false,\r\n IoTSensorThings:false \r\n }],\r\n isCard:[{\r\n surveying:false,\r\n analysis:false,\r\n cloudModule:false,\r\n particleRain:false,\r\n particleExplosion:false\r\n }],\r\n layerList : {\r\n Layer_2D:[],\r\n Layer_3D:[],\r\n Layer_Noise:[]\r\n },\r\n deleteList : {},\r\n LayerLength:0,\r\n modalIsOpen:false,\r\n isinfoBoxOpen:false,\r\n infoBoxAttr:{\r\n COL:[],\r\n ATTR:[]\r\n },\r\n showLegend: false,\r\n legendBoxContent:{\r\n TITLE: \"\",\r\n VALUE: [],\r\n COLOR: []\r\n },\r\n legendList: {\r\n title: [],\r\n legend: []\r\n },\r\n showTimeLine: false,\r\n TimeLineContent: {\r\n TIMElINEINTERVAL: [],\r\n SELECTEDINTERVAL: []\r\n },\r\n selectedInterval:[],\r\n timelineInterval:[],\r\n error: false,\r\n isPlay: false\r\n };\r\n this.setglobalSettingOpen = this.setglobalSettingOpen.bind(this);\r\n this.setWidgetListOpen = this.setWidgetListOpen.bind(this);\r\n this.setOtherListOpen = this.setOtherListOpen.bind(this);\r\n this.setlayerListOpen = this.setlayerListOpen.bind(this);\r\n this.setlayerOptionOpen = this.setlayerOptionOpen.bind(this); \r\n this.setgoogleSearchOpen = this.setgoogleSearchOpen.bind(this); \r\n this.setIoTSensorThingsOpen = this.setIoTSensorThingsOpen.bind(this);\r\n this.setSurveyingOpen = this.setSurveyingOpen.bind(this); \r\n this.setAnalysisOpen = this.setAnalysisOpen.bind(this); \r\n this.setCloudModuleOpen = this.setCloudModuleOpen.bind(this); \r\n this.setOpenLayer = this.setOpenLayer.bind(this);\r\n this.deleteLayer = this.deleteLayer.bind(this);\r\n this.closeModal = this.closeModal.bind(this);\r\n this.setinfoBoxOpen = this.setinfoBoxOpen.bind(this);\r\n this.setinfoBox = this.setinfoBox.bind(this);\r\n this.setLegendBoxSwitch = this.setLegendBoxSwitch.bind(this);\r\n this.setLegendBoxContent = this.setLegendBoxContent.bind(this);\r\n this.setTimeLineContent = this.setTimeLineContent.bind(this);\r\n }\r\n componentDidUpdate(){\r\n let selectedInterval = this.state.selectedInterval;\r\n document.querySelectorAll('.react_time_range__handle_wrapper').forEach(function (item, index) {\r\n item.setAttribute('data-attr', format(selectedInterval[index], 'yyyy-MM-dd HH'));\r\n });\r\n }\r\n setTimeLineInterval(){\r\n if (this.state.isPlay) {\r\n clearInterval(this.timerID);\r\n } else {\r\n this.timerID = setInterval(\r\n () => this.tick(),\r\n 1000\r\n );\r\n }\r\n this.setState({isPlay: !this.state.isPlay});\r\n }\r\n tick(){\r\n let next = new Date(this.state.selectedInterval[0]).getTime() + 3600*1000;\r\n let selectedInterval = [];\r\n if (next > new Date(this.state.selectedInterval[1]).getTime()) {\r\n selectedInterval = [\r\n this.state.timelineInterval[0],\r\n this.state.selectedInterval[1]\r\n ];\r\n } else {\r\n selectedInterval = [\r\n new Date(next),\r\n this.state.selectedInterval[1]\r\n ];\r\n }\r\n this.setState({selectedInterval});\r\n }\r\n setTimeLineContent(content){\r\n if (this.state.showTimeLine == false){\r\n this.setState({showTimeLine: !this.state.showTimeLine});\r\n }\r\n this.setState({selectedInterval: content.SELECTEDINTERVAL, timelineInterval: content.TIMElINEINTERVAL});\r\n }\r\n closeTimeline() {\r\n let layerList = this.state.layerList.Layer_Noise;\r\n let needTimeLine = false;\r\n layerList.forEach(function (layer) {\r\n if (layer.timeLine !== undefined)\r\n needTimeLine = true;\r\n });\r\n if (!needTimeLine && this.state.showTimeLine)\r\n this.setState({showTimeLine: !this.state.showTimeLine});\r\n }\r\n setLegendBoxContent(content){\r\n if (this.state.showLegend == false){\r\n this.setLegendBoxSwitch();\r\n }\r\n this.setState({legendBoxContent: content});\r\n }\r\n setLegendBoxSwitch(){\r\n this.setState({showLegend: !this.state.showLegend});\r\n }\r\n setLegendList(){\r\n let layerList = this.state.layerList.Layer_Noise;\r\n let legendList = {\r\n title: [],\r\n legend: []\r\n };\r\n layerList.forEach(function (layer) {\r\n if (layer.legend !== undefined) {\r\n if (!legendList.title.includes(layer.legend.TITLE)) {\r\n legendList.title.push(layer.legend.TITLE);\r\n legendList.legend.push(layer.legend);\r\n }\r\n }\r\n });\r\n this.setState({legendList});\r\n }\r\n setinfoBox(attr){\r\n this.setState({infoBoxAttr: attr});\r\n }\r\n setinfoBoxOpen(open = true){\r\n this.setState({isinfoBoxOpen: open});\r\n }\r\n closeModal() {\r\n this.setState({modalIsOpen: false});\r\n }\r\n setglobalSettingOpen(){\r\n const layerListOpen = [{\r\n globalSetting:!this.state.isSideMenu[0].globalSetting,\r\n layerList:false,\r\n layerOption: false,\r\n WidgetList: false,\r\n OtherList: false,\r\n googleSearch:false,\r\n IoTSensorThings:false \r\n }];\r\n this.setState({isSideMenu:layerListOpen});\r\n }\r\n setWidgetListOpen() {\r\n const layerListOpen = [{\r\n globalSetting: false,\r\n layerList: false,\r\n layerOption: false,\r\n WidgetList: !this.state.isSideMenu[0].WidgetList,\r\n OtherList: false,\r\n googleSearch: false,\r\n IoTSensorThings: false\r\n }];\r\n this.setState({ isSideMenu: layerListOpen });\r\n }\r\n setOtherListOpen() {\r\n const layerListOpen = [{\r\n globalSetting: false,\r\n layerList: false,\r\n layerOption: false,\r\n WidgetList: false,\r\n OtherList: !this.state.isSideMenu[0].OtherList,\r\n googleSearch: false,\r\n IoTSensorThings: false\r\n }];\r\n this.setState({ isSideMenu: layerListOpen });\r\n }\r\n setlayerListOpen(){\r\n const layerListOpen = [{\r\n globalSetting:false,\r\n layerList:!this.state.isSideMenu[0].layerList,\r\n layerOption:false,\r\n WidgetList: false,\r\n OtherList: false,\r\n googleSearch:false,\r\n IoTSensorThings:false\r\n }];\r\n this.setState({isSideMenu:layerListOpen});\r\n }\r\n setlayerOptionOpen(){\r\n const layerListOpen = [{\r\n globalSetting:false,\r\n layerList:false,\r\n layerOption:!this.state.isSideMenu[0].layerOption,\r\n WidgetList: false,\r\n OtherList: false,\r\n googleSearch:false,\r\n IoTSensorThings:false\r\n }];\r\n this.setState({isSideMenu:layerListOpen});\r\n }\r\n setgoogleSearchOpen(){\r\n const layerListOpen = [{\r\n globalSetting:false,\r\n layerList:false,\r\n layerOption: false,\r\n WidgetList: false,\r\n OtherList: false,\r\n googleSearch:!this.state.isSideMenu[0].googleSearch,\r\n IoTSensorThings:false\r\n }];\r\n this.setState({isSideMenu:layerListOpen});\r\n } \r\n setIoTSensorThingsOpen(){\r\n const layerListOpen = [{\r\n globalSetting:false,\r\n layerList:false,\r\n layerOption: false,\r\n WidgetList: false,\r\n OtherList: false,\r\n googleSearch:false,\r\n IoTSensorThings:!this.state.isSideMenu[0].IoTSensorThings\r\n }];\r\n this.setState({isSideMenu:layerListOpen});\r\n } \r\n setSurveyingOpen(){\r\n const CardOpen = [{\r\n surveying:!this.state.isCard[0].surveying,\r\n analysis:false\r\n }];\r\n this.setState({isCard:CardOpen});\r\n }\r\n setAnalysisOpen(){\r\n const CardOpen = [{\r\n surveying:false,\r\n analysis:!this.state.isCard[0].analysis\r\n }];\r\n this.setState({isCard:CardOpen});\r\n }\r\n setCloudModuleOpen(){\r\n const CardOpen = [{\r\n surveying:false,\r\n analysis:false,\r\n cloudModule:!this.state.isCard[0].cloudModule,\r\n particleRain:false,\r\n particleExplosion:false\r\n }];\r\n this.setState({isCard:CardOpen});\r\n }\r\n setParticleRainOpen(){\r\n const CardOpen = [{\r\n surveying:false,\r\n analysis:false,\r\n cloudModule:false,\r\n particleRain:!this.state.isCard[0].particleRain,\r\n particleExplosion:false\r\n }];\r\n this.setState({isCard:CardOpen});\r\n }\r\n setParticleExplosionOpen(){\r\n const CardOpen = [{\r\n surveying:false,\r\n analysis:false,\r\n cloudModule:false,\r\n particleRain:false,\r\n particleExplosion:!this.state.isCard[0].particleExplosion\r\n }];\r\n this.setState({isCard:CardOpen});\r\n }\r\n setOpenLayer(layer,layerHandel){\r\n let openLayer = this.state.layerList;\r\n if (layer.TYPE === \"ConditionOverlay\") {\r\n let layer2D = openLayer.Layer_2D;\r\n if (layer2D.length == 0) {\r\n openLayer.Layer_2D.push({\r\n layerName : layer.TITLE,\r\n layerType : layer.TYPE\r\n });\r\n } else {\r\n layer2D.forEach(function (l) {\r\n if (l.layerType == \"ConditionOverlay\") {\r\n l.layerName = layer.TITLE;\r\n }\r\n });\r\n }\r\n } else if (layer.TYPE === \"Overlay\"){\r\n openLayer.Layer_2D.push({\r\n layerName : layer.TITLE,\r\n layerType : layer.TYPE\r\n });\r\n }\r\n else {\r\n if (layer.GROUP !== undefined && layer.GROUP == \"noise\") {\r\n openLayer.Layer_Noise.push({\r\n group : layer.GROUP,\r\n layerName : layer.TITLE,\r\n id : layer.ID,\r\n layerType : layer.TYPE,\r\n layerMode : layer.MODE,\r\n layerClass : layer.CLASS,\r\n layerLocation : layer.LOCATION,\r\n layerHandel : layerHandel,\r\n isBIMModel : layer.ISBIM,\r\n BIMAttrsList : layer.BIMATTRS,\r\n VideoPath : layer.VideoPath,\r\n VideoPOS : layer.VideoPOS,\r\n VideoV : layer.VideoV,\r\n VideoUP : layer.VideoUP,\r\n HFov : layer.HFov,\r\n VFov : layer.VFov,\r\n Far : layer.Far,\r\n Near : layer.Near,\r\n ImgW : layer.ImgW,\r\n ImgH : layer.ImgH,\r\n URL : layer.URL,\r\n timeLine : layer.TIMELINE,\r\n legend : layer.LEGEND\r\n });\r\n } else {\r\n openLayer.Layer_3D.push({\r\n layerName : layer.TITLE,\r\n id : layer.ID,\r\n layerType : layer.TYPE,\r\n layerMode : layer.MODE,\r\n layerClass : layer.CLASS,\r\n layerLocation : layer.LOCATION,\r\n layerHandel : layerHandel,\r\n isBIMModel : layer.ISBIM,\r\n BIMAttrsList : layer.BIMATTRS,\r\n VideoPath : layer.VideoPath,\r\n VideoPOS : layer.VideoPOS,\r\n VideoV : layer.VideoV,\r\n VideoUP : layer.VideoUP,\r\n HFov : layer.HFov,\r\n VFov : layer.VFov,\r\n Far : layer.Far,\r\n Near : layer.Near,\r\n ImgW : layer.ImgW,\r\n ImgH : layer.ImgH,\r\n URL : layer.URL,\r\n });\r\n }\r\n }\r\n let LayerLength = openLayer.Layer_2D.length+openLayer.Layer_3D.length+openLayer.Layer_Noise.length;\r\n this.setState({layerList:openLayer,deleteList:{},LayerLength:LayerLength});\r\n this.setLegendList();\r\n }\r\n deleteLayer(layer){\r\n let deleteLayerList = this.state.layerList;\r\n let DeleteList = {\r\n layerName : layer.TITLE,\r\n layerType : layer.TYPE\r\n };\r\n if(layer.TYPE === \"Overlay\" || layer.TYPE == \"ConditionOverlay\"){\r\n for (let i = 0, len = deleteLayerList.Layer_2D.length; i < len; i++){\r\n if (deleteLayerList.Layer_2D[i].layerName === layer.TITLE){\r\n deleteLayerList.Layer_2D.splice(i, 1);\r\n let LayerLength = deleteLayerList.Layer_2D.length+deleteLayerList.Layer_3D.length+deleteLayerList.Layer_Noise.length;\r\n this.setState({layerList:deleteLayerList,deleteList:DeleteList,LayerLength:LayerLength});\r\n return ;\r\n }\r\n }\r\n } else if (layer.GROUP != undefined && layer.GROUP == \"noise\") {\r\n for (let i = 0, len = deleteLayerList.Layer_Noise.length; i < len; i++){\r\n if (deleteLayerList.Layer_Noise[i].layerName === layer.TITLE){\r\n deleteLayerList.Layer_Noise.splice(i, 1);\r\n let LayerLength = deleteLayerList.Layer_2D.length + deleteLayerList.Layer_3D.length+deleteLayerList.Layer_Noise.length;\r\n this.setState({layerList:deleteLayerList,deleteList:DeleteList,LayerLength:LayerLength});\r\n this.setLegendList();\r\n this.closeTimeline();\r\n return ;\r\n }\r\n }\r\n } else {\r\n for (let i = 0, len = deleteLayerList.Layer_3D.length; i < len; i++){\r\n if (deleteLayerList.Layer_3D[i].layerName === layer.TITLE){\r\n deleteLayerList.Layer_3D.splice(i, 1);\r\n let LayerLength = deleteLayerList.Layer_2D.length + deleteLayerList.Layer_3D.length+deleteLayerList.Layer_Noise.length;\r\n this.setState({layerList:deleteLayerList,deleteList:DeleteList,LayerLength:LayerLength});\r\n return ;\r\n }\r\n }\r\n }\r\n }\r\n errorHandler = ({ error }) => this.setState({ error });\r\n onChangeCallback = (selectedInterval) => this.setState({selectedInterval});\r\n render(){\r\n const globalSetting = this.state.isSideMenu[0].globalSetting;\r\n const layerListOpen = this.state.isSideMenu[0].layerList;\r\n const layerOptionOpen = this.state.isSideMenu[0].layerOption;\r\n const WidgetListOpen = this.state.isSideMenu[0].WidgetList;\r\n const OtherListOpen = this.state.isSideMenu[0].OtherList;\r\n const LayerLength = this.state.LayerLength;\r\n const legendList = this.state.legendList;\r\n const Layer_2D_Length = (this.state.layerList.Layer_2D).length;\r\n const infoBoxOpen = this.state.isinfoBoxOpen;\r\n const showTimeLine = this.state.showTimeLine;\r\n const {error, timelineInterval, selectedInterval} = this.state;\r\n\r\n let active ;\r\n if(this.state.modalIsOpen)\r\n active = \"ts modals dimmer active\";\r\n else\r\n active = \"ts modals dimmer\";\r\n \r\n return(\r\n
\r\n
\r\n \r\n \r\n
\r\n 系統設備性能檢測\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n this.setOpenLayer(layer,layerHandel)}\r\n setinfoBox = {(attr)=>this.setinfoBox(attr)}\r\n setinfoBoxOpen = {this.setinfoBoxOpen}\r\n setLegendBoxSwitch = {this.setLegendBoxSwitch}\r\n setLegendBoxContent = {this.setLegendBoxContent}\r\n setTimeLineContent = {this.setTimeLineContent}\r\n deleteLayer = {(layer)=>this.deleteLayer(layer)}\r\n deleteList = {this.state.deleteList}\r\n LayerLength = {Layer_2D_Length}\r\n currentTime={selectedInterval}\r\n setCloudModuleOpen={this.setCloudModuleOpen}\r\n setParticleRainOpen={this.setParticleRainOpen.bind(this)}\r\n setParticleExplosionOpen={this.setParticleExplosionOpen.bind(this)}\r\n />\r\n this.deleteLayer(layer)}\r\n LayerList = {this.state.layerList}\r\n currentTime={selectedInterval}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n legendList.legend.map((legend, index) => {\r\n return \r\n })\r\n }\r\n
\r\n this.setTimeLineInterval()}>\r\n format(new Date(ms), 'yyyy-MM-dd HH')}\r\n />\r\n
\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nclass InfoBox extends React.Component{\r\n constructor() {\r\n super();\r\n this.infoBoxSwitch = this.infoBoxSwitch.bind(this);\r\n }\r\n infoBoxSwitch(open){\r\n this.props.setinfoBoxOpen(open);\r\n }\r\n render(){\r\n const isinfoBoxOpen = this.props.isinfoBoxOpen;\r\n const infoBoxStyle = {\r\n transform: isinfoBoxOpen?'translate3d(0, 0, 0)':'translate3d(120%, 0, 0)',\r\n transition: \"0.2s\",\r\n position: \"fixed\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n width: \"20vw\",\r\n maxWidth: \"400px\"\r\n };\r\n const {COL, ATTR} = this.props.infoBoxAttr;\r\n const en_zh = {\r\n NO: \"建物編號\",\r\n roofElevat: \"頂樓高度(公尺)\",\r\n floors: \"樓層數\",\r\n noice: \"每小時均能音量(dBA)\"\r\n }\r\n return(\r\n
\r\n
\r\n this.infoBoxSwitch(false)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n COL.map((col, index) => {\r\n if (index > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n })\r\n }\r\n \r\n
屬性資料
{en_zh[col]}{ATTR[index]}
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ToolBar;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport ToolBar from './MenuSide';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(, document.getElementById('root'), function () {\r\n// console.log(\"render done.\");\r\n// SetDefaultObj(); // 使用 callback 無效。似乎還是在整個圖台結構建立完之前\r\n setTimeout(SetDefaultObj, 3000); // 假設 3秒後整個圖台結構立完成\r\n});\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n\r\n// ==============================================\r\n\r\nfunction getURLParameter(name)\r\n{\r\n return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(window.location.search) || [null, ''])[1].replace(/\\+/g, '%20')) || null;\r\n}\r\nfunction SetDefaultObj()\r\n{\r\n let id = getURLParameter(\"id\");\r\n\r\n console.log(\"Load default object: \" + id);\r\n\r\n if(id != null)\r\n {\r\n document.getElementById(id).click();\r\n }\r\n}\r\n\r\n"],"sourceRoot":""}