From 940d36d8a1521f171674e358dada3305e66d48da Mon Sep 17 00:00:00 2001 From: "admin@omencraft.com" Date: Sun, 30 Oct 2011 18:15:44 +0000 Subject: [PATCH] put the timer and quicksort functions into their own files. Made a few changes to the converter. Converter doesn't understand Entity tags and some chunks cause it to segfault for a currently unknown reason. git-svn-id: http://mc-server.googlecode.com/svn/trunk@28 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- converter/cConvert.cpp | 236 +++++++++------------------------------- converter/cNBTData.cpp | 74 ++++++------- converter/cNBTData.h | 12 +- converter/denotch | Bin 169472 -> 165672 bytes converter/quicksort.cpp | 88 +++++++++++++++ converter/quicksort.h | 9 ++ converter/timer.cpp | 9 ++ converter/timer.h | 8 ++ 8 files changed, 209 insertions(+), 227 deletions(-) create mode 100644 converter/quicksort.cpp create mode 100644 converter/quicksort.h create mode 100644 converter/timer.cpp create mode 100644 converter/timer.h diff --git a/converter/cConvert.cpp b/converter/cConvert.cpp index e31730bf3..445d38796 100644 --- a/converter/cConvert.cpp +++ b/converter/cConvert.cpp @@ -1,4 +1,3 @@ -// reading a complete binary file #include #include #include @@ -6,14 +5,9 @@ #include #include #include "zlib.h" -#include #include "cNBTData.h" - -void quicksort(int*, int, int); -int partition(int*, int, int, int); -int median3(int*,int,int); -void swap(int &, int &); -double diffclock(clock_t, clock_t); +#include "timer.h" +#include "quicksort.h" using namespace std; @@ -48,9 +42,9 @@ int main () { unsigned char byte1 = 0; unsigned char byte2 = 0; unsigned char byte3 = 0; - unsigned char byte4 = 0; - unsigned char byte5 = 0; - unsigned char trash = 0; + unsigned char byte4 = 0; + unsigned char byte5 = 0; + unsigned char trash = 0; unsigned int frloc = 0; int toffset = 0; int compdlength = 0; @@ -72,7 +66,7 @@ int main () { toffset = 4096 * ((byte1*256*256) + (byte2*256) + byte3);//find the chunk offsets using the first three bytes of each long; toffarr[i] = toffset;//array of chunk offset locatiosn in the fle. } - for ( short i = 0; i < 4096; i++ ) {//loop through next 4096 bytes of the header. + for ( short i = 0; i < 4096; i++ ) {//loop through next 4096 bytes of the header. //keeping this code here in case we need it later. not using it right now. if( fread( &trash, sizeof(byte4), 1, f) != 1 ) { cout << "ERROR 2jkd READING FROM FILE " << SourceFile; fclose(f); return false; } } @@ -80,65 +74,38 @@ int main () { quicksort(toffarr, 0, 1023); //sort the array from smallest to larget offset locations so we only have to read through the file once. for ( short ia = 0; ia < 1024; ia++ ) {//a region file can hold a maximum of 1024 chunks (32*32) + if (ia == 31) { ia++; } if (toffarr[ia] < 8192) { //offsets of less than 8192 are impossible. 0 means there is no chunk in a particular location. if (toffarr[ia] > 0) { cout << "ERROR 2s31 IN COLLECTED CHUNK OFFSETS " << toffarr[ia]; fclose(f); return false; } //values between 0 and 8192 should be impossible. //This file does not contain the max 1024 chunks, skip until we get to the first } else { // found a chunk offset value //Chunk data begins with a (big-endian) four-byte length field which indicates the exact length of the remaining chunk data in bytes. The following byte indicates the compression scheme used for chunk data, and the remaining (length-1) bytes are the compressed chunk data. + printf("Working on chunk %i\n", ia); if( fread( &byte1, sizeof(byte1), 1, f) != 1 ) { cout << "ERROR 2t32 READING FROM FILE " << SourceFile; fclose(f); return false; } if( fread( &byte2, sizeof(byte2), 1, f) != 1 ) { cout << "ERROR 2y51 READING FROM FILE " << SourceFile; fclose(f); return false; } if( fread( &byte3, sizeof(byte3), 1, f) != 1 ) { cout << "ERROR 3424 READING FROM FILE " << SourceFile; fclose(f); return false; } if( fread( &byte4, sizeof(byte4), 1, f) != 1 ) { cout << "ERROR sd22 READING FROM FILE " << SourceFile; fclose(f); return false; } compdlength = ((byte1*256*256*256) + (byte2*256*256) + (byte3*256) + byte4 - 0); //length of compressed chunk data if( fread( &byte5, sizeof(byte5), 1, f) != 1 ) { cout << "ERROR 2341 READING FROM FILE " << SourceFile; fclose(f); return false; } //compression type, 1 = GZip (RFC1952) (unused in practice) , 2 = Zlib (RFC1950) - //printf("byte1: %x \n", byte1); - //printf("byte2: %x \n", byte2); - //printf("byte3: %x \n", byte3); - //printf("byte4: %x \n", byte4); + + //printf("byte1: %i\n", byte1); + //printf("byte2: %i\n", byte2); + //printf("byte3: %i\n", byte3); + //printf("byte4: %i\n", byte4); + //printf("byte5: %i\n", byte5); frloc += 5; //moved ahead 5 bytes while reading data. - //cout << compdlength << endl; return 1; - //unsigned char* comp_data = new unsigned char[ compdlength ]; - //cout << "size of comp_data: " << compdlength << endl; - //cout << "size of comp_data2: " << sizeof(comp_data) << endl; - - //fread( comp_data, sizeof(unsigned char), compdlength, f); - //if( fread( &comp_data, sizeof(unsigned char), compdlength, f) != 1 ) { cout << "ERROR 1234 READING FROM FILE " << SourceFile; fclose(f); return false; } //actual compressed chunk data - //cout << "frloc: " << frloc << endl; - // TODO - delete [] temparr after you're done with it, now it's a memory leak - char* temparr = new char[compdlength]; //can't get fread to read more than one char at a time into a char array... so that's what I'll do. :( At least it works. - if( fread( temparr, compdlength, 1, f) != 1 ) { cout << "ERROR rf22 READING FROM FILE " << SourceFile; fclose(f); return false; } + char* compBlockData = new char[compdlength]; //can't get fread to read more than one char at a time into a char array... so that's what I'll do. :( At least it works. + if( fread( compBlockData, compdlength, 1, f) != 1 ) { cout << "ERROR rf22 READING FROM FILE " << SourceFile; fclose(f); return false; } frloc = frloc + compdlength; - /* - int re = 0; - char tempbyte = 0; - while (re < compdlength) { //loop through file and read contents into char array a byte at a time. - if( fread( &tempbyte, sizeof(tempbyte), 1, f) != 1 ) { cout << "ERROR rf22 READING FROM FILE " << SourceFile; fclose(f); return false; } - temparr[re] = tempbyte; - re++; - frloc++; - } - */ - - //if( fread( comp_data, compdlength, sizeof(unsigned char), f) != 1 ) { cout << "ERROR 1234 READING FROM FILE " << SourceFile <cNBTCompound << endl; - //cout << BlockDataString << endl; //testing of nbtparser. cNBTData* NBTData = new cNBTData(BlockData, (testr)); - //NBTData->m_bDecompressed = true; NBTData->ParseData(); - NBTData->PrintData(); + //NBTData->PrintData(); + NBTData->OpenCompound(""); + NBTData->OpenCompound("Level"); // You need to open the right compounds before you can access the data in it - //NBTData->GetByteArray("Blocks"); - //for(unsigned int i = 0; i < 111; i++) {//re - //printf("Blocks?: %i\n", NBTData->cNBTCompound::GetByteArray("Blocks")[0]); - NBTData->OpenCompound(""); - NBTData->OpenCompound("Level"); // You need to open the right compounds before you can access the data in it - printf("xPos: %i\n", NBTData->GetInteger("xPos") ); - //will print - //xPos: 0 - printf("test: %i\n", NBTData->GetByteArray("Blocks")[0] ); + //NBT Data for blocks should look something like this: + //==== STRUCTURED NBT DATA ==== + // COMPOUND ( ) + // COMPOUND + // COMPOUND (Level) + // LIST (Entities) + // LIST (TileEntities) + // INTEGER LastUpdate (0) + // INTEGER xPos (0) + // INTEGER zPos (0) + // BYTE TerrainPopulated (1) + // BYTE ARRAY BlockLight (length: 16384) + // BYTE ARRAY Blocks (length: 32768) + // BYTE ARRAY Data (length: 16384) + // BYTE ARRAY HeightMap (length: 256) + // BYTE ARRAY SkyLight (length: 16384) + //============================= + + + for(unsigned int i = 0; i < 16384; i++) { + //printf("array HM: %i\n", NBTData->GetByteArray("HeightMap")[i]); + } + for(unsigned int i = 0; i < 32768; i++) { + //printf("array Blocks: %i\n", NBTData->GetByteArray("Blocks")[i]); + } + + //printf("xPos: %i\n", NBTData->GetInteger("xPos") ); NBTData->CloseCompound();// Close the compounds after you're done NBTData->CloseCompound(); - //} - return 1; + fwrite( BlockData, DestSize, 1, wf ); //write contents of uncompressed block data to file to check to see if it's valid... It is! :D - //fwrite( &temparr, compdlength, sizeof(unsigned char), wf ); - //cin >> n; //just to see screen output - //delete [] comp_data; - //return 0; + delete [] compBlockData; delete [] BlockData; + while ( (frloc < toffarr[ia+1]) && (ia<1023) ) { //loop through Notch's junk data until we get to another chunk offset possition to start the loop again if( fread( &trash, sizeof(byte4), 1, f) != 1 ) { cout << "ERROR 2nkd READING FROM FILE " << SourceFile; fclose(f); return false; } frloc ++; @@ -206,18 +177,7 @@ int main () { //if (ia == 30) { break; } } //return 0; -/* - for( short i = 0; i < 1024 ; ++i ) { - if( fread( &byte1, sizeof(byte1), 1, f) != 1 ) { cout << "ERROR READING FROM FILE " << SourceFile; fclose(f); return false; } - if( fread( &byte2, sizeof(byte2), 1, f) != 1 ) { cout << "ERROR READING FROM FILE " << SourceFile; fclose(f); return false; } - if( fread( &byte3, sizeof(byte3), 1, f) != 1 ) { cout << "ERROR READING FROM FILE " << SourceFile; fclose(f); return false; } - if( fread( &byte4, sizeof(byte4), 1, f) != 1 ) { cout << "ERROR READING FROM FILE " << SourceFile; fclose(f); return false; } - } - //printf("value: %x \n",trash); - - -*/ for ( short i = 0; i < 1024; i++ ) { //cout << toffarr[i] << endl; } @@ -238,95 +198,3 @@ int main () { } - - -double diffclock(clock_t clock1,clock_t clock2) -{ - double diffticks=clock1-clock2; - double diffms=(diffticks*10)/CLOCKS_PER_SEC; - return diffms; -} - -// Quicksort controller function, it partitions the different pieces of our array. -void quicksort(int *arIntegers, int left, int right) -{ -/* cout << "quicksort ([" << arIntegers[0] << "," - << arIntegers[1] << "," - << arIntegers[2] << "," - << arIntegers[3] << "," - << arIntegers[4] << "," - << arIntegers[5] << "," - << arIntegers[6] << "]," - << left << "," - << right << ")\n"; -*/ - if (right > left) - { - int pivotIndex = median3(arIntegers,left,right); - int pivotNewIndex = partition(arIntegers, left, right, pivotIndex); - - // Recursive call to quicksort to sort each half. - quicksort(arIntegers, left, pivotNewIndex-1); - quicksort(arIntegers, pivotNewIndex+1, right); - } -} - -int median3(int *arIntegers,int left,int right) -{ - int center = (left+right)/2; - - if(arIntegers[center] < arIntegers[left]) - swap(arIntegers[left],arIntegers[center]); - if(arIntegers[right] < arIntegers[left]) - swap(arIntegers[left],arIntegers[right]); - if(arIntegers[right] < arIntegers[center]) - swap(arIntegers[center],arIntegers[right]); - - swap(arIntegers[center],arIntegers[right-1]); - - return center; -} - -// This function takes an array (or one half an array) and sorts it. -// It then returns a new pivot index number back to quicksort. - -int partition(int *arIntegers, int left, int right, int pivot) -{ -/* cout << "partition ("<< arIntegers[0] << "," - << arIntegers[1] << "," - << arIntegers[2] << "," - << arIntegers[3] << "," - << arIntegers[4] << "," - << arIntegers[5] << "," - << arIntegers[6] << "]," - << left << "," - << right << ")\n"; -*/ - int pivotValue = arIntegers[pivot]; - - // Swap it out all the way to the end of the array - // So we know where it always is. - swap(arIntegers[pivot], arIntegers[right]); - int storeIndex = left; - - // Move through the array from start to finish comparing each to our - // pivot value (not index, the value that was located at the pivot index) - for (int i = left; i < right; i++) - { - if (arIntegers[i] <= pivotValue) - { - swap(arIntegers[i], arIntegers[storeIndex]); - storeIndex++; - } - } - swap(arIntegers[storeIndex], arIntegers[right]); - return storeIndex; -} - -// Simple swap function for our in place swapping. -void swap(int &val1, int &val2) -{ - int temp = val1; - val1 = val2; - val2 = temp; -} diff --git a/converter/cNBTData.cpp b/converter/cNBTData.cpp index fc0dd628e..c54f7d74e 100644 --- a/converter/cNBTData.cpp +++ b/converter/cNBTData.cpp @@ -145,7 +145,7 @@ void cNBTData::Compress() if( ret != Z_STREAM_END ) { - printf("WARNING: Compressing didn't go to end of stream\n");//re + //printf("WARNING: Compressing didn't go to end of stream\n");//re } if(m_Buffer) @@ -249,7 +249,7 @@ void cNBTCompound::AppendInteger( std::string & a_Buffer, int a_Value ) void cNBTCompound::Serialize(std::string & a_Buffer) { - printf("cNBTCompound::Serialize()\n");//re + //printf("cNBTCompound::Serialize()\n");//re for( CompoundMap::iterator itr = m_Compounds.begin(); itr != m_Compounds.end(); itr++ ) { if( itr->second == 0 ) continue; @@ -357,10 +357,10 @@ void cNBTCompound::PrintData( int a_Depth, std::string a_Name ) printf("%s BYTE %s (%i)\n", Prefix, itr->first.c_str(), itr->second ); } - for( ByteArrayMap::iterator itr = m_ByteArrays.begin(); itr != m_ByteArrays.end(); itr++ ) - { - printf("%s BYTE ARRAY %s (length: %i)\n", Prefix, itr->first.c_str(), sizeof(itr->second) ); - } + for( ByteArrayMap::iterator itr = m_ByteArrays.begin(); itr != m_ByteArrays.end(); itr++ ) + { + printf("%s BYTE ARRAY %s (length: %li)\n", Prefix, itr->first.c_str(), sizeof(itr->second) ); + } delete Prefix; } @@ -383,7 +383,7 @@ void cNBTData::Serialize() memcpy( m_Buffer, Buffer.c_str(), Buffer.size() ); m_BufferSize = Buffer.size(); -printf("m_BufferSize1: %i\n", m_BufferSize);//re + //printf("m_BufferSize1: %i\n", m_BufferSize);//re //for(unsigned int i = 0; i < m_BufferSize; i++)//re //{//re @@ -400,18 +400,18 @@ void cNBTData::ParseData() } m_Index = 0; - printf("m_BufferSize2: %i\n", m_BufferSize);//re - printf("cNBTData::ParseData()\n");//re + //printf("m_BufferSize2: %i\n", m_BufferSize);//re + //printf("cNBTData::ParseData()\n");//re //for(unsigned int i = 0; i < m_BufferSize; i++)//re - for(unsigned int i = 0; i < 70; i++)//re - {//re - printf("echo%02i %02x %3i %c\n", i, (unsigned char)m_Buffer[i], (unsigned char)m_Buffer[i], m_Buffer[i] );//re - }//re + //for(unsigned int i = 0; i < 70; i++)//re + //{//re + // printf("echo%02i %02x %3i %c\n", i, (unsigned char)m_Buffer[i], (unsigned char)m_Buffer[i], m_Buffer[i] );//re + //}//re while( m_Index < m_BufferSize ) { - printf("m_BufferSize3: %i\n", m_BufferSize); - printf("m_Index: %i\n", m_Index); + //printf("m_BufferSize3: %i\n", m_BufferSize); + //printf("m_Index: %i\n", m_Index); ParseTags(); } } @@ -420,20 +420,20 @@ void cNBTData::ParseTags() { if( m_Index < m_BufferSize ) { - printf("ParseTags idx:%02i %02x %3i %c\n", m_Index, (unsigned char)m_Buffer[m_Index], (unsigned char)m_Buffer[m_Index], m_Buffer[m_Index] );//re + //printf("ParseTags idx:%02i %02x %3i %c\n", m_Index, (unsigned char)m_Buffer[m_Index], (unsigned char)m_Buffer[m_Index], m_Buffer[m_Index] );//re unsigned char Tag = m_Buffer[m_Index]; if( Tag > 0 && m_ParseFunctions[ Tag ] ) { - printf("m_BufferSize4: %i\n", m_BufferSize); - printf("m_Index1: %i\n\n\n\n", m_Index); + //printf("m_BufferSize4: %i\n", m_BufferSize); + //printf("m_Index1: %i\n\n\n\n", m_Index); m_Index++; - printf("Tag: %i\n", Tag); + //printf("Tag: %i\n", Tag); (*this.*m_ParseFunctions[ Tag ])(true); } else if( Tag == TAG_End ) { - printf("Tag End"); + //printf("Tag End"); m_Index++; } else @@ -453,7 +453,7 @@ void cNBTData::ParseCompound( bool a_bNamed ) { std::string Name; if( a_bNamed ) Name = ReadName(); - printf("OPEN COMPOUND: %s\n", Name.c_str() );//re + //printf("OPEN COMPOUND: %s\n", Name.c_str() );//re PutCompound( Name ); OpenCompound( Name ); @@ -462,7 +462,7 @@ void cNBTData::ParseCompound( bool a_bNamed ) ParseTags(); } CloseCompound(); - printf("CLOSE COMPOUND\n");//re + //printf("CLOSE COMPOUND\n");//re } void cNBTData::ParseList( bool a_bNamed ) @@ -471,12 +471,12 @@ void cNBTData::ParseList( bool a_bNamed ) if( a_bNamed ) Name = ReadName(); ENUM_TAG TagType = (ENUM_TAG)ReadByte(); int Length = ReadInt(); - printf("LIST: %s Type: %02x Length: %i\n", Name.c_str(), TagType, Length );//re + //printf("LIST: %s Type: %02x Length: %i\n", Name.c_str(), TagType, Length );//re - for(unsigned int i = (m_Index-10 > 0)?m_Index-10:0 ; i < m_Index+10 && i < m_BufferSize; i++)//re - {//re - printf("%02i %02x %3i %c\n", i, (unsigned char)m_Buffer[i], (unsigned char)m_Buffer[i], m_Buffer[i] );//re - }//re + //for(unsigned int i = (m_Index-10 > 0)?m_Index-10:0 ; i < m_Index+10 && i < m_BufferSize; i++)//re + //{//re + //printf("%02i %02x %3i %c\n", i, (unsigned char)m_Buffer[i], (unsigned char)m_Buffer[i], m_Buffer[i] );//re + //}//re PutList( Name, TagType ); OpenList( Name ); @@ -500,7 +500,7 @@ void cNBTData::ParseByte( bool a_bNamed ) PutByte( Name, Value ); - printf("BYTE: %s %i\n", Name.c_str(), Value );//re + //printf("BYTE: %s %i\n", Name.c_str(), Value );//re } void cNBTData::ParseShort( bool a_bNamed ) @@ -511,7 +511,7 @@ void cNBTData::ParseShort( bool a_bNamed ) PutShort( Name, Value ); - printf("SHORT: %s %i\n", Name.c_str(), Value );//re + //printf("SHORT: %s %i\n", Name.c_str(), Value );//re } void cNBTData::ParseInt( bool a_bNamed ) @@ -522,7 +522,7 @@ void cNBTData::ParseInt( bool a_bNamed ) PutInteger( Name, Value ); - printf("INT: %s %i\n", Name.c_str(), Value );//re + //printf("INT: %s %i\n", Name.c_str(), Value );//re } void cNBTData::ParseLong( bool a_bNamed ) @@ -533,7 +533,7 @@ void cNBTData::ParseLong( bool a_bNamed ) PutInteger( Name, (int)Value ); - printf("LONG: %s %li\n", Name.c_str(), Value );//re + //printf("LONG: %s %lli\n", Name.c_str(), Value );//re } void cNBTData::ParseString( bool a_bNamed ) @@ -544,7 +544,7 @@ void cNBTData::ParseString( bool a_bNamed ) PutString( Name, String ); - printf("STRING: %s (%s)\n", Name.c_str(), String.c_str() );//re + //printf("STRING: %s (%s)\n", Name.c_str(), String.c_str() );//re } void cNBTData::ParseByteArray( bool a_bNamed ) @@ -559,21 +559,21 @@ void cNBTData::ParseByteArray( bool a_bNamed ) char* ByteArray = new char[ Length ]; if( Length > 0 ) { - memcpy( ByteArray, &m_Buffer[ m_Index ], Length ); + memcpy( ByteArray, &m_Buffer[ m_Index ], Length ); m_Index += Length; } PutByteArray( Name, ByteArray ); - printf("VALUE: %s First 5 Chars: (%i,%i,%i,%i,%i)\n", Name.c_str(), ByteArray[0],ByteArray[1],ByteArray[2],ByteArray[3],ByteArray[4] );//re + //printf("VALUE: %s First 5 Chars: (%i,%i,%i,%i,%i)\n", Name.c_str(), ByteArray[0],ByteArray[1],ByteArray[2],ByteArray[3],ByteArray[4] );//re } std::string cNBTData::ReadName() { -printf("crui1 \n"); + //printf("crui1 \n"); short Length = ReadShort(); -printf("crui Length: %i\n", Length); + //printf("crui Length: %i\n", Length); std::string Name; if( Length > 0 ) { @@ -758,4 +758,4 @@ void cNBTList::Clear() } } m_List.clear(); -} \ No newline at end of file +} diff --git a/converter/cNBTData.h b/converter/cNBTData.h index 2ab5b0e21..4d5ec0beb 100644 --- a/converter/cNBTData.h +++ b/converter/cNBTData.h @@ -23,11 +23,11 @@ public: TAG_Byte = 1, TAG_Short = 2, TAG_Int = 3, - TAG_Long = 4, - TAG_Float = 5, - TAG_Double = 6, + TAG_Long = 4, + TAG_Float = 5, + TAG_Double = 6, TAG_ByteArray = 7, - TAG_String = 8, + TAG_String = 8, TAG_List = 9, TAG_Compound = 10, TAG_NumTags // Not a real tag, but contains number of tags @@ -53,8 +53,8 @@ public: cNBTCompound* GetCompound( std::string Name ); cNBTList* GetList( std::string Name ) { return m_Lists[Name]; } - cNBTList* GetCurrentList() { return m_CurrentList; } - cNBTCompound* GetParentCompound() { return m_ParentCompound; } + cNBTList* GetCurrentList() { return m_CurrentList; } + cNBTCompound* GetParentCompound() { return m_ParentCompound; } bool OpenList( std::string a_Name ); bool CloseList(); diff --git a/converter/denotch b/converter/denotch index ef8a7db6d3d0b91e57f240baee5a150a6f11a78a..d222a8d2727980479b25e5e38d5db6a22d82475b 100755 GIT binary patch literal 165672 zcmeEveSB2K_4g)#L_`xQ)rcqy0)j6X5EVgjgRCwRFapsOUy_gn5)Db3Y%o&MK#0Gr z5u2Yy8!g(@q9XMrwG^XOSd_A8t&K=EzTv89cS+QUsHvj+e9xJg`?7oQCItOF&mYh7 z3Ew+&&YU^t%*>gWd++Y8?u<(k6A~QiljxZ4pj7Y#7iWq89gdV*oyX;v;yBXbayT6) zIgS9=0Q@OFm%LKgEsH5k0xx~~;jcgbrX*5|&_$r(a85ZK3RUfdRG9q_$^VmjoOO#R=eR|bQy7%l3YC2%j{X)%`xYd+ zkfOAUz%i5m*HKlU`LVZvuA7e(f}4*_XHJEahl+vF)AHJCMS=mvSKl%0M;8jmgnd5kI3}`O=O~l_Y{EfpOeMSm!oFnl(;ED2j zGVnrqeG2ew{7u2%srWkqe;45IBK#eLKl)6<-_P-PKK@8o(rpO-=#z%ObMZHw68IdA zzccZ7IwfpA(p5H8k$se;9x0Lh^fP%)KJ0)IQ*T2zccW67XD7d-!%LkkH4w-Bmb*$b~3J0@i!2E>O*xA zANh^s)}*I6M<%2sP#*c2+F|F)LA&nHfBx?yzdvx~IQPFZhBghp_@-GmYzE2pa{z)> z8yJ~_Hu=qPx)uL)7;Tlm&qmG?7-Gd=2qmoYsU4k01?4sMRjd5jHu^knQ}0F_yJp(t zFR_tNao0-!BW&dCwDHfSu**u0+os<8ZSsfO)H~m%-Un^+t8C;`|F+WeL>oER+VGd! z@R!^0UudJxlQ#L++W4W`rruRHa(-)*|B8*Cc{co+Hu+m^6cjQ+p=6Nks+ha9KrzrIYOeGazRe!Fd+*?#p zm{*XKpI4e+SmMZ8xZujU6Vq~X@~f-!78Ng>IPpAOlO8$Vo5~AwAiK;BuDSE`X63tQ zPINCrV!n6M`8o3z<#;O!iKDU*mgJQddl^Cc}_mssDkZ{a?vEXtFqY2OQkn1W#cOI z=DX)X2IS{g=fN*B&W9WjDApsqtBV$TnzSQaP)4 z)#NWgCFkU1&SsV2;qz#0h5VIXj`!AAu-c_k%f`9gA3&(%s(&n;k~bX6?0I5)4n9JZ1IOKB)B6{8SWOY+gd zWJt&=y|EY$nO9g@wX~4f@&#Lwx2&|pQCVJ5T5Cj`Aum^((}W{2Oxei*CqS zoL5}p$cK72Ae#aRMkD75Pa}|27keE`3zz1X-{e>f#>zs+;u|Z9y#NXYC`C2Oh_p1X zxYSYVEh{Qg#^V(YjMgGxpXBy362Cu3KF#6 zaN;j>>`hq09^v?_WJo}%GbNq&K0}L(vE>=ycwXjJ4J*c$rJo~U;Qtl)NFIG&fAR)w z7y3J1m;B!GcVR1&=-4CqgSU!#f%H>*Pb#P8Bid`w-a&oTJVNR0k!T)6KJ5$DC)1EmdsFqvHsq^)F41xg`LxefpCUuPYD=P(8}g0&&}u`zas5$a z$T#k1>kawFeQTp3pZ4JD(`3k}J*xUN8}ez7sy-VG`Lst>pB6*DIujsTt0AAx1k}fG z$frG=`s_61pQti{ZH9ccFDG)lA)ofw>Jv2N(|%fgLWX>`Ung3ZA>XN(f!&7uk%oMS zT-Q-w8)e8(GUT6P$WJlkk2d6|8uG^&@|}kKv4;F{hWt|v`DuoHb#_DKDTaJHhfp7v zA^&uh3G^89>8wJ1G7b53E~7r#hJ4x!s!y&VpUykfr^t{`Yiji=H{?@1RG(@?KAlae zPmLjelF9_u8}jKqN_`p)`7}qUPm>{EopBMZ*^p0XSn9LEkWc4T>eFJ#r!zA3X*J~2 z*_itH4f%8)raqq9&ZN*sh>)QQgu~EO#Q z7{O=EMoLpC4!3doK}u5y4*NNMAEhbuhFds&7o{oWhMPHkJEbYqh8sD(iqaHf!!?{< zPHF1y;c`w_P@1Nea4x5>r!*b2g)=$5h|&~t!!AxQq%?)va2luQQJO+**vaY3C{3X? zoWkiDl%|jxc5r$sr74t#yM92%m`RkT5E>40`ZP*Y=nS`UdK9H8WQP5m9!6;jmEjgn z51}-L$Z#{K2T__rW4MviiIk?07_Q;;w?#-(C=8c#dOxKp1cq}ty^qoq;=-An{*clX z+QKeQzfEZhY2h?Z@1it?vaplWFH@RASU82#FHo97SJ=VnXDLk~E8O)x+5Z%!oseQoFQ+tx zoNzg(D=1B&CY;OZ>nTkkCY;IXMUc&g1*gQ@gh- zbHS{Dzbzr%;R$RDG6c2{b2&nn!=M9=jWpIh4Fg^(9O>}X`MrseHXiDY#!r^V_wjsU zthuln9nw)X`)^&im4ae4{yZx?LX_I}T|ZB4M}p`4_R7(VlSj;?py5yO_y)`YQ)KAh znWU@!|=|BUZEiS)SSpFV9CssMkBBmGVfpq^;ek z=cP#Sr576;NvHIz^ab-hD?8gU;tD(s{l`#G@c7*A6aAq^nCJ1;HKN;k0(JEO789te zQI~7#C`LTHGcnzMjL*JH)K84mfKJ`=xgdnT{EjOl(Vp7p zxrXGs{j2@nvml3R*|J}9z9cwFA8@i-%vp7Mcmv|nmao9KmDa(b5vXSioy0(|&=6Sj zH!>jnDY$mj{fms)QTM8Ve+qa-z&`}MOc1EsM1W7Au0^|gOkP2`a$HgcS9}|ZEDqG| zU`qICgltd4-K^yruFT_m?OBTJTj)P3kV0;#?M@JOy0(0$DZZFYTyr;>?eV=qybCC& zfg6F6St!cJq(4WRg@1TI6gC4)$@+NZ!hg?`dkdn>vbbZJqNobctHdO<270 zdFmRGe#sA@TPN4OkN$}6vK@I2N5?YVLh5xf7ViD8*}_WA!l^_t^_6jyqqp987;J34 zGEDYRiYg|h2qVc-sb#p99o`AAuVD+GjbOR4h58wFy<>tX9;kbP^$xGZN@8*C^OPD< zl?1VLl>ko=!V{}m!iA9$4#%yz(b;wWq0(LcVXVsXb|J?b#_p50pQd#Fy6Z(lKM@lO;rYVk8@q1R?P4u?h6 zwqL8QJf^nm%(dl2)%FmUb$V@<F%G{ne;XjH#`QU8TjCFTh~5?L1R$mg8`G zRBaQq+SZb6lP6c1Ypac_?IkQ>4{aQ(kx81#v06uATK5oz^_Y=$JLzHYP==;+@T+K@ zU!@#?8jUM_rbgt#;VnBnax`}%3h67Y>T@h-R+4)^csRqtgN)h+BREI&I>ot8c zWAvGB*5{%qed@3+5H%*SR+zSY_$+X?kZU2svhXU$)!95FwK zDtvVt1dTF%b?fne?emo7@a8ly4I{7~YKsv#>r1km=(XJky@PAJzxR%>?f%aDvyO>d zAJe!_0au4}t6$3)LK(?hLs~`xGPcrAD0DoOnC08va5q(*;R|{i*07qsS4qW3Fa|Sx z4`qS|{TYxu5D};&)%W@=-`_KQ{|SwTunb?wlmB}7LPR%2x|fI_jQ0sIb8=0c3%Og4 z8o*1N&_(2_HFr~iV4s{ggr* zksYXOhD@3PI>xH{75#RtSolkL0q3cLvz4b2Vr09hWch{g8h@#EKqKaCM{DT!?5!K^O1_NCYVW1!ozax2dJxye) zbRe{EKfGG4#^ahg%jvfeOvXVu1Wh8=n1A~M6jNY(lydYSu@Oa$L81%Qiy)EEk~(a| ztW1|Q*%L~(st{PV=qz-ZfT^7DcwP=vg<%H!8b18UY}IZg)9EItqhpln5#=aJ?%vs@ zdL*Tmlk4RDap}&LAvvND_dah2tCjHu% zUZl+s_Gc-+6$gD)-L)$YCRClaas?cTz1qmFJ8Q9>Nc%hzX{8&u&$i*zXA9+#0zPDm z@>_^|D>)_fIQ*>bv9QB}WRGt}$kX5sc><0UJe|guD83GRVRd~M_NB6sy=SVSPDQ}C z3^Xy$DK(m#Lr}8e0c-(NU)OpS198oSh274&7jOX9UP>bE#A;QDk|2Wse+I(-7}g9IJv z4eo>J7nlQfdTO_w=-Ku`e^0{8p4u0ZJOKn!k^o{8cHp1|`+KnX$8`#tk3O~Tg9+#* zgTzSLBxC>a>>eT+GLfI+K%KAvo&haObsEKlA%$%%+ziqkDH@Waf^sQQZhXb zI%=*)b(yIiBr`76sF`MJHj)pzHEOPzIu6OZF4w5)c}A|cAuH(dHEw`rlx)a)*Vou0 z6M>pdn*Q)2_nXFMN!(Gh4p#}BBl|sA*g268s4MhT$DseA8)Py8t6H~7RwY6_o# z%s%-eLN3?*qVmeGz_j`uxa3xoOA3&!yX3eIatRBE16a~WPzA!#4sIp<5)$5!h2)GB zh-X&~ha6$T3?-lQ`=05fs?Nk=0jM4jL>BL0mn=)Nt{DyNMAiD=Ip3bW%Ce zo8)5cJD#DN56{vS)+eM?AoK}*=5u3}(~X7l))P=5^wGzWNO(4M z@d$}quq%RLfzV|zMDY&VI)!+j1~1C~P<6sH!K8G@vujB9FF@J4n8@uQL*FK!`#=L5 zhL)F{Fi>(<5a$!j$&OIwf_GY!2at7KR2KA_#O*H12G~`Qjs7j%nsq?UMMgLK$)FRc zQr`rd>T=QV`5?OEZ zW}XDG2pYPzo_w(g(zu84HcHvS-J{N5HFRqmF$vS^2mI=?1X;mgzexmbi(-%wbe-#94RW`?&v;1S{zR~(LJCc>wxMK zF|B?j`8K*|=`H`;4?(7x%R5;0jkPEN?Gn60u_#4Mm;z1Mvd~mw7P90zi1?D%`c-cc zlPJPsRhO@AvCrL^yw%;gtve}s3kCBo5!*IFe)7|x88d&6OkGME0w%gGuZ|ns@51gU zLHA+NyJij+zV6_&I39vyxnFxfP@5Q<#j8=Y9z|=wR__@wg~9^Le|#~ayE*(F6(joiKeZ!e6sxyqBgi|w$NQ;Vi|~f75kaQj=a}VVe(d3G)Gh-)cB5efl_ck z$@wTawb|IEs6v-OsDY>))8aW>b|~-g#Wk=#}sc;>JpaW**j^rF9~k_UgNZRJgH7y3wWF=;CneZYF;` zt@P2{m_k%i2X`b`9Y6IP>706&5eVG@lVaVtiSFD<&g&%SA~IerYBV_z*MAh9m zUKV=qeaenk@kKED5MxbEe~Cfojfz=s zoPQ&PM7PBpW}~)Hu8pLVtFW}8l@F`PZILM3;@7GzYW?WqflxLHpbq^CxtM(2Px^WR z^&e^D7Ul|soUl9A*B-iyCpp(j&ad|%FUHr)B(pLQk1 z>d?Y>{tP2GpJW;gJzf~v0>9u-^UE+~lV1{azoe31$_0CKSPO3n(l6r-`_c{BWC9FMnB4}+yz zSK05=8{K|O)fctTvEHe8qXT2Q>K-jeg~C#-UFKNuQQ3mclQ)P zLmefy1rzyflPqo~{SYVv?oO0(bfh%6J8{0!&mG+1aMrpz6SN}JFtPpKk7MKav@FGl zCafdzB=FZHP`U0j17R%Jga||X#~oXjX_N2sZzG~(F)8xvwfu*WFLH4|1chr^d0ipY zj{4pwE;b;f44?xdWk5*hpXLr(7*HEZ5X@u*IZU5gZ^uJ)I1J52X7~~E=o-GJTE8Qb zVS=ryG7$H0xfjq_emSo9k&=4p=T&Kp{)RQwBx0tW_5-nrE#2|3xWlP-L=Y4R^+%Sz zBifAah7Q3hX`SaxmK|9~<84NdC{lldz( z^P8pl9dDV;&sC+@WHlSjZ#kZP>_(|TD3v;eWmq!^IJqr zF`7@5X!B)&-o=HOxg*=qbeBN)hU_Fm&SW+>5W1utM*6sa``)4+ez(?>-+5EBUu&s= zK~-62wNMmR(MUHcN)%GG($G$|ex4fsVNmoMtyCa%5!4bvxZRLDUMhPpX=GIPQBBzi z7Ro+nQkLsoDwM5(viLJ9OB7PJ%%m*GGQW+oO(v-z?_HVPx=`x4oOKk3aQjL4%I$vCs-5u|&iuA^L5X;s5iYPq%)O-$A?EZnDcsT@Tj{jdaS- zSA0-${tL->QHXw1?m}rVIgULH!!+i0ap(o++RGEUIE+@e5kMrFK0n=WN#5+JcYj{9 z;&a@#J%~D!H={d|kMeinJ`HZme27~%c-qpBMKPb7u6{#kCZ(*&Odxh2s~NX&ZIFzg zYs-^D74)OlNlD&3M=J4>e%}bUkc1L6$J3pn21mz9w$eylAtnp97{t)+CsZ}W(=V%C zJ}3BQq%AxS9w9GO4JUJihfKDGj}Yw;$C1ff{0J5$Xk2j)@ziUgOABeW-Gk_sxe{I* z8YFKw<3y<=pM5Txh|a!5%Or0>ZR8PdIz#^Eoi_PxU`qG3Lyem?HBN^bwQe{~uiHNe z%co_uN|QZ>k}>zd>GYIY)IBHJ%m@PGus}78@l5o<4Zf~=_j)xxA8w08YF4awcr%fM zGl;AWa-7dU3jI;+9Wi=%-SRd@0&}6?e+Ff>2Rp<8`a8%H<10Lr+CUrv_+{a1$;q_u zYH+J68c!iEvG97pBoBoGp$1*vcIwMQUW=4>w2;?gkXJ(|l55=H2!!U6yfG?ja@I6W zUdN51R3MahkX^Sy8<88-h^!pXJlbdk!895%Mxq*`YNL|+C!q*Ooxj7uXoyUnDU?1; z`4cF5Ji2z5DH`XZrJAUv)+&!5e3e>it!OE@F{?>>;!&K6uxI&32DeligelL?L^XO# zv1cc0HHU|Zumf3v&;*=P(b&LV1ZUQi(}f&5NEQ7+x&E$yVNa9QiNiDUJ{bAj?A%e@ zn(XQ}aOib%*7L}cz2jlgJKCUOv$WwNP*F>>kjFL*rc-UXF0C=iL!m%usV?tI$P2jl zqK`PjU*SK}jr6h&jdaElk4c2U3_BKtC5nJeh=2`qWL1X9WfcI2+sUH%$3oDYHsP;H zE(;L;$Sh;bYZCFi*1b2O!Mzv3VZ{h$QIipv>88s0FH}bL)#SQ2Y1bp0`2^8l+sLm! zM>j)%%{BE`rhNBL)q=$LIQ(yjEH3odR_d>t&}Knm$asbN>n4YH4sxJ*R;z65|I*Ww z=Ey?r%Ume87S-tM9jo$KrZo#y@O4@j0H7jPk@Xa=*MI zc{{3!^2Ci=&Gev_n?3P7{E5Ty&yu%Z`&pDLLZ~^$6`!7{yW&(+73_+kdKH>09LTeF z#V4picSRFirp`lZJ6$n-V#>=lp7^+bj3-LS{n8UPs3po1OSOtSyvh^l@B~FKbAR{< zmD2E&T|$PdB?d2yG>K;~9HWcZyzngqS$iP}itdHG;H`LGnDmm37v9I2YgB(&OrDos zSdLnvys$*8xMR8U!XKzt`Eair_q*x5%rrROK;6m{+TgevFLj|3HvH$NN;oS~uSE03 zXC%jRaO?&}_r-1Sqwb4bu{d@o`9jWW6eTd7aQJ_nCMI)~SO{6l7p160pJ6yk zT&-0cej5Rv4btV+3VD8HH_IwsM%~gqEi&tAk<|%Gl8$ln(0y?lLAhForfebmOX@BI*n@plKZgw^4JRG1fbcrF@_=0Pa>lN%L^ z(@m(i0SR=?*4h=Fj$2Tm)00ng+6GTUJ@52zsV%b-Xb*@0#|`j4>LNz5PD8u%&gesNWOC=C;>O!*L8Hv zg5fBlc8NPRhpD|t8_J6Yychb{y4z_-A=$)MX{X!jPl|F+Ll+C70{khJLQyK!yQ%GDuFxQ)Hll9%z$i&s z9B}`@{V0wstWUQElNKN8{=r6Md{q`V#VLxr$UkUL;yFnp`GBOY%)yBm9|w(hkIzM; z88z!q31KWAvV&HLrxsO+m?ZmsDqM>mPEW?srdd1?HGgXp>IhvT^$`y$%RuxV z?Ql??Vi&#pc&OKLlV0o9rdp4NAR+Qg@)b-piM*XelDsvId{3XBmt)(yPF1#b4A+JK zu+3;v3yG}Vo@yEg;=$%_7}f>J-O8}DwFFw_Njzqa0|xOt-9SEm=s3&BPy&XIlQ>7y ztV??RO46)BJxe1_9CP8z4Zf=N9$!{dgL^%0GKm{B)1hzt8#K(U-JJ<)g^jmnXadA~ znPjP(OQ%9N&V9vCHBcB1(%I{s+Brr(2>P9+bz1&xDp0#3D4q>Lp+Kk_O$GrQ_-SIK z?_}S*+rsqF77-d;N#w4&CQ8eb&VDbVkT^|k+42y?lcXo0BTQJ6jWZ{491#@W0%wbO zZEpTvDkmoKv%nrT0Srf$VG`#9(^g_r@0o~m)`v7Us`e2w02OK{w-<1&x(XK9!Dc)Vxk}1C9yPOv8hovqnW;A*ZV&18!*-ZmGfx!ESU8%p63; zrj(vE6%|}Sw~NuKHO1CIZ(`Rn?&2~S0kVdvqK2THO(B;xorP?iWBOFIm%Us+0o_6e zuH4_%Q_bBT9B9%LqgC$+g7(1R4AHC@8{%XahsUENi#X{GgznxV#TlPuqqA4q$kInd zXgW{zz)`Iz-m2d`oa1D7w{_e?twOE|P!9Y>9hh&L%~O=e6$M<6^7+3gakt8cb~p$` zhfHd@i*-GLPO`;zK{KU6_{cx>c^ZfV8C0;C&MVCsr-#$!3j69w?=bZ~La!p|{h^gQZ7hJ7wZ~cVxS9 zJH4UOT01RNEvZG8Jz9=(r@rJr$q&0qV{QhvxY zx71qXnB1&5mW~COIL7owE~lc2i5Wb;ob17SM$u)Ka%>)?4bSzx1W0j)NZNmfD9J zOg>aC^_o_7bW7bIT|~9i>X;&`K{BI@D8hL$MO1_Ii!P!F`@T^=(FO^(R4ei=TIvt6 z?A#<}G3=b3t+Sh2YAo_wY4>0=rjF3cQA_RKq_SWZJ>M$r_N>WF zMbmW2eR>jZo#TOr&iWK>)nX_^?=gUx3V95L`e6b~embjjvCpa$-_fKZ)rKO8nA31$ zg9?a~ID>9D4+x1`8o9l6?dI_;M=uQW{%!!wjbEO-h+f{yGa!{W)GOA7>f}Q^FH#=y z@(KtGGIe5z9Uz~OBxxQJ66BimF5_BI_nq`YLl)%HV!WHI=e1k6S{#oymW2Y$11eV*H-U-1@|sr z;VnCFMYuK2YvIni3u=#1Mtrr~#XE+krwXz_(ZkL_bYOAz z#_yyW>PI(x1$PXi71;cwy#n+tcS?cJh|f}i-Js|S-1cYV{U5!495R|;i@nfXF`Yuf zcxiekttaG$&1+lpLQ~CyO*OmV`JM2*9|NOR+#R6ZK0Ez|C&*@gB>)w2){~q?dq3F@ z^b&=p&aVyXd<;(gBnjp5{2Q|56h`+5P)#7Tg#bB@C<4kqG4gcwNJ5^tes(0<<=6dP=qHtR3K2T&U zy-Hls4noyg<}!VeM2?&7H8lXKNpR%+A^* zvXkb(+8C_{QqCdz>NjX?OJAL9tCdc%(CYpetw#1itMC70qgAG@RyxH(tEXeM zn$`!cme^@^y{%R{#X_ssVzkQYgI2F?wDHwyTdj18g;pIgT9x%dt7&#xJz%SqPO;Ex z0KOX792tCl(CQ%^om=+yR~}K3Ow{c{sB6Ux+=9T4Kb&WZS)-AigTryo3WUy}2T!&4 zX6WV;&&Xl0;f}%-HNo7=#puQ*1mT@DB=I;H-Uw^~2X5Y|Rnz})x#(v#z4<%bpWzHR z>oZxxFIO7tNi096irJoJ^TPvw=i2B5UmWNjh3KfZUNWm&I~gN=?%aUDD(Aw_D74WD zvYP)b{k87l-uY{}Qbk(6kZ+F090xzjcI*BUu}$;WLXa)}brqD2eYVwGh@11B?3&If zk1Zm7Vm&76(>-=%tjE4KdF&eW7v-@xdgZa}AL^aQrbKz{wt>(%wudc=@>n_-(>#`n zq@~Bk;GovRV{llA4szfd?8LZRs!le7B*(gJI#;N>EGgDyUzuDs9$iMc>^IRagZh~T3g!dDO#Wo>wG%*G}9s{yTiHuk=wk5PC{$4*j8_ z-4DiuhHc2w*HV?_R~Z`qfxaU{Lng1mtXgdqiiC#nP};=C15l9ES-yKK1)T?(q~8Fu;mbab~1^M_1Q&S z<01HLFnW#h*F^0y_O%RQ7qOGV@NZ(M&62+w2m1F5{5BQhUPK1n>sr}Yq#(N zta$tn=RABM#KUo}rh`0#6M>6jf_UJy3)Xf~Zz&*!65S1eN z9`U3|BVE$tJ=WehVALc9BE@MIWE_DAF3ae*SwT&K9k2yoRZkB_Xi}Y|j<0Gjdynry zlfkeHiUdLpzlSgRo4pdLxIr#Cg>Onb)oD~zoZo1x;d46W@HGrS&}R*Ebv>eVuh1!n zui>SA*YG%9k0=fG(ZFr5dT!rZ`Jwy!?88?usW6!D%HjL4U*9!crRx#p!?il) z@HNa^*JmG&{ax?o33>*>xO({kcL6QdkQaf?I8U6w#k6^%3+KU>^TY>Ok{;qb@im=L z$IcVG)F2Cn^Ht*CDLOrCq*&<7dvKqfzD?Hp z{^oG?eZ#1gN#B!kP@>srp>I;mL5k782d(w}=5Y0$YShZ4?4U%o=N&13B8F8sK zyK&fp@+^m6RTD{Z-^g91KjF>Dv^BI#^Z)?veOIRY$@N&o0OMAa-l=eQ&_AbVg0h+#Pw9|s0 zf)@7XKruKd+TH?PUp3#x_Jmm{+uFN|Nk5^zM@f5mQPkaAYrnz|@>y8>EwVLl*|qNb zBWKymjj;A9BbDg!Z#2%{!WBt=e6jIcR~4n^3eDnv;i(n@L@rc!Y*nv~*H@N6Z42*}=+-DZHH)4AKpk^`7XlC~xwK= zrx_^*dt9ls&eONLbE!&;{jj>hV&rA@ta%%v<)$2h+`XsU>JTG$mpw1v5Hjlfusv^# z+_m<+F>>h_RBe0~Blk*s-Wa*3+4IK8O||EZk=uD%l)mPEq_2hE1EY%HQSsn7)E7H` ze#ChH`Tz7S{{4?IE;`=d!KP^QlWA^KCoVDP>tB5d9WXq2=H;+)6XnQ>IBNpj$S)ov z*5DL^ll>HR7A3`tRVvG4F3`_VAmBoLMgehT&+~YUHpd@`*5-ExZIaExKRc6@)3o8b z%-STH3p{Tq&>L-@`7BzS3n@qX<|UR!r-tmC4F=(G71w3f<~ehL8w~||qs==p+T<9t zsWl5oRMTW-ib{p;R_)Z?yT> z=g}=SpK@f=e8bYTmU_b=9NKVQW^MMF3p`{fV4)4qQ1lBcJP%=QtS*gvIT3&4Otp># z;yNJSP3406Yi-?l#VwVG3b6-VPQ$erLQ+f_#HiSXwODkla;3)P$WuUlt=^7Fx()TW zVHM+)s~F^QAecv5>Z_Q0wPYYv$p+v_S6;?5cN1l)Rl0iEncvU81QdNWKdeqX(TO#U z$tSB=g{mH&PY`D6Z)h-S*iPEww4Tp z#?UoAC9aR1%P7mzC*4?s=swxA(%L7JS>$1loq-VZ6Z&Kyt>1K?(3U_X@e~sqVDd>C zWm)=UkI5%5*I4^x7>hh?pM1)TKym8u6U5jyvrmpU_~Z*Bnfu9cwm#Wz^2z2~t$pJ7 zaeVUnPwSJ-W}keoB?F;1>Dug*gOp|2Pd0+0kDUi^vG&O)Eb_4X$uki16ONsAq@_M~ zKGKp{X|e&PvGXBiS^A_A6x}Cxt`I&kJ};!+>c-0G-#9L$-vpM+sEzn}8Qu)2Tad41 z_&$^m1|6t5^mj}|r4^Ns{3ZM=NpMZ5r_(7l5uhTX|QeGp)@Esv@&~5642f5})D4%yWEWk+u z#1lPvOrh^J14TWcOus;8aqFMHewNDz`N$DE&w*ZU^<|)V$_c{4)B2Hc(wLaJdX8?s zZN4^-Z%sMw^NL?o^E8MbPs3Ny;J3u9kzY^ePi}v>JCQ`-mo8wepSFLbIvezvl=uec zMyY)ktDU@hI-fdGaXPxv{WgHr)?DYkK&Ti9bz;$((co0c_mK27r0PZ(ntmlJ4%3fv zN`*d^3c014@*&E*XoW949Kpe&_>~@mhgW~X9$tVdgJk9H#4o=N#(Oek2VPbABtdX$k*IiCBY|LPh%(u?e)L;3hfK z%A%(}CX13+kK*F7&VP)*s6}_a)|r08gxJn>JlXRZb#Cd?YL4gdC4QX{I|IE_bVxO~ zac)$n7{+>e=PKo$Bt>}|@8ps%qq_0^kVD_))3OoHAGw(<>SkRM{IrEtoe8Y z^l0uFCbXfmEQ|?mreo;)9BFG(+gZbp-Ev&9iB-SEjT}R)dg6WiSam%OaP`P^bga_P zw7U*527ONVY%F8YOH`pn4EjAs8tOzGL-z7bA8yTGFeR$p79sw|i$UwTd~CP52Ewdj z&^T)MKE|L{Ik?R+=v6VWgh48F{^>(84D4diOZ26`2n^D7dJJj-!4QM~zVzJ`hs19^R*as6%%4RQ!?3Oj6vmk4Em#G40^^Y2Hg|nzO2Qd)ShF|-SJ{j zwN(tdRCvVJ$GwO_^u|)JW6(Lc8EuF`Z@*(7gBH;M|M6qcUnpc+#-MFfp+yY(Ek_zH z25sP&%Q5H*rbNY{J$vHEpdv0G+iey=m{knoxu=gYs6`HLa}3%c29`Mnoyuz4uY=a$ zyv;Zav~`dd1VaoeWIpQ{^h;E16@$)^YRVYIF-63n&#gx6&F`^?wHUO#=NLq>EM5$H zljs&P=#Roxw&SB0F({i&&|=U@Ru*l1H+~G7jK^t=&evkliA;#?OasXtV+<1KWZY|i zXBmV3Y!!osuwME)i0|LUUk9y;7lX>JV$emxBep*7MGV>{zRjw4>!APQi8@0J+T3m* zgBH>Nw~ImAonEWEqEAst{jO-=*G#kN`9I5e#rrdhc(sC~k`}LA`~V@h{JBhtidPff zjvucaTt2poO@%P4cy+{KteNhXfxsNE9utGm9ItMCOAHyiHPaZLmNeJtYo@^<7~<9U zc%0d8-*y!$wu)CLN;PG?D$@6DyRAm|E9hZZm1^-Sx952E9*y5U_WQQyiEa_Ee8N?> zW2qPMYC4;s#j8Xsi@tp`e!QYLIxOSWUziZvnLb5eFvTlzhRwZ}Hczqpw%>AYR9{}i zdg<}%YwGav<5eYvB)fgvl|+o*x5-tct&e*VuhyPQ{^{ku?FJZOj90tuI5(;<@4;_Yp)YIuw$VNB+vsUM+Za?q z#ON55E<9rE<6gv|PI{}lw=w9Uqf9aAuGj2iP$`YoA3p}20u8KV&_Ag{i*?W+DPNC4 zsU$$eplg{D)ox>9Q@j||K8VW4cAH!Xvx-4<|GKYdN6*Q@ZH_^^#K1Dgpt833G3fgv zh1oGNXfFtc81!%EvyMS4P_b1EN|$QN7{oC}c=$WfKh3Ic{}+2$TL<0Na}4T7HOGlT zAE6$r81$rYmF@WGMGPun6SNpK-pZo=uL|eeonNm{GCN<}w>2;!wln>V>@mh5uO5RQ zK_G~YLCvuNJT0se)`h(iA6=wR8E5)LDob57)!^okck{TeM7p}y1Vhq z5~!0iSryz$p?7`TQ6C&3naCO*ydmX$&#%onocx zEBL)E4iC{J78x7`Lg zw)5V4B1X@9mBJ&oKJLZ5N8gT#Q5Ze%srZR!^$jtXA|-x%ASOpX_aUCGWgce?&;OV6 z@lWUl`6qVobaIFMGCpuCA9w zo4@)*Z^wB`tQ={1s!sXoEPtNf)fK(n&zC)0z8QQ`5var0R z*S+0iltbHRZ0qFrEBNNLb)El9J)4AzSloFQx$+TdS7>VBYNaDf!0yztJm z^jPxeH7h=Mc#jd%0-?3ou=1}>LNW*h>>Xr=Pg~+>yMxk<3w* z;CKCAySV`hDdpIV?sZIs

TU~nM-*?J@9)Yi=}f1SP%$Zz{yzWYSey^+ZsI~RN0t*$ zkh6uJ2F`1^o6PmB+)jPS@a+OA+CD<;N((Oo7rn>mON7PtZx*W9MA1}~{M&4+lF{E^ zV2V9MNpT~qSweP2mJ+D&q>uc;O ze7ZNWXCRvqFZNu`ElY0|#Em`G9qg?`i#_M#cWk0!&)XEk5N)hu&oDf+eMqq<2hlAi z_MCwqLDyr?V5EA8J-^#$6MJ@U;j;dy*wat={;*=tsbp%8vF9x2>SOGgf%OnV#q46wovg!88+-2i6dLq3_JlF6(Xj^d&$D$5pt(bSnTv7V^Az@CL?@q%qNDXSMbx#66@!!YTv!mtkW6wOH=Ap%&leo~26?>MZ zQ`hUuy643iRwd)co>qERJ|_0ujQzaLp6gcGz4X{~b!>Hi+~z$-r7g4_I@G9i-k(s&yc^4=xxh9mt*1xc4<#zi!LMt@tcb4k8>7;>Nc9kv zKEQ6oGAa!g?u(8}VRX{NjY{wF)BUtLix-tXX09Hh(lndhSQ>uh3u+$Lis)RS=AlKU z1TOSrMWr_{psv@KsC4G^cqR2aadG3+?fhM>(fhOA8*SrMhge1%&V~XqC(asa>ieW> zOg!PQ+p-E!PS(m8pnm+*qE~6mo8r?UoEH7%(cZ+T8|VduxT~f|x%GRDPv5@B{yVf) z)1{A~kU2iREe}5uaYhxuU*f+lW*T@#!QOXBnS%U{Qv$(eY`i z82E>^V`~tv{`C-_#5bDv5TEQ$iyGnn!;MdS`4x{t+_62$h58ns)J(76wU0do8Z(7D zV_zcHug?EjZc-b!|Cg&%VWD>^g3!1-Xt=_C*%83I1dccs~IfI7nlxtwR8gg=9W1c4I-OuS4-3BM=K5` z8jU~=F{`Bl94+h7XeLrUM59yNZK6@TSnfqfqkka=9`0&sw)lOH9-`5F=IUcKO2qGX z9d0yQ&%Yslh|#Ew3-v7;#m1gT&!(=|m)H}TY*o@&14jBP-Ub;~Bse6;Q=dNd4e^0c zH57=tFNyQz!~bgkviiGp1NJ$L9i+0X&7So zMR!DEO-34T-YoC!JxlM8#_ThP{=qgrUL@}!>GAPIbyrEhp%Wb+yTwDjHuv@xu?|1& zYV971Iem?f1DbmiA0I!4Tp2Guem9BwP>=EP<=2_*&{k`+9-!VpwQKkG9z-azkB|PN z4>3MQP(w_7Oxt9Pk10s?5FbC?WfLEBF(;#JbbNgBM~ILABvX4lU;j6A^)Wtvc>m$Y z$FV}q8hz8-i+g)t3?|!ttoZ1gfJW$3e0={bo02jL$(5lNlTx&}CZD#r1%~Ln8lOe{ z3xp;?%^2PuYZ!Y7HME`Cml|F@s`oaO_Nj(thfu@dKGksYA=I$(jJ|kj$DrPO$&8*(D5wz$DXs5^#Z)(thXveam4Mbod z^au;#c_(P`O}!gv?xmM&^!IK4NhRd_Hh&jWGre!)&<+FH-8z|oAXWHd>q{(%A41dH><`gZ(a=!-J9Pd z_2YQ65;gSb&3-Z7tjBkZ9b(^n4J%c#Dnb8@{T69QtT(@*60&ce6xW*(ER%Ha4tH%}d>ym>S@bp9ui`fdzJo*!fK{BKWXn~a{nfIOcwMtR;14&C$rLF&ip z$Je5U9=-X`fzdP8xt|`gH-E=MY-g-jV!inym5@;(9M_xwFnM#9=pjaLen{RtcC_;5 zH?Ugw=DpzmalDy~8tlAj?)8|$uOaiMxx13@!aIU~dT;A)KTcZ)go;I*;0U43li>Fx zw0X7#`_ZHy1VKg*`%es1!kUBMNGRh;o1Z}Yj&TsU28 zQ^Wp9-Hqo3*PA2Rw_VAb`G?ZPj{?%FDgDaytmqY@FKcH;Lt$Hn?~|=KMstLoFGOLS ziQ>H}ygqw2q5i{EwYa_BF(Tdf?^*N;!Y3Zz`=Q^1Kf~8GEC1ir=Wad)rNuHa{o3^F zth$t%1GM#<*+Tz-URd~*Q(E}6uu%LAAWQCzjc*miv2kUrjei5bZetU5io>!otv5Cv zD{YiNxWzx_)@uvD$&X{9MJv7qe%->&)PWAm!Uy}SR*ZRfoc9KJjexuA86!{=g#q!> zUkE#yBuP3Jq>d3{t0AB8zYbaYFi#O$8s6>eP20b>D2``l$F}`e@avvgM~!k=o_QC~ z!SpzSe||E%1sfpIzwz!PURLdO>;E?|j*S-m`yKG>Hnzgchi79(Z)}`+(qY;7^Fy@p zn_Q!fyUD@Eb`(*GR-3IG#b=OJ@QU7hnq$`nJVMZ8+nzuCu}3A;L~1_^+sk{Dd4`?LhwNky?@?wa-4U`{7hYi}b0-M#ZGX&8=J&&F zZ1?Iic?@NV&j4A^|Ao9pHKH-q;Egq!W9SB$?={c(Z64pw{hs90{QHxSb$9PiPMJgh z4cLJ5y8X$&*oNz)*YovtxIUJ?$%THp+1(C;yIokMeXEVHYPT<|4bSyWbML+-2j^!E zb9RHjU3?ABJUG(l?rfOTNt9~^gA}hOE77`X~Bc*tTy3@U?EA`(T6npr;ADfkaO~)RfZT-fKuY z&VOOWIGw}yf~Q{=)G@HgdAJ#xlJ|O&q&Vy)U1=rBsG`&NHrBR2xcQ3stSL zyg{@9?9|+rrn}8I=iLVPy9Ue9B=A~v{RR$M{~auIFMcx>9`m^mbj)mUA27<9=014q z8MLMsUQ^l`c%-BmkVIcQRO>#F02$NV!Q^$=*Ht|ktA-MW#*~GzjD%_GCa!up6P>4l z3_;%sHl*PH5TBu^W}?+=`$gD#A?W(jaV(^-SOA>5-xDdTL)x@SNXKvCq?R&FCagL&@lrjD~{IsTsI(W;A$5kIQJd zd2||j_Y|R>7`rsaz&#)vdU$HPBiL(=*zV5shE(4e@pW#92JF2ipxsR8dK@WPRm)CHlaN42FHzM6(t3f zb>kvO#Ue*lQCZPQhkM?<%jY>KO)RQ(&U2^FoHh4S=OyzlpX0n_R)*UtsW()ff3`h! zQsp^|?WqMt*T*Y+{S5_HW!V~sQm*psiOyMboflu8k>S30fqSO&Vo%oG+0M%^xn#b3 z!F;FVsO>7E2KLevq~wCL^<=zDk`eVy@dtNvI_81g(ZdFLVQ0` z;j+RK<-Jnt=2=j@w9r{tl2=|?STNP;a4xM>H3+;aecoL3q^Zt}%c@EWoTX5?th}() zId{eaWGyW(t12yUj;X{fWXqplQdU`LDsYA~ucV?duiz$Up4SO8y(1m*>d7ds^r|{6 z_;mTicm{NImQV@ObEIS9gh><5o^ZCKpm1?Xp0{vTX|Z>bv!c*jRZ$9$&Aohq^YYnH zU6U*MVp#HF@l3dTLVkHU#-!Id@GS5L|AI*+g{4cpMN^$)N=VFw_&8xp*2N35<{_T2`soYO(GVA2 z=x{QfE-gPsyEF4DDhtW*apPq}$#&u~Mn0gvZ)zY!uDO?AHP^Wy{Zi+cYM7Zeso07C zs-0ub#zj6Go-u3w0^KK+8swNTVFKA^^;uL_R^n8BZR%9L)yIuz_GM+o1qM0|L5ePt zs!Mbona+v(#<>^=j~B=Z{8uCC_vDFuSH8gV+B{~-mUP88Md{?2IEgOR*k@+Le_bm@ z`9-q4AdPkr)~ue8o^WEnX_N85aUG_)(Z@z2*|?sFJ#I7bmq0(T9vH%FIo|?PhB+K1 z*ym3H?g8ckA0COvZh)mY!)peP!ZGSj;3{AUcni*xQ}B}4PGB0)g@f>H;38l(upYO2 znt+>e+pHCM5ZDep7dIulfw>bSkyN~^xahn{#05MVkAfBfho6t*THq=m{bo<%1(8S_ z@UaU~4tR|#5^>@c(Z%VQ)`8_SB9U_7vWrn4aMeuM2i)(5p1?aVg`Rj3_8JfD13n1M z2Byt|p1^y6O+d$G&=YtYFbFKb=}!_~fZh!p2i!O(63GN!HW&2)cL7^~@8U}X+JHyR zLpk{MBq03`z!^X%@DiX4m;&EdOu~yIn}Fkhp8!3;vDd(_!0UkZz&n8(fX%?2z-NIW z-~nI~-p@JtT9gO6fF9sHU=gqYSPxtU+yG3x4t7%-*bO`gbfP~!m4kA?2{@T32R;aF z0uILsjURXquo3>+1ndI73QTe0s2P|BybLF7*}wu|HSiW-6EFz$1HT0ZfkSad=@^N2 z2aW?a0_oc)HUhCua}35QZ6k0jum$J>wgDdmb_1USrjBwr-T+PkPQl4_E^r>O23P`Y z2EGd12@C;4z{JJy(<#som05$=46hU8L5J=w`(_M^mqaBVR*F#_6 zVqhlli5pN3xD(g}{ICS&fCqs=;BloWHwOI`I1YFj&;z^=SPpy@*a+-j20MY%fo;HS zU>C3gm@*dn0n>ml12cg^U^(zxU?Xs7Im!di1-1c8fL*{ za&`<}vTFp62DSjF1KWVvz%Jl&Abs0g3os411DFX60?UEl0vmzDD^MOd57-7Q0(Jpc z0aFl`*8$UjTY#Cs1Hf|Nph}bnjs~^>r+X1+fQy0Mz&n7cr@_y_DZqDu*}(n4YT)21 z_#HSF*a~z3+kp##-9Rre^>mCI;1u8{U^ehoU^OrVYy!?(hVsAyU_0;@U^lP{NWVvw zcq7UKhXS*K6M)q~53mXN6tESz9oP=s1MCKN15?jLoUBH9pcj}8yc1Xr+yHC>4!H^C zfun)#!0EtlU^XxnGvN!sDZt&pY~W|WYGBfGlm}J-TY;;A?Z5|s-N060>RE{Yze0K7 zWMDRMA+Q?g1vUY12etw?0o#FZ0K0+5+>G*At<42a0eXSiz&nA}!1cf;;0|Cb@CRT! zaQX_A2NnQRC&Hh=DZsVBY~W^KHLw%d1U%ywln2fOwgXFm-N04A)Jf<+z$w5jz--`Y zw_=NKo_fKz~{-3h&ccK~aE_W+xL8-RY`v%ny5 z`mYhMFTnf?90%M8^Z=g&76D%c)&u7?B3=PE0o#CEfL*{gV9JH)cfd5@;{Qc|1?~h^ z19t(NfO~Jumr90jZaUI%OjmH_?0dw@aUL7-!X!}0Sc zQ64w~=mHi2bAc7W8X&z9-wb>J=m%~A27&EB$HnNkKqqi;3(5n>0&{^bU=45~uo?IS z&<|_{27$YQj+wA~6Uqa-fG%L-Ur`=76j%cs3v32X0s4WL0fWG6fDSkMDbNY50lI*9 z0ds-tfi=L*z-Hi1pda`)FbM1fIxa!G0iD2<%_t8X1Knh=)KY zuo372?gHilkNF$Q1IGcIftLXNz;a*^cstNB+u?Wx=maJ`hw{Ktz+9jUSOdHs*bH0^ z^aFPQgTTb+Q9c9X4Cn+-1-gI*z+B)hz#5<**bF=f^aGFEg7U!0K*t>T73c(Z0bRi1 zTTvc30aycc0h@uN{U{HtegWly%|ORotRsL<;M+hKu;fLQ2Q~p~fE$6$z~_K|VDomA z2Oijg@|UB&0LlX=0A0WYVEO-Uwfh&N1q634#=YWnY5Wj#<;8XuZdEgOkC=Z+ftO2@!&A=j{AGjPC1P*=; z<>z7l0(1f|1G<3M0CRz*z#8DZT__KvXCM8*R$veq1Ulwp`~#i9VgE*X;A6mCU^}n| zxDVJ2JP7mygKwZbaPnIyzX0_CoxoC{3rOz~;%>TzXmn~ zQ{P8<;3!}am@Rx3Csq%fXjioz}3JS;9bCGU<=R>d=?l4z6*3@BW?qozym-R za7Ym4fy03{!0Etdpa_i+LM36_^QJ1S|*M32X#516zO#KgPTbtOs@jTY#z8 z!jHfyz|Vl$zzv^3Z{TiVGcfT#&>MIfFbKR7=(rB!0q6vd3Sqqg%mfwztAX{v^}r3l z&A^?&@-WsLzz2XSIj|d;1{}5zdIK*3mIJeajldxtSZ@Gbz;<8}up3wbOwENqfm49D z0keUPz-r)qz$V~&U@PzmU^}oC*bRIcn3@NBfm48^I#C{YFR%vq7_b@G2J{1u_!M>n zR{)b1p&sBk;3l947y=dnb3TLKzzSds@E%|rF!6KL3%m*F%*Xl#=mNF?bAg`#Yk=2w z!C$~~;7;ILUI?V_cqK3sSOhEw-T`a`z5r|iPTdcCfp-GCfgb`>3$f4s z67~Xb2WA8J0IPwM4!~c)+kmaW`+)7hCxG3+7l5gYF%E!Jfct>iz#o9sz@cBEJg@}V z3j7q<4jlar$^#?7)Fl}2-OwB80u}-3GhBcpVR>f8JV!!x%D{g0C%7E_P8>WisWAaE zK&QX$2Y-kheKf|#-wS$o z9D0BFYkwU2XwW<3&}V}FNgO);ZbUE+eKqKB+t5ct_fF7vgZ>Dx|7t@!uBh#Q2e+bV z>!FF5Yo<%SR(rk+z_#A0AKqI$v4lMkNQao z_!iELL?+|fs-KXYQqa$}p+5%tYS1Uz&|d-l9?&ncp?8A58T9jP=!4%e!K8?l-A?ltiJ!pyfFe5=5>ocJC$@a3BM zI>EOae4B}Hn}ILS%r|rZ=I~1*k(-I{1AD#;z_%HEUgG=8z;~@#UIF+LFO~WoS*iE` zDE;mL-vY&Vl7TNu-X`!h^^Zh;N%c;&=X)1?A1c0dd%pfh;4E!`ly`+SAC0@ckhctc zJ2Bp^#vREyd7w3YG>Vjfz9T6T`3vctXJ1bS_~v0Az)~Zo9+I;O^t(VmNOG#|<*WtY z;z5xJwu+W=4uakYdNs+p*Iv%M;0uD!ZoH734?!P;xM1a%;RCTo861h6X+ysN^skSJ zMBEm7lHcjgkKxJoo|hU#6LFGWebV-}l7#rGamr&PRF=1>fr7kw_t~HNEH>AEJ|-mqEYP=$ArW z?{%P`HbTw^M|t&ebCq5X^@r`?d(0V$JPA4dv+Vgg!8iGoNaRSGuYPaOH}pvC(MLxj zgNW}nd%g?6*A2cSh_7Fjt$qdIdt*!_LJzI=KgXW$4)8rYHWHyn1N$$r=i3Cn#Bq_x zI^z4YJ>R?FTQ)ut`6qnT|8oOhhI!rg9QcNx7KvN}KC5;jIWs`N(}sQ!^cK+V+IjdO z^l#9MEy`2-tp?q7dL&YZ>;4JLbU*$=*OT}j1K$JSdyn{zHSk@h^HIOL1AGh4fFE%k zZ4b#g0Q!2+-yr{;VUS~pvm|FX_~uQBM1F4}hv+0{7wGji^r1&#J&ARX)jY`kAM{~o zp+6e?|COTu6MX^b{U>4_0X;Q47U*;@=+8mE-8x|{=$mcm;4%AKSYh= zcfq&MMh@voa`xKLsh)ztSnsHMvhC}c3BFXU|Lp7`IYVsdRL?7*4+fp>DX_2SG4Net zBZurEIW8MI)iW9UpsA{!a{GFQg3oIshua_YQX4wevkvqkRnN`#_1p};2W{j~JtSwH z4V~)gj}6m3s-AlLdiFw2+y80reZZ`$s{Zja!(1~WLIwXI@*<5&gd+nZ4oWt_i~=Ge zGZ89r9p(-&I{%!xAQGYCXlRIrsD%8CctV>~qfm-=639Jnwm6&b^<{I%}`J_u6a!Is2Sz(L?Ewp64w*rBe^SL(^Gd zPiG?JKD6kebV$!Z3s33n1ixR?Sz}LU1LTH`4fi+F)9+JQ^90|A;>6<~J%KoJ70=otk5G}1G~uBRMweaG4LJPy7$c%!Gn zu4gIajvF7Yhx~{1I2NADr#B`(hmg({R6a92=>+290q7YBJ+^r$=@|juHV-WUKN0+e zNXL!ulQZ$X3j8dKos^F>_-iBh72vN1KhUe6KI5S4H-MiG-e%uU@GanN>oEtw&xuIC zHzv3?;9ZACZ0)_{jPPPwCt2TLGTR-)7$i@be?=+X=og!oCCGBkR96r*E^5_A65P+w7|X zzaYZCH2CHS`&NLDtba-0X5UWmRQ@*m4uD@6VP9`JCbb`1TwDmA>fgk(>pXEL5MQT5 zZpH+xc~ip;Sr;Wev%sHa;a5{S;BEQb489Tkxt8m9fnNw7r_l5dgJ=OCmQRW^{Z8ie zZTu+kWWSA{4*uE*ej)g)Bly+et0MT#;3t7U+mgRsIj%n}*W2vxcM9%(L4Vl%hstLZ z_~qacPD0CfI{3B-`xk;=6v3|sKR+V<&EU60q`wRNh6w$K!LN_t`<;q=S`q1w0>3{Z z{psL4BlIr>zdM3o4gQsg^f!Yac$vNYcY*H>-d4Yd!S{^d`<;fp1>mjq4}MBS`qROe zN9bP&{^AIJHTcqq^f!ZF9FhJm@aYKshru^S@cmG5b0X3o1^$VM^rwSwkI=sm{KFCa zYVa!~(%%gJPZ8xR5w)$BOz8t*G{>^f|&Hi2BOK`o-{=?u$fFEJ8uiqIM=YzM|KMH(3c$@vx!MA|7 z*}qV(x7oiM{LF~!H-n!JJ}iGUA1cHG)(r61<8#4no^gujz6pxJDS+Hs$l3BqdbWVK z<+B|8Ht@E5rsR5CKHI=QiR;7iLH4zSe+swsB4e_(9-p_IJwl_n<7@aj0j#vS0wl zF%jt(f`0-$PMPcJGY+bs@&U}-#rv>&w9}29M!XsQwiAh2Zb@@}Bjg zHt_o*_;&EquCQO<0e)))-wD2Cviyv@!b z;MZB~ApH};ueR`H=LYc0z#BXN({ASq$nAri%}&xo&n(*P+zI|<@V4?i0RDIjPj*g6 zM{`K+{E^+xQIMMoJvKW@&&mip7lL1Gv4hHUHTblJCp!zy!TJMuQ=UJ!+t~>{TOen% zlk^l++RL*L{M!~g$j)-`dn`QJ`8fC&)z07A?OY1EBG_TGlk_x4*!cqZtHImq{Vnhl zEj-y-g%12;@TNRpv)fq$xmA#}*-3hKfw%c*8vIs^9aNqxz&~l>$7zH7I0 z7vzqsvfD{|#(}rl*$)%DVc>1$ISPECg(o}P!JiD?*x7A<<~~dyF110f1#*?R#vT92 zJsm0!((@>Io1Got?*)(SWUi;rIOzIL@GHU7XIDRc#z9!YV3axdj~C#Jj=#i4;tRnq znr64J9Q+gDZT6+WuLf^RzYY9K@V4~Z!7rX}Prn2FM)2KXt7|`f#zARzf~RMwZRr<$ z7WRR+rC$jCj%)4dmxF%_ye<6{_;&EN@nswMAAq;n*AD)1@HYE8z(0_(+t&&HdGI#- z3Sig<@V4{|!T$ifE&X!vtLE6#Pl4YK-j;qF_$R^J(r*X90lY2!4)71x+xLZbg8u<{ zTlxi9Kwky^B61k@{|S6gm24^mzY)A`{!tFT9sFSL_4FABU7rHK9{elz;{IOo#3C2;0w-!|3&bH;GY0*i_hiYUk7iipA>k? zAC-k$|MVFLVQt`F0B`f}cJTBpzpWqY0RLD7-wA$I1Ya-|d#@t+Lhy?s_;T>g5qt{# z%m}^>d{qSB4*rq|z5{$|1m6jMa0FjajCzRR3&Hn{;LE`~5qt{#{w908! z9Km;h-xk4lf`2N4FBpdYC4w&m|8N9f4*uQaW?Zw7C(zXSX$ z5&Ap9zX;xDe?bZ26L_2bh2UR}&|eOICwN==r@+4l-e!Lr_!H57Y~|k$z6W@l{T<-D zgSXk=37+1WV$)x6KDTe1{e|F%;(D9?<=`hq=ud&C_+_)d4SYFxoBi$JCq?M*06z}A z&HhgC*MYa$Uw|7RcSPtf1b+*7oBieBseiE9p8~%mLVp{0dUuV@{&w)~;BEGIfPXeZ ze<%2-z}xIEzzw)3!Q1RF1ivLhe>wQg;BEG&!0!fcv%d}ep$Pr$;17Ve+1~+vKX{w{ zo!}2g=r6#+=X>C7_7{Rb^#;5B<={)e+uBzOd=Yq?{cYfffVbJ-4t@mqT;B=)ZSc18DL})#cD}uQ3c=Tdx20bWenteJ0zVnNt$f@2lyAk+sd~SeEDK~`4xN~?FYQI{=tul;LE|6fVY)j z3j9Ivw(@HOKje0M`LvUM@HYE8z@Hs)eJ6N&S6E+aup#|tK^gWBfVZvh6oMZNp4PO( zt}h2q`q9mV@+t7+z<0OsZQzH2x7A-e_;&DC{|8U+ISxV|0yGVr$Y>i|C=d`|~QNd0z#p9Q|Zg)bO`HOdJ6 zh2STFxA{jo_{kC1r@&tb-ezAL_(9-p_O*jQJ3@a4_+H=#TJqNk{=|su3&vu6{8hVs zh2Zyrx7k+?elK`i{iMLZ2;OF28~B|O*SCXz8oaIiI>0{;-ezAX_;nHb3(Dc2;BEF5 zf`1_5`f~8}?m(M;De#TpZT7W+uaD5*4t^?ln|&SNr$t=f34RQCn|%cpnBRl9*;fd@ zC_;ZZ_*22#>`Q^~8*zOb_yX`Y``W?NI~r~Fb%1{dyv_eQ!M_ULW?#W2xL+G_eIfX* z;BEGmgWmw&W?u^Y6A}8`z^?{xv#%Ze!{Dv)AN)G-Vez#PF=5E1tbY?e7xebrhxI%+ z*AH9|$Wc8PS>g!k83o=pj+qF)9K6lWdhnCM+w9y4p8V9t4@MYjlK33TC z@dD&tgq+Pz(z6G=&CVVZP_N)^kG-Oe=R=HF$vll0sH-e%_p z@XNqgS^Q=v_$}aV`8WW6J9t|@reB8jMDQjbJMH-x1-U6-v*&~KTnpZokA>jpfbVX} z$7<1U<2QpJ6>lcE55`0)aP&{4@ zejRv<;bG(2&EVIA$MSv_PuCP)&VFzsJ{KJD)Z;a`9k(=bcfqo5ynaytxf4(hHakd9 z0eG7o<=~G8k7f2yJ01t$AH1={xhb;`C}77@$TdXRL3+raY<9c=J_R1PdqV9fnS^$y zcJ#2@(HnBlMc6@lp0e0Mwyg&LH2CZBx!_b!I-chvNv;EO^zLUB1sU2l@J2pVB z``sUX)Ei|O)-FiThY@xj0RK*eoxLX`&PUj}5Im)C>TROk&gqc58gjNcO?s9^@T$f zr+1s%^zQc1m~?268QXs z6B8Rxa(;PY;twY}ub9u@KPj=XxAVqHiH}Zl4w}yo^?9TlME`v1%|;>g4IQ08l8F!U zo$AEye5W<>vwY|Fyu{jk=fS+hZTZf3@)DhS&QJ3azsPgG(G9Xkc+Gj|B+8tTiB_jR z@o1j&&Ai0#@|+j*5_jc0x8)}`-cNWg2i3jtXsfjvgCVjXw56}v3k{bI!T={zbkn*LS0%Br(M)hkX4= zW77cATavgEd3K!ZPj#HH=Ouoa=R86t|0?g(Y&WNUl`|e-EB+%d=L~-nZu@Mv#BaMf zFHjBrwc8Kih|eSvFD9H{B>=pYc$q~{q4yo0pIDs-$4WV0q7TdR&NW(kpA2f~-Fdt7 zoE?(R}_Ny5e^K6@Sqy z@ZsLP1pYpnm)Ml&JYhcnj;^@Xf5l(*3Vc8r;qT*liD&YhC(Y+S&=p^mE2KnrhB`1_5#>;5a> zxj#RF->d#segdDjd6~W5T?9(oPqO5G@Z&}=KCq<;QOe=Rn8Q6 z%RPCCja1g3F;u@Ze+qB=dVb>Vd}l*`;<fAP7`nfD?6 zt$B(6$#Y&N^WT>|^f~i>5Zm$+f5>xQA?%+n@c@Wl<|X#zIi>~=3DKi(qQp5Hl9Sln zGtXQCLAd9=`4kf0$aDT=KHo`&w@!+_&zT4=&hvSRKjt~FlA;gXWGuw-CntuQ-~q?9 zUfqKt)TqQ*v{J5-&){5|sCB-`?X}0h^Skp=w=?oi>I(}dCa&wYIxq39JZA%C6FL71 zby)wu=Re9jzC3Z6Q_F>I`;4&es}!4DD9$5=|NZ;FCGfu`@V_PS?<;|i0KZt{ZT2nfdfd`Tkh`X!A*@Q7iMy%=dqM$gguP zE#U76x#pPPoxdNa--S18g~0ZSqE85q5wtn_$XQQV!ZXL-o2$)P=X}#7A)P0FOyo|H z^R`}P=9A)cxJUN7gT<-A?ayXE}0oIjLv&r>CRITy+KVmVKe^9(sR%6XBTm&y5IIj@)V({kP} z=iPFCTh1TKx#ww;zMPBXe6gG-$$5sH8|A!6&dcQdu$8c%}x=1!@0I- z^qBGIrmJVmx7m$zi)PNPt52OA-|+mC00Ydo%pZ-XiWK96_xf~x znW55heWCf5`4hZ;94HEnn!d*Al>%VeXbz3b8V^-ZIoS6Q!l(viZ6G9*9+`m zDc+%&uGi0(xIbSLkP9h~WQwM*@pmdPinZ?b-OKO|_cf&B(0;>!_!BJu8NeuJ>-8F^ zXMT#WxP?!y{VJztx~D;XfPUA0U~k}hvY+f!`$es@03Rr;dcF2Lb9%AFwS02Z*XuR^ zZQ#AvYd^M4uGfB#ijn%};PuOZQJHA{Xg^NBUrmRm!{0b9{Y+(|Kdy04)hC%{qC+nn4#!SpwR@m~MR8KaHtD`)Wa z(<|Le%?GVNMW4k7@AdSvPIQ#qz}FWBE(oUoqFk@lwBsw)=K399;p>C-A5iD~E^z%` zxqh!)AFQw7^?L%>AC&74%Jo6{;P*e{da5F|-&w@=JB!%-C=w;Hpl~CxF+qy`mqe{VFJA;Hybn+n)FO zUSDI$((#P`2Tm8_zm}W&C5^|!(jSLqRXX-OVNUL!VEQf*@}V27E6p#Lt55xYZ_c(vP2n zxEH3Ux1({*FW<+}c;&}Wb~Fz8am*GqzIcdk=p{97cwqSDX^zGNKi=2TcJ9YdclJp8 z_2a=&B)8dor>E1SZ<$vVB}RSp-#_w!_(B@;oa}NKZ1C)IC^dL?IaC0rbcY7gy~fC& z?mT&0H9oO@biU4fKHYg%aBaWyfs>v!0X;VR+l-#x&K~I>@YNh&$KO2o!_Yvzf79UE z_J0>RrQ4kE_miIi4=cCrM$hTawm`oANA&#WoHBfJ9R7D{A~Zh zJ*-f?CxUujes+5~1^7Ue|JvDQCP%lJzm8KZ`1U%+(}GU|KETOtFIS2Daf?{~ERmlp z_+8I3ev#nxTY!}A)=iAd@Y3mt&con$Gj8@4;F_xhAM`iI2LYqwcHk%SN8jIek$-+k znZfxl?z9U2&I(3kTH;)Uff%K`|I3W4pUe?_)|-s0J--%w?bD2_4Rmvl^i-|#>!;i2 zgdg0?_&|q`7X)8Ck8$;@eS$A|f$`-cKLdj+O-mqinhTutPx}YUs|@|d8sW>ue#OUP z0%YvGo#oY@wBU{N86RP^bDiR+90ClbeG8Q zzJv9gCFFC0PutD-Ai)m_zTg?gRp)pNKq%d3f5y0$=S<)#BPz^kp2%*;yp^Xn9^L_>3j2 z|9Y{fM(`FXpHji^6ny;xme=;RQSdzhKl!KNBVJ>9P4^T`AjzH=zRI}z$yC8x?qOWh zy;bmnHyKBDnB&)i_g-9PzPtLdPH-ah@5tj4$TzIxoCBQF-S8Wh*D}0PsZkLA_QQ!(M7bRWBo@j8*G-{Mi70-4kEBH!bF zmRFhc(2XZz8{6>Q~bpbP}g~#`~-XV&=F<@Pd08zgzHqg7=kl)y|80v!2Cw zvb_4qRf3-(?M2(sGlCBd#JzU}Z@ixMsGV2Bv8jC8mol#9yac$~EGC-MeIma?%F{ff z1Ljvoz9)Wnk@YmmMSm6f<$-ue>qC_8z}YN+v&fGWe8kTgXRmggZv&_DA5qD;`qeWc zKW8rE^cyO491whv#0SmqfKxc#CDJam+-?U>`twJZnd^UQ{^B_yk$)oKKidW0^9zu3Xnd`a}&A@!(!UV;WrcCNj@%t%&?{QZJY zyN~fR1*hK#Ao&T)7+3%K_!;5$6apvt^8GBYHm?wT{}#s8A3hX(k>D3Oe0%{7jr8n$ zn&nl`_XIy2z(4UHEPwGPmd96foF{ns4934L?d4Lzr?oMz?Q0|O6P@gN_hylwEdAy{ zR`0wg_{Qg056m-1>45O^nPR~kfKz@ioL}b9QDXi&&V2(If8ez;gNzh>o8ScxFs^>` z2~?bxm57?tP~fD$>;;xrnFlTM-!wS-k*itW{1zuPZ4lhKh;jODT{?D({^>85neVE9 zAPS1oeQyWj%MFWt*T5dnSCE z?RoeS#d}*hriKaga{=@;6 zFB1G56cpua-ZIA3&KAM<-|fer5xn~f#@j^Cxu0P@i>EWLLodE6}cIvKAr zi|3FAvp?MZ5hEAmIp#Q5@cf~SpOw#e1#q%|X+Zxf!6$vl^1WHy`7>~e=eI~a$8gac z2St8{^cPw_LqE&<4@%rt`|lV0z+cMD_3Cdg0aqE;%zxjr;Jr}b)J}Uyes7hF&NR4J z1Ao2$f8exm0l!RIeve1zbS2)?a@anURdz^NXKu4MUN3;suu-**?|2!rOxAI|#AW-+e%`w8A5eyI2rz)Anq5|*!EHBPI@ z58UF{^G(4YsAl{-5`TUydd5s)e3`??c9Gw;o^fp#{Yvo6Cj95w{Lx0RK;%CQoXUSm z6U(ce_Y2;5H{)oA=6D16iSpTd`n$-#_fDCCRpu&m(4>EVBjc)no8XVW$GG~>@o2Cl zUmoc1E)l%sLBIa*0@t)m!t!T}$RCn=NB3ur?iaBB$^R@f-(iM13I(saxy*c5I~xR_ z^<_W4M)34)e*AsG_bl?`gVCTUUlXO>X?d;`{Mx-N-_zmaecxscNx7%2a{f%gho ze_kc>tLL!(jmAp6ml-&vJFtlH!-DS=`Ee^5*E+or69g)^cmB?}#<$tPNzb117(Y|= z+#>RaHZfi)_@9lueDR##5&2jD%JQne-zZME;1w>@X8^4}z_)6v9BK;GnG0*Yl|0(;FGr z`aOOu%a2;l_}va4Ul4rH?-*A?|eSlNFkCb?>G7F77<|$XQ9(*;&3Xxy>7UP=kvw}ahn{mzW=PqUaC$=%J z`X3T}jjdBYBI{9q{@4VT-1X8`P?Y@LGk~Atj2jv z@U`!-o zKQ@{5AC&UkBzUvn?QgQY;=ck;`Ug&8yh-f;i^zAslku}e&pB7J{FZYWPYPZEoXUTn z#67jYS@52cZcmYaMeq>^SVU9I|Pkw`OZFf5a z?=SwNb{-adi^L6$KO?5H{?&hAJ+HBP=ZAvd(!%(ulCReU?|nPteMG+37f}xReeu3j zE(d{~Gk{Y$oc#}$S355ke8*D8)y`{xli#*XWBlXNzUGSj&<@5&JA8BszO|O|3k3f- zI$}z<=kFQUd@U4w#FLEA68Xmje@fafvySs;;3wqwao!2+=h-jv`(+%Zelq4NPIu9* ztU>eDDEM^}XSCeD1Dx`^NA9cMDfVm<`I1Ad=X}9`FZhrT{CNJ=obL1QFs^!12nmLDPVmkHii>QUR#b%L*#`cnOEg3tVr_4F1! zI|MJe$*;frbWV3~ARaag{&1juJuP_80N&$Etmnmlv3@i+bIcaJv59fD^IL*HzK?N@ zZ#`$Qp1T6}&je2OxTccjZ#UZUepQj**~YlW+g}RaKM)6cBk+>n_Lp=Aik?}5Unl-> zqu}2c{BHN3;M6V#4P*S=e8$&_{E3?w*LwUf!MFd8 zaV>`nW^=mRf6lm;XS3kfiv613wSpHdW_h*qzXacKiyuFA4(s1{y&u0+@K;}Be7VEN zFM+FV0-4h;k>B%dnfb1E_Nin2PqZ?w{rG1EU-U1=)emnKyy|_%hZ}A9y&b`yd6MyQ zf`95d*5ALDajmZ+!Pno;IRAB=TLhmMh+{7ZK5!08E^zpGL-45qf4ks%PB*=d<;`z_ z;gXGlzq*z2!K}t9s%QBLFEg%Xc$MHMcQCH?b%)>szRvjFqUX1Qk6OsM)_bCX^?xYk zaGuBy6ujU$mRJ2>6#T6uS6GjK|g( zJ#w+<^f%G-p$1tR&6A;pV}(&djs`;cAD#b-xpcW648GVaH_}oKWF?R!IulZ z_8{Zh@BdctDgVv5u2&S#Wj$+eVO;ZgtKd_`pS6BF1n(ENSt`U);v} zwHzu0-@U+(&l7yu1B`2Vb_zZq5Kl^xK`MtTX}`rLRlJW+@Ok2IYX8>+fA0|McWs`} zdZtKwRD81F3+`iit~I=qOYqI&ZyLwWyNUIz?DXrOEqLS2jB7dEC-^*xw--2ktQUOi zBES3}1z&YH+di9j@H*5g1;#F()xV`IE|Nu-F$6F%5??%S2VA%QOVzy`1ml@Y|FBW{# zT*kE=s(_RJMW11Oo9Le{@`L}yc$LG)j|IQ@UB=bl_6a_wk#W`E?>4sQ#Dk0%vKr?G z!Iz4kFzYx!7rf|gMzmfAqv23|JN^T|o~43s_&MX6?jwTVA@T6@4j)^AQ+`*Mu>6IB zza{eNrx@2bHve``ci|$&`-uF5f=?CySAY1s;E%t`@@oI3cW}Djl=X@sqNfr#BQHXp(<2sqljwQu5l&az<8fbgoB^Ke^|6s}^P(7?Zvsx`({FE?fmP;h!C$}6k5_$- z<)7NZxZ2qOT(32X>o>z^$8 zHQh0S-y(5U^|uN>a3Ska{M&*z2I}Pxs%H<&>-e+c>*0Q~7&z6}zy*H&KNfuJvwnQL zMbAEw|JOfRUhDDd<*a}0KE|~izN>f><64jZ0m*usb zuK^yWe~HLXkp805q=NTx8+qJ^s$xC=BY57!;d=T2r+BrpmF3mW!GaHXfN{0q9*dr} zBERf5zn)!!7s)t5+ug^%$>~mA!19{k3k4q~eye!B;IDqb^6FQc1W(=SPd9%J>+dK2 ztobSuyzOT!f04t-?Q2;6@kM0@Q2Cz=-ghR`G09Gr#tgDKfYe@d5w%$i=KmmZ{FsYANZfF z=jmCDpDFUA1+SO!gT|Q+z{A$rek$@kmarbJ-!}xGx}Wh)qW|*ta6g<4oc!>T-7K&9 z-7NS<@k7nm8IQ1h;Z~L(E&9J9`2V?vagD2M1>Yk5i|YRXIDK9chy(o|W&QU`xoJ7v zD){OrS^sI0?k2(e*E6nm=6{>@O!x-lnr@xoTYuxnHv(4~QEg7Y6!~$BS-wulp^vft z9uhy*&ie)L{w&L@&OZyjp!@jaUF+0FZiBWjGrL#e*~_17s#C6 zGI&qtxXW0+dmghNdpunJOyE=ww@Ce}{gVYRt6@F5u0Bif<@YjvH>-Cx3tljr@&1DU zR`9p?GTvSAZr|g5_%mf6{-*>#893RqdojzaJ!1vm^A_Wp_jQ7w_D?^4;(FFI`OA!J z`~AG&cZmFr4j;D&zU*%-ukCu5;0u4mxYkR}_gR0>KtJ+J!8;bRysn>o;s;XBfjH0# zoSsLRCgq^zbF0Wt7yo~a&2-)s{OXmgzfJI&KcxD_ex$yPfAW(|%mz;7Ssw87&4Txx z&hlE$ZyG(>@8S8o$oFq%`99)TpMHYV?RhTaKjLJa(Spx8kMa3}Uk#k>IrRm`wO?2& z_)zH=3Ps+jsjjb2&TeRGOtz-0ThdNVOS&~Zch;<;8Yh_?TXn^haZdN%Q(qyu($-I>^ zd38x~lJb?Vt4R`4S6yGX0N;??>c&(uRg3p#&aE-uht}0O$xA0*F=q6{WO976p}MXS z>aLzx40W^9b6RSvQ^{(G&Z|u}&#M?VG#kasGixS|sVc|2FU6RvCzUEvIu@nTQrp^E zF|VR{WHLE7Y{A3rSglsB3;)|+hUTsVQyW`^{q`> z3X+X0F1e(#qAFQ6dd$QMsy`}$WOYkR^-amz#*`o6%1@SGHEHza!WUWV)rcc6?U#!J%v_ zDn`^bwxTtVtziXGlB}3=S!D@%+a!1)-U6GfnLodHcw_C2nW98_WtC1Q8A_#mm|KgX z$z-H!Dk_@OS~o{o<0F!l$?I!xLJ5T!n5+6G7Z0PhnDN$tlc8h+B@3kDg5>4NmZm1j z!4Z~NFzHPB9ic+1g5sg6T54gf`w3A(mEC~kZ3hX?AJGM1tcOuK7t!ArSkNnVq~iiQ=P&xIJvTxe--&e3|Q zQ;gMo;{{NugG~IeRtB1Q?k;D9>2gMh+q(_O-|5HBg12`)T3yF3EEc2LG|x?&pb*+} za`jHx?b8x~GcI0-(e?Ps5y^=&htgmO7PuqaT6P$>12By-ImzDxmR3yq!sQqoUK%~@ zi5)u5pIJM*u2EezM}(lUN{$dg{YG6#h_KXp+&17D+2k%k)1p0B@JKP!#t}eTsocE?qF-h-m7|C$&{>LD<2c1D47F*DU|bg?b#H!R4moY% z*e#CW_$Qd}sQxaZ@G}9*R|^*Zh#g^I9cC!W`ns7l$(q)=N%NZq(#QLzB^ftBwbay8 z=g#%$w!4v)wJm1KSqo<{Q>UZvp+`^;?U_ZnlL5A%RctuIG9`!B!M)v9e;~=~e8Pv) z(L)PdgN6ckbgK`u^O}}g`h^EGz{}w7$m`e#hYK*MtgoGwHZeRTMQY1vr7q*|#A1ia zVbovH>~#_iA_G%cyZ*SHL`iGi0_g%O)3HWW+7lk3*VKC&;1Q~zab2l9pJ|wUnOP;M zOvfE0QB1MLPt*Cz0*9%;n1QVnlg%Wp!f2;vsrR@m1A)0jrYq-eCD#}s7)FC*zVK#u zeocLCwXBZVT`O+ynN=j2AYY?>9_m4+ezt}ZI~Mx}tZwQ1=U!0`=UQjR8@Xmlaod-t zPx1{Rv=xybO0P;2M9=z{z2Vn2&Z@6Y*H+NF92TK`GYK@WvBhDFGG_RV;;tTF#WOR1 zU@k7cwAQygN1EfcC>lKIyu)3?ya20xV{U?xSft}ojaw!DKvSVwemlPRWkQH)j* z!Fdh9oeS7~Fs{4%T`*NYIjdr;ruyT4^e8oMaJKhVrWqD1tK2T$r1d@H>CR+zb4-h|t4xY>jSlA8I|$(CB&8E?9=tPHm* z@oSUG;-cXkd|G7=8q(ne?+K4=p4&PHcT#Zo15tBm4&zV}BTe1VeS4TvoOGufQ91I2 zo8THA%{)DWr@E$Ab6clmJc0~GqmV3ETsv;eiP0&gYRzYjvXSpe&5hDAg*p{tu^zGna->x+#?S}XI`o^^Lw*xBS2GM;?4tk zVK(OkHEthCE!DH^Z7=n>1?BJT?ZdOU`g~Il%YuVj(&a-r3fi*~cRb|r9VnCenSGK# ztBzSYkG1lH#_R5&@XeXChm>*;+-*)eTaOAG9=~y?gZ9#iz5eGZo?|z#Fw-_#y!3Ww zmUbH~op?i+NN3^&T)W2}S(3%H+|65Bl5-pDZout+#CtP`_YLPWYsEg;zEm7l>k*wr ztaX9deh{8J-64?c{*LR(*84neova4Cdxy5f^bu#O78fUC_#_o|rTezCz z9}(oRDaS4`&n^248fsH@)s4d^*U|n+@2)`FNyXa}BfTSTm4*$+FFV3kYHlVpRL@Vk zH$tk$`^$$-&fP4~GigIW?|F;Gd# z-PoORx%MN~fA28-zI zTMVEO?d}FF_08nTOZ+o=x#LFDeBQPZm1IQG(amq$W?W0li#vM@?eLFMr!<$!bUk*{ zr;Ceg=2W*}7k+hJx^+Cta|*EGxNC_ACYo>;p|-kVd<||cVi<^h>HY#lSk1KEoVS1i z&DS~_ialP?Jrp#?=XtB!hRhwpNqE3SSM}7x0=Hu``(}fSQkkG4>k?*0Z(tSEvk*czczFO2-bI;P zeB-acoupJmr^TWm%FV zw0ZUq*)1{Q$UJKj&j{aAl3TR?dtmm3wz!2Jc?&ZWK_}A!voT&4I&u#rX`~$-Nk;7q z>}vV=RtRHtL1uFckNDl36%RLAbDw$Q?D-~37!k+ZTV$>LxDDKM+XGG#TIosu1B7ly zMq>9vWf~h}W@GCE-{J6gi=|iKz5x55j5S^T{@ahSC#12$QFz~(2{zQr>iTphGh^$U z#NVPP&qvn2gP{$3@#JojZZ6AZHGEr*wpM!FVOl2ISSsWQGdVP~E^OV}QCUv&0iBl| z(L!0gINa6N9nZIpX@SLPe6+kFg;ZzlK51z!vxzBkH?+TnW^D-!9~Z`*Cd6*X82Y<+ z5bU0U=M{DLzSZU9#<|Q8Hg`Wl0YdwclAH^SvFD9l&9l9$jbF}P+XZq&&Jn9M#vL4l z-+a;GUT{L__4!OBH{EMyucp;?VlRrB89zN4keSt5mBtOh(HT9Wuo&!PboguwSzQf~ zT`7k6WgDDwUJ!H28MoPaeI(}kJ&hxEW0AcP9$_CD)*_Kejz#Cp94hm$8LkR8h|Jx* z5Yjh%wK+w0Lk*v7o6VKpCw{|j&(Wo0^`Y~ssgn@)>CFb!GwbFRBg4rW+EklN-_%@- z+sU(<{5$TwWe`3*MtWE*^K8A3S>ayITJdo&4a7{>aolb@;3w8joaex%pK7%} zo@}YMxKSstM3QNHyw)YRK-^Gjmh8+X9~l$p@KVpf+8Q7|WgTx;8q3pY+=78+u4h~V zbrE;?gTabtLs8U{jAsQcxP0izxNmQpF1h)qL`P<+Cwbojo(}lkkUw&CDpl2F=4O1e zFe+2-I#tjp|Ed*jN-(<+J!95PrgQkce-x3!&&>STJPsJ4`aqg_Pg~;Ptn2EfuyXSDeOl9WoiIKHNbN60vZj3pVTNjzRm1h@|40xm0U&T#)>r{1(|MusRJ*DE? z6`?`)=mSC~s`(PoW*%(R z3vrXLs-BIPvGM&NOIxAsy>XVmyD}z{r;&V~MKMO-B{Z@bZ{fq6>Y5s9`;FQAVXfu( z=|;WP$K8$MHrrz|J_vavN|)j+3B~P7>`z;{Rg5>&(W1Vr8OyT1PIc`~-@K$Q>-|D( zc1HJbvw-Wasv937ceT77g4TF=iv-7Uh*}Du%S|Wp28XAUL?A~yz?kV+J(wM9q)Y<= z&x^opx$aUgldJi}coi4bhx-;4+69N54Q3`+gIQtLd-vRtM62gDYREnfXfrRE;^%{; zwZ_`K7=h)NZwk&V z6!4;FrgMnZvOVSM#!Sz+s?HQ6Tx`l^rte4P2L0J*vv2DKjQ})I9O;t|q@$wL_oxG! zagKF@YzLD~=GFiZw=0i+ayi#TBW^0bSD;yKj@y=f+M=Ao6L7N@h5SB9brSL}D|J{i zlc4cq4qrt}*13hPeFoAEPC~-(u}97tj?@#qEhXrYek*Bd(JTj7woa-{246!NYk4L( zP|6X;;*P)K1&0VfFwHT1GkBC|WrDQp8i8$^z6EcKGsF&~W(g2)kIDV8n;FdT4KVL( zA}h0RepzgayJx~vrj~W6Sd%J@f-^VOw7L1cFJ_zb1o;|{(hao@HO)844AJ`@UrW|w z_nldJm;2Jdvj=jK9n8p7-K<$Pcp?7v_4U-_#_~CgeBHsTZ7Sz!-0?z8W0~=PN@DfY^a*;dv4)n!2ywkVCz&DtnIa>IgYV^9nJJs4UaxH}Acue$sGrrEX z_rqTzF_$oWopRvbd_bWk+aWjTEe$nx-1HfBgq{|tZ&Xd7ySPAKWpRd|L7 zxdwgi4439VIfNmr4<32~VVyf%wGO)C2fdKxVeZ8<>#V-tK#7iLH0RFsddJxH>{;xg z*_!J%@$Y829XjgBvvR^2j4=a5`SZJaWUVE~ijE0iIrATPc&$F=#;E8A1Tx}oK^?RE z2f23rc=lqX2D>4m{Qc=dYkPeZKzSjXuv;m8>W}pT-2W=z(f#&Gx4XY>1|R z@awup8U$u8s-8`a%pYD$Y3IH7$A4U}uy-CP&#wFq%@NNyD4oFE*AqNo`1rQ{WB^|Ay1>FFCWd)%_VYM1+yLaZg``L_c2FQj4G4qmE%F z?T2-pDloCjF0f=CX+>}WIkSjM)0|+DjR=gGbNxh`4p@$~ z-w9oEb<6*ljD5miO_?c{zyQEASV8$9f9NH`hxoacU_Fs6UWAC(CB~i>_|^^FGR^oj zuN%nJC|5=64M4LZ(uIW^f8>riW9`c8KKT9ay6MO)Mo=h_#unJUPCqr-T9# zl1zO|&GpHeIoAi?cFeyu*_F{wrh|}189iCdtgu@PF>ZezufgRCcyULUX06fxc13@f zC?1+U;fPf$)TL!g(T#b>q8|xt1j_Uuy#6U8`lGIifID0D#V+fNp}v~|+HoI!0!K6P zqOR340SXSXWi}LV5r>*{#t+;u=lNL``Oyt&Xwma;?`+6gUU8e6_a1hXPe&|)n7Lji zdlom3Ymg@)pN9a?zGY$?3wcJBW|(g#e7;S@)`IKuFe%GmdEJfc(sWCKR++Mf>+X6> zbYRsLDyzw{JLImt4Kv3=a#o8#hQl7;b3;)seP|__mFc7PqN5sSXKplF%!obc4c^U; zy8#{pApdX5W^IAOs8SyY$;@QYPwDMi!ivVXsR4IS)uH?iCFlE~ ziih)S7xfMhUc4B63n(~Hi5cO$I+5^J8a1`xo@I2{+WCRDm3GFpgFkRl{tRD1qRy#rkNy|kSuSka$nAxs?Pq|E8OyoHA10fj~q*)&G;D` ztnVjlXg%F*ozf*$*lT@fKE_}A?jGdn7`+@EU6gxM@aW!G6np#`?=DZQvPO~UfYa(_ zv3vFKaj{iz+*lX(gn`~ujkSo?rNFF1j^F@P?gP>ERb$+d-jE2!uB^M_)*{Pp?^rJj z3^agLm?F!y8G|m>$NlgN)n=)le#Cw9B~vP!uw^u4YHJH{{%9X_1^y@pn{ms+lMI4` zn}a}4>FdW3flM9K-ptn8_;(`Wt|uczxiO>58wt?Q=%~o;R{|~&9BT&p6ORUe#dS@M zf14j7N%(%otRKC#dUx!Aa5Tl|mY#h`Nh4TY=&^MAJfe0d{;pRYi(!`UWlXW6cve7( z>OW;-Z>@#6?aGaUZiz+@j{{C<>8LZVo0&;vmXN46!n*g&RcN}o*H~mx>wMmwMbkii znjd2nZCrN$;3JD2@1wLZ0$>C$Kt&!fy=mO{|=+ zpYUjj*CMr7wfaT;xkkvnfFm7`Q_%(XrMeL^`Yujz#uIzPxZevhE9lmOi90s(jCQG$ zaGQaDxEtkU-sM5pYfZaze*gkMdS0DwYQYX?R~W-Tz0VU%IV~NiyBgmKTjVqgPR-s2 z-@Lo=s2h%MF<71PY!o-6HKYam+&$C?yS1~MT5dvCj%2g;1zCz>tntO2CHVGM1tWH@ zeG+jK>Ef;o>GyICbv&a0YZsP1&a|vu#k#?XYk9Ak>+$}fc|JI)9$nOmrv~Mpf)?3OwerJ?voxbf2+TBI@iW@=U z8J=KedJ@D}j1B9^;P}cJ`B3y3yD-Zl^dMYv681vgTE&wy|u? z*x|i5SlR0Nwejqqvx+L$h&D+5eRvy$0|qCBC3BjZuBY34A+rFB-^A^!gQEvtPVl!0 zyclh6=2=t>5og`lf=(x7P0DqodiN%bHKN3|Fy~71oODxT$O~1;g(4~-d%~d3mwRFh ze@w}CgWSUKYwx|!+!v6$d)E(+!o#vdskJ)dc1{{kay4i3q^Ue!Y428I4-vxNOYRPk zGjo6(tB1aJZR-)T2L-fB?SIe(NY*R=a<0U=OQkUvr$f6^w=Yz8jdBmSJtEwwJX%Hc z@>N#LICghu0=JAaT^4VH$TgshJqU@ryEL{!oqbd5^{x731{^42?|{Rt?BWu7Fs!;Y zT~S}#fQS0^{h^k?9W4D|g5l#4-#FdX?45Ac($6H(@HAck()ebL7nwE}*PBD0-gbAn zn#q1w)=;t=sb%DzJy5e|DQ*b#^eUl4Eo%ZtR<~Kn$v#lvSsPbV^^@oE?R2{lu4l%q zIA3E*&YnL%*<9Pw+SFKGUzffqId5p}6~pX03lFThota)oV4o|~(mHv0a2ORiIg8s9 zX(X_hZ+14rUDLBn0%JoPZPafi#T`FoZsp*ox8n~WV^2KDJ+Kzjie+77qpKl3Zn4Mn z3AYga6Yto0p__UwO-;FCbaoAgJ93Po`9kB3by#|zQrkMWfkxD0$0mmt4Lv5F8Zt*c zdZ+bNFvmW5@sJD)k--0(cMq5n>GF`?>1w68gj$Ko@BP0 zg$I%@-^zy?Yy;$lVmDv({CX9B>jvYKxs5eV4b3fhB_b8Ok)R)}!sANj1=;4+4!j?@ zwYrj2wT8r%ShuHiHsPOemJiJ}NOG-?*@t-t{_eGueU}~IVsdUoaq6#p+v C$)Gy` literal 169472 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 AS~6j9ChUz5bRm*m1hSmLN|##_QCUt-+o}iD9s7 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 left) + { + int pivotIndex = median3(arIntegers,left,right); + int pivotNewIndex = partition(arIntegers, left, right, pivotIndex); + + // Recursive call to quicksort to sort each half. + quicksort(arIntegers, left, pivotNewIndex-1); + quicksort(arIntegers, pivotNewIndex+1, right); + } +} + +int median3(int *arIntegers,int left,int right) +{ + int center = (left+right)/2; + + if(arIntegers[center] < arIntegers[left]) + swap(arIntegers[left],arIntegers[center]); + if(arIntegers[right] < arIntegers[left]) + swap(arIntegers[left],arIntegers[right]); + if(arIntegers[right] < arIntegers[center]) + swap(arIntegers[center],arIntegers[right]); + + swap(arIntegers[center],arIntegers[right-1]); + + return center; +} + +// This function takes an array (or one half an array) and sorts it. +// It then returns a new pivot index number back to quicksort. +int partition(int *arIntegers, int left, int right, int pivot) +{ +/* cout << "partition ("<< arIntegers[0] << "," + << arIntegers[1] << "," + << arIntegers[2] << "," + << arIntegers[3] << "," + << arIntegers[4] << "," + << arIntegers[5] << "," + << arIntegers[6] << "]," + << left << "," + << right << ")\n"; +*/ + int pivotValue = arIntegers[pivot]; + + // Swap it out all the way to the end of the array + // So we know where it always is. + swap(arIntegers[pivot], arIntegers[right]); + int storeIndex = left; + + // Move through the array from start to finish comparing each to our + // pivot value (not index, the value that was located at the pivot index) + for (int i = left; i < right; i++) + { + if (arIntegers[i] <= pivotValue) + { + swap(arIntegers[i], arIntegers[storeIndex]); + storeIndex++; + } + } + swap(arIntegers[storeIndex], arIntegers[right]); + return storeIndex; +} + +// Simple swap function for our in place swapping. +void swap(int &val1, int &val2) +{ + int temp = val1; + val1 = val2; + val2 = temp; +} + diff --git a/converter/quicksort.h b/converter/quicksort.h new file mode 100644 index 000000000..b3be0e36b --- /dev/null +++ b/converter/quicksort.h @@ -0,0 +1,9 @@ +#pragma once + +#include + +void quicksort(int*, int, int); +int partition(int*, int, int, int); +int median3(int*,int,int); +void swap(int &, int &); + diff --git a/converter/timer.cpp b/converter/timer.cpp new file mode 100644 index 000000000..f9f9aea3e --- /dev/null +++ b/converter/timer.cpp @@ -0,0 +1,9 @@ +#include "timer.h" + +double diffclock(clock_t clock1,clock_t clock2) +{ + double diffticks=clock1-clock2; + double diffms=(diffticks*10)/CLOCKS_PER_SEC; + return diffms; +} + diff --git a/converter/timer.h b/converter/timer.h new file mode 100644 index 000000000..1c7134ef6 --- /dev/null +++ b/converter/timer.h @@ -0,0 +1,8 @@ +#pragma once + +#include + +double diffclock(clock_t, clock_t); + + +