From 2380f373400a29aa5f2ad27406941a93805cdb76 Mon Sep 17 00:00:00 2001 From: F5OEO Date: Wed, 21 Mar 2018 14:47:53 +0000 Subject: [PATCH] Still migrate --- am/piam.c | 121 --- dcf77/pidcf77.c | 254 ------ drone/drone.c | 140 --- fm/pifm.c | 109 --- fsq/pifsq.c | 379 -------- opera/decode_opera.cpp | 761 ---------------- opera/opera.c | 515 ----------- src/LICENSE | 22 - src/Makefile | 80 -- src/RpiDma.c | 119 --- src/RpiDma.h | 128 --- src/RpiGpio.c | 97 -- src/RpiGpio.h | 110 --- src/amdmasync.cpp | 123 --- src/amdmasync.h | 22 - src/amdmasync.h.gch | Bin 2515556 -> 0 bytes src/calibrationpi2.h | 203 ----- src/calibrationpi3.h | 202 ----- src/calibrationpizero.h | 203 ----- src/dma.cpp | 253 ------ src/dma.h | 121 --- src/dsp.cpp | 68 -- src/dsp.h | 31 - src/dt-blob.bin | Bin 43123 -> 0 bytes src/dt-blob.dts | 1716 ----------------------------------- src/fmdmasync.cpp | 59 -- src/fmdmasync.h | 16 - src/fskburst.cpp | 114 --- src/fskburst.h | 23 - src/gpio.cpp | 669 -------------- src/gpio.h | 284 ------ src/iqdmasync.cpp | 149 --- src/iqdmasync.h | 27 - src/librpitx.h | 10 - src/mailbox.c | 280 ------ src/mailbox.h | 56 -- src/ngfmdmasync.cpp | 101 --- src/ngfmdmasync.h | 22 - src/phasedmasync.cpp | 117 --- src/phasedmasync.h | 22 - src/raspberry_pi_revision.c | 763 ---------------- src/raspberry_pi_revision.h | 163 ---- src/serialdmasync.cpp | 78 -- src/serialdmasync.h | 20 - src/v2rpitx | Bin 73148 -> 0 bytes src/v2rpitx.cpp | 402 -------- ssbgen/Makefile | 13 - ssbgen/ssb_gen.c | 589 ------------ ssbgen/ssb_gen.h | 41 - ssbgen/test_ssb.c | 105 --- sstv/pisstv.c | 172 ---- testfm.sh | 2 +- 52 files changed, 1 insertion(+), 10073 deletions(-) delete mode 100644 am/piam.c delete mode 100644 dcf77/pidcf77.c delete mode 100644 drone/drone.c delete mode 100644 fm/pifm.c delete mode 100644 fsq/pifsq.c delete mode 100644 opera/decode_opera.cpp delete mode 100644 opera/opera.c delete mode 100644 src/LICENSE delete mode 100644 src/Makefile delete mode 100644 src/RpiDma.c delete mode 100644 src/RpiDma.h delete mode 100644 src/RpiGpio.c delete mode 100644 src/RpiGpio.h delete mode 100644 src/amdmasync.cpp delete mode 100644 src/amdmasync.h delete mode 100644 src/amdmasync.h.gch delete mode 100644 src/calibrationpi2.h delete mode 100644 src/calibrationpi3.h delete mode 100644 src/calibrationpizero.h delete mode 100644 src/dma.cpp delete mode 100644 src/dma.h delete mode 100644 src/dsp.cpp delete mode 100644 src/dsp.h delete mode 100644 src/dt-blob.bin delete mode 100644 src/dt-blob.dts delete mode 100644 src/fmdmasync.cpp delete mode 100644 src/fmdmasync.h delete mode 100644 src/fskburst.cpp delete mode 100644 src/fskburst.h delete mode 100644 src/gpio.cpp delete mode 100644 src/gpio.h delete mode 100644 src/iqdmasync.cpp delete mode 100644 src/iqdmasync.h delete mode 100644 src/librpitx.h delete mode 100644 src/mailbox.c delete mode 100644 src/mailbox.h delete mode 100644 src/ngfmdmasync.cpp delete mode 100644 src/ngfmdmasync.h delete mode 100644 src/phasedmasync.cpp delete mode 100644 src/phasedmasync.h delete mode 100644 src/raspberry_pi_revision.c delete mode 100644 src/raspberry_pi_revision.h delete mode 100644 src/serialdmasync.cpp delete mode 100644 src/serialdmasync.h delete mode 100755 src/v2rpitx delete mode 100644 src/v2rpitx.cpp delete mode 100644 ssbgen/Makefile delete mode 100644 ssbgen/ssb_gen.c delete mode 100644 ssbgen/ssb_gen.h delete mode 100644 ssbgen/test_ssb.c delete mode 100644 sstv/pisstv.c diff --git a/am/piam.c b/am/piam.c deleted file mode 100644 index 1573985..0000000 --- a/am/piam.c +++ /dev/null @@ -1,121 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#define ln(x) (log(x)/log(2.718281828459045235f)) -#define BUFFER_LEN 1024*8 - -int FileFreqTiming; -// Test program using SNDFILE -// see http://www.mega-nerd.com/libsndfile/api.html for API - -void WriteTone(double Frequency,uint32_t Timing) -{ - typedef struct { - double Frequency; - uint32_t WaitForThisSample; - } samplerf_t; - samplerf_t RfSample; - - RfSample.Frequency=Frequency; - RfSample.WaitForThisSample=Timing; //en 100 de nanosecond - //printf("Freq =%f Timing=%d\n",RfSample.Frequency,RfSample.WaitForThisSample); - if (write(FileFreqTiming,&RfSample,sizeof(samplerf_t)) != sizeof(samplerf_t)) { - fprintf(stderr, "Unable to write sample\n"); - } - -} - -int main(int argc, char **argv) { - float data [2*BUFFER_LEN] ; - float data_filtered[2*BUFFER_LEN] ; // we generate complex I/Q samples - SNDFILE *infile, *outfile ; - SF_INFO sfinfo ; - - int readcount, nb_samples ; - char *infilename ; - char *outfilename ; - int k ; - float x ; - - if( argc < 2 ) { - printf("Usage : %s in.wav [out.wav]\n", argv[0]); - return(1); - } - infilename = argv[1]; - if( argc == 3 ) { - outfilename = argv[2]; - } else { - outfilename = (char *)malloc( 128 ); - sprintf( outfilename, "%s", "out.ft"); - } - if (! (infile = sf_open (infilename, SFM_READ, &sfinfo))) - { /* Open failed so print an error message. */ - printf ("Not able to open input file %s.\n", infilename); - /* Print the error message from libsndfile. */ - puts (sf_strerror (NULL)); - return 1; - } - - if( sfinfo.samplerate != 48000 ) { - printf("Input rate must be 48K.\n"); - return 1; - } - - FileFreqTiming = open(outfilename, O_WRONLY|O_CREAT, 0644); - - /** **/ - printf ("Reading file : %s\n", infilename ); - printf ("Sample Rate : %d\n", sfinfo.samplerate); - printf ("Channels : %d\n", sfinfo.channels); - printf ("----------------------------------------\n"); - printf ("Writing file : %s\n", outfilename ); - - /* While there are.frames in the input file, read them, process - ** them and write them to the output file. - */ - - while ((readcount = sf_readf_float(infile, data, BUFFER_LEN))) - { - nb_samples = readcount / sfinfo.channels; - for( k=0 ; k < nb_samples ; k++ ) { - x = data[k*sfinfo.channels]; - if( sfinfo.channels == 2 ) { - // stereo file, avg left + right - x += data[k*sfinfo.channels+1]; - x /= 2; - } - //printf("%f \n",x); - float FactAmplitude=2.0; // To be analyzed more deeply ! - /* - double A = 87.7f; // compression parameter - double ampf=x/32767.0; - ampf = (fabs(ampf) < 1.0f/A) ? A*fabs(ampf)/(1.0f+ln(A)) : (1.0f+ln(A*fabs(ampf)))/(1.0f+ln(A)); //compand - x= (int)(round(ampf * 32767.0f)); - */ - WriteTone(x*32767*FactAmplitude,1e9/48000.0); - - } - - } - - /* Close input and output files. */ - sf_close (infile) ; - close(FileFreqTiming); - - return 0; -} diff --git a/dcf77/pidcf77.c b/dcf77/pidcf77.c deleted file mode 100644 index a774ff6..0000000 --- a/dcf77/pidcf77.c +++ /dev/null @@ -1,254 +0,0 @@ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Get main process from arduino project : CodingGhost/DCF77-Transmitter -// Generator for 77,5 kHz (DCF-77) by Jonas woerner (c) -// Thanks to Jonas -// Evariste F5OEO 2015 - -//!!!!ONLY FOR TESTING PURPOSES! -#define byte char -#define false 0 -#define true 1 - -byte dcfBits[60] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 }; - -#define anzahlMinutenBits 7 -#define anzahlStundenBits 6 -#define offsetMinutenBits 21 -#define offsetStundenBits 29 -byte MinutenBits[anzahlMinutenBits] = { 0 }; -byte StundenBits[anzahlStundenBits] = { 0 }; -int parity = 0; -int FileFreqTiming; - -void modulate(byte b); -void playtone(double Amplitude,uint32_t Timing); - -void loop() -{ - int i; - for (i = 0; i<58; ++i) - { - modulate(dcfBits[i]); - } - -} - -void DCF_BITS(int Minuten, int Stunden) -{ - int i; - //MINUTE - - if (Minuten > 39) - { - MinutenBits[6] = 1; - Minuten -= 40; - } - if (Minuten > 19) - { - MinutenBits[5] = 1; - Minuten -= 20; - } - if (Minuten > 9) - { - MinutenBits[4] = 1; - Minuten -= 10; - } - - for ( i = 0; i < 4; ++i) - { - //MinutenBits[i] = (Minuten & (1 << i)) ? true : false; - - if ((Minuten & (1 << i)) > 0) - { - MinutenBits[i] = true; - } - else - { - MinutenBits[i] = false; - } - } - - for ( i = 0; i < anzahlMinutenBits; ++i) - { - dcfBits[offsetMinutenBits + i] = MinutenBits[i]; - } - - //Stunde - if (Stunden > 19) - { - StundenBits[5] = 1; - Stunden -= 20; - } - if (Stunden > 9) - { - StundenBits[4] = 1; - Stunden -= 10; - } - - for ( i = 0; i < 4; ++i) - { - //MinutenBits[i] = (Minuten & (1 << i)) ? true : false; - - if ((Stunden & (1 << i)) > 0) - { - StundenBits[i] = true; - } - else - { - StundenBits[i] = false; - } - } - - for ( i = 0; i < anzahlStundenBits; ++i) - { - dcfBits[offsetStundenBits + i] = StundenBits[i]; - } - - /*for (int n = 0; n < 6; ++n) - { - - }*/ - //////////////////////////// - { - parity += dcfBits[21]; - parity += dcfBits[22]; - parity += dcfBits[23]; - parity += dcfBits[24]; - parity += dcfBits[25]; - parity += dcfBits[26]; - parity += dcfBits[27]; - - //dcfBits[28] = parity % 2; ??? - if (parity % 2 == 0) - { - dcfBits[28] = 0; - } - else - { - dcfBits[28] = 1; - } - parity = 0; - } - //////////////////////////// - { - parity += dcfBits[29]; - parity += dcfBits[30]; - parity += dcfBits[31]; - parity += dcfBits[32]; - parity += dcfBits[33]; - parity += dcfBits[34]; - if (parity % 2 == 0) - { - dcfBits[35] = 0; - } - else - { - dcfBits[35] = 1; - } - parity = 0; - } - ///////////////////////////// - { - parity += dcfBits[36]; - parity += dcfBits[37]; - parity += dcfBits[38]; - parity += dcfBits[39]; - parity += dcfBits[40]; - parity += dcfBits[41]; - parity += dcfBits[42]; - parity += dcfBits[43]; - parity += dcfBits[44]; - parity += dcfBits[45]; - parity += dcfBits[46]; - parity += dcfBits[47]; - parity += dcfBits[48]; - parity += dcfBits[49]; - parity += dcfBits[50]; - parity += dcfBits[51]; - parity += dcfBits[52]; - parity += dcfBits[53]; - parity += dcfBits[54]; - parity += dcfBits[55]; - parity += dcfBits[56]; - parity += dcfBits[57]; - if (parity % 2 == 0) - { - dcfBits[58] = 0; - } - else - { - dcfBits[58] = 1; - } - parity = 0; - } -} - -void modulate(byte b) -{ - if (b == 0) - { - playtone(32667/8,100e6); - playtone(32767,900e6); - } - else - { - playtone(32767/8,200e6); - playtone(32767,800e6); - } -} - -void playtone(double Amplitude,uint32_t Timing) -{ - typedef struct { - double Amplitude; - uint32_t WaitForThisSample; - } samplerf_t; - samplerf_t RfSample; - - RfSample.Amplitude=Amplitude; - RfSample.WaitForThisSample=Timing; //en 100 de nanosecond - printf("%f %d\n",Amplitude,Timing); - if (write(FileFreqTiming, &RfSample, sizeof(samplerf_t)) != sizeof(samplerf_t)) { - fprintf(stderr, "Unable to write sample\n"); - } -} - -int main(int argc, char **argv) -{ - if (argc > 1) - { - char *sFileFreqTiming=(char *)argv[1]; - FileFreqTiming = open(argv[1], O_WRONLY|O_CREAT, 0644); - - DCF_BITS(7,59); - loop(); - playtone(0,1000e6);//last second - close(FileFreqTiming); - } - else - { - printf("usage : pidfc77 dcfpatern.bin\n"); - exit(0); - } - - return 0; -} - - - - diff --git a/drone/drone.c b/drone/drone.c deleted file mode 100644 index 7affa25..0000000 --- a/drone/drone.c +++ /dev/null @@ -1,140 +0,0 @@ -// -// Simple FSQ beacon for Arduino, with the Etherkit Si5351A Breakout -// Board, by Jason Milldrum NT7S. -// -// Original code based on Feld Hell beacon for Arduino by Mark -// Vandewettering K6HX, adapted for the Si5351A by Robert -// Liesenfeld AK6L . Timer setup -// code by Thomas Knutsen LA3PNA. -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject -// to the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -// ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define TONE_SPACING 8789 // ~8.7890625 Hz -#define BAUD_2 7812 // CTC value for 2 baud -#define BAUD_3 5208 // CTC value for 3 baud -#define BAUD_4_5 3472 // CTC value for 4.5 baud -#define BAUD_6 2604 // CTC value for 6 baud - -#define LED_PIN 13 - -#define bool char -#define false 0 -#define true 1 - -// Global variables - -unsigned long freq = 0;//7105350; // Base freq is 1350 Hz higher than dial freq in USB -uint8_t cur_tone = 0; -static uint8_t crc8_table[256]; -char callsign[10] = "F5OEO"; -char tx_buffer[40]; -uint8_t callsign_crc; -int FileText; -int FileFreqTiming; -// Global variables used in ISRs -volatile bool proceed = false; - - -void WriteTone(double Frequency,uint32_t Timing) -{ - typedef struct { - double Frequency; - uint32_t WaitForThisSample; - } samplerf_t; - samplerf_t RfSample; - - RfSample.Frequency=Frequency; - RfSample.WaitForThisSample=Timing; //en 100 de nanosecond - //printf("Freq =%f Timing=%d\n",RfSample.Frequency,RfSample.WaitForThisSample); - if (write(FileFreqTiming, &RfSample,sizeof(samplerf_t)) != sizeof(samplerf_t)) { - fprintf(stderr, "Unable to write sample\n"); - } - -} - - - -int main(int argc, char **argv) -{ - char *sText; - if (argc > 2) - { - sText=(char *)argv[1]; - //FileText = open(argv[1], O_RDONLY); - - char *sFileFreqTiming=(char *)argv[2]; - FileFreqTiming = open(argv[2], O_WRONLY|O_CREAT); - } - else - { - printf("usage : pidrone StringToTransmit file.ft\n"); - exit(0); - } - - //100KHZ - int Freq_span = 100000; - int NbStep = 2000; - int i; - for(i=1;i0) - { - WriteTone(25000,1250e3); - printf("1"); - } - else - { - WriteTone(-25000,1250e3); - printf("0"); - } - - } - WriteTone(25000,1250e3);//Stop bit - printf("\n"); - } - - WriteTone(00000,250e6); - close(FileFreqTiming); -} - diff --git a/fm/pifm.c b/fm/pifm.c deleted file mode 100644 index fb7bf3a..0000000 --- a/fm/pifm.c +++ /dev/null @@ -1,109 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#define BUFFER_LEN 1024*8 -int FileFreqTiming; -// Test program using SNDFILE -// see http://www.mega-nerd.com/libsndfile/api.html for API - -void WriteTone(double Frequency,uint32_t Timing) -{ - typedef struct { - double Frequency; - uint32_t WaitForThisSample; - } samplerf_t; - samplerf_t RfSample; - - RfSample.Frequency=Frequency; - RfSample.WaitForThisSample=Timing; //en 100 de nanosecond - //printf("Freq =%f Timing=%d\n",RfSample.Frequency,RfSample.WaitForThisSample); - if (write(FileFreqTiming, &RfSample, sizeof(samplerf_t)) != sizeof(samplerf_t)) { - fprintf(stderr, "Unable to write sample\n"); - } -} - -int main(int argc, char **argv) -{ - float data [2*BUFFER_LEN]; - float data_filtered[2*BUFFER_LEN]; // we generate complex I/Q samples - SNDFILE *infile, *outfile; - SF_INFO sfinfo; - - int readcount, nb_samples; - char *infilename; - char *outfilename; - int k; - float x; - - if( argc < 2 ) { - printf("Usage : %s in.wav [out.wav]\n", argv[0]); - return(1); - } - infilename = argv[1]; - if( argc == 3 ) { - outfilename = argv[2]; - } else { - outfilename = (char *)malloc( 128 ); - sprintf( outfilename, "%s", "out.ft"); - } - if (! (infile = sf_open (infilename, SFM_READ, &sfinfo))) - { /* Open failed so print an error message. */ - printf ("Not able to open input file %s.\n", infilename); - /* Print the error message from libsndfile. */ - puts (sf_strerror (NULL)); - return 1; - } - - if( sfinfo.samplerate != 48000 ) { - printf("Input rate must be 48K.\n"); - return 1; - } - - FileFreqTiming = open(outfilename, O_WRONLY|O_CREAT, 0644); - - /** **/ - printf ("Reading file : %s\n", infilename ) ; - printf ("Sample Rate : %d\n", sfinfo.samplerate) ; - printf ("Channels : %d\n", sfinfo.channels) ; - printf ("----------------------------------------\n") ; - printf ("Writing file : %s\n", outfilename ) ; - - /* While there are.frames in the input file, read them, process - ** them and write them to the output file. - */ - int Excursion=6000; - while ((readcount = sf_readf_float(infile, data, BUFFER_LEN))) - { - nb_samples = readcount / sfinfo.channels ; - for( k=0 ; k < nb_samples ; k++ ) { - x = data[k*sfinfo.channels] ; - if( sfinfo.channels == 2 ) { - // stereo file, avg left + right - x += data[k*sfinfo.channels+1] ; - x /= 2 ; - } - //printf("%f \n",x); - WriteTone(x*Excursion*2.0,1e9/48000.0); - } - } - - /* Close input and output files. */ - sf_close (infile) ; - close(FileFreqTiming); - - return 0; -} diff --git a/fsq/pifsq.c b/fsq/pifsq.c deleted file mode 100644 index 0427797..0000000 --- a/fsq/pifsq.c +++ /dev/null @@ -1,379 +0,0 @@ -// -// Simple FSQ beacon for Arduino, with the Etherkit Si5351A Breakout -// Board, by Jason Milldrum NT7S. -// -// Original code based on Feld Hell beacon for Arduino by Mark -// Vandewettering K6HX, adapted for the Si5351A by Robert -// Liesenfeld AK6L . Timer setup -// code by Thomas Knutsen LA3PNA. -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject -// to the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -// ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define TONE_SPACING 8789 // ~8.7890625 Hz -#define BAUD_2 7812 // CTC value for 2 baud -#define BAUD_3 5208 // CTC value for 3 baud -#define BAUD_4_5 3472 // CTC value for 4.5 baud -#define BAUD_6 2604 // CTC value for 6 baud - -#define LED_PIN 13 - -#define bool char -#define false 0 -#define true 1 - -// Global variables - -unsigned long freq = 0;//7105350; // Base freq is 1350 Hz higher than dial freq in USB -uint8_t cur_tone = 0; -static uint8_t crc8_table[256]; -char callsign[10] = "F5OEO"; -char tx_buffer[40]; -uint8_t callsign_crc; -int FileText; -int FileFreqTiming; -// Global variables used in ISRs -volatile bool proceed = false; - -// Define the structure of a varicode table -typedef struct fsq_varicode -{ - uint8_t ch; - uint8_t var[2]; -} Varicode; - -// The FSQ varicode table, based on the FSQ Varicode V3.0 -// document provided by Murray Greenman, ZL1BPU - -const Varicode code_table[] = -{ - {' ', {00, 00}}, // space - {'!', {11, 30}}, - {'"', {12, 30}}, - {'#', {13, 30}}, - {'$', {14, 30}}, - {'%', {15, 30}}, - {'&', {16, 30}}, - {'\'', {17, 30}}, - {'(', {18, 30}}, - {')', {19, 30}}, - {'*', {20, 30}}, - {'+', {21, 30}}, - {',', {27, 29}}, - {'-', {22, 30}}, - {'.', {27, 00}}, - {'/', {23, 30}}, - {'0', {10, 30}}, - {'1', {01, 30}}, - {'2', {02, 30}}, - {'3', {03, 30}}, - {'4', {04, 30}}, - {'5', {05, 30}}, - {'6', {06, 30}}, - {'7', {07, 30}}, - {'8', {8, 30}}, - {'9', {9, 30}}, - {':', {24, 30}}, - {';', {25, 30}}, - {'<', {26, 30}}, - {'=', {00, 31}}, - {'>', {27, 30}}, - {'?', {28, 29}}, - {'@', {00, 29}}, - {'A', {01, 29}}, - {'B', {02, 29}}, - {'C', {03, 29}}, - {'D', {04, 29}}, - {'E', {05, 29}}, - {'F', {06, 29}}, - {'G', {07, 29}}, - {'H', {8, 29}}, - {'I', {9, 29}}, - {'J', {10, 29}}, - {'K', {11, 29}}, - {'L', {12, 29}}, - {'M', {13, 29}}, - {'N', {14, 29}}, - {'O', {15, 29}}, - {'P', {16, 29}}, - {'Q', {17, 29}}, - {'R', {18, 29}}, - {'S', {19, 29}}, - {'T', {20, 29}}, - {'U', {21, 29}}, - {'V', {22, 29}}, - {'W', {23, 29}}, - {'X', {24, 29}}, - {'Y', {25, 29}}, - {'Z', {26, 29}}, - {'[', {01, 31}}, - {'\\', {02, 31}}, - {']', {03, 31}}, - {'^', {04, 31}}, - {'_', {05, 31}}, - {'`', {9, 31}}, - {'a', {01, 00}}, - {'b', {02, 00}}, - {'c', {03, 00}}, - {'d', {04, 00}}, - {'e', {05, 00}}, - {'f', {06, 00}}, - {'g', {07, 00}}, - {'h', {8, 00}}, - {'i', {9, 00}}, - {'j', {10, 00}}, - {'k', {11, 00}}, - {'l', {12, 00}}, - {'m', {13, 00}}, - {'n', {14, 00}}, - {'o', {15, 00}}, - {'p', {16, 00}}, - {'q', {17, 00}}, - {'r', {18, 00}}, - {'s', {19, 00}}, - {'t', {20, 00}}, - {'u', {21, 00}}, - {'v', {22, 00}}, - {'w', {23, 00}}, - {'x', {24, 00}}, - {'y', {25, 00}}, - {'z', {26, 00}}, - {'{', {06, 31}}, - {'|', {07, 31}}, - {'}', {8, 31}}, - {'~', {00, 30}}, - {127, {28, 31}}, // DEL - {13, {28, 00}}, // CR - {10, {28, 00}}, // LF - {0, {28, 30}}, // IDLE - {241, {10, 31}}, // plus/minus - {246, {11, 31}}, // division sign - {248, {12, 31}}, // degrees sign - {158, {13, 31}}, // multiply sign - {156, {14, 31}}, // pound sterling sign - {8, {27, 31}} // BS -}; - -void encode_tone(uint8_t tone); - -// Define an upper bound on the number of glyphs. Defining it this -// way allows adding characters without having to update a hard-coded -// upper bound. -#define NGLYPHS (sizeof(code_table)/sizeof(code_table[0])) - -// Timer interrupt vector. This toggles the variable we use to gate -// each column of output to ensure accurate timing. Called whenever -// Timer1 hits the count set below in setup(). -/*ISR(TIMER1_COMPA_vect) -{ - proceed = true; -} -*/ -// This is the heart of the beacon. Given a character, it finds the -// appropriate glyph and sets output from the Si5351A to key the -// FSQ signal. - -void WriteTone(double Frequency,uint32_t Timing) -{ - typedef struct { - double Frequency; - uint32_t WaitForThisSample; - } samplerf_t; - samplerf_t RfSample; - - RfSample.Frequency=Frequency; - RfSample.WaitForThisSample=Timing*1000L; //en 100 de nanosecond - //printf("Freq =%f Timing=%d\n",RfSample.Frequency,RfSample.WaitForThisSample); - if (write(FileFreqTiming, &RfSample,sizeof(samplerf_t)) != sizeof(samplerf_t)) { - fprintf(stderr, "Unable to write sample\n"); - } - -} - -void encode_char(int ch) -{ - uint8_t i, fch, vcode1, vcode2; - - for(i = 0; i < NGLYPHS; i++) - { - // Check each element of the varicode table to see if we've found the - // character we're trying to send. - fch = code_table[i].ch; - - if(fch == ch) - { - // Found the character, now fetch the varicode chars - vcode1 = code_table[i].var[0]; - vcode2 = code_table[i].var[1]; - - // Transmit the appropriate tone per a varicode char - if(vcode2 == 0) - { - // If the 2nd varicode char is a 0 in the table, - // we are transmitting a lowercase character, and thus - // only transmit one tone for this character. - - // Generate tone - encode_tone(vcode1); - } - else - { - // If the 2nd varicode char is anything other than 0 in - // the table, then we need to transmit both - - // Generate 1st tone - encode_tone(vcode1); - - // Generate 2nd tone - encode_tone(vcode2); - } - break; // We've found and transmitted the char, - // so exit the for loop - } - } -} - -void encode_tone(uint8_t tone) -{ - cur_tone = ((cur_tone + tone + 1) % 33); - //printf("Current tone =%d\n",cur_tone); - WriteTone(1000 + (cur_tone * TONE_SPACING*0.001),500000L); - //TO DO FREQUENCY PI si5351.set_freq((freq * 100) + (cur_tone * TONE_SPACING), 0, SI5351_CLK0); -} - -// Loop through the string, transmitting one character at a time. -void encode(char *str) -{ - // Reset the tone to 0 and turn on the output - cur_tone = 0; - /* - si5351.output_enable(SI5351_CLK0, 1); - digitalWrite(LED_PIN, HIGH); - */ - //Serial.println("======="); - - // Transmit BOT - //noInterrupts(); - - - encode_char(' '); // Send a space for the dummy character - //Do wait - - // Send another space - encode_char(' '); - //Do wait - - // Now send LF - encode_char(10); - //Do wait - - // Now do the rest of the message - while (*str != '\0') - { - encode_char(*str++); - } - - // Turn off the output - //si5351.output_enable(SI5351_CLK0, 0); - //digitalWrite(LED_PIN, LOW); -} - -static void init_crc8(void) -{ - int i,j; - uint8_t crc; - - for(i = 0; i < 256; i++) - { - crc = i; - for(j = 0; j < 8; j++) - { - crc = (crc << 1) ^ ((crc & 0x80) ? 0x07 : 0); - } - crc8_table[i] = crc & 0xFF; - } -} - -uint8_t crc8(char * text) -{ - uint8_t crc='\0'; - uint8_t ch; - int i; - for(i = 0; i < strlen(text); i++) - { - ch = text[i]; - crc = crc8_table[(crc) ^ ch]; - crc &= 0xFF; - } - - return crc; -} - -int main(int argc, char **argv) -{ - char *sText; - if (argc > 2) - { - sText=(char *)argv[1]; - //FileText = open(argv[1], O_RDONLY); - - char *sFileFreqTiming=(char *)argv[2]; - FileFreqTiming = open(argv[2], O_WRONLY|O_CREAT, 0644); - } - else - { - printf("usage : pifsq StringToTransmit file.ft\n"); - exit(0); - } - - // Initialize the CRC table - init_crc8(); - - // Generate the CRC for the callsign - callsign_crc = crc8(callsign); - - // We are building a directed message here, but you can do whatever. - // So apparently, FSQ very specifically needs " \b " in - // directed mode to indicate EOT. A single backspace won't do it. - sprintf(tx_buffer, "%s:%02x%s%s", callsign, callsign_crc,sText," \b "); - encode(tx_buffer); - int i; - for(i=0;i<10;i++) - { - WriteTone(0,500000L); - } - - close(FileFreqTiming); -} - diff --git a/opera/decode_opera.cpp b/opera/decode_opera.cpp deleted file mode 100644 index 9520026..0000000 --- a/opera/decode_opera.cpp +++ /dev/null @@ -1,761 +0,0 @@ -// OPERA_Decode_Test.cpp : Defines the entry point for the console application. -// -// Purpose : to study coding and decoding of OPERA which was developed by EA5HVK. -// -// Usage : "OPERA_Decode_Test [? | d | s | w] -// where : s= help, d = debug, s = AA1AA and w = 7L1RLL -// -// Version : 1.0.3, 11/27/2015 change print_char() to print_str() -// Version : 1.0.2, 11/27/2015 bug fix at unpack(), and add 7L1RLL as a 2nd sample. -// Version : 1.0.1, 11/27/2015 Add a function of print_char() -// Version : 1.0.0, 11/25/2015 Initial Release, but under construction on error correction. -// -// Copyright : 7L1RLL(Rick Wakatori) 2015 under Terms of The GNU General -// Public License. -// -// Environments : Microsoft Visual C++ 2010 Express under Windows 10. -// Compiler version : 10.0.40219.1 SPIRel -// -// Acknowledgements : -// a)EA5HVK(Jose) for work on OPERA -// b)F4GCB(Patrick) for PIC program on CRC16 which is a copy into this program. -// c)PE1NNZ(Guido), for Article titled Opera Protocol Specification. - -//#include "stdafx.h" -#include "stdio.h" -#include "math.h" -#include "string.h" - -short int call_AA1AA[239] = -{ // callsign = "AA1AA" - 1,0,1,1, 0,1,0,0, 1,0,1,1, 0,0,1,0, // 0xB4, 0xB2 - 1,1,0,0, 1,1,0,1, 0,0,1,1, 0,0,1,0, // 0xCD, 0x32 - 1,0,1,0, 1,1,0,0, 1,0,1,1, 0,0,1,1, // 0xAC, 0xB3 - 0,1,0,0, 1,0,1,0, 1,1,0,0, 1,1,0,0, // 0x4A, 0xCC - 1,1,0,0, 1,1,0,1, 0,0,1,1, 0,0,1,0, // 0xCD, 0x32 - 1,0,1,0, 1,0,1,1, 0,0,1,1, 0,1,0,1, // 0xA9, 0x35 - 0,1,0,0, 1,1,0,0, 1,1,0,1, 0,1,0,0, // 0x4C, 0xD4 - 1,0,1,1, 0,1,0,0, 1,0,1,0, 1,1,0,1, // 0xB4, 0xAD - 0,0,1,1, 0,1,0,0, 1,1,0,1, 0,1,0,0, // 0x34, 0xD4 - 1,1,0,0, 1,0,1,0, 1,0,1,1, 0,0,1,1, // 0xCA, 0xB3 - 0,0,1,0, 1,0,1,0, 1,1,0,1, 0,1,0,0, // 0x2A, 0xD4 - 1,0,1,0, 1,1,0,1, 0,1,0,1, 0,1,0,1, // 0xAD, 0x55 - 0,1,0,0, 1,0,1,0, 1,1,0,1, 0,0,1,1, // 0x4A, 0xD3 - 0,0,1,1, 0,1,0,1, 0,0,1,0, 1,1,0,0, // 0x35, 0x2C - 1,1,0,1, 0,1,0,0, 1,1,0,0, 1,0,1 // 0xD4, 0xCA -}; - -short int call_F5OEO[239] = {1,0,1,1, 0,1,0,1, 0,0,1,0, 1,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,0, 1,1,0,1, 0,1,0,0, 1,1,0,0, -1,1,0,0, 1,1,0,0, 1,0,1,0, 1,1,0,1, 0,1,0,1, 0,0,1,0, 1,0,1,0, 1,1,0,1, 0,0,1,1, 0,1,0,0, -1,0,1,0, 1,0,1,1, 0,1,0,1, 0,1,0,1, 0,0,1,0, 1,0,1,0, 1,1,0,1, 0,0,1,1, 0,0,1,1, 0,0,1,0, -1,1,0,0, 1,1,0,1, 0,0,1,0, 1,1,0,1, 0,1,0,1, 0,1,0,0, 1,0,1,1, 0,1,0,0, 1,0,1,1, 0,0,1,1, -0,1,0,1, 0,0,1,1, 0,1,0,1 ,0,1,0,0, 1,0,1,0, 1,0,1,0, 1,1,0,1, 0,1,0,0, 1,1,0,1, 0,1,0,1, -0,0,1,0, 1,0,1,1, 0,0,1,0, 1,1,0,1 ,0,0,1,1, 0,1,0,1, 0,0,1,1, 0,1,0,0, 1,1,0,0, 1,0,1 -}; - - - -short int call_7L1RLL[239] = -{ - 1,0,1,0, 1,1,0,1, 0,0,1,0, 1,1,0,1, // 0xAD, 0x2D - 0,0,1,0, 1,0,1,0, 1,1,0,0, 1,0,1,0, // 0x2A, 0xCA - 1,0,1,0, 1,0,1,0, 1,0,1,1, 0,1,0,0, // 0xAA, 0xB4 - 1,0,1,1, 0,0,1,0, 1,0,1,0, 1,0,1,1, // 0xB2, 0xAB - 0,0,1,1, 0,1,0,1, 0,0,1,0, 1,0,1,0, // 0x35, 0x2A - 1,0,1,0, 1,0,1,1, 0,1,0,1, 0,0,1,1, // 0xAB, 0x53 - 0,0,1,1, 0,0,1,0, 1,1,0,0, 1,1,0,0, // 0x32, 0xCC - 1,1,0,1, 0,0,1,0, 1,0,1,0, 1,0,1,1, // 0xD2, 0xAB - 0,0,1,1, 0,0,1,0, 1,1,0,0, 1,0,1,1, // 0x32, 0xCB - 0,1,0,0, 1,1,0,0, 1,1,0,1, 0,1,0,1, // 0x4C, 0xD5 - 0,1,0,1, 0,0,1,1, 0,1,0,1, 0,0,1,1, // 0x53, 0x53 - 0,0,1,0, 1,1,0,0, 1,1,0,0, 1,1,0,1, // 0x2C, 0xCD - 0,1,0,0, 1,1,0,1, 0,1,0,0, 1,0,1,1, // 0x4D, 0x4B - 0,1,0,0, 1,1,0,0, 1,0,1,1, 0,1,0,0, // 0x4C, 0xB4 - 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,1,0 // 0xAA, 0xAC -}; - -short int interleave_target[119] = -{ //after interleave - 1,0,0,1, 1,0,1,1, 0,1,0,0, 1,0,1,1, //0x9B, 0x4B - 1,1,0,1, 1,0,1,0, 0,1,1,1, 0,1,0,1, //0xDA, 0x75 - 0,1,0,0, 1,0,1,1, 1,1,1,0, 1,0,0,0, //0x4B, 0xE8 - 0,1,0,1, 0,0,0,1, 1,0,0,1, 1,1,0,0, //0x51, 0x9C - 1,0,0,1, 0,0,0,1, 0,1,1,1, 1,0,1,0, //0x91, 0x7A - 1,1,1,1, 0,0,0,1, 1,1,0,0, 0,0,0,0, //0xF1, 0xC0 - 0,1,1,1, 0,0,1,0, 1,0,0,0, 1,1,0,1, //0x72, 0x8D - 0,0,0,1, 0,1,1 //0x16 -}; - -short int before_interleave_target[119] = -{ // before interleave - 1,1,0,1, 0,0,1,0, 0,0,0,0, 0,0,0,1, // 0xD2, 0x01 - 1,0,0,1, 1,1,1,0, 0,1,1,0, 1,0,1,1, // 0x9E, 0x6B - 0,1,0,0, 1,1,1,1, 0,0,1,0, 1,0,1,0, // 0x4F, 0x2A - 1,1,0,1, 0,1,0,1, 0,1,1,1, 1,0,0,1, // 0xD5, 0x79 - 1,0,1,0, 0,1,0,1, 1,1,1,0, 0,0,0,0, // 0xA5, 0xE0 - 0,0,0,0, 1,1,0,0, 1,1,0,0, 0,0,1,1, // 0x0C, 0xC3 - 1,1,1,1, 0,0,1,1, 0,1,0,1, 0,1,0,1, // 0xF3, 0x55 - 1,1,0,1, 0,0,1 // 0xD2 -}; - -short int walsh_matrix[8][7] = { - {0,0,0,0,0,0,0},{1,0,1,0,1,0,1},{0,1,1,0,0,1,1},{1,1,0,0,1,1,0}, - {0,0,0,1,1,1,1},{1,0,1,1,0,1,0},{0,1,1,1,1,0,0},{1,1,0,1,0,0,1} -}; - -short int pseudo_sequence[51] = -{ - 1,1,1,0, 0,0,0,1, 0,1,0,1, 0,1,1,1, // 0xE1, 0x57 - 1,1,1,0, 0,1,1,0, 1,1,0,1, 0,0,0,0, // 0xE6, 0xD0 - 0,0,0,1, 1,0,0,1, 0,0,0,1, 0,1,0,1, // 0x19, 0x15 - 0,1,1 // 0x60 -}; - -char before_scramble_target[52] = - "000000000110110001101111000011110001111000001100100"; - -short int before_WH_target[52] = -{ - 1,1,1,0, 0,0,0,1, 0,0,1,1, 1,0,1,1, // 0xE1, 0x3B - 1,0,0,0, 1,0,0,1, 1,1,0,1, 1,1,1,1, // 0x89, 0xDF - 0,0,0,0, 0,1,1,1, 0,0,0,1, 1,0,0,1, // 0x07, 0x19 - 1,1,1 // 0xE0 -}; - -char packed_target[29] ="0000011011000110111100001111"; //0x0606F0F - -char call_target[7] = "AA1AA "; - -// **** Grobal variables **** -short int symbol[239]; // to be decode -short int interleaved[119]; -short int before_interleave[119]; -short int error_position[239]; // does not use in V1.0.0 -short int before_WH[51]; -char before_scramble[51]; -char packed[28]; -char call[7]; -short int DEBUG = 0; - -// **** functions **** -void decode_opera(short int symbol[239]); -void manchester_decode(short int symbol[239], short int interleaved[119]); -void de_interleave(short int interleaved[119], short int before_interleave[119]); -void de_walsh_matrix(short int before_interleave[119], short int before_WH[51]); -void de_scramble(short int befor_WH[51], char before_scramble[51]); -void de_crc(char before_scramble[51], char packed[28]); -void generate_crc(char datas[28], char crc[17], int length); -void unpack(char packed[28], char call[7]); -char de_normalizer(int bc, int byte_num); -void print_help(); -void print_short_int(const char* caption, short int* code, int length); -void print_str(const char* caption, char* code); -void strcpy_w(char * s1, char * s2, int length); -void strcat_w(char * s1, char * s2, int lenS1, int lenS2); - -//********************************** -int main(int argc, char* argv[]) -//********************************** -{ - char s1 = 0x00; - int i; - - printf("argc=%d\n", argc); - switch(argc) - { - case 1 : // Help required - { - printf("%s\n","More argument is required !"); - print_help(); - return 0; - } - case 2 : // 2 arguments - { - s1 = (char) argv[1][0]; - - if ((s1 == '?') && (argv[1][1] == 0x00)) - { - printf("%s\n", "Help selected"); - print_help(); - return 0; - } - else if ((s1 == 'd' || s1 == 's' || s1 == 'w') && (argv[1][1] == 0x00)) - { - if (s1 =='d') - { - printf("%s\n", "Debug selected."); - DEBUG = 1; - for (i = 0; i < 239; i++) - symbol[i] = call_AA1AA[i]; - decode_opera(symbol); - DEBUG = 0; - return 0; - } - else if (s1 == 's') - { - printf("%s\n", "Sample selected."); - for (i = 0; i < 239; i++) - symbol[i] = call_F5OEO[i]; - decode_opera(symbol); - DEBUG = 0; - return 0; - } - else - { - printf("%s\n", "Sample 7L1RLL selected."); - DEBUG = 0; - for (i = 0; i < 239; i++) - symbol[i] = call_7L1RLL[i]; - decode_opera(symbol); - DEBUG = 0; - return 0; - } - } - } - default : // 3 arguments - { - printf("%s\n", "Too many arguments."); - print_help(); - return 0; - } - } -} // end of _tmain() - -//************************************************** -void decode_opera(short int * symbol) -//************************************************** -{ - print_short_int("symbol given =", symbol, 239); - manchester_decode(symbol, interleaved); - print_short_int("de_manchester code =", interleaved, 119); - if (DEBUG) - print_short_int("de_manchester_target =", interleave_target, 119); - de_interleave(interleaved, before_interleave); - print_short_int("de_interleave =", before_interleave, 119); - if (DEBUG) - print_short_int("de_interleave_target =", before_interleave_target, 119); - de_walsh_matrix(before_interleave, before_WH); - print_short_int("de_Walsh-Hamadard =", before_WH, 51); - if (DEBUG) - print_short_int("de_WH_target =", before_WH_target, 51); - de_scramble(before_WH, before_scramble); - print_str("de_scramble = ", before_scramble); - if (DEBUG) - print_str("de_scramble_target = ", before_scramble_target); - de_crc(before_scramble, packed); - print_str("de_CRC = ", packed); - if (DEBUG) - print_str("de_CRC_target = ", packed_target); - unpack(packed, call); - printf("unpached call = %s\n", call); - if (DEBUG) - printf("call_target = %s\n", call_target); -} // end of decode_opera() - -//*********************************************************************** -void manchester_decode(short int* symbol, short int* symbol_interleaving) -//*********************************************************************** -{ - int i = 0; - int idx = 0; // delete start 2 bit - - while (idx < 238) - { - if ((symbol[idx + 1] == 1) && (symbol[idx + 2] == 0)) - { - symbol_interleaving[i] = (short) 0; - } - else if ((symbol[idx + 1] == 0) && (symbol[idx + 2] == 1)) - { - symbol_interleaving[i] = (short) 1; - } - else - { - error_position[idx] = (short) 1; - } - i++; idx += 2; - } -} // end of manchester_decode() - -//************************************************************************ -void de_interleave(short int* interleaved, short int* before_interleave) -//************************************************************************ -{ - int i =0, idx = 0, j = 0; - - for (i = 0; i < 7; i++) - { - for (j = i; j < 119; j += 7) - { - before_interleave[j] = interleaved[idx]; - idx++; - } - } -} // end of de_interleave - -//********************************************************************* -void de_walsh_matrix(short int* vector_to_tx, short int* symbol_coding) -//********************************************************************* -{ // 119 bit to 51 bit - int idx = 0, i, j, k, data = 0; - short int temp[7]; - - for (i = 0; i < 119; i += 7) - { - for(j = 0; j < 7; j++) temp[j] = vector_to_tx[i + j]; - temp[7]=0x00; - - // search the value for match - data = 0; - for (k = 0; k < 7; k++) - { - if (k < 6) - { - data = data + (int) pow((double)(temp[k]*2), (6 - k)); - } - else if (k == 6) - { - if (temp[6] == 1) data = data + 1; - } - } - if (data == 0) // 0000000 = 0 - { - symbol_coding[idx + 0] = 0; - symbol_coding[idx + 1] = 0; - symbol_coding[idx + 2] = 0; - } - else if (data == 85) // 1010101 = 2^6 + 2^4 + 2^2 + 1 = 85 - { - symbol_coding[idx + 0] = 0; - symbol_coding[idx + 1] = 0; - symbol_coding[idx + 2] = 1; - } - else if (data == 51) // 0110011 = 2^5 + 2^4 + 2 + 1 = 51 - { - symbol_coding[idx + 0] = 0; - symbol_coding[idx + 1] = 1; - symbol_coding[idx + 2] = 0; - } - else if (data == 102) // 1100110 = 2^6 + 2^5 + 2^2 + 2 = 102 - { - symbol_coding[idx + 0] = 0; - symbol_coding[idx + 1] = 1; - symbol_coding[idx + 2] = 1; - } - else if (data == 15) // 0001111 = 2^3 + 2^2 + 2 + 1 = 15 - { - symbol_coding[idx + 0] = 1; - symbol_coding[idx + 1] = 0; - symbol_coding[idx + 2] = 0; - } - else if (data == 90) // 1011010 = 2^6 + 2^4 + 2^3 + 2 = 90 - { - symbol_coding[idx + 0] = 1; - symbol_coding[idx + 1] = 0; - symbol_coding[idx + 2] = 1; - } - else if (data == 60) //0111100 = 2^5 + 2^4 + 2^3 + 2^2 = 60 - { - symbol_coding[idx + 0] = 1; - symbol_coding[idx + 1] = 1; - symbol_coding[idx + 2] = 0; - } - else if (data == 105) // 1101001 = 2^6 + 2^5 + 2^3 + 1 = 105 - { - symbol_coding[idx + 0] = 1; - symbol_coding[idx + 1] = 1; - symbol_coding[idx + 2] = 1; - } - else printf("xxxx"); - - idx +=3; - - } -} // enf of de-WH - -//************************************************************ -void de_scramble(short int * vector_to_tx, char * vector) -//************************************************************ -{ // | 51 bit | to | 51 bit | - short int vector_temp[51]; - int i; - - // convert binary to ASCII - for (i = 0; i < 51; i++) - { - vector_temp[i] = vector_to_tx[i] ^ pseudo_sequence[i]; - vector[i] = (char) vector_temp[i] + 0x30; - } -} //end of de_scramble() - -//************************************************* -void de_crc(char * vector, char * packed) -//************************************************* -{ // 51 bits to 28bits - - char crc1[17], crc1a[17], crc2[4], crc2a[4]; - int i, crc_ok; - char temp[52] = {0}; - - // extract packed from received data - for (i = 0; i < 28; i++) //4..31 for packed - packed[i] = temp[i] = vector[i + 4]; - packed[28] = temp[28] = 0x00; - - if (DEBUG) - print_str("temp in de_crc = ", temp); - if (DEBUG) - print_str("packed in de_crc = ", packed); - - // extract crc1 from received data - for (i = 0; i < 16; i++) //32..47 for crc1 - crc1[i] = vector[i + 32]; - crc1[16] = 0x00; - - if (DEBUG) - print_str("crc1 exracted from received data = ", crc1); - - //crc2 extracted from received data - for (i = 0; i < 3; i++) //48..50 for crc2 - crc2[i] = vector[i + 48]; - crc2[3] = 0x00; - - if (DEBUG) - print_str("crc2 extracted from received data = ", crc2); - - generate_crc(temp, crc1a, 16); - if (DEBUG) - print_str("temp before crc add = ", temp); - if (DEBUG) - print_str("crc1a calcurated = ", crc1a); - strcat_w(temp, crc1a, 28, 16); // 28 + 16 = 44 - - generate_crc(temp, crc2a, 3); - strcat_w(temp, crc2a, 44, 3); // 44 + 3 = 47 - - // verify crc1 and crc2 - crc_ok = 1; - for (i = 0; i < 16; i++) - if (crc1[i] != crc1a[i]) crc_ok = 0; - for (i = 0; i < 3; i++) - if (crc2[i] != crc2a[i]) crc_ok = 0; - if (crc_ok) - printf("CRC : OK\n"); - else - { - printf("CRC : No good\n"); - print_str("crc1a calcurated = ", crc1a); - print_str("crc1_received = ", crc1); - print_str("crc2a calcurated = ", crc2a); - print_str("crc2a_received = ", crc2); - } - -} //end of de_crc() - -//************************************************************************ -void generate_crc(char * datas, char * crc, int length) -//************************************************************************ -{ // 32 + 16(length) = 48 or 48 + 3(length) = 51 - // CRC16-IBM : Polynominal = X16+X15+X2+1 = 1000 0000 0000 0101 - // This function is a copy of JUMA TX136/500 control program - // whitch was written by F4GCB (Patrick). Thanks Patrick. - - int i, j, k, len; - char buffer[52]; - short int wcrc[17] = {0}, byte1 = 0, byte2 = 0; - - len = strlen(datas); - for (i = 0; i < len; i++) - buffer[i] = datas[i]; - buffer[len] = 0x00; - if (DEBUG) - print_str("input datas in generate_crc =", buffer); - - for (i = 0; i < len; i++) - { - for (j = 0; j < 8; j++) - { - if (j > 0) buffer[i] = buffer[i] >> 1; - byte1 = buffer[i] & 0x01; - byte2 = byte1 ^ wcrc[0]; // XOR with X16 - wcrc[0] = byte2 ^ wcrc[1]; // XOR with X15 - for (k = 1; k < 13; k++) - wcrc[k] = wcrc[k + 1]; - wcrc[13] = byte2 ^ wcrc[14]; // XOR with X2 - wcrc[14] = wcrc[15]; // - wcrc[15] = byte2; // - } - } - - // if msb byte crc = 0 then value at 27 - byte2 = 0; - for (i = 0; i < 8; i++) - byte2 = byte2 + (int)(wcrc[i] * pow (2.0, i)); - if (byte2 == 0) byte2 = 27; // 0x1B = 0b0001 1011 - - // if lsb byte crc = 0 then value at 43 - byte1 = 0; - for (i = 8; i < 16; i++) - byte1 = byte1 + (int)(wcrc[i] * pow(2.0, i - 8)); - if (byte1 == 0) byte1 = 43; // 0x2B = 0b0010 1011 - - if (DEBUG) - printf("byte1 before replace =%2x, byte2 =%2x\n", byte1, byte2); - - // merge crc into a bit string - for (i = 0; i < 8; i++) - { - if (i > 0) byte2 = byte2 >> 1; - wcrc[7 - i] = byte2 & 0x01; // (binary) - if (i > 0) byte1 = byte1 >> 1; - wcrc[15 - i] = byte1 & 0x01; // (binary) - } - if (length > 16) length = 16; - for (i = 16 - length; i < 16; i++) - crc[i - (16 - length)] = wcrc[i] + 0x30; - crc[length]= 0x00; - if (DEBUG) - print_str("crc =", crc); -} // end of generate_crc() - -//************************************* -void unpack(char * packed, char * call) -//************************************* -{ // 28 bits to 48 bits - int i; - int temp; - unsigned long code_sum = 0, remains = 0; - - if (DEBUG) - print_str("packed in unpack = ", packed); - - // separate a string to coded callsign - - for (i = 0; i < 28; i++) - code_sum = code_sum + (unsigned long)(packed[27 - i] - '0') * pow(2.0, i); - - // de_normalizer of callsign - remains = 36*10*27*27*27; - if (DEBUG) - { - printf(" 0 : code_sum = %9Lu\n", code_sum); - printf(" 0 : remains = %9Lu\n", remains); - } - - if (code_sum > remains) - { - temp = code_sum / remains; - code_sum %= remains; - } - else temp = 0; - if (DEBUG) - printf(" 0 : temp = %9Lu\n", temp); - call[0] = de_normalizer(temp, 0); - - remains = 10*27*27*27; - if (DEBUG) - { - printf(" 1 : code_sum = %9Lu\n", code_sum); - printf(" 1 : remains = %9Lu\n", remains); - } - if (code_sum >= remains) - { - temp = code_sum / remains; - code_sum %= remains; - } - else temp = 0; - if (DEBUG) - printf(" 1 : temp = %9Lu\n", temp); - call[1] = de_normalizer(temp, 1); - - remains = 27*27*27; - if (DEBUG) - { - printf(" 2 : code_sum = %9Lu\n", code_sum); - printf(" 2 : remains = %9Lu\n", remains); - } - if (code_sum >= remains) - { - temp = code_sum / remains; - code_sum %= remains; - } - else temp = 0; - if (DEBUG) - printf(" 2 : temp = %9Lu\n", temp); - call[2] = de_normalizer(temp, 2); - - remains = 27*27; - if (DEBUG) - { - printf(" 3 : code_sum = %9Lu\n", code_sum); - printf(" 3 : remains = %9Lu\n", remains); - } - if (code_sum >= remains) - { - temp = code_sum / remains; - code_sum %= remains; - } - else temp = 0; - if (DEBUG) - printf(" 3 : temp = %9Lu\n", temp); - call[3] = de_normalizer(temp, 3); - - remains = 27; - if (DEBUG) - { - printf(" 4 : code_sum = %9Lu\n", code_sum); - printf(" 4 : remains = %9Lu\n", remains); - } - if (code_sum >= remains) - { - temp = code_sum / remains; - code_sum %= remains; - } - else temp = 0; - if (DEBUG) - printf(" 4 : temp = %9Lu\n", temp); - call[4] = de_normalizer(temp, 4); - - remains = 1; - if (DEBUG) - { - printf(" 5 : code_sum = %9Lu\n", code_sum); - printf(" 5 : remains = %9Lu\n", remains); - } - if (code_sum >= remains) - { - temp = code_sum; - //code_sum %= remains; - } - else temp = 0; - if (DEBUG) - printf(" 5 : temp = %9Lu\n", temp); - call[5] = de_normalizer(temp, 5); - - call[6] = 0x00; -} // end of unpack - -//******************************** -char de_normalizer(int bc, int n) -//******************************** -{ - char cc = 0; - - if (DEBUG) - printf(" %u : input of de_normalizer, bc = %9Lu\n", n, bc); - switch (n) - { - case 0 : - { - if (bc == 0) cc = ' '; - else if (bc >= 1 && bc <= 26) cc = bc - 1 +'A'; - else if (bc >= 27 && bc <= 37) cc = bc - 27 + '0'; - break; - } - case 1 : - { - if (bc >= 0 && bc <= 25) cc = bc + 'A'; - else if (bc >= 26 && bc <= 36) cc = bc - 26 + '0'; - break; - } - case 2 : - { - if (bc >= 0 && bc <= 9) cc = bc + '0'; - break; - } - case 3: case 4: case 5: - { - if (bc == 0) cc = ' '; - else if (bc >= 1 && bc <= 26) cc = bc - 1 + 'A'; - break; - } - default : break; - } - if (DEBUG) - printf(" %u : output of de_normalizer, cc = %c\n", n, cc); - return (cc); -} // end of de _normlizer - -//******************************************************************** -void print_short_int(const char *caption, short int *code, int length) -//******************************************************************** -{ // This is a service function for debugging - int i = 0; - - printf("%s\n", caption); - for (i = 0; i < length; i++) - { - printf("%u", code[i]); - if (((i + 1) % 4) == 0) printf(" "); - if (((i + 1) % 40) == 0) printf("\n"); - } - printf("\n"); -} // end fo print_short_int - -//******************************************************************** -void print_short_char(const char * caption, char * code, int length) -//******************************************************************** -{ // This is a service function for debugging - int i = 0; - - printf("%s\n", caption); - for (i = 0; i < length; i++) - { - printf("%c", code[i]); - if (((i + 1) % 4) == 0) printf(" "); - if (((i + 1) % 40) == 0) printf("\n"); - } - printf("\n"); -} // end fo print_short_char - -//******************************************************************** -void print_str(const char * caption, char * code) -//******************************************************************** -{ // This is a service function for debugging - int i = 0; - - printf("%s\n", caption); - for (i = 0; i < strlen(code); i++) - { - printf("%c", code[i]); - if (((i + 1) % 4) == 0) printf(" "); - if (((i + 1) % 40) == 0) printf("\n"); - } - printf("\n"); -} // end fo print_char -//******************************************************* -void strcpy_w(char * s1, char * s2, int length) -//******************************************************* -{ - int i; - - for (i = 0; i < length; i++) - s1[i] = s2[i]; - s1[length] = 0x00; -} // end of strcpy_w - -//**************************************************************** -void strcat_w(char * s1, char * s2, int lenS1, int lenS2) -//**************************************************************** -{ - int i; - - for (i = 0; i < lenS2; i++) - s1[i + lenS1] = s2[i]; - s1[lenS1 + lenS2]= 0x00; - -} // end of strcat_w() - -//*************** -void print_help() -//*************** -{ - printf("%s\n","Usage : OPERA_Decode_Test [ ? | d | s | w]"); - printf("%s\n"," Help : OPERA_Decode_Test ?"); - printf("%s\n"," Debug : OPERA_Decode_Test d"); - printf("%s\n"," AA1AA : OPERA_Decode_Test s"); - printf("%s\n"," 7L1RLL : OPERA_Decode_Test w"); - printf("%s\n"," Sample callsign is \"AA1AA\". "); -} // end of help - -//************** End of Program ************************************** diff --git a/opera/opera.c b/opera/opera.c deleted file mode 100644 index d0785a3..0000000 --- a/opera/opera.c +++ /dev/null @@ -1,515 +0,0 @@ -//****************************************************************************** -// OPERA_Coding_Test.cpp : Defines the entry point for the console application. -// -// Purpose : Algorithm testing by a laptop computer before implementation -// into PIC micro processor. -// -// Usage: "OPERA_Coding_Test [? | d | s] ["callsign"]"; -// where : s = help, d = debug and s = sample"; -// -// Version 1.0.4, 2015/11/29: Modified print format -// Version 1.0.3, 2015/11/13: Delete an additional start bit for decoder -// Version 1.0.2, 2015/11/11: Add Visual C++ directives -// Version 1.0.1, 2015/11/10: Changed help message -// Version 1.0.0, 2015/11/07: Initial Release -// -// Copyright(C) 2015 F4GCB -// Partial copyright (C)2015 7L1RLL -// Partial copyright (C)2017 F5OEO Add output format to Rpitx RFA Mode -// - -// Acknowledgement : -// 1)Portion of this OPERA is derived from the work of EA5HVK. -// 2)All functions of this program are a copy of JUMA-TX500/136 -// Transmitter Controller which written by F4GCB. -//****************************************************************************** - -//#include "stdafx.h" -//#include -//#include -#include "stdio.h" -#include "string.h" -#include -#include - #include - #include -#include "stdint.h" -#include "math.h" - -//#define __VCpp__ TRUE - -// Grobal Variables - -int FileFreqTiming; -// Test program using SNDFILE -// see http://www.mega-nerd.com/libsndfile/api.html for API - -void WriteTone(double Frequency,uint32_t Timing) -{ - typedef struct { - double Frequency; - uint32_t WaitForThisSample; - } samplerf_t; - samplerf_t RfSample; - - RfSample.Frequency=Frequency; - RfSample.WaitForThisSample=Timing; //en 100 de nanosecond - //printf("Freq =%f Timing=%d\n",RfSample.Frequency,RfSample.WaitForThisSample); - if (write(FileFreqTiming,&RfSample,sizeof(samplerf_t)) != sizeof(samplerf_t)) { - fprintf(stderr, "Unable to write sample\n"); - } - -} - -static const short int pseudo_sequence[51] = { - 1,1,1,0,0,0,0,1,0,1, 0,1,0,1,1,1,1,1,1,0, 0,1,1,0,1,1,0,1,0,0, 0,0,0,0,0,1,1,0,0,1, - 0,0,0,1,0,1,0,1,0,1, 1 -}; -static short int walsh_matrix[8][7] = { - {0,0,0,0,0,0,0},{1,0,1,0,1,0,1},{0,1,1,0,0,1,1},{1,1,0,0,1,1,0}, - {0,0,0,1,1,1,1},{1,0,1,1,0,1,0},{0,1,1,1,1,0,0},{1,1,0,1,0,0,1} -}; -static short int symbol[239]; -char call[7], call_coded[45], vector[52]; -short int vector_to_tx[51]; -short int symbol_interleaving[119], symbol_coding[119]; -short int DEBUG = 0; -const char sampleCall[7] = "AA1AA"; - -// Declaration of functions - -void genn_opera(float mode); -void generate_call(char call[7], char call_coded[45]); -void add_crc16(char call_coded[45], char vector[52]); -void scramble(char vector[52], short int symbol_coding[119]); -void Walsh_Hammered_code(short int symbol_coding[119], short int vector_to_tx[51]); -void interleave(short int vector_to_tx[51], short int symbol_interleaving[119]); -void ManchesterEncode(short int symbol_interleaving[119], short int symbol[239]); -char chr_norm_opera(char bc); - -void print_short_int(const char caption[], short int code[239], int length); -void print_str(const char caption[250], char code[52]); -void strcpy_w(char s1[52], char s2[52], int length); -void strcat_w(char s1[52], char s2[52], int lenS1, int lenS2); -void encodepitx(short int *code, int length,float Nop); - -#ifdef __VCpp__ -//********************************** -// main forVisual C++ -int _tmain(int argc, _TCHAR* argv[]) -//********************************** -{ - _tsetlocale(LC_ALL, _T("")); //Change Unicode to OS-Default locale -#else - int main(int argc, char* argv[]) -//********************************** - { -#endif - int i = 0; - char s1 = 0x00, s2[7] = ""; - - - switch (argc) - { - case 1 : // Help required - case 2 : // Help required - case 3 : // Help required - { - printf("Usage : %s CALLSIGN OperaMode[0.5,1,2,4,8} file.rfa \n", argv[0]); - - return 0; - } - case 4: // 3 arguments - { - s1 = (char)argv[1][0]; - - // range check - if (!((argv[1][0] >= '0' && argv[1][0] <= '9') || (argv[1][0] >= 'A' && argv[1][0] <= 'Z') || - (argv[1][0] >= 'a' && argv[1][0] <= 'z'))) - { - printf("%s\n","Callsign must be began with an alphan/numeric character"); - - return 0; - } - DEBUG = 0; i = 0; - while (argv[1][i] != 0 && i < 7) - { - call[i] = argv[1][i]; call[++i] = 0x00; - } - - float Mode=atof(argv[2]); - - FileFreqTiming = open( argv[3], O_WRONLY|O_CREAT, 0644); - genn_opera(Mode); - return 0; - - } - - default: - { - printf("Usage : %s CALLSIGN OperaMode[0.5,1,2,4,8} file.rfa \n", argv[0]); - break; - } - } // end of switch argc - return 0; -} // end of _tmain - -//******************* -void genn_opera(float mode) -//******************* -{ - printf("\nGenerate Op%.1f Callsign = %s\n",mode,call); - - generate_call(call, call_coded); - if (DEBUG) - print_str("call_coded =", call_coded); - - add_crc16(call_coded, vector); - - if (DEBUG) - print_str("crc16 vector =", vector); - - scramble(vector, vector_to_tx); - if (DEBUG) - print_short_int("vector_to_tx =", vector_to_tx, 44); - - Walsh_Hammered_code(vector_to_tx, symbol_coding); - if (DEBUG) - print_short_int("symbol_coding =", symbol_coding, 119); - - interleave(symbol_coding, symbol_interleaving); - if (DEBUG) - print_short_int("symbol_interleaving =", symbol_interleaving, 119); - - ManchesterEncode(symbol_interleaving, symbol); - //print_short_int("symbol =", symbol, 239); - encodepitx(symbol,239,mode); - -} // genn_opera - -//**************************************************** -// Normalize characters space S..Z 0..9 in order 0..36 -char chr_norm_opera(char bc) -//**************************************************** -{ - char cc = 0; - - if (bc >= '0' && bc <= '9') cc = bc - '0' + 27; - if (bc >= 'A' && bc <= 'Z') cc = bc - 'A' + 1; - if (bc >= 'a' && bc <= 'z') cc = bc - 'a' + 1; - if (bc == ' ') cc = 0; - - return (cc); -} // enf of chr_norm_opera - -//********************************************** -void generate_call(char *call, char *call_coded) -//********************************************** -{ - int i; - unsigned long code_sum; - - //the thired character must always be a number - if (chr_norm_opera(call[2]) < 27) - { - for (i=5; i> 0; i--) call[i] = call[i-1]; - call[0]=' '; - } - - // the call must always have 6 characters - for (i=strlen(call); i < 6; i++) - call[i] = ' '; - call[6] = 0x00; - - if (DEBUG) printf("NormalizedCall=%s\n", call); - code_sum = chr_norm_opera(call[0]); - code_sum = code_sum * 36 + chr_norm_opera(call[1]) - 1; - code_sum = code_sum * 10 + chr_norm_opera(call[2]) - 27; - code_sum = code_sum * 27 + chr_norm_opera(call[3]); - code_sum = code_sum * 27 + chr_norm_opera(call[4]); - code_sum = code_sum * 27 + chr_norm_opera(call[5]); - - if (DEBUG) printf("code_sum=%Lu\n", code_sum); - - // merge coded callsign ino a string - call_coded[28] = 0x00; - call_coded[27] = (short int) ((code_sum & 0x01) + 0x30); - for (i = 26; i >= 0; i--) - { - code_sum = code_sum >> 1; - call_coded[i] = (short int)((code_sum & 0x01) + 0x30); - } -} // end of pack_callsign - -//*************************************************** -void generate_crc(char *datas, char *crc, int length) -//*************************************************** -{ - unsigned int i, j, k; - char buffer[52]; //strlen(datas)]; - short int wcrc[16] = {0}, byte1 = 0, byte2 = 0; - -#ifdef __VCpp__ - strcpy_s(buffer, 52, datas);// strcpy(buffer, datas); -#else - strcpy(buffer, datas);// strcpy(buffer, datas); -#endif - if (DEBUG) - print_str("buffer_crc = ", buffer); - - for (i = 0; i < strlen(datas); i++) - { - for (j = 0; j < 8; j++) - { - if (j > 0) buffer[i] = buffer[i] >> 1; - byte1 = buffer[i] & 0x01; - byte2 = byte1 ^ wcrc[0]; - wcrc[0] = byte2 ^ wcrc[1]; - for (k = 1; k < 13; k++) - wcrc[k] = wcrc[k+1]; - wcrc[13] = byte2 ^ wcrc[14]; - wcrc[14] = wcrc[15]; - wcrc[15] = byte2; - } - } - - - // if msb byte crc = 0 then value at 27 - byte2 = 0; - for (i = 0; i < 8; i++) -#ifdef __VCpp__ // add for Visual C++ by 7L1RLL 11/07/2015 - byte2 = byte2 + (short) wcrc[i] * pow((double)2.0, (int)i); -#else - byte2 = byte2 + wcrc[i] * pow(2, i); -#endif - if (byte2 == 0) byte2 =27; - - // if lsb byte crc = 0 then value at 43 - byte1 = 0; - for (i = 8; i < 16; i++) -#ifdef __VCpp__ - byte1 = byte1 + (short) (wcrc[i] * (double)pow(2.0, (int)i - 8)); // add cast by 7L1RLL -#else - byte1 = byte1 + (wcrc[i] * pow(2, i - 8)); -#endif - if (byte1 == 0) byte1 = 43; - if (DEBUG) printf("byte1 = %x, byte2 = %x\n", byte1, byte2); - - // merge crc into a string - for (i = 0; i < 8; i++) - { - if (i > 0) byte2 = byte2 >> 1; - wcrc[7 - i] = byte2 & 0x01; - - if ( i > 0) byte1 = byte1 >> 1; - wcrc[15 - i] = byte1 & 0x01; - } - if (length > 16) length = 16; - for (i = 16 - length; i < 16; i++) - crc[i - (16 - length)] = wcrc[i] + 0x30; - crc[length] = 0x00; -} // end of genarate_crc - -//********************************************* -void add_crc16(char * call_coded, char *vector) -//********************************************* -{ // input: |28 bits|, output : |51 bits| - char crc1[17] = "", crc2[4] = ""; - -#ifdef __VCpp__ // for wide character compiler - char temp[52] = ""; - - _tsetlocale(LC_ALL, _T("")); //Change Unicode to OS-Default locale - - if (DEBUG) - print_str("call_coded in add CRC16 =", call_coded); - strcpy_w(temp, call_coded, 28); // 28 bit - if (DEBUG) - print_str("temp in add CRC16=", temp); - generate_crc(call_coded, crc1, 16); - if (DEBUG) - print_str("crc1 =", crc1); - strcat_w(temp, crc1, 28, 16); // 28 + 16 = 44 - generate_crc( temp, crc2, 3); - if (DEBUG) - print_str("crc2 =", crc2); -#else // PIC C compiler using ASCII -// char crc1[17] = "", crc2[4] = ""; - generate_crc(call_coded, crc1, 16); - if (DEBUG) printf("crc1 =%s\n", crc1); - generate_crc(strcat(call_coded, crc1), crc2, 3); - if (DEBUG) printf("crc2 =%s\n", crc2); -#endif - // |4 bits sync| + |28 bits call| + |19 bit crc| -#ifdef __VCpp__ - strcpy_w(vector, "0000", 4); // 4 - strcat_w(vector, temp, 4, 44); // 4 + 44 = 48 - strcat_w(vector, crc2, 48, 3); // 48 + 3 = 51 -#else // not VC++ ex : PIC - strcpy(vector, "0000"); // 4 - strcat(vector, call_coded); // 4 + 44 = 48 - strcat(vector, crc2); // 48 + 3 = 51 -#endif -} // end of add_crc16 - -//************************************************** -void scramble(char *vector, short int *vector_to_tx) -//************************************************** -{ // encoding |51 bits| - int i=0; - - for (i = 0; i < 51; i++) - { - vector_to_tx[i] = vector[i] & 0x01; - // convert ASCII to binary - vector_to_tx[i] = vector_to_tx[i] ^ pseudo_sequence[i]; - } -} // end of scrambling - -//************************************************************************* -void Walsh_Hammered_code(short int *vector_to_tx, short int *symbol_coding) -//************************************************************************* -{ // order 8 walsh matrix codification : |119 bits| - int data = 0, idx = 0, i = 0, j = 0; - - for (i = 0; i < 51; i += 3) - { - data = 0; - for (j = 0; j < 3; j++) - data = data + (vector_to_tx[i + j] << (2 - j)); - for (j = 0; j < 7; j++) - { - symbol_coding[idx] = walsh_matrix[data][j]; - idx++; - } - } -} //end of Walsh_Hammered_code - -//*********************************************************************** -void interleave(short int *symbol_coding, short int *symbol_interleaving) -//*********************************************************************** -{ // interleaving : |119 bits| - int idx = 0, i = 0, j = 0; - - idx = 0; - for (i = 0; i < 7; i++) - { - for (j = i; j < 119; j += 7) - { - symbol_interleaving[idx]= symbol_coding[j]; - idx++; - } - } -} // end of interleave - -//********************************************************************** -void ManchesterEncode(short int *symbol_interleaving, short int *symbol) -//********************************************************************** -{ // manchester codification : |11| + |238 bits| - |1 bit| modified by 7L1RLL 11/07/2015 - int idx = 0; - int i = 0, j = 0; - - symbol[0] = 1; - for (i = 0; i < 119; i++) - { - if (symbol_interleaving[i] == 0) - { - symbol[idx + 1] = 1; - symbol[idx + 2] = 0; - } - else - { - symbol[idx + 1] = 0; - symbol[idx + 2] = 1; - } - idx += 2; - } -} // end of Manchester_encode - -//*************** -void print_help() -//*************** -{ - printf("%s\n","Usage : OPERA_Coding_Test [? | s | [d \"callsign\"]]"); - printf("%s\n"," Normal : OPERA_Coding_Test \"callsign\""); - printf("%s\n"," Help : OPERA_Coding_Test ?"); - printf("%s\n"," Sample : OPERA_Coding_Test s"); - printf("%s\n"," Debug : OPERA_Coding_Test d \"callsign\""); - printf("%s\n"," Callsign format shall be like \"AA1AAA\". "); - printf("%s\n"," Third character mast be a numeric character(0..9)."); -} // end of help - -//******************************************************************** -void print_short_int(const char *caption, short int *code, int length) -//******************************************************************** -{ // This is service function for debugging - int i = 0; - - printf("%s\n", caption); - for (i = 0; i < length; i++) - { - printf("%d", code[i]); - if (((i+1) % 4) == 0) printf(" "); - if (((i+1) % 40) == 0) printf("\n"); - } - printf("\n"); -} // end fo print_short_int - - -void encodepitx(short int *code, int length,float Nop) -{ - int i = 0; - int j=0; - /*and each of the -239 symbols are transmitted by keying the transmitter as CW on and off with a symbol -rate of 0.256*n s/symbol, where n is the integer of operation mode OPn that corresponds -with the Opera frequency recommendation: */ - //WriteTone(1*32767,1e6*(256*Nop)); - WriteTone(1*32767,1e6*(256*Nop)); - for (i = 0; i < length-1; i++) - { - //for(j=0;j<1000;j++) - WriteTone(code[i]*32767,1e6*(256*Nop)); //AM - //WriteTone(code[i]*100000,1e6*(256*Nop)); //FM - } -} - - -//******************************************************************** -void print_str(const char * caption, char * code) -//******************************************************************** -{ // This is a service function for debugging - int i = 0; - - printf("%s\n", caption); - for (i = 0; i < strlen(code); i++) - { - printf("%c", code[i]); - if (((i + 1) % 4) == 0) printf(" "); - if (((i + 1) % 40) == 0) printf("\n"); - } - printf("\n"); -} // end fo print_str -//******************************************************* -void strcpy_w(char * s1, char * s2, int length) -//******************************************************* -{ - int i; - - for (i = 0; i < length; i++) - s1[i] = s2[i]; - s1[length] = 0x00; -} // end of strcpy_w - -//**************************************************************** -void strcat_w(char * s1, char * s2, int lenS1, int lenS2) -//**************************************************************** -{ - int i; - - for (i = 0; i < lenS2; i++) - s1[i + lenS1] = s2[i]; - s1[lenS1 + lenS2]= 0x00; - -} // end of strcat_w() -//************** End of Program ******************************** diff --git a/src/LICENSE b/src/LICENSE deleted file mode 100644 index 5a04618..0000000 --- a/src/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Andrew Duncan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 7e04323..0000000 --- a/src/Makefile +++ /dev/null @@ -1,80 +0,0 @@ -#all: ../rpitx ../pissb ../pisstv ../pifsq ../pifm ../piam ../pidcf77 ../piopera -all: librpitx v2rpitx ../rpitx ../pissb ../pisstv ../pifsq ../pifm ../piam ../pidcf77 ../piopera - -#CFLAGS = -Wall -g -O2 -D DIGITHIN -CFLAGS = -Wall -g -O2 -Wno-unused-variable -LDFLAGS = -lm -lrt -lpthread - - -../rpitx: RpiGpio.c RpiTx.c mailbox.c RpiDma.c raspberry_pi_revision.c calibrationpi2.h calibrationpizero.h calibrationpi3.h - $(CC) $(CFLAGS) -o ../rpitx RpiTx.c RpiGpio.c mailbox.c RpiDma.c raspberry_pi_revision.c $(LDFLAGS) - - -CFLAGS = -Wall -g -O3 -Wno-unused-variable -LDFLAGS = -lm -lrt -lpthread -lliquid -CCP = g++ -CC = gcc - -librpitx: librpitx.h gpio.h gpio.cpp dma.h dma.cpp mailbox.c raspberry_pi_revision.c fmdmasync.h fmdmasync.cpp ngfmdmasync.h ngfmdmasync.cpp dsp.h dsp.cpp iqdmasync.h iqdmasync.cpp serialdmasync.h serialdmasync.cpp phasedmasync.h phasedmasync.cpp fskburst.h fskburst.cpp - $(CC) $(CFLAGS) -c -o mailbox.o mailbox.c - $(CC) $(CFLAGS) -c -o raspberry_pi_revision.o raspberry_pi_revision.c - $(CCP) $(CFLAGS) -c dsp.cpp iqdmasync.cpp ngfmdmasync.cpp fmdmasync.cpp dma.cpp gpio.cpp mailbox.o raspberry_pi_revision.o v2rpitx.cpp serialdmasync.cpp phasedmasync.cpp amdmasync.h amdmasync.cpp fskburst.cpp - $(AR) rc librpitx.a dsp.o iqdmasync.o ngfmdmasync.o fmdmasync.o dma.o gpio.o mailbox.o raspberry_pi_revision.o serialdmasync.o phasedmasync.o amdmasync.o fskburst.o - -v2rpitx: librpitx.h librpitx.a - - $(CCP) $(CFLAGS) -o v2rpitx v2rpitx.cpp librpitx.a $(LDFLAGS) - - - -CFLAGS_Pissb = -Wall -g -O2 -Wno-unused-variable -LDFLAGS_Pissb = -lm -lrt -lpthread -lsndfile - -../pissb: ../ssbgen/test_ssb.c ../ssbgen/ssb_gen.c - $(CC) $(CFLAGS_Pissb) -o ../pissb ../ssbgen/ssb_gen.c ../ssbgen/test_ssb.c $(LDFLAGS_Pissb) - -CFLAGS_Pisstv = -Wall -g -O2 -Wno-unused-variable -LDFLAGS_Pisstv = -lm -lrt -lpthread -../pisstv : ../sstv/v2pisstv.cpp - $(CCP) $(CFLAGS_Pisstv) -o ../pisstv ../sstv/v2pisstv.cpp ../src/librpitx.a $(LDFLAGS_Pisstv) - -CFLAGS_Pifsq = -Wall -g -O2 -Wno-unused-variable -LDFLAGS_Pifsq = -lm -lrt -lpthread -../pifsq : ../fsq/pifsq.c - $(CC) $(CFLAGS_Pisfq) -o ../pifsq ../fsq/pifsq.c $(LDFLAGS_Pisfq) - -CFLAGS_Pifm = -Wall -g -O2 -Wno-unused-variable -LDFLAGS_Pifm = -lm -lrt -lpthread -lsndfile -../pifm : ../fm/pifm.c - $(CC) $(CFLAGS_Pifm) -o ../pifm ../fm/pifm.c $(LDFLAGS_Pifm) - -CFLAGS_Piam = -Wall -g -O2 -Wno-unused-variable -LDFLAGS_Piam = -lm -lrt -lpthread -lsndfile -../piam : ../am/piam.c - $(CC) $(CFLAGS_Piam) -o ../piam ../am/piam.c $(LDFLAGS_Piam) - -CFLAGS_Pidcf77 = -Wall -g -O2 -Wno-unused-variable -LDFLAGS_Pidcf77 = -lm -lrt -lpthread -../pidcf77 : ../dcf77/pidcf77.c - $(CC) $(CFLAGS_Piam) -o ../pidcf77 ../dcf77/pidcf77.c $(LDFLAGS_Piam) - -CFLAGS_Piopera = -g -O2 -Wno-unused-variable -LDFLAGS_Piopera = -lm -../piopera : ../opera/opera.c - $(CC) $(CFLAGS_Piopera) -o ../piopera ../opera/opera.c $(LDFLAGS_Piopera) - -clean: - - rm -f ../rpitx ../pissb ../pisstv ../pifsq ../pifm ../piam ../pidcf77 v2rpitx RpiTx.o mailbox.o RpiGpio.o RpiDma.o - -install: all - install -m 0755 ../pisstv /usr/bin - install -m 0755 ../pifm /usr/bin - install -m 0755 ../piam /usr/bin - install -m 0755 ../pissb /usr/bin - install -m 0755 ../pifsq /usr/bin - install -m 0755 ../rpitx /usr/bin - install -m 0755 ../pidcf77 /usr/bin - install -m 0755 ../piopera /usr/bin - cp dt-blob.bin /boot/ - $(info !!! You should reboot if it is the first installation !!!) diff --git a/src/RpiDma.c b/src/RpiDma.c deleted file mode 100644 index c23ff43..0000000 --- a/src/RpiDma.c +++ /dev/null @@ -1,119 +0,0 @@ -#include -#include -#include -#include "RpiDma.h" -#include "RpiGpio.h" - -static int compareInts(const void* first, const void* second) -{ - const int firstInt = *((int*)first); - const int secondInt = *((int*)second); - if (firstInt < secondInt) { - return -1; - } - if (firstInt == secondInt) { - return 0; - } - return 1; -} - -char InitDma(void *FunctionTerminate, int* skipSignals) -{ - DMA_CHANNEL=4; - char *line = NULL; - size_t size; - FILE * flinux = popen("uname -r", "r"); - if (flinux != NULL && getline(&line, &size, flinux) == -1) - { - fprintf(stderr, "Could no get Linux version\n"); - } - else - { - if(line[0]=='3') - { - printf("Wheezy\n"); - DMA_CHANNEL=DMA_CHANNEL_WHEEZY; - } - - if(line[0]=='4') - { - printf("Jessie\n"); - DMA_CHANNEL=DMA_CHANNEL_JESSIE; - } - - } - pclose(flinux); - //printf("Init DMA\n"); - - int sentinel[] = {0}; - if (skipSignals == NULL) { - skipSignals = sentinel; - } - int sentinelIndex; - for (sentinelIndex = 0; ; ++sentinelIndex) { - if (skipSignals[sentinelIndex] == 0) { - break; - } - } - qsort(skipSignals, sentinelIndex, sizeof(int), compareInts); - - // Catch all signals possible - it is vital we kill the DMA engine - // on process exit! - int i; - for (i = 0; i < 64; i++) { - // Some signals are fine, so don't catch them - if (i == *skipSignals) { - ++skipSignals; - } else { - struct sigaction sa; - - memset(&sa, 0, sizeof(sa)); - sa.sa_handler = FunctionTerminate;//terminate; - sigaction(i, &sa, NULL); - } - } - - //NUM_SAMPLES = NUM_SAMPLES_MAX; - - /* Use the mailbox interface to the VC to ask for physical memory */ - /* - unlink(MBFILE); - if (mknod(MBFILE, S_IFCHR|0600, makedev(100, 0)) < 0) - { - printf("Failed to create mailbox device\n"); - return 0; - }*/ - mbox.handle = mbox_open(); - if (mbox.handle < 0) - { - printf("Failed to open mailbox\n"); - return(0); - } - printf("%d Size NUM PAGES %d PAGE_SIZE %d\n",(sizeof(struct control_data_s)),NUM_PAGES,PAGE_SIZE); - mbox.mem_ref = mem_alloc(mbox.handle, NUM_PAGES* PAGE_SIZE, PAGE_SIZE, mem_flag); - /* TODO: How do we know that succeeded? */ - //printf("mem_ref %x\n", mbox.mem_ref); - mbox.bus_addr = mem_lock(mbox.handle, mbox.mem_ref); - //printf("bus_addr = %x\n", mbox.bus_addr); - mbox.virt_addr = mapmem(BUS_TO_PHYS(mbox.bus_addr), NUM_PAGES* PAGE_SIZE); - //printf("virt_addr %p\n", mbox.virt_addr); - virtbase = (uint8_t *)((uint32_t *)mbox.virt_addr); - //printf("virtbase %p\n", virtbase); - return(1); -} - -uint32_t mem_virt_to_phys(volatile void *virt) -{ - //MBOX METHOD - uint32_t offset = (uint8_t *)virt - mbox.virt_addr; - return mbox.bus_addr + offset; -} - -uint32_t mem_phys_to_virt(volatile uint32_t phys) -{ - //MBOX METHOD - uint32_t offset=phys-mbox.bus_addr; - uint32_t result=(uint32_t)((uint8_t *)mbox.virt_addr+offset); - //printf("MemtoVirt:Offset=%lx phys=%lx -> %lx\n",offset,phys,result); - return result; -} diff --git a/src/RpiDma.h b/src/RpiDma.h deleted file mode 100644 index 70078a8..0000000 --- a/src/RpiDma.h +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef RPI_DMA -#define RPI_DMA - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "mailbox.h" - -char InitDma(void *FunctionTerminate, int* skipSignals); -uint32_t mem_virt_to_phys(volatile void *virt); -uint32_t mem_phys_to_virt(volatile uint32_t phys); - -#define NBSAMPLES_PWM_FREQ_MAX 500 -#define NUM_CB_PWM_FREQUENCY 8 -//#define MBFILE DEVICE_FILE_NAME /* From mailbox.h */ -#define NUM_SAMPLES_MAX (4000) -#define CBS_SIZE_BY_SAMPLE (3) -#define NUM_CBS_MAIN ((NUM_SAMPLES_MAX * CBS_SIZE_BY_SAMPLE)) -#define NUM_CBS (NUM_CBS_MAIN) - -#define BCM2708_DMA_SRC_IGNOR (1<<11) -#define BCM2708_DMA_SRC_INC (1<<8) -#define BCM2708_DMA_DST_IGNOR (1<<7) -#define BCM2708_DMA_NO_WIDE_BURSTS (1<<26) -#define BCM2708_DMA_WAIT_RESP (1<<3) - -#define BCM2708_DMA_D_DREQ (1<<6) -#define BCM2708_DMA_PER_MAP(x) ((x)<<16) -#define BCM2708_DMA_END (1<<1) -#define BCM2708_DMA_RESET (1<<31) -#define BCM2708_DMA_ABORT (1<<30) -#define BCM2708_DMA_INT (1<<2) - -#define DMA_CS (0x00/4) -#define DMA_CONBLK_AD (0x04/4) -#define DMA_DEBUG (0x20/4) - -#define BUS_TO_PHYS(x) ((x)&~0xC0000000) - -#define DMA_CS_RESET (1<<31) -#define DMA_CS_ABORT (1<<30) -#define DMA_CS_DISDEBUG (1<<28) -#define DMA_CS_END (1<<1) -#define DMA_CS_ACTIVE (1<<0) -#define DMA_CS_PRIORITY(x) ((x)&0xf << 16) -#define DMA_CS_PANIC_PRIORITY(x) ((x)&0xf << 20) - -#define PAGE_SIZE 4096 -#define PAGE_SHIFT 12 -#define NUM_PAGES ((sizeof(struct control_data_s) + PAGE_SIZE - 1) >> PAGE_SHIFT) - -struct { - int handle; /* From mbox_open() */ - unsigned mem_ref; /* From mem_alloc() */ - unsigned bus_addr; /* From mem_lock() */ - uint8_t *virt_addr; /* From mapmem() */ -} mbox; - - -// The GPU reserves channels 1, 3, 6, and 7 (kernel mask dma.dmachans=0x7f35) -// And, I think sdcard will always get 2 and fbturbo zero -//8 Crash -// 5 seems OK, 14 ALSO -//cat /sys/module/dma/parameters/dmachans -//On Wheezy -//32565: 111111100110101 -//On Jessie Pi2: -//3893 : 111100110101 -// USE CHANNEL 4 AND 5 which seems to be free -// On Jessie, channel 4 and 5 seems to crash : set to DMA 8 . -#define DMA_CHANNEL_WHEEZY 14 -#define DMA_CHANNEL_JESSIE 5 -//#define DMA_CHANNEL_PWMFREQUENCY 5 - -char DMA_CHANNEL; - -//#define DMA_CHANNEL 8 - -#define DMA_CHANNEL_PWMFREQUENCY (DMA_CHANNEL+1) - -typedef struct { - uint32_t info, src, dst, length, - stride, next, pad[2]; -} dma_cb_t; - -typedef struct { - uint8_t *virtaddr; - uint32_t physaddr; -} page_map_t; - -page_map_t *page_map; - - uint8_t *virtbase; - -#define PWM_STEP_MAXI 200 - -typedef struct { - - uint32_t FrequencyTab[PWM_STEP_MAXI]; - uint32_t Amplitude1; - uint32_t Amplitude2; - -} sample_t; - - -struct control_data_s { - dma_cb_t cb[NUM_CBS];//+1 ?? - - sample_t sample[NUM_SAMPLES_MAX]; - - - - -}; - -struct control_data_s *ctl; - -#endif diff --git a/src/RpiGpio.c b/src/RpiGpio.c deleted file mode 100644 index e378e27..0000000 --- a/src/RpiGpio.c +++ /dev/null @@ -1,97 +0,0 @@ - - -#include "RpiGpio.h" -#include "mailbox.h" - - -static volatile unsigned int BCM2708_PERI_BASE; -static uint32_t dram_phys_base; - - -char InitGpio() -{ - int rev, mem, maker, overVolted ; - //printf("*********** Init GPIO *************\n"); - RASPBERRY_PI_INFO_T info; - - if (getRaspberryPiInformation(&info) > 0) - { - if(info.peripheralBase==RPI_BROADCOM_2835_PERIPHERAL_BASE) - { - BCM2708_PERI_BASE = info.peripheralBase ; - dram_phys_base = 0x40000000; - mem_flag = MEM_FLAG_L1_NONALLOCATING|MEM_FLAG_HINT_PERMALOCK|MEM_FLAG_NO_INIT;//0x0c; - } - - if((info.peripheralBase==RPI_BROADCOM_2836_PERIPHERAL_BASE)||(info.peripheralBase==RPI_BROADCOM_2837_PERIPHERAL_BASE)) - { - BCM2708_PERI_BASE = info.peripheralBase ; - dram_phys_base = 0xc0000000; - mem_flag = MEM_FLAG_L1_NONALLOCATING/*MEM_FLAG_DIRECT*/|MEM_FLAG_HINT_PERMALOCK|MEM_FLAG_NO_INIT;//0x04; - } - } - - DisplayInfo(); - - dma_reg = map_peripheral(DMA_BASE, DMA_LEN); - pwm_reg = map_peripheral(PWM_BASE, PWM_LEN); - clk_reg = map_peripheral(CLK_BASE, CLK_LEN); - - pcm_reg = map_peripheral(PCM_BASE, PCM_LEN); - gpio_reg = map_peripheral(GPIO_BASE, GPIO_LEN); - pad_gpios_reg = map_peripheral(PADS_GPIO, PADS_GPIO_LEN); - - return 1; -} - -void * map_peripheral(uint32_t base, uint32_t len) -{ - void * vaddr; - vaddr=mapmem(base,len); - //printf("Vaddr =%lx \n",vaddr); - return vaddr; -} - - -int gpioSetMode(unsigned gpio, unsigned mode) -{ - int reg, shift; - - reg = gpio/10; - shift = (gpio%10) * 3; - - gpio_reg[reg] = (gpio_reg[reg] & ~(7< 0) - { - printf("memory: %s\n", raspberryPiMemoryToString(info.memory)); - - printf("processor: %s\n", - raspberryPiProcessorToString(info.processor)); - - printf("i2cDevice: %s\n", - raspberryPiI2CDeviceToString(info.i2cDevice)); - - printf("model: %s\n", - raspberryPiModelToString(info.model)); - - printf("manufacturer: %s\n", - raspberryPiManufacturerToString(info.manufacturer)); - - printf("pcb revision: %d\n", info.pcbRevision); - - printf("warranty void: %s\n", (info.warrantyBit) ? "yes" : "no"); - - printf("revision: %04x\n", info.revisionNumber); - printf("peripheral base: 0x%x\n", info.peripheralBase); - } -} - - diff --git a/src/RpiGpio.h b/src/RpiGpio.h deleted file mode 100644 index 355d101..0000000 --- a/src/RpiGpio.h +++ /dev/null @@ -1,110 +0,0 @@ -#ifndef RPI_GPIO -#define RPI_GPIO - -#include -#include -#include -#include -#include -#include -#include -#include -#include "raspberry_pi_revision.h" - -char InitGpio(void); - -void DisplayInfo(); - -int model; -uint32_t mem_flag; - -volatile uint32_t *pwm_reg; -volatile uint32_t *clk_reg; -volatile uint32_t *dma_reg; -volatile uint32_t *gpio_reg; -volatile uint32_t *pcm_reg; -volatile uint32_t *pad_gpios_reg; - -void * map_peripheral(uint32_t base, uint32_t len); -int gpioSetMode(unsigned gpio, unsigned mode); -RASPBERRY_PI_INFO_T info; - -#define DMA_BASE (BCM2708_PERI_BASE + 0x00007000 ) -#define DMA_LEN 0xF00 -#define PWM_BASE (BCM2708_PERI_BASE + 0x0020C000) -#define PWM_LEN 0x28 -#define CLK_BASE (BCM2708_PERI_BASE + 0x00101000) -#define CLK_LEN 0xA8 -#define GPIO_BASE (BCM2708_PERI_BASE + 0x00200000) -#define GPIO_LEN 0xB4 -#define PCM_BASE (BCM2708_PERI_BASE + 0x00203000) -#define PCM_LEN 0x24 - -#define PADS_GPIO (BCM2708_PERI_BASE + 0x00100000) -#define PADS_GPIO_LEN (0x40/4) -#define PADS_GPIO_0 (0x2C/4) -#define PADS_GPIO_1 (0x30/4) -#define PADS_GPIO_2 (0x34/4) - - -#define PWM_CTL (0x00/4) -#define PWM_DMAC (0x08/4) -#define PWM_RNG1 (0x10/4) -#define PWM_RNG2 (0x20/4) -#define PWM_FIFO (0x18/4) - -#define PWMCLK_CNTL 40 -#define PWMCLK_DIV 41 - -#define GPCLK_CNTL (0x70/4) -#define GPCLK_DIV (0x74/4) - - -#define PWMCTL_MSEN2 (1<<15) -#define PWMCTL_USEF2 (1<<13) -#define PWMCTL_RPTL2 (1<<10) -#define PWMCTL_MODE2 (1<<9) -#define PWMCTL_PWEN2 (1<<8) - -#define PWMCTL_MSEN1 (1<<7) -#define PWMCTL_CLRF (1<<6) -#define PWMCTL_USEF1 (1<<5) -#define PWMCTL_POLA1 (1<<4) -#define PWMCTL_RPTL1 (1<<2) -#define PWMCTL_MODE1 (1<<1) -#define PWMCTL_PWEN1 (1<<0) - - -#define PWMDMAC_ENAB (1<<31) -#define PWMDMAC_THRSHLD ((15<<8)|(15<<0)) - -#define PCM_CS_A (0x00/4) -#define PCM_FIFO_A (0x04/4) -#define PCM_MODE_A (0x08/4) -#define PCM_RXC_A (0x0c/4) -#define PCM_TXC_A (0x10/4) -#define PCM_DREQ_A (0x14/4) -#define PCM_INTEN_A (0x18/4) -#define PCM_INT_STC_A (0x1c/4) -#define PCM_GRAY (0x20/4) - -#define PCMCLK_CNTL 38 -#define PCMCLK_DIV 39 - -#define GPFSEL0 (0x00/4) -#define GPFSEL1 (0x04/4) -#define GPFSEL2 (0x08/4) -#define GPPUD (0x94/4) -#define GPPUDCLK0 (0x9C/4) - -// ---- Memory allocating defines -// https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface -#define MEM_FLAG_DISCARDABLE (1 << 0) /* can be resized to 0 at any time. Use for cached data */ -#define MEM_FLAG_NORMAL (0 << 2) /* normal allocating alias. Don't use from ARM */ -#define MEM_FLAG_DIRECT (1 << 2) /* 0xC alias uncached */ -#define MEM_FLAG_COHERENT (2 << 2) /* 0x8 alias. Non-allocating in L2 but coherent */ -#define MEM_FLAG_L1_NONALLOCATING (MEM_FLAG_DIRECT | MEM_FLAG_COHERENT) /* Allocating in L2 */ -#define MEM_FLAG_ZERO ( 1 << 4) /* initialise buffer to all zeros */ -#define MEM_FLAG_NO_INIT ( 1 << 5) /* don't initialise (default is initialise to all ones */ -#define MEM_FLAG_HINT_PERMALOCK (1 << 6) /* Likely to be locked for long periods of time. */ -#endif diff --git a/src/amdmasync.cpp b/src/amdmasync.cpp deleted file mode 100644 index 24a4029..0000000 --- a/src/amdmasync.cpp +++ /dev/null @@ -1,123 +0,0 @@ - -#include "stdio.h" -#include "amdmasync.h" -#include - - -amdmasync::amdmasync(uint64_t TuneFrequency,uint32_t SampleRate,int Channel,uint32_t FifoSize):bufferdma(Channel,FifoSize,3,2) -{ - - - tunefreq=TuneFrequency; - clkgpio::SetAdvancedPllMode(true); - clkgpio::SetCenterFrequency(TuneFrequency,SampleRate); - clkgpio::SetFrequency(0); - clkgpio::enableclk(4); // GPIO 4 CLK by default - syncwithpwm=false; - - if(syncwithpwm) - { - pwmgpio::SetPllNumber(clk_plld,1); - pwmgpio::SetFrequency(SampleRate); - } - else - { - pcmgpio::SetPllNumber(clk_plld,1); - pcmgpio::SetFrequency(SampleRate); - } - - padgpio pad; - Originfsel=pad.gpioreg[PADS_GPIO_0]; - - SetDmaAlgo(); - - -} - -amdmasync::~amdmasync() -{ - clkgpio::disableclk(4); - padgpio pad; - pad.gpioreg[PADS_GPIO_0]=Originfsel; -} - - - -void amdmasync::SetDmaAlgo() -{ - dma_cb_t *cbp = cbarray; - for (uint32_t samplecnt = 0; samplecnt < buffersize; samplecnt++) - { - - //@0 - //Set Amplitude by writing to PADS - cbp->info = 0;//BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[samplecnt*registerbysample]); - cbp->dst = 0x7E000000+(PADS_GPIO_0<<2)+PADS_GPIO; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - cbp++; - - //@1 - //Set Amplitude to FSEL for amplitude=0 - cbp->info = 0;//BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[samplecnt*registerbysample+1]); - cbp->dst = 0x7E000000 + (GPFSEL0<<2)+GENERAL_BASE; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - cbp++; - - - // Delay - if(syncwithpwm) - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PWM); - else - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PCM_TX); - cbp->src = mem_virt_to_phys(cbarray); // Data is not important as we use it only to feed the PWM - if(syncwithpwm) - cbp->dst = 0x7E000000 + (PWM_FIFO<<2) + PWM_BASE ; - else - cbp->dst = 0x7E000000 + (PCM_FIFO_A<<2) + PCM_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - } - - cbp--; - cbp->next = mem_virt_to_phys(cbarray); // We loop to the first CB - //fprintf(stderr,"Last cbp : src %x dest %x next %x\n",cbp->src,cbp->dst,cbp->next); -} - -void amdmasync::SetAmSample(uint32_t Index,float Amplitude) //-1;1 -{ - Index=Index%buffersize; - - int IntAmplitude=round(abs(Amplitude)*8.0)-1; - - int IntAmplitudePAD=IntAmplitude; - if(IntAmplitudePAD>7) IntAmplitudePAD=7; - if(IntAmplitudePAD<0) IntAmplitudePAD=0; - - //fprintf(stderr,"Amplitude=%f PAD %d\n",Amplitude,IntAmplitudePAD); - sampletab[Index*registerbysample]=(0x5A<<24) + (IntAmplitudePAD&0x7) + (1<<4) + (0<<3); // Amplitude PAD - - //sampletab[Index*registerbysample+2]=(Originfsel & ~(7 << 12)) | (4 << 12); //Alternate is CLK - if(IntAmplitude==-1) - { - sampletab[Index*registerbysample+1]=(Originfsel & ~(7 << 12)) | (0 << 12); //Pin is in -> Amplitude 0 - } - else - { - sampletab[Index*registerbysample+1]=(Originfsel & ~(7 << 12)) | (4 << 12); //Alternate is CLK - } - - - PushSample(Index); -} - - diff --git a/src/amdmasync.h b/src/amdmasync.h deleted file mode 100644 index 29d9f92..0000000 --- a/src/amdmasync.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef DEF_AMDMASYNC -#define DEF_AMDMASYNC - -#include "stdint.h" -#include "dma.h" -#include "gpio.h" - -class amdmasync:public bufferdma,public clkgpio,public pwmgpio,public pcmgpio -{ - protected: - uint64_t tunefreq; - bool syncwithpwm; - uint32_t Originfsel; - public: - amdmasync(uint64_t TuneFrequency,uint32_t SampleRate,int Channel,uint32_t FifoSize); - ~amdmasync(); - void SetDmaAlgo(); - - void SetAmSample(uint32_t Index,float Amplitude); -}; - -#endif diff --git a/src/amdmasync.h.gch b/src/amdmasync.h.gch deleted file mode 100644 index 3493a5660b855d144db89d8f011600005a779c76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2515556 zcma&P$#!H(k|l=X*qn#vJff=D#f-|zC`>-psV*Kk01rn8+#QJ_!?SqUb__NE7GW?m z*Z{zjefTTnj$7`z~=A@`}NN5 z!9V%O|NH*``G5V7|I7dT-T(Z*{U87E|Nfu;`9Im(`Uh`zw*LDq{`W7~r+xgZ_yn%| zytC)<@y{jCr1_JElHgFMB?zT|&=wmk+Y0sC3jZM<{w@6L^^V`4^*)_`?wx!+@AbBS z^_$(Dz1{ErO`!fYLx22j@5B4kE1-5?{ilHZdj`Ee{e0CsJ2||(+I`*obodqMo#!$B z`wu#j!;4S7%hSI<`SPLn)6vJni{91t!G8uUo9^{c|Mfxd>i6d-s5+g`Zo|i9w*Gg3 z51d_oxHvqz>Yaw}cm5oRz|)7bD`OcveZTwW)xo=i{Z~70_xASQzIiqJ&HmdD?C0ON zeg=z0uYY^H9NqTUquy*ayq|3E?dqzwv*+* z3%Y+JGy_e%O;q?Fb*=nF9jCgbey^Q+n*QH#MC7j5yZU(j={+@ka`Drbiyvt^{}mAb zxgn{L$?R^loUA9a+umS4TdkLy!Fs-2K`}dTclII&G#}3aHA4P_bPg|$KK4#84=Jkc z-TxTyFs@*8j(rjY(H@^1!2(atFHg_Dd?t@4zuA3te9YcEg8jXm;Pvqbj)Zp6>-}(a z)cbh&J1FM&pO1P+Up}25LQ99Ak9(It9iI0Nws-eI7dWMp9iM#u0(H{YdfUVK=4Lwj z)xr1g4t8F@dVTQf?ZNKe!RuECu;0Cdv+pP@T4?Cz@aoH_Q}jVMI{R|;WADSo$;tLE zEiR0fyqumK^WAwYjI*mOfuKk+*1y(Olf9N&+wbFY- z&Evm61<`+re~u~03E`k)Y%elK4lWLlPZ=ThSeNqc^=Ji;{pF-ToD6#F(fwiy_cQ}| zvvcqrNP;C+ zbh^94!3Ph%K0G?QhTAn!?=?*(YLV*O-RYv`{?4247?l1MYacdvaz0K$ii3)^UmS<(Pa;|j=uj9`VMYntOeuT{r=6nH?QCA@9rPGeZ9B8`|8c; z*ZVtf&tg={XPP%*rg?Qi$4W**i^sg$Sa3Jdz?7rGG?P}RF>)9LXmiH-_O1oe#E)#c zPD8!4vG-rToFz84OC>iG4k9|o=_c)z!T$o}q0h6%CS!!%dEPz$&FlTMvkNw8=5={> zeAGL?I5|G~(EGT(n<=0%=H1tX23dbOzdHTINdX#QFTtEFEM9+x?|(jFjNAQB+U9!< zAW&EtJFY44#@ib<8xouSLk6(FcYSsdIl4M*XV2FMG|C{9PW#P#zq4mf-AJr)o<>P; zqqBv%)nA}w~ZK&;N-i%o*V4CT!X_2-RA`-?Amq?R~ zzXC3Vvm{uy?%hMmR)qiGZ0~+YSqBYVe!PfD0q2Fk04hlGtchW5TRUHO&-ZuF&VKw& z_w*g(qA9*th@Gy`h<*3W{6S7M^orCvx6vL=E}M~>bTgsbShLiRUoNkLiDhX5gAOF$X3+a@_iX;o2WqOZ0D5Kt^z7n0sxCy9 zkDYP7rSS$2VvHJ&2GjMo#i-ZctmjSU8bxmNd(2?I-+i~Y^KS3$yH~Gv-n`x2Lo)p4 zL-d{>zJBffbaH43St^h`%`PLG@xAx`-X7XSpni)#NT8XgAhL0i2?mICs&lk=-@mi} zPTnD5iXL>_4RU{v6&V&o64$H~AjH#8$W~51Uw_&@*aq6^_WX@MivveQ}21 zRQ9_Mm?nOO_8JEOx80(yiSnzv`EtFTMtE9&$fmkU`M1}nCs)1Chn7aucH3x{x!V37 zLr7Tk&=fDOu1>dixl{|oY1C277t{sogt_g9&(}u~(Cc3(owQ*mtU|j0-UJjZ_P(I~bJ+97ny&y&}?2M5PzF~{oyhENLqEhr_54^DCNn|H5{KTxd!*_d|Y zysdn&|MJRgJY*fmCzz3s4l(y`@3MEQCamU`kNxRp)LV|mqvdEe2y4jKyF2V4h^h6S zBCfoJ6VW7tnsTGu>AC>xnA|U~-*f5Cb+lO)Trm3&gW7+)e|${AhxXd3r6s>k!jF00 z=P%eMxi~pIzGS4x0vuzksV!8<~ykPH=9JS88_O9(vGVWHllrup6vQ=^xPXy=lykzfey+O`BkQqt}1 z9RGB9@nNrb^x?F3c!>=rO1TkdZZk=f*k|jaE=?jBI{BFP?{9{E8^gPuH^c=Y+LEo= z=KC%79kzGLf3V-Mb(Bvm#0GtHB0YS6+H2;K?cJT-oyen^+V$0k9%2N{j6w_c3CE3L zBh2v#9>fQREEqzb=}yO+@8WvAU5>k%Kgb5npI>3eH*D{s<-{}65Y4&lg8RC8urx&? zRSpY?ZvF7%ciSMPeIVV(xY<1R1HSZ5etUg*#!Z1!o6oj);#{9f_U!oL64?6*RHz!-caZjF$<<5<}l#konWVi7btW?_N zEd8(bqR!+op+xCJaK--P9+##6GXC{Kwi_%xBuVT)TdYD0`9@m1cSoN31MJ_0G-2m} z89;CdsnFe57cn4Q`*>mDBG^Ql<26f$WZiy^HB9H*F?DTPEX)Xt-ycas=CTDU#+fc) z=vEwUfC`*vBLX~?!Zp64lX}_!7@E=$nO3XD8l$YoP9aG z>S160xQBnR+1_@qd4daFA*DU}e0<7OKK6T^Z30>XdhzS7MXJp*GwANcy`dOB-k<*P z!^!1U4_^Dj=T9f7k35?E1sy`~L5*Ex=5!b){g6ylX5=QjNX!*0!Zw?whlJTEE)(BS zH*|DteAr?x?4jFk{@DpPt#_j}Ti$$rcy;vg?BsX0&%48(x{VejL1CkX9v-9}M0|dH z-brM`9;`?u-3X&6pcC_1j zMCW{=df*FOz517c=7}ZT@HymoI~Hs&r=2Gz2|H zOcI8EaU6M&%&o~8+5yEJ7)S$Gl7Hl>%y4o$S@%|>1!6~Y+=M;&cg&c>n44u*;l*!0 zCdov5=+@_xN*b4(d)&q5k$t>j`@9W z&|j=KOIy3~RE#^2!LQLf#1xo!>(i6{w+F|^%q9Ls{Ik8Y^i+U~+TY_L-sKfmj@!H3 zl?xGuyXa;5o5roUIeC6@_`|2eo*htdr{v`8)#t-cXpANkM$suWF)E6g`tD+>jiTFI z*nOR(=-D>S8!}nM0%a(O2c#@*3bxmTjdVDPuA9xR^b{?ox$P|9`8Yk?j4VvcX)b+q z_V?kGvk*d;KPF)~I#1)%6dAmk;|wi_Nj(PrcW)xkox|~v->w#fC=qJ5Uf1qoa8oG8 zmA3BoYonRC>R%r zI1rZ!L1iR}sV-Ux5joDfT`CoaGag4VHHS@|9lhG;IaVH^lhhyK*;0S}{f-eRs49fT z^e#f}5&~^JjHwO6Wf-9i(pj3lm=U~q*0bY^;b@3U9bK$Hh|b3`{xRnZLu$@(d|p9q zgsHGGsF2jcq{wcFh*!yqAJ??mefe9?m1a~Yb> zo1Hh@@XKwai(7Gf)L=I<|M?%*zZh z%yX~lHcilJvZ$E+?YyOALblqSG>|w*rdh*uc_jG@GstyvI+Z{n;Wo7<%P|l%7dDg! zBugeasbR@v0VilTWP*vgGY5+O*n#$oa;7-4nWSC8+jbr8J7B}^)Bg`c3kxe8^pJ}X zfx5*?D+~tIz<=;p^x3BNcDF8yyxApeD(=3f{l(!mo865VoAA+SBt1%t;e+w1IOTsc zj_GN;REXJ)oygl6ZDcB6dhOd;R4}RFkLf{sWVi`U>0)E&E!{3mW)^fev-RX2Cz;D- z{~H&#Z{O@D2eZwcql=TX!>{nSoxeuqV3~Qk+Z;etvfl3~{bB-*vm%6;Pb}Tty3-~hAVATSgAn7<7{nc03+Bz4tFb%~vMUQcte2RD1%oY3A|!JH74 z+X&|J~krSRVL1Hx9kfAgi1IdZ`{y|KNnwc& zXof4|gXF}Fei3t-b`!s_R&KTZm;~Ao=$b*jWp#FwW!GoT0c&@wnu&g3HN>*?=swoYxxU}VI~Lel zz2Ex2w}XGX__v3D`}lXT^*4XB^|zB5&XOm??fC-tuCW38cUy0#9L=aJBXR=+oYtowvPXY{4A9$B{+`ImQ73jt{OQv zv-qD*k578#z*Mby?ZyaD4i^t)tOwjcf8BmZOIaE?9iqI=bu6W~1rW(foda zyVLJStM%EJwsgK64JVIVyv}?032Ni35mv&p{r%zm^vf3YX#?WJ(U;Hf(edH2fsZbm zKaIkT;u5!Zu1c9 zlaw*72$$qO^)9}~=d1Slr%wTR`RTNII6v(uFY$bN#y3OSx)IX0KnR~9tdmcljyln| z1&TiGYCt|Pbc9=8Eqi^i^OEr z|Ka?@<;mGj^LMxTyNAE$*T>-#wSXV3-*3jaU~~A`pG^CBk%6F3{S^*ijR};_5v><^ ztEWGGk6kt5&!>sepnS2IoX*B`qOOsyd>Y-K&W5AsEoh8Wbn_Rpe*1L#nNNsRh6@p^ zfnd_*6V_9P3wrxdBpWmsdwksp+Zr=?f;SQ0wAri@XX? zAAf&&dc+8DeYu6*F3!T!@#QJTNGwTz53WAE_#D{Fr2YJTjfKK9N}8{`G#6UaE*w>droPxlP>IR7b8X?Ql3;_(XG9%mOH zj0DeA2Y3ny7BI@DaC!1MVo>NX=U>haJIwh{2^k9=*~R(QSx3e~hr!DVA36*RhQTz3 z3pbw+-;)C?;F96x$FpOW8&kvsMqmI^*aPj*9?Zl*aq;;FYn=~h8KHdgjJawu94%S; zJm=@Q%L$rk|9rE$yX+&E8*RY>;bb=;&tE9XiV!mw3S5+LaZQGgi>=VW1sr$la_l3dE1JonD>sutS5Eq9=az=G?xug+b^xRebkjvvCCnGsXIof>Z#7f7B_v_r zlg%|x&~N(^aq|Gk*Dse%1h6N($@<&tlg~%L-@;p`A5L-qC@g8VdN{hhY+fDzh|(p_ zKWwqH)jOI@f8n`Z^R!y@pJwgzx7h%X$W5onEs!>SIK0O3NL%ydd9vPW->AOqp zt9Sn85^pOVb#+3yZ4<8wf4;iF&GxNi1ed=%jq<$w{blb6qB4P8;+Aaha4^{1gPzZH z5D1OW_M(1@41khClR4UO?=)?$fh6s9E8mnX0u`m}y(4!Vz8vR4Xwu0 z60a;^eROh+T@UW$*xePtdZ(Dqdc78Ui7#vTJ$CfJ_O3slemLbzZVjqEB00MF{rT0G z0{8*Ty3lS*#%2r9Z!eBNeQjW$PriIk9&zg@Em@zJpJ?C&ho?Pzygd1YgcAFND80vh z+s|AQox$gtQs;)fqj&EF6wV7M7E{PG@c@x@4e+_Fp2I@r57(cu4CTu@Xuv`M6KU>U zc4fS#z}<%yZ3w=y#I2feIXMs$7HNS*K)E=)z~vj%ZQLA_;VHiUqVe|d3bcL80Qt9F zG+awLy~ql?dC7)YfIeR#fF<=kO|Kz2Is8CM{6T2O%#3HgfZlBCg$qNr9f^FZhcrGN zAxb4NX{_(=Enb`aIbs^Y`6rGGLb<|4?o8A+OfE5cyoh6~4dXv8hn71uil50;3TW#v z)1V>XS`eZ+QlN`3G$R9_;q~GY*1e)-M5dENyliZ$qK>d=LG9GDd*jW_ECx%c z876-NCsUP`5sSXQd)pu_s-@3+Kjx*3aPP;rUoTH{f&!3+#_LPy(M5q08sfn3_+=wM z;Kd!Z9&?`V895G~aWF#jP9Bk2nZaMvF#zw6`Ztr_aBrMEPyUb;rfFf5p*AV5KODwd zgZstkAuHZuHfcKp_I8~Wk*lXzERNIS26fRCr-K`(gBz!Vnm8MChX@9ls#5M)%u~4=!T}9DPr)jm6?@h`c3en0o8G}|zIozZyqL5U~ z_}WY(V^e$+(%cBclevc7_wDiaZ&Q52wGUkQ#N8vaxoJ`k6gFty4heV2urV{I7;;E& zu^MfL0kOu5jRU+M7OJn1vEnQgCzSlVp5OCmbch>%qxIlUfN)0P>F}zQf--QGP2yZb z02zf^$}mJ+d&Y8QIkHhVY$4Mt*=j)3Z@ z#1~JnwI3WxV^Yq_TAAD&GU3zV5_TOf<+@RE3gDa#R-$g%?_EOxMjwGNiB z)WH%~uua~dtVTfLEuLr!rfgcH0Hr*3beTLOG~qG=6E-6-;j;nGeCIHa#0fe&)j3Fg z=K%W70d$?uaI{qpoiN{hfF>FWTp8FgU{J?_K^+U+FK9h8v^ih;?g?|91L(R2%ykTy z>$aIPf}w_f0rDLi(Dh8H>zY8B)tbf+BG{#Lo>~? zkU3|70_-e0pk5OhdT1P>w@0KIjULhWuaKUH?N*PUniMk>* zVKf30Mk6pV+I$C@vDZ8|2~1lm6RGxV%a9r62~dZy`(#Bc!_i_n!p#c2@(}W)ws~x% z-uEG<<*i2G3pvL3^I3ts4_xI<&E_G!D`*#Zxu*c(JLyV3p89xsU^6oeUIxO}yw%}b z8odGXV_Ze#7a=h#j5%Py!sxakKr0NB!iqqse{lCpZ?RtXZswcWumnyebdy8pi*LS# z+tJ#9p@pWe78n|6fcBb`;{aD-m-8pz?rbxidMIpI0L|a>mghFY`D%xq+lWnaEUljU zi{XSOYLBb%xS34xbtAUTKulX~w!0D#zbz&y_QH00R|9pWu$u;RbRu?%PZW^jy(%(% zEB~kziH_>Y&_YoeUaBmo@XE{ZUX3|gD6}Jh9WN;30at*np78Qb3*JcZboeac_rFLm zP8B44wHD3b>!o-+fa(5;`_m;;Eqb%SrLP>#MF`&f8{BbDienis@by3IF~^j_???9o z_@Dsa&mR#WJo%zRPX(0Zl}=Z)8lnbY%U)OO#Y}O7(29ucxFJ}K72sKgT(>unFm2f0basH=(`0=IVpK|TxbgU{EOR!_dcwWy!SdT;J;!d`idl5WXog9B ziFdVQoyk4UMJu&xsMTG6w^EC!OewK5qPP`UDmy3+9@_S>cl+Z#{Wn)YXmN25U+z^IJraJ(9%QINpZx&*E!nR%d? z89U0^SXp)ine~GrFY|;k*deYmBr;w1vz}4RK=69HMv0F(q7ufXTL5>U2~mT$sN zXe-{E0Ve;1V@qOex!zGQ!`V;SHkwRHH~2Cs?jN>w26>obF&zcVDNmTQvUp|XyaEW) zaT`T8@BneG<^V>KjLjvt*(2A>+q~E1ZC)RG&*)LkE6{XGih@m&xK?ujbeJ_#7y)K1 zD7mC4x+(3zDrMc=WE0B(#cV7nXXJ&7P|V0n1+nZ1$_BIYXi^rl`atLS=QQpO@UBlz z{=Ar^A_9Km2+9VtGE=}NN1Dx%BBrgCxZZ4@CqO7AwKdMttXk6%S#7%^(T!WyRBJpU ztBp4#x^X6awYEE4wdp`nv^=@*XTHdCrY{0A{cr(08HbaNR5#Ok))0!j=_EKXK-RQD z^0w!B=b*^(%N5V$y2vp_84RZB{D3f5DYs!emWz%2!8P%Ryn#RD)#tOHQzlT%hJ|ug zoj(lGpJBUH<3SOx%V>ad(Nh|3!&4^eJZZe9bi}!+ShTWmJGxg+c(+j8n6X+;vBHOFW3nQ zgaOtYVwT1;j&T!quwu$fX*vSrphTzR1HM3K*ymBUi7{e1UA-6})dB&JDLX8eH6HUC zyzChVn@z!(VY5JM<&0qxa^0G+G0wAH7KixK#)4v)<kl>K~i2Jv%2{hX6$nf@5t6*+mn0K{&7njW&4lh21)>+@y0k{vH>Gak82 z%5c~o@(^t3^CU1^XO8jSU>ZrRTqDfv0u@)15L-A{(Yg(q=F&x{q$Rv6<&ouV=mcbA zU(RpZ5Lx=sYLL%h<0t&4Rc3?+Q2gHZ?=x$#axe8#gQTnlfTu~hHJWKo<7TeA4Zivc z(?}wR7L@ka!ZNyVi+LK+?pV$$5s=ovMqjp0vT|C(09g%loP@cFbFBc$Dk0-dGu#Qw zSvLe^HQ-WtAjIWszA?~+>)eM>DxwJ?StubOiz5JJJj})!2mI!{kOW}f4fmwh_Ht#) z18D9>{e|A7WK^nPxQU()#x~VUK*r9JCq)?r0oeeIB&)RQPiK5lAW998#a$ZdCaeBx zFiBUp6Rb4)voxkmRs+0coVRRW*O|5KqWolayX-I0tdWor&Nx$7>R@&e^KleeZPFX1OY#wS0>CqK$3F`#G9g#-P(lZfxMlmhpJ8G2y zz5!+Rvh69%qS>O!%2~%GDC%b?KCF?YTm~p=q{}Sevt<^`1$jF21D#F$EEnVjzd3ex z`?KA>Zc|1l>vAIXl6HdjayCfXakx#Bm;$$Q@6uU}fQ+-S*_&749%~Na#%K<~er5{D zbAK)cQu(l)@wu6*lT=I%Nt>KZ@;Qf)ELS2Rn{NO}`$aMB7R59Uu~<-N%flJ27TkQx zGoTKZRcr~f&PF(-wo{|Wz2T&{NiS8*65OheJGgrR_d>n5vfdy~o{R%-1u;(mvubbC9`%;0XO&p>=X&U|y7KJ<2*IG}nJin{GrH>4WRZk80&; z)(*1q1Ks#>ZG3kd-}=Tk|Jc95kI6zGuHyy+n<%BwVBY#Z4YR4Xwt1|zwt1|ywtC!s zt^27my{h#BgdXPV5f-dQ354!^Q)R0<`s(0;&}=~{nys3&hSIU16d;6C5mD7WFV8<&JuupjfT*xl(>-cb*s4jZDlEz> zpF9xWp!%8&Ya*lsbvxR8Yl5xFbvV46apLlBXc*atVWgafRl_!n)P`ZC&Vi|@)-bi! zDykX|wMGD!5*`kpD!MXErFYb+jOD317GP?v>9Jt*TxbkX9Uh5LDmJ($^&9utFe~q9*iEe@Q6^J9N=C^gexH#TnH(^bvsH( zq*oS(Q^!h#G>nRnhLF6nEu}fDA-Q6W3R@Mq)^uucArHVSylRD#UQF;9f;2vZE91Le zSLF(fmMajNS0W@+KxnxVq1md*wPN|^5lXIb2$Am$Krda(;JTg42=oAu&d3~dP|1x5 zmy8mwWD2-sh;Sv*=^ttg{Xwf46*NPDONRbXVF+-=&}>~{2nbnWevdCq$5(2)$sBi* ziP3?q!`15@WOplUq4n6dDMiq*Qcg3V3G>$nQ|T(_w@pGKpbsY zxczX$AEuR2rbX$f)nQdC8j(Wt3DQfrL#hZ6kuNo?RM6E_Q%FRLuubGlgg1lNMWa_? zp^|c<7NaEsyApGHsH2Rr#nf7>Nns`@B3ynG0svGGp9p0X1{aD8aL+2?YS;#^w4-!S zdNp8!3ytH#jr3N+m9WS6I$9B~==qM~-Q@O8ORvK!5q8KI+f_p7YQ7agAVGRH5Lt;3 zEvk}HN3@z7B33Cm!HVb|u}ZNCR;ahd*2T}!N(=6)Di2PObs%F-gBlx+o!va1FoY${;tEU3Jb zbt=XmP&MW-iHm?9>L^7AOpQ6cro6*fEz~4uD9M~*By$0yBxe}OT)+q~By%;%8LGxy zMRHb0O3pAf=CtId!`&XHP%-H>80|JKQn^is6BAd&dADhCN+TWag*KH)+ImVT9Zu+s zxXMh>qUwUF2Gy>r3aSZG%O-?I;Y(dj6;u=C3(eN#6C$n_khYnsSY(I=cQOG9aLF*j ziC-*`zG62rd>g&+Z^BjB4sgwnik8#iUe&D(QyF!OQ#}Qo9({|e*Q;?Ej8(eTp1A-x z)vY%6sFcyv)Ea4#FZHQ?xv8lY)FEHswju;+$$K?R-mB@ZCaH?W?o})na4j0Z<=83~ zyC;(jSfK3Os3pj1DEv{ZqD{H?sN@aH)Qn&ho#Wppy#kNSPmJazs zpW0%ZnmYEjNEv(grN!>oEOx)9yNbo`S1gurIm(K~f?itee#K%5*X?UtIH+2zVJf3; zajK_)(-zy}>h)?|z7S&%T65N|zF@IUO|6j@DJ`}`zR;((*ruk|Qj3%pdmt_Lpk}cL zHQiM#_Ml?1gv(J@EEe?AVh<`7OSo=d*#cj0k^?h@iuyoQ)-{GvQ?nt|r~^U_&k$-H z0U`7WL}f)|mywlWCino3$yiHfFEakXbbcGk7t0OR6wVt+~DKB-_>&R$^I-8fr(4cGW*3O7BxS&}PMN4O3&Xk_?18N|1)B@K#A%H`7Ym$}i;8MsJu3 z&!{6!40W2&CIeAK*V?VdZmU{}8pKt{P)SCtPHhY?B_pW#QZi!bsuk2DAL~`eP>Fn2 zr!s~`B^%k)R0rpjcMTyh1N+7W8Ti_!Sw=5E07#0^EBu;fhg%3pWmM z-HsXn>D2%h{UK9fDbxn1Q>JJm>So%K_h}+sH3^A?YFQ_ z#S9FiT6^G2RMOxKql9A!C7XZ{re+9bXaONS;eq!~L{4b%8o#`%q7unaNe_i}^jHid z2Sbb=jbSRo5ih|$lCz4x2UKl1IuL|9wc)@tD#OuHAhafpX2>m%dN%!#;3YQ!uhW61 zvd#$tQpTAERqJo{NBC{=FVwH|i^_F=`NEhIJcLkr2Mj~mOz&QlZ-=k&8}Yj94lfNk z^j{q>D_6(cAnV=gwObf-O;Tu7yQy)i4LhK!<9pd2kP!#@SLItDd7#1wa&Hh>EZQRc){mD^P0#d#N-CRINdvB!^6f^}IxkbSTTW#a#Me z2xX8&RC||^Z^_X0l53^}(snWe#Z*clnF|D31`Y0op0y^Lde#0`e{9SxLAB?Opf=`~ z-~}G)V_sF_1II;Ny;E%fsMm!^X>2J$ZOmN@weCBD+L%dD3BwHol{g%+m63;*U+A|g zYt+=SIP_VSHS6jA@DT~aRl<4bOGm)f-EwBTYbw~IV!&#XZ?QF5E@!seUv1g;`zvD!b*n9J zX7r?5%Z9D;Y*^Vcq}ziqRI?4LqUaVYIqHyVs4Y@jaff`V=1U{dw#;TB``R$67Cl)v z6}8|yWQ|!ne;8?GwEg4@q?7Frp(bX!|v{i|%R;OlymB?y!D#Ljp zuC{@*(p#umk>CqKmCe4Omlr}RYStrai>z_`LOjJ=Gcw9l-==xMD<(A$G>kMkVzi+e zrdmgfn02&H@t#d(I8_tnt2x^D3{zpPW}>X4)j&*bIKYT)tR=RqD&KI_pj1x{N_B-_ zMP2AGQfM*$^dw-^6^j<5>%d0D84c?&;`&3_U$K0!GV+ zbt)abu3S|`b3p0A286|t+mR4P)81kFWFTl*=4|~=-i+r=b@G~$$*j^ zHYjEOL{;3@_<-LE?`%+27PWsiwW=&uJQUx&sc(t#%Tx6m)WqCtdohgEJuqCC3b!## zt&V;Fh5I%Na$sM6Au-R@ex9{mqBVZWjOLABCnGSJmest&bx_SH4W$Bgs3c9n>PSln z7-c?&k#-O;%2I(*^G;aS$xJ<Wfdtif=^kKE^*X+wMH3bBuRzQQ3 zLkl>qfCl$MJ*|LHPb*;AhjOHS8Kyow>a;dI!&TTMt~NZwy-=?}+Scg?2i%2o2B}nfI9a2d&B427&NuaCwk_@E8F=0q^GI&Ka ztRhV*R8k=zVC0~!H9085$PopMn1RucU9hh3P`!NJ)>B4FT+KmRTxDcduhOQut42!j-6;CHxS%g;xWhgnOfKi$a{AvVl6$ait#P$#%Cx! zCRUQOfz{C?VjbyCR!5JAb>wi?)vwE0HK>ZFTC5ybhg6wSM2du~MXERXJC3AWx|%Qb zDdpDIRIko=eM-4@HC1l2-c{DW-mMB$+dV3%T^cZ^EeG(5@U(}JUW-gy8R#p5lKbT3 zQ(Ip1y)Sxj9a7mygVe+9kT2Dg18!@oV6kqHdgvYUg+41nkTz1;9AB;VSJ(u&?7LzM zdW)UyXj>p$w_g!R#TN87{c646UgPwejtNq6(A3nn&>>%{DQ%&xDM#HP_0T)y3w>%^ z*q64jUyB#}mAF8-?7LzM`<1u=xE4*t7WOM~fpE=_7DMxOBswm1NY!G4)V9zeU#ckw z+}4y*ZIId)I^+v|R)ipJp>meBTI-Xn0GEANY(bxHu^nv-gzNSz0;$-7KJ5y7NHW8y z?kzk>b@`2Ft9|!~qkwXEYEn|K2TS4M|)oP`petwEbw{VALl0qfyI$$aY03SA~83sU640T*-eT zHvoFL#59^<=2KY7Flo>%C8=1H#v%x%5y#exeNK!OW5Tp?XzZ#!?voFglfa`gGHJGGX#Ci@_%Oc-; zzF8~^$de~}a#YKHY6NRsZ%!v|D`x{ILCW=}GLI21eZ~+PQwb!SS|BlmZfb_f1S!l- z7WFr?C(QG`$t;Wf4HRCy$!r~8#@}C$dd-}2vq{CUsl*V%HAB@H^4Kr({s8DL5Lyy@ zNua&l1%cr&aObq6Y=QyFbh1kQ5s=lop9Rv#u?w}2<1%<}k?##);Ec`q6}?4ofEj4JEew;wbYu*H22Y`*`OHjVz`p^qwyMuCBxLPK z=SR;Atno(7Q3im*n83`aKeGvgki}*>>OD@D>rJ2X9y~wyZzhja%i!B>Z?T+@C(}`H zj97unA)WJxXLG~hXfWldQFl0+j@A>%qa6SM>%Jit$oAlkL*sWiL22E)!Bol2XE=Er z4)(*tDm>VLMzhU*CeR!Z$o8ku&Be*Lg^?dFxIU|kd%lm$idGm-Rzcq#8dNTfIB3q+<5(ihKp|M0+ zvQs{gA{&_p#?b*c?B7ETSj(s8CE>B!?O^`c8&5YY&V#qp$;|*Uq;+Y}y>!d;5FOEC{=VU?1tQp`HVtW(S;>vc2Ca9O{btm94A^Cs(hll8sH zI^QI{;5l#~0?86^|KGUH&G31OM_zs!WN%zMv;u*`+9%!PnrD%@o*gk>%S z6m#O7i$n;>ZHN86#`sxyND6l;<}SrNq=i*Vwn{PU6thk-7<$qXMxK_kelhM8m-UQM zr?{+dC_cr--Whf~)w0lu3Wcb27E(-9IWSSWM z>pIahaareymdBjXhy5Wl4o11Q%-lRJKjh`8ho*v^pCuLUiVC(_oZue{d{kG{pq+Ci z6>N7pEf)<$oi+`uiy^Fw3J`ieCYV|QxGO2jQ9%Jkl~q|~RZ`gWp9}=b$l4eee2ojX z#syd7f~j%A)3{)1TyQil7#f%Sl!6+Uf*Qj{^C7@Y3qZ*fjJ2RB*@DRy6a{0GLQs=J zP?LhINx{^l;Av8@G$}Zm6bwyDeo8@2N?5pYEoL%q!bhYWtEbz(xM&;K|K`S z{$MA$(Ig)V!95ht{Sf1B@U@4+yB}gGZU_p|J`~>lPL#Ye^a>+iF%6KT10YF)$WVBEQUOnt4ALA5&EcT+D1um4cF7EodHc&3`xiaqh zxtZVfi%<(d!9cDI;EN85P`%E%_=1RaosqVYMh{HiL3*0uP1NqFhucCPG+k zK~M~$u-b>hYEdpZD8^V=?L%p`4=~a!gbO*;;c8H z_W;PI9h5WKp`7u(>KAJc0E!CvFjoCs87LPG=JVdFpN9~X3;JT-TNU#j%0-1j7prpK z10eTR0?IZ@t_xkDO37ytK|oP3RxB}A#S&vxEHO~dnJShTt73_PazUS4@v2y2tgxcU zjFy0+g;G#hbCeW?pvI-304S@Je3gPKLhY&uwW}gQKsoQB2(_ys)S_I_7Yr4lc2$O2 z0*V$&L6xBvRSH3sp%xS+Tct&n3BsxfwJ7J#U4&ZT^FX&MLM_UK2xvM)mIstmQOGSm`~E29jxpePKa47H#r*)Ek)hFVm~-FsbzS^zR_pqvdI z<&5uj8EOG2D&)gh7oisAqQPR#u`bpeC>I^%7Pu}#Ey_g)MFd%wp%#EV)Dlp(QF2}A z0#!=33daCN!B`PN)oS56P_$4As*E70QV6Py zAfPDODg{+WkaZD3P|j_(h#0ohmx$QT14cQ^vdD*0GI zk*90~l#S+t14W+25m5G$+af4(A0eQu;^a|y3F^R2+EWBuq8g~=w(u0v6rs>Su3C|5 zlBi^xeH73D#7(<=|<(|7Pu=pF5Rfy-a?g9MWq{Y$14}ZL#d+DjmkYQ^ioQon1Dc0s;G1$ z>`*y@KtqKX%V`M>J2!HBT_h^q2%yr6I2q;L%~o#uF;H%x2FhhfP#L8S=4%%EAywf- z2J-Efc1W^fN-~h|vQQSON_#b!uUXhIsYQlfqw?Y{79vLFnJvytjmld>xhOHRa$X?+!g|Zq zNvJFMEz;sZCpZ@3Ef*`STh1E>%5!7`Iqxke3sMzXmw|i`Eawc8mB|ZX-tfz*!>BxG zWppN)_m6T8F)G2W@R@RbV}cY)Emt{#&MUQC>jXNlR5#0zXYVu2*UG8KrEIg6OWF)n zI=Rc!NaaF-%hgEb2FiTRGv=llm$b1lCk-ZUzOf=PU`^+!mcJFTj4(fRuT#*8!TUI9 zsh#gbjKVuA>Uy4i94yayVKwDZZveS*6}vG;<-Dyt_BAT!M&;qJQF)hfN5Fy3MQzY| z@s=Akp{`)K*dYjXf@L9I9|w^imvPYL(2#h!fx}LHY;>tKsa$5}&Wo)vKTsbBT@uaq zeH<*0kF9<0GUXnzkqM=WIEYNxD^ z2&D?2afjNWUvGxOXWZ#F>be8&04pP5dCVQCN(Xd@-A3lL3Nl~QDYZQKwzgdEP#%8= zD&M@%9m;cXtLb72PN9p91I#O1c*PPGb-j3fYF3`G zlau0zEP$MNeQH*owp&GS3x1ke6^CY4QHWPeGdMf<;uWcxJB1H@c=47eX@SmLgjk}M zhw`lIQ!{|dg`hi~x0-%je%Xp+dpFILC-v5tU$){r-kG_dddgFKYs^c-FHzm`z10*- z71Iol?LBWIB#CLp9q5OCy%~yW#+~e=t~=ZhuyUFykN5*s=``-3-^koF12SLJO*7@8 zzqRF;t>w{wAS+D}RK81>JCxS|tSzrooXWd=kjMX}P6_k9`e_Dq&Q=K%b)9K~&c#7o z3UI9Wt-A8600-;0>efCEmUjlMqG#5}!SeEeRTSbCaS%5Eym&<%bax3tA6~p74x+9X zuZV-?)dF_m;~+rJ2*nb$yk=mHd5;lsu)J?zHGLe!tpaBZJ`R?553Dhtf|oZCjLf?c zVxI3)_>72y?m~ifA$&$GQF&Ft`HYBz{(i!21&$rhgq4Aiuu`vtmHh(d43;oa*To3X zxoAk3=)>t2bS@PqO!Vty1v=*dgo(N?=77#Cm_UDCW>7H}uVhmCh;L9;-!COdDp>XF zW$-Rk?Om93zH7hD1UjMW^3;}Q=Qp1S6MYC(dp|~9q3ZG+*ZLKz_Gu2)9K z`Uq`6m%tI~;}oH4h;Zq0bD5-yd#Kuxatpp>Rcyh7ckkAKIXz&@U9{(QEw<*-hj(kS zIS)E72*6w@65I2vD|q(O!fw2CYq3L*_MmGaRp`Kr)u%hG?~U2^IGqTZ`>u)b$Zu>?wmzNW#y~pcASVZtbpTz^%o;GGSiT!mY7$s{{y5 zd-*G8x1D4~Dy*3^wIUUU3Sal6*vxdg7JHtsJ@3|lIolPxo~Y~Hn){xm-9xQTzJLij zF9>XXI=2?vq2R^4hS(1Uo!2#YL_Nx>lQ_=m%!y6bPsqqS7@;y{-xLt#T){ zNWIkq=uI3zZ>Io?5KgG?U%0i{V?rn1t+~tO)G9)F`6`HsSGcv6_sx5l=QaBH;*h4Cr322|v0fC?K|ZVgJ|*4%k2 z`3KCoh}e39J$YSo^U1g8-CFEEp*`=`V*d$re#l}2iga#D5L-~7^SUnIO`+|GjVZvC zTNCQc0zl!`gep>R;-D1EFhW&*ZvAcV%eP#z@Cvqcz z`{gMZ>N$nD(CgAEmrJ=s%4Jb5g#sYgfJ>fS=H${QmovG934pSfA_BQQ$t6iHLqZ}_ zrbh(j_5(;6K?!n1h1r3|F$fjqS_4tx@!4R=1{@(ch9M#|a9r5El@#w8Z+JO+TWm%>I}GT|}_%-4k* z5mMTUvJ zk+}G^g;vTaAw>g?V(22oAd7iEdTS;9pikK55be`vU#jhiaZ=pqyXE?rv7O6bD z@h!AS<(Z9F{34ZLRfspa;uot5@g`UN5<0cK!8?Uw`Ag9!L#V=BM zbBI@4B9%9W_>CBms++_TkY_@OH@Vsps|xWZS6dP~FW%&vG7>s3-sEaaLg!5)E<8H2 zxKERSocG2ZnMl>;vI(dQvk~Sa5?1f+5-E~-&BU{lgvxUkCxl4m6&M#G36)?&D3wW6 z8CH@kDz+Ch-2~>9nq*Q5omXnIOiAdRQh5YkiZeL^Z>uIJ;0dT4Sn?KHq;js6oODMj zH&C8)d&b-}lN@u$#+)?Lx6mS4x3Ww?en?)YJoXlJE^32L4Bk&OcH&*w2w|cRXPTh% zI`wfdc?+!@tdE1qcaBCXubKEZZlvN_nBn( zziZ9=3{L<``$`T0Vom2WJP7bLT|SX){>R4LG?N?vBvhh(FAbkN@Fc)` zoCu`~pFv%(RPMtRzLlO7Bz-ug^01&BM{-`!R!vR}5>VMGPYrxyPOHh$L2S$^H90?`>Cl9U_FP~Aozp2{qOLPd(0QKy5;b`X ztrJsx3oQY;KI2>Lxi)YbB7Js3joZn4e~n zgSA-G4K+Dji&V}7dBEnGbxKW6*l7zoPNzIfE2kO4yoh|d%@Z|I zS8(igin^X>9|x0ftL+Bs<6!a@TBPz?@NqEt^4eI@*%_q3oWVZ#Vg_< z>U!~tIGDbLmh|Dp>*HW@yxGlGnCQdF0CY~dgo%D#d;y)46=9;Ta|+OT1rz9J1cQpP_`pa?AMp*U z>ieYxNd>Fkfx){_wRd6C`L2B~13IDVcweD)MbHUV$2)Wholv#kenNXf)$s;H(w%2>*2!CFNnN38;nreX8NwFg z^83o56RH+&oxX*ZFbGY1`73A7-a<x(WfG&6O7T}pj8+cA z@7fuyR*G1&25PAkamgf5OZyV**FY_!f!NIp)Y4N#Dh#EFS<|2@pom$Lv_Abcs0`&| zvLvxc5($=y6?3N1N{&TJNn&XQV)8UvJrHdiV(m+ns7W+{RRk1^;LwPchxS-C!&;Zh zIG8(&nOCLH_^wrvKpRwyMJ3FnRqm~lX3{E8Vd5+qR#U9Xp4qT+Ds{yL!UtH`mrA2a zD{X^dDIqzds7{mP!$~07xyPxwtXMJOtc^o^th((J8j;4KJyu=&35}?^NnQR4)M|E8SAak*ZUF_T&=zQg zp{wga)`Uvh#ibylRmLH%1{tj~4sk&!&`O5o76)utj#&#++6J!aXbH){0cvF%0IR?O zunHUm%Q4Ep0ctrMxy2!F6H%seizE3h=p+`b{Iw!$K@LQ2aU|bzowch+p_QVyIMiJu zV@@kYZ*inweVy^Al_IVlg)ZfAWKt~dAh8LV6pNckMk~!rCdJ}PlC_|MYx4EjsVFd) zitRmI6Ox{yr&wNGQbw+)SWrs?6Q}ex80{%KDaP$1H5$3a0a_JMbW)tW=buVX?tFk& z&3WQ36UV1>WpSg)h-GkinEKF~4 z@II8FR@a}viMRn3pu##pD;t)F3*t7EHLQF^+=((;6${kOC?i(JA?`;7S~(779LaYO zB&LtMNXj+{mMzOE7Svi8(l$V?0tdmmOBDt|Ep0YkN#sFk9lxw>!_8j(uT3nt#iQYw_uT-?86hccS0TUbV{R*K1Y zPNaseqj~ZLR~fO~`4IQAj0@?oGMcLkTGoU#4!Mrvtt=7E36`?g9*ZEasimFkXwLgw zx)D7ZX&e}g8VYwiD2EO3T~iQMnbUWLQhadwAhNVqLh7?juX5=OesI|$6>tXhN z;o4-7B>KI5w5?4>?x>PlYFpeaF;29}$k2keEAoaaB;zu;pczCLv2#p>46H;{WPlJ; zX{jX1+a>m`rM3-=;27w z>XS1xB5ej|Q1T=a^w74{gq)H{FTDnE9cGBAbfCiwD(E5TFr&|Az`QmY9cIL9&d3AM zh&CA=X7sTQ8qosNVMZU^pb;5n0G6_q2k~e`&P+VKQ5K*x8?*w8kv^@Ls;r>HOy#VG z6?B*ZLi+-jrivwO_^VK$PY1xIv>AYve8g+Mv>AOsK(KB^h8dWQrj}s_hXg9j=(7WG zB5ei-0$NnkW|D6UO%ipqt*0i!D+)qH5ypoKdd>o(B7=&}ph9I}6`SFif#67=8GspS zGy2p3)N-@{t0Y378=w(sGy3EJ)KXpmE1S_r3T#B#BUGa(w0i55)XMPm<|(M9&2alv4oBLI-akd#(jT!`s@s+}qjy%(b|uUZp~qhd zGpJAz7;Hw$04Aft2^y-5SBDwwyGc3dg|^WvZs?t-Ho2tZAWu+=5g-<&j0OoWJmKI<-mpp zdRGZ0U|wA!#;ZJ1C6Ry$o`qW@Q4>p4K)qWNC>&76a?tvC2B0uhnJKC?QRRp#K~&kH zN)1(BsFFgJ5vp`h<${2@#e>QMRSKx`Kfs)wsLW5NeKO}`Ugz^PLY)Nx=-nDXk>?Sr z>U*AWpzl>Tr^bqoJ!`@L99ySR1T*SIKaHRgj*v)6Fdu53%5oJkS*fHQ$O5R{I_IO*yX(3FY|s?fHSe-~|H7>En0k2l|2?Ol%4L>Mr^90MN5s z;4^-J&-g((;|Jx8AC`;uGJb$B`N;(Y0$5VcaV{cKlsv(9iYg^nFqwj)7F`4kJm}8T`M{F{?SurP0vR7i0B?^lWOSfbR<-9h;lH-#M%jgSUAeNjy ziM&Q%umiC~`qkzpwH6i=C83yF3yV26wH9Dg1+kbDr|JPVwH6dJYq4@(JF^zz3sy2~ zA--THvlikDc2aA}gp!FQ6G$eG%}pYVOca?QFzz@xWJ1VAz)}A*pm zC;_Fc^JK^ygq3IrR_c0SDfVuq3>SMRE{fes8D;F9xM%<@CHfD=tY$KN!^ZJjF=ru> zfMKHuteA6=3L(!)&`g?>STT_Uu?ZV2CTy^nh{B3-L@Xw3STV<@;vhP)24f@@h~W!X z5_bsn1v80V1bo3xE*4DaiFFh?3F-r%NrvTgJSb_#HG$_`NUTzFm5YfKC107KV8^MPSWJe6V#*SWIX0CMuqiVv=ENx@z^3v+F%yrK z^V*qkh%Z>lL_>VROePrO3wAQGU~*2y!eYV=im6yw%(1ChfK54JF(*#>05%m1ikVof zoY&68LVUqWCKlogW-_r5U$B#j1<63n1vZ?kV@_hlm;00pI>0?e3=nHlrmPn7uIkgrR6D6UTS__LgHnkRD zQw6b@6Q}9{HnkQMGi$MOUOTfE;tN(XYaza1CbJge3w9c7!F9OaWHx~Dj_il_((-Kd zyzYRr`TA}-f9mz|M%e8P8ZS*|x|IzvqE`?u(te{2+!S#NN+G|+51nT?3EhX%Xe-Fs^=K5XNhALASi1LSRQ zjmF2Q)c_XjWe!^P`ZwUJKUlNIs&~_0je2u#E1@u$LTur2biY_rB7lx&oBQyDhWpd- zIGwCVOAKZGZDAa)dW*UB$%pB;`}uNlHyH%lRsVhjaW;i@e>UtdhrMb4+kDe-(Fie6 zG==H6Mg{$wY12i-bb6Rb`!}PhX$t*}!vn~Ap~W6a?)%f}d|;^i(fwfY z4f_6t@X`JK{BaaZiww6Kty>f(j{)}y5M5XHFq;lvJ|= zj@FyytSJO{vAThFF{XGHXb2kat>@(HhELEmEO9)48QWW|Mw?+qq$;+sgnWq}$ITGU zZrRah8618&GRxy1V|+>9nwS;0j~TqzUs9V8+RbE5(_2k~d1vGBz{pSMSK+~0Urp|Z z@VcH^#O`ZTX9nBf%U~E$K?R7Xd3{jUf+HKxp*wn1(GEd5(Z+X1P|+JfMRx?nrhqI* z*MgF!0Lr@y07sFvTMPqL@=*X#45ESL%_jWL7OBy!^3po-pVfLXi{1p&8T4CkVxjXv z6vp@S;2U_JWn@_ko10#*H<;fq*bvNeJ?h=hhZ_r3t96RKh2#D*TFwv`R^RT;7Bl?A zX0-fPR36-or~TWGcHCdD`-3~01gnlq^l+4-(c%4yk;#ZrTBOCb#dSkX2Y2APC0uOM zYAB`EmZQh{FN~E|5pFe|-%c1PLV0oH|X1o?pmbLI@xV8Sz!0ux4ZaAYKdM@BMmWF!N3jBrK@c7#Yrj#f|oMa!i` zM#d`WjzNv@7}e;GVU6w>Hx(MkP-@F?28@gr;Eur@-Z7SgJBD(wVq~TmflND_N}3>8 zF#@<^1YpGoz=Dw(6zN4msA46+1uupW%otp7V{pNarMqVKas2b8Vuet_2*833Km`+k z3Ko#sdw~F`m@u&5f^fkG!GaHh1tZT&7yv3p3@jKSTrfhgV1(d~5oCV9^p+zehbxPw z40I_hvXMhOE;4Y(LF+(VvIaR6wKtPoTChvvz4K8-ZE6jpqa4? z&N(!)R>C{J3Pi_L0q-~};2k?qpJOJ4MOJcX$4Cb5*vOzA6B)E)fwt^;$bgZF0^D(t z!#g%|aK}duj*P%wvA&*7{?J+PBQkQ!gT(x$aFJ7u?HHEmj&F(W*q7LD6!b_Z&I}lt zEWjOiIlN;l2Y3ABU^0Sr*Qn1)Vtu!{zuB|pg*}F+Wq-E9A{|TDUVlBmx1}_e?HzE? zpAAM_+ND6mmHx9W{kz3lT+a|>3;pn5-7uAAa-D1%Y-YpJa{6t8H7g0x!)CTwjfR1~ zeZW$>zr5`&`U9qUNvSs-F)IXQI$5pxG|sZ}$N3bObu3G6AFbuboNAS4_K$gL|G36# z*OrKZ!^ia+tSq@p@zlr4w&55HL+pN9^8_P@UN#iN(SWielmq4J_h|#<=y?L3AJOzy zf2)7PB|WxFw)%rX4~iI$9w&nlN^^qdxWmNHyYSf*rdGn|bb=iZeBRF5zmTD=`~wuK z2>Spl`jS1OOYRIn-{}5+c;Dxgy#+(%zuxF!3nE9G7$;s$pV|{9fJ+T-pk98U3O+%3W1}C~Xz&4e7z;m}0;o{J=V%f>0LLSr zpBMH)!1DrtyZ#J|SpHqwhiyr)Wb1Q2FdA{Y1shrm?i+DoJ)7S^XAS~5x4m+B3bDPg zymAB;wHriQ-4_3O^$04eH;A-4ciZyX9i*rn;8xeRatHi`%=ibwvMtrY6eFGff(UZ6 zx!sA6yY_fX`2c%2yr0;^d zvX9x%_JRKK$fmLF9zGE^+DF(F%xFGaPi7l(2mj`WZQHjGY$1Ty3hc^km@&7pU_2TI zAB*{ueV`5=30Tg-2R{kIAHp_U+^oS9KLO_-l*~`@0Z8ytel~@G=H~T#jbzUgM_20k&k;IJDT}G-UCsefSmkYcczL2h_Na$%}t^2GDNm zUwl(Zpob+#J2&2dshWG{~Y+}>&n#aY{{T2fw{`Ceo*kRDC+ZPY(p_V0U(yKmuuU~9M>p(;Mc_Bq`eLW{$1uq$>H{sz^Krjzm3Xo}!B znzh}BC-x3z=R=}~{6|WjEsU0USdItw5gw;}wnsiK5$;FNoU`o{4Y07VKab%vz#a+1 zJjBq2fA90}V<-tQ7|ziX)bT|+V#0FaDeUwqd5f$@Cn zJx*433^C?B!jG|iPVq@WjIm2S9!~D<11LNK1wG;)g2Xfb8UTi9CoI!%{EGvY<`1`= z+sFOA_UZLO^Modi8nx}90-unVeFDV-Fi<=Gp^Vc9exO%;SoxU%%v1azfYT8+L5KE1 zzq%9b+#MHTj9uECE6U0Im|? za)d!IA?NUk-dRBR%L$EUyh7Rm;0k-G{potAd)n=uAfE=i-#tN64eV8Tn#|B|c*Gf$ zJwGi?;Pxjnblbm&PVhanH!^>CO+Iw=QsW7wuOk>*=Fl@j&v$iL;R=bVoDxj=D+*4n6Ja>4Lakgkr37Ull%h=R6IL`)9?2R!cSSryLES+czEwz!gRk(c; z>sYC)WTmc_m6~b@DShPcXc+?zoriO#$?S2o#L{L9A#=)z#J>w%3di5oU^2nqn`wXc z3;qsfYq-+{KeTd-STR}MF8hl+{H5#Ir#WkQg0F@LxT-xgB&@Qv)b7@5-fH%#pFyzme6i+uvag28veD+-ua z?2p0r_`GKj%sF_zu@3{>7{DI+1XWsM)jJ#vV2I)QgPqr>370(^&&-8M_6X>>k3={zjlKJ-I ze1SIS*g$Tzfl{;d#*u$mjRO>}0kjAI0Dyt{nmY>3&6uqw@7$UrkH^R833`|#cA$x6 z_poi-8Q8dJG252ehs3XgHQ8xV-u`d@yI3vD7&}4=CoN=EmLte^v|QkrvFMLW+>|GL z+bq)Goaj%xhX3>*caQ%lK1JYPbiltz9wYu&-*p6k8J{Bl*B$WJ+uwixeO}s5u*qYr z{Z}3RZ{kz(7%6}Acah-lA}8M`k4f*~B7aibpVG%j`?v8id5Vvb zx4%n(2{Zx!H?iNuME+^V!at2I;5JgYB-L6;533iu57GkuSy%0!#cKa7LjMQg*OPnh zxbXolGTowqFX;89yPqBYMLOhVvQLO?(KMye;gpGY65_5*mBEYm4AWo3S$u zMYIpy{+Ww0Sny(g!hZPw$KH9sS5d8ddm&Nr8AvTPNy0N05MgfV~w%DSm#2yvld)CZ5A>`^&&-L7M@A>xp zc=CV$Ypq!`v!<_^*-%!Z>4(Eq6VA-Z5OH#_CV6H~3e)w1ECSO@h3gqkSZ)F*FO^lbo0Pk! zR66OhIH;SgI3v?6nn|Rb`8(Z}RFQN~y>u?moN|)ExzDvuvf~o76n9!|IBbGh+(~ez zCzJP4%vwTCySuN-Ie#s=%n{>W=eWi!w;LUC4Pv^7SR^ItTs3MwCtG57Br#@0mYAC$dZ1h}`Nld~j!8Btbo`jVPOACioS2L_ zcW~Y_4J8jVl+&N&b|<;LNm-eRDvKsHO?h~<>;$fQ+_Rd9c`?#-e3ou1ts&lgj(JDr;7Xc_GL=@Q}xgEDeU_ zWYcj(oSmFx+Jun3*Q6MUPiBW_n=;*SPA{C(3Fr2~nZKzf)%?lio?2zQ4+orTxb3do z@u?`lW2q#?=E)VI6S;R3+3pR5a+QjbDU_U&#UFF1F^}#!g*fj}s_YE+W-&X%y>H6S zaPN({VDl2>ZmH@sJLe$Eq1ins9iF93Iz?$49soIir@O+mGH0voob)6*MrJCrU0HM` zB=IVwW84=sO|rS!H<~id5$DinJeNw9FWGsI|C|)(mf3r^&gkJA^GfI3WLLV%F)HuP zoh;{;+qt1XY!8ok`1bs8uDL%q&b=)+k$YdB!?QDILpS%d%(wF0o#=YgC_;cax~ zbYD6T1XOMYn~V2cR>?D2l`9oi9>BcEvE)dWd!HoFQ`Ic@S&*7#9>~o~HjjJr6pz3S z=1MDX_N8jJnjOQx>5!^s_uwBPT?4bz`A5iJYlcHIn7D@d^E<;o%5z6?N*r0txTAin z!Ydmqb#e4>&=1v;GA4%MLq1Q{fPLD;vW%=B=McZcM*TG_-^96i;ok3w)k_zPY^#z{JG+%T;a5teV(i8 z0`V70e!P?qh|d(CB|b-duJ}9|f40=ewp|c;tRyzDt@K- zRpLd}?czmMQ2ZJxzgGM@@pp;8Tl_uZ*NeYT{QcrLh!2b3EB-_AAB+D)e3|&q#P1XT zh4` z8;WmqrMthyxT<=J?A>m_zdw&#NRZ}J^n9s)m|okh2$4V`CG-W6u(OR?c$5XKPdiT@sEh#DE=|= zkBi?VezW)|#Xl`RB>oxk&x(Iu{0ri@ihoJ`Hu2lVzbgJUS-!7jdA||=o%rvi{Et$; zLj2F-f06RPia#jcy2?GC`CL`)#do;My?#B>Rr@6IoyB(%-&M+YlkrcHe82d?;)h82 zVd962j}<>c{3!9G#gCQx$B9o6KUMrR@k!!mh)))Ov8(naZn{bnpDsRM{1Wjui(e{! zx%d^Xs$0b0D*iU{tHiGsUnKq^@ehlCRQyKq#o`~A={+HSv*bS|{%P@B#6KhcIq}bn ze^LBa@h`je+S|mxBKfb1FBku{_;1C3C;kWVKZ^fJ{LkVKi2qgmA@SCHcl&AQs@-0E z2l1k+qj*tuqIgktl6X zi>lt@MO7d1s3~vvb-n5*>7uH?cu{qlcu{q_cu{qRcu{qxcu_S#yr>!|)3;^5=SjY( zx=OsLnlI(Amh#t%Um$*=_(kFu%lJ3As%{i7s)FKCr`_(5@z;vKQ~X`x3#GiMS}z`T z#=lSe{jRD9Wc&@1|DgDX#6KebQSpz-_@b&!!*dyM?CHTnkQaVT_s*r%@;4Kt`;wlYfi>f!oi>e*sMb%F6qH33TQT3*HQMFsVs45jN zs@@VWs`iK%Rd0(IRqu!wRqu)yRqu%xRqu-zRq7h|I3%iSh!<5yi5FEh#fz$=#fz$1 z;zd<$@uI4Zcu`eXyr`-tUR2c=FRG3aFRB`d7gY_#i>hPAi>gNAMU^F9RQbeLgxNbrvtGx`-E5CyN(VUB!#4ZsJ8%ck!a?6!D_U zFJ4p)5-+L-ix*Wx#EYt-;ziXk@uF(Dcu{qhcu^HAUQ~?`FRDh07geLgi>lG$Mb#Mb zqH3&oQ8iAysItY2sw>5ds(G%ja;o}Eq0RVzX@p4ONDD+-AkqSn7KpS!qy-`^5NUx( z3q)GrKeq+0lKYGKqF0MvBYLgq0@3S47m6+tyIbEf8seNDD+-AkqSn7KpS! zqy-`^5NUx(3q)EV(gKkdh_pbY1tKjFX@N)!L|P!y0+AMov_PZcusCK#6T=)$b)<+gbrl01F@p#ZUrepqep#h=EwpkO%ot2q7qia;V#!=|ew=gJiIw0E%EMgrNeW zqM1JUVKM|@0R*8KN}vo>3#Jb-5DOaeARh`L1f@_8bz3rh=m&9-3^o)%5p0DpR6tZK zrVoCY3;|dGK`4e2C}f`&Zs)>A|yE%5(i3nVXLAB18EL*1L$M_@A8PzWVZ z0oKjzI}m^Z2tgS{EoEN?4GW+MNbY zp#&n%40Uf~`Y;)6 zD1;KI0BaS~hX52n2+APpcBT&+7C;e{f?ECC#}|8i!4b!uTK_+8c#&m}v_PZ<{@X1O zik_Pr)oiC~0_LZmEAY|8t;NT*n44=6cM$(a6HKOjC(3rMQoe$?>QJ}&k-kY4A7uO( z%J;4^zEvgP)Du(9pHa~m{1??AvcCSkD+%mw|qoq#6())|5yuzo6pS+J@>Zi9ku&6|7*Kw z`e#~~98z<3|N5KxQH|&FEPSWB56u6YR(kwgo{#TTOT|}jj=1CI=9bal^G?N~fB66N zdE@nC{&u!2RR^f=H~;HBui)=!IsJp0zNKkU^LNVpqvTGl=H_-y+@+%Xz3Kelg8!)O zZ{-z6&CM-lc>}NPa^^pb58z`b{PEF?K=3l={ZLd=PdX}x~P*BaUtKv1| zcQ|^Fie2D=5> zmVN0X-#hc~$G?MrZrt0I%TrnSH-Z9|zl`M>+U-rJdeQ#|xH#fEJPE{`D72D@`#1)>W%+6}<6|Uy1&Q^%}xBpn7qSxMvt? zmOfUhmezjDnf_#^S4Q0vemvxO3!nT%sTy73uD^Wz7v$U5x%)>RZ>~Ke^>n7n?L`%CjDQg>#gt2efIpR<5BerVmRJie`2Zf-|&+&euddyhVVS7p1XZl z&3B$3RmuNnj%U@UAMueEh_pbY1tKl*f3pRWIe*-C+)kCpIr=~GKZp)BnwwkTKd2_N zeCEIAR$TvHKs-%+KYVoa9jai@E+;>LPbP2s<)w~~ zIe&%~=ijcoRWalIC$`_ed#kSAzBc!Jscf$yY42jZjeqXST~7O#<2625`+(zP@z>)w z|IYd;WPR2(*T=IDI_vY_y}bWv(+_fdnM2#p|DE=)zP#T3>d?Z2f6M-)xqmj-`#YPy z{hRd_ke|%@@AtZUe_VnO;PYhvu1kO09OC(4?%zGXKz#N2kN8LnL|WkQX@RJO_F8F> z!8)&|Ruzr3GRhF1;%W#Df)!OmtGU2nr?qg@#8rpT$eP-C>+YkpGRRPV*HO9zitay3 z`%#mej|L>xo|13!qKr?D($>`WTKU^KX(qk;;GfBS4XdgBpdi=_{hdLlAI=L+IviIo z9%Gg>GE}yJ{gw5*?GfDn`+256h4q*J{Cotz z_~*xUrhUK9nFka9JBLu9rnZOH)FIevH`5mTUXVEEVmpn3lJjcl&`9^Z;BC7_`0!KYlV_GMA0NV-@#>Cl;-r~$GlcG-EU2|LbPR;v zSGov|+kBKRH)-o?=l~Q!7|QQt+IQB_!D{Cz`>MLyzOJrTH^MUFTOmk%7gVr+K8QXB z%a75j0B$`-+bdxe@oF>(cfdOQ-Dn}KC%zvx5I=}Mf^I|~ht2RbY#}X-evIxzzlI-) ze?@CH&~`m&)Ih6d(3CyzZG4Hu0n5zAn_0IGx0&F*-+bc8*0@Mj)&&ZinO-Sp7u# zo{46od2kQ$1F#V`Gx&=1Z{T~VfM4Js90GN$whcAl zD5wdwp&m3iR;%OCrf5s_1hhSR6517wfj-2iq359IqEp}kxClQLorWf(mq0qqgn4i^ z>DR&aa3kDA+A=60z71Bv?XVhxum_}Y9rfzG5Q4h zBs@j@G=$(;cpkRG%j9iGUxTmVTlk)|AHeKCKf?ji4x;L4t&W10M{Bz^+7^7o?V%&_ zNzj@2WV9Q43iN=!_|wsW=uj9zJO(`nCc}l0K-$%C9bAvkhntC)Ljl|dt6?qacf)*afBdx8XhF573X$PvLXoFVJ%M zmiT+L0zJMq?Eo#I4fvn~bgIp=Lk#qSNu*7I3y3u&!gQElU#nC!12Q3pGFQVwxDl3; zb_?7NYoQSChlk)XcnP*qZacg}{2IItJ75=SZ=$8}E2uggZ=p8St)uN@;8-{gnm}`C zMP3KABiaeNKv#S>^b|A(?S=M+zQm`Y1JI!`f_N-?4muewBu+$UpigovU5YNlFNXr+ zThW#1Dp*at23-q}!4vqW(JkmR@Eq|Au$A~FbQ`)IeHDETeI0!R-HGl(OVPK`x6yad z_t5tt3?IR#q?Mtcp`W9m_Q4m#hA)ZtqoB%BP+y~KyRKQO#igW8| z&ZT2eP-9V0-m^`3aD3n2Gm>XyWG30$P%1$Ry5&9O7J<1$p?{=%wgoFo*aWxR!VUTn7vBhDC5a zEQT9M&qobQh;M?MVJR#l4b*bfumTF;7Se8om2exZg4;=7jRs*2+<`Z&g>`TzX?LNZ z?nXfsqW7TdQBe1xhWm*hKtXLlM{=A&RS`T050M7yVHDIOD5ytaBRqx&^&$EZd_r6X zpA+wcFNyb~<>)u?9r5?*k7xz@Gx`hqD;xw>pKB7R$+5H+)FG~m)`tef4dGab!XFQf zp(&gKF{B%M5cfnu^+G}QhCa|259(ADR6poX4C*x0a60iBa3(RR0jOahu^$G(U_7WH zs6j&lOoc?!lVCcrVFn~a3Tc<1hEzy{bjTomCS*bu-jEGBkPEXQkGxCaGMIy(3zrky za3%2)^d=P4%_yj)D5zzqVL9;%6jT8U>J}8#tthCKa2u?`gSs776N3uE8e&j)z*=HZ z>)=&*4POFpzz+OB80?+@IR77v8p(>ZK%@mCEf8se|DYDIcX7_x%{gHY`Zl~v97gxT zN5r4PXRr_dC0Y*O5&sB3!2$dsR2@Tq27OVr(fZH`n&4ZYZBQTD5jsP6d@qO$krs%w zK%@mCEf8seNDD+-AkqSn7KpS!qy-`^5NUx(3q)EV(gKkdh_t{z)dF@ap6RtQ&-IkD zTcany8lMh<2J0pG(bCo(KAvIvcsI_c{cC+X2x=W=z+YkM5Nh2?+8+$TIW?TROg*L! zGhUeSOx>nlQ>UrNe;4_n@5UFB5B__OEEBp>@m#Q}j(et=EX^(X zdMn;0PEKg8%TwFv7}O#y4%9H_yEFB7p?wpxQ~)=pau z7-tjhg14Ht)8W>Z*55PUX43Jt$-{@3ck4;ghLis^J{C_L-bp>g`VouweJmY33;lud zA4ACtKE=G5{9jm}YW0Vx=f6xNL|V1^v`MQzufda9#;Vinimy67{1NkOe3kjNc)vG1 zl=pl=CpK~LHl>0z_Z>~^XO<64dI9e!FKFLHm(OdaJ1uXf0}zBVh+e_=a8)y1l-$fI zYs!a6t6M82tnPIjCV~l9dkC@ z6}lB4bsOWt0Mg4bD4r1&yBtfR;fX@UP= zTcA^`7CH{XBcru7I$8&b186x~fcjgv(8&-rCR)erj@HG*b=$PiFmu?? z@D)%>9D4$Jq<0z{t@9uVA=1jAoVZ`x7CP_a=6V5I1O*Q^*CEO)i+cA(>o_!+%Xny+ zsi(NP-iq(!Z?5y8oH#1Cx$XyXh0N!m=DHaCv!Z$brn#wy;a6`1NfCWRTdsuUw zJT6)%Qzm+NbDfVCL(Eykq<4Clc8cX z(;3rTmw_J3bf1dW`SU0$qn!02--z#L);Qgf<)DHpT zvlZ=JLx+fC-cvemW(}r8-fq5+fFN-`s$y$sE0;X9gl`|zlSk=LDc?Hq-9&)zCTxf! zwpLOGqDIuveh7d?p5Nq4`_jaJ>tO2rGyK_!25DDKyDHk!f*^4a4H-<^n|3vAiYnGs zh;J7yv(EnFQ1S%doY1~ev}cGmj-zek_S1f}YY<{+>X1hSc zV6n~mAprRkIfhPhkEefje$74{Gl=8Mi;Ta4x`^XIZ)JbLYvLj_fZ8T~HQ!s|%dg@% zvxGd-{10+0IG1BOacDmIH`mbNBIfgI_L*fIiw1L?1OH_988n~teBuDH4c2tl0~&|s zLkV%wHTYMki#Rw%=`g4nO!L|r+J7GPyv)3@5Bf=qVLfWphLB1Bn0=i6wH!*$XZdC^ zEy|RTAGm<~RpO{*#sjnd&3VVPgW1=jo@5^KlrDdShx<8hAx(Z$pWL6eVK&oMr69I=KH$^_6N#*G{J3 z^9`NaiGr$2SwlUj&p5|G1E3CdD(~?1JBIi6;dD3ye}6owHGM`O_u z@GLxse;x((0t)Iy6x3D})JrI+mr+pLP*B_96=G1YqM%+wL6xAOUPnQ_fr8qBg4&6G z0DIvh{HO34m~U#og#DzK!#D69`~VfC{{nn#YaayFfOj4F7ONK20lvLe$3R0c-{2lc zeq(3~&7lRfBK-ukEy}mK_DN`Gvwu`q&oB#b5=i;hFjhI5D~pp)Qf2*DP32A(C)@Ekmke*t|Fwi3UD8eS&e z2HW8kJg8UUHDW^v@$0DJ4cLL-i5hkhzlj=lLn*ukd*E&I-hp?C4et@Z4`KKK59&kI z@DY5B{{%iIE`!hDbNoK|0=|T=U_a@Ga`+m)fp6hEFy9KF&bPQ{poRg&1Hn%`2ptSV zh=-!XU^sCsj36EbqlrO{LC2!wAP&yP8^#k)KtWA}NyLV8iTOs^z8RLnGW>EB)Cv?- z0cyB~_*N9uO1O;})G8Fz?Xa5I5F}m$cMyYGi-KB*8tx>%3k7vIT8OTP`@nqTTm%mj zZ-ipl1e-~F3bw$r@H}ZR0^dL@zJXSJ18u(suM_WtH=z{vkoFF|NBjYN2z(o@_%>Sc zZM5144f$@k5#J3*p~s_*QNDS$o1xKY3$zv58s!^kyDjQN+o2uMjws(m+nvxZ=*eg| zv^#3Pk?sM#i1}99?u+(A`=h6$XP^VYPYh}hY8XsB1cnlW8ipE%6Q2dKFai&1B#a^k zH5vsq1_d=1HH;&ULqVO5f*Oy4x)S&%TU`b7;cC*afoov_@SV235EcR7Yuk(A2H?AG zJ0F(7O>i^g@(s6I4l96fx$RrvR#*vq*KPA%x6OCmHs5vIeAjKSq1;_?H}Gw@eGjaM zdx7t~?fc;Y;CpYo2p)uoDEkQT?YF%V9)n`wJ8*jwJVD-*@D%aWz<1&H7I+5uK3oNB zvVFoG+y}0O5_lcnAZ;h?f;aJ?c0(!gTd;@tZFmRXh4)B%9}U9?uopfg&F~R?44=TK zq<@AQK8Jnq1!-TRU!g~Ho~y+-*oNA~bx=@sQBd`uJ{*Gw)c_j8vCs&jNC$NsYB-*_ zF*G3t)f6=}gXZ{X6jTcol=()zC-f%ni=K-1M^6Lu-TIk$zFoKd=wNgRItRSXGKoR)jjElE=AfW*VHPo{JQUPy^j^MA zMAfClpe{o}%|SuUh0BRST>&;Rs4G!W^H5M%p@u@Z2ks^9e)Iv9Z|l{A#1Em5ppT-D zp^w88@Ff0eG=x5bK8rq&z5rW^Uq-jVc6b#^;C0e>pgYkwp_KS7^m}wc9lkdv{*f3| z1q$jX6x7css9)d!F{oeRATg*zC@97E>xRaB2XPb%swN8RXcSZ};Ja)awbwG;ZusuN zH~n@D+7mUH@B4e>`NrQq75YJc;Cp}jbT|X}?%y5&1Hli2U@#0}ykTH|3*an>CFVB) z?2#}EMuYi%fU%_W8v*JfhzAV`FclJE8YF@F?SL7O%s45)?+B<=;I{-6za^mfEdj-E z38BQ|8O#BGYd~EN*HISKLKM^@6x8)7sKsytvEfEy^WAhl zv0(}RCKS}ou#_0oG8EKu6x0e7Q~_$Zh4@w!)Ik)~Ay91FplYCoqljywppHfjTe#+} zg|7{D@Sy6Vpz5K9`ozbepchJaevfs8u95Us54MdXQH46 zpr8h#p!_h1*f5xQ2n;0#H4Ftc90he2YKSEs0q4SG;I|aid2l|M-&DAeG8aKSXh?vm zq|fI2o@vBM#4{k77*q;+F5u^dm> z6W<6+h;Ksq%?5iJx&kdgZ$($aDp-wQgWiFzL+^yUiSI$z!+pdLpc~*p;)mf;;*C&D zya#<7-hp@V??V_qz#I0$hxm_C!x*mlKSj&nGtxhYeeeZ*315+J*bn9SZ_sbi@8Em* z0e*xE_=&tzITrK>^Scjca6B--{op4a1Vf02!CAzyFp_vQj3piiXTx}yK-wfQzY#G7 z&L=j%6%kLYVJh)7m<}@_g|v&&R7it#$bbOphMB~fs38lo@j0j=mv|PMhhB;rE`vER zm$WNTP&Ql%^YEbNqoA&aYlsck!bUK^Pw_aq3Ehl7i9U^n&}ZN|;^*N-;+N2u(e3Cf z=xb;R`UbiK-G%N(-$M7G{8okiF8V%%i9bL;gpY_nhF^$(MGwLuP~7v@fTK9h9F5k3 z+E54TLOs%tK^s6rI2Ip;9)~tYn?O@&2F)Rw^p?@DOQ_0Kb!=it&%5 zPoRd)#81J~#D);@7S!+zJd1x01@!_7YAXurC3u+_)HZZG`U+}zwXQDD;XRY-7QgY; zR{MweI7Yab_j*ih-c2&^A_Y(LX?;3Mx^;)oc?ZhGCcpZ7OMfQcj9YblZ@SL3WZJ>^ z+R{I3X)8eg=1`_PnCXIf$H=_9WZq%&4`)8B4aMfS-{PVw)6M%)6+gM}NJahJRCfYD znD?b7qXAd|K`4e2!>lH{3{}50)zJ_Gv7jLj@}Urdr#00fwA7@X*qZ0ZEp@-Qc*kmf zYaN7ANWQftzp=x+S1@^g8=Vh%F|F9w(Jx!+LNxlCHhKY6K=QS1bScCxXrqfE_M28( zU)M&LeA`Ng@_0u^GriMU{xeu6D1faHbtcOL)&b&YdGBWc^9=b=2>nQ(d}$LMhZYRv zeK1oln)h%T#c}EOijH*E_FBIVm(Q?=tZmi=5H`QTuE9n))1uc2khWEINq0GF` zMY{ik#yWo}(?Kin0W|7Y%AlQ4KTL)){N&-ZAC$lX(t;3s7G+Vrx3Mlk^U*@mDi$&h zz7($xGH-Qw?}>El!^S!WABXBUc|V7^6zw#D_il)-DU6S9B|i)m5d9YK=X7YSOG)qa zQDa?>M(M`7?je@x#Kzh}gQQp6tSYUoxyE5Aoz;@_Lu;M?Tr2Irw51LZ$8Kf4%3vSw z)5#gFwLgyS_ir5hQ8l$cz2@)M8UCi7*6k%fhTq7I43#ZVbV+Mn2Ia#}sBD+$_Pj4x zWw0-1z5azEoZeDTPHkN|j@7!Aw(upF{Iz=i!X*DoQU3#nx4Zw68A*t=K%@mCE%3jv z1qu|;?`!Zp{zRp{*()S1WS+%OCmk&%ujKj~I*1Q}DQAg#<5bl$%5S9(FRj?r2SruV zyu5#vR@L2C7W|zg1CWAiGM&G=qy z)HdbcJ)9Pr-Ac!j7R~&|LBYk$`+JA;%{U84*LSwzomcua?`@?6C$-kaj8pyx(>CM& znZZoEYPk@;?CsXt)2exq_o|I85Kz!-w~YKU>$I zDQD_UX8#Dn9O>g2x14+Xs&xb@ zqm#I%rLQ6%%D8q8GOZA4LA*rWlKweQjr7IX`GUz{XZ64e9@U*=7sIF$(Rnz)0od9W`R?UmV|MM+S z{!iXJSv~mHhIOgXP@>Xh!|5wy+bT!@6-#02?YHZA9oF0fF5=r7)J!M3+V=H#O?$Fg zHW|#m>cyUV+kOH2N-1T-f|noBe@zPnV%&96A=_EZG`7Dj?y)ht$~sGCy;Plpk}7#7 zeXG>tl_})dSIG98T%}x0wBM}L{fXnTH{E}v3z{CDA5$(LKbiVH{YT?Q^8WQL5L<1#{j*aH zGoByvxDK#t60_~(vkmDg+w-5T>(7)k^~N#1eq2{rUD!TlzPDD{-v3NJf3{4J{lzO= zEYtG5(Xi~#1;?>ZnRD7nTr>SfxvJy*Z;fNF;`bSNXDHz3o}=8-R^4{m|B0nTpIf|F zkKb$Y4kY>&%3wEg-+?mkK^gCF=+phWa9?yR?^S`nmZgJHlnL_g6Yr7)n^CSg??3T> z1e)?uSG3d%(z$PkvMXEa5Ly8X=C{ zw_Y{vH)9TzD$w3!>EFzcBt}{w(gOdPEiiP)ByW`(na{9%=Yb?F* z{wFRC&a(7rvE9E8UEtF#m&7l$FZAiJ@;7}OyvU~$AG!O*P`pnM9_>3itbKa%lXLg$ zOMLpBn^rClp>zN^!<>iTyE7Q@=@GjxZ{xqw(qDD_a%y;mrJJq%rX+ZUPanMU_807+ zrQdsS_($qlOP?Qm!hUs)Pah~sdNh2kPha6{^=xo~Pyf2KOV7}CKD}(-%Rku*eL8;N ztgozmpMIp#Pxpmx^6A&VI^!+>W=r?>%~1MDOW%CmyrZp0d|Fngs=?e;#V73-koA~3 zMrK$fX`CCxe(QG3dE*8WG859W4%d~IkeDf}=7PJ0&zpeIQwfLG0hn-kTA{B!p$wT$!9+`qLLHRr zJI$DtnP{w^ohZe(evG00DjbuVV>^cdMD^q`w= z=KGcUwVL?b^1}MI;)bE)o#UD_O80p8NHF}FF=4B%rSEATe$sDQx?AX!RocgK;*A!? zAv7x~JI$<*+>8{bVY*xen$Ege#v zmVTr6z=6T8mVUbMl3PRFEIn@B;<Ju`_m8&I6=y7ZJ)CCg z$)ycm^Ut*Ob@xo1s;*^x*^e$Ap zEZsb3-ctV__Gj6T{_6g4xh!Dy?f#YF?|i8bSo-9`qIBz5+U=`5@3oarzi?IAA$xaQ zU4KHG<#s)vzU1XKx9CHb4!`4W*V9uo63qT{=+L1nLLDsK`SGbM{f&J(_WQHG2sPoj z9iNby79X$TbCDS5I~Ij>q13o)3Q0QtOa=>@s=T$#S5Ug5L4n8_)CJ`83rznjAjw zCZ;B2nWUuj9Op_RJ9D-(YGOuuVp1Sm4UrS@3q$J0gvR*vo-;mgXf?F-s-3r;X!Z5! z-OF$JQL&$2d;f%|LNk53eo<*pYr0QQ*zrJX|5QuIe(nD#%zn|m{jW7O$M+ZR+x%E? z9_Qmp_s`Z}Q10>57TLF2y3ZNk&e5Dl4|VwBLp8~#kKXX$HTGUhk3RROVc{JdN9LtB z4Y6It|uXr>C1jTaisryOJBKe#@-;>^sXzeP@LzA zR+ZEbao+o4@8)puYo9Ld8XFFC{qp8_`={DJTRLaTh#DcLyZqwkHiSo5dg={@wJpwr zP1hD47aVEn())L{3geI3;G3k+wsfZkd*2FApKwWG@KQ@R`Q(?^gL5tY*5cArH0Mus!LQ+6le*SywW6nqW zzkgbPYU#!o+_g1?F5WTp)o>Z@e%`99gP&RY=!4I{rRb>e_LH;(cZX$vKNNbWtv36Y z{*rcMu<5|qw|2#P#eN@1NOUeFaMF>n9zbfTMG`Iqah zWG;9)4y2}}=j5rZ*;(0~-c=wYE5)3r(-JOr%9h;Hk{|wUq3`P3L{;U#99QDwobujr zAwGUW?D%o#R$eP6WX^E*WOr}nL7W_Kycsgb2@_YpPE5<1;S@3Xu}`;f+Qm#GF+Cy8 z97zIP{FoW`Z)u^;vC5nNpVh$2Ep!<2e{iS&d*eAX!Jq2+9Cw`Sgo-!ZW1N@o9rrw+ z#R4 z&2^+x#9M!y_MD>b^?6TqR$Sb~p_K5hqlSzgzGs%eCrQ+Pkmo=ag2emn3-m)nC@WZbiL%p4#_R!mLc!SFdM= zoFc2IXUh4?9QVzbGcvNB>+wErH9QA&2lr}JDervUE5==d9x*+gBK^(88NB>yUcKG> z#EvK38{g9d>tDN9a~_K69y2j^lu{isx}6z57w^-Hi`o;7gt)!Uh+ow-2vy7GF%XF(xhjwvhDJHMS5EFRiz4@rF zJ>+~*y`1NJNW;eD^>XW#=~m`fn~xs-`=8o_%$_kldc`m?mZNVEuaPM0El-c0vOZ)z z^ontVUj5t&_U+NzSv1q$qsOy8y7w9Fs7%k>9xLZ>a*wzkeMYGsGJ)xGzW26QZx(v= zbf@E$^V0iD!+5^>@_D{;{=IgP72xInS&ffRVb3=Ele-^O&X?DoecX1aUSCg{!RqVL z^Imz@KTUsl`}Xol?`!HX`Ms;;<9qjY(%l`!VKRso_ zUU~L=C&k-dD!n)TVcq%;<$AqWKX=NqSymngyy<)M<843Qes8u!f^&wI<^ZMRoZ&3p}1}zZsoPLK5ScgJgi=y zx1D?1Q?~ElJFa=-d*!O{A6|Y;j=KV-n?{! z`F&)+=}~pR@#^<9CeMuR)aR@cZ#{YQTcw<{2blV$yyK;NQ+e&~jVIlymD_{2{dv># z*1vZ>l$7dTPozwzV~8_ljw>oDHN`n^CS_)3WHRAEX2J~9?bMT)k>=cDrDrfQLmTI>xerdrGONT< z=YHB;>15&4b5c1*d;Q!AIqrGf>xY?|nUr8I#JT=+de~Tq1apZp%{klC@0O9{T%Xg; zmXygQlXpKqJu@ZA%p%uy&K#s>uuu$XIqn5L{p(J8fYDQE@vLNLaaGo=lnnj0(xv!stRaAtyhdc6}; zQ)jDbv$>#Vg3@h(X5^STbpO&0Sy^=WoBpS47D%bgq-^Jo#ch4le$$dtvlGz3bTj?< zT>25v(@x_LLsquCUd;WC`Oj)jeR$^zHO$hqd%)zE#Qn0}{OH8fJKz4s`~Zc?H$OJf z=U1KUAMMkx^<4Kv5M4ES_hij|eap`;jkU)5bn(i|8-&qcd@Gv;>5mU?8Ca&{d^+Lh zPZC1tx~NM}^k2pO=%k)w)Hy!A;;2@KH2TP*yE}x?=jI+*9wgtp|CsUG>w`mFM@@O4 z;9mb^pC0gI^f*0*{{OPV??UMN1KN+a&ttl8y?I9%J!F0GprT)Y*iBuJvFO)7`~8JC zT4($8n9sIv4o>vxMxPXX7Nnl;%Zh`F@dJByrUesx`k8$TTZE?4Ki~NM!B(PAFHgMu zKo~8aKW(~B^66VT_dLO-Ut-blQ%417`1FIreWjsfpUyZvyP5xDpMG}pvakJVK7Guz z!p=I~r*DcnW^f4I8o2BYJHy8hZEU+Goaxg)joSE>V!WS@zkP&8Oy%-|fKK6d0qFRQsez5ju2D?;dX zcjWZ5E@yeh);T|nc3m`UnV;tnPUZZ0xzWDyA={_Fj~nXqKV#{#n|d!(SNZhPL0{jd z(M4$k-w)4cc~@^r)7SX)&mWAL5<+jEa8IFqtxs?HY-4>z|4OgNyF^>vE&br)2S?iI z*r~M#gg)T@KIO&H{zX2Wd-Yv+1kv*b&bvfk@6#`~sr_XLo%Y_f*ISEO4>cF@15Qk5 zM#*Ji^y%zvFRB|^?wGopLg?6)!I8lwKD}{nNm%jxBe?CAzQI10o;&F5B^uxGjOSK{ zZ}#cuPrsHki>Ytx`D&R@uO2sXrABuT*dMT#`}AGA*OZ6R(2X%xh<=`Bt5V;#Zt>}E zCtdQEqF?u%R&kB}xBB!$EuM@~D}B0Nw-bhGbp8caJ?l2g4Vs#4qi>$^OE^To@VWzQ zNBLLzbo-8nOZujZl;lu+Pee}9}@3X>f^{9*nH>kT=o@TyRL+HMFy%vQF zeY(z}?wkBINFV+4r)s@VpSVxuh0tf#Ek4%1*Qd7yN92d@XZt;E###OiK7IK^j~A&T z*3ZJDZ}Qh?|H}HbbLe58o_Je&q5n~zF282XS=M9hf3wbQ86^MWDSMXaV|@CARWCL3 z7yI-R^Uj{DAE$j@*q-l?;(69Ro36Gt`E>K9$LE9}@$p=0*k!>BEIoer*(Jdi^iS>i ze3LcL;>Xl4dLv9f=#A?~cC?@L>6hY;{We6s9lCXHp<4QM|NO-lSgm||;CK9T&T&3H zJtH&Cbd08P)XL!an4XdD9H=?2J4eLSqy*>u5y<2SOBBe-bj}Ou8CGsaAdB-xLb@rC zkeJ~dM`xtFCurkMN4rsTX`aCG6LHijk9YEol3?At)o$-uH zx+$MH)qP%K)YPAtlwy({^}JKgolVX&S!Q%cCEY1MEi)<2q#HE}NtwnuO6$04Qbk@qK%G;%QKvlWl+Oz|6_W0amuAlS__Q9ROi!5Vw4+f|(5NXmeOiih zrDN1dN1gQ44Cj2z`7k5XjL(XsxY0aMo$`36ymVwwN8NO{y{Gf^!!4gN%}vjk=9JH5 z&dB&F?cp`5o273#d-h(N=P@mZT(v5kVCh|xp3PD}SbD?E!0~oD+x6JXd-&_M(^Ecv z{^H;-^!p9C;dwv(pqX-=_T_ffDNMho`?Oi9dv?4%!eV=EQs=gi&g8t(Z^Vw^KA)aF z=-T_j^nVto)+|-@ciwp@x~0yr^pv{>E(={teOJ9dUM;lr>XhzdLiB6S9>2bBn10Mp zGY53mt1W%X_UPpy`Y&tV)u?`m{?7&1@BTJ)v!$O(T{F@DxTQbKy8E3Vdil+52kOTx zy}9vQ*@}L}ku#f4vFTSl>BsCfe)<)?>oMmdk9P2`yL$BO)!VdJuiibJ_3V{%?oY@u zD)%e>-TRdoPr1)`@}2u+uRM?UxD-(8oC!mnOMt`o)82ixt1)?Wf3t$T{t&M}{BXL- zrGE2=p_k0CH-BFLlz0E#LvAqoJ4?g;)Ua+n`V1Xv?!VoBk?wuQn|kn$woeQ=JGghh zA){B`hsRXAFZb?GJaz7K=uh$PqrB^7uYD`;qs&AZD*FxOM$wzDw>;i*dg`Ui;#A&e zdg-3hzI|i*j6R$%^?UiJx|j8b^WE9`UGMefdgE7DZ~46Y)OJJKIW>CemF2yD5^s85 z|3&q5$(L?hwuj-)99P!kjW5df;Y2ZcgPo?~KEl~DQ0KVDeaR4$QGI-Gd-vLta=py` zk>{(c$v5{+zm;z8qsZ@R`W>q0SND{oRF!fvV}CS%flRl9FecCKIf==0dp79LawbuI ze9wF3-Cmf({nFi>R#WOsQSW}s>#vPdR!$~qUb*U8yT-Xep+3< zf}J|Mk$E3!$T^4m|4)$uTZ(%Q3)Zsq_16rnqj>JsEoH+o*4LKa_}YL;VRYGy@!c(+ zdtFmJ=fp6YQ)AueFvss78eKQZ&vULfb`Htb9M@alJ$HuM@6#Wix93xf{9aOjS>AVN z>Th_zCTabn_Ky}n1Q)Nuzw+LQe)kQV=V0T`y786JD8`>S&!@&(`at@Ujlpv){pzM4 zuL@1Dbp1Z(J|E)!kP*kvIn&~NFra`4PU&@f1Ra$ z*S&pIi1S3r+@rr&i!J@*mro_yH*j9bxU`9XnWewIW7s=ko`cmmH8dr-lIMLrcWtwH z{x$f{^*rTvf^Gxc9)>QmVRsaDpI#~6H**sP%Kawy!FguH>7(6xyzSa`hyQx%-to{= z@A;PZ{3||w?1WfG^U8bA%bkgkZuYM*#K$N0=X9yO`^m#oa-;b8sm>Lhdv|Q^oADeu z%(E?1!mFQthXiwBl{edMpg(#(<&Ed5b!sbR@CGmauc|lxpH;59o%eaX<3e?vDC?to zy0?9}@8LPmsd&ycM5Ro3x`)(6d4T1OH+0zWc#b8CmzkWN6#6HU%oVl!9IA(MUXEd= z&FfU-hKy2i=eqAzWn?gmf)G5?|Op2aWTYyLyu&L=g{ett;v?X}Mh&{uMuw({K1RUG{c zO@3Nq(=TxECp{kUkN4>Z_B}kwn!tVFBc1l!=!VHpuk=s!>G9v~=xOuZW>e-{2QB&+ zvd7gwE_l9A4@xPyPSeluL}EBGe4$S_E^AP#<9Sj2>P8>fn)gT6ANz}<-(cv(cPEF? zn>!2|5vKoOd+p7&!>PQ#@cpLU;SA=lL&XXH0R0B<4T{n;>DO@1rb?Yq*0rgf$@_@U zzjD2zU*fzAe`)Q{qF?3vciO6K>djQOG+I{F-m7SnnD?|r zKfsIkj4jsBT6)DV8B_gN^FGBRZ*&f#A0B+`IsXE#uYI9b;rA{5a;+r6TRBuIXu+%F_> zZZpHQNv>v?${A86JyXZucy508}7HA9P<{S*$=#Sd1mH`J~ig> zb3w13we=dsgxSvTPCM;si|u&V+T+Lg*?#x6IK7c#do7%IRD1t4pRTp=&|7v2{X@r% z&kSBnf8AYM&$if3TV_re7EGi6Yk1j(ivFx~E?R%A#df*(jyu;`ynivc;{|84PoiKWV+mdn%a^+!)-=`#2Z8+tJVc?4!rrw_6?J zJ(sud-{$8&bxZl&uN3dSjr)1vtRT-z++GX%d1bqBpX-cw7mmN)`u6T~%yD$c1nxts z-G6xN-z)FkFMT%Z{f;5t+dTd*`}Uw^=~}x7XQ}?QUuH^fLUxj>y{h?Vp~ozpl%8l_ zyHwIGUO8QFJFI?PKQbZL+4J_E_d`_E$_p+ z^-k`ewMu>6R=3!;=}mni>q+)Q)2`th`r+H1d!>Cj=hgFXIZA!pR`XOMiOr1bthg}~ zsAAKE(uUTROxLZB_n_SaX!ZLjZ@cr_ZS~&vI#kGh9TU^r-05}8+IFn9f$bx&hqGyV z<-PUh^^3dF} zdcYdUc`(V&2)%o_pS|(+ou^x$((k`NYl{6j%Oxjf`bGNp;eoL?|L)x++hdR3&Y~`; znfai9hEIRidDEA{PuuGAmJF&0aeg=Lr#O#a*zVe{;XQ3D*UzS>w!Ewww$r1wq>Zs( z_~Y$sZlk%{znAqsW>{J%e7Jn;pETUGHJR@Ssm;Jh9E%i}h>{(;7i*@t}E-#qSW z#rE)xRTR`U+G%e&eov>L{`LhSwhQmL)cNvXx7**e)t9|@MP~4G(xqKJEm*vy$lsd& z>z{7j8~T>_`Rh+O5dM+%^Wobq^iP%^R{#9tLflU-?>KXE@D%#;ot7E?<)IS&RegY^MUGR=^;;qTU*>un(a0;%cn<`kGMQMj{Dm1@QPrZ zr9YXwKTdO>`TG3W`k@$$9|k{IXpz6?#XE~EuFn>ARDJF7?(xgtll#ps-_#0n9GY<9 zhtCHmS^C(~BSxxonXl364bAknoVTbv$aR`oe~Rn5!R;UTDmaCHKsnHL89L&1f3l?; zOdODDu|Ah>Pr5^2X6c`%kGLYt{b*Fwd)@pO@m_1!gH!xA{f+gTd}(n%n(^vq_XRmW z&Gh$NA4=uAY2UbS!vRa5zVXp=|MlF5&s~-g;{NpIhI1BMD>#qz|88IKZr)Rkd+c?6 z3-{OmkG=N}kL#+|#*gL15rn{ygxCq~$R@!Mmq}N+l#%5k6PJl>Ck}0nEZLS4*&a)> zV^b#y#ati^-9Ro3-Si37q1~YbOi7qf4Fni2<(f+yS}+j8_r80t_cX}E_j~R?zdyct ze0;R(UTf`o_St9elRx#f=qAjwer@*M!OeJHeEvBz5$?x#-SNB-?Z)=!{p7nH+#mg> z$2`9ALBypA=sk#Q>x(Z65Z{me;qQ;=;Q92Dp%>p;S`|i*ee92>LOhq=`SBlpCip7e z*FE_0g&M|{M}B(SMIDR_KJ?7y?JYc?9&i8KHyU^LMbCf6#h;9R5=QU7=AnOW;m&p% z(|EysfARX)gqSa#HFN3}(f@=|YttQnul)e+-P+$@+W9s5N$@m&gYRl?TKTEkPf*|9 zeZ>PqGVa zf#&PWzx-Hu;{51QuRGyMrP=c%wG-c}-tyZ9V3^{5PyPF2p3=d3hYxqAhDtwqc%Q=4z2}^O(Rj4^?Qg$d<5zyYDRq742@kokgK?SkernI%D{DVX=)$WWZR1B#_}%&O zoA-s_d&S32d12=_50CEt>|^hae*N&s5%J&lksUkuW=88cujb1G{H}IyPm=a<5}%3i zO~a%Um<;$V&EMoCU+7E*le@ONi8kIDcXx+g+|MT;+T)AavrkU#!jb}f7lYRWAQOMS z)=Aj?e9pMpYodT}x3N|rZkO>|$GsuKo#LRo*FC}XZvVbU?KEENI67bN&?DTPV>9M3 z)+Ov51qafHVL`B;FI({2f1bYse}Th$HNhwb0;G)cMHK#UcW55Pe7nbci}2j)EE?qt zCdcP381-TS?|knhJ4apMw#D((^PBQ<)ErfRyk&G(6_2^F+t0h6*Z+b*l;n}R^2nhM-`=;zau?o@?LvU zck9J3|8R717)?x1?z$EW4@S25^$^cGa{aSfZ^O88-&Qv?*tX4&pRj6eA3_*ROz(7Y znVckq`2@71rSCo5jR%AGh0&$=J^75z`_bMX2#%JTVf2WPeC?D7`WAosiQf&;PY*xu zd2erFeDRdau6;oX?b=gbb<#xXe)FR@{KpN$5yk;m-t>;!Tj&qZ{=)UkYG}8<{louy zLj?HK@BY}W5&EGYmoE5W>oa}P*}q*s-uWz^Z+6|et8oYB34i>iU$kapKC^YhH%n-z zez)Z8vC_~pF*@th1S{k3xCuX9r)HCE^A?2_MV^K z{?p)R=%0Ug+0$FNuO8l03(@aC=B)Dj1GGmU{MpBTS^867^o-Z+`$7Zv*PZ|FXN72Y zE}weXdn1hF25-KqSVQ~qmS;bFx)IEeUi8^VUlyQ$z3W&1eSPU~cu)MhH$1t4d+nLW z7Prt2?YryxKea%A$aUSx=!E&vg+s4-ZVUJJH}}7>(=$K%TkxPe0>J(M-Frpwi-$+^ z=Ct1!;r`|0U;9Jnmk*EL^UkNA-9fvsdEJ9AY8`ucwB+iaPSk$>@aR>yUG?P>`sLA2 zZ&_Fa-??8{{JK&%>8Dk0HSX74<;A@Z!5|LftczJSr{ zkGrG3xI1d<1nLFn#N8cucL)Az=;H5ctFKpca)7WIaJALntKC~)wqvZFXm{9t=?;`{ z$8_Ij?HFL!o;jEe727W_&-RUSydz28U3-Z3jVS|$B<0v%QV_L=An#7!qjnytG%#KQ?DRhVnwLH?dML*GZWR*08@SfB z%kB;dcLyi#P9AqBhu74*_h62~-?!O)(zU}(&$sfpyQtV58q7?-zn`Sz?hd@WL$kl{ z^mmxIUg6Q;F!6fYXac6uY#H6bW+2$| z^sVl@<_Y`$72nXhev)@`@Xn4F_Z_?TZsom7#H;WAz~=+hFTj{;4uW_6diMOz!}=oB z5BDMM^o(N*9@$uUQ{&-y4xXv*q}-X6cf2IRa})bxu9M-N>F~~Uo_X~6y5K)OeY%SJ zGBd?)I(Yr<54xr{is!HoHJ=mUxdeFksmJaobgv099t6CT3f&zF-5m;XuWp&ThIcmr zz@2Id;~(ZXZ6S_z`@yHnZ=2V-FpM}3U_txQg-`ojX(?b-R0fvM{m~Yz^SO3vg3s;c zZ`ChuV7`#@Siy+(JWed&^HUA;h0~`0DSv*`T@5@hO`D$gKmS#?1bF`1Yl;as-Wx`H zjsLv!{S*IZHr?>s(lar?anH9#!)Ktse8K#w(na7iMK+wlcw%IdpB(aD9UtL+dURp} z_brnnJFmfgbSFZF``E;Gj3Xzew@-~!$8mQF@{Wdq_-TB?wH5b0)hfm_GrPQ=nO%N- zGqcO%HIMYN>krPYVZOqe1*}KKvZoQ0M_d2&$rHnJ?YW?T{x9d&PM#nA=-)2>SqFDF zE<(P#JK{)utI~v zs_(AR;O;;D;EMs)g;mVZ$_j7r^>Oq6_2_55gm-%F214tlNz3LAOG)9ctq`; z80Sqd9_`@%lyF(0hqWC%XD-=!75;n^WOH`FFv$$ z7uMl5M}JtuxNfTU?8BwM;Cb|=f1GOI{))%EvJ_yP_o~MqeQ6(0yO&imBJ;I10(vp#sAWew;#ZTkmaRm1b;yRLub_ZxV={MkhtcZHa5Idq>t zv>R^TNCD|8UX!{#L^L z)0MZpzk_?_{SUaO1^KBnhJz5#mp}d3H!2N` z7vKKJ*6I$@)%Oit&vOYrfYQ9G@;N_#)Ho7DNB7fR_{dlk7{uJy6O<)wPJDv+Knuk|@VTkX3dVUnY@OqBbI&)(W{M&!5 za~@jMD&f7&iW@%u=@9MW?z12I$=1JN-Sy1v&xjU>(aHz^@r3Xa><3Y}@pX-Utn1i+ z`4>8PfAfeBti6BZ4|so7y!71C^D$HMw@**kFwceOjth(Dr`BOvg0X)W`0w{(d);?( z?)jv@2qd0Uw4ScN2xl}uth>HX)B7i_mwW6Z`j zW5tc-o#mNyE58@Byi(7l?(QcvRbONm%CS?S_c?%Fy^~(?-P>J!>gN~R2l(9Mh(G^z zMzSsgj}Mc3@S+OePq+_N{MRaYj^fAE_;DKo-mAMNruiYpwh{lK3+9&Grzu#c>=q#C zecL|!19yjCNMZaQ=5O)*3D%XkFHI`gorMEj_gxBBh+s^{&q4w>IKo};JMb9eEaKv5 zt~J5;8hiL13cnxc{N$GXeu8Jqe(oLvc|YBQ_avh;Az*yZ;qKTI#tpcxJh*?T_8sg` z@!`|{68<~(2|DMd*LQG#@7kNTm2SlQw;eC+HgLaT+XG%6y%gUw96R;&S{?I6uUzu! z4({Dj>BiE_`l1)~t^P*%3iNMVPTO0hN z=S5#^yaw~DFMVXK^IGT``TJ<&b$wCzxQ88Uy}mEHar7%=otv;fQu&J?tl|CYOMd(1 z7q#Bd7oEEI+i$A95$o|EeEH`}=uf}>l))icQ+NB+=pL*F#&s|#k5WaILFZe@*_pC2n{pZ_S zxc@Z#?u%<5#kz*CE%;6c_g9YH^@89Q`0*d3M@t`vpAYE-4cz~><_&)29>Vcq+~*$n+#QPbo{qZy-|zoL;QvM7|DO>! zFE}$8fN4XwpBmA^rGVY997MeHeGbP^_r=vN&5A16xWEfXjH@T)$)l?uK{t*l-# zSh?sTjwu$~O6>5dLBvb(2!7zxe}MTzeZ-~WKbDSv)6)0!J=jBT&)5hC!P3_&TXg%AU#dUB9IGFM_$`iTQK>I680_fv=Cg z;n(>7teC(3TCZR7#r3}Y+z))rUkv#I^2ol0i+z5OPJL(Ls(!pDQu*xx+zf*lJ_GQ+ zTThK)@*M_U>DAZuL_lGjvwYc_%JS8#Y!9uJzpmf&^tA(hy?K4T;A@?q&ClNRgQy4i#^9`o7yb;KJQg=dK>{O-unn60oj?uYCt|XP z?M-RRnQ?h4Jf+9PW|5DtR#P4L%0jqv=ZaX~!3i-ETU~q8L+KR`3X)gaqv+-Kk_4y_H zTAQ=}Z8o~nFI<&PziM>F>rseJz1S0%*G7uYvbG3U``M{@;&Wx7;&>j;+0!w56pv%M z_#P^H|5%=v;+l)A2^-~4+w@8P=ec;cbNkZ)W|Ea_R3gSn0^6Boct{|v-RbeP>^qW6ueavo znHnGO-aR(r;!oc~T=h!Q-*)gfPyziDowzu?$kSyndHG|!#E;%KqJMq@Z-qcK7^6eMeUYZu}MVBR%P_nts_wds@(! zipMzPA^zh(O!9{|KN?qcUsB!`OEUoKDvYSWN+ca-ah$PtoZmSeaaI@dmn*o0j~BP zN&C=*Z9uuScxS%x$Gg%ePb&YWN5+%q?Uu>QUN;^`dV-lJoewAZQGB_#PxhDp=;I-{ zZglxmzs=hxdiiwUf6_Mo`255l)6*EU0~w{ym_;Ayi5|OU&&1@+;)$I$Z?60!y#~7U zH_aZU-?`nV&v>u}2ywN}P52KS&c?qPCGn>{w6pxx9?X|w|D_66x6A;6pY3B5W0YPU zyrjz?mN()=Zy23=`3v3uNqIeJ@ezNi?e)pO>Rs7*m#&;0QHA)cBi?@c%kskVR{dI1 zUfLh^`o!Nc{VZ?vm*tB%(Stj(>9;L?(aT0>eo&t25hr_(<@ifq%$A?c?QHyuTRdI* z>!v?derMA26_N2X-i$Tdk1B9Vzm}Vys2e}+6+dy}KWz30E`B0wU)}6yd}DdwV*Wck zzw9{=e8Ff!Ka#U21dS|`?--r=LH(33rR0z2(}Y6|dbBm|s&o8#ia;Tbr5{ zLB!tYxFa_R#`bj0AIY~ZJ;9|fd3{QME@X*IrH`G&lJ;ikPrm%_J+I%tVzT)R>5ELC z;HtsOFOL6+Q@oC@@cmEBKbDPW^L@TQ5WQ~nlzr1_`%k_W2Ep#tp!n3{hq&+Ep+1rQrLlbyocMj_~e<}NB((&t>ex(;|^YRO~?!#1X zxb$(Bfb0w3kc~&_>%P4)d;Wocd}TJjBhxQ^2XpkA(l`H_>YncDa ze>Yx*PSL}0pTE-Awe(aT$WNU3n`WQjZZ5x$>HMvfjDo$1rxMYw7Qlk|_}_{+vG`wO>w{frmwXP-fw=w+h|jto}3 zdf%G0x0%yl&&ijUWXszTlV|(S^cUdjLWk08=hEB!wrqOg)!F>%=J*?yztUGWewMF3 zTx>7vA4|q7^_+dja_QAgUj7%~p0%f$qqlPOc8=crj;wsw=*kZ^cf`s5R?faw&cEU{ zJ|2oE<%x^!{YLKrs>|cWPTdDM0m-+e?^M5W| zpAQ>cJ7;eEym*2NpKE5=FqE{zyI3G5DG=WPif~fST1YY=n0EZ;bi}fu8e`93= z4-Em{mcU0(PvTuY)0fxIinC(*BIGM8*AH)8z4EHchV`3<2UoZ~OfG@1vvBo;9>?=` zFOTFERSwSlL#|>9)s0?EFkPVd~faouI z4oYQUqkX4m=N7D6Ln3~kJ#l_e#+~VN&lirPS-$yee~f?^C6~Fx} z_FJt~maSNYw?lY~vStIAWPj7_7hGueMAQ+UvA{j67k>TBy}YnL6L!8G^B*~ZUa4%G zM3+4^MP~demEjf3R}ZfkGz;kO+I0hKS9o%Y?l-WB>9#-&?@PF%xWauC7$B9O_I6)> zun+Dozm~`k2$8(;DZx5C*}sZ7u8*;3gyI=*dk1V>Z|9>e~&Tv%l=_PVROqbLlkHT&lw~l$3iiC5_NQuLJ+)vHieVFqVRwpz*Oyj6{T}uT64)ysd0Ud4OOLQ@6kRq7 zw&a}sX$30(jj#Ip?9xjqjN!!o%mGEDrx5_Ld_6h9i1akVZ6l;$BZh!sdV&DVx03^# zExz1$hzvr=-nQ8bGFy-hI9``2Z4u`deVLtf8g6o%b!8ZuAp|yaNJ&VjT-5Q zRZQo;QLD%%e|%@ZbitIMzOMe8jnc5LYxEL`KIO=+#%y2!qSRtJe>&-gs54zi#mveduP_ zKAZsF7W%hs(_1IeoT5Df0zU_1({3RgJTf`MHitjK7kV&;iv}w{4q1BQ*Lq^Xj1PY} zw`J?p$fP?1hA_{2NyqcV_g>}fodepT2L;jKdh}J`S-$!TvIi^Ht{o&ixNf8Cas`WS z`*&4Vau=`V(C_#2@-T9>yk-pozG1cOcQ6xi+KoOqSeE^uFT(~l!|LB1%s1u<|FX)4 zveZ#OVTltS%*hW{Qu1ma0=yfeO2xBl@f6%Uq5gHWTE*V!qm$feELlIrc$LCreA!IB zuVMM=!`0f8tOp?ffmI2A+4Ro>p8W~w`>44~7C>M1ksP0)>bVw8>qFQgBnYL?^$Fdv4&NHBISF0d+yRl+pY3R z|M={|`62S~c|c>*&H=tpfH|oKk96@@@ACPt@hsa%+ADh9=qfJnlDmiAQwW>YzS2Mtz2jF; zarLa|$iG97JYLB@5EU}MqVq3sp z)Jfh)Mt7bT5vTlJMEWAu2g)buv;46=A-(j?B!6iKK5mHZAzX%i${+T@WxQ`n+uKaV zm*wX$U_Osae---Oda%`N2ehV-^gdipAKpjV^MR_XE5DRygWpWq$9N7Qp308{m-+T6 zZO>sm|4RQ-@VB5pO`kWI_%|E$GRgz?Ps8?UmGYG<*10}K{PRHXTs}LNr+)>+N9DQu zS6|<-J}R?bO!B-RO|`F8d!H2Zo5!dxrobam9^LXcTW%EyR)BaOF~%(GNv~# zmtOz5tiNmi>3TNu_x2_BMDO(WDBj_-lJ<@BXS9zvrO$g6`6>Rw?>s-tulR|RzejWW zYo=fH@LfKA))&^5`MA0x$$Eu`@w2{BKg%0&k{?gWi{44m3#a+|E&C`RV7*e>p910$ z`}4C|5m`h(8GlF1llmW=?)8bk3|-`xJqzERjc3*9^pEz@N8-d^HGbJgdINOAj6Lf| z^J~d`_2yrk8UckkaHbJ+F{WQ|V|GtOy!7w8+SlKhZuv!f*v2ivMH$7nNH~>$?Js2g zEj`Ek+Xp`WG@e#^#rJssX+M3T&*f{9{H&V1_~-p0JKl**Ui3o-%l?+h%ihJ%Pn`Jc zNDHVq|5(pzSZ^u$!tcHP#LNHk-~IXm+PeT(H>K~OjXxz{s%7)L_TFrMw=8|x$2K;C zjO;6&nT==N^r3z7>p$5AVbVzHmCatsAIr(NbM`dX`~Fk%U8Bn$w(rDA-#&}K$~)VK z()kI!P|oTrUFZFm{uW{f5!auvOi+LImZZEM&&8)^@=8BCD;tkSj$VCVQl40rSRY#8 zk$gQT-!XZ_b4@y+vbSsTR6JOVh?Bl~@6YCE@p|u{%KKx$&!6~@eaYLe`b&KgWJGV7 zzI1$tQuD#3KV;)sHdyW9BcQJl^h7M@Y#aG24=3$Wt(mpAWA@75s_A2SXZ$#RCQkM( zyxGeu9&S8)Lqe|_o$`xt(Vl2WGM-`k*jbg-ug(@<{}d1EBTnh{KRBD;b)*HBIG*!9 zkoBi&blJ!8DRI&l8NcGiKDC*$kL9`Cm$dIK_zqNDzY2I)lZHExO~Y;D$9Up$t<5G~ z>Gyxo+bj5>!EyZY?vDJ*f8GzJ#>Yp7ef?s*n7_>D)|SM-g&)esqhUaIu zZHfMQANKYPfaY}JUYp+&KQD%W>nZ&U-Xi&jvqnig)-&Z?EiYZOqyiJU>eh zKa!14Xmqq6LznC02&5r>HRD(MeV~;gqx2(7pYfvqq!TB4)#%J`(TS7(V-Lyt+sxT} z?4qnc?Hs-FQSXoH>k_0>-Ia>}m09`13w%6e51)C6lf6x|m;Nro#W6_(`jo%qCy(rp z4rk+8HT|ORGrHhb4nDX!YhN>EpVIFjec9JZ*~fUY4iG2(L*V6kC=YaS)Lb@-jnD%o=d-G`XnE{GCMviZqK$qW$1#+xc%tC-$P51 z^p8F%Yj4N&D?WAjMtP;z|Ku!x0dq5?D?d4>LY(*;AM^1O+%{PH%O)?lgt-*z6MymJ z+4yrVh;)^wBL42A;=eD)-!y*dJNo@>{b(C~7W7<#i}7jTd0P2P{n75Ezarm(KEHmI z<%#*#0A2RC@HbF#yvaYWkbPb_iuPOS@gA=5<8|tD<2|flOVcCdm-M%7eH+^cmKXMq z!9$YrQhltCS4JM=u{7L8`YLafFG8O2WZyRzSMbYZJj?dCI?efkD^`{(_!qyg92myO zMrE?|r}##X^XcP#Dd+>kgF}^zDU(jWka`{^zKHn9zv7&pi27(BvT<`oPAOtJkKQZl2?(p)_8K=kbJBac{e_8iKTxHC6&tN~c zNp4hczrDKv`6E;vW_tfl?B}*?CtjbA5yARa#1-Od!3KDStrocBm;ddm&ftJnf94%A z@~<@G+atU^ADP+3lUV%^=Wyc%uy(Ca%0nC9a*%`e_Tl1qlsMVX@j&_AL9`2-j6va) z#u$PZF9rjCg2~Sx&ZFUi?unfhzmuWpkM-o3e~Bp+UHk7O@@{9rl)h27v!MJvHsRZQ z$uG9^G*a?z%L?%qAME2Jex3g#_#BfLtn+{b>s%n_E$ah+opXBP_~<+izdm7PdVF$^ z`(83-kK1_=rvp!nR#1en4a*MbkbRx+`tp|IcRLAkU4?(M_i(qKNe+XS$XgZSy<(B5F{22cF^U16P}bC?cfs7t@D)eEoKJ*hCtO zJb2;>%O_*N@k;T1LFD8sEBU=YFx-#rTEEeqgB^Nw+@ zPDOkEQDpn*Xk~QYzOjjs?M_1ypAol{ZyKHkhwLxi>Erq6nH?eOY*pt#vAtS~i+Nba zH-m}%=;YM&mQ;D;hL`E`>`&s9{_Z1v{Ym8g4s{94g}sw*{~eW=!pqX>`JL;0{_%T! zmwl=9S$wypV4l#Kw#V;ecaiymTTocY`DxWZzr$Su^90Ydyx+k^?OhSF)WP*8-0870 zI)06Zr4ReJpv8A|?&N3;DgExmPsOL-zSqdmw^819Q2YmZf6}MgBgU+N`S6QzSNx*S zX1;eB+lKF5u>Qz3cUU$xGFIVw8QIGdK^ea^z2CKW99yuCblS6`^|-VBD*|ey8BXKI~_RJ}U)t>)Kep8Ry5< zIH|-f3ZuFdzu!@~QgL)uALk$IW=LjyBQuPf{HeYo8DB&fIV+m>%=9j`UnKw(c9<>iWs)IKSGzRemWy{Lb!7i@%5XTN3}r zd4J?zu*S-D8|jSQVqDRGCgVlwtFQ9odG_@jW0b$)$1Bw5=9i#P z?LqWMpI+LY2IQGP2ry{ZL^R1m0k9 zWN+Ele<=SsoFtC+G5-iR089Q*Za<*%H+}kwkE;*BseCYg<$DtO11+B)(oZ@TipBA! ze3062repRpe`pWmUjo1EFM<~+_uh#0k-zr+lk(Ux`y{`V43{VJ5&kAB*7q&%kNj<~ z&%(z)>+?hOvVCtR_^8bn2=4!c_m}bEvmJftJSds3;xk_tKKTB^?e{c3GM0P~7QQZL zpTU0p6V_L`fF08L9PE@-H%Z+Oq%`^Orc;dn6;DS--WsQeMGs(EXUdl5eEs z$Diiwv(oD%_70`jXEFaJPae0PV|Z|2jaMJ%M}WPkh;sDu>di)W?F;2y`2mmY@BM+V z-<#KO$gB^OJ<;ofh&o0mufb}sEqk_G{6ueCdNG}Y9Q@=j(<2Y*RUB&Ji1<(G7eD3m z+vuaB8$2dh{!?EEHjzF)rqfqBK1uEWl`0R#o4ozy$w_PhxO)%IYjYz2*-Ox};=tJ6cE#t{T0ClPbSvMyh0<3yeXE@O$~Z}tAJ#|mKz~96 zPVqQo@yHNCS3D`-_44I$I|CG`SiWoW6Fc{AotloP590Ds{0|?Gfw8?K*z)rq;!FMH zS%zIdubmj18K-jm26yei(#);Pu*`kUdcd-`Vc%!KUxWm627Dv~o$bd0Tx>sD#aTEf zZ)D3P=18sq%%9}LkzDyV`)2Q`xc-m*%@NEuiNE%rzP#`}Kdd<&bjt9b;$L`!_mA}9 zb*s)7UGn3<_w5nsD_5_iEAFTAMSIK8kt$DP>Gq|T=;wMEOiHbEX(;`AmOfnGxW>_K z{mk0+%U3v9_SDQC$#+a%;*VROvwqEhtAQ#nln>t+%hMi5 zmwYpqegs}7VCiwakKI_b!sb~MX~qn6tyM!*)e;3`GFQs4$9Z=NGd0A(pRwl5+Av;z{LWJ zZ?WP1Q+(K*5jXp`Epd74q{>_24_02Vo`{*J6-7#~biTE>pl{qfD01w7!_wn=q~*ga zE*Aq~49F@QHhLM^SN)3DC;gj~^wZ0aRUgYPZ16$;EM|P(l+>3)Q`!1e0*x&3dZmhQ z(3QWGCr?6m*`MNf#W(h^{B+;ntG<()xV0-#zt#+_syu1M@Ot3nU(@_^v0xB3`Yx*U z>tsKXUd)fn|JDnA{}l5Nd;XaIob32@bL88H&O^ste$GPLoductyn7<59vU z(3gOh{0s3sA$udyAD_@WD--*wmR_(vp&vLSk#Cs1>hoOaCvMB0=?eBXv(lcF-=mga zdncx5(hOreMk=FQlJ7&5-_+NIKJx!FeO=R69pBHr)Z+ByU+FF0|0*_DuIw18Dh0t% z?|zDR=K^0oQTfUc;iItoNnhRc;rtJL@nw@|;24`4*-@bp70g6##T@+hGo#>)-YC4k z*S819VDronOglP#n*gufx?_W2^e@BJiPbx|?egi#o`%IAA3BY0sqUJd;50Q@WKa0k zY<=gLk~o}Wfv?l1FdcZUQ&=9lYQt&_rz*=fZ6HGOO}zUiJn^Y(T>0ShSYvz^@^9O= zty9Pq67fs*7t<_XqkE>NaKd+GdIa~#~F5lL%P}`fw@d)hw()2jagG)_-OTKOLZhkv8Nxo-iR%5EX&9J=jdoiqb z=hU|QNngRf*Cajt{z~>AH2Y)yoD9TI^3gkz`op@zIr!3PJ?{HH%s&1@dL>H_YSN$Q z#r+fKd&r~oo0fjeZ%(K`a`Qv5A*P!XDgURprP}lGkheGHHzVaw(ddjv+CbS8Vy*@z z#{SnI?BRsp8>sTY`3mw#e#r7S;r9l!zOb$^e(j|`em;F~pzN#L_jxog{k@{%;nD+- z=*n}+S1KqjKYFMCo-=KbqlF8zLNUV3`(ExPE9`j z`DHA>FeRU1a3cpw`k(AOl(Vm8`sp9bLWqmF*^uYhqX!p%f{Ei#_BCGO?Gs)6%wOs| z8y9&*m%QxRZ1#&TdFki7SEvYT7ovau(kbq5!qtlaf8~^@W_0O0n)9z=bmn(#4{+}L zyVUo7l5Z7eM_~Pz-~TCI^sgg*_&$*3gFor(nmzj7&yQ}C_!Zyd{S)1fZvFEr?d`)w z9?|`1H~IdM_0Rtl*#x=-f70*z)>-!&{{#Ob{%y1GzFGCLf8iECzRiEXsQfFu*ZZe< z(I4X4{m8%XoDwzu&9@JVSHJ0tEFN0*gGV9meg?<$7n1K>IXfZ)>FN0)*~fRsr2CP+|BL^t zJ}B&h^YtTmypNygd49pNXWZg@Z~W4)_{@hbE!ddnm%iG)=#zhi_j~{H@~V&2Pae^g zzF^re_l4g7>kHTWbi(9$srI0r2q@PUlFs?o;2CGS_YE9>5U$S6zF&%#1`*o< z&JDZYTtA;q{w26tFXZ|m|GkiHmmTY;9bG){F+QC8T7awmShwCNBM`^;d~cufW61VT z!S_0u50Y5_*xxh#2r^8E{uFR6#GcNA??W8EZxH-Iz~$%g`@#78ANNLz|RfAREXn*$>FVANO!r_(4`& zKH5wAVqDRG`|oQ7R{=9#f}4Qz`-?C=(wSc2Si(=Z2sri^e*@*7Psz_bD+9;;V|-ZV zgO~dEoub!3S3GHR8T47WUxI56u5r|V%9Ee+9q`K@r|;*9J%mHRiVyWgmLBWBi|?`I zeKYALtl5-)$8YjXk8mCEpvmGEl<+>C@nYHNBRrDGyXO(`E5GU+e0foPg8%XHVS1Ej zf5$y%6@SVXz@z-)c%lec_7N@vmj1x@_3|WtKSkU&!spKJ=^8oj#>sHF^0%dE(;s*uE!~ zzJ;bw@g{#Om0mq(U&r*byf9wmCr=l32^pjuuThK55vgHTY=l-+rwYc{@MC0<*$>n!7mtH635B+Cau(^LMq^nk;9>-6ytf%Nt6 z&6b~*$t!=BAbsLu{$J<#ADFElhjZ~Npl^YSK>5S=rVD*4Z`4m7>2K%c%O)@T?eoPr zzuHeq$`|v4?JIFHe{Q`@f6m`#%09^xr}7n6eff}m!PsdLk_ePPz4$v?k>t-jqf5T< zv21?OKH{XWoU^B7{EGil@DnHg{^dS>=`Wq0wCA+n@dGD%WOT)wbmFA1n6tNK=}W$T zvGVuN_AIinQ^oeYIj$8Wjr?ldA{IX!1x6>ev{3QvdJrbH{Kkc9m|JipX{gpdP;x4(G`!T=~Mj4Pn^>4{Y>`# z<@m1T`Gfh*JTAQ=X%9Hw?m(W;hw1)S`o?qV7yr}8L-tahIPuqV{E_j?{yNfzNFe@W zxp>!&U-4$Vh!cOX&&OBrylyt$Et6OIr#x|rKkHi~^*(r>>61U?FSL^Mj+j46Z{I!H z@nI3X5Q*yp<%tu2(e%szs`1M|J}(d_dMj5SNGDGEI%bbsuZX$uLD2b&n^yjm2{ztj^)Jor-V%5z zB7gb3MV!)$^5yd}J&s@gk-r6;_^Y{iHcY?be>(V&eeaAoKPgWh$sfqccT8UKE7|wn zj2GJjj@N7OQTB7*i#*bI@TLbvKm~&9Ie&_u_5RBr$`dF4!#R73Sldp0*q`X1=1)7v z-!T1Z@2H&g!Fl3E$hwe#)01Lw$U<>BAM^%oE0k`j_IWf?lZ% z4W!!->2H~S)gSWL#jnX=r-wZOY<+xB#5>btU(Nov10B-W&Dl%;gB3xy#1s&vP zyg1(Kq|z%K%<4b>N#B0pd0}HZpp>US9Df!tCoFx8Q4KoeU(587&b(rpoI{p9gS%RzC&Dz)KOX^p_=EG-!?-E?RAHn+yrC)np*1pnj zJ&fn;GWIXS+j0NFx6*U<0X(vg{a*t*7_a%b7=zYu(mssm&VM1DXXYsV#vMK$Y5R`$ zB=pu6-<~MHnz{30f>BRb`tErEIL4Ft!}8fd8pN~j;x9ZS`Cf$dAhkbM-SnmH!S{cz zywN|#yqmH=ge*|5yok;-Xk>5a^`|*{1)q{m>`T6f61^~%^>5)#o?r2)nSPZw*Z%@1 zdc){xdmASw@#EPov@cEH{OE+< zlB%!MJU^tedc*p`OD~GI08o6|CNDVL?)Aw(j)#czpZ3S%ae8ii2D<#?c!Fn?sJs!b zfi8cC?EH}n&%gA-OE13U{7Wy|1P(vnP5a$==PQYSO|wV-IsGYp$8+ba6zn_@rq8x8 z#KkjAl>WSiFF%4KgQ;KqJkuok{t%yMPfP~%k979;;kbVvBDe%t`g-5w^{aj@1%HHZ zm?Yl^m}itE`lm-nCbtBV-<-3b{5-=%^!CSn`!9P*=NTo^&oam}O1K(rV%x+hJ`>mm zl&gQVmvo*{G7C4hcRjeOXz!%IwsUp_RNNl7kv3taM|t9u9`lT6lt_NwTfG0|C+{L$ z0lryE`MY~+W}AyA`vS(NHZK{k?=yMnYo+wjex}DWO_cruz&yi5{QYnB=_~(9=b0u+ z`umGO#s2Z^62g)%ye%uw@deK;5&eMC6%W$OpvxY%mpqe1={qE!quIeo#`vi=;-(Zd|Qouij>^w83mJ^eYj`dJ@u*;mWSm!lq6 zz9oMwmtHf^pVL2{_uu$aULwF+1yrH9yv>W(S8Uigyn5X#()g3T1*~;Q!(2;| zhC};)Bj*1=mR`=ub8SUhzLtYKXJzSJYe9a+r<3F7+KV*(n62*+fB&u7@;=YjXNcbZ zny>GIj~Og~xK<;rKU}BhoA`NSCLP}>$KU?EPoM2A+uFsrYT!|N^Sm~kq zi?Dm%0xbT>_@$5ZHuNR!G0v&ECW%*jebOIGU+~SOeeLG*t8`;F{#-kPB;xW=HCXo4 zbMy$h$uD}h?9*2~YdQLn^*AhLzLg7w_va0TYRY3&whD66XI`p)<3MTXaC8*mE+S6r}2^A829^$PY*DLc>cq* zlAb;=hU?9wzi^k+?~Z$s5f`QCP59&FdB6Vr)_p=A*C;3}~Zqn_1l!0Y9CXDbhT#85QXndXuk7{whRV&u580P0lcE*d+3;*Qx zsXQ0H6APpbuZ} z@njQ!p2<*B--8}^rLpZ2)QXYarGi+{^{ur2l+`~ii>-U zDBk^F_4kk0hGX}ZlvE)GhdATOSZvmtTG9>%bB>#4Cl>_4l=y}$I0KD96L@#@3h zw6}^iZHg!DX<`12{?m5GtNvo&-cX*u@&f-pf_Xz5>o4&BQ=gkpvh(NJCJ`6>#m7VR zF!KD=&G7-(Xv+VC-^h-yf*<OJDL$ zlczl_Um-5yB!75Q*8XBAmp;x$gGd~Yko z-d@SiyDFPMk;&5^*+Uue59R!+8^8Q{B;<$_e?6zaW&HAw{KUz=!lS%>vY&L~q_44a zb_7)7?@zqHiofFrPW=5(^8U%b1&}R)9;f$?Y&>elFM8GV%U;S8C;f+V@n{&o=$)Lt zmeFM|^${ojg-_1rN7wjePs{8TT>pl*UvS&#vX|pe@<{*Dujj^lKlSlbyvbh%PW+Lz zM;xVaZ0ml9e1FLLPySkpKX^*EeAXV3^`~j+Nq_k5Z2jmMUH(Mh%$5iCLBvV^kfkU7 z@Mqp1!A;l-k+^bJ<{SmzH9Phv4Oa5kx zKm3z#f5d0C?o!&r6>EzPn`G{9?j*y=}(PcrgzVb1mZ6lzu;me8?Vy4 zynjkRJeG~e=3IK^9DO{OABRl8%EwaJUxSR&KakVcFn#w2AL|GCiIY9iLwX{h;`p@9 zUg_(Pvi@{)_BG8u#gqEUBl+$PUS9St0=@Y2gx=2CTLuj*aeR;E;(PeqtUc8n|Ge*H z^RHoa&KIcsG*EtIFYO_Z>@AzWg6A#Drq?ljieDpFev8zXDo;Z>dy4<#{Zn}*KXHT? z<6?i&es@wH51Ku)m;6=m%f5X%{dLnX`^xX}~=?5*YXS^A1M`_LwE(%;S5f6(L=U-EasFZ~6qB?T%F96mDJ zp71P$G`*UOU&-h@z{F=?_xp4bj{`aWYEIvgoPTwrGaf7-ZoKinBp!!z`dT@CwNtbC z*U9Pc8b9L~;+l`Ejrc2m;rqS3;NY|@T>4H{|Ik)nz7@ZD_szyLGP>`7F#F@TqmIj4 zy_wZt$J#cS6w@0$SvW#$NvHiRJFGvHsp78j6nSJ%%hFeQ;F@nw5U65rz{ulSLt?&b^q{PGy)m$^UK81Q^n=Px>( z`+5xs8bkutw!ZwdC!0(^<#g5lY5{_`wRpkw=ab|_)WQ~y$2g`XwsH+um`+x&bg z>5Fjjj8NIjvps=|+uy@>{wMtj^gzx|L`|Z$Tw0j7B^Vwx%VT$ zDPHp~@by!0zn!-ze_4h)DgI9GJjU<_pI*9rMJQiNkMqTK@QBVkHu;FtZ`t{VO27No zY<+1w*Xw6_r|oPXii?x>i)ZNp75m%zWH$cMM(-cvwE!3Ui|~(0`bWcTdOYh6EOGud zKjOzrvhR2fZon4u%fBA{edK}ueH7E9y|g0A|0ut&&zEoZmy9{b7_uik!Skzp@$7lpFM8p7 zS$lc*e3~9?$;P{Bbe1=k73NRyDm|C=lU?WgknN_zxMs;8sqa?}{K2$E$QrwtUo$u6R*D zanjfLdlE19zag$xir&qo*D-yJpZJNBzIk{0^2hQddg0GW{)A6Y;v+h7k{>d8)bt51-kSBdmb0fn7msF+-p$$9 z&e_NIlsKi=`~7Tt6a3ZtFMG*PocKfIXL)3Py8Z<8RD7q?@hzJ^#UnD9^@Z~DaSZpLS0Epvg<$!5n{ZxA$N9$?*+w;&0~oi^eZ|+?WhF`P-f4 z^I!2Iow!uI#uzX0w~L-%>D5fX=naDvzXi}ooa`lB9!uKG<2idfCNF!*Pn^;_l8Zl| z<-ii#SAM34l|I{F;v`?Q{c@G z%Wuo*iZ}HWr}PUr%O0rMpSt-Yd-(iAob;E*vh^{ z$sfqc*Gyjake@j5H;i9!@WY({CQttt;hKx9IGvP-c{%>B@yos?;3rP{hjRSk-@Sh- zKjbG){85g-Z2Y3{%h9VwSNeRWAWr;;a{P^)zP80f_E4T@&P)DSF20?deBIhx@gM2U z_8-*~e0h<5OKBf)Do=HzE5Ar5PV|P+rGIE%wtue%+43Ic==B`E_V8?f)W0M~`u64QEg8S!RRlkAibwfGA5YmwI&soh z&*`h1KG{ot;-oJ!eUfkGsOcBn%;iVd=!zHR zc}BDNd(ZUwr}*&sx0<3?%^sysdObxCOKGp-;J-qFMWkDv5$0)Hw&{<@xC-E57f`{-nfAM8Nc^)AL(5RRN!HEo-RSa@p|~( zyQfFoc#yV*xSG(Z^qZge?JdtAfVndw1UE18&9D4Xg1P zrs%CRJze?_|IGWx__8d8xLPmf_{G*^V!K0WLeyE8tl2lV`TKY%mm`*4w- z=D#B7cs4eS-Cmv8Mcw=rpKxXr{15iaJX`og`96*1px5U_k@3U+%=tdyO3+_1C+eDf zoIjY)+&+UXnsVp;G{GOdYEINJeRe(zqK-h|S6T&quZF)y$2kC*^J4rAgy-e|vje|h z_AEmQ?#aP<`u`TbH~r&C_bf}hfi(w>C&Hfw;$!|i8xCd4*JX&uo99HWIX=HyfNO6- zei*zAx>&#Y>z>^c71o0P9mtOd_e8`oe|7c?;o>^b-!&(y8a;nrPK)&S%!!I8`SkMV z6h#KBed1Y!P!U-D zh-2O*|6M0VRpZactFsCE|9Vo?F#5BrBV+0OuU-N9yHAQ*_afhT!0f0O>CR^2_8b4) zSyA+YF!G=x=bpUHum?7B07cd_FWE_vV8aKTkY}|KNbZ_VFlyCLrGk@OBNs#B*fOUX8`SW*FUMA1? zT{uo>$(%1#-h5`%`eGP`wq7NFK2P~+DBnH3QSD@(ezk(~Ji9k)7#u{PpV%8U4ek=2 z(;Kx6Mt_ny&!;v5`boV}+vpv_y}eP_;OZ8@_vwv-`}y>?=g#|SgI>FDZ&WZk`)iK1 zIQ}W@?!kFKQ+syqoY=V?Fn_AwEsJ0NJfQk0(mSO$s+#}*sywPbJpS=s|Gz2^qO+ai zPw@Y?eEuta_f|fYzU1@g8|BY4`d8-{jb@J*`iJw1+FKFd(@}mbzmo4CM@P0y|KoW? zitjmY!VBZV?T~*^Z`3)(mj{%m%=tte(&vKymLOt$^XC(l#zCLg8B7Yd_I5k`u-I?-@g5S)qijD@%JdsdOi>M@%H58^b}DuIB#hiMz2Q3 zIN0wmU3-9!-@iJ)seCo!z4AU$Wbuymk9hsh&Kc0S2K5>IZPSnOPUd{3`XuxX-6twM zv?p>lH6IuSr6BkO8$A42O!)lbeps*c0Q^DN&Hv$h8QEX{g17$?&`dO_0mtz>`4`}- zzA$yG=cJzKF}RSrsDA!z88CEc35jvG#@SmPv{uFI}k>KWiWc3-atQ zXb+z`$&-2>o=LAiEt-DXFMGL%vh>$;=@swm(^GkR1mxN;O7f$1xsQjPx4CwMowq4} zinc!IV#tNK`0GH%_<8;)A4%hQAF%vk`Rv0*pW3fU=G!8(U;5i$%BGJaE;IVtcK+lr z^n|$h>q18UhF|vbK3+H!cghz~`pdN4^D@4VQhMe2r$;~s%W#GK1HU%DfAR8@8Tmz^ zu^!h({QmqQ{^l=2nv`e!`D>k==pQ%zN^d;3zi`d$6}^_Dm+#jTQ77%^_$$OkocyiZ z{59h%`x>xM`U+o3$72uAT-?Kmu)J_Sfb+#%BSv}YZ$dxud{@R_2|CCx{Y~g6EdCDo zd35G*>by~wTeWxL%}ITtj_~9DdvTYsfU6Hn{HfjF`z!l97LQbWw1xZWP?lwvzvu<} zUK*d9&G`06^?`P9&*c315{h3?$fh^%tG+xa{gTmrdDz46&0PvC|4P3O9_j1m^o0-f z`dMCMe&85yHk=`@dVfmZ_?3P&_kB%xs@Ip4Pw#N0vUAtYoqHxHp^raL$K=NhK8D4Q z>z|c=8Rz9G|5#?LfZ5*gZ`Kj+IV^wbpaJF9@31Xo{x#1@%2#0DORfi=<9q%htVxqR z_XZ|TaQi}E9`6Sn^|1`LpPJN{A=4-S8+QJV;3!8w_;sIO(qEhF^^1R>@zX!1$8yuY zXjW7m9k1Yw-|Ez^(XG?yqQrmv!(JclWBH~`uEu&voG)3~RpsfPu7i_& z-O}^%--g4dXQoHSCu04*_P&7jP(SNPXRe=bWm?2_F81HciC)0^Nye73=dX$Mm4B3P zG?VtU*XEZ~>5nme#ix0Rj}OylU(9C`o~bDN%O+3#>`^ogTAEK3~YRL@MxXWjTE z-vkXTaemZnK3w#6j(#vl@8;+YTOTNU=j}hu>6gCnET10zlYIr?Qu#BT-mj@_{E9FA ziGY*-rrD$Tl3q*EkJV^^e6OPTlE0DSZ(4fN-^uygHoD?X`3`Uy{dga(_%lB# zBmWDfY#-+pt&sQEq){(fCC#n!SR{PtTU0$oNz7 zp5BIdi@%oBcPzDDmGy~zOdUMpFXilSn7rao{#J^=@n=6jCi%ej$5449Klh{&{iyky zvUiO3#_{}Cwm+!l@~bxB%Zuz`yGL9~-}E+=XX$JFBB@{Wm;A(u-ZXv6f6|Fld8Pdg z*dYFv@sqv;SBQ%^`Byam#m~KKz!IpuQeW_}L|@nFjFc*;h3F0pL|1I;amyzhrdTM}5SJUN*Yy>jRxQ!mJOB zcV~C1{u;mRBY!omZz@|pS~q%F@gqNRO22LT1P8Cm%7=qJ5ky@3#CUN0P8{{gz6R2i zeAW16ANh$BJ;Jx_Km~%E#xMKGPn_t%a-Y89M>=t$N7Gq*%f_#G&Idbj%J1SDuTSz# z;}_h@=?hkPe%VKT#ECyLy6hvJIMEv^dG@tSaq$_S`ZzWSaTRBh_;rlm*Vk$HyutlS zq_3HaU$`=BALm1e6MySFK0dOKbmByBo4n$+0CeIA(>|8hPKv*{%BQFNB|mY}*U8ye zGk(R7{KRpr%x4S!YRD7Gw~b%+I(t(3YkPu-GU5-1ygjm?dWlnfX+LGeUo(E$Pk!P= z5AMj8&$jW)e)1D1e(nVXRBTTxSH2>n%RW9s5U2R|0j{U)YvlA5bM^#J^y$eS_e=sD z{b7DlA7x};Wc-S!OCLDVn?{#?d~PL9^`(>Zr+~H%EUvv?f;;(%lfH7!-m3A-Uh)$s z{?NJJn7%h#J|p9o{e0daPW(-y%U;rn6TOkMFIbn&fASNz2shQIBIIQs>9toU z_BTvk_ACXRIK|Vom+(RPAHC0y*913gza-h$&e_*G+t(k(kNSy|d~NgW2&h2v0iJ~k zi+*In&-clG%9BU@^*eohWk3BUj_J9+8u#$}r2HP3lUrYwORx0xQzMAP<(c}bsps={ z&R;Apa{RKVmCNt?B}x9UY_h#5Y)RsI-29`xtgmd3gGVOw*_0{an=AUyykMRdA+Pkx z*gFKMI9{dy@-X?Ok35QJ>FVtKX%%TvUizxgO<4Q~KH%dadc*id-)#D1{{qOiz$1Fs zzQ2@wGiUDslOKef^BwonUy}W<7_VSqlHc7I_;^Zx?_aa|**5*0A97;@+^dL*_{UGn zK5tZ^8!WNEq16Z38+<(*pXOcJ^bec;(%;U-w{7~RuQZyC@3EYG*Y;CUJY9SKsKo!y zfoyq;%)X1@gX(((A7oE(jn8k@XSSyi^od^1#jkGqL@%1W;30$MPZPSJGLB#H<1D=S zbRTbQx5%9y2KxY-^tmt&(df6$o!>0CG3~4c(MI0KHATJkjC=J zJzJ!|o{9(4=bTXVCI9}0^@V*{74p>2wvy$K?>yvh=^I)94w*isPx%()m0ss$Uq0n8 z)2ogp^|!X)mj~%@8m#8Jn9YsQRcz)OEAXJ2UgM6c%b zHBBG$i@F%oZYutZ0Fy`ZotOCfto)`Ab)>2G-p${9IVrzg+Yd){>M#8{$zRI1A+Pi~ zAIUQwRQ}xjB;examH3qx_iq}y3@m}@Y=a}bPbzLcuYAFIYaESqrpNNfI?{SxqM!Av z_?KjSQn39@=nr*;xN2WX$~(_K04gAz@nQQ`!+wQ|2hTzP%F$U@*oPNR@%{;}8BG1u zQNBHiPtEr4SNhD;Ht6(^u_S+c*z2RbtKTX4c|*QDlb`Je{cU2u3c}>4z0IqW^g8$R zN9@? zb5DKhW$gHCV*iShaOd2CoBvxsD_V@dMK2zm6;Y4iDq!r#y1cS-cwi8C{**tB*ZK5i zUmLungMX+pxN&$50sKTSe8us6tCAj9`>OLUhFMrqDU)eY` zykcN^Wy8SA6<~?|+x&2!zZ`EUes#z&-kck9^T}9aq<9ox>eJ7!kFA~Ykl6kR-xr^M z-i4Q3*nh#r7t$#FTALDj=k&nMw<^5|I^|#a4PL*!PmeeFO}&41@2>`-Q}TuH`SI2Q z;1=PkL&rdh-iCg~hxf*5dVa#&&vE~LQ2rhHy>Gt-x6bqNn|;RopbS~cS3hy4d%j?L zuDt?Je!VN-e`;@Jumyxyu3ovmLc{P&&0o%pjO~ugXS448XZ@#smh(n~_Fg+OwR2=< zW(o-WsBhKq07{TQD6|;p^4;6^*7tTnWog~*_UrCKp<-*@h4K|B zm==m!HWw%rWiyoJ|32q^A4%ujfA3X(Up()=ocA0Z9Z5&YBQDH^HJZKi$g#z>gwXLwf_1P^_>s=j~=S?P5R$h zd(htKI=0XA_T7E+{@cE953Kj~yVLIf;CzDkpda^unJ;%f9N3FLs`_XzH~X?5#LYL| zK703`n{T@tGP~u+{MF(^_`KOALWe!@HllyfzZXzH)SsF?#*=JP`}FT}kq0i5e`zn3 z`@fVw72NM0S-hmzMi2WV?PX>!q%&Wz4<70}Yx*dUd(pzu#go|m>+%~<@A})ONA>lE zdT%~5m>(GbuA*3xuQPS`%V{6{=?(q(&{)2hADoY>fqzMNf7^YZ;h>C=bMs5Re>;Qs zt4gy^d(ek_;EeaA(d~N=@)+--)%%6#;qpWKVoYlW_LqG7_phxzC>(u%i6g&#F@K#1 zuCv$4r&vy3wBl%lU(%)RX#};35^0$xA@uPms8B4KGeTBS> z26^TK?~VZ`eW!g7fb^-+5f82%6Zrv0I`(Q4R40GV{2{$~h0@WUkjI<_IO+qOf3EKz zmBmYW?5!m%o&L<$mq{-I`rcr_u+xFQ%J^x2v*-qn@kh4)M);h`UoU*PR>LtB{_uHW z9q;7p6jHsIpwU0Si_@#dpG;_ znHx-b?0qkyT|DanJq_qn%RlAuZ0}J1l*u#RD}`8y4*F9E`p2f9`tYpnP~TbOm-Q|C zGAyWl`_+MeZO@NSqgZe4<2z&H59~Ysu5)`RR{bk{7?F?Zf)InRe)fq`j(WxX8#oDHKX+rTMt)-`#tL4`idhHakA~-+%3|2QCnBygBl}7qhFs{sBFa>)F}awIz9fm!G?J^TDk` z!;viX_nWYWfqN*37rDoL2G5uQMs1-c@Qppx8(`4!O)9p>=+#;e@R#z*V^}}#d0qGY z1jbvxR{7xz_;HM%z~^IDS7nDt$B+7gJ@_}0=kL<>8xHCr2s!>=F#Ww!c<~LqW4LNYM_ntuhy#}WTZjjZ)8}{Nl2?yI_V)E=y+k^&Oy1rw`-tmtXwLNI> zY+&z022+3bJL(_ui~b7zz)}7m0{MRo;Ex9SYSTyge=<7SA8n5ujmy5?;@?&K)j<4SA5R7^yKD^zpM_k|Gpg*XGiRh$0jL|qKAN`T) zqkoOPzYlrHy7B8=-``5(r+o4{-#+b-zVjj-uZhR_fF?$H3p!p}#wo-1&c_!L-->vD%}5&oDaTL3^P6GI{=z{K=clKa5w`UUM(+h;;OC zDt&9Dmic`m`ad;!@;A3=zPCndIpja_am^q3<6FtEFP@U0^vRpmKJv0nemF|W>DK5b z_ji8u!W=*Pb1u+dn10evAJTfdD$<3a^n9p z-cM+JS4Fov|H|7`p8W~>(?8+)SD*JkDD_DBsnrYP&xIF?u8Q{JpC~#@_%;V7JD!l^ z5AxT>Pq;N0_7nNxda_*Z>p6al>LY)(SKEVde3jDa--*BS``6U?as9{kfeiUievO{c8vO*{v7m_z8Q*pKc7| ze~!jaee0%A#{>Od-O^nDy}I$o9_jR9{7K}uS$?BIe0xp5prflVeogd{-~4b?zqLOf zMSrU8i-{-bn}ps7J=#)7w?Fwc5OW9p$pe3Vr6li`et`8ue^A6 zwU~S0u&00NUo?M8mv70M0QF_|{5JjB8?;aUT+N@Xx68ed<@=7WEqeMJ(@%Zlj(^^B zko3ar5w5?V`WF`GSNa_$=uh_Pp#3}j2ag|~x5=(}M15n^Px)~WPkKA;>5T+xn4Mi- zos~Du<(1iatWQv1@~ z=zscI^$+7G#s|>L7xwexM*bF5*Plnm-^Fu8{UtmK;4*+u2Jj?+H_5jEVGrl4%jLI4 zexrZY=Ya^11%|(bCjw)90E{_)JKzT#e@@=_4(`V?{^$pFd?1_)uZTqd8GmJT#(U;1 z8h^-7`rgm@>(SZWem< zYZ+hlWQ}*Q9wQgk`u;2K1>pRdUEQDG)_+9n3HC7e!~DIG=MNZP@(zuEFrSnC$(G&w zm7Ghbe?H*9S?xm~>?QImo~r&6t^`K=)1OkFXQBV8_$DN`UP(G|q?bk~JldoDgeOL) z|EE5$@u8leZ?pX3tpk1Xx1eOc`l7j)$QCT}8b3f+pICdr`hESsF39ox68aC0bnv`B z-n|EI<;datXXoc+y9Pj<|H|q_uwOtSdohDf|H{8m`9XfykYD${DUW)XutT&p?$ah;@0ozUwfC**Y)4-|*_V_~ z{-uAu%;~4S?1R3&>>ubq?g!!f9{PL&{UwI_io1RNjoG7qe9L+mPhv3X_?9*3s^7iO z?8R3G{7qo5_$T$3`tYr4=%as$?Z-!Ybynk5dw3sT10)^q&O@FszC8_C`SJd}&tG2a z*Gpmcd;RWn;GMqK_>C@azx(=fyT3yJCtva7Ip1i1QF(bD>Zm>sMgDOhAKl}})0jS$ zmwH-VS{XjS-+X4+{>P;})xph3f*k0hIA||7{nrT&V?B;iaH`*Z58Wvse`Wkn6F%}! z1cz~!YpHnWgY~>a@U7f4qx{UD568Pze2?6HUm4>Eu6;1xPOsDP3_7otAHK}*MgLsh-dV#kmki^Pzq{4|RiULhK*F_@i%LkY5$)_20RdY5(Z@uialDJbtt4=X?z7hQN_N z{a*D4?T7OT=)jTQ7#;NqI@Yv-BRzVa$`g(Qc=RV~pY-exlz&C^bm!~e>itPgp7vZn z5ghUl`)+f`e&EPo zf0xf+2ll}a9Qmh#ebfN1ajAcsz|DX^I-vPudx8!e^(97Uyr2U|dTMmWi~b56_?f?S zkiY1ye!SoZj`~KXk8mEq^&k56Q5c=^T`lTL!BKu1fc&-Thd(%%VEl;Xnve96>0|uh0gm+YaazB& zp77w|d0~))@xdO}AUb~2M|d2-qtkx-r_c4rgNgCu`99e|_{c$LP3ODYO!9%m?Ve(Vyu1{PqDIIL41_j96gur^Y`!YwH)bKtOt7blQV|So0vgG&=JI z{lInSpJ2UbZ2a^G=TqP)5B*ppq5j(VX&?N+AwTH9TjbXa`fokb{K)#lp}G6H+R@MV z+Q2@>WZ>uz^tFTdq8DgB*&c2T7aZd|b=IG6S3jWk>3?eSgxfz>eU#s5`+-tF>|@P_ z{Eg{z>nZcH>!4lVP`|+gy{PFku`lk=md^-P+AC~QJL_iMmXU0$a z=>Nb$KiUfYxBOP$pFkf8o%IB`6qx!ZrjP!C4jl76H9Gmnv+5t|jkPD~6QdJO@9_E0 z8$bQQ92Pv(7YFYb=5O}vC;oyzA4+o7PkS2oYko)!IpV;@=2sg&h_PJ8{OR)j?YWbmkYJur*@hJ5lH1OiUoSO93^r4<84;=g< z9Lt&-?Vqpw{+Z3Ge%2#w6p|0fV=jpES@tKr{JBQusjsqp5k4Kj*)J=<&X@K6%+ZCp zi2SwLXFOAbNuLJo5xqs*kNow^6ej{>eFP9(k zAK%&6+iBBB`Qkp!7xiO&&;PX7AJ@KqH=hy^07sJ#lPzQ zl~>B&I9ji|+5` z$)5{9{D;16@@rnxx7Vg$>hlLW=F`c7j&~jZgZ+9@W8d3ByoeS0V!1~Pe__vEll_?1 z2jy$=pYcV{zc3fJuAX;(UfcISf4=8-u*>~%dmQNCz5faPe}7(x@nb$7|M&&+e2mYJ z`howb=ZW|q+N1yHKceGhNQZvNWBxG}dDa`g?I)<{#%(vcW6zD(-+YU}>9!Qdjy+p% zybcKYyY^;{R_OBnpnH1|7uMj%{c(Aj&_JQ<^A|g=Qw;4D_IwTBKjb4YdcSzb z?UYBHI2wBZ#nG?7_I5HT{4}}0tP*b0W_g0fv6$ z$Bplw@AYp5Q4Y$3j)Sl@XQ!_X<|l>CZ)k7)B5l8YqJ#OECYn#ghdu`$=I>lEznPjm z^8tR~$X}T~v^Vs*e7tx-|CqK1{Yiu-Y_9#u4;=MP1OG?HPx(ro-Gw~;fj!^`^MwV> z=a{eSz$^#lTa%}~Qy*9VP>=BEO8M0Tf6_1N`H1q3`Ga~SKXBByH{g#~G+z31gUI2a z|F8!h>Q7##@m(x<=tn&PNB!eKe_{IRKlp(ofBrf@|CRBRz8=tPqYv^a^RGEqr|#Ms z`UmUXjq%g}=#a)sxQaI9A`;QwslZ-p{LCl%IB?{z1OD9jN#A(RkFPX3^M~;oIPxa} z|HSxl|C0S9TI%OxJB^?IL0>b_m;a^K2ldZfe`zi(UA@JJH6Ltm$OA|IrNE!e_*pOT z3kU2c^22<3lJ)C%k<2{>CBEzXSUWfCe3SVfn?CxF@d!BbM>qKX*2YizB=D~>I`fP1 z2{`hf3Hak98voYlMz|RzaxI7->lO0gp?nkM8}!kDe%Acm8a*BAI(>|{FniQ@KJce9 zI{A|ewLa+&&N;wQe#XAvO8&;=w?=yBiSdyCNRdfJH{x+~*89(V$i;w<5z8=Vz!Sh6o z$unQz2afqjzUGhL7*l{FJ(IbGprX$H-5L+u6a3&IebcA?@hz9R$WT81mOuW)&-C++ zxeNGlzmDTuE92W>d_TH8T>mhB=JRrqn+lHpq=7%J@za0s1IKtLulC2MJdnq?MMb2` zM`q984*Zk%@8>#t9`K(F;w_C%f82Vv;OPH2us<<=wm;mrZhc+&2mY=e9MofL`sr`<5{-|~b5D)V z_Q&}fJRSc-{qf*@;Qz?<(SOJTNB?I&>yHnm@snPCK>Odo{{{Gu{Umg!3OLl)LoVO4 z1l;d80Z6as(Ee_H&VBE)+mB)vblS@Tf8qz&-ugXG-tl4mLmznXew}!<09`n!Z*Qjk zLFf+_i{0(Gu72}Q|4WXn$aVrNi@tne{>;vjt{yP|mC575HhI@^O{M$xhkxLqKb7g5 zmwo=%7T1eoCO~~H^?@!Ayser>w7)yo$-m$c`L*T4$IaV5|M-?DR4zPtck@$>FD(aV!`!7BW*zbXNLR%{8Dp> z{1`KEu-?w!s`C}nx0*r1rp~PoY!Nw}Pq0TF=}!slZ4cm=2Jj05_}R}^1oh3}f=mv= z?t4}O%af{7>V1L9w-2S9u>+5OqEF!?f>@k8B>W05cL@1D&D`qZEJ`#HvW%y=fB%2L z3q9TO58&m)^0e)-`ynicj9+VOv&Gyo7?Wc|bU{?_*pfTI!ScUrdYJg?r8@rJCm-G# zell}4K#0FbjvroFb;GO(+tUV#Y?I(riT%0Rm1PcRa!q|jP8;}_{htCIj0b;(j(-yO zKh?OpbmZ6?nTPU@ApO;Sy*cTgH}3Qq#;IC3a{N9U@KxXJE%v%Z?~kEo_s^{*JvlP| zUGwvL%e~V-t0?8~$dSCMa%c{FFIj_dwi*@fjfHkX6v2Z&V}+GL-oe*BW% zr`DGH@e|`|a{uDtMcLvB`gAWPX^sb$=P_jU-#eO{KO&>14=+Wt`@i=#+1+j5y?5{4 z19_jmBK7PNDo?dYUHkOa<--Su`~r)<+53(!uZYX?p3R($$3A>b0DJPnzcQfD%lDav z@_;@1;<99=*FP`tL8-suLDT?Z!9n<-f*s6+4&;%Zp}r%lBIMDRLfG@?$g1bh!m-6e z!}tIX`4^ADr(VCn^Fw~X0l%kT&g{PYda)xN>RT_a@$|_|z_Yhr9NID9Kj^+s+4}={ zC=Yn(&%uRd8B+%Q0(t8S&tHLk ze!R6b^ykQe$A1hN?dkW=9TJau{>ksx`IW;SoaOW_a_~wI_wq{*7Dv_w`lLTf!S-}` zJM>3jFCQ<$G;F~CBH7N=gWY9$ukS@WLb{}LDDV2jfM2pRq^~R>{uLKc9}ngum^)l0 zzx+8DD;Bm+{H_Auc}Bs^?dy%yNVY9FL z@qUR*M^_K0jGz9*U%oUK(_Q_<7Z3e&&j%enI{02%W_0>j1aN6E^;ZEM-%^A<^KW6n zzE4Pf_;w=bPm&+jb8xhRBR#uB>4ZlH(_Ue)<@fk~rhl`liaufa!MvXO8-)qV%p3ST1fSnJy&zxtK^_5K;7lfN zjv7ke)B96h=G$)qIC+#$&kgR+FY|Kx!uLG2zn?byY#-EZ{wjSw5!co(AFt}$dusfY zKW8x8Yn#Z_kM8-SxBK<5$>1&@m#e>&$M{@t();JA7r@aK8}i-qk6lVeslc0omm}7H z-189Nzgm8!(09qdMLuM{|XZ?6wyej+ga%jIvd z&_3wE&CcF>`)xPv=5nCR59}i+rO@d=;EBML2Rt3fkM7s864AK&@A z@!H;>$%C3->{lymT1Or*59n_q&-#gpuKo_#eqyBK**?&dm&kt5Pke}6h0FfPvL7_t zXDZL)flhzj{X}`kTAq*go_DwXnX$w-j7G;-r?WxIr|2!-*7+I z8O%~;ts=Qfs|+g_^J@v0XF7YQ&0f#{EGIA=zvkBZ{i$2a58LNz@ejCJ+5HQbmTXYw zD|)}55AXvwJ6jw-h8J_~VEus}3!U=C@2WiE#PrcVCfC3r-^exYcVN#O@|VU>xH6dS zb>>cge5-##+n4mc@AKye(?Gu1=gUVw>5r$8?CmBlb@h!oW-BpK|Jd|19?&zej}4cFVSaveB_yZ$tkBy&UXE zSDXLLU;SUS|IoiS$WQcBLHzP;fT)yl5-lTb`~P!40{&88X7Yp!yFY6C-LA|p$$Ve* z4B}mbJo1P3clT>#Pawt%cv|-LfO}(ta_h5*7xe1)`+BSF{t5l9&0qSH+~c=L^soMS z9E~+z*hg*RdJ8zpZ!&)POL{t>H@p0L8<{@TH~E31f8`%)eW4ym2afjE1OF=1NBTIR z*8%i~PSpVbO8UW@_2QGU}czW-CR$NGDJaQ%_IP4%%}p$|CfE1#zRupS)!XL^74n!of1 zC*Mry^tZ70DHt#4z)}Bt5N|26!qUep??M2keW!o$e#EK3KIYf;z<&Hrm8X5sfunzw z(V3qQT7H-h@Pmi`o(=p>e^&h^y$$FiqccC-L?3YE-)PUL(?8J50e$8=zaA>nNB_VN z9OD_wyBUJ&@&!6@q*q3#{R4si=zsX}oY<@NM0;*NC_I#33ZAdeOrG&>7yI$g_4%6y z_KLvXB+xfDI@=%ms%Q7(WfSn%f&Ht6A2`O}9Q5Nmxk2Znq(?vJ(`WwO&wpZc`UCyI zF&_tvpYd-M`e;Be0)2()WBY?2IQr8*upt*zH(r7c9POPB^wp-1^m75dF}nL+(EfY& zLpKicZ?fm>=?~W3;*))RGZ*^#N`(e_)(7~3qyO11^`H3y9XQ$>J;xufO4CRAd|l<~ z&*dTy9OZNKm-a!g2mY=bo%)(U|76K;?>gX*?fn7TJ8N{pt-*{B^Uq9VXs+ z0!Mli#0NTX)IaLp2hjC|(qKIO$T6$_$Nv0``^^)vPx+I^-`TTxm{0IGf@A&w$8wEH z{>-j786W7tk)9i!@nJp+9O;G8X%BSZ=-+wskM= zI_=jtY5n+LXVCF+oA4or_~thGvp-Y$tK5pNjGZ4+dBPKe^I!A#2iN&LzJ7t-xG-eP5PIOe!bwg%MZus3w^y#Y`?A9*<0?tbN4;B?YmR2 zab=03+m+nWD_cK>9gNjD#(S|ptG(+X|EA~lc}dtqzS{Tn z^%;Lj+XKE+KKVsnuO7$#aO;Ke9Y-N+xELRF-M;%jU|ap^ z$2y!paCGZE+jYH%@(T6*=tDS|kI7Zqo|_dNp&#J*0r}xt1V<%%II;cOeaye+ud(;p zP%D@l;z*^Q*}w5cHVgpN|5w)EFwZA{B>UUbpG5wK4%*8MM*SoAiTt9kY{-!(wWvnh~w;0Uzurqs0G>sj&$s;4;{2u8I1ZS|5R|Kw?;?%VeC)jSIHhe)R!iz54FLz zOl3`+@-x4v*R!a9>d!@n^vvj*KevCI_kDnIrSXtI+N}0yKQkEhN&SW3q)X`9h5XxW z*ZuuSuY`{LBA(6io7}~G;(nVm-{(i(%@&ppj<%@%iv>p~lls6zePiP%Tm||k zMyLKd;Ez9fSq}ZAk8S^L!maV6yB#=LQxsE@SKl>2>`lT^`=@0WqUNU=7rZY>> zPyYCgemsf6r02GOcL%@l!W{C9XJq`yC&tJ`ewpCbRvtG3_sqNB_qG9Ocj3 z_eg0k{}n%=WU_%{+>QPKIE8;tRs`oRPLm{0KNc-<~4(y#A{>7zdrYcCWv^H~cI>1PA^y%s;)D>~)-8yn1gZWg`3b^0uR%GaOp z$KR33!yo1kJj^fjfrt9eJkgJ@4fI#0kM>%Nm-&Rg$w1$xC;9p|enrQZPCn2V{hG$V zEP9x~R(Qx?f6|YyF&O+^eF={F!h8WdjIT9+sIN48gtJene&}Pqz{7k&A9$#5>AN*P z%1;A*lYu_g7kHR2=mQV+RWrW6pZunuk9eD(Kg0)~!T7a+@oQy}uTe+W@5|x(iTYbv8xYnGZa$#)n7=E9 z1|H~Re!#=_9PRhd7twaV-Wv12vu7~$b@>w<^{of;^=Ewl(%f&plZ%c+@-OSD5SaX@w(9wb{+4Es`M`DN#N?TeR@#g5XHA~)=^cJPqW`V_bG(AS z*7PwS;Gz7cMPEKMdHNTIvu_M_iXdB%_HYVeSr1<%i9#!r2%zckXWM=It=wx6 zRo!@;{I0^#&w2q5^R-Rz;OX?)^Dwkmm^|V9-?W~gkNE-*^96n2p}upbkMM!O-#XAg zH5mF?Kj5MKl06?of8yWs<1Ng;Vx#JX+%+y?TPi3x8NY;92fKLW6B~;%*f3wI$d!Y9<$?Y(fGdkg9vL;b?TcoXBlSm;~jw?lrwb@~H)@%{dI zk()gA6$Ue3&Le`fNY{z1N?Klbwx8%%#wg9q0) zN0;ULW^P~)JhV6J_-%ZU`Z#{LZ=b^GuKl)(&l>YjB`aB)K zseiQD?|-e)Q4ctGx$BqV_c0!#^6-cBctFp;p!uZ!O?G{W`0*^qX8Da*)L+Wu8z#(O z`c%~qe#C?R4&1lNzc|05O~&u+`A5bNe~=I8pZ=zBksy*^2|EBSg9&b}R+5`T; z|5R{@4=~nqMgr46;BkN-`N#YY-z)))_!Ie+-?t&3JG5|UPBt-_-?k)}e*BKN`~I~5 z=*KgCr(dttTXp#=r3S=gN^Y-_B|u|kD4ik&iLcjZ{JPtQhU?~{`gOIJVSiw zzxZYeB;C^cRPFfA*Sv>KmIr`U833sQ-lN z2Oa)xl^?!YLVomzcn9xq>v$o3H?uw^!gG1Hu=TZ^!jIPe^s_8=w;o<7uomy*naMMWFWus&(y!oB8TH~`cD^M z{C!al6!QW3dZ2%&$k0Uqj0u2XxsXrR7AYlt32ut@geW&|LXhO z#P}Z~c$|+g=LL@X%CD+C&##~ZNB!+XHJ;6a$ASKWgZ>`8#`iasbF)uhaq&{$$mq16 z8%+O@GvLUdK1}tIALss|{sq}f1PAHyH#D9Nf`cx^16=PfDnp+`0S!D;q0`=hx9Ipy z{^e_wpY-@$zCVe<xE^DpZX_(y{W|m{fHHPx)vVFi@z>`v{yb>^GEthpg;aI-~Ys5+E4eZzYjHghzHNm zQa|=u7F1V1D>DDb8*r2_0(~d#`4GyF1G;>6-RWcfqdv1=7}US-jqg{KdD9AfxHD7; zjQU7mNDknbkLHoekFhNQQ4ZkfKMi#JL4K0gvR=_Xa`7E}pSCjln2#h-F2_W0s^2{i z?Ifrl&sKtm@wE2*CF!l{!+a0@4dd--v2VZlCpYARa=T3@_(P85uljhWMyI}VF0g0z z=^xfJkYV~$h%V@4en^Kus8=_ilbn!$Z2Yu0F?g5oCi24p9O=nDL;ZN3RNMDS!grP9 zmihWO`u;!;^heSsm-YI}O52D2)Ix(A+ROf0VT@n&A2Q^h`QjrT|7iCev$x%O&z?JH z;ko2|_Z_=$f9~w=JMX#O!JFOxWo);9DWBzfzP@A69kaLGzU$W6n{T^YUILG9mR%HP z_up}wu}94%OWpIQlO1|J3V$%KPG1-0j(_yLJIIgoNg_X7lZ_7Q^)C3a-joYJ<7?$_ zLAmP*oL>|9#jE}G@FxfF4}u1LWhvu#@cnw&LmzS1(+~9aaD6eB=jR#k35%ETX@fDI zpi z8SoYS*%y2MbWYoY`9n-i#_`x)Z?0l}j`?d$KkaRrXg#3bF^0nbQtXjGevH-=`A^$= zA?l0#lL7xIc)m7zyVoexT2tH1l1{;<8kpHKVoHTyfQALvKlOypOu z_Wdng3-npOppX0$(MNxq5BdDLwJ-fS_a1E@!b`uS^+$bf%=_D3-}tz%FIm?1qP;qx z?=(8~VH_I`^tAzhWA+(8#^qA@>0kOUYLEIruLk-?FY*1Gn0@NoBK*?&pH}UKTr1kITPpye?HKk2mG5}?AKRibn4GOuI){KF%O;y59v*yFE@S6 z2d*cYf&KI;zQ5_e`}GF?`2D^9BH%x9ndXoBw+VkX;IEAz;}P>$OZ(D)@Rtwv=aUmJ z@at#%d)hy#ALqPkpnvpK-~Z@Q>JRe~y?jG1A`#&_;BSNcYzOn-_4SfJ|H2$7`U`q8 zpr>XJ{-G_{!vsd)*TVlR5mS+(8{l(`BjKi)Me0i4R~exF166pnn_f`8>kuhy47E494{`?E|O!bpO#|e#=09Y%pq@^1v}(I>dTI zzB8fIpE}Uj7_9PgeJ%0g-T?WdzxVx*4c<4f4;=lc2Fho~f7gJ2BskK~KUez;{SW0! zlV|?N24j3c|8eJYxnD+lYwJ~5?_+*|Q~h|KQyY~0`A=#8Rr*Rtr+?8u1o0b8dSUOs zQC}MHPd)v(S>We45BLj%@%}OW2afui9qJF}eVBXT0FL>W>-8mBPUzaN4)jkAX1+uI z*656HDcDagl4oUM6JrbQ184T-?PFNibxP7FV{iQN{L4)r<0}lNf3m*j@sEv;^KaMw zGJaCNGWynmf553e84b)o@=vePc+7vizwgwtf1Fvbts1CH^~V3(h3HU8^|{DM<{>8(p{xajIF z{YO7vnZfkGv3RLJH#)`#`U4#Op#}1%KRxWPSRK=ZQvW2dkG)Vtb)@>x|9$>5_I&hB zL;Kg!KE?y(r~O)Jy*_zA#XKNAy?#iS^=hNjztKmPPX65BT|@hVQ-5W=2=Y4)aS-f~(+;vFWpBlf?-TO6;gY-7gA2sSP##xLx?hu^HyY+Y{kMV%?Or9Yy{W4$i z?T<`f7k>a3JJlY~U)w}4p3%nnnfk#)`!YT_3)D9?dGvqs1E>6$4fy^vf&JEC^B?1Z zlVE;gxmPZ#yZImP?E|Ji!)#o=qZ{EX~+o%(Tp2c7zIlc&DI z(}&&@#2@fi2IG9scz{!T=WU=l_qX z{%pXX3Xc4ncI$c*`aAv2g|7B7KhO?O{?hc(pRvK{@0175;$2u+)$=d;n`fy%)R#V6 z;f`+l(7(6H4@V<7%-0k7VV+#i_UG4D{uWfE_T2cfhWGP2{U7)3HM#O*zJ@UZb(f#- z=l}7X($T-sXK{=KhrbDrAE(dL5UvHjMCiD7g3r|}dwrw(R3FZ#9l!Xb{-QrQcis9o z=q|p~y59u(8_|#RT?dO!m6z&W)93AxAIv{+&CvWhjYVo%tFq zDE}qGo5&B>YuF=)^oh~Y-t=eu30)sU?C$=+LLYx){Foo%+8O?p|3#lqO5|^>XSW0W zqeZoE?J1+F=7;uAT&nYP!maT`Kh}Z}XZf|>elGV)1l9Hb?2}p#xIRO!aR7(@1pjf2 z_oIDYG$&tVy6-{zf*I{KrjPZ8@d+N1UYUN>74=U9hxS4L!1*J2Utcfodg#l&zwK}8 z_5WQ%`TN=4$5%04p~-14{*=ap_CkKqCh-@d{O*B#B0RIR_wL%g`(C-Jb<=J4$d*}@ zuWdbs@KUh8Q<#3zo3CpA*Gdk@@hy8rUpZ4`Nf&Da~Zwll` z0X+@qML^#h(8mEi59pJCo?Y(O(=?#32l8z|9|!dKGaA2+NACXL(W6I~yZ)UT9pfX$ z26w+#?zdq)x?FyV{4(KTeow#ck-4DU{SVTM0sWNOC;y3{KBg8Q>`{I)kUwkkw2w7~ z>44rE9p`7rgWeA48;@xFW4t3h{%r4mVszSvd@A%oewL6Q)?<5z=8yj1`~e*4(Va@C zKcE9gdTeyUt?j=|`%a(WNKcHP_Ha%Bj`Y;%v~WOTL%=5V>-n6HihqW-WwKraXM=tVkzW_y5M4d|u$!}b8Z9?(x3o%SXM(;nu* z?SOy%uP@65<>rg1f6(K9)A<+SXrEW_Yl!!%=r)K&XVWL-_?PV)|9RxWiO7OZ`uV;Uj{|yc^+5ZRfSv{NQ=>EA$PsXquWr}) z=-+`rKK{J=H>mH`x#9Tl(RKX?@2gSYnRjbF(Oz!+^at~G;7A`!+Xb`*{xmPw`lbHS&uczNZ{OV4 zGwk6S2{ISi-?;w3Gs9QQzqD5m?6rZt$%=13{vm~Ff8FM{+8%np2>HhK2KDDRYkz=0 z7@w2nKK@E*g6iUnsj(Ke2s zZavZMpNnw=HG-oN8TbocjAzM@>Gdr1qi*xT{hxTRA8%%`=HK1Fbox7gepUM;^Wnz- zFVY`ZPu_mMiM`*%{6=>V#{*f74Ax%~pN{*ljsvl|ww8ah5BBw#)T)pAM2h^#{?lIcWz}!;9fQK|euI-Be`@^HpBYU0H1I$7 z^h^I()%ywi2L3l9L;2#Yjz832dGc5<)Bs4&BD)M@d8KxD1q}C#$wk7Khcjbt;thgZT3|jt4F@Q z^dGdIuwF=ez|GF?-^H~XA$9(zwm%~Em-lFVI6okMr{hFlKNF*?eYc;n^Wb{&%D*FL z&z^4=Dtw{-_zV7c7TxRDQ}tDavHnE=C!IdGe(nOMzNy8l{*Y?K?VEm0{ULlh*7H?1@NXnMq?dPSe7lD94^zK8zqovme{A|05BBC3 z(XM^+AU}1$U;l^N!#I!j!T}uH5BT){e!P_X4vGdmKOA^~tOH`p4eQ;)>-9^B=c8eV5PTl=eT>FLZo7R}R`Q zzpnB)A21&5QOov%y^+{cdENgW8t7kU_Ni~@DS!SnGCKKNv&VeVW76Y$)nD9iqCdbX zKl+oOpX~d!UMSyOuQ2@?2lglXy!vwI6KL%CzoGe{zRFqrUOOQOg*D{y_dxc%ZM0}t;=9guq^@TYou3si! z>FYVW%a5-K^yfyWzvF;E{xz*X(y`aPnCRN~^e-x%?Sp)ccJh30>y1luUA}6$mo}6? zXY$A&d{5*zIo9VRdA)!A8GqH6FYosAzeVJusFzQFN&VyagYmLj(e)7265!fk%oUK& zsn~eB{EPPI!S<<5ANn)=1%EE@&%l4^L;sEr_2-N6>(qa?7tTl7{@%YCTMzB@fB4cI zDztyN{4E?^Sa#3v(%w|^%l3%w(fA1`0i6Da<_rF!-VkplJoE=}E->hbANd=L%!}7scOL=F{ z@-?W3wWEXnRM>u93%ziANmv76Nmmawx0;<2l0Tv5q{dMEgr&q z6TiOC2K01O-~XX+yZow$pkAaiEgm~OyL?za6TIloAE3jZan$EOvHfr0Pa;3~9GAVn zt?&xUt;ZsM++WY-9wGR_i}uV#2jj!Lfr64;>HAHSXZZOXzr=@6ng8UEWiK4aqkUk{ zJ+CeHs6RJ4;dF!gN4N;!aR5&YX1&1%aL43d#DfESKEi$?Ka3HhtdFl)_3fpv@y{2h zo~7|2KhO=GxCc4tUkl3%b1t8W&~VL`?9%Za{5S`XZw3GA+VT73e`^m4M&GYM+d*G) zT*n*oM{-ih&?b`{lR*JAJ546(O<|PJyPqH{^Xs!TVHkx7!UkTg`fUy z`cuDs8uM>%?Z~0!`Puoo!}E(PB18V@NB#C_0{@|ZJkY<_^lLo2egTK5FZp(jpYcE* z-_RYj*BaXEdciZkw4=MLD{sA{NK_x=#dr%G>n%0^_YL(4uA^V-*JBpMJ2ijFKQex{ zAM63gc)}V2mLtX|=L65b_~EJ#{S$Me&GMVPsc-+YU(xoz zTJZEQ5gEoyeW+i`XF{j{I|KjYS898rUr`@$s9(yL1No83Q(t28%-_`fM}MV!-TCM4 z_jvI}-|5GT^L#2gG0t`V2oK|v^N*8feBd9S?c-Yt;>*oH+52MlmR?b`NaHXe2~XCF9+?r+PANJ9v0=-)kkac%vWXpvAwrIpWv>O ze;I!iQ@^_(TR{e^v%Fe&=uJpN!^f z{`z7Q$Twzx-_XBK-mNb>4fMA)e!{8wd)Gi7IMU-28V~D*9G7TRcMJBYZxL z-{{m|8O->h4>+}l^N(wuuDzQ;e`5aO{L{71Q2v-N-@eBmA4`k>rhz1K2(WQQU)wROA z2Ks=b{LJ5~eZrFlMpxT);U1$5?o}{FsI##o{rU z10H(;PK0vM-f6SP_~N%|JUBm5A8;JMkh7-K@6K1wL+U#av}baepRY84GlN<0&<`H- zU#>oa_>G_T&b(Ud2iGt3cihXn`)CxWB>%Is^rxLWb!Eli&M7xKB_2JOEzC+)v&;BVQ{_4yZQWcwDE>v%)B zw0Lp;V!XhSJ~n>Fk30j{`Tq<*-sI6foWE)~zTx`Ek8c$4kBuMK>+~lV9*x&s|2PHo zuQL7)ex};*{CmH)56(~2R|yaKYqM|lwn`5v-v<6gm;3S6UVM5z1P3Xf2K>{&-^}Q2 zU$i55aD7C7!K41+>O)Uho&HUJdsczH{GIAA&R^6A9OY-es^cl)$+P_UTGL1R`rrBE zX}n4Kt$p`p1F&%;;?I?cz6ZrpARS2zS$tY zLip)#8Q9w!Tt6lD{2lox0e=(3*BD*f1J_qtZ|wgV7r{e+Pg#5%-#||uqwC+8uL3S! z-H#V_kPqy2FD!0+M*HEs(|%lT`K&Jg;NseY#UhAu&|Ylc%c`DzMIN2IB+u-9HpZ8I zkLoM4EAsNQm*kU&X#a?J3ICZ(^4jc;b_@Iy7v-aGQ+mEf;QxM6UK)I{*n~egA5HB0 zlZnCE4{XR+jvT%}ncX!%fBcYO`}t;J&m*FJFP9(YTX+U~cJ{vG%PVWkhiB*JkE|Yy z%G<@>8!yV+i`0H~hxmKyqC9@6!UO(QS;Fq(Kk@5+J;v`;e)@~?Bl*-|J>B-Fhd+t@ zK#yOj>zAlKH{Qs8_>_0+@gk4*PUHu8{L&5i==R%hn%zIb@_;+?@4F(;Kk$US*{Jr} zKJ91x@uaoqrJ)bk6|gyeWnVwlS>;dXB_9`W%+releeY5j{!_jYdFVs?puR@3M-1&R z{jA=P0Y7YkULWY`CvCpa=Xd4E{r4U0>JR6^W}t6;yXs3<#J^h~mPfJrgL>y2srVz! z7i=Z+o6KI2W10nBII8zXZasLbg3&nF@3j*ieY{_9N6n0$-REaxFuy40w7#`};_4D_ zTgvy{Y<{zRJpYKF?(T5|sXG3~*#&4g=9hx7; z4tDH`O8#;|_3siqFtD3W8l--4)F zoWP;|5ifK!5--{Vf8!X*cx2}r*&Rdk*Xet$AK%De(xWH%{uY_?LpSC|I1=Ge{j$0d z=pUOt@RA=m=3`>sQPoRC^ z$Y0*C{&oBoALd&fe;1$3x0dw%Uh+?jf8T%~IQmBk+DkX9JzW1&eY2`=!CkFY^;?AKE+lVjYjjUzoq>|Fj1j z`75K-zO;w8KX7CA;Jc2jGM;q)>is-qi1sFdK0F}>I_+h)zHj-G>s!A)^Kkv&=Xck$ zLw#eTWBjFmmEdSEdY!gE{i}^1V=?)GBma81e!fTL&0pRBVh~UKL~UQ3>!>dg9P^1Q z+M&Pew*>8D{wY7MzWjU?rl0UeEl^*&SNSns(0}0QKlz!T z=qk0Rbg35c7h@giiAT5nF9z?6C%5|Xr@x~1F+Ozm1xJ0O=O~^2mZl%qPvi$q{c+b% zE`j84epTgheMElXI)2#?V>q5Rrl0cJi-z&K>m83jev+U6#9;cL+x1AN&*<5}pGCa!$Z~FO5e@J248wd2p)92Q=oJO4AF?Qj= zHBocxT&hyFo-fm3_ZpN?rlI{wcq z|4l=F!6`rbhw?KY>688VvH(t2{QOmK()ekwF#dEsO?SwDsa;f1|5>}9ez^F9xjM*| z$dKL!*W373oUlZsr)T}^Nqj2~bd5*Xm$AM`{^%)wJouIz_(|XU27kS#vG-LOPa5!V ze234U8~qZ|iFnWtfTMgg()?gPK{{}>pM1!VXJYzrJpq2yJ#f^AZ_f!TV*WtKH|wZx z6!;fCRr%>3_<fdS&Zz^l$R-K|Pp#@|S^s zRX{%((5DtJ_1DHvxcoW4zn7c+_G$k_{XxFqKc0yKj{cl6dxV<+jt^=6Xb<1M6BWaH zTRJM=AESI>bmnWb@RoujePi(cWBw0*`&Tbl{qz^|lY#uHfFIx16PC_?66il4IwM-9XQ4}WBO3s8zxRb+fB7Z9 zJ;%R&X)dZ9KlE*pA9!dl`-tX`{(_Eg0+N2f{Gq>~ZED`A^g8blH zfkXNkt2gqe_PsyqD~+H2Azt7}ujJb?&^O4>!clpjkN&#+48AWD$=*NUXMRBkj{5L! zD^Q-k!T0gXw`%*bKCcvB;3z*fI{gJ5IL6lm@t(8%kbd%`+8*#9;|b*R?R~uXR-vG} z{6_Ec`|Bj2&ortJ@ls!UxYsu|e)^AZ8$v%}yju&H{uOum^dwa}^MN%O;3$u88A6^g zp0yalgijeve;V_D(B5mP zAM&r8e!|fX-+z2dQA~FHZIHh#peO&V{?Pt3$WI>VZ;j4+!n_kaluz&0_F(=%2aa_4 z(pfI3uHN;UxUa`kLH@Q0FTUZ(c+VOg`jLCck523N9#BuNy^r+%;9HG??(%W^SF}E< zuQh%2FTcjm=g8ned&oObeS3@p{>tDTd$wM?^V*wlhHV_QciO%uNqd?23OeB_vOmbj7R?9ib-OTwhyIT2dyljSdMWluU+TUG zss6TK_U%>XFa4VsJjmz5FrSUlssCKiUOPYG=L63!BR=w%<`3!<_2BADcu1cF@*|Vy z_<>G ztqt?H=}Nynw+eqV@V7C0^e4T}uRnZSQ$)IaR)IgI(OD1B4;jf4@{1!KI+d+Kl6k31&;FLZ&&}AZ_uaT?EAx+K>z6(ZBO(sEWum60Ik9eow{@@1=`eDyqPYvYTC#ye$dOCVk?uRmd zyqhRu?s^RQP2@Kf9OIunrSD&$L*LP$5v>&ahJo%HY zK7Vwh(veTt-z>jWWY8WsAL1IbxKHorfqu38k`sDADv`f2f6G>Sf9lKnctD4aTx`&O z^J`k4&`)|PbmW(C`-8oH$YW0&v>)g=AEyE{zU*oJcnbe8o=uMT_R7n&f6*S~+kro4 zf5czE9NGPD_(Og1(|h}vf8m}u?c>=jLAmzbCjY|zSbU;A@Q;O`@d2&`M!pmI0j>oe z)X&n~(W5p$ck5~H2_xq3)VkllXP)c(KNVj^rPQgOKeI>s?VY?t>GZ!fe)xl2Bj!f- zbR)fyX9EP))i3J5eN`WSB=_D)Pvj5e065w|Z~3Rb;vM~bnEb^v7{6QJbMdmh(Wgtf zUr+go{4FTg9}@W&bl_+&x?JN$JZ|nL|Bl}|h(~M*%FP!O`4{qy;3$7O$Y=6Q<)=T} zg&#Qj(~53EMTAF|59&*QPTPm@In$4NfPd)E$-DaNfpPGB*4Xs1USJ=%LA@-XUZ{T> z_>2D92#)k~U(x)qK0%M<87cZdHG8aA(19a8p7ryAdIygBb9=sk{L{xOzdWC?`oLVV zx{R9(axfmq7a~81N8YDl{pcMzXjFhqcnSr5ByWHM}P6G1NfOQR}TmK=QFToGM?}G zYk7AP{Pd@qYJC$v_X@wBs|yu|ew+)?22!RSAm<(G($j5mLb`cJqF;L2e77k`)XvmSAduSy;75sy0u$Q~Z# zuOGZL7j&1OT6h5?|J&pT`Al+1{__?;=$P}tUg(9sN>OcUq8v? zR3GTHhi^bKo+8-aHG5bepBoEBt`U9YuLAzP5Ao|SHyHL%4_o9H{cYb~rvv$E0G|r< zoeSvEclqbrsqKeP|Dxde#OQ^-f16Am?T7dM4<5(fRA1SMu_k z89()(HT@VDXn!O;Y#(||dn2+4OIAKYKn2BE&(_|+f1p2zj!O#}Pb!&2$)c?8#>^tUm8 zcMtf1qyA0yy-4y$UsQjy0Y7jUe^7ror?uiQ`D5eXHQ)!1`jf}{<6mn0l*e9}A{wdx z*iB5ISD<`ubizy4z8HTn7r{{okIK8}kG%aTbF+tQ6Y>K`eWSp?GVl+3Yr=-CZ@b zG#qY;?jirVry4{jG#Yj4 z-`4Eoc@WA2NBw7l_OJH)<6ZLHp}%hYlKa_nk=n<2rS_?BWc-91(~t3s_H*G;d41mz z8gRZrdtwe3{b*mW@jd-`MtR_<|9s$oX8f$L#`9n1Q`WweKW+KN{E7ObpXKu}Za+9T zU|cM8oDVn4uXuVte=ZaC591lGM{xj0`>DhN9POo>{rr}<`}B$JpUrxv2b7-#{G;E{ zdb51W?8mQ%sqxdF$(3p!;~V`2j{0XV^3T8J6McWvJBIb3>r=2u`Dju7!TgH)vwL~H zg87y2U-327kMWEAz)|1Ke1cY2raUw-G%Kb=1f^HmzX^Uv~+`BP_4co-i&B>&XxV>}~2_N*j5 z|GM9Pt=aod;b%S9q67U8ZGbt^zzcn53!#=J#fup^=()`gs(19bpG&_Z;TFqNe6C_pVeW0u=k{}cIQ9z z$y)9YQC~8kL*Ewp0mu0AU()<^{IB%mTQ@rWfqX0RQ2tEteWQ54%2Quq_Q^j9@`=4E zMP+w=3;#3mf%3J<(>|`3fTO;~=;R-pKGZwny;6R_k>1$;t!y9Afg?TMuJy+D0UbEn zTY7C@Pt=b+F-hNK``6Jv=Fiw8ll0Q$X%Bm23QI)#$$*Z%GKcg@KrfBX{J$aHLO-PJf)d;ONiH6a4WF>pJmAM}r`glM;8SH0^y*Gu$&VM%k4e~WL zI{iU^YzF%BU-sK4dY+%p^?;rP^vvc@j6XB_Rmh` z{5ZPcn4jAGVSYfLh)vR4qYvt5VOT$n`A2*03H68eu7<-8>GjEG7CBJl$6lX+X)g`v zSwLTUoiCpoo$+Ii0vz?1VjKGD59q*=-u#I_o`DV={h63O)F;L>(5Iq*kdHOwgZk39 z^!diQ6z$d?@8e&$_~;Ml*i)4D#ztp*fSwKLO&Gt>gr&>hsUUx4K%aTNpTEZDd-MnM zwMt|dPiD^p(;v`*>*#NeazSpRd79C)aIi?8^1JIDx8EN8$2CnNze;#I{?`ooZGB>aY`fT#jEzk4)<3~MDb@e%) zcR%kr_ug~QJvWa3vdAYrkHtK{TmHlNe7odb-z=Z9_TLJ+$lhn$;|2XCfAv+iy;x@Z zHBc_$SLwOOz1qj~qx!4k__Xmqs!aZppE&E(Kd!w&Rg}M6Ys0e2qmJ-3F+JDX5LbS# zwQrGcPJZKkXD1_jx%LDiqB8f6U|IQ# z-?sgS<5Lk|9-qq3apL_HOV9RDyoNgEugZE1EjLCsgdmOdaqWg%=2{Jwm3~RqyJ)#C zWsP?Swve9vxrpzz__9vvhjl-QrDO6r0*Y9FDEibtbNoUb&-?i0hkIVBf9CjeMJ#{G zTMxpu9^|1tJfAY_8$Mz8o1i@Q>B7ahzZLf;+xLPekMHgVOBAo-Z>=+B_3!kM%`Yu) zl=TuN@X%I%mLWs&WqBW%#;+J!`8z?U^sKY_!sj>bgrd@OZw$)R@&MLiuq@-v__*wE zq55hfU+KA*2I&TIyXmIlRa~h^q#%}xnHmLDZScLJeu@pK+2XLvvFShS`xoV-!CNn z>v(ugeP6{W29l>X$B5Te9h*{>1v->R=F`bwZt`&g&(P!CmJ$M4^d zcjJNa#Y8`Due!*$^33_tIQzHw&)pHt{R)-e_WWrHKhI0H;>!=~EWh3Vff6{rC?3M5 zA4i$}k>{HQyk9f&M>G=W_|4;Ai1A?Yyg#h*^?JcChc#QTzfd4SbnuPe3N_pH1`)w1F8J7Coh!pE+-zWQ~G7uAFt%# zbqC*gN%H!vDe`tY^sKY-<@tz>ugdQTz1qJlWyR0D#hza&UYN4}>-n?k@2FF}e6_`u zf6H|8{Hi1JI35)7B|rBxQThwseknE4r+7i$SE~9No;{l(k9CTduSwd|@a(DHo;-h? zyxrQX{K0cA|G?7L@^#y{9ofqpRrsj=)JGb%uOscDU{L6(2sEY`?bPJRhPgewI6N|6Z2;JCwhEBH4a}-g^Dw-8MdI-<6QZ zI^}O)n#|9#&?|n?!>fX8d^o1EPU*|?e2BJBL+DjM>A9zd(uaGj{T!c*_!4hB^3Dpb z`glFO?BGq&r}CDCUiFclds--d)_J~#^CQd;zGIs5nd`i!8K~R)n~HOf2+Gqk-yyB? z>fZcIb-j(Z;%5ct_(p!VDfduNye`)(DxWy_M9}zEKWWD+#z*=24rn`G*!g33{;L5D zq-H*n^lWd|Q9s94#+Q2#sQlnMORxG#&$d5Uk8^&E;X%la_-%j?h0_;%`X`)~Qsr6H=!{Z+OX^RKuyj^Bvr)A$nS zGuJ9V{F=R9RsE;mV(n)>Qy$OT_{_56ZNXI@aXxdbctiAQ`w-_d#F~Gmyggo@X6!)> zRiByP0j~B1JCgBk-EZ?r<(vC6s8f2ryB8|W_|1H!{Q6^Jd7->7SM^;FoONpd;MZ)v zsei=zOsmQ-%KKtfKXKM6-UcnIOnXp2{pA`Qm0!5Y;#zKc&u7-X=YRR^DMXn5q4Mge zQ+*{*-sIKE{A+pg_-rcWss0Osvwc*4^Chvp%N{?UU3K}JqMz|3Kii|dKW@)!QRXwN z8ZValj!?Cq&zhntw&#h-{A14ZottX!;FBz_?L(Z;s49L&aMee=16=hDl&wC^N8)@( zr!yWdxX;`2SyYfj@n?Hiv0g>x@!gulwajNx-7=pwb<4{h9(p+6g-Lq#C-lnoHzbeO zWqE#7_4Cr~&M>`$!m zBwofj4CBf6a_w|1zbWz~eLrUNU-eN(6Z9&d&+4Ko zQ2LJWD_(nf(!ZvZm40wC*}qQzvMnqBz$+}j+RJNb)+x?=Tdw}e7sdAS{*AewdSy&s z_!&DssQw1dCCSftlYTS4jZ^mgOUo_LsJ`;6EIs2vobAgxl~;PP)z9`&ocFAhpZBH! z1&MsX{Wto@V;AS=OU{190q#AaDvIx!Gs$?J6Mbqw`*-k~*q$?2CdY#kFp`j-$Lh`a zR`EP6_0wMRa}RX2w;<0WYPlotd)6|a1q4fEU*kWmKJ53stFr6B!68nZ;1iW)62z3t zLvr;O=YLb=(H`2z__7Z4czx@kJvxV?@gDw$)fc|((ZS82U576^LS%mt&!(|T<(dA3 zI{MFCX1tq|_IVBJqyJ6kdA5z;OvbM*@>Ktzhu5cUepM>B?>|!6yXV$}I}bhsuT53@ zrqGw~+E=-C=b<5}Garp-Rqkgf{dtG};Qrgy{Yc)x-b+IYQ2LH%Pg~^CfA$5Qzn5R< zv@g~+qAKFAOqHu?caHU z%?HXe`fv}M{IuuM_|_3G)knMm-1c8He>TZCK&d~2-u>F<6O-f3>3>ZgPdcwo;*-Kp z`>x0LT70?Zg37Nw%JLI0;!B&$xQDCw8NoH5xHkewBKtZbU+J6P{6oW|KkwnZ7fg9- zANx=nJj|COzUF)s#{_45J2|xw-`}l2*77r+O3ym=hy2_lLG2Ia{V`hR-UT2r$1}!< z?NPolKHe3cV{!Gb=$F0sJvT+Z(qHuUZ)ig{R3Oi|dKtOm+0zjD8V}|l>y*BFljUc8 zXfN}Lb&A&oXFL>Vo#L&ZvHozpD&k9jS*Lh_dq=1;=PyP45@(&_eDMwrWj+ctp$1T6c zoBXU(JQz&sTNZl8i(?JP@Y?g^@n%K*SAB*3_WVTq1L+Gv9FNiki>p4qD;p$H`!+$# zvJ{dIC)=|m_R_v0zMMnhJsq_tc#NfI`*6JHHAm~4@$q1j;A#)|5&(&-f8KrG zzxLW>eE4o_(kp-6iy!Ze5LbK3UVAjJw79kh?PHzF>v-}zo_xOh+Lb?iC>bB_6+m3& z1@gSR+H*$sJ5apw0!z<$vAr43D(V#Pc=GC={4G*ZrZ2g0ndR$#7OCjGs*Mqs_dVj z_O?8G+fr8kN#WP=f$~Yi_U8G;W_$x@ewTX{uuA2Jzn_fP#sRN=Wj?}-~NIfPn5nY@267x*$4Sdqw?3`JNctB zY)h2A`Ns2}{+j65_B7|?&irG?n;&gUJRN^0-RFP!ESsyJbCE2oKa)2l^Oet@5m);= z;*Zjgyd!zNH6ZjF51t>gPV@PCmNCbu{HJeD=HsBZK9X~ZV2SM8BF~$tJq^J%K9tWo z)z32L6jfjQ>7GBH{OXt;Kb-hs{%17Oze)B(Q+>?wqBFmB)|;Q>vpyh+`8Oxy6$-BL zxdF7C!&7@hZ~ryEOUsqFEc(dLzQ*w)#QJBA59i)c73nW}^F;$qDa-( z^5~bm{o&4wKFt?iAMqIowy(ysgzHHsAF%&t9FL+mUp63Rhkl&-qxLL&_LPNQ{VB+N znwBp<&$fr=+jX#ub99QAgkJ3@&N(~PS9Rje@s;Q6+~ZF92W9?E>6gVGEf0VeEav)6 z`B|s@=RA9xGXLoKkLN+-c$K~RzqatJzN+BNA0B&)__9v*1+xBJ^M_-83qD5tVlU$n z@jLbwUTxzU(LcrdM|q@Yn^#e%`p$dtDPV3AB!S|g*rW0W1ZR7xJk}}wlF+Mt)E7E< zLDpNVybhjK21%4Zoa|YjowQn>0irR@62ZhU_#`7 zQRZLO-nKU%d?jdEr}E1}ulZ%}PhJ|2Ps{fv{VB?Puf~h=Sf~2RVlVT#h%e*AH7$yV z4$gcr<2UNmo~CC%pM3zC>5m*gXA`>zMUhnKW)L;p3HZXAK#1fozE6g-Vqfr zX!)b~+->!-|FdtK@!H9+L3y5|1gwZJKefMI7arPkdu8Y01N-*us_fgdKep#W)!NJb zH;N?2r+7GS-{MJ&tG^pxWy`9cInu7j@o&rVUF~gNmWCg4} z29CVyT&$1r;&|NnL45vwdMRn&8E^if>Dj;Hl?PvuJU?6-Ps*zwPnOS#JsOYUQx;c$ ziPnI`Iyp+CH*pQHa;Xso9{Ld%Lr{#F0{F5HOMR4{f z#@~z|PJe2N{o3Bd3rFMj4n2F8yz#Xp`Ofi<^4Z?YzZmnE7L)cad;9lw9+SkIlHcl2 z=gtiwL`Lym@$mEB{PwWd9-)-A{g}(Hyh+Iy#jAopWo-7uiP4$y>!zn>CY~DWFM0WK z*3%c{F61HP?y#{ISI=|AVS{}wqPRr|_bzMl8^>pz#YuP*&j`3JoC zH$3@gM85jN+=j`pn=_#p+mNgLr9av~Sf@C1nYfliiHDXua{SQ##r$WT;zgYMlV9Z% zXPx4_)*`Ou`p??3%H#2zb&B&^!lf@uzADapeJ&nKS^FoCr>s-@y69JZ#960!Q*g~! z;;f5sk+1$49CfOXIl?}r^fj?p^$};C;vJEv`iQem@j&9Q`iQem@d1&q`Z=Gu?8t9< z`q}?jr~EZJzteKbYwxm@RX)#`Sf}(w$rtsHIO`N25M2Eu&N`N_#rM(pHeV5+FO-B{ z{Utr?R9?fghsRLXDL&xkCvny(9?12*+C!Xms*mNCBQNmc%lZBeuCG*HLE2CKzaBX2 z6d&-~mpJPbFTBC#uj)7as8hV*>F4lCkg`iZmd0DjF}0e%bLi0MO5AL&`A@(L1v zZSNb%@5H|**E{Mjan>n+&6!`~_+oI>DPEBFdjv4WS*Lg?zd!^$};C;vJEv`9qv_iU%^EqW&3v)G1!~+VeW_vrh4j zr=K|M6fa5pX}RjPC+S%i;bO1)%WIyhV{gsNAL6W2{-)zAXM~xe47M3A9}E^z(SdI>pPLesjOm z!RwxW;;d8tQ25n<&cU%x&!0MFdw!+yCQcg_FZ_bVRbJJzhxDvd`i^(L75rv$JSRQt zR36)cRm#7`(^nFHwU6z`I;B4&>j~NZ%y;@f@GU!@k(TEN4d-}Q{w=GI@)T#C+S3r6 z?X5WLRNtWIUq|eV_~m%(%#SR%^CJb3uk=MJvwf(~Tn{+M$%r=vrgrk^E)RW!r!*^8h_HW zPW5m4)nq(Ek?+JC`&-5H#Wle--gPOf{XD;6o#LSvU*fD&{mY(z9g(Ma=-C&%$@-)I zn)55vDgBbrtG}i_5l^-6dgvc;=*utl{1^F}&!i7gr~cH>CgVw*b*le@XKz#FDL>m5 zEbe?U_CSc^+wtg^rL6Yze2R4{Z{V#~p4v;Cb!t!X*OLB~Bp(zH#9l4eym(ZFUgK@f z|4^s)+(3Q57wckRGIlx_7CE$i|q024HefY)AaXztkd{ZC4W>tan`9lBfp-MR}*>4&%Oi} zH=nV8SKJ;=kG|!V+kcR>?>fk0o$7CR`hz!Hdc_CtPTE%#T;of5tW)}PB2VMT^U1P< zm*x1U{#8Yu<}c}4r}EkV*~gW>EdFRbjeN(Si=IDik+1dz3(5Qa%Yp|FCWv@quHE*jHUVIx~7=V&3TMbn^pWxVH*?-HSH|bVvphv2422B2(`@L5tK#Vk;A(yxCK&C z`NIbe9Ui(3WtV>W38csR_zeB!OXKGeZh(A_nJ)jPtx5gouBW^^hYlXvb6~%?M0!lq zV(noNoW&TZ@jWZ!r7Ld)`rI-uyc6Z~PmbepM&ePa94Mnj_B>PCz~v9U_=J#;_<;7n z?h5bopcS=0a{T0&9pQTq?7!WM*Q6(}h4yjv6|YN{&m$f#e%_-WMEsB+!#fXFZrx+7 zvF)zyKk3Bd0kCglF_y=2)v<@=0&pEaIF_R-p#B^2z4-aZhy1$sv`u@V{pqNDw0)MH z_91_@bVbN-rE-@s`0z8zCgLbFl3EOue~XMy*1xScDTOT~HHAa%i{(SyprWz;3H+uV z5kaNGJ9aUHj;B2S@EBw9Sf4G&0(|{`xxz##A3mrGb-d^CfX5*8pOKNuT|+zXurYMw zy9w=q@nNWZaA+3>iQ5=r7cZIiC;!32hxZWW@o%hJt;{W8Yew_Y_T;${E0q61_ z@I&$Z$ap!b1FY(2|Kd50;PVS}h8+HKJUw)H=f1KD-~m*tFz(r2!LvL2o$*!mSEKwg z;}`C&9xy}f+{Ebk?9BANR(c#S`n|;)ugZ^z`%77lj~XBT2B!UPeFnz&0|#%jLpbZ* z{>04-A(*CBwsmLpH~#re=liRp>AF`gK0 zul`j_?~W%fe--k1-D&O};J5LjbqV?B;Ggz~&V$#7ATi_jqw&k*Q(9v=~O9v=~YtQ61|Q~ALq>kK_@ReL%wwsk=fl_oMlAT3dunOIt2?fkv- z3lk^MAxFn2nBwCT)rpz$iJ39U$jv0e=db_Uezg2PuY6w0>_6Aw%WIk{uE*IQwOsmi z>|aUdXH?#YgrD(eT@l~TAI0<|La*^@dh2mc3r_vYKhTW%SG?y%&wS2~2eeP=%b?eI zhWH;)p!U#*(g$LB4bPszD;{m=d3>fk(l;FaZO`9NIPp^YwnM+^HA(v@FZknF|CT9> zYdnU9UduJHN6SlsNB;e@%?-szKA+V0M5r71e5~)R@M}DH|FQ1cb63)yP4Bxb1c}La z`bYYvL%-?ymR{S7c*nt)J%56KwDhXq+=KaGY~QfRQ-4BFKj{bl#LoZH9+rz=i22K} zP1+xdKFtr(SHZ9GtKolCMft(|m4z?H@@gVa^MQB^JZj$=!Bt-2c(OfOo__L|zZCPI z_xOYVH)#*YfFkNt-^TYR+k<%FS@HSlS&5&v2l1-If9}65zslQExA9W@>z@9r!QXKB zFL>?Kew^(uDsS1tt0G_VTF2_s_MrUWPviC|;D1(WesBzLJv;WV>G@B*{+bv+C;HTX z;#J60{cXWjzu|ZEFCR*_-_ql)e;S|W-&*@LA2^@Ey3P3I=YjSI#|7SbfbBxB`bWNy zjCWgbwTJRpr~DnkH6GUkXPwI1v_5&gUHDMaKGL&J<%NG{aV-axAOwk-zoHMMXPwGF zC-$m+#Osi!ctiMAUPt6BK5{;pZ}nfa{%gD*NqzVzfBEmMeagS-idHhW&C+71eb$>{+-_yyd`Ozq!uZ7LU z56AHv6!{NFJ!4|{AK%dZsO7Sc5buJH!FR~p`R3a>QC?i8-Hy-%CCZ+`cz)c z;qQn(wTI`#O$T2Qoc&ArOGB|eq;G?sw(-N`4?n7(_;Q=)*T-iTD<(b*qlg!Al~;v4 z`b!zt;TwJ=&fjI+%RyCiJR;6IZO_`bEw25aIO|kD%Z)#d&*$3Eg{mn3>i1iI)z9-e z*3lMzZm>Tw{YNdm>Ti1G!bGxvQ6B4*K6t*xwOrht9Dm9mOUf_3!NxY7@cen;Lo z`?JQYCGymM%441K4?Z;+zu;X~zWQU15~$PuZPw4AjZ}W)w9OCokMyid*yH#Yiu^;M z+l4Pb%WsJDttzL>xW;ScgI2!c1Mg0@N9)L?hF|H6!&W}y!?9&MzOCP};|J|y zIfM+QKld#wU(2n3O196y%aZ-?+=K1$^_t*mkc4a1(!CsOFtvjv$^{n5uF65W>8joO)Ej#k?K8?}H9?Bz);Xk<{ zY~af(9WRI%fvf+u=WGa3W%}z4_$}gF22TGtR?)xeS7Z8%e{21r{MyilkYD_3#$)Ag z|9LzfH^g4Gzx`%w|24rrvIQ5Uf6+eGSBE~9RbC4+t_jK{4+>AS{LEkCyq+qej`oy> zH-!A+-zZ)sp{GAe&pPr`ALG&fYMj5J&<7BB?ZaLfeE)xcHfaAt>`(FctbVW={BZcm zpzzE%UX-^Cc^cn=57~GHSGI!R-SSGZ+0T`w;8lxG8MV~+2g{!gny{f#8J(UwJ~Mkv zrbtoNxqDNC`M24b`2|63`*G~!^-TvkT&avt%}tCgRF00$^M*sEf{B8Onfa;N8R4Ir ziEe&?hvUz6_?qMO?~{LOzA}%S50z1Hqi=cdE2vbaM~_ZSNBXrrsK2mpUFg$m``1Dn zKOd)l+J6U8nZS$S- zS?-`5(O;Gv|7u@L+TYo4Kf2`_=Eu~YmBUsa`zQ0|dVH(@k)$tT{?Fy_VE)YNo0%U!F$IpeJ;R@{_F3HI z^u$tiE@4j<_D~<=!|S8^%j5Yu+Pmc0d)B!>LA>tFzdiuva}NGcl$+zRydOik<&-Z& z`7HXd-haS^ugQ7!kMtdfem%+;Aiq+<&%isRXcz&GvTF|HM z)&5i4UP}Kc;Dh&G7PUuti;W-ipY6dhZrN*(+Cyj$<{L5ps|Kh%>N^8@T4sDM8vA8_ zSQw)F8B$hy`i~d3CHPNEdvL@i-N0wBh;Y*$(w=H>75fX5E{&e{EJyYXR(7GxkLF|j z(d$E&U3-cxp8wH)I4lg&{TC@KJ>@T9K3>brhZ6Yx^$UJk`|p!M-+&Fu&v+Co$#OUm z=NIWVu8Z}tT)H7yUV*>bzpkbHw{bk)z4vhCHayj3Z<(q8EB|(B2$DecZ@~Y9=zqSw zmS0;x9`6T0zZ}We?8b3%+buh8x#{L@x7>Jy;v@Nw#{WyFE{*cDv}t|l;>`bZI|Gc5 zygPGqbcaUmW4zBg^ZBGN!Cu_2x^-`qopJkCMZU&^_O_Pec+ub5t?~F&miIZUKFV)9 z;{(T#;*W2DK3;#?{pR^VqSEuXcx^17@{yF|^1Wl(E=Rf1W;@P(a@l}2GcdiRT z5@@+5WtGo<793;#?@buAnf3Vmjo1_8X1I;wL;Z!zY(8#fN-}})QTdGj0PY{De%|YF zanfx8|BvIB;}!F#{q>lh_d-w=+0T0&EOR{GjBgR&LNh-9;Jpk~Md#~0o)sOO_b!NQ z|1QY=0kx0!E{JQH_a@vj?=7&*xNXMwiTD;#r}P7YYq>0C_AicQ=6LSVbFLrNkv`7t zvrPG<=kcb6I`UKBmG}mK5}!Y9bmq^Mz5rbHb1t7OTIO87TjpH7Tjtz6%bWQJpMUr6 zzg&g74tUhQYf*CoJ(g}<$uGGPx~pa3?7wN#NL9a3e|7sCa(+$qSC?XY>5m!z zG3TxMHu*?<{i@|a=1;Y}$tw@ae4xs&%lWv{x4xN_H|+6W5M23-GJmb{Cq3&_-&u(ta3k+1YM-+yoZ{(>hj_1S0V*T?9M2n&q46z^ zBAf8hco1iu%By?wmOcF!JiO3O#$({Q$?;-D?A3U1exU>&wI}rKA6iHGXv@u}h1*Y@Nsy*nAt zj_6nUXFWXlXtF&n2(J1#o)tl({KY>{$}b7O`db`N=A+?9o$`m$KefEYyZ;dS{>%Lg z9Ur&Cp1Nbtd9g?36&`h|iKp7r@$9R~{U46!Y)_u=u}=BVihkuUek>WEmf+6u=p>JS znvd5*UI{!Z@7!P5cxnG6UUl#bp1!*1Q~d+SZ9KI-%sB$;RQ~W^CflR!*?ZQ*mjzdQ zD35h2Z&~QITx=!f4}3hC&jWZD97F_4Ke&<{4@03>yzJq;7e#(;j~noR4LnMJ`o_x) zuKr&Oyy@VRo;*HF36iM4)y^dCJLAy@pGdZE)5D8`tA3uJu}-P>DsNKc zssCF64>)+?JIVGgi#)ZD^sG~P=S80SUlV$@m-MXDd|x0~|Wo8tap##YoW|6>4p zi*J$pTZ|vaHlD8*A7}5!xb`yM%0JK{|1fG0yTjHWZJ&nR@4F`0WAI?$2_gSs`;y@~W zm=Cm%WBf8`t_cp~Kg1UI!uU&^W6ibrR!4~6iT^NHbBDEOwz@ENV(PvLQ;9#<1b3N# zJHk(W9pn+e1Qajh-jprx=TFeVy)yn@6CB`Au<@5{e<6QqZbQf~{x#zt?Y$D;@Jram z8^4X)H-!A+UlVUWJInZWo(Uc63g-UQx#>?5Mt%*=a$U; z;Sm*JCV-Tle$@DgwbgRwp2Z(;t;6Az8OwP?->K-P~c zJ%3L}^sz#=hs$rvF|PddX9V-RjIT@Y;&m%O;gGgZUE0T`uSxvf0J!)W$kQ@^8(w+9 z=|98^LrMCkcRy&8hp!-iUHJvHhg-(ro+xkh$}La+8TjM!k8Depo3Q^XJV`mJ4@<&k zmws|%lD^~R-$k!{&Wpz++9!C@rf7U`d-}I{{+~7R-+6FfW#_?N_B0|o{|>O09OfnL zYkK}oLVl&PFu8c*sN796@S3LjPPJEev!6np3d-o6N z1B#mOgEBuJ<7A*c5&iBm%C0@hatV1q;=-uC{ zn*PD#4OWCKE*S=wextEJ#%Q05PkQo}ynNV%{8N9!l>Xg9J_HDq9^VVpXC9Zq6KuB) z?XIAWagH6~=Slyz4Nt2uSXZBrWdAWDko;gk4?iqEzgY3(4O*vLwiOlyHr2|#~Eg#JdLsmrBZwN zd=MOcsnx#$vM(m|Lm&3ruKiwY-*Oi|9TeXmWxqjTdH-)w(^ zZ_53t7`F;)$1aWdagra#@vF|>1Kvb=>p<|9n=Ui-=6ueKciKLnhsfef9~H^l=*yde zz3+?hLKl84=sf5rBL0gQA3M9_avS|QVGm+3H*sQg3J!aza1K3H>a)`dRkmCG_7rz@WzZ?;T(OoU)9+nveHx_2{>H^bD8FZyME+NB13k zZ1gC`gBWMowRdcEY<50@&mB+l&mB+l&mB+lvjrXb5SO4wc{&>3TeugSw0{ii;S%~# zPRK`j%9THLV)VFMo}NwGhjM~{cILSW`6wssLpecj1_Z~S>fG#eU43{IIzdnOT^!|O zX1;*en%Ckxu!Hw^wSC8cPkQtTc}S>)Jd_jmGT~f)lwJO#VF6YGER-i0Mga^tt4YK8$3D&-_f410TDN`J6iDl|6z}^GSSaerbH_ z_>><0qI_Mx-{$Mo{5_-7)yYwnkMhy!(V4rQ^4QG69J`+R08hw6`S{#u6(dQ68w1?( z;>=j2AN2Fp(Xj~!U#wQ6!$kl*VK9!J)3f))ILZn7IG&@`Djws!TTkz-??n~06JZ<^`=g0Ude>w=q$Bs`dEXc#%s2fif9eoo^6JxGE zmQN*cwpwi8v13S=WI16E@Pz%x<|Yt;V^cH8zv%F$Wj(xUSr2cBKYDpgF6D?^$`Lur zI4?`kv+UBd9Mi}CU>!Ofa>}NnIy*nLR5^jO2ri>{@dczA%fQB}_g2OxO^%xKiP=*V zQen!~n81|hCl+G*`2`1tJd|f#dW;ZbqX~M97?DEIOOLb?QMMf}(tj#JP^oB-RC?*a z5q*Lk_Gk}RdL3WQ<%AP2?sLI-j4sTcm>RQbk1-iJqWRcHK1Mip`>^Ag(6e0G8uOd- zHm|%RF3&H_&LN*h$Hppn6k&Yg)RgJO=x>vES1U(n#*xe>Kcn(uvOK@Al)$IQljXSy z4id4v6SjSi%-n;KyK-=1evvyWp*!esY#)Pvke{ z=mJ5?M`vd-j3ECOXYQVvy=SJ#-J(d(?o^zfn%4mh?X_@px>8-3s~8g4zqB-Zbn28j z`w4>M)3ZlMrz7@YbQ*`2%6xRkfK2gjT0wv-j}ucfquA-me#WOp@ifW&!W528{8VSF z72b2eLnNj=Gh3OSojH#2ZhD$EaRC$jIBMwiXYFU~^(^mR@c7M7`|IZTjUzyHd`ixL zm3|o*Y4mzH_|KSMpI2a=;ze1nq2*<{-=^|TzxR@ayt2qsyz1Srs|v37_jr$jbxPkB zc@IPV6Y<@IZ^OYadiq)-@8J$T>r~!pPye#eD_;AKJzjEtRP~W2^7jghEB!f7Ug;aj zc!qy%>D7KSe-9evKfQQq2vt%1Yr?O1+mqiAT{0o=#}s@k#y5S}-tWmyuwWP=R zJAvV#attS&$I+=(eqH2ixh(XW4;}wpo=oj6ZL#{b z{da(mb*iuUJ)3`w-<9|l@ohrB;^*FEEEpQ#`oe`e&ZUiJl&a^S6ez zoKR`{kLqWg>Yw!Fl|`Q7q3BopuYoMmC|>fO=WfdLriw3}Px{vs`44~`_GQMaiaL$= zkD=Vg^H0iO^Xyv|e#V>r&>q$){TZQ`{oM3%ia_z=2a@)bR&4wfuU?(Z&rt9OLXX;8 zM@%>#Q2%CpNu%wt{A3$%?O)^D%;|lkzwOCyiF}PO$2iuhJssbFp;!F8=TG4~)*rQx z@>r+zh3_ZF!;;X)_AVNOBl-{8cxgEldM$79_{U6L%jB~w!>c8mOTNC~3Acy1SqwsBfCf*-2_<_wg<*y38+S8P> z;+uqC@s8m1k7ETtH9X&^^vkfFbxJ?rt(O}Rd9<&LFMs*`pz_zZB;#3@^?aK_$Is8$ zA9H`3`ONhvq*4B1&)&N5D_;1X9S^iWlAkncZ&mEo_!DQHjlbE?1RLeW`%Nr+@|*9q z@>O2&0~-&`x1WMM)+xTc&*Ey|mcR4H!*?d}CC|UA$X9d9*e{W{R4#lPd( z-;#K!z1({PtWo=xB%Z3T^i#I|v^?nT_fWuI9OS2d&CkMp@$;^m{@(geKeYc)hw3j2 zKV|&r^M5Y_@qEn81g`T>O>!aAsU4HJRb)Qt__q0ce6R=qj$Ho5Q-de-B?TX z8~!wYH@xY%V?c_2H~i`Rarjd3g&y`VxapC`-@|_J=h_cEPM>u7dG?Q@0e0ZVQbzw8 z8$G^&^v%Q<=JWj@Jvu(`be}H!3?6sybUf}p>3B|jtp2EbrSs>+2mHDDXYhRca@)_! z&$Z9({%Q6f%WEIVpLQF-&wq=@4UmSr0Z7O5_(xs!DfR=8+0*gd_<}#T{i#1MzN4;t zY5H^f@90tR=iAq#{i#3Kz8>v23Oo*Acl(S^yAGz~+59I)mvYf9@eg=@e2M2A->PT;H^Ke>Ve#03G~5kPIv#hBbUa_a>tHv3 zGC|VuJoyZ8_W5nqHb9i%Y4Y6xFb&VO9}^Fb`mX$`5|6`|j>qn0;hEY#Z3RW8%8)1A}|@{B6hex9k|W z>BgIO+&H*n>$V*?-AH`fjtFnOxx5nb7T0540qZK!hVk%Na0AEI^H zpXNjC{1ny;@7je$tq1n)*;UzVV!8Lgt~;4a*`cwJy z$1mp$Cu{uC13(7uj9+{nVBU@I=;C~?eLR7U4nQgL6DPPCc%Fac&l{hO{v7{|emz4< z)$feY8F+LA%fR#P&u<@df}d-@a|YF&Ka-=23)$_10l3N&Og(`5_FFtY!Ro^2u}s(z zkby@6e0+Xxs)G5gXaXr6kHU-ooy>pBAB8sqj}Ffnc$D7V_;e5Z44z}3!E@|0c$B_b z`nCBp@Lu*u(|29`SR@yB9y5L><9m_>ar1QX8$5PD9gp2l$7A=?@woZY@!0(?d}iW! z!ap7(cz)9yy&~k-me)D&6Z8D1fIR<+=lM@O&wtNAKfg~J{ZaFG`Dbv)fAz0$$74c% z)xY7VToLl?%O7(G&y@DZs@6pOJpQ9x+(rK@i;Ljq@i!4ai=+J%SNjHWZpm*C`z$}= zr~Ik%;eRfU^v}RgVexUEf2TP9O*jqc>5uTd@sksPel$G#@jErg@zpV)OTXe` zKn5NekcnsTpExy>8y}wkVmS&r^|oG6rSI*EyCE-s|mNBLR#6YOj;Obr%KgZ9>spFG+kg(5}?>w}xf(Nb- zW6Kph%Dj7zdDU;K{)m6j8tChf@QnTy;TiF<>kG2;i@0<7)#abu|BlW;efw~K+qrsA ziSKdVzl|<$y5!^jE06A)zG?VE-u$+?zZiGFE`H#-^W*mZptgRu{lxR;e{p{d_b;OE znW7)}zjAPMe|#%SNzz& z@PM3l?@U}fh#x=Ym+qa(uPKnluV=_vxOD$6`FM28T|SeJt8xUvmv8u0cnW@!1kN2e zpI`7uLk1pcNX0RN=oMfFo-ZFASO@Sl{zWH38F;RI@Mp?Lc--l~wDp9CJw8#s zJHYz(TRdNW-uQ;6z3lmei0G29xR{uOn=w8U&p1Db_1iHvlV3VW7d}0jZ@=PM_Q!a- z{fcMVuefATwte;(n1WBwJ09fV#)C8*``7Ra)wEy^p2~l6{KPbFWJCgdeix?zA3u?> zK4pASJTv~{ea87`BtJ9$8oiACQT>_uGapfK3`+4&@znUizUln1AeJAql!{#hoox@+3eBkckISt?5gWo;9N#S4Wp?|4| z{H0v^)8kw7#@AE8?ZvUoar^O&@QnGB2$vxulRxA7SNXH%w-i?=GUdxDP9~m_-;sP7 zf;0JLhAa)oJ)$TDvT!|v%ffYp&BoJ@ue2ZfHGEz9CAfw!6W24uEd4r!XXCl{MH7rZ z|NKIJege80fN$UQ zxO?@`J-!0Zjemq^#NWYF?The?_Hpoh{*3rW{2B3$@QnC6c&7gR{=bd=GrEFHiND}R zd`kbc{MqA!;<@~qzFqR?7xLR5xNZN8_I2>o_(XU{`#N|&e@6R8{2A>V;Ti4g;Hmnj z$G2CZgB+|i?d zSX_pWl>AlPn3suX_YcdjQ)J!!)8IMBkNozZU(op3H6XrxyZ(P`v;##t9^IbCCO7%> z13|kG-jB(G!)CM&g5SdLM){gG6|Z_k_S*^Rtx5h~ZC1x8>)evc-|1Gy|JPK0HqO=e+4DzN zo85i#aO>X-Vx8`Pk^XGl>d(fxyHF5h;a3GkgZqE9_A0YmnvdE&)L45}v^!Cf<|-*( zWp=_#Vk~igJbtb+yMx;Q-M>$i!d2$Yur6Z%H~WF%->b~dSKateO4U{7ZGD&s^GMA8 zQ>eSj>^A0sC~^-ney%b*R@?vGzt>8^!E5RGb#8S;qqSF=H_^K!_W$dps;mF&`eGR( zuEGvfX&{NeZGRLht-UJPn&8ud*4Do8knjnpoETszG-tvnev*F|5o{&pCw*=b2jeI z-zvZSK40f|JHoGW<+tYBhjTaQ?qxhbto*+G;PfNH??G5Y1pYaGKY;H8@n!p|{>D#R z`%&e7YIq_Qw<9LTi`+=r{;BMq8;v%wPq$A_&LF9BXmp{NBP0#lIX1R@h*Z`|2&q4bipn^@h*ax-?LxFrx;(P{l58*e1mrpIQ%{Q zTkK)K!E@w$_II71j^m|7$FO@n#)#>~6S@F4wr^sxf-Tt>=djuP=)x%e$3En4`(ptu zc4WsU0;a!6^Ev)wWdQq)3PH5y68Up%ZuY1LCUDuGELtCLZ@|X(P0b%S&sNM$oWxMr zt>1r>fTf7}#W~tFF>fC}O6bR=E1uk_-~o~6p1=n8i~jjH-r~!h5AZUJyDQTZ-SP9^ z6yWPm`qzDa?!P&}=l90U0qyF*xGh+X71e(Ar0OWRz<#yYb zPsVi9#QfI&XnlWleL8>d%vgmleW>tzYyzW1Wvjg@2_=XMaqh2=#KRU1b4Vf3@i|4> zkcZ=S1^GBmJu~f-{J&vwe(r{;nX&1`@rfJe7skh~!yXrS67Bj)8v&o6_eXjE$!1@- zeD2TUK7hOR`kQaL`KDX8Z{5CQ@TP6sx88X3#FO3qL3-h}spS3=o1bg_>$*%-{{G;p3jQKSOPrZJR@UG*J z&0h!4=a2H+d;ToC{>_?y(fN<``>&DyuJL(v?nGs5?%pc)*%+OeAD0G-^ZX%G1pW>msYF>)t;M{#@v~thX!lXTjdhNqEjZ|<5JyD&-D?Gc~ z*Wi;AqtyhFBY*t4i}PI)Vq6Yvcz}9h3g=*5`7^dOibKb^d9lpQqJ-D+ALj>Lol`l5 z0dm4Qe(Do7@wPDT4StO8QxJ)hhb-K@oIIOi;E~}E9uWlZdZ;y+zrVRV2p)o>xjw5} z{I3Lm4}Kr=@EGsje`CJ){xZ4y(_nv@-2G=DKNrXTGr2hAn>WK+f4l9+{x`We!~R@+-rHZtw{M{bj{SKO``@JS=i=C(W!&AL#pj28 zxj5|0#lfH0|HYRN`yD*^tes!vd?r6{vOm%DW5KW6>)!>bUqYw26JNdl9enNM%{vtY zj(*s8`0ez-tLyALBuJ|t|9{Tl`TIvyOIL*al6Eb)?vJ7TS^I-1-b;Vh{u`_1&ytV* zw?;-PLnGy(gM0SjO~X6)R(6ey3`9==%Kis4Q)9E^d}rAxuaPFq)&M4)7C$vQH#Itr zrxX_^PE@CH8RCqu+&^J_VtV2@9%D?~Ux2t=+n9~H#wW(H`+z>;=*Y*6P`7;gpZ5H_ zo_}WH@$-+){$sm_cOJxkZqD{&IDUBe_HC8J4ow2T%Ls7cBtKsaofMzMySG0};^hO7 zFqAOS>L1>D=TPOgyLKMjy{)oq_nr!#mo}|q`v~*5-~93OH#>il=a(}76;06f+J6wo z*TnvJcK$Hl;4b(23NL=h#qkQ1htv2xoW|$jG(HcPOKk4nXx|4Y7uOR@7-VMn z>M8Td#4C0NBO5oT_lQr1{EBrj8@CQ-db63>gj#q;gYi@)X1w;%d*?RPgQ@$-AmI;hLb zy7F7_$bk(0r~xwY$bk$zav%ej)j{s~WBZ@6&uM^Eey0Ou;Q97DTSR8?=iBczfX{!j zNB&qm3V&DoSUfU61CPR=fk)jU3En4kN8B8z9sw|I8^<~#+ye!(LJ8F-|?$1!snJsZdqh*VtW&NJ}%;f-|u zs=L6kOaAnz3wP`1^YhWuAu0A5JiC8z_lmsnm3Ur$T0CEV-ti63&-d^T&!^}5M?6nI z@$CL#_Mhk>Kd=8;{%rYpetmIzGB(g}U%?{*8F6 zpbIzqqs0E}`aSlQw2xh1Bnyae2_J1bviJ)+W~5u=O*yv>%<)HelOtV@$viY6YH1e zCuiptin_LlCi?lcaC9m6`N?^GzAJNmeE#!C@%nT*g)BVMtp7dA1-JOzdPxv`wP4o( zv+aUf{`%pr^}p?hhh&RB^*;GO>hXWl=0D$0&JTaNhLGmczN@3RU!#!n(dV~QAXBCM zJJSiUzIMAoUXY2~r5IWGRpw30-OQV%>MD4U_R(5hpX$^6RK)*e`(G_dA+=badR-Eb zlGaA+OV=gIu9u>}zEjEU>{a*rKY#sTa{Zm;zq0@^iQA=j4(#-gW2p=1;{J2&9_$c2 z;VqwY_|5vby!B;VKbEup3lm?weVe(yhwF=G#73Q+VE;Drt9IEA=RVC!9+_N3jAQ%l z^^M)1CqBTZ;n)HqIzh<5_3+m%AIHb((f9z~#V@!D$inlEpGLl%VW;xX_s|bKS3mGv z{gj`f->e+SJ3r#ef;hZg@w5DDU3dEt&pp30c+`BU@^jDcz@K~mYVdsdx#zF6FW$Z= z-9BdpvERP*KX?Bm!8L+u{FsH#-oMV+7q5U#6OG@y|~tx_>$zch7WO+Lni4-##Nhp595vb#Tn$*TFFhk7f^2^}EAQ zntu24G9AzN&z;^$=g;@go!&|3&+%{0Yd}B#7LOY+9giJM$KwV}$72W6@wfrg@z}vM z+-<;gJm0^(;|Js8HekB^eE-}AOy|$`?_`hmvv{_D7SC=!i)Xi==+B&=7yWW}(%rvA zf9Cun@x1o4c)ovm?PvM({e%8o|MJ?;%Fk&(uLJt+f70uK8F39_0uJJ+SM*&FZ zj{}f_M;$Z+j{=a2I}MzHM-7~T=lj3d!+)m(XULBdAOp|$9|@=y`26#eb3Fabygwy) zrvHLx`fqX7-rfI%KePP>&-7pLO#cPX^Pi{BdH%bn*IoGw`NZ@52cGLc`SbiIp65UD zJpYMj`j76NNB}=S6xRgE!ZiRHcocvPJPJS-t^vrxH2_(-27v2tqW8znEleGo8pD&O z?);~&zmfZ&(!iP^Y4S}2$OxT*=lV~6O@IvkC;_tYJpbJU@cH51Opp8`uHw`3pSXs% z3upeg3Vi*FtAZ?C75F%gZ*wzd1hWm0iHm|vTok0@44@=nCY~qXX@D+%6M)!(Y}_iy z#;pVCck0Hph&k^A3$LSjzFM7dCIO!=Dq-TXYit2jq+-@gbK7c+4gz_V~2z_M@+K_;Hvf2{oy zg0$!FZrUC_zSlLrME+&v594FfKYf1}!%sXfJ|_L`B}A%!z;ok6eo2um{+#i}+MnHj zES}>()oTw()9<*K8ehk~EL`2o#I*-x>DL~Rg=-J+aWt>p;a+-p7Op)!3(q=#q5Qn~ zDV`@kFTV40+)g8Ep04-_uHv(BH9rH_?Cc&tM1C}Yb;U>Q(+kiHT$?XLfA;wS^t<6r z<0qcyzZ>2R{#^gbpXa}^FUNnQUp4sgne!Sr3s(oTaBbiWT-A5^ulm)&41OJcGWoTE zv-q?6C-s{EX7o?R^ZYjfmKmHh{lIhmCx4#*#=gw+cWZy1|HeMCz_*V#IrHvMSzNtO z>7RyQTR$ClrZ2kMkMi9K;xzm6=BL1)yZ+hYx%TI-e_?|@dQ2S82hLC3hZir8PhgKIJcAxR9B6Ro`Mg^X9N6nUV3%0mbZGd%LGKAX z`+m_wd!9LTU^iDr?coZkq5VhpQ8_+-|1p;*7+*BPKF;|~_X4R4#|Z?-56w^?m*G=~ zpDz8j|HSdLR{rSkk0S7+2>d7lKZ?MQBJiUK{3rrHiolN|@c)kp6zx*_p!oUCVeLH+ zH~Y2x{YGrd{X3V38iC6TW;@#ev}S);t=Heyu1AOZzxf4!ug}btmZBI0cIT#}*q`;U zt^T3)*q5eudDv*!JzKN%Ukon|DP>?&Y%9xVgK+at_Mg8Quvk&3!wz&cHW>du4EsBM z_Wa`(1VNVnR-R_e`z=Tm(O?c z0LO(7_Kv^O^S9Gn7rHzymiK?r>3_j*+xUM3@o)7J|G_oH|70A0lP#|QAHp*>^(XY_ zf8(xoq05u!vx}+!uKuTDzqk6A9}_BFR{JZ?-_|$Rhc1tc<^5lj_`CZ57xZr|J|R@T z)#zV_ewRmid;Jzu^p~K&)TjQ!x7LR)PcOZSr|I7b{Y!o7FG0V{qw;(Grs@AM@^7%% zU;c%61)7`fkH2nvl|8$@F8_@6asQg~P zY5L31zjX6sL*-q~@wWy2E|2o|`Yook|0mJ^&b*<&{@+Ibb9s8{RXk1qLHJ+2r9b~W zzZ`@vkIL`$o2LI$@PE_h{`_CY@z>?)rC0GZ{fFTH@R|Ple|cqn=<=xiUcYJj4?}dU+xrC0GZ{dYnC zmN)j-{=s+Fhc1uG@AaFe{~6HVd}@FFuMGVzPcOZSr|Ewt^q>D<{plb0l^}F^RDQ4D zH2t5&{@Ek-{@TCrwjgwQdg)a>P5*yf76fMxKQ2_7)r|jzOV@`kkMj2VEvAhB&qn+& zzP3OATWEimr9_m4*kQsujr}2@rRcgy@U7num5YF{tom9e`@DH4nzNzZ}j$m z>Hk>$r`MqWKO+5h{xRGK|3&{@(7*AUz4c!Z{mnJ#U-tBK{;$@s{tvIW^IyH@KXv}= z>>B1jo%t`5e>Lit`KLY5U)H%qBve-atI7OhTlB9e&noio{oeeeJOA>t=zr}#$Nvuc zpUY$V!7Ba~W&WA|2XC|Se;WLce97^D>1~&URIyaI{gD5gPk;W$@&7Zc{|?dLtNm5~ z${N}~Fa8z8zx1p99e+#T#r%`QqoL^aTa@^h4kG?yn-ad})U@BgCYUuO>a z_YT|s2jKsORpeh&+J8y>FT6-{b`|;efjIxV+J6lG7k{mH{=0s4(Ecuui{<^F@c&)b z|1$iKd;xP-{8z;P^J{4TJpaex|LNEDm;Z(DVgAA4$@AI868^u_`u}wCzgPaN|Be5V z|MvW^xQP6Fx7B|T`iC`_a^ipPoE?9b*P#D{Ir(=C@vrxpe|5y)<#A)2_rIQhh6@;f z|J?e22>#br;eYTB>;I-B{g1zY8~JbJUqk$Be_{0>hW_wG@9U4|#HAs9E3HBQha&xU zv~-~*?#qX~VT^`rRy#Evax2*qn!vDw@FlUW_%i{mJHMD=8|Ida0=lAt@{a-$V z>wkwQ&u14ay6rFh?=JDb*Z8OY*MG?V-wpr6U+ORaL$trk7fbm69_#-z;D6*x zj{oPy|A9OEAAj@wKLP*G^x6Jx`0w(#KIZ+e{+si^_gep-1^>@Ju6O)L-euc=MEqZR z$?C_y59hT1Ed1Z}8~u%cb@YFiC(maWOZfjc*8gY2|Hu~*XXXDn@&D`^+CR_#D*V6j z)!y-U{iyw5edzMISl<6d=ls8R;DKiT>u1IPUgMwoU;82Ze-i$e`)vOv{C9cse0DMQ z-yHwnXWRcd@V}|K4C1Wz-}G*q|HF^5^MA#cu0H?UIr%>a{~NFD@BUK<{<}P`k9q$m z{6BB~ufYGvmmL4=;{VDT+TZct%s-g;zu)Q)MSrjSQ~m89g8uMTo5SD(R{tpU*R?Hk z{NMQJw*8BD+3~;A$MNqYar+zpjs6c>{YRlcl9i)>QuJ3vKS=Fo6~|vkf7kW*DdgYM zFZXx;Q7#9e%cG|B`Yp=%L;q_M|1t5uSNp5~!#`yI?}7iz|JvvH3;$i7UVbaC{s;75 z+J7AW2QTY={9BRsKO_DRD$gp~|D$pKb+!MyaR2MfdmkUFjalQL;{2_@4d)*YkBjB~ zUrf3Gw1oJF&*(4yEyUmD$PkqgaAC%m0zTu>Jqy8uHJHf2{v+ zt^Q-8zgPaN{?-pce~aVa-&_61q5rJrQjY%(@xL%)$G=UdSAYEbSWf;ukH^2??4AE^ zJC>dvgf5SZ<^5kw$-ke2{`#-#md{HuKd{(r>!|8e*~*@yoZ*3kY7IsShR>u(xY_ILi-!1^1PXEnZ)M*Vl=|9tkp zXZ1J!2M5vr9G-slcNqVV+W3D0@o)4I|1CrP=ig#Z{A=((cy@pO55Rwyr(gd|U)&r9 zAGiL068;z7vikflufhLQIsU%@{-5i!|Ap}1<>}Y|&iCQ}C#?UUg8#$)`2TbLxBoq! z{|(0flUDx)=s(wo{>B>OzvSr;zJ&Z2{r>>{%YEoSzXtvHdive||6;WN#((cG|BFY1 z(B&FDL#lh5uU`t8ah$ zQ-9LB(B*M`%=^FS9{>Nr`u|z@zwzwq^-u2Z-~XTU{5QwHPh0(;gZ@$<`s-`Z|MQ-H zxBs6;{8#$SzuE_a(B;XCxr=H1&GGLu*8k7L|D`_sKeq<|e<8>Jm&5;oU+u5|b*FgKbJb6C5SW)_)IsSgm z`rm>7#ou4O{*AZy-~Vbk{(lMQ-@%prJ^vLxb6x22xIX6nul~FJ@0Eyu;n(`hzk#tJ zbb0c0x|r(c`A6`18~-mL{v&_rJCV{V(+NyYYWD z;(xKv{I4SZE{_}Iy#F=+B_4k}*8eZT|KJZ-@Bi6f=s*8ol;i(v;D7PASKt5WU-8pe z|K;$oZZ)5xbNmgyVEz9x{6F7E{OYVF!56Ln z|HSrx>+0jbvIhTO;`{$a=>L+{{}t#T>_dNXxc~fnsjq)G^vmZ@aQ+=$-rxCmZDn2P z@~Es{zeVTxQxpIH8U9!M@W1u^{{4Shj{mPi{&n8B`u3-frSTwid3yP+cv1W}*Pmau z?SB#epY6l{Gizx7(>eaX9{z87e}Dd$;lInH{`LA*|IP8|pRE7?0{=UG_}^NC|1Zz+ z{|)f}-1+{lziaT{<>}?O;_APd|NM&e|Euu-^#5Lc{4cJ-|5teaw_a8ZgI~7KA3YWO zpDYztKmS?Y-~aPJpO+WNs{iis|CbQ|U}JyrZy^3IkH)vxuj)6~fB$Ub|F4MuN+0oW z*7_fRUg^c(Tz~zG)&FnMKkx^uZ~wtP{p){~uiqK}e+BVh>9ha0K8Wj2ho@KE6_4VN z`Nx|0|L^dBvJd~mHTeJP9RJV2|H<>Kk3W6sz<-xV{p-levKmTU+FGK(E zANJAyPwQWQ-P7-mf8YCYwEtuJTYnHf1?!(29*u9WUyZ-3|JTs|!yo9we<*2PyDoHj zdg)a>($DL!f4A}fI^tjJBmU(z#QzuL_?z_y=KlYOt^UdNIR81l3jhDou73#S{=fRP zn&+SL?*IQf;(xBs_&3o1T%O359{(Wzk^ePW|1c%~_ga4ui2s8>WdHvS^FL?%od2mm zYhCE_^l&?Z_4yOC|K5Mt_J1z?KUeI1{!thIPmBL$%^Boxug}M$^&j^66Qlp@R{!15 zAIXBCto1jWPFxyN&xJL_-`9@~r^29N&;Rbj^Ut;K^!ESEIs5$eXj<@qZ-e_i`e ztAAGX_iBIDfBMV)AAjTcTm9zw<8NC1Rp_65dGGQ6>;{|vW$}OTYUwkp@c)xh`#bu- zW%Zwg{zz6%{6}VO|8J}z{%QJa;{TlJ?-hU5zw|@U&+)G&{?9{y;T65(zx3C(|D6~8 z!^*RY_^vwSAFHL_S`WHoiulTF}T!=v@R ze%7CB(R)<#^3Be@m=fxeegf>1-x1LfBK8o|BcV;fBcF4cj7PlpC|fz zwZH1`tfBp5{j&c2D8~QqS^s|y`rF!;IsR|@lJ$Q;{4c#~_5J_Tar@i#=hXjwtN-Vr zKa!QBKNS7JKlLB~H2s0-{{_+CEB>l~WDV`_>o?Co{=oYGeCTg#EOY!H{IZRIP4pK} z$UW0ljK80W<8P?l`G@;){dew({q?`bGjaXv@WAX z@BgX##s3$J{$A~``inmV{f&D!hrv4Q|4X3%yv8!e|KKY&{#DUG_?p#^zn_ca-<5yg zMgPBWb${!B%0G+!_Z=RXy{b=9^3V9c-unMi_#gQKDOv45EdICF5P!#ilYi7-llZ?( z^!I9i)qm!Hrr*TB_66wwn(cr8iJIj;=3kfAF#r0xD{b>2{$1_=eYF4ZHT|`J6YcNv zSn0k0s{RiA4<2CK{~NGq%m3*;{;2fQ3;XZ?ulN1u`i}=%{ojQCGkxe^UPJuf;Olqp z|NQ{*U%IBx@gMPbc{Db?el`AFe^?X$zXku>efVFxqyPB-lIOp<|MVam|8GNo>5o?5 z{*!Ca|I40!-hT=nZ1vv{{Y(AmUqk-=il?9JUu&X&1^SzP=>;dive--{4Y=f2(-^kK4CO&%yZT@VHps z|Jwgd{2yZD|2_CW(ue;eYw-WqV*kzY&&6{WsQjsQ<^T{vWXBk7J**&Og-0vun`* z8=iiyKdFiS|APL(KJ>TOp#L|0{m$`cJ@WtJV|&m4sQ>(JApcz+7t8y<=&Zj89%keJ z-|)ZMhyTTW{f|GtmE-@Hu>U~oe1G@)?N<5C6}s!T&eK{@d$+-v5yC z=j#~%&a7hmt6!A)_ce@vZ%!Nk{y)~v1H6&qeB)~$9HtBI0Mqx5CPEY4bkPk25GBO) zrJI&01cC`9?4J@0ghYe@ri*U6=mr9a7EBl21QJ9yM-%NZ{r~QMGwaXm)$Gjp{5)`T zH~#jg_x-*pTO`d-`dgvDaisqEt6J#4VpRX={FfpAB=8Hj>Cbig{A)+~;rI{kfB9nkeTDI#e^F!q zBd$Lc<{5php||0P;x3PGUz0Tcr;z?O=pQoB@9bzk{`yDtkBDjKOFypKNt9&2K<5r|N0m|9RCZE{<*>T4ftgX{tYocAO9a>{Fk3F+kezB{&~#! zic9_%myds;e;()`Fwj3}q5npO{yDM#sJ^3Le}S^%zAYY)Nme`lUtPBU@E4~1&kOwx z1N{vP{Wrz*yIW%ZS%moWfuFroUw?bSeEi=WjY*!sigpN}#B6xL1W^U>r#;&?oU_o><#f1~;rBmJjCf20M$&DNie59t0! z$KK}kuhKsc=AX8e&91*T_QL0Xuo#tQ-pBR(BL8Oy{b~0fr2fpr^oRa?e? zeqGj*!vBi!zjPk?U--KiGaCD!H%IF);`>Vw|F7Uj$5QY|1ixaTKZ)-M{#k;b=D+0k zPK+PA#mC=#sJ}d`rDpZd>nP{7csz#psoJhs|2Y5m3t;`*Q2+chIDX;P7LUiMn7q%G z_n(hJ{VhrP{~P?T%38uNH`CucOyj@ne5yZhHSwA?>aQNFzwrAXmL~q+!H}_S{2!7r8u@=KmjB@UFPv$V|9^lV9ZQk_lHm7PR;*~oREHc{xW?3&9cNlAAI-t^!m$wMEP&uSFAt( z(BJ>O6Xk!D?=MIEKJYzxEJgkY1ixGGBVRS@FNyC6{sn@c=D+0UX93^aeVXSiPx>ze zzfVJd?ql-5B=~LT===X}%>R(T0`V^bKRTAe|El2EE%YbxeWCwi!B6vF@&_iwA3y)j z#QERwqv`WsRBu6JKYacViy70W_=|l0+T8=|zwrMO=@Basp|6=@qh|gbnk=}pxTYUaX`*!;E*SoO! z`)`L_Doj~_q5f4!|5eZ*X;J9UeMb3r_cK5L9Mw`@fBgJ= z`~s+d!|z}BXX5;W#gMz{|Cj#f_eA}zO8#F1{cXAQ>mNhH|4!k5-Jt%4qxvKN1HQi+ z@vj9xI+h~;+1+UV>9fdxB46n57yPvROMY=ee9C_{xc)D$zb}aE?|Fmk?`=Do*Z*zP zsWx13{ujRgGDrSj2mS5mrLX^e4H|z{p}#b&KmU9f<$rwrUxLq{$Ud3Q=ha=q=TGn$ z-lu9qKkXKR`yZ>5{weUk$H4zC3;%CV@ZT5w>*0UoC0=~9^{+1c&+KoWf0h3~V*i_e z+U)+TkNq!?QF+e$r2qW->!rwlpJDzp2Rj~*;S5z<@`L+d{u-43smOnIsr30z9@n?X z{~byB7vt{+k^i*$N9KRnV*XL(|1$XB_LSN9^Pj@~9~L9MN&8d!AI^Vkk^c+9|Nam4 z`TZ9D-x>2ieE;{F#J>^#_k5q8|E|wz{_7CqZ_r@=o1vKh%J9GIg>*jmwut)YF}zRJ zmj1hMP4k>}NdLm{zc54J|K3*f{oh>){`-P|6a0_7#EWk>{}uM6^}oGrKL4rwza0Me zuv%`$=f0NUKab&ks@*Sh5YBEkG);Qxq4{okG7zq2;+Zx;Ti%|FtA&tm;i z`F{ocA2#&Aius4fs66L=(tr2eX`Ztl>2HVs-5=@Kzq_+}{SCzY58r>#LHt|be^F!p zYyX1gpI+gAyQ~?F>mMJ*=ASzB`|A^bQRpul=pZi zoBJQv&-Wh=>aRMV;rsuv|KTyb##C)tf1H06_@$@y>n}Kd4fW4sR7~FIiutGf9`Y~z zUkv%re5}teTIB!Ug#7zr{M{<@pEm!<{8udIA65RZhX2kp`uYPu3y0wP8;c44P3Omz z=O6FG|Ba~r7l;1?2LAV1_aYF^e+Mbv!CeaziQ$CzY_fS1^;&V zA9;xv-%P*zrPzNSY`*_e`F}0^&&_4F|180O9;5P{_euZ5{ZF3!UlRWJ8TdbJ;s5;! z{yQ5J{|@1Q+WaH^?-KPN>6&2u_rw48XZ7nZ;FjS(kBMGOO2d`)AMAfNBmGOk|DI3v z`I%kJ*WU*s|HbnMXMw*d@$ZEH4UNyg>}{p}zbEQ{$YB2YL^1zd2mcF({(Dd3`A-&; zVtdpr{SWtFo0I;f;s3CK{~Z?oKbYkI7R0{`{zqQol{TAyiVIEg0wMVa%=54Ee-ix9 zWX$$o4eY;oOz^sNeq2%ieEqo|{Qm!#&3{#lKOUpQ4t_`SgZ-DYCHe0n|6QNyk3Y{M z|J8*2`(pgxE%Ki>|H=Hf&*J>w0RO9OEH$e??r|Od^BCTzYD@ne?7y6?$^U8a-)ZRk z-)rIjLoxqd%zwVf{{Z~=HTHisG5)%R{|ymvtJSaA^1Ni=Q6zbX7!(Gr}?j6_+M;@*Q_!BeXf}Q zdhq>M!;6`{|EsbSKL3lws66L=k^fu4fAMoC@?SB`e;xVfG4fbxf4U<7!RLSYzb5}z zLjG$8`7c`J|EZ+>cM<<#d(J@7XCk-;J+`%|0BZxwE0i^Uz^4L-wppuhW=*`#r zJJSE)^Ou}G$^TX0f8}fa{8ugfe*VwH7%cA}(V*lMM&lxr5 zzb|6*pC7Ehdl7$C=yzx8>mRnz|7?=}y@~%A^ha70`iF)7A&c{mxPHF>yeF7{=hYv7 zc!^H^8O*;dCipjm%zZ(1>H1I!ji245Kxdi`xQUCuI{-=$9>3?U{oUii# zUie>pNx%LApFNC!9;4%Z@H;Nw|LjZkmxKSsZ}j;c7XH^_{)f+h?L+*>;eYq?>GkI= zO8cLp@INQdSvAK0m$C8B>;FFZUpMr>2>*GEssG{r!z2Bx!~cE*|2+%;pC9!GKa~WDbM>EQa@~+OC{` z+4;|-;P(xg>Cc1DV^mDum&AVz{I=K3_#XH?hBH*{B>um_?=j^2;PV(2llLX@7X;s# zYBvAnUTpPv3}>j?N&G?Z-T#>RUxj`iqhj*DB>ofN4;u3G&p95C;S5zfiT@P%T??6w zKj(0~|AWP-n7l8E|1|jhubcVrg3n_(L)A{=F9d$wu>Q)ZKOUoE^1dYgbKvLxYo_0a zejdXas&*2;27dNEv;3FA=P@cK?@Qvp0Dk6wX8NnBe;&gbs&*3pMeuz?er~lEkH@H( zyf2CWQlNiPGyfZbeip+Ss&*3p74U0sn)zS<-0^sfipl$u_^*PWubc66f5P==7Q-2; zb`t+J@Y@W(f1w0Ek5MssUlRX6;Ja^`>92y%V>mqygWYthR1M* zs_iE1f9F^T*B^>z_aAEQtsak2F?nASe<$cK8SZ}yQ(HV9!x^f!-_1~k3zYh4F-|6Q+Yr%gd#;=3# z97Ftd!S@aL1q=SGF@A9W*%$l{@EZpF9t-|ZoX@U5%!T>4`a84vx4bC6|A@t?YL53s z^#}dVAISgppug{X{rp!guD`z)(;v>i#}a>i@Y{aS=a((~|4)n`%)h?iZvcLe0e{ef z|9Xt?2ld}W`ZomM{ZU_k!-D@tj9(ANzu<2KewP8i{ZRAy=f5$2c>Vo`$zBVJa})53 zKk4i5w&1@R;|KNUA4mS@!EgUrpFi}Fx&C^LAFls@B>tx0_Zsj^7W&_c@x%3B@HYd$ z+tJ^D4_NTuj`73w?|9O`Iru{c{JI7IofzK_>R<4;0Kce zFj-%J+oR_CKaKGN|DBUa|Bm4I8t{u2`ag^D!|^Zp1@K1<_kpM3 zTRa}4Gxr6*r2f7M=@-|3z;{j||DOcEtl@v#V)Xn`M(n>c z@|k^&>px#9o8vi!tzj-19&G1HW%2v;2F1#`6a(MxQ_Gzke$E z{}lX>yu^W;)ql6}-#Ns5|D*E%P3RwH_Y#`%xkexQc?|DUwOwaaza#WNE%c|=ztrDh zasH>$zZCSh?P9k7^-zC2Mx~kexe3?*>)>}TsXzY)$1CCf3yMyl=JcjqF+HOMqy$ycXo@Vu*IT6pFuoxAS_kka-|Ka<8 zdddIig#T&dU;5uWG5_iNkAnAKowLosvqBf(Y~zN^>^>^7LUh7 zuO+47Ce;6X@ISkh+5B6>{L5ofuu(VoQT;i>{}+V+Y4tDt&(321--mwBR6oW)kBJ1P zG^GA;|9ckI-;2=SBgYcrn~lHrC20Kh2>rt{Mx*||QH;M2puf16+5Fc){&`G_?5LaT z$3=(m`uj`JA8AqO_k{kkMgCR#hoQgEF#j1J`(G9l2~25>(f@bS|FY1ZR{v6e(c=1_ zO8ruF~9z#^dIYAW_h#quZa5NF)Gcx&rR_EBlzF8wAuPs2A{`phN?Zr|9_DGL&E>G z@h|;vpOF7_{u%Cn{z?4T!0%rvz5e<{{<{UgZZQ77RgAw+;D0Zxe=o zZRvlg|2)$FALx&?Ah;R7F7yvr_^;CcDfAB;)}Ql#IR9fYD$Tr4>JR2$|9sN_2J{y+ zp8v`(MdN>1tUn_%Mq~c{PLcoRp}(@I+5B6$0PjC#F2KXa}^;dxZJVwRj zePjIZBme&k|06H)%gySqSNNZ^xc;y5|8wXsxn}cU1?vxw;TlzKuHX3|J%8~(p+9Z@ zlltox<4>i31?cw;uRm2^ZuNMKN;B_s6YB48xc^vZ_Y#}spC8Bj7Vkf0F}zRJmi`Cx zpK~GA-<$BiTjTk^_N8h3cZvGT$Y<6x#{c(<@&6_KAKE8<{o%SQ7=Jv5_o>=kzkf05 zuS0*N1;Ney_k{l5#m%ojtMq4~f0)f>&G=kb5%V99;eD#Mn^1pWfj?+C{xkcxcsxeM zGd}x^4~A`0|xc~gQEUdg#Yeh zX6s+(l~#|(aF11OHzEHs!SCERT|Yl=<|JHyXED4_)t31WuYX)d{=WnNBQFu$to~h> z=AW#^{U4S8-$4HW)6$I3b>*R-$M8N?o9lOk{&$7`wECC&YZmpd(*FzS?=q~vGUgv1 zqteX#+=TiY0lzrSZ2yt@3fG@l3}>j?WBk9I>hC@H?`b@LToLu>K1S!iH5sF^{{5&J z|KCFY(7I;#UtQ?uF)GcxkL&lZB>nG0f20M!+^qgbg#Mz?A02ms`d5PfLBsm`M*!-AC@s1_4kuv{H+ZA&f;e4Zwd9sW4K0D8~Vdn z%isU=1Ng{^j|~#8A5;B_?P;JEyjOb zKd--4P=7t_T2eFrDTDO?I^O@yV|bsc?IzU!Pv94(>(^g!d>`u{k5MsspDX!z{?osX z{NEM%_vX~+cUa{At62WS^KZfb2>I_^CVlYCWwWa^z`#)|V|9=Jl+vd{uf5c+{`*o84HxmD2_#b(R7vHS@{dvXrFImh# zD*v4f-hXFU|HYH>{Vyy=8kKO6iXGW0)l3eLY-jE?ug@3_K$uVuRD-$wrL z0so5z{yRsS??1nb{HN=m;r&06|IgunLF4_OeWLz{ME&RFdnPsJzZS*(H+xY38>jDo zxW{?;&trI>sxAGm!hh!u@_$eG-*4c5*24eqll&L_FW`UVC0=~9`DaAugvf0h4} z;eY3{`r|+FH+KNO|A)l{|EBZfiuw=sAO4->|6cIFZs32x!v7x<{C93A{+Gi4wE0K+ zU$&TkRQ|7y=U;|2?!R$=-QVE*w^$7CQ?;f4eE)H7aR2cDv;BYhJ6!)^F)AkSOXAOg z`tw;WHLHJq93SJK$M8N?Tk@S?|8Y0ve{a-ZZY%xz@3E-AA7k|wp8wrN{I5`dWjUAP z#W&MmT9(c~vSR#aTEuJCn15Rp^Y0qie^!?;yZ)6s7v~==M&&v0lm7GiYeW9~4ELXP zod5F}&QP@_KiGfz_mKblApd29{Fg2A|5H-_?hYN1b?N-LV*cm(pA-478Rox+@y}y)*un2eez5=b?<4>BMgB8e z>yQ6Ii~RqbkbhsyKQl%C)7BrE{~n9=UzPtgG5$x`SZ-E-+~XR~KY0xAQ?;f4;r{o2 z^5291zJdP@3;&&E=v9rm|MD;5e*^!0IhW$sn(1#_o5o*R_}`E*8uRZY#r!)r>c4G2 zv-LNBDxN=OF)Gh_pDV^+xc_~S^zR4%8wUQj|Hfkfnc%-K_#^N?@>1cyFZ^#<)W6FA zdEmddoc{O^{4BzM9uxeV&W|hn_h!TSUzPmdAO2@M_4#=V|63FMcOD@Ax5EFl`A7Oc zIE($C7ykDd`tN*=^`FJ)cpv`8LHM6G|49Gyv)KQ2Q2)K`UW$(Y1=K%}QF+e$r2l;X zn?e5Dme=<`I9}#2SpQiJXQ805chk^jlD{0Ha1zNo(+k^jna z>E|B#0?{CA!p{!fAb(o4M9X8POLrTMR9G5%EkF9`pK4gD`*{pT^)KSlgQq2JwBfBxyR&_8EPe|Y~@ z`0q@@^QW_=^Ls@74T$<1lrb9X?_|aJ@4);&WVrvSVE*SZs+!|{vi|t|KNa=w?r(Pf zSHk?mV>mApgEa{^v@_zw-?7Taf=Kmw55b=AWv_f7=u0^Pe*R zxc=T)J$?P*zE)cC`4cRL_o>>hSbur`7YgP-ww5>3&yQP0{&@`VQ?(^O*#G&@lK+Pz z|0RR`_gmzD?xg&S`fC;WPn-W_{_7U&PdxwO{-;LzkAVI`1N}7%{qw~12lro{=ZHTE z`a5P%pa0wrT7Pq*{@W*u7>)UF4#oVp22%pRB)d|MNWQKN9|T zY?rQI9%sbD|9O-Ae}VY3!T-ohK$?xeZsC8I#r&i4za9P$uAr|!@WDL|-@nCTq&I1Q zx?=tbKmYJW(*GOyUo`OFEt=22^CkH&@;|%qKW+R=|GUNaFGN}=SpOF-fc@|8W}iP$ z{vP{(78AXel!o*_`21=ACG!8b@W0={|4s}4=a2axo_~q_Plo@)8s}ewqW*nR|5bze zr%f^cY=He&V=1%iPx-H~{<4@9+oNvjKVN?r3&tOt%bJb<=pbnL!T4h_yie73`S^Q< z@?S*$>jwERTI4^Ilz+jW1No0~i5K5Ye|9}ue`*%0!~c$~+5A_<`5%u_dCvQ! z|KaDq50U@Bga7Tn)aUnE_`krY|KV)K>u(9@FBe=o?Iiwm@J9^! zCFtidDkkqs;x8NM-^0xR2KYRNGgR#){&InSL%w@D^s^WhllLX@v*4F6F+2Y*g3n_( zL)A{={{sA>JaPcU7Q-2;b`pOp@cTVO{bkHQEJnrTeM$UP z!1wnuo10enbBo zfqoXFV)DKu{)XTW8|u$pitCRohBH)c@JHW&CHCKQ;{2m~j`aMO*PG%6#~u;qADK20 zqjCN}=ji!o#CP7K{r_CxN5{hPn~wkWiSI3Ee*Yzrzs?+93wU!2e%kd9NAQQ2ojBj^ z!Sx5Be;)9C>7_z{kKnsc()FM0ocjLH74tvjzfb4^_&k#|NP+Bq?b_Cto}MSp!(|*{QO+{{?9$?|G4wdji+Kv8Gip& zZFzkED2tJ)Nc+WeH*Dd565kj4 zrwV?W|B~;nXzu?gpWgpg-39ZX(7zD)gVIZd{sEys^Ayd09r8U(8uQP*k^hYU5&6F` z_|dTx{PIc*dFXb$KbT*CPvSd*zlh+c`7in1N16K{=X>zq`Iz*#gFn(OYFVLwXd|k> ziqKzvU);0R@PEF@|M8!{vMJ`j{)f!&|K?X{@pw#-7o8vZ{CTMV6VksZ^ha87kf!th z#-zV~pn3jB^;7)?d|&v#nBb@7zeDgF?@gTV?uz_>O8OTEKX+(){+%`H{ZB(8|L!f~ zoJAx5^GEq7{UQG|;x7SybS#DcnN7%l=U8+7Nqk@EUsCYX{FnUF`xEEqPsaKu^e+W| zw}$_{LVs51FIM#Z&&2!>`3>@aY4D?CDg1Zx+io7jPgIq_XU4B@S|fX^k+6B{p~&G<3G+1>;Eg# zzXJGuQj3CL7W};6=a10WKPA#n>#rBQ|ME5BABFpG1%vx*-r;mTB%d_Aw9OLI5Jbx$n$AaH& z!0)x-FB0RI!FNVTe-HRW2Kj|0DR2YvsCEclDY_`&?+d`tTO2)=K? zcaAb2e~ZQV^%)rdf`2^t0|xx81%L54AM=m%9qB&-{DuL)V8LG^#t+87FZh1~Kf9xT z{(CI=OUC&8`G?K${81Nsmaf_ULyrI8&&Ij<{9_iw`&4aLtUuxW^F8_hXXvjP=r3F7 zUn;IY82>*I|3vWH3i|#JTJV>S@q_ut7knT5yaB&q!FOYPp8w6U{td5bw*EW6Yw>uD zD(AdU=0BMKoFB>m|AYP>1O4s4H=lo|#q>MD`(J({{z>3h4ET8q{`43>KMDC4{FA{S zHsE(#@Ry14%iuddlm1h{cX!gS|B?lN**JeP^b7u};Fk>e0~Y+{VtoId;Caj0!}HI- zfIn!!uUqh!kMa5V+X~~)S=(&<`51pZhL15-+fCa42lM|lv*%B9Gh00#qhj*Di2v@= zo<}T^9TmWBg$L@df`3@cRw;z6Jjm zF@7-rIFm^Knc%nYqVNAutNHb(m16v0{_zF>uizI9`0gp@`CmE456Ay(r2j1Ns|Nf| z3;rrGejW3VFZh20f5d=awBWBA|t<#hgC0>8Yge*UW#{9KIB=f7WK{wbcJ&kyF4 z%r~tbkKuESs_iDse;a2o|LtqWui*I)9;0INz9jx8;8)nQEL!_-@OcbpsM<;V&A=bL z-0bScKTpT(${yf2Br1^6B8Swe=U#$-7NcVFz9jy3@W1~Gv+-BE9MAu<7|u|&lla?%-@U(C{=GF@ zJRYNB^1dYg4&av!`TiAn{+z{dhN_*!{}t-b`%mHTlbI-JRJVwRjeM$T)7r^z$gU$5kTU$LI!x^e}693o8fA2A7^?CXFlmllXf;f7#UkYq0*X7RQZ{QfgP|Jn=s``BK#DL;UVp9=Kz82RsMe{%iK z$#nj?qR^lA{Es8_S3Wd9|5xe17VA&LaQ!L%i1**Hm^9t8U+Q;)=l`bA^@m?Te?=qz zL*n_bu1DzlOV^QN%xFCSGBtYsfS$hy`3n($CGewT;e|HKzqkDr{uhn;AM%$Z{`%lY$AY8H*8i&DcM86=UuXSK;`>7X27;gFzvOp( zYCiwP`Qh`oLjQ)~yE~>|e{~P1@n01Bhkvi{|6(!!L;h0a|3=_P$5QxTypG0S)x!TI zz9aY>3x1malHWHA_+kAmP5L(hzw7Aq`KK=YAC~@qsK5VOJm!DMcZr`5^vh!@{Ldai z`S*@DufHU|FZ6FJ_-X!2e#b1}hxI4)Zw9_|OuGMNp}$w~`(=#A{JTWV|Bye8{NEh> z=vWH>hXuc}zxn;=B)%i~TL^xd|B_#^@ITIXg8k2Q(!VA6gEP|i|K5>Qe?x*__=EoZ zvt-QwkiQJ^w*o&pmcsw4;Ac-Tum2>zFZ6FM_-X!2zB3^{tycW{$E^$C{O1s}>u
5c-lu9O@ec$)&yLk>{pZJRbhLOphWDx3 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%0D0R8@}xLZTbHd`8(U&?f**1pEZr& zC86QQ=YLn@{Qn!u|5Nav*&})Wmm>c|k$*qd82Hb%R*iJpSP#^{Qqu?|A6nTsr)|+eq&n#zjloBKbB(t z6TfZzy}AJA-*@fCpLaUme@Yts+D2b)H2!LLWBrf(KL`KSI7@7$Q~f75QqLccNA=JB z&^-T5oB6l-ziB4+XRq0P{*ki{KL3FYv$kJJ8LWc^WZnOCGba&RsP3Q z_;2Nh<1gaB0RDLFMd0@@r2O|r{`>Ya_rH0I|A6nTqx`=Jeq&n#-#sRsDw||9-47@V{k?|A6nTr~JPPeq&n#zmQSs)tQd`IWG5ABr+VL|-^2A{u78fHjs9sjnO*#G?AZv0pFnBlQTVsf93e*pZK zUbo|ChH(5z8fHjs9sfY^drq*+KMy`@BqsOi_y>bOWy#Ot`YUUgA+>eYg7zIU=6zY0EUBqsOi_!Bt) zAIsbAe~Sxtd8}cE)YkEjhX0&z=Rb2c-hVSt?lZcTLkqd4Kt*+j(G&sr@BGXz z|2p`rVTRP!@jplYqjTAfzcTV?jl|?W9sgO(|B)T->hEQ7|BE!tklH%_^WYEdWXG>v zg5y8ZNKEe2@n6Vb|MQAn{*{Luk2TDY+B$v}&tD9mZ8!d$t7mwuk(k`4}=f5gDi+*9=D_jab4%g*D_oPnSEuX~~zLs>HuHd_i z|Gvam&~AJ!*6j^`yXE>zuF>oGBhBNe=Bv$?tMUID=AW~R-TbRy{b5a$Ah#O)c~I-E z=k+F^IoR10{0&egl`oO?w)1+mHxG6;x8(a9wdC(NJ=YES z&YSSsKd<-8&kuIC0^hll{7d!6k5*gxO}taQ#LPe6e>)!6U-}%&`tRK3v4(yHvFS$R zuk?i)>t`%`h_fyH53hjdFXQ?r_@BI@C4VA%`xyGi`17|^<8S+bkNIcBhsNEwg`aEw z0yWe813u~>jQ^d%59Yrqzaa1nml^usQq8sCH-8iJ-!*vts_7ET z*8zVkHUD;p|B9jipk|d;|2`3;XL#wAX-!wN{+)>9zk=oQU*;TK{~*mYi13e?ANt=$ z`QH=%r!4$uHfb4ueiN8a;s2z-|A^iGuX?BBv8MSO$Sqfs|H@$Nw4lQ#zS$yZM*D1@oUYN!++!$1lQv{Uf{li}25yc>77;b^KY_|NBSSt^ef*x;)k- zapQg+{~Y*tF0;$OiqC&#O}zc2?>c@D{MRl0SC{PaSd+w!`*r+t;lKA|yZYBqf7Zm? zPx`Lop9g-yGJofMod1$0i5vIp_~(OPqivbY{~Y+NiMOBhUB~||_?~6{9{8+D;>P_t z{)OOYOP1pweAdLBTe|L7q^_M5q_4n~P;2(egHR<|$`MO2DVEdDo+FyU)M!5cd z5&REY`me)3Ym$7&{jTQtZ%rJ34!>!ae{BWae<4l0{iN?Y{>AV=Vd+2fTkQWylf;et z!EZeO>POH2P2%~#vG`d+{9vc~HyJ(uSBjoLtj8LI=MT4PK7ZKu{NE+;pSi*=|LWiH z{#(+-{*t~o{4b8{uPdnMA4}N(+r0mKVz%D@O!@y%@n1v!jVy)yy+zdXm$?+rUsC>I z{r%wi&%G4?b?|$Cot%Fq;*Ur5_hOAf{riRbe~#ndikHmi+EyNMJl1fZ)DFxC|M@-5 z>)+0D>Rv>kbLUj;;VqW(Dm|(_FwfGSyU>bW&|gHmw3K>%;-+Oh_fd7dy>P^GUg?`^ zoB1P`^ZelRHSv|X8SCo2N;}$(?L_l0$ls6he*^h9vV^A7{Bvij`VXe4e=~pe{=@M7 z_h8Mye-(`Xo_XOb;r=UrH2kWx-hVNuf2?&Q|G8_C;ofTey$S!-cr4)uJNX}p{MV!L z*L_wrW(@dS3*#?~^?&3LyXz0R6>W?QcR z8~BfZFPHQGvEsjl{2N)~2Rr58yQms}#T4UD%Ku*Y@4wsJf8eEZ9{&C#X@b{GzTC*a zH;VbUkMjRE{O97agpG9aUyA(q*XMgDyY*qwiruf+4Wq%p}p_!&3K-&qiA;=am%9sbL4miU=Y`42_@b5Z{8 zZ_MZaw$1$8{QnL9t9RPX|0?{mCh%tR<+A_%l>c|(zu^TN>EwUx6m|SvOHqHx|NZcv zaqaxq;h!}o-h-cUqvP+|@3H>>RQZ1o{)=%f@iU$L2m0V^FslD}tTC8>+X?l50RDYT z|F!?%`VVQ;ZL+6V z&h@DO{>uLc@b47O*Z*Qv|GrpbQ2*_P`gbjY=P&}$(I||KlFcq z^8X?HH@sjYN%bF#{5N>B>Hi<7|HM&te}BD-`m?6-yCgK+$iI)jf94#h{C@=hg}9c` zC;6{M{zqetf&U$Z`u`LDjsE@)dCS*u{z0GFOI>2qW&Z~${~yDD!wb|&{=2_xfBYx; z{}=q5{QXllmbnVo-{^0qa-Y<8BmZu&{vWLTPr-jJt|i1t{)<~YYZ<_x@l>blQzv0Ee|3HfROaA{8jDJi2Mfhh8dz9J@|H0?4->a@a zehUBmEOTQ0Q|$kCY}8+U{$?ro{Ii0}|1JcG|NNVWkbnM8 zyYZLB^WUtIGUq_{r3?3&x7L+cOkpuuM&sQ$qf%;XbJiemMTZ{0~?8e~J7D4f4+{spg-bV*KqX* zz2Nirj#U1gxpDk$;D2a&HUFkkjK3cW{&&UukLu4Y>BYZi()t_xT>Uq=|4EuyoAlk) zjK9Z_|CnX|xohzLOVT89<9_hN@#o)){Et%k&p`eY2KkRg<8L&@`1_HN|KsrQJz_Wi zeE4Tg>@Vqi?7tLz{@KyWe;52`&Q0czuB7IlyQ%&0=U#&UC*Xg?(ti#9S(D^D?vMRD zKKvh}{LcaZ{RaN~R#yJ2DeCVv{j2@&J-Gfjr1*1!?;G$(B7T30{P%9~)$vd6R2+Z5 zqK?0wm;>YQwdD6-RUcF9PyKTH>kr=(?*BfC`sXa4fAp`N;jt#JZ_@X;{lCmB^ZClDgNBx*A4iEh+jxi|9zVLw*CK8$lqlCbGDh6 zasQQmXYP~QasJ`@d%W^L5Bz)QC9gk|k$?AG`|5 zjl|?W9sfG;%a;5)_^e@u)YkE@2Y=F%?>*pntdW@9r{kBwAHT{j|1$WjVTRP!@oxdY z?`k`KeFXPkNh2}2PsjfQ_%+&=$@q6K#Pwg&FhgqV__uBibo@KP_ebsOUx$CzFhgpCAD({&=fBPg>iDx8$DdV$;8TBLAN@`EAGFe@6b5Gm`ytj=76)|ARE#C$;1J!}HH!<$r$oFB|wT zNB#>b@*foZf4&&@KbFtm7nZ>1KafW9%zd%{;QZJ5rSiW3{JXzR&Og(u>OYyH{`)um zH?RMlq4*1eKVZNwMEsEy`5(~aw~fDhF#fzR?2doS7=NtcjHPy*e|Y^b^1l%L7Y+PZ zBmbGr?63bFDEPk@{zrbFTz~deg@4v?pVW^1hwI;&s{RYZ|G0tw>}t{alcN3y3I6{+ z6XSn*JOBCbzGpAAhC%XW+l@f@FR%^52)D{s#;G|BCu|Uzf~hA3mNx zVGZ|5?bv^?{`$XG{uhD&f`R|;)m8ny6#fqp{5$ykovF+1{JZ%42i8cQxexx^)}Oy2 z{~^o#YsjB9%#hmPhwE>!{`+UC{AVKnQG@*bDF5LU`5)TMzq$Sw6@O9io%fU1->HZ{ znPUDIn*6r>A3*-&j@|V~56@q)M#`M~;{3z)Kk~mA{MQWfFRY=)e>p||hc*3&`G@Q8 z*((3V!S5MK9{-aOe&F%NUM+pA^f$=wReRBTnEAxWmv4;DkcI-b`f1Puc|5@-~G4MYT`R`5P|470A zKjD9BKfCkaBK)&P^2~j)|6u)d&Qtz-;D5@%f8RG${qrgOAJz2VT>s8j{3XH9UYK0} za>O4>!9Ti%AFe+Ue<|<>4fq4!RQ^jT_{X&HgZ0Pxt@6J#_$34WSi~Ps!5?b!+t#0d z&&2vq$8sjuf66%iV-1fnsU45MT5$Xq`CkV9GZ!V-Kf9*Nzn;SXv4a09=3n84WIp@y zUc%>(k%s%EcI-b`fBXwn{g;LRegprN$bZik_UrF)g8zr$zeZk6>R-V9Z`Mejxi9t~ ztUvyU^1mGX`v(5|va0^M6#kEI`fsd1{)LLaJor5yBp-j3BmQ6t{s~Qf+x&Y3`S;vt zH~zAt`22m+aK=(Q&Of~Vc#-n&!vB~-{(f}*xtPNLiGu$};XhAajK&}QvqtjFeX;*= z{k>TEUjhE>2L20csqr_K!v9Hv|Hp#Q|M=4G_^)yRo_`|^dz9L-|5|YTcZu@9BK-GW zoIL)jk^fo>|0fInA4mPCEbH(79`_$eBYEb&*nhD8I+rT{E5W~K;J<%uRsZfS?blyl z@INn(|J}Ro&cE{b{1?`+N2v|}ZR^hy$lt~L%440${L3SM*2LPR?=GExJC~{aS4RFL z2Kg7G{QF1j?|+@r%)hz*U#|G8fL}G>*CT#5Mg4!))`LiY|_qadK zKV1Jy%Kz8kzx$Hp`JZ1$jsJlZ{!bPBKL!8gza;Zx55f2Bq~o!M`=quTjlXdHze4$6 z75;Mu{>LN#eHYq~ztfuj!|_)O*54}?zZd)=1AcB@mA{`N|I?fNw(<82@*iHuZv0iQ z!~2g&BW2EgasI*j>qq`qga5LD|FOvbXbS&77yK`P_1B?i2~5^M?~EB9YuKaIj{R2x z|G!i9UmgBSA0{7vX4g~o@4d)={QW}kKZxUxiCK2XAH^-YJl05_xi9t~Jb&q5rTnh} z|C0vwuSEWbQurTk`VZ${c>aI2;(r}{_tNC`XM9_ge>KJU`(+D1Tz{@n{BMBYZ}9nh zz1u1NR0{qXE&N(={vGkZ34YPQe<|X-TiGA~oY}$;=D%~T^1mkdJ%3NmKfAs1-=Bj2 zs}_DZ{~~@C{9yzBXvD9j`1>EfZt~mK-$!TS{)3zBpXX6&0Pp`M4fjcH%)d7N1m^$L z0e160dm!%rkVay1ANY;qFK1NMe=X#n{YSF@z8zHk3n}VXo zkEG!LriCBQ|LYWg9q{|~MYq(EpgWov*@}vCMMgII*s-5`5QT~%D@;|$of5;ElzZ+Ej z*8_jdp#D91RsT%C{rY=Oli!yAOw_;kNW1y(u8!yLNF!y=eR2Nb`WyLQAO7nG{wtCH z{uH18cy7~wWBu`ORQZ1k{N8^VtUo)d{QFYme_jheJpZ~$@%zB{4EQ4v-%G(izl9&H zKYqmD0Q?aHer6}-e>esIw=Mi&{QKL??FFCz_HFRH|DBwF&(4ZJk%B+c!Vkya%_{$m zz|R@*M``C9wVs9c8!vRIvWAM)J&kvHx)X-J<+&0{>+L|K-^K*7ob~#ZCX=`V-7Q z=l>M{JK#?m@OyVv`S+&aU(&*_1;_spKL@`1pXBjZium~y{7YN-!Tfjrp!|Oq`~d^L zvzziil!AX*3qPFy5r0$giw1lz;+InJFK^+8??1d%`QHruaRYuO;*Y1`msE>wd468&c8pZ{I`JrJ_G;d z$bV)h`}u#R;Qwj(&#su9Kl>`|j?dpF4fjdy*nbW4-?>fs-xB@{2L5{oRQ>x>`2Stg zfAjeFcE#Tc{80mbDdKx6_*XUgZR2kl?0*W!*zJGHYjk<6kuv8#VXt>ZrjzRCMfc)J5Nr*na=>mhk?+H{svp`78F7xe=egO3zGipVW3W`M(9e$@5RV-8}fL;XbLY<9`k3 zU&BLo>wnF~-=8Lp#N<95{~h=@dH#gAQ&I5+=R~`pnK-rC$(Ko z{Z|dHKU0>SuD|hiGb`ZwGikU_YU}t%E{yeWSG(iS!WUg0Ya}N3>GiW+Y^WymLm*&U6#ck}@zspuqzg5iV z&!77U{!Q-xv9I#Yc>aa%nQ@=g*6~-z`1fx%_aAJ(jPcJJiOGGgX8ujVzsdbS-cG)Z z=TE*O|5w5PDg2w_b{$!2BHW7xKC>9_|L(=Td|w}9{jULVsf93|0VpJT>t0oWd9HEf2Df{+$Xhl{2KiCu5Y*h zt;0WSBqsOi_%rbNlP32ccsn)tXASpBZ5{u4_#d#We-7tAtdW@9r{j0QzsdFQY1{b& z&VT8eHTOwv9sdRRpLoLV{ZA$MXN|<rZy2 zE{`=5llyf1my!Q?pB>+Q0`I>f4Kt*+jz2f@H@W`L+sz|?)^MNHb~VSJuLS-r$6w)1 zeEt<_BqsOi_^*QR++(-@t%1)PW=L%vzZ?0RTz}{7=I+DwXS!z2eNtP;pM?MXhIZpG zkMlp)NKEe2@#lqqlk5M}w)00k|MnI6e+~ZoEbCu}f7bBtCbf0`=Y#+3AMM6p3I16l zF}Y92pC9}|OMd1y{QXnXFhgqV_zML7@3Qlst2-WRBqsOi_-~^AHOuKUL(<8i~n$I{sVm-*c~B{uNyRU=1^*wvN9r{8x{$JN_%)j{8rfk(k`4 zb6lzyCJ7{4-;?{!JQ*$$dJ09scu{^)JIeYnUOmb^Jx( z-zP678fHjs9sfP#KWv$Q<`%sFhBOkB`*i$8;eX6B z|J)t8|4bTYNNpXz569omNp{!2yp_8=)<{h5)A8R&{uRp7Wc+!^pEb;o+B*JX$iGfm zn()iWpEVMb`*i#d;J=o$TmLdR|78s`q_&Q~0qS3{tbY;pXN|<<eBibo^zI zf7vqs>|D71OB!ZKZ5@AOtpAy#?eZ_;?_aS-Vsf93zbu~rt64t(SHtsvtYL=K*73K3 zfA42@$3OM2Vf`nK#N<95zaRX8JM89P1=oLB!wjiixCX~+#P-9o3e9^UwePY`dE4pW7k-zT52TUtAT>|B=Sj1NhcCV*U~!fe|J~U{|={k{`P9&`P*~g-@VVye_;pIoirBy+n&E&7VBTO$L{#IelL!H zNMpfoy#LI3Q9b{>HS+JNCeJ@F%DJ@4vzGpD(HUZ-e^h4eCD;)qf&I{jU}3 z{{`~z|7-I2V~-`=|6vXHNo`lN{wc1W8UoolwJnH%D-W2u!y-Ww-u0 zxc|W#vM4s;zpef&ApiQ3cKj0ZXN?G@PVm+KFUbFOmH+n0f65^Lsc8P?Q{;c0kpFF% zf0Lfw{;#kv)*sT4MX?G0ZTZhY{l_flUlI5JSR+EIQ^#Ks^&hvKe^u0H)}@t@t=&c7Sn|0RuRnmXaX zE&r8~zw;-{M|~f1{B9oXEfT zZ+8Ck$e%T$Y3hXkw)|H?{)0!^%|E{z&mWM65MmSjF#p`y82@#Z|BlF?|CW5G{D-3a z>nZZTNyvXk?0@pN+wFg9XFDEiMAOs>|84oth5CDz^{?Rh1J)2iZ0h)5L;d@nwHtqh zzvB5D(uh#%1V5~Q3H5j0Q}y2o_4ny-xp%7nL{$HtUF?tlZx-r5H}bD+a z$?M-#lz%Zr{{JWBKZgB}KV`T7sp9;HHIirUga5Yt=SBV9?d|ffqyDU6hSUaMjeq?8 zO@B(|zZ>%R4DuiNky?MoQsn;!A^-W{ziK)Db9nxUHIirUga5Yt*TDGizjsM5{yCHN z-<==V|40*SlfJw0`X7A$&;L~Z-$(u<2Kkqw{A(%lzg5V8e&nCKKY9MKw<7Xq4fjcH z_;1Vq>&U<7IXiygZ+QNaG!m2hzz@fN?H;WEpQ`)^kbn21$^6ME|L$GwkAMCsOA8Ecp!wRQY&qW*ar%O>lOw*a0$C5^=7KJdfwAKd?RzEJi5 z0qQ?wQ2%07e?LY2Zx`yn5b`fu=3hkqtYME*8~)qszhs(jr8fMx<-aiMpUvB?e>K#f zH4>Bibo?ypU%k(6|DQ$uS;Gve4SraEXI~tD%~18<6ZM}osK0x-s(&>_{qGR!pF#eU zmh&(7rx_k=B+uLj|84bO3;B2d)h_?c#d!ZQX_z6k!Efe2hsytl$baCm-^@q5egK`cFmmcXzWt{<~AC|4iiX?`XIF)iM8ABYEaN_;0KK zI>_IreVIxAm7N`rHO!FO;5YN1N9Dg4@*g+If8YqU{`IHG|1Kf_MUnr2?fAbF&;OA| z^2~kk-vfZkbmFf$@9M&dqU`j1)8zbfj_8i~n$;D`0kZHMFk z`BeS)M*Ry0_0Jxu=HEz)`u|y||Ki9$x3k^)mq-4rVUJQ9{@d!mKJw50H+lT?cI(KW zHQXn)!4LEIPDTC;sQiD7{6`J)uSEG*Qsn;^A^#jpUj8;J>Z@8zBF><@)a-f7UQVYJ;!x51xO?sQmXu{&|D^Yf=7v zDe}Kp$bUolFVR>s+5Z;dpEZ(a?u-3bg8Q#CmH++Vf7rnPz|m^`@lyD|uf>1u#pONU znJc{h^9y|bqq9@;-@l7}bRRj(i`(J%a70aerR^W93ZMVD6vltSa{Z|~}IR4#pQU66%{eO!3R}AVu7S(?^Mg9NUQh)yZ z&83n5@NRbg>sWtS(`K~83-I5z{%nN&CoJb*4fBsR9dKBibo_T`V*OcZc`yDsllo`(#QH;;Sex|S)vQ0;!GGmVyZkfj zba|{v;>P_t{w7%eGBrECH;(t;k|y4M(svzyIjlcN2?gL>h_7eLDVkk^czo%T4(1j(GlwG|Z6NI{pgqpE3CRd%WHJvZz04xKC>9 z_$z|%zHT@EN(IMbjl|?W9shg5{QJG#`jfc_^(PH8q_&Q~IqL5{Z|A@8cRYVf8i~n$ zI{wPYzi63%{xHX54Kt*+j=u`{B8|BX(T51>G-Q6f9DN5|K9R5Jk~HnYU}vD!TcY!^PjKc`9IP~OzzY1 zcf$N1yv}a^mv_eXAJQ;GYU}vhVEhfySTb4veT+ZWNKEe2@xPnF{NKy`{5#lQ;d0D> z(lA46yPD&l)lvUG%kh_Yas7!j5|jIM{58NY(6&tSFM-b*W=L%ve|yxw@|fNIf9Idr z|Byyva-WX>4fwBF`p>O^&%YrJGo-eTzbocn=6bvN=dIi2u|{HYpN^kL{sS-Ct$%sU zf7UQVYU}uahyT(ScK*wUba||inB1r1Z;$$yuD4r%bF1O}k2K7X+B*JP;E(>^j$c|4 z`#;i1OzzY1cSilEp0S&MHOxQOFhgqV`0K!b_AR^dmt6_>-$)}dxlhMm7yLommdW~; zdkFhK(lA46>-Ym0|3h^<|79G1vqoZapN_v9>OXEf|Nn*eKa++TQd`GgANfyEmL~ZZ zkUwiACim(1-vU2>o!$H^u8i|<(lA46>-f7P|GpRO=3j0C`+w3%OzzY1H-P{Cx9!GX zb`@NIBn>m9wvPV;_%FO<$M@l%H4>Bibo>qB-zP67t93tStBvI4}5k1Gr0e=xVrx{ zi2FZN2KRrm$Ef>%kngeFUe&77jXZHHB#o> z7w2EP6!+gF{|CbVgn|FT$bWAN|Km;n&HMjrsr(NDKl5aA{l_DIJ_Y~pE&S5G`22^p z75`xH`wjS+V^#f!QtE&LMre#9?;UpL_Q9H;WHr{Mp)$#0u~Im|!L_VZsb|5(FwOlrsT&k3HtTUX_O z82tA>l|257k^i3E?bo0G2>!Rh^{2|-cKhGb6^_Rm$usxG{wrnpUr+fz9R586{}Yk_ z!4&=YrQko*!mohu zd`tO13jCY_e>~#XQt%&c;rlnif5bl;{JwpX&wnx}sQkNsU_bsJY4Y3V|7Mu~Rm=JB zzvOtV;V~|?x&|7g>HIR5bmY&~ZK#UBE{{$cX? z8;kPyQ}7>a;pc+mkBEOP_})j!{OpOU{-Y`QkGJr{&wtoZ`9BW)ssX$ z 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 jE#sEzULN9-=nQo`-7rsPNO`7iJr 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ℜQI9pL{$skH15-EYG0*xQ@T@kF9_5 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 - - -#define BUS_TO_PHYS(x) ((x)&~0xC0000000) - -dma::dma(int Channel,uint32_t CBSize,uint32_t UserMemSize) // Fixme! Need to check to be 256 Aligned for UserMem -{ - fprintf(stderr,"Channel %d CBSize %d UsermemSize %d\n",Channel,CBSize,UserMemSize); - - channel=Channel; - mbox.handle = mbox_open(); - if (mbox.handle < 0) - { - fprintf(stderr,"Failed to open mailbox\n"); - - } - cbsize=CBSize; - usermemsize=UserMemSize; - - GetRpiInfo(); // Fill mem_flag and dram_phys_base - uint32_t MemoryRequired=CBSize*sizeof(dma_cb_t)+UserMemSize*sizeof(uint32_t); - int NumPages=(MemoryRequired/PAGE_SIZE)+1; - fprintf(stderr,"%d Size NUM PAGES %d PAGE_SIZE %d\n",MemoryRequired,NumPages,PAGE_SIZE); - mbox.mem_ref = mem_alloc(mbox.handle, NumPages* PAGE_SIZE, PAGE_SIZE, mem_flag); - /* TODO: How do we know that succeeded? */ - //fprintf(stderr,"mem_ref %x\n", mbox.mem_ref); - mbox.bus_addr = mem_lock(mbox.handle, mbox.mem_ref); - //fprintf(stderr,"bus_addr = %x\n", mbox.bus_addr); - mbox.virt_addr = (uint8_t *)mapmem(BUS_TO_PHYS(mbox.bus_addr), NumPages* PAGE_SIZE); - //fprintf(stderr,"virt_addr %p\n", mbox.virt_addr); - virtbase = (uint8_t *)((uint32_t *)mbox.virt_addr); - //fprintf(stderr,"virtbase %p\n", virtbase); - cbarray = (dma_cb_t *)virtbase; // We place DMA Control Blocks (CB) at beginning of virtual memory - //fprintf(stderr,"cbarray %p\n", cbarray); - usermem= (unsigned int *)(virtbase+CBSize*sizeof(dma_cb_t)); // user memory is placed after - //fprintf(stderr,"usermem %p\n", usermem); - - dma_reg.gpioreg[DMA_CS+channel*0x40] = BCM2708_DMA_RESET|DMA_CS_INT; // Remove int flag - usleep(100); - dma_reg.gpioreg[DMA_CONBLK_AD+channel*0x40]=mem_virt_to_phys((void*)cbarray ); // reset to beginning -} - -void dma::GetRpiInfo() -{ - RASPBERRY_PI_INFO_T info; - if (getRaspberryPiInformation(&info) > 0) - { - if(info.peripheralBase==RPI_BROADCOM_2835_PERIPHERAL_BASE) - { - - dram_phys_base = 0x40000000; - mem_flag = MEM_FLAG_L1_NONALLOCATING|MEM_FLAG_HINT_PERMALOCK|MEM_FLAG_NO_INIT;//0x0c; - } - - if((info.peripheralBase==RPI_BROADCOM_2836_PERIPHERAL_BASE)||(info.peripheralBase==RPI_BROADCOM_2837_PERIPHERAL_BASE)) - { - - dram_phys_base = 0xc0000000; - mem_flag = MEM_FLAG_L1_NONALLOCATING/*MEM_FLAG_DIRECT*/|MEM_FLAG_HINT_PERMALOCK|MEM_FLAG_NO_INIT;//0x04; - } - } - else - { - fprintf(stderr,"Unknown Raspberry architecture\n"); - } -} - -dma::~dma() -{ - /* - unmapmem(mbox.virt_addr, NumPages * PAGE_SIZE); - */ - mem_unlock(mbox.handle, mbox.mem_ref); - - mem_free(mbox.handle, mbox.mem_ref); -} - -uint32_t dma::mem_virt_to_phys(volatile void *virt) -{ - //MBOX METHOD - uint32_t offset = (uint8_t *)virt - mbox.virt_addr; - return mbox.bus_addr + offset; -} - -uint32_t dma::mem_phys_to_virt(volatile uint32_t phys) -{ - //MBOX METHOD - uint32_t offset=phys-mbox.bus_addr; - uint32_t result=(uint32_t)((uint8_t *)mbox.virt_addr+offset); - //printf("MemtoVirt:Offset=%lx phys=%lx -> %lx\n",offset,phys,result); - return result; -} - -int dma::start() -{ - dma_reg.gpioreg[DMA_CS+channel*0x40] = BCM2708_DMA_RESET; - usleep(100); - dma_reg.gpioreg[DMA_CONBLK_AD+channel*0x40]=mem_virt_to_phys((void*)cbarray ); // reset to beginning - dma_reg.gpioreg[DMA_DEBUG+channel*0x40] = 7; // clear debug error flags - usleep(100); - dma_reg.gpioreg[DMA_CS+channel*0x40] = DMA_CS_PRIORITY(15) | DMA_CS_PANIC_PRIORITY(15) | DMA_CS_DISDEBUG |DMA_CS_ACTIVE; - return 0; -} - -int dma::stop() -{ - dma_reg.gpioreg[DMA_CS+channel*0x40] = BCM2708_DMA_RESET; - usleep(1000); - dma_reg.gpioreg[DMA_CS+channel*0x40] = BCM2708_DMA_INT | BCM2708_DMA_END; - usleep(100); - dma_reg.gpioreg[DMA_CONBLK_AD+channel*0x40]=mem_virt_to_phys((void *)cbarray ); - usleep(100); - dma_reg.gpioreg[DMA_DEBUG+channel*0x40] = 7; // clear debug error flags - usleep(100); - return 0; -} - -int dma::getcbposition() -{ - volatile uint32_t dmacb=(uint32_t)(dma_reg.gpioreg[DMA_CONBLK_AD+channel*0x40]); - //fprintf(stderr,"cb=%x\n",dmacb); - if(dmacb>0) - return mem_phys_to_virt(dmacb)-(uint32_t)virtbase; - else - return -1; - // dma_reg.gpioreg[DMA_CONBLK_AD+channel*0x40]-mem_virt_to_phys((void *)cbarray ); -} - -bool dma::isrunning() -{ - return ((dma_reg.gpioreg[DMA_CS+channel*0x40]&DMA_CS_ACTIVE)>0); -} - -bool dma::isunderflow() -{ - //if((dma_reg.gpioreg[DMA_CS+channel*0x40]&DMA_CS_INT)>0) fprintf(stderr,"Status:%x\n",dma_reg.gpioreg[DMA_CS+channel*0x40]); - return ((dma_reg.gpioreg[DMA_CS+channel*0x40]&DMA_CS_INT)>0); -} - -//**************************************** BUFFER DMA ******************************************************** -bufferdma::bufferdma(int Channel,uint32_t tbuffersize,uint32_t tcbbysample,uint32_t tregisterbysample):dma(Channel,tbuffersize*tcbbysample,tbuffersize*tregisterbysample) -{ - buffersize=tbuffersize; - cbbysample=tcbbysample; - registerbysample=tregisterbysample; - fprintf(stderr,"BufferSize %d , cb %d user %d\n",buffersize,buffersize*cbbysample,buffersize*registerbysample); - - - - current_sample=0; - last_sample=0; - sample_available=buffersize; - - sampletab=usermem; -} - -void bufferdma::SetDmaAlgo() -{ -} - - - -int bufferdma::GetBufferAvailable() -{ - int diffsample=0; - if(Started) - { - int CurrenCbPos=getcbposition(); - if(CurrenCbPos!=-1) - { - current_sample=CurrenCbPos/(sizeof(dma_cb_t)*cbbysample); - } - else - { - fprintf(stderr,"DMA WEIRD STATE\n"); - current_sample=0; - } - //fprintf(stderr,"CurrentCB=%d\n",current_sample); - diffsample=current_sample-last_sample; - if(diffsample<0) diffsample+=buffersize; - - //fprintf(stderr,"cur %d last %d diff%d\n",current_sample,last_sample,diffsample); - } - else - { - //last_sample=buffersize-1; - diffsample=buffersize; - current_sample=0; - //fprintf(stderr,"Warning DMA stopped \n"); - //fprintf(stderr,"S:cur %d last %d diff%d\n",current_sample,last_sample,diffsample); - } - - /* - if(isunderflow()) - { - fprintf(stderr,"cur %d last %d \n",current_sample,last_sample); - fprintf(stderr,"Underflow\n"); - }*/ - - return diffsample; - -} - -int bufferdma::GetUserMemIndex() -{ - - int IndexAvailable=-1; - //fprintf(stderr,"Avail=%d\n",GetBufferAvailable()); - if(GetBufferAvailable()) - { - IndexAvailable=last_sample+1; - if(IndexAvailable>=(int)buffersize) IndexAvailable=0; - } - return IndexAvailable; -} - -int bufferdma::PushSample(int Index) -{ - if(Index<0) return -1; // No buffer available - - /* - dma_cb_t *cbp; - cbp=&cbarray[last_sample*cbbysample+cbbysample-1]; - cbp->info=cbp->info&(~BCM2708_DMA_SET_INT); - */ - - - last_sample=Index; - /* - cbp=&cbarray[Index*cbbysample+cbbysample-1]; - cbp->info=cbp->info|(BCM2708_DMA_SET_INT); - */ - if(Started==false) - { - if(last_sample>buffersize/4) - { - start(); // 1/4 Fill buffer before starting DMA - Started=true; - } - - - } - return 0; - -} diff --git a/src/dma.h b/src/dma.h deleted file mode 100644 index 78b715b..0000000 --- a/src/dma.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef DEF_DMA -#define DEF_DMA -#include "stdint.h" -#include "gpio.h" - -// ---- Memory allocating defines -// https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface -#define MEM_FLAG_DISCARDABLE (1 << 0) /* can be resized to 0 at any time. Use for cached data */ -#define MEM_FLAG_NORMAL (0 << 2) /* normal allocating alias. Don't use from ARM */ -#define MEM_FLAG_DIRECT (1 << 2) /* 0xC alias uncached */ -#define MEM_FLAG_COHERENT (2 << 2) /* 0x8 alias. Non-allocating in L2 but coherent */ -#define MEM_FLAG_L1_NONALLOCATING (MEM_FLAG_DIRECT | MEM_FLAG_COHERENT) /* Allocating in L2 */ -#define MEM_FLAG_ZERO ( 1 << 4) /* initialise buffer to all zeros */ -#define MEM_FLAG_NO_INIT ( 1 << 5) /* don't initialise (default is initialise to all ones */ -#define MEM_FLAG_HINT_PERMALOCK (1 << 6) /* Likely to be locked for long periods of time. */ - -#define BCM2708_DMA_SRC_IGNOR (1<<11) -#define BCM2708_DMA_SRC_INC (1<<8) -#define BCM2708_DMA_DST_IGNOR (1<<7) -#define BCM2708_DMA_NO_WIDE_BURSTS (1<<26) -#define BCM2708_DMA_WAIT_RESP (1<<3) - - -#define BCM2708_DMA_D_DREQ (1<<6) -#define BCM2708_DMA_PER_MAP(x) ((x)<<16) -#define BCM2708_DMA_END (1<<1) -#define BCM2708_DMA_RESET (1<<31) -#define BCM2708_DMA_INT (1<<2) - -#define DMA_CS (0x00/4) -#define DMA_CONBLK_AD (0x04/4) -#define DMA_DEBUG (0x20/4) - -//Page 61 -#define DREQ_PCM_TX 2 -#define DREQ_PCM_RX 3 -#define DREQ_SMI 4 -#define DREQ_PWM 5 -#define DREQ_SPI_TX 6 -#define DREQ_SPI_RX 7 -#define DREQ_SPI_SLAVE_TX 8 -#define DREQ_SPI_SLAVE_RX 9 - - -class dma -{ - protected: - struct { - int handle; /* From mbox_open() */ - unsigned mem_ref; /* From mem_alloc() */ - unsigned bus_addr; /* From mem_lock() */ - uint8_t *virt_addr; /* From mapmem() */ - } mbox; - - typedef struct { - uint32_t info, src, dst, length, - stride, next, pad[2]; - } dma_cb_t; //8*4=32 bytes - - typedef struct { - uint8_t *virtaddr; - uint32_t physaddr; - } page_map_t; - - page_map_t *page_map; - - uint8_t *virtbase; - int NumPages=0; - int channel; //DMA Channel - dmagpio dma_reg; - - uint32_t mem_flag; //Cache or not depending on Rpi1 or 2/3 - uint32_t dram_phys_base; - - - public: - dma_cb_t *cbarray; - uint32_t cbsize; - uint32_t *usermem; - uint32_t usermemsize; - bool Started=false; - - dma(int Channel,uint32_t CBSize,uint32_t UserMemSize); - ~dma(); - uint32_t mem_virt_to_phys(volatile void *virt); - uint32_t mem_phys_to_virt(volatile uint32_t phys); - void GetRpiInfo(); - int start(); - int stop(); - int getcbposition(); - bool isrunning(); - bool isunderflow(); - -}; - -#define PHYSICAL_BUS 0x7E000000 - -class bufferdma:public dma -{ - protected: - - - uint32_t current_sample; - uint32_t last_sample; - uint32_t sample_available; - - public: - uint32_t buffersize; - uint32_t cbbysample; - uint32_t registerbysample; - uint32_t *sampletab; - - public: - bufferdma(int Channel,uint32_t tbuffersize,uint32_t tcbbysample,uint32_t tregisterbysample); - void SetDmaAlgo(); - int GetBufferAvailable(); - int GetUserMemIndex(); - int PushSample(int Index); - -}; -#endif diff --git a/src/dsp.cpp b/src/dsp.cpp deleted file mode 100644 index be2486d..0000000 --- a/src/dsp.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include "dsp.h" - -dsp::dsp() -{ -} - -dsp::dsp(uint32_t srate):samplerate(srate) -{ -} - - -#define ln(x) (log(x)/log(2.718281828459045235f)) - -// Again some functions taken gracefully from F4GKR : https://github.com/f4gkr/RadiantBee - -//Normalize to [-180,180): -inline double dsp::constrainAngle(double x){ - x = fmod(x + M_PI,2*M_PI); - if (x < 0) - x += 2*M_PI; - return x - M_PI; -} - -// convert to [-360,360] -inline double dsp::angleConv(double angle){ - return fmod(constrainAngle(angle),2*M_PI); -} -inline double dsp::angleDiff(double a,double b){ - double dif = fmod(b - a + M_PI,2*M_PI); - if (dif < 0) - dif += 2*M_PI; - return dif - M_PI; -} - -inline double dsp::unwrap(double previousAngle,double newAngle){ - return previousAngle - angleDiff(newAngle,angleConv(previousAngle)); -} - - -int dsp::arctan2(int y, int x) // Should be replaced with fast_atan2 from rtl_fm -{ - int abs_y = abs(y); - int angle; - if((x==0)&&(y==0)) return 0; - if(x >= 0){ - angle = 45 - 45 * (x - abs_y) / ((x + abs_y)==0?1:(x + abs_y)); - } else { - angle = 135 - 45 * (x + abs_y) / ((abs_y - x)==0?1:(abs_y - x)); - } - return (y < 0) ? -angle : angle; // negate if in quad III or IV -} - -void dsp::pushsample(liquid_float_complex sample) -{ - - amplitude=norm(sample); - - double phase=atan2(sample.imag(),sample.real()); - //fprintf(stderr,"phase %f\n",phase); - phase=unwrap(prev_phase,phase); - - double dp= phase-prev_phase; - - frequency = (dp*(double)samplerate)/(2.0*M_PI); - prev_phase = phase; -} - - diff --git a/src/dsp.h b/src/dsp.h deleted file mode 100644 index b85c007..0000000 --- a/src/dsp.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef DEF_DSP -#define DEF_DSP - -#include "stdint.h" -#include -#include -#include -#include -class dsp -{ - protected: - double prev_phase = 0; - - double constrainAngle(double x); - double angleConv(double angle); - double angleDiff(double a,double b); - double unwrap(double previousAngle,double newAngle); - int arctan2(int y, int x); - - public: - uint32_t samplerate; - //double phase; - double amplitude; - double frequency; - - dsp(); - dsp(uint32_t samplerate); - void pushsample(liquid_float_complex sample); - -}; -#endif diff --git a/src/dt-blob.bin b/src/dt-blob.bin deleted file mode 100644 index f839ed548917eb5d3714437a47e305c93270e064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43123 zcmeHQUvDF~5tsWfz5W5(0C`H2x;UV?Yuw~y*=_PBoutG&G*qc8mmMQ6B6?k+V;E?2UpyBh(rq%}Dl4u|CYW@fqn{`LR>K*HPAHcT*5Vm3pd7%0gxA_@Kek(6=?ci>jx}p&)P$Cg^C{pzPM5qh(|2Gqz3fl;AR4t{9Qe1bXua`J?)=&+oIO**Xk$D1{Q)Bwu|fMH^F!@nvDlHcoANB9rd;i@6X|F zv{601=!kl)(>$-ijsveebZ`$c>4Y@IGjVa+g74z2d*0s&z1Cq}6WauTy+%!(wNCT$ zhW*U!Yp>q+p@p)|rgd`BZ*(suV>$czv5j6kRE<32srGugr$@T>b-UI(f#GbP)}FVU z&=96o9Ck4y~GZ}D^DLm zv^~*i^}ZFgdcXCe)&DN8>zaefy(OCG)pqSvoL__^pJ%*q4>0B4>zwrj=yu*dgyrkF zEad8QvwtG$?QgMouJRYX=c3)}wECi43$3(#^?I$YD8Kkp^qP{jTy33Qc62{n@_z#S zo3exYQcd&7{?A1HUhV6q=yV&=G?6^J_@LI%UIUim^M+_N`^~ysJwutfXnjHO)M_Yg z$R~F!A8JFs@}T}_?b>%Dxjg5QAF#S2e?==&-(2#u(uq2fhaWW#s1r&rB+iMHb~kX2 zG?}Da6kZ9hgkxpe)v6!WX^4hU4u18d$*boc<91oN~+V>WmleT3I zdJb%$?ddh~3F92;8(^FRsw(F`>JutO8V4RT&Z&W6oZR>#dAas!D5m!qW&3H|t?6zRg(9wPsMb?7nji8Owp<6S~h>F3!oPvD^UTa#D7T z<#qymt=rK|S&i_d%~s z{L1)gxA2oIrt#2N$;D4rjEiwmwqD`hV$MU3alyF`(LJC#HnlS`uEQ&7aKgATF4`Gf zWW@kf-Wbk1T+cG{0~u$5Y&M9qIA3uL0)>}a>jAfNz9PuOg00eXuy8&nV>HHS_A^PI zCg!EGJ9PYw^A)QhF5Lc^7%m*~m>9>mA;#tE7vEO;T!>cleXWD^F*@mSv=BbJLHvR zJPt>UGZ|+}Olj&D@z|?eR1ZW z2pWttM^(OmZdB!*OIOZig=32%JSRWfUaM#upTY#Uc&7YUD=DludTEs8u*)vi6`o6 z9g=km$KE)96wD!8j5DoIh2>lhZz_)3qQ={PrcpUOD5`kf_t1(q~;N>3u(p^V!cr+0GvR8jX?Hq{Due)tGe} z7w@*8#moPv)*#4_(Egb``je=q^$z!vgTg)o_RWC!*f#?*p!^`QzLnWG6Fu}-`G(AA z+9qYizL_|Nt$hsao5}QzQ9ckYw=Mc+D4!AgX0m;pxEHH+K;1*)^vzg&8Axk|9`%e) z3k~+ofDqw@azGz+8{VJ8+mx%XZ-zR@nte0wGmP0c^KRt8+^=tDc&p-Te6K~;y%tA| zIbj{gb$vYye4IWvpfHv`PUn;qr<3-36sD8T2cY~56y{U-#uEE3lqX=LYwX1vk3EBm ztnByAPN$xHz&r9MV>%XFii!)JUUcAL*?9I+51YvqOTltRpR1dGE}|>OVCELP%KOH@ z9?HgY@lD0LTy?e;*K+ZdjA6OTQqS6O*4a?J%GHjU15B02`Jv{>TucL%Tg3K2mOb#` z&y+~-cYe8r={?t|OYKWa7rL&%8G(2PmeMk@seiKjm-G z^zPfYYT;`?F&~t#@O}2JQZ|6x>!Wi@oPJb`tSMjJy7sS&U(=uHDsTD@UFF$E?KkT( zvoQ7n*mBNxJ*Ubw-a79oaRz4YI*D8D@4uZp>!Y62J zn)afSZSq;%e)af%H`GUzEyi$G?aBE0Z`ynVHX$VFn$qve~K%2ewWdt$MBBJqOzOQuEzicl+mb;<{wxbK7{1ysyZD zA=NzuNlZ%KS7f0<`68(Jgp5O3=zIpUHFeF5&$#5z_%z%*Z92Nm7>Y{=a6K?}z>KT7 zXiz>yg)@^b#XRedss~#QvX*PD(sjJ>>F^fmzpdC*jahYCmTAH$TZvhggV`bik$BCt z1><`0Jp*}dZKTKXigoUjczfa%nRyMC{Y3dkQOA<+M=xiizm=|oyV7)WGnfU7A4-tJ zd>f1hi(oP?%@?4u%c+3R#i;ahIUdT(*R$Ym1Q%zc@vFsaaa$`bewdC*; }; - chan@DPER { div = <2>; }; - - }; - pins_rev1 { - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p2 { function = "i2c1"; termination = "pull_up"; }; // I2C 1 SDA - pin@p3 { function = "i2c1"; termination = "pull_up"; }; // I2C 1 SCL - pin@p5 { function = "output"; termination = "pull_down"; }; // CAM_LED - pin@p6 { function = "output"; termination = "pull_down"; startup_state = "active"; }; // LAN_RUN - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p16 { function = "output"; termination = "pull_up"; polarity="active_low"; }; // activity LED - pin@p27 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio - pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio - pin@p46 { function = "input"; termination = "no_pulling"; }; // Hotplug - pin@p47 { function = "input"; termination = "no_pulling"; }; // SD_CARD_DETECT - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "internal"; - number = <46>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <2>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <3>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "internal"; - number = <27>; - }; - pin_define@CAMERA_0_LED { - type = "internal"; - number = <5>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "absent"; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <16>; - }; - pin_define@LAN_RUN { - type = "internal"; - number = <6>; - }; - pin_define@SMPS_SDA { - type = "absent"; - }; - pin_define@SMPS_SCL { - type = "absent"; - }; - pin_define@ETH_CLK { - type = "absent"; - }; - pin_define@USB_LIMIT_1A2 { - type = "absent"; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "internal"; - number = <40>; - }; - pin_define@PWMR { - type = "internal"; - number = <45>; - }; - pin_define@SAFE_MODE { - type = "internal"; - number = <1>; - }; - pin_define@SD_CARD_DETECT { - type = "internal"; - number = <47>; - }; - pin_define@ID_SDA { - type = "absent"; - }; - pin_define@ID_SCL { - type = "absent"; - }; - pin_define@DISPLAY_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@DISPLAY_SDA { - type = "internal"; - number = <0>; - }; - pin_define@DISPLAY_SCL { - type = "internal"; - number = <1>; - }; - }; // pin_defines - }; // pins_rev1 - - pins_rev2 { - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p0 { function = "i2c0"; termination = "pull_up"; }; // I2C 0 SDA - pin@p1 { function = "i2c0"; termination = "pull_up"; }; // I2C 0 SCL - pin@p5 { function = "output"; termination = "pull_down"; }; // CAM_LED - pin@p6 { function = "output"; termination = "pull_down"; startup_state = "active"; }; // LAN NRESET - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p16 { function = "output"; termination = "pull_up"; polarity = "active_low"; }; // activity LED - pin@p21 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio - pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio - pin@p46 { function = "input"; termination = "no_pulling"; }; // Hotplug - pin@p47 { function = "input"; termination = "no_pulling"; }; // SD_CARD_DETECT - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "internal"; - number = <46>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "internal"; - number = <21>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "internal"; - number = <5>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "absent"; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <16>; - }; - pin_define@LAN_RUN { - type = "internal"; - number = <6>; - }; - pin_define@SMPS_SDA { - type = "absent"; - }; - pin_define@SMPS_SCL { - type = "absent"; - }; - pin_define@ETH_CLK { - type = "absent"; - }; - pin_define@USB_LIMIT_1A2 { - type = "absent"; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "internal"; - number = <40>; - }; - pin_define@PWMR { - type = "internal"; - number = <45>; - }; - pin_define@SAFE_MODE { - type = "internal"; - number = <3>; - }; - pin_define@SD_CARD_DETECT { - type = "internal"; - number = <47>; - }; - pin_define@ID_SDA { - type = "absent"; - }; - pin_define@ID_SCL { - type = "absent"; - }; - pin_define@DISPLAY_I2C_PORT { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_SDA { - type = "internal"; - number = <2>; - }; - pin_define@DISPLAY_SCL { - type = "internal"; - number = <3>; - }; - }; // pin_defines - }; // pins - - pins_bplus1 { // Pi 1 Model B+ rev 1.1 - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA - pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL - pin@p31 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low - pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED - pin@p35 { function = "output"; termination = "pull_down"; startup_state = "active"; }; // LAN_RUN - pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) - pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio - pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p44 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output - pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio - pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "internal"; - number = <46>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <28>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <29>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "internal"; - number = <41>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "internal"; - number = <32>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "internal"; - number = <31>; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <47>; - }; - pin_define@LAN_RUN { - type = "internal"; - number = <35>; - }; - pin_define@SMPS_SDA { - type = "absent"; - }; - pin_define@SMPS_SCL { - type = "absent"; - }; - pin_define@ETH_CLK { - type = "internal"; - number = <44>; - }; - pin_define@USB_LIMIT_1A2 { - type = "absent"; - }; - pin_define@SIO_1V8_SEL { - type = "internal"; - number = <38>; - }; - pin_define@PWML { - type = "internal"; - number = <45>; - }; - pin_define@PWMR { - type = "internal"; - number = <40>; - }; - pin_define@SAFE_MODE { - type = "internal"; - number = <3>; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "internal"; - number = <0>; - }; - pin_define@ID_SCL { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@DISPLAY_SDA { - type = "internal"; - number = <28>; - }; - pin_define@DISPLAY_SCL { - type = "internal"; - number = <29>; - }; - }; // pin_defines - }; // pins - - pins_bplus2 { // Pi 1 Model B+ rev 1.2 - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA - pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL - pin@p31 { function = "output"; termination = "pull_down"; startup_state = "active"; }; // LAN_RUN - pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED - pin@p35 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low - pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) - pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio - pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p44 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output - pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio - pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "internal"; - number = <46>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <28>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <29>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "internal"; - number = <41>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "internal"; - number = <32>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "internal"; - number = <35>; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <47>; - }; - pin_define@LAN_RUN { - type = "internal"; - number = <31>; - }; - pin_define@SMPS_SDA { - type = "absent"; - }; - pin_define@SMPS_SCL { - type = "absent"; - }; - pin_define@ETH_CLK { - type = "internal"; - number = <44>; - }; - pin_define@USB_LIMIT_1A2 { - type = "internal"; - number = <38>; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "internal"; - number = <45>; - }; - pin_define@PWMR { - type = "internal"; - number = <40>; - }; - pin_define@SAFE_MODE { - type = "internal"; - number = <3>; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "internal"; - number = <0>; - }; - pin_define@ID_SCL { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@DISPLAY_SDA { - type = "internal"; - number = <28>; - }; - pin_define@DISPLAY_SCL { - type = "internal"; - number = <29>; - }; - }; // pin_defines - }; // pins - - pins_aplus { - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA - pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL - pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED - pin@p35 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low - pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) - pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio - pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio - pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "internal"; - number = <46>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <28>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <29>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "internal"; - number = <41>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "internal"; - number = <32>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "internal"; - number = <35>; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <47>; - }; - pin_define@LAN_RUN { - type = "absent"; - }; - pin_define@SMPS_SDA { - type = "absent"; - }; - pin_define@SMPS_SCL { - type = "absent"; - }; - pin_define@ETH_CLK { - type = "absent"; - }; - pin_define@USB_LIMIT_1A2 { - type = "internal"; - number = <38>; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "internal"; - number = <45>; - }; - pin_define@PWMR { - type = "internal"; - number = <40>; - }; - pin_define@SAFE_MODE { - type = "internal"; - number = <3>; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "internal"; - number = <0>; - }; - pin_define@ID_SCL { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@DISPLAY_SDA { - type = "internal"; - number = <28>; - }; - pin_define@DISPLAY_SCL { - type = "internal"; - number = <29>; - }; - }; // pin_defines - }; // pins - - pins_2b1 { // Pi 2 Model B rev 1.0 - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA / SMPS_SDA - pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL / SMPS_SCL - pin@p31 { function = "output"; termination = "pull_down"; startup_state = "active"; }; // LAN_RUN - pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED - pin@p35 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low - pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) - pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio - pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p44 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output - pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio - pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "internal"; - number = <46>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <28>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <29>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "internal"; - number = <41>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "internal"; - number = <32>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "internal"; - number = <35>; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <47>; - }; - pin_define@LAN_RUN { - type = "internal"; - number = <31>; - }; - pin_define@SMPS_SDA { - type = "internal"; - number = <28>; - }; - pin_define@SMPS_SCL { - type = "internal"; - number = <29>; - }; - pin_define@ETH_CLK { - type = "internal"; - number = <44>; - }; - pin_define@USB_LIMIT_1A2 { - type = "internal"; - number = <38>; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "internal"; - number = <45>; - }; - pin_define@PWMR { - type = "internal"; - number = <40>; - }; - pin_define@SAFE_MODE { - type = "internal"; - number = <3>; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "internal"; - number = <0>; - }; - pin_define@ID_SCL { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@DISPLAY_SDA { - type = "internal"; - number = <28>; - }; - pin_define@DISPLAY_SCL { - type = "internal"; - number = <29>; - }; - }; // pin_defines - }; // pins - - pins_2b2 { // Pi 2 Model B rev 1.1 - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA - pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL - pin@p31 { function = "output"; termination = "pull_down"; startup_state = "active"; }; // LAN_RUN - pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED - pin@p35 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low - pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) - pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio - pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - // Communicate with the SMPS by "bit-bashing" the I2C protocol on GPIOs 42 and 43 - pin@p42 { function = "output"; termination = "pull_up"; }; // SMPS_SCL - pin@p43 { function = "input"; termination = "no_pulling"; }; // SMPS_SDA - pin@p44 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output - pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio - pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "internal"; - number = <46>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <28>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <29>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "internal"; - number = <41>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "internal"; - number = <32>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "internal"; - number = <35>; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <47>; - }; - pin_define@LAN_RUN { - type = "internal"; - number = <31>; - }; - pin_define@SMPS_SDA { - type = "internal"; - number = <43>; - }; - pin_define@SMPS_SCL { - type = "internal"; - number = <42>; - }; - pin_define@ETH_CLK { - type = "internal"; - number = <44>; - }; - pin_define@USB_LIMIT_1A2 { - type = "internal"; - number = <38>; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "internal"; - number = <45>; - }; - pin_define@PWMR { - type = "internal"; - number = <40>; - }; - pin_define@SAFE_MODE { - type = "internal"; - number = <3>; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "internal"; - number = <0>; - }; - pin_define@ID_SCL { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@DISPLAY_SDA { - type = "internal"; - number = <28>; - }; - pin_define@DISPLAY_SCL { - type = "internal"; - number = <29>; - }; - }; // pin_defines - }; // pins - - pins_3b1 { // Pi 3 Model B rev 1.0 - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p34 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p35 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p36 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p37 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p38 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p39 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio - pin@p41 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio - pin@p42 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output - pin@p43 { function = "gp_clk"; termination = "pull_down"; }; // WIFI_CLK - Wifi 32kHz output - pin@p44 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA - pin@p45 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL - pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - pin@p128 { function = "output"; termination = "no_pulling"; }; // BT_ON - pin@p129 { function = "output"; termination = "no_pulling"; }; // WL_ON - pin@p130 { function = "output"; termination = "no_pulling"; }; // Status LED - pin@p131 { function = "output"; termination = "no_pulling"; startup_state = "active"; }; // LAN_RUN - pin@p132 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p133 { function = "output"; termination = "no_pulling"; }; // Camera LED - pin@p134 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p135 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "external"; - number = <4>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <44>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <45>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "external"; - number = <6>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "external"; - number = <5>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "external"; - number = <7>; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <47>; - }; - pin_define@LAN_RUN { - type = "external"; - number = <3>; - }; - pin_define@LAN_RUN_BOOT { - type = "internal"; - number = <29>; - }; - pin_define@BT_ON { - type = "external"; - number = <0>; - }; - pin_define@WL_ON { - type = "external"; - number = <1>; - }; - pin_define@SMPS_SDA { - type = "internal"; - number = <44>; - }; - pin_define@SMPS_SCL { - type = "internal"; - number = <45>; - }; - pin_define@ETH_CLK { - type = "internal"; - number = <42>; - }; - pin_define@WL_LPO_CLK { - type = "internal"; - number = <43>; - }; - pin_define@USB_LIMIT_1A2 { - type = "absent"; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "internal"; - number = <41>; - }; - pin_define@PWMR { - type = "internal"; - number = <40>; - }; - pin_define@SAFE_MODE { - type = "absent"; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "internal"; - number = <0>; - }; - pin_define@ID_SCL { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@DISPLAY_SDA { - type = "internal"; - number = <44>; - }; - pin_define@DISPLAY_SCL { - type = "internal"; - number = <45>; - }; - }; // pin_defines - }; // pins - - pins_3b2 { // Pi 3 Model B rev 1.2 - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p34 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p35 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p36 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p37 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p38 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p39 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio - pin@p41 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio - pin@p42 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output - pin@p43 { function = "gp_clk"; termination = "pull_down"; }; // WIFI_CLK - Wifi 32kHz output - pin@p44 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA - pin@p45 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL - pin@p46 { function = "input"; termination = "pull_up"; }; // SMPS_SCL - pin@p47 { function = "input"; termination = "pull_up"; }; // SMPS_SDA - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - pin@p128 { function = "output"; termination = "no_pulling"; }; // BT_ON - pin@p129 { function = "output"; termination = "no_pulling"; }; // WL_ON - pin@p130 { function = "output"; termination = "no_pulling"; }; // ACT_LED - pin@p131 { function = "output"; termination = "no_pulling"; startup_state = "active"; }; // LAN_RUN - pin@p132 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p133 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p134 { function = "output"; termination = "no_pulling"; }; // Camera LED - pin@p135 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "external"; - number = <4>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <44>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <45>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "external"; - number = <5>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "external"; - number = <6>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "external"; - number = <7>; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "external"; - number = <2>; - }; - pin_define@LAN_RUN { - type = "external"; - number = <3>; - }; - pin_define@LAN_RUN_BOOT { - type = "internal"; - number = <29>; - }; - pin_define@BT_ON { - type = "external"; - number = <0>; - }; - pin_define@WL_ON { - type = "external"; - number = <1>; - }; - pin_define@SMPS_SDA { - type = "internal"; - number = <46>; - }; - pin_define@SMPS_SCL { - type = "internal"; - number = <47>; - }; - pin_define@ETH_CLK { - type = "internal"; - number = <42>; - }; - pin_define@WL_LPO_CLK { - type = "internal"; - number = <43>; - }; - pin_define@USB_LIMIT_1A2 { - type = "absent"; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "internal"; - number = <41>; - }; - pin_define@PWMR { - type = "internal"; - number = <40>; - }; - pin_define@SAFE_MODE { - type = "absent"; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "internal"; - number = <0>; - }; - pin_define@ID_SCL { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@DISPLAY_SDA { - type = "internal"; - number = <44>; - }; - pin_define@DISPLAY_SCL { - type = "internal"; - number = <45>; - }; - }; // pin_defines - }; // pins - - pins_cm3 { // Pi 3 CM3 - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p46 { function = "input"; termination = "pull_up"; }; // SMPS_SCL - pin@p47 { function = "input"; termination = "pull_up"; }; // SMPS_SDA - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - pin@p128 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p129 { function = "output"; termination = "no_pulling"; polarity = "active_low"; }; // EMMC_ENABLE_N - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "external"; - number = <0>; - }; - pin_define@EMMC_ENABLE { - type = "external"; - number = <1>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <0>; - }; - pin_define@POWER_LOW { - type = "absent"; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "absent"; - }; - pin_define@LAN_RUN { - type = "absent"; - }; - pin_define@SMPS_SDA { - type = "internal"; - number = <46>; - }; - pin_define@SMPS_SCL { - type = "internal"; - number = <47>; - }; - pin_define@ETH_CLK { - type = "absent"; - }; - pin_define@WL_LPO_CLK { - type = "absent"; - }; - pin_define@USB_LIMIT_1A2 { - type = "absent"; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "absent"; - }; - pin_define@PWMR { - type = "absent"; - }; - pin_define@SAFE_MODE { - type = "absent"; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "absent"; - }; - pin_define@ID_SCL { - type = "absent"; - }; - }; // pin_defines - }; // pins - - pins_pi0 { // Pi zero - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA - pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL - pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED - pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p47 { function = "output"; termination = "pull_up"; polarity="active_low"; }; // activity LED - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "internal"; - number = <46>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <28>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <29>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "internal"; - number = <41>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "internal"; - number = <32>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "absent"; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <47>; - }; - pin_define@LAN_RUN { - type = "absent"; - }; - pin_define@SMPS_SDA { - type = "absent"; - }; - pin_define@SMPS_SCL { - type = "absent"; - }; - pin_define@ETH_CLK { - type = "absent"; - }; - pin_define@USB_LIMIT_1A2 { - type = "absent"; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "absent"; - }; - pin_define@PWMR { - type = "absent"; - }; - pin_define@SAFE_MODE { - type = "absent"; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "internal"; - number = <0>; - }; - pin_define@ID_SCL { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_I2C_PORT { - type = "absent"; - }; - pin_define@DISPLAY_SDA { - type = "absent"; - }; - pin_define@DISPLAY_SCL { - type = "absent"; - }; - }; // pin_defines - }; // pins - - pins_pi0w { // Pi zero W - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 - pin@p28 { function = "i2c0"; termination = "pull_up"; }; // I2C 0 SDA - pin@p29 { function = "i2c0"; termination = "pull_up"; }; // I2C 0 SCL - pin@p34 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p35 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p36 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p37 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p38 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p39 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; - pin@p40 { function = "output"; termination = "pull_down"; }; // Camera LED - pin@p41 { function = "output"; termination = "no_pulling"; }; // WL_ON - pin@p43 { function = "gp_clk"; termination = "pull_down"; }; // WIFI_CLK - Wifi 32kHz output - pin@p44 { function = "output"; termination = "no_pulling"; }; // Camera shutdown - pin@p45 { function = "output"; termination = "no_pulling"; }; // BT_ON - pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug - pin@p47 { function = "output"; termination = "pull_up"; polarity="active_low"; }; // activity LED - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@HDMI_CONTROL_ATTACHED { - type = "internal"; - number = <46>; - }; - pin_define@NUM_CAMERAS { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_I2C_PORT { - type = "internal"; - number = <0>; - }; - pin_define@CAMERA_0_SDA_PIN { - type = "internal"; - number = <28>; - }; - pin_define@CAMERA_0_SCL_PIN { - type = "internal"; - number = <29>; - }; - pin_define@CAMERA_0_SHUTDOWN { - type = "internal"; - number = <44>; - }; - pin_define@CAMERA_0_UNICAM_PORT { - type = "internal"; - number = <1>; - }; - pin_define@CAMERA_0_LED { - type = "internal"; - number = <40>; - }; - pin_define@FLASH_0_ENABLE { - type = "absent"; - }; - pin_define@FLASH_0_INDICATOR { - type = "absent"; - }; - pin_define@FLASH_1_ENABLE { - type = "absent"; - }; - pin_define@FLASH_1_INDICATOR { - type = "absent"; - }; - pin_define@POWER_LOW { - type = "absent"; - }; - pin_define@LEDS_DISK_ACTIVITY { - type = "internal"; - number = <47>; - }; - pin_define@LAN_RUN { - type = "absent"; - }; - pin_define@BT_ON { - type = "internal"; - number = <45>; - }; - pin_define@WL_ON { - type = "internal"; - number = <41>; - }; - pin_define@WL_LPO_CLK { - type = "internal"; - number = <43>; - }; - pin_define@SMPS_SDA { - type = "absent"; - }; - pin_define@SMPS_SCL { - type = "absent"; - }; - pin_define@ETH_CLK { - type = "absent"; - }; - pin_define@USB_LIMIT_1A2 { - type = "absent"; - }; - pin_define@SIO_1V8_SEL { - type = "absent"; - }; - pin_define@PWML { - type = "absent"; - }; - pin_define@PWMR { - type = "absent"; - }; - pin_define@SAFE_MODE { - type = "absent"; - }; - pin_define@SD_CARD_DETECT { - type = "absent"; - }; - pin_define@ID_SDA { - type = "internal"; - number = <0>; - }; - pin_define@ID_SCL { - type = "internal"; - number = <1>; - }; - pin_define@DISPLAY_I2C_PORT { - type = "absent"; - }; - pin_define@DISPLAY_SDA { - type = "absent"; - }; - pin_define@DISPLAY_SCL { - type = "absent"; - }; - }; // pin_defines - }; // pins - - pins_cm { - pin_config { - pin@default { - polarity = "active_high"; - termination = "pull_down"; - startup_state = "inactive"; - function = "input"; - }; // pin - pin@p14 { function = "uart0"; termination = "no_pulling"; }; // TX uart0 - pin@p15 { function = "uart0"; termination = "pull_up"; }; // RX uart0 - pin@p47 { function = "output"; termination = "no_pulling"; polarity = "active_low"; }; // EMMC_ENABLE_N - pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK - pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD - pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 - pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 - pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 - pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 - }; // pin_config - - pin_defines { - pin_define@EMMC_ENABLE { - type = "internal"; - number = <47>; - }; - }; // pin_defines - }; // pins_cm - }; -}; diff --git a/src/fmdmasync.cpp b/src/fmdmasync.cpp deleted file mode 100644 index f9b80c4..0000000 --- a/src/fmdmasync.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "stdio.h" -#include "fmdmasync.h" -#include "gpio.h" //for definition of registers - -fmdmasync::fmdmasync(int Channel,uint32_t FifoSize):dma(Channel,FifoSize*2,FifoSize) -{ - SetDmaAlgo(); - FillMemory(12,1472); -} - -fmdmasync::~fmdmasync() -{ -} - -void fmdmasync::SetDmaAlgo() -{ - dma_cb_t *cbp = cbarray; - for (uint32_t samplecnt = 0; samplecnt < cbsize/2; samplecnt++) { //cbsize/2 because we have 2 CB by sample - - - // Write a frequency sample - - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[samplecnt]); - cbp->dst = 0x7E000000 + (GPCLK_DIV<<2) + CLK_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - - // Delay - - cbp->info = /*BCM2708_DMA_SRC_IGNOR | */BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP | BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PWM); - cbp->src = mem_virt_to_phys(cbarray); // Data is not important as we use it only to feed the PWM - cbp->dst = 0x7E000000 + (PWM_FIFO<<2) + PWM_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - } - - cbp--; - cbp->next = mem_virt_to_phys(cbarray); // We loop to the first CB - //fprintf(stderr,"Last cbp : src %x dest %x next %x\n",cbp->src,cbp->dst,cbp->next); -} - -void fmdmasync::FillMemory(uint32_t FreqDivider,uint32_t FreqFractionnal) -{ - - for (uint32_t samplecnt = 0; samplecnt < usermemsize; samplecnt++) - { - usermem[samplecnt]=0x5A000000 | ((FreqDivider)<<12) | FreqFractionnal; - FreqFractionnal=(FreqFractionnal+1)%4096; - if (FreqFractionnal==0) FreqDivider++; - } -} diff --git a/src/fmdmasync.h b/src/fmdmasync.h deleted file mode 100644 index 6d4117a..0000000 --- a/src/fmdmasync.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef DEF_FMDMASYNC -#define DEF_FMDMASYNC - -#include "stdint.h" -#include "dma.h" - -class fmdmasync:public dma -{ - public: - fmdmasync(int Channel,uint32_t FifoSize); - ~fmdmasync(); - void SetDmaAlgo(); - void FillMemory(uint32_t FreqDivider,uint32_t FreqFractionnal); -}; - -#endif diff --git a/src/fskburst.cpp b/src/fskburst.cpp deleted file mode 100644 index 2593500..0000000 --- a/src/fskburst.cpp +++ /dev/null @@ -1,114 +0,0 @@ - -#include "stdio.h" -#include "fskburst.h" - - - fskburst::fskburst(uint64_t TuneFrequency,uint32_t SymbolRate,uint32_t Deviation,int Channel,uint32_t FifoSize):bufferdma(Channel,FifoSize+2,2,1),freqdeviation(Deviation) - { - - clkgpio::SetAdvancedPllMode(true); - clkgpio::SetCenterFrequency(TuneFrequency,SymbolRate); // Write Mult Int and Frac : FixMe carrier is already there - clkgpio::SetFrequency(0); - //clkgpio::enableclk(4); // GPIO 4 CLK by default - syncwithpwm=false; - - if(syncwithpwm) - { - pwmgpio::SetPllNumber(clk_plld,1); - pwmgpio::SetFrequency(SymbolRate); - } - else - { - pcmgpio::SetPllNumber(clk_plld,1); - pcmgpio::SetFrequency(SymbolRate); - } - - - - SetDmaAlgo(); - - padgpio pad; - Originfsel=pad.gpioreg[PADS_GPIO_0]; - } - - fskburst::~fskburst() - { - } - - void fskburst::SetDmaAlgo() -{ - sampletab[buffersize*registerbysample-2]=(Originfsel & ~(7 << 12)) | (4 << 12); //Enable Clk - sampletab[buffersize*registerbysample-1]=(Originfsel & ~(7 << 12)) | (0 << 12); //Disable Clk - - dma_cb_t *cbp = cbarray; - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[buffersize*registerbysample-2]); - cbp->dst = 0x7E000000 + (GPFSEL0<<2)+GENERAL_BASE; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); // Stop DMA - cbp++; - - for (uint32_t samplecnt = 0; samplecnt < buffersize-2; samplecnt++) - { - - - // Write a frequency sample - - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[samplecnt*registerbysample]); - cbp->dst = 0x7E000000 + (PLLA_FRAC<<2) + CLK_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - - // Delay - if(syncwithpwm) - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PWM); - else - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PCM_TX); - cbp->src = mem_virt_to_phys(cbarray); // Data is not important as we use it only to feed the PWM - if(syncwithpwm) - cbp->dst = 0x7E000000 + (PWM_FIFO<<2) + PWM_BASE ; - else - cbp->dst = 0x7E000000 + (PCM_FIFO_A<<2) + PCM_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - } - lastcbp=cbp; - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[(buffersize*registerbysample-1)]); - cbp->dst = 0x7E000000 + (GPFSEL0<<2)+GENERAL_BASE; - cbp->length = 4; - cbp->stride = 0; - cbp->next = 0; // Stop DMA - - //fprintf(stderr,"Last cbp : src %x dest %x next %x\n",cbp->src,cbp->dst,cbp->next); -} - void fskburst::SetSymbols(unsigned char *Symbols,uint32_t Size) - { - if(Size>buffersize-2) {fprintf(stderr,"Buffer overflow\n");return;} - - dma_cb_t *cbp=cbarray+1+1; - for(int i=0;inext = mem_virt_to_phys(cbp + 1); - } - cbp->next = mem_virt_to_phys(lastcbp); - - - dma::start(); - - - } - diff --git a/src/fskburst.h b/src/fskburst.h deleted file mode 100644 index d2b16d0..0000000 --- a/src/fskburst.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef DEF_FSKBURST -#define DEF_FSKBURST - -#include "stdint.h" -#include "dma.h" -#include "gpio.h" - -class fskburst:public bufferdma,public clkgpio,public pwmgpio,public pcmgpio -{ - protected: - uint32_t freqdeviation; - uint32_t Originfsel; - bool syncwithpwm; - dma_cb_t *lastcbp; - public: - fskburst(uint64_t TuneFrequency,uint32_t SymbolRate,uint32_t Deviation,int Channel,uint32_t FifoSize); - ~fskburst(); - void SetDmaAlgo(); - - void SetSymbols(unsigned char *Symbols,uint32_t Size); -}; - -#endif diff --git a/src/gpio.cpp b/src/gpio.cpp deleted file mode 100644 index 5a5deae..0000000 --- a/src/gpio.cpp +++ /dev/null @@ -1,669 +0,0 @@ -extern "C" -{ -#include "mailbox.h" -} -#include "gpio.h" -#include "raspberry_pi_revision.h" -#include "stdio.h" -#include - -gpio::gpio(uint32_t base, uint32_t len) -{ - - gpioreg=( uint32_t *)mapmem(base,len); - -} - - -uint32_t gpio::GetPeripheralBase() -{ - RASPBERRY_PI_INFO_T info; - uint32_t BCM2708_PERI_BASE=0; - if (getRaspberryPiInformation(&info) > 0) - { - if(info.peripheralBase==RPI_BROADCOM_2835_PERIPHERAL_BASE) - { - BCM2708_PERI_BASE = info.peripheralBase ; - } - - if((info.peripheralBase==RPI_BROADCOM_2836_PERIPHERAL_BASE)||(info.peripheralBase==RPI_BROADCOM_2837_PERIPHERAL_BASE)) - { - BCM2708_PERI_BASE = info.peripheralBase ; - } - } - return BCM2708_PERI_BASE; -} - - -//******************** DMA Registers *************************************** - -dmagpio::dmagpio():gpio(GetPeripheralBase()+DMA_BASE,DMA_LEN) -{ -} - -// ***************** CLK Registers ***************************************** -clkgpio::clkgpio():gpio(GetPeripheralBase()+CLK_BASE,CLK_LEN) -{ - -} - -clkgpio::~clkgpio() -{ - gpioreg[GPCLK_CNTL]= 0x5A000000 | (Mash << 9) | pllnumber|(0 << 4) ; //4 is START CLK - - usleep(100); -} - -int clkgpio::SetPllNumber(int PllNo,int MashType) -{ - //print_clock_tree(); - if(PllNo<8) - pllnumber=PllNo; - else - pllnumber=clk_pllc; - - if(MashType<4) - Mash=MashType; - else - Mash=0; - gpioreg[GPCLK_CNTL]= 0x5A000000 | (Mash << 9) | pllnumber/*|(1 << 5)*/ ; //5 is Reset CLK - usleep(100); - Pllfrequency=GetPllFrequency(pllnumber); - return 0; -} - -uint64_t clkgpio::GetPllFrequency(int PllNo) -{ - uint64_t Freq=0; - switch(PllNo) - { - case clk_osc:Freq=XOSC_FREQUENCY;break; - case clk_plla:Freq=XOSC_FREQUENCY*((uint64_t)gpioreg[PLLA_CTRL]&0x3ff) +XOSC_FREQUENCY*(uint64_t)gpioreg[PLLA_FRAC]/(1<<20);break; - //case clk_pllb:Freq=XOSC_FREQUENCY*((uint64_t)gpioreg[PLLB_CTRL]&0x3ff) +XOSC_FREQUENCY*(uint64_t)gpioreg[PLLB_FRAC]/(1<<20);break; - case clk_pllc:Freq=XOSC_FREQUENCY*((uint64_t)gpioreg[PLLC_CTRL]&0x3ff) +XOSC_FREQUENCY*(uint64_t)gpioreg[PLLC_FRAC]/(1<<20);break; - case clk_plld:Freq=(XOSC_FREQUENCY*((uint64_t)gpioreg[PLLD_CTRL]&0x3ff) +(XOSC_FREQUENCY*(uint64_t)gpioreg[PLLD_FRAC])/(1<<20))/(gpioreg[PLLD_PER]>>1);break; - case clk_hdmi:Freq=XOSC_FREQUENCY*((uint64_t)gpioreg[PLLH_CTRL]&0x3ff) +XOSC_FREQUENCY*(uint64_t)gpioreg[PLLH_FRAC]/(1<<20);break; - } - fprintf(stderr,"Freq = %lld\n",Freq); - - return Freq; -} - - -int clkgpio::SetClkDivFrac(uint32_t Div,uint32_t Frac) -{ - - gpioreg[GPCLK_DIV] = 0x5A000000 | ((Div)<<12) | Frac; - usleep(100); - fprintf(stderr,"Clk Number %d div %d frac %d\n",pllnumber,Div,Frac); - //gpioreg[GPCLK_CNTL]= 0x5A000000 | (Mash << 9) | pllnumber |(1<<4) ; //4 is START CLK - // usleep(10); - return 0; - -} - -int clkgpio::SetMasterMultFrac(uint32_t Mult,uint32_t Frac) -{ - - fprintf(stderr,"Master Mult %d Frac %d\n",Mult,Frac); - gpioreg[PLLA_CTRL] = (0x5a<<24) | (0x21<<12) | Mult; - usleep(100); - gpioreg[PLLA_FRAC]= 0x5A000000 | Frac ; - - return 0; - -} - -int clkgpio::SetFrequency(int Frequency) -{ - if(ModulateFromMasterPLL) - { - double FloatMult=((double)(CentralFrequency+Frequency)*PllFixDivider)/(double)(XOSC_FREQUENCY); - uint32_t freqctl = FloatMult*((double)(1<<20)) ; - int IntMultiply= freqctl>>20; // Need to be calculated to have a center frequency - freqctl&=0xFFFFF; // Fractionnal is 20bits - uint32_t FracMultiply=freqctl&0xFFFFF; - //gpioreg[PLLA_FRAC]= 0x5A000000 | FracMultiply ; // Only Frac is Sent - SetMasterMultFrac(IntMultiply,FracMultiply); - - } - else - { - double Freqresult=(double)Pllfrequency/(double)(CentralFrequency+Frequency); - uint32_t FreqDivider=(uint32_t)Freqresult; - uint32_t FreqFractionnal=(uint32_t) (4096*(Freqresult-(double)FreqDivider)); - if((FreqDivider>4096)||(FreqDivider<2)) fprintf(stderr,"Frequency out of range\n"); - printf("DIV/FRAC %u/%u \n",FreqDivider,FreqFractionnal); - - SetClkDivFrac(FreqDivider,FreqFractionnal); - } - - return 0; - -} - -uint32_t clkgpio::GetMasterFrac(int Frequency) -{ - if(ModulateFromMasterPLL) - { - double FloatMult=((double)(CentralFrequency+Frequency)*PllFixDivider)/(double)(XOSC_FREQUENCY); - uint32_t freqctl = FloatMult*((double)(1<<20)) ; - int IntMultiply= freqctl>>20; // Need to be calculated to have a center frequency - freqctl&=0xFFFFF; // Fractionnal is 20bits - uint32_t FracMultiply=freqctl&0xFFFFF; - return FracMultiply; - } - else - return 0; //Not in Master CLk mode - -} - -int clkgpio::ComputeBestLO(uint64_t Frequency,int Bandwidth) -{ - // Algorithm adapted from https://github.com/SaucySoliton/PiFmRds/blob/master/src/pi_fm_rds.c - // Choose an integer divider for GPCLK0 - // - // There may be improvements possible to this algorithm. - double xtal_freq_recip=1.0/19.2e6; // todo PPM correction - int best_divider=0; - - - int solution_count=0; - //printf("carrier:%3.2f ",carrier_freq/1e6); - int divider,min_int_multiplier,max_int_multiplier, fom, int_multiplier, best_fom=0; - double frac_multiplier; - best_divider=0; - for( divider=1;divider<4096;divider++) - { - if( Frequency*divider < 600e6 ) continue; // widest accepted frequency range - if( Frequency*divider > 1800e6 ) break; - - max_int_multiplier=((int)((double)(Frequency+Bandwidth)*divider*xtal_freq_recip)); - min_int_multiplier=((int)((double)(Frequency-Bandwidth)*divider*xtal_freq_recip)); - if( min_int_multiplier!=max_int_multiplier ) continue; // don't cross integer boundary - - solution_count++; // if we make it here the solution is acceptable, - fom=0; // but we want a good solution - - if( Frequency*divider > 900e6 ) fom++; // prefer freqs closer to 1000 - if( Frequency*divider < 1100e6 ) fom++; - if( Frequency*divider > 800e6 ) fom++; // accepted frequency range - if( Frequency*divider < 1200e6 ) fom++; - - - frac_multiplier=((double)(Frequency)*divider*xtal_freq_recip); - int_multiplier = (int) frac_multiplier; - frac_multiplier = frac_multiplier - int_multiplier; - if((int_multiplier%2)==0) fom++; - if( (frac_multiplier>0.4) && (frac_multiplier<0.6) ) fom+=2; // prefer mulipliers away from integer boundaries - - - //if( divider%2 == 1 ) fom+=2; // prefer odd dividers - // Even and odd dividers could have different harmonic content, - // but the latest measurements have shown no significant difference. - - - //printf(" multiplier:%f divider:%d VCO: %4.1fMHz\n",carrier_freq*divider*xtal_freq_recip,divider,(double)carrier_freq*divider/1e6); - if( fom > best_fom ) - { - best_fom=fom; - best_divider=divider; - } - } - if(solution_count>0) - { - PllFixDivider=best_divider; - fprintf(stderr," multiplier:%f divider:%d VCO: %4.1fMHz\n",Frequency*best_divider*xtal_freq_recip,best_divider,(double)Frequency*best_divider/1e6); - return 0; - } - else - { - fprintf(stderr,"Central frequency not available !!!!!!\n"); - return -1; - } -} - -int clkgpio::SetCenterFrequency(uint64_t Frequency,int Bandwidth) -{ - CentralFrequency=Frequency; - if(ModulateFromMasterPLL) - { - //Choose best PLLDiv and Div - ComputeBestLO(Frequency,Bandwidth); //FixeDivider update - - SetFrequency(0); - usleep(1000); - if((gpioreg[CM_LOCK]&CM_LOCK_FLOCKA)>0) - fprintf(stderr,"Master PLLA Locked\n"); - else - fprintf(stderr,"Warning ! Master PLLA NOT Locked !!!!\n"); - SetClkDivFrac(PllFixDivider,0); // NO MASH !!!! - usleep(100); - - usleep(100); - gpioreg[GPCLK_CNTL]= 0x5A000000 | (Mash << 9) | pllnumber|(1 << 4) ; //4 is START CLK - usleep(100); - gpioreg[GPCLK_CNTL]= 0x5A000000 | (Mash << 9) | pllnumber|(1 << 4) ; //4 is START CLK - usleep(100); - } - else - { - GetPllFrequency(pllnumber);// Be sure to get the master PLL frequency - gpioreg[GPCLK_CNTL]= 0x5A000000 | (Mash << 9) | pllnumber|(1 << 4) ; //4 is START CLK - } - return 0; -} - -void clkgpio::SetPhase(bool inversed) -{ - uint32_t StateBefore=clkgpio::gpioreg[GPCLK_CNTL]; - clkgpio::gpioreg[GPCLK_CNTL]= (0x5A<<24) | StateBefore | ((inversed?1:0)<<8) | 1<<5; - clkgpio::gpioreg[GPCLK_CNTL]= (0x5A<<24) | StateBefore | ((inversed?1:0)<<8) | 0<<5; -} - -void clkgpio::SetAdvancedPllMode(bool Advanced) -{ - ModulateFromMasterPLL=Advanced; - if(ModulateFromMasterPLL) - { - SetPllNumber(clk_plla,0); // Use PPL_A , Do not USE MASH which generates spurious - gpioreg[0x104/4]=0x5A00020A; // Enable Plla_PER - usleep(100); - - uint32_t ana[4]; - for(int i=3;i>=0;i--) - { - ana[i]=gpioreg[(0x1010/4)+i]; - } - - //ana[1]&=~(1<<14); // No use prediv means Frequency - ana[1]|=(1<<14); // use prediv means Frequency*2 - for(int i=3;i>=0;i--) - { - gpioreg[(0x1010/4)+i]=(0x5A<<24)|ana[i]; - } - - - usleep(100); - gpioreg[PLLA_PER]=0x5A000002; // Div ? - usleep(100); - } -} - -void clkgpio::print_clock_tree(void) -{ - - printf("PLLC_DIG0=%08x\n",gpioreg[(0x1020/4)]); - printf("PLLC_DIG1=%08x\n",gpioreg[(0x1024/4)]); - printf("PLLC_DIG2=%08x\n",gpioreg[(0x1028/4)]); - printf("PLLC_DIG3=%08x\n",gpioreg[(0x102c/4)]); - printf("PLLC_ANA0=%08x\n",gpioreg[(0x1030/4)]); - printf("PLLC_ANA1=%08x\n",gpioreg[(0x1034/4)]); - printf("PLLC_ANA2=%08x\n",gpioreg[(0x1038/4)]); - printf("PLLC_ANA3=%08x\n",gpioreg[(0x103c/4)]); - printf("PLLC_DIG0R=%08x\n",gpioreg[(0x1820/4)]); - printf("PLLC_DIG1R=%08x\n",gpioreg[(0x1824/4)]); - printf("PLLC_DIG2R=%08x\n",gpioreg[(0x1828/4)]); - printf("PLLC_DIG3R=%08x\n",gpioreg[(0x182c/4)]); - - printf("PLLA_ANA0=%08x\n",gpioreg[(0x1010/4)]); - printf("PLLA_ANA1=%08x prediv=%d\n",gpioreg[(0x1014/4)],(gpioreg[(0x1014/4)]>>14)&1); - printf("PLLA_ANA2=%08x\n",gpioreg[(0x1018/4)]); - printf("PLLA_ANA3=%08x\n",gpioreg[(0x101c/4)]); - - printf("GNRIC CTL=%08x DIV=%8x ",gpioreg[ 0],gpioreg[ 1]); - printf("VPU CTL=%08x DIV=%8x\n",gpioreg[ 2],gpioreg[ 3]); - printf("SYS CTL=%08x DIV=%8x ",gpioreg[ 4],gpioreg[ 5]); - printf("PERIA CTL=%08x DIV=%8x\n",gpioreg[ 6],gpioreg[ 7]); - printf("PERII CTL=%08x DIV=%8x ",gpioreg[ 8],gpioreg[ 9]); - printf("H264 CTL=%08x DIV=%8x\n",gpioreg[10],gpioreg[11]); - printf("ISP CTL=%08x DIV=%8x ",gpioreg[12],gpioreg[13]); - printf("V3D CTL=%08x DIV=%8x\n",gpioreg[14],gpioreg[15]); - - printf("CAM0 CTL=%08x DIV=%8x ",gpioreg[16],gpioreg[17]); - printf("CAM1 CTL=%08x DIV=%8x\n",gpioreg[18],gpioreg[19]); - printf("CCP2 CTL=%08x DIV=%8x ",gpioreg[20],gpioreg[21]); - printf("DSI0E CTL=%08x DIV=%8x\n",gpioreg[22],gpioreg[23]); - printf("DSI0P CTL=%08x DIV=%8x ",gpioreg[24],gpioreg[25]); - printf("DPI CTL=%08x DIV=%8x\n",gpioreg[26],gpioreg[27]); - printf("GP0 CTL=%08x DIV=%8x ",gpioreg[0x70/4],gpioreg[0x74/4]); - printf("GP1 CTL=%08x DIV=%8x\n",gpioreg[30],gpioreg[31]); - - printf("GP2 CTL=%08x DIV=%8x ",gpioreg[32],gpioreg[33]); - printf("HSM CTL=%08x DIV=%8x\n",gpioreg[34],gpioreg[35]); - printf("OTP CTL=%08x DIV=%8x ",gpioreg[36],gpioreg[37]); - printf("PCM CTL=%08x DIV=%8x\n",gpioreg[38],gpioreg[39]); - printf("PWM CTL=%08x DIV=%8x ",gpioreg[40],gpioreg[41]); - printf("SLIM CTL=%08x DIV=%8x\n",gpioreg[42],gpioreg[43]); - printf("SMI CTL=%08x DIV=%8x ",gpioreg[44],gpioreg[45]); - printf("SMPS CTL=%08x DIV=%8x\n",gpioreg[46],gpioreg[47]); - - printf("TCNT CTL=%08x DIV=%8x ",gpioreg[48],gpioreg[49]); - printf("TEC CTL=%08x DIV=%8x\n",gpioreg[50],gpioreg[51]); - printf("TD0 CTL=%08x DIV=%8x ",gpioreg[52],gpioreg[53]); - printf("TD1 CTL=%08x DIV=%8x\n",gpioreg[54],gpioreg[55]); - - printf("TSENS CTL=%08x DIV=%8x ",gpioreg[56],gpioreg[57]); - printf("TIMER CTL=%08x DIV=%8x\n",gpioreg[58],gpioreg[59]); - printf("UART CTL=%08x DIV=%8x ",gpioreg[60],gpioreg[61]); - printf("VEC CTL=%08x DIV=%8x\n",gpioreg[62],gpioreg[63]); - - - printf("PULSE CTL=%08x DIV=%8x ",gpioreg[100],gpioreg[101]); - printf("PLLT CTL=%08x DIV=????????\n",gpioreg[76]); - - printf("DSI1E CTL=%08x DIV=%8x ",gpioreg[86],gpioreg[87]); - printf("DSI1P CTL=%08x DIV=%8x\n",gpioreg[88],gpioreg[89]); - printf("AVE0 CTL=%08x DIV=%8x\n",gpioreg[90],gpioreg[91]); - - printf("CMPLLA=%08x ",gpioreg[0x104/4]); - printf("CMPLLC=%08x \n",gpioreg[0x108/4]); - printf("CMPLLD=%08x ",gpioreg[0x10C/4]); - printf("CMPLLH=%08x \n",gpioreg[0x110/4]); - - printf("EMMC CTL=%08x DIV=%8x\n",gpioreg[112],gpioreg[113]); - printf("EMMC CTL=%08x DIV=%8x\n",gpioreg[112],gpioreg[113]); - printf("EMMC CTL=%08x DIV=%8x\n",gpioreg[112],gpioreg[113]); - - - // Sometimes calculated frequencies are off by a factor of 2 - // ANA1 bit 14 may indicate that a /2 prescaler is active - printf("PLLA PDIV=%d NDIV=%d FRAC=%d ",(gpioreg[PLLA_CTRL]>>16) ,gpioreg[PLLA_CTRL]&0x3ff, gpioreg[PLLA_FRAC] ); - printf(" %f MHz\n",19.2* ((float)(gpioreg[PLLA_CTRL]&0x3ff) + ((float)gpioreg[PLLA_FRAC])/((float)(1<<20))) ); - printf("DSI0=%d CORE=%d PER=%d CCP2=%d\n\n",gpioreg[PLLA_DSI0],gpioreg[PLLA_CORE],gpioreg[PLLA_PER],gpioreg[PLLA_CCP2]); - - - printf("PLLB PDIV=%d NDIV=%d FRAC=%d ",(gpioreg[PLLB_CTRL]>>16) ,gpioreg[PLLB_CTRL]&0x3ff, gpioreg[PLLB_FRAC] ); - printf(" %f MHz\n",19.2* ((float)(gpioreg[PLLB_CTRL]&0x3ff) + ((float)gpioreg[PLLB_FRAC])/((float)(1<<20))) ); - printf("ARM=%d SP0=%d SP1=%d SP2=%d\n\n",gpioreg[PLLB_ARM],gpioreg[PLLB_SP0],gpioreg[PLLB_SP1],gpioreg[PLLB_SP2]); - - printf("PLLC PDIV=%d NDIV=%d FRAC=%d ",(gpioreg[PLLC_CTRL]>>16) ,gpioreg[PLLC_CTRL]&0x3ff, gpioreg[PLLC_FRAC] ); - printf(" %f MHz\n",19.2* ((float)(gpioreg[PLLC_CTRL]&0x3ff) + ((float)gpioreg[PLLC_FRAC])/((float)(1<<20))) ); - printf("CORE2=%d CORE1=%d PER=%d CORE0=%d\n\n",gpioreg[PLLC_CORE2],gpioreg[PLLC_CORE1],gpioreg[PLLC_PER],gpioreg[PLLC_CORE0]); - - printf("PLLD %x PDIV=%d NDIV=%d FRAC=%d ",gpioreg[PLLD_CTRL],(gpioreg[PLLD_CTRL]>>16) ,gpioreg[PLLD_CTRL]&0x3ff, gpioreg[PLLD_FRAC] ); - printf(" %f MHz\n",19.2* ((float)(gpioreg[PLLD_CTRL]&0x3ff) + ((float)gpioreg[PLLD_FRAC])/((float)(1<<20))) ); - printf("DSI0=%d CORE=%d PER=%d DSI1=%d\n\n",gpioreg[PLLD_DSI0],gpioreg[PLLD_CORE],gpioreg[PLLD_PER],gpioreg[PLLD_DSI1]); - - printf("PLLH PDIV=%d NDIV=%d FRAC=%d ",(gpioreg[PLLH_CTRL]>>16) ,gpioreg[PLLH_CTRL]&0x3ff, gpioreg[PLLH_FRAC] ); - printf(" %f MHz\n",19.2* ((float)(gpioreg[PLLH_CTRL]&0x3ff) + ((float)gpioreg[PLLH_FRAC])/((float)(1<<20))) ); - printf("AUX=%d RCAL=%d PIX=%d STS=%d\n\n",gpioreg[PLLH_AUX],gpioreg[PLLH_RCAL],gpioreg[PLLH_PIX],gpioreg[PLLH_STS]); - - -} - -void clkgpio::enableclk(int gpio) -{ - switch(gpio) - { - case 4: gengpio.setmode(gpio,fsel_alt0);break; - case 20:gengpio.setmode(gpio,fsel_alt5);break; - case 32:gengpio.setmode(gpio,fsel_alt0);break; - case 34:gengpio.setmode(gpio,fsel_alt0);break; - default: fprintf(stderr,"gpio %d has no clk - available(4,20,32,34)\n",gpio);break; - } - usleep(100); -} - -void clkgpio::disableclk(int gpio) -{ - gengpio.setmode(gpio,fsel_input); - -} - -// ************************************** GENERAL GPIO ***************************************************** - -generalgpio::generalgpio():gpio(GetPeripheralBase()+GENERAL_BASE,GENERAL_LEN) -{ -} - -generalgpio::~generalgpio() -{ - -} - -int generalgpio::setmode(uint32_t gpio, uint32_t mode) -{ - int reg, shift; - - reg = gpio/10; - shift = (gpio%10) * 3; - - gpioreg[reg] = (gpioreg[reg] & ~(7<4096)||(FreqDivider<2)) fprintf(stderr,"Frequency out of range\n"); - fprintf(stderr,"PWM clk=%d / %d\n",FreqDivider,FreqFractionnal); - clk.gpioreg[PWMCLK_DIV] = 0x5A000000 | ((FreqDivider)<<12) | FreqFractionnal; - - usleep(100); - clk.gpioreg[PWMCLK_CNTL]= 0x5A000000 | (Mash << 9) | pllnumber|(1 << 4) ; //4 is STAR CLK - usleep(100); - - - SetPrediv(Prediv); //SetMode should be called before - return 0; - -} - -void pwmgpio::SetMode(int Mode) -{ - if((Mode>=pwm1pin)&&(Mode<=pwm1pinrepeat)) - ModePwm=Mode; -} - -int pwmgpio::SetPrediv(int predivisor) //Mode should be only for SYNC or a Data serializer : Todo -{ - Prediv=predivisor; - if(Prediv>32) - { - fprintf(stderr,"PWM Prediv is max 32\n"); - Prediv=2; - } - fprintf(stderr,"PWM Prediv %d\n",Prediv); - gpioreg[PWM_RNG1] = Prediv;// 250 -> 8KHZ - usleep(100); - gpioreg[PWM_RNG2] = Prediv;// 32 Mandatory for Serial Mode without gap - - //gpioreg[PWM_FIFO]=0xAAAAAAAA; - - gpioreg[PWM_DMAC] = PWMDMAC_ENAB | PWMDMAC_THRSHLD; - usleep(100); - gpioreg[PWM_CTL] = PWMCTL_CLRF; - usleep(100); - - //gpioreg[PWM_CTL] = PWMCTL_USEF1| PWMCTL_MODE1| PWMCTL_PWEN1|PWMCTL_MSEN1; - switch(ModePwm) - { - case pwm1pin:gpioreg[PWM_CTL] = PWMCTL_USEF1| PWMCTL_MODE1| PWMCTL_PWEN1|PWMCTL_MSEN1;break; // All serial go to 1 pin - case pwm2pin:gpioreg[PWM_CTL] = PWMCTL_USEF2|PWMCTL_PWEN2|PWMCTL_MODE2|PWMCTL_USEF1| PWMCTL_MODE1| PWMCTL_PWEN1;break;// Alternate bit to pin 1 and 2 - case pwm1pinrepeat:gpioreg[PWM_CTL] = PWMCTL_USEF1| PWMCTL_MODE1| PWMCTL_PWEN1|PWMCTL_RPTL1;break; // All serial go to 1 pin, repeat if empty : RF mode with PWM - } - usleep(100); - - return 0; - -} - -// ********************************** PCM GPIO (I2S) ********************************** - -pcmgpio::pcmgpio():gpio(GetPeripheralBase()+PCM_BASE,PCM_LEN) -{ - gpioreg[PCM_CS_A] = 1; // Disable Rx+Tx, Enable PCM block -} - -pcmgpio::~pcmgpio() -{ - -} - -int pcmgpio::SetPllNumber(int PllNo,int MashType) -{ - if(PllNo<8) - pllnumber=PllNo; - else - pllnumber=clk_pllc; - if(MashType<4) - Mash=MashType; - else - Mash=0; - clk.gpioreg[PCMCLK_CNTL]= 0x5A000000 | (Mash << 9) | pllnumber|(1 << 4) ; //4 is START CLK - Pllfrequency=GetPllFrequency(pllnumber); - return 0; -} - -uint64_t pcmgpio::GetPllFrequency(int PllNo) -{ - return clk.GetPllFrequency(PllNo); - -} - -int pcmgpio::ComputePrediv(uint64_t Frequency) -{ - int prediv=5; - for(prediv=10;prediv<1000;prediv++) - { - double Freqresult=(double)Pllfrequency/(double)(Frequency*prediv); - if((Freqresult<4096.0)&&(Freqresult>2.0)) - { - fprintf(stderr,"PCM prediv = %d\n",prediv); - break; - } - } - return prediv; -} - -int pcmgpio::SetFrequency(uint64_t Frequency) -{ - Prediv=ComputePrediv(Frequency); - double Freqresult=(double)Pllfrequency/(double)(Frequency*Prediv); - uint32_t FreqDivider=(uint32_t)Freqresult; - uint32_t FreqFractionnal=(uint32_t) (4096*(Freqresult-(double)FreqDivider)); - fprintf(stderr,"PCM clk=%d / %d\n",FreqDivider,FreqFractionnal); - if((FreqDivider>4096)||(FreqDivider<2)) fprintf(stderr,"PCM Frequency out of range\n"); - clk.gpioreg[PCMCLK_DIV] = 0x5A000000 | ((FreqDivider)<<12) | FreqFractionnal; - SetPrediv(Prediv); - return 0; - -} - -int pcmgpio::SetPrediv(int predivisor) //Carefull we use a 10 fixe divisor for now : frequency is thus f/10 as a samplerate -{ - if(predivisor>1000) - { - fprintf(stderr,"PCM prediv should be <1000"); - predivisor=1000; - } - - gpioreg[PCM_TXC_A] = 0<<31 | 1<<30 | 0<<20 | 0<<16; // 1 channel, 8 bits - usleep(100); - - //printf("Nb PCM STEP (<1000):%d\n",NbStepPCM); - gpioreg[PCM_MODE_A] = (predivisor-1)<<10; // SHOULD NOT EXCEED 1000 !!! - usleep(100); - gpioreg[PCM_CS_A] |= 1<<4 | 1<<3; // Clear FIFOs - usleep(100); - gpioreg[PCM_DREQ_A] = 64<<24 | 64<<8 ; //TX Fifo PCM=64 DMA Req when one slot is free? - usleep(100); - gpioreg[PCM_CS_A] |= 1<<9; // Enable DMA - usleep(100); - gpioreg[PCM_CS_A] |= 1<<2; //START TX PCM - - return 0; - -} - - -// ********************************** PADGPIO (Amplitude) ********************************** - -padgpio::padgpio():gpio(GetPeripheralBase()+PADS_GPIO,PADS_GPIO_LEN) -{ - -} - -padgpio::~padgpio() -{ - -} - - - diff --git a/src/gpio.h b/src/gpio.h deleted file mode 100644 index 820f9cd..0000000 --- a/src/gpio.h +++ /dev/null @@ -1,284 +0,0 @@ -#ifndef DEF_GPIO -#define DEF_GPIO -#include "stdint.h" - - - - -class gpio -{ - - public: - volatile uint32_t *gpioreg; - gpio(uint32_t base, uint32_t len); - - uint32_t GetPeripheralBase(); -}; - - -#define DMA_BASE (0x00007000 ) -#define DMA_LEN 0xF00 - -#define BCM2708_DMA_SRC_IGNOR (1<<11) -#define BCM2708_DMA_SRC_INC (1<<8) -#define BCM2708_DMA_DST_IGNOR (1<<7) -#define BCM2708_DMA_NO_WIDE_BURSTS (1<<26) -#define BCM2708_DMA_WAIT_RESP (1<<3) -#define BCM2708_DMA_SET_INT (1<<0) - -#define BCM2708_DMA_D_DREQ (1<<6) -#define BCM2708_DMA_PER_MAP(x) ((x)<<16) -#define BCM2708_DMA_END (1<<1) -#define BCM2708_DMA_RESET (1<<31) -#define BCM2708_DMA_ABORT (1<<30) -#define BCM2708_DMA_INT (1<<2) - -#define DMA_CS (0x00/4) -#define DMA_CONBLK_AD (0x04/4) -#define DMA_DEBUG (0x20/4) - -#define DMA_CS_RESET (1<<31) -#define DMA_CS_ABORT (1<<30) -#define DMA_CS_DISDEBUG (1<<28) -#define DMA_CS_INT (1<<2) -#define DMA_CS_END (1<<1) -#define DMA_CS_ACTIVE (1<<0) -#define DMA_CS_PRIORITY(x) ((x)&0xf << 16) -#define DMA_CS_PANIC_PRIORITY(x) ((x)&0xf << 20) - -class dmagpio:public gpio -{ - - public: - dmagpio(); - - -}; - -//************************************ GENERAL GPIO *************************************** - -#define GENERAL_BASE (0x00200000) -#define GENERAL_LEN 0xB4 - -#define GPFSEL0 (0x00/4) -#define GPFSEL1 (0x04/4) -#define GPFSEL2 (0x08/4) -#define GPPUD (0x94/4) -#define GPPUDCLK0 (0x9C/4) - -enum {fsel_input,fsel_output,fsel_alt5,fsel_alt4,fsel_alt0,fsel_alt1,fsel_alt2,fsel_alt3}; - -class generalgpio:public gpio -{ - - public: - generalgpio(); - int setmode(uint32_t gpio, uint32_t mode); - ~generalgpio(); - -}; - -// Add for PLL frequency CTRL wihout divider -// https://github.com/raspberrypi/linux/blob/rpi-4.9.y/drivers/clk/bcm/clk-bcm2835.c -// See interesting patch for jitter https://github.com/raspberrypi/linux/commit/76527b4e6a5dbe55e0b2d8ab533c2388b36c86be - -#define CLK_BASE (0x00101000) -#define CLK_LEN 0x1300 - -#define CORECLK_CNTL (0x08/4) -#define CORECLK_DIV (0x0c/4) -#define GPCLK_CNTL (0x70/4) -#define GPCLK_DIV (0x74/4) -#define EMMCCLK_CNTL (0x1C0/4) -#define EMMCCLK_DIV (0x1C4/4) - -#define CM_LOCK (0x114/4) -# define CM_LOCK_FLOCKH (1<<12) -# define CM_LOCK_FLOCKD (1<<11) -# define CM_LOCK_FLOCKC (1<<10) -# define CM_LOCK_FLOCKB (1<<9) -# define CM_LOCK_FLOCKA (1<<8) - -#define PLLA_CTRL (0x1100/4) -#define PLLA_FRAC (0x1200/4) -#define PLLA_DSI0 (0x1300/4) -#define PLLA_CORE (0x1400/4) -#define PLLA_PER (0x1500/4) -#define PLLA_CCP2 (0x1600/4) - -#define PLLB_CTRL (0x11e0/4) -#define PLLB_FRAC (0x12e0/4) -#define PLLB_ARM (0x13e0/4) -#define PLLB_SP0 (0x14e0/4) -#define PLLB_SP1 (0x15e0/4) -#define PLLB_SP2 (0x16e0/4) - -#define PLLC_CTRL (0x1120/4) -#define PLLC_FRAC (0x1220/4) -#define PLLC_CORE2 (0x1320/4) -#define PLLC_CORE1 (0x1420/4) -#define PLLC_PER (0x1520/4) -#define PLLC_CORE0 (0x1620/4) - -#define PLLD_CTRL (0x1140/4) -#define PLLD_FRAC (0x1240/4) -#define PLLD_DSI0 (0x1340/4) -#define PLLD_CORE (0x1440/4) -#define PLLD_PER (0x1540/4) -#define PLLD_DSI1 (0x1640/4) - -#define PLLH_CTRL (0x1160/4) -#define PLLH_FRAC (0x1260/4) -#define PLLH_AUX (0x1360/4) -#define PLLH_RCAL (0x1460/4) -#define PLLH_PIX (0x1560/4) -#define PLLH_STS (0x1660/4) - -#define XOSC_CTRL (0x1190/4) -#define XOSC_FREQUENCY 19200000 - -enum {clk_gnd,clk_osc,clk_debug0,clk_debug1,clk_plla,clk_pllc,clk_plld,clk_hdmi}; - -class clkgpio:public gpio -{ - protected: - int pllnumber; - int Mash; - uint64_t Pllfrequency; - bool ModulateFromMasterPLL=false; - uint64_t CentralFrequency=0; - generalgpio gengpio; - public: - int PllFixDivider=8; //Fix divider from the master clock in advanced mode - - clkgpio(); - ~clkgpio(); - int SetPllNumber(int PllNo,int MashType); - uint64_t GetPllFrequency(int PllNo); - void print_clock_tree(void); - int SetFrequency(int Frequency); - int SetClkDivFrac(uint32_t Div,uint32_t Frac); - void SetPhase(bool inversed); - void SetAdvancedPllMode(bool Advanced); - int SetCenterFrequency(uint64_t Frequency,int Bandwidth); - int ComputeBestLO(uint64_t Frequency,int Bandwidth); - int SetMasterMultFrac(uint32_t Mult,uint32_t Frac); - uint32_t GetMasterFrac(int Frequency); - void enableclk(int gpio); - void disableclk(int gpio); - -}; - - - - -//************************************ PWM GPIO *************************************** - -#define PWM_BASE (0x0020C000) -#define PWM_LEN 0x28 - -#define PWM_CTL (0x00/4) -#define PWM_DMAC (0x08/4) -#define PWM_RNG1 (0x10/4) -#define PWM_RNG2 (0x20/4) -#define PWM_FIFO (0x18/4) - -#define PWMCLK_CNTL (40) // Clk register -#define PWMCLK_DIV (41) // Clk register - - -#define PWMCTL_MSEN2 (1<<15) -#define PWMCTL_USEF2 (1<<13) -#define PWMCTL_RPTL2 (1<<10) -#define PWMCTL_MODE2 (1<<9) -#define PWMCTL_PWEN2 (1<<8) - -#define PWMCTL_MSEN1 (1<<7) -#define PWMCTL_CLRF (1<<6) -#define PWMCTL_USEF1 (1<<5) -#define PWMCTL_POLA1 (1<<4) -#define PWMCTL_RPTL1 (1<<2) -#define PWMCTL_MODE1 (1<<1) -#define PWMCTL_PWEN1 (1<<0) -#define PWMDMAC_ENAB (1<<31) -#define PWMDMAC_THRSHLD ((15<<8)|(15<<0)) -enum pwmmode{pwm1pin,pwm2pin,pwm1pinrepeat}; - -class pwmgpio:public gpio -{ - protected: - clkgpio clk; - int pllnumber; - int Mash; - int Prediv; //Range of PWM - uint64_t Pllfrequency; - bool ModulateFromMasterPLL=false; - int ModePwm=pwm1pin; - generalgpio gengpio; - public: - pwmgpio(); - ~pwmgpio(); - int SetPllNumber(int PllNo,int MashType); - uint64_t GetPllFrequency(int PllNo); - int SetFrequency(uint64_t Frequency); - int SetPrediv(int predivisor); - void SetMode(int Mode); - void enablepwm(int gpio,int PwmNumber); - void disablepwm(int gpio); -}; - -//******************************* PCM GPIO (I2S) *********************************** -#define PCM_BASE (0x00203000) -#define PCM_LEN 0x24 - -#define PCM_CS_A (0x00/4) -#define PCM_FIFO_A (0x04/4) -#define PCM_MODE_A (0x08/4) -#define PCM_RXC_A (0x0c/4) -#define PCM_TXC_A (0x10/4) -#define PCM_DREQ_A (0x14/4) -#define PCM_INTEN_A (0x18/4) -#define PCM_INT_STC_A (0x1c/4) -#define PCM_GRAY (0x20/4) - -#define PCMCLK_CNTL (38) // Clk register -#define PCMCLK_DIV (39) // Clk register - -class pcmgpio:public gpio -{ - protected: - clkgpio clk; - int pllnumber; - int Mash; - int Prediv; //Range of PCM - - uint64_t Pllfrequency; - int SetPrediv(int predivisor); - - public: - pcmgpio(); - ~pcmgpio(); - int SetPllNumber(int PllNo,int MashType); - uint64_t GetPllFrequency(int PllNo); - int SetFrequency(uint64_t Frequency); - int ComputePrediv(uint64_t Frequency); - -}; - -//******************************* PAD GPIO (Amplitude) *********************************** -#define PADS_GPIO (0x00100000) -#define PADS_GPIO_LEN (0x40/4) - -#define PADS_GPIO_0 (0x2C/4) -#define PADS_GPIO_1 (0x30/4) -#define PADS_GPIO_2 (0x34/4) - -class padgpio:public gpio -{ - - public: - padgpio(); - ~padgpio(); -}; - -#endif diff --git a/src/iqdmasync.cpp b/src/iqdmasync.cpp deleted file mode 100644 index 73087af..0000000 --- a/src/iqdmasync.cpp +++ /dev/null @@ -1,149 +0,0 @@ -// Inspired by https://github.com/SaucySoliton/PiFmRds/blob/master/src/pi_fm_rds.c - - -#include "stdio.h" -#include "iqdmasync.h" - - -iqdmasync::iqdmasync(uint64_t TuneFrequency,uint32_t SampleRate,int Channel,uint32_t FifoSize):bufferdma(Channel,FifoSize,4,3) -{ -// Usermem : -// FRAC frequency -// PAD Amplitude -// FSEL for amplitude 0 - - tunefreq=TuneFrequency; - clkgpio::SetAdvancedPllMode(true); - clkgpio::SetCenterFrequency(TuneFrequency,SampleRate); // Write Mult Int and Frac : FixMe carrier is already there - clkgpio::SetFrequency(0); - clkgpio::enableclk(4); - syncwithpwm=false; - - if(syncwithpwm) - { - pwmgpio::SetPllNumber(clk_plld,1); - pwmgpio::SetFrequency(SampleRate); - } - else - { - pcmgpio::SetPllNumber(clk_plld,1); - pcmgpio::SetFrequency(SampleRate); - } - - mydsp.samplerate=SampleRate; - - padgpio pad; - Originfsel=pad.gpioreg[PADS_GPIO_0]; - - SetDmaAlgo(); - - - // Note : Spurious are at +/-(19.2MHZ/2^20)*Div*N : (N=1,2,3...) So we need to have a big div to spurious away BUT - // Spurious are ALSO at +/-(19.2MHZ/2^20)*(2^20-Div)*N - // Max spurious avoid is to be in the center ! Theory shoud be that spurious are set away at 19.2/2= 9.6Mhz ! But need to get account of div of PLLClock - -} - -iqdmasync::~iqdmasync() -{ - padgpio pad; - pad.gpioreg[PADS_GPIO_0]=Originfsel; - clkgpio::disableclk(4); -} - -void iqdmasync::SetPhase(bool inversed) -{ - clkgpio::SetPhase(inversed); -} - -void iqdmasync::SetDmaAlgo() -{ - dma_cb_t *cbp = cbarray; - for (uint32_t samplecnt = 0; samplecnt < buffersize; samplecnt++) - { - - //@0 - //Set Amplitude by writing to PADS - cbp->info = 0;//BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[samplecnt*registerbysample+1]); - cbp->dst = 0x7E000000+(PADS_GPIO_0<<2)+PADS_GPIO; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - cbp++; - - //@1 - //Set Amplitude to FSEL for amplitude=0 - cbp->info = 0;//BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[samplecnt*registerbysample+2]); - cbp->dst = 0x7E000000 + (GPFSEL0<<2)+GENERAL_BASE; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - cbp++; - - //@2 Write a frequency sample - - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[samplecnt*registerbysample]); - cbp->dst = 0x7E000000 + (PLLA_FRAC<<2) + CLK_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - - //@3 Delay - if(syncwithpwm) - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PWM); - else - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PCM_TX); - cbp->src = mem_virt_to_phys(cbarray); // Data is not important as we use it only to feed the PWM - if(syncwithpwm) - cbp->dst = 0x7E000000 + (PWM_FIFO<<2) + PWM_BASE ; - else - cbp->dst = 0x7E000000 + (PCM_FIFO_A<<2) + PCM_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - } - - cbp--; - cbp->next = mem_virt_to_phys(cbarray); // We loop to the first CB - //fprintf(stderr,"Last cbp : src %x dest %x next %x\n",cbp->src,cbp->dst,cbp->next); -} - - -void iqdmasync::SetIQSample(uint32_t Index,liquid_float_complex sample) -{ - Index=Index%buffersize; - mydsp.pushsample(sample); - /*if(mydsp.frequency>2250) mydsp.frequency=2250; - if(mydsp.frequency<1000) mydsp.frequency=1000;*/ - sampletab[Index*registerbysample]=(0x5A<<24)|GetMasterFrac(mydsp.frequency); //Frequency - int IntAmplitude=(int)(mydsp.amplitude*1e4*8.0)-1; - - int IntAmplitudePAD=0; - if(IntAmplitude>7) IntAmplitudePAD=7; - if(IntAmplitude<0) IntAmplitudePAD=0; - sampletab[Index*registerbysample+1]=(0x5A<<24) + (IntAmplitudePAD&0x7) + (1<<4) + (0<<3); // Amplitude PAD - - //sampletab[Index*registerbysample+2]=(Originfsel & ~(7 << 12)) | (4 << 12); //Alternate is CLK - if(IntAmplitude==-1) - { - sampletab[Index*registerbysample+2]=(Originfsel & ~(7 << 12)) | (0 << 12); //Pin is in -> Amplitude 0 - } - else - { - sampletab[Index*registerbysample+2]=(Originfsel & ~(7 << 12)) | (4 << 12); //Alternate is CLK - } - - //fprintf(stderr,"amp%f %d\n",mydsp.amplitude,IntAmplitudePAD); - PushSample(Index); -} - - diff --git a/src/iqdmasync.h b/src/iqdmasync.h deleted file mode 100644 index 2422f1b..0000000 --- a/src/iqdmasync.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef DEF_IQDMASYNC -#define DEF_IQDMASYNC - -#include "stdint.h" -#include "dma.h" -#include "gpio.h" -#include "dsp.h" -#include - - -class iqdmasync:public bufferdma,public clkgpio,public pwmgpio,public pcmgpio -{ - protected: - uint64_t tunefreq; - bool syncwithpwm; - dsp mydsp; - uint32_t Originfsel; //Save the original FSEL GPIO - public: - iqdmasync(uint64_t TuneFrequency,uint32_t SampleRate,int Channel,uint32_t FifoSize); - ~iqdmasync(); - void SetDmaAlgo(); - - void SetPhase(bool inversed); - void SetIQSample(uint32_t Index,liquid_float_complex sample); -}; - -#endif diff --git a/src/librpitx.h b/src/librpitx.h deleted file mode 100644 index 9807e5f..0000000 --- a/src/librpitx.h +++ /dev/null @@ -1,10 +0,0 @@ -#include "dma.h" -#include "gpio.h" -#include "fmdmasync.h" -#include "ngfmdmasync.h" -#include "iqdmasync.h" -#include "serialdmasync.h" -#include "phasedmasync.h" -#include "amdmasync.h" -#include "fskburst.h" -#include "dsp.h" diff --git a/src/mailbox.c b/src/mailbox.c deleted file mode 100644 index 4223d4b..0000000 --- a/src/mailbox.c +++ /dev/null @@ -1,280 +0,0 @@ -/* -Copyright (c) 2012, Broadcom Europe Ltd. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * 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. -*/ - - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "mailbox.h" - - - -void *mapmem(unsigned base, unsigned size) -{ - int mem_fd; - unsigned offset = base % PAGE_SIZE; - base = base - offset; - /* open /dev/mem */ - if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) { - printf("can't open /dev/mem\nThis program should be run as root. Try prefixing command with: sudo\n"); - exit (-1); - } - void *mem = mmap( - 0, - size, - PROT_READ|PROT_WRITE, - MAP_SHARED/*|MAP_FIXED*/, - mem_fd, - base); -#ifdef DEBUG - printf("base=0x%x, mem=%p\n", base, mem); -#endif - if (mem == MAP_FAILED) { - printf("mmap error %d\n", (int)mem); - exit (-1); - } - close(mem_fd); - return (char *)mem + offset; -} - -void *unmapmem(void *addr, unsigned size) -{ - int s = munmap(addr, size); - if (s != 0) { - printf("munmap error %d\n", s); - exit (-1); - } - - return NULL; -} - -/* - * use ioctl to send mbox property message - */ - -static int mbox_property(int file_desc, void *buf) -{ - int ret_val = ioctl(file_desc, IOCTL_MBOX_PROPERTY, buf); - - if (ret_val < 0) { - printf("ioctl_set_msg failed:%d\n", ret_val); - } - -#ifdef DEBUG - unsigned *p = buf; int i; unsigned size = *(unsigned *)buf; - for (i=0; i= 0) { - printf("Using mbox device " VCIO_DEVICE_FILE_NAME ".\n"); - return file_desc; - } - - // Try to create one - unlink(LOCAL_DEVICE_FILE_NAME); - if(mknod(LOCAL_DEVICE_FILE_NAME, S_IFCHR|0600, makedev(MAJOR_NUM_A, 0)) >= 0 && - (file_desc = open(LOCAL_DEVICE_FILE_NAME, 0)) >= 0) { - printf("Using local mbox device file with major %d.\n", MAJOR_NUM_A); - return file_desc; - } - - unlink(LOCAL_DEVICE_FILE_NAME); - if(mknod(LOCAL_DEVICE_FILE_NAME, S_IFCHR|0600, makedev(MAJOR_NUM_B, 0)) >= 0 && - (file_desc = open(LOCAL_DEVICE_FILE_NAME, 0)) >= 0) { - printf("Using local mbox device file with major %d.\n", MAJOR_NUM_B); - return file_desc; - } - - - return file_desc; -} - -void mbox_close(int file_desc) { - close(file_desc); -} diff --git a/src/mailbox.h b/src/mailbox.h deleted file mode 100644 index 566f0d3..0000000 --- a/src/mailbox.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -Copyright (c) 2012, Broadcom Europe Ltd. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * 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. -*/ - -#ifndef DEF_MAILBOX - -#include -// Newer kernels (>= 4.1) use major 249, older ones major 100. -#define MAJOR_NUM_A 249 -#define MAJOR_NUM_B 100 -#define IOCTL_MBOX_PROPERTY _IOWR(MAJOR_NUM_B, 0, char *) - -#define LOCAL_DEVICE_FILE_NAME "/dev/rpidatv-mb" -#define VCIO_DEVICE_FILE_NAME "/dev/vcio" - -#define PAGE_SIZE (4*1024) - - -int mbox_open(); -void mbox_close(int file_desc); - -unsigned get_version(int file_desc); -unsigned mem_alloc(int file_desc, unsigned size, unsigned align, unsigned flags); -unsigned mem_free(int file_desc, unsigned handle); -unsigned mem_lock(int file_desc, unsigned handle); -unsigned mem_unlock(int file_desc, unsigned handle); -void *mapmem(unsigned base, unsigned size); -void *unmapmem(void *addr, unsigned size); - -unsigned execute_code(int file_desc, unsigned code, unsigned r0, unsigned r1, unsigned r2, unsigned r3, unsigned r4, unsigned r5); -unsigned execute_qpu(int file_desc, unsigned num_qpus, unsigned control, unsigned noflush, unsigned timeout); -unsigned qpu_enable(int file_desc, unsigned enable); -#endif diff --git a/src/ngfmdmasync.cpp b/src/ngfmdmasync.cpp deleted file mode 100644 index 809e204..0000000 --- a/src/ngfmdmasync.cpp +++ /dev/null @@ -1,101 +0,0 @@ -// Inspired by https://github.com/SaucySoliton/PiFmRds/blob/master/src/pi_fm_rds.c - - -#include "stdio.h" -#include "ngfmdmasync.h" - - -ngfmdmasync::ngfmdmasync(uint64_t TuneFrequency,uint32_t SampleRate,int Channel,uint32_t FifoSize):bufferdma(Channel,FifoSize,2,1) -{ - - - tunefreq=TuneFrequency; - clkgpio::SetAdvancedPllMode(true); - clkgpio::SetCenterFrequency(TuneFrequency,SampleRate); // Write Mult Int and Frac : FixMe carrier is already there - clkgpio::SetFrequency(0); - clkgpio::enableclk(4); // GPIO 4 CLK by default - syncwithpwm=false; - - if(syncwithpwm) - { - pwmgpio::SetPllNumber(clk_plld,1); - pwmgpio::SetFrequency(SampleRate); - } - else - { - pcmgpio::SetPllNumber(clk_plld,1); - pcmgpio::SetFrequency(SampleRate); - } - - - - SetDmaAlgo(); - - - // Note : Spurious are at +/-(19.2MHZ/2^20)*Div*N : (N=1,2,3...) So we need to have a big div to spurious away BUT - // Spurious are ALSO at +/-(19.2MHZ/2^20)*(2^20-Div)*N - // Max spurious avoid is to be in the center ! Theory shoud be that spurious are set away at 19.2/2= 9.6Mhz ! But need to get account of div of PLLClock - -} - -ngfmdmasync::~ngfmdmasync() -{ - clkgpio::disableclk(4); -} - -void ngfmdmasync::SetPhase(bool inversed) -{ - clkgpio::SetPhase(inversed); -} - -void ngfmdmasync::SetDmaAlgo() -{ - dma_cb_t *cbp = cbarray; - for (uint32_t samplecnt = 0; samplecnt < buffersize; samplecnt++) - { - - - // Write a frequency sample - - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[samplecnt*registerbysample]); - cbp->dst = 0x7E000000 + (PLLA_FRAC<<2) + CLK_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - - // Delay - if(syncwithpwm) - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PWM); - else - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PCM_TX); - cbp->src = mem_virt_to_phys(cbarray); // Data is not important as we use it only to feed the PWM - if(syncwithpwm) - cbp->dst = 0x7E000000 + (PWM_FIFO<<2) + PWM_BASE ; - else - cbp->dst = 0x7E000000 + (PCM_FIFO_A<<2) + PCM_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - } - - cbp--; - cbp->next = mem_virt_to_phys(cbarray); // We loop to the first CB - //fprintf(stderr,"Last cbp : src %x dest %x next %x\n",cbp->src,cbp->dst,cbp->next); -} - -void ngfmdmasync::SetFrequencySample(uint32_t Index,int Frequency) -{ - Index=Index%buffersize; - sampletab[Index]=(0x5A<<24)|GetMasterFrac(Frequency); - //fprintf(stderr,"Frac=%d\n",GetMasterFrac(Frequency)); - PushSample(Index); -} - - diff --git a/src/ngfmdmasync.h b/src/ngfmdmasync.h deleted file mode 100644 index 872df8f..0000000 --- a/src/ngfmdmasync.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef DEF_NGFMDMASYNC -#define DEF_NGFMDMASYNC - -#include "stdint.h" -#include "dma.h" -#include "gpio.h" - -class ngfmdmasync:public bufferdma,public clkgpio,public pwmgpio,public pcmgpio -{ - protected: - uint64_t tunefreq; - bool syncwithpwm; - public: - ngfmdmasync(uint64_t TuneFrequency,uint32_t SampleRate,int Channel,uint32_t FifoSize); - ~ngfmdmasync(); - void SetDmaAlgo(); - - void SetPhase(bool inversed); - void SetFrequencySample(uint32_t Index,int Frequency); -}; - -#endif diff --git a/src/phasedmasync.cpp b/src/phasedmasync.cpp deleted file mode 100644 index 75462bb..0000000 --- a/src/phasedmasync.cpp +++ /dev/null @@ -1,117 +0,0 @@ - - -#include "stdio.h" -#include "phasedmasync.h" -#include - -phasedmasync::phasedmasync(uint64_t TuneFrequency,uint32_t SampleRate,int NumberOfPhase,int Channel,uint32_t FifoSize):bufferdma(Channel,FifoSize,2,1) // Number of phase between 2 and 16 -{ - - SetMode(pwm1pinrepeat); - pwmgpio::SetPllNumber(clk_plla,0); - - tunefreq=TuneFrequency*NumberOfPhase; - - if((NumberOfPhase==2)||(NumberOfPhase==4)||(NumberOfPhase==8)||(NumberOfPhase==16)||(NumberOfPhase==32)) - NumbPhase=NumberOfPhase; - else - fprintf(stderr,"PWM critical error: %d is not a legal number of phase\n",NumberOfPhase); - clkgpio::SetAdvancedPllMode(true); - - clkgpio::ComputeBestLO(tunefreq,0); // compute PWM divider according to MasterPLL clkgpio::PllFixDivider - double FloatMult=((double)(tunefreq)*clkgpio::PllFixDivider)/(double)(XOSC_FREQUENCY); - uint32_t freqctl = FloatMult*((double)(1<<20)) ; - int IntMultiply= freqctl>>20; // Need to be calculated to have a center frequency - freqctl&=0xFFFFF; // Fractionnal is 20bits - uint32_t FracMultiply=freqctl&0xFFFFF; - clkgpio::SetMasterMultFrac(IntMultiply,FracMultiply); - fprintf(stderr,"PWM Mult %d Frac %d Div %d\n",IntMultiply,FracMultiply,clkgpio::PllFixDivider); - - - pwmgpio::clk.gpioreg[PWMCLK_DIV] = 0x5A000000 | ((clkgpio::PllFixDivider)<<12); // PWM clock input divider - usleep(100); - pwmgpio::clk.gpioreg[PWMCLK_CNTL]= 0x5A000000 | (pwmgpio::Mash << 9) | pwmgpio::pllnumber|(1 << 4) ; //4 is START CLK - usleep(100); - pwmgpio::SetPrediv(32); //SetMode should be called before - - - - enablepwm(12,0); // By default PWM on GPIO 12/pin 32 - - - pcmgpio::SetPllNumber(clk_plld,1);// Clk for Samplerate by PCM - pcmgpio::SetFrequency(SampleRate); - - - - SetDmaAlgo(); - - uint32_t ZeroPhase=0; - switch(NumbPhase) - { - case 2:ZeroPhase=0xAAAAAAAA;break;//1,0,1,0 1,0,1,0 - case 4:ZeroPhase=0xCCCCCCCC;break;//1,1,0,0 //4 - case 8:ZeroPhase=0xF0F0F0F0;break;//1,1,1,1,0,0,0,0 //8 - case 16:ZeroPhase=0xFF00FF00;break;//1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0 //16 - case 32:ZeroPhase=0xFFFF0000;break;//1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //32 - default:fprintf(stderr,"Zero phase not initialized\n");break; - } - - for(int i=0;i>31); - } - - -} - -phasedmasync::~phasedmasync() -{ - disablepwm(12); -} - - -void phasedmasync::SetDmaAlgo() -{ - dma_cb_t *cbp = cbarray; - for (uint32_t samplecnt = 0; samplecnt < buffersize; samplecnt++) - { - - - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP ; - cbp->src = mem_virt_to_phys(&usermem[samplecnt*registerbysample]); - cbp->dst = 0x7E000000 + (PWM_FIFO<<2) + PWM_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PCM_TX); - cbp->src = mem_virt_to_phys(cbarray); // Data is not important as we use it only to feed the PWM - cbp->dst = 0x7E000000 + (PCM_FIFO_A<<2) + PCM_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - } - - cbp--; - cbp->next = mem_virt_to_phys(cbarray); // We loop to the first CB - //fprintf(stderr,"Last cbp : src %x dest %x next %x\n",cbp->src,cbp->dst,cbp->next); -} - -void phasedmasync::SetPhase(uint32_t Index,int Phase) -{ - Index=Index%buffersize; - Phase=Phase%NumbPhase; - sampletab[Index]=TabPhase[Phase]; - PushSample(Index); - -} - - diff --git a/src/phasedmasync.h b/src/phasedmasync.h deleted file mode 100644 index 89b1757..0000000 --- a/src/phasedmasync.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef DEF_PHASEDMASYNC -#define DEF_PHASEDMASYNC - -#include "stdint.h" -#include "dma.h" -#include "gpio.h" - -class phasedmasync:public bufferdma,public clkgpio,public pwmgpio,public pcmgpio,public generalgpio -{ - protected: - uint64_t tunefreq; - int NumbPhase=2; - - uint32_t TabPhase[32];//32 is Max Phase - public: - phasedmasync(uint64_t TuneFrequency,uint32_t SampleRate,int NumberOfPhase,int Channel,uint32_t FifoSize); - ~phasedmasync(); - void SetDmaAlgo(); - void SetPhase(uint32_t Index,int Phase); - -}; -#endif diff --git a/src/raspberry_pi_revision.c b/src/raspberry_pi_revision.c deleted file mode 100644 index 1caf6a1..0000000 --- a/src/raspberry_pi_revision.c +++ /dev/null @@ -1,763 +0,0 @@ -//------------------------------------------------------------------------- -// -// The MIT License (MIT) -// -// Copyright (c) 2015 Andrew Duncan -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -//------------------------------------------------------------------------- - -#include -#include -#include -#include - -#include "raspberry_pi_revision.h" - -//------------------------------------------------------------------------- -// -// The file /proc/cpuinfo contains a line such as:- -// -// Revision : 0003 -// -// that holds the revision number of the Raspberry Pi. -// Known revisions (prior to the Raspberry Pi 2) are: -// -// +----------+---------+---------+--------+-------------+ -// | Revision | Model | PCB Rev | Memory | Manufacture | -// +----------+---------+---------+--------+-------------+ -// | 0000 | | | | | -// | 0001 | | | | | -// | 0002 | B | 1 | 256 MB | | -// | 0003 | B | 1 | 256 MB | | -// | 0004 | B | 2 | 256 MB | Sony | -// | 0005 | B | 2 | 256 MB | Qisda | -// | 0006 | B | 2 | 256 MB | Egoman | -// | 0007 | A | 2 | 256 MB | Egoman | -// | 0008 | A | 2 | 256 MB | Sony | -// | 0009 | A | 2 | 256 MB | Qisda | -// | 000a | | | | | -// | 000b | | | | | -// | 000c | | | | | -// | 000d | B | 2 | 512 MB | Egoman | -// | 000e | B | 2 | 512 MB | Sony | -// | 000f | B | 2 | 512 MB | Qisda | -// | 0010 | B+ | 1 | 512 MB | Sony | -// | 0011 | compute | 1 | 512 MB | Sony | -// | 0012 | A+ | 1 | 256 MB | Sony | -// | 0013 | B+ | 1 | 512 MB | Embest | -// | 0014 | compute | 1 | 512 MB | Sony | -// | 0015 | A+ | 1 | 256 MB | Sony | -// +----------+---------+---------+--------+-------------+ -// -// If the Raspberry Pi has been over-volted (voiding the warranty) the -// revision number will have 100 at the front. e.g. 1000002. -// -//------------------------------------------------------------------------- -// -// With the release of the Raspberry Pi 2, there is a new encoding of the -// Revision field in /proc/cpuinfo. The bit fields are as follows -// -// +----+----+----+----+----+----+----+----+ -// |FEDC|BA98|7654|3210|FEDC|BA98|7654|3210| -// +----+----+----+----+----+----+----+----+ -// | | | | | | | |AAAA| -// | | | | | |BBBB|BBBB| | -// | | | | |CCCC| | | | -// | | | |DDDD| | | | | -// | | | EEE| | | | | | -// | | |F | | | | | | -// | | G| | | | | | | -// | | H | | | | | | | -// +----+----+----+----+----+----+----+----+ -// |1098|7654|3210|9876|5432|1098|7654|3210| -// +----+----+----+----+----+----+----+----+ -// -// +---+-------+--------------+--------------------------------------------+ -// | # | bits | contains | values | -// +---+-------+--------------+--------------------------------------------+ -// | A | 00-03 | PCB Revision | (the pcb revision number) | -// | B | 04-11 | Model name | A, B, A+, B+, B Pi2, Alpha, Compute Module | -// | | | | unknown, unknown, Zero | -// | C | 12-15 | Processor | BCM2835, BCM2836, BCM2837 | -// | D | 16-19 | Manufacturer | Sony, Egoman, Embest, unknown, Embest | -// | E | 20-22 | Memory size | 256 MB, 512 MB, 1024 MB | -// | F | 23-23 | encoded flag | (if set, revision is a bit field) | -// | G | 24-24 | waranty bit | (if set, warranty void - Pre Pi2) | -// | H | 25-25 | waranty bit | (if set, warranty void - Post Pi2) | -// +---+-------+--------------+--------------------------------------------+ -// -// Also, due to some early issues the warranty bit has been move from bit -// 24 to bit 25 of the revision number (i.e. 0x2000000). -// -// e.g. -// -// Revision : A01041 -// -// A - PCB Revision - 1 (first revision) -// B - Model Name - 4 (Model B Pi 2) -// C - Processor - 1 (BCM2836) -// D - Manufacturer - 0 (Sony) -// E - Memory - 2 (1024 MB) -// F - Endcoded flag - 1 (encoded cpu info) -// -// Revision : A21041 -// -// A - PCB Revision - 1 (first revision) -// B - Model Name - 4 (Model B Pi 2) -// C - Processor - 1 (BCM2836) -// D - Manufacturer - 2 (Embest) -// E - Memory - 2 (1024 MB) -// F - Endcoded flag - 1 (encoded cpu info) -// -// Revision : 900092 -// -// A - PCB Revision - 2 (second revision) -// B - Model Name - 9 (Model Zero) -// C - Processor - 0 (BCM2835) -// D - Manufacturer - 0 (Sony) -// E - Memory - 1 (512 MB) -// F - Endcoded flag - 1 (encoded cpu info) -// -// Revision : A02082 -// -// A - PCB Revision - 2 (first revision) -// B - Model Name - 8 (Model B Pi 3) -// C - Processor - 2 (BCM2837) -// D - Manufacturer - 0 (Sony) -// E - Memory - 2 (1024 MB) -// F - Endcoded flag - 1 (encoded cpu info) -// -//------------------------------------------------------------------------- - -static RASPBERRY_PI_MEMORY_T revisionToMemory[] = -{ - RPI_MEMORY_UNKNOWN, // 0 - RPI_MEMORY_UNKNOWN, // 1 - RPI_256MB, // 2 - RPI_256MB, // 3 - RPI_256MB, // 4 - RPI_256MB, // 5 - RPI_256MB, // 6 - RPI_256MB, // 7 - RPI_256MB, // 8 - RPI_256MB, // 9 - RPI_MEMORY_UNKNOWN, // A - RPI_MEMORY_UNKNOWN, // B - RPI_MEMORY_UNKNOWN, // C - RPI_512MB, // D - RPI_512MB, // E - RPI_512MB, // F - RPI_512MB, // 10 - RPI_512MB, // 11 - RPI_256MB, // 12 - RPI_512MB, // 13 - RPI_512MB, // 14 - RPI_256MB // 15 -}; - -static RASPBERRY_PI_MEMORY_T bitFieldToMemory[] = -{ - RPI_256MB, - RPI_512MB, - RPI_1024MB -}; - -//------------------------------------------------------------------------- - -static RASPBERRY_PI_PROCESSOR_T bitFieldToProcessor[] = -{ - RPI_BROADCOM_2835, - RPI_BROADCOM_2836, - RPI_BROADCOM_2837 -}; - -//------------------------------------------------------------------------- - -static RASPBERRY_PI_I2C_DEVICE_T revisionToI2CDevice[] = -{ - RPI_I2C_DEVICE_UNKNOWN, // 0 - RPI_I2C_DEVICE_UNKNOWN, // 1 - RPI_I2C_0, // 2 - RPI_I2C_0, // 3 - RPI_I2C_1, // 4 - RPI_I2C_1, // 5 - RPI_I2C_1, // 6 - RPI_I2C_1, // 7 - RPI_I2C_1, // 8 - RPI_I2C_1, // 9 - RPI_I2C_DEVICE_UNKNOWN, // A - RPI_I2C_DEVICE_UNKNOWN, // B - RPI_I2C_DEVICE_UNKNOWN, // C - RPI_I2C_1, // D - RPI_I2C_1, // E - RPI_I2C_1, // F - RPI_I2C_1, // 10 - RPI_I2C_1, // 11 - RPI_I2C_1, // 12 - RPI_I2C_1, // 13 - RPI_I2C_1, // 14 - RPI_I2C_1 // 15 -}; - -//------------------------------------------------------------------------- - -static RASPBERRY_PI_MODEL_T bitFieldToModel[] = -{ - RPI_MODEL_A, - RPI_MODEL_B, - RPI_MODEL_A_PLUS, - RPI_MODEL_B_PLUS, - RPI_MODEL_B_PI_2, - RPI_MODEL_ALPHA, - RPI_COMPUTE_MODULE, - RPI_MODEL_UNKNOWN, - RPI_MODEL_B_PI_3, - RPI_MODEL_ZERO -}; - -static RASPBERRY_PI_MODEL_T revisionToModel[] = -{ - RPI_MODEL_UNKNOWN, // 0 - RPI_MODEL_UNKNOWN, // 1 - RPI_MODEL_B, // 2 - RPI_MODEL_B, // 3 - RPI_MODEL_B, // 4 - RPI_MODEL_B, // 5 - RPI_MODEL_B, // 6 - RPI_MODEL_A, // 7 - RPI_MODEL_A, // 8 - RPI_MODEL_A, // 9 - RPI_MODEL_UNKNOWN, // A - RPI_MODEL_UNKNOWN, // B - RPI_MODEL_UNKNOWN, // C - RPI_MODEL_B, // D - RPI_MODEL_B, // E - RPI_MODEL_B, // F - RPI_MODEL_B_PLUS, // 10 - RPI_COMPUTE_MODULE, // 11 - RPI_MODEL_A_PLUS, // 12 - RPI_MODEL_B_PLUS, // 13 - RPI_COMPUTE_MODULE, // 14 - RPI_MODEL_A_PLUS // 15 -}; - -//------------------------------------------------------------------------- - -static RASPBERRY_PI_MANUFACTURER_T bitFieldToManufacturer[] = -{ - RPI_MANUFACTURER_SONY, - RPI_MANUFACTURER_EGOMAN, - RPI_MANUFACTURER_EMBEST, - RPI_MANUFACTURER_UNKNOWN, - RPI_MANUFACTURER_EMBEST -}; - -static RASPBERRY_PI_MANUFACTURER_T revisionToManufacturer[] = -{ - RPI_MANUFACTURER_UNKNOWN, // 0 - RPI_MANUFACTURER_UNKNOWN, // 1 - RPI_MANUFACTURER_UNKNOWN, // 2 - RPI_MANUFACTURER_UNKNOWN, // 3 - RPI_MANUFACTURER_SONY, // 4 - RPI_MANUFACTURER_QISDA, // 5 - RPI_MANUFACTURER_EGOMAN, // 6 - RPI_MANUFACTURER_EGOMAN, // 7 - RPI_MANUFACTURER_SONY, // 8 - RPI_MANUFACTURER_QISDA, // 9 - RPI_MANUFACTURER_UNKNOWN, // A - RPI_MANUFACTURER_UNKNOWN, // B - RPI_MANUFACTURER_UNKNOWN, // C - RPI_MANUFACTURER_EGOMAN, // D - RPI_MANUFACTURER_SONY, // E - RPI_MANUFACTURER_QISDA, // F - RPI_MANUFACTURER_SONY, // 10 - RPI_MANUFACTURER_SONY, // 11 - RPI_MANUFACTURER_SONY, // 12 - RPI_MANUFACTURER_EMBEST, // 13 - RPI_MANUFACTURER_SONY, // 14 - RPI_MANUFACTURER_SONY // 15 -}; - -//------------------------------------------------------------------------- - -static int revisionToPcbRevision[] = -{ - 0, // 0 - 0, // 1 - 1, // 2 - 1, // 3 - 2, // 4 - 2, // 5 - 2, // 6 - 2, // 7 - 2, // 8 - 2, // 9 - 0, // A - 0, // B - 0, // C - 2, // D - 2, // E - 2, // F - 1, // 10 - 1, // 11 - 1, // 12 - 1, // 13 - 1, // 14 - 1 // 15 -}; - -//------------------------------------------------------------------------- -// -// Remove leading and trailing whitespace from a string. - -static char * -trimWhiteSpace( - char *string) -{ - if (string == NULL) - { - return NULL; - } - - while (isspace(*string)) - { - string++; - } - - if (*string == '\0') - { - return string; - } - - char *end = string; - - while (*end) - { - ++end; - } - --end; - - while ((end > string) && isspace(*end)) - { - end--; - } - - *(end + 1) = 0; - return string; -} - -//------------------------------------------------------------------------- - -int -getRaspberryPiRevision() -{ - int raspberryPiRevision = 0; - - FILE *fp = fopen("/proc/cpuinfo", "r"); - - if (fp == NULL) - { - perror("/proc/cpuinfo"); - return raspberryPiRevision; - } - - char entry[80]; - - while (fgets(entry, sizeof(entry), fp) != NULL) - { - char* saveptr = NULL; - - char *key = trimWhiteSpace(strtok_r(entry, ":", &saveptr)); - char *value = trimWhiteSpace(strtok_r(NULL, ":", &saveptr)); - - if (strcasecmp("Revision", key) == 0) - { - raspberryPiRevision = strtol(value, NULL, 16); - } - } - - fclose(fp); - - return raspberryPiRevision; -} - -//------------------------------------------------------------------------- - -int -getRaspberryPiInformation( - RASPBERRY_PI_INFO_T *info) -{ - int revision = getRaspberryPiRevision(); - - return getRaspberryPiInformationForRevision(revision, info); -} - -//------------------------------------------------------------------------- - -int -getRaspberryPiInformationForRevision( - int revision, - RASPBERRY_PI_INFO_T *info) -{ - int result = 0; - - if (info != NULL) - { - info->memory = RPI_MEMORY_UNKNOWN; - info->processor = RPI_PROCESSOR_UNKNOWN; - info->i2cDevice = RPI_I2C_DEVICE_UNKNOWN; - info->model = RPI_MODEL_UNKNOWN; - info->manufacturer = RPI_MANUFACTURER_UNKNOWN; - info->pcbRevision = 0; - info->warrantyBit = 0; - info->revisionNumber = revision; - info->peripheralBase = RPI_PERIPHERAL_BASE_UNKNOWN; - - if (revision != 0) - { - size_t maxOriginalRevision = (sizeof(revisionToModel) / - sizeof(revisionToModel[0])) - 1; - - // remove warranty bit - - revision &= ~0x3000000; - - if (revision & 0x800000) - { - // Raspberry Pi2 style revision encoding - - result = 2; - - if (info->revisionNumber & 0x2000000) - { - info->warrantyBit = 1; - } - - int memoryIndex = (revision & 0x700000) >> 20; - size_t knownMemoryValues = sizeof(bitFieldToMemory) - / sizeof(bitFieldToMemory[0]); - - if (memoryIndex < knownMemoryValues) - { - info->memory = bitFieldToMemory[memoryIndex]; - } - else - { - info->memory = RPI_MEMORY_UNKNOWN; - } - - int processorIndex = (revision & 0xF000) >> 12; - size_t knownProcessorValues = sizeof(bitFieldToProcessor) - / sizeof(bitFieldToProcessor[0]); - if (processorIndex < knownProcessorValues) - { - info->processor = bitFieldToProcessor[processorIndex]; - } - else - { - info->processor = RPI_PROCESSOR_UNKNOWN; - } - - // If some future firmware changes the Rev number of - // older Raspberry Pis, then need to work out the i2c - // device. - - info->i2cDevice = RPI_I2C_1; - - int modelIndex = (revision & 0xFF0) >> 4; - size_t knownModelValues = sizeof(bitFieldToModel) - / sizeof(bitFieldToModel[0]); - - if (modelIndex < knownModelValues) - { - info->model = bitFieldToModel[modelIndex]; - } - else - { - info->model = RPI_MODEL_UNKNOWN; - } - - int madeByIndex = (revision & 0xF0000) >> 16; - size_t knownManufacturerValues = sizeof(bitFieldToManufacturer) - / sizeof(bitFieldToManufacturer[0]); - - if (madeByIndex < knownManufacturerValues) - { - info->manufacturer = bitFieldToManufacturer[madeByIndex]; - } - else - { - info->manufacturer = RPI_MANUFACTURER_UNKNOWN; - } - - info->pcbRevision = revision & 0xF; - } - else if (revision <= maxOriginalRevision) - { - // Original revision encoding - - result = 1; - - if (info->revisionNumber & 0x1000000) - { - info->warrantyBit = 1; - } - - info->memory = revisionToMemory[revision]; - info->i2cDevice = revisionToI2CDevice[revision]; - info->model = revisionToModel[revision]; - info->manufacturer = revisionToManufacturer[revision]; - info->pcbRevision = revisionToPcbRevision[revision]; - - if (info->model == RPI_MODEL_UNKNOWN) - { - info->processor = RPI_PROCESSOR_UNKNOWN; - } - else - { - info->processor = RPI_BROADCOM_2835; - } - } - } - - switch (info->processor) - { - case RPI_PROCESSOR_UNKNOWN: - - info->peripheralBase = RPI_PERIPHERAL_BASE_UNKNOWN; - break; - - case RPI_BROADCOM_2835: - - info->peripheralBase = RPI_BROADCOM_2835_PERIPHERAL_BASE; - break; - - case RPI_BROADCOM_2836: - - info->peripheralBase = RPI_BROADCOM_2836_PERIPHERAL_BASE; - break; - - case RPI_BROADCOM_2837: - - info->peripheralBase = RPI_BROADCOM_2837_PERIPHERAL_BASE; - break; - } - } - - return result; -} - -//------------------------------------------------------------------------- - -const char * -raspberryPiMemoryToString( - RASPBERRY_PI_MEMORY_T memory) -{ - const char *string = "unknown"; - - switch(memory) - { - case RPI_256MB: - - string = "256 MB"; - break; - - case RPI_512MB: - - string = "512 MB"; - break; - - case RPI_1024MB: - - string = "1024 MB"; - break; - - default: - - break; - } - - return string; -} - -//------------------------------------------------------------------------- - -const char * -raspberryPiProcessorToString( - RASPBERRY_PI_PROCESSOR_T processor) -{ - const char *string = "unknown"; - - switch(processor) - { - case RPI_BROADCOM_2835: - - string = "Broadcom BCM2835"; - break; - - case RPI_BROADCOM_2836: - - string = "Broadcom BCM2836"; - break; - - case RPI_BROADCOM_2837: - - string = "Broadcom BCM2837"; - break; - - default: - - break; - } - - return string; -} - -//------------------------------------------------------------------------- - -const char * -raspberryPiI2CDeviceToString( - RASPBERRY_PI_I2C_DEVICE_T i2cDevice) -{ - const char *string = "unknown"; - - switch(i2cDevice) - { - case RPI_I2C_0: - - string = "/dev/i2c-0"; - break; - - case RPI_I2C_1: - - string = "/dev/i2c-1"; - break; - - default: - - break; - } - - return string; -} - -//------------------------------------------------------------------------- - -const char * -raspberryPiModelToString( - RASPBERRY_PI_MODEL_T model) -{ - const char *string = "unknown"; - - switch(model) - { - case RPI_MODEL_A: - - string = "Model A"; - break; - - case RPI_MODEL_B: - - string = "Model B"; - break; - - case RPI_MODEL_A_PLUS: - - string = "Model A+"; - break; - - case RPI_MODEL_B_PLUS: - - string = "Model B+"; - break; - - case RPI_MODEL_B_PI_2: - - string = "Model B Pi 2"; - break; - - case RPI_MODEL_ALPHA: - - string = "Alpha"; - break; - - case RPI_COMPUTE_MODULE: - - string = "Compute Module"; - break; - - case RPI_MODEL_ZERO: - - string = "Model Zero"; - break; - - case RPI_MODEL_B_PI_3: - - string = "Model B Pi 3"; - break; - - default: - - break; - } - - return string; -} - -//------------------------------------------------------------------------- - -const char * -raspberryPiManufacturerToString( - RASPBERRY_PI_MANUFACTURER_T manufacturer) -{ - const char *string = "unknown"; - - switch(manufacturer) - { - case RPI_MANUFACTURER_SONY: - - string = "Sony"; - break; - - case RPI_MANUFACTURER_EGOMAN: - - string = "Egoman"; - break; - - case RPI_MANUFACTURER_QISDA: - - string = "Qisda"; - break; - - case RPI_MANUFACTURER_EMBEST: - - string = "Embest"; - break; - - default: - - break; - } - - return string; -} - diff --git a/src/raspberry_pi_revision.h b/src/raspberry_pi_revision.h deleted file mode 100644 index 63cad16..0000000 --- a/src/raspberry_pi_revision.h +++ /dev/null @@ -1,163 +0,0 @@ -//------------------------------------------------------------------------- -// -// The MIT License (MIT) -// -// Copyright (c) 2015 Andrew Duncan -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -//------------------------------------------------------------------------- - -#ifndef RASPBERRY_PI_INFO_H -#define RASPBERRY_PI_INFO_H - -//------------------------------------------------------------------------- - -#include - -//------------------------------------------------------------------------- - -#ifdef __cplusplus -extern "C" { -#endif - -//------------------------------------------------------------------------- - -#define RPI_PERIPHERAL_BASE_UNKNOWN 0 -#define RPI_BROADCOM_2835_PERIPHERAL_BASE 0x20000000 -#define RPI_BROADCOM_2836_PERIPHERAL_BASE 0x3F000000 -#define RPI_BROADCOM_2837_PERIPHERAL_BASE 0x3F000000 - -typedef enum -{ - RPI_MEMORY_UNKNOWN = -1, - RPI_256MB = 256, - RPI_512MB = 512, - RPI_1024MB = 1024, -} -RASPBERRY_PI_MEMORY_T; - -typedef enum -{ - RPI_PROCESSOR_UNKNOWN = -1, - RPI_BROADCOM_2835 = 2835, - RPI_BROADCOM_2836 = 2836, - RPI_BROADCOM_2837 = 2837 -} -RASPBERRY_PI_PROCESSOR_T; - -typedef enum -{ - RPI_I2C_DEVICE_UNKNOWN = -1, - RPI_I2C_0 = 0, - RPI_I2C_1 = 1 -} -RASPBERRY_PI_I2C_DEVICE_T; - -typedef enum -{ - RPI_MODEL_UNKNOWN = -1, - RPI_MODEL_A, - RPI_MODEL_B, - RPI_MODEL_A_PLUS, - RPI_MODEL_B_PLUS, - RPI_MODEL_B_PI_2, - RPI_MODEL_ALPHA, - RPI_COMPUTE_MODULE, - RPI_MODEL_ZERO, - RPI_MODEL_B_PI_3 -} -RASPBERRY_PI_MODEL_T; - -typedef enum -{ - RPI_MANUFACTURER_UNKNOWN = -1, - RPI_MANUFACTURER_SONY, - RPI_MANUFACTURER_EGOMAN, - RPI_MANUFACTURER_QISDA, - RPI_MANUFACTURER_EMBEST, -} -RASPBERRY_PI_MANUFACTURER_T; - -//------------------------------------------------------------------------- - -typedef struct -{ - RASPBERRY_PI_MEMORY_T memory; - RASPBERRY_PI_PROCESSOR_T processor; - RASPBERRY_PI_I2C_DEVICE_T i2cDevice; - RASPBERRY_PI_MODEL_T model; - RASPBERRY_PI_MANUFACTURER_T manufacturer; - int pcbRevision; - int warrantyBit; - int revisionNumber; - uint32_t peripheralBase; -} -RASPBERRY_PI_INFO_T; - -//------------------------------------------------------------------------- - -// getRaspberryPiInformation() -// -// return - 0 - failed to get revision from /proc/cpuinfo -// 1 - found classic revision number -// 2 - found Pi 2 style revision number - -int -getRaspberryPiInformation( - RASPBERRY_PI_INFO_T *info); - -int -getRaspberryPiInformationForRevision( - int revision, - RASPBERRY_PI_INFO_T *info); - -int -getRaspberryPiRevision(void); - -const char * -raspberryPiMemoryToString( - RASPBERRY_PI_MEMORY_T memory); - -const char * -raspberryPiProcessorToString( - RASPBERRY_PI_PROCESSOR_T processor); - -const char * -raspberryPiI2CDeviceToString( - RASPBERRY_PI_I2C_DEVICE_T i2cDevice); - -const char * -raspberryPiModelToString( - RASPBERRY_PI_MODEL_T model); - -const char * -raspberryPiManufacturerToString( - RASPBERRY_PI_MANUFACTURER_T manufacturer); - -//------------------------------------------------------------------------- - -#ifdef __cplusplus -} -#endif - -//------------------------------------------------------------------------- - -#endif diff --git a/src/serialdmasync.cpp b/src/serialdmasync.cpp deleted file mode 100644 index 34aead7..0000000 --- a/src/serialdmasync.cpp +++ /dev/null @@ -1,78 +0,0 @@ - - -#include "stdio.h" -#include "serialdmasync.h" - - -serialdmasync::serialdmasync(uint32_t SampleRate,int Channel,uint32_t FifoSize,bool dualoutput):bufferdma(Channel,FifoSize,1,1) -{ - if(dualoutput) //Fixme if 2pin we want maybe 2*SRATE as it is distributed over 2 pin - { - pwmgpio::SetMode(pwm2pin); - SampleRate*=2; - } - else - { - pwmgpio::SetMode(pwm1pin); - } - - if(SampleRate>250000) - { - pwmgpio::SetPllNumber(clk_plld,1); - pwmgpio::SetFrequency(SampleRate); - } - else - { - pwmgpio::SetPllNumber(clk_osc,1); - pwmgpio::SetFrequency(SampleRate); - } - - enablepwm(12,0); // By default PWM on GPIO 12/pin 32 - enablepwm(13,0); // By default PWM on GPIO 13/pin 33 - - SetDmaAlgo(); - - - // Note : Spurious are at +/-(19.2MHZ/2^20)*Div*N : (N=1,2,3...) So we need to have a big div to spurious away BUT - // Spurious are ALSO at +/-(19.2MHZ/2^20)*(2^20-Div)*N - // Max spurious avoid is to be in the center ! Theory shoud be that spurious are set away at 19.2/2= 9.6Mhz ! But need to get account of div of PLLClock - -} - -serialdmasync::~serialdmasync() -{ -} - - -void serialdmasync::SetDmaAlgo() -{ - dma_cb_t *cbp = cbarray; - for (uint32_t samplecnt = 0; samplecnt < buffersize; samplecnt++) - { - - - cbp->info = BCM2708_DMA_NO_WIDE_BURSTS | BCM2708_DMA_WAIT_RESP |BCM2708_DMA_D_DREQ | BCM2708_DMA_PER_MAP(DREQ_PWM); - cbp->src = mem_virt_to_phys(&usermem[samplecnt*registerbysample]); - cbp->dst = 0x7E000000 + (PWM_FIFO<<2) + PWM_BASE ; - cbp->length = 4; - cbp->stride = 0; - cbp->next = mem_virt_to_phys(cbp + 1); - //fprintf(stderr,"cbp : sample %x src %x dest %x next %x\n",samplecnt,cbp->src,cbp->dst,cbp->next); - cbp++; - - } - - cbp--; - cbp->next = mem_virt_to_phys(cbarray); // We loop to the first CB - //fprintf(stderr,"Last cbp : src %x dest %x next %x\n",cbp->src,cbp->dst,cbp->next); -} - -void serialdmasync::SetSample(uint32_t Index,int Sample) -{ - Index=Index%buffersize; - sampletab[Index]=Sample; - - PushSample(Index); -} - - diff --git a/src/serialdmasync.h b/src/serialdmasync.h deleted file mode 100644 index 111415d..0000000 --- a/src/serialdmasync.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef DEF_SERIALDMASYNC -#define DEF_SERIALDMASYNC - -#include "stdint.h" -#include "dma.h" -#include "gpio.h" - -class serialdmasync:public bufferdma,public clkgpio,public pwmgpio -{ - protected: - uint64_t tunefreq; - bool syncwithpwm; - public: - serialdmasync(uint32_t SampleRate,int Channel,uint32_t FifoSize,bool dualoutput); - ~serialdmasync(); - void SetDmaAlgo(); - - void SetSample(uint32_t Index,int Sample); -}; -#endif diff --git a/src/v2rpitx b/src/v2rpitx deleted file mode 100755 index b8b5f0f4bc75d9fe8dc91db29dbb726e0a427d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73148 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 B!D;{i diff --git a/src/v2rpitx.cpp b/src/v2rpitx.cpp deleted file mode 100644 index ab13e13..0000000 --- a/src/v2rpitx.cpp +++ /dev/null @@ -1,402 +0,0 @@ -#include -#include "librpitx.h" -#include -#include "stdio.h" -#include -#include - -bool running=true; -void SimpleTest(uint64_t Freq) -{ - generalgpio genpio; - fprintf(stderr,"GPIOPULL =%x\n",genpio.gpioreg[GPPUDCLK0]); - #define PULL_OFF 0 - #define PULL_DOWN 1 - #define PULL_UP 2 - genpio.gpioreg[GPPUD]=PULL_DOWN; - usleep(100); - genpio.gpioreg[GPPUDCLK0]=(1<<4); //GPIO CLK is GPIO 4 - usleep(100); - //genpio.gpioreg[GPPUDCLK0]=(0); //GPIO CLK is GPIO 4 - - clkgpio clk; - clk.print_clock_tree(); - //clk.SetPllNumber(clk_plld,2); - clk.SetAdvancedPllMode(true); - clk.SetCenterFrequency(Freq,100000); - int Deviation=0; - clk.SetFrequency(000); - clk.enableclk(4); - while(running) - { - sleep(5); - //Deviation+=1; - clk.SetFrequency(Deviation); - } - /*for(int i=0;i<100000;i+=1) - { - clk.SetFrequency(i); - usleep(1000); - }*/ - clk.disableclk(4); - -} - -void SimpleTestDMA(uint64_t Freq) -{ - - - int SR=200000; - int FifoSize=4096; - //ngfmdmasync ngfmtest(1244200000,SR,14,FifoSize); - ngfmdmasync ngfmtest(Freq,SR,14,FifoSize); - for(int i=0;running;) - { - //usleep(10); - usleep(FifoSize*1000000.0*3.0/(4.0*SR)); - int Available=ngfmtest.GetBufferAvailable(); - if(Available>FifoSize/2) - { - int Index=ngfmtest.GetUserMemIndex(); - //printf("GetIndex=%d\n",Index); - for(int j=0;j5000)?1000:0); - ngfmtest.SetFrequencySample(Index+j,(i%SR)); - i++; - - } - } - - - } - fprintf(stderr,"End\n"); - - ngfmtest.stop(); - -} -using std::complex; -void SimpleTestLiquid() -{ - - - int SR=200000; - int FifoSize=4096; - ngfmdmasync ngfmtest(144200000,SR,14,FifoSize); - dsp mydsp(SR); - nco_crcf q = nco_crcf_create(LIQUID_NCO); - nco_crcf_set_phase(q, 0.0f); - nco_crcf_set_frequency(q, -0.2f); - - //ngfmtest.print_clock_tree(); - for(int i=0;(iFifoSize/2) - { - int Index=ngfmtest.GetUserMemIndex(); - //printf("GetIndex=%d\n",Index); - for(int j=0;j5000)?1000:0); - //ngfmtest.SetFrequencySample(Index+j,(i%SR)); - nco_crcf_adjust_frequency(q,1e-5); - liquid_float_complex x; - nco_crcf_step(q); - nco_crcf_cexpf(q, &x); - mydsp.pushsample(x); - if(mydsp.frequency>SR) mydsp.frequency=SR; - if(mydsp.frequency<-SR) mydsp.frequency=-SR; - ngfmtest.SetFrequencySample(Index+j,mydsp.frequency); - //fprintf(stderr,"freq=%f Amp=%f\n",mydsp.frequency,mydsp.amplitude); - //fprintf(stderr,"freq=%f\n",nco_crcf_get_frequency(q)*SR); - i++; - - } - } - - - } - fprintf(stderr,"End\n"); - - ngfmtest.stop(); -} - -void SimpleTestFileIQ(uint64_t Freq) -{ - FILE *iqfile=NULL; - iqfile=fopen("../ssbtest.iq","rb"); - if (iqfile==NULL) printf("input file issue\n"); - - - bool stereo=true; - int SR=48000; - int FifoSize=512; - //iqdmasync iqtest(1245000000,SR,14,FifoSize); - //iqdmasync iqtest(50100000,SR,14,FifoSize); - iqdmasync iqtest(Freq,SR,14,FifoSize); - //iqdmasync iqtest(14100000,SR,14,FifoSize); - short IQBuffer[128*2]; - - while(running) - { - //usleep(FifoSize*1000000.0*1.0/(8.0*SR)); - usleep(100); - int Available=iqtest.GetBufferAvailable(); - if(Available>256) - { - int Index=iqtest.GetUserMemIndex(); - int nbread=fread(IQBuffer,sizeof(short),128*2,iqfile); - if(nbread>0) - { - //printf("NbRead=%d\n",nbread); - for(int i=0;i(IQBuffer[i*2]/32768.0,IQBuffer[i*2+1]/32768.0); - iqtest.SetIQSample(Index+i,x); - - } - } - else - { - printf("End of file\n"); - fseek ( iqfile , 0 , SEEK_SET ); - //break; - } - } - } - iqtest.stop(); -} - - -void SimpleTestbpsk(uint64_t Freq) -{ - - - clkgpio clk; - clk.print_clock_tree(); - int SR=100000; - int FifoSize=1024; - int NumberofPhase=2; - phasedmasync biphase(Freq,SR,NumberofPhase,14,FifoSize); - int lastphase=0; - while(running) - { - //usleep(FifoSize*1000000.0*1.0/(8.0*SR)); - usleep(10); - int Available=biphase.GetBufferAvailable(); - if(Available>256) - { - int Index=biphase.GetUserMemIndex(); - - - for(int i=0;i256) - { - int Index=testserial.GetUserMemIndex(); - - - for(int i=0;i256) - { - int Index=amtest.GetUserMemIndex(); - int nbread=fread(AudioBuffer,sizeof(short),128*2,audiofile); - if(nbread>0) - { - - for(int i=0;i256) - { - int Index=amtest.GetUserMemIndex(); - for(int i=0;i2) x=0; else x=1; - //x+=(1.0/(float)SR*10.0); - x+=0.0001; - if(x>1.0) x=0; - - amtest.SetAmSample(Index+i,x); - count++; - } - } - } - amtest.stop(); -} - -void SimpleTestBurstFsk(uint64_t Freq) -{ - - //int SR=40625; - int SR=10000; - int Deviation=26370; - int FiFoSize=4000; - fskburst fsktest(Freq,SR,Deviation,14,FiFoSize); - - unsigned char TabSymbol[FiFoSize]; - int BurstSize=100; - - while(running) - { - int i; - for(i=0;i1) - Freq=atol(argv[1]); - - for (int i = 0; i < 64; i++) { - struct sigaction sa; - - std::memset(&sa, 0, sizeof(sa)); - sa.sa_handler = terminate; - sigaction(i, &sa, NULL); - } - - //SimpleTest(Freq); - //SimpleTestbpsk(Freq); - //SimpleTestFileIQ(Freq); - //SimpleTestDMA(Freq); - //SimpleTestAm(Freq); - //SimpleTestOOK(Freq); - SimpleTestBurstFsk(Freq); - -} - diff --git a/ssbgen/Makefile b/ssbgen/Makefile deleted file mode 100644 index c49f670..0000000 --- a/ssbgen/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -#Makefile -CC=gcc -pipe -CFLAGS=-Wall -g -OBJS=ssb_gen.o test_ssb.o -HEADERS=ssb_gen.h -LIBS=-lsndfile - - -%.o:%.c $(HEADERS) Makefile - $(CC) $(CFLAGS) -c $< -o $@ - -testssb:$(OBJS) $(HEADERS) test_ssb.o - $(CC) -o testssb $(OBJS) $(LIBS) \ No newline at end of file diff --git a/ssbgen/ssb_gen.c b/ssbgen/ssb_gen.c deleted file mode 100644 index 5c71ff4..0000000 --- a/ssbgen/ssb_gen.c +++ /dev/null @@ -1,589 +0,0 @@ -//========================================================================================== -// + + + This Software is released under the "Simplified BSD License" + + + -// Copyright 2014 F4GKR Sylvain AZARIAN . All rights reserved. -// -//Redistribution and use in source and binary forms, with or without modification, are -//permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, this list -// of conditions and the following disclaimer in the documentation and/or other materials -// provided with the distribution. -// -//THIS SOFTWARE IS PROVIDED BY Sylvain AZARIAN F4GKR ``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 Sylvain AZARIAN 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. -// -//The views and conclusions contained in the software and documentation are those of the -//authors and should not be interpreted as representing official policies, either expressed -//or implied, of Sylvain AZARIAN F4GKR. -//========================================================================================== -#include -#include -#include -#include - -#include "ssb_gen.h" - -struct FIR { - float *coeffs; - int filterLength; - float *delay_line; -}; - -typedef struct _cpx { - float re; - float im; -} TYPECPX; - -struct cFIR { - float *coeffs; - int filterLength; - TYPECPX *delay_line; - float rms; -}; - -#define ALPHA_DC_REMOVE (0.999) - -struct FIR* audio_fir; -struct FIR* hilbert; -struct FIR* delay; -struct cFIR* interpolateIQ; - -// Create a FIR struct, used to store a copy of coeffs and delay line -// in : coeffs_len = coeff tab length -// double *coeff_tab = pointer to the coefficients -// out: a struct FIR -struct FIR* init_fir( int coeffs_len, float *coeff_tab ) -{ - struct FIR *result; - int i; - // alloc and init buffers - result = (struct FIR *)malloc( sizeof( struct FIR )); - result->filterLength = coeffs_len; - result->coeffs = (float*)malloc( coeffs_len * sizeof( float)); - result->delay_line = (float*)malloc( coeffs_len * sizeof( float)); - // copy coeffs to struct - for( i=0 ; i < coeffs_len ; i++ ) { - result->delay_line[i] = 0.0; - result->coeffs[i] = coeff_tab[i]; - } - return( result ); -} - -// init a complex in -> complex out fir with real coeffs -struct cFIR* init_cfir( int coeffs_len, float *coeff_tab ) -{ - struct cFIR *result; - int i; - // alloc and init buffers - result = (struct cFIR *)malloc( sizeof( struct cFIR )); - result->filterLength = coeffs_len ; - result->coeffs = (float*)malloc( coeffs_len * sizeof( float)); - result->delay_line = (TYPECPX*)malloc( coeffs_len * sizeof( TYPECPX)); - // copy coeffs to struct - for( i=0 ; i < coeffs_len ; i++ ) { - result->delay_line[i].re = 0.0; - result->delay_line[i].im = 0.0; - result->coeffs[i] = coeff_tab[i]; - } - return( result ); -} - -float fir_filt( struct FIR* f, float in ) -{ - int i; - float acc; - float *pt_coeffs; - float *pt_sample; - int L; - - // shift input left for one sample - L = f->filterLength; - for( i=0 ; i < L - 1 ; i++ ) { - f->delay_line[i] = f->delay_line[i+1]; - } - // add new sample to the end of delay line - f->delay_line[ L - 1 ] = in; - acc = 0 ; - pt_sample = f->delay_line; - pt_coeffs = f->coeffs; - // do the compute loop - for( i=0 ; i < L ; i++ ) { - acc += (*pt_sample) * (*pt_coeffs ); - - pt_sample++; - pt_coeffs++; - } - return( acc ); -} -// same but we filter a complex number at input, out is a complex -TYPECPX cfir_filt( struct cFIR* f, TYPECPX in ) -{ - int i; - TYPECPX acc; - float *pt_coeffs, rms; - TYPECPX *pt_sample; - int L; - - // shift input left for one sample - L = f->filterLength; - for( i=0 ; i < L - 1 ; i++ ){ - f->delay_line[i] = f->delay_line[i+1]; - } - // add new sample to the end of delay line - f->delay_line[ L - 1 ] = in; - acc.re = acc.im = 0; - pt_sample = f->delay_line; - pt_coeffs = f->coeffs; - // do the compute loop - rms = 0; - for( i=0 ; i < L ; i++ ) { - acc.re += (pt_sample->re) * (*pt_coeffs ); - acc.im += (pt_sample->im) * (*pt_coeffs ); - rms += (pt_sample->re)*(pt_sample->re) + (pt_sample->im)*(pt_sample->im); - pt_sample++; - pt_coeffs++; - } - f->rms = sqrt( rms / L ); - return( acc ); -} - - -TYPECPX m_Osc1; -double m_OscCos, m_OscSin; -int nco_enabled; -#define B_SIZE (512) -#define COMP_ATTAK ( exp(-1/48.0)) /* 0.1 ms */ -#define COMP_RELEASE (exp(-1/(30*480.0))) /* 300 ms */ -#define threshold (.25) - -void ssb(float in, int USB, float* out_I, float* out_Q) -{ - static float y_n1 = 0; - static float x_n1 = 0; - float y, Imix, Qmix, OscGn; - static float I=0; - static float Q=0; - static int OL = 3; - // RingBuffer management - static int b_start = 0; - static int b_end = 0; - static float elems[B_SIZE]; // power of 2, approx 1ms at 48KHz - static int first = B_SIZE; // this says how many samples we wait before audio processing - static float env = 0; - float rms, theta, gain; - //--------------------------- - int i; - TYPECPX dtmp, Osc, IQ; - OL++; - OL = OL % 4; - //---------- lowpass filter audio input - // suppress DC, high pass filter - // y[n] = x[n] - x[n-1] + alpha * y[n-1] - y = in - x_n1 + ALPHA_DC_REMOVE*y_n1; - x_n1 = in; - y_n1 = y; - - // low pass filter y to keep only audio band - y = fir_filt( audio_fir, y ); - -#define AUDIO_COMPRESSOR //??? -#ifdef AUDIO_COMPRESSOR //??? - //----------- audio compressor - //--- code inspired from http://www.musicdsp.org/showone.php?id=169 - // store in our ring buffer - if( b_end != (b_start ^ B_SIZE )) { // ring buffer not full - elems[b_end & (B_SIZE-1)] = y; // append at the end - - if( b_end == (b_start ^ B_SIZE )) { - b_start = (b_start+1)&(2*B_SIZE-1); - } - b_end = (b_end+1)&(2*B_SIZE-1); - } - // wait to have at least 2ms before starting - if( first > 0 ) { - first--; - *out_I = 0; - *out_Q = 0; - return; - } - // compute RMS power in buffer - rms = 0; - for( i=0 ; i < B_SIZE ; i++ ) { - rms += elems[i] * elems[i]; - } - rms = sqrt( rms / B_SIZE ); - theta = rms > env ? COMP_ATTAK : COMP_RELEASE; - env = (1-theta) * rms + theta * env; - gain = 1; - if( env > threshold ) { - gain = 1 - (env - threshold); - } - // retrieve the oldest sample - y = elems[b_start&(B_SIZE-1)]; - b_start = (b_start+1)&(2*B_SIZE-1); - // apply compressor gain - //printf("%f,%f\n", env, gain ); - - y *= gain ; // To enable compressor -#endif - -//----------- SSB modulator stage - // decimation by 4 - if( OL == 0 ) { - // we come here 1/4 of time - // pass audio sample to delay line, pass band filter - I = fir_filt( delay, y ); - // pass audio sample to hilbert transform to shift 90 degrees - Q = fir_filt( hilbert, y ); - } - - IQ.re = I; - IQ.im = USB * Q; - // interpolation by 4 - dtmp = cfir_filt( interpolateIQ, IQ ); - // shift in freq if enabled (see ssb_init ) - if( nco_enabled ) { - // our SSB signal is now centered at 0 - // update our NCO for shift - Osc.re = m_Osc1.re * m_OscCos - m_Osc1.im * m_OscSin; - Osc.im = m_Osc1.im * m_OscCos + m_Osc1.re * m_OscSin; - OscGn = 1.95 - (m_Osc1.re*m_Osc1.re + m_Osc1.im*m_Osc1.im); - m_Osc1.re = OscGn * Osc.re; - m_Osc1.im = OscGn * Osc.im; - //Cpx multiply by shift OL - Imix = ((dtmp.re * Osc.re) - (dtmp.im * Osc.im)); - Qmix = ((dtmp.re * Osc.im) + (dtmp.im * Osc.re)); - *out_I = Imix; - *out_Q = Qmix; - } else { - *out_I = dtmp.re; - *out_Q = dtmp.im; - } -} - -#define SAMPLE_RATE (48000.0f) - -void ssb_init( float shift_carrier) -{ - double m_NcoInc; - float a[83]; - float b[89]; - float c[89]; - /* - * Kaiser Window FIR Filter - * Passband: 0.0 - 3000.0 Hz - * Order: 83 - * Transition band: 3000.0 Hz - * Stopband attenuation: 80.0 dB - */ - a[0] = -1.7250879E-5f; - a[1] = -4.0276995E-5f; - a[2] = -5.6314686E-5f; - a[3] = -4.0164417E-5f; - a[4] = 3.0053454E-5f; - a[5] = 1.5370155E-4f; - a[6] = 2.9180944E-4f; - a[7] = 3.6717512E-4f; - a[8] = 2.8903902E-4f; - a[9] = 3.1934875E-11f; - a[10] = -4.716546E-4f; - a[11] = -9.818495E-4f; - a[12] = -0.001290066f; - a[13] = -0.0011395542f; - a[14] = -3.8172887E-4f; - a[15] = 9.0173044E-4f; - a[16] = 0.0023420234f; - a[17] = 0.003344623f; - a[18] = 0.003282209f; - a[19] = 0.0017731993f; - a[20] = -0.0010558856f; - a[21] = -0.004450674f; - a[22] = -0.0071515352f; - a[23] = -0.007778209f; - a[24] = -0.0053855875f; - a[25] = -2.6561373E-10f; - a[26] = 0.0070972904f; - a[27] = 0.013526209f; - a[28] = 0.016455514f; - a[29] = 0.013607533f; - a[30] = 0.0043148645f; - a[31] = -0.009761283f; - a[32] = -0.02458954f; - a[33] = -0.03455451f; - a[34] = -0.033946108f; - a[35] = -0.018758629f; - a[36] = 0.011756961f; - a[37] = 0.054329403f; - a[38] = 0.10202855f; - a[39] = 0.14574805f; - a[40] = 0.17644218f; - a[41] = 0.18748334f; - a[42] = 0.17644218f; - a[43] = 0.14574805f; - a[44] = 0.10202855f; - a[45] = 0.054329403f; - a[46] = 0.011756961f; - a[47] = -0.018758629f; - a[48] = -0.033946108f; - a[49] = -0.03455451f; - a[50] = -0.02458954f; - a[51] = -0.009761283f; - a[52] = 0.0043148645f; - a[53] = 0.013607533f; - a[54] = 0.016455514f; - a[55] = 0.013526209f; - a[56] = 0.0070972904f; - a[57] = -2.6561373E-10f; - a[58] = -0.0053855875f; - a[59] = -0.007778209f; - a[60] = -0.0071515352f; - a[61] = -0.004450674f; - a[62] = -0.0010558856f; - a[63] = 0.0017731993f; - a[64] = 0.003282209f; - a[65] = 0.003344623f; - a[66] = 0.0023420234f; - a[67] = 9.0173044E-4f; - a[68] = -3.8172887E-4f; - a[69] = -0.0011395542f; - a[70] = -0.001290066f; - a[71] = -9.818495E-4f; - a[72] = -4.716546E-4f; - a[73] = 3.1934875E-11f; - a[74] = 2.8903902E-4f; - a[75] = 3.6717512E-4f; - a[76] = 2.9180944E-4f; - a[77] = 1.5370155E-4f; - a[78] = 3.0053454E-5f; - a[79] = -4.0164417E-5f; - a[80] = -5.6314686E-5f; - a[81] = -4.0276995E-5f; - a[82] = -1.7250879E-5f; - - - /* - * Kaiser Window FIR Filter - * Passband: 0.0 - 1350.0 Hz - * modulation freq: 1650Hz - * Order: 88 - * Transition band: 500.0 Hz - * Stopband attenuation: 60.0 dB - */ - - b[0] = -2.081541E-4f; - b[1] = -3.5587244E-4f; - b[2] = -5.237722E-5f; - b[3] = -1.00883444E-4f; - b[4] = -8.27162E-4f; - b[5] = -7.391658E-4f; - b[6] = 9.386093E-5f; - b[7] = -6.221307E-4f; - b[8] = -0.0019506976f; - b[9] = -8.508009E-4f; - b[10] = 2.8596455E-4f; - b[11] = -0.002028003f; - b[12] = -0.003321186f; - b[13] = -2.7830937E-4f; - b[14] = 2.7148606E-9f; - b[15] = -0.004654892f; - b[16] = -0.0041854046f; - b[17] = 0.001115112f; - b[18] = -0.0017027275f; - b[19] = -0.008291345f; - b[20] = -0.0034240147f; - b[21] = 0.0027767413f; - b[22] = -0.005873899f; - b[23] = -0.011811939f; - b[24] = -2.075215E-8f; - b[25] = 0.003209243f; - b[26] = -0.0131212445f; - b[27] = -0.013072912f; - b[28] = 0.0064319638f; - b[29] = 1.0081245E-8f; - b[30] = -0.023050211f; - b[31] = -0.009034872f; - b[32] = 0.015074444f; - b[33] = -0.010180626f; - b[34] = -0.034043692f; - b[35] = 0.004729156f; - b[36] = 0.024004854f; - b[37] = -0.033643555f; - b[38] = -0.043601833f; - b[39] = 0.04075407f; - b[40] = 0.03076061f; - b[41] = -0.10492244f; - b[42] = -0.049181364f; - b[43] = 0.30635652f; - b[44] = 0.5324795f; - b[45] = 0.30635652f; - b[46] = -0.049181364f; - b[47] = -0.10492244f; - b[48] = 0.03076061f; - b[49] = 0.04075407f; - b[50] = -0.043601833f; - b[51] = -0.033643555f; - b[52] = 0.024004854f; - b[53] = 0.004729156f; - b[54] = -0.034043692f; - b[55] = -0.010180626f; - b[56] = 0.015074444f; - b[57] = -0.009034872f; - b[58] = -0.023050211f; - b[59] = 1.0081245E-8f; - b[60] = 0.0064319638f; - b[61] = -0.013072912f; - b[62] = -0.0131212445f; - b[63] = 0.003209243f; - b[64] = -2.075215E-8f; - b[65] = -0.011811939f; - b[66] = -0.005873899f; - b[67] = 0.0027767413f; - b[68] = -0.0034240147f; - b[69] = -0.008291345f; - b[70] = -0.0017027275f; - b[71] = 0.001115112f; - b[72] = -0.0041854046f; - b[73] = -0.004654892f; - b[74] = 2.7148606E-9f; - b[75] = -2.7830937E-4f; - b[76] = -0.003321186f; - b[77] = -0.002028003f; - b[78] = 2.8596455E-4f; - b[79] = -8.508009E-4f; - b[80] = -0.0019506976f; - b[81] = -6.221307E-4f; - b[82] = 9.386093E-5f; - b[83] = -7.391658E-4f; - b[84] = -8.27162E-4f; - b[85] = -1.00883444E-4f; - b[86] = -5.237722E-5f; - b[87] = -3.5587244E-4f; - b[88] = -2.081541E-4f; - - /* - * Kaiser Window FIR Filter - * - * Filter type: Q-filter - * Passband: 0.0 - 1350.0 Hz - * modulation freq: 1650Hz - * with +90 degree pahse shift - * Order: 88 - * Transition band: 500.0 Hz - * Stopband attenuation: 60.0 dB - */ - - c[0] = 6.767926E-5f; - c[1] = -2.1822347E-4f; - c[2] = -3.3091355E-4f; - c[3] = 1.1819744E-4f; - c[4] = 2.1773627E-9f; - c[5] = -8.6602167E-4f; - c[6] = -5.9300865E-4f; - c[7] = 3.814961E-4f; - c[8] = -6.342388E-4f; - c[9] = -0.00205537f; - c[10] = -5.616135E-4f; - c[11] = 4.8721067E-4f; - c[12] = -0.002414588f; - c[13] = -0.003538588f; - c[14] = -2.7166707E-9f; - c[15] = -3.665928E-4f; - c[16] = -0.0057645175f; - c[17] = -0.004647882f; - c[18] = 8.681589E-4f; - c[19] = -0.0034366683f; - c[20] = -0.010545009f; - c[21] = -0.0045342376f; - c[22] = 9.309649E-4f; - c[23] = -0.01009504f; - c[24] = -0.015788108f; - c[25] = -0.0027427748f; - c[26] = -0.0020795742f; - c[27] = -0.021347176f; - c[28] = -0.019808702f; - c[29] = -4.1785704E-9f; - c[30] = -0.011752444f; - c[31] = -0.037658f; - c[32] = -0.020762002f; - c[33] = 8.017756E-4f; - c[34] = -0.03406628f; - c[35] = -0.060129803f; - c[36] = -0.01745214f; - c[37] = -0.008082453f; - c[38] = -0.08563026f; - c[39] = -0.09845453f; - c[40] = -0.010001372f; - c[41] = -0.06433928f; - c[42] = -0.31072536f; - c[43] = -0.35893586f; - c[44] = 0.0f; - c[45] = 0.35893586f; - c[46] = 0.31072536f; - c[47] = 0.06433928f; - c[48] = 0.010001372f; - c[49] = 0.09845453f; - c[50] = 0.08563026f; - c[51] = 0.008082453f; - c[52] = 0.01745214f; - c[53] = 0.060129803f; - c[54] = 0.03406628f; - c[55] = -8.017756E-4f; - c[56] = 0.020762002f; - c[57] = 0.037658f; - c[58] = 0.011752444f; - c[59] = 4.1785704E-9f; - c[60] = 0.019808702f; - c[61] = 0.021347176f; - c[62] = 0.0020795742f; - c[63] = 0.0027427748f; - c[64] = 0.015788108f; - c[65] = 0.01009504f; - c[66] = -9.309649E-4f; - c[67] = 0.0045342376f; - c[68] = 0.010545009f; - c[69] = 0.0034366683f; - c[70] = -8.681589E-4f; - c[71] = 0.004647882f; - c[72] = 0.0057645175f; - c[73] = 3.665928E-4f; - c[74] = 2.7166707E-9f; - c[75] = 0.003538588f; - c[76] = 0.002414588f; - c[77] = -4.8721067E-4f; - c[78] = 5.616135E-4f; - c[79] = 0.00205537f; - c[80] = 6.342388E-4f; - c[81] = -3.814961E-4f; - c[82] = 5.9300865E-4f; - c[83] = 8.6602167E-4f; - c[84] = -2.1773627E-9f; - c[85] = -1.1819744E-4f; - c[86] = 3.3091355E-4f; - c[87] = 2.1822347E-4f; - c[88] = -6.767926E-5f; - - audio_fir = init_fir( 83, a ); - hilbert = init_fir( 89, c ); - delay = init_fir( 89, b ); - interpolateIQ = init_cfir( 83, a ); - nco_enabled = 0 ; - if( abs(shift_carrier) > 0 ) { - m_NcoInc = (2.0 * 3.14159265358979323846)*shift_carrier/SAMPLE_RATE; - m_OscCos = cos(m_NcoInc); - m_OscSin = sin(m_NcoInc); - - m_Osc1.re = 1.0; //initialize unit vector that will get rotated - m_Osc1.im = 0.0; - nco_enabled = 1; - } -} diff --git a/ssbgen/ssb_gen.h b/ssbgen/ssb_gen.h deleted file mode 100644 index 4e19354..0000000 --- a/ssbgen/ssb_gen.h +++ /dev/null @@ -1,41 +0,0 @@ -//========================================================================================== -// + + + This Software is released under the "Simplified BSD License" + + + -// Copyright 2014 F4GKR Sylvain AZARIAN . All rights reserved. -// -//Redistribution and use in source and binary forms, with or without modification, are -//permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, this list -// of conditions and the following disclaimer in the documentation and/or other materials -// provided with the distribution. -// -//THIS SOFTWARE IS PROVIDED BY Sylvain AZARIAN F4GKR ``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 Sylvain AZARIAN 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. -// -//The views and conclusions contained in the software and documentation are those of the -//authors and should not be interpreted as representing official policies, either expressed -//or implied, of Sylvain AZARIAN F4GKR. -//========================================================================================== -#ifndef SSBGEN_H -#define SSBGEN_H - -// pour USB : mettre USB = -1 -// pour LSB : mettre USB = 1 ; -#define MODULE_SSB_USB (-1) -#define MODULE_SSB_LSB (1) -void ssb(float in, int USB, float* out_I, float* out_Q); - -// de combien on decale la porteuse (+ ou - ) -void ssb_init(float shift_carrier); - -#endif \ No newline at end of file diff --git a/ssbgen/test_ssb.c b/ssbgen/test_ssb.c deleted file mode 100644 index 7968b62..0000000 --- a/ssbgen/test_ssb.c +++ /dev/null @@ -1,105 +0,0 @@ -#include -#include -#include -#include -#include - -#include "ssb_gen.h" -#include - -#define BUFFER_LEN 1024*8 - -// Test program using SNDFILE -// see http://www.mega-nerd.com/libsndfile/api.html for API - -int main(int argc, char **argv) -{ - float data [2*BUFFER_LEN]; - float data_filtered[2*BUFFER_LEN]; // we generate complex I/Q samples - SNDFILE *infile, *outfile; - SF_INFO sfinfo; - SF_INFO sf_out; - int readcount, nb_samples; - char *infilename; - char *outfilename; - int k; - float x,I,Q; - - if( argc < 2 ) { - printf("Usage : %s in.wav [out.wav]\n", argv[0]); - return(1); - } - infilename = argv[1]; - if( argc == 3 ) { - outfilename = argv[2]; - } else { - outfilename = (char *)malloc( 128 ); - sprintf( outfilename, "%s", "out.wav"); - } - if (! (infile = sf_open (infilename, SFM_READ, &sfinfo))) - { - /* Open failed so print an error message. */ - printf ("Not able to open input file %s.\n", infilename); - /* Print the error message from libsndfile. */ - puts (sf_strerror (NULL)); - return 1; - } - - if( sfinfo.samplerate != 48000 ) { - printf("Input rate must be 48K.\n"); - return 1; - } - - memcpy( (void *)&sf_out, (void *)&sfinfo, sizeof( SF_INFO )); - sf_out.channels = 2; - //sf_out.samplerate = sfinfo.samplerate/3; - /* Open the output file. */ - if (! (outfile = sf_open (outfilename, SFM_WRITE, &sf_out))) - { - printf ("Not able to open output file %s.\n", outfilename); - puts (sf_strerror (NULL)); - return 1; - } - - /** **/ - printf ("Reading file : %s\n", infilename ); - printf ("Sample Rate : %d\n", sfinfo.samplerate); - printf ("Channels : %d\n", sfinfo.channels); - printf ("----------------------------------------\n"); - printf ("Writing file : %s\n", outfilename ); - printf ("Channels : %d\n", sf_out.channels); - - // la porteuse SSB est décalée de +1K - ssb_init( 1000 ); - - /* While there are.frames in the input file, read them, process - ** them and write them to the output file. - */ - while ((readcount = sf_readf_float(infile, data, BUFFER_LEN))) - { - nb_samples = readcount / sfinfo.channels; - for( k=0 ; k < nb_samples ; k++ ) { - x = data[k*sfinfo.channels]; - if( sfinfo.channels == 2 ) { - // stereo file, avg left + right - x += data[k*sfinfo.channels+1]; - x /= 2; - } - // voir ssb_gen.h, mettre MODULE_SSB_LSB pour LSB module - ssb( x, MODULE_SSB_USB , &I, &Q ); - data_filtered[2*k ] = I; //I and Q seems to be between 0 and 0.5 - data_filtered[2*k+1] = Q; - /* // FOR COMPRESSOR *2 - data_filtered[2*k ] = I * 2; //I and Q seems to be between 0 and 0.5 - data_filtered[2*k+1] = Q * 2; - */ - } - sf_write_float(outfile, data_filtered, 2*nb_samples ); - } - - /* Close input and output files. */ - sf_close (infile); - sf_close (outfile); - - return 0; -} diff --git a/sstv/pisstv.c b/sstv/pisstv.c deleted file mode 100644 index 55abdd1..0000000 --- a/sstv/pisstv.c +++ /dev/null @@ -1,172 +0,0 @@ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int FilePicture; -int FileFreqTiming; -static double GlobalTuningFrequency=00000.0; - -void playtone(double Frequency,uint32_t Timing) -{ - typedef struct { - double Frequency; - uint32_t WaitForThisSample; - } samplerf_t; - samplerf_t RfSample; - - RfSample.Frequency=GlobalTuningFrequency+Frequency; - RfSample.WaitForThisSample=Timing*100L; //en 100 de nanosecond - //printf("Freq =%f Timing=%d\n",RfSample.Frequency,RfSample.WaitForThisSample); - if (write(FileFreqTiming,&RfSample,sizeof(samplerf_t)) != sizeof(samplerf_t)) { - fprintf(stderr, "Unable to write sample"); - } -} - -void addvisheader() -{ - printf( "Adding VIS header to audio data.\n" ) ; - - // bit of silence - playtone( 0 , 5000000) ; - - // attention tones - playtone( 1900 , 100000 ) ; // you forgot this one - playtone( 1500 , 1000000) ; - playtone( 1900 , 1000000) ; - playtone( 1500 , 1000000) ; - playtone( 2300 , 1000000) ; - playtone( 1500 , 1000000) ; - playtone( 2300 , 1000000) ; - playtone( 1500 , 1000000) ; - - // VIS lead, break, mid, start - playtone( 1900 , 3000000) ; - playtone( 1200 , 100000) ; - //playtone( 1500 , 300000 ) ; - playtone( 1900 , 3000000) ; - playtone( 1200 , 300000) ; - - // VIS data bits (Martin 1) - playtone( 1300 , 300000) ; - playtone( 1300 , 300000) ; - playtone( 1100 , 300000) ; - playtone( 1100 , 300000) ; - playtone( 1300 , 300000) ; - playtone( 1100 , 300000) ; - playtone( 1300 , 300000 ) ; - playtone( 1100 , 300000 ) ; - - // VIS stop - playtone( 1200 , 300000 ) ; - - printf( "Done adding VIS header to audio data.\n" ) ; - -} // end addvisheader - -void addvistrailer () -{ - printf( "Adding VIS trailer to audio data.\n" ) ; - - playtone( 2300 , 3000000 ) ; - playtone( 1200 , 100000 ) ; - playtone( 2300 , 1000000 ) ; - playtone( 1200 , 300000 ) ; - - // bit of silence - playtone( 0 , 5000000 ) ; - - printf( "Done adding VIS trailer to audio data.\n" ) ; -} - -void ProcessMartin1() -{ - static uint32_t FrequencyMartin1[3]={1200,1500,1500}; - static uint32_t TimingMartin1[3]={48620,5720,4576}; - - int EndOfPicture=0; - int NbRead=0; - int VIS=1; - static unsigned char Line[320*3]; - - int Row; - - addvisheader(); - addvistrailer(); - while(EndOfPicture==0) - { - NbRead=read(FilePicture,Line,320*3); - if(NbRead!=320*3) EndOfPicture=1; - //MARTIN 1 Implementation - - //Horizontal SYNC - playtone((double)FrequencyMartin1[0],TimingMartin1[0]); - - //Separator Tone - playtone((double)FrequencyMartin1[1],TimingMartin1[1]); - - for(Row=0;Row<320;Row++) - { - playtone((double)FrequencyMartin1[1]+Line[Row*3+1]*800/256,TimingMartin1[2]); - } - playtone((double)FrequencyMartin1[1],TimingMartin1[1]); - - //Blue - for(Row=0;Row<320;Row++) - { - playtone((double)FrequencyMartin1[1]+Line[Row*3+2]*800/256,TimingMartin1[2]); - } - playtone((double)FrequencyMartin1[1],TimingMartin1[1]); - - //Red - for(Row=0;Row<320;Row++) - { - playtone((double)FrequencyMartin1[1]+Line[Row*3]*800/256,TimingMartin1[2]); - } - playtone((double)FrequencyMartin1[1],TimingMartin1[1]); - } -} - - -int main(int argc, char **argv) -{ - if (argc > 2) - { - char *sFilePicture=(char *)argv[1]; - FilePicture = open(argv[1], O_RDONLY); - - char *sFileFreqTiming=(char *)argv[2]; - FileFreqTiming = open(argv[2], O_WRONLY|O_CREAT, 0644); - } - else - { - printf("usage : pisstv picture.rgb outputfreq.bin\n"); - exit(0); - } - - ProcessMartin1(); - /*int i; - for(i=0;i<320*240;i++) - { - playtone(1200,5720); - playtone(0,5720); - }*/ - close(FilePicture); - close(FileFreqTiming); - return 0; -} - - - - diff --git a/testfm.sh b/testfm.sh index 95b2e18..dda1ad2 100755 --- a/testfm.sh +++ b/testfm.sh @@ -1,3 +1,3 @@ ./pifm sampleaudio.wav fm.ft -sudo ./rpitx -m RF -i fm.ft -f 433900 -l +sudo ./rpitx -m RF -i fm.ft -f 89000 -l -a 14 -c 1