From bb33e8a8cdba22cfad48cae65101910b1abdbc6c Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sun, 3 Sep 2023 04:28:23 -0500 Subject: [PATCH] Stage 1 and 2 completed. --- olcCodeJam2023Entry/GameFlags.h | 1 + olcCodeJam2023Entry/Scenario.cpp | 141 ++++++++++++++++++++--- olcCodeJam2023Entry/Scenario.h | 4 +- olcCodeJam2023Entry/Sound.h | 1 + olcCodeJam2023Entry/VirusAttack.cpp | 94 ++++++++------- olcCodeJam2023Entry/VirusAttack.h | 2 + olcCodeJam2023Entry/assets/round_bar.png | Bin 576 -> 4291 bytes olcCodeJam2023Entry/pge.data | Bin 24582412 -> 24592526 bytes olcCodeJam2023Entry/pge.js | 2 +- olcCodeJam2023Entry/pge.wasm | Bin 1067366 -> 1071467 bytes 10 files changed, 190 insertions(+), 55 deletions(-) diff --git a/olcCodeJam2023Entry/GameFlags.h b/olcCodeJam2023Entry/GameFlags.h index 22974de..4372797 100644 --- a/olcCodeJam2023Entry/GameFlags.h +++ b/olcCodeJam2023Entry/GameFlags.h @@ -5,4 +5,5 @@ struct GameFlags{ bool playerInControl=false; bool limitedBuildOptions=false; bool guideEnabled=true; + bool flashMemoryBar=false; }; \ No newline at end of file diff --git a/olcCodeJam2023Entry/Scenario.cpp b/olcCodeJam2023Entry/Scenario.cpp index 3d26e6b..8ecb924 100644 --- a/olcCodeJam2023Entry/Scenario.cpp +++ b/olcCodeJam2023Entry/Scenario.cpp @@ -22,6 +22,10 @@ void Scenario::Start(){}; void Scenario::_Update(){ initialWaitTime=std::max(0.f,initialWaitTime-game.GetPGE()->GetElapsedTime()); missionFinishWaitTime=std::max(0.f,missionFinishWaitTime-game.GetPGE()->GetElapsedTime()); + smallTimePass=std::min(1.f,smallTimePass+game.GetPGE()->GetElapsedTime()); + if(flags.playerInControl){ + smallTimePass=0; + } if(missionCompleted){ missionCompletedTimer+=game.GetPGE()->GetElapsedTime(); } else { @@ -54,7 +58,8 @@ void Scenario::Draw(){ Resources temp={0,0,0,0,0}; box.UpdateAndDraw({24,64},game.GetPGE(),temp,IMAGES,0,0); } -void Scenario::SetCameraTarget(vf2d pos){ +void Scenario::SetCameraTarget(vf2d pos,bool instant){ + if(instant){camera.SetMode(utils::Camera2D::Mode::Simple);} else {camera.SetMode(utils::Camera2D::Mode::LazyFollow);} targetPos=pos; camera.SetTarget(targetPos); camera.Update(game.GetPGE()->GetElapsedTime()); @@ -63,6 +68,14 @@ void Scenario::SetCameraTarget(vf2d pos){ void Scenario::SetObjective(std::string objective){ this->objective=objective; } +void Scenario::RevealTiles(vf2d pos){ + for(int y=-1;y<=1;y++){ + for(int x=-1;x<=1;x++){ + vi2d basePos={int(pos.x+x*96),int(pos.y+y*96)}; + TileManager::visibleTiles[{basePos.x/96,basePos.y/96}]=30; + } + } +} Stage1::Stage1(std::vector>&units,std::vector>&IMAGES,std::vector>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags) :Scenario(units,IMAGES,SOUNDS,objective,game,flags){} void Stage1::Start(){ @@ -71,7 +84,9 @@ void Stage1::Start(){ nextLevel=LevelName::STAGE2; }; void Scenario::DisplayBox(std::string text,bool scaryHoodedFigure){ - box.Initialize(text,{24,64},"",scaryHoodedFigure?IMAGES[SPOOK_HOODED_FIGURE].get():IMAGES[HOODED_FIGURE].get(),{378,28},SOUNDS[Sound::VOICEOVER].get()); + if(smallTimePass==1){ + box.Initialize(text,{24,64},"",scaryHoodedFigure?IMAGES[SPOOK_HOODED_FIGURE].get():IMAGES[HOODED_FIGURE].get(),{378,28},SOUNDS[Sound::VOICEOVER].get()); + } } void Stage1::Update(){ switch(state){ @@ -86,12 +101,7 @@ void Stage1::Update(){ if(box.bPressed){ state=2; SOUNDS[Sound::PING]->PlayCentered(); - for(int y=-1;y<=1;y++){ - for(int x=-1;x<=1;x++){ - vi2d basePos={320+x*96,320+y*96}; - TileManager::visibleTiles[{basePos.x/96,basePos.y/96}]=30; - } - } + RevealTiles({320,320}); } }break; case 2:{ @@ -113,7 +123,7 @@ void Stage1::Update(){ } }break; case 5:{ - DisplayBox("The yellow bar represent units' allocated Health memory. Take out the enemies' and make sure you always have at least 1 bit of it."); + DisplayBox("The yellow bars represent units' allocated Health memory. Take out the enemies' and make sure you always have at least 1 bit of it."); if(box.bPressed){ state=6; } @@ -148,17 +158,122 @@ bool Stage1::MissionCompleted(){ Stage2::Stage2(std::vector>&units,std::vector>&IMAGES,std::vector>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags) :Scenario(units,IMAGES,SOUNDS,objective,game,flags){} void Stage2::Start(){ + flags.playerInControl=false; + flags.limitedBuildOptions=true; nextLevel=LevelName::STAGE3; }; void Stage2::Update(){ switch(state){ - case 0:{ - - }break; + case 0:{ + SetCameraTarget({7*24,10*24},true); + DisplayBox("You took care of that sector flawlessly Hacker, this next one needs a bit more hand-holding."); + if(box.bPressed){ + state=1; + } + }break; + case 1:{ + DisplayBox("We have analyzed the data from the RAM bank and can now create one. Go ahead and select the Platform here and construct one."); + if(box.bPressed){ + state=2; + box.SetVisible(false); + flags.playerInControl=true; + } + }break; + case 2:{ + for(auto&u:units){ + if(u->IsRAMBank()&&u->IsFriendly()){ + state=3; + flags.playerInControl=false; + break; + } + } + }break; + case 3:{ + DisplayBox("Excellent, each RAM bank has the capability to allocate memory into the system. See that indicator down below?"); + flags.flashMemoryBar=true; + if(box.bPressed){ + state=4; + } + }break; + case 4:{ + DisplayBox("This sector lets us allocate 30 bytes of RAM. That's 240 bits for the savvy folks out there."); + if(box.bPressed){ + state=5; + flags.flashMemoryBar=false; + } + }break; + case 5:{ + DisplayBox("Some of it has already been used up by our RAM bank and other system resources... "); + if(box.bPressed){ + state=6; + } + }break; + case 6:{ + DisplayBox("To allocate 5 bits, select the RAM bank and click the Memory Allocator button.\n\nGive it a try now."); + if(box.bPressed){ + state=7; + box.SetVisible(false); + flags.playerInControl=true; + } + }break; + case 7:{ + for(auto&u:units){ + if(u->IsAllocator()&&u->IsFriendly()){ + state=8; + flags.playerInControl=false; + break; + } + } + }break; + case 8:{ + DisplayBox("Now select the memory allocator and let's make a Shifter unit."); + if(box.bPressed){ + state=9; + box.SetVisible(false); + flags.playerInControl=true; + } + }break; + case 9:{ + for(auto&u:units){ + if(!u->IsAllocator()&&!u->IsRAMBank()&&u->IsFriendly()){ + state=10; + flags.playerInControl=false; + break; + } + } + }break; + case 10:{ + DisplayBox("The memory shifters will be your primary way to delete memory from units."); + if(box.bPressed){ + state=11; + SOUNDS[Sound::ALARM]->PlayCentered(); + } + }break; + case 11:{ + SetCameraTarget({22*24,23*24}); + RevealTiles({22*24,23*24}); + if(camera.ReachedTarget()){ + state=12; + } + }break; + case 12:{ + SetObjective("Defeat all enemy units."); + DisplayBox("I have detected viruses in the system again. Please eradicate them and free system resources."); + if(box.bPressed){ + state=13; + flags.playerInControl=true; + box.SetVisible(false); + } + }break; } }; bool Stage2::MissionCompleted(){ - return false; + for(auto&u:units){ + if(!u->IsFriendly()){ + return false; + } + } + return true; } Stage3::Stage3(std::vector>&units,std::vector>&IMAGES,std::vector>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags) :Scenario(units,IMAGES,SOUNDS,objective,game,flags){} diff --git a/olcCodeJam2023Entry/Scenario.h b/olcCodeJam2023Entry/Scenario.h index f864c0c..6f59f29 100644 --- a/olcCodeJam2023Entry/Scenario.h +++ b/olcCodeJam2023Entry/Scenario.h @@ -19,8 +19,9 @@ public: LevelName nextLevel=LevelName::STAGE1; protected: void DisplayBox(std::string text,bool scaryHoodedFigure=false); - void SetCameraTarget(vf2d pos); + void SetCameraTarget(vf2d pos,bool instant=false); void SetObjective(std::string objective); + void RevealTiles(vf2d pos); virtual bool MissionCompleted(); virtual void Update(); int state=0; @@ -31,6 +32,7 @@ protected: bool missionCompleted=false; float missionFinishWaitTime=3; float missionCompletedTimer=0; + float smallTimePass=0; std::vector>&units; std::vector>&IMAGES; std::vector>&SOUNDS; diff --git a/olcCodeJam2023Entry/Sound.h b/olcCodeJam2023Entry/Sound.h index a362287..5980244 100644 --- a/olcCodeJam2023Entry/Sound.h +++ b/olcCodeJam2023Entry/Sound.h @@ -9,5 +9,6 @@ namespace Sound{ BOSS2, VOICEOVER, PING, + ALARM, }; } \ No newline at end of file diff --git a/olcCodeJam2023Entry/VirusAttack.cpp b/olcCodeJam2023Entry/VirusAttack.cpp index 4589273..27dc0ba 100644 --- a/olcCodeJam2023Entry/VirusAttack.cpp +++ b/olcCodeJam2023Entry/VirusAttack.cpp @@ -101,11 +101,12 @@ void VirusAttack::InitializeLevelData(){ levelData[stage].name=stage; levelData[stage].cameraStart={96,96}; levelData[stage].worldZoom={1,1}; - levelData[stage].levelColor=DARK_RED; + levelData[stage].levelColor=DARK_GREEN; levelData[stage].size={24,24}; levelData[stage].bgm=Sound::GRAVITY; levelData[stage].scenarioIndex=int(stage); - levelData[stage].player_starting_resources={500,500,500,500,500}; + levelData[stage].availableMemory=240; + levelData[stage].player_starting_resources={5,5,5,5,5}; levelData[stage].enemy_starting_resources={0,0,0,0,0}; { std::vector&units=levelData[stage].unitPlacement; @@ -124,19 +125,23 @@ void VirusAttack::InitializeLevelData(){ levelData[stage].name=stage; levelData[stage].cameraStart={96,96}; levelData[stage].worldZoom={1,1}; - levelData[stage].size={16,16}; + levelData[stage].size={30,30}; levelData[stage].levelColor=DARK_GREEN; levelData[stage].bgm=Sound::GRAVITY; levelData[stage].scenarioIndex=int(stage); - levelData[stage].player_starting_resources={10,10,10,10,10}; + levelData[stage].availableMemory=240; + levelData[stage].player_starting_resources={50,30,40,30,55}; levelData[stage].enemy_starting_resources={0,0,0,0,0}; { std::vector&units=levelData[stage].unitPlacement; std::vector&collectionPoints=levelData[stage].cpPlacement; - units.push_back({UnitType::RAMBank,vf2d{134,134},true}); + units.push_back({UnitType::_Platform,vf2d{7*24,10*24},true}); - units.push_back({UnitType::RAMBank,vf2d{1200,1200},false}); + units.push_back({UnitType::RightShifter,vf2d{20*24,21*24},false}); + units.push_back({UnitType::LeftShifter,vf2d{20*24,22*24},false}); + units.push_back({UnitType::MemoryAllocator,vf2d{22*24,24*24},false}); + units.push_back({UnitType::RAMBank,vf2d{22*24,23*24},false}); } } #pragma endregion @@ -297,6 +302,7 @@ void VirusAttack::InitializeSounds(){ LoadSound(Sound::BOSS2,"boss2.mp3"); LoadSound(Sound::VOICEOVER,"voice.mp3"); LoadSound(Sound::PING,"ping.mp3"); + LoadSound(Sound::ALARM,"alarm.mp3"); } bool VirusAttack::UnitCreationClickHandled(){ @@ -326,9 +332,9 @@ bool VirusAttack::UnitCreationClickHandled(){ CheckClick(MemoryGuard,memoryGuardButton,IsPlatform) return false; } -#define EnableAndHoverCheck(UnitClass,Button,box,limited) \ - Button->Enable(CanAfford(player_resources,UnitClass::resourceCost)&&(!limited||limited&&!flags.limitedBuildOptions)); \ - if(limited&&!flags.limitedBuildOptions){Button->bVisible=false;} \ +#define EnableAndHoverCheck(UnitClass,Button,box,allowed) \ + Button->Enable(CanAfford(player_resources,UnitClass::resourceCost)&&allowed); \ + if(!allowed){Button->bVisible=false;} \ if(Button->bHover){ \ box.Initialize(UnitClass::unitDescription, GetMousePos(), UnitClass::unitName,nullptr,{120,36},nullptr,UnitClass::resourceCost); \ hovering=true; \ @@ -343,13 +349,13 @@ void VirusAttack::UpdateUnitCreationListGUI(bool allocatorSelected){ unitCreationList.DisplayAllControls(allocatorSelected); bool hovering=false; - EnableAndHoverCheck(LeftShifter,leftShifterButton,unitCreationBox,false) - EnableAndHoverCheck(RightShifter,rightShifterButton,unitCreationBox,false) - EnableAndHoverCheck(BitRestorer,bitRestorerButton,unitCreationBox,true) - EnableAndHoverCheck(MemorySwapper,memorySwapperButton,unitCreationBox,true) - EnableAndHoverCheck(BitRestorer,bitRestorerButton,unitCreationBox,true) - EnableAndHoverCheck(Corrupter,corrupterButton,unitCreationBox,true) - EnableAndHoverCheck(_Platform,platformButton,unitCreationBox,true) + EnableAndHoverCheck(LeftShifter,leftShifterButton,unitCreationBox,true) + EnableAndHoverCheck(RightShifter,rightShifterButton,unitCreationBox,true) + EnableAndHoverCheck(BitRestorer,bitRestorerButton,unitCreationBox,!flags.limitedBuildOptions) + EnableAndHoverCheck(MemorySwapper,memorySwapperButton,unitCreationBox,!flags.limitedBuildOptions) + EnableAndHoverCheck(BitRestorer,bitRestorerButton,unitCreationBox,!flags.limitedBuildOptions) + EnableAndHoverCheck(Corrupter,corrupterButton,unitCreationBox,!flags.limitedBuildOptions) + EnableAndHoverCheck(_Platform,platformButton,unitCreationBox,!flags.limitedBuildOptions) if(!hovering){ unitCreationBox.SetVisible(false); @@ -361,10 +367,10 @@ void VirusAttack::UpdateUnitCreationListGUI(bool allocatorSelected){ void VirusAttack::UpdatePlatformCreationListGUI(bool platformSelected){ platformCreationList.DisplayAllControls(platformSelected); bool hovering=false; - EnableAndHoverCheck(RAMBank,ramBankButton,platformCreationBox,false) - EnableAndHoverCheck(Refresher,refresherButton,platformCreationBox,true) - EnableAndHoverCheck(Turret,turretButton,platformCreationBox,true) - EnableAndHoverCheck(MemoryGuard,memoryGuardButton,platformCreationBox,true) + EnableAndHoverCheck(RAMBank,ramBankButton,platformCreationBox,true) + EnableAndHoverCheck(Refresher,refresherButton,platformCreationBox,!flags.limitedBuildOptions) + EnableAndHoverCheck(Turret,turretButton,platformCreationBox,!flags.limitedBuildOptions) + EnableAndHoverCheck(MemoryGuard,memoryGuardButton,platformCreationBox,!flags.limitedBuildOptions) if(!hovering){ platformCreationBox.SetVisible(false); @@ -375,23 +381,6 @@ void VirusAttack::UpdatePlatformCreationListGUI(bool platformSelected){ void VirusAttack::HandleDraggingSelection(){ auto NotClickingOnMinimap=[&](){return !(GetMouseX()>=ScreenWidth()-64&&GetMouseY()>=ScreenHeight()-64);}; - bool allocatorSelected=false; - bool platformSelected=false; - bool memoryAllocatorBoxHovered=false; - for(auto&u:units){ - u->UpdateGUIState(gametv,player_resources,memoryAllocatorBox,memoryAllocatorBoxHovered,GetTotalUsedMemory(),currentLevel->availableMemory); - if(u->IsSelected()){ - if(u->IsAllocator()){ - allocatorSelected=true; - } else - if(u->IsPlatform()){ - platformSelected=true; - } - } - } - if(!memoryAllocatorBoxHovered)memoryAllocatorBox.SetVisible(false); - UpdateUnitCreationListGUI(allocatorSelected); - UpdatePlatformCreationListGUI(platformSelected); if(GetMouse(0).bPressed){ if(NotClickingOnMinimap()){ for(auto&u:units){ @@ -777,12 +766,17 @@ bool VirusAttack::OnUserUpdate(float fElapsedTime){ #pragma endregion #pragma region GAMEPLAY case GameState::GAMEPLAY:{ + HandleGUIDisplay(); if(flags.playerInControl){ HandleDraggingSelection(); HandleRightClickMove(); HandlePanAndZoom(fElapsedTime); HandleMinimapClick(); } + flashTimer+=fElapsedTime*2; + if(flashTimer>1){ + flashTimer--; + } SCENARIOS[currentScenario]->_Update(); if(SCENARIOS[currentScenario]->transitionToNextLevel){ if(SCENARIOS[currentScenario]->nextLevel!=FINISH){ @@ -1039,11 +1033,11 @@ void VirusAttack::DrawSystemMemoryBar(float fElapsedTime){ } FillRectDecal(barPos+vf2d{barOffset+actualBarWidth+3-2,1.f},{2,3},RED); - DrawPartialDecal(barPos,{3,5},IMAGES[ROUND_BAR]->Decal(),{0,0},{3,5}); + DrawPartialDecal(barPos,{3,5},IMAGES[ROUND_BAR]->Decal(),{0,0},{3,5},flags.flashMemoryBar?PixelLerp(BLACK,CONSTANT::INCREASE_VALUE_COLOR,flashTimer):BLACK); for(int i=barPos.x+3;iDecal(),{2,0},{1,5}); + DrawPartialDecal(barPos+vf2d{3,0},{barWidth,5},IMAGES[ROUND_BAR]->Decal(),{2,0},{1,5},flags.flashMemoryBar?PixelLerp(BLACK,CONSTANT::INCREASE_VALUE_COLOR,flashTimer):BLACK); } - DrawPartialDecal(barPos+vf2d{3+barWidth,0},{3,5},IMAGES[ROUND_BAR]->Decal(),{2,0},{3,5}); + DrawPartialDecal(barPos+vf2d{3+barWidth,0},{3,5},IMAGES[ROUND_BAR]->Decal(),{2,0},{3,5},flags.flashMemoryBar?PixelLerp(BLACK,CONSTANT::INCREASE_VALUE_COLOR,flashTimer):BLACK); vf2d textPos=barPos+vf2d{barWidth+6+4,0}; if(GetTotalUsedMemory()>lastTotalMemory){ memoryIncreased=true; @@ -1272,6 +1266,26 @@ void VirusAttack::DrawCurvedTexture(vf2d offset,vf2d size,Decal*decal,vf2d texOf SetDecalStructure(DecalStructure::FAN); } +void VirusAttack::HandleGUIDisplay(){ + bool allocatorSelected=false; + bool platformSelected=false; + bool memoryAllocatorBoxHovered=false; + for(auto&u:units){ + u->UpdateGUIState(gametv,player_resources,memoryAllocatorBox,memoryAllocatorBoxHovered,GetTotalUsedMemory(),currentLevel->availableMemory); + if(u->IsSelected()){ + if(u->IsAllocator()){ + allocatorSelected=true; + } else + if(u->IsPlatform()){ + platformSelected=true; + } + } + } + if(!memoryAllocatorBoxHovered)memoryAllocatorBox.SetVisible(false); + UpdateUnitCreationListGUI(allocatorSelected); + UpdatePlatformCreationListGUI(platformSelected); +} + int main() { VirusAttack app; diff --git a/olcCodeJam2023Entry/VirusAttack.h b/olcCodeJam2023Entry/VirusAttack.h index b29b0e7..c48e88c 100644 --- a/olcCodeJam2023Entry/VirusAttack.h +++ b/olcCodeJam2023Entry/VirusAttack.h @@ -108,12 +108,14 @@ public: float textOrientationX=0; int currentScenario=0; GameFlags flags; + float flashTimer=0; std::string objective=""; vf2d randomBackgroundOffset; vf2d startingDragPos=CONSTANT::UNSELECTED; + void HandleGUIDisplay(); void HandleDraggingSelection(); void DrawSelectionRectangle(); void HandleRightClickMove(); diff --git a/olcCodeJam2023Entry/assets/round_bar.png b/olcCodeJam2023Entry/assets/round_bar.png index 7e6bdfc1659839e5505af8c7659e3767271225f5..e6ed4ae42886b30e10320e5b0e7aad91b0bc1782 100644 GIT binary patch literal 4291 zcmeHKYitu&7M_%pJPBE#NlBoYINd-B;~78WnYA0Tc1YaCU>rlz7D}#XuI<^_9>+6| z9lAh)W_h$cThtW-Wfzk0kb;&+TL|g`Y9rVUE$nVrty)xxbldd7Hl(ylq^8T>8Rx03 zR7Gn4Wvubcoco>cp7Wh^uV!{Qmsie6&r8QJY=*tc=0ev8GeNz*n`yYKDqEWg^-knCr;m66o2dQ z;=RKD<7N3x+4)DLwdXz^l6n^i*S@{DZ_!>;@jrVC;zgjQwWww7%GaI>t$5nodGwje zw(xQ~r+HPo>rCOPWl#P22F&ezJMhNJybQ~ZqOvFE9*iGYn7rtSwe3!2>y@WppXIDN z>>4aS@k&q0;DNo^C!cQ3JKQ~V>+M&M77X@2d3#22cH`NWM|!$2Ea`dPYIWMJ){(qX zwud(CvsAsgWM0?0>aNEgO8M1x6X)-`qJFHW_GE2xMq9_tlUx7Vw(e$Yp}nDD&YFy@ zjf+>$UvnrL4L_88WoC9w?t+TklKxHhKUKV#a`pRotgm4pEBoN8_JbD9l7B5OI=uab z3qvR0AK1BZ@E4bpRkL*8a$ZfwjsED&f^~gI%-!GJYGIuvf5^PM<1I~leop`N{yXh$ z;ztXzPM>MbZkfFzPb%-JJk_nf)S#vp-@U$fpX0{tZQHwCx!r58|Lylrn62|xyLWxv ze5gCUmw4y5ufFraz`x1NoO1^<-{W@|ZvN$?`?jRcjk=x9%?ms7N{at+u3+Hq9_GJu zE^v`mm#>|EF3(-HyI^SM##nvMv17Md>*js7;q-s@q~3fz<6Pcr-){(f*fIO^{meD| z{7oHc*Ej6{=rjNAqB?*6`SV}-zkVcqVcLu4&-WM7`&-(biy!FoedB1V8_apQR(!U; z@8fThuDNQuOD|t3q@Fo)C%Pw=()sLn1IsR6D(F}f`Ahz-m(HO6Y~)cN);g9ktPoTK zPVhi=JQzj|iecumco?wtP{KXX$A>JczKfSsIL}#BH3kRe2wS0_uUa30)$5nL+4c1- z&8f;BPdCRIL=c1$z~jL{NMzy`mBP!Qd)Z8?a0MdOTU50UCvFuY5Z9~qYKo|c^Nm{7 z-1E@sS#urb$XmYPAGH5MonE0&yZF7ReL| z4jUBN2p^VsA%x4Ez#~K@i%NyY@sap~VTWUsJ|qsSfb<~aAWUl16d4SX<2^*Fq7jh{ z2lRs;q8lw|(gj5!8ew5YBMeDJ<0&|H)IS`J1eA0*mV^NqL{JgUs+lllrQP8i^^hg- z@xid-g~XnKlz8u$SQBECN0fBN2ZG#3c_*Mpa#z3z^LfWNR&W`g)$W)SM!L6GO++c6Gs5R zafDv)r3jiev4mISrM({L@c<(=j$%cGM_ma5atOHWIXdh>3yK30umK4oQcA01D4L;kZc4}KDaN2DC<8-{ z!wVemZTc~^ynJwTqUcq;h~{rnOo=sB4I2_qiN^r1EG8URmIVXYL<%Bkgq#v5;z|s$ zeh~6Ow0{gY?1-KJfoAY>+o|+arN)@$|RS3%O%rwl5GEvsWy)o%(g%mj3~5VFL;P delta 489 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 diff --git a/olcCodeJam2023Entry/pge.js b/olcCodeJam2023Entry/pge.js index b99755b..456ef32 100644 --- a/olcCodeJam2023Entry/pge.js +++ b/olcCodeJam2023Entry/pge.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={133244:()=>{return Module.canvas.getBoundingClientRect().left},133296:()=>{return Module.canvas.getBoundingClientRect().top},133347:()=>{return Module.olc_MOUSEX},133375:()=>{return Module.olc_MOUSEY},133403:()=>{return Module.olc_MOUSEDOWN},133433:()=>{return Module.olc_MOUSEUP},133461:()=>{Module.olc_MOUSEDOWN=-1},133487:()=>{Module.olc_MOUSEUP=-1},133511:()=>{window.onunload=Module._olc_OnPageUnload},133555:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_MOUSEDOWN=-1;Module.olc_MOUSEUP=-1;onmousemove=function(e){Module.olc_MOUSEX=e.clientX;Module.olc_MOUSEY=e.clientY};onmousedown=function(e){Module.olc_MOUSEDOWN=e.button};onmouseup=function(e){Module.olc_MOUSEUP=e.button};ontouchmove=function(e){Module.olc_MOUSEX=e.touches[0].clientX;Module.olc_MOUSEY=e.touches[0].clientY};ontouchstart=function(e){Module.olc_MOUSEX=e.touches[0].clientX;Module.olc_MOUSEY=e.touches[0].clientY};Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()},135949:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},136096:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},136330:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},136823:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},136891:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},138543:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},138953:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},140038:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},143668:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},143751:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},143820:()=>{return window.innerWidth},143850:()=>{return window.innerHeight}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function listenOnce(object,event,func){object.addEventListener(event,func,{"once":true})}function autoResumeAudioContext(ctx,elements){if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var exceptionCaught=[];var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_rethrow(){var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglBindAPI(api){if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0}function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetConfigAttrib(display,config,attribute,value){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglGetError(){return EGL.errorCode}function _eglInitialize(display,majorVersion,minorVersion){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function _eglQueryString(display,name){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret}function _eglSwapBuffers(dpy,surface){if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}function _eglWaitClient(){EGL.setErrorCode(12288);return 1}var _eglWaitGL=_eglWaitClient;function _eglWaitNative(nativeEngineId){EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function runMainThreadEmAsm(code,sigPtr,argbuf,sync){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int_sync_on_main_thread(code,sigPtr,argbuf){return runMainThreadEmAsm(code,sigPtr,argbuf,1)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret}function getCanvasElementSize(target){return withStackSave(function(){var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size})}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function setCanvasElementSize(target,width,height){if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(function(){var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}}function registerRestoreOldStyle(canvas){var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle}function setLetterbox(element,topBottom,leftRight){element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function JSEvents_resizeCanvasForFullscreen(target,strategy){var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_get_screen_size(width,height){HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height}function _glActiveTexture(x0){GLctx.activeTexture(x0)}var _emscripten_glActiveTexture=_glActiveTexture;function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}var _emscripten_glAttachShader=_glAttachShader;function _glBeginQuery(target,id){GLctx.beginQuery(target,GL.queries[id])}var _emscripten_glBeginQuery=_glBeginQuery;function _glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])}var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;function _glBeginTransformFeedback(x0){GLctx.beginTransformFeedback(x0)}var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}var _emscripten_glBindAttribLocation=_glBindAttribLocation;function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}var _emscripten_glBindBuffer=_glBindBuffer;function _glBindBufferBase(target,index,buffer){GLctx.bindBufferBase(target,index,GL.buffers[buffer])}var _emscripten_glBindBufferBase=_glBindBufferBase;function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)}var _emscripten_glBindBufferRange=_glBindBufferRange;function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}var _emscripten_glBindFramebuffer=_glBindFramebuffer;function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;function _glBindSampler(unit,sampler){GLctx.bindSampler(unit,GL.samplers[sampler])}var _emscripten_glBindSampler=_glBindSampler;function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}var _emscripten_glBindTexture=_glBindTexture;function _glBindTransformFeedback(target,id){GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])}var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;function _glBlendColor(x0,x1,x2,x3){GLctx.blendColor(x0,x1,x2,x3)}var _emscripten_glBlendColor=_glBlendColor;function _glBlendEquation(x0){GLctx.blendEquation(x0)}var _emscripten_glBlendEquation=_glBlendEquation;function _glBlendEquationSeparate(x0,x1){GLctx.blendEquationSeparate(x0,x1)}var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}var _emscripten_glBlendFunc=_glBlendFunc;function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx.blendFuncSeparate(x0,x1,x2,x3)}var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}var _emscripten_glBufferData=_glBufferData;function _glBufferSubData(target,offset,size,data){if(true){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}var _emscripten_glBufferSubData=_glBufferSubData;function _glCheckFramebufferStatus(x0){return GLctx.checkFramebufferStatus(x0)}var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;function _glClear(x0){GLctx.clear(x0)}var _emscripten_glClear=_glClear;function _glClearBufferfi(x0,x1,x2,x3){GLctx.clearBufferfi(x0,x1,x2,x3)}var _emscripten_glClearBufferfi=_glClearBufferfi;function _glClearBufferfv(buffer,drawbuffer,value){GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)}var _emscripten_glClearBufferfv=_glClearBufferfv;function _glClearBufferiv(buffer,drawbuffer,value){GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)}var _emscripten_glClearBufferiv=_glClearBufferiv;function _glClearBufferuiv(buffer,drawbuffer,value){GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)}var _emscripten_glClearBufferuiv=_glClearBufferuiv;function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}var _emscripten_glClearColor=_glClearColor;function _glClearDepthf(x0){GLctx.clearDepth(x0)}var _emscripten_glClearDepthf=_glClearDepthf;function _glClearStencil(x0){GLctx.clearStencil(x0)}var _emscripten_glClearStencil=_glClearStencil;function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296}function _glClientWaitSync(sync,flags,timeout_low,timeout_high){var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)}var _emscripten_glClientWaitSync=_glClientWaitSync;function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}var _emscripten_glColorMask=_glColorMask;function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}var _emscripten_glCompileShader=_glCompileShader;function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){if(true){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;function _glCompressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}}var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(true){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;function _glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}}var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;function _glCopyBufferSubData(x0,x1,x2,x3,x4){GLctx.copyBufferSubData(x0,x1,x2,x3,x4)}var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;function _glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7)}var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;function _glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7)}var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;function _glCopyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8){GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8)}var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}var _emscripten_glCreateProgram=_glCreateProgram;function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}var _emscripten_glCreateShader=_glCreateShader;function _glCullFace(x0){GLctx.cullFace(x0)}var _emscripten_glCullFace=_glCullFace;function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}var _emscripten_glDeleteBuffers=_glDeleteBuffers;function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}var _emscripten_glDeleteProgram=_glDeleteProgram;function _glDeleteQueries(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}}var _emscripten_glDeleteQueries=_glDeleteQueries;function _glDeleteQueriesEXT(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}}var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;function _glDeleteSamplers(n,samplers){for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}}var _emscripten_glDeleteSamplers=_glDeleteSamplers;function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}var _emscripten_glDeleteShader=_glDeleteShader;function _glDeleteSync(id){if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null}var _emscripten_glDeleteSync=_glDeleteSync;function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}var _emscripten_glDeleteTextures=_glDeleteTextures;function _glDeleteTransformFeedbacks(n,ids){for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}}var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}}var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;function _glDepthFunc(x0){GLctx.depthFunc(x0)}var _emscripten_glDepthFunc=_glDepthFunc;function _glDepthMask(flag){GLctx.depthMask(!!flag)}var _emscripten_glDepthMask=_glDepthMask;function _glDepthRangef(x0,x1){GLctx.depthRange(x0,x1)}var _emscripten_glDepthRangef=_glDepthRangef;function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}var _emscripten_glDetachShader=_glDetachShader;function _glDisable(x0){GLctx.disable(x0)}var _emscripten_glDisable=_glDisable;function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}var _emscripten_glDrawArrays=_glDrawArrays;function _glDrawArraysInstanced(mode,first,count,primcount){GLctx.drawArraysInstanced(mode,first,count,primcount)}var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)}var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}var _emscripten_glDrawElements=_glDrawElements;function _glDrawElementsInstanced(mode,count,type,indices,primcount){GLctx.drawElementsInstanced(mode,count,type,indices,primcount)}var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;function _glDrawRangeElements(mode,start,end,count,type,indices){_glDrawElements(mode,count,type,indices)}var _emscripten_glDrawRangeElements=_glDrawRangeElements;function _glEnable(x0){GLctx.enable(x0)}var _emscripten_glEnable=_glEnable;function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;function _glEndQuery(x0){GLctx.endQuery(x0)}var _emscripten_glEndQuery=_glEndQuery;function _glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}var _emscripten_glEndQueryEXT=_glEndQueryEXT;function _glEndTransformFeedback(){GLctx.endTransformFeedback()}var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;function _glFenceSync(condition,flags){var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0}var _emscripten_glFenceSync=_glFenceSync;function _glFinish(){GLctx.finish()}var _emscripten_glFinish=_glFinish;function _glFlush(){GLctx.flush()}var _emscripten_glFlush=_glFlush;function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)}var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;function _glFrontFace(x0){GLctx.frontFace(x0)}var _emscripten_glFrontFace=_glFrontFace;function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}var _emscripten_glGenBuffers=_glGenBuffers;function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}var _emscripten_glGenFramebuffers=_glGenFramebuffers;function _glGenQueries(n,ids){__glGenObject(n,ids,"createQuery",GL.queries)}var _emscripten_glGenQueries=_glGenQueries;function _glGenQueriesEXT(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}}var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;function _glGenSamplers(n,samplers){__glGenObject(n,samplers,"createSampler",GL.samplers)}var _emscripten_glGenSamplers=_glGenSamplers;function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}var _emscripten_glGenTextures=_glGenTextures;function _glGenTransformFeedbacks(n,ids){__glGenObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)}var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;function _glGenerateMipmap(x0){GLctx.generateMipmap(x0)}var _emscripten_glGenerateMipmap=_glGenerateMipmap;function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;function _glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}var _emscripten_glGetActiveUniform=_glGetActiveUniform;function _glGetActiveUniformBlockName(program,uniformBlockIndex,bufSize,length,uniformBlockName){program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}}var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;function _glGetActiveUniformBlockiv(program,uniformBlockIndex,pname,params){if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}}var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;function _glGetActiveUniformsiv(program,uniformCount,uniformIndices,pname,params){if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;function _glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}}var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}var _emscripten_glGetAttribLocation=_glGetAttribLocation;function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}var _emscripten_glGetBooleanv=_glGetBooleanv;function _glGetBufferParameteri64v(target,value,data){if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))}var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;function _glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}var _emscripten_glGetError=_glGetError;function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}var _emscripten_glGetFloatv=_glGetFloatv;function _glGetFragDataLocation(program,name){return GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name))}var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;function emscriptenWebGLGetIndexed(target,index,data,type){if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data>>0]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}}function _glGetInteger64i_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,1)}var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;function _glGetInteger64v(name_,p){emscriptenWebGLGet(name_,p,1)}var _emscripten_glGetInteger64v=_glGetInteger64v;function _glGetIntegeri_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,0)}var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}var _emscripten_glGetIntegerv=_glGetIntegerv;function _glGetInternalformativ(target,internalformat,pname,bufSize,params){if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}}var _emscripten_glGetInternalformativ=_glGetInternalformativ;function _glGetProgramBinary(program,bufSize,length,binaryFormat,binary){GL.recordError(1282)}var _emscripten_glGetProgramBinary=_glGetProgramBinary;function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}}var _emscripten_glGetProgramiv=_glGetProgramiv;function _glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;function _glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;function _glGetQueryObjectuiv(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;function _glGetQueryiv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)}var _emscripten_glGetQueryiv=_glGetQueryiv;function _glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;function _glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;function _glGetSamplerParameterfv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)}var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;function _glGetSamplerParameteriv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)}var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;function _glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;function _glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}var _emscripten_glGetShaderSource=_glGetShaderSource;function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}var _emscripten_glGetShaderiv=_glGetShaderiv;function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);if(true)glVersion="OpenGL ES 3.0 ("+glVersion+")";else{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret}var _emscripten_glGetString=_glGetString;function _glGetStringi(name,index){if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));exts=exts.map(function(e){return stringToNewUTF8(e)});stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}}var _emscripten_glGetStringi=_glGetStringi;function _glGetSynciv(sync,pname,bufSize,length,values){if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}}var _emscripten_glGetSynciv=_glGetSynciv;function _glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;function _glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;function _glGetTransformFeedbackVarying(program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName))}var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;function _glGetUniformIndices(program,uniformCount,uniformNames,uniformIndices){if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}var _emscripten_glGetUniformIndices=_glGetUniformIndices;function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}var _emscripten_glGetUniformfv=_glGetUniformfv;function _glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}var _emscripten_glGetUniformiv=_glGetUniformiv;function _glGetUniformuiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}var _emscripten_glGetUniformuiv=_glGetUniformuiv;function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _glGetVertexAttribIiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,0)}var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;function _glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;function _glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;function _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;function _glHint(x0,x1){GLctx.hint(x0,x1)}var _emscripten_glHint=_glHint;function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)}var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;function _glInvalidateSubFramebuffer(target,numAttachments,attachments,x,y,width,height){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)}var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;function _glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}var _emscripten_glIsBuffer=_glIsBuffer;function _glIsEnabled(x0){return GLctx.isEnabled(x0)}var _emscripten_glIsEnabled=_glIsEnabled;function _glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}var _emscripten_glIsFramebuffer=_glIsFramebuffer;function _glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}var _emscripten_glIsProgram=_glIsProgram;function _glIsQuery(id){var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)}var _emscripten_glIsQuery=_glIsQuery;function _glIsQueryEXT(id){var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}var _emscripten_glIsQueryEXT=_glIsQueryEXT;function _glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;function _glIsSampler(id){var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)}var _emscripten_glIsSampler=_glIsSampler;function _glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}var _emscripten_glIsShader=_glIsShader;function _glIsSync(sync){return GLctx.isSync(GL.syncs[sync])}var _emscripten_glIsSync=_glIsSync;function _glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}var _emscripten_glIsTexture=_glIsTexture;function _glIsTransformFeedback(id){return GLctx.isTransformFeedback(GL.transformFeedbacks[id])}var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;function _glIsVertexArray(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)}var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;function _glLineWidth(x0){GLctx.lineWidth(x0)}var _emscripten_glLineWidth=_glLineWidth;function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}var _emscripten_glLinkProgram=_glLinkProgram;function _glPauseTransformFeedback(){GLctx.pauseTransformFeedback()}var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}var _emscripten_glPixelStorei=_glPixelStorei;function _glPolygonOffset(x0,x1){GLctx.polygonOffset(x0,x1)}var _emscripten_glPolygonOffset=_glPolygonOffset;function _glProgramBinary(program,binaryFormat,binary,length){GL.recordError(1280)}var _emscripten_glProgramBinary=_glProgramBinary;function _glProgramParameteri(program,pname,value){GL.recordError(1280)}var _emscripten_glProgramParameteri=_glProgramParameteri;function _glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)}var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;function _glReadBuffer(x0){GLctx.readBuffer(x0)}var _emscripten_glReadBuffer=_glReadBuffer;function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}var _emscripten_glReadPixels=_glReadPixels;function _glReleaseShaderCompiler(){}var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;function _glRenderbufferStorage(x0,x1,x2,x3){GLctx.renderbufferStorage(x0,x1,x2,x3)}var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4)}var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;function _glResumeTransformFeedback(){GLctx.resumeTransformFeedback()}var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;function _glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}var _emscripten_glSampleCoverage=_glSampleCoverage;function _glSamplerParameterf(sampler,pname,param){GLctx.samplerParameterf(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameterf=_glSamplerParameterf;function _glSamplerParameterfv(sampler,pname,params){var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;function _glSamplerParameteri(sampler,pname,param){GLctx.samplerParameteri(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameteri=_glSamplerParameteri;function _glSamplerParameteriv(sampler,pname,params){var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;function _glScissor(x0,x1,x2,x3){GLctx.scissor(x0,x1,x2,x3)}var _emscripten_glScissor=_glScissor;function _glShaderBinary(count,shaders,binaryformat,binary,length){GL.recordError(1280)}var _emscripten_glShaderBinary=_glShaderBinary;function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}var _emscripten_glShaderSource=_glShaderSource;function _glStencilFunc(x0,x1,x2){GLctx.stencilFunc(x0,x1,x2)}var _emscripten_glStencilFunc=_glStencilFunc;function _glStencilFuncSeparate(x0,x1,x2,x3){GLctx.stencilFuncSeparate(x0,x1,x2,x3)}var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;function _glStencilMask(x0){GLctx.stencilMask(x0)}var _emscripten_glStencilMask=_glStencilMask;function _glStencilMaskSeparate(x0,x1){GLctx.stencilMaskSeparate(x0,x1)}var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;function _glStencilOp(x0,x1,x2){GLctx.stencilOp(x0,x1,x2)}var _emscripten_glStencilOp=_glStencilOp;function _glStencilOpSeparate(x0,x1,x2,x3){GLctx.stencilOpSeparate(x0,x1,x2,x3)}var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}var _emscripten_glTexImage2D=_glTexImage2D;function _glTexImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}}var _emscripten_glTexImage3D=_glTexImage3D;function _glTexParameterf(x0,x1,x2){GLctx.texParameterf(x0,x1,x2)}var _emscripten_glTexParameterf=_glTexParameterf;function _glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}var _emscripten_glTexParameterfv=_glTexParameterfv;function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}var _emscripten_glTexParameteri=_glTexParameteri;function _glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}var _emscripten_glTexParameteriv=_glTexParameteriv;function _glTexStorage2D(x0,x1,x2,x3,x4){GLctx.texStorage2D(x0,x1,x2,x3,x4)}var _emscripten_glTexStorage2D=_glTexStorage2D;function _glTexStorage3D(x0,x1,x2,x3,x4,x5){GLctx.texStorage3D(x0,x1,x2,x3,x4,x5)}var _emscripten_glTexStorage3D=_glTexStorage3D;function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}var _emscripten_glTexSubImage2D=_glTexSubImage2D;function _glTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}}var _emscripten_glTexSubImage3D=_glTexSubImage3D;function _glTransformFeedbackVaryings(program,count,varyings,bufferMode){program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)}var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;function _glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1f=_glUniform1f;function _glUniform1fv(location,count,value){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count)}var _emscripten_glUniform1fv=_glUniform1fv;function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1i=_glUniform1i;function _glUniform1iv(location,count,value){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count)}var _emscripten_glUniform1iv=_glUniform1iv;function _glUniform1ui(location,v0){GLctx.uniform1ui(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1ui=_glUniform1ui;function _glUniform1uiv(location,count,value){count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)}var _emscripten_glUniform1uiv=_glUniform1uiv;function _glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2f=_glUniform2f;function _glUniform2fv(location,count,value){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2)}var _emscripten_glUniform2fv=_glUniform2fv;function _glUniform2i(location,v0,v1){GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2i=_glUniform2i;function _glUniform2iv(location,count,value){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2)}var _emscripten_glUniform2iv=_glUniform2iv;function _glUniform2ui(location,v0,v1){GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2ui=_glUniform2ui;function _glUniform2uiv(location,count,value){count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)}var _emscripten_glUniform2uiv=_glUniform2uiv;function _glUniform3f(location,v0,v1,v2){GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3f=_glUniform3f;function _glUniform3fv(location,count,value){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3)}var _emscripten_glUniform3fv=_glUniform3fv;function _glUniform3i(location,v0,v1,v2){GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3i=_glUniform3i;function _glUniform3iv(location,count,value){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3)}var _emscripten_glUniform3iv=_glUniform3iv;function _glUniform3ui(location,v0,v1,v2){GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3ui=_glUniform3ui;function _glUniform3uiv(location,count,value){count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)}var _emscripten_glUniform3uiv=_glUniform3uiv;function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4f=_glUniform4f;function _glUniform4fv(location,count,value){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4)}var _emscripten_glUniform4fv=_glUniform4fv;function _glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4i=_glUniform4i;function _glUniform4iv(location,count,value){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4)}var _emscripten_glUniform4iv=_glUniform4iv;function _glUniform4ui(location,v0,v1,v2,v3){GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4ui=_glUniform4ui;function _glUniform4uiv(location,count,value){count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)}var _emscripten_glUniform4uiv=_glUniform4uiv;function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)}var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;function _glUniformMatrix2fv(location,count,transpose,value){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4)}var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;function _glUniformMatrix2x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;function _glUniformMatrix2x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;function _glUniformMatrix3fv(location,count,transpose,value){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9)}var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;function _glUniformMatrix3x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;function _glUniformMatrix3x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;function _glUniformMatrix4fv(location,count,transpose,value){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16)}var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;function _glUniformMatrix4x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;function _glUniformMatrix4x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}var _emscripten_glUseProgram=_glUseProgram;function _glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}var _emscripten_glValidateProgram=_glValidateProgram;function _glVertexAttrib1f(x0,x1){GLctx.vertexAttrib1f(x0,x1)}var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;function _glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;function _glVertexAttrib2f(x0,x1,x2){GLctx.vertexAttrib2f(x0,x1,x2)}var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;function _glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;function _glVertexAttrib3f(x0,x1,x2,x3){GLctx.vertexAttrib3f(x0,x1,x2,x3)}var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;function _glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx.vertexAttrib4f(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;function _glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;function _glVertexAttribDivisor(index,divisor){GLctx.vertexAttribDivisor(index,divisor)}var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;function _glVertexAttribI4i(x0,x1,x2,x3,x4){GLctx.vertexAttribI4i(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;function _glVertexAttribI4iv(index,v){GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])}var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;function _glVertexAttribI4ui(x0,x1,x2,x3,x4){GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;function _glVertexAttribI4uiv(index,v){GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])}var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;function _glVertexAttribIPointer(index,size,type,stride,ptr){GLctx.vertexAttribIPointer(index,size,type,stride,ptr)}var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}var _emscripten_glViewport=_glViewport;function _glWaitSync(sync,flags,timeout_low,timeout_high){var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)}var _emscripten_glWaitSync=_glWaitSync;function _emscripten_has_asyncify(){return 0}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function doRequestFullscreen(target,strategy){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)}function _emscripten_request_fullscreen_strategy(target,deferUntilInEventHandler,fullscreenStrategy){var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)}function _emscripten_request_pointerlock(target,deferUntilInEventHandler){target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function registerBeforeUnloadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=function(e=event){var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_beforeunload_callback_on_thread(userData,callbackfunc,targetThread){if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(e=event){var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function _emscripten_set_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(e=event){var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(e=event){var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function fillMouseEventData(eventStruct,e,target){HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(e=event){fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread)}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function fillPointerlockChangeEventData(eventStruct){var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)}function registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=function(e=event){var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_pointerlockchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(e=event){if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset;HEAP32[uiEvent+32>>2]=pageYOffset;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function fillVisibilityChangeEventData(eventStruct){var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState}function registerVisibilityChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=function(e=event){var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_visibilitychange_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(e=event){var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}function _emscripten_sleep(){throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={134124:()=>{return Module.canvas.getBoundingClientRect().left},134176:()=>{return Module.canvas.getBoundingClientRect().top},134227:()=>{return Module.olc_MOUSEX},134255:()=>{return Module.olc_MOUSEY},134283:()=>{return Module.olc_MOUSEDOWN},134313:()=>{return Module.olc_MOUSEUP},134341:()=>{Module.olc_MOUSEDOWN=-1},134367:()=>{Module.olc_MOUSEUP=-1},134391:()=>{window.onunload=Module._olc_OnPageUnload},134435:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_MOUSEDOWN=-1;Module.olc_MOUSEUP=-1;onmousemove=function(e){Module.olc_MOUSEX=e.clientX;Module.olc_MOUSEY=e.clientY};onmousedown=function(e){Module.olc_MOUSEDOWN=e.button};onmouseup=function(e){Module.olc_MOUSEUP=e.button};ontouchmove=function(e){Module.olc_MOUSEX=e.touches[0].clientX;Module.olc_MOUSEY=e.touches[0].clientY};ontouchstart=function(e){Module.olc_MOUSEX=e.touches[0].clientX;Module.olc_MOUSEY=e.touches[0].clientY};Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()},136829:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},136976:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},137210:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},137703:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},137771:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},139423:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},139833:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},140918:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},144548:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},144631:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},144700:()=>{return window.innerWidth},144730:()=>{return window.innerHeight}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function listenOnce(object,event,func){object.addEventListener(event,func,{"once":true})}function autoResumeAudioContext(ctx,elements){if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var exceptionCaught=[];var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_rethrow(){var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglBindAPI(api){if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0}function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetConfigAttrib(display,config,attribute,value){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglGetError(){return EGL.errorCode}function _eglInitialize(display,majorVersion,minorVersion){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function _eglQueryString(display,name){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret}function _eglSwapBuffers(dpy,surface){if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}function _eglWaitClient(){EGL.setErrorCode(12288);return 1}var _eglWaitGL=_eglWaitClient;function _eglWaitNative(nativeEngineId){EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function runMainThreadEmAsm(code,sigPtr,argbuf,sync){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int_sync_on_main_thread(code,sigPtr,argbuf){return runMainThreadEmAsm(code,sigPtr,argbuf,1)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret}function getCanvasElementSize(target){return withStackSave(function(){var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size})}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function setCanvasElementSize(target,width,height){if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(function(){var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}}function registerRestoreOldStyle(canvas){var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle}function setLetterbox(element,topBottom,leftRight){element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function JSEvents_resizeCanvasForFullscreen(target,strategy){var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_get_screen_size(width,height){HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height}function _glActiveTexture(x0){GLctx.activeTexture(x0)}var _emscripten_glActiveTexture=_glActiveTexture;function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}var _emscripten_glAttachShader=_glAttachShader;function _glBeginQuery(target,id){GLctx.beginQuery(target,GL.queries[id])}var _emscripten_glBeginQuery=_glBeginQuery;function _glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])}var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;function _glBeginTransformFeedback(x0){GLctx.beginTransformFeedback(x0)}var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}var _emscripten_glBindAttribLocation=_glBindAttribLocation;function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}var _emscripten_glBindBuffer=_glBindBuffer;function _glBindBufferBase(target,index,buffer){GLctx.bindBufferBase(target,index,GL.buffers[buffer])}var _emscripten_glBindBufferBase=_glBindBufferBase;function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)}var _emscripten_glBindBufferRange=_glBindBufferRange;function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}var _emscripten_glBindFramebuffer=_glBindFramebuffer;function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;function _glBindSampler(unit,sampler){GLctx.bindSampler(unit,GL.samplers[sampler])}var _emscripten_glBindSampler=_glBindSampler;function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}var _emscripten_glBindTexture=_glBindTexture;function _glBindTransformFeedback(target,id){GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])}var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;function _glBlendColor(x0,x1,x2,x3){GLctx.blendColor(x0,x1,x2,x3)}var _emscripten_glBlendColor=_glBlendColor;function _glBlendEquation(x0){GLctx.blendEquation(x0)}var _emscripten_glBlendEquation=_glBlendEquation;function _glBlendEquationSeparate(x0,x1){GLctx.blendEquationSeparate(x0,x1)}var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}var _emscripten_glBlendFunc=_glBlendFunc;function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx.blendFuncSeparate(x0,x1,x2,x3)}var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}var _emscripten_glBufferData=_glBufferData;function _glBufferSubData(target,offset,size,data){if(true){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}var _emscripten_glBufferSubData=_glBufferSubData;function _glCheckFramebufferStatus(x0){return GLctx.checkFramebufferStatus(x0)}var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;function _glClear(x0){GLctx.clear(x0)}var _emscripten_glClear=_glClear;function _glClearBufferfi(x0,x1,x2,x3){GLctx.clearBufferfi(x0,x1,x2,x3)}var _emscripten_glClearBufferfi=_glClearBufferfi;function _glClearBufferfv(buffer,drawbuffer,value){GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)}var _emscripten_glClearBufferfv=_glClearBufferfv;function _glClearBufferiv(buffer,drawbuffer,value){GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)}var _emscripten_glClearBufferiv=_glClearBufferiv;function _glClearBufferuiv(buffer,drawbuffer,value){GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)}var _emscripten_glClearBufferuiv=_glClearBufferuiv;function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}var _emscripten_glClearColor=_glClearColor;function _glClearDepthf(x0){GLctx.clearDepth(x0)}var _emscripten_glClearDepthf=_glClearDepthf;function _glClearStencil(x0){GLctx.clearStencil(x0)}var _emscripten_glClearStencil=_glClearStencil;function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296}function _glClientWaitSync(sync,flags,timeout_low,timeout_high){var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)}var _emscripten_glClientWaitSync=_glClientWaitSync;function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}var _emscripten_glColorMask=_glColorMask;function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}var _emscripten_glCompileShader=_glCompileShader;function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){if(true){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;function _glCompressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}}var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(true){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;function _glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data){if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}}var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;function _glCopyBufferSubData(x0,x1,x2,x3,x4){GLctx.copyBufferSubData(x0,x1,x2,x3,x4)}var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;function _glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7)}var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;function _glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7)}var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;function _glCopyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8){GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8)}var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}var _emscripten_glCreateProgram=_glCreateProgram;function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}var _emscripten_glCreateShader=_glCreateShader;function _glCullFace(x0){GLctx.cullFace(x0)}var _emscripten_glCullFace=_glCullFace;function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}var _emscripten_glDeleteBuffers=_glDeleteBuffers;function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}var _emscripten_glDeleteProgram=_glDeleteProgram;function _glDeleteQueries(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}}var _emscripten_glDeleteQueries=_glDeleteQueries;function _glDeleteQueriesEXT(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}}var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;function _glDeleteSamplers(n,samplers){for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}}var _emscripten_glDeleteSamplers=_glDeleteSamplers;function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}var _emscripten_glDeleteShader=_glDeleteShader;function _glDeleteSync(id){if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null}var _emscripten_glDeleteSync=_glDeleteSync;function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}var _emscripten_glDeleteTextures=_glDeleteTextures;function _glDeleteTransformFeedbacks(n,ids){for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}}var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}}var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;function _glDepthFunc(x0){GLctx.depthFunc(x0)}var _emscripten_glDepthFunc=_glDepthFunc;function _glDepthMask(flag){GLctx.depthMask(!!flag)}var _emscripten_glDepthMask=_glDepthMask;function _glDepthRangef(x0,x1){GLctx.depthRange(x0,x1)}var _emscripten_glDepthRangef=_glDepthRangef;function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}var _emscripten_glDetachShader=_glDetachShader;function _glDisable(x0){GLctx.disable(x0)}var _emscripten_glDisable=_glDisable;function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}var _emscripten_glDrawArrays=_glDrawArrays;function _glDrawArraysInstanced(mode,first,count,primcount){GLctx.drawArraysInstanced(mode,first,count,primcount)}var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)}var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}var _emscripten_glDrawElements=_glDrawElements;function _glDrawElementsInstanced(mode,count,type,indices,primcount){GLctx.drawElementsInstanced(mode,count,type,indices,primcount)}var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;function _glDrawRangeElements(mode,start,end,count,type,indices){_glDrawElements(mode,count,type,indices)}var _emscripten_glDrawRangeElements=_glDrawRangeElements;function _glEnable(x0){GLctx.enable(x0)}var _emscripten_glEnable=_glEnable;function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;function _glEndQuery(x0){GLctx.endQuery(x0)}var _emscripten_glEndQuery=_glEndQuery;function _glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}var _emscripten_glEndQueryEXT=_glEndQueryEXT;function _glEndTransformFeedback(){GLctx.endTransformFeedback()}var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;function _glFenceSync(condition,flags){var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0}var _emscripten_glFenceSync=_glFenceSync;function _glFinish(){GLctx.finish()}var _emscripten_glFinish=_glFinish;function _glFlush(){GLctx.flush()}var _emscripten_glFlush=_glFlush;function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)}var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;function _glFrontFace(x0){GLctx.frontFace(x0)}var _emscripten_glFrontFace=_glFrontFace;function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}var _emscripten_glGenBuffers=_glGenBuffers;function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}var _emscripten_glGenFramebuffers=_glGenFramebuffers;function _glGenQueries(n,ids){__glGenObject(n,ids,"createQuery",GL.queries)}var _emscripten_glGenQueries=_glGenQueries;function _glGenQueriesEXT(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}}var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;function _glGenSamplers(n,samplers){__glGenObject(n,samplers,"createSampler",GL.samplers)}var _emscripten_glGenSamplers=_glGenSamplers;function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}var _emscripten_glGenTextures=_glGenTextures;function _glGenTransformFeedbacks(n,ids){__glGenObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)}var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;function _glGenerateMipmap(x0){GLctx.generateMipmap(x0)}var _emscripten_glGenerateMipmap=_glGenerateMipmap;function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;function _glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}var _emscripten_glGetActiveUniform=_glGetActiveUniform;function _glGetActiveUniformBlockName(program,uniformBlockIndex,bufSize,length,uniformBlockName){program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}}var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;function _glGetActiveUniformBlockiv(program,uniformBlockIndex,pname,params){if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}}var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;function _glGetActiveUniformsiv(program,uniformCount,uniformIndices,pname,params){if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;function _glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}}var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}var _emscripten_glGetAttribLocation=_glGetAttribLocation;function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}var _emscripten_glGetBooleanv=_glGetBooleanv;function _glGetBufferParameteri64v(target,value,data){if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))}var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;function _glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}var _emscripten_glGetError=_glGetError;function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}var _emscripten_glGetFloatv=_glGetFloatv;function _glGetFragDataLocation(program,name){return GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name))}var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;function emscriptenWebGLGetIndexed(target,index,data,type){if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data>>0]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}}function _glGetInteger64i_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,1)}var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;function _glGetInteger64v(name_,p){emscriptenWebGLGet(name_,p,1)}var _emscripten_glGetInteger64v=_glGetInteger64v;function _glGetIntegeri_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,0)}var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}var _emscripten_glGetIntegerv=_glGetIntegerv;function _glGetInternalformativ(target,internalformat,pname,bufSize,params){if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}}var _emscripten_glGetInternalformativ=_glGetInternalformativ;function _glGetProgramBinary(program,bufSize,length,binaryFormat,binary){GL.recordError(1282)}var _emscripten_glGetProgramBinary=_glGetProgramBinary;function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}}var _emscripten_glGetProgramiv=_glGetProgramiv;function _glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;function _glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;function _glGetQueryObjectuiv(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;function _glGetQueryiv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)}var _emscripten_glGetQueryiv=_glGetQueryiv;function _glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;function _glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;function _glGetSamplerParameterfv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)}var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;function _glGetSamplerParameteriv(sampler,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)}var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;function _glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;function _glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}var _emscripten_glGetShaderSource=_glGetShaderSource;function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}var _emscripten_glGetShaderiv=_glGetShaderiv;function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);if(true)glVersion="OpenGL ES 3.0 ("+glVersion+")";else{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret}var _emscripten_glGetString=_glGetString;function _glGetStringi(name,index){if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));exts=exts.map(function(e){return stringToNewUTF8(e)});stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}}var _emscripten_glGetStringi=_glGetStringi;function _glGetSynciv(sync,pname,bufSize,length,values){if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}}var _emscripten_glGetSynciv=_glGetSynciv;function _glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;function _glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;function _glGetTransformFeedbackVarying(program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName))}var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;function _glGetUniformIndices(program,uniformCount,uniformNames,uniformIndices){if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}var _emscripten_glGetUniformIndices=_glGetUniformIndices;function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}var _emscripten_glGetUniformfv=_glGetUniformfv;function _glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}var _emscripten_glGetUniformiv=_glGetUniformiv;function _glGetUniformuiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}var _emscripten_glGetUniformuiv=_glGetUniformuiv;function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _glGetVertexAttribIiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,0)}var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;function _glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;function _glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;function _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;function _glHint(x0,x1){GLctx.hint(x0,x1)}var _emscripten_glHint=_glHint;function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)}var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;function _glInvalidateSubFramebuffer(target,numAttachments,attachments,x,y,width,height){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)}var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;function _glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}var _emscripten_glIsBuffer=_glIsBuffer;function _glIsEnabled(x0){return GLctx.isEnabled(x0)}var _emscripten_glIsEnabled=_glIsEnabled;function _glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}var _emscripten_glIsFramebuffer=_glIsFramebuffer;function _glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}var _emscripten_glIsProgram=_glIsProgram;function _glIsQuery(id){var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)}var _emscripten_glIsQuery=_glIsQuery;function _glIsQueryEXT(id){var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}var _emscripten_glIsQueryEXT=_glIsQueryEXT;function _glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;function _glIsSampler(id){var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)}var _emscripten_glIsSampler=_glIsSampler;function _glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}var _emscripten_glIsShader=_glIsShader;function _glIsSync(sync){return GLctx.isSync(GL.syncs[sync])}var _emscripten_glIsSync=_glIsSync;function _glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}var _emscripten_glIsTexture=_glIsTexture;function _glIsTransformFeedback(id){return GLctx.isTransformFeedback(GL.transformFeedbacks[id])}var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;function _glIsVertexArray(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)}var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;function _glLineWidth(x0){GLctx.lineWidth(x0)}var _emscripten_glLineWidth=_glLineWidth;function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}var _emscripten_glLinkProgram=_glLinkProgram;function _glPauseTransformFeedback(){GLctx.pauseTransformFeedback()}var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}var _emscripten_glPixelStorei=_glPixelStorei;function _glPolygonOffset(x0,x1){GLctx.polygonOffset(x0,x1)}var _emscripten_glPolygonOffset=_glPolygonOffset;function _glProgramBinary(program,binaryFormat,binary,length){GL.recordError(1280)}var _emscripten_glProgramBinary=_glProgramBinary;function _glProgramParameteri(program,pname,value){GL.recordError(1280)}var _emscripten_glProgramParameteri=_glProgramParameteri;function _glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)}var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;function _glReadBuffer(x0){GLctx.readBuffer(x0)}var _emscripten_glReadBuffer=_glReadBuffer;function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}var _emscripten_glReadPixels=_glReadPixels;function _glReleaseShaderCompiler(){}var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;function _glRenderbufferStorage(x0,x1,x2,x3){GLctx.renderbufferStorage(x0,x1,x2,x3)}var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4)}var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;function _glResumeTransformFeedback(){GLctx.resumeTransformFeedback()}var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;function _glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}var _emscripten_glSampleCoverage=_glSampleCoverage;function _glSamplerParameterf(sampler,pname,param){GLctx.samplerParameterf(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameterf=_glSamplerParameterf;function _glSamplerParameterfv(sampler,pname,params){var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;function _glSamplerParameteri(sampler,pname,param){GLctx.samplerParameteri(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameteri=_glSamplerParameteri;function _glSamplerParameteriv(sampler,pname,params){var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)}var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;function _glScissor(x0,x1,x2,x3){GLctx.scissor(x0,x1,x2,x3)}var _emscripten_glScissor=_glScissor;function _glShaderBinary(count,shaders,binaryformat,binary,length){GL.recordError(1280)}var _emscripten_glShaderBinary=_glShaderBinary;function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}var _emscripten_glShaderSource=_glShaderSource;function _glStencilFunc(x0,x1,x2){GLctx.stencilFunc(x0,x1,x2)}var _emscripten_glStencilFunc=_glStencilFunc;function _glStencilFuncSeparate(x0,x1,x2,x3){GLctx.stencilFuncSeparate(x0,x1,x2,x3)}var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;function _glStencilMask(x0){GLctx.stencilMask(x0)}var _emscripten_glStencilMask=_glStencilMask;function _glStencilMaskSeparate(x0,x1){GLctx.stencilMaskSeparate(x0,x1)}var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;function _glStencilOp(x0,x1,x2){GLctx.stencilOp(x0,x1,x2)}var _emscripten_glStencilOp=_glStencilOp;function _glStencilOpSeparate(x0,x1,x2,x3){GLctx.stencilOpSeparate(x0,x1,x2,x3)}var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}var _emscripten_glTexImage2D=_glTexImage2D;function _glTexImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}}var _emscripten_glTexImage3D=_glTexImage3D;function _glTexParameterf(x0,x1,x2){GLctx.texParameterf(x0,x1,x2)}var _emscripten_glTexParameterf=_glTexParameterf;function _glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}var _emscripten_glTexParameterfv=_glTexParameterfv;function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}var _emscripten_glTexParameteri=_glTexParameteri;function _glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}var _emscripten_glTexParameteriv=_glTexParameteriv;function _glTexStorage2D(x0,x1,x2,x3,x4){GLctx.texStorage2D(x0,x1,x2,x3,x4)}var _emscripten_glTexStorage2D=_glTexStorage2D;function _glTexStorage3D(x0,x1,x2,x3,x4,x5){GLctx.texStorage3D(x0,x1,x2,x3,x4,x5)}var _emscripten_glTexStorage3D=_glTexStorage3D;function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}var _emscripten_glTexSubImage2D=_glTexSubImage2D;function _glTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}}var _emscripten_glTexSubImage3D=_glTexSubImage3D;function _glTransformFeedbackVaryings(program,count,varyings,bufferMode){program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)}var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;function _glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1f=_glUniform1f;function _glUniform1fv(location,count,value){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count)}var _emscripten_glUniform1fv=_glUniform1fv;function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1i=_glUniform1i;function _glUniform1iv(location,count,value){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count)}var _emscripten_glUniform1iv=_glUniform1iv;function _glUniform1ui(location,v0){GLctx.uniform1ui(webglGetUniformLocation(location),v0)}var _emscripten_glUniform1ui=_glUniform1ui;function _glUniform1uiv(location,count,value){count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)}var _emscripten_glUniform1uiv=_glUniform1uiv;function _glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2f=_glUniform2f;function _glUniform2fv(location,count,value){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2)}var _emscripten_glUniform2fv=_glUniform2fv;function _glUniform2i(location,v0,v1){GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2i=_glUniform2i;function _glUniform2iv(location,count,value){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2)}var _emscripten_glUniform2iv=_glUniform2iv;function _glUniform2ui(location,v0,v1){GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)}var _emscripten_glUniform2ui=_glUniform2ui;function _glUniform2uiv(location,count,value){count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)}var _emscripten_glUniform2uiv=_glUniform2uiv;function _glUniform3f(location,v0,v1,v2){GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3f=_glUniform3f;function _glUniform3fv(location,count,value){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3)}var _emscripten_glUniform3fv=_glUniform3fv;function _glUniform3i(location,v0,v1,v2){GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3i=_glUniform3i;function _glUniform3iv(location,count,value){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3)}var _emscripten_glUniform3iv=_glUniform3iv;function _glUniform3ui(location,v0,v1,v2){GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)}var _emscripten_glUniform3ui=_glUniform3ui;function _glUniform3uiv(location,count,value){count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)}var _emscripten_glUniform3uiv=_glUniform3uiv;function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4f=_glUniform4f;function _glUniform4fv(location,count,value){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4)}var _emscripten_glUniform4fv=_glUniform4fv;function _glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4i=_glUniform4i;function _glUniform4iv(location,count,value){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4)}var _emscripten_glUniform4iv=_glUniform4iv;function _glUniform4ui(location,v0,v1,v2,v3){GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)}var _emscripten_glUniform4ui=_glUniform4ui;function _glUniform4uiv(location,count,value){count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)}var _emscripten_glUniform4uiv=_glUniform4uiv;function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)}var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;function _glUniformMatrix2fv(location,count,transpose,value){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4)}var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;function _glUniformMatrix2x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;function _glUniformMatrix2x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;function _glUniformMatrix3fv(location,count,transpose,value){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9)}var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;function _glUniformMatrix3x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)}var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;function _glUniformMatrix3x4fv(location,count,transpose,value){count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;function _glUniformMatrix4fv(location,count,transpose,value){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16)}var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;function _glUniformMatrix4x2fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)}var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;function _glUniformMatrix4x3fv(location,count,transpose,value){count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)}var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}var _emscripten_glUseProgram=_glUseProgram;function _glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}var _emscripten_glValidateProgram=_glValidateProgram;function _glVertexAttrib1f(x0,x1){GLctx.vertexAttrib1f(x0,x1)}var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;function _glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;function _glVertexAttrib2f(x0,x1,x2){GLctx.vertexAttrib2f(x0,x1,x2)}var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;function _glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;function _glVertexAttrib3f(x0,x1,x2,x3){GLctx.vertexAttrib3f(x0,x1,x2,x3)}var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;function _glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx.vertexAttrib4f(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;function _glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;function _glVertexAttribDivisor(index,divisor){GLctx.vertexAttribDivisor(index,divisor)}var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;function _glVertexAttribI4i(x0,x1,x2,x3,x4){GLctx.vertexAttribI4i(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;function _glVertexAttribI4iv(index,v){GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])}var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;function _glVertexAttribI4ui(x0,x1,x2,x3,x4){GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4)}var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;function _glVertexAttribI4uiv(index,v){GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])}var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;function _glVertexAttribIPointer(index,size,type,stride,ptr){GLctx.vertexAttribIPointer(index,size,type,stride,ptr)}var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}var _emscripten_glViewport=_glViewport;function _glWaitSync(sync,flags,timeout_low,timeout_high){var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)}var _emscripten_glWaitSync=_glWaitSync;function _emscripten_has_asyncify(){return 0}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function doRequestFullscreen(target,strategy){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)}function _emscripten_request_fullscreen_strategy(target,deferUntilInEventHandler,fullscreenStrategy){var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)}function _emscripten_request_pointerlock(target,deferUntilInEventHandler){target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function registerBeforeUnloadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=function(e=event){var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_beforeunload_callback_on_thread(userData,callbackfunc,targetThread){if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(e=event){var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function _emscripten_set_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(e=event){var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(e=event){var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function fillMouseEventData(eventStruct,e,target){HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(e=event){fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread)}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function fillPointerlockChangeEventData(eventStruct){var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)}function registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=function(e=event){var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_pointerlockchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(e=event){if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset;HEAP32[uiEvent+32>>2]=pageYOffset;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function fillVisibilityChangeEventData(eventStruct){var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState}function registerVisibilityChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=function(e=event){var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_visibilitychange_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(e=event){var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}function _emscripten_sleep(){throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/olcCodeJam2023Entry/pge.wasm b/olcCodeJam2023Entry/pge.wasm index e990bbda56871bc4d3646f9937dc90a4046542cc..6a7514855a7c5c966a5584b2b4e3546d90aa0be0 100644 GIT binary patch delta 200330 zcmc${31C!3vo<{4XZFct4$2btnXrX@6%brFAcBIp`?~LIKt;vnb(;V|q98;D=pdj0 zBSb`uB$|jI0RjYB42X(~5)>gyfB*r)BK%KvpEEN7^ndU7-S1w3=|0s}-PP4wb#-;S zdy27lv61)OMa|zx%t%bI*_aLgaa#lWZNd`p&G2dC`BN@(xOm>|$c#&F4VT-Ko*ePO zJ=YByc+brvAG~kWL;rg0i3gv2{>H~%e8~2z-TC-^BSt*=fUP9K{_xWeJ!D&*V1N9+ z$DXkL>Co@F=b@*ce&We{kbK{$$DVw`R_1d*^U$c99)0?u=WQDkJkN}}?}6br-uK)? zwzN74^5cewo*DJz(+}B3*YV1416hY3u#Krx@1A=ec;UW#9((4VkxxGM#Hfd!zGu|G zM?Pdbp(j50?*2ijNwKugKZ8E}4{CiKEuFcT05WcO=(qddMwKdw> zuvV(A*EVPywK8q9wnh6%+phhr?bh~a722QLUae9)pjBxHwQB8%c2t{e&)3G;ck8FL zt=eh)dCmU1J;Of9zC@d3Uygqz`1ck5eT{$L0%x0+X@ASU1F>JVo!W2OF75Yd$|U=K z#KVX2Q=?6>N9GB z&3-1K$nm*jiQ@~$Qb#b9+@fWx)@@SSwrk&^W2eqty1rw7*Pd7VHT%wA~E)PAu4Xg{s}WdG9sn`GlB`_J}W z_C5C9_6qwS_CM`=?UnX@U@c$P{kZ*veV*ez$4UEN_S5!L_A~Yz$NP@ajxmn0fR1y# z<`|DK!|}S~4aY>sn~ph-T*p+$EXR+?VVeCDN4|r?@Q?NafIfA6<|uS5L+nTUmyYFV zv0}#x$4bX4M~P##V~u02qtvm^@s(q}V}oO(B;4fq8d%fpWsc2`Esk#-TOCs&y>A`g z$?$u}HW~il_)&&GIkwC2XU8ux+~Fvf;m)w*R~h-uu}g-(J9f)(kE6oz2l)HTG2Z!x zbAofCbCNUD`Id94bDH_BpgGR>o%5XYou4=tJByro&IQhe&Lz$donJbaIX`kPa(?X0 z*FJZCf!}YP-#Nc`Zgy^Qe&gKg`~>pe?)=#q{>8b?`GfOE=TFW|?GyWCSB9&?Imxx# z`MdLV*A!Q_YmRHK>pfSF>l4>v*D}|aF6tljCsSK4N?Q;F@+U?pCS!fIlzu}(X zp6H(Bp6t$azvZ6dj<~0~r@5!Qg*(eV!~M2|G(LS9(`@XL(D!tG#b|r+C+R*Lq96>%3oi*Lyd3 zH+naD7kj_ix`9 z=sD;;?5*-vdsn!Qcu5SWwWHo+-Wu<5{K?c#gb{q{I_W*-J>>n#KD0@X#*H@lt{Hai zMa{c6>(=zT>u3Ak@xANI_RaCl_2u~9_s#Ro_vQLN@GbCt=v(Of$hXM%u`kbu3DB4C zD?s?E?=xSaugLegZ;CI=H`N#M3EyEvV5`IP1x{F`(Z-Ddw5|9by7{6-3zpegn{onb& z_iyw65cXI2PbXw*d;Mdz8vk+s3I9p|U;fjGjZPesI5sgoaa`hSiQ^MrPkaNh34l#Z zd^2%%!dUHxz)yjx`gDDUK2x8qzpKyD-_zgM=j$KnAL<|JAM4))z76~ss0jQK_%pCK zP#M@4*cI3xI1s1`tP4~Jjs%Vcjt5Qz!kOBsz+ZuJ`fK{@`WyNL{Y^bnAFpTVKVa}q z)FKvK$F~I{7$o<4xGU^ zO~+~aX#L#pG5T0trKjto!$7D7ki|_+oR%mOso<={8HqC!r`cyE<|Zym%u8I1KLv@O zB`!%^n)oH)s}t8HZcN;i_%;5NC2mgKn)q$vcYtqC+?lvLaZh4J;vb3o688ggAn{P* zk;J2k#}aE2Pb8j{xsMKn#{|X((gUvrG6E9<5j{(vrRVAk^=v&yGBP?aDKI&Z8JH57 z8W4eL`rGB=-$;uy)zOg4T$7j)ht{(-xIW@@C1X8GVG~(NkTH~ z$!$S4&~GESTSDyp4B({zZlb0dHegvmrvJqU`k9ZuWr8ngGxXG!Hskk+-i|igK+spr zc7Z;bhqM+*8=lONn*N5jyFS{VY%`X=;qA#&g0`U6lLtXuGuuU6*bG}ATMq=`p1ezt z840ODn_d!0ySia`TL9m(jPi7^e%K$f8Qapm#@4q?!U`ENwgX12A`g_NSNn~UH@rrr zVn#En0o(64GG6l%TtDD9P9eD{L-J}j7EX}KdE>nVr{rxJUIU*gVbnfhIBG;+sVO{3 zCZ>A{qTt{rl`__={E{M?Km_`c^8iikn0yLQ{9+PM=r^`QFaYR>{KmqG-k{ysuHfkq z0{{~Ky4S#Gtm61cg?y4I5kpA0ejJ{%6xe^jjw@^YXGNQ_}s6c3zS74EW(gYP*bRacBOC?AacqXjsS8Re} zbR{MvMpg=l$)lCi27n}!F}gBN)0CSi^QsVbVFTnUmT znvjJiBu18JLO^KZgbM&NnY3U<07))mgi8UET*fGi6`_)inOg~9B+Y2{rBQ%t)D8G9 ztCWq30F6rX<2J<7($Y?iO-m~-mhD^)w7tyO!i*jkQ@a4_LBJoPnO6Wbks0+2zlBr@ zh|d_$jIB{gRRM%ApD{NIss<>+j8n{5X$xDVY5Uy$v%p1~Mjfq2vXnJ_Vp`g7{Rxn< z&ux@2<9DiCi5fE#0s2t&p6%u=0f^0bjTyU{g)|kQpKQi2%&4##CR!F?S(R=~cs=<5 zn=uQY%725Rl+7Jh5-3xI zaXnzGA~U;~?9ba29ZHO5wO!H4E@tvj4iKfskakH(JXwW=5LL7tD=jimnmJWjbRacB z)fORWO;C*l$r4S-DH9SSOWUvdcZ@0>5aN-_w{pq=OmZ0`oCuJtT#PbPQA#q4aw=dX zyC_pxQGgmhv+$k0UydIHYEsMvtT=pDt1bi(#jC$&eewwLtX3@mjQEcgS)?fAAWIcp z9HdxLNkWx**eFqSvf^ferHW8i+yrd^sCKKCNk}}|Rtbrx+GbHnX~|Bs-68`e@|Npp zxkVV0@-7LAZ`BGDqUdNLtu!GqswzOt%2`cQ4Ul9qMppxn-7bJ6modT$MOcf|O29}2rVzr7 zjH)O^wQ4oKYgDTuP_3F)b#AMs1BT+&U$fE~gm>0Zod}p@KPvZ3MM+Fp{coxwjPljU z$Wmlx#bv9`QgpK7R*zA1vf?Hv2OufqXnDC35>K{JLO>PM`PMty&rds8-#8@3MnREj?(q>Ndc(D;NSbe0Kp>d{#qO0G7tWwOhK95YKAqD!^o& zqOz%$q>?q0(;7t=*Y>9rl_?A>D6;#`j^XV9c8LPZ zfjgg+^4DTYd0q)?YqRyTH4oa156pNH;&aTnj`$2S?neAAGj5uz+89;D8|`l^EKU$H zQe>fz5F7}gOG#CxHk+~VC~M2HK?(wzW5%h(S!SF{oNC62a-tc>#u+)0z0RnvRo9wB zk>huD45uBAuWR~YcmLe8>Y8ElP9>+AaVoiHm68FKTxG_om*2wIW*AOynf%nuQW#?K_3L z&#LRr5|(1K^|YmcpC97ty*aMl>&!USdxaS%{y#V4X1zNYMOMA@RK2lIA!b&b8UzTn z>b)zj-rM8qz156Ui5tu~QI?o-n^9oZdugqD7o*@wRK+p)7moD0Hxw=fLUC-zxd9lT z5=I7Ls2%6x&8lHLqKJ>oI0@u^Gfo|0wi%~pnP$d`y*JG`u{X|)n*zDW*nXIFMXLE$ zB@r2k69^DM7wZVcHL;FRWX7q)JTp!u=9+P$%r@h&D_8>Ai~4$C7Bv1q#MUQ_SUF;c z`?kgS1t%5wIN28lXu_$)N1Sk~z-8W9!kM&M2`2@`y=KNqAgAMc$kDhSvOlhe>@Hzp zD%NI7q>GVOZ4QkZOCX5E2?XiLJ0_4>$72GSYQ{+*6U{gYB;AY?<*BGZPAP$0fOM1@ zvmj(tM;^YvV>q)GaB8)?|GQN2^jNQ0V^+2SvR!V*sklNjPQ`s}#?AUQH*&1{%|eb+ z-iXB259uIFNex@mTuodBtKuqH5m&+TxC(AF<7j(iC5L_1vb`gER_?Euj<#0E$glrPYz<54H@KST)*41jKe32+FpNdv8zW%+L498vTSM zS)=WUl*Pt%IWX5#h2Ds@;Mc2}vEH&I4Kb=HS7M{WVgnJw9bNarKmhx0YY8GdU0S(p z#7c{^GoX;8>o3ZTSgb}QdyTEF8eOOGmAl4f4zIK$wbq&=?*0oX&$xB<&9$tv&DK}W zzu|GF;7HJatx*j?f<9u#NznVuIC1*B88-#p&X|hw)WUYqD zopQn11`*eyq{#b@c`y8wgYsQ#LYXa(V&rH)quCKb=9dR(O_u)qwqq&B$qM5Jb)ydG0Fl(DcQ70 zivX)7y`@orQpbz&U2;^a;|SFF+yGc{T%$_UUKxNWUi~%evy~9fYSnFkN&cg9*sdt! zWLmE1;vl;em058qylM#nT@+FyA@NkFEGj82Szg*P z%BWWT(j|!cUrfpw5++MDIhbfdKx#rVO-PJtDj;U%ETk-eB$F|^SpZ2cV}#iNJuI0d zdNcnV0Bf~sZWN$ewE*8m$7HJ_P_0^->oF?lduR&FL9`trKF!8_I&?9d!|mD|88W<8 zcy)r0Am%Xh}V0+ma!XQH4-El}qu zsHFvJ5d|e#paxM;f(62{j+wox7V)a*XpQU$R_8At(NJUMksqFH=ia0TwII`XM0_Lf z>bf%_nO~*2vV}O7qb3$`V)Y-F?U?`t;S z6pg#X{1q~CKnNk&utE;4U(kWWs1b`pUVJ*WemqQKvj@FX#GLnBN%fHUct}%FThJ+S zRZ>_cxhT72dx-OXykF3rO#UIrMg9r0WS+w7CbOV66nrBX$W2G5~G>s)?Q=Vzy6x0n@N18s< z=wgz1Pd+%v`yVHzAQS(vha3vjlN*?EoRorONWYKm-{_*;D7B^PCiTc?T3u9aZv;xv z%*HmOY!#MzNC8#Sr)mjK476HF4+d=p?_=u_S@CRBUVJQ4{%jKaJra8M!n#^en@b%P zoTIl!zDNcjGWgl1y%l#o&f<;)@@eULxa$#RZuYZn?Ei(bg3mP#tFls1*4WXg(G(?# z4k&BaN@k43xHTm)mPt{hScN47p&h5gH43BHaH0n!&`>Z{LWx_nxO3xkTf|bOB7{bJR~GA%2MjR$Wcd*5z5ir+|`ZLJl7+vr|MJC8#~wq)F-|LFQqYF2Fu#PNldkKw04-)3@i%xHY#oK4AVc#2t7Q{mrHNw6X( zlb(DOYP_9lY#zwJfEvGpuDv~0<2z-ItD{{zT4ky$gqDy%;~6}gSw4y^Pf?cUXc>Vl zmwgSF1es-64wsi@o)zcjiAs?${zi;g6{$*DJXxbj4HF(sliHPjuhx(E3o-!F*QDE? zieD!^_zcW?$Wcl>3=uKnn8}SFP181Cf|qJgWeMd@)L=i=fJ{pm@Am?^x_}w`V?udC zR$zO41+2!#!lpVrdocOLgOXfEr`y(6ABlEKO>{Xt$S8&8?gUZ+w z+;Q3Ws6Tl6!Wl8^|9R`xi2|4dl#~oW7JhkAia_2uau`LkV}x~ z$`zPvV*U2o4;x^Z8kE+FpH`|hqbK6unsI_}G~={>tTy8`CoMDMw0?YQ#%cZd z$c)om@xB=cwiNYYs}YIb+{Nm|`q zN(a)2N+(R+ofM4N3><`b){%J3EqY5}&s@Wdb+OjHO4cM;t0vZ*?lViv#!3#hn+&ko z(k{mYh}Dm#dRpZ&voT4HE1^k>de~V@kDQWfVI_gRq*N@EwCvTDO`nXl&xWL%`lC#y#LQsk~#dKjTs-qQR(NHFz+H^#;qS=xjfRW?TYY8=28pHbGyOfcFDu)aWiDWr4petSp4UYwUP;!xo8R)uXPWm&=azKGHin){f zJX8#(L$``ydUE?BeO~N%OZp*9<&=mL^+^yst&Q~wa83%%(Qf^BSX}fn_;ndsH5lN8 zSybaP0y;cYY2Sl`-d$CZWiQU>S^FXnzm&%^@*BLooIx@C{*}Ag>PXL5uZJd=@oKj^ zJA6TRsw2qIk?d$TeNklntF4od&>(?c+XH$gRV0XM4_?qg2etln2Ggq}7l!+@ZzH#a zA4NvX!#6f5_ciiCLq(s54|NAP%F3MwEfrAbI;92Kw#c<<&wztfX+yAA2#kIlkXJ@G z!|$xotvizs0(=;tsA^XydmDpHRtq74^&EQ$Wn;lH=%9XTRpj94kmncO7;}&rH3uV& z$2`DxM8ac+A?HnFmN<%6Fnvqp&9Qw@*V3`CHl0gaHz_9?Jcywv;bKrh*7kNh;Y zQRJ2MCqcU}y&2mYNf>t-`z11D+#RjApo4d?-KgqGw3k_Pm`kV*EdCO${@`=oDo8m=VWwbA4I;+2>ac&aPD}$ z-8E8@F7%xsIwAOm+)0{^Q#;t0zD*ChFg)>tbX$;?BxncttwGoMKnuD$*e+DO!Gqil z(QkSEN-)*%ji!E5{Q>NNO%C%#2EOq?yQ7%wT(Ip?K{UX=wG%?i5H>oLJs~5ZB@!a` z30-aiGtfsc%g`d*0vZ4-CcX?doHkD~BO<}{vjqJo=<0~wPS{|MSZ?S!NJ0Yk`Gb6Y zY*{S7+k|zDZH%0ncoE-P73uz_!8Symee+RgI$FKd9+~)N%ZO`IJ12Z9%uhRm=Sk$A zNj-r$eNs2iTzklcalWl8vU$>ViQmwe&t<9TNG`D5d2**Xgoh_z!@h|WOzwm}``hH} z(SI+>yqmop`98B1n;Th@*(4hOEA#5QlvM{Cd_HZ%)Fl5h#CgYCPl4NwZ?z|GPrNk< zO!S|U!qciEBc?P(CT~nJ8qcsB;X$+yh1vye6hn1}owOyJz96!D%B@}Cgo?TtEQHoW z5_W?K-;O7ub_GPLSo(q~Q}65vmsHRM-RMk`42e8dQO-Pva;BtoD@wSo)}lnBMLFvn z%2|>!K~cgpwiYE4Ey~&FP|lW=I;z-m+MRvj99xSNsfv``P0={|FSH6k2gRBqL9qKA zIlv63{$1pYXf_+vRaUJ2>Wn&YfwwUIs|~}szHEHux_Ie zIUCa44*-2*N}`zDSQCZm24H5PVLpZ_>8C?6BNKcAC=peolsz(~y&SOyJOiwxCi3ha zU&%HsEp*7P=0os%{rky204U9g1O7;8Mk93R%&j*y+jfkgDLe>UhenRYgoBwo311WU zMK&+Icn~%XdXa{77b@aXvzf88QOH*8nK4^UlY0isU-8R!dK%mhRiyc5XXYpNHoW^VTG7(jA7)m#n2G zyMj7qse4 zZHOIrYBCSfottEg4L59TPrB4$LaRwX4^5?1NkTz1Xb_Bf*5oL zH8f#pEm|b&Pp9 zBv>qh`I&JknXwcw57z;Uc{=QmGVd=;_5na?E+9oNUq#dH&4u^s<^+o^dlH%p6YT0j z*_w`^8v=#yh4BC@Z6Din2r^Dcj_qoWbos!ozLUvpXiQHN=1j8z)s3U&2 z6y>t-A}@XZFbezi^L5QP=vWGs!2}WHFIOCMs>Z7D)skkQ`eVsuFf|dgq^I3P6)&=z z5Gi7Ktx-*|C|rV3jsWvL`bn{cgz32`^5_>m*oTpk#X%P~jZKW~~rn-6TqnCg233FnU0PN6>*- zYC=DCQ-M}oeA#((>OK&DefmLYyqYv@`?5IG!m#)0!;>{Edm1UgbL@?HKMvuh@DiLU zkm&>aOz1k8r~u~r#z@JE%Z8&d2u=NglEH>2+Q~eK=?$x8r5ob0K|J;ZZ2n;mj02E$ z!GJCo#UQQ1fQl9ckTPgMeKG-&$5%G0kGll4rIv?t#qt1?4$LC6SGE}fr<3S7g-Z&x zIQkup;N@{C@JO*z(AD7?LY;u-GV%h6cJ;ujRz3hI4YQ@y)o)*QlWu7iy+clP^`b+O zFINpr!NgU&t1p#(oERUV3wy|8#v<)Yn#FSH$!nmjAB)^plG3lnj{F=(71j(FU{rDn z?=63!d)4}ex=eZmb|y$hrv@9vhaxLVl5Q+UoQ`5(GXgLrwHBeig7iyC;4m^}=kLiU zavG54M<#v17gpA~C!flVii433s~grscLA&?&o+%&A!0Fd`|1Z-dSvMjJd0>m+{MG(!CAFO{e*TB2as%E3Fhq3Ho86*Q?lHbO(xm8p>_>$^MT z(20DtzA-zJzkB^dtcP`MIt(+B%gB)mNKf7yaU7zOE2-86J=Q!?4Y_$gBYR&Yys;ZZ zv3O&<{%VUWTMbFpNvp~%&&(`{%y8~1GfSe()FG_QY~j90vrUxQ^_yr<{qm;1m*isa z3yDa50VjWSLZ{RQ?1)=Lcf{(j6d?1o3nV!0%0Im6b57?zi#9iO;jjhvxigVXn=i&@ z(Y@tz%)^7Xbh@8rV3$-kpr&B=iXjI7sOaE>_Y}#?9DIA?Qs6vgrC{*E4GLd!@R6gF zHTW=Q=SV#QKuU*dUmepUnp=Y*o&DWP**cQ)?S(keKaYNoUi3UVQ;hI1)>Nf0dPjYD|=0vKr*6WL5*J25nCOQFWMjBvyy$_T=S%szQS+&e4ZT zPM&YE-=uN=ibq=G?hG+lIxz*@YOahM^2dIAD`V3l+rPW(TKG>zYnK(P18VniTnap= z;%WyMD5?O>kmSJ>*GO;6MgmY(FfXox(MC%9=SKRQ4aKQ*YMGzCttm$>zWi~>khO8V z!k5b86}9*#E(H!%Rtnk(u2EJk$g#<)g=``KR1LPq)ganLFZ^Q@wLGVZD$iv;^5pjB z*egulK7gNhVxk%IoQbJ@WY~@iBzk-NzPY0*em~q{%|E~GSVXEoRb*Ou3l&*f{=ACx z+WCx%EZW(HZOq@X^K$G^@|*v*l_g_mL2G9_J|YCGX*>RCavi#b3zg*#OkO%|UhDn- z4%wgzc3%n|>d@}q_-(&uP}2>-Cq*EH^I|7GAz=%_z)86|p$JUgbAyICAyRfSMW?yJ zMz+r~^h8qSnp9lLXC03`SP?|N<0>vgjwKcU3R%N=WXP+s);H=Q996aBIV_|bS;r%n z{IM9*+JQf2Vkk}cvlZw*`SWqU{a}7@?*hit?2!$X;~MTdhQ)(2z+ZPA7ah{m-U=#Z z>b_neoV%|xGTE}PPhCv3(ndiWJXm;rQtu4zpV$H%lN2z!qN$^-2kpK1qt+mbe7*m9 zwlROu0g`28eATV^EwAc=-#Q1IBcbcT)=WxZLRHU5=Ao{2C{O5tP?YMx>ZLI?#TT3$q-er@n20q z*!!mPYpl(*Wvm|0Ixc2utjV-0HjHf&kTMPyj*G__dycIZ z<&2^Ag_E-uY@=w$*^v;62s+L#z(WO$KshKt^wX>oE-`aYMb0j}%DJmu=A3JnId8Jd zoDbRmE@v<0{3yC77Oy$kV3hH-Q{;rHf zD&s+nhPX2JyP4#^gNG6K!lQCt;fdya4M{?mtwHK}GM!O45nK9UNNYy z^5nrMPM>0*zIznIN)rbI89Y@#4o?`I5-3)l^0N!u5G$0KKH2WO|39JV5Jy3z*cZXd zaz?ILWI2udLM8P?);I}RFo&9Mn6xOtq8h*kT?|NM$u6nDFFh(oB(fw{EXF0WZh-}M z3?Qk&!{bxW5o;1zi$>6_@ds84c{+z=tQmINsx1>*fQ6#zNp!k{&8$ktxy~|iS%7uE z5Cu`6AVpd2y?vJnrn6AtoB&Hg~6q8Nj zw)$){D;Mn>uvT;~0~?vC-ix~$px4h4r43lSe%Ow}q6U8#6@m7yB5J3KB-B$uu=Q0D zoZPAi9Cqf2Zb|I9#+&pIj_6%5wSyOCxSk@1G>vw%bHu77*6aVim_7|z8`S3hhOAW^ z)Fx_`z<6r{%N*K;7Ao@QN-!6f)nZXY_6USlzY$y0us99+x(%(b9(^KTHK;4pCPx~v zo0C){!DtBf<(k*K4wI>y8ndP%+?e%f97UlKaV}QNda4NG0|Q1L&rtTRCamQ(i)egM zuYQQEh)Lv0gDfDP`KlQqHFPX8l_*=}2h=LSr_8W=`i#0nLhg~8zEHf-gbfVPlTxIR z25DfVaj~HZ>&bQsttq>)DVhUT060F<(U7L^^kIf|;M*Pa>gD2@rYz*99zkcZVpdaj zvu}?dUH5VvYUoqMsiy2jmM)%ehUs;tnB9yuMql|HrXQ9eUTe-SMo`?G^+OM1LG}=W zN8q=HrkN6CSFvegdk|CHyCN~fl9ARmgsHn+yofI?b2Jz4hLGKA@kNMTgy3KZLvyw8 zCbJgx!4SEoM(k=Mg^Fj;Y&Ia7-Rq(>%tm4X}PBo3T+h&SuTChfSRK{l#X!bgVd8|Ub(1Jm|5qT}Z{%Y}! z`tr4uU!7XA1^`~!l5J(5i^i>3zqVFGVXutlaZ0yI(t4@c$SW)e(;ZqGyr;KfS9T+G zb6V|S3q)(G=1Mv%hLy-Br#}5N)n&w~R_p;3dT(nfxR(*gGb?UfLN9a4nVB2Chnr5J zD5#({3$fLO-?e6sGPXcmp2AjP5NK`L4fwjHEt>)xHVoKXGfi2X$}FsD%U-dw1%=Ob zVo(uQiO)K-pIM2R+J((T(4{MDZC{1nB)0cu9mV*rveB};vU&~H(CIGDtZ5sA%0m4g zO8s06yM!fmB;nHLHRwMDI0bz|@%5cRsV zR`qt!=|3GDNHa9VN^^j?wmZ8W_zSwThk;+Ghs1xN2OG*3iM$?C>p9bdO+qG;-?Vo-X*jGdoZ5?h%aC>I#jNpdR3&U~rQ~U(!ZbLX z3;`IovSOOqDk=@F5|;)~sbuMm23-%NP9lg-W8#;Kp&+ahv-+?IiM%fxtt1b}LI{@W ztHcj|F_cz||8BWQE@9hH@Q6zxof2{KQmj5DqSs|;g;nD2%h=%XYCDXXsG{8B(Awv~ zk4`NQy-KybJQ9#C5BUIkiELa4=%PD9m7w~9M7R0^&{bcMP}vsCU$p^rg> zF{mDc)+MNbUqL+xe44>}V`ANeW2btUSZSk%^CwKK%+N+9GkvGHra!wgp;l{t+8>kP zPO+yy8yN%*)O$`-F~b20QTSj2Lzlsf?81Ef`~cRnHu?Mk>?^iTJbeXQhv1TdY&dG3 zJCI#w_K5@!`UDw@lD+5{7hcIavQ_hqD;aaYoe)aEjQ>mFRfCwDb&QvcnC50!h zVso@B<5}RcaV!?l5`(2J4F~tcf_Vf--G{~xb-U>J5j(HJbYr$(%NP|LmN7>C!q&o-;C&4t5mU=L`R>lWXPrHsuJmA9~~!@KFq z0W_%UNnU+UVlq@b>L-}Ro78d8?p0du@fstV44lHB35z%8cKR;X^BknB%B5N@Ky*Bb zO@nSYp4RukkJq8kr~J*?y(Ostg{@rUVQ<=bGnSXI`D;(y5n^w7Vs=3wf(m0eL^ z+A^W(k>eBj`VvR_yW+`PCCU__U<&;HR@U5CW+|3sQnBpho#Xd4rUId8UVIyCer2gd zFe(My5T@n;0y_j016Bno)X8ymK3C+G@g#C>?M9oqjhPgy5IEp_8l@XYPgyyh+@84|^HGxAzd{^n0O_{<@D9vhu=D?`I#9=6v6SSVhW3{)23~gL z^|ZA5S*fz_%TlERb0ig2`l0Zn;mpT+;cy4T3Fj8D!WfquXXH&MKw6#y3C2Ujff1|( z6Hvk9>|Z?lnD9TrQW};)ouLzWMitwtCF70@4$_UZV`A77YzMGAJ;`8S5<8!i)k_!& zd6$c8M`9`7BHkIvI`Umd#m14W)wRe8Zf?Vs$S~aQRr7Pya1Ia*=QL$^unkfEGywHe zAVYdfk_t!gbHE zPa%fzDAuCe$tu>CuFW?GZnYUFAJ|GWjvEbdrc^jMQ^3PLV(Tc@33Ah(Wgj_C9iTq= z>9bh!ei2pAvX_uB;yEeMFP>wUwZ}dI_UG6cIozlxzW#hY~aiw0xd*eu9LG zp-U^QB|*H!;O=O%8SE*tLaH%{HddPiR+t#oOhrKfToScYgRqO(ct-|RzXhKys4=<|_r*e1igW`6D+$I7v!Z+MN73V8T6TG9&}j%Rij_{A6U2g$4* zO2h*6c43DM_B4l1^6ndF>4{R;@K_5yju8h-gQzE}YoG%HdWnM4LQfYiO+5n%U1I2# z_5ol!?+4;k_yzp1>MVb;1+aPnd@8n8-5PEq5l9Gc-+A@=R1CJGeX$wIB%T z6mPBYzsVXmDt7vkXf5Zx;c#K0&_2CX^na6$wp?N8L|M7QDDxD=4;==o+^=u4me<8= zf|#3LV_1K&Y)>64dnV4cWcQ(cA&h5c94s2RSc}mhjZg-z2g|r_WFHf^Ok%?{kc;_~ z*sT}P;5GM%((Hygr_N+{AyvKgWLAK%a67&=iX5E6yt4lx(x$NGGtVH3fw z=WKuB6Egs7rg~&@B2HvOb{()<+Z^@`h4bgIKke&a*B0yFV;#hbxh$m06?^8QcdZkp@3Ag~c;Y?wr*|C; z9JY`~Z0*m%JnL8|SxlVAUT17`Vb*-c8E9taVgj5ezRP8K_!|EK+l1g2ES_v#VdoDS z)ZfkGxrMA}qpC4d(paJNV-PZpT6z&72NGPfkPXsG5z#+lt$D#d(fcDdj_ns;e#Ax) zKOGjawK~=ipksPey=9)zK4zULwfo0xBML$JH-WEP@?dc}7kSnvY&?)!E`}PnS=_Q1 z8>-D>%3{_H!DW;!$)dU@79cBIq^;L{<@d=oFVx^MN2$zu4rTrB5_Z9VN1oui%~JOG-(?ji z1JQRG^H@?&#?&0EKctK)TKYHHAs7-Brj?JEvCICe`Ck10pD%XjYQy16r1=aBx&Cf~ z{=I0voYnJTsl`Jo40g!*;_~IJepAbeC8s=Ej!knT6g`+5pI**-UR;*WaXG*S+Xp%h zf7-CVouiDjB!aORECH~z1Ofs}>|D+U3?}y?_#wGzlXcdWd^-HH;59a*k$F=e{X>Dj z#w%5HeP6=Gh+(dWy zgLxNAQmyxkUTKeZON&JyVg`SxRCVkx_0K%AXYPC&RaLmH5Y8bWM4sXnx3%Z-ja6f$= zM#VAFZXIjeixw+WeKM1YxB|p#F{IpmkKlaBsEQF+9}{n^W0wwAAR?%)P4H*Tug-!0 z#e#hDM>=TPFfy=1$4M|Th<*XZu>6<^e8uY5lN@8vfobYn4$`Hjh(2Gjt6EWYHCa(< zi8ZSUnPZVhCUBjE$zJ4s#oE`iP^EnUtf3@ms}*0d)?PFn^b6<#3q{g;*3Y9jKxX2; z^(@4}NBVk9-J8Uc^{l%u${*5e0BBu~I+C}f$vJk^#4#NTSYp>Guj@CkI|dUMYKN(e zCZ^kF?2HF`2Pz)RFq)5)J0=J0TTo+By@5Rijvn5~+Vh;_BC?T9;MGS(a1*<}_cZL{ zX@t>*5Ohgs9YGEEQ4tVRzMa#UJt3^Uf<5-D*sJH^PBZrEM&<|NgH5nhO%oNHV8q-c zQom;Xo4$qnUma}19^D^LR5ou$qeiUznhi5iCd5$E;!%2(v0)FWT+V3GT&iWOsSdzt zou{b|Ju6td15i((*CybmM+!5%&rCVXSr~EZ5MYHm#HKCms&-Z@!){02!fXKYUBksi z+NwZVp_ffCfg0bK6DV;j=c15iPM~Brq6u`uW~kDe1fHd{1aUZ4g$mX2lpyMCVYi#L z+!I6D{y$vHr2ld)ZK{@`q^P8lAac4rUKeu3Qw zY_m}C5SF-m8*DFci8#JXjK3B zL$ng}V<@xYQ3n1PMVT2x$&5$Ii=j-8p`^#7H2x`?%h(u7jXG#k1M9UI3jQAhmdq>T zQ4YpX_Qp`k<5BM19xZ4`3}vf@Lj8R0cJ{O>-EU$jr4|aw<(8kLx!|ERi20kaQ}l541vc=z%s!ZT5XN8=FQjv+h}MYuB#f$e0snnm0ZMNk_eRm7;B(IT#m zB3u!d!%sWe5Hp7XQH0)c2*$5$NJ~|VUQvV&grKH*ZYbzTGStfxbrq zyX|2YU-%u2yd7-qqaq2?>Chf_Eg3ey-UB-e!iqg?DE<#H>QxOas5va??*AuUjW=JB z$OTizmQ8rRhwjFcUYrVz9>Gk)#9}=QA$@1kcUoGpNXO6Ry?BO%!v)>M!)qeOhK2Ah zA$Sfh-nxxUT=j#!C@k;%Awt(+^;|6ofxIkFhopj;1`cFv!xlQz?8v~#R2>;WYvceJ z9Xax8m$-V3JgZuGQYBieaD25MQMGzhRqD>#b-Ib5^frjB`C!zj;v=(0xNwR@m>j7_ zbi-7J^wyB7kUAuj6|xS=z`7hW;eJ$OHE00Cty3C_0F5*|IaP-Dqd(DS$jAlW4U=2c zrJhQ)T%~sUYX|^H^Yqml@C~l$9D`A>iDTY?ERt=^lY$P1xwKR{oc^|t4ljy>ItR*JV&HGrxMkIf^Ip{!! zax$brc7|gVs%PJiqw`Io+kTvx<%`t)tV7>?CuT`BuMFYpCPTbWAj2+Zc!?R(Ae9Li zwR*nTyq|SPc8&uGR*Q=dklJ5(?*Vp!b`L5GehqArm=U0{M7{t<@n{ciF!2%`y7~JH zF-7TlZg~+4FA_k z`)y6{Z}Xuw>9Hv^Cuq^UF9#W&EsR1SpAP8B=|w24Mer``Nq*V=>0OhwG5CjPR7Qxt zhgmROEvF=TmtLPPH*)8$=vEeYB8v%eS=s_h67RSvZo)&N>tH`?TJ2-I7%1b+oO&aUocbd8%jBsG z;*=8>QkYxJoXi_R*i);6O*Ba#TU%h9EL1F|AdZaMBRFhk6byz{P7plpP!&(+{DPd+ z{33Hog6yldeE!Am_h%M$@1@c62Y6b!F#_U*`Zb(66@BAqmGoGZJis_;a)ODII3dvw z{KI60`Vi%WerRUni)LdpvysQL=ygH7aE3WVKD~xf3d6+>N7z)$+D#XSVVai*YV>pf zO!L!^!rR6r>K}#2tqax}SV!@mnLQyvNwvxQYeq4!Ha97<;fmx&vkv zvTo!S$h+KDV(S`qYqMzL!di)xHI7_G#~Rj5EU97LV~Ba@LF}Lq+a8ZcEI1Eh7eZ_* z#BtUm##d1-MDgo!c3UiQX*7{;KZ+YpuzSoztbsMP6H8C9TVsi*YA5zO$!;@i0m`&b zEm=^us=6mmOlLy`!|eVatbD`cI+vZ)*=n2Z(4h^^D*k9juEtgQAdH6 z1H{&UvBx`Dh&g|ch$h0!K^v3hf3a~YYigvwrx1^vX2YXAEc^$=Bd6KpO)MVr&Vwjk zJ;Ul_QlISML0KGUF8p68v-E$w%&voC zMPfRS8!C9pK#m!*>1w3bkgo*I`0}8@e$LR@?B&<_Y5m0iTba=v{)p)0T}ij$>SI6WO(Xoao^{cuhflP4jb7#LE-0 zl78psIy8Y-F64bWDT4`)OW|L29RkW00cQWfLDxXqEnqnz4z9x$2dB6;k#`CMi#Wh? zFF7!uicuWci39CC91KtP7#cVP!&=aHRbzOTRDnC!wT)xwv~9o{qDI=X2isjcUPD2K zeQfA{*gU3XrQ>InIF-nofd7Vp^YBkh{R97_1H2P+io5`Ch#bBO@PSU0<%NLi={yCX z%XB_;fRi4HCTTz@lpBOHI4B>{v`$RWk#G&>AKFoD)c@1|-|#%Wr2jjpX}PHK@w)$o z;qm`yEc8-iA(vRf{{WZ9!eTT2pO1y}4ag7_-G7iFJvv8Y!NdE}JqH>C2(C+ZsA);| z3l04u_Jl7T2zhC>aGgC!JmT;L{JK_XZ1M^_t7FAyU^l$t(F^%4Vd%)z3FM}GC;~Yo zoHQipW`X1c9%jTBHvZrcZ%`0loVFY|rvhKa@1nn+rl*BTy^^aK?a*os9on=eJLTZT z|D8N;=!m{`xi{b(jsbvSLoRAi)E(*S-y^%q1cc!H?{xY%enRxCFLB3oE;=*uavVF(-WRF`KReA){COGi)X`53kWGK zXEgv^wy_7sMI^KI^sJeP!cC<&-8vX@TvV~75mA6s?# zxlJ4n@orsm{j?(C4+f8UImU44GjS<~UaY2jF~k#H@i5+(tlW&dGq)p8a?i1@ z&@B%R&BDP3XiE!S^hla~2&*?Hb6e2Yo0k;Q!5{9?t}29ao(_X>85W3Y^+PKZ6}m_* zN6~!<2N6J0VaLPWBGU(p8Y>s%qF*Z>ax3>XeW`e?6~B)c91$B@@ty2Lv8XkF02=!R zZQv`NHC+sC!+ZJQ*F_Vz)2M_uTN_@#H92}YQDsa)RB97g0&Ss&YUe;+VALxxCwGuK9x)OQOEen$l@1#)fPPH=oPidKky zZFyT<#AwitSMi*g!qc9&N-morjf^$0Zjp~AwwsMmdjluPxV?(DESn*&YtL_FABh|s zTiv)6j;+CDU?exC2C@g68nb5099XbEx^Sal(_nq$z4=@}=u56o2=xaVY?KdIG=fYw zsS{F@>(gl}5{=T?qCp4V4u=o@JAk`QVnhc{M-kZ__~&qnyuBlTgdG$sJMw4PA`E6H%D|r#67R5n&m;^XS z%^S$)YoI?g zp_{UJtoCYqKj>VwiMw~@tw4NRSN<;qpLFG|J01rHjnYc5iG38A>M>~0j?RwJh0Ct` z5n=DfKjRCJi>2N8_dKmeOzY0)G^kZsr{Va2D<+pICb6>zuiM}NS``0hA$h1zqH-E} z`Ur?A;UeBDxYI}THpGz*&Bv4n?*B8Y44nH8i0d!n&EO+GQU#MQ;%$2(!!ztDl@6p) zICjQCw)I^r$w)h`nV4e#MZBT^09r})M~2MNg8c#~(Bjn1kpnhRHR6Gud{~_W=wX1t zwnVp{9l%}LlivVF>hBXm{v?!6om@b5H93y4%) zV(`l_?Yv~bsrV4$egqRhbTva@h61(2b00Po!CfI~m!=#BM~S}v%YpSt|C;}e~x zj}1rkNTsHFU;r09YppmnfH%LhVy&~iW}6$l$|yHuR~Xw=%qWv#c6K%;mqwF|&E%r^ zuJ9RW0#7CLE3nq%zsyVY3fy-aZhofq!=n{-uH;=ys-LCKSeEaUoXp?4i9{PbG>EMt+v_SZwO^(7LmF;k%&;}0Cx zX>#3o14Ot}oS@)rkvnX>~K;ihmJGf=jN;YER z`|uWQ|K;plbqj9j%UIoi@zD_5^ndZLH2IX?%5M%GfbxOu3jGi7JoF~G)u5^aP)#qp zjSmO*g4=kHR;p{ziez<-Se#_2nohf&Ka3?i^>*xYp#`*a`Pd-ue?#iHXY_)jo zPX2J6k_2C}dP5k<)joZPD8G}}Z&XS87{r>wPa&5SUM+uXeENQ&--Y#Nuej(gzJUEI z%J1T9I_;EZLrzAy5wy_?(oakD(4Edk%5>-?Rn|#6wlt^MdNJooZBjsBicl-$d2XjG0HMR*Yzvj=g7ISr~}h*2QA+{d^56MgdiSV}jE zk@xfZe2i0M+|T=CO2GucBPnCLa8y?ieQOKef}Jb>2QSvc|m{zf1?=3{Ow z!Ls|g-#D;VExG@bpo{;Hixi8W;X~kgbov?0Z)|#D-Dmj%JNn%6fAd>h!kK(24#Ntc z4D%!=dc1_$b-H-yB|ZqjM-=Q3M_%IJ0e!>E{6zo>EjKbz& z-dUu)in(*Tc>GnunQY=rHgP5s&Q(klJ{IP869c$-c|Yt7?bETg&J!=C^E=smu`L}V zeV#ay&TmFAWE{Vy`#kI!X;0$DbXg2fPp1wDnI9#j2oN_xXj3d9x<0RP{Wz=z$e_u1 z%#ZU#+IW5v!OIz#aOR0w8GHbO@(jGgFdw}gCOCA>-;j}ApC>%8^GlIB=ym>JSF31O zFhDMUv62Y@=f7CN1fYVqzs`SPJ+Qwsu!*JTxZOr4OpNoLFtgwqp4;dqzXtj-g1d+O zO3CySO#Cr{w}&02-b6kF()oBIf1d3qZ1W~}^SZdx&W)w;bxkyC#$pS(Fo>}|U@|WN zM$KgYjuy=NlpDW56U)8Wn6gpzl>!s=0fEG45k7&<5dEkAf3$rEU{uBS_uf1AZhEpn zfItH5E&)RasnRc^f(?CQdG=lc{;{A>eb1MGprIFmp%Z$Pj)4stHEM)_0U`uJ$b*0= z2mwL|rF_3LGk13b81cRR#Ldi|Gxf}wGiTa4`gkpiZ=0ZdFe=VY(0geg@$M7#)QHKz z1kSWvQ}`zn^$*1-He~VHXOiAR-!;LPK1t^hG5d04LAx4SzfABYXJQIPemBk5A3>!j z&erE@WB5&T^p-K(m+ID`EZy2#(>lABzd1)g1jti!^%vo6n5$2~hUXLW^hEa&@G*+F zKhfH#238)%8U^jCWsO+Jr_KZSgbImy5FbC}aq}@FjQ4e(ulLo$OTd!cbzIx{U}vTL;e~n=q5ZlxE+o_5tN(2uUP8H({1;G?FwsHyUAjIP2q;X@E_xMPMr6J$jAL%zU{ewdO#bS`fM1E+o?u9PTm?hYpo5&k2(O00o zyO!vgH+?IPJca!=rTv3i>7d=9u275KLC;u)9Z@`WAGs=w0)-k{dPc^xm+JS_gTlk= z%^XQoI)2ry&Z+Ji#Ay3@@mSIIG5>fO_JJ4h`>BwpL zO8p7kqVgSH3HFL;&9n9QYKg0sw8;pv!r-(YPI+{men6|q_h#!I?8lqfz{kE9?O$WN zNj={5wOOTC(X>+Et*iAo?WT#*R@f`_2G1&49Y*&g+vyipiv|hh?{r7^>P@f&Y=ZI8 zK7B4#vULtbuzdb#4%TA@d`J!!Z*%ze9E^lH{Ctk!J2lqm$>ut72dvu~eSR&{m4X$L zI~qH|srb7bYT-5u@WnOy$V$L-KGjE7zh-KF^Jn@U`h+8V>}Ps+bB0MBvF)=zjQwV= z==UkPdK+rP=3KpRJ(;hplP+t8znQ2TtUMu7kI(g)Xw%-$^=hW9?fK93{whS<%-{J! zPt~)|@?XBtH&LdmztlT51sy~;b8ICdh{h%|wHA8v-O(v}k**#W-0F2E;)o9^>f~X* z_?WlL18czN3wioLdIey=1~`+a_tQrn;m>@f->A*tlfKfYns}e!+RWR2tv^R8#^mcM zCiW*iiTueNy*~P*G#~5YIo$dN`ugYa%yF!NwvIoUuQ&S((eGQUAE-Lqz(Pm!Ls7^qZ4GC;5vY=HcNfl;=+|aaDk}IJ3jNk+h?Nty*^k-@H!m)K1z; z!mVbY1RG;YJ^w*SQe-(v=!q|7w2G2;lsr%)Y?Yqi-3#6_MUTa^FrLo#1+b|*mkA8U`T=m@_iZt4+jEERUmC0 zyKO896iil{@|RPcm$Ou~9dC7iI77N(J|Wi9ZGt!9W(Rj~(Yxr|&hRQ*^j_TkogS$d z<72meXZUsz*ENTyf2Y@cZV7hEs0dh5@^=L8QwDVeZJtMB2j55oZf!G65`h`QzzZ(^ zQDtD2Ngyy&AW+(95(pe}k{|z0^hd)&yFU_m|3W>coo(+)W_Q6h&p_G1{FBHoLu4n7 zL5b|no#4v~MRxm<-Q7|Z7wxy6g5*wz%=Bs{<7)(@GqMN;^0T|?f^J)jih#W#;4{`8 z(GRM@9lc_((sNhAg~lf~`aAEG9_YMtxU^z-p8dEGou?ibqVw!`iwMlD*m)AO6*{k+ z))?jbb$6Z-UIuQF1|=j{bYZK_dQJBdM)vm5irb>3ig8?X#dR3!RalvV^zh6NaDQ!jaNEDJ`5+r_GXU||aV(_yRLu$^s&O5(9d;W3Nq1glhXWC=V<8&zT` z6rSW0whBD1-)i?y0*@=k$g=HS$?Wn~cEa!p%wNfoC9;#outauwC;8usMRp$)R~%Vb z4_6#nFmxP}_;_`7qEu8U8+76bQ_$ z*k=M;75l6lHKRGw?la__K=v3?_fMhQviC)4}yr5pXaukVP`h!tKweXK3 zGPQZdD0*tUKL$gbkxskcL9*LO#SUdq0*m-000iZP`T zM*v-3-AgXjOPhBDMw%Aje>qx!|Jl!IY4VZ}_h_Wypg_%Nr7EzJkwy(%9_Y0{o4m}h z;64n@V6%7XHERcT8E)gNfpso0ux#69awMEmBO!~b08?giU{tn zvb(H7JKH{*%;})Y36CXBtJEG-A}4&=Iqg5m%VbWT5|LA%5+Q;6dRZ7H=eDOX{w7cjJXxI30Ufwuu~x!TrMS483xKGLka4=HJ@7<%i# z^rQ$9avfpG?wm<`^@PYJ3=3r;&|S^R!kPy4O3UEshUCbm^bUgN8aydNF4(M$#Ab|q zr;D?OMZDWS{oY5!I+zqR3N4Ltts0_Fet4gLN04X_i(@2FM$(Lj$1b=pCq#RQ4!qA# z5J+rWWz>feR<7#9$)q|TrprVpjukVMG-M`vG3OLt`jZ%!Km8;|Qv z>-`fjFmX9#KVFJZrD^-%AVxoS3^IS#<9kx)N8n+zn!pfKDNcw`tWcsvwAU6oN;Q;K z8eoM|VDJ8mZun=hdPnsN4Dj|y)3SS?AN@tISwjf%*jgqmyM;7=nucHE0ifA7=OmGn zAxr?ZgG~z*3+qk-IYk0F($79Qehxk`^1h!fg^cr1}UUTUchfpIBx$nirE^lS@M5^;-FhfJo* zz#x^Rdx1DomXXut414!*+)x@Pfm7Ok3O3mCPJ?k(bl(hQc! zZTe{*StfGpR)&qOQr@pjPpm5KTiM;v-&!tvfiEr7onXJK%Jdie%T9PUK>lFeb{D)C z=z_QGF#C-^4Fx$b*+W4fM2sSTe>{mQmsXsYdhshqg1wHdFbL9)+Hydw5U_{%@eXrX z67Na8@TeZ$#x|TKu~nq7^$<#i87+aVdk9(5rj|ff;b|UyOiUczkBJEgET`tpz0^>+ z6C=Sk(~@K4#XEj!#7ktGcbb2D3_CNM_&H?TT+Bxiw2Do3M^q5C zTUyd=m)$WW=(*HjZEf-^AJWIo`c{$SiFMS0Mf zDx}~*2}yLb8)E5fUgZ+bdrEta>}&AvFX>iL8De7NfieQEz+Gk0 z3f!!tR&2N&TnrQ`h+-)DwThWon+2C5=dWv(f;-NlloPU)Y8nf|6=YFS3MIc*Df}6Y z^$2Q=WY^a!1~;@tF=wfmTLQfS#w1FhlvkF(b#`~{LR_4crvK=o72ccUb}dFVOaSuB zI=cZ^?r&hML2CrlA+)2JV_7Vboj;v#TlgAIw0CimLwh5Q$TrR#$X{-Vh;^dU$136tGlD_v|qt(@Sl{o(iy zFlPyc&ejfaf$jWBCuEdlTW<`}+Nv0VyQ;Dpq!KixD(kHylh>=V1$Sb=>7-$V^_YhzXzB0chpT}d&`X2A z(^4Fcb`CfEzirTj5)9G-e?s|52mB%BhuR!#-v<6%HAXAZDb?7^J+susaKa)womO9R zw~94&G?CLTE{?l}B!r-D{-8D@2)8M)Cc8ZzM=Xo@EAgz2o^_rth-WZ?&DX`Vf8v1g z=IV@${&;Gz+u*!ZgWU=~wY&yHmRQ(-E z8tW;ZB$<*T{?o%Atn-0!i=gWdj2LJ`a*=~7!Rmsj!Z8nPTYoU!2LR-cB2pQ*dD)Hn zV1xhDi@{OI7kfozcYE2>=nktsdoC6@_QK8@-J&NfXV+%~K_!inS<6-u+0-RYg>dn@ z3O8J!FAN(U0_Px{iA?nYAD+xsCJezXC`7@C!Oc{6HFs6lWzZN#Xx|2`NwsT0`S=Fx z9c?C$X~@#xjB3clW1@!aJyiMC8`vXoHr~Mg4^L}4r!ZLcVg+ZNxrN2ZAlv;f#{x)Jz>ba!8y|$4cr%hRu9MXiX(mwNbYzl0`j#c?*}P+OHVa=no3n{< zUTFd2X><7K7Ay(QxR$J**Dj|sRhaH_#0PADBaHSr%384DiF05*URd#jjWua!BOl8X zsj>JkWON%tK0K)vYkL<;R%hd`Dh6KaQDGyAaY8Q=&ZWgSh&P(ng^E|>t1<3GcoGmg zArMN3w=-L@I|wOC@%oUe>07{ZJ7eyrC;A9(?A43YPVg&nw;$oiPmQ55v!g3Y{ z)wlflcI>Syf)2Ms_oKz`_N=~^!+W-8?a6dHSx&Hu50lNujP@YUkNN)g?EY}O4czL$ z4uT*W-^A*5EiEH_;2e^!?-@ZgPT}q!u97JSzZ3q zO{@k{H0~JEZs)bl)_Z~4 zhr}f$*JNMg&a8n3gDUrQ0SiCDU+u!G-4n1loB(k_SRW=9giPl_r;f@zk=#tplXM-0 z6nF6#Qp;(bDhqd=;I+D8kZk1byRla>sz2(+rg-GMh}w=tZ6np#^n#&0itAet{3i2f zy0hO=*(WUa0Y=sVi#-LWcMsM)?1bQmpZWgX18fc$@~ya;HP*C?zLK8IsYP65$hIY( zSn~n5v)bIel^ufW`&aK^JNbs&Ac|b{oxP3qLwt_-wfVcf*{=wD;dT~5c_5xfu-ESd z3tGer?_~Fr$y(6l4JN1$WY*^{h~10$sJpI$xb9{>K@j)f&Afhsa1cR+`3Zs^c;eG0 z2)c8GPn#edMDma>%J{0g#WefF-RzMoihrUHhGqIOzPJzGt%EFn?!z`fv|D};>syeS!oX$a)Ng(^W_p)=C3~K(3mBR_YkM$wi`ulyXuD+v;zkMHuUP&2Wb|34i z&E-e$W8XF2A;`g-Fu@(W5>j7Ja4AXUbOD&u^ub9&AdrifsUh(s^SBk zN+0p!16id%3BR&fob6>l`KFo;uVMo=4eYSh(2qD7&S;T1I#h zfCsfca0jgqXu$J!kFm#{;I)+5)W{HWtVmn$%Xpl@h6ZGXR!_1Cc9id)guJ)j z_t8_Vp#e%SdX6ReDLt7e9hy%Sb4w;l$DI@ZCn%lyDLt7eoe`xsejap8r1&E1QwuY9 zg1gpu;9IBr_;~p)ZiJPe;om*aR-j?;zQDSLsNk9}Lh=tPxRyKNLr<-W1@Ab+zj~3a zs<9q-9I@q6-jRhg8^Qg9KTR(Qxy#$oewjUd9;?W~)Pu1^_ zuG-C?>CgTJj#JtnliC*E@@19>=lIL4Sxa2?!kkG@=OIno&9rg|ZOt6HtHTlreR=Zo zUbhLjb9?vyv8P}VW%>Vs0e{br{vQ?{-}80@z_PyQZwwHDpGfEU09NfT+FQr6MxAOw z`jMwv2x{S9=_K2WAGPO*SaQ!1v6SXL1VQs2zxNfkv9Ihvvb+nfDr(*#)fy|UV2zW` zcpfWjaEc;$zFKv56?{HWLuC=LQ(2v#4+n!8a3?jmWp2aB?n`N>%{6jv$E z@@EFJx0M{YcOZ)=aymPZ{app!{{~BLqh#tB6vGFjeoG^&|0wWAL!pNdE8s99-J1^>GKxm#o7Fow^+-@ zayA0jQA`F5NAVYWyCnG##vPc9Z^K)xh7l!uPduyS$KGNO`)+xcJ*R8G^F?Xcso2Sn zr!kN7#F=nw=NX=m&ick4hyTYj5ULaD>KecI8@+3lFlBej7RIK=vNc6;1O z_;=Y+adXW(h&9J0_j?DiRO!_7?Ha`Tlf1%vzsEY-S6anwR!rOIS^t$*KJz`+I>KH@ zMDu2Eu=)zk`Ved!Ad9<(VA-^oe?Npxq0a&DvpevaGgJ<9_1W=#Dc7pc&)#P(gCgJb z0mSqaO!@RkIG;@?~wu;saPStHw1jI^egba3_Pc>idRd$n!VsZ zcue#yWPu?BDwChkUzbjwq;>OlxP_~^XBfM!-WFk8IDc7^g^G@SMBU0LN2t$RO|OO2&kKxut3 z+LEI8^kA0?4S|ufK;_VkM)3+2n9ZN`m(1T8!Fq%L<&OYj(TZP2u;%)~W4y*l*5S5| zq&}r3y#hzYx&!fmb1-g4rnY#W z(JZ-cGsjy%I(CY1B^HQi>OkKr!!hVvJ{YNM233V{G+oCkmvjkl9SxywB>!zRh6v}+ zjbVeYx!C`03~PhMev7f}AE;f$i@$5ff%!vu?szr_Z&$L$vw;TOI-F(eaJNhW>wp#9 z6H~EWuz@$62KnndzI+?|Mr)wBxMifJyw;gm8}oI*C~-QbM0&Q*6N!TAHB z?m#HI&5jEbXo9e@#cBjX(LFL0eImFlUMUrUcp;t(-AnnJu*|IvAt{iSu#eAR=i2SZ z%3f|=BvjGxeuegL9dtm1z`h=0&(xK88jjb`m^|(2ot7NiYJ+#D@ zN2+o+5et8k(!hRgv!aQ!!KJ_DooBOq#8O+f+kw_hnJu=azMGBxr=7g}9QGWX1#=+V zE#?o+Wp$zD;2(2Ae@pqqxhz>mX~6f)W!>R-&%;uukRP7MJouWqhCRt&p3frTe``L3 z)k5xG!2XS|Sqs3{cQQV98Ee2>u4GO=;Um_O_alXuB3(^>Dx2L6f6LYEM*hGWR)vpR z#XS6hEUc{y`R7?6lt0MkVE~SO#GZEUWbQamOvN(V^EJ@@j~ssgm}Ma1kVT?>hZbRi zFXZzVV_T_^KSF2lg?z>m)(%mMm-y@2iuYg2#shSDDN6w;Wf^-K&WL3!3xRExvs>eq zm?TKXVgnu$GAx-7TMk_9q?xy12StC7p%RU#JxAqLR6#k?5 z`;0XM583h=YglVH?h#Ve=%HcLV7Zf5$puqbz&qr!(O6Nh%VllhT+D?STg1D3j_xYr z13wpmAAioeT3Bs6{Zb;v38X|woG@S}tdPGStA&vX$Lw*~c!x|CtX@T^RKaLy^abl7 z28bF+)>z)+3w8sa^#!XQM#Bu@{If4uQV+@*E57WoRF^Q|Xq7`rvGQgIya!kMLrdUA zl2SN?pgFwOm*8S06ZySgvez&;^S=ZVzvV~2Wc89{?mOb3tIhSb6J3a1@o?I3#wTx- zhiTy_U!Oc|uFzilS2&S^WrwdIab&|}8mpU@?SwFt(9b2@WaYM0ZfE5dIFzT@_Ru<3 z6N%hnnTM@0fk6n|or5?bBh#zM8anLBC5f)0&hieV*?>4z_u^L9R~D=hb*?}z9-Gar-Cw>&SObxTuSN`2{CZA9G(dIys6SM(6wi-ON^&4KPD z@O3XOCpCKa^$_AyA0f0?AoNZj^2h&Y(;FXrHqA&rii4JL0VL2ii8)HDpDVR zq@FTTWf??u`yUdE>^uHR6{E0e?TCuRAJ=R#!K6qls72{Ie{wCWQBBaP>vD8dlZt>y z8-QL&U(4RcO!eDZ>eYKX#+|I#3HB&M9$&1@?Q*tc0k=v4$`Xgm4ZB6cU7YTx4!V<%tty@2&81`mE_i}0`CA|lk- z%C;cFuUje5hX~lL+{y3TCgQBw#ug_M7Z&ej98^;>{Eo31-VY;TF;D+NOt7c5=Q0O)KQqk1U5!`XkP0_wx2TSr-O`^Kq+V zYVy%L*{yZ+qwyRbbP7p;^moHX3;tpM4Ey1@-pEhvWX)UeTTQ1M_~&v$OIFq?+^})r zJtRCLrIiMm#qfmd-NAmKRLo)F`r}u-Af9dJFYIECTKOX)_b^x3ALVg%>TSEQ4ToC% zwu{xScg=FIPIFrcFa;BLC0K+b>F5%c^ruP3{YO;xKP9YwYrC>UD!4Wm<|=buyU9UC zQ~EnLM|+`k1*#2_wW#`<2cw^!vCf$ry0%>=&XHRxoMjx z?Pd+{v|DG*rOIT9ohLUA9k4nmoCM_w!rqPnXsV0){~A4gMJ>_C|K7tA_{`m`>TMNs z$E6jV_1GC_pckU5l}w9-vj46tA!U@A?BO6*Mjz`7zazaD4rhJinK9!RunA z%M;sLW*nq5R0+(j?t(*t4Vu*tfidFf z?mwFxt_%FI~ z*t1&4OIRx7mN}NnR#>X_)~nWeXk^uTL-!80DNs9tM`2?Tf^Lew!@L7^VAjOxq~_zF zKV$iFiBJETCBRwrGr0F9zC#9{|CzN;p|l>@(J})s{qdJslSXT3bLlVa1Mi?PRGnE{2Wc+l{qi>; zgfPJ@;pM{)u$1=HbV8#cq7DrsEkgJhec2(>i7y<}9&vhWQ!F=W-mC4J0sCNVSu08` z;|>kO?jAZO3iE+G3NoqXMlETUaSH4jR`zj+YbY-`$lT3jGOC(LhDcCEhwX3|^|9?o z*BI0_y!x-0%!cy6{fbFBi_iWQLPHi$JjD7WAhkHOoiIx^(y$h9qf!PR!ro05FFeF< zjg*BA^&mLuFiT94-=a1`SE4vSIt8;c={l5*ozl=ks`P07#9>ymwWtwxs$j#0hy^Q{ zVxYd6BaU{dur!yD3bFV{hp|?u7LN8$Ep~@A$1v+GkQOT>p^RQ1;VAMFO)9T zIl>b4L1Db(5%#wmDWxuYSRk-MujM&Jw^40mG}&!m9AUkwN%Vj)7N&Sy2YCEZb|ac} z8=PjBNY)21%ECdM>oD+y0@4lDAUqFH4H_|u8noaj7H@m_#-l7LUeIQsG(i*m;!)N& zO16*aa43KD7)$IW0|FffwLZ5AlC&vI5tKlNNrN`RCMe;z3Cj27F;-I}Z0sm!4^}9r z<8hW0vU2#$<7^fc)9nPi9hk~%VkE{}>n74jw|fw1)4TH{O^jMGb}M9ypR8iExOo`V zJYc8MH4+#9r79s>C+&^GUN3^Nk4yPrRg(@@f^p*?K=9a&<@cV%zS|`}_9PBnF7Zt# zS&f?LE$jf|4Ia&pVAfdpNA`D(_Wgbm{HpG#Ft09dFj)&pwaNR6x$_dicAeFFb=G3(V(&XGwfc8 z^SY{sKRZv9)a@+0HyE#wU&(rl!Yi}|`SFTN>k_Y^UP(vf@#A&tS@uAuShv$$|IHe32d+aG-+om0R#P-Fermf>P{En$g2`CI+RNO`xV3)svGD zZ}U65Tk=KSih&g_Fp)98W6NeT-%QR09(RGY@ql~K-H3FjYj_wLj+=}Nc^KwEK9J1% zgN&ZNz`94vIo=&Mli;SSqKgThTBQ20pPLD#27)$;U2Wagpuc0 ziHBGv6b^nIG;>*lyAZ)#WUUoT5F=AizSDC5G3$w>Gg7xC8RfUB#`oz(c2vV;_R(e5 zIPw_HaDt!t{&Shth}FvZsTiYMLb>3Uq{4{iBs!KctkZ2=m-!vBMv{J+>|hwxjd5); z)env}UTb-3CXN}yT;p_0F2mhUvWp6JN4F6hAqtc=qF05`;X`~{bruh+Vx&|c zypC0jL=_-spvoCyBr>-dBG_7G3~@^pqk}fo7gg1W)#5=jAcI)TATi9aE}kSF(X5)$ zP#ewrRx^4=V%{~Z|6tl0%I8!wxafoWPDe}xs%*fzypbgL zMBnZfw3=>LLW8i31)@;JSlFJsoB}E z&bN>Wz*LX~JW&J3iK%YXj*vy5g1lvQBZXptp*Y>K#Mn_O{$h2bO%w2}E5$KCEd{Y> z!Ti=$H=0!F?~B!qq=pq{cq&1P_E(T3?^eTTahK$fj5s9Jf#aSb>dReQ;2nXwx@rTwj-0@08Cf$R9d38-K<6YpseQhI`WT(@$ zugR*kKW0@hz)8Zo$XxktR>faTG#YgfZ1<-&)K5ZG#3l$707LnAoa;EvJ(5XD#q|}K z)cQoDbLSwjRPYX`6+_F<0FBa0LqI@7N1fhyxp6C-Z6z6vV@1uXS(y>3?s!arZzma( zt4p~0*OM_ z<~16wg8rkP@o+1|1T9y$bg|?#+%*y5$HD7A#e@lQ08p_QK`074dI^Pbkk-eROeUkB z`eoP%C!QEnO$2`snH(;e{}XO@H?#8)MVGBzb<$~-G(|Q?+@jfCJjUN@1PMbrP^}{_ z$wKoz#!Zk6_jrsRz?0W&lmHi(y+#c)%SR2UU0)#ZiTXxUeQ+2bRp02_7`=BDk22Mw zNp_rQP&`OFD%p54Zt*NeJROIo?s#kYEdEZi(Mr#r#g~wqGmDod8^hAF0+AvR?F)Ru zW-X=BV29Sq#5Wi!^)PL!g5NBrg;aGo9`Q^F+JaOWBK|y?or=3e#$7_DvM4__QJryM z5r*jpvlq6?U`s{6BZkB#ev%3RK!`$R^o-W^K96Wp!DHiC0Sfeah`;`kd!yPNc zOuE5A3b8R=NaBnIOZZnqqa!q=`WhPb;p}Q?G>F0QK{S#tOfa;V8w^`wl=JihHyHIR zF7U-5gSk;y7PUvE@cT#Qf*XuUSetZ7FvA zkz#D=Vtsl~Bcl$K{Tq=t$RVr586m$qZxvX8br@MA@*LnuabLyAKq4dB7qRW)%r3I?QNhywiu)Frp>lcKw3|YI_Oe$Gw=?aSI(XuM+7nO+j{W%^-mfTW-%cH+qAg zFK=$txe=R4G0-PW>m?`llxDz&1q6+#cKTRSQ~`8sn&jWeIUv0Ja&zMsZ3zFRh0#u% z!0WU$Zp7C;EsaO%z+^E*w;?>amGKZFyxYpSOIyglYh^s3UGRBtG)C(P zUD3u!z}u${ZH#VkBHJ3B8+;t*L0y_Tit%UxJ0Iw0r)#0;Hn6O%$dTpo@mzD2nZ>)s& zP}adnamGv(a~oFo=!uEELsz4%w#fH?U5y+A#B{^W5M(F$p1;}nHll`@?<1@qtH`~< z2x}-P_kz#5%lNwsX{J49)YP?0zE7So-Y}4;(X+%P&{_GXA3SB4k%AfE-eJZ+6K07PSEC*T|4MVs3WJR!LeKtTMl0D$r*-m( zl4_im?|t&A9Myn_o%&Jl2+?O_Cl!?%3K2%~=5A*b5`N`-^5Dvn}Zzflk! zVVf?P*-$J@WR)mEW}r5isy2%e#2+7J)Qi~@1uCbhr<~@^;iHVY z)p05a+&gebJyV16E8I~}apmJe8O9fkE{!s7c))*XF^AE34V;)b0_PcNbT`yZwg+$q zNQXzXPbFFerh_|CI4lrL89LlYOKC6v<L_y(&CcL{xkU zZLV~-2{ZChNGt9GGI|@Ai!0yw0Rrh5ovMJeEd?aOAb~j9R7Hm4-I*-72LJn5qdm|w zZmiKLs61Q@5anU9fm!LVmWS(je^_4gaYlQx5b3a5@+vco+ zNo>4bL~~I@$l8S^%OAFD2MPrqT_1)JkJyL&!}6AVXg9KINbq>)gsbp4c!FJoCnQC9 zCSFkl={z4ZF@y*Us{~<9C)us3A6lxw`Q0D(lE&>qYlZ}cnfwYA*5E&&2;ebxatQGV zBM*Prq(zhMCN&5x9$_2d4+~A7Vi(#lBzUYh^(s8xKULsy)YK5-F{Y9xHJ)ZSsa0t4 z7+Xo9m;Hq%ganT>r(cD~;^_j9(KAAbM^`0H`e=qIZ*M5et5QjM|DI|0TeXm&u+FTj zPv8v@0c3;PJ`K5cXSqCFNa2c~TIl5fVI3pRMpnvJcOlZQMq=Gphw} zwaQ3t6%aEj$Wjn99k@wp%TiiEmg0}kF>1zFl+}Wzj9GK+`d0}_{kzV+iVgi> z;jX06s)v3@0mzOuwFG%6%` zj9YpY9&cGH@c8c15aO{xB~7Zm%x+TW(BiRSC50aI7uqExcpSa_Dm>;dx7*bbK`U7nAag&qFvVx38p09lx-f)GoAmtgO(uFYQ9>ganUE zzq|^M`@aczp@M68WOJ2?dz+s_Qux&Yb(AE z;VABO?IsN>G-^WQhtW}T-_4=LW9MrZDp+Had>fDJLxRVm{HyTj{MIhw`_Q(lYbEX4 z`>j2yVnZ^j($`+quGMReHnP7oQN$Ag$>zT~+afVX9^mCwc7iu-o#2UItuq>htiZ3Y zE>MVVy$g)q)Iw(c$Xl*58vGaAYDWuTU|O>5K2|Hf;$>o1QETZW9<3El0jD3}JKDR@R(X zHrmZ863q!264zB$YVS>Uso#eLiHA1@BT+D1?`A<5k8TbjCf8Tirr%MZWK)G9Y153N ztJ+jtB-#}FeF)q1U1e=r^1a=rbs=d}pDkCl>HRIDO?g{F*rtt@wdskicAM6Rq)l4! zRc-1}Ear|^ibFVeY_6 zj_9Y8{vw)$wx3EWYuNfy!9BFSA;jc=Dl2f-UK^7sA;DzVeF~FeY(25hzERNRzr9hQ z{ba1Eb9PF&RWwn@C1x1vFx|Q^e&w*{P7Sv*C-dz;8BH1&h>M(fUjhA+&^fUgkE8YO z_Bf==r(#4vpX6EIbidd~Px{$t&`HA}@sE1Cu>9BZX~x;lxJ(W+LCCCwKO=gXt$FYe zO8CgkzN3$XFnSc!(IK0fk%R}CZwlv9xm_4*;S*PsWL!ZPjy&k zzgXQtm#$TU`FNO*M7Y8#((soK7!7JD*a91-N!YvtMt3Us>_OuI-*^zWRtwJh@DZ+2 zsCLL`LT>XzbV+wI&pl*V)k!0kRCwr!dPpNfc$NYQWmyVD+M||*L+2B278fP-^Xhns zs#|#psaDYxde|)xV&&kwV2a*|IodOVFUNOY(07jVXOVX4H~9gA^*@i=UuxMY1U!K2|;GTL}9 zL8$lATy`VrN;SYxSQ}4TK1rjA2DMBhj^eg*=2`y5QKJjpTE2J`x8oO|_0>3L{LLhD zOqz9Y3LkI^)q(rLDdVQJ$x7@I<+SzX)*xJa1+&*#7c^ z$Ic1{+h2b0g$m#cv(jX2Km1^3aB}<04=$P=47R`g;OsfUVEfAto<27iEWXmvMn61b zUNGGL@`KAOfbB0oxOjeWYWs`84+wIE{&=N}j`Y7dpo7kal71yQHAq7uL_~0F9CkE=e+YV@c|MF1!aD6Cev~>>yFBpPWF#@dyUhbU@4@hzc#^ ztR?)z#?2}D2L2TI%Lf4fP^b3Hjo6)2tu%-Ay#o(aF^Xs?7ii?-?Etxmc>%nF-u)14 zs&G4L&_|`}f}FawXD|*-)nJ(_UY7jU7b`bgx{fshF3gFF^yx0xi%O%wa*f^>LOY18 z#|1qV>cAFHgMuV_T-KnS4kPHAm5*R%O}2w`r;+&>FCygFR~x*j55qfch?`Z?vO?+ybyo_<~n86hJO@?0ZB9j`nG+R6_I%B4$SiEbnO6hX(b? z$C1<{q^i29BTl{;#fv%8i2+pN2?)K5z^iX)FT~SrXv?5#M4*{RhT`2S{CL1?{XA6a z942!ENGGZ--ao)_R22uc-_~%6sWO&&c=})>ZKW&Oi)T%Fv0ms!p!r1?Po1s&Sn;Gi z3|d0*LWiCyy4kJtMvz{Rqc`v^I=xR0Bl=G_dSlXriY3@4GA->5FKpG|rC8V2vV%R7mL^2UgQ|fT@^+bIn89?FMhRL41mzdt=^LUMc=VA^UObmapQqR;B=ZweY5}F0!aeAQ{6YcKe|OT0QFuC~dcuHs(PrWhDRTT=fFTAq zyeQluou<-(NeT*d!J(R@rw{vdJ-!q0od&m!1b3EBPwCt#oxai`t1ckN?}NEWqSPH zQiM{CT@sSvCFG@t3r@wX(m=!=0dG;jTM+Q(1-v-{Z`$&JKP%v!2VA3|A#PPrMq`Qk zj2lxuPNI3CFu@BALV^*1mX(iqk@1?B9&Ae@w|xW%zZ!sbx-M~T zrF;EoITxsEdBA%x;Dxet;7L`V@S4$4_7j3vaD<*A%p6p8Yu?_9i zR9Asm%{m8vn*DJq2v8pI6S!;prXRYj<9?SO? zO!;QPsA=sXAWvXLt8_K;AEJV&fA&+rxic~j1stS+ z;-G*s3YZ?0q?`gugJPVbfU=-~bF0JBuoeEs)N8>V`0<5vHEn?$u zGW?R$5rQ4xhzJ;BInvXPjBO$bS=X^K1rZo}WfxO8lIZi`NuyFSr$)Eer;F&{1w}t6 ztXRPyynqxDMA|v)AV?N+((IiM=&IQ6vWjg1$3bO5FRE}S!0nMW3Qfq=+Ux(q#}I0c znD-n#<}N+3V{6)!PZo4)4+{Z~9v_ojmO`_)NDQre4r(i8Zdwa?!mv7U_4CFiJM`|> za)DEV8VNPDPYz^5B?KO9)CAz7&zmI^|af|{6@z2Qrcz4@|N zR|znqLy!sY?{zN0;@9l&H5Fh8S$(H$T0%n@oThkajThDs3x`0BEJ>OxMZ%Soj6cN8 zdZaxl1A?sw(}vq5(-1;_Ll8v=n_oHML+x-v8tEuR9*h)dp=;evD4%#)R7-edL;iIo z&RoD5y%ScbM5Y2U_>0v}n00|r1;r=e>;hE@Rl*(AYACnB6LIuKIy%F^Ld{6C&O!UR zE@{!AE-R12^1K|vR;1Mq(-8g3b66+8fN3KaFi6`DSmlstiTC(gKMTsDnmK-t^O|{( zw7q&F`V|`>r{XX_jxN$ykr4)E_({+94>QT`P8 zHz>aw{;!pvb}~LyezFX^Qu!gVLR%L-ttTA{y?_9r*6LIo^(DL=QSCImj<@Zkh+t|u z^_ZLWLt?m)hY0~6e@X}-c^j=e7Z)lNq@lWB1W<5D`3VL4l%G(rQ~3!6Ta=$rutE6= z1z#&aq2N>H|5FsC0SDKM0#r2QC`c1za4a`~f`y+;KcQfj@)HWU@)HWiC_ka#1LY?a zTvquI3eGBj>eP46YXisA#BAkVfn#fP&+Sm>sD4M`{cc3T7)mp_sF2#y;-!Q#&X17W}N6ADU{pHNV&{Dgu+ z{UP5B80A1Xhg zV1)7$3f@zGLc#Arlj6y1Pl{>RoE5JZ1*qu%hywKgH3fsyUk0dPiDF}fg89l%D43!A zgo266Pbe6r{Dgv`%1=~qQRNv-1!;dI7+fz3P|^Pd1!;dQ8y!(SNmMXju`xoy4CN;j zOjLeC!6@Y?6bw~-8FkXE^Pc)ch$Y1*OVQ zDA=L=gn}aFClnMYKcOH``3VI%$`2Hz{i%d}y(mCM{|gj|`TtKA3Hx#aykP2@02Pc^ zenP=;0VU-=0I zCCX1IC{}(#L80;!3i6eoP>@T0>|;AZi2_vgFQFjqx|fQ-s$O-V>a*2kMktt~{DgvW z%1A0LCQ}kIIr>{6dYfZCdnz3C_qIC1y%x`b?a8T2HTc6BF9R6v4*_}jZ`b+ zjM2o*Yr0y}89CW}QgB_Jkz?^pXXJFIwVagBV%3eE2dqo^SJljfT3D2N80(I|(4`hM zfg1coHM4J;EGq)CRT&oYm$B-H3T5Y;&~lfEBOURNtn^|ri;Q|*ul6{ z`f*;PeBrc8?vFJ)oeEKjWpUX0gwivlMD>uP)$&#>{;_w1_8^_VQr)cH9+erQqsnkIbgzknGSnHTgOCJC zi9hxS(VB3aY7HUXdkBOT9oS6exz*7U+82O{>HXK#9+7<81y z2I7nsBtZHc8P3vh_CbX}@iY~Jq^X_=M8ob_Bnlx#?{q){n^n{@a?mny7$O@gDu^9# zI@BP01IP?ojD_8SA>?AeDIM8hR|rb~NcWrU0IQUAr;<8I+N`1*9T`vuXjnt^RBQWa zoMC5ct`Yx4fRKUqF2{xTC;Mm)=IuQH<&c25MKKT<$PjI^V zLEvI+J{i_Iz>9}#)^I-@6+A`oasfXD_#TW6zQ|6Gjj(cpj}*3!=xqH`nZr7~z=q@4 zxlEK#hL=Fuh>&yGVIA;C!1m}t${=6B4+4I8ufrM%)w;5Rz}S9*mkRiPz|Zb>SeKye zS;EmTr36RQkUwHs`$`$D#p(~j(&m{yU17X$w3R)_WLT)P6X!d!`Il?iwe;3JA0)=z$TT)Q;AkTS?%RKr3< z_@odQ5HjryTsV~__&fnG0DRg8hxL^oUPauHFs(cR2cE3W>mAl?7<`c!sEQ+8N?#)2 zupVS>1bmhsUJc8|T#9f`M94*iRUNEB)9m!|IL{*R1cT}a6IRyc6zdXnkIL+;V_%!V z%LN!Vt*j$;tPjW8;2Q0~B>*lIV6Z*w=Q`FnKe#5?rs)5J0=^jV_h12JteqU!4zeiu z5R(cAkyzWSSS$SCTJ7|C1kM!Tc>tewS&RJO+U@jA0_O^FCcuSJ)`T&3=857y3B;ux z0zMt^)n92=$q_q35^O6_`cncv8Sv5^&6(1AZ2k>xTN%*KdbI0F<92;MifdP6Ixr)J~t=PJau@ ziv<|QlC1*(@Al*8Td*>yM7GKW9DDf!f54%ljkSQk0{BR>Ge|r_;14)d@O6Oqr}DEz zgfc`R1mdS66d=Nj$RJ<9aoR2r2qY@_dcdCryi~yV15WtEPr)|;{v_ZR1iTb*!XJJL z{vF_trXj*)s2Ue0xdZ}%L=~YB5gr0OTflc9141Bv3ceBWzJM1AIJl%hAdslwn*hHD z@G=31F;#&Qu&<$KPTY0gtZQE{1m(x@D2b^h@$Fskl?}o z>Td(M4ZzCNdxpdON^PX}NMxz+u0ZDtE|Fy>00> z2gbfINtcpp4L+{XPgQLPQYQnPDZt4vev7iV`7{3!U^l?I0_>J}+q=q6y%XRhfOkaW z#M!{~XuSvf>nHpZ<1WAx06!&?<4WZT%&QxsRM{nf#sfMwhR_n9YLx?8U_<`{s0+}= z0_sY&jsm*YhVBM58qfj(g`tpJ!4T*g2l%Pzs{Jt}e3@RH8YR8#jdWu^rn?U$XfY|x z;e;mXW$4sLbkepA5M)X|vaVS>P4fu5L2w{=NVC`^nUL`v2oJEpGag5DWJuGAKk_3f z6>^&sDDXPn(NYq@@ii5JaLOC(-Np8v3#qVsjegLm&%3+{(hmk@4%3aVd-Wqa$m=i4-EK zF%&=@1P2B;s3d5&me>N?6psDfBXCUhQ+N=UvCz@Fjo27E5mWaHVLx`6+e}C!xly;! zOc0e68=K;QNbQl)IzwO@(xI?96MVx9hl)k8YwX0KqSH!7CkrINPd93))=mmYLI4i) zUHHNQuYG9*WTS^JOYBoQ(|!+74}Cc-6pO0s?efX;*ZAt6r1Ep4C|Ye4)ndQYlv*24{b zcYU)aU3-Z~D$pO|^+(DCd?660+HS3}?w~6M!e?{<)e4`$weSgC!>3SSp6%?ndBf-BLoIe{`uNs|aCuPzWSe2_nIbr4B`aEbpEJFVz+w@7Ov zoUn}iVeJNZV8JM-4-`w-c83$@v8W=hysHykkqNAVIOVHEuOaEIFlHu5l^c(EFHcp@>kC_F{_F?bCKD3(SO zdWG;5snWpSfHy`CLG(3Ia|{}UK*~X4AISuUF~_7)QnGAMkQkYTxH=$u-A~hmVs9ih z*dQc_V@WIG5?#}WCkFJB(9dlUl4B5r2Mz+2G7WG|r3c76M(QAsv>v2_Y08L`GZ5}m z3hs#59-x@M9B#l>pdkX$56GO1B_JF;nn<4_BOJ>%ti~}bMl>{&8lcc{us=A4H%j&t zMug}eWDt%mg*10K-;k_z;zJvnajrFB{zR@o5UJnS_`HT@t00T#D!(XMS89?l)-Ely zM+)OzpcG;7A()>^)&=XRL^7D{QL11P#8NBE+>b8uv&LBs?&hXXQglJiVr&w73>ccU076Xj7t?u;)#) zuLLyHm^?pq<~@$ZPXP0-k?&D&sb?UK$eQ{$=D|1UpF>8pi;j#HXFk6HZhxe zDwMi7tYR_c_~rwen2jMS*p)+Gc|!hCm4#Dq#dpya-#aRNTe;zM%{{0j2QA~S3@Qu` z@(}JER&j8c3@TAU{HCVn8W^-V+0=Xk&R5OMnmoOk*)o|EiB_ma)Wxi>taLY_35Df29 z5cjn(ldIdHI0cFqpz;=GlG_H=5@Xl2>IO2Zn+l6rylG2wAc~&d((Est&iwXP=9e*h zmf(=!p$2<)+i z@v%M4y1pN8HP>s%er_*wpI-Vo|Dd<|2Dz7dn-7xv;O*vWx83-|wXE`7-PHs8&vwuT z3i36(!~BmP+*R?`Wns=bJ{T#otKwBxwZHqSu7Xr4y6Tm?%_M&>%C3r+UBzeLZ8ms* zDA_lQcGqz?>xaoI%!O|h^oF-71!5o?xMK%K=W@O8bc--|1I%_;gh0l+BCvt=ZhvYNO#i>|yg(?Kr>tVRHwlyU{adQX+13 zIV^WO{S_+>j}*r&lXNpU+WI`#_xK~`Eb699kC~}3MD^0+W)i;Mf81P%{F^^vy7ZWp zD#7R&Yxw8dpcYj~xGVfEV6=FNz{ z`e{gxrTmAd&A-XY4TLk`S&YV2&zN`F{@Tx)eWm|tI9r}I+o3@b&!K|H`M~GQk+)T7 zg6RFe8XmAXTt`eyS>VCgze1boQ?K~RfOk#6ct{Y&Pc;Qx&8lV9g#d*0TDsml5znOv1HR|_n{}DCj}IAO zK86n4H^96dU(H@Id({I?V08^LAQFVM)!&j!VF)qZttIFA;aAMAwXPk>T3R`H*?HdM zRnx04KF^!zO*ydUTaANV>dk?^UWdJO|>4{!Ur*?>MDecf!LUFI3Dn_1vQtp=J2aBd%HjtP979EgcwAHU@d zvj-ApykR~G=hrt(xBHX{dCTE~;}i~r1L5MxL4@;0Z;G-7-OqW`?3O?lM6s5~`j2J~ zY|02ibd~zfziGasX=QxiTVT9LeUslZpVo{cCQhJQJz>`4b>1=G0&ku4j@db8;&M5x ze~Gcyf6n*3BPNZ${}jCW*gwq-EoQ44$N90={Lg(u-Zk6mF>_YPR3%ld(rq8%P;$)$D6Ig8lci*0@NV&M1@fkA!9_q zg`l`LT88BFXQ!BN12Ma&m~Y&A>|-3ZXX)08YStHPCDSfnB!gB4f^%Wa=kD1sV$ll2N&op--xYsN*Gk(QJJ++y`(H|mTHoTZvaq{}q95cz6 zkZC6Al&swx&|&sQ-@|i26O?|*T=NM4e6jP)Cp0~ClW)L$vryMFx9~1mW`bV2+4o?U z`IdnS6fHJu!8x?pd<_LYw#2+yFD>SCmYALOyluR6iTQe~qHQ?Cqy@H-3KnHxUke+@ z2t%cCJjnch*54b8Fv7y z+ia?*pXUp+&0EPmmTi6-pLbr6(1Zzc;{rqO!g=54tIXyaMLDwCY(=iyXU=wxJ*Qjc zXMO8@=4BRJd{LzHv_NZ%F7o2fK%?c`d{Mb(2O!JWGta!Jg^j(0XP2%FU$3vtBr^(M zsg~ParJpN<4_Ie@0yAFq3n16*;j;?Ne^eitAvQK$RybLFv+8=PT4OSJll7sjOL?S-)=LP#n|+j zU&H!lI3M(bnEW>XVAgWm#Qb4`#T7A6TrG)t0tNB#?dG@`JJ!MkYsqlFU_0n;JU_P` zv-T*SxdRjCDBt!SXahda>@*vJwA{PQwAKq2%A7XETRYVV+@yxv=0K1=+=?j3w`G@k zO4r8lb-T^!)_Cl--Rpq~KC(FKA9x3ATOX~H1G)@sh(_Ap01Fg(AqDx~*oy(9P2val znZ4k&`pLWv{qXir=2#L`BM+D(v`M~62h1k)`Sl@lB_h3X7-T+n1mAENask{U%5{~= z?o}F9Kg33yh!ya=PniGL`a6Y~pA)Q03bCtI z(EdP>jijF_$an07xm4H3Zs4;{o6qS*>v_=`)5C8#gR^!7K5@nzpaS3VXU}U}i`UD3 zv$LNR2(q)ENJ0GFvydyN^8B;dOPt1kK8wZEG~VzWgtF;;+&Qy;>{K$TOw&ABf}YO5 zK4-S9J`G_)BSZr9L%6Ye$1E|8hn>e_Y8vl%-b{uw_Pp5{PS@Yf`n>!+)}GUN#_wh_ z@AMml#A*EU?`CbD^_$rO{vE%W&&jC0Wvn-41p4ZI!F(&YJhMW1b@<5(Ae0%r^F^~G zoPS(|s4|mpyJ)7sxpdL&t&jbX_r7E{MOJTK!T_4ams~R6h12A+_0 z&Ub6)eaMKZVzy>5!BI`LT*oe)Yx>05PWO#do#J)|9hhLFfMK5c$cGE;=*ENft%48b zJe8}0ex;y^C!O!;yC(1f8t!Y%<|{O3HjF1euRG7fd6FSeI3E5Db5;q@JCEa2-8Gk& zFzn~f;g^{6CRDJ4;p_qDpN8{^>T`g8%vPAPJhUJMTO#|%#|&o!#IJ5bUZ2Z5n9la- z!dFaZJtP}zI&XpVgXz2{W?zo1?yiQ`FB5ocr}K3{7CN1TqGG4>0iLwnsVdai3NZE>*QIt87N8;xALswTr)>ca3p|`|EHz&YC$v_JduA zGl8HAb@06%F4$KtWK7l+Y9v5e21) z3QCju|DKt9H=9tN@ArA~e!u_og`GQdX6DSynKNh3oH>KWei@@xRtv`Qi!oYD`fXW8 zdr|hmKk-wqtoF<;PDR1e*0FK2Zl|K9MN!l3wk#`(ayssU=#s-_wd#qJXvX>C@V>T1 zZ0@=AHXK;p7O!R6Y1R0H zwY0Kj$|hNf&s$AY8!QM_I`tw#u(wzVWSuhi0pM-sd6aHF3`PIM%pC}uNziUmQO3gzpJYy6Yzz)+A0*6k)qWs(Uw2! zg^EkysJ$r9KkI8Fk*8Ox?6CY)ImjrbJH|`?-`UpZe& zFR0SXJcn!XF!rNu4?uST6j_32(zLZv(Mvy+qqwT9HI?%XS=v(}48z9-jn-?2s6_ON zz}_B{>^gsGOi;?}b;C-z(s+DS@82AcXd)Sg-4iLWy?j7xIOHz9r>GGq%Qz8+JBA)VU7pxT1gUh>UKeB)`rDyuBkGVa|?V@HCMLE1+c2Sg5 zVW{O-!ohmi<`|#*tygU(GRcnGNKw4PQ(8x`;a*Q^)$udwDXnsie7Pfxz)Cv^dp%ld z^XplkL$^)p!C!3brco4hCfbYDC<7jdHmnbqOYq(GtnX~_;dazcisB=?X`5=v@*(2m zdTt~t*#Uu+D*3c1ms9Urk!xsoExUo-+k-x_gTtW<%mh^A-Dwy9K@;l_yT+q-)Dnu~ zm%3~1d=AuxCf2ZtvKdaL8!3u+@1dQGqn#WzI>+vyt!1nU#ZwP0(DGgp|SKKFE*%M9{*&uW(x{Pfa>1}5ataTqKZ(p*+) zQo_54$E_OR5xQ>|v;!C_mo;-94sy%_24#iI{6v?&!Jr_7Dn^(k7%{+x4*2L+v}nIk zO~#-*GF=Rt#=Wy}*$^9;Q8CtN0sShtyv?xST! zpp?(~Cw;UkDE4q4ty}76*ujlNg>|i|lO#o)z!?C=)I$vK^_-UGFT_YX^=?v0{RW$F zQi^VZjDWJY1Q$Q2wNkMsJ^#G+qf(Iw2websF6z2;HQ!C<7Eq&-=*ZBk5E>(1(lUJ) zp+Tb7PL8%_%Z{+t*d4HzqIk!bw3`zJS)H4#z?q~I00EKo?n=uHB4E7Wa!-JNK^?s=EGUN%lv?MoT<%-+XDYIV&WUP z?kz5myUZm)?<{S$QtoriDl$T;4$Bdkzmp!;^|?jk&2X1%;sy*xjRHNP$T|v}GtrgHt!kB5+voj@H@xfrbNR z`JMKzb{i0V_Fb(~5u%gcg^<67FMU_5sBGjN=V|4QCG>1N?Q4wZxH4Z$DGnTiR=J&4 zVFH7MDHjUvK2J+84vT_=^Rye0cIrxLE#{-rO-}Zl`P!n;4Deg$-zq)>(h$RMU!Zj^ zMLKPFBVm&hVSde*Ezoj&&dgcovX+#XI_oKlcUq{msIplzz)Bt1BQERn60kp06koki zTNf&Eykeay0mUhb&neJ;3qhTN`F07Y(-g&ni?nBzi9G#1ZN2g*KmMMU5Xgzb*kjlt zuxC@v3m7PSBXzWt0 z5>$-KmTHag^ZQaQGYVONt2k62%4;ms>W5+uDag@dnbr)T?<~VsY$#v9Osiu!IbK9^ zyGsM66p@1L%p;jY2Il@lf@uBue(_+Y;4I36HmTPtKQ+0**Kx(lHBW|@j zXRK;>PW}q*q?$90^Oagvkk7{}wT9ts4JsdLeHG<*-v48*@(sUh7-YBQ>m>$$?;ypz zgcvm&acVCNmvv$anQ%pPvkth-V^F4G{H88eFdqiAGTs{ zoVUYKh#xdn#>0fg8exZFpl21@FqIJAZHF@u-e-sFA$-UVH%0i^6uNgsM$_c7^q|uF z27Y*z*1G&TShZi!u*KR+epbNiK!UFwLtL=UYV9#aEttj&KGEv=5Pe(_C`1CAJ|kg; zW2qKaoFsE_Fk+3iLs9++?p_OWL4U`8hP7iTpY)m56F)sSVCVk+XIc&3Zk<*J5na}4 z?eViBPZlqKGjIL&ty#t>R+RbLKF9V7+#)GMqQvfCWw<`GEYnk?R|^ zPhyu2fsKy~r@~(}M9=(=;WAGKzul<4sT3t0EK1_TH)(BI4oxQ&b9e71Ek5PEh6zZV z<|5Wc)!Ij=O_Dj71Mp<(X01tV;WVL#YvQ7-PcADNXOh!+m(ALJiJ=tqF-A@84FgK6 zbT3NZwpn{IA(T!|Uf==gc{{P|7VXjSL^?H&a1y`XqJ3M|Mhi8XHooWiMo7n*c9U@z z$!?d+JSiMG60d>%v;&VYnwU_irFbvWM4%>~=QkE=@!{VO6>1d|oem)nizV9sR-x8N zML+B+)as^O)adk36eK$h(???GMpc!!X?H85_$%8qt1NL?dea9=NwjPRrrvqJbsIE# zpYkf(wK|Dwql`3_IHn325Gq3~iGW)Z4Y1zZwR)u~U6E(HBJzXnU=eHi;q4k7r+3+* zCCJl3@En|^gZD@D5a&(K)(M4uJ&Y=SYloI8N>f9nUF2Wx(3-`sjl!G)O@obF`M7}M zvW{us+|_q#{)%%>2G zRz78yR6I?;DkmzwPp3n%1AbPreqoSpoMX?TlZ#+#d91dT5tk6z?AeW_Jb z1_gWK%j+4fBcnUr#dxhs5q`eqd#!2Ad|cTZOS}l?_1!QE2ZKpJXb=G|@mu$6DbaF1 zS({G4T14l4_G`7gqlpiY^mvfZ-w)8y{G0vSxTJy5W*L466S(_8txyDQE^R{jh9A({ zdFA3CX%5u+_Xo5Nr55OZy1c0dte35oOL_Aj!B-dXPk)4R{a60-PufeeCRi7urVBr5 zUDfjkc$b4vhcD!TgW64iT60i)6cSq1Ls}NJsrMez{wM{Rf>z21khcePdEa5^;3x5y z4`U*H#}^#d%4H7)qA;$7H4w~7ZxQO*BO?{_HJh#OQKB@%>I(>$)z|zL!U&N&Vxe8Y zuGajOYe%$d#;+QU63xP)yvY%5Es(l&M0*K8Fa4~g5~>q_*6sj~M}Ni$OyTiIwe096 zkbwqLJqv1^ukuHaYV|Xw=+PKO^aK@;PMx498uX2RRN?MiQEBb4hJPvgf9+8W>TCS` zQLRPlNIi|5y(2NV4$vB`OMGx4^$g+E`4{a;@AN$loYH39fT$U%at|I#kK%R>{*Zz1rE|45R76%aO!VbS4BNGoh!$+vNiW% z`4DZgqHqXDr`_k>y}DUr-^RU0Y`>_?a+Cnu8Eek;V2k5g13I{W=_EA&usJ!YrQ>JI zNv*2SCgL%TO*`~cDD=s9F7tda?v&OlGF{+_tr!g`xX4FhEGAbDHBZc!u!-|0e6S{+KY&p=qgegK z@<3|6#TaZX0p>#9|Gf76!>^%=2s%noqKOPQ2r89piCa)6jWz8_=`0VGzb0rP0{u>> zN@5zyNhqjCtk){0V^~Y>zM!?nIqZ}RTIIOo=vXpc5bfTB>#exE^)}yqL8}~%#M#=DkAfx~&<(s~;yFeUKcqV?3^`O^9vML8Fo8KXakU!GW2?}wiWWl``& zzO1bNUf?7cjYP~w`m`pNa`Tjio7-xZ@`)SQU2r)O9RvG!^NfaTGl*Ub(xDHiD6*8# zzA<4`%o%1vyK9gQ0(=|sjHf9d9c_%Z6 z>$pI^7BVOP!xw)gRe!Lmt%l3d(x7yd+Q}T6+}I5g50DH3rg@iA^`ugg!wA+vtRlUF z{&oehYPXc5&ej&J*Ak1P+`ocv9;u*rR0eZ6sZPYv<-I;Vv+UF;zegx3%Mo{>2I3&d zr`JaM2A`gq0IoyV@_aaD!EG{e69V{r$1nQyreJ$F_;q4}Px|$i_?hq5AB1(Pk)}s# zYR)^nOuF8Pe%slG})xb2iHJstBvp^VWIzkIebRiGX(s5%HlDLB^!e?dH74 zdsNet|A$#u{?D_Ps{TK&wM%$bcgeQ8trBf@3&UC2)`IGKdvxFU8hV`l6Pxpn=n}GL zbo%5So?Syv{VQt%37NbpZH^lJFz$1-$Zg)pqy^F9T-CZD@cSOc;$ z^&|prXa7Eh-=>#k!gbEDOrd^|CBiH=ERnCu)Nh~?FJ$VCoa(W1vggrrgn$wT9K5Th zel9|p&pXuB%R{r&tu90*W!~%;>*)$UU#hQn!Y|*^K;Mebw;Sqiik{s_haPnvzt~uR zFQH&Nlx!V*?iNE~7+VM}#C@o&;D_M4CVE*?Z-3KN-=Id%7tA{!k!m;BF*VAXw`Syi(+#D@6|8&Y!lhq!a{~S^9f!rGWQn zDL#WO^~y1rq2J!4XP_>f^F{aRDg4yE`iE!_!VRgJXit3bQYXDP@aDZc>y7a< zud|+npY@&f4R#|`oGh0$=LM%cs2_=B$M(DZ30A>=p7*F8&yInK5c?;glrB8?e^CO}jLRloT>A;EEa^Y#9tm5CQWNZ}Ws+HLxJZW8sg)1TySaBCS~y zaREO9GD{(|4opz2x9spcvlMHR9iB2nu_oK$S4qBkk0n|IoxlJ}p_sL2A(@*WkRRea zoF2I=VV`52N0}~jE5jyFwQ7SALh)oyzzsg=M1d>57veG;bO<5^pcA4Dt2AUW3CR6V z>WR$|hi@G4RD$R&(1(oO4L6fuF%9p(#KaY-yR3XP4}W3J!xw+?Njgw;3pd$wJ=Py{6l-<_MNxlGf;M|j=<9=b6l-qiYdgN) z34I*}--E4oq+)h1c(yUZ2Hfd2!A4*`Tl?C z6saKQH$Gi2K6<0(IKTNojzJCezniW2se8q2;m`^=d=0l zr}SAWesj9%8RcI!{CHYPj1`@Jjnz!V;2PO%{%JSeSAV5J^~rQNyi!427*MOQ8fdD3 z`E{giP5o(gPM=ms65q6b$&tpZt6j)grU zL&b=^-b1e!z=-IW8jwxHMnnZXa##gtN%u$NL5fBD6N90O!Ju!9BH;3h!^zJgID7*R zxa5b!DKx$}$tVXFafqO>_Y$ser^4!01TBnj}61Co5hfH7YFAgrZE=JQ0qL5JV^QM|1zvdielRB5qjx zd4V>m^g(weOO%TShLt-fRBj2-0OideU~^YO96cbLM~!%wj)d?py`5Gl($Izg1+96M z1oH$ZmO|Ei8M!+YiIBBGM(znkB4jO;k^4fC2w4R(@<1pOA#0J0JQRuyAZWcOV~>Vn z5whNwk;g)j2w96|W|@=PcaA!~_@JRgcg$O_8HoB_^Sl%o#t@MX_Hj+gcjjDTPqm)a;{$JatV?=Zh|tU$H3DZD z^jIX68{o;=xLi$Z4EEUIy<4(E!;709bW9%;=bD`cM%K+d$kKGc;DlhX$2tS5x9I?Y zcrFHu)@$IBbXZIPP~9D2FhC(}3Yef5iszf3)hjCF_;Db0*E}eK#(RjTL3fETaYtMj zwlYl2T@MNTU~}E+Hc>aLIU(-_!$TeL8)ClUN%VQGE3Q908*r3gLKbGsER>6cK^7OZ=iXsQzWMpvnZt9)-C`r+{=>*XKr}m+*id&5b6> zSUTT9FH=?6ci8~q?Al3jquIuj)=FH^oq|lXvMd^_SW{&f-7gdpR{n5jXc4l-4C_^_ z^3&{0f$*g>(b_qN)(@-zR)v3}=UYd^>oNxa{@!|uJ|C2TKiEd=s)5$k=7orD`$87>YO9>``Qv}Q#PzyB~M-%i>AlnvIgoIoT?Hu-L_(d;$3z5UH z8w0lJ6YW9Us4;hUr@Q5%;W?{ZcDq3iLPooCyUp#)8YBpis-f{FVF82(9g0F?jJciX z{u7k73r++8$>0B{Ub{1L*zNQ=?KDL@=~_6o7e_HL$klOrkYsxIGeb5+%B`G4Th07)U!Ks*DKOfk+$`IvGT_&$z7F zLlltvE@sUb9tazrNmAm%@XQP4031fNV7MF)O0WmU#>19pil*^4JXadZO+f*VVlH|O zAbm*8Q5pgYVy+4QEa;SURdg(VMaNRLSTaQeF&=Vir>T|;E-x{u`S2I?%9VBwlbu47 z7OLWIG@{JfJq+v;^g-)6=KRhV^mHYUUwA=JZUf{(j0xcrA!KATk0K|%x{~XG>0YQ2 zGVM%Q8pdq=OL`oQ9g$HHF`70hV!^t`phBD@84nO4y2fYml6-ba&c@?PL=6d=fap#2wVkXPY6N+M3pRJ z-@gJ_kNqp5Y@sN!?|^2|2>@pqvv^<%sEdGHeiv0lo0wGtJy=u0AlLsAxs*|J zL@S8!#RQ^-%$|AcLzHND87*@HL(DM>NjUVE*hGf5;2`+W)*Ru`_8sBS_Psnlt%sdf;18TZ!4mOu&1+Wp4kN?mDib>T7 zlM2%mVg|Vp!X}KKQp-srqffcS@|?bUY7K~6ktCA2%tesazyQb!z#I#SgdoMXKav;{ z()k8tNJpvQcSI5puF;R!eGyY8uQt)5mr0&u<^*24pPrUJH41$KmtClaPQ;u%!l;sH zCRBE(etNQ=a}@qp%*niOKfSga#q)xGdgFRhz9pX}su)fTq?B$EWeo^#x)N$SPwB5$ zNg*);GgL@u8DwfD4sbg|08^pk?b=^27XarmO1p@TW%LwendesA(9sBCnTA@l6Lz!K z+E8eHD6}aQDh!2ohC;hTp*^9{zEJ4EfL7FnRP>=x0vdKV>z$6CC z7{-j+gIR&z0};yoCpr+}RkRm1jI|2h)0H~{m(V)x#byuBv;js^H6-5T%c+{2%t)%{ zFX!kfEoo>~h)JSCnlURbVt!ji(*?y`s}v8YNa2ATy<8bVCD@{n9Iu0Wg3`4Cdfh+~ z-BF@Ymmw1zIg;WGA$WWw?t)N=9I4mtBDPK}y^_?`U;s!{L;oVRgG{BxnLb;K;lbm= z<|e^@X(CCpLQ5l+3r6On0eVWj-1vduMXt`~WHG4x_y9ejrX*CFUEd6l8zFJ&8Ks+k z96v)hlnw4DR5%z3-e91fdV?*4=3oWG(JpOD08R=?74)8~n494939V4E5~R`LvNavf zx*?w;1J4}@wn+eTjW~=w)dUY!&-^6AVwN5aMGeVOMWkhd#pC%Ics~YgG=*2%VVc%& z$}q~v^Erh~D~ijPg#a*z%K`#a!t3@2m5>L&qoQOhkE%q>*icNq9kVv9_Bo-_^NUI! zWfw@(%>a;Nv zo!+)^0l@BY+8g3&2BjBnlTx&W$GL=0JJs^Q;?Qz6$Id!;ebH#E**;g6!jSYXR(A{z z?IDKH=+X!ZHM$Frl(~D+SkfRqGDxpfP5=-_Rt`p2#o%N3fhM1V)WGY64(hc=00DrK zQeNIs0L{SbMTK5HdeAzM3kAR?=68$Sd168e|C;hJ&BFW^9SN*~^n6THxuwVR=O9NS zc(L}Tt2g6(4FaSSho?9|lQL4W+v0$m9KbL*$%2c+?YshfWm~14n_<_IU*c|a2{x@+3R}p?SgF$Wc*M%00CGo z5dMBQ+A~C@z88X&=ypr+1hfo$<)aF}Fht+19O9o3)hk!Q0)Zu{fYu!fz-UbdPRIbh zXykbOFr0HAgVL{zQJAg&}rQv#`$aM&}=N*UXNj0urG^sVvT^5uW zxXpKdxL*C*8RS+}b~APi9Y^S?RlyE1AUK~iC&8^SykKLl0HY9jPW(-fCm%mTZ&nwA zF9^7`k9d6%h@3Pq-EdarZglg;rGlhD%-Tr33hw7;j?~K=Xth`-sHq)C>hTrDHcf~K zWby++9kO^Om?cr2n2A_Gj__e4^~#+JFv56e6EP4)X!M1u$c4wu$?tXqaRd@PX+oVG z;!JU%M7#q#0h-ZvI%(1g?6a-1VQiE>$-NU(dG;vXN*Exr)U)N9UBXNQDrGUE%15a=Mx%1>>Q~|1{I6X?T4i@5NdBLsT)a7J2CBur@{7Lp=}=G=%3certIJgbM)6>00_3)U{0HpLLqjmoSI|u==1nZFA zgDQ;Z3FK)91@VEtO>>9944w!{UyZm-FdMrq*1j+#aBLtEl8rQX@+G77s_0oN%~cYV zpBSxIV(2G{z3&Y@i%!i*dxI$Kgdu42E^olfs(>GSLm!doB&u{#u$0Ac&BXe-7U-pb zj~t_ytKp=(#SmF1Hi}`kOVniKr!tZkj?oj!I~l~grwSE!VV}q|eyr%X%&`z33I>wG z1!QlH80fJs(qV%&1ffeJl!s7`IE5OE&;SvdfY3k@nuO4+B9xENAQ75@&}$+z2cf|t zG!LQIMF_PC9Td8Nj^2DKFC2@5`wiSXP9KgQ5OaZ!i^Tw0(A{Fj03E(?oZg`>Fchbb z7SKX~6tN-z!Us}*&@}0Y(_j=~SS!xRSx{%Z-T^)Q>Ue!Xdd@*%i$Rp!st+}J+2&9m z5*H-G$H;Hs8C=g(#}4HmaTpC1@FQHWgrCwA^uhQUKS8hKM$`G{6Z8(LXt`e{l^Pn3 z0B}OP5daEkHg7x;1_=fH?uq)H_?bIVUkj6mr{C1iMBw+ysro^+C0HTIP_6+8$Ta`~ zxdzat&@c>40%69Ak9a$5iC-{X+n4v#jBFZ~c4*;!UGxb!$Zl<1$pU-CMwP2omdM4JK?Y!D7q>bXOXX(`wY5zfc zNxYUJ>c+blzzXN^+xduD`cZ?<7N}c^3%)uVhE}6+uTXy)KaJ*~=u!OcIr?Z6eQ*vq zX8|uYSJYQyu3jOgK+cPFbqzjk<6Vr0ms)5w|5? zF6tS-SFcpQP;cOZmt|s~u5=fCxzbNLGta}>0o}*{*sGVRJQCdqtSvg-al&*T%L!uv zHb(}lf2Z${Do@LST>5#4-gh zcap*F_a245wSeot=ue`6XMTZ!+bF*J7yT81HMH$gEk}LV?pOUjB+mR*|GEZF&ro<* z(h-otMzm1vieIBEcIYB44XT_7Fg5W;1TLBnz+J0s0q{L^D#?3eh7V|tYi2eAtgh?CD_=((Jprj-Q=#D39a z69rfwZX~N~>vOz|;4*)Jri%nZoJEqR%w;VZIfg&+oN3$96# zKW+17af{YEj7JQJ8K3@LKTvZJF*3p-XCSs;2%yoiJ*m!EPlV*8I8;EH7QbS)TK?>#?N}>-~Ru%lndz{cKfNn;d&@06re4h~8j5jb`CMw0V zOy*j?_Jn?u`tD-xIjMJ0r>^D?oCNjk;)_q}P1I#;`LUCFgZsDPRE%z^Ly(35FZx%k z$SNf8VvDg#tD#B@A%>te4Ms)GMtfbaB_naViYKcmj52u6DgCbULY}ZQ(DDXtB551Z z?Z2Et$By5?8=ltvSlK(B)~jU_HrP1WXzZc`W2vGcT}XtCmQ_WV5DiXC(crZHAQe>g z3~ZJM^SjT$m}3fm{)~Q)XNm_}rhv8nZNBRaR)7O%`K2=;x9@q)KlN(qi-!t>7@9#e zemEBo7$;RaAjI@>tQuEgkOF_|?IDRo70bcc3tdM0IY;9UjsQJASI_Bprb&H1#*j4o!dW=YGpN&%hhlf0AUdC< zbimuk59G-n4!VhxpkJ|5!fYp8al+jilLxebv-?Ip@Cpa=>>0)j&g)~~lkMgUSez#F z=P&4Ojg<#bw1wwk%*nw`7xZHa3>@$}9eE0e%t5cS;PDoyPOSa=2oMu`vL~t`-3KVZ z{hsl#%JY#0K~#fKRIU?M--!yo>qOOaqIQI$>N-)s%BTPetK-BCgHs1ter+deRDly! z%ZWO_(22@|5M$+(X%(GeBe;FGlT_1z9)WAzvdl~;YGx=Z!)RjX{2I0f0u0~B@cNCG z;liC33%-T%ARC>sthZ-|HR34fah1z_W84XrmAvC;>Zk1P)K4{>3VxP_@#YFkEVKKv zjJ&(TvN}u>IpJ@evQ~GpP8b)$!yc4p3B&L~!OKaMrJ9rFr+krxKclj$JO+oCDU-e@ zq;g=R0l0Jr?(L}|xPRCnxPnI@RUMGQa)9{>mDNtkKO$&Ff>d!p_KuOIv~aU3DPQ4q zBhtd{MJlCo2xPhhdCkpkO4)swK**H{Kq@&P^QK9VXCqimUN(Ydr+jmW;PT*U1aK7{ zxbJP80r#{GQXoOn9FPK-hhpUTxd_%HWg$%+dVP&b@jD=SHbV1tmdK|>vZR#XMcZ=R z0?y~aZL;CMh-5dX%od2}NstN-$R!)`h8nA%@`sot1rj9H0U2O}T+&&2K3!w!DX;D) ztX4_56bJ4@yKMwFUT5h6305e!CDp_S>AyeQ`9ueZdINHDd&J}3~LpCp0V_f zvRU~OF2R9&|FUKkV2Li?EW9E|)yF$|*2`w`-xy2iC|kZtg2Xu>KQ1WQ^1{oCEtGj; zojj}TRyFgobRO`qnkn!9L<6=@!j*O4{;-=S;C?TH%Zn6fmT};IwL21U_t-_Pk{~e- zNKi5=UO*r_4pME$B#7yN{BBR{C!$z0-qm2OQhxf8;PN$58{}*`Zu4!d0M~SU6uZ?1 z+b6+FIbh3eqyYAsQ<5%9igrMz!;+U~5{qX2QYMPZ_DK+&xy#CCNv=&GHF;q)yW57# zhlLYHO57Zym1417REtt9F8f`5sXU6eAL3washl zmkxmxND!PnNsu{j%Tiu10$C+NAh}79aduySRRn?u+6Y~kZcC8Ok{EdnlVznW+%E=S zf{;@vvGyIXY3~Jq7!u?df$&8pE00z7bCV4=&Ir26q2-l#j$svU4y~@(3Hqoc$;hV* zzUdQ4U=JW`I2X1A5!{+zpx09{9v{cB3}qib8p9seNn}yrH|DM~SVE*klcqs*z{6V* zT}YNDk%vq#VD4#$V5x@cTl?U_6P^w%ycr}+<(J?RkZleD$uleES5D16c^fXkqQD0D<-rFN#|ynfby-JiwYqaCdI*UM^x=danui@ zwYC%oX#sh#$wMdN`6#HPZLtpK*EshVI(Z!Il6?>)O+AiveIUoUQH>B%8*C=1RS_-8 zpn^hZdOPS`d}JfINkl;ci-58omo9A>p=Xf=!qCWmAO%Kreuxmm_$P7f1{J@T;#dv( z&4_0=Rgl&j5bg1}DsUl@8P-UocLG+hMH&^)DrscWf$-9JmY$L4A;S(JMB4$`ATnQ~ zoFsc|J{N`@5-9B(cvJ$bnlRS3OOhL2S2Z{D$6FJI^EL@=e7%j#$`giSIJ<({#7)A@ z1_p%fT%`5HjZv?q_kw<(hJC{DU~D-SNoqjsxZn+e@}Rbjyjpp7f0@sjzm$mbDL3`} zrrC|~8#JywyG{9=?=R1q92jE%B>=}3x znwrc4(0)}&!EAVsw@YEwqH)emR5d`t4MY^+=B2Q%rAllI5>r{r659gOv0ZUnP(O^I z{?)bs4#J&{!RAzGT4-zZdn(I#DBMmX%ca656w`K#+#$KIutS1UjCM$F8nk4wNwRZ@ zEfP_?t5t7GywOFXecuW!srD}H(ZtN9YoGXVL*<+(f@1c>iWy=TgY4+Z^%Yoc(w&Ms zwk~Uyv?IppjR;QVWqs_8z%CdaZY8A-)FK|se@hZwoj?m*(!Q9WVP;RtU(%UCup`Yz zH0}4HtcU)e^!}zbq#-mY@P^^k25_JTtr&DI*pj0uU@)uG%r`x0xVwVz>?qt z1*KLL6dw`v5E2Lud?OdP64`gk5uTLBDk~pxD~(l190Joyq1})V9Re?iIhZCRhVz%x zSO#5XkjBeEGtDFM*D;Tv^up5}@C*RU>>|veFCcz#v;lPXwDqMk18`^E2m2skPT!Eh zbR6t~y3qjQ3Lto4bxpR|;NwcS@J~PW4$dWUUfOogtt2Bb^?eb0qgR zQoq-^61%VbdaNp9x?h&Oxe{v#WlUsc@zbm_yH#1wU$4xTCd$cyM>&MbkJcJ8dPgT8 z;hn0mX6m6~d_omgnSMX6!YahTZqi&WRFZBB_Lb&p{#zARA1boSRasS3aa&d9Cp}?R zmKqDaDrxA2f)gVK76v8Zw5sgUrm&a?WkzAlh?SzXG+?mu<{mMwd}<3CkrF$vUb zKwbqSDG5=xC{evEF^#`mBRsqN3J`0HK}1{uqEtqB8PKJbKob6AGgva3&@F={l?SdB z;S0deposwM!UD7-3ja43^C=lDBc3=0aTPEFsN_Rw`!d)~Fte?c$r_Yi3}vzg`3JTk z;08zdQ<I!2HXwe?HdvnE zU8}J*Q8UJ9X-#%g`HU~fVy_@W^;#H%CH$dUEEB$RM$}>z31(3(HXn&yYO}fxs5Fpi zgm?%CoN${k?2oX-BW`+W4@9p*70q8N_}>7+0B%P z`~XZ*=-)|nY3F2pv~kQ=!SW3l{B3RK_cmm?>X705P(#)>-a!icVp;lkJE`kHlaK zT3}7UR^Q;+O<3K)p=}B(659#irTh;pzz{)QPc;UD2nt~>lpbOq$aMehyY%NFM@iVVn9YkF?(#3I^Em$6*@nWn4_sPn_780_u*o2KkVtUq@(W0REK z{CG1KuYAebjcgVzHw8Dc_F!t4ZWPN+jpnQlz8-4M>Q=DX6g+&=21&KH+jp0U#eu=` z0ssN_Ky#7P%x0CnxP9yrk8F?O&9hl8D4CzlW)<+0m(6O%O@`z^`v)kI1t6aL#!T9g z&0cEzCK*g7TI9WLuK}@7e9=X;)28!9!rzynG#q1D=n^L}V9^C$bcp#T=N7BzDHtZs zE%3RvR!;y3)VF-(nEe@u(={{l)`tx zAs0?tC<-T>z)J*GtEL_4b|OU?!(Pc!c09lE(G*I(VHssng z9Q(k6!5kIb*^>2D(Tg2hv&L{}GrToxQT1zMy045m5qIZ(kzSl zpq5TeRWxdny-{`KHIh$Zhd;gzyS@IKWJ`l#71{cSvbkw#Ey_w3y+YIzM{E;#Vp~j= zH~HgjSrfD`zb#9tAQ#%AEMz7qvXGG)YTMJ6-Hd&Qza6V+kN|G?9>2XEOAOc;$`ugQ zF0u&09YGV0TjLgRPE!3+Ogym^cGYUPH&aO-+vpsCEmfaMBDn^CffGNZLDHL`!<$Q7S@+^ zWeqrN0V1tv*O`W^26PdNmMW}I_MJ+(5+%21l zbdKu@K!&mmZOfL_AnE`Q3Io;vOGg+7Swq5xmhItT%q% zy@ORv{ThDjh@fJzlb}%s=fefCPw8%ywRAW?b_aV9Jih&%VCGAB;7)c=%;i8o-3hMp z9xr_tewOe?ccCK|^Uim%j95YCB*{W5v&a$-ZVLFMyVzq8>Xp0MBLNcX>0pY4dU4^` z2M-uVKiD^6hma#=W?cEf`h&H>8c^bUV2STnOMDM1@%>tf@4-=JXh-E#@VZFmC+=o- z+I}<~SEwS;8DxxNeU$4VS7xA8OA#C%M(b#cMNnv%LV6fVAc&jpV-+95IlUkcqEK@!ZFwPCLe^D{Tors5ghMIBu*ojRXS3W; zKVm>>y#X=oCH)XOm9Bv2M37Yj5#3tU(fU}(eGD$Ehz*mq+x8g(KJ*7J=_&Zvt_sR0 z!-|Gj?J_qQ7JS0cuo8|?+GcfPDJn{B--*Rvp88xT@cr-k!cMHZc}%E^kxi@@Fo-ye z*tSQ{>ewwoPM}zytCUAoTnhcqjnOzni8L$+C?Gs+VbY;ZJ~!QADB%N#KXgB&p((sS z{T$>|?#HHK3SWLdYgJD|Lgy};4W>q-kVGg37k2Dq($qj5L-H6{7;o?ZX59C@%LA-p zdd?&v@DNjwzGL5D} zH2vE<$vW>q`V}=>(1^H*ZI>pqq#%nBe{$pnZ(vF3P~7v6JF^rR>3rLnRl<+@Ahf(Y zdB%gRdSIuqgoXj#(@1?xcufawlAg7J`l6AF67fl^7|BT2Ca&IR#P)u!%NCx)lxEG|Q&dXsj%vHP&Kr_f=e+2hn0KkchBThHw79u@0r1OJ;drn@0kJZI!OxH zJG{+fyRiDVQ52XtM2shBeLi7-0>v|;TpDp;f)5F1?H1%FM}g)G{PPgD2+f$m$9I9o z^t^yb!^jcUVPH`mq%1Mh3=65EBrD(X=L54KF>0iw6|)hQ5g3Yvgl`Z|BpcfmyU<}I z!-)%F#cCHBTt04fWpz|^*gw0nPGwGGQlk%m2kCJz2hQ+)U9neR$4foTD%!aEAh2Wp z2`tWtiiy{Nu+K0X5u$yF=B`jfLg*8KIKK)*kWjuBic}cNcg666hgp(({%yYbVOH*r z4UqFL>mJk@>KMBV;>uIwbpt&mr&-HLd2XI{L&*}P3w4tM_H{}V?ic#C}QOy zAjFM%B8PC}AZvn&TW#Bo`+>K4;8EspcZNZf5WErx18QFo67?RaZt)BcB>uG0H@RFn z%^$#7(oz&#+UI_6EQOHtMp|il)wuL>zezFp<5M1EjVl$;h;fbZdr3vKLgbG?{uML$ zxyM-frb?pEe2ds|LGik9Y4R`DRXn3z7p>4G>PpiPL-kgCoMn|lPoa(7{a$d8ycxXf z<1DtZjH4?6aKtRq@me$1224gw7Jw5^plL&M*cycLMPKL4;PW466%zId7&=m<=VWwn zXn(YIU=rT-~;{rQc7Vt>g0d;*rK z1w8plY~|MRd!A&s!{_L%Ct1_F$cZA;U{Z+x^fpOpQ9jn5g6+klsz~-B2LDC1rkbE| zox$V&!72p^dpZ@tUmKYsF~Z4>H3aD3k8m}}J&H8~5%`nHBLW=~VmrP_kl`N5a)dXV zGZH0Q%u#P7M10!fkvG~fQHL-62a9SYnT&9%iS0-P)m;d@N}&qq+R@8V_`yL3Lxn}X zD>R+dyXYK$6!oz26q{ciZ57v=VsTj;iVz%j7IircXhlb3RH>tXc#2gneL&zzhIXQK z9^VaH7-7;4p%IC4a8WHW|Hr$rti+-@Yfo1!R5U9wV;6K|iFJShy68RHu9SOkoITv) zGx@!7Vh))@ok=ZcGe6snb&QeuYG2m8EUO+ekjnl}1;~|%A3E)&C4%`y?neMFi zojJyAf28Q5RT2f58Ddnsqewbpm#F*jjFPLnIRXdT0tkng4zbgI7YL+9V|;B0-nR#< z7%y|uNIM{rM4TV=U=86$O$eMsoEUs?Sbm`g%Th6NHG8tu0FAECz}Y5tw!LZ3?cfpC zg+u^51v12wh4_gnDQ;7r)0N0#GC*-L)s_w9`nE?DL8}i*A{f|O)+NuS{=HymX<=30 z*^{LO0AsJsjuh>1P^x8)C;@|rfLN!9*&UVhMJ(GWmJAmlG0gBt7ZI3=0up!fAm*EE z#F0^^s}@Wa>3)dpIZ(eOaOt{*WC+3a1#il?OF;bxWL4tgBnrkrNn8*RE3;S#eQsDd z12J@I*ka|v`ir?sLc7e_5~rhdJJVhV6+st?nD8YRLea4EGkB?ISnW3NLjyq@l|-9q z_{AD2n5deKv7^nRQzWsLE0iZ>%^5TJ3Kmrf5BJXC1<$Z@_nxo^2l-_-v`P51qhirY z6eI>lHVn0ju1NCJzFh>bB1KhrmQ_PUtzu=@m1st(!|%Nu==uHLE>xQw2&*vZOquFKzNqI zVgs8Bfd)1UXoq6YJ&HhApdHjg%uwRiP_XvGnhH+6p%Q9k;aC_S_s3p;`wJ1f0d<50h_Ab@-+W@9Cr@`Z>gZ2L)x8cz5S zJUQ!wt={*%av$tiCh#_WScW=eCV#OHWY+>ds}E!@TpjAeaFHnZV;^QHw(|mT3B^1P zWgGD&RZ805G{7ttCqaH;K~;%#i9(ogVJ?uGxW+%(lYt{bg`;BcObSsV3~a-ygS35$ zke$JOlFflIX(nDo;h#epzz^M*f&OWf1XZMYhudf?#)PiO?fXTlpy!pYMQn!3rRvP{ zhG48z%_X#^g{u=*#oS83wt&rpO3)3gt>@Vb#w6j{3+!==^!k4_r>ICRbj3_iy;6mHm z(8oU7_&F&Whbwbmlj4~q5a<$08|Cl*HYPOR&ISiqEKJO(~ z*RwFnr(nYlm;Q%dVzt6P{V%gy!akpUnKcaiEO;3twvrdV%+jl#fnER#QMb7)iu~^h z-9W6}ZmTGfS9pcp`VYE4*9Ywq=aa~YXRER6t6;yWs!m!9K=uP}czMAAgJ_b0NZtJf2ORV%C>Ub8RO=}@^S z^Ul7o206%I=?fjt5x#`J3i#f>urY(8wjZmGpIiH3Vixcx`my_>a>>fk+Fg~%l5gw> zML4c4_D9}}!8ZL_^GIcGaM-JuqonkYq9)U1dw&qK)J>Curv|~u17|BQ4`xr`=lj8I zNVVx$F=!IFtQWAxizSgX&%__l7ce(Qcle^Zn}>sMyv~wDx#CI($_*|Z!YW4o>k@DS z%*Rjyj~K-k;W6a^K7 z!W_k;=EA6>-W>Lj6P_=^LBuy^C9zEiFVDu-Zb9&wMXcAAu;swEXRz#IW~wENi@QQ` zb~A#vEn)Y%@i@!OWl+fd65O&3@}(Oyo?9QX(M-4XmaLZGW##xcd;j zi8Vs_mQ9#?qk@QLlMTHb{dOp1u^bkMrRc-Al_kQ{2-Q--ZrQ?r0bkj$ zyNFzHao-k}dd<@L_N}ZwL3j$GsK;+!S5F+jaU1i}2axdYM)xYkN6`|^)M(b$w%3ZS2C86SYU>8;;r@wW+ zdX=Xv-?B^gT}kLzUiu5s0l{8humqi|@9>-_g*V?T;lDpEyW!#Po^t%RZ)N1_Gnf&h zZt#d6Snz}FfvZ8L@PfT8n+oo~{~C~^|71zQ{@=0j>VFvr?*V3bF&E;0Wn}~|$N#t- z?eR@Lf)tDOgp%zMlP0_;!T=wnhHbk#Ob}f#T;VxScy&JR4|YF+|2OLHeERy=eNk|o z>(yG0o^BA#zra>p*8!$#2L+d_9=Xn4&(;nK4%hxG)jr_;uT)#3)PJSgb20ywYCn(r zuT=Y1`Tt6_-BUdI<%l_Uyb148;J0=I`Ri})x#fB?O`6Xs!7i4khr%y4_VoT=h*K%v z=SI(C|Emx?CRqLdvau@_?AXdvOJG*|9*+-7)^ozYFEXeD~dd zSJ|_8)P0`2?LMiX+nYB@dz0^zf;ME$SpLy{Aws+sSk+D;lDr03aA_ycAwl%m=f(0; zkIRb0W-rVBz|KodgGF6ET?oIA9uEn*<#_W4r5KDkA~Xy*xs-@ZZJbv#N9@dR92>^70%L7;K<*XzV4F9u z4Vl98heMYzy{PbaxLnfzKWY_-FJrRj zPnsPM=F2Ii%*0gMGF?u9r>Ee27m0aOu8^`5_dT<+j6Z1i-b(eLnur)X<3 zdNVfJ7eAMj9P_zkA_KNw10s&+el7*DecP@978|Uv$x}@%E~rp!>|=IG831((UWIB( z#>er}TSA2wPyEtzKh2P6e&$P=?LSxS`-O6V|8pe{*#4g`5%exN^nVV=lrR3XB@VZV ztN5_}568M4fA=d%t{133 zm+}hIn-+z4KrmgxRlwtut^pHB@;0UnA6^ZpjCUYcN_lS}pzBjxZ}a-qw(|Nl>#n%# z*Q|m3(}e3;TZ6>wSKD)ZVzT!E8n;u)lCYCgB=I*(v57y$TV#0RhT+MjWUt`dR{)IT zUq^WxQEAOmuUcAca7C(D(XnEERM|VoX7x~=v3yH4uh8A>t>zWFyvXX; z21?|4)x9@`78zWh<)x~7g`v^a$}J!4Qp0;lESh=EycOW7#T!ZZ3}_(xU{M=yEU(qb zE6#rWO=OdbB_6Be6=y#Mw|EnIc3rQq3JHV20Z?u4Fe>x!tl)0GyRKK9F#Wx?1X_Bd z`TF{}4f3})XiCHD(V)h+qCuk?UylYocEjJ_pjNzbGp{&C0v(8@Oi=K~W?o^c1-gvo zKQ{}Ja|OPznI!njz{a=tmgbl0z!a(5jdBh-6drlSOu=n8dfSOb^x0cO(p!8?kUwOhM@(%68CPX+GCY-a7T%|C~ zu=wDZ_Fhx0S211XYPk9yxny>HO#b$|N3ND#p1f*$BF}xyE6%&J{&7{H^1+85_tsMQ zy1Ts%sXwn*eQBMpZ+-nbU*Gz6ce%dx)qV6j*7u}X0j>+Fq$&KHr@Z%GPtv@nr?)=o zS$cXq>H1+@ylxpC$vgJ;rUX6z^nM(LqzwbSBS;l<&uiWrG(zpu3365*mcPO1iQak& zFFn%x$kkJS8+EPJt$Ei%EA^T2S52*=aBG5h;8k#*DP;J?lO*H$#{N|& zd*4Qe;Oxm>+{Z1P8EO6;e1D4febrz10m68b85eP^!cW7(yF@rIf-4n0WrJ@{^VU75 z{KB_PGOFSR$Eis$%Z~aLzUeh_bItsfM@=#4!cfC0#;5hg^*h}2qvykLTdCkD;d=$1 zwG}JR4 x>)4Mno?I>#{>W=jHICqdUvj?jV1z!@gS%AuGkMMoBdzi<54jG)CL-N- zADuzB$LLuolN@*ZRdLm5-3%imYQLAR@ml12IX8G|hS5e%fSYJ~_YmGur=`=4s?`JN ziSYv7b+*wkE??ZJYoMm1GQc6-Fo*GZvyEDfq@Oc$sC`SR5?Z2k7cVVZD)}J=R<@sK zSx6fE_Q2`aOddPO$W(^$7ITbhQFO0R-f4nEniu96<5hZSX$Dl{n z4!>i3R@wFjq*zVqy-evv%};J!WCAWkspgM-=ex$(hO&jYtzP1aq;$ZF`+ziln&@kK z5Q;jSu1fN$^KeTsmwz(PXrcVfBj@94UjeU*A8HN(w4ZM@diW?@d4wvaD=I#HHtzjR z^N_#bSUAW)X>Rj!DDnwsvECR8>J4B^E|uNF<<)Na@+@+S5kENJxGm-osL)OK9vjiM zLlnqcE->nmGf;625m(_c0tbN$Tz}JTvwG$sK5l_g1)aEJfsqBLhesC}NpUn#qVENv z;qIImm*j=UL&_Zf%0i<``dk_w6eq7O0s$%%gkTp6G$_^liEmhFqg#TVT*_yo5!@53cv zQI}Q$GSpsN&vW5>m3)0vb^wUl2XE1Q|01I?E>NYsXFRAJ3cm85F;%TkEz-~cxEX+- zegq=m6cuxWkcE3R8UalrOD?PFDL5M3+dnX-LGOM11LH~bVW%Y^=0(ANON@t9#O_&Y zbfgP_&YNw#(K6%Z)I(lt)~jefuoS&QK9$s7s8EFmhPk|OnbAg>6HNNhxJ4gP=6eU=+vmC2thxJ4*_)#TtqD~widbGGE?c0Y33DkHvh=zgS%)TQTwpREE;fqA*)!4Lj0FJ02fnZzpbVmF8z39_HapH2dO zQm4V|c8V{-oP@WU6vNCXcbWufm!c498xm7^dvI=y!jUKyeWe?trD-08U**hSW5o9i zLlw?qa9>n#FI0|)xfOJ7c%ACMUFW}7WyIxGM*PiHMqXZ}U>g5c&t9pO4X)a;3ROwB zbHhf{6wR~>&+%v08ga35jQyrNTczoQXZu#2;}h1x-!*=BuQdjFi{?V`iBFALO7tNw zO}5q`ARWxB{5qo@*!&agaKXBObNRD=9T?RierBD~HU$%3OfF~E3zx?hIS-?Sr0aSk zuJq5~MYs+RUWb>?%(wZV^+sCKZ{9QzF zV}o%AF7x)^V2o73{Gv9=m3@syVnxXPJaXru%ReuD_~ z8{LafbD3|Ek6iNP>$V1E;Qz&9;k3(IzD=ROV)1yd!kUPegzy(0kJ#BL8-GqL(25|3 zxsjIpIk>A7&98wq7gfWHZd>#aR)6t00|JrVeE5ccBzl+vohvO=` zMBjLuaa&5BkiIC!@_|DkCjldy-W@sK-ezQ0g5^Zq@5r-TvplCK8$VPR{ zTtmLouzZ4mq}xY)kkg%c!+F6@Oy2@{``l^xZ<{Al(FN*r-GB>vThsz!iJS+8Qiab( z)pi|(1Sx*Oc_kpE3!w;9#2?yal#jz(q^MK4;Gm{^WUV8185LF3zG#=x#3`5F3h!o- zKN5hE6cnlt@ltw46NJk&5HorNjUcqp0~uc!DI}Ov4GPddD*He|N$?i~*@)Wii-as4 z-hKr&@cv&I4Fa~qRnXjPn z7UI$zuOB!Ry*Vo#&JvX=lXx6t zu;|RePG^z_4UHTznc!vQW|TTpM`xRR$P+DIgxCWj_d9-TA?N`4@BtG9JLDUqNjsY~ zNQSaW#+eu>TKFRs;wnk(&Op#c1w-Z$eNDtYPQg>A7(M>*x5h{_!uZhsrhb55#*5z? z<@lOC#!Hpa7Fq|0(^w|G0ZAeF;xx#yM|dgYXw=SpYm6&Pp17$eO^nrV(l1XVxk~_uZ{kgPQf6=flHM@Z~YngP(pa4(a{-3PuN9L|d%gHt-?cfkp8l zSnRPdYx$7xjcUqP{@(XSmb!E{-~YWaqS68=Kj5QZIMuY0uoT1PtO7|MPEBhICoR^2 znS9I-Mn>6v)C+jP6&w^)t_IA32H*aJ(a|g9ay6U2Gxr$yzH^Uv1;!}t#VFxCqWcYd$jU)y_S>>!1 zetO7RNcsVzX47N9F^3YYqZFEj$>6dM&GZhqDc!h2K_(o-UPm?B551H z=Vs6CzBxb$O9I@)u!KbxWnbi=;*R?|F3h;h7-n8Y9miRmL`99V2qH8hN@Ots5!u5| z*aL!~fS{m+O#-5c5)oPC|2*C2o_ho6_|E%&zyCL%{>Zs?dO6+I)m7Ei)z!MsSuuuH z7Zj;i_Xm3N(%X;r2O3@nZifiBT4I<7rafXq5$kXoVzmpiL8!>ab(6l7f=CO+2DbaH zm^`OIm(_vQ2NkI<2LfHM1zxA zl-AoBQlu7s8F(%47?-XLMs3+YCQ`#naE2F=XhXgmp()2WV+>^7B%ygACxkb1(j34b zqo{~8NBUXJv;%L<^hME-g_dc>txw)fpz#fEGyEhnWX#mF4zbwWZ{CEaM!pEmu}FP$ zFz}f5lKO2$Ag4AEhNz)dD49Y0Q=R&_TyI=O;PI51T5&*Y@`Ds=s_~(Kles2f0zO|1 zg~4!Q5{`~K`i#kze<*N`eRejr^H5+&Pau&o8Hq$4-}xLox*d1d6E)kfCLIn8NjavM z%D_K6wPBLFZyKB z_qm#oAyODrTk8pCqOm&sG8%&^XuhDjegn2uY9?}wgCB+wVYv=Xgq9|-)fjsuML;j$>e5P;P1 z-8^-LjwNNq;c{?dX&x$>SFD1Sfo>V2pzWdV4d5&Ih`yGN(bK`ev5I)05?p$;Qk8*Y z2uMGyDv+K!L<@`gTC+o4%y+nCNmZb|-x^v{`CZ_H7_8$K9naSHInblFd2%uow|2;7!xOf?untW2G?&*BGC zvXA3SsPgvX;GwAUug3$enxaa7xJth>K zum(4FYxw>jtWd|q+k@1Q6M^4ZLsjL8z%2=?!t~(klYuMoZsf_ptL#YgQ>G(VoeH$h zMn__KcaKI+tn*o8b|ltWf~P@FEc)^KDQI{j)Z9~nTToB(=|HPa97LzGk;{xK8*w=G zdJ=D(c73T9xUJRw4M&BMM*9xhNdbzx}2GA=$`wnjT{`za7gXIX8eHSMt7vij1! z5kCd4KwQ30e+sk<;xacAupS)-iPk$4=nN9Q{!E}-oe=@X_9NSvgnyVGxZG;onZU&X z$T*B76t?+^>h9x#bW+aoGl5nP5Kcu!CR&&|a(BS)vWiC0a<i3^uy=`{u-tG?wI9U4wLL{oDR(edydju&d|=9A73hty%e=vwzcG6E9w zW=aH&wJVbuI~GReE-~V=i`VYqq{V%QG4^G^Xe_PgmXkzM-HSF#0t)q9MZPhX2ik3qTnk^ZBxUQeC_Q6QBtcIU!i)xmT1%z*uXL=6PHdwj-wAHZ+DHs#T6l|Bos5jDR#5=sx2DD#sgHJ z#fe<&n7TY(^z|e9=+Jm^q4lF$94{`lW{pk|voen{J}P?P!yTJkVZg4SG5&obE=SOE zdrN}I%XQ-%BOi@Y|1u&ws)HFH%ndgqxPeN2{-2MF>V;xPgiJ&s3XMUqO#DOO?vOQWBqDbM)p3{l@ZY@{s&Q^9JgbsKV?UmDvUsS?IF!Oa zmP*j2oae%!oVn2U1Eg&7WirC5nwTuE=&sj@emz4XnfnHA_mP^p5(d&B?9O+;glZZP z&03=827$2R^bHL2$HYQ&@IMVz8&~PYl6L#xwyke1yFmRpAVxHM35!I;Gxj%h^(7Vq z59@=AHub0=(sd#>(OL_U4u$1PA+Gh89#o@+Xd++d-H|a)$psGXH7Z#lM66|fq1HdQ=94tZXF$?0NibqmJJ8aq%ridx&I%*{1W}Ev_^@4*F zMBmTxfGsY7qEuju>&0@29$G@MmMtpTXN!pzNcP3rBI{=K-G_LW&NF^{ej+;=_%4QP zUdvf!rj@5)hkQE7Y4I3JYaIl4oNFl3x)t7&;CTVksoJ7`?Rm@f#mQO>H~{dzSsl^L zKX19}S4Y%KrmaK2e@#77M>OgUtD;#jIsC$Fdey^XTo{l;=-`mt=0dsfn#wf5+-+2{ zp^oTfr7za%TM95@U&g$k>~6jw=;pJ-s%c$uC${bK>I$5iEmAw{iUvts(11h$o~|ph zvvvov^b!K(!iCLoKZuqB0V+*z3@e(WE=?2N{e|OHewt`wjW3y=CTxpvX+6;!uvK3q zT2i-PU%SO%jcE-;EgqF<(NNrxw-_Ny5hvN1MN=O`_d2unFHAmXj{db7zvk*+2;J<= z)4#UjR|$V%Zn|tPF2eC>Xf(?p@Ji@{KD%14M$mhT6zus@zd@*WUng~@p@>UCGK8`= z$}zL5lP(V8_QR9uVxk@yiZHOw;tWxqMr9>jKiRe48P^GTc&m~44pcOvv3M^WM?RL> z!qWZ5CZc%)g?Sv5hP)=CK_er#ok6is6SeMX44G^R@ISYSxV0t3omTtfA>4*D;w(+t z{Dq1?JB;qw<+|n2TrLg?t<~KX5?Td|3k%XXXX;nF+i^|-e;Cz;t(Y1TSH@MSb=rbut8!pjww{>U=s=w8FJ?Q!+)Pdeq;b_fUS|qDi#%jSEo*G82i7-2FVR zILzNC_BapybwU0q@o#m6t8j!Z_B#EsW#hY$)!~8nZ>SxD^_U)!CwX9`2UF zD9zW?Q!_w&H>9%PjY)0Ze9wCrcyC=h_ksq~4qSs3uftl0w6fv0&e*3tEfZKkS?Dvb zLCb{v2D<`sNSeBmKA0|1lwg!H@CNFn0R+V6jV@-;^#TKB9U!KKf3sC9MpH7nysN25 z@BVyPZ`5U(C6c2+!M^iJbG|?$u`E z^7AGfZYFw>W1>~G9ixtmn~V0fz*z8Yp+D5Z{|C&DC!34L-0|m38QWasq`L%u3Xy+( z>BbU4&kH>;Uo?k|L|tc^i&o*!YEw#hEPJ*PbRhXd3voGuuug9QS#VgDwGbV$G^->b z6G@k$LQH6YmtjO1Nti9n$Pr!XYY}<#+Z@s00k8torY!AHQOzwNjIh2j&Q0*Msv%In z*}Kw2*oRnzFJVUenD)*nIT)_3hWh+Pj&68TOVJOPO5V{@97Q*-Z3U@^hK+57DYv*} zNh@){s^@;PCUH1<>c+035z1_DBj7Jwq%OQrAeu#yy8l9fI95e!`-M=2ma6!+q6hqA zE^RCFESHzG@K^h}LdPNn`xr1_%+1krb9Xy4agy4LCShdPXmj`WB9!Sa7s%Rym8ZDs z^w}7Apu`>cf3ydW$DK&+1-$-YRckL=k}_h#vQ#B>5UpCn`0LM%K^sJ_wyMKGmjJCH zJhf|HuW@e&AY_Jmrh}j>!&@DUbOy_IKlx(^aYfBkpl>jq^mufp}_J9J& zRxc8_uwmOS67QuU3z%&vF2~=R_N>J(8P+@IV$tv35!{1!(T_$?I*EsW7yh*7C!piA`lnYJm>Rl+ek^`;eY%63JuGE9 zi20-4Wa8O7W@7J>bZZMbi>B6cHN7*2Z=L!G58cXepnovcnyrKxHL8`3x`<90CZ>Ek z6gk8N&&T}=PU@3cF}#Qb*m$IixQa+y*v0UzFS-aEUMW)byNc{E2}e&Hb$wUCu<(y` z6|G&~Ux+s>vb?KEKW~xBt|GIkmSkM0V*L=f3yUBZ1IDl$=0+X6>Dq7YCc0QF)Ua;i zeq6@>T{ozdD^yx{@q3`+pWQJz)~RXT5$t+7u8dYQJLCK70_x@NSQ)KTU3!SDG=tqX zzSm$1<}EQ~UG@s~Xb&h$Wol**(TFYH+(X>W=Y>5*<5~tyl>I&kQbf^L_w*DYUYwNI zQ`GOmu>D#kV%Yvzig$+PC%VB_I^EOoi{`!1@|EhUULsU)Bd_j6=~!dd!066h&--KZdx_M3rdtqzm=lk~h)Hn< zy%l}il&Aycn+)di&uFW zv<~yY9j=vFLOSu?e5qJzID2tZ4Ym9dtqkq+Ans*q<$wDnBC`(f;lpLg*hSDAb@@>7 zRiL-n3PrEHx5!8xG>=9VSU70F!Y@p((aLs2M*ERWiGH0#Tu@_lYMYF334j{scRn3v zIk@Fj-Q!@0;8c+3U@?d1c))pU7g$b$-tx!YF(FK@QQ!L_FEa7s_4&95H=H92FD8{l zy=a3MW1?R)!;7~*@Ht80B8?r$E$6$Bd`=u*rDGTX!o6WD-5OM{KB7^Aj<=7C?S9us zY-u$C$ORE%ps;m`v3K5>W7+4tEE3MH5Qhh_`cs%M^ zS?04{_(#ICKJ?%dgrAF~pCr6!t(Sg^@He=d*e!pW@aXS6_$R_gyM>d_5S+5nXNSL^ zpMV!LtGxWr5I#BB3Kw{m@b{7Q=Li=M^U?J%sE7y6|zexB?G$+q= zzd*xZdFd|^KDO0^Unach6AvCt_)G*HLkO45@|rW0@OKe-7~$6=@GFEr1RU=FaK2di zk@tZSgsUPSc$M%cP^(@1jwC##Z5Vuw;Nc6y;3$H#Bejht{JfW}2=399=jqWO!xzIY z4i|r&U}XgPV+n7I^!^RP)e&rsBm8lsv2PNd@`Klzw+O$N60Uwc!D2Hud7!;Q!W&zL zliwydJ5qWA;WDrEM1s}jUgeVrABn(|32%*1;yZ+o&h#)>M0kA|lX(rDV!jyXp>hhr z&myEUmGBM^ckdGXu1&bH(+K8!n0t@lh#}s`rW5{gv)9=72`})zH6sC+X*h31rrAuU zFG&s8K8xVWdSP%j!4=*lnnUn;FY{c2ThhXr=Mj9@OD!SzV*POHe1e1a`trgr7VyP8 z-lrB4JnVss2!6ZA>&Ifk#Vx{xmk?ZX+Dl$a_}C#2UPgFYgK+jzg41Rb6CTzu zoVk-D=AcAv3VQ@bchh?vN^YsAX zO%eD@!lOob=?4iEQo&)urI8F@5k44!j}YD*fxjj^I#T`{!lxtY zm4pw$)!Y@_RfI=EH#2aa^DSTe6v^-%;ZGv)QNn|vu(=gf6Fxn~gTE&{W~v8+@$$`H zog*DKbC|jF9F4b49mADqwCw`u>OUH7AIWgC#@bE~)JUuFK#j7~-NTtR#y;>ku0~j8 z-EgYL*A6dLqiaE@Aa367ZQRXT+5x(Ga!@Z1PIjPP3#_!YvR zM&RLjd=VL!5d=9dMlF4nU}RWE5{wMXYXl?1GKyei97Yq2AYKuSU}p@$x#^z%`8wed z-W(oF@KbM2zCrMmH-*O$T;-*{NwCmMeT(2T5fM6`@bT|Gu3Sj?WtV&~|KBDY8S@DQ zM|y)ikzi!ZClQQ{`DB9Mdd+@^;JTgOr-}%_x66Zz39E>BoRUcW>rg~oPi2N77lrZv zF2QLLJ!Tr=sUB~7kKksH2~Q_D)T8|O3BDC!*)s@#8)?i;!g=3$#b*(o=@p+%@U%B^ z<`7&P(Sqg@ek&px=Mf$eflCMvioo#G@HzV#>=#!`aSk(Mkce9(od|F7VSxskQoO2P%5!h^7i;22NnuO|3v zt#IlZf}=eot|d4>LTqJ(rycevU>)Hou8_B$FQVAO2RcJU1=>J(Sp?olxGVyHNO)od z-b8p#1jf}$AZL%keME4E*W8cw{C~zv-ooS$J#Z_*E#6`SHx^;cJW#tjoah z&?^k?Ah;-k_D>0q@W$*jf**dB=V4|iUmWsA4X(;qxp-LroZv@Z>K6nx=hW-R-2_KP zh^w6N)(+vOz~KR!lLzi4INQupt$*y}i@lL)yPxpM2z-F>6i;palHg(wJVeQ*_eM#4!XMA}(xb$$ zMouNu_e9FSKzQiL$oH%G;;TpnXG{1Onf_y>f^P}G<5qz7e@A!_Y(TEmI9nt5B^5;D z|6i#f1^mGDNRP3err0)0i6=TWULrK1yBRgpbT6VNni2Kac;frNCF{W-*d{H{(%}(9 z3+U>SYi<*365&x@Qs+Lg#Y!FiR(vj8SwcMRViit+!E(l1>O_BWueC+p`CIWm9!b9w zSEUt>kI#j#hThbJO_}F2oZ;h3{_s0oa+x~AB%%^n++TeSR=3jeYRUaD!A(=;_ltVg zAa(qH(H1+hEglff@VNc~vE9FUylU~FxW->TzU0pjiXoPzO8mbUFXO3({y{9md)4n@ z@mGLl4~vy}49OKQ_-D*5NgW_2Bv{)^N*+U<)+g%V<07ly4mgkv4955@Kb*TPb_stH z?N0)9_VQrtHh&rzOFuO46|#(_InjH;JSDe3Ap(ADySo2L@i;v5w?8R5JDC8hDIEzf`#AHWynlRJyENomgbX^xx5#^2 zh%%G^BARyk{H$gt+Ni~}IB~37PIqKyV2InwM0?k~r{J1k?Jnu@H?i2Cwo1DeUk)qt z>Y^mO+RwuptBO?cY0;!M-WapC{XGwc!Fj&qlBY$yWgSp`|0!~6?+*lQjQ(Xl^WUTP ze)Y^hF-AvJ@jpeMCI#9xv@fd0FYbENmfFJKpN^!UCY6*YdbF=lJT!_t=7)WR#O9Qa za^IRCcpI`FV?sf(dNL1NKu46y!?-R}zsZMZ)iSj^U%Y_FL(hmZJlZ}hiu%2wuh)db zzmtJa)Ar8&Hw)(IR=7JAJ?6ePOijKkGU?I>clyUb$GC19=g&ksw(s)uL*~r^yiwWD zi5slx>d()K%ns*PJtm1Rt$uC&Huhy`xt5Is0U&66PnA6}Vz{q;>I>quwObXxD4JWx)#ew))7A;quK@e4I1n+eK#Xs2(se{c_LBi_9D?en z0XU^@c}YB%`IAnze+mS$E$g2cFn#H+zFziD3>RuS{u0LesA}@E7>+N^cv*C@pAq^% zBC3KP5+HT_Wo(FzQ;i3U41ZaX>M>X}whGm624fd^Xvx&UVxW~)5r6}ewImb#W=Up( zzqcQjcN~&zKNQ{BW4Ky}|K=@tEinLWzCa6cjmUu+J9vL{_r1 zxdJzxidO#l6>7jMqG{7AH(Rn(R-w6FVHP{*!{hD3LT)oU`4wvJE24Az85O!lr&vEV zKP+@#jWMtEyW#G;f(q4WxVSv4BH)}!8JHDtr_pdkB*5W<0WO%|8@L!WT(r%rzzy@) zWWo(EGZ0F~aQT-QObGi+%^`$+Q2P>9&1Ew}{t3=;{VU5VgeQ&lHk`W(=9xZYXVLxT zM<37^?2k-9zkm+7keei@P(RUR)a8ts*WPq)c=&D1lB|RxC-w=a3XM;8%I6tbfC>xY zi0_|T+BMA8csLBL z@IzD&vHs{3PD#qe51V&YYp2f0Yc!Y%>gutgul1=KF;=v=`TSx}i#bf=Xwe5bhd0rZ z&j>>^+db)Lf1<=2;tFe*y5$YgF%4qJ)Ds()c*_dyoof6WnAyA3N@S_Kll9_Du~E`( zr;_7DHga?rCtBTfu8`a1mT^U!*Dx*fycSUy;`1CS-cB9z1sdWHSj#x|{y6a^obX1! z2?YU8l5n9sigO*Yg@C8pz?Dj&R`L;gPS%CWbp`=_ARZE6C_;qloN@eCe! zPZjxid_EPzVVipRUGYHhR6zod+-BCotgR|gJKq&;6DAAztH9O2)--XoHCf%QA4Nse z1U)>9-xKfRUG%}@&~))|aIyfM`UCo;oIP3fe;+NFtj51DUTyF(Hgd5Q z9BL4%i}q0}3z69;OdWL9{if)6YpxgXYKa>`#ZxSY$Y&b?WADH||{dT_S+#Ew4%b|{A*UA4vu{kmA z_y_JaIWZyrX@TA^n=dk=h9y>yX8_pzX1;D+Z~S3@oeUh*LN@#a?}PF4B$p+amF2e^o)r zw~Is{zrVCVbzCYQ>!EQ~h3EmP-V8Y~wq#f-rm}7!Qt+j!IQ~7Z|K?-;lM_=AkD0P> zsc7C%H?h>zz?988*N!-QTS@jZxWY9uREwsWx`ylYF>xTvy7oKj-cr%LTR2N0vfwqV z$=BHm;_PC!qbk-*D2&TWWrpIotTd44vQkaVJ4(evpoB}7Yv_*U;vzsp3^aMU=mx0V zKtC>rs`-)1T%mJzTOrz~@)Kw{cwSD-ju_3z)~mb~m>y+n>eqDitDJ%Ca)6hLDD@|iF@!EyGs0% zZyT-#vzer>TMY?6Sxs0Cc0E~rv0A)}$G|n>Ry@|OffhPhrL7gCQYN9Ls2{`~1Iac; zEnF+^3BIeRA2>`77K1xf(=yRLBP@9_S+vFpk9&Xb7#vzC1%LfVnK*_u<>Tw%sDw6r zv`%#6Q?3^c_-wIWwBhsi^(sI zZvcr6Rhu@5DR}&KqbRawtIQ9<28XKqKLpdCttvmna&A+BYQ0I^XU!=YvPryT`OAl> zdLO}Ad#*b3k@$`O`~B+fkAc~@)sr8i;(2N*A1hS+7Bpm@x^9bT-F*c#=1@{DJlhkl zkrpInq669x_AC(!;#X!cln_cna11&_IiXN3fH)CR>U-Rtr{-)C%9^9D-6{(1n1{t3 z#>i$tpVN+|m@z*V8O@vIkc1kp^NEl&`9k4*x@%Wa zAn+%gJJv2zt$jYIX}R0P9mzv+x(u>DFfUduzu#X^6*h~vOO9?6oBgf12%}#oMhW_+ zlkevzvApvSz#{LA<@O13ItHg&D|d(q$+~TILbU+D@u_HDM|UL@GERYRpSOJq-Rwlk z$xlVkc;LBfxp*ogQqJ_$9}0q~OyAYUa?s#hm9$4(-vt#Cy;+H&lqFchq~_obbvjo_<-ol$+PExb^|_h07ss7t4qHGQg^GoFU4j4IaO-)m*O`6 z5iE}nVp8P4qV75*KX?e+pvJS(saj1Iuuy_KGFAmcvRTB3VmNkLJ8jYs1>yLPq zJ$*!65<5xwd#m=xM1usX{xOir5~!H04pfTHwW-s^I^PaS$Zg}p8KkRZ3~rAAY9^^`t3AD%M!!&sETjJ?;D39U29gtbrSBgp|n1}P#s|C z6ZNO>M1$bB!xC~a^Ppk!`|7pt#O0A%_IxMqk3iQR74`Y0hmK;|hPuP;<(y-?rXCf~ zT8mYiYSG626t1j#EszMASqJyb3d|HqP6d9T_ADGkfU_vgVaSqug6F-e)ch0TB9k=+GcTMK zRx%u?akD0#6t`!yw#-;(LlxbSalkW=a~=vw%#%-K#nEM!mG%qD25Q_%k<}LYw870O z#Sa`&@(HwXu`ZkiZ&!;R+M%QY1OGscrs6yG^-1w3e_55f`xLCCi>uWBQ{qNH-giDN z=J5ITX>m&y>cYoEu>-CLkBP$}cbIIjxWRFUEdLc~0m|S1lXx^}@@4t1!@CVtYR^xi zf3I*m*aO`%ASN*vi#18HzRI-Be-%pLH@HXafGjv-WAm>n3I9~y8PV<9;nn;;vW(F` zs0@#*PU@4_8TnqrkNiTeLShLbD})YWQ9U})*)et7)VRl4*`#W8n?I_Lj*62_WYtkt zNQ0YGadcFBnVwaBG>Nk*mKdcaivP0>;cUl`j`}az#$JgYBRm(PHN<7c4KS!7Uf;`znd(8S(bY(Uweu|8PA^wykfvlEp)T@dK!|S_1}VS#UPK z*OHAg&>XatUw2HPIH;>Dq1c0Su2jmBIbHB2_iOx??%WYwAmk%5@mo_UkGs_9hB|J^ z=6PkNXFhxvTF!Opq$9jDwpz$v>`9{n?MHo_m)a0_J1`=Qt>o;&4>Kf$2D!M6p&*N4 zKvNPkM!B5xfFy|DNBBzr_VG{(PWsA3|EenWZk)_WMtB4!akxM9%TWAQ)L&Sws{OJ} zbF>}Bp8|HAgn`5oO*9Du)3adu)P+Dbpd58&jBM7+6eQMAowoU58H*rUKCFmv%*J#& zUOtdTd}q=l1s@~X#(+=wHJ{L~_5A+fc=<$T#dpXTqY2z) z3~|WmLnu?tPQV2666BmLcWPqVLs8L_lN{je$=Nav-3JF8lqj=9teM;nss}I;!sj{q zu#J-g;h!o?loL%m$xWl$3CaOK^M&~tbh`7k(~ovqVYY|rvXbRT8TzBzZ9a}4#rGl~ zRVe|v;=G7~8#z9RaD^B#AO>3a6AdGX0e{sP(d>W?e@4{!5;-)!6vr>c>F%ljl5+7` z%$j52vFeb)u3^>}2S_EFenBBagYxcrhB&VRhX#>z9D8HtZm1faB3p*3r(KGiM$z#_ zitHAJYuy-q9u=%6g6n_OmKo|6TmCWK%>NM4LtbEJvpa9v)ROhO`&|OQLdH{W7*>fE z>K~9FE_v$;*l^7bT=GT**M%FHUrTnRFe#}eCsTObTU*wTcZVL$`P*ftBAy3CY0aN_ z(gdnFBnF;O4b)77QZ7s!u^fn+#L=yeeEb4ER#<>VlQ9WCnmjhwk#pk7wRTjgms4dZ zxC+7$9HjU49P}bJKULo0A5*Pr*Om9AuI19hWtCu) z&2!JDit8K7d-Bev3N1pS7#-L&D?6YMAw8*YGGtnyoJ`QK=|`nBl69$-HESdvH(XB>OjsS# z{4v5!N)|Sfv-~iN{wXAH#baei{w-ylzyhWnj71>}OPsCh+DxgCwm(z8uhXcofa;P4 z*jq~`WXY#uk(l0GUWLbl&E*XZK7ke38Sc;R13m!*i~ni-h}8=9ht1^$CYeS;yfaw} zm<9TFatnC@3>FHnDK#GRtIswuNj~*L(_f#q>#e!TZdT7V=_~lyBws z0Y~;)P!gXbcW@(ocT0IS9xYqR@pZPcz34A&SI{$Ihql+LU9DsTq#tV~FAee|SX0*S zLu=tD>WbEKK~Aw&%E(CZOHXQN8h(&?0s(ByBUIQ7=m;~aRZbf@Ah3o@a7@!!`$ILp zjl3DhjgGdFbAhob7s?m#XxCOgX00ok*j7Hs;YjKruK{>#2ie-+0^i6p=@4{nBH~BY&Xvpp^+tn#|H!Jn@v-b#l zuTXEElnra|qb(Rmic-){zmt-S?edY`WlQX)FYPWnwfRz)!{#`dAs&GQ%sMCWn!u{F z&eviOqg-Y7klpXC&_yz_biliPdZWs6Dj9#7CLBLEqnL6S%OV6q!{?!^gRAg~hz9mo z!u-Z@W&X14ud&>RPRpsDi#Qewd&m~nH)>xG`KzKwH$_@xjBhi_2 z$uZaf0z&NXu@z?!1X1Jf9g4fdHaLW0jp2bYPcP05;t(Vuj5x%=(uiXSKai|O9N!tl z#Sw8(eDMXWgFs^zhPI-&%xbWoRL(Wyw)ix8*cCEBgAblsS_qACXZQ$&ZgW4iBL!PuI?ow) zfrQnPNywAzW%@)Nxl%Teu}BCc<4>PFd(h}UvJtE#jr+)Z>%A!L7bOPDqS*}%0d0eR z3e?CxvVWV;nBuQ7ghHbmUwcV5Gyx6p0`nCUCv>T7YYkR6Tq^tEG4fLBr0S|saedV9 zRb6qZycl7TYh5AJLc^qPl|4+d`E}4hZT@q_05pUVd2hZ9#5hjoNM>!wYX=DsNnLS;%tXH*z5)|Xb# zh3txM1+SDD)*GtTl`=C_C=vQ+yfnr^3S{H(ffcf$95wn%8S2lGx2NiF@u!nGzxa;C1`i!8^ji3u-SVdp}2SzZpGtkE6Fl&A0~RuvBfjMoz(2 z@L#W$1F#!$;9A)-vl5GZtPwRW`C+cKKeb6gC~0%v+9y@J>*Q4pmy_H$De%XpWrP3? z(;)8aWXC4swQZMgVJt!tI2oUuAC$xK>W+T$ z=A0eaSjB8QD(p29E%Kv9SqN=mS3*(AwO8;Rd?^ONO0cz`Y;Ap~tm|ciY-Bd@10Y6!aRC|yt8rfYc7T0(C`+U+~6-es)}Y$0X5Ns1x1EQ8k?ir1q%afNrbgZ<+g-j( zYK~1lRG)t`fYs0O4t)e<+h0h=7y`c|m}>6^mn`BP>n|j8o_BYFHm3FhN8^6SRaSeZWNpG>lQ#yp_ivxPs~eYSI-J%IJ^ZeRGTKm@-l8643Nv=YULA9d4B^emhYFGQn8wA6Pbk8!~E$E&Can zg;WI8L&dw^(gUwi;^mU{>ZATgmlf3p`LHn-6=Vy74yIsP3Rwby@fvxj&Fp zt-iihX7!mB^@-xb^L^rnU-5~wuE!)?lt8J5f%%=`hE5Se%C441J;@Jd!5-_9lcU3~d{tAM}c5G>yR(Ur4q`N@qube(VBNBAsb3@nJ~yjGz#^*wnZI zG9ldmy)d-3#&`6%ZG^V|tz?bqstJ7nLS!C(d?h$EmMEV*G1qb3{jxAxVu2ZMUsVGirxYS|q! zqaLcRcJ(F`LKssLqC<&$G3m#vHuuWtySY*2+$DeOe^#g=cR|BAqNd&@yZHx8)$2Z4Po2I?HfCC*-^eETUeDiPr~vl= z4OUZ|mDOK{2yXa|%;B?NfAGY0%D!9HzjTIX0WMyD_&4wheP+Pjz+W^<|55{+jn#;I zWE(Vj**&sTy@Fui=r5z{>Ka&Tp}xLX)|Jss+o)3RlMk>bf4)!mchr5RgXr%C>a+VG z;(oT%zwa-b^>~ghZM}K9yH5)chBe5akdSNFOmG&zW1an~QmyL`MWIr~{8skNtDNV$ zw_}37r(NN7eO%8?dOHErC8mwfaxU!4_&LyKog+h%$+qEr2E~`^ANU^K;~`)`ZSD(O6jLjMa^jaZFi~Zj^tSr^x3XTt zvbPhi7>F5A?mnxABx|@}s0#j0W~VQJM**^HcP~pTWA-aSN^o$!>wYJ1=FZ@R-^u@i z?^mt+F?X;-SaRnBGJ!wT?;e!Xxvr`Gki4GH`yZ0cbIjflYNb^lfOCWan9+p1zUkDW z5bMUm1UXWqW1s2&}Rbpu?V5e?gdQ$RAdQSZx@jq5063MHlMo+dh{prtD{JXhAU$H+{y2XqBJ zB*mT_RNoASkQ}QT4#B#hQe8bnc890(^#f#j?a4v7###euu(UFvQ`?p59|PnS(A-xI zK$%UdYJj}#rlKJB(qY!X+9@V*6@(J`oi7X4ew5gh0u*S9^V=J+@VCZAFptUsi1Y`c*f5{uOKsA{Al-_R!p$dE!By~_0 z?hKmOJ5=ZqnTwGd{0J;GE7bN!Z7@ zRoi^&Tz-yRfH-LAg_4AZ0GW<<0Y~p@S5n9T`eJ@c5ot_j9HY7UvP~SS3dN~@&&f1( zI$!qvzkAH!$dvc&&&=p^hiK!ovQ@T=DqPp&icq4;#g9D=p8CW@#&c48m|pXo{H?(N zMfrKDcHMJPR9pJ*Q*EiH+97`GAlDCyP%Ym?>mQpn)ixS0d&J{wu`s>eHy&HlvCm7p zvlf3S0P-zBF-4OZ+;OR*nL8Ot(nI{vvcj~>+P0``o|mn9x`?5lo6#){{Ul}kBE*!O z?K5u!&=O(ig2tG^Gd}OC+0R2=0p^;&AlvhK*9-EVt9OyU^iixUSAzIaY>P6Y~_H)%duo<8U>ZCP*S|g2unHF#W287iH zO=(!#u5{Xc-b&@Z2@c`2mLZCoqtF&y^8uX()zHV?o{-bkl);kQ-B{>AA*GRIt@R=pTJM=6UY^Q z%>v;D)kh@2n_iL~*=M>%o|?GP9THB`30f`Vtl>pvIs z=PZ(b5%+CJ%eMdFeT`oI{J-AU=w;3S>wS%0s{CSK_b7RJqmRi6sh^)$b$etSRJSk_ zT>S5=Zi}_*c0@D5bz`8qZ81!cZ=#vt1~f!3IGk9nHPnbVWvW?SASW7Hp*i78uX~)3 z1-7UeuScycTux|K7T|>L%0e@^PqiF3D~l*r=dLX3j18|W8mi~ULYV61#r2KzvD^`w zpStUeQ$DlM@c)_2ul5`Ab+guZ=l@!CVi_>(&G0hd7je1kO?ids24&}YsiOB=QB<+v z-=~TVW*MrfV$E9-s=$Q>HK<~jrV1$Zj-_?^*6xB+lf-dN5-=&I)rwZzS!Rn`F?Z2o!kU`F|4h+dth-M|JI~b&_{NmgQ-7T-J6rqI%*oi;(~pMmS4e8@gU=XWHdI~Sks|qY(D7yB2!{Qc z>i3S!YI-`zulnNLO5xscLU0`dZ8pJt7jM+4cVzQ=w9*f_DmOEcH6TPsD4wX>r?$L< z9m_4MQIYIuka1g)ydYB}W3w-U4X!g&IdB+S(7aDwS0Wo4oTL&bkCtehY%7wT|0g(o zxmb4jUueeVQ)K&eEWNnNhwG?=z!@}Cr;z5Waae1r5mVsnv`?*>A~QSg3-XqAga*Sk zO*i2Anm(1yPJ&8;jQ7HVSxGehgX|h}n_JhArYaZ6fa*C_2Cc8uwNqu2)USd8c<$+y zrFNsi$0n(~sWL4C6qOwHkuo1o(YPN`GpAw#V|NNy#bGB5TW*s;Y%S2#Ok6?lb9%Ul zPvT{#m>Sr_K@0-=mgq$L2uZVt*4TMz21;JWKireR4Uo7792CRV4*zI|1?vKDT{XM) zn=QI#_|>iN%I|RA=gMiaT^{ejG`B~9wz+VHcLZMPbu6jN0zNUbVZbBB<2WW~GHQ*_ zI8oiz)9*iI7i?-j^5FA;;uNQ~FzSCYE9z-uu4nR~wWHvN2=S$-jY= zy7Yb73z#_lzRc-FO65c(rRH1sfmNxdBIp<-RqXk4&6<_W-2`lzx}V#Z`EkTRh>ikB)Xg;OwVVwMU$2Rd7ssYF5i)G551;6GQ zs{1T?lP9xa^!T62tg3${vor;|GV9xOW!6rWHd|&(S5m>4L}7KsY$uA@uU(I+n<$6+ts~uWH44fl z2U_g`6+c%tJ4+I!w`DWU+`^{kuaHUkbE76sO_>Bg^SSWY*`fmTK>DTX>Upwl?Ne;0 z_Gc`WS_1A=gXdxJO4Yo1@_K`rq!M{Sx|Uq!*7+otT0UQf3{E04t6CM5$Zr1&sJ(oC zxSD^n9sUL961-DXNds{-xM6%)isM{Mtnp{)N370`TtU0 z%vc;n_BG|j0rkydc@rAyERop=ef7{1c&}|&W0yesZBd(+$W9UQ0CaTnA0bUZJhW1M zmTH=~ZK=$GsK{Rmhw6#y&82$y!TejO&zEWy<;c?WNB~r0hX08FXC#2SbJ=-C01BKV z0&dXb`m-WH4{WpuD2%B&urpl|u$i}zQv|30CcNWv`Wc+pn$@3&(}MzPa(d(rv-<7o zPo=WGRjtOC%9c0Hf|CwT)j>vDVJ|11%?Q;zSAnYwf1Q^T4y35`6pBYkvYLMUj+M$N8kS(yABz3i)_2fplZ-v~>bG17h= z4%_?;AZ~I|C&CxPsgq&pHJ_Utq*IU4oZRf{woPzeQYyGgJ_29Ef3A`jrf8YuEuqe+ zMXO}v7U)qt-RjUI$bA0dRuhCYP9ec<3+e$z!Gfk{t;QOsP<6%Q=L=zV7**&+7RpwO zSA)O{)n=4zcHYm$ad8q=?j_Y`4IC9;R@beO_dZ0_I;cfG-JcK&mX1A<;_R8?oIY^vTV1AjQ9J}85W=Na{*Nv_x`d#U7gGGMY^i$~rzd5Jn=Uaj9I zFIC;w>*NNX$j<7Y>t(2!?pvaRzJ_Uq*l~A5(L#8+)8lINC-~~2^|C<#i%8_)+e)?j z6Zo1Hs)X(Gs#*n$5?c6toqP#6iu}x?gdCrmQ6}qU1#;~(T+fRDG)rgrq6Dl>yZK`A zdx$CES9{82YAnK)ol)f<$hv6t+U>HFYP~^s@x~3h>-X)DkDP;+BO7G>^p{cuVij=k zGqK|JP>I7cFRLaSK6oYi>_uwJhnS^{&Yh*GE^3x8l=h;? zET!otdX^$}A6?sYmHVWbr3iC`bqj}Kv6-a{I7{2B*_&kDW@U>La$%Q2s5?U)|}es6skG3 zM@CKUwKb=9jgn_i?NMfGk2X`ALlZr<7jkM7pJr+gjZAG|_N=MRvY5fqQyazOb@3Wg zd#IV(3plkKsqG)jOf$dH&U5DXby=+q$4j(F)ST$v`;mI0w~e0YF4o~#FVaZRxO|fY z9WDYFfYBZYXx3~#rkEMx1ZRf(+eY?c_ct2l6fRQtZIzAM4@qIAshog2qKa*fDpnR% ztke_(Wqhy|lW(*FW4Q_supdWw&51#Cz+SFK0ys-QJit_LZ>AAy_=!u^uDP-c!GHtaii1GVO5=eI+w?}WlfuP3kc0cO(X%lgZG+7$ zX2%=GLd74VW^M;l8BM0rIcj1gL`{r@sEGk=>cWj0oA1EfKq*#pC@l1y9I5uX^+%CF-sOo$T zWX!D^4eX3Mntv{vJYWvTI<6AO_>$@14D|!yme4>vXwWkjy|9<~5N*ZRo=WQV-O$o# zl|e+pWjGB6J!MCwY^+ktbz@|eY|sX$sIX;&cv%6STEj1aUl;3l*t+6*a=erHh4Wau z)WC9iao*GvoUeU11$IfCxQp$CCRsE?#MskPLQ?;>cf-k$3NMXbZsPbL55eHjBMdS&QWH}#iWs=nGI zFTd$U9W;evS})-g83dI zjbn+GjfD$rpZXq0ao zuiAVJJZbzfnUKRJ5n5PZ$9M!iMEbyD-goiUO~()q<{ce9VT|f_Q1)*I2jk@Hq;*ay z?_-F-4l8=;L9Errs`7)fhxMLnR3Sr6$StJi8A1J5=)bk}-xTn$yDMP)drQ4op%1*g zUmgGc6K z_4h;amS0s#{9%2nr^8{{r><*t$3%7I08P&7rNgpgok=ONy$v1tvwc88Jf!MJhh>8c z5F!Ed4f4jwDF_-k(t(Kwb@T)#?NjnASx@Yf_70mItR3F8`$}HjhG$Js(NVbbp+;`+ zAXG#G>0hrI{nx<-&RadI^*_pH8Cy|DL@Wm*80tH*L;1(JN0YXJ@NQZee$)d+IhpykW5i+RW@ z)6zsR^=sKXEZs{Z(j7l>-?a6O?A~$KS<<}(1tHz793K{4aI2>cik2szvrzwq;6|8Y zSLhdfBQNrV{v9pOEALHV%6nX`iobsF{Yxrk(|V-auxvj9gu$Z)ykvp;du2qnzg-F0 zzJRj*V(1tU>y2_;k&gXASERS|M0&O-((6;C-&_TeKL1|}$^{rPO7ETL6Y0^3Mx=As z(8x)>e`pkhUn|n1t2;}iFZ@5z(y&PX6-_-$q@UGNweees^aVzw>*Wxpgcb-sd$tzo z+&%r=h;%Fj!Xn*WIZ>oTc+|*y9+AEffx*bD5zt#pvJNwK;k_t@l}j6H3s8x^Hd|JjspPf;Fo%qMP+ZL^n(i7K}z(bQdWF*$&aY?IJC<7pjCGWdG*pitVTm zQDkeMYxA}E7}zplhl23VQ6K*RJMDYw%O4=Y$sDi?gTF!jSLnYrBzP#$gy&!x0mojd zZa6NlJ+C~SuVx;X9j~8tt~_O2DO$#Oc8THtbi@m4iF0vwH(JD+^)1(g;UrhY9+39u zu82LL?)XvmY3+*Gd9WP0A{Hm3e@4WrH9yLhO?G(_mS&u@h3s6FazbVW*dkZRsvaj~ zgS*E@oFsl(tj4~sN|Ef z30H}XTi+IP@~U$JTe(3&#-$hmJKO}Wx!rRQhpGc|I48DP3F7_A^rj}X7{>|fhdWMw zEzwPN1zKM3I*9-}!_|$a=zgI7ghzd-S;>%hF{XT5qV0WnSlnmYSRWK{T z_%y&`0-pxGqXkzP_^eREC&RxBng}Pk*_(vlC-fSa=n*-D%XXPn%anuT145eTqW{ZO z>S@_63m%L-HZu*m@DsinbOqv1x;~7<&n4>7(=x3m+9w#_gg!esdY6FP(GY%XMlwIs@LTm8azeMk_dc8itXjsxTp#+5?U|3E)NWln7|GH_=so zjlUfmj*&`cx-{+-rFt(d0WrLAVx4Zh(zxsoe-$;Db-Lf4 zepYj1{;zFsfZBoa;0YY`9Gph=4mN?b!r~VQuZvMJ%TQdT0#b*8>3!Hlu#7Wiw9-)p z!H50(q-tUX8>E1VO1K1KUqCOeRk{_-3cV9V2!eW4qEqnCPZ0-8N2CUIj}>eKL)>61 zcrW&S4_m=2!WGumG7JlLb+12oc{`9~D#$M@l?u9@Sx3`hDAlazalIJN z%;ZJAR$KhRp4MqqD<+wP6Sl^Zu_CJ^2S;!N^L?PS4OTk!VuP*oFvkSu*bp<_U<`JsNaHQ_YsP6u|$5zx-4-JmcNSv6g+3;KT&1)6k>Be=1e|xL|gdrCihKFT#QczC$ZEJ@MkqG9^JzW#c+) zR`+g{1)Z+LwZo$B+;Ca|3mAF?&*4y8z-h?0*m0efADyPYi3_H|=L1|ZRW*nY zirdd(jnfh|Lj(i$Kk;+i@f6lwE_cLFoDDMEaauxzJ8oD1h!1+)aR+j_+;M~XN$yyN zpDQ(Y1QV}}57wnxaV|SVwzJt`tAt=Pj~#~8pA&*D5y4UOMEDPQJdvseZqLHs6pc=h z1wMHePb^H-rsoJxoPQRRIS-G4BCoj<~7^w999Je%MhwvMLa~yaDL64tZo9^2n6TT82l~0SoOXFuhKw2Sw1aeo{pu*!CBA zVj_5=>|bJwSIID2+y&~zj$#eAs1f?CfM=74LRdA!C;I3HfNlGLj6~rk27Lgdz_II8ZL?W8|I8e z45l^IKds=znHZ{Z_CXO?ZuyKADpp&e;$UKHnG)=tXJQx8rUS-oBF-|jQ7Dcf%l!}+ zI>Gbr`Ngdv)S$P9-2F9b+D2yuUFc}3I`|;iOdyj?x_EU$r*_~2VEc*iVAZBb{v3fr z4sK*stW?O>%c@LhHm9&mrP{&Vgr(>-w-=wcgKe6xwgb&{Ej}EtfC#}~dj&GMzuh+* z)Tegvf!K+$@DX)t;TYyl^+2s)C)^nKMy+5*_F-<^CmEX=oXPP~2DM^{A(#q#Q#ZsN ze>+jGZK+K$#a$c{tv265f&Rd3q1a1p^bI?}48@NH8w$0q9ZbJ^iJcX%v!Z2Oq&U`- zxXuAA5F1lZaLvU-8~B42*>|*2M0<)8d(#nX79-F4M$`^AYP6Vh6#bkS+b|RdQzkv7 zAdA*u;GmIzP&;@Lg7==O9egl(4KTs|UtsIM>I5%tyOMF2h(G;Bb_12bED*;U^a2wg zT^oTu;_9P1!NCZ5cu#6D8;@sGv4YqwQ3M3^ZfYW016 zCZI=$XVW3;iBo$yFGA3kQhp^fE{3SU&qQO7W}6LNASe*90}Oy9&IMu3bOz z2iFgQfvi$5)eUC%*pPx{E-2bwjlKdaA7Ty07y*70B?^^zzwP7L%S=K9M2wn#sSec* zrXzY{Tw3tryd8^Ox`WS(A8ibWoT6>m4LOC%yx+PqZiHe-NVnJ-15FGIhKQkP7Z>;Jla0~g(-3c-zI1`jwKrl`GkvK^&vFs4!nRl0CiJVlC542KNQAEk ztTBVk84VXK!g|BYmOeF}D-O{dvp)wy1p4}GzR@@vV^7!(j`qfjqPO`;~2;+3^z^Fdeou(A)W>DfF?+3So~{Z zfI16Gpr(w)u!Z6us6F+9_4BrJBi%&~ap;V}UGH=08;7A~Gk^|`)`uxh)fhJ0sow04 z6kw+q7VJ$a_U07lxJiBOBR3VWGs8>Ge_eMO=Qq0fXu1ctf%lVhB+m>xf)y-5Ij&`q z(_!3TQ|oYD&e>7s)(Y5RU|N$p#-tuu=cWSIAyiFjVfdTmew+~CeC8WSaTs-SQ%WA2 zKEqU#|AAW#U}uO#VVuzsB?r!{`=5Hixke zOre6Ydf?`ShX$}S-waJ2Iyl@U7jJPJ3D_z1MsAErJ+;+M1?-f0sf8wW|0ixLU}v+J zT5M7mf8nMAcDUzZnl%Hdc_66GyWM2GaJV~SlINSktIFL}zz%IOCbiV0&fnvv0(NNl zF{x!Hb=qDx6|ghLOWkZzH}6a6lt<>~;DuA@CGRlF)%)GTfSqD5wcMnR`O-}V?9A{| zD|9MG6e7*<J8qhMz~A8ZtK_$+pxUp4ywI=dRU zD5|wTJFG0SI6EqS6RwD;hzO#HO2PVxriMytM#&1RkO;(wim%tDE2SVMntJGJM&&K= zwW6D~*2SQ*8z?FzmNzk1MO_RPl?s*g{Xb`B6|HXf_s);Q^PK1FJm+)HoH;v38Z1`5 z!IpbVLkYg+Ee&ALcuRV*_FaVt2;%EvQ#qT`SL$QL(2jW#--+OGj`cn?ZVEFnGlvOB zUn!VO^)bR!eP79)OmQM0h{qo~$>$a{rQ$=bRf2HpH$op2H*;fdeEEpv9(%fR%gCyTxP{D!%_8#3m|r$#CA0HItoZgJ z+c*UiLJtj=rfF{3o*67{>10)hHNL-$FBK}K@jOjF=swz=YEvD?_=-t8p|wsSI@2LQ zaN{5E4-h))JrGC27%4I7RwEbz5z&*mFE0tWk#XE=D*l&F-XQCD-#ZSX1KkJZO02;s zQwA44S?3dSQQ3ztI``p=zuku~{Um@-GRMZ=gvAJ|$bUi70sCLKyE>dQ)?u zyXlxLZ<0-I!0I`+Zlk;D6OL^LhPe#5#lYU@*lu8FtsLD8w1#8*f!S*WlB@;#>Jg6C z11-P8Q3ud9>og?L0`$T|gyq1EvnM&f0O-j&W>Dc_Ok74$t}u{Q6alRNE)|7*6}ddu4j6;UDd!DL1tr*{*Ll z;iZA0g{>YVb+_WhjxyuLJQSS-UDW8Z1iG{h0-cuP_!J$cvlVcs)>+0i&N6P^;w)oe zY8lrePi>v3HtT_1=a>W7h10yUTYxs#aWrSM)!lTFx1oZ~xGVp}sYO7)kw||hFneFZ z%77JDb9On<4GLNXlqqN(&|L~@2YN?ogH1p`Dc}vS73e`lAQ!IM!pLl)6{zCCc3=%k zBQ612ev~J+2k0fm?@FNGDh6tRUK~IMjsyGHlduM0Yn7x>OiE3nm`o@QeouRu*Ca~m zUQMD6TT!SlD>Ye#0zU36;5ugk7Z*7T7?@hXIa@I!P#R4E&{hR40=m74H@lrc_b6x? z&>96T2U@S7RY02wwaTVC;JKH$o*ihhf;IuIQqWeQ4h79+nD1WZvV}m)6m&b#N(C(e zTC1RYfZ7$b5~%7#4bWzVdK{=V=L)yh0K8B^n}HT9XdBQn1zm^SS1RacptTB$@={6~ z$sa}Eik*1y?UTc3JPT@m7P&~F=&nKmq;CF=9tw%5Du74|0L~Oj?ka3AME`GAk^oiJ*sf>*IFs0WS7SG% zityodBmttT03sy;;7p?Gu0lDaHh)F8bQ6fG0*IslV09*O{H{g~#5NwF8G#8zRRcuQ z0B|PZxT{bPDTk5-h^hjJqyWHEp!ukbTPS8QeA9rkk~K(_=x5@5LmTeW@zdK~X*A2%U(l4YBuDM<4RlN1uuZi(*Ravh&xW0?Rh@&ylC z*1?Y6c8el3Icu+4Lz7pCb2^(k4ogydS>`yY-xylt;$M~K8@}NlzRI9QN#VAR=~a;WnX}&UZgBiw4Z*|1) z{_(+n6OPLIbiDM?z}BCYrxE>hewv4TghmC&FPun|Cp?FBdIl$@i4&wjT~6^g0+?K= zsp0&i@ClM14sAIXC53k33xdk-e60QIaqbrzIz{T)WgR}<=L#RRIOQGhi(GNs!7-S# z5}kjFLSxeN^)$Yr@C-dYV5#dz4*=}NaZ`@E!dfI2r0`o&ObM}y$X7zRLH?^LYom&gTx``u%-5UQps5e~?#g{nn=193NIqh^&(9e~2H*p2 ztE4%=5^Q~Z(0}~A0Ee!T|E`Mv_}x7GXJaQxi>;VGXq6>ee2I{@R$@_=@2Yg67a)9U zf~6;{P#Lw8u~Lffe$a2W@#+r0lAyg&U(?Y$Gy%cN6pG@}K0vWC;juo?-~|;O>xv}IO2S?boqjzXZ3*PTBNT~!>y(K9uZC2wmT zGJrR){2d)fj9O~gB+46#bKM_J`W{VL$w$keZtXm-3^}J?snD(vbrY_#c&E?MXw^-^ z{1JxF39tLHi9Kxo6e+|?EVWDU6Wy>U z0ZqyVm;Q?`L8Bbb{^gHGyjNf%`(N}5Ze5R~7+tJh%F`Sb4b?lcg}uGJjiNkwN4Y;w z=qMku)T!u3dsyC7$vF78{!^Dw{J+0Td^1%Vdbc%bey24&Rsa8O4Va!&8Sn;y0TiWx zUZbpC(#r>oitu{lqta@z>?-R#O$r@-N~T|((zM<#btQ>Mce-QWBir^27hY zgMTSLcbQIaom}|Wj_dSR-$9VaE9cAc&nNBoAV9bAyelqr+F;vsyrF%S`OlEN249dn z3B56%V4JuCaay!aZj^mE0VVH&T@R)aD7MrY(jKwqIvem9ZXXwH(;mZyfPok2coLK{ zhO&!zx(eZU84RFUeQ(cVuSVnMd>My$Nu~kq88Yp7q!oN+-3a5WV(b!|J`?ZJF0r(k z(pj%|8dsqqM$+Jd5d~{H7g*{nylKA9&dicN#HR&{W=rD%>Ss%%06b%)u>jFA(lDf+ z6C*teP!l7K`p+i&J}#a3&l26|NUNlKZo!de9QP!J!I6K@kyZl4%$1@al=#P7?5Vk5 z3x!7KMbY?5-yyU+0wRfJWM^brmIfMUTP%p1Gr>tnf@EsCF(Gw%igBSOIdyr25N?c4w`61( zpPZd$j<+l{v!?f?pF5b7&FM>RC(EQ`T5G#BMj96;Wo85zGc3uL_)MP6UH8l>3C8&3 zr1&MAJYDg|qd zlP#G8GmJ~kODs^GotU&J(~@q?N=eEL6k?FwY!n*IEHtNQ*eX86`^@eWEQ>72Hq00; zDVC+#TsVWB{zyt0M;dA}8H%Y48VR? zlWo#0&HO2-7UU-Z-1tmOf^k_=dRB%d1BKnL5{%}>=A@KBV|22`oMACq(#^aks9r2f zdFB?Sqn4B!Gom`+LA-6tUa6br$tO~?P|c}JQ0?g!W9lO4AX6Dg4dt>Z*}Oa%wU?Z2 zj55bBv7`rpos?lrv8>26rlwecSQ0W&UZ^%Bnui76rX&naOifNmN?FWGK9*L^k0Axs z9x|C>%z}cmQH2B<7iMQ7KS&rg9cYX}>Zpd{BfvmYFfM`@ytSE^Ez3qMc?o2*c+*H{ z{XUUWtaB+*6p=Z_oSeN9MMUBW=1jAZijl|eZ$su3Y8A%#bkrVloMH(yPDUF{w3rik zS+#3?(aGjac(Bx%XhGh13rtPP$V|^d<0M5P%3|C2iFC*?b9U-dUV118>PO~eSWn1C zbz4%9VR)65hMdCn^m`qS?4`on^apCjk`Wjf$YKvjZ;9HK>{O+pyQ_f9b0sq#lzNMU zRlW0idK2Pzy~1sAq+&ID`6!oBs(isvfY5*1*&Wic)M5chzd7D1s6=QQJev=B}kaUX32r$yaI z8_8+0_t8Q*Elr_4sU|Xt6Laqq4CAySl}1k20uKY65t5o5KQb#bDLEr-ym=|Q#qbFe zL8r{@g$!NAtC_t)~#km1e;g07J?pD7JV4d*UEMSc9>ul1PkluEq7(! zMwNfZAz@pVC;NWSNMVadGg7m2% zOF%Cs-tbvTixclLiMQX$3m%u0Im?oPUTH~J_3Tbwh%y?^UT#iH1DEvLRNmggU=WYvS5@dF<8T|GLLqvzN*}$z*$EVSqLV($f$9EQs~pvrjEl~-sXZwMklSXBu_@0o0zgVDaA68x4C8~e?;`;iSrbi z49`@Zm~?YW28}kBggHr;F4*NXbpv1NHl0R=AGD<>=p!hg^c3QGI zBXKsyPD=`PC2n&9_*4_Y!E@;DWXjCMy+Y+Bg69UFqCWyHnC?B6aaoHNk;_~^7c%t+ zG^)(#n51M2l?8jJUh349oGgJrcpjFWw}|?5?Rs_y-gO~HlbSMl61kprJSq8m5`EBm z?h)3EMSV?h@p?A-q%^KKmERh0NFtFS0$rX3?9G$Xd~f2nseC)2M}Z(DB`Gq+1+32x zQc4$+SqnPZNF!Llw*7#X=JAs4yC3irzy%Jys0erfYF}bHyR=Cn#hx!I#^ep`ZM!s| zXQ2i(XLDb*fptBt(!(~~qdPV*tCPO79X+NHzi3zG<-&XN<%MkS8EFo;zp5SGxRF(y zk!EpvLp%DqjjaD!RX%FtJv%KM+4{4p{jzrS*iGygr@Ysud-9c=*n$Ster`K@(97(L z2I*-Mv>K-^MoTlTXQ8u^si1uqStLbM5>{a%29v(7cWay}{(WY_ZCrq4#LF;u} zS06*5Mtp9kZG3-&e-E+j8(Zoa!wh#Z_kyirg28pLSopE+tEGnUL0zoN1Y!M5LAW(X z5W3G5g!h)QZd(mg#j<>6-fD=j#>NUl48jD2&IsF|#CN79C@nf-i6Fe3EC>X%K_^@d zrn2=N^yA8w3qtD(bcgPOFgRKe{+TEU|1(PvUU^)BZ>#)cn8k$j6NJYA`y)t3K_Hr^ zj~jO87j)3Ky0FNH;t|nj(p^KpqpYM zl1x++cg2xgrorD-Ec<@;Am91jmE?`YZ6t0{(q~0gUsq^jE+m$}*H?9pC*QQC7U`5W zZMh6k-NZaJlzJ2MCzyAMMFGZ^UV@FtrZ0(_+ODoho=ofdTG%Zky_@@wOF zcq^vt*T@axmc4%VoZpuf8=lk^uK&TPa4U)1c$F2q$USsCl6Q?FNc9@~lwkEWR!^|; z8oNm_?>g(LrF>tf1Z!8V{;sm3bFQiC^rkNSrfl`ruV+^XA;@KjP+)ZsSiZt^;NCXSSMPDTh6Dk=%`+*(XG7 z{FxmGjLrK63FW+bIn?rgMaMTcEPHyDr{add-Qe8Ll|kT zOm6(bqFu?2R)VM;B9^wY0wPwovRwolTUiyLG4BT4sJ#90+8u9J?7HpulTG|7oL5E; zY3;hf`sw8EIvzQ|BYnii8|)DsOyu8Wu{tX4n=BhJ`M^zAeRp|@zuj8V5cz$lh%>$R zaZ5(Bbny?E0x@^o!uNRy*$2d>@(Qp6z`EyUb(3=<97A4xWyx2vVl0Q4jkmVCkppea z+YJtswz07kKhVaWKs>gwjq>!G=dR5q5r6TUU%Mq+^(68#l=FTi?#V+L2X{y41|6S# zEwQ)iCvi(T*R?YE;=2+5Gq(D%M>R(wcrPTNx> zHRkBhbwk!Xym5cTijRJc$zG#2bmNcY#B;=bz2V%zFC)JCOVT+A~``^x!}_o zbN>~wA}~B){gGaZi_I|4Rudrax55M&C zfrzAjbE3zm4^pyWZ-j+L;?_Pn_jvHZh+U_5&vD`kn(7-5lcPJrAy9;9p8qYc zBld>(JG%0WS~|rS$UoxBpDtUx=(E#U#Hh#3j8);H(Cedi(x`X58hnyAG~8EBMYX}`Rs%w_jcc~ z9`P=MY1?{sN0R&Z{RVNVHxzpJrvJD)3Z^v$5b_jE8w!}o0Hu8t?~a@o*enKFFN&+G zSbAq!c>;~A(g>SxVOEZ-{s4Qovpmk~c@U4Rh+DOo^WM30hXT=Z5PuG#4mu75p!|vj z@2`lgL1=?41)}95{yc)V8jp?$O3v_H0^SRtuO%KVkbR=9LnKctj1pRipc3;zT#qmU z267;@8KDHB93d98C2~{yNbhE92pwuH-{(Qdjwrj@uD01#cHKb(6cXH@c#f`2#iR_QPytH@Ocd z>iDur$pI#M%EP;~;Bl%!wM6!|A7D4T$q%ueJzyiqQ`SCB5&_5;U5bQ8a6v&h3yvzm zSuxHsB3cf7p^CvDzka_$*!Q0D7(Ys5KXhCmiDv_W^a+xV=*HEB=o&Vrn;gpX66UuXGzn?y?yF8UI#tcHa(n3ijDd8$RtP$RU)9)hC zf+y7%(cVM6451Qn3PgJ!@qZxX!iEFE7ql>hX$Wx$GC~{ZyAg^IA}Ik}Eyx!do0YdV zXCg#YTie}4h~{i;kz7?N9A|+$ouLAA7C70Xt9^l2!C?wSbM}B4vsr!*dD0|mB#Cg8 z(xS@_`~zfa55kPunIQ`n3=d06%~-GyuR-Xknx4RGAXA0Mm3exqCOje?VcmPm$|6Y6 z5v4$hUUr17>?zNAh|<{Hj_z5j5ei`c3xxgb{Vr&mZoT9HzKGHWxk9zFR@Jgez2rIL zNk0xcL^l<_uG9Dbp^J74rGQM`y$T`W3EKF;$73c94Z{N_BwcobYRY+oo$4h&s*65~ zNZnhu;NJ2bjYsXf;K%(Nq=tVGNvomf;9GRYs@r@!Mqp@IGABm4232Q*;)OI@Yi-@y9!mlp+6X}<+Jb&<`0bWxd4 z08X%6g+!lsj@g_#q30AGPe8ib>qLX5)EkDLbL>%Hc?R!-C4V9td7f1`WxdY-XS;jO zvycI*-NHYS9dv=c4cXq5M=eVBxBfDNpX_fXe$?;smHeo!HI!biCR;`>Sdg?d&AAR# z06i)*Rc2ItYBJtKS*FBKRMv#c{(!$+<=0->Rv>GCngqO;JaGhGWgY<5)Q=*H88i zrRMAFxX*#Gl&qy`St;?EQz!*oBon2|P<;Od7BNuv78@?G1q5>%nRTH2?nG)3lNy!E z4FaT#{>P~}`O*YCbhWSaMDR^JkLvUXH8B@i`XG7h!zAi^@%K&GRdel4ghSTUTBp;W z(uDuWCJvV0;NFNoD&91;Gvx&uU6e$LN^ft<7krcbTb;f_qitdV{&GI|rcPBO<@P2D zReF09O=P0vxK6)Kuf4>s`=gHmR))&n%rr!v$8QY#n%HYYWIw)Yc)Uq*a|Iw>bhB~x zqFT_%b{p~38&2~jc54WX0uBj~U*I;ryrkI30i^5qY&eLg+SrWU8v$|(@5Nb{)k*`T zt9@Pyh^FdzUSVs7%JX@Ttoak!k}J$5P#q=KT~X{O13qZK7&JB-;scHwJ(=q&`dRFQOBBT*Vxt| zRmK0BqSEj?DigpnH8+q-^EEa)SXDW!s;mQiFck->Y(7sao3FEar%L*DC6xfc2UQ9{ zGwr>g(|_#d(Za05<*B@m8&#FM-%-)F+^d6x7WT_Nv^#(#l>1JZubJh0jDA`NH zXHF&9z_PB5u`pSARdpQknj7pZXWR`I5dQ^neoG2NJOF{Nwi|5NXxzcI^> z3tk&+&=r1*eE|9x8p%8{eRtA#1CIp%Ob5JFM4+oqr8OXaPNi+W#YT;hy?v-r#`;Yj5De1#$Zgwsx$%z&F z=uI%ad8?aVO9rs~4OG(sGaf+kL#;5})CNqVbU#9vw_4R;5JNt90(Kxx?1XawcfpkJ F{{RxI^>zRN delta 195953 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 z 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
K%-mMxg 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