From c293288908172131b493148de10e5e5abe867ed5 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Fri, 22 Sep 2023 15:08:31 +0000 Subject: [PATCH] QuickGUI box selection fix Co-authored-by: sigonasr2 --- .../ChampionsLeaguePointSolver.cpp | 501 +++---- .../ChampionsLeaguePointSolver.data | 28 + .../ChampionsLeaguePointSolver.html | 75 ++ .../ChampionsLeaguePointSolver.js | 1 + .../ChampionsLeaguePointSolver.wasm | Bin 0 -> 334036 bytes ChallengeLeaguePointSolver/{ => assets}/team2 | 4 +- ChallengeLeaguePointSolver/main.cpp | 211 --- ChallengeLeaguePointSolver/olcPGEX_QuickGUI.h | 1179 +++++++++++++++++ .../pixelGameEngine.cpp | 4 +- ChallengeLeaguePointSolver/pixelGameEngine.h | 2 +- .../pixelGameEngine_wasm.o | Bin 187082 -> 230341 bytes 11 files changed, 1563 insertions(+), 442 deletions(-) create mode 100644 ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.data create mode 100644 ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.html create mode 100644 ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.js create mode 100755 ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.wasm rename ChallengeLeaguePointSolver/{ => assets}/team2 (86%) delete mode 100644 ChallengeLeaguePointSolver/main.cpp create mode 100644 ChallengeLeaguePointSolver/olcPGEX_QuickGUI.h diff --git a/ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.cpp b/ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.cpp index eba8e7e..b1d0052 100644 --- a/ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.cpp +++ b/ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.cpp @@ -1,265 +1,312 @@ -#include -#include -#include -#include -#include +#include "pixelGameEngine.h" +#include "olcPGEX_QuickGUI.h" #include -std::string slurp(std::ifstream& in) { - std::ostringstream sstr; - sstr << in.rdbuf(); - return sstr.str(); -} +using namespace olc; -struct ScoreData{ - int difficulty=0; - std::string song; - int totalEX=0; - int ex1=0,ex2=0,ex3=0; - std::string str()const{ - return "["+std::to_string(difficulty)+"] "+song+": "+std::to_string(totalEX)+" total, "+" EX1: "+std::to_string(ex1)+" EX2: "+std::to_string(ex2)+" EX3: "+std::to_string(ex3); +// Override base class with your custom functionality +class ChampionsLeaguePointSolver : public olc::PixelGameEngine +{ + std::string slurp(std::ifstream& in) { + std::ostringstream sstr; + sstr << in.rdbuf(); + return sstr.str(); } - friend std::ostream&operator<<(std::ostream&os,const ScoreData&data){ - os<>p1; //Index to song followed by EX of song. - std::vector>p2; - std::vector>p3; - std::setp1Picked; - std::setp2Picked; - std::setp3Picked; - int totalEX=0; - int remainingA,remainingB,remainingC; -}; + struct TestCase{ + int p1Amt,p2Amt,p3Amt; + }; -int main(){ + struct SongCombinations{ + std::vector>p1; //Index to song followed by EX of song. + std::vector>p2; + std::vector>p3; + std::setp1Picked; + std::setp2Picked; + std::setp3Picked; + int totalEX=0; + int remainingA,remainingB,remainingC; + }; std::vectordataA,dataB; std::vector>player1Score,player2Score,player3Score; - std::ifstream file("team2"); - std::string line; - //First two lines are garbage data. - std::getline(file,line); - std::getline(file,line); - for(int i=0;i<12;i++){ - std::getline(file,line); - int marker=0; - ScoreData dat{ - stoi(GetNext(marker,line)), - GetNext(marker,line), - stoi(GetNext(marker,line)), - stoi(GetNext(marker,line)), - stoi(GetNext(marker,line)), - stoi(GetNext(marker,line))}; - player1Score.push_back(std::pair{dat.ex1,0}); - player2Score.push_back(std::pair{dat.ex2,0}); - player3Score.push_back(std::pair{dat.ex3,0}); - dataA.push_back(dat); - } - //Two more lines of garbage data. - std::getline(file,line); - std::getline(file,line); - for(int i=0;i<12;i++){ - std::getline(file,line); - int marker=0; - ScoreData dat{ - stoi(GetNext(marker,line)), - GetNext(marker,line), - stoi(GetNext(marker,line)), - stoi(GetNext(marker,line)), - stoi(GetNext(marker,line)), - stoi(GetNext(marker,line))}; - player1Score[i].second=dat.ex1; - player2Score[i].second=dat.ex2; - player3Score[i].second=dat.ex3; - dataB.push_back(dat); - } - std::cout<<"File Contents:"<cases; - for(int i=0;i<5;i++){ - for(int j=0;j<5;j++){ - for(int k=0;k<5;k++){ - if(i+j+k==6){ - cases.push_back(TestCase{i,j,k}); + void Evaluate(){ + std::vectorcases; + for(int i=0;i<5;i++){ + for(int j=0;j<5;j++){ + for(int k=0;k<5;k++){ + if(i+j+k==6){ + cases.push_back(TestCase{i,j,k}); + } } } } - } - auto ChooseSong = [](SongCombinations&combinations,std::vector&dat,int index){ - if(combinations.remainingA>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){ - combinations.remainingA--; - combinations.totalEX+=dat[index].ex1; - combinations.p1.push_back(std::pair{index,dat[index].ex1}); - combinations.p1Picked.insert(index); - }else - if(combinations.remainingB>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){ - combinations.remainingB--; - combinations.totalEX+=dat[index].ex2; - combinations.p2.push_back(std::pair{index,dat[index].ex2}); - combinations.p2Picked.insert(index); - }else - if(combinations.remainingC>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){ - combinations.remainingC--; - combinations.totalEX+=dat[index].ex3; - combinations.p3.push_back(std::pair{index,dat[index].ex3}); - combinations.p3Picked.insert(index); - } - }; + auto ChooseSong = [](SongCombinations&combinations,std::vector&dat,int index){ + if(combinations.remainingA>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){ + combinations.remainingA--; + combinations.totalEX+=dat[index].ex1; + combinations.p1.push_back(std::pair{index,dat[index].ex1}); + combinations.p1Picked.insert(index); + }else + if(combinations.remainingB>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){ + combinations.remainingB--; + combinations.totalEX+=dat[index].ex2; + combinations.p2.push_back(std::pair{index,dat[index].ex2}); + combinations.p2Picked.insert(index); + }else + if(combinations.remainingC>0&&combinations.p1Picked.count(index)==0&&combinations.p2Picked.count(index)==0&&combinations.p3Picked.count(index)==0){ + combinations.remainingC--; + combinations.totalEX+=dat[index].ex3; + combinations.p3.push_back(std::pair{index,dat[index].ex3}); + combinations.p3Picked.insert(index); + } + }; - std::vector bestComboA,bestComboB; - int caseInd=0; - for(TestCase&_case:cases){ - bestComboA.push_back({}); - bestComboA[caseInd].remainingA=_case.p1Amt; - bestComboA[caseInd].remainingB=_case.p2Amt; - bestComboA[caseInd].remainingC=_case.p3Amt; - SongCombinations testCombo=bestComboA[caseInd]; - for(int i=0;i<12;i++){ - SongCombinations c1=testCombo; - ChooseSong(c1,dataA,i); - for(int j=0;j<12;j++){ - SongCombinations c2=c1; - ChooseSong(c2,dataA,j); - for(int k=0;k<12;k++){ - SongCombinations c3=c2; - ChooseSong(c3,dataA,k); - for(int l=0;l<12;l++){ - SongCombinations c4=c3; - ChooseSong(c4,dataA,l); - for(int m=0;m<12;m++){ - SongCombinations c5=c4; - ChooseSong(c5,dataA,m); - for(int n=0;n<12;n++){ - SongCombinations c6=c5; - ChooseSong(c6,dataA,n); - if(bestComboA[caseInd].totalEX&p1:bestComboA[caseInd].p1){ - std::cout<<"P1["<&p2:bestComboA[caseInd].p2){ - std::cout<<"P2["<&p3:bestComboA[caseInd].p3){ - std::cout<<"P3["< bestComboA,bestComboB; + int caseInd=0; + for(TestCase&_case:cases){ + bestComboA.push_back({}); + bestComboA[caseInd].remainingA=_case.p1Amt; + bestComboA[caseInd].remainingB=_case.p2Amt; + bestComboA[caseInd].remainingC=_case.p3Amt; + SongCombinations testCombo=bestComboA[caseInd]; + for(int i=0;i<12;i++){ + SongCombinations c1=testCombo; + ChooseSong(c1,dataA,i); + for(int j=0;j<12;j++){ + SongCombinations c2=c1; + ChooseSong(c2,dataA,j); + for(int k=0;k<12;k++){ + SongCombinations c3=c2; + ChooseSong(c3,dataA,k); + for(int l=0;l<12;l++){ + SongCombinations c4=c3; + ChooseSong(c4,dataA,l); + for(int m=0;m<12;m++){ + SongCombinations c5=c4; + ChooseSong(c5,dataA,m); + for(int n=0;n<12;n++){ + SongCombinations c6=c5; + ChooseSong(c6,dataA,n); + if(bestComboA[caseInd].totalEX&p1:bestComboA[caseInd].p1){ + std::cout<<"P1["<&p2:bestComboA[caseInd].p2){ + std::cout<<"P2["<&p3:bestComboA[caseInd].p3){ + std::cout<<"P3["<&p1:bestComboB[caseInd].p1){ - std::cout<<"P1["<&p2:bestComboB[caseInd].p2){ - std::cout<<"P2["<&p3:bestComboB[caseInd].p3){ - std::cout<<"P3["<&p1:bestComboB[caseInd].p1){ + std::cout<<"P1["<&p2:bestComboB[caseInd].p2){ + std::cout<<"P2["<&p3:bestComboB[caseInd].p3){ + std::cout<<"P3["<highestEX&&A.p1Picked.size()+B.p1Picked.size()==4&&A.p2Picked.size()+B.p2Picked.size()==4&&A.p3Picked.size()+B.p3Picked.size()==4){ - highestEX=A.totalEX+B.totalEX; - picked1=A; - picked2=B; - std::cout<<"New Best Song Combinations found for Final Picks - Total EX: "<&p1:picked1.p1){ - std::cout<<"P1["<&p2:picked1.p2){ - std::cout<<"P2["<&p3:picked1.p3){ - std::cout<<"P3["<&p1:picked2.p1){ - std::cout<<"P1["<&p2:picked2.p2){ - std::cout<<"P2["<&p3:picked2.p3){ - std::cout<<"P3["<highestEX&&A.p1Picked.size()+B.p1Picked.size()==4&&A.p2Picked.size()+B.p2Picked.size()==4&&A.p3Picked.size()+B.p3Picked.size()==4){ + highestEX=A.totalEX+B.totalEX; + picked1=A; + picked2=B; + std::cout<<"New Best Song Combinations found for Final Picks - Total EX: "<&p1:picked1.p1){ + std::cout<<"P1["<&p2:picked1.p2){ + std::cout<<"P2["<&p3:picked1.p3){ + std::cout<<"P3["<&p1:picked2.p1){ + std::cout<<"P1["<&p2:picked2.p2){ + std::cout<<"P2["<&p3:picked2.p3){ + std::cout<<"P3["<songs; + + ChampionsLeaguePointSolver() + { + // Name your application + sAppName = "Champions League Point Solver"; + } + + public: + bool OnUserCreate() override + { + std::ifstream file("assets/team2"); + std::string line; + //First two lines are garbage data. + std::getline(file,line); + std::getline(file,line); + for(int i=0;i<12;i++){ + std::getline(file,line); + int marker=0; + ScoreData dat{ + stoi(GetNext(marker,line)), + GetNext(marker,line), + stoi(GetNext(marker,line)), + stoi(GetNext(marker,line)), + stoi(GetNext(marker,line)), + stoi(GetNext(marker,line))}; + player1Score.push_back(std::pair{dat.ex1,0}); + player2Score.push_back(std::pair{dat.ex2,0}); + player3Score.push_back(std::pair{dat.ex3,0}); + dataA.push_back(dat); + songs.push_back(SongElement{gui,dat.song.substr(0,dat.song.find(',')),{4.f,2.f+12*i+16}}); + } + //Two more lines of garbage data. + std::getline(file,line); + std::getline(file,line); + for(int i=0;i<12;i++){ + std::getline(file,line); + int marker=0; + ScoreData dat{ + stoi(GetNext(marker,line)), + GetNext(marker,line), + stoi(GetNext(marker,line)), + stoi(GetNext(marker,line)), + stoi(GetNext(marker,line)), + stoi(GetNext(marker,line))}; + player1Score[i].second=dat.ex1; + player2Score[i].second=dat.ex2; + player3Score[i].second=dat.ex3; + dataB.push_back(dat); + songs.push_back(SongElement{gui,dat.song.substr(0,dat.song.find(',')),{4.f,2.f+12*(i+13)+16}}); + } + std::cout<<"File Contents:"< + + + + + + Emscripten-Generated Code + + + + + + + + + + diff --git a/ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.js b/ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.js new file mode 100644 index 0000000..b4656d8 --- /dev/null +++ b/ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.js @@ -0,0 +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="ChampionsLeaguePointSolver.data";var REMOTE_PACKAGE_BASE="ChampionsLeaguePointSolver.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;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}});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)}}}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["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}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="ChampionsLeaguePointSolver.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}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(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>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)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=applySignatureConversions(wasmExports);wasmMemory=wasmExports["memory"];updateMemoryViews();wasmTable=wasmExports["__indirect_function_table"];addOnInit(wasmExports["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return wasmExports}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={39356:()=>{window.onunload=Module._olc_OnPageUnload},39400:($0,$1)=>{Module.olc_AspectRatio=$0/$1;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()}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var 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=[];var wasmTable;var 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 ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>>2>>>0]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>>2>>>0]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>>2>>>0]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>>2>>>0]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>>0>>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>>0>>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>>0>>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>>0>>>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>>>0]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>>2>>>0]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>>2>>>0]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___cxa_throw(ptr,type,destructor){ptr>>>=0;type>>>=0;destructor>>>=0;var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var setErrNo=value=>{HEAP32[___errno_location()>>>2>>>0]=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)=>PATH.normalize(l+"/"+r)};var 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")};var randomFill=view=>(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{idx>>>=0;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};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{outIdx>>>=0;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++>>>0]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++>>>0]=192|u>>6;heap[outIdx++>>>0]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++>>>0]=224|u>>12;heap[outIdx++>>>0]=128|u>>6&63;heap[outIdx++>>>0]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++>>>0]=240|u>>18;heap[outIdx++>>>0]=128|u>>12&63;heap[outIdx++>>>0]=128|u>>6&63;heap[outIdx++>>>0]=128|u&63}}heap[outIdx>>>0]=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 FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){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}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(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){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(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(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(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(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(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(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(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(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(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(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(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(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>>0)}return{ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var asyncLoad=(url,onload,onerror,noRunDep)=>{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{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 FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn);var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var 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)}};var 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};var 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)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},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(){return this.node},set(val){this.node=val}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(val){this.shared.flags=val}},position:{get(){return this.shared.position},set(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;i0,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.getStreamChecked(fd);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;ithis.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 UTF8ToString=(ptr,maxBytesToRead)=>{ptr>>>=0;return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(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(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>>>0]=stat.dev;HEAP32[buf+4>>>2>>>0]=stat.mode;HEAPU32[buf+8>>>2>>>0]=stat.nlink;HEAP32[buf+12>>>2>>>0]=stat.uid;HEAP32[buf+16>>>2>>>0]=stat.gid;HEAP32[buf+20>>>2>>>0]=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+24>>>2>>>0]=tempI64[0],HEAP32[buf+28>>>2>>>0]=tempI64[1];HEAP32[buf+32>>>2>>>0]=4096;HEAP32[buf+36>>>2>>>0]=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+40>>>2>>>0]=tempI64[0],HEAP32[buf+44>>>2>>>0]=tempI64[1];HEAPU32[buf+48>>>2>>>0]=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+56>>>2>>>0]=tempI64[0],HEAP32[buf+60>>>2>>>0]=tempI64[1];HEAPU32[buf+64>>>2>>>0]=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+72>>>2>>>0]=tempI64[0],HEAP32[buf+76>>>2>>>0]=tempI64[1];HEAPU32[buf+80>>>2>>>0]=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+88>>>2>>>0]=tempI64[0],HEAP32[buf+92>>>2>>>0]=tempI64[1];return 0},doMsync(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(){var ret=HEAP32[+SYSCALLS.varargs>>>2>>>0];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){varargs>>>=0;SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}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.getp();var offset=0;HEAP16[arg+offset>>>1>>>0]=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){varargs>>>=0;SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>>2>>>0]=termios.c_iflag||0;HEAP32[argp+4>>>2>>>0]=termios.c_oflag||0;HEAP32[argp+8>>>2>>>0]=termios.c_cflag||0;HEAP32[argp+12>>>2>>>0]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17>>>0>>>0]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>>2>>>0];var c_oflag=HEAP32[argp+4>>>2>>>0];var c_cflag=HEAP32[argp+8>>>2>>>0];var c_lflag=HEAP32[argp+12>>>2>>>0];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17>>>0>>>0])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>>2>>>0]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>>1>>>0]=winsize[0];HEAP16[argp+2>>>1>>>0]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{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){path>>>=0;varargs>>>=0;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;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var __emscripten_throw_longjmp=()=>{throw Infinity};var _abort=()=>{abort("")};var _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;_emscripten_get_now=()=>performance.now();var 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}}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"}};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){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(){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=>{err(`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(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(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(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(){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(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(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(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(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(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(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(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>>2>>>0];flags=flags|8388608;HEAP32[SDL.screen>>>2>>>0]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>>2>>>0];flags=flags&~8388608;HEAP32[SDL.screen>>>2>>>0]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(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>>>0];if(param==12321){var alphaSize=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>>2>>>0];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>>>0]=1}if(config&&config_size>0){HEAP32[config>>>2>>>0]=62002}EGL.setErrorCode(12288);return 1}};function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){display>>>=0;attrib_list>>>=0;configs>>>=0;numConfigs>>>=0;return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(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:table=>{var ret=GL.counter++;for(var i=table.length;i{var source="";for(var i=0;i>>2>>>0]:-1;source+=UTF8ToString(HEAP32[string+i*4>>>2>>>0],len<0?undefined:len)}return source},createContext:(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:(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:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext: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: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(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){display>>>=0;config>>>=0;hmm>>>=0;contextAttribs>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>>2>>>0];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>>2>>>0]}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){display>>>=0;config>>>=0;attrib_list>>>=0;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){display>>>=0;context>>>=0;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){display>>>=0;surface>>>=0;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 _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglInitialize(display,majorVersion,minorVersion){display>>>=0;majorVersion>>>=0;minorVersion>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>>2>>>0]=1}if(minorVersion){HEAP32[minorVersion>>>2>>>0]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){display>>>=0;draw>>>=0;read>>>=0;context>>>=0;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 _eglSwapBuffers(dpy,surface){dpy>>>=0;surface>>>=0;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){display>>>=0;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){display>>>=0;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}var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++>>>0]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>>2>>>0]:ch==105?HEAP32[buf>>>2>>>0]:HEAPF64[buf>>>3>>>0]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)};function _emscripten_asm_const_int(code,sigPtr,argbuf){code>>>=0;sigPtr>>>=0;argbuf>>>=0;return runEmAsmFunction(code,sigPtr,argbuf)}var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();function _emscripten_memcpy_js(dest,src,num){dest>>>=0;src>>>=0;num>>>=0;return HEAPU8.copyWithin(dest>>>0,src>>>0,src+num>>>0)}var getHeapMax=()=>4294901760;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};function _emscripten_resize_heap(requestedSize){requestedSize>>>=0;var oldSize=HEAPU8.length;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=growMemory(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall(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((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(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){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}var findCanvasEventTarget=target=>findEventTarget(target);function _emscripten_set_canvas_element_size(target,width,height){target>>>=0;var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>>3>>>0]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2>>>0]=e.location;HEAP32[idx+3>>>0]=e.ctrlKey;HEAP32[idx+4>>>0]=e.shiftKey;HEAP32[idx+5>>>0]=e.altKey;HEAP32[idx+6>>>0]=e.metaKey;HEAP32[idx+7>>>0]=e.repeat;HEAP32[idx+8>>>0]=e.charCode;HEAP32[idx+9>>>0]=e.keyCode;HEAP32[idx+10>>>0]=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){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){func>>>=0;var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>>3>>>0]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2>>>0]=e.screenX;HEAP32[idx+3>>>0]=e.screenY;HEAP32[idx+4>>>0]=e.clientX;HEAP32[idx+5>>>0]=e.clientY;HEAP32[idx+6>>>0]=e.ctrlKey;HEAP32[idx+7>>>0]=e.shiftKey;HEAP32[idx+8>>>0]=e.altKey;HEAP32[idx+9>>>0]=e.metaKey;HEAP16[idx*2+20>>>0]=e.button;HEAP16[idx*2+21>>>0]=e.buttons;HEAP32[idx+11>>>0]=e["movementX"];HEAP32[idx+12>>>0]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13>>>0]=e.clientX-rect.left;HEAP32[idx+14>>>0]=e.clientY-rect.top};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(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){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>>3>>>0]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3>>>0]=e.ctrlKey;HEAP32[idx+4>>>0]=e.shiftKey;HEAP32[idx+5>>>0]=e.altKey;HEAP32[idx+6>>>0]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0>>>0]=t.identifier;HEAP32[idx+1>>>0]=t.screenX;HEAP32[idx+2>>>0]=t.screenY;HEAP32[idx+3>>>0]=t.clientX;HEAP32[idx+4>>>0]=t.clientY;HEAP32[idx+5>>>0]=t.pageX;HEAP32[idx+6>>>0]=t.pageY;HEAP32[idx+7>>>0]=t.isChanged;HEAP32[idx+8>>>0]=t.onTarget;HEAP32[idx+9>>>0]=t.clientX-targetRect.left;HEAP32[idx+10>>>0]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>>2>>>0]=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_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>>3>>>0]=e["deltaX"];HEAPF64[wheelEvent+80>>>3>>>0]=e["deltaY"];HEAPF64[wheelEvent+88>>>3>>>0]=e["deltaZ"];HEAP32[wheelEvent+96>>>2>>>0]=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>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;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){title>>>=0;return document.title=UTF8ToString(title)}var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var 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};var stringToAscii=(str,buffer)=>{for(var i=0;i>>0>>>0]=str.charCodeAt(i)}HEAP8[buffer>>>0>>>0]=0};var _environ_get=function(__environ,environ_buf){__environ>>>=0;environ_buf>>>=0;var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>>2>>>0]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function(penviron_count,penviron_buf_size){penviron_count>>>=0;penviron_buf_size>>>=0;var strings=getEnvStrings();HEAPU32[penviron_count>>>2>>>0]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>>2>>>0]=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}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>>2>>>0];var len=HEAPU32[iov+4>>>2>>>0];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>>=0;iovcnt>>>=0;pnum>>>=0;try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>>2>>>0]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);newOffset>>>=0;try{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>>>0]=tempI64[0],HEAP32[newOffset+4>>>2>>>0]=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}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>>2>>>0];var len=HEAPU32[iov+4>>>2>>>0];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){iov>>>=0;iovcnt>>>=0;pnum>>>=0;try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>>2>>>0]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _glBufferData(target,size,data,usage){size>>>=0;data>>>=0;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>>>0,data+size>>>0):size,usage)}}function _glClear(x0){GLctx.clear(x0)}function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _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 _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _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 _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};function _glDeleteTextures(n,textures){textures>>>=0;for(var i=0;i>>2>>>0];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};function _glEnable(x0){GLctx.enable(x0)}var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var __glGenObject=(n,buffers,createFunction,objectTable)=>{for(var i=0;i>>2>>>0]=id}};function _glGenBuffers(n,buffers){buffers>>>=0;__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){textures>>>=0;__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){arrays>>>=0;__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;function _glGetShaderInfoLog(shader,maxLength,length,infoLog){length>>>=0;infoLog>>>=0;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>>>0]=numBytesWrittenExclNull}var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var 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};var 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};var 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};var heapAccessShiftForWebGLHeap=heap=>31-Math.clz32(heap.BYTES_PER_ELEMENT);var 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){pixels>>>=0;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)}function _glShaderSource(shader,count,string,length){string>>>=0;length>>>=0;var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){pixels>>>=0;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)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){ptr>>>=0;GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var 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];var 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};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer>>>0)};function _strftime(s,maxsize,format,tm){s>>>=0;maxsize>>>=0;format>>>=0;tm>>>=0;var tm_zone=HEAPU32[tm+40>>>2>>>0];var date={tm_sec:HEAP32[tm>>>2>>>0],tm_min:HEAP32[tm+4>>>2>>>0],tm_hour:HEAP32[tm+8>>>2>>>0],tm_mday:HEAP32[tm+12>>>2>>>0],tm_mon:HEAP32[tm+16>>>2>>>0],tm_year:HEAP32[tm+20>>>2>>>0],tm_wday:HEAP32[tm+24>>>2>>>0],tm_yday:HEAP32[tm+28>>>2>>>0],tm_isdst:HEAP32[tm+32>>>2>>>0],tm_gmtoff:HEAP32[tm+36>>>2>>>0],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":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":date=>getWeekBasedYear(date),"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":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":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":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":date=>date.tm_zone,"%%":()=>"%"};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){s>>>=0;maxsize>>>=0;format>>>=0;tm>>>=0;loc>>>=0;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"]=(lockPointer,resizeCanvas)=>Browser.requestFullscreen(lockPointer,resizeCanvas);Module["requestAnimationFrame"]=func=>Browser.requestAnimationFrame(func);Module["setCanvasSize"]=(width,height,noUpdates)=>Browser.setCanvasSize(width,height,noUpdates);Module["pauseMainLoop"]=()=>Browser.mainLoop.pause();Module["resumeMainLoop"]=()=>Browser.mainLoop.resume();Module["getUserMedia"]=()=>Browser.getUserMedia();Module["createContext"]=(canvas,useWebGL,setInModule,webGLContextAttributes)=>Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes);var preloadedImages={};var preloadedAudios={};var GLctx;var wasmImports={__cxa_throw:___cxa_throw,__syscall_fcntl64:___syscall_fcntl64,__syscall_ioctl:___syscall_ioctl,__syscall_openat:___syscall_openat,_emscripten_get_now_is_monotonic:__emscripten_get_now_is_monotonic,_emscripten_throw_longjmp:__emscripten_throw_longjmp,abort:_abort,eglChooseConfig:_eglChooseConfig,eglCreateContext:_eglCreateContext,eglCreateWindowSurface:_eglCreateWindowSurface,eglDestroyContext:_eglDestroyContext,eglDestroySurface:_eglDestroySurface,eglGetDisplay:_eglGetDisplay,eglInitialize:_eglInitialize,eglMakeCurrent:_eglMakeCurrent,eglSwapBuffers:_eglSwapBuffers,eglSwapInterval:_eglSwapInterval,eglTerminate:_eglTerminate,emscripten_asm_const_int:_emscripten_asm_const_int,emscripten_cancel_main_loop:_emscripten_cancel_main_loop,emscripten_date_now:_emscripten_date_now,emscripten_get_now:_emscripten_get_now,emscripten_memcpy_js:_emscripten_memcpy_js,emscripten_resize_heap:_emscripten_resize_heap,emscripten_set_blur_callback_on_thread:_emscripten_set_blur_callback_on_thread,emscripten_set_canvas_element_size:_emscripten_set_canvas_element_size,emscripten_set_focus_callback_on_thread:_emscripten_set_focus_callback_on_thread,emscripten_set_keydown_callback_on_thread:_emscripten_set_keydown_callback_on_thread,emscripten_set_keyup_callback_on_thread:_emscripten_set_keyup_callback_on_thread,emscripten_set_main_loop:_emscripten_set_main_loop,emscripten_set_mousedown_callback_on_thread:_emscripten_set_mousedown_callback_on_thread,emscripten_set_mousemove_callback_on_thread:_emscripten_set_mousemove_callback_on_thread,emscripten_set_mouseup_callback_on_thread:_emscripten_set_mouseup_callback_on_thread,emscripten_set_touchend_callback_on_thread:_emscripten_set_touchend_callback_on_thread,emscripten_set_touchmove_callback_on_thread:_emscripten_set_touchmove_callback_on_thread,emscripten_set_touchstart_callback_on_thread:_emscripten_set_touchstart_callback_on_thread,emscripten_set_wheel_callback_on_thread:_emscripten_set_wheel_callback_on_thread,emscripten_set_window_title:_emscripten_set_window_title,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,glAttachShader:_glAttachShader,glBindBuffer:_glBindBuffer,glBindTexture:_glBindTexture,glBindVertexArrayOES:_glBindVertexArrayOES,glBlendFunc:_glBlendFunc,glBufferData:_glBufferData,glClear:_glClear,glClearColor:_glClearColor,glCompileShader:_glCompileShader,glCreateProgram:_glCreateProgram,glCreateShader:_glCreateShader,glDeleteProgram:_glDeleteProgram,glDeleteShader:_glDeleteShader,glDeleteTextures:_glDeleteTextures,glDrawArrays:_glDrawArrays,glEnable:_glEnable,glEnableVertexAttribArray:_glEnableVertexAttribArray,glGenBuffers:_glGenBuffers,glGenTextures:_glGenTextures,glGenVertexArraysOES:_glGenVertexArraysOES,glGetShaderInfoLog:_glGetShaderInfoLog,glLinkProgram:_glLinkProgram,glReadPixels:_glReadPixels,glShaderSource:_glShaderSource,glTexImage2D:_glTexImage2D,glTexParameteri:_glTexParameteri,glUseProgram:_glUseProgram,glVertexAttribPointer:_glVertexAttribPointer,glViewport:_glViewport,invoke_ii:invoke_ii,invoke_iii:invoke_iii,invoke_iiii:invoke_iiii,invoke_iiiii:invoke_iiiii,invoke_vi:invoke_vi,invoke_vii:invoke_vii,invoke_viii:invoke_viii,invoke_viiii:invoke_viiii,invoke_viiiiii:invoke_viiiiii,strftime_l:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["__wasm_call_ctors"])();var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["main"])(a0,a1);var _olc_OnPageUnload=Module["_olc_OnPageUnload"]=()=>(_olc_OnPageUnload=Module["_olc_OnPageUnload"]=wasmExports["olc_OnPageUnload"])();var _olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=(a0,a1)=>(_olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=wasmExports["olc_PGE_UpdateWindowSize"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["malloc"])(a0);var setTempRet0=a0=>(setTempRet0=wasmExports["setTempRet0"])(a0);var _free=a0=>(_free=wasmExports["free"])(a0);var ___errno_location=()=>(___errno_location=wasmExports["__errno_location"])();var _setThrew=(a0,a1)=>(_setThrew=wasmExports["setThrew"])(a0,a1);var stackSave=()=>(stackSave=wasmExports["stackSave"])();var stackRestore=a0=>(stackRestore=wasmExports["stackRestore"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["stackAlloc"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["__cxa_is_pointer_type"])(a0);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["dynCall_viijii"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["dynCall_jiji"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["dynCall_iiiiij"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["dynCall_iiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["dynCall_iiiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function applySignatureConversions(wasmExports){wasmExports=Object.assign({},wasmExports);var makeWrapper_pp=f=>a0=>f(a0)>>>0;var makeWrapper_p=f=>()=>f()>>>0;wasmExports["malloc"]=makeWrapper_pp(wasmExports["malloc"]);wasmExports["__errno_location"]=makeWrapper_p(wasmExports["__errno_location"]);wasmExports["stackSave"]=makeWrapper_p(wasmExports["stackSave"]);wasmExports["stackAlloc"]=makeWrapper_pp(wasmExports["stackAlloc"]);return wasmExports}function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE!="undefined"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf.buffer,buf.byteOffset,buf.length)}try{var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;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/ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.wasm b/ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.wasm new file mode 100755 index 0000000000000000000000000000000000000000..105953e8f6a47e5f08f8fcd257be496b8ae6a0dd GIT binary patch literal 334036 zcmdSC51d_9b@zS#-E;5Eoj-RVN;FZ=y`*)p$wLY>Ng5dr?w%60WvfB zLo$H2K&G0~2vK7Q8U<~Xs8NH25H(6HqeP7oYpmF!M2(i$Morta(v~VudB4B4_qq4Z zWF}Ax@8@YIGiRUucdfP8UVH7e*WM>svSxW01VQ+>@o!xgt_{~-7OhGd>zy?v`wXycHu2w;dwzjS( zz1o(*Yg+@sWxZ`_3btVwT-MP{gjP53PqBLZqzc*0pjiQ0bVcDRT>zx~kvo5>AJ+5zqDO?-Anf zxMcCjRjXHC7nBq;ePH>TrK^{%8W~uzc+J4b;^j-0tyny~a^)(QJfkgn>5>&o2Zq~n zbgP0!TMkt~u4|X9Sv)X2uzX;}$l^82{%9abl(B2sifdO64J=-!e?eJM9nGj9)_b-2 zPL5PDovj#GOA&D`IShfKj%$|%p-S}l5@fK3dKG!v1R#e7-gNoO>sA2l@bDX!EFD_B za)pR8u;g+F*o%+Pf6c0=o%_102B6bab^qFgx|grKX3f9}p_vH1l{f)BleVyY<+TG- z!ZdpVOd~6=S$fr)ktM6upOcelVk1`MgpIspvPK40Ts~zJzdE778-}l0J!R&JU3SIF zrPr*PGIu-MBMBETUAbb-$l_%yMjV&5v%Q%5x@9Zqp~WN1MurE1NF3EYaOLnT21YJe zwr17vk~alG5qHswWh2X$3^%#Hmwe}6wQ}W}f%8|cxMJCrj=yS(h22IJJ2LRb5y$P% zZASkuYw$JKtiEE&(gBy)L*lEJ3=N!r&Fa;REElQjUvu4(RTojq>T8z_yK&S@?JJkB zS~fiJnyZ#vKCs$>+*7paBMs)03=J1^(TXcpUcB~d}L(xvNz|Z(D0>LmN=;ha}SlXoN z1*?}_XPvUf2}o!qFkcIoU9)!hX0!1AT5-n4ko<5XL`c+H#ENHi^8xoQBSxzW(qioRm$ijm=Y zXSw0r+lpVda_Pu$kUaOgC2N)~UbAA!sx?=w99g_-^}w|N`sSgpnIz^5$ zIc%PoDub$6I?Q-?-FR{v5|`7ti&rr7zF3H7i`$Z}M97e`c-fl8%U7;gIkIxavZaBs z>T}z2tsc;Hy7;PrC97QR&ug#4W_9N76;}=}Ulnvufj}QkFI&xgr>fR0rr{u-B5SqC zYMBIcCoFx%$g<@Fi-&{q6s1I=H3I`fNV*@Vf0uSgQ5Zx)sT8K&-Q95Y@|6lK5oc zh4vL|M+KueDOISkq`U$u2v3RyB{UM{)sLjmauT~>n8fLCss{}EIHn`cE>}v4emkh3 z2R!MXj-d3sw9@gMj+CG0bW~q-PRGKIN=F6a#w7N{9dYS-9r{;&5q~NG9hN~Z3d)so z(mSm@Elbkg=a);jZ>43q_dM2;W7F`WPsuLm!xSLC;X%d4J$;Tt6Yw{68^$|L06ai74g)X z{SzU@@00$BgJ`4#gIb7ILpq#)WPi?cfUz_ysFqSP@Dxa;2xg@>AXTYSsl=5^soKc^ z=@iT=SBrw)a?eYjmz2X*;pSv>QevQtMx&z%BX4b(AN*Nb?-B`0e!(rv{(#4moxRlA@ z_f`zAL|cA)I9+j zSUoThd?iAT53F9jVkJ^*=@PXRye+CIE4uh~!8f7~bkL}#@ z*v>M-h{W7lxTpLax3ocku5x-W-2C+!5Xtej>a( zeBq0-dgIhtzw)au?mz7%zczc$|2X}ME3euRUcLIy!>!c!w)pMw#`vc2rtqEdyW)4p z?}^{b@3q(66#f~_+#3Ec-W=W*zAwCkyzdI%&GS9sd&ApFyEEJte%PMt!;ggP!|mZm z!;ghK39S$B33r9BzBk+*elq-2_~~#@_?hst;eFxW@N?l`g!hMI;gRqM;opT1gkK1M z82&W;_weW8FTy9n{}bLE-4fjzZH{h>-W7czdLa5?bZ59Oz9oKNd`JBL`0n_gcxSvT z{&f7=cu#y^{F!)f{JHoq;&wE~K;sLb@BqKJPbl~I@jt}hiT^SF>-cZtZ^z$_zaJls ze-s~ye;ofLJ{mUr)c0elz`6`Zwvf(?`-LOQY#c>E`sd^j+z@(=F+H(v9hR)7#TK(tjy! zO+S#{nSLn!aC%d?J^g5UPr57pWcsP})9Gi@z3IK_?({F?ug81R&!(SC)g^a^>(jTU zH>bCx8`8I>Z%^MrUGGdcrMISchVM(?m%cw$_xw43?+ibdew=r8{f_i5(kH%uBE8$E z@3i#s?`rM-WGwjtOnPVdK(a6SQgUbb<>arDhm-FlhxqwkayWT3`B8F&_89|((t}gP9Vi{}`M%c7H(A_YmcB_1 zkCeX0-yfBZ^7rpc|HR*aF8!?ZRv`c9(qlX|kc7vpU;Xa#_VS0y?=9aMex$sud^^t% zmp@Q`KhKZzyMy14l|NB_Ed2z3JOAS6eSepJxhpKK&Hv?x(VQT7S+XeK_KmPV3K~&8 zJ~hZ|Lyd4&kZ(R5)i%V9AU|+8niutFK^D)8vMk7Ve+jU*dJB;Lib)EFk-kBU(# z7$PkG`%%toi$=T{jVMElt$1DrRiS8fTmjMOxX2O1H&@p0Y(fv2bA5)%jJ@hy+2CHx930J1s?&v-bsZU?WyMxk4tS7>?;3GD; z5{8~Nx{(N_6{u{scgpwzTkO4+|BfQRwF9!CZo6y;mK zXmJmHG0I;;_f`4d8x;M?u&lkN`a%SL!r;y%lWVVWfrLO<`$|-;jzwX-HVg9g6_fJ) z(e~bk< zGUH{4oqS&p0xxKUuSgcfi?T598=4(JoD0bk<})>M7))WFF*#<@E4l*!?2pEJ>M?-~ zqU`I*Vh4ABw0nHzdw#jfceg6v)2zI9ZM6g8S9`76x_^Fn@>(S7Xkt?~ppJbV3hs;v z9r(JH-%eOOhr1(FL_b@!7!}sx$^YXp;(= zO!|^QEolyj7DbD)q;YbC>0=RdN|fJrX8z_GwRcAis-qQ6G*J#)zOIWYB;ZdLRnd+n zBTkf2OD#`U*WQ{`MG^>Au_-4DK|0<8N%PGSym}mAYwHu2mTv&x14$#wJ5?Lt&g_c= zaJQ09VWPWu-NWCg_P?HuDs7b2dl&-Sdk5=XJa_jD)_ZwA%CpAvVV-?F5AZw*5Vl2w z^=_V9cy@}YPxr?L*0VqpSZ#Mi2Zpl)q<`=`>anZ>LFYvqA!ZhyMt97Q*GKA6`eRR2 zPn5ks+8c@Zud)Ks*}<(M{d&-ft?%<=Pd@o%`I2rVMBckP4+k5i+AmTBMwpdy4Tm?b z_AS6a>(vrsU;~mXh9x8N*WM95U(B&SR44AXuB7_f>jacyYqyl=u`Zn)_R%)j9}k}j z_O}T3$HR%R3y>*cw-$i?aljGmPe7mXuy;1$rs~@3CI|G0ihCj-eo8=pO5XhNae$Vx z698&00O(=01fY)|2WXfdZ6h+(dm+75Pvz@|&&5{msaK zYegPyM*g%FdAJ$*7DS(i^YLcnt*xBvTam4t>m#SupoK;C62qHG=pf3Ao)7gj;)@WC zQC7MO1wFILac~~#CLObrkg$zpD37mcR3#i!lZnwK-IW}<`D7?jf=ZA_*EBk^l%I}^ zW-t{$ZbEfNBTd$3%_5xy;}N853F|M}tGo@Ofw-0_uJ?M$ru;g?ElZrDhBiPGumO+g zv`7mHOO$#h`0COlv(h|};h73}o^Zv1o-DHYzQBJ+6aPaV|HD(@f5_wCHx>S!|99Xo z_?q}1_V^$2_&+=m|D8?zk9ho#PJ#askAH0{{HyNmp9q>7$T;l6Htg1sQRrRo1oNmD%mRSM-+^k) zA^}?w$>qFjc-Q$s5G>ln-_d;2g6NI3g6_2r!i*4*{VC{bwf^0{x6J$Gk zn}Vz+g(L|K<->SUZy3oq&JF{Va#IH88nYZq!xQ*0M%6p>I%#tF5= z3AHBY6i`UOk!Av}HaK3uX;}rGc@zSUR}a19phTUZZnFALly`}`9eP6M?Y-kf-R$7c zT9d-{PW(B(_Or(pHz$-O)1kjL@ZV)EGsYT48n@Oc9XxG~k_Yw5|F3HghT0gCV-*bS zRh+B5aF}xGu?Ap|w8oBKc`(4ekSG@`k8*S6q3Y@0t9a1Z@I=*p{IY|(y>>J8vcrRY zSqp3}gip9)S_;??9|v~diNIF%fUPwUV84DM*sT=@^&Y?C@GxH5g7Lzqf)T@0zW+EF zPdX8dsva1zbqL0bC&D;>u|eIQv{NoN@zXN*q@j$mPG5QOj zr(R)rptBax)1M0HQvrJVM4+E@BA`_}Ku>o-&paOJ_O-?I0_dl)v^ce?#!oMV^P~%l zGn@JPi+qzVE6#7`TTtYibW!n|X1)uHd`p{AuPdS^T~MrP=DW)BRnXSm)QinXjK3Ym zPqe0x+G#O6iWn(k7PC_^k!fQ4ye78)zpROssgU+hsEJK)YGU5J!-A(NWGB(Y%HuS# zj;1C?Xq+at&onX3Mo&)@E4MT;f=x|~MUOPG(g`%N=YVCqCUy#Kb~U+qO7qV&$HHBX zg=>z5JG1gcEv!(t&>^!53R!+fI5!LoLe!L!5Zt7u#AleD_ zux=?Lu16--!%}qPQkL4{ve3gysI<)@D3)z{SekW9*Fvc(psPaHp`J~NPobLDw#F_J;yqI} z_0|@P27_6(wz%GDwq4-F#G5p{A;7U;RJ%;WeSHW7V#jb!aBJ8I#vp1Vo}r`-VTMvX zqxOf-*HUN_X{K`8*l*H6FP;uc@;3WP=s+rTPin#d6bXFR+n+xE`loGs9x_UAEfImsfVCp^kd zly5cgt72_4C8p6RLKBQu%NV+(!pIiQ;vU(%Hd+*`j?@OMAJE2r^kf6u0zBv}9kMLQ z=#bEC-F8Xb(Cv@<`vTZCU;Faz2sknsi>aJ9kjSF3+Mkw@nAl}Y9@5`o3yo2hw&w1~Fc+8#pBUMRV2^YoMtah5^(tynUs#KE})vTsWf1Le?6Un-DS^GyP3Z)kFFid!XsNNG9G859;>#<=qKz zJe6}ntQxx#H;rpbXS${mGzl@3tJ$iA`RGv-c-2h_R=n^Aw&B4pLAESV*J3ne-+tqJ z){TyC{XE9;X<6yKa6TiQ@v7<=y8^V7A2`>6SgLJeb5m%OHGkYtK%$cgeF#wA(&4a^jw0(sQsxZ0{B6`P(ZC*DSQim|U`;TEWAzQG0_0{_Ye7P7A}ec~ZNrTzevI;74_rab}P| zR0Q^YBFe)WlgYzjnEHt+niWJEJ;+zNN8XEfhrC9S^e{D=IrGkO`jSRe!fxZ$dG_)d z%t^dXub1_>n3c`imrHc3-$E&v3Ke=4qchXs^!laLr!MmYVfdIOrcA5S_<0|zU5?w} zByFpmT3&LKN>bacTFeWOyw&?7Fau`BG~>xwS#nloBxQLp<7r-`l(w&e3%f(wj3uog zm+_tki&!wuFT0wVlhuz(S>dEn^4g2xp`5mV5Yj~4l%+r~L6i7V0xP#eU<$NNg>G{;mniC$uA{- zbV^teYa9zv!eF!rrye6f?QPNzFo$XOah^VJKOJ^@OBpg&;1rXxMmOP&D2$E#h!6=_ zFqYGf+1bli=iv}b4d(t=HsUclp^?mh)tHCz`^gBiD2^@>8}(Bzl7Wp#WXNFt-Lc@D zfDX&$$f3m9!7H6W06F}IG;0$&J9wq7c-`DMFSc#KtuGIRYw^1?h(;4*+VK^SW*}?Cd0>bK~0rC2y z*Fp^K&F~%%siq2wZ3HNm%4nP@3L7z~PTs4hS}n04SE#omx;)5QAs+pvCZ6YJj> z)}?l=RTV2jguR=ADtJu1i# z13}S!pFO_&hT0Ihyot!raowkCj_~6%grt|Qg}vYwcO6htLDd}aG6+n)nuJ| zOK3u|*{kg4wRda94@%XMkFo~${d(TkBcHqT-5YLyS2jP;;H)&+^cKGzWutSQ`GVN+ zyhYkI7})B@jZf9*I~b2ZH$W@-$6ngRi#2$YRdM`i$7?j4A8+)CjY=9HHxzH5fZ68p zn57;wRg!OPVa5Rdw}t&dFb}*+`7aip9w2{UhCFSeczZjFn_DQ}emsh**rS*hD5f;v zP|UXrLE6V#Wl|pA2$owtmImldW8-O_jb~Dn7})s5$FXsCA~yaww3)!i+aS;JjI74< ztswCfoc!^2l5A^{yEorsx@CZ3t`SZeR|t&n4>1oxXeWPFE%J zo+{XxPCwS_^v5Ra^uqJU_!~2f!bX9zOrynaieZTMYJyUf0POu#FSQ?-;>-6cq z(`$fE44saUvdO44qmW%_;Zw`52aoUceUo;&8qdd`y3-$Q@AQ2wl00~Pr>nLTb-K~S zclyKQJADjt9Q5QEo3zs(nb7GEP2TCMBtJN=(|_FR^uM31(;sQa@Szrlj~w6Ws`&U$ z|8ddjM|`J0JVmD;1k1x7O9K>HkG?R|ce+$CV(9eVR;PQd@;Dvqr(pw2NLjNKiU-y? z9PYymqF@*q(wmlNGO|bn;wMeB{gE1%BPUv?<}6em>oJ?NC^~5N5|ppPTg?>GM?Fbc z`TZ1v~JVB{UokA>##bUR%Ntc zi2|GnYe2;a4j*;c`N9#|>@WP@nvpa7EXyjw4D;k`axS~L&3w%f-j9c5k@LmP!ZVAg zj~7hQA8l>syS){;u^D+wD{{0M>38}-#qIO~PN4_%N2`iP3MHvOx~zyQ6hJh_BC61Y z(VB~>bDIF4<)YB+SwL3b6^9*u37Dehr#T0UG~ieebTKq}pqXkOPoOvpwpzn^)JgkQ z#$o9R9PBdwF^~T8)i`BH^THho4ZxTwf8*8l&X_J^?u~ z)Y@OBwZBYnf0>y=Bum!ZepfYDvFT zzS*!okGaLdPY5zc!?^?)I(;GPw5|4vMHSSUO%5J&i%kIKl}Xzur*jJwvLzxKkb^LF zOIQX?kXKm3V<-MUTEwrvo1S1yc%d@x0bEwF}DmZC%ZnQ{U zs3kqXcd<}stPV+Q{cXlOt9+IhV8Z{ooTm^afI=$49;;hsvHg)f!a4{Mv*q@?H(!f+^`sKI)R$(QKMeg8h zqTaQU3~pn+LyaB=NRJrGY-h+yEo>L^z(o7RTeA7_bS>7-4&JPz15~-go@WO;{X1HR z&x@Vw-1+evmF=8xRLQD>b?Z8X_xzUn+G@v$r8B?ahj1K*F)j z)wrXr#ygr>XuGY|oy|OL@E;Mxr*lD*=aEJU#`QDyE#i`#pX;%dC4k>~UwSpYuD`Gi0<&o&5xLII?XvN*)KIfvVe1x78aBo!?ZASRnAFL3)gavK@yT|5Vg;8CVsY!gl0bv z2)Lf%G>Zg+Z)Hf0LC|QXSVrDH_LxRSB-CkOv$Jh%q+n$%dpterDNVRUvH;0mj z{P|xyaPc_{Fe((GS#%(6sq-)=l+GJ_GcWyWmyW%eFbf$CP&1D&z;m_;z0n=K>z0i+ zKWNA?2H2UgnTI|?js-peth>*9Kb0Mh<#NFr5(^j)$!s!*q3(*!>`PrS*R8K_q<5)% zFKd+VIxo9vox#x`Wpx{QGwU?0(mO-MtTtqV<&ElHR30vGB)-5|Bm`M?xDnjNuu6s- zp-&i=w5RU5C>aA5)OJ7#rwYkyPD%jUv5GEMT%5{Mu*fIPqH{dPc(7k*jU2ANLGFKMS zSffQe{#Z{xDr)9OWq`3>nBG?oM4EcQL{p}_M*TrajzaWm7tcn$ETQqSUgrE`a8zeL zkD;ocu^_+eH_?9~vKW`~$Y$P?g?Tid6a1o3?;|E)sT_~tS)TF2$qe@SXqmX8V#Q14 zrqxH!a)TIE`i|eQ-~xi1U2rbJ4K66d*E$!>2tMJ8X?N{07u4$Vs0*@6z=T?l0G0uz zU2CSK@;z7zuCn5 z4i^;On_WhEv6pz!{N3kvVA zxS;Un-8^E*BKuZ+AiAeUl3c@BeVcg!jL?pz!_&7kno1{?TtdJN^Bk7T(`=LE-%^7Zl!K zb3x(#MHdv_pL0Rs{Ye)T-gmj+Gl}_ znZ)}e&yrlb$IU{*`^PRQyno<=!u#7UD7?Sng2MYNE-1V|?}EbnGcNc{;(gCK&(8S% ziJOpw_XnLc7T)i5LE*j01%>y`E-1X;?1IAk=dK3f{m(A=Oyd2MXGw3_c4l+_KIDSJ z`ym$;-UnPzc<*yT;l0-dh4*e36y7^r@R`JW+nLW!fB%D1wAJ4qc2Y@rzuyIg_q$wB zc)#5Rh4)P^D7^o})gZk8)dinPy#GO~v1egja%XEj_J|7#?{B)G@P5z*h4%w4D7^1; zLE(L`3kvU#yWlg4_no#L%cq+gR6ZK!b8Ex0wr&ntyVG0TW5OzqC0|lo!7p1bE)n;; zX)42-w6-e4UCZy==$adE>ZefQZ=7I2lEIfnU_Fc%@s~Zow)HC>RKMtDX~|I;`Gc+= z)GbY2BbWgmd$P=KS5~%|lN2-h^YY+oMdgvpmlAt~#j}r%UF<=vrw3QpJ7P@Th7UfY z`B7Hkx?u~;cY19eUabc0r#8r%6!0#@%Am~}9_GM~pOp*`@?pL^Cj@P@Ihv*_C7soi39ZZ(aETXBV<<8M`crS{AUwFd;#;T8&s@`bug{yKMC? z^+L2rKaeQRAN{RCOo5mXdauSX&o1M&=GjD@M}bTb9t#_ZyE($VRih01Vjw2L-ZYO~ zTKM~;)~x!A`y-t58uv%wW6nQk6TttC`y+7v<);&G=A?OlL}Iodva>^?^Ja3uCZoGK z0_Ra#1o2{0%M_I-a6k~M$FsrgrnR44$(Nxsig z;fnl+jr^N)Jyg(z?c&5XgX8>BQuo#KZxpGW7_OBHF4W8xZ+>4r|9X*H#hk5FPHK~S zh}6&2^RE@DxQDa3pV-|=v27?k`l9^7BDI@)J(POT%5sV||M?5@eMM>yw|yw}sHL*o zo`3EI`Ck;NjKl*YHceyNlG5=S6#!`naX;CG`iV%JT^L%y46xS!bmdZ^QqSUc-Jf*%w>MBw<$ni}hT$K9YnLhQ) zq%zUu+btF2vnaK-NZn8BRiy5-RNNm$sauQGuaJ5;l=@zg`ZZEtOX@*OMWTsRhlBJ)8~FC=xFrQ)=k|MNNg_q6&3sTYts zW~uu~{gZ|K_o;tHs-}iRmbz#t|JQT)?-RdC;zAN1x5R~m`D5qs-zPpq;sO#kR|V4o zOT4`R_**2NMdD6NmC`8OouVVWPY#My%a=%#`f zf5UEB%-7*cALFr_-}6%bdw3qE;4BJmwZvJ2`Mqc4Unpw*Hi;RDdo3|D3caUD{0@mT zNqpE6XHs%u{_Z025fXJ|`Y}tKKA7X<{U2<%+T?YJL|n@9jokuh8mx4B{zQ@ZT@pFh zk?*iXE*ZV~^!(>V;`d1GB5}VZavorcNmJg)XKtO?@P9?Gg(pmvltr(>{RSo;7si0WWoSw#WE zsTJ%|qGoj21yy7KLMr!#aDJbSVryF{soSYG?}aq)Zcmuryq6THhJZ?&eK_r-cdBZk z2P}e&y4h2AwWE8sD&e4bvy!mAcJ4!HOQ3dYFs)R?#w&wH=rQ)#rRv+wmw2k%W-aPs zs0C6-{?%=pzQR$nApeR2kdv;Xb#yi8#P2Kd*vLtmb%~ruirfMpdN_qnh&X)Ets!^W zj$5$n?s366%#pX*Gfnb(8tB*pT^zMz?cD{8rcpcAQ5)7eaVnlOtc!&Q^tAPe6-9Z| zu@d^w&PH%ni|xIG!BC?-OXmPND%Ih(ugh$0xqUu6J2jI;ygO={IVfn?UOpe}$Z8W% zCEYHy#(k-QKAqKVmvm;m;?`eq8z-UJw^Tn*bL%U3k@ZzML!Xkb2@`EyoxrZ@){wsA zxh<4VZnu-t7g_lwQDp%NzlFMV$coVEVa?#;3|CR)Vi_hIDUKV@u3om!(|Fq|h9(cKvqMcTW z&RKR+^RWD$I=HAwYY5IXYFVjh!)ThlTQ(Y*&Kqdf#O|DoTfm~kLdgO*5`4E=oOK%^ z-)(r#OtWi`tlOZE^&Y2!8=_RbQ$E>RX) zY`*W*Vp&W3IA;12A~(h=h+?lY9($ zIiaNfI$aIs2jH`{(btAh zBNm0VYPG!LYP~>Vi7k$o8if`k+9t;(%CB4`<5$#Mt%J=k{E7f%Lqa%rA2=$`V5^9$^v z;c;_;EFoJ%E&vuq(PBW&B$tFDgCG!IM9lSgVNM9Munzx|-7rJTF%f5&VE{4AF6N28 z3u=^|PM?^(gBz)h@|13GM=i@wj<(A5*Dr=cDZQ9+VDT_{QCDuFhbF2RuMgw=hJ|)#xY3XN9v^ zMQ$`4URQ;WvJF>I`1sx(XK((M4?K-vU) zmz~LM=2B#h%FU}e#NcQbI&xOBwp@T?odtqn`c~I3bm*+Dz^DyLu_mcYf3POv@pKJx zHPXDNT!=PIw9RERU(_QlvWKYvqL7D z=|hO2i5_QRT(L*$dbH?*OhU>>T(clYHKPwgB&HKQs7?BKk8`idGUee0jr=U*%{4x| zFZhhm$M=S&eP9GaqmA6p-5i^9H-?T7^N^@icY5D+%c)x$@bWW9QaRs2TQ`HaJplw| zSKL&SkyO#Eu$I#+Mkz^b<`x^4)%PWwFD8evrP-4?m)&AJXLc2N>5n$@GR?u?aM9K3 z7U&e!mQgtj2M0^7D-{BWIa}PF6bx5nwETQsK*g9m^kC_y$29lg8aKVobPu?Snapt& zv;gH^+ZVF&=EoBnIt@Dx5mRv=gl8;f8pf6wOO)al#=^JEGnNsp#aI}@i>o@+I}EsX z%$c~E1;kjTDJc+(0&zhBPCsZZ+flI8e}w{Gs*5$mH#kvha<_hK-sFQXG53;ypK$if z<7sEqs@p0Ug+t@p6b{%=9M+s={qb{_SkuKe#v3pjQa}P)^KkWFL(V-g&GMspa9U3k zgf`40w@nkfho(qq9%+w;Fl?ich0*ZvPL+Eim^d);R}7d-?58%UHx)wQ*;Ly|R)T4i zzv!Aqw1yJ}lvkB25f-5$L$3AYVEXWc3SAY-3I75M2U)X(0~A2WY!Ljm-Bg8K8n$kh zP-ZwpY)pnRrNA7!Q1qrAaXq8STugPB``E zI=APuT1KBO&0$%NT@5wgW4*_%cgCx#*68(lfXdaXg-gA}jb@oC{+${7Ep|r?uf}A@Hua3*NGALDsB+VA^=s}jkvqS4M$lw z6q9Vr?eAD2#1MzTqKkAxJGV%H+Kc^EWlj^cDhjD;Fe&K8a*6uwy!-A zI2@aKz>Ug7u?#g@Ac#X4InDWklT;xn=^z%@cm)Vk4LGS=vxAde3+g3nRp>&u2;6Le zLn{ZV*a7hnBaBhz(MHi6szcy$*uw#?9#!u&Oo4nbuEV*eX+8ur4#9lO*Th5;AUd<= zFU?3cq~G-~32gG7@r9^*W|tNQWqm#zA-uvs-O63wcQgpM1`GvN|rAC{H)679#%+6-$(*4!Wf=OOyl(5yQmoaUIF7b;v z%VlyJc46r15WM1AGaf1OcTiBMiU|gDpvfCa4QT>+$ViGXalfp`kqL*kR;a-*mYtO%JGaIwY3cStaZ*E^wA(}U@qz8z1r6f^ z3mY&N(nQ_j1AxJ038g30b)K?;Ba+fyZeQgZfCej{&jVDzINbULuAi)7Z2fS`{LLk+ zDI#pH?O4J(hz>0|XoVkEq!=1}_(C};iYeMfQ)+dJ&$xMa>+SHDu2S^Lw}#WNTV)vI9vZjD3j?H(d`9oeD| z&}|veUb->6HO44>#YdAwuKk+Q44HPI^K~pseGheNYp>`bEqI8K+0=msTb5iW!QV2M zdG`iM72z&DzQO%<7egh+}++Yx1fA7MS^!qf*8sx1@fu-jX^SF?wk0pVa}IIeJ_GAPfE75v(#5b(VX~CI!!^ zMyIShqg*-blV>^h%1CCmc|C8oB4UusoWMgPj|aoSO>|{+2Hozk}#_X30^h7dU~mnqRZp?a6qK%!n@ z2V}y|w>Zlohasn2EC9q&&4o-{!_i zZlk>q^m;ZaZ4UtVD6*Q_gQl`>SI80s1BC=bD?RINmIW|j!~=}91CGNBpq1P0bkx!Q zirs`<>YYyU)ozp7Wd-*Td|k9iLA)u0Il*>0Hw?3{AukhK^F~VSM-{SBT4oBU-H4j$ zrzqLD0E5W2uy%iRVIwfvjb3)Kvz;k+p^K%MEcrnzVQwq?S*_SvtysjdElA1?6Xu@k z+jNIF(gJ~smFXJH4?xE*lOD{j-kh&DmRdv3%Ntpu%_j+1ck>|tC|%++!n)0*sQN;d z*XTbmx0z#=Jyn$M5Aw0Lm@t#PEd-tZ$&l5^3YcXR8R}Ebuz@$nV==p?uySCD$KTOg z;_>m}AKNYSF)+=Ubx7tLi$pcN4tBYdA2NG;hh@YV@13;Xs zg5)vl7j5~~s>uyUT1VrjMNRCa1vOP8UCuTOgh`E>#YZ0A{V$E1)f8K#xbd3A8%IZ4&%AF;j@9O2&j%9?V4Qd3Bgp^wA>sqot9&5qMw&(#T={ zo8-!0%@&li;;_IQb>%PKQdY{<;b}~953Yp_+(pa&;U}9k(kN^B_+P-g;BSYH5Q=h0BLd;2RU{22Xg&YGqy>dRK4SB5N* zNrbU{RY~Wvr&Xk-n@&PD85zvsL}4@uy97$pmKHb7LRK4#BYXx)posKVHRItaK+)XQ ztPORftv22Y5UjRL8mwxg$W*oARMV^t&$YJNcpF!nJgclWicC?P2x8q%^PUyhL@0(Y zT}RhAnJ+AQiCqnk$mU)qx58C5RCm{nv{3S|a@34bjcmioah+A@e@`lKzRR+;= z2f&_#h9XlsMJbi(&rJDzOM|eYlqzW}S*vJy1ZvMtu4cN2&Ky&;0%8oox26y@QtjQP z?A=vt@6I-a*?a;n`Fv6@7BumV&GLe+i#gsa1#AaOeL*vjR*f!aJ9&j>P$si4r?Dy> zMfP;|DXMNePYMa2jHi9}?btVSY7EOb-8$IrRKd0p7wP$_qje>re0k+j$NE|hcjk|0 zuBGCbc5ezuDr4UL=G^-vhetJ|tWf)u;@qsOZHaB{u1lvNwsnp$BPrEX|L7E2z`BaBC*V5uk z5k@VRw16zrNa{D>6~XOW=Cq`1@YJmcS0EN=12RKOiZaZopcLf=a1X)piZc5|^oqKj z8oZ*cQJb`D$znfZP>}^jqhvHO^M-9^8Z52Y%x!Th7XB{sPHV-olU&3iSZ$oUt-$JS z_7MV;Sba!O92CL9u{gL_or{1GCT>h2@EO3yz~;PFrjRkP zv_A$5u1ME35S{##ZLTSlv6hpG4qeja_62VH9*k~?^38{89&3Y^^2#E+1N(W7fg}7+ zfgkM#y~#7MsU1#LD|AvU4Ng6#cQkFAkP>Z-C@q<^HEJ`LmXJvpm{CmUX!^_2F;q+njZ7 zGFt}`EEhFWQ9BbpJi_&B+TSK*CWI{^>wYYUV+d$ksBsYG^SfNt3z+Ok!B&!t47DQh zpp>*+zm7lp0E<*f?f}#+w=$&j2Ll9?MD358-~eXlrm8vh(yz!BC&9&knLfs7bb_x~rfp;;C^mB65+$#bkpUke1t*b>LN4BnZ zvSrm>)K@cK44BQ_r*tWwx+dMF)&G=4wAQi?WJj{gD7qONMHPV+NoY(Y=52A{uSj<>#rgJ57natW4(wLY5zIb$)Tx5|6 zPZs`29pcHj#gjTuP)E9o4?F2uu^*f50HPgdD1>~2k5J}HpJ(cbB?nl=7%fd!$q0TqUeK#J#>ZI{s#{t$pdR)oa7e5(xJBdL;Tx`ZeO!(BrhKv~(j)Ym4q^-nm z-(YQJmd*)gf)?Z5ESMz8vMcr`LhFu`$;q{Cnk@?RSu6r02TUr<%FCo+@LJtSH&%yC zjeISg4K1BSAV){m0&Fn5&3!W14md)?8xU;ByAPEOo$BO>4&noGwV#?#1&y<7tY{3R)}QQzA+*7dDNJ81fsxF! z8QV+s`EJ)f30O)Le>kP(Uw#~#|CLcrQ*59GS^{{H918q}zJMrz+sJA6`W09E+Q(BR z+?~6l`;0yFtCRRpi1n@v8lL(_C>nx2nK0U#xuiRs(2Tic6wR2=f;yt*vmj?*Izo&| zGYnKJoY0KJUVaO|$_38u4p0j?l{FCcjsEnKws@IZDN{=qip z8=z`l6!_40EoZwa)D;a{m{#Zntxp>a<*tcmSS_y6%XfF_Bvg~mtQT9L9jA)ww*ANh zB1x6~(~uE`SC~czi}tlSeILyDLfZ$#Z z-PrnKT?y$qicB0y-wN;x4Vu}hSSYe`#m+1WDMIwpgp-=hfqlQC-}nHW?>7kAoD5l# z6s~RrUB3|k;X-_;&L7N%GZ!Qm{g#gJH=Rps^&8uZHai#{UBAiF<=oxIGoE)6HOLdK zRS~^rHRG8fFHVa#NAsf%NEE<>{oTm$W?!lrVn9KwR#zyWbty&YGE*jyKz7jzQt~K9 z>S&SE<(OHmJ~`h|FHUA+6^7d}b~ihX+bKzX5{MF#NG$fFmG_Cb(UHf$%}bQma%Sy0 z!Mz7P5)^LW3iXQJ`5B&HE4j*doihs$bL%9~T&-n+pR54G#<$?t^S*5YVV& z8=meT5_dT0bO4s&%dRi5bO=u2t3G_p+!6_LL$HVgn>+mgw?N-56R2U>e6}5%@qmNa zg$+DYjRWY_Kn4=JfD6?PS-e&eOM-?WVIPu%xg{~>I&DIr4Q@#cy20Q!`c4UVhl5*d z^f3SPcJQ3TArKr<5T`ZrA~JV@&qf=L9D=J5!zLp^jKLAmv^CADpUw zkTy@n1W!d*BSS&;tD{_-u>VuG;uK^=&l9nf>6R~LD6L8K7Cn6~^_&CJ>A()eziNRv zC%8jmmonpfDm8w!^#FIDI635Nas+o0D^{Bv(7@stOJzwUzhXB57T-a%uS-~>q$UDH z(h5zdCBm@m=f5Sj1lfZ1Nt_I`2?91}*+caGNB1Fb@SqYn{!@gu@H4K}r_ZPtamoNE zEEBxRF@dEdYUxxXLdtm=n~)Z}lS6ZmmV1VRwi+;(N>y@^07g`xqZs)o-G|Mz1dz4{ zwAv<0oX$!tZt7Ag`H;4w%E=!gCrdKipOF9>0l^FbrW-l*;l04Vd#+T{9LzP7sm@>8 zM|tN{2t!{n*fUOCpb}2gbmZICj$u83N}egCHbBYd^aEjw>Bo4)E(o)pZ$yRSz*s+7 zD0_G1OS*BG@sp38kC1-gj^k-5As2pQ00bMB0FjO13w_<>!-z7DCrx%Pn!=UWx}Rzk z$C}8#n_%LGfeW0Q+gr`R@VdS zWb;N_3(SM!<*Sj)m|!n1Wqqb)0z_Bea|5=wTc>NAjoIniVuuxg;aHV5!LD-s&HDZB zDsxLQb~!B!xH{PE#*;|TbHY1p zRU5L#89i6lrCDl*v#h%|bBEo28YLy543=l5tZD?7azK5FSX_>a;$4uUwp_;az`XH3$u`Q>@j1>vuj0-|Zp>y%6z-YwfIVgbu@ zZ!Dz{e<>~{V{B?!j=tBG=>y&5?*gc-Lkj^Jd?h>@cy*b!PiCz(yK_2Mil3&sF49&F z6_(%b=H7)7v)iPN_Ah9GId-to<+Mkd^2#RHPFN}^jIi+N%J@a!jGFpp7f|_9GX8Qp z-|ndB!P^Casl`TAz++$)@K9Nx)mo1gk+BQ+G(HFq#|mnI@7AN+%L2V3yF@&R?`~}v zsXiN4tPbd)G*gTi0OcbGl*s?nqI) zuU5M%bW}I^cdL+O5Zxn}1XXL87kt3S!L=rUxhLfV`pvBgY~EJCODODz-MV?=aW8Y5 z8vy(@d(>V46t|3F^Kp)k!qXjF=ex+=c#$g6vs5IOqK)>PTI>tvP&7b#?FH&NICQdt z$ei-|y+BJd>NyDa_w#ufA(fMVtacNd1=fNjpLBvT6JL12ptN?X87ojX!=xaI>ssHd z66j!jz9+^nRd~{cV;Xz{L$Y=s*c)zp(QM?qs&R=B;Oq+^gesqhtUBpLDg-u9Y-o&a zl(;wMD0tDXP6k6G$8Qa11C*2&PdOpYLz8NRp-T~fVeuGOWpbpxjK+D)gsi1} zHq$LXPwKy!;MoyV#JR;gS7nWR=XR|2cRUhUoM;b8n+39rvPGvh^uZf$d_xg7?k?rr z;l?sQ*wv_MC(J$y!tik~S!B_C=t&W)NTtwKY!@&oPKglAl!-Hy?7H<{<2qAyn!983{i-K9nHjMBCV4}4^N z<9=ZAhAU`y?ad)QB&I0bI*fuFW9pe4gIpHE6%(SnJ=qaa=yHjqaen`wBI}H%Y-*~PG z3TZR;C2Sgf47JEJcO(kYZ}Rg zBE~=c$W#UYC@U~>%ymT)Z*HFpk^B2x70!m>0-~JY@a;Yl}pk(~O#HlaYg8Uz`N-MJ@`h zNV*`0VxT_TuTX(~@s1_w>5_D0A_mXi=uKkUCt15w|8Qfi`w&t`WQp0pYI^ zRxBq5H0f#ytl&DOMZK>@eRmSMGE*Gn1(i(yb%B)?c)`o{@h zQ6SHdwFWU^dXko!ITbg2;$zRN{EQAi3wCR*moflBH=aHEoJg3I#v$KO!>8j~yRZd*FgSoco z*O3G86>*gBKTexoKA3)3u^gtvkRhy=5KaE@%fA43wlyJ zpNwwwXBi3n=c|Ae_oi%|k)S*$IJMzUO|t}NgvxmZcHso|ko({%F@Pr*03vB(@Vu?x z8NFxSPd2}A{D;xYvx8HeKrxhN3S~mjKw4JZ5`9*egfI&Z1QY~DTdCxS-FJlTswt== zuGUC3UD}C2Jep36r|T1u^6wIfH9K1e>l?xVir15(KRPmSYZQ&6}%ft4l%E!L5lEaxR|-6kSD zqJG202)#d9REvs+ig??7UiEhZhdI|&xYw`1ost}rdfX^+BIW&Su z%FwQO%ygT*{wscD%Mx4=^s&B}I}v?>vrJ%?hWV_YI+M@)`ULxmAGOStL0H-`8iGdS zaE5Is(BZrQXN;^gyvxe*CBO1*jmj;^2lpkvO8W=-7`|Y}whe9D*P6AbyDHOmK5G}g zHh_T+ni(I+GReR;LTdxK$P(%V zon0@m^$W_Vc()+6qpTV&bd7Bp7a5;$8QmUn-L4>;s>JB?sGHHsbECc}%$+8ZN{>BY zFvV;Uka);_Kb70wk$eo2oO`3|Va#01sFjY5hQhT(_BM;R+08e0CUdSgE)rkMD>pRj zHD^W8KwogHZ`JeobU(QPG4s5nD7*tzOn5hOJW7($0p_$o^%r57+CKSQMlku#l3j>} zqIDw-po0-}d#emAk^#j-{IxUIFF$S~(P z>7#b(R!kAds7?BYotdzvDM&noq9D@>TweI$@=oJ|%;_)!REb(}GUC}Qvt_IldBlV? zT}Ffag^fovYFqwlF{;KDI&HumJNg_cSO#-~(=-u6irJ8u$K19X1F-W?;54nIvE{+2 zHWkyDD`_hT(ck1mP*s(+&0Ml%x#%XfRyQms`*vb zOx*b75vroI)aAvCF{)J){jR=e_Tl1O?O=sh*Sq6I5wk$np=+V4j5t|};6bhP+;E?z zVdzf1!d|9c%=Sl4vo5g@^?1#1d@*yJ)F}lO(@^*23CuexrZ=DK|*&SGdI*6|!QnHOce@>ob0^s4{wpR)he zNv&S5we>oq4#Ce-i7Zp~Hl}?r^6K!G`PQ*AALsO!GMA$TH62lPt)DW==`Vs5s-mhhSSSPR29;y?GHKP=l46XyD7$p@C-w#)!&b5g|`!N>c(X0SzW zRm}3ejtBL;*1cVtMOrUh2oEnBQV6cqgYQ-8F_&CSo6MJb^t;C__sFu4Qdl$ji-{2xM7Pr z5<5to84YAlOYCrifQcPu03Fh3`WjaxcB+$$9Z6uZf7QfJXH)FNcFT+eD8Gmula+8j zE+kB--ksNr9Z4K!l?1WV6)n<_ARI4t=sfiy`!UvcV!cI}0$?4sqBsyz3|Gfg6h{-8 z?o7wVHW+o<4@OIbJHBDQ)+$%*Q+rEGycq9GyjXiPvo7C&weB0nP5lH7>oPC+wd+I; zvlcEIR<~$&9p5lVGm&eXeDh;Zt6?r%Q^U0rHOw}JZ&))2YbxZ#mJnCeEI5x3!$WN; z+?aaw^FI#MNQCuWjMUO||eV zV=8j{G?-!*ka6>vEmQ)rHzo4$oDglfdY7(Dh$O+>m(HU_jzzjm6?JMVxv2!BjUFYJ z10lu)kB+r)SEI66nMpT#R{qdyvD1|SvBOk3E>Fg#1ul=wOz-Mx;9Y!$uW`#vs<>{>CnD(^4&VsGIruLN_hc;2kuda77DK=Mfos4h!JlM`8s}8zHTesTW zLi%b6A+P9CeiowEmSo*p$x)A6$xSH6sU#KCyrh+!ZFsrW+2k2#yNrNNUKWcdSjqWI zTj~1dO3sw{=1R`GeI_bB0?s<#R&xEkYCQ!Dc+2}#{Vxr^)s^jQ{02r>t>nZSJykxF=<`l*$A}P(CYF`cY;#>>^fI)T$+HuO(J3CPF9H0v`d8 zY%6A6fvK?e$*Z69ak5_6nMTMdqc`>yu5ld?YBCw9$%#Q_bzId-m@#Y4jWXSv^GC}D zrUkGYGSdrLnIYV=&u`){3ttnSn;KKtIfR8|q8Y-9MevlX;C8W?-zZAtH{#3<@=qo7 z=sq!wnXh!}T;?k$^zv(=X_{Y4J)GFl{x82~y!s_X9#@7ij3n~di+cJZ&-6jswT%wQ^I#vCv2L1<)GNqm@#iEVLVl0Iu$Yzu+!ttCx?-;2*kb4m3S z#vAjKIic}JEMayMxmmDQXRYz+u0lmQ>}(Pex;j2C1*I@Z0Cb^;2z(oCvhwu7Ep1u} zt~Ihd0I`sjy}_Fncw9_^*&$`PuzAcf^e*5tlBBo=B>AvC$ZP5X9=xI0kGDVQ4a0*T z8Cj6Vx`vsDU*t8HTp>Nk&R~Qf;}3S2sf-Z?ZcSrEa}xgVgd6&*GekhLrM_9tIYXo3RbRAu` za*!#odE!=9Q#KCHvM(Y=xokC=vEO4gE3%r5K$om0@q+%!BKKHLvv=kNczee*|B$uC z-VqVV`@ua5Rx|C^(qlC%OKfkq7IaCk?WO-=HMIr7N>;N6)N0pic0nbfO@g`G$P!S4 z)tq96ms!oGk9MsiVDrAUaG1m(-BW>M^+wjF;d5_M7A`eeekXw{6s?)V7 z{TlUtq5rCEQEX@+wE`96TZ6BpyxbVK{4}zpoR`b8*!MH7 z#jvy-3Ei8_!F<*XM<*hT4{4_&G^W~3Ud;6Gna3~Etnj{hw&l9=13Z|w(B0IVL9$TU ze@L5e7_6K=xIfV@E0INl%3au+_uSPbi8AR|!zwF;bx(`=>>-AiT0<|gm=;aJMT2O< zmc)`FV7b0`M8a|=xhp-11zi3@0geHKvL^h9z$h*xB*iz-L>Og3Y=t}kv1mtgJp~YZ zZRHyua7*Ks{PWumwB$fXKE%!)=%A&Ph!=bO6ZXogJ_y z9h{}(5uL*bf^OzW2cF^l8i9zpJKFA7#UPy@nvDop|KnJFASG1-iaIpFY%G73|$2Y?RANjLGM zDricjZG)VGD}nK$uaeT%>5qO!Z4sF1TQM~*Dq*W<`n3WDi4|Ey_eCpW z+pnuhg<6%?Q>@CcxyYNuAO7w=3p_0M!}&7WG4FP!Z&9LKF?-v!sw*`)Kx1ff8e7_o zwq)sP<`l`D0S; zRB@jGz0p?Asg9;G*JA=aMl(1EOUmUzI%dX^&%G&-~O!mIBZ%UUa%I0;?jIF)Ax`)lbP%POZv9r5-a3F!OGL&Q(mmMnI~ z(|pBO-4mAStFDrAoxt|j(Azyey}jL^k^nv|ybWWvT~lf2uW2;^Z6DOalB|jkXb+f< z)jGmF|1Uq8BxmeR-{%KoPp1gpH`TGR4r-HY{pYP=6Z6P3qTbJ@xQ=ygVNrEc*jbHs zGznYDadGYlJ_hqrT7ORyu5l@a`ADM%N$Y-_FzQmR?cs@o`g1(g$zN6X{f(`sW755` zORhuHL(9#{q1Y{EtnNN!UQpFNbha;3ZN11r7AkQxVMn$jH-7Zdu-l7$)LHK;^R!XT z*1LTNBdfsdHj7OkyyIh5mdhvi{T`R&vB!O66WIB`Syi6Up;&2EO|`}jvJh2fjR#g6 zmm`i;{kYI9t{>zYPvd*c!W`KgrT8#2d-!(om2{r7e0Ou%Sg<>;W)^nurhYrjg~Ig{ z7sdg-dYsc1SSF!NIc_l|;Aet#AV1@6+(BJ5JNRCAZNeX6+ zCf}o9_IUZE%8`w^i(eOCal?(b>^pE^kyoF+BK_dLPXegUu^qoO`m_qh+4wHqe2N>! zfX1~f6#6$fK9HMqAse;1-mKf*3KE&aW;cbUJfJQhDRpKEW-y!)djVW zo^Qg;*Nh`>iB9WGfEr^RF`bFZ5>7Hi+B8$)bZ&ip4H7<0d&D>Tii{--!Y_@^U{hE2 z(>GcXYKtK(rq3CI2y_{u^|Cg+Y&#vfFTA1kmvJP3ZaX)>`qRz6pCv9_`MAq>uEbU6 zT~*N+GUR4_e;`j}a$nP9)%2~{R!&#*`W5h2wW2!ithY~<4_n{*?}(Ip=L1tq<)OQN@8jXpYGqM41s?p!XK!T&_k{21 z#2CI#uVT<;ItB$kAWbG!sJKt2WZ+Rn+BgA10-V72I2umhiXoqPXF|OtYPbxJqY;Zj zAKe5IL}L>9j!k5!Cz;n0`*i09#dh72MlO|9E^?Hi5L2G{HChF48tQ_IK?cC#7@o?O zXjHx3@Cl%7ji)=DClqCfsl=elc4-2H^F%Qq?CMCq)}^f9kGDi@t3dD9%n7FEDD%V> zC%xNLlZrN7(7;@@Ew(6_TjrM`cI@4p7_=NSky>X-jBJ9Yt)O8+U-aF}-G9Eo z%Q2us8et&FL67DE22JeI=3X0r+P#qHeiG>I-b|Xu6wc>0+1FXJy92pYBR@*&=EPIA zIf3+%=5UN*amU@)C6-Ly$tmMFz4f9#2mSHOmZWqd9uL z*`;2Q^wI{b{KYI{I2YB6j>bGtReu+2M(+{Sl`T|29kNxVi@l_UYb1?tj}YHM36bu^ zrKEe*Lw>;i0FRjZvlEMnoy^||OWhM9U0PFNhJF}d z03%T(K*p;>@zvwnKEUX$)r1wu-QWQdAR-ok9I#)Bwhk zoH`PXrBt_ttnx-DIG)bCPT?BS^XH$j9|;lC)`)Fy=!tyVSfIPg4Y1sGI5IQw3Q<*& z{*;GV5(hM(yCGq(i(~j*IA81)L8EM`%ST@|VQ`C;APrA1k%mU-Gp0pNqLgfp_q0Bu zWNYBHxs;8jPjuzlrb{7j{Qzx$MGC-pby&RGInE9z?&v*F=u#Z~{w=@#ukdQDWS9Ec zB;e?ZkLQxt1}4W_BKDE$YkTMcDC2&%hBvY`ct9h$t+DH_twC>|XI?3a7bj;gHE96I znGTk?zkIB|ODc0z|BQ%Noc^$9_ioW$yJF2rV)OT$L>u1crFZWpouoF{GEd5#y}Wwc z(3S#u8_Xs~SE~&ijy`SJ`!Tg)@AJ}X!|cc;wL`-z3yq;kj9-)}pdaqjFJT}P%k#c0 z&8e;&RJf>BbUkC-{U3ScegS+FAvEj(H<>u_H(~?BePh7mbXs$YB&p_eKIh%Z8`a#cHO0u34Ieu8`g&g9F)hQl z^m5e>8Rg4GW-+mcr{9?6WewC-(EQeF>u=dV!Jq7i0%8d#19w0`!XZo#e3|`9DPQ<| zTy#629J3mGU|}k?FLXv(qC3YIqwcpq|J_5e|Coqtj5>&e+~_W;NZWWxJ{D?R?xb|M z>bS~w59hQr%1HrpqJ|7K`X9)ouk8xQNFVYHuaY5)Em6wUOwEdsa*(lL1l@E8|9Cxb z4>>Aaojp9XDz-+Io`=-7HL8^!S;Y<3DKK7}jmt43R#yG;@MzQO=eP_=Vm^tPlQ4ja zq!Vfq-;KcD*t^eNZD9s|5evdzp@@=ewZ4lpC3G>{>+qqz?b8z~u$Y+LH!kyq9^s2A zhk+-SS5aZ%DeO%6>oGtn%3_Mn7;xw(paOJ`n~>v{8jTHyjb-`>L8usBVGG zOfffFDP%@rG*D!7rmF6aEfx~0VWv7u;B5dv*d{g}qo^{vUNMS0H0FuI*H}eX$!knW zLubO#05Di{ZR^dcCzc4z(9O+!C(BOf(ht2D8^?K^=5bYREQpq^cjt;3fbuSD9+q5v zbHGhuKlt(AzcVQ82c)}qj&qnGrubub25pkDwf-h(;{U!XZ35;;&MsW_{#pe&L>3Mq z{c>nZ>O}5qUv(l!vQQ`F4iuIKbwWH>s1qpc)d`-LH|e@4s}t@K94>%M<37Mbh;`2kX| z?r&bFTl+Ys>l(8*qKAQpQs{lDf961=ery)-pK{Qsp-IcQ`>01oM>=Re4uZGP#+c8N zS+QHI8j%6@S>VB0r%!5y1E{K64b8d_F(ruBU_P9;=>yb%G$#Fcd5SK|?N|bXamuqDe4MMSuxgh|mlp#^oJAKmRmA23G2_0fM<+IQT%y&{H zHpmNNBs1lMni6V~kM~g&o(}YDeTTrCqucQ=U=kXJmeO5$u*4f}m6dKMB$S+NkEgws zS9&7Y#9#!Z6&rF2s_xIu@<3I$#s>@rf>ATU%&KrLAVKXZrE?(l=^nexnkdGq`-WwK zEV)$3oFig2_K_CY9+z53r_qIUabF!W6%6Y7oGT{ zSSC`d>&EhrE;;c>%Fo(I94zEpy6nUsX}Z0AG%clN^rz>DqWp+PrkU+WcyK4k_)%N@ z@HK~hOX?qA=RJq4dVc)(HChhuTS20Th7%GYe{YG&*4I!ul55KgO5j{8ymSXR+=G^x zb`iBtL0H*}ZOx`ATf@k6yW-93xCt*p6``aKe7MG@oA|z#_2r=*6QfYyKT?4#oy(H$ zBgta}5SM*AX0vR2KdsGWW4)iYNMJAfbQ)LQ5)7qQ)wf+N9Rm#bP(sa-M^E$)~)_Ld;ibc?QiGz?x)cLXMPHG2G=+YsL5e2ScSRvso9tS znL$+0vO7EL5rL6xjK;0)Q}4}YPEyD+&cn};5?b5I&&|SJ~?D=pHej1K80;Pvs26_dwFIW)*SmtOc?6*YXO`0?Im*kM?>Ux;!qa!-U+tiQQymc@<4J$mfYLPmhqIg>Zi8# z(3vaq4P{Vc9<4Dv^mNv^b?Y9xx6@v+Ze=i!Uw5*!Zrrza(ye}CxiIE{6H*TV{MfPv z5;j;?Tpl5Y_>{&S#ro^B^j@#8W?$NIXSN)xSEcBDR>F*kB@|9x8#WQvt5dnzc*B}e zrO3+Tq&8)jB3xuy0PA1;qJn-TcsA%@W(Jqzxm@~IK}$wFbF-lUkiY;prWemKMOZq} ztBlxdYP4vQ`5MyKAcpINktc5$h-p?e?V;ssYO)`m)4h1&Cm5b%_kwD$6$tCH{!epn@W?lhf2jsfVk1j*1DoqBO#yZsY@+O= zVcG&y>#M?A`_rH+%t?+{#yvf0xJzBoVyh4CudR`OxHILHfKmUj5>!7M!CigHK+vvW zPzC>NMV`ke4R2`^0ni8U*VagTtdR0HGn&S=slB}H5w@tMZv|vE{a5L5kEsa4#N#Qb zp#(Tn_sfEwoHV4RStc^pG%H(gkes}BYz=d;gJjt_0E3JzI5N#-5(YE%&Q)8QO!8hG z)I4s9SD#R`2(>nmL@{=yaejQQ4>C#WDO0AAAR<;~3qKd}y)tKB~ z!n|Eg>&SV#+ITU$aM;x*9jeF`J7{Xp2Z8xOq}i2!qU>Cv`F+nk#EzSF@Yt|DzP3s5 zdjZLtj4Tq7vyR@=PHM;xXoWP<*r*aa>_=27C3cv9NAwLd8^=lP*nwHyl#idwrK-tX zjOn0zO@z&_A5`3KbGd-Vhw5Sr`38ns#|F+f;Nsl>@{ONjj>BU&{qP&_*K{E|@j~j*51&A` zr2`0q4+*oHz8J${^tJB*LXa8tNgESp{;H*l`w!wUu*+dQnhu#Ku}OKeN=GB1nrNZ@ zR1=?TA=+VRmVRs#Ex4w7#%TT6>#~U!`Fpb28k^;PURo0^V9R+C1Mq#@kRr+3px~B> z6A3~cy%R=wW$#I7mD*5gwZTLmi7oR@Iulpwca*GAa+PKVG9CLW@^7&};wFBFo-v_T zGm&5*Ylqa?|Hfw0K@R5A`ni#xd7Y(vYmVK5;{NpH*c2A=*?b`eHnNe*jugQ`wQBL8 zBtQdV>N_0SNl)Y@fU#UmLzsHW(=cplW5ZSVf1j_s9a))iy&w16buw~blNw_xDsuRl zSr41dnOq4Nk)c{);EmDl0*9}@E+2z7@{GU%X$0Il#S)n)Jbl#*6yJT0N&m(W z^lL9cemWHTHsKuA+0F!5h6V&PAuwrweT;FIp2_b-3@U_YnLY{dGx(%& zG~3vaaRD1LaEmrp;qNq%p_wcUd#N95sJ3?wYFBA=r~QRd(XmF^YDOg#lWeSt)-+!jDsiV_Hq%e`8HvDbbGGhgY!A&eE*9 zyE^$BYYr+bZ3S}3JtjTub;b{;@-LRw_1|*Pg%*Yt&iVbZIQ&rle$kB$8wSSa-23fR zWo3&c_VUTO5>d8jb)y7cy)b4njmWJcc(Q?R6yXXXQxVNAVMX;m{lWvIgE|mgxrO;M zQdAnS?{=U>MN$=^_v}Z`{n#k-e~X{8B6{3n^R;0dY}Ra&T;ff}8(oq2GmE{X|79x- z*SUK;`PB_mcC}>i*UNn_tm3%M&!~rP5T-&~CjcSuc`7_mxOw>3d={?@*&=s><(@@GduF<#%a#hbk|9XHHaZ<^`{<3eqe9 z8_G^ZI|1p^-E>+tOTvtw2}4dVV!c31TpAriU^+=tFRNr@~#&5YXNxUhY8o2AD6$UL%MIR z)BJc^Scd_zPO;VI`$ks_$16sC@;79NwbNb!ms7R_d`bWG|QznXP!j00L+{c-4cJVbuW_- zuqyZ$X^&dp2U*lRGYSljKr9~Z*NEovXS!10rm!~SRIE?U!Hvf>Q;*ylvky44x$0Fq zs@!a8=8Ju8EyW}a1jy)fAP`H`?`)ybI^&l?*_o#EFwFrtD&2L17{Rb^kT+U4NZTE6 z&}adF$vyab4+wl`hLCB)Y0YA&FmVX!ur>MaV;x^8qmf0;tT|CD?ok~~{|@RO+XdZO z2$9d1@vXjacDKSEgVe|L8FRY>)c>&+zGqsGcgJz$Xl>s)JZ}ojO@q|>;&(s%Ar8h> zH}P*Z!q_?SA({y+jIfNN;2GeC?L#))9vK`TgifyRP5;BWll;tir+%B{r&0;f+Z;c&isoJ{ zyj}J9(3wf9>>Fnj8o)@rqLHThh$aTEW%VaP>@?{ZG{HcnVCy3k9Arl0?fRF$(s zE^vv>xr5Mp^V}Q7Q_y0j%5)wa+xCYp#@9=Ol>#SpzFe^q_3GI=DSA0HsCc-IMt^z4 zXJ65>Phz0W8p_LknlpIMhi63KW(w4SD?ZASH*A9fUMHi{pR2eF=G_HSFUjWU$4`hW z`+zMjR@%hs?Ks7xff>gZ?CDIqJH8Sr=EhQj;sJl7I)CDXz1@FuSND_m4EV|2-A{gM zpikB*DgdSvYjdXAQ|`pJs=W?X2*S5_u^-{~zi_)XHe!f8Za??*2;1L`n)l@`)r>xB;UizUe5Wt&ZZ82Ws{{EZ3U~l z-Mixc%5JV6{>D2F@fT2yGO%s6$|<_m92Fy@-Vh;owM=dq8i z7}@<5Imz3S_eoVMj`of+S%sEgF^~sfnk;FHZ!Ldqg`bYeSxc!MMW-^W)oTX$uS-z`j)dBv?y^4diT>rd(=y6ImFNcyfsKyQ^4Q!w-HC5K5f zEZ5=_Yc^%&I6gl-&jUR2Zz}|NDCyv~mnYWOj}sB#3fH~+%O(Q4E=L5hIri+ekHtgL zHd*A~c|9j)7WOSg;8ZLw?H6dIqT(VGJu0QpsT4uyflW^$X-NdFd9@Lo z?M-oe7b$m6yt_J4iPBi-2jPA*>xXa1wdI2xi6)i1r75Pi)hTrzAkQC@mui{O}GO#+S#sFX4K z+k8TD*?!oD<#3+kx_D3{&*(#AwqN(r5a%pAgh$4-wb?B`h$hX!ko9raeUSBY)v)g4 zi496FQj;p^kjo*Gn@Hjand2rAE3`VzuI1>k0e;=~Q zOzQw+ZPLu3w_V{R>STMZdWVE;fv=1{ldt6+vdqxRu;SY4VPX?2R*Y{9ys%;=EK+GG zySv0%<()aKUh;$J-XoBvirBRTA?~*akz5C80v4^UsdY>00sqIXetkpL{aV=h zf=!#qVYB@cA~+5_+Qf@X_<<^ z>4AuKDVngrxS#Amc-^Vm@HFIPgNJ6ZPUE*WgawkO6)ib^*eIrb7yS6lk+^A`U{|72 zeXajy>ng{QRW>$~$o6Zf)~_KsO&aMbHzcpj8tNfKU-XpyY|R^nUGxCQauCpCe4-j9 zQ4}K^Js?S#x&!zU7tG=3v?f!X&%ga-YDfA>CbbO7@BYKq(3eJ^2}@+YKOusd>AC53 zx-@|&HTxMeUeH%`vkgOz1VSDTBU@~vL4T1}>48fE3s2a4C#;<*@npOYsSb#Cy|fx% zTH}_8Mm3@(ecW0!BPht={9@Q#$E+mUL)#^>ic74eBWcqpy1i`CIE$RMl0yr%HfT>N z;JnS2tGeGm#|9;!nN7?09*-}nK7sP0@9_!fB8;vs)9)+SNUdte;`xab6t12Ve=)r{ z{uFvm#`{4QH+>EwakDu&fJ?vGYB80{NBaT-HagD!ROCe)7>B%i0pxXsp+=tE;4nBX zL`H{cE!Pj@dA;zgH$?mZAeZ(&nL~`?IJOn=m{HU(%Go^82H6vXUmHmog>X;xP_jTT zp4}8nWsoJK2SaL61OJzKB8wMQ~Be2v!Uc`Yi z;i|QLe77Zf7~!%unzr$n614OoG;UKu7|M-jyggm5Fxs}O!_65oDYEV$N`rX%$f)0R zi`#U;pLk8-unSrTZLNd_Kl{RZ>L<>iA2t=WSwD~(MwKGeOf_KPH5%S&`5=Z^&(#_a z+M+<{hhnXq30q*@)<`{U)RcrK-+My{*~*o(;K+1h-jTyVRju6bYOR}+Hfp%{*`l^# z0;2yYpiTFv#9cO>k_(iFMLu|k2px?-tI}4JL{78M{hRiB@Ts<8cY9;THelQtA=mO? z1D+uBuTI+pXY;=S!KJ`7v(r@H3uMD&{kf58)i%R+c{i8i{_@jYPWa1DafBHgZ*!A~ zRhk3C{%G;8Y8JDHTCrW7`DjaVGjYp-(yvB0K}W25-MGr?y?!}iP2XsGiX3&GDiX4q$l(`XDQ^+J(yx7`iEhgH+E*xX{}r>i zim$YzL-+GuZW%XrED>5#=oMflTX2~yXy@FGy0v(p7MjhL8 zK&aqbZcbj3^V()?k?^QPLQh)rG-hg$%&|9s$k>XFHrL#*!LR+)&xX2enXHRn=i)Y9 z{D;_mh-S91x1f0O5(u(U1z`+?qAHlAwWY|nYMZJ?$bg5BwhcJ-U4uu374g{}BN zi_`0?n3t;%#?u%k1z4X|u&;%Lp{HcrztV#ux1 zhMMN-YCMmeGe62e*wGOcL_0;!QMq!}@#LZ5tmtfm`FQNy2)#rhK(~y49Lo3)R0bev z9Pi!_xp5@9_pt3l3Un*C8>>Ysm#v`_$!&lflp^qHXlNy?b-`KOe7 zzJTriWw>j^1W-{kU&~LxV9IJ@!Nh3u6BthLe!`f>zRWvN!<_0gCI!k&5Az?^sQA7L z^Pu^?E%n<&95sATQHi0~&{HMH8U)qe+Hjp!+M3R|9-i0?YczLp#0=g$Sb{&S8~X$ zph3Wh;vU^u+wC+^Jb)Nj(^1mT_X4_wSQ>_f^r2ufv@T`Ys0 zvCGL_3{G(Jmc7_DEA=|-CKqh8Cfa;1?XgvAD>&ZN~r`0}{bPKF0eIA6M(}J=~inZLjqLrpdu+VO45Ind7 zM2ZC;(EZY8C?gXKlS|?`+#M04erY6;VbY|ENI;ToMgqcG9jKyEEf)~UJLd-4JZ%b> zeGqv>$O0tRKi+*=V>oi#bzwT3Ih7+d15)x^VwyWu-ipIcB6w3*kz(a{%}(3c%p{u# z$HP}M6s&PW!L9-dc)dbFn~=#D!c?oGmT+l#T%>8})YxwHwpUxGSS+xY_EL{0DA7yG zswa!=Xd{a*=~xR{-J(nOmhJ{Es1GSES~p`kq7!QlRC8SU&7CKx7>%BEGR< zINn@V-vB15ScV{(_)Vkbt{h*Z=GKPhCMA&asigs65*r<;NzP$gK;7FJMnx;)pZn4) zk*itzqw~8Z(B%h+TE%@Ml6j^S4BoTbjCU8ZWKLfTGNei;gnG!<8f55of#(U~A>*u@ zK9EiJgX}lXa16Ucm;hMm-r$<@U{(5o#h5zZE(2?gfyJS4SB`VGqZ~IgZ?I`nw>Fg` zKUI%Y8_fwS0M2uMgA8`++vl3&IFoyNbm7kCq!$ukif$tU^X@0RR5+Yzx zDyml+yPBm<^l-^WY{%#Z_=0QYxk=l!3pYhE`k6Ib@1a-<5DA<$9}O%eFxU~3aW8Nk zLa;qZiN>iV-B!}b7b)t?c1w!B282Z2P zSk!063?cOu75@mKwWN~TLNE&P!Js4dr~o6kQuw;O)n1v~L{nR$KgFs*HC-Mw17nvD zaA`|i6cmjH9#V?V?QZ~^8yZRcy`c$HEgtIjBj84Fa&qjI<7hAU03~Ju#8W^&;h_e6 zRaHfbRioqpYXhgy0J+6qqh}H360TrJ3cN6nd$Lh8_#QinOg3o`jFx}OsndGIKgKyv z;e)+Tv5OLOSt*>SLe4NS<{4PCn46*oR#ldYrFpS(LrO3#li6hg3*z2{Gc#TDc)h@~ zL^0>SLsVl^Xc|(C?b8#`}giL`eE8|KJh)3 z#plBY%7=4B%(s)EnkfdIu8y|j)XerVOdGKhR>ziIIj;B{06cfPy+E)Wv$V7UVhngN zRYQ9KBM7q*x&ZB1>R~H)1oI>4Ell$hfcESCi8|Biym9fJss~nfw_S;BWMh^=EnubsC%Kl!ZE3f;pThbBS~(_>PykWC~03Id%*2rCg$$^l%A?4CbDvc$IqkKyO(e z6q+oWkg174BbZwz(jq(^6;DU~ujlEg=c%VbSC&+T5%{1Hxc6I0fuK=s=H;qo{IZZw zE53c8__ixc`j&nN5A`jS3NCUFMH$02iFi=@am-Hk_~LrM3TMRKKapR3^h|#Rv9&cA zYFG}I;3$#X=XD{u)=Wyr@S5feHN!0)vez_a6(YTCh3UiP!q~Cpg+&c3%z>um!e%R% z+R2L2SH{Z$)nm^0GI+-K)VpXaptB3L3*PU=OGj=VE|{@KLa=7GL#|_?y@qJ3wLlKd z;sH*d_5xoZK}_q>ouV_e@quDxBt*$I>SO_e6=<{zkAkKjJ(*1-qiR|?MzdHeP&_n! zsA!tSISY71SQD^Lu_s{7o_JE(BnOsYjWiavhtk5D$PW=$9B9+4EUtsST1e^bhS$y7 zpRUmrL^>-CNY{DsvmO?eZMwv91+yOH| zh>YUcO;lmfgmBl#=7(Bc29WA9<|*7X9Xn_(%vljc=ADFE4#BNZORrYN`S-BY1&auk z!_w8ZJ<)+TCK@#?_4lsg3gbAhqQ4it5}R4>X*Rd(L_G~cJ*J%?)!&4t6lPcA5H+RG z_abLA3rwI@K}=OwRkVoI^W26SUuY^J;FAs}dWz`0(e05rMv+i{nh%4_l|8ny)OBS} zC>GI&2U!%y2j~%@zFrD*_(wJQzL!a8N$lL3y*M*Q@|r|^P1Ugt-1HMWe!Z75}X1^FdMv{ za$SE{eYFR=fn0g9&b;%UHc=|DPE!`rd8C7874UOwYlae?y>0tlVr3C34wCR5XGFSF z?xyFX_r_$UqvFr$M5At#$-rj6yf=C@)+H)JT3dkph`m)UKI`b6h^tBG&Iyr zP#mYFZeF6?Qcn{7Ajxp0j=)uNje4{(YC0E3Y+3Fdh91xi9eYHki)D-AiaNfZJ3_wb zeM7=(j*3W0Te~6L;>NOPpM2QrD8qPpr;+c?b=VfFWFDK&%c zaO@Fa`1`7_4^`vA;&?mtgODu1voF3Jv}H|7>k?n!|C=IyNJ^K854;dx38a%v{FRCA ziEnFeZEb?jl`kVcEc7J@CO*2SOZ8O)^&@HRi#Gq3Pt=|@Je zWgh`K;#1sAODg)oNwImWrA|?wg9CQ`^yIcK_2fU>u8EEp^?jYj>;k_^G zOYxXPEqOnt*VA||<+qgup8NOc=Wg;@IdSY5%95!CvT_p)EMxgi%eEUKHBYV5&J2f+ zCrpBg`CosS3{&bHCr^;@7t0c`l3w+;Igw8KA05JIz11N@8C!H0H zT4>EgU`9AR1~gcf{6hDYodmfb<~8%_9BZzc_yk;%GVDslO7)NoBri=ErO^VbC#T)u zUsyJs@yy0j`C07F#^S(PsXGP?ZFhMlwu&e=Sb3-D03cMFUU=`i5beCJ? z-&rC;KW|RjiE4BjB>L6e=)#i10@fUS+isY`Yxwy|(z?Cvg)k}8de^vCEiY@Y{UrQC6 zH6ai&{ZRnyb9kC8^=y6K970#$;}&0%X@J0x$E$=Mq{=v~22TWC+6OuXLJT(f5aTK?flVEe z=#hbcA6TaH8&Uz>?M8z-R*=I4x$95&sQa$JtZ1We{T8kOp~c>Q>J@JPn7g61J!Z0# zal$nSpzwQ^Kjj(ygSi5!Bwi}0e9s;IP|i}`Z4%6fpZ8B6-4Ze9$a*VM=OeIw{gz(q zyRIB|jP9H|EgHzrM^iqUr}3OpGl&5eIlfMQL}=1LXdCe43)NvMya!;p0)kOjQOA`S z0hmogpnrrJ3zDm`qPLW%ELibO`m@`Ye4okK1z0g(RnvK6+U1mP+lUxWd5^K2Pv{1L zu^g_w?-dTQ=_I@1()S;|0W;lj024O^K)D-&^TgC72+7cM=$SsYDc9-w4DKr2^$$S= zaN)xevsi{22Un9s$*blF)V1!tBDq}|fyBTJFjwqG;T%SsFkUDy<%b*n)4 zqVt!5?@cSN1UwT}mjJe$6ZK_f8hz<5qrFl)$uhd5&CQiOiF98MI%lyhK`(&5gzl(C z3Cr>6UXCgXze}NkjlruY;N0xZu=qgu_K4s=t;NRH&i3#tzpfYiuCApbd@FTZN5&WdXHY)^NA7WBtnFbA_^I zJwi|(Cp+@LI0t8Hx&k@acwzTMBZ|poRw}97gy3fDG)_buG*ddY?+BQTZ$vf^Ug4iC zxZGEz;p{80zkWP%lb$H(?WtWh@Pt$7gG}|NEMdMwxejx}%@tA0jO<-MPIE+JZR!gS zj(rGs!t5x$x`>ep%>S%AscC%2`jPxhDkEYqK36HwAXeyL(uS)NGKrw#L5 z8W!*7{)qQ9in!I*g5a-o{Rr~RT0>$Xt5{%iU#t$no6_!ED8flbh_vJdq{zeD>JVEH zWQ(I%qd>M4fwZMT%B_j0$QaY)Mb~`M2aix)HWy#3LmG5ODKQE_FodoD>JWqw8fA1; z&0qvchSI$IVHwNi&4^>>2lhZt72FG6tq!r9p4B18hu@ZMl;LODM;ZPkhu;bsN<1Q; zOtIs^kD!*xWM4}OSU_#?bEJb&9_aJcAq6H{9a5tFWIxLHtPYVVMpxyKle=I>NU~>v z)QaSm>>YZ; zZclA5E0luNWhW*vs8yAw^~lj#KWS*XN<1fr%7j%#o4ZU16NzkBY#XVDJt_=;K)`I` z9q0*AQi{adMV+Fm$e)sAVZA`qj#ESy3DnF}i`})Dahn|dhG_x zD1vewTWIS39lG(GD6-FHUU53trVfj>OjD~egH@xPz)C)czYU!!icJ^=M!?G&@6t^U zC97@)rL1uQ%czG1rt!D@xnSx2JitOyMJ|&kpm-~ML5V6wzzP{>=%j43ghRMuBDhk< zi65KeeFw7wfUI&gMwBN2dJSEhD~ey&siV9^a**)pKaylwga7ON&vV-=u0$IT4?rMG zMrF2wU633G7(^lugA6b*h&23fl*gc3i=J$q$qib^l#Rj-zmq)Wq~z7K4$t5f4dK$~ zJlCvsQM4e56pl!Oa`z;Wzv4`)gM@_FFmn!XgkHtoyHLuyk(jIR${&T^gThb*s6lhW zMHUibomMEltODyRy>(g_>3!7g88m?Gv&M-=&EX1}xHjH}bcW7Z^-E*TGY25_n z$MWZ_|5Av@bH-76g1c^fkf6nm+kQ`I=Myf-zvA{+iH^yR;H>(Ye}G4nNSK|2O`?)u zTVPw7PMcR6S(sg<@RjH4&g_Lqukf*I7afe#3DCh|(|0CS9-SB;r^_$WAPPeRf)>H0 ze%vq32a=6m?BL}AW1*AJ5%UA2TXVi_jmEZnzHAp8a{4cc6TnP0S>BotUnNWS_*@_SJA8;2pyduf#)a&oZGZqra~~Qi(1~aH-$Y+bLdweiXd-`9p!j}> z1Ms<2i+~o0iweNVmB}SFqkTBe^TXDIS*9ph47hI3#p3IaCOp&~Ni`G%dfGY(sY!QmP8&1H01y)_MGZ>z=I zO7Yf|mA$POZ)@Q#gS_SlYdA$du<9d?qPhFQ-;x8k3?Ma*I>q-de+Hc~R9?jvz`GcP zTJ0A8LVhVqlr-6zGL?)%m1`hf(zXMuEl;dv0;7;b4T=!5PoQtav6krUT|$`kD&9h{ z@YWMTZ$UqN3&FzMKmqt+L_uk&&cs19bOmIgcab;63AB|5XnCz91TgjEf)d^+$xE`& z<>z@WDdYxJS)nx|k%EIOGw&piV~#AV8QB>I~?5;Wmlr={n&{>pJ#r z4@n#x#;&awyZb_-MMpi5u)a}}79eT5q-krwC(&|CRE(bpAl(C~Ud7nJ%C3@@nS?Cb zx{&VHt4566CCV5SL3`v7Sg%&{txyKmtAlAYj3i)AY+_lx*aWxoTW{}{KvdFZJ&nWr zQsbh$wQ8CQ(uW>oK$@Pb&;jXBQZfdPOj{rVsN#%+cg+(*Gs7tD=`dgyG5VJPvW`-c z2kRsfilS>+SE+XIgDO>SFO<ymG4DOJmIBi72Up9x&n9e z-sNSi2Y%$M2Y!?H0{%K$(KA3w;zaUZ#%oM-(n%)i6e8^uz+?v-YBDdlo#eLGrzQ*Y zYB^yvST5oHv-hl!liH=XYp%F_136wi(0sx|4Vo)OZ}adImf)jcp&Ee=Bm)ZB(kn?< zctuPi(TB+TVQ=G}I-p2i2lfD>6r5Ex@LP_Cedxc32U76eR0Xbxz*5$n1c~kdOIwln z)&R?1VH$V^Sb2TK{=QnN2AK-z5O)cH2zZpKtuCL-qf7-2?&L=bT=6s9=HP}~+#wZ8 zygjm=eDVq8Du}d9E^;bE1_2nzV4jP}0P>a(?j3e1%UoL24arI5Z$=}wetDZokU-1g z?vo%B-QYrECRUdUq_gjpAB9l(i*_jddPX+VV~e zw?%vi?ns@UlaeXLhXhn&I?sCpDnu~^R3=TOz^OaLC0EfTbEWp_Al<+z(8Tma7~->O z8}h-w7%QqLS1?w1!bw}LazR4DQu|XDx)F?#BYFncJO8B70 z*?aX;ZuIECh%;2Ly;*DSsjyfq_79m9;Y~XQ!#-~zWe_&a(*9=vR@HuAY@=jTc{pSk zeaZimr5&AYk0)(vfoSL-Gz{ClKWcm7ley#+Pcmn_@T7Kh|7L5*ToP|}_g`|X?I)6= zr%WoT?$0pvk(%3!=gJybB|7OHl+ zyA7ms3(UF6Qrl;MS0w9pb|&Rw+8AZnl7PpYa7JdTw>ZgaJ@?<(;8Hd@2e4#Yw2*2{ z9(psIf%rYutz1d$Drv9uZ;Lwk_WT%d!tF~o(6Xt*$cg$1p$ zb8;*t#u*DK(FmT%cB295$~EmV6vQdat&uOM{R!zEOs4aSqwe46IRW;7HwZ;Yh4{3w zRmgx1?ex}X1?k!Nl3s71M+7625;kPQn1St3{k^vX+L(*Vv%EEKutApAj9h zmRTSchW4>Q9PJ=Ku*L}wQR^jJ-m})M&RVyZdz#ShlQI~$hhyMvx5*dTB~k_@OZ?7` z-kJeO&AqtAFI}#=`_9U*Zk_R0<4W3&XB&kE`-yto&d}W%S<~(?e(ZM2$zHNDY&FVO z;astYtA5!eT<idY#P3j*sl0nysH}{qOc&yC!#w2RgTmhBAW5J#0ZfCX;S; zvgdup=l8gZY>!s$amuPo4R}?v_4+_>bVm0$Z%!vSNkz6*YX_twVGc#`d-PA*nx$&h z#i?rJ8sbw6+4^v$!z$PB%Eo6^ZFV|1z$fkB3(mz>uO0t6V~5atyXG1p zWXeebPS`Y-_F9iYcWsEjAPH*zp%^bsTkUS8?2`)>q;TBI&2<*n&OE zqSl}35g#6`vXg#Bp>16HN4M09N4M1cqnEp-I0?l*e5O*AdWOx$RoAoKN6*^+B4u95yHJto$ZJLB2Z3nmAs=%#XABO z@9sXjyNYY}B7s+P6ZHZNreYS!*T~0+XpGg;$~}4;}>goak^=$W+ifQbB!G%3=HxPTs*9})7_?cndGzkMXuk^Y9@RldkcfXO zt#rK{ard+bJcV4k_7O|kj!+s5+HX$CtC~^(H<8TEw0=Z20z3^O zCL2WA?ugYbx^T9M?lcz8M?As&gr>2QcgF6S2NV6z8*~$e!b@2xU$1~A5fz}U^oJF| z&QuI)F{j#%{Kn^zJ44xoxE*P_0PR-{8>lG*Ss--=r$_Wh3Z|K=>p?0GNI?WLH>*X8 zkdfo+21Dw?{zzRg2vQde6Dgw3fsxwUAF1;PLF)WrB1M8?V5Hjpk;(=^DjOzJq*Vq+ zYHfd{)(nEwnqeYE%4lGuI{lGq4}w&Cm`E{CVqm1s>W@@s5TrW8M2aNdz({TCkJMR% zAa&L-ks?<UI5*+B67Kn}&%LgDnGd>h=ARdfgyMy>6ID zF{5Z;q|WY-)awU9>h;4!YHSrqy{SJ^ZyW@vHx3i2@l_!8#{NiMI0#Y~4ihOxT?ZDw z)A}PdGYC>M!$fLw6-ce`kJM>{Aa&X>kz$y9U`|c-N6L=XUTDuCQPU(--^dLx04-={BRUmb0f27t8f)vTJ z;q|FgmLX+{8A}q8AWAJk)Jfe1hEPXYF?PeS)#|C+>d~>Y2`%Nq5&$KzNV$-nwmcGr zgbw5W$|I#pkC6uSc_c2BS4kQ5TOp66=GqK``4kqZ!ajKLHFkb~q_zx#)Rti)#kns7YrS>-kve4%q)r(oQm3r~sV)7HI&To9 z&Ko9D>sNu4ZPT?pGwZixJV9ob4EXT09tVmJEPgiSX*p8hx70RqKybbr7Vg!$j(gRUl=FN@@L>^+F;KR zPJIxh>cd1TTLn@h{l!nGew}b!idDG7<5YVUNR9SKYGe?kMuv%0XB9{_`y(|v2vVcN zMCzspcR^HHV4Rrd1$yS%0Lq4}#S8VIuXqRUq}&{zzRm2vU~~6RFp)0;#w4 zN9wJEAobQ^B6apEkh;7-Qg0gsskaRism-fE>R{9#tIG$$>hfV?b@2(Jf*ir0C|@amr=d(h*wBunP`qIS_LP`k9hgZP#~JgK(~6R9_^0;yJiq$USJ zYI2xJZCeFW=k`bH4TB){hG8Og@hXtIxIa?c20?1uzg48p=#SLtgCKSKFp;`s6`cA{ zE9t=B9ZUyO?B6PCPpyR7lY^l~v0%6+p$7VM4X1w))F?Jg z)ZVrV)F%5QHZcfV6T?L6@>L+E?W~qBE*oG3kNHi*OCTQ9I=n%bmYv=gCAV=9K5ZN( zRu3%4s(+sCFZ$-$zBy2y?VH2Mvwb7SWEF`ve4+k~x??a+L9zeA%vw3w_LUWqQV$K3 zlzM2WNvSXAyc=XK>Q`4l>?;Ey_LZR`_TXv|duj#5o*W3VCx?pIL#sjT@Ct}MJ`iG$ z4;8VmtOl_sRzU3VK!_b4Dq>$<4PsBOfY=iQA@;;j5qo$wh#gu1v9Aq;*w==N*dwb! z?CUEac4#2P4h41IuK%C9V%jnR)g3hDdk{-_2yw>_082_^@jdfoihkl=L{38zgP`c8~S6leh{qI z4->1uTn$#|^~dVmL9jY^m{>it8mu<<$7;hMSaGiG@HF~gtp=-e`eU_u5Ue&26RU46 z$Ev@b^3u1&P6gRJzMV4J`w`ozZwn3f=VV{j*q!B)R&#y%ZmhW5#Jln0?seQv^xRGM z+_j3k*Hdz;=Wb2U-P+>rY)Ve|+?}%Ceev^&d;ZJp#MxT6o;_`obCT%dG;+`L`2YDb zo9xj3*9?yRB3I(2oJdyZ%=| zsNdZMp#%C?TMZl;v^n{?PR-ZwQ|voj)R1**$Eks3>(|qM^_^7BhQVy`Zk6gB(3*cn zRUFqtF>NUlU9EE3$M*m|8o+7 z_dqt!3~n}dQkYTgva?!dr^uSA20EwMS@AXels0ZQf#7M@sT`*U_KUcl_EWKr-Y?d9 zUaA;2-<*{7WQ+aHR~No6E?e-HQjOZWT2_1!bPTnsk{baOi;KU1pd zE?&yi?w=8st(gwSihU7q6Qb5>>&@Qr)qxr9?cP8yaC6JdY->HQ{7Zn+xj2d2&tv?} zvECO{vr%>8hC)>_MHgeO)2YDW$i2ruPg`f`0TI(CewZ4*ksth`pW=u8X5P&Y8wAng z92+xV%@5l;y`3NSp5DO^+YnyH4_ho=!VlS*i})d-b^$-cmgn)q%uHtUk zj9)tAri<4GwY^r0R+qr{SB9Bw@P(Fjam%RXyQ+48U(!`oCol0urnR>`Cw{dchiQOR z8h~?D%ty=EL>_ajjn;cKfF%5&86#6298xvYp-@976R2*qR93-nSiD?!mCt?b62vJy zh;>(N#c#W~SL_>H7NJvY>raK&bR)by&rUE&Py!qffd0C|NKk>s{I%|*4`^?!bwTK- z+_YL3`kU4p)t^uol#x3+MirC33VqaSy=i^(!?gc5r?%8rC^+M8tht+NtvBnv5%k?A z=9`nQF#Ra`++0BGnd;_bD?pgx;6tzc^MA8sq87zTTB+8WIj}h8x{O{yA0h0NAzWUKu-O=LYE&} zTs-)tz0$q$8(=^2ihej-Nf#APT;Xx0)3~)WVxmAmQ%63c=(bxsqlg3LBzRI9@8O!m zSn{{EOVCS|te#bG?Nl#8ITcO6o5z%YJ5P4ZWt2mfGAg^QTjUa7h1-m;ZQ6SLv$WRJ<2fmW6F0W$X`~Y@K9=B`Cm#@D-9@IF zVBtnd_+M`*n5r%Z-dVB%*==3CjL`M~1AJL!FQz|9QB^M8(=i9XGK-yRLs^73OYKI- z%O-m|(1n9g>~I`H51vW4**6XC_!9Uk=z7z1wAqvQz)z{kAY~B_} z2v!T{P^WXKo6!-u7@KWfBFaFdvDU>@syOSfH@F)PNA8A0QR^+bS-Hxe9Nu3Hs8*R zEm8D&y20Kb`?PcUMeneKdSZ@4arZm~dx_RLX)8k>xV~;f>l2AM*xW>2Vl~IjIHCkxzIRX` zP-e-l*5AcCH6#TwJ>lG(=8yT}cBT*LAC5bzTdd9V|5eD-Vr%|N#l-(_;x0Ay`_pFg>~53L?)Iehw{dYMl5ROmhx23N=G#i;?D!j~8TsRcaNEp6f&Z~% zDJNxpH3q^2M%wp+wE3kGoYusnmg#%0sbOCnPPoy{(HPJgEnHK(%g<*ZImh>WAk?Nw}y6eVh0*op^dn zqSE%^e!DcVZlNJx@v&ncu&S3-z!CQ$+I+^EvkIQqC3*^!1@H3)#kS-btLg>l>B+Vw z`d-|n*$bkXKgvsx?u(D6%wsj)=9UE|$JI zTw?mMf8XVLA=8b5?N8?&U|aGuT=$aVX{+mUKL}@=@w8=Q9``EGfo0I|z_908$w}0?~ zdDB1}+}`){>L?0KUaW^-u7UxD`?J@|L|W=iAa3mcmi?Rc zmJ_@BeOvKwEB)U#{M$zVw`2b8SpT;z|F+ft?R3X9-gF0A&An3`BkALGkcusV}-%R6%rOU{-R`G8`9uH>W#3U*V6WxQH zZfHMvL!Z8^_05&DxL5S3T}yUASR#N0x>qK~CGLVbH;M}5>f5+Q_j3y4 zX*m1pNUeoVQwLwS8+_C(Uawc_hX1^w&qqS}#zJSz%8yWfthfA#FF#T)uc}84p1ftN zdej#k?G~+Owb@SHee!6uJtEX}>@gSdlU*8dWV^eZ?#VZE?%UD3*m;=fl1Cgi-hD(& z#G|Hw&PyfsNIJN9q(c@PvpQYUs97Vl_-0I&fm<|37H>d8xjt-18~%=l=q!4$lN2r7 zC3xff({u-i30Fnv{4Z71X3vXA_{~jhuhyfuo}~GodiPJId)fD@Qg6DO<91bvfEGV# zlW3r-48XpGUt*|?{_KYg^QQF+%$Ln0Sn2$3j;o(IBO0xZCYAcA{>1ig_n)-NG3yn| zkB=z4-aS^=ZEJp<%mBAsH|ED{>-jyH&hr38ItIar;;~3mytmRD^yXl+TO*44;>vM| zsV`izTjO`C%H9)Z`1krQyeIQ)0B|s)tL&EhRB;bSyPNo-Gn-@{O!bW8S=2a+qY=-wVB6nC{w+eZF+l}=n%I%qv2)J&fQy|tk^!9(|- zzfhZV|MUlYuW9}=Z5jW}o(oJ0U-bHanH&2twVcJhttZ{87*#+vds|ORt;@noP3jZ< zK}~`!jkMf3Y{62DK$F`BgQL@;?bM=9f&z^_Vxf`&b`f+86N ziZp;EDDvw7Mfzzwg8`gjb8K46Vm2B(Cf`SB8flLG(+aIU%bOmY^A-kZ?N~bB{6Qiv zLEO#BbE$J$OFtNXy&HXHs%8k zvg#f*&wY1tHgxD#%S3D}hX8@juY*93ecC!zb9;=nQMJ2q(DS;nTPLe-yg0ItZc!&U zV|yZ-VdAUDr$;%fQLlujuThYKC#-eTWo~R-DN(E<7_;U zhSb@|6WK4Ds?$kZzmu%b+ZwPEeM}`dW34-q^#UMA_KvuS?G6-qG}MCdZtaMgKTp_} z7l#~V_qg-UG`5YyorMDGRvLnr$Rbp-IW7Ex31MDJmQn>3oAH1?mXQV)A5^rM^Kgl3 zMqxi0<0l~2y8b#mvsjBBeKZ*d0a~-O=!v;>`ImtCo7K1`GyN=3RA5rX$1X3I$yxP* zCo#DkRsy?d&h2~`(EKGA)$6RWiqo__9paq2$$59+;Yhao(g?=@zh~n@_esoWZL%=x zCULWktDSK!Ep{64tMYY8D#k>hz8U$rzM+~fA=Rw061gSNs=Dcgp5{~=%6GS%iZU3g z!~j&|lETWY%{-!-jH7<@*72Op1_6U1>HTq`X|0R?Y8^C5<_C;bTe&HGS>PI50+-qq z1Jy1pRlAz|60jD+akoj4C^VUbCKdNm#1mQWZ*P-&Qt8tqi2!R7kx`QzD=R6nbKfD= zto!4Gxbh-vGTSCU)26Fb>*=x2}`iu$dpyhIjEr?li0)#C+aC7 zE>lNJOF)})8oc|mxsY@&!Gg3Pe0cj$Bb29dX|k;FH3+MoliK&sEmu@}QGB3mMM=8< zH|v1Oj-Kwoc+S=Ir@Xi5GIR#nzQg3*p<8r4D57B(=|cHYP~0eZW{k7jm2UM33pGJ+ z){h+_ufv%zJDB*ppuW2!euwTgbMFAnwNp`!TU6iQk;b>D=mlkU2siKYiEEuaPYRX( zcn1LouhOf=bl#o+m?KWB-XiQbtK&btY55# z)7b$NwM8{H@5IJAf-^N3lv8-4dGb4pkr~;>HE4AP;s}6%GSHh~nkjaEX>QMk5l3$v?DPCIk2$q6!u5%e4 z^!(B&#<64d_huTH%PP$NVw9#+`|Jm<$o73wPqNysj`~cGnWNFVZ?u-xX;f6G85ImH zf8agvWR+c=s`72(R~0c=@888R3n8uLeT+{3be_@avO-!_^#BxCcmzc)U^o+Y8q<-c zFG^Zq{(bsIO1@BSHosXz(OVL8f5TE3ZZq(9m{ucatLpBGfzG{9GuWzEJpXG*`@x&v zdU3MIIPnz+Z~l|T#fJ|ws`*mQ-S;RoEq{fex1J~E@~Eseb0qTujEB{T!^uP>JB;$~ zi&n(bPE#Pr22@&4B_eQ~)i+_@_nxH`K#VzGU)1Bl6MwP6f4xFO12jRtfhM{QP;YDy zJejl`XT|Li7ZKqmJIEd&r&$G<7^K~nJS?Tok#z_8)d=r{bW{Ocm0=~;m!>fL7A%6Ks(Rzi`@A;J1K9#@BE!6WzHfy6W>q_)#5CX{bOXxOXbHbj z;r>xXTW?T~1)JQBqL%~-F{)!y`U=F#e9A_GD3B^LJ{hSb3aA+C_+EJsLZR5?0NljI zUAnlLivzj{+|oD-+$zCieXzmIHwx`m8mt>xo_KOo%?kWh?{cITT0&- zxBe6Eg8bIVedshR#B{{ai^1oXD1XL{dAX8?F1> zKo1$uNKroOb3^N|l#mBofDf?KhDM6q;(^5$*f2oUJccGQ?T%IwoKntPB2wXy-QtL3 zYuwO;h4zSEj39Z8a_>mOU&s;9O;n;dO;R)xX}@@W&SxRBs_YsaZN3c`(Shg(^v#^B z&zm=Ela%Y^j7a)rby}-37SJB01J+ZNhVmcG)5vP{tjrQiWEauOj$pCk-_Uq{X9uOG zG86?CqMZ$$qICYum)l?=Ph(EaDU7OTqdu@{3eXiAl)WAydFQ?n?Scg0B+)A2B-G@| zQ>9_T%^t^S%ij08nh@=aS%H@$f>I0o?NDWVS}+ zO-==@WC_4(EO3fD#+52PoQiunB?FXmDsKR*GC42Bx@Y$ioT968MiB>fMyXvf1%)*- zYlRy;GY*ZGIMnnU8k1ctW77Mr`~?oL4?hU1bTx?uOCG{pFRe7yn41`h68|TLvt4#F zo@FBH*||pn7X(p4(!{b3wQ$$l2}svc>53qp0;;3gC8T;xK#9=jG{waH+SH|9ioMwO z6ss^rKdXd-H3=kg>CtUS%6gknK@UTzneerk2_|~qSZLQlfo{%N7d?(^>Jd6FYR3VI z1_%glIsz}}=<>`hvwlS*Wc?5?^{A||b39(JF$i2dvC~isSE&~&|F{Pg#S6r>_^KAH zIzAYMKdjf#oC@g>0O}AHXprL-i}~!tG-$PuRd=bwLHk{daq>W@VI_q{g7X^~X_fTl zrAOT(E)f5H5=BL#5^(uipO z2I`2Q#k~GSO1xa&&I%K+x zt|Tf3f~O0Dx?n-9N)NGmTQ&dM6wIChnk%Xl^105GvH>yRMrQGYjk>nS}5c}>M z{1X@lQIbM3vWQc2*ndisx(d}^(^=bFzk#~gEvF~=MeykzA>31w(+Xo}XWi~N`m z>KjR+=}w^rn(8bpt=pKyYYfV~9dUIN;HNPYz$t5E=>fAg7IY)3wWC;k1G1SgZ(Q0jsA{yRngbpEVie@gPE2e-vuNeX+3~;1H z>nQH>&nWKnxpm~vwh`}De!V%JW8EKjrSm?2@M5fm zq#mm)12Ay4E1X2D2a8zxB*oPXEIS;FG4T-Va}P2B1Bc~+gq)(uAa^Y`@q(|vey*u~ zw@Yo$Xpf7wN*2;i2*0f6@rrfOt6k&IQ9awFsKxB8?K>qY%qX}G2}+ZEk5#)0m9;+#CGkGDJM3}wVGy|^Y3r-JiyUlVc%%APBF5Vd zv!0LJ1>O)L*}{^VPNUIc@lT3_l6h@tDqu^y91X=34N-8~S=WYu6%0m>|K)QAIs0ok z;hMm?@*k^67HFG5CYJ2C7&GK8wz2P^Jgj+3YPIxY@Z^A6g}{V6^IX%ddF0q-@G@q< zLTZ_{*je5nyOPT@9}lz5W|~5?VZnBxG)Bz_mlqGVwt3@9Ro5$2GUr;hz@G^?MT9^!LFQ|`!oWB}kQ79% zP&*+Q%Z{5N4-{iKrxi;P${1}g*wmxEvWbcRd6h!!?0f+cKmn3;4+#Ln38Ru^~gDMFm= zwi+!yIl6=&ye@RF3!sq>mEk67Z(1}B-e_8t>Aos2XlTuFe|q=`g6If3ASz~m%@DzF zQQFETx->@EZ@&nve3SMXjR7;pE3Vm(9~UdYYy$2O11u#nXbM6_85oRc<09L8LhGMG zVVq4l4o__oCS;pHmrg8L6>yB|tD)MUuuF{2=&yxtsD05ef|NaZ-Q*2Bwi%+T<@}7v zP8optWvsF&5RNhUp%CQZ(D-sXi72d*W=xs)Hsk0CoRNS>U(Bc;vF2nZbhgD+XFvD| z-a!S%D|Hz>C8gDa8X)KcVHh*2V#RTD(R8Jen}`MuKk*zQg2rbdhHCb)5$ni@ieWd* z&WsqYcdPSsaz8VaMlgQ*qjFkrm5bZ&t=#m?jD#ly%~+6i6Ti1+aK5e?A7pOoGFO;Z z`rV-#q6da<8kxsLH$~^v43P&KoJs)+wo+LVipsI?L5wL#nM^JwC$^%OVnU+&Jx;uG z1Ei*NGNownk6KTdZa1VY*pdab=KIA_mw=5GrZw9)5mOS~9M~FX;o0zXzr=MYL1>bcD#%!dg$& z3e0a9ZKfhk<1Fb9LTn7wt?aFHm^%NQuVzZ7Ndazf7FBQZK>5cDEVhp`RK5(39@sp5 z0AzDZm!Av(R(6_5)3#PE3tCy7op;qG(LK|~r{?vo3xTendVlB=U`YT5VDb=#U-gYY*qKif#z2+VYZ^Tm*47$LcA@qx?$?dxLD^7Q*dkhrRms0{R zd+dmiu_5R~a>%eKJteK?0KL{l2S{nnN8>HR|CfW3W*pXFq!cZNTG_H zR-%s}`%k6!7Uk<5Vq53_-Hrd>ho)q=+?Ec60scO-Ti+;KqJmra=tku1Bk1kP(E;HE zAb(60l!OR1@P9w_zwQTUk1HI(;hq-!zy(_bA9cZb1iufpcEGX*3*{*aP_l_E+Q6FV zP&*VVQ{B#4prH0kRWRv(OnWULMxNFvSr*oR*$8VWKWxnC{;jbsEVS{dNK=1V@R1mu z6TctUVK?5};#3N4bgSpf#)v??aSfA`y-hDuN{0!sr5AzJ>H}h7d2L#y{ft97a~sEb zUPjOqeUt?MWYWHnkbQuIs4F=eye#-O^8roF0*l$GjR?ub&YC*1VY|V&BAUl3n1-`+ zhw&-GC;Glc^50|JkTmz;Mi#ck8%a?DKw|8xWBsK5jo6jZ+~Rr60oue~2eVPZXhbHX zVm1cbsGF0*#W1j2u(TdW*bw?;jWsG`L-tg>b~M{_ALieTibi9eKA=;{c3~jnFmqDc z@4K{c)jesSByC;GSHPqTOw27(jTW#XzoeRm?gFc|rfVSyhgi&FSCMse66#ptJfoEJ z{;Ex40~?~3mLGi^!yX~Ph)f;Du$Wi8F@;-Xmu3yLqnK3JFzi*_#DeVKzbC;q|VAdm6j?Gf7G2FPb}aO?K1_RLZH9eLWoJB^{#M!Q}!q- z4(%W1j;2S-0M$WZmS{h*o6AB|M$+O?#lj&7vZ!hyJ7{LqCGJgYkM`-M{c zdxVnMAjZDz4tZ%BMbtiN8i5lY@7aMsTJ5Ao>1_-mODKgHQ5TA62S&7klglO$7_ZBr z59TlP9CCwbSzD{!JF|?+{$XCOZTi{VJakVd?#pe9do)D;jv!vzqk@bqL-e$oQkg<# zEK`sr+HHe~EF!#R*a(fW4=Xm5ZUy|0N7WAU2cu2_%kYYCF_Z<5rCauvW~EF-3n?vB1)xzkHX@e7iH&<=V`7DHHZ9TC>#)C@CG~5hR<+)xY(EQ<;>PH+@qk*e zGG-Le4bK})DV5V;An<%CYXeSzv}15yEry{}H??^L>9w9(6aa#Fx+o%)3Lc4vixMRz z3MCQ`7X?t&P%`QzNYP%v=w`J9<0Dils48a%#^iKce9;iyD2+hk7$lU6kUOpNZRBXJ zFgyg_lGZER4$+*jwgrGQv@ulYwDk7&PBbSmb5iT5|4c^BZncD$%nNMi!}r1P^9W_v z>vx6TYFWr<+_!<=#?XNtN?ho`K@Btb`n~hYNms=>tX%25S@!dBWAMd3m6Dt2#cj=0ep&g5T;4vmik_Rs|U-|*lCF~{4$l1rOQ?I$h;Ng>HB@_(PiuBzK|?7 zHl2}iI)&_?qy&==1+gK7l|}?pjMoB~Doj#3%?Xd0y5 z*Fk(luoomFLr`pdYfC;~TGGs-mN-3}pl0F^{^sBq>T}ZYUn80+pXQmBxZN;dHle2*g4S3EEAK zGiN{p`*&n`u;3gK1ns6_Q7_m)DgZ*IcCx*ea9FshlQ&xxqm8CMhR=S&RNByiNe9sY zuv5x7B@Ge6TGDi{zR`A#_PQ_RPa5t^BjJlCS3=)M+f5CI)ufsYQIp!~;SJg+X`CMJ z&{1!2_ct@$vWi!R6Me`brz!yPZ0i<8+lesBmNS__C+LwG+}>{_pHy4r0%@y+6S;l3 zi!-Kr?-7&7GEMLc7G#Q?9^R{|GN}-%a{q}F zDa~I?DCHB7f_2EoQ=pP^)|7ZsVgDu$P%j;8}`T2eS2NW1r4)&gjh+7c#})5GoJuzA17zppMx?|KM4 zJT;PrIiwSly4LNJ`pu|ZL)puM&tvPj24-?u04bzm8UkCMw+V5=nnmXE38R~d@PdKm z;RHoDz6GYDc&Lczf~1#9_7rEE+g0K!Htuk&PF!czHtB!{hU=z@9=%AK}{PxVmw$8#bSyt=>#7N ziwS$DY}^P(I>`*kVfREVEl>QJTl9!)9}*V9U%{Nv-5crdFeClwmXq zVpC=lfXFYzC@*;LiP6vTzAJ9iMPa*{6hMR2G0`MMvD6M3YQjoqV4IFeAZ|kFs3Mq@ zRHcF`BvN9FK)$p8Y!4qw|O2$xJME@o<~k=w-R}{wGTKpNJ=OAT#*txk@{_J7Y2*IpbrrN`s8Y zdqgAKH&zz?>-e8=)QvUFADREY@UiD;y{-LDJ};pJ6PQsK>P$KNwmM{LKcmS%OnZdhoF6*#I&0657@z)UD!-Z0n=+9c;0I(kVm*Gajpn3*5#5B5*- zn32Om-Xrp`KiWUzCRP>4dBs9VmELWN;W;AE_*Mvq7#D_kg277&bs>2mRx6S}o`{C0 z8#uL)QIN{aOpUiBM;N{gX<0i_JtL0YQP%;2kz?)2{BIl~Aco*t>~-WYGiESo)$e(D zsE!eFGwbZa&@&o_m`q0=fOzTv*qqnMYj#ZT}e$Y7VTUz@cwTAp_n zwOkfF4N27dH?a(HmIY76=pNYbmqCuu>6}5!y(~BwqgxzfTG-r2xtaBo#;G|=>;)Ci zlLFJ|v|H`d(jY5?=|I`c9!zVfsw@HWK6Eb{a^@|f$L4d0DSBW9tDFY82d@F5m-C%; zpA!#F=cC|JPbr=fi?|GS!@V=S-kxcAC3h(`)Rg8fMOw31G=sUt>Z2`YQ60HFal3{h zR7uGkcF@_Rwz1uh>l6-HMLw6B*vQ~YQqDKQJ8C&~6jR<$dMM^0&QS7>PERpeY*6;H zN^VH%=-b4?QT)YeQ~T*bTQV1x@;U{hJ)J(IS@a;`L>irtjgi`|!xTwX%od}ntv&Yb zM=7;Wi-4@bba{^J`(bkmE|#fVGz>*g(FQn`dZYxfkB3j-cW3F8YZpFiXe{~}RV<%u z`I;4GkFiINmX|h7zs_qH1_bcyeDTQZeDTP13V4~dV?I)o*ZC6SZru8gNu*j=lhTH? z4+mg6tMHKVd_l+ z`*^e@4Aqg6Xt0H(vt@lVF1N$tpEAoxvPD*(Dp z<;Q(?>SBFDZ#`*!g2y{t?Q+d>z zO|}qbSVN>{aXkHcZkZ9{mLL@SI zi4t+yD~-HC7j2hR7AOWykm0~B^UdTVh=P}@n1t%kHtIstp35*DVF@*;7nW*HSn7Ae z62=tf_bC5Pv)BNMnG7ZZC0HC0!T6vep-=&~M}Tq%X`K9|2I{kzUCB|MHmpzjIFy1A zCRs`;I`Yx<*~6*Xo1N^oC3lqU2FtuVIi7$&zV&Jzqhh)f*Idbr_S;GaIvp`haxW_e z0DxCNc-NM-Qek<^Hz40dF4JTUvqt-1)aXo zg7?N8v0;dO4ZzO|*vl+&6@vdR>Z_e7!(LT$zuI78j7y7h%GGaLDr>JzAEhM_X3}?n zx3>R~H`S&(X7JuC3Zm<{ZsUXLiOgG$r%IguWl=&+ zBa$jfHeNeO6kxd4*(8z$Qe_<4_t6x z-YaW`Ea&TYm8SMo?5%%X#Z=p);&b{yH=E$se-}Mwg45&Bz|h;{-uT`g_r~}3IFEnE zJ?>^Ww8x?z$SH^GuZEHlHpB!$4KW!_Su6LBu#~pqsP=|LR+0MAHz&1jF+Ahhsp-dYT7)VIn!#tx| z6@*5M&4QI1+|q780hlWpVI_+%ZbSDeUPlf^NL&M2t9=gth0c)3yzM&@l7k502&*=V zRMV7M%?hHBbtr3P3C*a|7p;Zap1^)5GUE^xqG+e{wX7kn;#}0mPLplpT;*Z0kJ%9g zBosk`Gkk&8MZl)sv-!^%oV=Rl`ETo)bkQs)wCz5F@7{0?1Of;pWtGG*$iDqn23Ono zAJPp=OALnM%CJT@g?yK>_X|arfy0wUyBk%(Jw>yvSMbV`1>xYR*yCA* zmr#cqQc~9O%v7XOs+G!;{opIHypZ+DlZq~9$!K=T+Du0H zr!dUk8<4OlGF0M1+AugJ{8*TPKls}@J^ZACED4n?p}b1H{?Veh)OT6Tbj`d7ljw3w zIu0X`0>o*PS+I0sc)dnVo#6Z0}O9u%Y-R(NxON;Rwa$I&{NlOc`;#zXWlV%M0vTXc~bj!4u=oi;?sp^`UC zFUzGdi#w-UC}BJ#y(5y_!Zu7u>(;1Up(Ny@bJK=t4MZZ#ng_i2gRzwtP_y7s>MFdy z-5#LoEI$N7!h{qtl*Gr1T`-}gQ?mh|zDZ+HTNFa6B4yNR0g4Axp3rHSUyd50+vY_2 zsEncb!h$V}C8z*668>lM+tMi*0tbF)I-1RG|MPmO@TS;ZbQhhxf3m)p0z6 zE+1+0pDyh@mv){v>*XWCJZ&})WrCU>yJLwQQ6=nZBM~JqBiPtrlLo6kdQTsHjTMfo z(&fA)43GdBt)#_i0g}xnSj1ooN4Vj}m=ThT)p6>pscas`9Jx~_*+08eJRB-Hf#Wh+ z*bV`Lv#`|c)tK<#_-~yGh7B(pfv!JdhO(i)71&7V+3jW8=)E1EBgvfo4{pZzw6Tys0mCJMjH_f>07;Kr*9#%(~t0F z1zg?sOKy6J&8+J<4idcysi?+^gJC4sovn36~ZJt7ZZ%Swb@)c1%;u z6Sk{C_KSn@7#X2EcmT&DTKmat33F=?q~#15?#1p?;?0a?MD76`Wi1qeKsw59eE~~} z`kd{0fz+J;h;#lVYzIV9x77uDus5O~U@j!Brl__g)^< z{*+Hp?FKp8o5$kHArCgXK`dMH*uHMCUqQg6YtGsr7;9Ks1Zg4I0O}IH#4Zps%)4IT zETZYVlCY*|!?dLvHLTkn#OgL!Vcph!o(j_KJV>|mAl=S`bUP2y?L0`g^B~>MgLFF& z((OD*xAP#~&VzJ257O;Cn0Fh`9j;6AAZ=%AtXoVQupf4U*%Gy-?T8p@NQ++fL7S}l z0+Hgyz!!l4^VFFJi|_+j0098)ga8RxVZeiq?=3_Erc@8yKpz7cC~feveF)(QYk)ZO z;wb+p&-2z;)nhPi+6FgP;IJF4F)+>Ju-(n@pQV94$RzwybJqbJ?6yDLMRtLZ~iPxKq3s<~vpIu2r^2$a#Bq{>z#!08AY&q!WgsC_} zPMrj?5#~V8)SQr}BjjWbdE7WOCxdZ>ocTcsXoz$^1!!Q%U<|vu&`1z#Tq~)pho;Thm_3F0%RX+}6?0I?`h3J=c?8ODOR+zX zkoG{3eb^$_uV0UrlL8w_`L|Xe=H137{MHJD4HuhK`mGfRe=m5&>scJ8z%ZT)!#JA) zLs;NLV5k*|GsHU3q(Kt_Wupx0!&{@pqoIeXQ%wo!Yp>u?sZ*ZAb~WnRMd$7Dv!%42 za}}B~&$^()R6C{o;_tZp^6$9(%5S^;>A3^-SV|kj7)^)f>mRA^7mfo^BihPwNl6@lEqCYG! ztOQ8CN(je_n58kb2(o<<4`~HGY)%$b!EkDW-F&cOp{*gal~o|H^;Jtzz5X|nAMj{V zj9BSyUGaWjAQX$7Cm2G#{)7VL7P%AX@%+Lf7h?Gg$quu%tDBLQyD@PQtm+#xcQi@f zN<$)+uO8GnCXPZ^&L>?wDE@=WDe=@)CtC>Mf=LP&vGTeZ9zFp%O6Ad%#gtN#&m?NG zE9Ggg;MJQ{i>*t&$ajf*?iGR(1&MWlP)`SthhbDyAorU|99-&tB>;>_RthI0ikvxZ zhDOD?uCesG3XOz|c%hM!>zc6Zx+ctB*MvQ;YXl3qt|8YYbcxr6?uF}`V*T$KC)cv*4woVoMnFDM)n z9sj&=N$`SWkBf)S8d-^ofZJBu)y9%e=y(g^3AmA3r~%XSGHL!W2$-v5Eh`8^7R;UV zs1z^EZ3&v1&gBhgJ%Cdg8=K~wq$-XYXmM7oF;`_I=Qr8xJgfO~==DFuJ zn`DGyV6)w)j4e(uE91+aQRQVh1njMx@u#C8`&rF-pq`Znqtz)-ayNvk=GxxDB+R7Oq3bG9yI>rR|P|*R^cF`y(%5dRtCHv6( zWW}h~EmncJL54<1t5qS)bmauw6(}U-Pi;VnPY)VUhXJ{~(uK|@j^A#GjzpnkWHoe! zA8nj&-G=Z{aw*#)-&FKI66I$5h9 zi@ZVh!1E8AsIU=zP(LR9LK8`!<@2n6aKT%Ws#mHlPB>*$I^Pb9p|BsL(Lwg1=S(WJ zCLrXsyMBo*4FH*O6wVu5Vh5zRdLThb=_V=ed^!**pqtWIqq-_Mpt|x-qjJF;Bq7=` z)CSNn9eH!|0AjghXzd3ONITV?v3y4a$V+twVSJAcAkn|C&Y09c-#5|_T4a=1=KJiQ zix>wQD>C~FhL;5mf7d5ELtz1Y0!vvJ6&QO8!eb;LQeUMOwL6c?@{$K>1l>NbbXON%D}{fCqVSdUZ|@|ntteOZw_zWB0i z{!MBZ+D`Tne7hPzP`-m1N9G%D);q(6-?n(gNx!5+w-JO#1^yEWY) z`c57uR6K7wylGi z!Th?hko<}kUcj!&+c6{A2e15E8Z-WOY-TSc@DXJ2_q6UP(<*B_3U0% zV%&Uo_3@B*Et}#uZ8fIrlQa45JfB&V_Y`QVuWXQ;GgG>`)cSHX4r{ImY%i0;Y?^jW zJHaz0Vse;;VsfA~#^i)D%IziCOu?fvIaVG7m=d)8pz?r=Eda6{_2s$wEDnwWwNvNF zH5E)+My#;JEx26@o|ArdLyUq$>ew-0gSdj2$EJbfK|aZCJUG0a!l(e-IQxPdI2(jB zHP40NiH&2>5R03A(W53Ka;9H;p1O=L3;zxZ6tlVL>JEW=*U*4#6()e#Yj zIEhM}ZluIgkp9zDbihW%{Wyz+iVM*M@=?z_%qY=pd9vF$lYky)k(DqqV`8igG zcyU`gq*AphaGdbDh}>bz3UD{F>^XBUW?&FHMN&|v8aU>;a^2?HVd{vpSqjJvwB*(V zP+1HTguRzJ*NR5oI%U-yzSeuoBCcB&$ggDq@nbCuPd0(DoGHqd4#{c^&B%sIdi!~P1=3HXLvXF$g;1;a0KqCc4}(@+pr^N~ag zMGw(u5FDU$+N3DL&sZ z)|L`S|7nsI0zCWm6e=$U8x$)RwyN6kg=HJ!l++@tJDOm+2Ih{kr`4$iFaqTLX1A#- z)kQuuUF5f?Mq)!Ix4^Sp#c?(Z2nd`k*eq(vTwCY#x`ZiR&4Oe>HY*uS7AEssZ;#R$ z^f$;pF|CAhtcv-vCu2qlC}9SXi=#hJ&E@z-qbcG(6DTued#&!{<&+8uE@(G2j7%5? zpZQ(tF38|+1Js(iHf`yo2eUElOXOvd2 zQx1EFQwr05I7ct=%R%wFIHi#Ft9W@PWRPHJgd&8&3yyzppdd#o6C;%(Mu_X|dbu`( zeXTKhj|4;dpd=}zf-bve9xJp{tE{y-CGZWdSxfUR^WIu&j`a<)iJ6lojhA+k9vPU$ zgxMgZ#S%iKye4KQ9tAGy0tfp~=*KYI(@evmw4F~Vt6&H4{l>Keh>DHd6{`kMoIS@ssD&Bf74shGb} z&XBbi85M8KAc_x5)8~%1k7w|=GC7VF2S%FF_Vbi8z}%1*N5NSVkApao{*R0}Ep|T~ zrCOr+3)_ia7qr`Y4S{;R&Van|I+aPrYkB+m^s^al0V`@*pOGpNC#HKH>oD;Xn(E-1 z45Q%YYMQcOo@i7XoLXXM+H{>124va`20u2o0iOPgkWdF6eNV_Sv8$UN(Zv zVNc%yHX{Nj<}d-Gu4zMXX33t> zB*AQQC17*#xFamvmVBWK6|2#K1D0+U+?T6tSgGv;VnPZwM>P`>p;pzIf zje5bPG5sBn4tSRLu5Mlu8&X!W)4&iBWG-Ur&nyvZQk*he(=|yz2FTXT zAEc;a+TZ-0bW$^t8!=(D6vCYff~GIjx!m>7PcfiY)n)F#DLEU;PH8WD6ys-Tu#lT}&V0fV9grmse|gwRmYRk=*1 z7H#C(xg7K6WW2SrNwsZwkqB#)o2FW5Spv$*ap$9~DH7r;MQ}a} z8ncq(21*NKLp%iCohmP}a|!_2Jz-UvEH70}3ZZpLheF08CYowd-xOOw^WVY!F4GgKkSWNh+Q7|ddI_kRJKR@sdA*mQElPeUS)QflD+ z)<6`+?3O}5`WrJPp)gphz*AFimK>uCiI?AHzAP87%iDNeX43~JD;4!ynv(Bfu$3SIrhEXk2m^3I$lFS@xy^0thUfU!BR+ikRkY!S7Pt{`ee zc?%gMZy{skxvg0HA)-D4a?Z#z>Oz0kJb55hhp zVq;7XnzBmBKIf;cR{k?pwpk^pAHabQoMks_zzU!mh4ajNqEpyORaz126HPl4K7a_U zs{k*^shyxR4O0?%g7Aui48Dia0TrWjuv6?*=uDA%%pf}5k%f_&m8cCMC)w2vQ$tAl z?$}nSMUlE;h7xy7+b^js@_xn4nZx$Wk5#u{i+|t!f=8tGMcV%J{aU2)`g||OnXQ4L zm)|)mg3ByCjGDG~nFHExGC|rF>*cnuN_JJ@sN++=(I{!q+H0!vUFW(gpX%dbU;0LyQ7 zPX-oT=Okd!4Fi_6F~|Zc3t(AU=;bemNh3(n`3R!466=!> zqXuc8At+X;0e7m2mRMtRvb@FC z@BAu(g()`>p6V|63IVZcUpd^XDZ^okmxxvNE{M{fYNKwq;HrAmr=&iKzB!V=qYKeH4)X>)fLpA(Hm*E-Gb?vk>R%o=k7yl53G1QM$r?76PYN@!d~5-?(CE{|koZYCS2Oj%HjU_?X+-T%lS z&4H!L-kg+l9uq#t&|{EyAvtDbPNcdcd~X*&?M>U} z9o5FEPr_c=x}zj094$eqo1m7|x>eM*=_8`UrUe2j6GOTZlhS$`*r|O=Ue*R#hq4|c zb-KJ9%nsW1tX~@Q6T_FM4ZF8m=e3EhXMJ3SCxMo4XP}L0x@4yjY`Ea51nVw%GQpY) zoZz~2*{%pgo34Tb7QGecjbO$k=QRflvfwCnf~ssL0{$FYT?;iTIV$PAzwZ-JAE zB`ycH$F|v7LV?Z}#3eN+ElX{M+4YIxqI8C+3EGlsR`7Ahr?X(cabDdl!Ar7o=(+`18_698ba?S*g2PK;U zR-Yc?F_Z8t3zLd4+Y`iVQ>UEFv@j@1m=n9ivrA8SzJ*&BUSQ#w7Uq5+(hOL5j)mt~ zc&>%#S$M$03oJa_!V4`tk9mD8w9B()cut!EMKCw^QO1365&bBGDxqeT;Yr#AHA^x; z0tFm(NF|zyJ``QFyt>07Tb_0L=rS^k$%x{Mj18&70%^f~MvG3Gma!sMLmVIW01$sS zk7sBZ?`eizMg>@`IF=F>r~NqB4vY5f=wnE#gY4D}wB^W{OQYEYEw<+p_J>W9pfAD( z0sN=h{tOjEoNbLrz2_Yv>Bf1^;oEGnHcZu#_B`_P^_}*W=Nv_2K_?!eQw9!Z!lZvg zIv^pJ<1eB(GsrkA={LW0+F@xj#TLXvBy4PG&)0q>m(dH5vpP_tPsvR5P7B!Fn29`2 zu12;$P+R6GYK)X=MN=3uR!QbcvSHt!WeZOLc#Eg^I_A9ru5G^g?3y8Ef+!@Hf=TO% zUQt*Iq@`Ad=t}6WKzL~te`6aA1InpvJx!g}#Pf{=Al3`MTL}U`Nri~yC6qL=kj4K6 zH#k9&=*=komM?$1mQln=w_ArjJ@p-i?9gJiqu7>92Ibpk0c@MKC26rjwgywW1GJDd zp=jV#jsCG_*V`4_@0CdlEz9whOU^Sc8F83HCZQbY$ArV$L+U()--e1;k-Wix*~qH{ zqm0`_rE_#$!8{h+eFY0@5M@zgfCEI2mF0tSlxZrVA6 z*&%p$sDi;;JGLfJI=W6(q|s3YxBz%egaqjhEA?6cw4ybwy-~ePuytQlzjFq+bTfH% zEHCD@6uq+CwJ;K+ZPK9i&>_UV-??=wrbD3`k~0GT=bb|UFx~U%N56+3lm-3m<7UJ& zXAM+1+4Y>XS_=!UBD3Py(lI94huMv{e)f^_Sl`S)c-5;feBIka{eQ{IRcD`b?s=~~ z{{o+8*AYjS~ zbN9Y^r1@rocYOUPUmcx;Rm9b| ze@Ef}Tft8~xu4*xl=$Pf{hZ*LmiS{&Y#wROC-}gvpBuk)r1=izyYi;*y@jxN_p7eB z=9>h$p_ay3@UIBczxQt$fi{NOdw>0lz7afj0@(Nb+rz;~^JUg-3ou{X$$`~ z!Ka?S@`ogOi=y9s`+I*<9BICU;0+JH>)!~jB6#K3uKFw&YZ_KPapk)d{tKdSexC)e zP{v1YV#1F!FH`uccf4Oo-lp*O8}3qgT;YfQ?QVr%q$H0%^eDkM5xnP%U;h9(k*Jsp z-%yZ4yi5QKzJ}oUK5Rud310J23;rd+TOQy3Sq?_L4}VMj^(^9#OWU#ne?|UE{FV8u z@K@!p#vfP1W)1$D{PpqI&tHqb8T`%UZx(+8{LSWX4u5m`o5$aL{ub~z$lpT#j^XcE z{*L1>;jhhK%HMPNTg2aU`8%G!=kd3gza{)VpT8IIx0JtS{GGtxiTo|+?}hxmh`$%} zcM^Xu;qPSrPT}uV{$9%8Y5bke-x>V9jK7!jw}QVt+^nA6qsJHY_@W;7>hUE#zO2Vr z^w_J%eR_OVkFV)*za9_h@pV1Ep~pTw9@OKTdVEWdhxGWi9^cX9VLkp{kMHa8s2)Gi z8(c`Cj{EHqx)8l|1ztH2Cdi<*%|DPVe(&N{9{6>$b^?1h~4eNG$ zzTckL+VgMi`2l-=(4G_ayxyKW?0JJdZ?-4XigI?@^ON?x-JZMcd51l}WY4eIbFV$` zv**|B`G7sYVb6W`e9)fXwCA_%`H%K|#Ge1JJ^#s`kJ|GG_WYqeAG7C=?D=DR{=}X? zwdcR&&vpdYRWAkEpbZgEwoUoA`78+Ok8M@JONnTV&}hr z9H`uuy13<11l!k>qzkjqsZ#D)=nR=igxSzoTRj_swNLC4azN2_%tm?EdUQymmJW3a zpVe~#4M%I**~`JE-+1s5Go43Gfh0Af9v8Q3A!l}?INQ#eQVYC0EUy4W}7{y_kGi#ec?{ zs*`ZOs<9LtnNa!x_rkxTeo4vM>SP<}gywZZ3-hAX`nB1-b*Y9fOH^)ni+ST{;roQ* zG>?EX66+~3EQnrsFVd^xUSvS-YzyFt%Fxk6L+_1T$ey5LK6e3E3cn{}WB?2FV@435 z&JP%T4p&OyN90N7;UrX0Gah7??myxqvj}1!?B4w)JfO%SheFb>!^)HF^@xO2fLy57 zuB-n%6kQD{INSXx<>&;|2ox3DKjC9tfY>Blrw^`zlniv3lGSi+>hf4<#{@e`6?Lk2 z7X!m$iP7M-!)Pe7tS*z=cQJHe50JeIS0HN7Esls&jLh74Rnpk15cwFpIWtHso-s36 zAk`)*Y)90*tpI*=x`NXv0L^+bf@4e-aYj3KcgzOp$iai1NjRKr+sU|qf0R%eZJpn` zSAHIXC2^%q6{b!fMl?vG!TLW&VOctL1~Ik*C~~0;)u>Nf)(t59CXmUp{A8{ zQj8?gAmEAy{RTVMXgx8hVQfu9jJaXPwi)`sg6X%D3Pu(IC8K{T8Duad)CLm!Gv#h8 z&>n!NII}R9I)M@{)dbZBhxLk=B9~JM>zvk)DZ`+z01UsQ8e^0r4EO>@kd_t3>OeSV zW&q2u{`Vo1p%=JRpvh`uznsN5SV@}=YnBR-GAk6M&Dt>Oko-fSIU;CoNeZ@=$BBn5 zI2-kH!fiYSti#kiHBLTt3 zfT76u-U!mR&ICWAtVRJU=xT5kUsKt;c*DKXBje|?ck^y!zq(iUN@|={iS=RR2`O|u zC#fNyK_e0J4)KO^F($D?qllAEAyj;&(K~jzIUlE)Q>-t6x-kOal%q-%(ny$6RKxJJ z?vSfvOIv@P(Lo{oDj=ps9o%1KlYrl5(?dQ#UAKs8YmZpiPnN^a{4A(%hEH>C2sN8C z%$@s%-pbfwm4c0jQEL5d1PxP^&AfqBhmc?-vba;zP4FM*()ZhKHw=o=)%}J#<#wS#<~ns!O*jk33hp%)MS~V zd)hWNav#XIyR4w5Kumd->aiTo#qB!t0-dwL4cT#Ts9ztdb}*Q=({OSXG>M@o*iaB( zNa1O0xf=m&q4-Pjr*I#T1OCfNZ*1p$LR)ebA&JfKDNl zYUTjuXPlK|%vfg2Mk$aaBllr_OBBKhCc&L)Jbco&o!LS2FLbbfWnmM{p&@E;X5jz* zNr7z%8tEerykZ9`=nqA0z#`H=G+MWjpeiBc(`8$D;$aOF|K2vf9GnpF0_<2XEDM6nZEUI}NUFm#M!{TW^uQGyQoW+>w3BYir?(BlK;qDr(J{05 zf@3*I&%MXAh(+aGw{qKHwkCj&t(F>E`=tgIoCQ85qk2&V7uWx%!xnAZ#?g@egNe@X zt8L7=YZlZyaf_6|{9+D?%TyK;Bfq#DG{(jkhi{>ZQF_a+nFo(;jBS?@H;`#gB?UP> z+#>&&;?T#qs*d*?IaNmK@V=H=6?Wwq7E{--n1;~^s#4cXa;HI-B^Ny)9$VE(>l@AR zqCU5zaEmwDtqDRUyZqJ(t%t8y8K_NDMK6P>mv#h-Zq4#2YwR$SfF`tn#dV-jFxdJC zT-J{I><&>S@}=VBUl3Q6EJyUaf9tS*r*=tAIsiy$@#iMqSE>pj9@;oRxq69e6BpX;tzm- zWjMSdtzJN=Y61z9=#mRbL~JMJC9ic7L=sLoA-MD9z`=k*eDOjC`b}mxF%SOyVDK6$ z2wt~-&`p@KwI-oIJFF$as~OVxI>xusx(S?vfk4Doj!vNmRwVI<0jMuv*s>^f+F&NC zsOwW6A9f8>-`4^t_TfgdnKA?q?#x?r@L+IR8%tC{38DW8FzL(gv{M@N=DJ>Zy(Yik z@xTfX2(IOAttQD0COjdtX~xO*bS%=zx5aD5W(NTUgo;ndw%Rm=AJ z(t$W1Ceq;gi3zAzAshdoT0=oPALX*{m~f$@#waOLuo5FXB&8iG4OeU-+hrMdWH;J- zVh2$ZKI&Q*WpUem+_pSUEz@P91p?PkXmSnA|XiFObT zu?lNu8;wKkvikkUd;3x;siitG3jxIL_nf!TnOJ6_7jD4_h z5iPvaA!>v1*Gka~D1nD%&iUrZCkPVZdwpg-GuLRuw{o9pH7kkD>kKNmxvCj)%hLP2Uh%9 z=MvUdz)bcfv>2w)_`M|5_;qN?IP3Y{NuKP$-5t<(;)3AM1_e15J^_HC)p&yk01Q|H zu)LMQpA3SI`9M*nJEq#{4LAO>eeSs6*o3S*#jex`fj1=3W(zZ@wJD$Btqbd~G}gu} zDS{4f!&)V6)q;$cWS_!Ji6A8qL_WUdiZmJyHz&bm!@;X8Q5LG5F)yNS_T-*~p&NE-0( z^|6(*`x4W`X7`m@$Vk-z6r~)v$VxeI(Yb@!d;0kIA&LkAyA|(Z!p;#wwlu3e7h3aoI zUQ(@Oo;uD+tN}A7gCC(hu?PNBXj}um0=W7@W1W&*qQ!JPklIATi2N`YfQXWf$)ZDJ z^{iJYl0r+ZfFsvxLbbV6Bc8k~)wH2FPOJgYfE~-BiMsU=Zk`l$%C20Xv7F}K9$|$4;|D~Ab-n=O- z{-I+STDuU`v*49Y_fdnRF%ohPZ*dJmycOCpOPMG)Z=y+=q{iZKxCvc~OYRyOcdAxP zA^)3=0Fdi-{AT{sTq)?~irE#Z&WgOca!C?P*$Sq{W zO-@fD&pNEQjG$K1@$o(4B8Hcv@GIyk^~TzDw+t`8;&N2A^?M`7^6d+d3Kj)4SUQ!E zxy-s|2C&g^kP{V3YW)L?=aP6afZ>(2X(7U=Z8<0qj5)4HVmhrqByaYcgA5pXcx&b# zL=}gWwg&P#m@R=EsA)`G{!FBOr9v#SmUfK;@kkS(9m z0_Dse+q&86=MBxc?r9L%>Oa*Lw_GD_s;yy0MIC~YEWbi^(iqgEQg2%biCE3UlRl#O zgC&Ih_)^w}aX9><;Hdx91kw!$t*=XLK>#jvh6gXs`l$f{eDbZvOPm6nKjR_NBFK8CO^@IF0t|))jR*Jf+ikV@q25yeAvFP-Z9+V20 zRM0kT_LQsEL9ab`?8&oVl-4ZEli(BV*^>D6^)`xH$QStlx!N#YzSpMJPQJ48U7-0@ z?La-B62awdxSr{v&E)iKQzTp}R!Z1Xc+D-FDL8l?)mH^Zrt#%sH;UaElDAwFgL+ZT z>gZCH6&YBr*mk+VQ0x4X0d;|2bV{fBU_r}ZJ7(UTr2uWF)GLvr=DgN*s<&mC26T`- zZ-5Y)1}t}w?{xjOwt1nZfbaeUp>Kg;8D4QYJv4eTz9+cQs5xFfAr%@iH}*x%MfB+% zu<-#0VM*ChlkRwYafQbM%~9GiG^H(LOObz57MEknLzzu-v4xgDF30_lv3VQDO8Z)uF8-=>6Q z9ZCSoE@pNW>oYHk93fj9y7kqG?f5fLXNZvxJQNxLR|*Wh6va%|GB?{HYG|znx#%_o z1p4Dra~uRlza41-*L<3sjyj=VUa4WMZW;mkOOw(kUl9c3Tdw(hDyqmGeq166evGqU z$*(7z@OjJd{0;-UXT>G~I_`APzrSWOAk=AMqN-&J!Ex;^!-=hIfZjC4O_95Sgcs(` zkSmRlhNBr|_)oC0`phw%u>#gMRw3;0vlw3yj3B7;O_n;gS2OMaW%(oJd)BmOI2bVI`aXhJh}- z@Q5wj-WEVEdlHZ>3n7)06R`~!kxB8wdVbZlW2PV6XvhaSDN}!e?p&mZ_S|ROYH)8k z3!0{6y`GQz!4>Vm2U&bEOrO`f-y$m5+Y=SE=cq|VO-oG6sYI(< zZ!O~oeJv1OGO%T{Bz|pAL8~yj50Qe29%|1~yJ0^utp{#XMsT{(n>2DvZOqH*0-(yujgz4O}_Z&b7ACS0I7I2>J(%-%Gd zY{o90gN$Rh{1@hmb_(yc{gx=3;G9CqA<%Y$bb2Dx^Tu#^i(f+Th9DZMXwB0%%v^b1 zJ57ou@wkpv@O7IE*HH<64RCxk=wGuO1}o7iuRJk5jP&4c&>k0)-mKUimrh>Y%Bwc;#lkE z$nYlHhh>ll<^h7F-*4#jm_7GJZst84rE^=iS=5seH?ENE03>NPMeZRNr($GT;sGSC zob3WynXFoikEPMp!{p3%k#IguChs0AX>a6)XuGR-mqqTDPl*LKr?Ux{gY^p#4)QX{ zi2`KfF3*JJxzV26?RjnF@*Z&GK5miQT%nKHj{_m@PHDuGVXEOY8KM`%3{K=`WRroN zt=lcrevc!M2}dSj<35sl0Pb;h?lW9_m|2q3HIIwC-1j~9eeWUPm&Ch#ExW@yh*3!9 zm?)&B7;?lyr43rv+j(x;ZL#cfLfB2uS3~Q<-pR)Thmp|CBm^T%(CWC23c6il!Q1|2 zCz5J*r8CCTmK>*YtB+sQw4xd^*`g-P3K%|K7im!wcK0xRENVRo+@fY$-=0LUago+8 z;*FK_i<*A0AI%3DPx(d7O$ipY$)!%M7F@RMu&Vi@1|SL<1Y)~f=q#7)J5vgZ?th|B z7)e9Ggnv%#F&M{~&r$(s+tqduW*ePvi0GEiLSTl!6WIjM%h^-?64P*Rxl2QqiuoMu7dlHKViv6OlTbmFha6=9rKyBcrT3l177CU$_9+9b$LAV7xgi zIzGY$@!ZZkl0EXSuw9djlxGeLb-SmVcIt@LfEmU0$OClNJWWTU`d?xLEFh+s)J6B_ z=0psQD=P%cRucgm0)mvmvL)<7vh0#}3Z2WUCG7B{p5T4kgpV9;pu?BVKvp+WRZP3_B$WiyoK^=-s627>~BQPuKL z5Pwk=@iC3TTD{KW6#^0bYxfglahR#{`nlA4)T&-m0U=cjkP~UfB$3mB=IB8dK+P2SoL3eBDS)xc=<1_U^UkE_?0{{cuch08*X3(XQ$2HW!kg z!-QZ@kq118Y%s62Cv=|@w%H29=!JGbaEzIn%d-wa_PLw~tN~BjbH6 z4_jm8A8j*}8_T!Ip`FLvB=X3&zuQVJtsedMsKK_h@?>dM!S;OEw@`~?Ma{d>iQBGu z6E52xOS;#dtdeBj?XtmML>^Y!Qi?mHDg`p8ccM%TExfR3e~nRNfc~4!Gk!~(rxyz~ z*Q0CHgH?mLOob+zI@>gc+4wa-c_e0j;R?MAy|na~wwy%dm#F8E3C|twj3#xaXg4lS zA?;?iBBIL}u+fIrCpwEqaRf(gZ1Ji^V_=byM34*(Mq|y`8tFGgFcGJqQ!L5i=UpwK zYB6h6(QfQu*?LmzsvPC*f*@9^Hq?UFRkB55k9cX*zb*>>;E#UAE#YEVX%uKpKT4zw zskd}XXKrX?&~++&NfZnpbH%1~V0fzla-lO*8Gwm10F8@t)`v^Q(#_r}KU5)8MK`x2 zgxG(iAr9x#^Fe^k!iRuQ`Hhu>&`${iFzI}??$)wnD#X2bMY2HNF4zUpwldFU zi=L|Or2zFvpZ0Jl90K|ayTlp}te2-}9b1()xV{9+el9YX9MI?<+ZxCjgHs&)Vm2GD z$x&j1bJu100<`%kRxj?%#}a@soGlpS;)b`?N_FcGzT>fCw-$8!6 z0qfc#^1*Bg8USf`kt-f~?eYgKC zl;X5}7RhNLlZV8Z8mSowV;x>*-wG4dsh`*ZgbUS=2Auliynac4MC^}Yte|S;Z2YSf z?_j)-W_JpEEH7*ivA(c<)|rR%&g?C?!uAwgVb#yHIV{>~q$Uu(A$xAevOh0#yj$jW zEA!gC%x%8RabG5**Hb{JQ4`$)c3A%Yd!|Y4Ch1-e!974w=!V2(hyaKT#+jseO5J6p?v^M%->^b*xf}cmq-I8X zRu+vxa-Bj}d=9{h+1G`7D9-)`mq{)Qles3Pnd}YLbvohoOjNhss=GGMdFpn2qgF?`3-)~lvS=7WOtu+n-j%qbyX=SmXjlrsQYZ=#IrB0po z$fg3o0T>9)gqp-yT5`a%3r|LMwS8tX+qE5$(94#Kp-_mJ39==;{ZyqDYml_w9ZnuJ zMZ$Wf+XC5Q&<=4(9@srB_M@nw#$1LKf$J)epdu_Q&$M(X<~`cglE?>cEgy3_%u=>M zs>~=uiwPK`?4LRH%vptO!TBbzh=ovtrnD%^me>Ia_-BM8+o9@hn&^XcV@300-wO|@ z?{w+4W$DppkvXd86z!xu}!42Ku}~?sT-pF9}c^wc3MsIADrNmpE?I zqe8Y3Fn1u&CIm~jmLhR3$irZJ%$U%)`~UV+KL}PmnllI)JQAXL9(GqX)h{X)u8()yLWIz~ln;%>;N4bs3SmSj3 zK>MG22T`Zll@K z!b22VpO4Iz8H*O%(+0<6+zdBt@Cech`U=|RZF>2L5N(Mpf*xk@E!+Dev_vN)D)@=k{;^d;@hZcgB~x8gDXw{Gr)Jr3$5^qLDL*Dg z+$63U;ag7+#Q_nmnUJgAw@w~WDU_2=*rF(q?tXJ zT{(U=nMqAf-SV5SO}^56C+;ggLVJiq8CE|W>{PSoiUAc<+NZ-^c>~hs+4#;31Tz%V z<<^}l0w24+Ct}u-vbH$!a%m8@K4&5w7EY1GGR7ps)*ViZZ(vy)J&b50wtxVFE{oun z+4#kiQ!)n2Z=NWf$7gyVu_W9;^xGdaH;i;hZk-Sy<)54JuCHs;9?H)1<8L)gaPruj zQT?KtM)rKMN0iB3D#E&?+HG*P)8GcJQA;^`XNMn|amE?y7!Oz@LJ$1`Z54$>d3JgXd-nC%%$_jhJ!*rWRx&KpOly_3Yk%Xn3(tBpEn!l zT$XdcR>3R5XzQ*B^KbNV+_%A8lG7nj2H4kVX#=ca6OaBiF!Qrk5*4~GBQYXRTbJow z|c zYTYdzj1|(P7ouMzkZZdcW*^Dir)k*eAAIxLbasOCDGeO-K*Q6@Zs>#Ko7LuubNg=x z7^Z~WME0HiV|??|dIbL%g#uk2q<;@{aeTWl;Q#dv^q2bj`UXn+9Tnq&f$BgwFi;3= zGKpL2EB6i52S@`*%DAf-X;vG!eXJ~rhuRBh64Ix7;@jj}rkMdL>8k`-0Tvb%OOR9s zhKp_lDtwxEf6U8&U|tyL7J2sx*If-ZR^1Ps%VL+Xn@O|YinC0!a6*#cQ!uNXCzU(D zKy|ERq=}pbVJeGQ&$bq)m_58o^o|CyFjbQUI|ZKo_t@wsv)55ovS7IXHBin4!-Z|^ zWAzy+s}i9uU%-YZ6~ISp;ubanfKj}%agC7X2sk+q&pCEx$!wqZ8eevbj(5eN) zv5K!cN=fmqSPZV=_u?`~Eqi?GTmGW|Bki?OPWWnZi0aykN6k-UiKo)btteB4| zCj0Mwd?FsI-WsffJPU9ix+lW77}6yOxN0qTRXB75+2(*}j8R^Z6z4VmX0_!My(UNA zwPe8sw62d!h(IjgHeo)4L4)6V2I{M{kB~bQM+$0@AXGkI?pb$m{)Db!$5jUtxdjfX zU6Yv}&2ICBN+`?+lX=X?W?usr$u)JEDgc8}ja4-ffn!_Z9y6CmE2#sB6>Iv-Ij7Hm zPF8cBhbWqb>v*>_EM@4qVF}s-`>M`DVo=O{IfB>(t5OD=*41dFY*3n_V4SFshdTPA z`$lwxr>}``wwEzw>F26u!!?IgYL0DXt0sY8uH@Bjw|c79J~7Q!XP@fiWFszKyny{hTw7akcwj&cK+Z24$btzAJ(?Grz1c$Db6@XgpCEE zEND6~oe`V@>eO(<*C&Wel7k!2@-4)p)BwAZWTprcBnX$I}2F@X0zc2%G z^o>;JlM{&Pj9b{K;=0qt!H`cb09dFpmlCN5N(ix*I;)1*4e!t(&^UWA#j9S2iHWU? z>KktJs*DyuV07RuFfRr%7%evv0b*?nCWBaf4l5QbrGi0EF}Nb0{;0 zG#*EZLOcfCgxZ8#^kCI=KW0USBd}sK>hoB+KvxLOS->O&76E7M7S!v1X?_m?7R!&; zN`zZy0}jK8@IyH;*-qX$k8d!BZv8}t<4Eh86dItA&7t+ERJEqSBTA+Vl86P2^kS5> zV1@Nh7lO%j_;9}{vWo9G$a66+;K{98t2df`{jC{x+ki0_@}r_k0!iD%2`5(X2ADj zh|E=~aDI*`k=+rc&m5C|emR{=@IN}3z56-Y{V&um5z@?`4rc0)FGJb$Fn&gSOS>BzVlm( zFQsJrMV>KYRzkaJrH0n*n6VV!Q%jS)}`;mQe_e@5dizyHvD3HK3G*s<{PT_V?WKzP8P7wH=j7a zv*!bsZhkr6*c7lL&_C6a`8(a+-7Na@kD``qP9b`xcARt&Sv3QthRQOytQ;KU{lj2HEB(r~f(^s(3uOHRm{}pa0V_LU zFPd}88Q;r>8+Y~nC9a|+uI@XIo8+x(DLATY)7ZISarYK`y)Rb{`Je(mHDDzp~qT5Y^~^VN3(8ONKxTCLPENf?Q$< zSu*eAiUBSDfA-!5+_I{=^IfmK&tvU#Y86#dWmQGi-d#zGSf!;OjfOyTR<*oT610)) z?d0CpwD-na$J_`aZElLH167cUO(HSG=C;OQ)CLU|iK37+#xn8}iQ*#$;|n7yG1#K0 zkVx?U{$tFw_S)y{Q!l~T_k+jT>oM1yV~#oIc+D}#ge0e4X)E*0wpVFxps?5EtSD_l ztZuc`S-7qsTTZKDUc)&cU;an!RYy^O?Ib-KGTNq)mbk~4lP5urmw%SY#Rf0_0!oj( z=j%y9L>m}Er;*u&GsVGNL@k|j)7N{+LTqx_EV?bXl7lN7 zP~t|ok*yxtx=1z>|Bd#J+;hd=)!nl0lf<4m1CTddO`Qj`5JMtYwvG$21mu(A=BbS0 zE+`=xx#-1@Jw9_LPPuM%&Yz2bg%#GsHGhz0Cq!#Y!a1a3NX&KTC6#67!Ss|p+;eV| zV)Ey3wVT^h{EY!YG+84J6m(v&vY~F-rmdBVVdire(7k!rfSgS0s*#Pqi4{S!!z`C1%0JDDmZj(83_nj5URXn zqDy86(&LKzM_V*IU)9!TXfvI*8SM}p}|tuC!%YOGW0oNDS^pDJmUGwKzx1w03?yLGO= zmO)zE-2M@K)Tu=yK5GnCNE3H0*S_T{Sggp#80*@%^le_bw#8?QCs%`QjSAsMbYvw* zo%FRRfIAC^m$WaKq2?F|Y*J=qn#ng|)694uJ`IM}h5SGZVR60R{+{YT0%H75AY&G> zi6_S#ul-?@=CDFI-QXHl6m6YDmt*KPh>V76g$*zbcqaas!Zi4)mAEK+sa8(!cdTo17?uSRd2dg zmbc`WhNN29#YXfGka0S-#p5UQq0tW!BvR{upgNfnF@qG_UH1ZlDm7$E)~pKVc)dS8 zO_$fDzffmoX}$s&UiB^@_|XPhchu2Ts(jD-);F4+ytvWSK0oS$>VdJJH?_SfnmX` z!hLi;@PVQE^Ui%a08tZ3S_BmX*gyr@O%4*cP6Ji^pV%24;KG;|Tm)tsTr$cX7OoUN zX0^taG0Z{IxUjO!=j8;nIswY8O)^n_&fv6_A-D*y(hJTXbVQuiG@)c#3@v^0GElLt z4ZN@x!~RtL^gsaU(GM%QU`bgt`;qFkkWV4PT2?0VI~^&gYbew&N2RYGzTJm`sg`LV zIjSu#iL^=Q7;v&?6$6`oT&?Cx+zZr%l3)zHm+A8ctl!4;k%sWel^89I9{w?MEhBV+ zgOsX+4#Kgz+W=rmOZdeDA;3Et<;fmi_@r9RFo-IwQ3|Pf#CIZgt=N__h1W-f|1||6 zcI`Gtmm%1m;u1FI0gpIN6J{zm=m&NouK2|ai|8a+4~Wo7HPC`O9VlN%yuc+BOsaL& zFqK_0DI;4nA6su zuN|+B-5QZZ31Y65sUiopc67m5S<{{oj_cKV z$T4gC2RS0c1{jR0Ka9v)#>>JQdIO!p(+~i!L;y^n9t2_pz=}$1T*dT#L`48T#7+QR z2%tqNwBzI0_rN|_Xs(Wrt^uN)*pfO&-{AxgI zSd2|?(RReZXVue@_6UWm?$EbXdyQR)_^!PpAx{W(zm1E9tEA3kx}_+hySKf1B|CfH z`Pc94yh;FEe+NC##h&_Nq0Di(n*oMFgY5_7Idi5*jHQ7Y)7ZlwwoArGiw|Vko&lF6 zn4Uo&Rz*_!2rm%(^?&O=>f^n4B>f1gi-pK&kZL60!LS#SF>ub4u^Na(M2%u{o3f#B zKnINxLQS6xS29N+QTf9l(0M9j!yZF3kE)82NKgvue+{zm6F^4&6336v)H+E?V72z; zs12w|-aS@b@EXpSblV<7qqOJHX^AW#|L~~r55}@G;)Ycve@1z7FgTOXKxiz`;F;K^xeGejG7y#Cb&G5_w zjS*yZ8N?+qsnK=$b03sVq*YYi&xMnz?yd-Amd?>7Qw^jMK=3Y$DZ=$5dSp`pW-I1h z%CBTor(12B=fP`0fR3kz3{+0NG8(X1#no_5Ll7Rmrm)$?Lw$A%iZG#tYsv$Uzy^I`)*3O6X%s%8<%DVdBrI44yp{Eui;#53^^FtJ4P&D27^L|WElCs;7BlA2;4!8mK- zvE(B_gD0pWt?qV3oTymm%F;qWNup2i^8<@3=fwpQqf$8lOw^kOJuWD&sF)pBF)_Zt zhbvD|&!jeo@`aQZ#I0(O%<@VYOP5try^K9HI*2y^s8BH=3RG!ShRO;m8eFSZR*>u? zvWk1jJnI;hdm6e_6|N_wXv zH7`jXs>|<4j%86Y!6hY4Gyf+L%}cr!J;Xr0Uf+!9a(vJ?d> z2MiAM(L6$uXB=9nl00J~ffb_%ZjAVp0bU#wx(li?;frCw225gJNHOO0ZYWKb0!^4= zY=(lSLXHYZCmEgLpn_Q`#x}N0jAI0vX>{JyPjNR!p%ZJ5MQ$4ub}R&8Lb|H#NnmUB z5sR&i&L4CQC{#)@3Z-*En-WhXX6HZYU{lQR6!UYVM};v_(X z9!Lzx9U6kFp(-je9WcfCVtv@lMmQurCH1Ph<OAaFjs zz!DRs;yX9IW_{`sGjSqq_!T4-SP$djBq|fatv6ZY!59{aBF7-ns3B3t&ZxotTt=cA zG8wa~R>NSHoPIPKQreE`s~#C0rcYG0%@MoJfj($9hoH4@H;}x^NL1U2%$ge|QKp$J zUNX?GSSh_ zjjtJB4-E*~&|!67>U1DcdrHW!kdirx8ca1(WX;K-b(ig=lM=18Nr~wXlMyK~%<2_+ zszpXv)8mnBpKQWaO=o4sUZ32Ga7U-Az;AnDR3?bRigXYly2l$O=XK1p#&VBl!nSc|6)c6 z2?;vpyncd#r5{=dR0bh7R2D;J_*Rx$wqk_VT~0|F%LqX*ZJj?b9p5lcJX9brABcv$ z;$=Bt26>ShJa9leWg`-K*&K8Z$Pw}_4yX_b=4z_}ff;(rPn*2#sXJ;QQbvxnA%;|fcjBT9Op51$ zxa@_9%U%FcATEY(l(@``2Hn>_FNh08Di9Y}X52JtXc~xX8RwHItZ_Y+F3u!lYjL*7 z`2_4T>iOvbsZC%5*i}1Wm$-aB7d-=(;aA>bOM(^U-_1G2g|6Xsh~Rak-exGmLZXy8 z6l_b01ancGi!?ous1X)#G1bBC5F!w1pXHM%nM-Qp9`lWX8qo%ETDvyL&(PO6)CMP9 z8^q)b?AUpYR9_x$`Dt0YKK7p-o^q2#eK1OTNCQpmJHK9n|?<)U$EsR+QP zAf3~>5D+@VPjQho3l(5Zyb6vJ)Lc?|nQknMgJ?SELP}_>l_ik68xo*vl+_z0$kWP`4a zXIMcBOK8-l#;`^>r<)q)?3ZgB`dUm+jE$@deh!nK_(Jp)JYq_s7i_Vpgk-aGFiKnhP*RNX^7`RXInx;HNiIkGrxR{ zaSRyK@rl69IDoPS)1<&+WzD=UDn6XrWU7Qnnqn)ql@%Y z>|E2h?y>qWZH@Y5P#7Kz80A+2*Ak~D0hmD)%`3Tk_@9d9n#1*j+nAd3{0);VG}+=G zYgxDZlH43Vzn0Cw;UT+NREoo*62FA#VAV-R0BVM#9a}$1h)j@B;9GG}IqU6+9TauT z$=QLUBIM_TAC6w1DF>TzRfHP8H)^1O9F8gnl!au8nbqXmIFFTOS*qsNly2)@Uvmir zdCR+`_=sht4@}EkAZ|^;LF7%Q(eYI(Q2?zn*lNa%E=>+&d9wCp2L#4twFX}0wbECI zURylPd%X;4nxUUIr!@;u_WPX;Syt$`bFQLJk~>d5s|$_cSOa*;SdoM?z#Q zkSE%{uSG5O96zv-$q%t&fXbeK-|)|b>l4=_)`^ou^i(gf4MlOU5kY~hoYq2HYx~nw z7+f@q#u}u6Q#Wg($ zu?Pc0q#wGBn;}%!=8h&&%%a8e5V|Lpm#}C0vMr3og?1jHH65hrVX4 zO+Bs9^wLIkW+aoK=}7^pH9cw7hG*l&Hcckc7e~Z4KrJCmOIm5YIaJk;Bk6+oT^TnU z)z5oO*9|8kOxN&u&Vgc5>g|OH(_Z+1F&RTY$Lo5UUu|6vcfWcn!U$b&2Kx|oJ*!bl zVc?%*YSgNHz^5FKMqi5w38?V{ABwKm9uNqH4-cs8jZ&8AU`Q~cEWS6&qU|H1EX~$2 z6r`DEoj!=JXWYzmy~84!1L=CnQlg=gV~M6c?lr*7uu)wv4BgP!t6e6Xq#NcsLNbPe z7Q0Mb*R$=X^b_B447Eyufj{xnqj?)mki|pO_252ZJSK_z8g- z{DjQ5rbp)Rp4|QsM2eVLwHzl@Z+^KX#1BXvTde7s<3#ZRXiNeJ_uMj?UaJ8? z8~V!+9d$)7AOZF%ltixRHKx8$lINeBO0u1HV(0^`d}*)9NTz-%S;<@(pM^p&n$*7& z_IxM@_l5N}nH|n9J7;M{u}pP3Mz?;WQiF;5j&kQTr`_!5?gi_`ng}4SOHiJgT6Zt7 zN|W%U+=F%)6QROLk#n%!%-JJ%{#n-gOrIdWT2)`7-235PiCG{b45Lf<$u0?xS#{q< zvB4B+47Nc|Y&#B(kF-V+v=VB!Z2lP8dz4n+s@tsrEwkMudl1aw6;KFFAeeS4^$ zn`fK*y#)w6S=6@d3W%3YQnbSbFoD2JsBlu_%jzEIt}rj*G8gKN4s&QGO?nOlFs%%n z8X)~YiXhI`9^`_O4JiTbn;bzUi^$9YD%>GKb@o0rxMK%ZE9QfLIFSlGa4O7h=IF_n zGBWYrJ$nE|yEPcWjC<*I^(^C)U7{4Wt^dHzUun}km{#v-5tYN7rUbb%Yo~lmfrXU{ zdOr5_`P1r51>w&JtP*=l3Q_%88?b7~o;1~R+ev~iWk8`5ej6exbIY~Q458PephUaK zA;#=^`#3ZQ>fg5`oI=dA(d%FjWWvXvZ%+U!6ooc_9&)ChP|5u#F&d^`ShIeU2#*ZLZ zIQz{`;<-Ix5Xrl|KhZR8hV~rs$Vz!-5n%Rze%4@;nkGX{lU`HFMh}+bLuEH6kO!4r zmxz$a(Zu(4zN-Dvp21PuR!DF?WA7d$Ze)GF?yEOl{9R^|n157!R{H(r$##?js<|e) zkc;N|0=4ni2|oG`xWl)W%vWjeRA8^Z_d4%E&*#a*2t51tfq3b+md>~S z_P)6JcE5j1N_PMDt})+UM;QR|c5fekdlk}fz&oZQp+3q-H$ykrFU9rV zcu<5sEf`EYm~mgb9~E=ewsJ2mtfL6*WFsOLLreR6kuoQF6;=MPnUXQm2jj?IZL&Bc9fLlPR|Q{Fsdv4J_B7=q1rCk@VI)L_Q28lN**6= zUp4I&w6$s{bxoIgD+NStDrLqDzv>CEX6SQfeFi?pfI}xP-J{Y50qOVoY~@ak6P4{4 zjo;CLLP8J0jr5@co@M+(7QzhwM4HfR%C&pQQR8{fq)d>UUPK*ldxnwn zi&39Y3`>cLJ7_t8+ElgGs(QIq^%7uhssaeA zLcd;3b@_!k6WqAAC6TPjgF-d8!_&yAM6Lx*ix6@V0#MbR;t0I1DKBg<%PAlLyVdJ< zv0t!emv*8RFjlxGO;57(w3LXxD~&{YUq`wj(5vfn^oO6*2QxO;m7|^8O=_Iq62t(3 z^=vC$Ho`^m5vI7KM@Ue73aV`zdaBi7H%c)No|V3YStg|^)9|L}F!)?EruC`KIiF z@|I%Nlg0*-SoVTrqUuHq>qN-uO15iM-Nc351bP12nB*hX{yP%=kNK>CQd^>jQ_12c zIVGyThJc(^7HTDF+4Yz8W3Z={flL-Lab_EVOE$CW0!s=`HSp9m9U(h;UP1dQ*7zVR zK7oWNGd^LB%~OWSSw@>YQJcVo8`V@7KQ_C5%swI2Aulem$uv>%zx1HE_;^x0FYj`_ zG0y)fPSTx8*vr$|sH3vt_YWr)1iO1s57NTqh4qBvoM}5{XxoXG0$;K%+ZzUDVc|qO zH>>%E91Z^-lw@8q8UFN(P$TEvz51chLbeu zOK21lX`ifh*~1Z&Ae^klIMxcfrm)ise|PQHp^-+$sO!7%_*gzbwlSqBZ`OIn&w(-X zSbGW+PDo|BM+bZ*zcNVb1HRJH_TRh^Q%vpekafsE;Vdtv4Mig|!3z6kFK7Xu_Fsl_ zU$>tuX&(|CbEa6k%W5+ACN&7dMzBq^(q@e;vPnc(*d%+=$s)G^-6jdP2v&(%CvYOV zQ)YV=iU-ZKY?2R8*Glg_xNth7O0Rf8c1auIaF0e=+CAtosC~pnqv$TxeC=$=L)Ls7 ztqE#6d#FQkw?y-`6ktD$<~u#qeA~^s<_lsM>8Jf^lGZ|IwA)&gET< zPOt*mKj4s^GT~;nJjxV;Uah(Gc9Q51_Z08g`>Kjpx$;~WU@G%&1~nh8hN@7Yqzsw1 zQvgG@XMpZ=Gzv(Mas@h3>HKUG{oB5!!ZPC>iX6%lXR;u1QRs;S#oOWOkVW}BQO?MV zLcy$D3y@MAR3+SAlE~B}3Xl+*mow^zJT9)Fvaf!p$v1t#AUdRpK}tnj&@yd!MXSoy zs8xmOMgSbtDzr807{yf#O|V=^v6bZ-6$oF$-JPoTN4wEqB(IPYo~2+G6#!m>)+2|C z6cV+}jp+vXDQ3AL-5D6=0w&SYau$)MQF*Q9ptMv{Qdo>{)aw`d|6u=;1GpV##x{Ff57qESyEt5?O%NDs+hep%|8-UdnYPJxE%QhM`Zw zxQ2yJyZpgXiU4>u{vy4CaQG%gcTX8Vk(_>@H}0k0G7E(8a2fB!*@2Gi6sa$eILwTu zFb(UWT0%_;pQ%nAEE(mec#&g}u<}QR--9FYgoVthj;uDbXZoEjIlDg^fu8koihAE)H-xVNuMEbhC zmh}U)8Hw6Z@&oh+2LObnXFAxpQ~mBk5xW@B?x0?VHk3TMu2R-LxUDXFC^GM{5S&yO zp}cTf9CS|V=t-eQDWnI9;fJx2=aWC~`D~gOVaP!+g0EC3X$j<}Lbnhcc-9Pi_tB2lm&4`sBS=;{pcj)^TxmVQw>VA!0>cCj*si{4;82bYaj!Y| zyuZlbmZlR*KDUGEIL8_|gB!EEug|fow`f15teZc*B`MBOk^ml6$`$}uN_G~f47TjR&AoLn)#SAJxBrpJH+5Z$_Ms6HTbL$D_6u@SZM$z`=bweF7JU6jO+9}!m~85? z+!&Ls+!(TfVm1O9gvC9wZ%|`NH(uR0@vB-z)s`b%^YL*Brds3-CfcYASXNeFbn6Rg z&M+|M%eMV{PTDE>5@JjUwYoOs*DoM&F8D8gnwa7Pbm!{ z$%&HG@e$lqJ9+?H5gSd_a6io?0-2tL6pG0pKHv_CWZ!yaF-u02naF2V9WTA&{F)fs zl3ra!$Q#{4?g@-HRgn+Gmbk%+iXhCwvG18a0LdTxbTR$bH$C2ZC4A2UG|D~Ash~2LW=*6BJ5Na z(=6D{9#bSufTe0h1<@>Ak6c2TeMZ;XpAnMocDA+1#%KE|fDC9#v`4%M3+DU@f($#rypl0yZd)B>zPnL?yd*k?b8&gCxesYJ|7*Svlbm&G>>KBA@Y11M-J zpP)!J`Mmr?v7aj7lPQ^_?AI*Ljjt91FZxjT8F7BHe%v4}nbW^~`%P;Hr8$|{$xI3rhhBx$Erte7M{p;6R`I^C_)|2e}U`+n!0RYALs#7%ATLP zzEe%-Djq(3nywgl9Um_v9!PvZ2y&A`HGHK9&4*e3&Q3f=pjX_V zTn=ysB6Rz)buz|~Y_-HIQXE(!#c2x=Mf^4BQe3adf;o!!gYZS263Eqn&`}oJ75gWU zMYUi+o;dLs^g>vmF+84mL~DF*9qz~@i5%jJz?B6vPEfl5K=yhe4FWl1Mhfvn@r~+& z_+hHH87+1^Yfwe1%D^a#MlyWZm~XUE8i#uG4UmrJqoMiCVkb3&@?0TuF`3Rq;xIF_ zpgBYXBoOh*IvAl7vc!zNF-Yh(w?7C>k?&%RSK2|WsD#E0zTXv#hyn`(a(nuZi6swe zo@(vaU4~*$@EKTZn`?rQaa?mfe6pGb^;SP~4&KPvF`;wK*1AMQ&2HzYAD*ib^zc$u_1qsqSf%$L&gT+{Z@W8ZjoX(KrAb*VG@QZ)gIgXw= z$LWaUK-x5L8g#?F6?2wz7UM@u$c#GG3vVT>6&Dl6zuk$q!uZlp&@nbK7Z;@@TA&tg zK|bxRloNRsxAp)$_|Eny7uzo$hAy|~Pj4hkDpo~DACV}o#RU%cATfg5uoG1aPs!gH z^BG8Bs@JnmhrWUWd#HS3Y7-tSl9XA*T{eI1g%)K{%WZWTdV-F48%|&0okec)w0-1@ zFr-qORvv{^)ls!3T*YvC8dblh1WcBqYnMrnBxg zY=G({)94*X1+%xTvgTaBfJ;L_WkTD7)LXX>O%4!dhI_0I=^=KclA>*uHWRLJtrknF)1%kwB7(ng-SNe<^`sl@xor(7d`#hxC@0Mtf+vYAxvGOAH82Ee6nOUna)WtvY?o^1l>`q%FsVzaX`3fRn){F;x~ zIxaU1x{9WtU8R!0((udM<5s3>4S_j2?Gu=Nz_k)i!4(Ya9pPFVKpn@bUdRHQ4UVl% zfL$v#Zj8i`i4#gP(>*9eu?slWWAxZ!6Fuce-Cn#gbvE(FRJ1zeBH{HPq$C}86CyB4 zrk_;#*rXq!Usel8?wK;eO?YIRVWe&&A+QEU%k!wXis4^c4ONT5CRJ8kO#$ad5PV2F z4h*sJFA!3<1Zq^jvE<@C>AHlQEs^$PQ~zkW;vEp7F|GCs^k2258j9=f!qh)4WL1}a zg+u5w6CL7IQC{%0xL6$g;*1P(ugX;nV2XF9`}3cMT>?8NWtb(S^%1!V5?ewmxr$E1 ztjTRm^vxe@{x@{X{-X1W-^z^Un3Jb8FEsiPYyLB;o}1nv)=$xv0-|QfI1pWa+yRPe zHaedS#9n_Sg_k2Q^OM5Itd6Rk4c<;XO3YRRY}F_b8Dm62k^KK@B)AMt$i;cb3Uu`1 z57Tv3#w^aZL@R8PIPwC`_#D!N7NKuq#Xf`F`Ml~PJb23ax<)m;t4AMRb2arDS8!T~ zH7!Hy?+Ud3uJN?~r)mBo!+-!@hRnxM@|Z_X+_eKF|Lq_~0h=wR?TJH=jZT-mD6TP) zI_`_CS|Idq{AbiRr12${I-whtGD(C)seHn0TVeZ?vM5a!{1{Q zjCm>t$Kp|xs6%ls-s^_>;+YsGT;dasNn-QO7!|s^51w=vwD97FbSYEfnW;86*f`cD z|9nhIo|*W)_U3Wo_x&T{w_Rp=@%xdX2!OnU2rz*frlv9cD z{wu!}uXN-u5wcR0kg>3}YpFbH0+9hmQCC=dA})I1c1sgz#_QY(ut3^QflRwI&!u7!-qL#tQvP@4_Vwhcep zPmX&?4G)DPH7iw>)+}2>G0oo}H?(~Kc_Q{FUXZxRbLfX6&lwmXH0(=)Zlsh1-OaEp z_$2&MTJvKkn)bM8GJ&*50%?y6B+UnaD((pL!4xDOAUEKrjqLe|$sUtfdIewNXRJu! z+x!`aCQqC;WEbPhvQsPsig6kF5=0cJa6zQVV3z&p%8`kEs9IG>rLhT%k-wNLnTj&( z(^mCKf(tVw{PyxS+{;&2@YC8YkRqAdounG+rii%$L40nZc7wE>dO~pp%SH=fyrmjq1;{Ju}*JSIB zU_n~jv;$S$Z8nuaE8OX^-EAM)O_L~wWRzi? zLe$Cn2Y98>1dP!d(Vx}!0O&Z)1eR4!u$b>=F#AJZL_3zEJf+G+yEa5Ms*6!Dv&~cz z9-z@shrP9C{7-TT4@IdJX zl-T@ZGEEqa%Wf67a6&SEzA2gGXd}_nIx%oF4w#;r(O*by9#aMXNv$U5Z}Fz2_+8PG zG#_ZMc2-bAJkzoQ;}4S{(A-zwxG8>9@<%n`itG^jwvHC0%BYGh(My7gRtEo=>??os z((vZltv7Iq*QWV1VJFRea3;u{H<~Lh%?9%S(C($U78=T7B%KhUqj<8?VzCZi&9|2*;cel$ zcF`Q9cEdK(#d?BqV7!(pOtP-VODi}7Y*bvuLZ-hYG}SO$yal;NDgaTw5o;+*Wg&pL z^of+uHzm)}nR4{W2FM(%XmjFQyi;$Dh>i;+_7!8s5(3amb}BhaaWxyw9To@49z86FScUYX44sZIZ^ik@F4gv|NMCXY4n$ZA(t-FL3e!{cmD4xgxs zGGjN$&TZ;5hbz&UOHD@}79y&}+8R)8y#!JGri)2_b5s}P8~PY*dcZbIQI&REihF6z z9+rj_Q1=6ayC{xE#kRm;A|X1Lh20<}{$x_d#v%YsW+*mAp$W_lg`gy-gL#$rNIQEg zK%Cd+pGi@fTCw7wf!+z7e)XJzwSoS?bTb7`IJGGR^FTbujIzl|p4TS6iy8a1|UHu>z zJ0RHn5hVh%fp7KbkCmE4E3x4#S5DY0khHc2%kA@CX~hxf-c87@b0KW`Qu5zvI{9ER zfTstk0B)ouFrKIp^{g_XAcaK}?3a)rCNDJ_;*d7MVmEvRqQob_@!x77%6~60<2F2U zZJ6qd&!%eXInDy;7>_>3qZ6WE26|h=q`6kh5TJM}O0W82GK9fW`U_`8Hm+hyv9w_7 zqs&X43jxZB#&^&y^|98up6z`s)hYM|*|$PvQg*E_-k>+>)=GGJea7qK1Un4LI1mK_ zyW?S5FZ7Hl^3qU;uOL@<-a>g*k3F?8fm$i`T&|Vk8^)#AaVcEb>;tVn%*D!8QGS}? zw7T-I^h~f=(cmPiZnVc<_f6qiB9uAs4QcTNaNttzArplhgAH+Y%8TM<}n> zpi_%;W0W4jNerDzJfkT{D6K=4NE zID;SfSn*jjPjp3~m*S$#j+!#$IBB>WAGeVG z{I`L{#U-ELamb%<*5@8LNOcC32S4FC_Moq7gSo=cgZP(mI)$YwQMPeNEO@MWV>|h; zG1x%4@Np-5%!Pgo<9FqN2?P6v!Q-hlZn;rg%WOu2P%c+?#8A~u+S4*Qa~+1E-;LpS zYxq6Ue)Bm#7fxzdp5MWHw_SYI!oof968K#ipJJdwA@HnCb_%gIadDS*-EC3+8`^-! z5#Pxi-?K=|7cSOauh1QlH`1u%;t#Mf!@c=AbhDWWX`ALVBA~RIESpxOV&3Bt9!8BS z7$O*G1FM;X4kDDfxReBbXu{jV|#{)Bl?C6xkB3Jt11- zO>vY%C!N!4IbTvV=l+D>ZInb%ZT5#%NE|GZB1yGInQ~00{E{Z&Y#L?qeyRo{s1t!X zsl$3|&|s6gCEi6qd31(xp#~OHKbZY=i*7!jen<@+$XH#wefu!Xqbz=#&}cjvSX&l7 zn{1BOup|!Vz?)zDW&zTX2$Q};!lMh|ELr}Y*kdhxM3~$1lQR?=81sHf1Bc0!k-*;y zw@?AX5Evt11~u%{W$M}6{U=1L5|GDJ3PT{mKvJy|l2*IgZ9OnR>{;;@$5@g?&T2#k z8nq|GVk~VQC#dG20lu_)-~*s!qKIZ8gpOj!gAX;;AOlSuWmMy7s+cTHC`cIb{>Q#- zUyF?Vr}$hI@ZVyE)QQ{}NxqA4aTn~dtU<Wf_^x5)29D_@9$_6XB=i zI7mjJj>ic72}Tjc(-kr_6!v_vB|`41Y9)`yzCn5 z8bPJ<(=hJsw&=7x4ImINfPJp+$dXdyim44?X-hfUl#EYD#%D9iJKT+Hua3qG~E zH~^<(C?0$)IUQ6zhS8Zc__1PiKNZ0em;wAZWNmF?cGmWP9vW+rZs?UQ<|~8)F6Aq7 zG>6&eeC3}H##cm?~~Z zCFmFe+;beIfqyApm%#0W313E&x;@DD4^r3HBi=-oeOm6c=rlfiljRzxR>Xr4hmT5X zEZ)=)q!z{;V<=?RUrKOR&(ua1MfX(qd^(mXB*BXqQr-BpC_Mdgw$bt=3&y^Y9ZFk?)m4{;ITSsW}QI^!$i=a#LNqTy8c0^e82WJ27c_H z*-kDU1&k-0FNk2&_0Ig?Mxcal@e^hrmfiN*ZWJd;mdf#0CMSka!{nscV-AylV@ZN} zB_C*h=`l&MtE22@mkST(7pQlgp_pmc88Sm0p2L;l`K8~I9!}DzzoLrz5g%Vi@(eb! z$V2da1}cEV9VfEj<&(|kH{!9GuxKlQmTUW{x_oNifp%=O;ytWl2&Dr?LBX}Cr7;f? zQ)Rj>D*hBHk6EQk(F6H;xwKsqWoC`34YidP@5Un+zN0WT;fj5w<+}6Y46&>N{BqQ? z8K)rcUsFD5$BzD!s31stRagC_1TI%GF#U`j^;rERQnUt$!DxyNfitg308U*oi?j_K z{tO2X>Y<|sw0gDNhasT{{Sp^Zi|!C?cS~r27Oh{2&VZj`oTkdznHimYs<%r!TVipc zJ5W&Gon*T@KZh&m&l#ym?IhJkEfR9YE~EK=5|qDkg*-Y+ua;=~5IY7y=pWj#gW@MQ z4QhthnyS`vh2O5=E$PVH`B^St_UgjUVB@{h&OC)upL6ol85Pb%K!iDMVdCm3NfpM)-vteBIL=HmH8 z;nsYjIQ}K0JF8`MK0$hAcI{vlvlj?OhJ!I})y=T6WQJoG+ts(|noVu-aO{Rxbo_2c zu-~1UN~ZKrJe6c|98Y!ZF16>`)KnKnl54P8OX)suW>N?`zxtK}dv%hexi`sF8WlG% z5tYWxm|Hz>E_~rkr^is|RdHVRpe0c6%Dc6zx+pRCR##?w$@>SvKIanXw(_5+>F4

zcqMsL5TlYJ4ppZ?x)T(rv4z#@vm?Q_^kWBcMvP#_UifS>UjW&F z7<2R?}5IK{VVV@MeJ5(t_AgeKA!*NzURi29& zJKRjrtlDzwdQ#gM(Ha$u5jcT+i#2C3&-z~giv(S9ny=z+g^eBtRMmgrG-i>Qk^G_e zruz7&Vv&fBFu_CEnx(C2RJt$~Eyi#O$2_o3LtjkJtgZwF=O9%Kv5qjM0+SW6Z76#R z!eGQQs6xzK`!KWW|9#I_?~Ko=@i2xDjPjhiCQyjf+t**E_1h^~xvREK@9ZC4cJ}pG zAJ%BsHI}Q(qj!+x@xKC)fO_)TMnq7bS~!!HO**7TNFLPLH(0%G*Cj6oh(Ml@u$Z30 z=^A7WCM*(_?s8FfUO{wGb=#M}_3Wm%%Mnn``f~6SM$hW9PSZg;4Vyo6hBo*0kEZ@r z<ttzz?a6oz;+noGKq#T0ZtwJu4@~>ctjd;Uc zrQ>SNE2_=~q*ty!j-HIGslT$-Z{!pKv%sa)04q^{C#nS!UqwgMaaCp=p9mfAu+etg zu5u+~uy?SgTy?f7-5u*Ym{@)3o+IrvHOJJjM&l|JH`u2|dUNQAtVfOM;zyp|EWKac ziU?9hZ<$#L2V1pm*9-XwC}yr5tiGgNePMrfUb1JKC9!ff9UCKrUN9qPY)%?TO*Y#Q zGFh%d!58zFgkKdTJg>;hNH7BRbQ#Y6YUfSmlz5!9-${sORq=)7+4aY|{e1GXsjX@7 z7Hfe*tB72H4yt275kkq73uz%8;F!XT#4Lb?ls$esXoK1ZjyNHjmHeB}O0G!)7l`{& zGB=#82c7(IqAskguWk@$bwacrxv~K_cC}u<#BOyBL4$vSHc{BwNk3Rec`_IG~n^Sz*LoVQ7j6YX-|!o z8Y!}8Mp6h}lH6=cmOr7{{(|!qX(CFSw1l3rRz!~wK-uA`PE=*o&G05)m-GVR6edQ7 zS{{Q_L`a`M0w6SCv&@Y@@_)&O*xsL&r@XO2*>@jv*0_DDnE>5{?$}JhrqJZ$hXi7Z zP}!yLb$VzyZ7Zhyk$OooY36l`)ve#z{6*q1vAjE^U*UN~n+u875C4etFJ(H<%S;j( zyP{0Uw2=5oN!*dJ0FC=>NQED8K@p`vz*@@Bv|6`BY@Gl*xXOtY6DX8`=u>DE8wE>> zH=IAI*#+kDbZDhud*8}|PMM5E!jh;yo@8;EmnRi}LJY4|5}XREnHtfgJ5o28e~L9&!S+vTdi410jsFVI!F6Ie zTCimH#TL3TrsTa*_4_LPrKDY0n;?q!YHPKn7s%f;$?}lNgE|Vb9zeI(bmxacz-VwE ziV!p|CE19?D^m9j>P}QM;(Vm!IRPNGDk90E)N6byWq&APY|`J%eWMY9+@?e z)hq-KrX}*QK=gw-CZD6yAjuut)4{gIyGYSd$>V_IAu^Vh``Pn?kr@}s-$|_GJZuYp zXUF}WDRWs3vU-QVljOY$G~=vNm3J4W%u-6=x8b~ZuHa@~wmfLj6ps+|TOaesyddg3 zbt{!Dby>n3b+mdkdY&ehVYa&H;ysgqd0w@^)oV~5`6|UFC7z-APxdOIO34+vUbrp_ z@L-EPl`$K9yk1$e4uZPjt~nVUau|2yFm4!;w1viR+^vvoX2;TaM>vGBPNemmRwt|l zbYo!Wb;q-Erd3B-eXMV>@xx_06_;$55}+DUy3V{7x3?=|J|qEnhL5<%=(8%zt#?|O z81M&#F&>7@c9*s3$Y3(Y;n}T6DNESkP|z6l;*b#GBWF#~+nS0*1nXYyR76MlH&7DU z=FD^6HP1OL{pUqdlK`s6)Nrz#^hQV&WhCTaU#?hqkIn){jhv7=!dMtm@0rN`J2$hw zt~Y^LJJL~n1jD0}*))nUO<{&EYR@jY^i!tSutH5#kGnWK_8fnYuhZb$$MZEScDq$x}}fhDmun^e;SYNy6ZtCN zi8>`^7l(=OY7lP{LGH)NA)X?#G2|G}=s*(2eSEMwi@YBl^L~&R$L4`K#l<|&!=<6g zN86R08cbD=43eDrB92t^S@221)Ts)93ZL^OF5&ew$JI1f`CxiqUr0|hORBTXnlMJ! z#YQ)$>@+^3>K(gG1D7a}qjsI1onen83H0d676b-?DI8@Q@ieoeEQw|M%@zs)Mt*t{vo;aPB}~ z=AFx~H2>eV1y4YwoNGb<7-Sd|%oo)&;zgoB2xXW6C5jChOq|XGHt;-`A~9hQObAvA zp)-E!joJ#ukZKH5gdRoM#Rs$eCmMmOg(9oG_yO+>6pPzr5F-Nzm#2r zu|cek+=4gTA%17<(LN!w3Lh0;>d;J7e4$%spZa1~vuk|zse6z>Y|{d-#8KGVB2j^d zlzr-pVoN580@(B)JR+pEK?feay`YFA*0WE|f%~P{1s?~&t|3L({dVl5M`)8)>M*0( zhn+wy2u2c@Nl+0aChlYdDdKx4b5)#9 zbPIZlz0_5_CGBIYE3UM8bi0y~G><+^sj7D#DGxV%!sUdR*Vl9@iHFc4fC~^*@g45MF<>K~MgB#!1xBi^L5q z7VZI(l+rsb{wjkfOjh6JLBTIEOuUASw4ZgQUG=Ap9ZXeUiL|3-O1d-00mo$Ko-RI$ zp*syfK$8SwI042J7pmhCLcQObRxv!qNUeUtjU}Rs?9gfWGyEtj-jB_%t4PQp!w1=lEvjraWUpb)bCN_tT=Pog&p)D`m(nlph-0s zpDXh*24rtY;Ybrz5*pg>N5*-}*w1Pji&{$-i<+i!eFys3;+hS5>s7-@Ik9=_qsu)i zfgR~>9D~7l_LD^J9 zlWb>b?GlAs)jq`VoUfh#?KXH7TA}XiL9SH^eV6cIZmzfbK^v*S9;yKsB)scwuNJ-? z7k{nj0{;x!)<79#^iargpn8ZseKk+2+~?{M+{CkF7;|Gs9b%4U)zATCL-A?T(Hv9W zprY=w;%|hlcDLyz?3&RFGgNgv63f>1Ei1xxxWbpipd|UzB7rEDdq+f$Qfk0lvc(-8 zu?m@Jt+qgkl#M=}pX`Gg1Qd);R0K1n39gIVaZwa|Y;jFgcZoy>kKwRECO;^zh6})H z+MiY^{0fmhP)L{}CQ&n<%IvU+_(89nBK%j%!xqh$Ezy(9p8FY?4O$82i;^vbV(e7W zt?_JbNf;3Pj9NL^b;9vYkc)_0oOH_2j^b7jFac37D zs72uuQaYyjnO&|*w3Vj#dRF{nS2k`aWE27ld)j{&Ge|e%-&72N-n%{HZ;7CmI$g_L zzXCpWt80nvU!!b}T}xFzp=1)>tLZ@a#FO93Nza>grl-9|n-Rh;o+!UImM2j>$D*K7 zDCet=kZ%sB7{%!w%pqCY%n?t&p~68SrRzjr3s;D6_Ja!*6>;1ki=3lU(}*gg^#^bzl+TiW!CefI}?lcw_%yzsH(g`ctGARZrH_@S7C2w#2KSoehs3Yo0t>tHNy8x- z(Tg}AN_&3nAAf6eNCwOTX)vVk+GKx1?mmWc_p{m0#bOE4P#$Z!`;9nBo4wU7p4`xz zE|3KHleS2RuIb?h%?Ca_)a3Z_g-AF3Y)%CJ(~7VT3xJJAJX7NDc#h z+A<=b;a)w6=9wzynQ60X6*>0_4*1w{z|TL9+TeZv(^4fzoV4k3mnlQbQ{@u``PdQU z7avEF{5OjUa_5Lp{*f@rQNdj^$?<|)>aDZJZ6d*KFvbgQX@F?G98W<|U?=jwO63P! z&N#*f3s$j?J&vl6+24<1y?seGAEu}*WGvgpLQdRv#kRfO=^+W%yL;E*C7)cgE=BwJ$Hms0!yXSm$8{Y z#`Wgtqk5vwxj>bbVZMl{qNl~*jW?hv4+v&JZ;4omH()JQ`G_GcH>KPHcoXn@21A1vuR{n_DY~NuvyIPmuADk)J-975>HD)tIZK=l;6o6~b>_7g>=j5J%0bVjQlk@6n z=7};yCgl`*!vL>+Z5B_P1t>RMFpE(s!65XU%+ZJ(ndL+ngmzyc4CtVb550XA(G zFIAeQtzcz>jeEh;&gTL37z}D2%gB{|*73;>1Z=uFw>lcrJ5C}qjAdpGaxLk~4M^eQ zeRv`K_p}+Ul<0-`+@gI2fdZJ4>Mk>{q1O)Ipi}89Q>(BPZ^(os?;yX9$-3XxS6m0R z>&9?~7XX?P;XzyGF;m+Ho^&>UtU)#u+$6D(c>Fc~KdL(V*fq?3mntz73gBUwIZi-MkTWyw=&{!#Q2IFBcGX)O?{7DAA z(s?y(OrzD9_FmS*SIo36CrB$vb7p&VpI~Y~dZzZ3jF8C3iK#gq>UcNz_Z=A>#-nuj z`5yrt-V3|5Eo5!q^WNamzD&+siB&nB?=eaAMf>{&xVni~c}bTQulo@wd{{EG$rdM$ zM#d|NS9V;RcqI%vfn`>gB@%6W2?VYE(R_NO;&s1?SE`ghnt&};eYA^L6Q-M^F9O%* z=nMR{&Iv*;S+EM{$I;VTysDbEe_E2a5wB~4c-?>lUX|3$PFzJ?Zi9Lb zYiY(j9?Sq5H-=`*rMjv$ng5C=;|d$vjJ;5TmwMr*ts{bZE!?1%9_GT$kxrEM!VRZ^ z3C?=qrb3M|X!&Dmr$}n)k_`$kBn`M^;ADwNsiFHZG=nM(Hid75CaS_eu=p$egLQMC z3nL2kIC^F&rl#laBK`4bCJFVjjH1T*uUy$Bjqqm^Lc6Pb@6{$d9QF5D>f04LM9ZqV zrD#d!(m8Y*t>#%wIZ1+^QN8b^3h>W&FZ#Lbi|a{NB*0U}pz{XBgV1zaoMwF9s|>t~ zee9zPX(5@*YHjgW6z)W!ko99Oo5xWC()qcsof5xZArc& zm{KL_rO>9!x&bbm1}IfO)(15>Yqf~&VN3vfY(fr0VUDY{&r*Waht=s>DcM zDD>7rp{@6@EOJ_-vnzUpWj?nZEM!f*4s@Zse|HiK;!cl`c=x|l?8B`ovu7ms;a2VQ9~1j<+eqxg?!$?F z`0$S~_Tk&IMlAMW81+!>Mmo&?|1IP}o&or^^TPZ(tVPMWyV`Q@c4o7tI){yi5CmAR zIUl~GcwG1P>(R|+Y&61MAsXSNh9z5syoqTG zFAyib#oZ`UK8R(}@~(##BsC*GNN~af9-JV_1O0P&jC3I$NGS_Nu_ z-aa<>%W?qH(L^f5?gY#E3l}BX+&bHwZTIrBQ+jT7P#shL_-TGs1$6LutJ4!)>&ziFNK zwX{w?JyK`NP3Co^N@<;=i+VQ+_)W>@fNN87H-D{jL-jK(>dEW)&#s56nzkMaGKOBq zBU#j=W5Y!~q1Ib(E$X$AF-{x3AJ0zXU=%#=V0<7r7!SCp7qn4d)I%E$i+ZMH?lw1( zFY2|_%|(lP4+l5ga8WO)n+)}1xTvQEs^MZBme1q8sJFmS^n#vht9p-^o=WEymBMN6Pr` zG{#Sr&iLEQO@_ct$^FLo?-S#9IksrIiJsPsU)8i3Kjnvv|45db=-5G)n}#5@mYdob z8Yc}NX-fkE>C#{!)q+plteWg^i}xGDDBq+}_I1Oht0pbSg?pM17m`(WqCxFmI^0#0 zn{2#qY>hWd7DqbX?p~rw#`{oKO@eDlAB2%T@>P>|N5&1yO~YZSS55W@0lj3^WUH;3 z$RRI}=cq$IIB=j?c7eJ>o~V9z$hXds?5&K3C$OX26uJ*Po_uHC>XmVn|84B9D%N2v z;zusU4fu&@xZb@8(b$3x${lTMkKY6^;fJ%R9>$7&Gm7sa5D2H3UG2e-Q!0~#?kMqL zivtfgci^$b39T=F69uEkvP-z#%k3m@;HR7vF<*S6 zdQ?4Cg5#;%s~I}4;(+!$x_at%rE}mcmJW-m3dnH;+XvdbxkNQ(OY7x&%rC2#Vq}s@ z(jNK4hH(6{FSDhexp@FgwB^JSyyJzm+!DBFwPnf<4*(qtvRWDvU^2(HazA zWXi`DRsX8>nBh~LksVpa_ro_JiSLvkpGBi&SM^OT+^MP9+gOLfR6VSR3k&hN>nYCh z1?-X`JIHqdV7<0O<)=5ER3}eXwRC(o%S|E_uw%5q;ugrF^U#J?w@55P%#c>ML}u3Q zm)Y25MDcM%XjN(_9eIi&Q{1jZO(k<&TA+F|+@o(jx9kG!Doo^ZOl&{C3dUqh0eS^o zMcRt5D1!W}DVcnHDPEpe+nTElOu*SyoLm=gE$!$5n<@c;k8Ffkf0pVEk#U%&g4k_( zSwdomY%nDpPqbhoihVz;AFQhTiq3#ko95mmheI<6Q`SS=tPZ{^@g8v1>Oo#@Jy2D+ zhBrs?flA=K-L8$KxM7QH*u4x?>^|;T>RGm^kz$1evL&0p$(*M^Gma0|mQBjqZ;cd= z#x&h72G+025E=XJW+XNSL^}|X^N?}!EE?) zww%$I+OUR{Q+*s544Enjj8#5Bj15HQt|g4{`Xxp^E+W5C+qM|z2cn=UY1+RWLcq7J zdB1nuyte=bqV|}b`dh69Ec>FK`aEprzE*IQ;$6(uiUXF4FH%odhsn=xnEWarWkHO( zHTfTid>R~-U->loG2&N;fa|3&|5)Jqp_JoPedUgQ?~Qo49pb8PkBv~?can>T-|r}B zk>^)w4!_CbG&<}IoPb9lKPIJ&m4wJ`;s^Fnddcc3MibO!lz{*d+pvOL$CTK*of70A z;+3}BpT+MLfT3m~J#Dxr$BiHuFkur3@2BW^9m%aRpiowz=<7EDfNC{BiZ=|QC>Fnz z(0@ZGXE%^Va8So4_4cC>xh^yTMd#!hVN1Vc;50SVz;fDR8(4v8Ur_|0#nG)JmevU1 z*&0od1;+)m_)m;%(*|rRs!j}Zi^wN9jex(|Cg$9{y)6EV9-SCw71tbvs6UKGkf$7_ zO3;)3(5UTHmrCS^h216gfUH2k8c-url*e{l`KT17^qxd1JoYH+i#q@0Q_;^wLaxge zzCuV^s#lY?i3*jrt>4A-B54bx$W^P07!dps)vZzWRY+sKLauI!NT#4`R+GHr14s`^1-t8mnCEvqFggC#c z6HgyV^v-CZ6d6m^L82-F5{C{n`G_SkOrnYcO{bmyyBn{B&| zROM=^R9&t*qSk{{U9Q9=gFj&Iry{$q63CiJV>9!OmQl_HSe+Bgia_f~z5axP0||6j zl6fAPptEw&MO*ur)YOn5HU&giJeZu99wAo3Yl-L?iE`35+EK^|Ov~WK%a$1Lgo?|a z%WL0;%Y53vU*Wk>Scg zk>}}L7$BvZDG3HwM+^h#BtGO%lYefe*sZX{Fw{eUG}P9z6J8rNWYP%g8Ki%3H37|W z2}zB%QxbP>!}14NEh-jjvs@~Lf*F+xLOR7qwl<;U6X{y09B^lDeoskZ{&! zD_~N`hfZ*OjempCka9t-{56pv1To*Al_C-J*^9>%lz@=%(5K?Z3xW(sfidI-oD4`0 z^g6M^0l82TFyBaz#n7n@B!kCt8ffZ{95M}HLm~34v~;L8EiQvDWU|DLV3T(k{tP;t z&)*qa+BIsNU<$b`5#MiMe>ez}0J|Wz@4XK$OnB!xfObYvi6zd}*}3y~5>QpTY-l2YlZsg}=cez!x@gqx4 zSKw~hul^*AgK%!r;|guF0YIQg@})vFqLDWSjED5tlsW%G7vGQ%yw(zewb;^23xk9);2~B$sQCjm~vnnT?iEc>j+!4HY}$U`0cs_ zB9EkQwd&L|EDtQd-`rS?SJlh);$v58dH%|Dyv4|jI6k@G_}F5bY*~wuZ-T{0t<-J& zYMjNmxZqfe@!r7N7KRoh-yNaFsIVx>X9H}=;YKXRkuqY(Vsveb5p+1CBZ!LOfdmfE zVzhub`mn@ebWXR(Vx*BnwHS@rEo(6vw`-e>SK0FZklW$tw+w}MxiPZHWW3I_AO0>e z8hN(7)d3YtOr@LRij?ZgaX8v@H_S3D8~zt@C~>fi!4K1s04`TuK-}c(-N}dLsrMkk?U}}7X zt{)roWv385O=0hR;XJ*Z$Rc=?nFyZB?$!s65h zfmO_sL2OCOw{pvP+WA^gBV1YErWI3=s#($0cYU@?OZgBc*nbT4S~SOr4dH4z6BiBt zZCu$iRFM1}&KjIT(1Qc`cDB`}qD`2GVC;$)xO5QF)P*o+a8A<0RyRR41@wpw@x|LY z(LlK3PW#%m#S%#Cw;#io<8^&3QwzcTYl_QO3VV2Mqnxk2*N;?;stmh)Ji19;J%{*1 z?(?pl1_BnNru$ixXDmgKilojDW4W%kz5VjPf5#_2{L$BcGU5O$PzbFCT`P zY|Sk_CJX?!a2)`siz;Jq#Q7W(8cW29`0#2CR1<3RqbU)>Wp^x54_uqy<*b!TNWHi>*$DecQs-^-F=;){Iz{74KDG zN{S=B$}G7#PJ`;M6mXOudXldBCnCL0x@JwhW^&D% zseDau&CHs7&6<@*tv*`re47Fj^%P*kcc-`3pF@MK=kMymy-R{whu->QVO*15&fIe6fl*XH=&oC7{MNi>u6j)ux(J{27oK{jHVQ7`- z{O&yo7`DCrZ{Popzr6n=um4B5iSXHmX@XXm-rh7P_)+@Z?|sK7_I>2__a3Y?=L0I7 z?BIZsAo;*h9(AZS(dGPLU0$imHY@@w9fQAbka+pPa22Y`j-**U6d_UcqzwhKhI9)K z84}qC1JNA@gGWa1Jr=GMTXk@R{oKI-BZPN0@#Y~!5=T{N*2WfD_OV2B#gMu~N z!(6xNZRS-|2o5|dwLA!~$7zH%yr>3hDpkcp0-kiKg4Z6(Q)>?;^OBySD(kUm(Soli zf#A@Jws=3xLg9gZkO!zNqC>eAX}blHW;~zqMk2zWPFA__;qsjKd9I_3C#q|{9dC-F z<0FyqTfQA18!bbyc}?CJl@rx<-_}C^2~o!NwO)fU88uJ~S=HF7zrwIsJo<|!;)$){ z;>^Kj;G0>9BE-CE$@BxxLe6&+ml-9KcnkrvfA_%ji{aJomMdMWIUGYLT#fR9*3hn9 zo;Q&=&E(n;A;tA}M7W-g0&EfuM71T_WG%Op6}^l4X^v>)YCcC8dZ*|}I=xXeg3KA7 z+C)z^Vhhp?B@QhF;+8H80U>b|{qWzUe+-3=lOzYaiFSBn%6vHi6V4&UU_fN~mkvYu z#$Y>K4QdEE}dRMhC-3I}iN-@M&z`nT%Z9rSNOB9>4`kHa@Sht2`@Z_C0l z%E=C*e;>CJ{X6X9B2e2@@9Mq>W3n?nD_skL-V?41uI~=lxaF$5!nJ60$Tf8E3!ac0 zTram^=}vy!XqnbD8>5$N9Qgi_bYMvEK&tsoOV!OeCe%SybJDT=P^$S7utrt$zc>`I z#;E2sSVyXwkASsUHQ&D!s1eotgO9IjF3!+a&2N)xt~ukX`He%>oY{kn+&a(52i4qi zhm5M`d`?g_pO2{KH!iE1-%3$U`|+yzeL*$f%7J#ZYQA}iY7TmTY*h2jZk%j1*HBieagBicD6vPda7RPDUF8`Z@b&O~)rxGoS&w})#GTkQ|mqAP{Gqk` z(drga#-VBVn-8Mh+st?EK8RQ(O|#t!xg_~HMkbEY?rG|=((b?Ym}&P5560DIPV804 z)gmFgSwd12ZwmeX2W3s@n6ruM#zsh^=r=-oRMVAmPdtIwV9NagN9&N3``v3qnlen$?H*m#c==(>f{I|H@Q2(!CEB24-|Mhb`T0SQqL;ZhqqyGny>H0t9 zFLipT|9?2>|3R`XtN(9y{eP=Gs9FBI;q0je8S^}m4okS9g~!P5)hYmgdLA3rEpBGb zK+ey!WwFQ|(&Zj)(&D*g_UgNVoLG-YAmdFicCZ%bE$Zxs{*-^tiVV7$1=kUwW0pJ~ zqbUWgE6-rrkzbuXdWx*W7p{UR>vFK$B8|!v3r*HR%o^2R6pz}ux`u((T9?pLfqDR- zDxRUR(lCahoVacp0WiymJdN|0HEucAjWL^7PzC9#Inz&j(m0H?`pFX_qR@e}Tg}Mh zIZG-o=mbMd(^h)@qgvgeRfa{kKVN#NvHOhk4K!j~#4xF7)QoeR@d_BeA@$`pEymV^ z!jc^L0c{Ehbi5H`uR4`+7n=x7(l7q7!%+(kHdg62l==b~^iG3n<04lXW~Bw4-DaCb zfY64JH7qwmS#9oFz5D^m#NyL+YN11nDg#>Fq=37w!sY`8C-80W!W-g;>FF3jOjBFf z=Yz|AUG7InIzl=jnIav`xW|`te7!Wz*(3@qi-h=e(`|msdjoPv^6=1iw8wEnu*1CxS}9ykVwC{ z+EQFh$enVu<51>Xt|zt^|Dbtoe&^JF@?OMO7hk$i9uK`u0xSPa_*2z!b!VOSA9@68 z9YikA#9kxU;}c65{XM2^K|NR60`OJ#7s?=d8!TwZ**0l0!d%ut!T|QVI8lEuV+q1d zGb>4O8dMuquj4a7=ZgJA{N00(_+xCm5x^gLrun{pQ*Up6run`W@FQ@?FrNhgTrt)-D$Aeojhug4btePA&lUjZy}FX< zoIQ(@-V#j@n_v)WN$c_+%Uz#aDOA>JwE@dxL0ab>UM3fjjfj@CVvh^IJmeRA*Gk{) zayiSmp7VK{aptH1apcPkPb4L|j5XJ{wo-nYuah+wbNA+zNa6W>l55u@e-*5rS9dZJ zUq}Zlz{`M2Uq*rH>T+?imxQ-uv|Y*N+`LjN_qaMvc^}vxl2@DTYKE%~c2#ioxkzVz z=GABUJ&NDI<#(0OrWoeUq1U#~uCwWoJ)i0f(&Dc>?8;(fGANxHVJ|+-HWa%qzN#2e zx~Bb@;U&k~&Mtj<6!rPJ6sx%Mb1A|H>;+o6^n>v7!KK5pq_sfxCYcB#`odoX(YmJ0x@dFC0J9iaA3PCQC42_3Oh~raIMP zwi8EL+QDUqfjl`O-zEarrDLo7SQt>K&-g;L5y83)(@#iz+ zKDX1CXZT#j+n?91*VQcPqB7K~39#a2&^o$)37>$K00UtO9J^j7{C||;o&9Z9a%!1x ziT*bL!?V0-PdAc&ZPSRDs=9d_w8pGOjGl z>fjEkYKl1^M`)pR3aDwrCRCuz5m!Wtlm+l>J5|n=SE%YLX6JnInNEL|J;q5b`1-5= zKkD8BK8ov$AD!KeZ$dVBkunKVEU*y>1j|5>Kth6h$tGFi*$}~sq{WMCv9@WE(jr9* z6bn+IK#N<^QnXl*QnbA9Id^um2~hdJ-+Q0;0<&}H`aSpP)dK3q2`8k@Y2*@A35^Wh z&Vg%2Rv!=)+TD0ZA92|wih@qXbdNXn9Giw8(|{1jU9F&s)ZoRLG#X^BFZO_Q3-Nb`(>#2N>D?nn0d4w@49#Qkvx(F;{AgVPfP9s-u%Mm&Z?+g&r z1)w83t%_T2UlMJrwM}zt&=&wP-_8P7UL6dbCaSP~9u*x22poZ)jmD7J!ZH02D@@Ze zBc>ZZNel5}Tt@ej>;v-j1n_VtG;Mf8j&bNpyrL;zPvm-qS^g!k{G(Xzf^csJDZ!gq zKe9m)ilhevw@t_qT8W%UMi9q9S!fip#S*6fk}=^ul9lDXf^Z`fmGcm(6m$YmnkQgh zgQ$*q1}_A#=A(Hn9~*!HUc#8yav^Y{B~+EyAr8d>$bk0aLS00{OosqFKtnPf2uKak zV39*vb-ut`!~B+`;|iMB%i~!?I$uMD8?)>Y; zzn-KJVWLb+*rTH==maeE%2Wq7+n|@gb|PKNuuPXH>?eHCsyT@_G3)miEdC>dRK2Df z7fSF>YH9|VWYENg+8c(NqNFUU;Rrq5v8`w#%472}>vI^1L1d_nj!<%1;pPDeS}J@{ zJHvjh5ABqs5Z-8QSO8TY)I=KtsWxPBg63#XGwDH&hF<^?(!MmD1sFH>fD+-c9*j%{ z6#|G=aJ4jRcW-M8X*x*o_bpLivi-l^5P}ULIJE!kZ8_j5R{GiYw6R42Sg@vvH>;5) z@x};(MAj_rmm#Iy6)va%syP81<270miD6F!O(d0>ENzZtwIr~Ph<9=#4}`#0h8^J$ zVrP57e7(-gGErr8w^n3F4qS8%lL=xTb`^0#4kGhkOP0PG^gCY&#a0yz0#6_UbZf;I zGkVZZ$Qt8wP*4TR9{M*{r2*x5-4OFpQkt|NS-x(WuS>9AWolLOMO|rCBwgYSk?4fG z?YuRdNN0Gd_2DBTc`*$n>Iej5ts6xJI3jU!ik^5M8B-3)?L_rpm1~l*C>d`D!-uFP zC&An!>OvqSG}eHNu)#>xKr`?X%m1*6i{K5OWCakifpz(UU{oNd#W_K*C@BNS#fR?; zabxD>tq~D1uYzV^G7l~Cp@#j5+wGG{E#T{3s9NyW;dF1Jap3UPH93PWKKb80=H z%sY#!P$$s{1vQmY5fKBe!0KK>DO9Js`Pv+e9&xq6j2UluLuDb;#yV$ST{{sfEh80~ zP3m@9btFTt2kj|yu4oMh9SR?XRhy2&Ds(uOOg^>^p0olKMmMLQD$+N!4LPaHc!4ou zv>&rKCC<2`hpw8oDfV# zCes{Q$$a1j?YR~$R;~Cve5+&!C(fH^0~+w(PH2ej%IE_@dK}YAd)tvrSn=4`jcAv^ z0nZh-;x}mEuUhfAWRdLhRUG$w{>?#YAJTvTG1Gsr;&*G9S0^jubv7&B=7$qD|IU!# z{tt#c^7+q(yl4knfa=o%P%Rx#FDdY#u_36{fS+~P0DTGad)=ldz+%G{;P(1W8^lX) zi#u2Vbvv6rpGBlrKl@+X^!Aw-7*e1nVbixEt)!4mkAqYG#-^uG)uzYZD%GYpvWsl` zD(oVgzAU@!ZTi!yO@I7vZTidqY%2ezD*4zT3Kql$e}PSJA1G{klE1>HCzqPwU)uEc zxfQYLul#?yqOj>pTKV(;p-s=z5&zw$=XpD@c{Z9P!+Eyp!PN{O{|B2MWm|1}bsmsx zdRSpaGL(wi^flT6^GN9Ndcyw?+41&f=s()=;y?qka@lAm zo6Bm)12pP73^xNEWngE=!!AZBDfhVU6Z^F_(B%tEd66gONRl_%a8;P{^JyK)|4mb# zN~Iw@wcFT~U!YRCTF1AT@_btzY2kF*^BYWg7goW@@TTg+aIwWLY|8V*vqUGqQtQ=v z@XWJ-p;`-@8ULo--eA5JG2^L}0y7?KS~Tbi&LBaV$6){U~j$)a6`)^aI^VdlFj#$|4Z}TuK8rT^TkzfgMkWxe`mV8W7yhe z)B{c!(i5h;JHY)G)173hhk<^J@h^r1;r`dAdnKFcet;H}GF4kGcfe48T(uDMtlLn@ zLfi<$jxc%)8F)0&@UJXHXsV=OvZa7M>aYp^$wFMEBOUc0EJRYv$wCCME@G0^-a-^p z&01oqYS7y(#L*6rcEUo$p5USuqC+wr%?7%%T87O2NM04Fif^zCFJZ|XC(;>yb$qL3 zNK>-^$~YWvGY%<9QTq@L6qR9xslYxY9!mBhNRD9ente#)F%$}Rf$lK;K(p~|Bx?TN zNW6rB-M1Qv+$ORUcf4jNQg@+79D~+UqgHP>7005`cWxv5l6eRoOrx6fX}FP&9;_H28o;0EQb{FbzmEz1~$KOgHRx6xQKVVI6iW zWF2y{5X9qw7D{dS4JIy=5?0~!#K%Nbf5a&c9 zXPoWD2D2OHU&Rcso8h`6hP6q*5ywZ+31aFUuW(|#$;V5i^TE{7w35EahmpRlU;vU?BzZbWuC+MdR(mJ26UHCH%kR01bp8g7uiNS3b= z@9LuUFrxq%cPI!bZvhBKc5Z{h_0YjkB`ppR1ZlhQ=nqFo!pIFFJ4YzwuT9c>lSyr) z0UiU6Zv+G}O=(bp;SMPH&|!bn6bVKfelQq^Yt3+|7>aUDg5;nka^q@Cd(nTjr9IF9 zFxZI}@G+b>fzgy4!yWV^gKIkA@Ms)VL<69D9_)2dhkR*3m;pw_<3`~g^n?3fn1YP2mQH;z}Sv3$&Q=r8!8MOnNu6{IoRvtD|n^>0i|k)4%F5znK0d zKdJ^nN)7-04QXIOzMh76ovG8pV2J9pu$l`@NHm6Ww=2b31g3?>nZ$(xwd%C6)^Pg& z{|$kONjfNTcm4H(<5EhY!+;hPsN*T*GEm$~W4ai9rp|`KRSIrC&>eA0fp24l%NaU5 zavZ=6>@?hhwvN#+9UsB%iBq?c2KYy3af^X*&<|BWkJMBHM{P*KKlEg2G3zX8bXo@} zcED8Riujm7E%<i!KWvk{Z;gwwVt2$vIBs`9P4Q^i zEW%HrMiCxTVcum~c={lT4t0k@<{1GMz=@{#JPRgUJ!yE>6NxY{jQSBf;^+>tXC$H< z$h1SXlR@u@n(X5VHiab@YJ-X+HT6Vs*^6e6DHj8cBlFNT4Iq0LNAIYSz0}B}6tIBe zWHyV;IjNWI3LiZxi_)n-MLutZ3G*f#T|Pn?ff+*xD?XiD?_ENXyitgENt8`F@obhs zE+yHwmOFy{g-0%|P*O)@{b}SfG*YM4okm(rZAk!DR%ylQ8FegFJ zI+RXCq1}f_UDEJMJy93ZidXK@qDiq{k{3Y2oOTEQR~0a={!5+4na<2u1vKHIVv zoS0vufl=}$ec%NK5N*QmwP9c4^i%K5eZ;@{{Cfr2 zsoK_Q;bg^7IH|w(!Fl(ew5@%*f6%s&3zz_N8p1J~wnhGL)3yrW@%IWBR4&rIRh^5Q zSY7)F#9m#SuPe~G_UR1w-lTKkWE`8)MaH@do9v#9ZJ;+azlhS6>jHr(Ta~W2>ROlo zql$vDa@K}W2ZGbT(zWc;SamHDS3=h!*MHNs?6L!s6-)56hAaR7Z-~9FHO0wxczMa9 zx>jjMC2vx>N)=VPO4_MhC56g$l~k_zs>+pbuX4dm7AlwX8&s~6ERKq*T&4cC%7rlz zIyRJ5E>AFA>S#|s%e9EgB`$G)TU@KkcoJf_uF|AM-+mJn@uZeasmhk4#ZEVSr~LeaxWtmO)+YW!1+@fI0e< zAbreJG)*s;D58&Xi-kAoV>r;F0A_`%Oz=_<;$wYGD8CFMjNg=n9Q_(PSt-)VN})-5 z{j&c@H84zs&{W6&N(uW$Rl+V=M?jTxkYlQBgp+3A3n^ht1K@+cKovU$j8b7xg@2Fp z?_vJkEhHZ)U>k*#)Qjc9Nm|2FIBoLqZxyhmy22XRQn4TQjVc&&Rpn!09gO_nu7njx z$bYYgv8WWP7`MK<7N?LwR36q9sA5a)MWvlC22p8K#z<5;sbkz?e1f3Q%Gf0ym2lMK z6sr+p%+AqpSF6v{ka{old=Q8u#`k#Qg4S-TBXf>oWR56}cHdyp5ni|wMWoYKk%W(Isn069gAWW6I`{xf>!_P(v=Xa+2m)vm%Hz!wa1ytIx6rdGiKrj6G{f&snAA6X zNgI1;s-6y>b6_erpeCf1<45ekp)D@_Ww__0uO^%rWQ;T8V9(29l~uq- z(?E9e(JThM{zNe}f~u*Zbq~@}KuNmA4WAfjr4~^mMJJMNM;R+42z0i6YS1^54LI@- zER;j(fIa{e5gA7mhM?9kmZ)(A@ogI1V5<&s9GJa`U28Dn^`l%h?&|4=?o>^~Un&N< z;R^%dR9U)h7Hk1#B4&dzvMDm76YY4rn8xq~avdBQn5qR*_)s=aFv^aFVrU2e;6d03 z5JGU#o{`&hga^;U(%dgE)FM-ghtoCa7F5v#rD0T`DLxBiDwWtaV1j!rdMqdv0ZNk3JV)zCwU>1DsG*Gxpbb<4UudQv9-zP<)LtwA z#f}pCV5J5h2zg8cC-8hMj?Sg-K`q!ThxRHm^`L?nNTD*=#rr{V`wYe80}K(<1%umY z7I48G&{8oCQ&*G-18(pp6wrWfP#A;>FA<`S<_{1Cud}(%^omjf3GCCY5+>)9?~4r4qnsh1-yWkxZ=i&{9J76il0EL&(Nrd=r(TsP5b( zJqAjsu7C&1)R&~ffvmz49EF(JBI2j;fAWy|8v)H*10XPi(9)VzTP5t>Tp=y;5bNTQ z0gW3$3JWBJoCME84{9K68L={E|eW%IXYHVGqL%nh*i>fkbzm2!zN&^b9w| z@XC?I!jD>g6`G@FI>z~t$e2;<0i@%S7_!3O8b*5#H`RE z%A+e<1ms%-ZrcJ*-`5%*JAz3FcoejTi__3%U1}M?4PiqF1}26H>>L0Iprz)bgmM%k zSaK7oN!$=iRo(>-5NibD6Y--nZWN&lCaR(MRxa5>^F-*V$!aLRl^eFueIoSSEHxD03N45h*m78e=Fe6`@y*Mv zMd)b}dgT)}6yFL>WsA^DBJ}heH5A_pO{R;`8zS`JTs0Km$|_rEzFO`)H5A{Dh?R;kuu@{8 z6owbpb4jF)L9#&6RnHS9KY`ZdhmH3nib!r$AUTwC6-~TK{Fqf+P74NTzX;#K3-T$1 zb_7vM%8rE@ez0Fb(PTqVQ3$Kv#0C3946yu=k`S4u7b%0P5;Rca*{>wpfT0C1B~C?A zWKDmT7EtBGAW}%`!Lkv7)tEFHQgrDhHehJ=A(Adc8$u>j zYbuVbjV#*1D3t87K-o0prG-vSw|cAVh9tcNg;^VdsvrX~t!9@60j{7HoP}gfO4_H^ z8?s-ge-|wiwN`GN5fT;21W*u7K@F*;q`+xJBk3pvK*tsxwYH@YO)b<$y8`mB{-*-0 z(f^?U2ed$6Q>`cU2=xXAoeBXR%7+!`#SkA5(@H(DW=e54qD@L)r)Wp1ce*$v!0y9|R~koS*=Fd?0xN#Pb*_ z>_Co|_y8^KlfcUk;#5VuZ9Vp7SRwcy%CIK+hcb%78%h(^12&&Payxj#atE}j*=@?} z1Em7Wfwm%g3P3>%+Y|=2T@J<32efn$(-?HTjHKxF*l#1e;0{u)841c0yoI8VK@rly zkufw&QpgOfw?T`hNi@WC5IysURZ-mTXtTnLAy`Yt{A&r9TzLG#o78#UzDb=+i{97= zO19T`*g2p#Ao)U^yO&j%S@ZaA_EtK~dow`45ba>c>+Y*fQS zL_UJ!=_vy@873j^`2Z~RG@G96gAM9nEw0ECi-OQo7y%a0HlQ_Lbi52!cL4eVN(?Di zpiD8XY5RLnRpm3DOi}IL$J(zyI zixKhzga*_FXPOvRI)G?#F^(A8Lx3Aoi<1QO#znXQ2N5EhR}!H-1`1JaP%Pau zt7xYdNK;P>0E?jsNI(-iTvw)Wc*-73xQ>DFhU%i)Ntnp)WcR z+|^MmoqoEeP^9`8lVgcB?Khv2tO>-s3Gdo zCf1f%lxP4R$?z2>K3eIUiz^#x6o_*m^e&WxH&`bQ#agh3Bm(}IN4+riZ_8GzpFw8@ zFhYWZ(rhm(4sk))DA15>irMN(dI8LJihGa-U5VV|5%ww${JU0LsfCngCcp-j_rP4fK}(#>eo2hZt{97*5h15kp@_g$#J*|tqI|Q z+`PC7hA>HR8qxLvdczImhxDWMgy3a9+B`CtprXmzMjC(&prh((m7SU}LJQ@hhL9ah zELj1bV|SFVqygj0gOQ(ulia{OK>yA9Bc>A!dGwmdMyqCXuOK(6O3sCL?GOzr zclZzyEijz6=V|cnujFE$P)quz_{_m49W;ecYsrv-uC@=VhAUNr>VldeS9f5hsEbam z%OmJCXds%;%>mxy?JLnK8+d8G!8g!2Z$|+`u3Ek(xtOD*1^0s7a-`GU*g!N!dbp4z zgO3UanxMm{wQ_}PYFAO3hr%*VDw{ikDh=j^8+@{SJe0gjgw*b!u}eU2oM6}=;;A?q zLNvAuqaBdgi0d#w(NVBV7Gi6&5C`REz@u@0#LRnzTIQ_MaqHc{ZUs%cK)nOa%B~=n zjTDGAL4=P>}+MGz#I62JJ(U=tImaFk#Tz z1k@6S3B7O!BG=if*P;CyAc`F(IoV^917Q+;tVL5z>x2=O@a6uX2uJoE|7-bglSweE zNmx+-3vu+%qX*mAhl1K`11C~iDM+eJRrBgW&z%yaP6^Kfl=V0R@7->f(J&2FETKR}$0UzP&G9R&#FpcpD^_uKA z7bZ_tbg+HMECu}>Mx!t8_);|gC^eSrFsF>pf4kIR0|na(ATAhHz}(S1LKTQ})~7Ut z7oaLDUc6a$04vnkDiRcu9AJ-x1Z<6iuL`w)<^{Qs-ZJD+aG56p_|i zBRM0d+LDW2yj|7p!jvTz74j-JGJ@%Yrn!{0l`;FS$8a{Lsb6Xgo1JKZtAjciM`HvU z!=Fx8%NhfFz!6?KsD+Ev{~cL@#vbt+rr6A*~U>41~IPK%6&Ceth0EGNA>9 zB%5$`1fR7<%L_obG{hp)#1(D-7Ndpe8NReunE#>;c~xv}I4;_NITq9$b^jLID4q2O zHCViQ6%0TEZXf5FJWsu{@do*{gcn>qRftmouVb#z!?4XsSpe5_b}fbL47=9B^((vb z;5y8%gK&LRj8dG2>lXW6f$Lg%^2>*7ZAEgufa_>wa*ac2w`!AXCS3P8Z7y6}y~%Gm zT;CTb7iugfFi~Tw7^DEbFegbB_LiU;09BHKDn1;5J^gz9FKFr|Yg5lzn|kA>wW)Ba zP0d3=i*mJwT~5kDIP-+_G@R#z^9r0VgfpMwe!+2Hz`0L2$04sP!Z{PpabI$TTsY?l z=W;lg3g<>RHwx!&IQI$XVK`3<=Q%iU2q)?<8jkuas3tWWFKRfdU(oPz)NllF!v{dk z0zwkHV(pw{z#e}ZwS)_2zmejh12!3^Xw_9eG{ggZqyyl1_|lyQGZ^1^xCrmmH~;T{*Y3 z%4SBviEy3qr4)1E%3%au1lMn6$Zr)~qTDTT{m!BL;CjJnkHd9^YkCQ;F&uguuBTp< z_6c0KxXz={-i=%apdxw^P*Ko$>P5V$7Xg%lUS#w|0QcfPiev@nZ7VqQ?pnbKmkQ2Y z6!b*k%W^p9EM(-{2^X$E)~j$;o4hCV(d;z>C)M<9vH%l`X*{#L6{N0q|4f!;j+QWi24j z7JnULP5p~Rt^!Xr0X!)IUe*E*+Y;nQ%wL* zN`RNOfP7nmD~R=Rc`5*YYJB)ne7vj$w( zfRF1DW67{z)!hIzq-hYl0m_JrBXmAU0<#fUNVFS(4G^r!U@igBhClQU8l1*->CpZh z5mO87->N*!Z@vBf6~eW8F?00;P*@MArC9gJ4NwVMnkuh=iaHN298Mr4O-yvk-tePnV>>-5pV| zQ-W7ssrvv33NSgd^|e))V6IpfLLDgu(Ap$+;*B~L ztODaz*OI<6&qs-c$xs$B(}{K(q0W(RgXeo{)+Vnh>Q;4T^r)+ z8f>T18*qIM7AerA7+x;rWCt`Gi$pL}IfDim@r6wT*gh^hu?J=yWk>8x1oEI|wB1mI zJJG4dZrB+@SWPKW2h4IQdPX_qhjq}fN-*Ok%oQq3m@Am+KpJeMfZ2j7@(N=vlBVC{IA#XBp}=+CaK;kntUp5Q*#+%8+5yc8=N;N0hKX$}#4t%|g&1k40%CBf5aW0> z4OTL*g1jh9I_DlGZR% zN0ZN#gRDzN4A>S_L;BWGp6d$GLjV)3*i##Ve~=r7>p0Px^cpwdwPbjz?&*VZ2B5+R z{jK*wal{je9^pjUA7Tt0u;MNA?2sM6ioK0KT{0)3TCT?C7t4-coFrE|Ke7jechstSkolx|1S zAxJ};x%fnN8lqvo{#6m?gM2PH{SSH1B~Tvl1iS}(Bj3V%c3622bP6l`AwOWtYwQP6 zV4{LY@dhqLAvVOeCyjsDIFS&3%!$OAZ2!oKh=tPq8#HXf%m`-eKQklFTz{$n+n5;% zApVbdkqSZZB0%shyog%vK+8m!8xf3{(P9f7p@=s54WJ>GBtY{wENMeQ!&EW?m_S5@ z$w>2G$Y}ikDH+jV11%dON&=(iQ7x9as+5JQW*h0!A1h#ks5pq8M#7XG-iB=JcpNL3 zybOy;$D4@w(QZ-(Ajio?VW4k#V|9)js~9fOF23@1pip?Dz~eeCXcW9$*)0+1;dGaA zdx{3ZtmX0GsMavi8M+PcNam>ul1dmls9=~3VBo_r1>sOENQW6jC&`Hvc+n`ORbhm7 z#Mi)C7um3EQ=V3*T%dQ0T=wY1Bt5nY;*cZYGd6pJ_b{HCcVT(kBqpFx8pXbCGMBGcC}=zzgq4g%6Gs zOoKp~>P$QyA1TRd9Ev^N8Iv%G^Z6tvH7jN6&-U^0g#;oRC78kU;n*Fp<5XQymsiU# zlUSs}mAp|+?8?Fy(jo;(H>90uO*`Y(Ii8TCBsn`z)wN4QpGYL4+J{dQ^|yuVy&)el z!A(3|+(XBGL+iWT4LdM&%ex8nc^cd7mNO$T2IojlYf0(E8as7+C@G8*Ej1HLBiciK zZQzRxb=bv*E`huenyG^-p%7cBgg%ntKFu_d@PIA?wo1wg1(Vnk%ulBAd{V|pyZ}A$ zk{zMp$Pnk^>`+n_sVz8G0Nd6edc?t<`Wl6?m8lFArEJ_vcB`_s2{N0bC1qP&(SS1$ zNwXojNcIgWY06=sl|nLlmX5VS_!3q~zyuTt(^_B!Z-z%0qkt{YiUQV9?qpl2wUgNf zQ4Zs`1Jsn6AjW`=;esGk&63pK$p zm(H|+4{odu<+pPC8?9lEGw(DYqNX)}N}ypXHjjb&>T4U|h5hCwsXOSN1pt)|QFvn^ z9x*25O`ya6T`w2(D~@sm&tS_9y@t)bfG(6GT8;;9ro&Z!gdFB))LY8lh52ytaG;Lx#>~!#9ooa!pYtlu^vJ6H{aj z4?tkD=ho4j1T7+^8Uik~o)Jf*d9keskfSxIIqt|IgV`F_E@oLTy`&96&WKqXi_U5N z3!D{@6<*aTt#DQ;a2gA86!{a6hRX;BjTd6lM4Ctr7iU=3o7oTpPp9vL-X)M3e8kb$ z)KOK?1~i|}Q^l9TQ;$kP*u@Fwr$hc2+9*pSwIt`bc+xQ zp*rXwz#TBnu7j^F3f;O}pI`?3Ks*O5eZ@M}c^VW z!3Ne|L0izdKv48HumBU#z!%iX+Dkr|AQSpMC(?N%Sj44NT3ZqnSkPgj@cJ~2VyzPj z;V2a-1zgna74-Tq9C*7mg9`lAu5)v7oEIf#QdWcT4H^QLsX7EmjL}hT16W~w992a1 zM`dM-Sz8h36bM+OitYqj2m-y%jp-fVaGr(x{&HCpq+ffL!FYw85#WutX(tPrrvOQm(#P{;`+i&D_>;IR5Xi0Y^XIC0~Di?)Pp zjJT@yNmz+et(=TeQ>_V01;R`MCLt=&k z(2}>4D-fZ8Tvd!0R7=fQ5nsT9QJ;a$LIW;FeOn9l^R-X{t=-{h*B$7a&%s9sD)opK zX~>&K0x_~sk3j{(c>Rp zB+~*XV%jc(X(J*yHG1a81PzNyxY|mk61mn?Cm^o1 zT1284G+=Rnv^dfhjpG=>QlP$}4N>0&89U6PzAi*9v@uzr_-iTk`Z5Tlu_0Xh2N)b& zMmif{Lf43ou0X$&eChY5w?2S%1M6ro*>NM!3^4HN$$Fn2nKjD`bZi&E+wp&<6ChR|!~(8qIKm<*LsZ%+S0ciRP*-1o`yh@T8TF?!)5a$)Li#1L;+Dly!2Z?28 z5$3W&cD2ST4-vg{s&+G$OpJ2TPYyo*t|U20lH`oX1&=EpH#~Yg?sz=#6vN|*$AD+J zRC$0oBQw#GCI=XevN_W&J;NNE$R4TYxWw$#bh%%O#gx^^lAR?FFvkYU>4}5PDUI9` z)9BM*wsbZRvVH~1mKGL-Wv3onWohA6my1usGOOe!SM!I6654lQ({{68Xs^* zauYerJSZzW!(3g&sm(dokZX#(hW+abrkDn!j@45vv8F6)PZQZ#Ll(6RkWEpR%tmgn zNAa^p@s~|p!PlesTcZTZCT^Vy32W1BfDvuCZ=nF4oQ}Hq)iKI-xf*qbG?L>}`l3RK zYCY4@SORTzs%4!)wMDeSwPj-+V{J-VqY(oI*-%ujC_@JxT%}>sQ0W6{h?JPtFEK4K zYcL#{+5P$@#wME6vgA~AswHEv)X_3fPB3N4Sr!X=AZ@T5GdRmkpRy^1fo3LXsgX0I z!aK{UTKzrX>SgUER;zrb4*6I3AJf!O5=BGVrFJyTD%b3%4TW}FF*Y%{;Rnd8!gtCI;BLqVOg)94jp;a97SME-(L)zrFG z?32-&(RP8@n6fGIp<+iDaZoMeAQ@g=(g=Eqh(5#|Cudj& zN}1;V*#IHD=u@_URzM8{rS_HqR6Qv@ExvE2Ije8K#1!DUoS2DXL~+1>88PLU#4I_^ zoSu~+$7h%Z6X4Rbv!rbFPkOo~BMapa>{HA#CCJP&p&c1iS&F4($7g3|Nz`GP35aZK zOS&n;lxogGiLsXKv@9u1Ei}D_5-t}FwALuY3cohln^Ny|jJL{deem5E@qFAaEN&d5Mda!P`A zY@3b|=q0n28Z*)NcGM!92gRDrahWQS$tj7ciCLMF)z_4so|35YGc_nX%{(aG97~wf z9!L-emW1-cTC|YUGc3SEvmBdZ%A{g!@j}f55@XHbiD}7ij0c8qiBDske?1!;w@@L5 zvaG9%0_Sb4R|OwYhT7V`%s4V7bVV$ICDR170dFy-0i6Vx;{^X`BtvAF zGSLjMCGG{vCfRIGFPfLFY6YArlZl17TOlyp`7>uzYh$f=W|k!b@QgtNlC6knYZclC z{!@^#3TA4y9Y(|^WLSW8V7Xa|h+PC7ViU}<$&3y~qY20rNnJVC1dwJ*DTy&aLxEDk za@9;pNzafVDNx;l5{NNnqW1`3vDqm?_%Rk1#3{nZ{wX?TDM+VCJ`|8*iBF6bb&`gl zhH_Y>`qiRi3)RKM)RHIxbx@l~cq+9>fJy)+pDBl%P4U@gIm!Z1$(<}IV69R@Sf|c% zDtMk8W0p<*Kv7aw$M&6yc*V499a_XIOf5uEI`h)Pyb#rhwPXO(ku}7guO)*ROC|^@ zv0oyJY2PJ0oLPJf#&xt40J@?Ic%Cx3!;}Bk(!Pl#$gp1N^3MVyY<~bdbUR?30}yXUa17g(SByPm8sr zLL-BWghs=jka$vCJa+WWy^vvsNKBJ5v*Ln-iG8G#ER|Xi5kbU@_A!ggPGd1ES!GvY z3Y8(r!IX%@WXdMFFkwr<2nIJxQ*}lus(ou&@Eia)8xR5!4VINoEyBX=quGl)uBnmIJF~Ho{($AM!BC2C09#tYUKeO{zg+ozqpfXh)ywBDmoA4m+ z-OrRE$CwbBBtdmU2U-$s5xIF;8K$&MB5GlE2u+IUqOU0f>Qvt}^T58M>;fGK%2ZaC zRiChBr^YIzwlIscC1l-3cv)MS5lip@TaQg3>c%frG8CVg7~2=92!?KtrX)P0T6B`l zfL0uZfnKGmb&TQo#bafJ1EGnkEL+OT$Tl;Xo8n9$Sja?B6X|v66of$WwN)=&v`dON zrKU1nf_cVS%$YzYsQ6SxC=WthWM+Y{WSJ!!IwO;XF_nVkVm&MfsarQjDDDs?<@ zA(=Hpt6IUh2=dQNj87x=+iYu5fsd7^2z@wMPE3OalVJfhPmLHv?>TS_hPD zA+<}(vPH`Z`#HAp_h#eqR7F+dX&gpOTGNvMAXG-VHE2%IdiT`OOe2;S+YSk_2I z<6=!9D2YmE-5=y^kyA_=@n%VcGtI#eDexESksZiVN#8~kRG;`NXbh>TNbqTNF6vF{ zOFYo9Pz-y_D->X}2SrYl7&6@ooH#R#Qsk)?qmn0zXPE>>#+DfsN=)6JpzP!t8XH%D zaD|PD!eKTBQz(TU{8cn$uu5t>(o+CqCd6d(;DJyMPz_Z}w}+cKE5Q=S(d@-CEHU!# zjE-Qj6+xNVjm0-$Z13kuUPLnbA0%P!aIjWw5-7f5+cD8N7L*ro?w|dGKm%%O(+n?;`7asMHmz+ zX<&?$5yOzRnXf!FK`0<$&_FW9NCRsj5*`!12byf0(FAs%nx177Y^0{2LS9Mej;{DELc}*dKCds zVUy6eY4;vIrK%>mYK&YpPOjRr=sGHsORs*A%`nch}2AKDm8iiPiibRl3J0)+`_^vD>GO!`uPV0 z)~g@XprPbfr+%G)hEj_R_R8e`AO- zGTLY~2GI|_ql}CZ&?zA?F)Rh6PpJLq3Sd1C=ru7)q=bM^WT!&>f)Rt&Qm=*9GfK^( z8b*a1{gG|s==K2}jUg=q+q4LZ!Mk%~rE_y*NJvWk7J})jF59nYCjBC)eS&+#uuyvZHVW6S}qW|$WA-t(2AleccXf#@aI<)6xaKo@_ z1GitN$oQ0SB`7uCKd^IJyP%Xb|G+Mtni`|R@%9TeMx`O#*fgj^JjHJpU9U&(bWaaZoeA4wg3YfdP??q7y<|cQ%FuhlDo|i8D404oPSq5^fA>X0o&oX>5!P zGFd2tW|To=qp<-p=n!r+_EZA>Od<8#q=hy1OAKk%COo2nUj(`*ymbS=W&nL!i)KB7 znnfdCP!9}`Q#xuwOhkRWEs^~qx;6t0numr)qXZ+~Z9?iP^lr@W*5VSXu^|8is_%g|-Y-@J_Yh-Kb4`A4^1_lGLD6 zU}%HD5ETnh1EVpDGV+Tw#n3w-GPYe5-t|N3H;IafPiY(y7-+=1O$db=jnU%m7sX%r zK`%s8Zp|X&6O)3BQIY?I z#?Ayk{*xm65iI;Hk@1a#B7;&b&0BZIJ4I>Uva``YFvQfnWn7S7ppqCFmlEU`Wa`_b za~q>yK!>JkdSGG)ssJ*GO)y&U4rvvLcVne>XrQs7F&yv4c!wxK2uHDzL5L5i7i7Sc z5oK%;83%NTk8T{$wMmq*b#(opfUqdEIH0K?3Wy4+9~m9R;T*qp6n7!jLNXc&6OBed zo6svLB(zJXc!Eh>=d?CKJrW}Obq;TgcSwsAV-Wm9lmsJ?08a5IMVg{I`@tP)ihkcO zAj&U93G3A?J{s>Py&~fjU}j2^5~x_3bxUck1f}=|QDnT;^yr0XBZwRsB;XAo)^FM- zty#BJOEX|(M2w$b1ezDp!q2Y_;)S$|0(ByCApM9xsjgH96MVHH86g-U7p0m~^|b7i zlp2sdLR8op8*+7FAJmYlORB;uzb93bs$!n2GG@1Og=ZMHI~z$*nO`DYs0Ehaw0+ z38Fg7lu}!ks%E-L{`GBxLSjsahlJD-A(z>bv;lKk-DONx;je)#ftgES>Eh4DTLOcZ zBn3}%JT35q;%SMe6`t03+TaPp(-u!VJmGjE@X#OS+aB*oJW+T$;Q71xGF{cuF3v74 z4y8)DIG1v+;^I=qMg6N%%E`I3?Th@aAN(%kQVRcEs+27w{sPLB2~ge6Wy+L=(>cJI zX6z&>N0y|Hcz43n+3tZ;%9SOk1rn44@t241Zg6(T(*sXWJiYMH-xXPe^@h6-p7-(e z#nV2(k`h}FT9+w>z$9IoB}vs~)!(lk_ZW4U=&zO>9%2n|&>=f9Ho0||Fh9TM82cj0 znPDl&C;GK`K@p}j==B*QpK-5+*9$krm^lOL>!k?Kc`Z&5rslGmTL!h1D9%BIQ@gnx zet{j$nU?H~SaWk8xkHO6PCmtn#nsU}CH+Zlg100^OOj;56N4ufk4W7hjEs(O3(Yh1 zg|ZC=q@^0((r4ITZgd0!+G@7ZAq-Tgn%?Eij9J!yO{(99l%zN|j=C=_Zbh6ivjXv&k zbMBOf9^-ZXJ2c4bi%{>ED^Eih-39al`n^aVcR6U}&5V~D?^pkb(jTq2KrTM$-ewu$ z+iP|WbowcLu6MWEseLA%JWSy+r#k2UT%$vu!+J?sxtG>8NzWgS`m^KWI%V6qOUh61 z@<6;759jDoJAU?n{O-UH3w5Qt9+EV#m?S+cg(-U{N%|e`ou$#S?vk{pq$K@}@AXcS zlDiN0=xPg;Ri$~0(3Y(<_%qb>w>>;@TZe>68`Jxk0eI`{tn`g76H&w0QyHi z^p}r6TK`U5Z5;l5@JD%2UU^a;s7lJCKX?359+X!;=aVndKl-6RYhDzG(o3(TSL9FM zlJp8+;+x`89+W@%S--7u=$o_053xsj9Mp#piXH+w`C>IHYVF{l)rt>Ed|++Fk^Q)O zrA|&ro}3$f$uKqQuyIv-zRS2a`>HQZxKVaa_tOnF4tnA+Ds*?1MR8Y3&g^_Va9!3T z_le;LYcEf^U134*bB(tQeWCrR`A(lNV=fn;-tnmanv4f-AGh6K^P8mK%gyWgOYrwY zo;i(awWr#We%DIR?s~HRcLN?5o812AIxExezWdqx7n*Jx{+H%M?0opb^sCpj4oCb} z_rLEtKJ3RDUnkytXKs%(4L1#b>NvXP4^jEe5jw$?m(?&$+ybS?{&7(<`14bk8Qp8y|3c0m-(dI zsh|x5|MZ*^d8qEUmV1>x?|ZS?_7Sh7keob2)YQXrbnYc%`l@_~&{4ZfcAj~>O5CC= zfm!PwxwIL#uWa`@r>iF{z0qLM#wYIK6AxDCz2IE!l;yV@58d)YqkOo-tHZP--li{p z_3OX-zGKVLKa}b+>qJ%a;;Z$t*Z<)fHvY$VddxjjBk}8-4F_*}>Jc&Nr;2?(J@1>k z;!cxcTVHCMf3&lB$LU9XV!piWpRwkFQ>!t1N_U-ovRc0-*Xj@W?y+0jkN21BIq#R6 zN#Fb)JmmXl#oAB)`Q7(FyHF=><=v*kxBaDSF>+UlPBV^Gj$Qa$K<3(q&aKDpEz|9j zQ}4xpbv#`zakv{Xd-c#p)eLe!Z_P?&IIQV@$?J)4yD^^XTOVx)PNGT6Bud z964j*+Fi$fd+1QIN?>T`xU5k#7p>cU{K_N8QdR4<>|)LyJ!|p$A5L8T!>M$&`mMV5 z8!%?}lJEAMy!P0+%zHttyTuP2`^i@u_MW=_r%T!D4cc^17&LCq(vAC0-+1EsPK}0P zJrW0xpZoQuAJ5!;>Q=61aNC|qLq4AO&G-9%`Td!`e62?9dL@4_Vg9ns2hQGl?p~pG zz+W!5t;gdgGx$Wl*cmMLN zRJU1VU(1LopMSgk(8YVNh)8A|od?!76}$U=2iLjp>`rx_@+c|2-s0Gs3uncB=0EOi zu|*rt4Sx6LiA&?o9Q~wL_;;>bhpry(?7Q*$w2IrO#u+wLd?2q%YSVwy!wbr`QNxb^ zQtsB3^Qj%yAAhuW^s$j$=cJU#Tbdj<Qdbh>TmaeatGG|TmlRs`g8}f9^^50TU z`)BvQ*z%Ca$#XrL99g#9c&1vgbfH5|hg17Xn+|VZ|7e|e<=tz$&YkuBA$e#P{2v8NZ_pY!9H8a{IluUfbC)ZQ{p*7o?&V_ls_y|->yk@9_>JaXfm z@78Xg=YIJ+-Mpi#vl_NO@%y&}kA7OJ+F6H@rO#y+*T?=gs!`m`rb($DOM!>_L&dIq z`pR|2dn+Zk)t@;J3!UMae{`YC*n|g~cmLYyl-Q?R%%2D1%{l$+r@Vuk*V6`+KmOOH zTF1us9P*3dVB7QYmW!L7KE1bXa*J&n%AA<8*j=w{IV})zyz4;-Kuh7k#nI#rUQ7Ca3ug-j>*E;#$*z zawGd~$vtYRTK{rF$5{j259(U$H*YGf^{HFUvCFnb-~Uiuzje*@p6hBkB(3fJ)vHrG z{SF;oKjE`8wJWZ?&}-GsxcSu{#NJ-8Fe%$@MymE}C)Wkd>KD5;I^H>>L^sLtqqf^; zl^nA1^2%DPKWI??JNNmMk52d4cH-)Wd*_CFUp%Wne)QOw=9iD(f3o&`LfXh*D*aS? z+lRfXZF>Ccz*Uxktv8gt*3)HNdXnd>{f(UZ_10^=UVUbslDIPF$+1_-rk00NN)Nj1 zmV5W8$EnUE9op|)t7~Yg7XQ_srK1l=v`!2=J20(j+oU5a&-FZcrl0;|NPeT!L7i4^ z`TB>?HeVQVXie*zuhttYJlMMRh>?qh>4#{dLXBv!6b?v*k(C+)~{J&Cl?^)ujHh6;2(#i*NVj9q;tdhgMy- z=Thv{FGhcT-lgWfYnI5NA+=Tpe-M5kzy8&@?>s)zd@`)!up_O8lr676wxN%4-O-5=iucQd*S zG@M%JS8LUg=l$LpzO~Qr@(X-_jsKq&523 z`Q@iSU)#Lo>yiC$NwtFx$A<;zo1Vxv_E@!jSbn9atv(r&bm`dq+Gp4Ob!~RV4!J9a z1b%q_YMZ^+KJxWgR_mj7Q^T*HuJ7XXnTI8|bI6{9#XtDs>x%gfb$cC%Z98qu{;Q|9 zuE+^3f77IuCp+v*eQ(+1t|32vTkYbSn-w>nsvPAt$ecW&;^UwEU#xoEW$uv8FX}hW znct~Fubqd6M=$-rd4%6d~ZUVD|hz%+HTp)F?Bwk^iIcv-wh9PdVXq7 zNZzWK$ND|0Fssju!F>(EC*P^nXKn3}`^iZk%r2H&zu6bpJi71BURI%Mz|;>yo}NE? zZ~L|NAAdHx=Ht^VB4!l7bft0Uvm<-#9kzGlhplqYx6`|3co@^lxZVny5P3N2?&wdS zD!Z0^RwYXM<%iOZw&tE2P||Z=L}t?FCbvt!befPE)XwKz|MZrdE}ztNUv#HmleFAJ z)2q*4`saHFkN&1wNhO!{+qL;lpG6mjKflzhLEhM&4<^<5W8HUQQ)lftdHdMQ)#Kk; zRkm8+2_sq@^lkLz$EADk4e9kqf>ZQ#5AEgy(?WBWKbriLW3PRWW19Ags&=trvhw|@ zYBx$vt2iZnRjR@Lao2%~jmuxyGeq9B@aCA8&A;6`?>#fnu=0VyBKLl*{)(Zhab)(rVKsmGx>dyXarKYx`q^Xs5{HlquFXIAAmzyUW|Ka-*8N7G zW%pZ`pE}#8QoBRjdZaHsJEMsv>x5H3uU5G}`O^HBv-Y379X#>QguW|2Em`^2lFU}# zw|==9e|YP}M+2Uwu8H`}Wsnr~RntaMJN;Ju5jt?fbnmTu8clxwviGfoUS-|tM31ms z@jaRMW$D$6NA|08=7&CETRaVyN`%!KJK&c|yFOX)-J%CwpL_H%%%5j}-omX>^Aa65=k9*qo=v=n((mRvcxJ2e4CBkz2baS$pNFPg+K0h z|7yCi%O_~%kNXBC0DKc-ACe(>1?bDsO%_Vo$wRKUKMWuU&?+;lR|{FG5zHTa*{B_h?maX_q}uM$C_jZ@la9 z=vzr$kG1hX>G%2IKAtDM&)?CG>$Uld!)JR8sD9feB0c5zd1rp#((uEi_wVliHG0u> z(?^+&t{*=f8(-gf#r>~C|LEUtM(;l>8XX3{x*qvr$BHsTD-YTBEc?v0A)gfUIo0<4 zA>EdaKX&A=niD!yc$xQ$&xScY^P>IE&EA#RJFDbZ`)_r7)z&qq>%qR2i-m7})N=30 zZ53Oa64&hr+J9R)QL*v7iOF&0(zg7xph2Zs6@J-w;gc&LjVa^QrS7z-#{<3AcyAi( z8}qC4q4jM(oLkzU`Cvz{k6TXAxqa39n~C>dJ#a5kz5W+J4@&c{{q5ebhPZ$J-kh_? zmoJ$%v36*ys^1j9I;>{C|Jp5<{d3F^=& z>a^E9m+lWEzPPaX?$h^MH(YaKaOUq_<}Ye->?h~)o$4Mw@x!ValUjBRt+LDE`p_2F zj6wTO53#ffUa{xrlwzN?pM0k0Z=J?#V^_bw?CSNG56zA>H{NX&eJSnChOiq`N_r)v z?z;HbgPgI$4c+QIY4vEpphcCNJe-H6aD%oT{G(3Anb`;ThpwEpr9z#7$?KPT@4Hid zSEVHjUv~Mca;1;DEe`Ycth(&+jUVE+h@d{yHQtwy?OP(xB*LMxXkPyJbCBQ z7#v1gWAwX`{T*M-IX&{5Mmf4Rw+98jb4p(KTpI7cV&RcBky-N^_HVj#(~O(R&3HMHU)I=oVe!{JUES-tf7AKfyTd9~IULk_k^iN;K5;F+`*O_849{M>YfjlzVx;T6 zRcFV0#81@*`0o4Y$TO3}*d7f>nJ52Q{Mk?6PA^-|sbu?2@6TMGR;tqUDiNQjKfLlz zwWuv~caKeJ{^|X|og=D!8d_uY54#U^oE-T_*^`IL92ya(q`ddz!p%4PHh!}D;)S|p zdyJbHawe&lzGG*vPDj7n^Q`kF^Owi9Yx)hoc)97*CiOlUkv#j*tMSUHtPT2ekGh=8 z&d`nUeemnj-{OYf+I(d}E_2k51%Uz8tXhUdR_j|G$3M@!rVf zDiUhTZR^kbF1^K`^pYw?v&L%nexNv;%S+uUb+o_TH)5AWe>*} z_kAZ}(TK-odoQf>^!NKa<_8U|HRQvpyWgFlullMsWV$P zt#=6S)Ok(9md2&av^}5Oa`Ed{l2QYdaT#L_pctjzs_OE!d@vC&aIe~ zFuD1?^)5?`>3X(Ka?M&YVSBZ(n=!cyU5-BpA5^=}%(?T1e(=2YvuWk-FC9Mo`Iyf? zk2s$Ga%#tU6{<CT!)ybeFv_u z9zNIQ*uqMe{Yyo7bgdM7d&Ad$x)WI&ZU*kW>eRd6y!@?)_f@*+(f*I7n=6#-x!V8v zX6NXVXMVZ%SA&#wUTtP3{P?v`aJ2)kwj8V(cDHi-7I{0r{bRcCPt{BAt^HZ6>Y>36 zFD#yz?6MPey``WF;atY>Gw0wIy!!>oqWE{x^wlEuW<*MJ! zTlXrtxb=v*o-pcw$9Vs_m!Ix$8C-T~nG-|4nAU85nO%opRlMW(?y~I{h7M>L_-S79 z*+1e+`j$M}YUcpYyy~B9n!fkp+AY-@jG0*Y-XG*PZRwqf79w`tQ3po)op| z&9pAAoJIILc&Wqk%*@c8Ay=ugJ4ZtqttZrIv=?|oM)a^amR z6)sh)F@IUl&6{sbtJpYY|5!_1jrWbQ%N{h`9o>0bNTZ+c=<*Yi+Dv@bR^Ph!Pg5%F z`Rw4S=y%?^a`|GOjKFcM%mRF~fgF4PhfAz@Rs?Ua%mwpNO zW61dQ|Es+-4~Xge|Nos9O$seiS;N~_mi9%%Ekw42>`Ns@WDnWiM%hYQ@V161lr{S{ znaENJCE0mrFESIdZ@=g3-a8D+`}6(0zrWvKzmtb^UiWog=XI8Q&fJ+Zb8q|G)m=My zwGN9cPW^Ow@&~#3l{sT9`yX#{uS~M**q8~5Nx8*astwP2eD+`^5XShudk@_ z_d4Iyfep0m^oCygE4uoCM^kzxbS%$4cVk=W&ik5ndOj~Xe0MhuZA-(|{ey3|&u_GK=L`RFRi{02jBB#>v*YIC^U=q4 zFqZAw3`rXw5?8CFS?T=jkyLZ)R|JCQtuB&TiS@t<~Z-$|6moI~-7Tz^KF=f#DM#}_<}Q7)F}Cvnv(s(QI4^n;AlKafzSPa%cdXI-HYWif8g`6#5;0f+=8NXs(GXfr-=-@~l?j`BWxr-qh0wigH0nvzqn!0(7&{*HWZVk2y1{CzYf%8s$ic}8@~(G!tVk#@w-3` z{4P+0T>y9Kdq%I!*pK@Kp*M0HFg3+f7$cnqNKXXT_*G#BW1xd=Qn4SffSib!N|pjQ z$VJd&`$CLuNwFE^IL27V6=`fniJc+mF@`#ZNMoZ++#GTmViX`=3_Ky1!5*LTi?RJF zuF05)AHd!UX>4wZ?V-Ec(p}Be)WJ@Z z7@J>W3FPZ&4|b8nA)qDXBZ&1uH0S~O9qh4ZBE~kX*a-fU;J-1_*klviLVp_mv3n#Q z0UAM0MvR>ZaX9Dz`62Alf#SiSHslrX-w|o-T8Z02z5@ToNMnOgYzg@QV(QN*&<%1q z?6r~Z4{9-PXo|6p9n#p;6FWkm3;);_5eI>$kar@c{$2<=LoS8AF4EZY71xKH0RI6< zW7ALE9`bGYuY>e>&>FG~F}9Y(F~AG*Cx##Y-jEH^{s>|GvC$~Df&LWAr~3MXhLATS z#x9I_9&m?zA9|_}wxq@8ke3PLkBvyN3*^hf_+u+m+ye4G#8lr%&=vAa*wc9S115}t zSVP2*KXw7d4$$WaQH&XDtk@gEJjIpn>FX}lH#PslG|Pvc+N z{LdD~eC)2;^ym{96!ffN;9P;v?=6``O{=v|s&6Fd z3i%c6X*?^N|L2AA4@90O$iD+I_16O60r?s1Y5a$QdXU!%<39&-JIJ?$@gE1d73AZH ztAVAUC*+T?r}3|B{+|=ZKLB|eBmXwUls^J=g!}~dH2y@{&=qK%6b9V{%mxKz=@B}xrkz!)>8OdX~HzOiP-*x~!T9q~0O zeA}FfV3L?j<^iLD(~yF}Pk)B6r9UI#&ln}qUrpi9gyH`Tm{Z)B$wasy;_E;cOVwa$ z&NRdqc-`?OqIt|oMkJai65*C!A}vuBkr>Z%F%X&Io+H*GH<6#Zf0a*_FY;0gf2Q~| z!=E|+YU8gC{_5hd9{$|$_a)pau#3qkH!2HXo54x-;Y)|s)8uVkH^|n$)lX0VO!vtC zo0a&`Hz&@p@m8jn`t{qwn&u^sGBlirMV>-d2c-+yJ!bzn9sV_4evv&`u76EDb|;(b z-TCs4eG%;ZwqEOsuJvOX_b<^Ry;BBd?0EU&+Pz%YNgV7xrnY;dWQX0po?z@ZN#-w| z-hOSVlFbiVWH57hoNU3|@x>+&l&tZaQ4W1BM@vE%m=vVlP_iFl-Zz$BTq3*s=1z;T zc}mtl>#@JrTR%zGx~XO!=alT40=pp(lj0;1ug>PQKcQsD&59Vdb?quijmY;Q0}m?M zPs-2BY9EY|yzMgCYS~WsOK3B(-HG;+&G`kkrAbOwZ+u*&z2+EMoq{iWg4QY7>gjDP z`}F@y)_aIio@lv}?f29xS}FCG<=TW~q(>>)TIGdD8)wJMidv=aUK_4t_w*ZD@}NK} z=^e8rYxPVe>$!Z(Q<*f`;|3_l|5Y=?fia>l9l&0W}_pQNT!~j z@N7tcl5P6Ta9YBRm9i^CwdNNMQL=t*+O~gNx>mCN=xCcoK1z1I^TPAtPhw^DZhUIw z-BZaf&D`3_eL|GvYV?T3uAP-F`~|MCg7*EMV>i@R|%Z?2h=Jy2DDa=6nHiJs=etqY8lZ0z}qk;`h1 zm-KJbK6Q`2l0CE|t>@I95fYQbHdVh=QL;TkcitCuSSYc%-s96mk&^B9u3(tUomk1& zS|j&~KPgzPAu+Dfq=m8<8<+W>d81%Qdw0)$-ffxed}>>#Z7&pTOsn2?-s!B71zp!3 zx4TrqUUpp3zBqr9?Cr)!_P3rWSd%&z_nVuqkv&Q=&TRES!H(-;xy^Iq0!br#qaIuD zD%hyt<}>|_mdol&cWQauRIo!LO+90`4U}27e%r9>RRvpTZP!ujTF#cOO7Xt&I$yyW z?mXr9JfNebRiwY4_@aVUj;!LU8?;g~fT{P~Jx9UL(A;$MUha5Fp5)}g&1V&?wNVW= z=Ie6F-GXanmYE7RZO_c(7vrW$nprv)-jplY=|w)z((5gkRJ-$e%|030lQfC3UlA+Y z)^h!{eMc2+*QDjQbMG#abqKn&`Q{-7>+4)2{p{T^S$MDY{jClt*f&FGm3B5-D66q- zSWfa@*kAi>rtPp?aWa}W1*_{*_x`8W%*V;3!3(64RUpUDb#cZpSGSl{_Fi_Bd6&PfV(;K2T2cP=iMHEGl@+kYwMe4XC%25Hb zHnjsK`!*`r-iwQT+TE7Q=CA1eeh%bI?FaukvO$^9gYhcG%rs!6?7pmYzp%+s=|L5spM9oWrs&Q73|k1XA=Al19wOJy9x%c*;uS#KitUg7CS3W7IbK73mt`mJ+}LH{~MY8WFJj>9ohU!!MeTK z+OB$XoUHAjM@uKaNB=M1TQX zhDt7<>>gJi>&?#9%RYQekC*Azzc%C))}#IUd#rblpCU=S_e(oo=`$}F+inTiRO35JKeuLJmSyRH!Om4v)FY)kPH>B%Jc_!O* zi4{}EUvVV9!IebzdXb)K*3p;YEw9R@{hgZsao_{qbRkGdTS8j#KzVw8q1@ta(RJ~b zy6K$OkF=2+pdIL8I(=H9e4O{8!sHQ+d9531Q%U=-)uLUs3+08Q(l$Jt|5(P^T5x_z z8#etf-xF8lMeSQG53Zxd+cKPA()!gswZ#95Ja>K%&oHib6t4%2Q}ff zQqq=?*5cl=`^A^#*R2k(sXwbJul3{nCPKUTuJPc=%W^jD(xI9;CTiN$%Cv5rU($wM z`sm)`vV7XjzRmv_Tq~XL4bCrVR|lV5os}=w@_8~^wxYC+$D#q&b+C)@}GWv!j>fizI7ySPrPh*UFFcOIp9% z=XaG|l>f13VZ!02R=n1Y^Gn(?%ketRF3JtQvOc}qnDVuCm|HXM3EUT1X9 z@%Up6d0U3_OWMS>=ibKV%I)WG9NlY1Gc|2?W!j=w)LzoYwF+H$>byMm@DiIeFLT~D zgS3&!0>wdU3SDvowE6y)ziwra(cbtLaDKO<s}-kB ztxW4iw%MdDs0ZKV%_rUIutVNs;?+kp!|U?4oHlY7`K>^k zLAI%+&9HqlFm#(-vFW9K=T9xu`I$i4?8>x>oL^4+<>;afN%HMqn!Y})@mg4qNE^AE zO0GaFCGB=-YlT%`7rs&cQ1{Q-O{Fb(x12Jk5~UyKmCBVC>eM;9O761t!*ZXc&3RKd z(njq;xu4QfGGgTkTMORIuKzdxg25@bSE95a%N$Y~jI}J9D}U&Avl@HfoG+GBKCMK_ zkmZInk)8%6(vi^2z-5qo4pOxurb7O)9mI=x~^vJ^#|J?OB9x3hLovLnz}uS9Ojq|rIs+3Qc{+XX~xEy+gGHpbD9p$`)h{KKsVAx?j!A;3scVTWObTf z@A7hVZK3(3P35#zGHjmiW@ou(_iArgo!1sUhc=tEex37OSM6ojZK&3Nn62uShqNW6 zEy~~aI(Dn50UuP-i#Nrjj<}Y1IPeFl+mK zed^NsrTiJjaDGYaHfY#zyQA#QF6nKD8a5U>qm=xT)^FF+tTD&gN2A|bN#l(9Iwz7g z@&MV&L<1Mg*n*vd&*pblT}hEPm9!RBBV5j%V2eB+?-`xZinnzmZ8m9(Zn?x4%h}IW zH}$$|uUbtxznr#Nc#P>u_N7j%i($%!e65O}k>7)`Eo=Oz)%KID{Tk;^G24XRNF;44 zX{8JG{qs+;n-0u7AF^JPx0RAMo3wEzX`cc!*~rP=8>h56%lC#GX-i0(W*5;e{xlnQ z=(Ep^2w}Cg;QSsU?WTv1nw??K%?W-~Y$vq0=qdRntwHn&uK{P-u-1~6OD?IdJ4l;N z+KE$_7?qu6?=?(#wA4^FzN9T7t#_vdOC!&*+8yI38U(4X!ATo+7^kGmvppxW*!-3y z+kM*U2pvhv?WBBrd+^|FcEZ=hfz4m)@U3MyuTYv6MM<77&tZcb_V?~MS(xWVCFGT~ zc|!(Vw>i&lzqiwCse^Fcm_gdeBV_C9yeRKHd&tOV(CO~N_$87ym9z$BXFpEJWiMN; zJTtlU1;0r6kv5yOaaYpX?Y+P{q?x?6{3=X9H_k6-`{Zl&z86{Ra(BOGMyL2Oupn*J zQ8ehz!(Fd0vW79o15Fy{@C7rRTPRJ__J`D6bBVS7TR*4td>y{I8O7w5v;%wkIZw)C zysm_&Z0 zO(pHSo#%&+&1dJ;+Vb|oTGa&_=a;mj2M4T?=d*{?yYzm(RX8CnIKQMlQhl69&CBf5 zW1WxPT_jv|6g?ro$Dxh8J-h70Wwu<)yW58Z;mRR{w5g=^E4cTfW&wLd(y(CWePI9- zNt;btgA>z6jV)laroTwLFy2r&)k#}IT5G%MeNGjyL({7q@^LlewSJsm8MMWPjSrY# zVb>SMl{!8Y^IA8~FKM$Tomx8S3On`cDBX+A+NASuWjMd2wKm;QlzoLwzFxIXq(y69 z%W!^4o9L{wyHO!K=-kM86Hf?lVv8PAd()xK%j)}fRw1i&8>V=^OSp8%AZ;qNDI&i? zf2S7~vbO`1#g=+i)0x$rYbHN*12bTKx}|htpBi7kwr_?VFYc$l#hTb(z_v@`LJ{NE zp#~#e34?pDwauW%?lkvv+_Cs{{^G~4Uzf@8TSp<7V;{rZ9Q$Dmwl=tcJsSSr%$#J- z7*>T|v#JihiJ_~9;&iKES4fYkLN;XSe(!`xuOW8o_<#bd(P3;|X)wBUSeNeZT%B=W zCl~37@Waw=h)s+sH}{_|HaQXSKXiqZ#{gwg9_;=wTJ#^IYe4_g-Jzk2%|IR_l!v&! zAsy%b(>0u~wO;MF(O&ezx0#_5;a0P;T_*Ft`+ zRb+`DvIa0rBg7mhFdDab1W{4g=hb?7$Ycp{)OsC+uM3F*zC95O-2k{~C8>#!dQISfRD zL_oiKFU4^RxG@~F1@Ts}4WxinupR6GJHaln8|(r2ZVrR}d1fC_wR(m9ff=hBqHwtK*2kRVU8oFRk#D7aiQ6M0(1u0 z-{fxTAV-Y7awY@x04D*3kkRg^iffq=a9!+0OqCcwYyJaqVWuRz@Y2RHEg zjXC!N`)Js!Z0!W6{5>x#w;Tz-S+JuZ0#tuZoD@HmGvPle$AHci1od+C`9qBQxvo0z z=$PtUSB>>Qo#U!{*?;R)?uMV0Hjvtvf_iD99vXmrQcQj{gcH&p=h8(Sy99*t)y8c4 zFJm@cZOp{5{q2}lZqDBt1NN#m{WNBkT2h;4!;S*=HP!z&WA@u}PXDHy@8=(GI#=oW zhwgFVZpG%08w>w%KI>yH(mLrz6-8Jvied5)=L2Uz>k%EhjC29WfK1S_E07DpXq1r) z#5h(LSc6WW9LI`49GDHMKCUu0y^7b|U{n z@D5}Em7V(hQ`xDvO;u;rybAhVeX(NEdPR3Cp)ypq!udKu6FCQ2x%K3-AQ@!2|FR^Z@vN zj>?CPwJ+|&ihHecl@;1ls#dQM!N()mJO=7MoNQp6N4+grpEw^!P;O`-G9x&T z;e9BPE(7X5UO?UnetzA4iDR#T%Eu3FAtwmbmbxe#e%$k}i1Z?~a6 zGvPlI*O7QIj6Ur3VXqH+eVU-mT_Y{JU}n_&%{qjx#4$sJ+a0<~Z{P#6P9eD03=-XN zSICY&gS@#D25GN;Jw5t##cV>FZVXDLQMzNV9zEQBAR^tfmzRf+d!IpE+M{n@_bwiN znX>VWd-)w)wB=W};zuyHxp;YtXUu=7W1*LlsBIGU!FM> z*1!hX0y|(29DpNm0?xn%v<0p}0@{K0fCX;A9drQb#0re0Cb!>nF6IffhrGfmz(!W zq!;w-@$Y%4915Kxu(FA;vH@K{AsNT2BCRJJ!+pXSx-nRFPy-kMLtq4qaTBYIa*^I= zO)Xgd6Zq~ex1MSvuZn-N`A_wlC_5bG{V#| z7uAmR*rSj@halWSKGXw+(gk%c@*1olH&~aXyj?57t~KH|z#7;9I+N^xJ#YYy0Ka@> zoPi4v{5S;AV+y*`RlDkP-kLkaJ%k31=?;~h;fp?8ut!Wm15mvw9xCNyB$;>d!qv?Uc>?y-%NT-e(__Nk01mAJ7l<2Lr%B zFbMqOGq~b*TBA$~mGy0w;Bzp_B%edTP%sP(2fn}$_=8`4R@~0y-}wBwjOo8tn;W0v ze=b8czkKnuq=~Be)e;LDo!8&}gy4p%f%M@O|K_|Bz3Pqi#2@v-+#+lKT#bXCf_i_d z=8xdhc|0DDNlzN$oFXsH`_n&``#q1^o9$vD50yU>=@IDj06^n15(I)EKw&=gqmUjA zNFNNwfU$sr#RC3Z3V}@eabP@{049P-U^18jLcvrp4NM2BzC%0cc@O*tur7GQ9iHJp zA6ENvkL=?<68z-@RPICX?=#=U*Y{f~-;dhZe><#N5onEij29W2CwYh|pehW5c2J<> z(ZX@{zQ-@S+)qbo=;esYg%*dwj9NSc%mlN*Y%mA>3FZPRmYiw_r7E_~_PRTC!Tw%5YKMRPI?d1(yI5L3_us_TY{ zI7YpZKsqr%h>OGqBI>^lP(P%ARInZF06W1hup3Z6Q2sqgr-8j-AJ`8LfP>(de)tzt zvy#SgLr-lDL|v$@7KkZS)YiqM6WVGYg-uP=@i3sa9{IVx|8f%2r`X)!pd1glr8=6x zC)F`esH6JX*b+Kb-3}mq6!keK)a`ghb^C9o4qTA`5b}jknSakE{H&G<{?iek0CJE4 zPJ&Y)6PyNTfH2lJ*5mN3fEmI|Xpa%rw2k_sPPO{*ebOAhs80Hbf3A}oj!_*c$b>qb zg)bVfb07<3gB)-kg!O1XsZ| za2?zL75SVl^aJ^MlLenQQ5N~U1#W{o;4b(Z6oGr-K6n5s@%gQti~qr= z=Tg3%4^bBRd;}hUFV}?|(to>EmmkzsZhfw zLJf-%msD88f3d{;Si^5COO8;(`G|iWxreA>TmscFE{5;Jr$P;%Auj!;hW~a^p|@yU zA94k$`fxmaQy(@*{BsQ#$1v^()>94bWBD3B7iy?LtgNtx|IN~(ItPEK;kQ0Cf^Vu} zZUr@L8Oyj|-=Lv)RJ>EDVVO|F7l>biSKn*tJPwad#j70m4UKOnzMbmmk84Y$;58KS z&;62&W2&`9D~|7(a>4Iw#Badciv02y8(eEje^V}fMmQCW2lQcvKcLSqDf9#rKt(zq z94EU#Kp(pNY)d-`PcijB^(6&r7uk|OI!5Vnfa*O{dC;4}M#Z5nzr>00)8*X5L-t^t2{%}ROb zGro5shItQsAgk6kyz`xc?}!DC^yQw?=|Oqvx~_aV}>Ib4SPEWJ4ZVwJ7+r=duw|eds}-udwY8adq;aGduMwW2Wtl# z2U`a_2YUwx2S*1d2WJNtM{7qLM_WfbM|(#HM@L5|M`uSDCu=;=%ht)x$==Dq$D|z;`NJyAkGJ#_ z>1pJ62##8nsQeVDPMKSH9+4`m+y}q$8qj#N4Yr8J+C>0o(hUU{`6r>_I*Qbtt)(( zvyiVj@=$#!gd!%_2KdjA^JinjJ&N9!e?~o(I}&-QTnZ^dexvXCZTYAB3I@nSHY<>i z%BFBzurXG%!54pgCj|NOPp?HDvdI!`(6(=93fWVei&xsPCJmRXc z$PfcOlNfgyDKr@OT*PA4*Dx6O_`MKU<6R%#(&4Mq$q>o>2x22#cyNJ=7`O%hVKe9< v6x_FU826NYyvqX=-$u!ZtCPz+V05aGpOn~1EJv(OZmXj3{Tg~2&DZ=NRTVAM literal 0 HcmV?d00001 diff --git a/ChallengeLeaguePointSolver/team2 b/ChallengeLeaguePointSolver/assets/team2 similarity index 86% rename from ChallengeLeaguePointSolver/team2 rename to ChallengeLeaguePointSolver/assets/team2 index 9458521..2d28609 100644 --- a/ChallengeLeaguePointSolver/team2 +++ b/ChallengeLeaguePointSolver/assets/team2 @@ -10,11 +10,11 @@ Set A,,Total EX,NICONII,SALSA,YONCETAI,, 16,The World Ends Now,1917,1730,0,0,,0 16,S!ck,2118,1790,1563,0,,0 17,Magnetic,2193,1815,0,0,,0 -17,Mikansei no jouki kudou otome,2262,1885,0,0,,0 +17,Unfinished Steam Maiden,2262,1885,0,0,,0 18,Nageki no ki,2370,1978,0,0,,0 ,,,,,,,0 Set B,,,,,,,0 -12,Towards the Tower,1104,1046,1023,879,,0 +12,Towards the TOWER,1104,1046,1023,879,,0 13,Xenon,1158,1088,1042,913,,0 13,DeStRuCtIvE FoRcE,1299,1218,1102,833,,0 14,Diamond Night,1359,1258,1169,919,,0 diff --git a/ChallengeLeaguePointSolver/main.cpp b/ChallengeLeaguePointSolver/main.cpp deleted file mode 100644 index dda48a5..0000000 --- a/ChallengeLeaguePointSolver/main.cpp +++ /dev/null @@ -1,211 +0,0 @@ - -#include "pixelGameEngine.h" - -//THIS IS WRITTEN USING OLC GPE, CHECK OUT onelonecoder.com -//Or else -class Snake : public olc::PixelGameEngine { -public: - Snake() { - sAppName = "Snake"; - } - - enum direction { STOP, LEFT, RIGHT, DOWN, UP }; - direction dir; - //Game variables - int score; - //Snake variables - float SnakeXPos, SnakeYPos; - float tailUpdateTimer=0; - int tailX[1000], tailY[1000], tailLength = 0; - float x, y; - //Target variables - int fruit1X, fruit1Y, fruit2X, fruit2Y; - bool fruit1 = false, fruit2 = false; - bool GameOver; - - void SnakeDead() { - if (GameOver == true) { - Clear(olc::BLACK); - DrawString(ScreenWidth() - ((ScreenWidth() / 2) + (ScreenWidth() / 2.8)), ScreenHeight() / 2 - 5, "Game Over", olc::RED, 1); - } - } - void BorderCollisionCheck() { - if (SnakeXPos <= 3) { - GameOver = true; - SnakeDead(); - } - if (SnakeXPos >= ScreenWidth() - 3) { - GameOver = true; - SnakeDead(); - } - if (SnakeYPos <= 3) { - GameOver = true; - SnakeDead(); - } - if (SnakeYPos >= ScreenHeight() - 3) { - GameOver = true; - SnakeDead(); - } - } - void userInput(float speed) { - if (GetKey(olc::Key::UP).bPressed && dir != DOWN) { - dir = UP; - } - if (GetKey(olc::Key::DOWN).bPressed && dir != UP) { - dir = DOWN; - } - if (GetKey(olc::Key::LEFT).bPressed && dir != RIGHT) { - dir = LEFT; - } - if (GetKey(olc::Key::RIGHT).bPressed && dir != LEFT) { - dir = RIGHT; - } - - //Move Snake - switch (dir) { - case LEFT: - SnakeXPos -= speed; - break; - case RIGHT: - SnakeXPos += speed; - break; - case DOWN: - SnakeYPos += speed; - break; - case UP: - SnakeYPos -= speed; - break; - } - } - void FruitCoordGen() { - //Fruit1 - if (fruit1 == false) { - fruit1X = rand() & ScreenWidth(); - fruit1Y = rand() & ScreenHeight(); - fruit1 = true; - } - if (fruit1X <= 2 || fruit1X >= ScreenWidth() - 2) { - fruit1X = rand() & ScreenWidth(); - } - if (fruit1Y <= 2 || fruit1Y >= ScreenHeight() - 2) { - fruit1Y = rand() & ScreenHeight(); - } - //Fruit2 - //if (fruit2 == false) { - //fruit2X = rand() & ScreenWidth(); - //fruit2Y = rand() & ScreenHeight(); - //fruit2 = true; - //} - //if (fruit2X <= 2 || fruit2X >= ScreenWidth() - 2) { - //fruit1X = rand() & ScreenWidth(); - //} - //if (fruit2Y <= 2 || fruit2Y >= ScreenHeight() - 2) { - //fruit1Y = rand() & ScreenHeight(); - //} - //if (fruit1X == fruit2X) { - //fruit1X = rand() & ScreenWidth(); - //} - //if (fruit1Y == fruit2Y) { - //fruit1Y = rand() & ScreenWidth(); - //} - } - -private: - -public: - bool OnUserUpdate(float fElapsedTime) override { - - float speed = 20 * fElapsedTime; - Clear(olc::BLACK); - //Draw top border - DrawLine(2, 2, ScreenWidth() - 2, 2, olc::WHITE); - //Draw left border - DrawLine(2, 2, 2, ScreenHeight() - 2, olc::WHITE); - //Draw right border - DrawLine(ScreenWidth() - 2, 2, ScreenWidth() - 2, ScreenHeight() - 2, olc::WHITE); - //Draw bottom border - DrawLine(2, ScreenHeight() - 2, ScreenWidth() - 2, ScreenHeight() - 2, olc::WHITE); - - olc::vi2d SnakeHead(SnakeXPos, SnakeYPos); - olc::vi2d SnakeHeadSize(2, 2); - - olc::vi2d Fruit(fruit1X, fruit1Y); - olc::vu2d FruitSize(2, 2); - - //Snake and fruit collision - if (SnakeHead.x < Fruit.x + FruitSize.x && - SnakeHead.x + SnakeHeadSize.x > Fruit.x && - SnakeHead.y < Fruit.y + FruitSize.y && - SnakeHead.y + SnakeHeadSize.y > Fruit.y) { - fruit1 = false; - score++; - tailLength++; - } - - //Draw fruit - DrawRect(fruit1X, fruit1Y, 1, 1, olc::RED); - - //Fruit coord gen - FruitCoordGen(); - - //Border collision - BorderCollisionCheck(); - - tailUpdateTimer -= fElapsedTime; //Decrement the tail timer by the game elapsed time. - if ( tailUpdateTimer <= 0 ) { - //In order to create a tail following trail, start from the back-most tail and work your way up to the front, setting the previous tail's position to the current tail index's position. - for (int i = tailLength - 1; i > 0; i--) { - tailX[i]=tailX[i-1]; - tailY[i]=tailY[i-1]; - } - //Now set the front-most tail to the current snake head's position. - tailX[0]=SnakeXPos; - tailY[0]=SnakeYPos; - tailUpdateTimer=0.05; //Every 0.05 seconds we will re-update the tail positions instead of doing it by frame-based timing. - } - - //Draw Snake tail - if (tailLength >= 1) { - for (int i = 0; i < tailLength; i++) { - DrawRect(tailX[i], tailY[i], 1, 1, olc::GREEN); - } - } - - //Snake position gets adjusted here. - userInput(speed); - - //Draw the Snake at its new position. - DrawRect(SnakeXPos, SnakeYPos, 1, 1, olc::DARK_GREEN); - - return true; - } - - bool OnUserCreate() override { - srand(time(NULL)); - dir = STOP; - //Snake X coord gen - SnakeXPos = rand() & ScreenWidth(); - if (SnakeXPos <= 3 || SnakeXPos >= ScreenWidth() - 3) { - SnakeXPos = rand() & ScreenWidth(); - } - if (SnakeXPos <= 3 || SnakeXPos >= ScreenHeight() - 3) { - SnakeXPos = rand() & ScreenHeight(); - } - //Snake Y coord gen - SnakeYPos = rand() & ScreenWidth(); - if (SnakeYPos <= 3 || SnakeYPos >= ScreenWidth() - 3) { - SnakeYPos = rand() & ScreenWidth(); - } - if (SnakeYPos <= 3 || SnakeYPos >= ScreenHeight() - 3) { - SnakeYPos = rand() & ScreenHeight(); - } - return true; - } -}; - -int main() { - Snake demo; - if (demo.Construct(100, 100, 10, 10)) - demo.Start(); - return 0; -} \ No newline at end of file diff --git a/ChallengeLeaguePointSolver/olcPGEX_QuickGUI.h b/ChallengeLeaguePointSolver/olcPGEX_QuickGUI.h new file mode 100644 index 0000000..90007b7 --- /dev/null +++ b/ChallengeLeaguePointSolver/olcPGEX_QuickGUI.h @@ -0,0 +1,1179 @@ +/* + OneLoneCoder - QuickGUI v1.02 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + A semi-immediate mode GUI for very simple GUI stuff. + Includes: + Label - Displays a single-line string + TextBox - Click to enter/edit single-line text + Button - A clickable labelled rectangle + CheckBox - A clickable labelled rectangle that retains state + ImageButton - A Button with an image instead of text + ImageCheckBox- A CheckBox with an image instead of text + Slider - An omnidirectional draggable handle between two values + ListBox - A list of strings, that can be scrolled and an item selected + + License (OLC-3) + ~~~~~~~~~~~~~~~ + + Copyright 2018 - 2021 OneLoneCoder.com + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions or derivations of source code must retain the above + copyright notice, this list of conditions and the following disclaimer. + + 2. Redistributions or derivative works in binary form must reproduce + the above copyright notice. This list of conditions and the following + disclaimer must be reproduced in the documentation and/or other + materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Links + ~~~~~ + YouTube: https://www.youtube.com/javidx9 + Discord: https://discord.gg/WhwHUMV + Twitter: https://www.twitter.com/javidx9 + Twitch: https://www.twitch.tv/javidx9 + GitHub: https://www.github.com/onelonecoder + Homepage: https://www.onelonecoder.com + + Author + ~~~~~~ + David Barr, aka javidx9, ©OneLoneCoder 2019, 2020, 2021, 2022 + + Changes + ~~~~~~~ + v1.01 +Moved Slider::fGrabRad into "theme" + +Manager::CopyThemeFrom() - copies theme attributes from a different manager + +ListBox - Displays a vector of strings + v1.02 +ImageButton + +ImageCheckBox + +ListBox::bSelectionChanged flag, true when list selected item changes + =Fix - Text box mouse behaviours, mouse release is now meaningless + +CheckBox Fix for decal display + +*/ + +#ifndef OLC_PGEX_QUICKGUI_H +#define OLC_PGEX_QUICKGUI_H + +#include "pixelGameEngine.h" + + +namespace olc::QuickGUI +{ + class Manager; + + // Virtual base class for all controls + class BaseControl + { + public: + BaseControl(olc::QuickGUI::Manager& manager); + virtual ~BaseControl(); + + public: + // Switches the control on/off + void Enable(const bool bEnable); + // Sets whether or not the control is interactive/displayed + bool bVisible = true; + + // True on single frame control begins being manipulated + bool bPressed = false; + // True on all frames control is under user manipulation + bool bHeld = false; + // True on single frame control ceases being manipulated + bool bReleased = false; + + public: + // Updates the controls behvaiour + virtual void Update(olc::PixelGameEngine* pge) = 0; + // Draws the control using "sprite" based CPU operations + virtual void Draw(olc::PixelGameEngine* pge) = 0; + // Draws the control using "decal" based GPU operations + virtual void DrawDecal(olc::PixelGameEngine* pge) = 0; + + protected: + // Controls are related to a manager, where the theme resides + // and control groups can be implemented + olc::QuickGUI::Manager& m_manager; + + // All controls exists in one of four states + // Disabled - Greyed out and not interactive + // Normal - interactive and operational + // Hover - currently under the users mouse focus + // Click - user is interacting with the control + enum class State { Disabled, Normal, Hover, Click } m_state = State::Normal; + + // To add a "swish" to things, controls can fade between states + float m_fTransition = 0.0; + }; + + + // A QuickGUI::Manager acts as a convenient grouping of controls + class Manager + { + public: + // Construct Manager, bCleanUpForMe will automatically DELETE any controls + // given to this manager via AddControl() if true + Manager(const bool bCleanUpForMe = true); + virtual ~Manager(); + + public: + // Add a gui element derived form BaseControl to this manager + void AddControl(BaseControl* control); + // Updates all controls this manager operates + void Update(olc::PixelGameEngine* pge); + // Draws as "sprite" all controls this manager operates + void Draw(olc::PixelGameEngine* pge); + // Draws as "decal" all controls this manager operates + void DrawDecal(olc::PixelGameEngine* pge); + + public: // This managers "Theme" can be set here + // Various element colours + olc::Pixel colNormal = olc::DARK_BLUE; + olc::Pixel colHover = olc::BLUE; + olc::Pixel colClick = olc::CYAN; + olc::Pixel colDisable = olc::DARK_GREY; + olc::Pixel colBorder = olc::WHITE; + olc::Pixel colText = olc::WHITE; + // Speed to transiton from Normal -> Hover + float fHoverSpeedOn = 10.0f; + // Speed to transiton from Hover -> Normal + float fHoverSpeedOff = 4.0f; + // Size of grab handle + float fGrabRad = 8.0f; + // Copy all theme attributes into a different manager object + void CopyThemeFrom(const Manager& manager); + + bool anotherBoxHighlighted=false; + + private: + // Should this manager call delete on the controls it opeerates? + bool m_bEraseControlsOnDestroy = true; + // Container of controls + std::vector m_vControls; + }; + + + // Creates a Label Control - it's just text! + class Label : public BaseControl + { + public: + Label(olc::QuickGUI::Manager& manager, // Associate with a Manager + const std::string& text, // Text to display + const olc::vf2d& pos, // Location of label top-left + const olc::vf2d& size); // Size of label + + public: + // Position of button + olc::vf2d vPos; + // Size of button + olc::vf2d vSize; + // Text displayed on button + std::string sText; + // Show a border? + bool bHasBorder = false; + // Show a background? + bool bHasBackground = false; + // Where should the text be positioned? + enum class Alignment + {Left, Centre, Right} nAlign = Alignment::Centre; + + public: // BaseControl overrides + void Update(olc::PixelGameEngine* pge) override; + void Draw(olc::PixelGameEngine* pge) override; + void DrawDecal(olc::PixelGameEngine* pge) override; + }; + + class TextBox : public Label + { + public: + TextBox(olc::QuickGUI::Manager& manager, // Associate with a Manager + const std::string& text, // Text to display + const olc::vf2d& pos, // Location of text box top-left + const olc::vf2d& size); // Size of text box + + public: // BaseControl overrides + void Update(olc::PixelGameEngine* pge) override; + void Draw(olc::PixelGameEngine* pge) override; + void DrawDecal(olc::PixelGameEngine* pge) override; + + protected: + bool m_bTextEdit = false; + + }; + + // Creates a Button Control - a clickable, labelled rectangle + class Button : public BaseControl + { + public: + Button(olc::QuickGUI::Manager& manager, // Associate with a Manager + const std::string& text, // Text to display + const olc::vf2d& pos, // Location of button top-left + const olc::vf2d& size); // Size of button + + public: + // Position of button + olc::vf2d vPos; + // Size of button + olc::vf2d vSize; + // Text displayed on button + std::string sText; + + public: // BaseControl overrides + void Update(olc::PixelGameEngine* pge) override; + void Draw(olc::PixelGameEngine* pge) override; + void DrawDecal(olc::PixelGameEngine* pge) override; + }; + + // Creates a Button Control - a clickable, labelled rectangle + class CheckBox : public Button + { + public: + CheckBox(olc::QuickGUI::Manager& manager, // Associate with a Manager + const std::string& text, // Text to display + const bool check, // Is checked or not? + const olc::vf2d& pos, // Location of button top-left + const olc::vf2d& size); // Size of button + + public: + bool bChecked = false; + + public: // BaseControl overrides + void Update(olc::PixelGameEngine* pge) override; + void Draw(olc::PixelGameEngine* pge) override; + void DrawDecal(olc::PixelGameEngine* pge) override; + }; + + class ImageButton : public Button + { + public: + ImageButton(olc::QuickGUI::Manager& manager, // Associate with a Manager + const olc::Renderable &icon, // Text to display + const olc::vf2d& pos, // Location of button top-left + const olc::vf2d& size); // Size of button + + public: + const olc::Renderable& pIcon; + + public: + void Draw(olc::PixelGameEngine* pge) override; + void DrawDecal(olc::PixelGameEngine* pge) override; + }; + + class ImageCheckBox : public ImageButton + { + public: + ImageCheckBox(olc::QuickGUI::Manager& manager, // Associate with a Manager + const olc::Renderable& icon, // Text to display + const bool check, // Is checked or not? + const olc::vf2d& pos, // Location of button top-left + const olc::vf2d& size); // Size of button + + public: + bool bChecked = false; + + public: + void Update(olc::PixelGameEngine* pge) override; + void Draw(olc::PixelGameEngine* pge) override; + void DrawDecal(olc::PixelGameEngine* pge) override; + }; + + + // Creates a Slider Control - a grabbable handle that slides between two locations + class Slider : public BaseControl + { + public: + Slider(olc::QuickGUI::Manager& manager, // Associate with a Manager + const olc::vf2d& posmin, // Screen location of "minimum" + const olc::vf2d& posmax, // Screen location of "maximum" + const float valmin, // Value of minimum + const float valmax, // Value of maximum + const float value); // Starting value + + public: + // Minium value + float fMin = -100.0f; + // Maximum value + float fMax = +100.0f; + // Current value + float fValue = 0.0f; + + // Location of minimum/start + olc::vf2d vPosMin; + // Location of maximum/end + olc::vf2d vPosMax; + + public: // BaseControl overrides + void Update(olc::PixelGameEngine* pge) override; + void Draw(olc::PixelGameEngine* pge) override; + void DrawDecal(olc::PixelGameEngine* pge) override; + }; + + + class ListBox : public BaseControl + { + public: + ListBox(olc::QuickGUI::Manager& manager, // Associate with a Manager + std::vector& vList, + const olc::vf2d& pos, // Location of list top-left + const olc::vf2d& size); // Size of list + + // Position of list + olc::vf2d vPos; + // Size of list + olc::vf2d vSize; + // Show a border? + bool bHasBorder = true; + // Show a background? + bool bHasBackground = true; + + public: + Slider *m_pSlider = nullptr; + Manager m_group; + size_t m_nVisibleItems = 0; + std::vector& m_vList; + + public: + // Item currently selected + size_t nSelectedItem = 0; + size_t nPreviouslySelectedItem = 0; + // Has selection changed? + bool bSelectionChanged = false; + + public: // BaseControl overrides + void Update(olc::PixelGameEngine* pge) override; + void Draw(olc::PixelGameEngine* pge) override; + void DrawDecal(olc::PixelGameEngine* pge) override; + }; + + + class ModalDialog : public olc::PGEX + { + public: + ModalDialog(); + + public: + void ShowFileOpen(const std::string& sPath); + + protected: + virtual bool OnBeforeUserUpdate(float& fElapsedTime) override; + + private: + bool m_bShowDialog = false; + + Manager m_manFileSelect; + ListBox* m_listVolumes = nullptr; + ListBox* m_listDirectory = nullptr; + ListBox* m_listFiles = nullptr; + + std::vector m_vVolumes; + std::vector m_vDirectory; + std::vector m_vFiles; + std::filesystem::path m_path; + }; +} + + +#ifdef OLC_PGEX_QUICKGUI +#undef OLC_PGEX_QUICKGUI +namespace olc::QuickGUI +{ + +#pragma region BaseControl + BaseControl::BaseControl(olc::QuickGUI::Manager& manager) : m_manager(manager) + { + m_manager.AddControl(this); + } + + BaseControl::~BaseControl() + { + + } + + void BaseControl::Enable(const bool bEnable) + { + m_state = bEnable ? State::Normal : State::Disabled; + } +#pragma endregion + +#pragma region Manager + Manager::Manager(const bool bCleanUpForMe) + { + m_bEraseControlsOnDestroy = bCleanUpForMe; + } + + Manager::~Manager() + { + if (m_bEraseControlsOnDestroy) + for (auto& p : m_vControls) + delete p; + + m_vControls.clear(); + } + + void Manager::AddControl(BaseControl* control) + { + m_vControls.push_back(control); + } + + void Manager::Update(olc::PixelGameEngine* pge) + { + anotherBoxHighlighted=false; + for (auto& p : m_vControls) p->Update(pge); + } + + void Manager::Draw(olc::PixelGameEngine* pge) + { + for (auto& p : m_vControls) p->Draw(pge); + } + + void Manager::DrawDecal(olc::PixelGameEngine* pge) + { + for (auto& p : m_vControls) p->DrawDecal(pge); + } + + void Manager::CopyThemeFrom(const Manager& manager) + { + this->colBorder = manager.colBorder; + this->colClick = manager.colClick; + this->colDisable = manager.colDisable; + this->colHover = manager.colHover; + this->colNormal = manager.colNormal; + this->colText = manager.colText; + this->fGrabRad = manager.fGrabRad; + this->fHoverSpeedOff = manager.fHoverSpeedOff; + this->fHoverSpeedOn = manager.fHoverSpeedOn; + } +#pragma endregion + +#pragma region Label + Label::Label(olc::QuickGUI::Manager& manager, const std::string& text, const olc::vf2d& pos, const olc::vf2d& size) + : BaseControl(manager) + { + vPos = pos; vSize = size; sText = text; + } + + void Label::Update(olc::PixelGameEngine* pge) + { + + } + + void Label::Draw(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + if (bHasBackground) + { + pge->FillRect(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); + } + + if(bHasBorder) + pge->DrawRect(vPos, vSize - olc::vf2d(1, 1), m_manager.colBorder); + + olc::vf2d vText = pge->GetTextSizeProp(sText); + switch (nAlign) + { + case Alignment::Left: + pge->DrawStringProp(olc::vf2d( vPos.x + 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f ), sText, m_manager.colText); + break; + case Alignment::Centre: + pge->DrawStringProp(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); + break; + case Alignment::Right: + pge->DrawStringProp(olc::vf2d{ vPos.x + vSize.x - vText.x - 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f }, sText, m_manager.colText); + break; + } + } + + void Label::DrawDecal(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + if (bHasBackground) + { + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); + } + + if (bHasBorder) + { + pge->SetDecalMode(olc::DecalMode::WIREFRAME); + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2,2), m_manager.colBorder); + pge->SetDecalMode(olc::DecalMode::NORMAL); + } + + olc::vf2d vText = pge->GetTextSizeProp(sText); + switch (nAlign) + { + case Alignment::Left: + pge->DrawStringPropDecal({ vPos.x + 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f }, sText, m_manager.colText); + break; + case Alignment::Centre: + pge->DrawStringPropDecal(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); + break; + case Alignment::Right: + pge->DrawStringPropDecal({ vPos.x + vSize.x - vText.x - 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f }, sText, m_manager.colText); + break; + } + } +#pragma endregion + + +#pragma region TextBox + TextBox::TextBox(olc::QuickGUI::Manager& manager, const std::string& text, const olc::vf2d& pos, const olc::vf2d& size) + : Label(manager, text, pos, size) + { + nAlign = Alignment::Left; + bHasBorder = true; + bHasBackground = false; + } + + void TextBox::Update(olc::PixelGameEngine* pge) + { + if (m_state == State::Disabled || !bVisible) + return; + + bPressed = false; + bReleased = false; + + olc::vf2d vMouse = pge->GetMousePos(); + + if (vMouse.x >= vPos.x && vMouse.x < vPos.x + vSize.x && + vMouse.y >= vPos.y && vMouse.y < vPos.y + vSize.y) + { + // Released inside box does nothing to me, but i may have + // to finish off the neighbours... oo err + bPressed = pge->GetMouse(olc::Mouse::LEFT).bPressed; + bReleased = pge->GetMouse(olc::Mouse::LEFT).bReleased; + + if (bPressed && pge->IsTextEntryEnabled() && !m_bTextEdit) + { + pge->TextEntryEnable(false); + } + + + if (bPressed && !pge->IsTextEntryEnabled() && !m_bTextEdit) + { + m_manager.anotherBoxHighlighted=true; + pge->TextEntryEnable(true, sText); + m_bTextEdit = true; + } + + bHeld = pge->GetMouse(olc::Mouse::LEFT).bHeld; + + + } + else + { + // Released outside box + bPressed = pge->GetMouse(olc::Mouse::LEFT).bPressed; + bReleased = pge->GetMouse(olc::Mouse::LEFT).bReleased; + bHeld = pge->GetMouse(olc::Mouse::LEFT).bHeld; + + if (bPressed && m_bTextEdit) + { + if(!m_manager.anotherBoxHighlighted){ + sText = pge->TextEntryGetString(); + pge->TextEntryEnable(false); + } + m_bTextEdit = false; + } + } + + if (m_bTextEdit && pge->IsTextEntryEnabled()) + sText = pge->TextEntryGetString(); + if(pge->GetKey(olc::Key::TAB).bPressed){ + m_manager.goNext=this; + } + } + + void TextBox::Draw(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + if (bHasBackground) + { + pge->FillRect(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); + } + + if (bHasBorder) + pge->DrawRect(vPos, vSize - olc::vf2d(1, 1), m_manager.colBorder); + + if (m_bTextEdit && pge->IsTextEntryEnabled()) + { + // Draw Cursor + int32_t i = pge->TextEntryGetCursor(); + olc::vf2d vCursorPos = pge->GetTextSizeProp(sText.substr(0, i)); + pge->FillRect(olc::vf2d(vPos.x + 2.0f + vCursorPos.x, (vPos.y + (vSize.y - 10.0f) * 0.5f)), { 2, 10 }, m_manager.colText); + } + + // Draw Text + olc::vf2d vText = pge->GetTextSizeProp(sText); + pge->DrawStringProp(olc::vf2d(vPos.x + 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f), sText, m_manager.colText); + + } + + void TextBox::DrawDecal(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + if (bHasBackground) + { + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); + } + + if (bHasBorder) + { + pge->SetDecalMode(olc::DecalMode::WIREFRAME); + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colBorder); + pge->SetDecalMode(olc::DecalMode::NORMAL); + } + + if (m_bTextEdit && pge->IsTextEntryEnabled()) + { + // Draw Cursor + int32_t i = pge->TextEntryGetCursor(); + olc::vf2d vCursorPos = pge->GetTextSizeProp(sText.substr(0, i)); + pge->FillRectDecal(olc::vf2d(vPos.x + 2.0f + vCursorPos.x, (vPos.y + (vSize.y - 10.0f) * 0.5f)), { 2, 10 }, m_manager.colText); + } + + // Draw Text + olc::vf2d vText = pge->GetTextSizeProp(sText); + pge->DrawStringPropDecal(olc::vf2d(vPos.x + 2.0f, vPos.y + (vSize.y - vText.y) * 0.5f), sText, m_manager.colText); + } +#pragma endregion + +#pragma region Button + Button::Button(olc::QuickGUI::Manager& manager, const std::string& text, const olc::vf2d& pos, const olc::vf2d& size) + : BaseControl(manager) + { + vPos = pos; vSize = size; sText = text; + } + + void Button::Update(olc::PixelGameEngine* pge) + { + if (m_state == State::Disabled || !bVisible) + return; + + bPressed = false; + bReleased = false; + float fElapsedTime = pge->GetElapsedTime(); + + olc::vf2d vMouse = pge->GetMousePos(); + if (m_state != State::Click) + { + if (vMouse.x >= vPos.x && vMouse.x < vPos.x + vSize.x && + vMouse.y >= vPos.y && vMouse.y < vPos.y + vSize.y) + { + m_fTransition += fElapsedTime * m_manager.fHoverSpeedOn; + m_state = State::Hover; + + bPressed = pge->GetMouse(olc::Mouse::LEFT).bPressed; + if (bPressed) + { + m_state = State::Click; + } + + bHeld = pge->GetMouse(olc::Mouse::LEFT).bHeld; + } + else + { + m_fTransition -= fElapsedTime * m_manager.fHoverSpeedOff; + m_state = State::Normal; + } + } + else + { + bHeld = pge->GetMouse(olc::Mouse::LEFT).bHeld; + bReleased = pge->GetMouse(olc::Mouse::LEFT).bReleased; + if (bReleased) m_state = State::Normal; + } + + m_fTransition = std::clamp(m_fTransition, 0.0f, 1.0f); + } + + void Button::Draw(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + switch (m_state) + { + case State::Disabled: + pge->FillRect(vPos, vSize, m_manager.colDisable); + break; + case State::Normal: + case State::Hover: + pge->FillRect(vPos, vSize, olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); + break; + case State::Click: + pge->FillRect(vPos, vSize, m_manager.colClick); + break; + } + + pge->DrawRect(vPos, vSize - olc::vf2d(1, 1), m_manager.colBorder); + olc::vf2d vText = pge->GetTextSizeProp(sText); + pge->DrawStringProp(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); + } + + void Button::DrawDecal(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + switch (m_state) + { + case State::Disabled: + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colDisable); + break; + case State::Normal: + case State::Hover: + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); + break; + case State::Click: + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colClick); + break; + } + pge->SetDecalMode(olc::DecalMode::WIREFRAME); + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colBorder); + pge->SetDecalMode(olc::DecalMode::NORMAL); + + olc::vf2d vText = pge->GetTextSizeProp(sText); + pge->DrawStringPropDecal(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); + } +#pragma endregion + + +#pragma region ImageButton + ImageButton::ImageButton(olc::QuickGUI::Manager& manager, const olc::Renderable& icon, const olc::vf2d& pos, const olc::vf2d& size) + : Button(manager, "", pos, size), pIcon(icon) + { + + } + + void ImageButton::Draw(olc::PixelGameEngine* pge) + { + Button::Draw(pge); + pge->DrawSprite(vPos + olc::vi2d(4, 4), pIcon.Sprite()); + } + + void ImageButton::DrawDecal(olc::PixelGameEngine* pge) + { + Button::DrawDecal(pge); + pge->DrawDecal(vPos + olc::vi2d(4, 4), pIcon.Decal()); + } +#pragma endregion + + +#pragma region ImageCheckBox + ImageCheckBox::ImageCheckBox(olc::QuickGUI::Manager& manager, const olc::Renderable& gfx, const bool check, const olc::vf2d& pos, const olc::vf2d& size) + : ImageButton(manager, gfx, pos, size) + { + bChecked = check; + } + + void ImageCheckBox::Update(olc::PixelGameEngine* pge) + { + if (m_state == State::Disabled || !bVisible) + return; + + ImageButton::Update(pge); + if (bPressed) bChecked = !bChecked; + } + + void ImageCheckBox::Draw(olc::PixelGameEngine* pge) + { + ImageButton::Draw(pge); + + if (bChecked) + pge->DrawRect(vPos + olc::vf2d(2, 2), vSize - olc::vi2d(5, 5), m_manager.colBorder); + } + + void ImageCheckBox::DrawDecal(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + ImageButton::DrawDecal(pge); + + pge->SetDecalMode(olc::DecalMode::WIREFRAME); + pge->FillRectDecal(vPos + olc::vf2d(2, 2), vSize - olc::vf2d(4, 4), m_manager.colBorder); + pge->SetDecalMode(olc::DecalMode::NORMAL); + + olc::vf2d vText = pge->GetTextSizeProp(sText); + pge->DrawStringPropDecal(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); + } +#pragma endregion + + +#pragma region CheckBox + CheckBox::CheckBox(olc::QuickGUI::Manager& manager, const std::string& text, const bool check, const olc::vf2d& pos, const olc::vf2d& size) + : Button(manager, text, pos, size) + { + bChecked = check; + } + + void CheckBox::Update(olc::PixelGameEngine* pge) + { + if (m_state == State::Disabled || !bVisible) + return; + + Button::Update(pge); + if (bPressed) + bChecked = !bChecked; + } + + void CheckBox::Draw(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + Button::Draw(pge); + + if (bChecked) + pge->DrawRect(vPos + olc::vf2d(2, 2), vSize - olc::vi2d(5, 5), m_manager.colBorder); + } + + void CheckBox::DrawDecal(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + Button::DrawDecal(pge); + + if (bChecked) + { + pge->SetDecalMode(olc::DecalMode::WIREFRAME); + pge->FillRectDecal(vPos + olc::vf2d(2, 2), vSize - olc::vf2d(4, 4), m_manager.colBorder); + pge->SetDecalMode(olc::DecalMode::NORMAL); + } + + olc::vf2d vText = pge->GetTextSizeProp(sText); + pge->DrawStringPropDecal(vPos + (vSize - vText) * 0.5f, sText, m_manager.colText); + } +#pragma endregion + +#pragma region Slider + Slider::Slider(olc::QuickGUI::Manager& manager, const olc::vf2d& posmin, const olc::vf2d& posmax, const float valmin, const float valmax, const float value) + : BaseControl(manager) + { + vPosMin = posmin; vPosMax = posmax; fMin = valmin; fMax = valmax; fValue = value; + } + + void Slider::Update(olc::PixelGameEngine* pge) + { + if (m_state == State::Disabled || !bVisible) + return; + + float fElapsedTime = pge->GetElapsedTime(); + + olc::vf2d vMouse = pge->GetMousePos(); + bHeld = false; + if (m_state == State::Click) + { + olc::vf2d d = vPosMax - vPosMin; + float u = d.dot(vMouse - vPosMin) / d.mag2(); + fValue = u * (fMax - fMin) + fMin; + bHeld = true; + } + else + { + olc::vf2d vSliderPos = vPosMin + (vPosMax - vPosMin) * ((fValue - fMin) / (fMax - fMin)); + if ((vMouse - vSliderPos).mag2() <= int32_t(m_manager.fGrabRad) * int32_t(m_manager.fGrabRad)) + { + m_fTransition += fElapsedTime * m_manager.fHoverSpeedOn; + m_state = State::Hover; + if (pge->GetMouse(olc::Mouse::LEFT).bPressed) + { + m_state = State::Click; + bPressed = true; + } + } + else + m_state = State::Normal; + } + + if (pge->GetMouse(olc::Mouse::LEFT).bReleased) + { + m_state = State::Normal; + bReleased = true; + } + + if (m_state == State::Normal) + { + m_fTransition -= fElapsedTime * m_manager.fHoverSpeedOff; + m_state = State::Normal; + bHeld = false; + } + + fValue = std::clamp(fValue, fMin, fMax); + m_fTransition = std::clamp(m_fTransition, 0.0f, 1.0f); + } + + void Slider::Draw(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + pge->DrawLine(vPosMin, vPosMax, m_manager.colBorder); + olc::vf2d vSliderPos = vPosMin + (vPosMax - vPosMin) * ((fValue - fMin) / (fMax - fMin)); + + switch (m_state) + { + case State::Disabled: + pge->FillCircle(vSliderPos, int32_t(m_manager.fGrabRad), m_manager.colDisable); + break; + case State::Normal: + case State::Hover: + pge->FillCircle(vSliderPos, int32_t(m_manager.fGrabRad), olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); + break; + case State::Click: + pge->FillCircle(vSliderPos, int32_t(m_manager.fGrabRad), m_manager.colClick); + break; + } + + + pge->DrawCircle(vSliderPos, int32_t(m_manager.fGrabRad), m_manager.colBorder); + } + + void Slider::DrawDecal(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + pge->DrawLineDecal(vPosMin, vPosMax, m_manager.colBorder); + olc::vf2d vSliderPos = vPosMin + (vPosMax - vPosMin) * ((fValue - fMin) / (fMax - fMin)); + + switch (m_state) + { + case State::Disabled: + pge->FillRectDecal(vSliderPos - olc::vf2d(m_manager.fGrabRad, m_manager.fGrabRad), olc::vf2d(m_manager.fGrabRad, m_manager.fGrabRad) * 2.0f, m_manager.colDisable); + break; + case State::Normal: + case State::Hover: + pge->FillRectDecal(vSliderPos - olc::vf2d(m_manager.fGrabRad, m_manager.fGrabRad), olc::vf2d(m_manager.fGrabRad, m_manager.fGrabRad) * 2.0f, olc::PixelLerp(m_manager.colNormal, m_manager.colHover, m_fTransition)); + break; + case State::Click: + pge->FillRectDecal(vSliderPos - olc::vf2d(m_manager.fGrabRad, m_manager.fGrabRad), olc::vf2d(m_manager.fGrabRad, m_manager.fGrabRad) * 2.0f, m_manager.colClick); + break; + } + + pge->SetDecalMode(olc::DecalMode::WIREFRAME); + pge->FillRectDecal(vSliderPos - olc::vf2d(m_manager.fGrabRad, m_manager.fGrabRad), olc::vf2d(m_manager.fGrabRad, m_manager.fGrabRad) * 2.0f, m_manager.colBorder); + pge->SetDecalMode(olc::DecalMode::NORMAL); + } + + +#pragma endregion + +#pragma region ListBox + ListBox::ListBox(olc::QuickGUI::Manager& manager, std::vector& vList, const olc::vf2d& pos, const olc::vf2d& size) + : BaseControl(manager), m_vList(vList) + { + m_group.CopyThemeFrom(m_manager); + vPos = pos; + vSize = size; + m_pSlider = new Slider(m_group, { pos.x + size.x - m_manager.fGrabRad - 1, pos.y + m_manager.fGrabRad + 1 }, + { pos.x + size.x - m_manager.fGrabRad - 1, pos.y + size.y - m_manager.fGrabRad - 1 }, 0, float(m_vList.size()), 0); + } + + void ListBox::Update(olc::PixelGameEngine* pge) + { + if (m_state == State::Disabled || !bVisible) + return; + + + nPreviouslySelectedItem = nSelectedItem; + olc::vf2d vMouse = pge->GetMousePos() - vPos + olc::vi2d(2,0); + if (pge->GetMouse(olc::Mouse::LEFT).bPressed) + { + if (vMouse.x >= 0 && vMouse.x < vSize.x - (m_group.fGrabRad * 2) && vMouse.y >= 0 && vMouse.y < vSize.y) + { + + nSelectedItem = size_t(m_pSlider->fValue + vMouse.y / 10); + } + } + + nSelectedItem = std::clamp(nSelectedItem, size_t(0), m_vList.size()-1); + + bSelectionChanged = nSelectedItem != nPreviouslySelectedItem; + + + m_pSlider->fMax = float(m_vList.size()); + m_group.Update(pge); + } + + void ListBox::Draw(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + if (bHasBackground) + { + pge->FillRect(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); + } + + if (bHasBorder) + pge->DrawRect(vPos, vSize - olc::vf2d(1, 1), m_manager.colBorder); + + + size_t idx0 = size_t(m_pSlider->fValue); + size_t idx1 = std::min(idx0 + size_t((vSize.y - 4) / 10), m_vList.size()); + + olc::vf2d vTextPos = vPos + olc::vf2d(2,2); + for (size_t idx = idx0; idx < idx1; idx++) + { + if (idx == nSelectedItem) + pge->FillRect(vTextPos - olc::vi2d(1,1), {int32_t(vSize.x - m_group.fGrabRad * 2), 10}, m_group.colHover); + pge->DrawStringProp(vTextPos, m_vList[idx]); + vTextPos.y += 10; + } + + m_group.Draw(pge); + } + + void ListBox::DrawDecal(olc::PixelGameEngine* pge) + { + if (!bVisible) + return; + + if (bHasBackground) + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); + + size_t idx0 = size_t(m_pSlider->fValue); + size_t idx1 = std::min(idx0 + size_t((vSize.y - 4) / 10), m_vList.size()); + + olc::vf2d vTextPos = vPos + olc::vf2d(2, 2); + for (size_t idx = idx0; idx < idx1; idx++) + { + if (idx == nSelectedItem) + pge->FillRectDecal(vTextPos - olc::vi2d(1, 1), { vSize.x - m_group.fGrabRad * 2.0f, 10.0f }, m_group.colHover); + pge->DrawStringPropDecal(vTextPos, m_vList[idx]); + vTextPos.y += 10; + } + + if (bHasBorder) + { + pge->SetDecalMode(olc::DecalMode::WIREFRAME); + pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colBorder); + pge->SetDecalMode(olc::DecalMode::NORMAL); + } + + m_group.DrawDecal(pge); + } +#pragma endregion + + + +#pragma region Modal + ModalDialog::ModalDialog() : olc::PGEX(true) + { + + // Create File Open Dialog + olc::vi2d vScreenSize = pge->GetScreenSize(); + + m_listDirectory = new ListBox(m_manFileSelect, m_vDirectory, olc::vf2d(20, 20), olc::vf2d(300, 500)); + m_listFiles = new ListBox(m_manFileSelect, m_vFiles, olc::vf2d(330, 20), olc::vf2d(300, 500)); + + m_path = "/"; + for (auto const& dir_entry : std::filesystem::directory_iterator{ m_path }) + { + if(dir_entry.is_directory()) + m_vDirectory.push_back(dir_entry.path().filename().string()); + else + m_vFiles.push_back(dir_entry.path().filename().string()); + } + } + + void ModalDialog::ShowFileOpen(const std::string& sPath) + { + m_bShowDialog = true; + } + + bool ModalDialog::OnBeforeUserUpdate(float& fElapsedTime) + { + if(!m_bShowDialog) return false; + + m_manFileSelect.Update(this->pge); + + if (pge->GetKey(olc::Key::BACK).bPressed) + { + m_path = m_path.parent_path().string() + "/"; + //m_listDirectory->bSelectionChanged = true; + //m_listDirectory->nSelectedItem = 0; + } + + if (m_listDirectory->bSelectionChanged) + { + std::string sDirectory = m_vDirectory[m_listDirectory->nSelectedItem]; + /*if (sDirectory == "..") + m_path = m_path.parent_path().string() + "/"; + else + m_path += sDirectory+ "/";*/ + + + m_path += sDirectory + "/"; + // Reconstruct Lists + m_vDirectory.clear(); + + m_vFiles.clear(); + + + for (auto const& dir_entry : std::filesystem::directory_iterator{ m_path }) + { + if (dir_entry.is_directory() || dir_entry.is_other()) + m_vDirectory.push_back(dir_entry.path().filename().string()); + else + m_vFiles.push_back(dir_entry.path().filename().string()); + } + + //m_vDirectory.push_back(".."); + + //m_listFiles->nSelectedItem = 0; + //m_listDirectory->nSelectedItem = 0; + + } + + pge->DrawStringDecal({ 0,0 }, m_path.string()); + + + + + m_manFileSelect.DrawDecal(this->pge); + + + + if (pge->GetKey(olc::Key::ESCAPE).bPressed) + { + m_bShowDialog = false; + return false; + } + + return true; + } +#pragma endregion + +} +#endif // OLC_PGEX_QUICKGUI +#endif // OLC_PGEX_QUICKGUI_H \ No newline at end of file diff --git a/ChallengeLeaguePointSolver/pixelGameEngine.cpp b/ChallengeLeaguePointSolver/pixelGameEngine.cpp index c8488f8..fc06265 100644 --- a/ChallengeLeaguePointSolver/pixelGameEngine.cpp +++ b/ChallengeLeaguePointSolver/pixelGameEngine.cpp @@ -1,2 +1,4 @@ #define OLC_PGE_APPLICATION -#include "pixelGameEngine.h" \ No newline at end of file +#include "pixelGameEngine.h" +#define OLC_PGEX_QUICKGUI +#include "olcPGEX_QuickGUI.h" \ No newline at end of file diff --git a/ChallengeLeaguePointSolver/pixelGameEngine.h b/ChallengeLeaguePointSolver/pixelGameEngine.h index 87f8813..b454963 100644 --- a/ChallengeLeaguePointSolver/pixelGameEngine.h +++ b/ChallengeLeaguePointSolver/pixelGameEngine.h @@ -3596,7 +3596,7 @@ namespace olc { // Check for typed characters for (const auto& key : vKeyboardMap) - if (GetKey(std::get<0>(key)).bPressed) + if (GetKey(std::get<0>(key)).bPressed&&nTextEntryCursor<4&&(GetKey(olc::Key::SHIFT).bHeld ? std::get<2>(key) : std::get<1>(key)).length()>0&&(GetKey(olc::Key::SHIFT).bHeld ? std::get<2>(key) : std::get<1>(key))[0]>='0'&&(GetKey(olc::Key::SHIFT).bHeld ? std::get<2>(key) : std::get<1>(key))[0]<='9') { sTextEntryString.insert(nTextEntryCursor, GetKey(olc::Key::SHIFT).bHeld ? std::get<2>(key) : std::get<1>(key)); nTextEntryCursor++; diff --git a/ChallengeLeaguePointSolver/pixelGameEngine_wasm.o b/ChallengeLeaguePointSolver/pixelGameEngine_wasm.o index 9a923346041f68f69ae719342f520f9e05000c00..233e5d4d64e519d4541224766f341e986fb5fa91 100644 GIT binary patch delta 77616 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 OS6xEPh+iKwD*r!I7ii1? delta 35861 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