vocoder-1.3-src/0040775000175000017500000000000007542520157013456 5ustar emanuelemanuelvocoder-1.3-src/CHANGES.txt0100664000175000017500000000242107542504133015257 0ustar emanuelemanuel$Id: CHANGES.txt,v 1.6 2020/09/20 02:30:51 emanuel Exp $ ------------------- 1.0 (December 1996) ------------------- Official release. Works flawlessly (yeah, right). -------------------- 1.0.1 (January 1997) -------------------- Minor changes to fft/error.c to allow to make definitions of emalloc() and ecalloc() agree with the prototyes. Updated the README to reflect the existance of a MacOS version (which is a bit different from the others). ---------------- 1.1b1 (July 1998) ---------------- Mostly re-written. Support for AIFF files. Dramatic reduction in memory use. Amount of memory used is now proportional to the window length instead of the size of the input files. Improved quality. S's and T's come out much more clearly. Chanks to Tero Karras for the tip! Intelligent defaults for most of the command-line arguments. The Java version has been discontinued. ------------------- 1.2 (March 1999) ------------------- If no command-line arguments are passed, it will ask the user for the values of all the parameters. A small off-by-one error has been fixed. Thanks to Matthew Frank Toews for pointing it out to me. ------------------- 1.3 (September 2002) ------------------- Added GUI version for Win32. vocoder-1.3-src/Makefile0100664000175000017500000000075007542370714015117 0ustar emanuelemanuel# $Id: Makefile,v 1.4 2020/09/19 15:48:28 emanuel Exp $ CFLAGS = -O LDFLAGS = LIBS = -lm SRCS = main.c vocode.c error.c \ wave.c aiff.c riff.c extended.c \ fftn.c fftaux.c OBJS = main.o vocode.o error.o \ wave.o aiff.o riff.o extended.o \ fftn.o fftaux.o OUT = vocoder $(OUT): $(OBJS) $(CC) $(LDFLAGS) -o $(OUT) $(OBJS) $(LIBS) depend: makedepend -- $(CFLAGS) -- $(SRCS) clean: rm -f $(OUT) *.o *~ *.bak *.aif *.aiff *.wav *core vocoder-1.3-src/README.txt0100664000175000017500000001712307542504133015151 0ustar emanuelemanuel$Id: README.txt,v 1.8 2020/09/20 02:30:51 emanuel Exp $ ======================================================================== Zerius Vocoder 1.3 README ------------------------------------------------------------------------ Emanuel Borsboom September 2002 ======================================================================== This program is used to make speech sound cool. It imposes the vocal effects of speech onto another sound. This technique has been made popular by artists such as Kraftwerk and Laurie Anderson. Note: This manual applies only to the command-line version. If you are using the GUI version, see the help file that is included with it. ------------ Installation ------------ If you are using the C source distribution, the first step is to compile the vocoder. Uncompress the archive and glance over the Makefile, making sure the variables are all right. The defaults should work for most UNIX environments. Also check config.h and make sure that S32, U32, S16, and U16 are defined appropriately as signed and unsigned 32-bit and 16-bit integers, respectively. The defaults should be fine for most 32-bit platforms. Once finished, run 'make' to compile the vocoder. Once you have the executable (or if you have downloaded a binary), you can copy it to the directory where you keep your binaries, or just run it where it is. ----- Usage ----- There are two ways to run the vocoder. If it is run without any command-line arguments (by clicking on its icon in Windows, for example) it will ask you for the values of the parameters. The meanings of the parameters follow in the next section. To specify tho parameters on the command-line, use the following syntax: vocoder [-q] [-N] [-b ] [-w ] [-v ] (Note: this version also supports the version 1.0 syntax in order to be compatible with already existing front ends). ---------- Parameters ---------- A detailed explanation of what these parameters mean is in the next section. Modulator filename () the path to a sound file that contains the modulator waveform (required). Carrier filename () the path to a sound file that contains the carrier waveform (required). Window length (-w ) the number of samples that will be analyzed at a time, and must be a power of two (defaults to about 1/15th of a second worth of samples). Window overlap (-o ) the number of samples that the windows will be overlapped (defaults to one half of the window-length). Band count (-b ) the number of frequency bands that the carrier will be modulated with (defaults to 16). Output volume (-v ) the volume the output will be scaled by (defaults to 1.0). Output filename (output-file) is the path to the output sound file (required). These options are only available on the command-line: -N turns off normalizing the output with respect to the carrier. -q turns off any displays. The input sound files must be mono, 8- or 16-bit linear, uncompressed AIFF or WAVE files. The output sound file will have the same format as the modulator (regardless of the file extension you give it). ----------- Explanation ----------- This channel vocoder works by analyzing the frequencies in the modulator, splitting them into bands, finding the magnitude of each band, and then amplifying the corresponding bands of the carrier by that magnitude. The modulator should simply be speech. It works best of you speak very clearly and more slowly than usual. The carrier should be some kind of frequency rich waveform. White noise works well. Periodic white noise (i.e. a very short sample of white noise) gives a "robot-like" sound. Another one that sounds good is a synthesized string chord. This waveform will automatically be looped. You can get interesting results by having the waveform change over time. Since what you pronounce changes over time, it would be pointless to analyze the entire modulator waveform and excite those frequencies in the carrier at once. Instead, the program splits the modulator into "windows", which it processes one-at-a-time. The window-length specifies how many samples are in each window. You will want at least a few windows for every syllable. If this number is too large, the output will be not be very understandable. If it is too small, you will have other problems. Around 1/15th of a second (or the sampling rate of the sound file divided by 15) tends to sound good, but experiment to find the right value. To give you an example, anywhere from 512 to 2048 is okay for a modulator with a sampling rate of 44.1 khz. If you half the sampling rate, you should half the window-length, etc. The window-length must be a power of two due to the technique that us used to analyze the frequencies. For those of you who are unfamiliar with the term "power of two," it means a number that can be created by multiplying some number of two's together. For example, the following numbers are the powers of two up to 4096: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 You get the next power of two by doubling the previous one. Since the sound is processed in discrete windows, the output can change very abruptly where it goes from one chunk to the next. This is audible as a click. To remedy this, the program can have the windows overlap and cross-fade between them. The window-overlap specifies how many samples of overlap there are between windows. 1/8th of the window-length tends to be a good starting point, but in many cases, one half of the window-length gives the best results. This may not exceed half of the window-length. In order to excite the frequencies in the carrier, the frequencies of the modulator are split into bands. The larger your band-count, the more the output will sound like the modulator. This number should evenly divide the chunk-length for the best results. Somewhere between 8 and 64 usually sounds best. The band-count may not exceed half of the window-length. If you find that the output is clipped (distorted) or is too quiet, you can specify a value for the volume. Anything less than one will reduce the volume, and anything greater than one will increase it. While the defaults for the parameters generally produce decent results, the best results will be achieved by changing their values. The best way figure out all the numbers and what the best waveforms are is to experiment. Have fun! ---------------- Closing Comments ---------------- Please see the web site at http://www.nuel.ca/Vocoder for the latest information. The latest version will always be available from there. If you have any problems, don't hesitate to contact me. I am always pleased to help. Also, drop me a line if like this program, or have any suggestions. I am especially eager to hear your creations. If you release some music utilizing the vocoder, please tell me so I can try to find it (freebies are always accepted)! My e-mail address is em@nuel.ca. Chanks to Cody Jones for porting to MacOS. I appreciate any bug reports. --------- Copyright --------- The Zerius Vocoder is Copyright (C) 1996-1999, 2002 Emanuel Borsboom. The FFT code (contained in fftn.c, fftaux.c, fft.h, and spt.h) is Copyright (C) 1993 Steven Trainoff. The code for converting to and from IEEE floating-point numbers is Copyright (C) 1988-1991 Apple Computer Inc. You are free to do whatever you like with the vocoder, as long as the copyright notice stays intact and you note any changes. There is no warranty. vocoder-1.3-src/aiff.c0100664000175000017500000001134107542504133014520 0ustar emanuelemanuel/****************************************************************************** * $Id: aiff.c,v 1.4 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1998,2002 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #include #include #include #include "config.h" #include "error.h" #include "aiff.h" WAVE_FILE *aiff_open(FILE *fp, WAVE_INFO *info) { char file_id[5], form_type[5]; VINT file_data_size, file_position; WAVE_FILE *file; VBOOL is_aifc; /* common chunk */ VBOOL got_common_chunk = FALSE; VSHORT num_channels = 0, sample_size = 0; char compression_type[5]; VUINT num_sample_frames = 0; VREAL sample_rate = 0; /* sound data chunk */ VUINT offset, block_size; VBOOL got_sound_data_chunk = FALSE; long sound_data_offset = 0; fread(file_id, 4, 1, fp); file_id[4] = '\0'; if (strcmp(file_id, "FORM") != 0) return NULL; file_data_size = wave_read_int_big(fp) + 8; fread(form_type, 4, 1, fp); form_type[4] = '\0'; if (strcmp(form_type, "AIFF") != 0 && strcmp(form_type, "AIFC") != 0) return NULL; is_aifc = strcmp(form_type, "AIFC") == 0; file_position = 12; while (file_position < file_data_size) { char chunk_id[5]; VINT chunk_data_size; if (fread(chunk_id, 4, 1, fp) < 1) { if (feof(fp)) error_display("aiff_open: bad format: EOF encountered where chunk expected"); else if (ferror(fp)) error_display("aiff_open: bad format: error encountered where chunk expected: %s", strerror(errno)); } chunk_id[4] = '\0'; chunk_data_size = wave_read_int_big(fp); if (strcmp(chunk_id, "COMM") == 0) /* Common chunk */ { num_channels = wave_read_short_big(fp); num_sample_frames = wave_read_int_big(fp); sample_size = wave_read_short_big(fp); sample_rate = wave_read_extended(fp); if (is_aifc) { fread(compression_type, 4, 1, fp); if (feof(fp)) error_display("aiff_open: bad format: EOF encountered in common chunk"); compression_type[4] = '\0'; } else { strcpy(compression_type, "NONE"); } got_common_chunk = TRUE; } else if (strcmp(chunk_id, "SSND") == 0) /* Sound Data chunk */ { offset = wave_read_int_big(fp); block_size = wave_read_int_big(fp); sound_data_offset = ftell(fp) + offset; got_sound_data_chunk = TRUE; } file_position += chunk_data_size + 8; fseek(fp, file_position, SEEK_SET); } if (!got_common_chunk) error_display("aiff_open: bad format: did not find common chunk"); if (!got_sound_data_chunk) error_display("aiff_open: bad format: did not find sound data chunk"); if (strcmp(compression_type, "NONE") != 0) error_display("aiff_open: bad format: compressed AIFF-C files not supported"); fseek(fp, sound_data_offset, SEEK_SET); file = error_malloc(sizeof(WAVE_FILE)); file->is_big_endian = 1; file->sample_offset = 0; info->rate = (VINT)sample_rate; info->bits = (VBYTE)sample_size; info->channels = (VBYTE)num_channels; info->length = num_sample_frames; return file; } WAVE_FILE *aiff_create(FILE *fp, WAVE_INFO *info) { VBYTE bytes_per_sample; WAVE_FILE *file; bytes_per_sample = (info->bits + 7) / 8; fwrite("FORM", 4, 1, fp); wave_write_int_big(0xDEADBEAF, fp); fwrite("AIFF", 4, 1, fp); fwrite("COMM", 4, 1, fp); wave_write_int_big(18, fp); /* ckDataSize */ wave_write_short_big(info->channels, fp); /* numChannels */ wave_write_int_big(0xDEADBEAF, fp); /* numSampleFrames */ wave_write_short_big(info->bits, fp); /* sampleSize */ wave_write_extended(info->rate, fp); /* sampleRate */ fwrite("SSND", 4, 1, fp); wave_write_int_big(0xDEADBEAF, fp); wave_write_int_big(0, fp); wave_write_int_big(0, fp); file = error_malloc(sizeof(WAVE_FILE)); file->is_big_endian = TRUE; file->sample_offset = 0; return file; } void aiff_close(WAVE_FILE *file) { if (file->open_mode == WAVE_WRITE_MODE) { if (file->length % 2 == 1) putc(0, file->fp); fseek(file->fp, 4, SEEK_SET); wave_write_int_big(4 + 8 + 18 + 8 + 8 + file->length * ((file->bits + 7) / 8), file->fp); fseek(file->fp, 12 + 10, SEEK_SET); wave_write_int_big(file->length, file->fp); fseek(file->fp, 12 + 18 + 8 + 4, SEEK_SET); wave_write_int_big(file->length * ((file->bits + 7) / 8) + 8, file->fp); } } vocoder-1.3-src/aiff.h0100664000175000017500000000124107542504133014523 0ustar emanuelemanuel/****************************************************************************** * $Id: aiff.h,v 1.4 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1998 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #ifndef AIFF_H_INCLUDED #define AIFF_H_INCLUDED #include "wave.h" WAVE_FILE *aiff_open(FILE *fp, WAVE_INFO *info); WAVE_FILE *aiff_create(FILE *fp, WAVE_INFO *info); void aiff_close(WAVE_FILE *file); #endif /* AIFF_H_INCLUDED */ vocoder-1.3-src/config.h0100664000175000017500000000155507542504133015073 0ustar emanuelemanuel/****************************************************************************** * $Id: config.h,v 1.4 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1998 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #ifndef CONFIG_H_INCLUDED #define CONFIG_H_INCLUDED typedef int VBOOL; #define FALSE 0 #define TRUE 1 typedef unsigned long U32; typedef signed long S32; typedef unsigned short U16; typedef signed short S16; typedef unsigned char U8; typedef signed char S8; typedef S32 VINT; typedef S16 VSHORT; typedef S8 VBYTE; typedef U32 VUINT; typedef U16 VUSHORT; typedef U8 VUBYTE; typedef double VREAL; #endif /* CONFIG_H_INCLUDED */ vocoder-1.3-src/error.c0100664000175000017500000000241307542504133014744 0ustar emanuelemanuel/****************************************************************************** * $Id: error.c,v 1.5 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1998,2002 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #include #include #include #include #include #include "error.h" #define ERROR_BUF_SIZE 256 ERROR_DISPLAY_CB error_display_cb; static char _error_buf[ERROR_BUF_SIZE]; void error_display(char *fmt, ...) { va_list ap; va_start(ap, fmt); vsprintf(_error_buf, fmt, ap); strcat(_error_buf, "\n"); va_end(ap); error_display_cb(_error_buf); } void *error_malloc(size_t size) { void *p = malloc(size); if (p == NULL) error_display("malloc: out of memory"); return p; } void *error_calloc(size_t number, size_t size) { void *p = calloc(number, size); if (p == NULL) error_display("calloc: out of memory"); return p; } FILE *error_fopen(char *path, char *mode) { FILE *f = fopen(path, mode); if (f == NULL) error_display("fopen %s: %s", path, strerror(errno)); return f; } vocoder-1.3-src/error.h0100664000175000017500000000140107542504133014745 0ustar emanuelemanuel/****************************************************************************** * $Id: error.h,v 1.4 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1998,2002 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #ifndef ERROR_H_INCLUDED #define ERROR_H_INCLUDED typedef void (*ERROR_DISPLAY_CB)(char *msg); extern ERROR_DISPLAY_CB error_display_cb; void error_display(char *fmt, ...); void *error_malloc(size_t size); void *error_calloc(size_t number, size_t size); FILE *error_fopen(char *path, char *mode); #endif /* ERROR_H_INCLUDED */ vocoder-1.3-src/extended.c0100664000175000017500000001260407542504133015416 0ustar emanuelemanuel/* $Id: extended.c,v 1.4 2020/09/20 02:30:51 emanuel Exp $ */ #include #include "extended.h" /* * C O N V E R T T O I E E E E X T E N D E D */ /* Copyright (C) 1988-1991 Apple Computer, Inc. * All rights reserved. * * Machine-independent I/O routines for IEEE floating-point numbers. * * NaN's and infinities are converted to HUGE_VAL or HUGE, which * happens to be infinity on IEEE machines. Unfortunately, it is * impossible to preserve NaN's in a machine-independent way. * Infinities are, however, preserved on IEEE machines. * * These routines have been tested on the following machines: * Apple Macintosh, MPW 3.1 C compiler * Apple Macintosh, THINK C compiler * Silicon Graphics IRIS, MIPS compiler * Cray X/MP and Y/MP * Digital Equipment VAX * * * Implemented by Malcolm Slaney and Ken Turkowski. * * Malcolm Slaney contributions during 1988-1990 include big- and little- * endian file I/O, conversion to and from Motorola's extended 80-bit * floating-point format, and conversions to and from IEEE single- * precision floating-point format. * * In 1991, Ken Turkowski implemented the conversions to and from * IEEE double-precision format, added more precision to the extended * conversions, and accommodated conversions involving +/- infinity, * NaN's, and denormalized numbers. */ #ifndef HUGE_VAL # define HUGE_VAL HUGE #endif /*HUGE_VAL*/ # define FloatToUnsigned(f) ((unsigned long)(((long)(f - 2147483648.0)) + 2147483647L) + 1) void ConvertToIeeeExtended(double num, unsigned char *bytes) { int sign; int expon; double fMant, fsMant; unsigned long hiMant, loMant; if (num < 0) { sign = 0x8000; num *= -1; } else { sign = 0; } if (num == 0) { expon = 0; hiMant = 0; loMant = 0; } else { fMant = frexp(num, &expon); if ((expon > 16384) || !(fMant < 1)) { /* Infinity or NaN */ expon = sign|0x7FFF; hiMant = 0; loMant = 0; /* infinity */ } else { /* Finite */ expon += 16382; if (expon < 0) { /* denormalized */ fMant = ldexp(fMant, expon); expon = 0; } expon |= sign; fMant = ldexp(fMant, 32); fsMant = floor(fMant); hiMant = FloatToUnsigned(fsMant); fMant = ldexp(fMant - fsMant, 32); fsMant = floor(fMant); loMant = FloatToUnsigned(fsMant); } } bytes[0] = expon >> 8; bytes[1] = expon; bytes[2] = hiMant >> 24; bytes[3] = hiMant >> 16; bytes[4] = hiMant >> 8; bytes[5] = hiMant; bytes[6] = loMant >> 24; bytes[7] = loMant >> 16; bytes[8] = loMant >> 8; bytes[9] = loMant; } /* * C O N V E R T F R O M I E E E E X T E N D E D */ /* * Copyright (C) 1988-1991 Apple Computer, Inc. * All rights reserved. * * Machine-independent I/O routines for IEEE floating-point numbers. * * NaN's and infinities are converted to HUGE_VAL or HUGE, which * happens to be infinity on IEEE machines. Unfortunately, it is * impossible to preserve NaN's in a machine-independent way. * Infinities are, however, preserved on IEEE machines. * * These routines have been tested on the following machines: * Apple Macintosh, MPW 3.1 C compiler * Apple Macintosh, THINK C compiler * Silicon Graphics IRIS, MIPS compiler * Cray X/MP and Y/MP * Digital Equipment VAX * * * Implemented by Malcolm Slaney and Ken Turkowski. * * Malcolm Slaney contributions during 1988-1990 include big- and little- * endian file I/O, conversion to and from Motorola's extended 80-bit * floating-point format, and conversions to and from IEEE single- * precision floating-point format. * * In 1991, Ken Turkowski implemented the conversions to and from * IEEE double-precision format, added more precision to the extended * conversions, and accommodated conversions involving +/- infinity, * NaN's, and denormalized numbers. */ #ifndef HUGE_VAL # define HUGE_VAL HUGE #endif /*HUGE_VAL*/ # define UnsignedToFloat(u) (((double)((long)(u - 2147483647L - 1))) + 2147483648.0) /**************************************************************** * Extended precision IEEE floating-point conversion routine. ****************************************************************/ double ConvertFromIeeeExtended(unsigned char *bytes) { double f; int expon; unsigned long hiMant, loMant; expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF); hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24) | ((unsigned long)(bytes[3] & 0xFF) << 16) | ((unsigned long)(bytes[4] & 0xFF) << 8) | ((unsigned long)(bytes[5] & 0xFF)); loMant = ((unsigned long)(bytes[6] & 0xFF) << 24) | ((unsigned long)(bytes[7] & 0xFF) << 16) | ((unsigned long)(bytes[8] & 0xFF) << 8) | ((unsigned long)(bytes[9] & 0xFF)); if (expon == 0 && hiMant == 0 && loMant == 0) { f = 0; } else { if (expon == 0x7FFF) { /* Infinity or NaN */ f = HUGE_VAL; } else { expon -= 16383; f = ldexp(UnsignedToFloat(hiMant), expon-=31); f += ldexp(UnsignedToFloat(loMant), expon-=32); } } if (bytes[0] & 0x80) return -f; else return f; } vocoder-1.3-src/extended.h0100664000175000017500000000041607542504133015421 0ustar emanuelemanuel/* $Id: extended.h,v 1.4 2020/09/20 02:30:51 emanuel Exp $ */ #ifndef EXTENDED_H_INCLUDED #define EXTENDED_H_INCLUDED void ConvertToIeeeExtended(double num, unsigned char *bytes); double ConvertFromIeeeExtended(unsigned char *bytes); #endif /* EXTENDED_H_INCLUDED */ vocoder-1.3-src/fft.h0100664000175000017500000000273307542504133014404 0ustar emanuelemanuel/* $Id: fft.h,v 1.4 2020/09/20 02:30:51 emanuel Exp $ */ /* (C) Copyright 1993 by Steven Trainoff. Permission is granted to make * any use of this code subject to the condition that all copies contain * this notice and an indication of what has been changed. */ #ifndef _FFT_ #define _FFT_ #include "spt.h" #ifndef REAL #define REAL double /* Precision of data */ #endif /* Really ugly hack needed since #if only works on ints */ #define double 1 #define float 2 #if REAL==float #define fft_create_arrays f_fft_create_arrays #define getx f_getx #define fft f_fft #define invfft f_invfft #define normalize_fft f_normalize_fft #define fft1n f_fft1n #define fftn f_fftn #define invfftn f_invfftn #define realfftmag f_realfftmag #define normalize_fftn f_normalize_fftn #endif #undef double #undef float void fft_create_arrays(REAL **c, REAL **s, int **rev, int n); REAL *getx(REAL (*)[2], int, int, int, int *); void fft(REAL (*x)[2], int n, REAL*c, REAL*s, int *rev); void invfft(REAL (*x)[2], int n, REAL*c, REAL*s, int *rev); void normalize_fft(REAL (*x)[2], int n); void fft1n(REAL (*x)[2], int nu, int offset, int separation, REAL *c, REAL *s, int *rev); void fftn(REAL (*x)[2], int n, int *dim); void invfftn(REAL (*x)[2], int n, int *dim); void realfftmag(REAL *data, int n); void normalize_fftn(REAL (*x)[2], int ndim, int *dim); unsigned bitrev(unsigned, int); /* Bit reversal routine */ int getindex(int, int, int, int *); int ipow(int, int); int ilog2(int); #endif /* _FFT_ */ vocoder-1.3-src/fftaux.c0100664000175000017500000000272507542504133015116 0ustar emanuelemanuel/* $Id: fftaux.c,v 1.4 2020/09/20 02:30:51 emanuel Exp $ */ #include "fft.h" /* Here are the integer based support routines for the fftlib */ /* This routine reverses the bits in integer */ unsigned bitrev(unsigned int k, int nu) /* register unsigned k; * Number to reverse the bits of */ /* int nu; * Number of bits k is represented by */ { register int i; register unsigned out = 0; for (i = 0; i < nu; i++) { out <<= 1; out |= k & 1; k >>= 1; } return(out); } /* Computes a^b where a and b are integers */ int ipow(int a, int b) { register int i; int sum = 1; for (i = 0; i < b; i++) sum *= a; return (sum); } /* Computes log2(n). Returns -1 if n == 0*/ int ilog2(int n) { register int i; for (i = -1; n != 0; i++, n>>=1) ; return(i); } /* getindex - gets one real, imag pair from the square multidimensional array */ int getindex(int ndim, int dim, int n, int elem[]) /* int ndim; * Number of dimensions */ /* int dim; * Dim to extract point from */ /* int n; * Number of points in each dim */ /* int elem[]; * Which element to extract (array by ndim) */ { register int i; int pos=0; /* Position in array when considered 1d */ for (i = 0; i < ndim && (pos *= n); i++) /* Loop over dimensions */ pos += elem[i]; return(pos); } vocoder-1.3-src/fftn.c0100664000175000017500000004111607542504133014553 0ustar emanuelemanuel/* $Id: fftn.c,v 1.4 2020/09/20 02:30:51 emanuel Exp $ */ /* (C) Copyright 1993 by Steven Trainoff. Permission is granted to make * any use of this code subject to the condition that all copies contain * this notice and an indication of what has been changed. */ #include #include #include "error.h" #include "spt.h" #ifndef REAL #define REAL double #endif #include "fft.h" #ifndef PI #define PI 3.14159265358979324 #endif #define emalloc error_malloc /* This routine performs a complex fft. It takes two arrays holding * the real and imaginary parts of the the complex numbers. It performs * the fft and returns the result in the original arrays. It destroys * the orginal data in the process. Note the array returned is NOT * normalized. Each element must be divided by n to get dimensionally * correct results. This routine takes optional arrays for the sines, cosine * and bitreversal. If any of these pointers are null, all of the arrays are * regenerated. */ void fft(x, n, c, s, rev) REAL x[][2]; /* Input data points */ int n; /* Number of points, n = 2**nu */ REAL *c, *s; /* Arrays of cosine, sine */ int *rev; /* Array of bit reversals*/ { char temparray=FALSE; /* Are we using internal c and s arrays? */ int nu = ilog2(n); /* Number of data points */ int dual_space = n; /* Spacing between dual nodes */ int nu1 = nu; /* = nu-1 right shift needed when finding p */ int k; /* Iteration of factor array */ register int i; /* Number of dual node pairs considered */ register int j; /* Index into factor array */ if (c == NULL || s == NULL || rev == NULL) { temparray = TRUE; fft_create_arrays(&c, &s, &rev, n); } /* For each iteration of factor matrix */ for (k = 0; k < nu; k++) { /* Initialize */ dual_space /= 2; /* Fewer elements in each set of duals */ nu1--; /* nu1 = nu - 1 */ /* For each set of duals */ for(j = 0; j < n; j += dual_space) { /* For each dual node pair */ for (i = 0; i < dual_space; i++, j++) { REAL treal, timag; /* Temp of w**p */ register int p = rev[j >> nu1]; treal = x[j+dual_space][0]*c[p] + x[j+dual_space][1]*s[p]; timag = x[j+dual_space][1]*c[p] - x[j+dual_space][0]*s[p]; x[j+dual_space][0] = x[j][0] - treal; x[j+dual_space][1] = x[j][1] - timag; x[j][0] += treal; x[j][1] += timag; } } } /* We are done with the transform, now unscamble results */ for (j = 0; j < n; j++) { if ((i = rev[j]) > j) { REAL treal, timag; /* Swap */ treal = x[j][0]; timag = x[j][1]; x[j][0] = x[i][0]; x[j][1] = x[i][1]; x[i][0] = treal; x[i][1] = timag; } } /* Give back the temp storage */ if (temparray) { free(c); free(s); free(rev); } } /* invfft performs an inverse fft */ void invfft(REAL (*x)[2], int n, REAL*c, REAL*s, int *rev) { char temparray = FALSE; int i; if (c == NULL || s == NULL || rev == NULL) { temparray = TRUE; fft_create_arrays(&c, &s, &rev, n); } /* Negate the sin array to do the inverse transform */ for (i = 0; i < n; i++) s[i] = -s[i]; fft(x, n, c, s, rev); if (temparray) { free(c); free(s); free(rev); } else { /* Put the sin array back */ for (i = 0; i < n; i++) s[i] = - s[i]; } } /* fft_create_arrays generates the sine and cosine arrays needed in the * forward complex fft. It allocates storaged and return pointers * to the initialized arrays */ void fft_create_arrays(c, s, rev, n) REAL **c, **s; /* Sin and Cos arrays (to be returned) */ int n; /* Number of points */ int **rev; /* Array of reversed bits */ { register int i; int nu = ilog2(n); /* Compute temp array of sins and cosines */ *c = (REAL *)emalloc(n * sizeof(REAL)); *s = (REAL *)emalloc(n * sizeof(REAL)); *rev = (int *)emalloc(n * sizeof(int)); for (i = 0; i < n; i++) { REAL arg = 2 * PI * i/n; (*c)[i] = cos(arg); (*s)[i] = sin(arg); (*rev)[i] = bitrev(i, nu); } } #if (1==2) /* Not needed now */ /* getx - gets one real, imag pair from the square multidimensional array */ REAL *getx(x, ndim, dim, n, elem) REAL x[][2]; /* Input data points */ int ndim; /* Number of dimensions */ int dim; /* Dim to extract point from */ int n; /* Number of points in each dim */ int elem[]; /* Which element to extract (array by ndim) */ { register int i; int pos=0; /* Position in array when considered 1d */ for (i = 0; i < ndim && (pos *= n); i++) /* Loop over dimensions */ pos += elem[i]; return(x+pos); } #endif /* This routine performs a multiple complex fft on a square * multidimensional array. Each element is an array by two holding the * real and imaginary parts of the the complex numbers. It performs the * fft and returns the result in the original arrays. It destroys the * orginal data in the process. Note the array returned is NOT * normalized. Each element must be divided by n to get dimensionally * correct results. The cosine and sine arrays are optional. If null is * passed, a temp array will be allocated and filled, otherwise the * passed arrays are assumed to have the correct data in them. * * Note: if the sin array is negated, the routine performs the inverse * transform. */ void fftn(x, ndim, dim) REAL x[][2]; /* Input data points */ int ndim; /* Number of dimensions */ int dim[]; /* Number of points in each dim = 2**nu */ { int nel; /* Number of elements */ int separation = 1; /* Distance between elements (which "column") */ int offset = 0; /* 1st element in fft (which "row") */ register int i; /* Which dim we are performing the fft */ register int j; /* Which indices we are NOT performing the fft */ register int k; /* Loop over index j */ REAL *c, *s; /* Sine and Cosine arrays */ int *rev; /* Array of bitreversed numbers */ /* Compute number of elements in array */ for (i = 0, nel = 1; i < ndim; i++) nel *= dim[i]; for (i = ndim-1; i >= 0; i--) { /* Loop over dim on which we are doing the fft */ int logi = ilog2(dim[i]); int nextseparation = separation * dim[i]; /* Create Sin and Cos arrays */ fft_create_arrays(&c, &s, &rev, dim[i]); /* Loop over other indices. First do indicies bigger than i */ for (j =0; j < nel; j += nextseparation) { for (k = 0; k < separation; k++) { offset = j+k; fft1n(x, logi, offset, separation, c, s, rev); } } /* Give back old sin and cos arrays */ free(c); free(s);free(rev); separation = nextseparation; } } /* This routine is identical to fftn but negates the sin array to do an inverse transform */ void invfftn(x, ndim, dim) REAL x[][2]; /* Input data points */ int ndim; /* Number of dimensions */ int dim[]; /* Number of points in each dim = 2**nu */ { int nel; /* Number of elements */ int separation = 1; /* Distance between elements (which "column") */ int offset = 0; /* 1st element in fft (which "row") */ register int i; /* Which dim we are performing the fft */ register int j; /* Which indices we are NOT performing the fft */ register int k; /* Loop over index j */ REAL *c, *s; /* Sine and Cosine arrays */ int *rev; /* Array of bitreversed numbers */ /* Compute number of elements in array */ for (i = 0, nel = 1; i < ndim; i++) nel *= dim[i]; for (i = ndim-1; i >= 0; i--) { /* Loop over dim on which we are doing the fft */ int logi = ilog2(dim[i]); int nextseparation = separation * dim[i]; /* Create Sin and Cos arrays */ fft_create_arrays(&c, &s, &rev, dim[i]); /* Negate the sin array */ for (j = 0; j < dim[i]; j++) s[j] = -s[j]; /* Loop over other indices. First do indicies bigger than i */ for (j =0; j < nel; j += nextseparation) { for (k = 0; k < separation; k++) { offset = j+k; fft1n(x, logi, offset, separation, c, s, rev); } } /* Give back old sin and cos arrays */ free(c); free(s);free(rev); separation = nextseparation; } } /* This normalizes the elements of a multidimensional fft so that the forward transform * followed by the inverse transform is an identity */ void normalize_fftn(x, ndim, dim) REAL x[][2]; /* Input data points */ int ndim; /* Number of dimensions */ int dim[]; /* Number of points in each dim = 2**nu */ { int nel; /* Number of elements */ int i; /* Compute number of elements in array */ for (i = 0, nel = 1; i < ndim; i++) nel *= dim[i]; for (i = 0; i < nel; i++) { x[i][0] /= nel; x[i][1] /= nel; } } /* This routine normalized the elements of a 1d fft by dividing by the number of elements * so that fft, inversefft, normalizefft is an identity */ void normalize_fft(REAL (*x)[2], int n) { register int i; for (i = 0; i < n; i++) { x[i][0] /= n; x[i][1] /= n; } } /* This routine performs a complex fft on a single index of a * multidimensional array. This routine is intended to be used * internally in a full multidimensional fft (on all indicies). It will * be called repeatedly for each of the 1D fft's needed. This routine is * designed primarily to optimize the memory fetches needed for the 1D * ffts. Each element is an array by two holding the real and imaginary * parts of the the complex numbers. Which index on which the fft is to * be performed is specified in a somewhat roundabout fashion. What is * passed it an offset and the number of values between elements in the * array as if it were considered to be a big 1D array with dimension * equal to the product of the linear dimensions. If the * multidimensional array is considered It performs the fft and returns * the result in the original arrays. It destroys the orginal data in * the process. Note the array returned is NOT normalized. Each element * must be divided by n to get dimensionally correct results. The cosine * and sine arrays are optional. If null is passed, a temp array will be * allocated and filled, otherwise the passed arrays are assumed to have * the correct data in them. * * Note: if the sin array is negated, the routine performs the inverse * transform. */ void fft1n(x, nu, offset, separation, c, s, rev) REAL x[][2]; /* Input data points */ int nu; /* Number of elements in fft n = 2**nu */ int offset; /* Offset of 1st element */ int separation; /* Separation between elements */ REAL c[], s[]; /* Cosine and Sine arrays (array by n) */ int rev[]; /* Array of bitreversed numbers */ { char temparray=FALSE; /* Are we using internal c and s arrays? */ int n = (1 << nu); /* Number of data points */ int dual_space = n; /* Spacing between dual nodes */ int nu1 = nu; /* = nu-1 right shift needed when finding p */ int k; /* Iteration of factor array */ register int i; /* Number of dual node pairs considered */ register int j; /* Index into factor array */ if (c == NULL || s == NULL || rev == NULL) { temparray = TRUE; fft_create_arrays(&c, &s, &rev, n); } x += offset; /* Move to the correct offset */ /* For each iteration of factor matrix */ for (k = 0; k < nu; k++) { /* Initialize */ dual_space /= 2; /* Fewer elements in each set of duals */ nu1--; /* nu1 = nu - 1 */ /* For each set of duals */ for(j = 0; j < n; j += dual_space) { /* For each dual node pair */ for (i = 0; i < dual_space; i++, j++) { REAL *pt1, *pt2; REAL treal, timag; /* Temp of w**p */ register int p = rev[j >> nu1]; pt1 = x[separation * j]; pt2 = x[separation * (j+dual_space)]; treal = pt2[0]*c[p] + pt2[1]*s[p]; timag = pt2[1]*c[p] - pt2[0]*s[p]; pt2[0] = pt1[0] - treal; pt2[1] = pt1[1] - timag; pt1[0] += treal; pt1[1] += timag; } } } /* We are done with the transform, now unscamble results */ for (j = 0; j < n; j++) { if ((i = rev[j]) > j) { REAL *pt1, *pt2; REAL treal, timag; pt1 = x[j*separation]; pt2 = x[i*separation]; /* Swap */ treal = pt1[0]; timag = pt1[1]; pt1[0] = pt2[0]; pt1[1] = pt2[1]; pt2[0] = treal; pt2[1] = timag; } } /* Give back the temp storage */ if (temparray) { free(c); free(s); free(rev); } } /* This routine takes an array of real numbers and performs a fft. It * returns the magnitude of the fft in the original array. This routine * uses an order n/2 complex ft and disentangles the results. This is * much more efficient than using an order n complex fft with the * imaginary component set to zero. We return the mean in data[0] * and the Nyquist frequency in data[n/w]. The rest of data is * left untouched. The results are normalized. */ void realfftmag(data, n) REAL *data; int n; { REAL (*x)[2]; /* Temp array used perform fft */ REAL *dataptr, *xptr; /* Temp pointer into data array */ int i; x = (REAL (*)[2])emalloc(n * sizeof(REAL)); /* Load data into temp array * even terms end up in x[n][0] odd terms in x[n][1] */ for (i = 0, dataptr = data, xptr = (REAL *)x; i < n; i++) *xptr++ = *dataptr++; fft(x, n/2, NULL, NULL, NULL); /* Load results into output array */ /* i = 0 needs to be treated separately */ data[0] = (x[0][0] + x[0][1])/n; for (i = 1; i < n/2; i++) { double xr, xi; double arg, ti, tr; double c, s; /* Cosine and sin */ arg = 2 * PI * i / n; c = cos(arg); /* These are different c,s than used in fft */ s = sin(arg); ti = (x[i][1] + x[n/2-i][1]) / 2; tr = (x[i][0] - x[n/2-i][0]) / 2; xr = (x[i][0] + x[n/2-i][0])/2 + c * ti - s * tr; xi = (x[i][1] - x[n/2-i][1])/2 - s * ti - c * tr; xr /= n/2; xi /= n/2; data[i] = sqrt(sqr(xr) + sqr(xi)); } /* Nyquist frequency is returned in data[0] */ data[n/2] = (x[0][0] - x[0][1])/n; free(x); } vocoder-1.3-src/main.c0100664000175000017500000001747407542503316014556 0ustar emanuelemanuel/****************************************************************************** * $Id: main.c,v 1.9 2020/09/20 02:24:14 emanuel Exp $ * Copyright (C) 1996-1999,2002 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #include #include #include #include #include #include #include #include #include "error.h" #include "vocode.h" #include "fft.h" #define COPYRIGHT \ "Zerius Vocoder 1.3 Copyright (C) 1996-1999, 2002 Emanuel Borsboom\n" \ "email: em@nuel.ca / web: http://www.nuel.ca/Vocoder\n" #define DEFAULT_WINDOW_TIME 15 /* 1/15th of a second */ char *prog_name; static VBOOL got_window_length, got_window_overlap; static VBOOL quiet; static void usage() { printf("%s\n", COPYRIGHT); printf("usage: %s [-q] [-N] [-b ] [-w ] [-v ] " " \n", prog_name); exit(1); } static void prompt_user(const char *prompt, char *buffer, size_t length) { printf("%s? ", prompt); fgets(buffer, length, stdin); } static void message_user(const char *fmt, ...) { va_list ap; va_start(ap, fmt); vprintf(fmt, ap); va_end(ap); printf("\n"); } static void alert_user(const char *fmt, ...) { va_list ap; printf("! "); va_start(ap, fmt); vprintf(fmt, ap); va_end(ap); printf("\n"); } static void ask_user(const char *prompt, char *buffer, size_t length, VBOOL require_non_empty, VBOOL require_number) { char *p; VBOOL okay; do { prompt_user(prompt, buffer, length); okay = TRUE; if (require_non_empty) { okay = FALSE; p = buffer; while (*p && *p != '\n') if (!isspace(*p++)) { okay = TRUE; break; } if (!okay) alert_user("You must enter a value."); } if (require_number) { p = buffer; while (*p && *p != '\n') { if (!isdigit(*p) && *p != '.') { alert_user("You may only enter digits."); okay = FALSE; break; } p++; } } } while (!okay); p = strchr(buffer, '\n'); if (p) *p = '\0'; } static void ask_user_filename(const char *prompt, char *buffer, size_t length, VBOOL require_existance) { ask_user(prompt, buffer, length, TRUE, FALSE); if (require_existance) { FILE *fp; fp = fopen(buffer, "rb"); while (fp == NULL) { alert_user("Cannot open %s: %s", buffer, strerror(errno)); ask_user(prompt, buffer, length, TRUE, FALSE); fp = fopen(buffer, "rb"); } fclose(fp); } } static void parse_args(int argc, char *argv[]) { int i; prog_name = argv[0]; got_window_length = FALSE; got_window_overlap = FALSE; quiet = FALSE; vocode_normalize = TRUE; vocode_volume = 1.0; vocode_band_count = 16; if (argc <= 1) { char buf[16]; vocode_modulator_filename = error_malloc(PATH_MAX); vocode_carrier_filename = error_malloc(PATH_MAX); vocode_output_filename = error_malloc(PATH_MAX); ask_user_filename("Modulator filename (required)", vocode_modulator_filename, PATH_MAX, TRUE); ask_user_filename("Carrier filename (required)", vocode_carrier_filename, PATH_MAX, TRUE); ask_user("Window length (empty for default)", buf, sizeof(buf), FALSE, TRUE); if (buf[0]) { vocode_window_length = atoi(buf); got_window_length = TRUE; } ask_user("Window overlap (empty for default)", buf, sizeof(buf), FALSE, TRUE); if (buf[0]) { vocode_window_overlap = atoi(buf); got_window_overlap = TRUE; } ask_user("Band count (empty for default)", buf, sizeof(buf), FALSE, TRUE); if (buf[0]) vocode_band_count = atoi(buf); ask_user("Output volume (empty for default)", buf, sizeof(buf), FALSE, TRUE); if (buf[0]) vocode_volume = atof(buf); ask_user_filename("Output filename (required)", vocode_output_filename, PATH_MAX, FALSE); } else if (argc == 7 && argv[1][0] != '-' && argv[2][0] != '-' && atoi(argv[3]) != 0 && atoi(argv[4]) != 0 && atoi(argv[5]) != 0 && argv[6][0] != '-') { vocode_modulator_filename = argv[1]; vocode_carrier_filename = argv[2]; vocode_window_length = atoi(argv[3]); got_window_length = TRUE; vocode_window_overlap = atoi(argv[4]); got_window_overlap = TRUE; vocode_band_count = atoi(argv[5]); vocode_output_filename = argv[6]; } else { for (i = 1; i < argc && argv[i][0] == '-'; ++i) { if (argv[i][1] == 'v' && i < argc - 1) vocode_volume = atof(argv[++i]); else if (argv[i][1] == 'b' && i < argc - 1) vocode_band_count = atoi(argv[++i]); else if (argv[i][1] == 'q') quiet = TRUE; else if (argv[i][1] == 'N') vocode_normalize = FALSE; else if (argv[i][1] == 'w' && i < argc - 1) { vocode_window_length = atoi(argv[++i]); got_window_length = TRUE; } else if (argv[i][1] == 'o' && i < argc - 1) { vocode_window_overlap = atoi(argv[++i]); got_window_overlap = TRUE; } else usage(); } if (argc != i + 3) usage(); vocode_modulator_filename = argv[i++]; vocode_carrier_filename = argv[i++]; vocode_output_filename = argv[i++]; } } static void check_args(void) { if (!got_window_length) vocode_window_length = ipow(2, ilog2(vocode_modulator_rate / DEFAULT_WINDOW_TIME)); if (!got_window_overlap) vocode_window_overlap = vocode_window_length / 2; if (vocode_window_length < 2 || (size_t)ipow(2, ilog2(vocode_window_length)) != vocode_window_length) error_display("window-length must be > 1 and a power of two\n" "(the closest power of two to the number you entered is %d)", ipow(2, ilog2(vocode_window_length))); if (vocode_window_overlap < 0 || (size_t)vocode_window_overlap > vocode_window_length / 2) error_display("window-overlap must be >= 0 and <= window-length/2"); if (vocode_band_count < 1 || (size_t)vocode_band_count > vocode_window_length / 2) error_display("band-count must be > 0 and <= window-length/2"); if (!quiet) message_user("%s\nwindow-length: %d window-overlap: %d band-count: %d " "volume: %.2f", COPYRIGHT, vocode_window_length, vocode_window_overlap, vocode_band_count, vocode_volume); } static VINT _num_frames; static void start_status(VINT num_frames) { _num_frames = num_frames; } static int update_status(VINT frame_no) { int i, count = (frame_no + 1) * 56 / _num_frames; if (quiet) return 0; printf("\r%3d%% |", (int)((frame_no + 1) * 100 / _num_frames)); for (i = 0; i < count; ++i) putchar('*'); for (; i < 56; ++i) putchar(' '); printf("| %ld/%ld", frame_no + 1, _num_frames); fflush(stdout); return 0; /* Return true to quit */ } static void finish_status(void) { if (!quiet) printf("\n"); } static void display_error(char *msg) { fprintf(stderr, "%s: %s\n", prog_name, msg); exit(1); } int main(int argc, char *argv[]) { vocode_start_status_cb = start_status; vocode_update_status_cb = update_status; vocode_finish_status_cb = finish_status; error_display_cb = display_error; parse_args(argc, argv); vocode_open_files(); check_args(); vocode(); vocode_cleanup(); return 0; } vocoder-1.3-src/riff.c0100664000175000017500000001037207542504133014544 0ustar emanuelemanuel/****************************************************************************** * $Id: riff.c,v 1.5 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1996-1998,2002 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #include #include #include #include #include "config.h" #include "error.h" #include "wave.h" #include "riff.h" WAVE_FILE *riff_open(FILE *fp, WAVE_INFO *info) { char file_id[5], form_type[5]; VINT file_data_size, file_position; VSHORT format_tag = 0, channels = 0, block_align, bits_per_sample = 0; VINT samples_per_sec = 0, avg_bytes_per_sec; VINT data_size = 0, length; long data_offset = 0; VBOOL got_format_chunk = FALSE, got_data_chunk = FALSE; WAVE_FILE *file; fread(file_id, 4, 1, fp); file_id[4] = '\0'; if (strcmp(file_id, "RIFF") != 0) return NULL; file_data_size = wave_read_int_little(fp) + 8; fread(form_type, 4, 1, fp); form_type[4] = '\0'; if (strcmp(form_type, "WAVE") != 0) return NULL; file_position = 12; while (file_position < file_data_size) { char chunk_id[5]; VINT chunk_data_size; if (fread(chunk_id, 4, 1, fp) < 1) { if (feof(fp)) error_display("riff_open: bad format: EOF encountered where chunk expected"); else if (ferror(fp)) error_display("riff_open: bad format: error encountered where chunk expected: %s", strerror(errno)); } chunk_id[4] = '\0'; chunk_data_size = wave_read_int_little(fp); if (strcmp(chunk_id, "fmt ") == 0) /* Common chunk */ { format_tag = wave_read_short_little(fp); channels = wave_read_short_little(fp); samples_per_sec = wave_read_int_little(fp); avg_bytes_per_sec = wave_read_int_little(fp); block_align = wave_read_short_little(fp); if (format_tag == 1) { bits_per_sample = wave_read_short_little(fp); } got_format_chunk = TRUE; } else if (strcmp(chunk_id, "data") == 0) /* Sound Data chunk */ { data_size = chunk_data_size; data_offset = ftell(fp); got_data_chunk = TRUE; } file_position += chunk_data_size + 8; fseek(fp, file_position, SEEK_SET); } if (!got_format_chunk) error_display("riff_open: bad format: format chunk not found"); if (!got_data_chunk) error_display("riff_open: bad format: data chunk not found"); if (format_tag != 1) error_display("riff_open: bad format: only PCM data is supported"); length = data_size / ((bits_per_sample + 7) / 8); fseek(fp, data_offset, SEEK_SET); file = error_malloc(sizeof(WAVE_FILE)); file->is_big_endian = FALSE; file->sample_offset = (bits_per_sample <= 8) ? 128 : 0; info->rate = samples_per_sec; info->bits = (VBYTE)bits_per_sample; info->channels = (VBYTE)channels; info->length = length; return file; } WAVE_FILE *riff_create(FILE *fp, WAVE_INFO *info) { WAVE_FILE *file; fwrite("RIFF", 4, 1, fp); wave_write_int_little(0xDEADBEEF, fp); fwrite("WAVE", 4, 1, fp); fwrite("fmt ", 4, 1, fp); wave_write_int_little(16, fp); wave_write_short_little(1, fp); wave_write_short_little(info->channels, fp); wave_write_int_little(info->rate, fp); wave_write_int_little(info->channels * info->rate * ((info->bits + 7) / 8), fp); wave_write_short_little(info->channels * ((info->bits + 7) / 8), fp); wave_write_short_little(info->bits, fp); fwrite("data", 4, 1, fp); wave_write_int_little(0xDEADBEEF, fp); file = error_malloc(sizeof(WAVE_FILE)); file->is_big_endian = FALSE; file->sample_offset = (info->bits <= 8) ? 128 : 0; return file; } void riff_close(WAVE_FILE *file) { if (file->open_mode == WAVE_WRITE_MODE) { fseek(file->fp, 4, SEEK_SET); wave_write_int_little(file->length * ((file->bits + 7) / 8) + 4 + 8 + 16 + 8, file->fp); fseek(file->fp, 12 + 8 + 16 + 4, SEEK_SET); wave_write_int_little(file->length * ((file->bits + 7) / 8), file->fp); } } vocoder-1.3-src/riff.h0100664000175000017500000000124607542504133014551 0ustar emanuelemanuel/****************************************************************************** * $Id: riff.h,v 1.4 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1996-1998 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #ifndef RIFF_H_INCLUDED #define RIFF_H_INCLUDED #include "wave.h" WAVE_FILE *riff_open(FILE *fp, WAVE_INFO *info); WAVE_FILE *riff_create(FILE *fp, WAVE_INFO *info); void riff_close(WAVE_FILE *file); #endif /* RIFF_H_INCLUDED */ vocoder-1.3-src/spt.h0100664000175000017500000000231507542504133014427 0ustar emanuelemanuel/* $Id: spt.h,v 1.4 2020/09/20 02:30:51 emanuel Exp $ */ #ifndef _SPT_ #define _SPT_ #include #define MAXLEN 80 /* Usual input line length for prompts */ #define ESC 0x1b #define ERROR -1 #define EPSILON 1e-15 #ifndef FALSE #define FALSE (1==2) #endif /* FALSE */ #ifndef TRUE #define TRUE (1==1) #endif /* TRUE */ #define SUCCESS TRUE #define FAILURE FALSE #ifndef NULL #define NULL ((void *)0) #endif /* NULL */ #ifndef MAXINT #define MAXINT ((unsigned)(-1)) #endif /* MAXINT */ #ifndef MAXLONG #define MAXLONG ((unsigned long)(-1L)) #endif /* MAXLONG */ #ifndef PI #define PI 3.14159265358978323846 #endif /* PI */ #define ZERO_C 273.15 #ifndef max //EKB #define max(a, b) (((a) > (b)) ? (a) : (b)) #endif #ifndef min //EKB #define min(a, b) (((a) > (b)) ? (b) : (a)) #endif #define abs(a) (((a) < 0) ? (-(a)) : (a)) #define sgn(x) (((x) < 0) ? (-1) : (1)) #define round(x) (sgn(x)*(int)abs((x) + .5)) #define sqr(x) ((x)*(x)) #define ln(x) log(x) #define power(x, y) (exp((y)*log(x))) #define delcrlf(str) (str[strlen(str)-1] = '\0') /* Used to signify a pointer which is intended to cast into several different * types. */ #define anyptr void #define forever for(;;) #endif /* _SPT */ vocoder-1.3-src/vocode.c0100664000175000017500000002523207542504133015076 0ustar emanuelemanuel/****************************************************************************** * $Id: vocode.c,v 1.2 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1996-1999,2002 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #include #include #include "config.h" #include "error.h" #include "wave.h" #include "fft.h" #include "vocode.h" typedef VREAL (*COMPLEX_ARRAY)[2]; static void vocode_window(VREAL *modulator, COMPLEX_ARRAY carrier, COMPLEX_ARRAY output); static void vocoder(void); static void loop(WAVE_FILE *source, SAMPLE *dest, size_t length); static size_t read_zero(WAVE_FILE *source, SAMPLE *dest, size_t length); static void sample_to_complex_array(SAMPLE *sample_array, COMPLEX_ARRAY complex_array, size_t length, SAMPLE max_magnitude); static void sample_to_real_array(SAMPLE *sample_array, VREAL *real_array, size_t length, SAMPLE max_magnitude); static void complex_to_sample_array(COMPLEX_ARRAY complex_array, SAMPLE *sample_array, size_t length, SAMPLE max_magnitude, VREAL vocode_volume); static void allocate_memory(void); static void free_memory(void); char *vocode_modulator_filename, *vocode_carrier_filename, *vocode_output_filename; size_t vocode_window_length, vocode_window_overlap; int vocode_band_count; VREAL vocode_volume; VBOOL vocode_normalize; static WAVE_FILE *modulator_file = NULL, *carrier_file = NULL, *output_file = NULL; static SAMPLE modulator_max_magnitude, carrier_max_magnitude, output_max_magnitude; static VINT modulator_length; VINT vocode_modulator_rate; static SAMPLE *modulator_sample_buffer = NULL, *carrier_sample_buffer = NULL, *output_sample_buffer1 = NULL, *output_sample_buffer2 = NULL; static VREAL *modulator = NULL; static COMPLEX_ARRAY looped_carrier = NULL, output = NULL; static double *fft_c, *fft_s; static int *fft_rev; void (*vocode_start_status_cb)(VINT num_frames); VBOOL (*vocode_update_status_cb)(VINT frame_no); void (*vocode_finish_status_cb)(void); static void vocode_window(VREAL *modulator, COMPLEX_ARRAY carrier, COMPLEX_ARRAY output) { int band_no, band_length, extra_band_length; band_length = vocode_window_length / (vocode_band_count * 2); extra_band_length = vocode_window_length / 2 - band_length * (vocode_band_count - 1); realfftmag(modulator, vocode_window_length); fft(carrier, vocode_window_length, fft_c, fft_s, fft_rev); normalize_fft(carrier, vocode_window_length); for (band_no = 0; band_no < vocode_band_count; band_no++) { int i, j, k, l; VREAL m, c; l = (band_no == vocode_band_count - 1) ? extra_band_length : band_length; m = 0; c = 0; for (i = 0, j = band_no * band_length, k = vocode_window_length - j - 1; i < l; i++, j++, k--) { if (vocode_normalize) { VREAL c1 = carrier[j][0]*carrier[j][0] + carrier[j][1]*carrier[j][1], c2 = carrier[k][0]*carrier[k][0] + carrier[k][1]*carrier[k][1]; c += sqrt(c1) + sqrt(c2); } m += modulator[j]; } if (!vocode_normalize) c = 1.0; if (c == 0) c = 0.0001; for (i = 0, j = band_no * band_length, k = vocode_window_length - j - 1; i < l; i++, j++, k--) { output[j][0] = carrier[j][0] * m / c; output[j][1] = carrier[j][1] * m / c; output[k][0] = carrier[k][0] * m / c; output[k][1] = carrier[k][1] * m / c; } } invfft (output, vocode_window_length, fft_c, fft_s, fft_rev); } static void vocoder(void) { size_t i; SAMPLE *output_old = output_sample_buffer1, *output_new = output_sample_buffer2, *output_temp; VINT num_frames, frame_no; num_frames = (modulator_length - vocode_window_overlap) / (vocode_window_length - vocode_window_overlap); frame_no = 0; read_zero(modulator_file, modulator_sample_buffer, vocode_window_length); loop(carrier_file, carrier_sample_buffer, vocode_window_length); sample_to_real_array(modulator_sample_buffer, modulator, vocode_window_length, modulator_max_magnitude); sample_to_complex_array(carrier_sample_buffer, looped_carrier, vocode_window_length, carrier_max_magnitude); vocode_window(modulator, looped_carrier, output); complex_to_sample_array(output, output_old, vocode_window_length, output_max_magnitude, vocode_volume); wave_write(output_file, output_old, vocode_window_length - vocode_window_overlap); for (i = 0; i < vocode_window_overlap; ++i) { modulator_sample_buffer[i] = modulator_sample_buffer[vocode_window_length - vocode_window_overlap + i]; carrier_sample_buffer[i] = carrier_sample_buffer[vocode_window_length - vocode_window_overlap + i]; } vocode_start_status_cb(num_frames); while (read_zero(modulator_file, modulator_sample_buffer + vocode_window_overlap, vocode_window_length - vocode_window_overlap)) { if (vocode_update_status_cb(frame_no)) break; loop(carrier_file, carrier_sample_buffer + vocode_window_overlap, vocode_window_length - vocode_window_overlap); sample_to_real_array(modulator_sample_buffer, modulator, vocode_window_length, modulator_max_magnitude); sample_to_complex_array(carrier_sample_buffer, looped_carrier, vocode_window_length, carrier_max_magnitude); vocode_window(modulator, looped_carrier, output); complex_to_sample_array(output, output_new, vocode_window_length, output_max_magnitude, vocode_volume); for (i = 0; i < vocode_window_overlap; ++i) { output_new[i] = (SAMPLE)((output_new[i] * (i / (double)vocode_window_overlap)) + (output_old[vocode_window_length - vocode_window_overlap + i] * ((vocode_window_overlap - i) / (double)vocode_window_overlap))); } wave_write(output_file, output_new, vocode_window_length - vocode_window_overlap); for (i = 0; i < vocode_window_overlap; ++i) { modulator_sample_buffer[i] = modulator_sample_buffer[vocode_window_length - vocode_window_overlap + i]; carrier_sample_buffer[i] = carrier_sample_buffer[vocode_window_length - vocode_window_overlap + i]; } output_temp = output_new; output_new = output_old; output_old = output_temp; ++frame_no; } wave_write(output_file, output_old + vocode_window_length - vocode_window_overlap, vocode_window_overlap); vocode_update_status_cb(frame_no - 1); vocode_finish_status_cb(); } static void loop(WAVE_FILE *source, SAMPLE *dest, size_t length) { while (length > 0) { size_t n; n = wave_read(source, dest, length); if (n < length) wave_seek(source, 0); dest += n; length -= n; } } static size_t read_zero(WAVE_FILE *source, SAMPLE *dest, size_t length) { size_t i, n = wave_read(source, dest, length); for (i = n; i < length; ++i) dest[i] = 0; return n; } static void sample_to_complex_array(SAMPLE *sample_array, COMPLEX_ARRAY complex_array, size_t length, SAMPLE max_magnitude) { size_t i; for (i = 0; i < length; ++i) { complex_array[i][0] = sample_array[i] / (VREAL)max_magnitude; complex_array[i][1] = 0; } } static void sample_to_real_array(SAMPLE *sample_array, VREAL *real_array, size_t length, SAMPLE max_magnitude) { size_t i; for (i = 0; i < length; ++i) { *real_array++ = *sample_array++ / (VREAL)max_magnitude; } } static void complex_to_sample_array(COMPLEX_ARRAY complex_array, SAMPLE *sample_array, size_t length, SAMPLE max_magnitude, VREAL vocode_volume) { size_t i; for (i = 0; i < length; ++i) { VREAL sample = complex_array[i][0] * vocode_volume; if (sample < -1.0) sample = -1.0; else if (sample > 1.0) sample = 1.0; sample_array[i] = (SAMPLE)(sample * max_magnitude); } } void vocode_open_files(void) { WAVE_INFO wave_info; carrier_file = wave_open(vocode_carrier_filename, &wave_info); if (wave_info.channels != 1) error_display("carrier must be mono (1 channel)"); carrier_max_magnitude = (1 << (wave_info.bits - 1)) - 1; modulator_file = wave_open(vocode_modulator_filename, &wave_info); if (wave_info.channels != 1) error_display("modulator must be mono (1 channel)"); modulator_max_magnitude = (1 << (wave_info.bits - 1)) - 1; modulator_length = wave_info.length; vocode_modulator_rate = wave_info.rate; output_file = wave_create(vocode_output_filename, &wave_info); output_max_magnitude = (1 << (wave_info.bits - 1)) - 1; } static void wave_close_if_open(WAVE_FILE **pp) { if (*pp != NULL) { wave_close(*pp); *pp = NULL; } } static void close_files(void) { wave_close_if_open(&output_file); wave_close_if_open(&modulator_file); wave_close_if_open(&carrier_file); } static void allocate_memory(void) { modulator_sample_buffer = error_malloc(sizeof(SAMPLE) * vocode_window_length); carrier_sample_buffer = error_malloc(sizeof(SAMPLE) * vocode_window_length); output_sample_buffer1 = error_malloc(sizeof(SAMPLE) * vocode_window_length); output_sample_buffer2 = error_malloc(sizeof(SAMPLE) * vocode_window_length); modulator = error_malloc(sizeof(VREAL) * vocode_window_length); looped_carrier = error_malloc(sizeof(VREAL) * 2 * vocode_window_length); output = error_malloc(sizeof(VREAL) * 2 * vocode_window_length); } static void free_if_not_null(void **pp) { if (*pp != NULL) { free(*pp); *pp = NULL; } } static void free_memory(void) { free_if_not_null((void **)&output); free_if_not_null((void **)&looped_carrier); free_if_not_null((void **)&modulator); free_if_not_null((void **)&output_sample_buffer1); free_if_not_null((void **)&output_sample_buffer2); free_if_not_null((void **)&carrier_sample_buffer); free_if_not_null((void **)&modulator_sample_buffer); } void vocode_cleanup() { free_memory(); close_files(); } void vocode(void) { allocate_memory(); fft_create_arrays (&fft_c, &fft_s, &fft_rev, vocode_window_length); vocoder(); vocode_cleanup(); } vocoder-1.3-src/vocode.h0100664000175000017500000000172107542504133015100 0ustar emanuelemanuel/****************************************************************************** * $Id: vocode.h,v 1.2 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1996-1998,2002 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #include "config.h" extern char *vocode_modulator_filename, *vocode_carrier_filename, *vocode_output_filename; extern size_t vocode_window_length, vocode_window_overlap; extern int vocode_band_count; extern VREAL vocode_volume; extern VBOOL vocode_normalize; extern VINT vocode_modulator_rate; extern void (*vocode_start_status_cb)(VINT num_frames); extern VBOOL (*vocode_update_status_cb)(VINT frame_no); extern void (*vocode_finish_status_cb)(void); void vocode_open_files(void); void vocode_cleanup(void); void vocode(void); vocoder-1.3-src/wave.c0100664000175000017500000001467607542504133014573 0ustar emanuelemanuel/****************************************************************************** * $Id: wave.c,v 1.4 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1998,2002 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #include #include #include #include #include "config.h" #include "wave.h" #include "extended.h" #include "error.h" #include "aiff.h" #include "riff.h" static struct { WAVE_FILE *(*open_func)(FILE *fp, WAVE_INFO *info); WAVE_FILE *(*create_func)(FILE *fp, WAVE_INFO *info); void (*close_func)(WAVE_FILE *file); } wave_formats[] = { {aiff_open, aiff_create, aiff_close}, {riff_open, riff_create, riff_close} }; WAVE_FILE *wave_open(char *filename, WAVE_INFO *info) { FILE *fp; int i; fp = error_fopen(filename, "rb"); for (i = 0; i < WAVE_NUM_FORMATS; ++i) { if (wave_formats[i].open_func != NULL) { WAVE_FILE *file; info->format = (WAVE_FORMAT) i; file = wave_formats[i].open_func(fp, info); if (file != NULL) { file->bits = info->bits; file->format = info->format; file->length = info->length; file->position = 0; file->open_mode = WAVE_READ_MODE; file->fp = fp; file->data_offset = ftell(fp); return file; } fseek(fp, 0, SEEK_SET); } } fclose(fp); error_display("wave_open %s: unknown format", filename); return NULL; } WAVE_FILE *wave_open_specific(char *filename, WAVE_INFO *info) { FILE *fp; WAVE_FILE *file; fp = error_fopen(filename, "rb"); file = wave_formats[info->format].open_func(fp, info); if (file == NULL) return NULL; file->bits = info->bits; file->format = info->format; file->length = info->length; file->position = 0; file->open_mode = WAVE_READ_MODE; file->fp = fp; file->data_offset = ftell(fp); return file; } WAVE_FILE *wave_create(char *filename, WAVE_INFO *info) { FILE *fp; WAVE_FILE *file; fp = error_fopen(filename, "wb"); file = wave_formats[info->format].create_func(fp, info); if (file == NULL) return NULL; file->bits = info->bits; file->format = info->format; file->open_mode = WAVE_WRITE_MODE; file->length = 0; file->position = 0; file->fp = fp; file->data_offset = ftell(fp); return file; } void wave_seek(WAVE_FILE *file, VINT position) { if (file->open_mode == WAVE_WRITE_MODE) error_display("wave_seek: seek only supported for files opened in read mode"); if (position > file->length) error_display("wave_seek: attempting to position out of file"); fseek(file->fp, file->data_offset + position * ((file->bits + 7) / 8), SEEK_SET); file->position = position; } void wave_close(WAVE_FILE *file) { if (wave_formats[file->format].close_func != NULL) wave_formats[file->format].close_func(file); fclose(file->fp); free(file); } size_t wave_read(WAVE_FILE *file, SAMPLE *buffer, size_t length) { size_t count = 0; if (feof(file->fp)) return 0; if ((size_t)(file->length - file->position) < length) length = file->length - file->position; if (file->bits == 8) { for (count = 0; count < length; ++count) buffer[count] = (VBYTE)(getc(file->fp) - file->sample_offset); } else if (file->bits == 16) { if (file->is_big_endian) { for (count = 0; count < length; ++count) buffer[count] = (VSHORT)(wave_read_short_big(file->fp) - file->sample_offset); } else { for (count = 0; count < length; ++count) buffer[count] = (VSHORT)(wave_read_short_little(file->fp) - file->sample_offset); } } else { error_display("wave_read: only 8-bit and 16-bit audio supported"); } if (ferror(file->fp)) error_display("wave_read: read error: %s", strerror(errno)); file->position += count; return count; } void wave_write(WAVE_FILE *file, SAMPLE *buffer, size_t length) { size_t count = 0; if (file->bits == 8) { for (count = 0; count < length; ++count) putc(buffer[count] + file->sample_offset, file->fp); } else if (file->bits == 16) { if (file->is_big_endian) { for (count = 0; count < length; ++count) wave_write_short_big(buffer[count] + file->sample_offset, file->fp); } else { for (count = 0; count < length; ++count) wave_write_short_little(buffer[count] + file->sample_offset, file->fp); } } else { error_display("wave_write: only 8-bit and 16-bit audio supported"); } if (ferror(file->fp)) error_display("wave_write: write error: %s", strerror(errno)); file->length += count; file->position += count; } VINT wave_read_int_big(FILE *fp) { int a, b, c, d; a = getc(fp); b = getc(fp); c = getc(fp); d = getc(fp); return (a << 24) | (b << 16) | (c << 8) | d; } void wave_write_int_big(VINT i, FILE *fp) { int a, b, c, d; a = (i >> 24) & 0xff; b = (i >> 16) & 0xff; c = (i >> 8) & 0xff; d = i & 0xff; putc(a, fp); putc(b, fp); putc(c, fp); putc(d, fp); } VINT wave_read_int_little(FILE *fp) { int a, b, c, d; a = getc(fp); b = getc(fp); c = getc(fp); d = getc(fp); return (d << 24) | (c << 16) | (b << 8) | a; } void wave_write_int_little(VINT i, FILE *fp) { int a, b, c, d; a = (i >> 24) & 0xff; b = (i >> 16) & 0xff; c = (i >> 8) & 0xff; d = i & 0xff; putc(d, fp); putc(c, fp); putc(b, fp); putc(a, fp); } VSHORT wave_read_short_big(FILE *fp) { int a, b; a = getc(fp); b = getc(fp); return (a << 8) | b; } void wave_write_short_big(VSHORT i, FILE *fp) { int a, b; a = (i >> 8) & 0xff; b = i & 0xff; putc(a, fp); putc(b, fp); } VSHORT wave_read_short_little(FILE *fp) { int a, b; a = getc(fp); b = getc(fp); return (b << 8) | a; } void wave_write_short_little(VSHORT i, FILE *fp) { int a, b; a = (i >> 8) & 0xff; b = i & 0xff; putc(b, fp); putc(a, fp); } VREAL wave_read_extended(FILE *fp) { unsigned char bytes[10]; fread(bytes, 10, 1, fp); return ConvertFromIeeeExtended(bytes); } void wave_write_extended(VREAL e, FILE *fp) { unsigned char bytes[10]; ConvertToIeeeExtended(e, bytes); fwrite(bytes, 10, 1, fp); } vocoder-1.3-src/wave.h0100664000175000017500000000357307542504133014572 0ustar emanuelemanuel/****************************************************************************** * $Id: wave.h,v 1.4 2020/09/20 02:30:51 emanuel Exp $ * Copyright (C) 1998,2002 Emanuel Borsboom * Permission is granted to make any use of this code subject to the condition * that all copies contain this notice and an indication of what has been * changed. *****************************************************************************/ #ifndef WAVE_H_INCLUDED #define WAVE_H_INCLUDED #include #include "config.h" typedef enum {AIFF_FORMAT, RIFF_FORMAT, WAVE_NUM_FORMATS} WAVE_FORMAT; typedef enum {WAVE_READ_MODE, WAVE_WRITE_MODE} WAVE_OPEN_MODE; typedef VSHORT SAMPLE; struct tag_WAVE_FILE { FILE *fp; VBYTE bits; VBOOL is_big_endian; SAMPLE sample_offset; VINT length, position; WAVE_OPEN_MODE open_mode; WAVE_FORMAT format; long data_offset; }; typedef struct tag_WAVE_FILE WAVE_FILE; struct tag_WAVE_INFO { VINT rate; VBYTE bits; VBYTE channels; VINT length; WAVE_FORMAT format; }; typedef struct tag_WAVE_INFO WAVE_INFO; WAVE_FILE *wave_open(char *filename, WAVE_INFO *info); WAVE_FILE *wave_open_specific(char *filename, WAVE_INFO *info); WAVE_FILE *wave_create(char *filename, WAVE_INFO *info); void wave_close(WAVE_FILE *file); size_t wave_read(WAVE_FILE *file, SAMPLE *buffer, size_t length); void wave_write(WAVE_FILE *file, SAMPLE *buffer, size_t length); void wave_seek(WAVE_FILE *file, VINT position); VINT wave_read_int_big(FILE *fp); void wave_write_int_big(VINT i, FILE *fp); VINT wave_read_int_little(FILE *fp); void wave_write_int_little(VINT i, FILE *fp); VSHORT wave_read_short_big(FILE *fp); void wave_write_short_big(VSHORT i, FILE *fp); VSHORT wave_read_short_little(FILE *fp); void wave_write_short_little(VSHORT i, FILE *fp); VREAL wave_read_extended(FILE *fp); void wave_write_extended(VREAL e, FILE *fp); #endif /* WAVE_H_INCLUDED */ vocoder-1.3-src/examples/0040775000175000017500000000000007542520157015274 5ustar emanuelemanuelvocoder-1.3-src/examples/carrier22.wav0100664000175000017500000042370207542365700017614 0ustar emanuelemanuelRIFF'WAVEfmt "VDdataD' '3A5KY__Cchi$dz``ZT(OLHI+GC?9o)<$a , lf1TބQl $j6G' p vb*+x׊h3P {q@Ə"'NM;#lb &v D ]G%`>Ͱ֑E  (*V2;;D902U51*7#8.u[)xY]%< F0&#ib@Vz5rА > E6ա=Նh<   !i r  1 qr sp| o,q=<)aƨ2@wCݡo!w-$4;CIQWtac``\]U9L\D%? 92:,^&m"V %WkHeݤ5* 6DD tr<SdX/( ","XjsO# 8Cy5m"=ũ4h kx 1 w%&&n+//% RHIEr@\\wMO# ; plzL 8  u_!& < a)- -078/$1gx = D]CB{@e7  *X5 s&)'+(,;'?!|/Gw{ OxAك֙ىLެ٩ؒbnك\wUr $ܬ&g)dMHœ"ׯu +%*)O05=LVbjo sqq_oid^YRMIGBY?m<{;3,b(M 9x!g UCePk* > }. >*TBkڅڒ3?ߚ _D( 4&.&ՏBY E-!'0g6;w:92(x!H~w=>965:]>hDKWQRPPKE?;74.:,+-t01y+\!t( P` /  ?-1b3 z<\{>zFιɲMʮˠː!%ioѶ*۴ֹղ،D@l_Mya : X Ui[l@ OZ>!J&-w-00.j)q  O[@h;t|VH0 ; Q >P6$+0 /K,)" : |( 8 I-jGpvu"٬aӥ}`au 1~ z ; o$$o%$#9" #%&+-2(7:>92K+!;C|L'<@ko-I^ھ/ˠs#O9ʰ[Χ؁0n-!}H(3*97-#u Tufwya3 [ Y P8" 8\l[!" b !az?AZ  #d:! Kp NE$!^Hx0W K4s  !!!yE]=Z0gD{cxߋۇXzȬ׾ҙfQPӮmE7 3ԩ [ ;^"$%p##| .%,//;1*P=X 0"<e"$! =q AwOK}1 -Q;yz#R%+%$:"|Z ! % *f,*$ NQG`(F^+IoUxsϦTmf̏HOݺR) t }ɒ܌{`X & Q8,\4C452-h&H"e`S"&%T(X((&~%>##P$*.027;;: 3@*^ 'f'&?.R0)A dr!$#V,I7hJ)&RWOڶĵͼқӂЏ՛_O+ bf$,/(2G2.(P)*/5Oe`"5yI] ?0Gn8iV;/, ~!%+!@:-\ Y rTݥ+JkUYwF 2$-&$o1=R $o 75 c X $'>('($Z(.%1/&2em $K!'q)'&ANsZ?tʸ{|^ίJ8ݳ<tnk D -ٞ|: ! eg Wq '0249:7@4677208,f$+a$s. ')?%7XHQ%d <rue SB#Bco"75;)F>\;7A.V&DL0f=`"T G]ڪ9ͫXѮL k  Uʲ'"8!,,)/"Yv d QE|a0)ia4څړW؆ܫAO;2!'3* )E+),*$*;veK=,^ E ]j3 H|e< l w|/ՠ˼Bݴr9k+=#{v  @ "#&)*&b3 _ 9(.,+d!Cmt8#"5 5<#w):*))(&#&}J !dAR]nǙ̴MJu@̼Ƭ<Ώn)a|+?[{^)BCq*FP!_#"6!!&,5:B8F~HDB$8+O1  <+!!3#T|" s/>,D\@[6)bqcap8Ȍ  ؗb7j'" @ r 𨎡egi|Eʽݝ 0 )j` $)' !| ~ c۶ٌ׌vk&-10)!H{Yf^: #),-0C+U#m! NXDeA7 V */0+L'Atm4{ @M!G% F 'N e m Fngi])2 Mrd(YՇۍܘԆzҾӞ0TF) 4;S "&I('!5+Ok C C u%(%"$L'&&p'Y%0$%$d! CHe:I'AۀR~  _'Tֹڭ$ &k = ce 4 ӶKʾ ܣ:Y D~!"!T jM , UzH i Y  .OђƂ{ щ֧ފZWY+@&:8\W[ [Nv)JP#m+-/231-( NYv YP4!@*+v+&|#au  2 6 Hv#'-/02g-e#fcks6yռ́oJ4!7¾3֘ lI I)m  OG= ; i$$/5*8:>50 3AαJřL̡6ރ2kS)  T= oTec“)q9߻B|&0,g-6)s!\b$ 0 / [+ [GbQt<ܶkU(0&Fj$h/59BJTV+OlF<. ]4=OfW)>59uZ1x&-s'bH ]!>#p?  e Zo4 g= r ާݲݥ߀;c4X|j໓2(w*&29(1/54.c)&!!mJ"),0?)"B*/Bݐk5؂^ڕbY-Uɳ͜/:.:AGP:RQMH?{7X0[*>!\X47FF Ld1 hvv uJ  9|V^5Wxsu5NF *30/*$ *YW!%gAhAR0m{1 _M- v, zݸݦ[K\6Oٶ_U yW+B"Talptne}S\A.NLC6"W4X K0"(=/2F5V4g/u)"1kY x z2 B+ॾQÒϥγ&6 M׳ԻHH!%"**'r&P$l: #)'9-2260.#'k2>u?:2K"yl0~ nZϮvuΟpeqB> c U*?0q m %8hNPUHucլi۠= X#0:?+>K?>=7>2+# a.?3j1Z"g l ?j~}/1  1VmTj-_!K"y)>!h&'(#JܗSԴ׹2Qb :o+S%B_VҼՃվֲزDR):@S<!'n020(X " x%y#|",  746SUY^@8<^żF@I+˻Н"4>c aL<&_,17_AECA@AC=FsEE>7,! [4D<5'ݷpnzu! A7M.0G(#Q "% 0a#/!hd1T߫[~{DK1*9&DF+9HXef$lqmOe\Q?,0+ 0 tޣ̾y+.ˈkltfX"3 "!!#0)/\2442?)"Md U < 4#(='"Ws,c+ $#- 6L8+(%ƭ:kYS׹"Ӻݭ*¢kĦ9i "(&&5"$*/`6651)~ ~/)F]^^[%*1b9|<EG2F`JyMcSZ\ZN@h,n w1)<(>L<2i&~q KA,y/(oV,E 1ߑh&B}qL_D%O EZ (#-59?G\NOR8M^G;+ =ie"l RIѨ޵ϸǽdM+"*0;BeIALKGB8652-X.+G)*+168E:q4$>NTNd漞ó|߶nWjS]* KϾɰS9*R!{%&#& [Y7',)%$; 1~~d%}eWCxֹ5߮ލ`6$+ .{y M8 SP޹,4 ]-Y8CHNS!SNHA4Z$SBTd0El#r>};e;g8?.$`b^N5ZX hCNS12b6,>8u Z&'$ 8v=a)K  i0s18fD AmhH~ "&*)%)""#<$%-$$#1v&L&ke\1SԦWl1Vۜ/ASN+5s9=C3L3STYRD17&`%&),39><*5L-"(]$%!UP tI0L->k@ƒMHqŌϳ V9*Ѻ*/'LO^P?&k4N=DBHHPUIVPC7 0[-.-z-,,$~ 00#  ؄ve$uE H!$/21)#$g 0jsӮ.`}NjSÚō8HSP(^ 2 m{Zz8 ]|0 ;_8)"#x!@ F  t:I#=.4J!QdڐڭW4Uc=f!*.U2{:?IEJaQTT/R%ONKjD6_,$V&;ɜ1jĢ<=2Ũͯ!tʴԓܻ+k"K_۱cBf~~%%7EPfX)[XTHR1LKEDc=s4.)4*)*'>#F 9~ y I @|=:x.*HZcc; 4[<f= `׭ kK'*+,*()(-@,6*?%J O c/ (SשT4\( ]j.Dc K׿DIlҜ ԇ8^U۶ 3$Xv(vK:z+pD{@/V!+g8q pF !+#ؒ߼(nf1"` rs*3c92A JoK(Q[UJ\[XSM?4*E%  !| e 0?  KD *м֢يCVEˍ<9/$ D!V5o G* Q HWHr9}PrT V,яͽ E3 _!&&)*I)^*_+~*)('r%%"g"! S6#,178:3}-!F 8VHf}39zhJJݕ"0͝Ī7ְ#ޘCGY]r%H*9-3--6$KFb/< C 2 N&h#K#9"9M -IB+=Bq;B)0.73;t>@BCGgH]EQ;4+ Fb ;Ybc/@iaֺٙ`)ۖ$fKb0ŰAֆ.> `Ar S !Yhr J gf%81<>"Lw[vbaVKH4S 93 sQ n]!&v, 0 N bB kSL/UKKk3Nؔp-L0Cay I!#'*+t)6)($$).,(!NM/v B \mYnnB[g#ed^Q\Bk ` ~&6K{VRXN`<`(eaRziu' ! iU im 8cmߴUl kx u$SBN!"j$&('&_]Q'"&cVF/ ;;oւ^$/9LVBU x'7{*~WM "*8BIItB%6j Eךcߓ`-Cb{Uh R}/(.$<۴A\: $sB!m:ҵϭ̫ ݳ.5˝ Ǝ NRل݈wn|U6&*-&!} ~ &%.k8G=AnE1IGJJHD>6.$ t~j '17D:8$0 qS4"&"i Mmϔ+]jQ݂Q ҒB9v 꾼Ď:؄2m7# :ck %-)7C!MfRQ L FMBO=Z8r51t-*%2 h)AL_;F:~Tpm 3D;(O w6u$,..1*"F9  )w/nF> TXEL5d Rob bA|  s) i7[5e{8Wm @x\ 0G/> o9 -_po۝ӗqDO{5)60 m#$#= :5E/cpeW  <+ nk6 X%hV6cL FFW4/\\"aW ۂ7<ӡC35 '2 ;eEJOPP{PeNZKKPU _Gh{rcpe4ZI<6  I m G]faIJT˨{ Ъ ۼ#̪;Σ_~  "-ʌ It ;PJrR xI %(+(J!C\!$\&($"#$-T57j?#A:-"po "/((#Z>-Vc2콵нۃA1Pp5Zg ,mH:nz':ϭZ!UMZ3m1ܝ>>+<FsN5NIK@07*0)o$$&+1R63.)]#5#&(3<'EI#IWEl>51L(#'YQ7C""([)@'oS2v"c$dn`H|Կų."u)`cގդP乜ώF/VDU`jkHfxea\WK F@<84+%] mM4E7|ݸٵ;[-f-9v 58)t ӳjxM=b%9.%U,XҳZc),-`0'/G3 ! ;(!#')+/3511- +)L'9 Z8 )462Z,'% W- Fts ] QzjC$۬0Ӭhg' #$&'#H O ٲO!пLGiְݽdiѽwۈM# I I 8sqg-9ACFCj@;3-r12640*#J!$*1u:==>>N9f-L(*'d%%"Z$,**)%qn1SӔĿ#λ@Qƥ'YĽ}ɧ3P=_^Xѫikՙhٜߟtkda 8,~:FQjY]]^\]]A]wXkOEBv@AA}A ;1+&n N | ^ N!L[ ]3(G5%@'$ .Px}ڰdzĜÜÅЃd'Jmc ضa ܱ >"Z,4/-( * AI ДY2 B.( l+x>JPS*PDKlB7*R I v0|h/#N8n-1ҞpZdp ^އ3la! " YYh MBM $Q,-,(j& l-0& *.U--,'g$PipմkUr Gnz p؜2ĕlSY*aL? a"-14!58 <:n41|//'V+4|?8vhfL`;6Rk%5R?oS 1ZZPfI1%1;BvHHEA=i>3=:l;8C359:61%TJ:SH "B)-*{)&$gHZveduZYж¹U(ڷ<4ƻXۓ=T9YMnQ(BCׁHق٬j$],'XY"(g/#47:6?3+u"$-8 -s!X)v/2b466w5b0,+*~'!?2exvRڈrL(`Տ K4EȰ@^‰9Ү~U[TǾBd;)1;/D=3[Ca7 c # ^ cQU8j;p?|:5R#2,//7=AA%H}HEBJ>778]89>1+ T;{ 5i8Ucڃ 8q @6hc98ȑĬʥagUCa& Ytp%.L5/9671&, uIԊоѦ/b){y*D 4` }%6('-],s'a:8&gg I`#.w8AJ TVWRdOICC9.%oD w?T'ґJ,nܯ  Fx 6.}0x)|GHthv. \ O7ؕ (M=dEq)Wn&_^% ^x{&,247w874a3.),w)*n,-\0E42m*[$Em"$$:~o8E vG!+f41;>7A@B=2d*9!uGPMa|o|1sԶ0յzȀB:.˲f# ޸EiV[M ߿tN=0#D!%),27);>$E]N`TSBQRSTyRALD;1%J02mh^Ly [%SdE 81 8 [ i,4)~ԮN(nz89 W`2VŠDU<'$+  u$J5>qq,6>WDD/B=7~)u9=ݺrۇd*Tݮ zz]e&7u^!n21en Q +n޸eݡ@UqT],Jpk|#&&y't0b8AG+QqZ+`b^[VUJU RKBZ5T,(6 }WAx A *_ Z|ನaXwوW"Sj20XȌmsvPޜڵa95 gd\ 2Ia?X pycj#I),b4=EDCCPB.?=;4u)A 5>q # c$-697332,/%mBܴNݣSGvԏA@АBӛ@XqX Hx0*0LnD|?bëо5Y^.&1e7;e7j3W'6 Df0 -f %,{34099tZ#3&;+DHMbLWF*:.]1 }u q':'&)*))# G! &K+,#[6 $VP<”œɹR=_t z$)(&`JF۴-bw<'[f cP$*.K+.31W1x234/r$; bȰ6ć~ً٣90Wr F2,23i2+!yqք/QF9%8#Ν8Ѳ!eM J2Q8n +%$a  H)#3;CJP^Olbu|^o{o^XK;' }Lrα/ɽVgƇ"ǼS:y)~p W /;tڤ؞0Ɨʽis4[wƸ˺۠"/t492).$.9U6 <"O%'($(o&&Q[ s i--o.232,u*>)|+* +M!F6^T +976;m8b.Z"R @dvK܏FØ-|Zv܊N٨Vo7*HR +MҡQlgΖ hAh66Ajd%2:>>@x>O5E.%sB,N8N'd.b/-Z' wFLw ."F"  " m"D, 2.%d  #K#).6;DZEk=.#Uu yTC٬8G8eo,Ʈlxܸ"`oڗ="hH kgYg=JRKJD ",>16x:\8/,& a,",)/;0/++v'$ 1dzl V 2 & Wi N09/޶"aX NN'LGAs"2Wm};Zpӧ  $$r)$X _K^)w 2+.+#mF5I݈՗%.+ϭ/2%07N |Gږu k#" 8k wdJPN 7Qh  hrY  K 1 x)X.h/(K!~Q 1!(2>LZRVvUTONjMK>3T&&:&V ,Ÿ2}<ǒҒ3% mL}\1ߕٰ6}b)/-M_q/RɸÅдߵ<ÁʣϩHgCЬ.@'l)J)+,`#[kr"#&](('#~K *X$(b*i)'Y%~'<*#38=AK?6)3f.B-![  J"$&n K*t  ,. dB 7y܈tѢѨ >&åH"%YF2ކU}. 8Hh-2`< OʘSjSEO?.'+-U>JMPqSiN!F4+% #+C3w86772K.& b^ pg{&]-t-$;9 S? y B[K62  +)HsJ ߲ hu{| uJ/| gܹJ֖`9PAWM K8 ,E4;O=#7+ez eTT߽z1׮j9hHзd3 !$HHu9`^5$z1_88H4&$b Vp@:  lBk@4  hF/ l '\.37y;CMMOEH<*Or%m*w'U!% &աВOD.dnڼf/`;4oݠ+aEOgE¸о&şֶu)2Ner)& &,27<>>O9.-x-S*'#k#)*3CKP,R-P[H:+Wg W3.f.Y { Q"h#$"u() cy٘VJG  !*+2u`(̙ DmٺyÿȒвPO Wp y 6(j)S)2_ O+/Xs!~c3U.Ŭ1ǩǦ$ث_dDH;$l$% %/(d&&T&(%#p7%-14q8R:AL:QPE:+ b8U!7";8_>v^Q% g'#Z'*w% ՞Ԍnq T Lg_lkeF,|v!&TaWQhۧް5;}o3  `ߞf2(l^O,6: # M$1<+D GALTMH?7;-& _Q2 P:Pq  aV E%T+%3T8=82w,H%iUD z!%&m#n| L3;_}ʢ?'/  "o};2N)ݺnؖԍ;6ɉƆУh1y2ͨճjwVE !P-C7x2,k+(&\')+-/2"71.&;4ױ1p0|k"#$M!']YnVP6/ XoC"c~sl|JUmߞP|#  t(6iRH #29>k@iA>@0](wŕ]#‚pŒʉГ۫z-39GPVYadU]QFC7K4l1.,v(%!R2yA; *+;h,Q[zF`/Pf Vf6b=|ܿ>@ {)"L'*q, /(% 6u - / I 3 v{݃Ҳ"Νc̗#oQP1vN @#- c :ęUr.eϭapu MU7 )3T84.('k'')k((%"tL{/{sH H*#(*-7/+ 'Kd  Ab QF:32+`JֻYi '25J7njlr N h#&(,)"!nYӾ㸠n 6ٝ>#%)I/#8E#N-*x.21-2(5/"^rFx)ŬثѹKiy/['x"/8@_J.QRJFB9.' ) /#8 2 ,I`2a>\Dp|ԫj dIE e)/h9>V?O=:78M669l62* !;-* { Y ZX70mǮ)ֺϺڻ ׹+NKM !R"&**+R' & 16!ٿ@Y\ө)quz59UYr N"'$= !( U#e&l(*A2.($&"r+- D r=7 n(T;H L&=Rpز`S&   o?-Yvϯy\BƮѴHn&&y'U,10}-$W.|o͏m¡t6fzҒb1ROo!'62K=eFLPpRS%WEVTJA;6310&3.,,+m*'"H(k7)E5\M+Q#O-244?1,&"De@e #4 q X }ٮ˽Sļ?«>F|LeĖ,šǽ}Ƨ4 %(0~230*$H!)_b= y&C:)C  ~ RWu4(0k^"i]=Ku&.6<@FFG[?5%*M ; >*yh#W#J0e G Ie+l{  @uzZ1]f H l @x<#ޠELW)kspa2- fyTtB\IԤnɈKdRSO s.!q' %cT/%$16C=1DlC ?l91*#o!W|ڭݝh"zh:)0)4"b%Yt $.Y2W1-&$HO C y&))&i# cvϊÿD#L¾Tى`Jv  hr 7W)"$,KH* s +X  L%W٠Ϙqes(څe!p/69751H3O69:]9?<;;^2*,%ź 4xtxC e!|>rpg-,pc G ~  L=DELZL >G;T"9v$T\$#GOXmIg{ 0$^&*6)&?"/4k \ @ kt"[܉ T=|x .Z(;GLE?5g.(%x%&w(,4023435z665V::;8-%h0eRŗ֧QƋɚƯuںv?[S`̇-G:Nt;hZVKyZ Lq$O) ,8$PsزtԵa+%/`16i:DGgIGDD"C?951.M/-_,>)', kqyKU# 9 Q Z-FsSd:^#{7:o"k~ tue  UVF2^?Q[#݇e 3g*UK1,gd*  ],*>g ^{[=,RJw3^G %2 0/l}%*-3g6:X:p4/U)!Ne)5=>=8/!0 ^;&D έYeĀWh΁_Lz1< Q Ow?7g+ ['$(A-)"-$N oڒ/҅ٞݷA"l޿ |1E,+~8?DE{C=6/*"~^'"pN x;49EP: ?>{ ) b"$(!z i E .a < n I 21 unڅ![GMp ؍WtbF Qr \)0 1|@E\:[2)׸aX2+4Q9 H ky, %a/ؒГ1à>STӃۀ[F5 } #(0-/;-r(% AR$*;K *~4a5o2?*(&^(k+15;<?Q@CJDG}HCF@94_+\ Lݜԩʳ-=W>ڎ߅, E + }&rːZ7N"|@U r: g xxk  jS> .o`$ҁcg; F!& *+))S)+,D153L1.?&  .lx 7NݝWUy m55\t$#?A^QEO6 itp8XQX ##xh/pbFA,lW  N::bHxr 1n `̖ Rϼ(C-"!<%h&~%m#j!?%@Yn["V-6;=?7DNV\a[Q*J^C=70y+n#;-D7ǙģḊmL)  ~Tݟ#'̒ԋFs #()01*#hM g`c\7 5+t/^F7(b4[:_@DGKNPMF>6?*K"qv!=kޘ\8~Qjo#ܝP`<V1 9Q_T6 2 L  DhYV"r%w()-,++:*+!9< !~B.=ݗږԑ΃6e?lgW !"Z"#$ !ݰ̫_8"b NkT ",..-.+d))'!  ER#^a kdP+5<CK+QxQRS$RCJJpIDn<7~43(U* D  "Y؋5ļe'R;j~Ԧ? M,   /n6> |7!ôiCFf $())*' .h EhwB%B** ! ̤ĘmF;A`o/7 8 U_!-(, 04L:r78};`>7@d;2 & pi4w\8kJLݛP:RSiW (%.3J662230)$F A=f5 k $(X*(#Y"#!OA{#;1=g4] AojOKÖ%υəRWH9㥛ϝ"Z1?GANRoSP:MoJ8FFYIILO T5\^eZYWS2K?Z8%541.y*"?M =y ,)mz jY3[4zͣbߗbՙϰw D-|٩{d;%.37!51& VG[{4Zk mz 0) !s+z2\78s2,:# |8#w #SA'3,=>ADC8Ba@6-U#L9D=)A)@7VγЋR$K̈́xxɿΙvAUM!;, 2002x26-+&  = #+ Y%T  I^<yC#c''"M 1L"˲ٷ6aw +,oE#@a7H*'/31( bmsÙSM=׹ 䆌p I77̶տQ C*:FLTQZ`b`[T'SPHA< <=<4y*U s,$x&J A qx߲>M3p*$-&z%<!dm+O8@(B@J3i!n7wh+P4|צ$$:|C5Cm$'('ej<1Qe=PW DOjE5\(l5,};HSSOHA7[)MSFqO(vsAw "("*"r [ q  )#/c GK3y\ܴY?!>E a^r7Aׅ$ x&C C V:Lo9? bwmKջ3],JU(e%3.!",7EKWQiSSWYXW9UdTPNO/Vz[ZR9K>R4 +)g&$yv ,l DTޞB۩ܤS' v [Pj^pN^up O X p~v,اքW!4y "}.2Uc%$?>vusW$U |6(b_GL{l]{!$%"o5Wy kO⶚.NƐOͷGλZ,i0T!UJ/n9 #7/R>WMXD_`_`_ca\WOH<0 +#tr  =Q:MY/u@fk_\O34=e{?23H +f2сBO׹' ' \!cZ-Yݽ5~V #&!4!(%"'/3T8]9.<2>$=6p*" P; |A4\̊Ƴ[7} C$-9{C`GB8'{&^ ES9]s`l\f tYsAuߚR J5 IF+%'$S![| !Z F-{D  {`m( \ OtCiɪ=3AW:[ L̑esاֶYҮzi& *Y.-..14 C!mC y#6JX;@9Aqr_OEaD׷إDN9a#<.xH!To w%%"! !t| L$2^;@~@.;0+  7 M\AY­ȩSּ ]-F {ZWrk, li:en"t  i  VN߉Vf ?@?&fNg *1&Jj? ;F'c%,xU$Ҧ:1JܷߎCdQ I3!)+.2/479;e;3)&q(w1g2A59YAEGG HD=J5)t#`dND"4%$ W|VB! I|sۡ z cJrL%o\b}?*@ #&p':+  vHڨ Kpk ]r &l*3)+2"5!5.X*(Y*,,(&L$&#"/"w*_˯x\5 e i.LH+RԒƒD8ЈLJ (/440)$,yJ"%})3)'('&"( O$rT'#AWCN[bT|[L#u*,y3141b.1479U==f9.b'<m ݎhǠb1.c^ W b MPR_vr yՇϴb ۅMބo7)12a-,#12["'U4p' '3A5KY__Cchi$dz``ZT(OLHI+GC?9o)<$a , lf1TބQl $j6G' p vb*+x׊h3P {q@Ə"'NM;#lb &v D ]G%`>Ͱ֑E  (*V2;;D902U51*7#8.u[)xY]%< F0&#ib@Vz5rА > E6ա=Նh<   !i r  1 qr sp| o,q=<)aƨ2@wCݡo!w-$4;CIQWtac``\]U9L\D%? 92:,^&m"V %WkHeݤ5* 6DD tr<SdX/( ","XjsO# 8Cy5m"=ũ4h kx 1 w%&&n+//% RHIEr@\\wMO# ; plzL 8  u_!& < a)- -078/$1gx = D]CB{@e7  *X5 s&)'+(,;'?!|/Gw{ OxAك֙ىLެ٩ؒbnك\wUr $ܬ&g)dMHœ"ׯu +%*)O05=LVbjo sqq_oid^YRMIGBY?m<{;3,b(M 9x!g UCePk* > }. >*TBkڅڒ3?ߚ _D( 4&.&ՏBY E-!'0g6;w:92(x!H~w=>965:]>hDKWQRPPKE?;74.:,+-t01y+\!t( P` /  ?-1b3 z<\{>zFιɲMʮˠː!%ioѶ*۴ֹղ،D@l_Mya : X Ui[l@ OZ>!J&-w-00.j)q  O[@h;t|VH0 ; Q >P6$+0 /K,)" : |( 8 I-jGpvu"٬aӥ}`au 1~ z ; o$$o%$#9" #%&+-2(7:>92K+!;C|L'<@ko-I^ھ/ˠs#O9ʰ[Χ؁0n-!}H(3*97-#u Tufwya3 [ Y P8" 8\l[!" b !az?AZ  #d:! Kp NE$!^Hx0W K4s  !!!yE]=Z0gD{cxߋۇXzȬ׾ҙfQPӮmE7 3ԩ [ ;^"$%p##| .%,//;1*P=X 0"<e"$! =q AwOK}1 -Q;yz#R%+%$:"|Z ! % *f,*$ NQG`(F^+IoUxsϦTmf̏HOݺR) t }ɒ܌{`X & Q8,\4C452-h&H"e`S"&%T(X((&~%>##P$*.027;;: 3@*^ 'f'&?.R0)A dr!$#V,I7hJ)&RWOڶĵͼқӂЏ՛_O+ bf$,/(2G2.(P)*/5Oe`"5yI] ?0Gn8iV;/, ~!%+!@:-\ Y rTݥ+JkUYwF 2$-&$o1=R $o 75 c X $'>('($Z(.%1/&2em $K!'q)'&ANsZ?tʸ{|^ίJ8ݳ<tnk D -ٞ|: ! eg Wq '0249:7@4677208,f$+a$s. ')?%7XHQ%d <rue SB#Bco"75;)F>\;7A.V&DL0f=`"T G]ڪ9ͫXѮL k  Uʲ'"8!,,)/"Yv d QE|a0)ia4څړW؆ܫAO;2!'3* )E+),*$*;veK=,^ E ]j3 H|e< l w|/ՠ˼Bݴr9k+=#{v  @ "#&)*&b3 _ 9(.,+d!Cmt8#"5 5<#w):*))(&#&}J !dAR]nǙ̴MJu@̼Ƭ<Ώn)a|+?[{^)BCq*FP!_#"6!!&,5:B8F~HDB$8+O1  <+!!3#T|" s/>,D\@[6)bqcap8Ȍ  ؗb7j'" @ r 𨎡egi|Eʽݝ 0 )j` $)' !| ~ c۶ٌ׌vk&-10)!H{Yf^: #),-0C+U#m! NXDeA7 V */0+L'Atm4{ @M!G% F 'N e m Fngi])2 Mrd(YՇۍܘԆzҾӞ0TF) 4;S "&I('!5+Ok C C u%(%"$L'&&p'Y%0$%$d! CHe:I'AۀR~  _'Tֹڭ$ &k = ce 4 ӶKʾ ܣ:Y D~!"!T jM , UzH i Y  .OђƂ{ щ֧ފZWY+@&:8\W[ [Nv)JP#m+-/231-( NYv YP4!@*+v+&|#au  2 6 Hv#'-/02g-e#fcks6yռ́oJ4!7¾3֘ lI I)m  OG= ; i$$/5*8:>50 3AαJřL̡6ރ2kS)  T= oTec“)q9߻B|&0,g-6)s!\b$ 0 / [+ [GbQt<ܶkU(0&Fj$h/59BJTV+OlF<. ]4=OfW)>59uZ1x&-s'bH ]!>#p?  e Zo4 g= r ާݲݥ߀;c4X|j໓2(w*&2Xe> > *73Bχz)(i37?IPW*YUJED<4+)O   tRAت Ķ4ԑwNۻgE4IAt X HHKK~v Mf)$N}0$M&%-+-'xVeKL[st>8( o"+ Tz. JQc > o F 8d1R"!;t.`LMs  \ M qP|l&HQY+i֑<ú˃s˱Ƭ=~7:'٨[Ӱ۪w >1"+5O=FO:X\bhTk/i`ijf(c]YVUQPMHD@8(8|v  &a_Ju!  "ڝT֊ }':[ YD"Ro>$I `! []͍Aލ X`iy3<In  V (;LwݕB_$ Zu%(-;1014;0V--++2076EKUKF:50$)$WAyDԷʀidE[#%>/b u""c&E+/2--07(=@>06.)-'L#] Gvaֺٗi.Ymߺ!:*6e>@+=7/,F088]CQ'Z%`a#\T TRJEEZCt=@61+9"<JTu_\!f*~.+$؝=ğɩHlu_ޘs~ (% V h^{C+!X$'#n# tD}\ 4<ޣ3pޓ]RUW{P3P e"! \-5kC۫;]<81bD9p R&]$(*J,($M"K'-t7B~ISUQJ>Cd:i<@92*,#+  W'̴֒L†ĤyPURHO0MN  '+*P!8h60 <!LDd+yYht%yp uN \)L4R7X.)"/)# :izLm Hj]߬W\E= IxVL"':*-.// 2C40.24d51*"YY I "g Yo ( 1?LI&  }`v{>5+Ĵ8ȭF:ؿK֦ͭZ7F`a48)Y-B(P'n$!*""%e'd+q)(n%e'/8@FWIN]KuGzBV8c2q,'Z%)01o10%$ %,..+&L" kji3 3ƟéşȖkT=rܙ&Ft(15N05&#  "7 (cQv]py-uNt5K zK-XN߅}9ۊY F Q& -&*/95779d:Wa@ęE˚AK3w[…2Z%ч͵bʽ[ǚ,-X>E l&p+01t10* &&&(-..".^&E /G!'P0P69>BCA:2(S P y1M#s"{#ذp4qUe/Y]'`)*%_ P 5)U p#h"` Q cjI w pI@C"J|E\g6ۙ T%y 0k %(*%\ + QD9p" #P(h.19;A<=70,k#!$#'*251'G:̸PUPw+՗;s(ּڤE` f[9 <q'*E(&%%'Z"<o\KdP0 :ryO4!y 6c2{fAsn%uު'ɲ l<޶Jw5 hj ;*O[),3@2/H,5$/" 4EC $+/32`'>  [G6H*60.46, z 3g 'H"AU$* n!$&)8*&1%?F7 = e:EzI8ܠضkI/cɌU|Sx$& kdd0> t u0 '4Pc G@$+,+k/h,a+'$&%%%."w- ;POWwcVfT96jd5'6%k/V lC{~/r u "b$=dl (w ;t-VAU.!,5dC?$?<8F5322,+^# wK$F 3 $k! $m .\ jVI:CB F  l1rbt+m2_DW&Y܍yټ_ݛܠrֽ9iѧJЕYC`O~-e: CuHrIC":,}"[0 5Q?jW+{z n " %4&m'p#e| Jz4*f8]?Rɔo5<ݑjVY 't068952a.! Fx1ڈׄ>k|ڬn&"1;EJJ:GDWBb?8=-W%B#ۇ)ë d\\B7B~a-B~n$T('c2F= }B!#$('Z%j"2xr3 } 8n e+#:FN7OIW?2!SiB}_ ؓk0pSwT }n JqkT #4Qv ͌ǓOZx6A~"g d#n7#-1P+$ !!ZbiO3 h!ҖGî,ƴԊ$ B _"i/ 9 B~E_HyJIE>;y7P3/[-*(%#!W| 0E ^T EKd+?4xnJaF +=  {^kaZ6`*Gd?<#! k_V;/`kh;QT O%*1P14+C("*iV " &9 .y *3 J$%]$#IH^j#`[Խ/Ǟ:E҅ؓދ/_u"**19<=>B?Y:6V/*$+63 ~ !. ?`1f$= Ѡҵަ|2E  !*0F:(A{>;d==%<>840$+#H;>ث-3Fضݎ& }3='`eK 3/Hs=$5Ic : ރw/J'3=DF/MMD=4,'rg% H*?7 t 7`Z|ljl !H(Ը ϳѝ{]rcDlxݶw ǎʟ_|ݿK/!(&bg_ i2nFY  @X@ƣ وnnn Rl&+^64+& #3_ _qV+Ȭ3S>κj2P%<4ם;C| l9x`  @ 0 l  6ܥݳLXVSS (q8Y&:KkW]0`\VL<-F |AF_&;0igu!$P tJHWd -0̻D@מw) T4COTCSJ!D?,jk}J~ o oׂG;d3+$T/!(q)(5'$"& bD((O Iؐ@@ǁĽ(}ɥlדߡy'#.T6671,( 5.aoM 8>  4zPحDf_ =h3SM8^q Vz51(Y#*-7j=C{GEA>9766*2)i |G ^] )G}!, 347::6 +!%".Vo#"I '0N[EHYݎUkϊЭj B("0673u8741)^|cc3 K- 7h1Z{Wm Kgi=wl=2 X z,"K(-./!,#) AxJMd-~&-*"uI ɉскҥ;Ԃھpx ?!R:=\  @ 3 z"##4$!G5% Q 'YsŷƉӝjY6=R!(;LTg[ZPD;."6@~]ȹ'žǠ މODX) 5?!HNQOLED:T0.)1%4!> c+#60<(N"NVp")>֩z -&y-k2853*w7O+Tnҳaݔ# H̲zAӠJј{ z$ ,/64871-#bC_<6%29 y%mKf $[05߯?Nl[w#JF+!%$"37<&/:)>l:j<645p,ژѥ8C˪Yի-hܝӘسڂwڀUFg7K (c/Q-"pf eg>6 fonΊτ#xn+ >XV>A LPUoXlUQHL>752-?&UFm!2Xm6ֶ9m. C|{3,Ryc8A!e   " .<_#c'('&&((V&<%P"_^'T  ").2y61,#{!D^$^VqI(-ثؼ?m$~ӔQڮ8-yH-̟ŮFœ9, 0#,3+763''#/5r6521{-)#w | U':/12-n%"Z E!%v$ !(uXog1xWtKD崍: dߩ9m#|.73769QAHP~Q:M[PP*I1B4$c vaLSґ\Ԩp߼|U%RʊШۑio ~ =Cv/d7F :l  Xn)G/:Z5$61:b=4jc!֟ԕ&MU("%"rn 9hM'-+`*% =[: H y 7)E//36L6>;6=95C2001,'g 'xxa(aW[՘. e+W#kmۢܨA4DLkfS 3$3A?CcINJgB>4.00,(!$#+/c./c/-10-*5%bA\z(\1exv%'BN5N8c$^ݸF2Z߷ִ@u?2ÃĹԸ԰heɚC 71DQdo'untlaYORIBB@@8,!_?~p7!nn3*9SJ\A:^ݨiٶft\bߥ V E"',d..|%5"YfA q5;ԌШ+҅mmP5l -5t<6FENTVWHRJuG@/_f&rߋuR=iA$.!>m;#ۇ.ՄUCI+ݘz.֘t3ۦj9o "P(.4M,s!3 /  ]%[-1.-(Bs$a+2A4.,(L!h k5Tq˲ЪzIF785 > [mǨͨFVԘe\J|!c H#(*.,.9=@DFHGFNiNJE<2x)$ $*~*,q'T;Zw!J,` 7iߍވ<ٟj*9-hŊʣϚZyͳ=Nd+9#D%NQUTTvSNJ!G;[1%#Fmf(.B.'"o6A 7G ,]9 5$Ɣ2uvAA @+ 4Zu= IY!*.+|$&O۽:с֩<&$X1>KUoVND#8*"oT|vX T]?ThݛQMgδكF v&-.+ qey M !(&%X  ]WX(! cfe߃qlJ. _5هvпƺ1R͚jS%"y8B t'.9]@z>.>Q@>:g95*7 /\. G?hE;k; o{g% ZJ&T1"7<:2/.n)$Xo9M^"+;+1.w*$ Wj4JĿ8[i޾zٛՄ `яK̙҆iy.׀ܻ4 {? ?!xDG /+2l9?EDxJOU[VKW XVYW QE9*w r#! .} "Q dêGhSRo"d\̨/͌[X՛) ' 24;A,A:W>BCGJMSLKJH`F@<7\2=,$z ~5MJN~.397$~Oߪф{xOȏ|| uZV)V[*\L|` #%"B9n(!M:`!#!"%,#{z xCT# #hg C6iC+RV|/ԯ#]RU 1' .V <)!%C)'K03.3"7"7V/^,[*++)$K "VvptCTN?Y֯";XÃd4.Tv?@aFjGWrk'i01, H H\N2G2/Oc@? #.;GIC7( Y*48>_BuDA:."[ h~Wܣщٛ8C%fCtl[ ',sӡɔę'O,߿64șlְےY5ۻݾޜ@ K'`-1>8;6??:50U+S.223773/h'">"+05^62,"f JUY"V),0.(e"_ >N2߅ND{0z:ƮӴ8Ǡ"8^UޡBCqM[L.O=%,56DAIN[SPG>_5~,'(,V.+!,*+*'!9RJkza ֢ln؍VH'zmkMi G!%*+&%">(H 9*2K5C7H-_ $x,I_~X3( GFySY &ްtˎ$ƞG ‡(ӳܡ  ) G*&z1W +Z"(F/5p=CHH@ 81B+ \Y"L.#,+48/"]WSi&|٥#eT}m08;# 6T ^ݒח92sr!`;  :Q,b#,b61;w?Au=4f'}5s%n*])^('"p oZq b *5>.FHD@a5&qiE6wמN)?8_Dat 'jp*9 XLh'm7 ')^17:%7-' ##L!:%*c1m78=m<.{$6$w]gB/1PBG<oI KH'3 }u qQ2+.| # |+3;. b ")034l61<=(:y699A::/D%;P _nkwq Wtoڛ_Q݇&+Pڼk tv({+~)7 D*&JܩcH_/!a(+$($"mgIs$*21,5! !  rd")-33+G$F n G-..P -,T39$Vޣ޵ڻS˼ĘeZɌ٢ٻPP5{ 3 3-*19]@hCd??>6c,"va ޾%aBC yQ)ܕTS[5U 컅6Qշ !)/H0;.%3X7.ڮiyӂ%ڞݣSuN"p%;)*',,(2 42C47n4a68;.<%9M21*"RbT&+$:g " 9  . #()%k Ik @6= m'l߲n}VGpK9^&ײwiф|x%o@ӥʵɉ5"3a?OBFIE?A?B A;m7$0+J*.-H+%* =kRN-n I% =cya]i  - [LG P?#/ `+a7@GLKnGB7(#!d 3= a^$JMȆxOӱwGZ9ټވ*i2! H 8(v;Va\ z"">O3' #*01850#:ލQщDHIJ)C/AKѝߩ1X#})5.BIKLNiLMxMP%Q͟˲@͇D-\|ۼڕ%gڦW_%-]x{lի{ωPѽՀLI1zKa 檥ܿr=9$$H-2y0/17=9FO(UUTPJ=|1R&Q k z  a[SBX:E&Ts` r+f TkSN$H(21(;FC#DE?=, *f:ݽ%˞Ƌ+ս$]6O-2^R dQO"(+$xG @57Q2  pPjЬFҴ(ftd%1*8<<>  ^Q 2# !pյ>܊+}33l1/,Z&v"( YLC P[%} H;tB:P,~PJtײ^÷Ҋަ*C0"=A^id fRIb JnM r7 $+t)'$o hIއ'0n A@(-{%q~%{Ur#xSQ| }ցѸΚϒ +$NB\-=F$P2WAY\N`&cib%ezi9g`[ T'K>i4+  Cq%/˖<-};aWc# H( H8֤RUCcwւ1W ]}7ĺėE> 7:}#*"bI35Sl $k&((G$>l^#KR1B&t,*.K*R&! ^) 2n1t24^1i)!!MH N jl   KO8&|-F2-2}44(w Tuي2D¿Ty^V0C׭߻*W | ҥˠǢ|Jw Z] %w1?GMRVMAD8h-U'2"%U&''&:&$w H;n ۇO 0 #29CJpM KI}IA= 6*!CNl J8M!l}HݰT#+)' *G^ت3-دZ/:\܁PO8kdދf 4)#WI wSXK&E' #u#%&Z%"" #3"T8Pسm,+< e ӉH1#[% '`'~!3[<%fфGC $'/-/4:>COW^tcae d^TOH?=65.S#;_`K뽨Z\ѹ®Bo g "UQL6hg۷ΗĴĬhڶC$:-;BE%(*10N(&L!)J+ x&(%@K d}Z$,5&@!D]FFEB@<3*50  !rۖ|/  &0;,DMQ ODA?9?<747661(#"Cԯ%ˍrGz\p#(*)%"Yd 5Z,u=b" j׽ܻ;LŢɞɯ~"Ī=\׊&:A,17;7>:;,A: VKY_B[-  * n~8E> s r!~V  wQgn3 F [ K -$*rOf 6 7(_330t/504=ErDF@dA@BCK:r4+9! -ӝU[5̃Ȏ H w`' ,q2{t,qi *  ~+&ԭj& l 6 v T  !:%R#  m ")/+&WwG4ߣھzޣ?Zn(NQ|=%r2=EKPVPYWVSF5*!To 'M^V 1$m]8 8c0!.JWf`9!O޸ b4*6X'Ϩ{F S oJ!r =!$e#=#"!F\ 675 vf 7-(<G'F#C>>==B!BQ>>>L=;8@DE>6~,CK 0Vlg޿9 gHhKv = M~f[;"w`X ι]˸Ni4ĽoܾF O*2v1,X'" Y,"J; L^1|Jl gg!!A Ae]3E Qh {ki 2y%q5'S c i%+[  9  +/o0i.%TB q ^CA }x@1 qc/Nc 3 lneӴbɻjsR;HX:M gOw*#'a,H2,:&8 =XKُvΗ22  (3?HJMKA72Y*h)(k!GtJ: &$@+.Q,8.N 6 >YZ;E <*&˳ΤqkRa&7;Ed-,קڥS S$6"X ?yqPF Xf .4%/@LW]\\-SHZ=311N3l9?CH_ICT7 *wr 0{Lߏܴ X97}zٶAJ?, W)oakuٴ첻@}\%aҨVz  4$'"  ;'k|,$)_&,UI  C5NU+ },Y d ' "%{-Z".02360M(YK qo 5b-D/!"r =HhC#) +"/ NאJ9`!= V PcK c|'E }R?BL wIG>{b98uFӥ}I 2F{O &r:x9wm>Bk#v!}_ !$u#((.a-<".H X 2%,0+0/:-(-'|+(/203o.%(30^ M  F SY_"!'q[ B4qk$"P dAo n 8 \p9~Ф>)̾\RdJl (c[bK۝Y};*o`4Z5 ycmo%ɼɵΘ6E 1,s!$^ x"<%u$(4pCOY]_5ae;gGg_TI>:1!&"  K$$ZEL tru2 +X~  UmڦֳY!I!݉T2JƓfͻe'M rIk S#9"RN2 fb|it1" G* 3} c4+ڮY- j%l.6C;b;94;0*264/,S-,/T2g2-& p`kI2A|41&#$( &[(*("Zϔůsѻ$ӹټDE IR!&(*0,14q30`,#!( [O9aF+_T ֟>Ƒw:'ƸztC:s _s K3893*s#p#''&M!b#+.(" `Qwe/v"n)Q16b9j?B}BUEJGA2A!>IL} Y 8X׫ҜX]P$e# 0^6r;@9+.L|/pL} usJ"B^ؔʋʭ`/ISYϥԈwvīY|sӱ =z&Z$M)*S,25>~DGMOKFC<=/!jW} a5ݾPfÛ?dđ-ˁ̤J®ŒQH%'6;UB=źʪ='n5Q9>853522/.a,))",/-)#Xt 5( $$$s! B=*i29Q:q:>AV93%*w-ow8FH! 'X%?#S   C] su5^XbAt#n(Oa 1U6+ Cyϑ'}Û9ϒu@֥ڼͯ8$+@N=[m z%|ntmql9cY(R'F<636>?<8&%(&_p6Adoq _p&F%"'+.!~2xܑ P1D/NB^l@qc|^h%*}O6M ҢBްvf%=00X.M,S S7ڏK-Ol h%s%S%(?'%&])`-@-n'e&e!&9- C-FS! !U`  -S !?&*,:*)+)$$&E(&Jl USSLŕnVH˅ݯSu0;51*-1'7!Gc}5;ǁ(֘O5P+uru3Rb6QK+d^ )( 6\DZKGC;r6/+U,1-2-/P.k+D%]I MhF2AB C(%xd2 8 r H  H+ . 3( wM~Me5p6tTT^Lߍ>{PܵyЂ6݈iqMGZ  "gdր1䰒a߮ıq|-Ը¤NնLxk (6 =BMqS\X;^b,e.a_;\UMPJ/DA=7 6q73%/)j n8T,  q' o @~LaN - K1 l _h sمSٓ;܏30ԓ׋y!#jV 34#ʹVެ ^,!B&O& $^%bh{|k 9O$$(%Y V35SfoSiH!&K-.{*+B% Qg k W".8=:0P"g fd™¿nmʎAՕܸwwt1xH 6,"9JSWVRI@6>-% :7+xښ׸ҏiҜԛNؒgFԫLץےIyuXtҳ $sxv$*i~q-= w%S1V7AjJNR0OBIB@iCcҽ~ON͟ǯƮÙ6gBj$B)..0;COL[ZceaYKJ@&7.+'-(.n*&#ju6"&6258c3/$68;'Ad 'h)'WRn {!,j}s~{hS ?P lo3Fy n$^$*RsW_׽ZC׊ {"V3l;=?<8.6Qs6VggG5V# D\% v |:$ \ kKR5 ~+aY_"+-0/%|M#3 "naVNw6p8%** '$ '7c]LP$҄Ԉ؇  &&r!UN{ M%V&$D\ ||S|@ KOȒ[ΤYj.k $xX[52 >xq&"2*4>DvOvVPEI(ߖݽ՛69'KyV}.#'$P]WU7,P$c;$"ݩ˷8qf޴rH>5(  } (=256 9t6V3w5:=>6Yt#!duoԫW_3k <Y=&o/8=ZCJhONJCz;#5F3+2P306j7:<==6l.E%mqVo tA ݾ۪֟%JP8  lP/MA2a   l"$e"JsN F nL@ϗҍCr4!dsm&--k& ,o= 'Jq~o V9|ؔ߸جSlŰIW6SI]"-5+ "OKԙmŮjK~:B^9 | 87B4!mom*O:Qׄs֒ڊD5E( tHIb{NXMUL'|.452*X#U v! ="G$%y$Ij= ;N&ۥQl  t!O}ۊԲ֍سۖ܆ py@r  = _%g14=FG,EZA:5X2+&M4FٵN ܩS{5˟Ŗ g y+ o& 2 23 \`E?˼فO!))16542570853238::V;=-:n6 /)1 c{V #-y4882C+#W Zq<:'"iQ/&?q¼ɿŻ^lDA܏A|BS&'`%  RYE4"}}3 IN8SRKDHZFA=q8+2,*.49)<%;6 ."Y:@HɎ;j;v e4hJ W;trBNMϨz2Z= #; ~N/$(v.S@hPQhs_!#*2.7<<3E3*)?VP8ݶI$X 0U7!M# fQzǧ*m7~vM@ B&/2-0f/3c1[2H5^5P2/+ (v"|.*Ɇܱ|߸z=Ģԓ,4/I/--P+v$ozcy^^,%'ɬ:B٠zxu +A26&:50:) ,\?3 UX=C FM#(m ))269:e:|:l6S,$d1( YWdxe#O,dOژCf 6#$):.n.|02/, (9  uT8c%of3. ]"%x% 2ߗј>/|#:k 0r7o#\(k P;9rI6Ddޟi@l\A+2*N ?!3@JeRYK`620#R =[Oz׊ҽ͸ۨZ C8| 6n  i ,8H8?='l$Lr%,^12Y.3,*+0+++&!v"#$ |  = qŐׯ8"i7ŝԀ  |b%E-.B/0- +##0m8ſ8ė( ҝ'_$W#*f,,*+**,(+W: M0^ -'/W6< @GCGHMNIEDG@.:172561${D6KsAu Jtrd> E!196932?)#MRܥyЁI4 QS Xɠ3Qq \KP;FGj$-i7y6f0#5jqa4\zDY k B4ߥDg.O :V ~08 z$%!G| :UWkfhZڞڣsy  _#5'(E*($D!k  c(/i7=4ABBDFMWZ3XNQA8,nr֭;˳ N--Zۀm<:_\4 !*263@DFHKM|KD<0ZPE̷ʗIt+ `qFMah K5 9K@  fHlGٍ >4]&Q On{ !,01-m%(0~xe:TQ1%)0+-K/1G;AOHMuLGkCB<-~" yB iWH S bIXyڼxKji!."2q|f (341l/1>3.2a0-!3EC 2EPܠ>ݖ<>*́I~fѮh0ޅF/$.5699 > bX!"C% $]+13-"tJXRrѵtɼctrj!ӘLes FCH  x oS 8f Ђհ,* z1EU_IaXF.2 \&#)2=IDILG>2=) i)"Kk9^u9ĞR&9gxaրIoj\!/=GuMNKBL8*m!1Pat mUS~#!3!&*% ziVy1ހhvS>A5)6ތ٦}`,6BXHGkEl;.A"1Z8k2 ^%^*--*{%n$$%)&(#!4"P'v'%!7 H?,JY> 9k" c  &'-,D$  lPƷ %OAWyG2̋vČ-<>U*z1g/h)"j p\aAB IB!b }6P Gt~V(d - 5}9a5C1)N0@UnĶ */s+'4$#I slP٣E[$E.462E& h e_#!?MJǪ7_^\O)$4e)2i8 :6P/";:MG1 F 2 4AQflU͵kkh):HOOJ#>2U,}#I;E")a0P/*e$"{&+-.U,%.vj2:f eW_L!$br S RٷϤ9 *ʒ&B3"-3h>DFECTB;2Z(# 1 ^ = 4Grܢۺ.^%-%2:+BWF̎Ȥ%˳C܌?BKݢ۫Oyy#y&m$ n  = \ $[",11@.B*!*&*$ :Rep+F#.12,#f vmVحCޕb%Y?ds1-Tñ_w9+ʭ@zp&,23B/.*)!=>iYT$""1- @N Y!/054l/H$$JvņytU/ę޲+=uI%zQ܏>Ox:= #"9"!U.6^n-2S/0p)9"oZIN^! i%;IKBJDy2& 5>%Wl#* 'N(8Ft`5/-QA`l lknL:ʒ(طs80*>.^-(e oe) TI 7R,xRl;W"1"%# WsoM>K$c5BbJJEz<17(m -M'M"- K{ ( o߫A:SֺkļŽ:ln6f~l!-m79A>?8v0=)e"1 (Q *">ޒVf$S>wޜ% >R!H%"!T3 /$~R,0P_  $5U' H޳ޅV m2#$zD.W$0_=$GF>f3(r Wuh25> # YqhHS[:r S+l ` =v:n#&p)'%d%o_K-D,7Q964/!&mn _  c4"?ɸ ҍ֕ؒvΰΧC5nŁ.< ʟ̖?꾷sg/#Qh"k-3100f02F5708862*/*)." 0"q'/S1Y2Q3-, 0356C881+& a"X7 4FHGYmu\?ݾ+U0ڷ$e@n %l Sk0,OW݀ &2#'s$x3 NU?\e-@Z!l E.7=A>;:<:4,&$ #&#s IC + ( d  u3ܻ.tZJc/0p'VCׄtӲܦ"07i8A1%! cYwjI~I}#$%eVDx^ %(ɽNS*8kllߝh'_$'/#]$"!$&[+$/ 2C772-c#l NX\+۩pސ7ο񴻺Oa܈ ^"5"qg - ^3I,00-] -[P`@ &1i&p****&#"$H$$"A! h#S$} {&ܠY(׉]Ö:˳_dޮ1R;Y?߃߲4ԵH$D2=&@=4,$T!$()'%E!bHe$;3DW`aD]hSF\9@3362430',,,('i*X)'c#w^k֯2²Ž5Ҡժrv[CF  2|Y4`Z"X$_=2zڰ=zW~{#a,^*'#: > l icΰ?ͻ%ݧKV B&-3Y3764v/f*)(''')()1!<@>B=_6+ (MZuxcX wjCݫZQEP yи5[nb`; _h"6GR{UPH@881((Rp0 $A"ZOa%d|/h c K%),/1(5:94"&Okr -EмȠʀ¢2 xY'!"#G#!Bu }T3Gz*yEK +P"U&U( )%fT`!?$',2Y0+J"|JXԴxܶ40ôO'2 xnB49o4SŃ+nj4P pJ&.y61<830I1I7|:o<>EPMVb+iBhb\U7MEIA=;8 41s.)"3A feDZ:ŗ-|*ԘKzynC=l #6qK- %x"$\r&Hb`goZ*^γBНNMv6=/$,13t66|5/!-; i|{ْ;Z H| C %!J,4&;BOJNJD^0`o\ %,044|0&N#vN6D/ REW}LM_3Nɽ຦,3_KЧC֩2r ow b (h.,(J*r1:HSY`4ehhgWbU_EK6+'$R%B#%2$RMKUdBk$ V8_ %  VV N J"| s\ڏVjdֻmM؍ռ/~P( Z ('h#Z}wgxEta$,420$/C7386*782,$ ~+ڤ˜`7Pmi/ZܘI<"G'**&pI*Ch :ЬE" ڼ k !\18ЄSmɢˬΕԒՒ|A ^K ׶  K 9<0i-{f!.,` z > *73Bχz)(i37?IPW*YUJED<4+)O   tRAت Ķ4ԑwNۻgE4IAt X HHKK~v Mf)$N}0$M&%-+-'xVeKL[st>8( o"+ Tz. JQc > o F 8d1R"!;t.`LMs  \ M qP|l&HQY+i֑<ú˃s˱Ƭ=~7:'٨[Ӱ۪w >1"+5O=FO:X\bhTk/i`ijf(c]YVUQPMHD@8(8|v  &a_Ju!  "ڝT֊ }':[ YD"Ro>$I `! []͍Aލ X`iy3<In  V (;LwݕB_$ Zu%(-;1014;0V--++2076EKUKF:50$)$WAyDԷʀidE[#%>/b u""c&E+/2--07(=@>06.)-'L#] Gvaֺٗi.Ymߺ!:*6e>@+=7/,F088]CQ'Z%`a#\T TRJEEZCt=@61+9"<JTu_\!f*~.+$؝=ğɩHlu_ޘs~ (% V h^{C+!X$'#n# tD}\ 4<ޣ3pޓ]RUW{P3P e"! \-5kC۫;]<81bD9p R&]$(*J,($M"K'-t7B~ISUQJ>Cd:i<@92*,#+  W'̴֒L†ĤyPURHO0MN  '+*P!8h60 <!LDd+yYht%yp uN \)L4R7X.)"/)# :izLm Hj]߬W\E= IxVL"':*-.// 2C40.24d51*"YY I "g Yo ( 1?LI&  }`v{>5+Ĵ8ȭF:ؿK֦ͭZ7F`a48)Y-B(P'n$!*""%e'd+q)(n%e'/8@FWIN]KuGzBV8c2q,'Z%)01o10%$ %,..+&L" kji3 3ƟéşȖkT=rܙ&Ft(15N05&#  "7 (cQv]py-uNt5K zK-XN߅}9ۊY F Q& -&*/95779d:Wa@ęE˚AK3w[…2Z%ч͵bʽ[ǚ,-X>E l&p+01t10* &&&(-..".^&E /G!'P0P69>BCA:2(S P y1M#s"{#ذp4qUe/Y]'`)*%_ P 5)U p#h"` Q cjI w pI@C"J|E\g6ۙ T%y 0k %(*%\ + QD9p" #P(h.19;A<=70,k#!$#'*251'G:̸PUPw+՗;s(ּڤE` f[9 <q'*E(&%%'Z"<o\KdP0 :ryO4!y 6c2{fAsn%uު'ɲ l<޶Jw5 hj ;*O[),3@2/H,5$/" 4EC $+/32`'>  [G6H*60.46, z 3g 'H"AU$* n!$&)8*&1%?F7 = e:EzI8ܠضkI/cɌU|Sx$& kdd0> t u0 '4Pc G@$+,+k/h,a+'$&%%%."w- ;POWwcVfT96jd5'6%k/V lC{~/r u "b$=dl (w ;t-VAU.!,5dC?$?<8F5322,+^# wK$F 3 $k! $m .\ jVI:CB F  l1rbt+m2_DW&Y܍yټ_ݛܠrֽ9iѧJЕYC`O~-e: CuHrIC":,}"[0 5Q?jW+{z n " %4&m'p#e| Jz4*f8]?Rɔo5<ݑjVY 't068952a.! Fx1ڈׄ>k|ڬn&"1;EJJ:GDWBb?8=-W%B#ۇ)ë d\\B7B~a-B~n$T('c2F= }B!#$('Z%j"2xr3 } 8n e+#:FN7OIW?2!SiB}_ ؓk0pSwT }n JqkT #4Qv ͌ǓOZx6A~"g d#n7#-1P+$ !!ZbiO3 h!ҖGî,ƴԊ$ B _"i/ 9 B~E_HyJIE>;y7P3/[-*(%#!W| 0E ^T EKd+?4xnJaF +=  {^kaZ6`*Gd?<#! k_V;/`kh;QT O%*1P14+C("*iV " &9 .y *3 J$%]$#IH^j#`[Խ/Ǟ:E҅ؓދ/_u"**19<=>B?Y:6V/*$+63 ~ !. ?`1f$= Ѡҵަ|2E  !*0F:(A{>;d==%<>840$+#H;>ث-3Fضݎ& }3='`eK 3/Hs=$5Ic : ރw/J'3=DF/MMD=4,'rg% H*?7 t 7`Z|ljl !H(Ը ϳѝ{]rcDlxݶw ǎʟ_|ݿK/!(&bg_ i2nFY  @X@ƣ وnnn Rl&+^64+& #3_ _qV+Ȭ3S>κj2P%<4ם;C| l9x`  @ 0 l  6ܥݳLXVSS (q8Y&:KkW]0`\VL<-F |AF_&;0igu!$P tJHWd -0̻D@מw) T4COTCSJ!D?,jk}J~ o oׂG;d3+$T/!(q)(5'$"& bD((O Iؐ@@ǁĽ(}ɥlדߡy'#.T6671,( 5.aoM 8>  4zPحDf_ =h3SM8^q Vz51(Y#*-7j=C{GEA>9766*2)i |G ^] )G}!, 347::6 +!%".Vo#"I '0N[EHYݎUkϊЭj B("0673u8741)^|cc3 K- 7h1Z{Wm Kgi=wl=2 X z,"K(-./!,#) AxJMd-~&-*"uI ɉскҥ;Ԃھpx ?!R:=\  @ 3 z"##4$!G5% Q 'YsŷƉӝjY6=R!(;LTg[ZPD;."6@~]ȹ'žǠ މODX) 5?!HNQOLED:T0.)1%4!> c+#60<(N"NVp")>֩z -&y-k2853*w7O+Tnҳaݔ# H̲zAӠJј{ z$ ,/64871-#bC_<6%29 y%mKf $[05߯?Nl[w#JF+!%$"37<&/:)>l:j<645p,ژѥ8C˪Yի-hܝӘسڂwڀUFg7K (c/Q-"pf eg>6 fonΊτ#xn+ >XV>A LPUoXlUQHL>752-?&UFm!2Xm6ֶ9m. C|{3,Ryc8A!e   " .<_#c'('&&((V&<%P"_^'T  ").2y61,#{!D^$^VqI(-ثؼ?m$~ӔQڮ8-yH-̟ŮFœ9, 0#,3+763''#/5r6521{-)#w | U':/12-n%"Z E!%v$ !(uXog1xWtKD崍: dߩ9m#|.73769QAHP~Q:M[PP*I1B4$c vaLSґ\Ԩp߼|U%RʊШۑio ~ =Cv/d7F :l  Xn)G/:Z5$61:b=4jc!֟ԕ&MU("%"rn 9hM'-+`*% =[: H y 7)E//36L6>;6=95C2001,'g 'xxa(aW[՘. e+W#kmۢܨA4DLkfS 3$3A?CcINJgB>4.00,(!$#+/c./c/-10-*5%bA\z(\1exv%'BN5N8c$^ݸF2Z߷ִ@u?2ÃĹԸ԰heɚC 71DQdo'untlaYORIBB@@8,!_?~p7!nn3*9SJ\A:^ݨiٶft\bߥ V E"',d..|%5"YfA q5;ԌШ+҅mmP5l -5t<6FENTVWHRJuG@/_f&rߋuR=iA$.!>m;#ۇ.ՄUCI+ݘz.֘t3ۦj9o "P(.4M,s!3 /  ]%[-1.-(Bs$a+2A4.,(L!h k5Tq˲ЪzIF785 > [mǨͨFVԘe\J|!c H#(*.,.9=@DFHGFNiNJE<2x)$ $*~*,q'T;Zw!J,` 7iߍވ<ٟj*9-hŊʣϚZyͳ=Nd+9#D%NQUTTvSNJ!G;[1%#Fmf(.B.'"o6A 7G ,]9 5$Ɣ2uvAA @+ 4Zu= IY!*.+|$&O۽:с֩<&$X1>KUoVND#8*"oT|vX T]?ThݛQMgδكF v&-.+ qey M !(&%X  ]WX(! cfe߃qlJ. _5هvпƺ1R͚jS%"y8B t'.9]@z>.>Q@>:g95*7 /\. G?hE;k; o{g% ZJ&T1"7<:2/.n)$Xo9M^"+;+1.w*$ Wj4JĿ8[i޾zٛՄ `яK̙҆iy.׀ܻ4 {? ?!xDG /+2l9?EDxJOU[VKW XVYW QE9*w r#! .} "Q dêGhSRo"d\̨/͌[X՛) ' 24;A,A:W>BCGJMSLKJH`F@<7\2=,$z ~5MJN~.397$~Oߪф{xOȏ|| uZV)V[*\L|` #%"B9n(!M:`!#!"%,#{z xCT# #hg C6iC+RV|/ԯ#]RU 1' .V <)!%C)'K03.3"7"7V/^,[*++)$K "VvptCTN?Y֯";XÃd4.Tv?@aFjGWrk'i01, H H\N2G2/Oc@? #.;GIC7( Y*48>_BuDA:."[ h~Wܣщٛ8C%fCtl[ ',sӡɔę'O,߿64șlְےY5ۻݾޜ@ K'`-1>8;6??:50U+S.223773/h'">"+05^62,"f JUY"V),0.(e"_ >N2߅ND{0z:ƮӴ8Ǡ"8^UޡBCqM[L.O=%,56DAIN[SPG>_5~,'(,V.+!,*+*'!9RJkza ֢ln؍VH'zmkMi G!%*+&%">(H 9*2K5C7H-_ $x,I_~X3( GFySY &ްtˎ$ƞG ‡(ӳܡ  ) G*&z1W +Z"(F/5p=CHH@ 81B+ \Y"L.#,+48/"]WSi&|٥#eT}m08;# 6T ^ݒח92sr!`;  :Q,b#,b61;w?Au=4f'}5s%n*])^('"p oZq b *5>.FHD@a5&qiE6wמN)?8_Dat 'jp*9 XLh'm7 ')^17:%7-' ##L!:%*c1m78=m<.{$6$w]gB/1PBG<oI KH'3 }u qQ2+.| # |+3;. b ")034l61<=(:y699A::/D%;P _nkwq Wtoڛ_Q݇&+Pڼk tv({+~)7 D*&JܩcH_/!a(+$($"mgIs$*21,5! !  rd")-33+G$F n G-..P -,T39$Vޣ޵ڻS˼ĘeZɌ٢ٻPP5{ 3 3-*19]@hCd??>6c,"va ޾%aBC yQ)ܕTS[5U 컅6Qշ !)/H0;.%3X7.ڮiyӂ%ڞݣSuN"p%;)*',,(2 42C47n4a68;.<%9M21*"RbT&+$:g " 9  . #()%k Ik @6= m'l߲n}VGpK9^&ײwiф|x%o@ӥʵɉ5"3a?OBFIE?A?B A;m7$0+J*.-H+%* =kRN-n I% =cya]i  - [LG P?#/ `+a7@GLKnGB7(#!d 3= a^$JMȆxOӱwGZ9ټވ*i2! H 8(v;Va\ z"">O3' #*01850#:ލQщDHIJ)C/AKѝߩ1X#})5.BIKLNiLMxMP%Q͟˲@͇D-\|ۼڕ%gڦW_%-]x{lի{ωPѽՀLI1zKa 檥ܿr=9$$H-2y0/17=9FO(UUTPJ=|1R&Q k z  a[SBX:E&Ts` r+f TkSN$H(21(;FC#DE?=, *f:ݽ%˞Ƌ+ս$]6O-2^R dQO"(+$xG @57Q2  pPjЬFҴ(ftd%1*8<<>  ^Q 2# !pյ>܊+}33l1/,Z&v"( YLC P[%} H;tB:P,~PJtײ^÷Ҋަ*C0"=A^id fRIb JnM r7 $+t)'$o hIއ'0n A@(-{%q~%{Ur#xSQ| }ցѸΚϒ +$NB\-=F$P2WAY\N`&cib%ezi9g`[ T'K>i4+  Cq%/˖<-};aWc# H( H8֤RUCcwւ1W ]}7ĺėE> 7:}#*"bI35Sl $k&((G$>l^#KR1B&t,*.K*R&! ^) 2n1t24^1i)!!MH N jl   KO8&|-F2-2}44(w Tuي2D¿Ty^V0C׭߻*W | ҥˠǢ|Jw Z] %w1?GMRVMAD8h-U'2"%U&''&:&$w H;n ۇO 0 #29CJpM KI}IA= 6*!CNl J8M!l}HݰT#+)' *G^ت3-دZ/:\܁PO8kdދf 4)#WI wSXK&E' #u#%&Z%"" #3"T8Pسm,+< e ӉH1#[% '`'~!3[<%fфGC $'/-/4:>COW^tcae d^TOH?=65.S#;_`K뽨Z\ѹ®Bo g "UQL6hg۷ΗĴĬhڶC$:-;BE%(*10N(&L!)J+ x&(%@K d}Z$,5&@!D]FFEB@<3*50  !rۖ|/  &0;,DMQ ODA?9?<747661(#"Cԯ%ˍrGz\p#(*)%"Yd 5Z,u=b" j׽ܻ;LŢɞɯ~"Ī=\׊&:A,17;7>:;,A: VKY_B[-  * n~8E> s r!~V  wQgn3 F [ K -$*rOf 6 7(_330t/504=ErDF@dA@BCK:r4+9! -ӝU[5̃Ȏ H w`' ,q2{t,qi *  ~+&ԭj& l 6 v T  !:%R#  m ")/+&WwG4ߣھzޣ?Zn(NQ|=%r2=EKPVPYWVSF5*!To 'M^V 1$m]8 8c0!.JWf`9!O޸ b4*6X'Ϩ{F S oJ!r =!$e#=#"!F\ 675 vf 7-(<G'F#C>>==B!BQ>>>L=;8@DE>6~,CK 0Vlg޿9 gHhKv = M~f[;"w`X ι]˸Ni4ĽoܾF O*2v1,X'" Y,"J; L^1|Jl gg!!A Ae]3E Qh {ki 2y%q5'S c i%+[  9  +/o0i.%TB q ^CA }x@1 qc/Nc 3 lneӴbɻjsR;HX:M gOw*#'a,H2,:&8 =XKُvΗ22  (3?HJMKA72Y*h)(k!GtJ: &$@+.Q,8.N 6 >YZ;E <*&˳ΤqkRa&7;Ed-,קڥS S$6"X ?yqPF Xf .4%/@LW]\\-SHZ=311N3l9?CH_ICT7 *wr 0{Lߏܴ X97}zٶAJ?, W)oakuٴ첻@}\%aҨVz  4$'"  ;'k|,$)_&,UI  C5NU+ },Y d ' "%{-Z".02360M(YK qo 5b-D/!"r =HhC#) +"/ NאJ9`!= V PcK c|'E }R?BL wIG>{b98uFӥ}I 2F{O &r:x9wm>Bk#v!}_ !$u#((.a-<".H X 2%,0+0/:-(-'|+(/203o.%(30^ M  F SY_"!'q[ B4qk$"P dAo n 8 \p9~Ф>)̾\RdJl (c[bK۝Y};*o`4Z5 ycmo%ɼɵΘ6E 1,s!$^ x"<%u$(4pCOY]_5ae;gGg_TI>:1!&"  K$$ZEL tru2 +X~  UmڦֳY!I!݉T2JƓfͻe'M rIk S#9"RN2 fb|it1" G* 3} c4+ڮY- j%l.6C;b;94;0*264/,S-,/T2g2-& p`kI2A|41&#$( &[(*("Zϔůsѻ$ӹټDE IR!&(*0,14q30`,#!( [O9aF+_T ֟>Ƒw:'ƸztC:s _s K3893*s#p#''&M!b#+.(" `Qwe/v"n)Q16b9j?B}BUEJGA2A!>IL} Y 8X׫ҜX]P$e# 0^6r;@9+.L|/pL} usJ"B^ؔʋʭ`/ISYϥԈwvīY|sӱ =z&Z$M)*S,25>~DGMOKFC<=/!jW} a5ݾPfÛ?dđ-ˁ̤J®ŒQH%'6;UB=źʪ='n5Q9>853522/.a,))",/-)#Xt 5( $$$s! B=*i29Q:q:>AV93%*w-ow8FH! 'X%?#S   C] su5^XbAt#n(Oa 1U6+ Cyϑ'}Û9ϒu@֥ڼͯ8$+@N=[m z%|ntmql9cY(R'F<636>?<8&%(&_p6Adoq _p&F%"'+.!~2xܑ P1D/NB^l@qc|^h%*}O6M ҢBްvf%=00X.M,S S7ڏK-Ol h%s%S%(?'%&])`-@-n'e&e!&9- C-FS! !U`  -S !?&*,:*)+)$$&E(&Jl USSLŕnVH˅ݯSu0;51*-1'7!Gc}5;ǁ(֘O5P+uru3Rb6QK+d^ )( 6\DZKGC;r6/+U,1-2-/P.k+D%]I MhF2AB C(%xd2 8 r H  H+ . 3( wM~Me5p6tTT^Lߍ>{PܵyЂ6݈iqMGZ  "gdր1䰒a߮ıq|-Ը¤NնLxk (6 =BMqS\X;^b,e.a_;\UMPJ/DA=7 6q73%/)j n8T,  q' o @~LaN - K1 l _h sمSٓ;܏30ԓ׋y!#jV 34#ʹVެ ^,!B&O& $^%bh{|k 9O$$(%Y V35SfoSiH!&K-.{*+B% Qg k W".8=:0P"g fd™¿nmʎAՕܸwwt1xH 6,"9JSWVRI@6>-% :7+xښ׸ҏiҜԛNؒgFԫLץےIyuXtҳ $sxv$*i~q-= w%S1V7AjJNR0OBIB@iCcҽ~ON͟ǯƮÙ6gBj$B)..0;COL[ZceaYKJ@&7.+'-(.n*&#ju6"&6258c3/$68;'Ad 'h)'WRn {!,j}s~{hS ?P lo3Fy n$^$*RsW_׽ZC׊ {"V3l;=?<8.6Qs6VggG5V# D\% v |:$ \ kKR5 ~+aY_"+-0/%|M#3 "naVNw6p8%** '$ '7c]LP$҄Ԉ؇  &&r!UN{ M%V&$D\ ||S|@ KOȒ[ΤYj.k $xX[52 >xq&"2*4>DvOvVPEI(ߖݽ՛69'KyV}.#'$P]WU7,P$c;$"ݩ˷8qf޴rH>5(  } (=256 9t6V3w5:=>6Yt#!duoԫW_3k <Y=&o/8=ZCJhONJCz;#5F3+2P306j7:<==6l.E%mqVo tA ݾ۪֟%JP8  lP/MA2a   l"$e"JsN F nL@ϗҍCr4!dsm&--k& ,o= 'Jq~o V9|ؔ߸جSlŰIW6SI]"-5+ "OKԙmŮjK~:B^9 | 87B4!mom*O:Qׄs֒ڊD5E( tHIb{NXMUL'|.452*X#U v! ="G$%y$Ij= ;N&ۥQl  t!O}ۊԲ֍سۖ܆ py@r  = _%g14=FG,EZA:5X2+&M4FٵN ܩS{5˟Ŗ g y+ o& 2 23 \`E?˼فO!))16542570853238::V;=-:n6 /)1 c{V #-y4882C+#W Zq<:'"iQ/&?q¼ɿŻ^lDA܏A|BS&'`%  RYE4"}}3 IN8SRKDHZFA=q8+2,*.49)<%;6 ."Y:@HɎ;j;v e4hJ W;trBNMϨz2Z= #; ~N/$(v.S@hPQhs_!#*2.7<<3E3*)?VP8ݶI$X 0U7!M# fQzǧ*m7~vM@ B&/2-0f/3c1[2H5^5P2/+ (v"|.*Ɇܱ|߸z=Ģԓ,4/I/--P+v$ozcy^^,%'ɬ:B٠zxu +A26&:50:) ,\?3 UX=C FM#(m ))269:e:|:l6S,$d1( YWdxe#O,dOژCf 6#$):.n.|02/, (9  uT8c%of3. ]"%x% 2ߗј>/|#:k 0r7o#\(k P;9rI6Ddޟi@l\A+2*N ?!3@JeRYK`620#R =[Oz׊ҽ͸ۨZ C8| 6n  i ,8H8?='l$Lr%,^12Y.3,*+0+++&!v"#$ |  = qŐׯ8"i7ŝԀ  |b%E-.B/0- +##0m8ſ8ė( ҝ'_$W#*f,,*+**,(+W: M0^ -'/W6< @GCGHMNIEDG@.:172561${D6KsAu Jtrd> E!196932?)#MRܥyЁI4 QS Xɠ3Qq \KP;FGj$-i7y6f0#5jqa4\zDY k B4ߥDg.O :V ~08 z$%!G| :UWkfhZڞڣsy  _#5'(E*($D!k  c(/i7=4ABBDFMWZ3XNQA8,nr֭;˳ N--Zۀm<:_\4 !*263@DFHKM|KD<0ZPE̷ʗIt+ `qFMah K5 9K@  fHlGٍ >4]&Q On{ !,01-m%(0~xe:TQ1%)0+-K/1G;AOHMuLGkCB<-~" yB iWH S bIXyڼxKji!."2q|f (341l/1>3.2a0-!3EC 2EPܠ>ݖ<>*́I~fѮh0ޅF/$.5699 > bX!"C% $]+13-"tJXRrѵtɼctrj!ӘLes FCH  x oS 8f Ђհ,* z1EU_IaXF.2 \&#)2=IDILG>2=) i)"Kk9^u9ĞR&9gxaրIoj\!/=GuMNKBL8*m!1Pat mUS~#!3!&*% ziVy1ހhvS>A5)6ތ٦}`,6BXHGkEl;.A"1Z8k2 ^%^*--*{%n$$%)&(#!4"P'v'%!7 H?,JY> 9k" c  &'-,D$  lPƷ %OAWyG2̋vČ-<>U*z1g/h)"j p\aAB IB!b }6P Gt~V(d - 5}9a5C1)N0@UnĶ */s+'4$#I slP٣E[$E.462E& h e_#!?MJǪ7_^\O)$4e)2i8 :6P/";:MG1 F 2 4AQflU͵kkh):HOOJ#>2U,}#I;E")a0P/*e$"{&+-.U,%.vj2:f eW_L!$br S RٷϤ9 *ʒ&B3"-3h>DFECTB;2Z(# 1 ^ = 4Grܢۺ.^%-%2:+BWF̎Ȥ%˳C܌?BKݢ۫Oyy#y&m$ n  = \ $[",11@.B*!*&*$ :Rep+F#.12,#f vmVحCޕb%Y?ds1-Tñ_w9+ʭ@zp&,23B/.*)!=>iYT$""1- @N Y!/054l/H$$JvņytU/ę޲+=uI%zQ܏>Ox:= #"9"!U.6^n-2S/0p)9"oZIN^! i%;IKBJDy2& 5>%Wl#* 'N(8Ft`5/-QA`l lknL:ʒ(طs80*>.^-(e oe) TI 7R,xRl;W"1"%# WsoM>K$c5BbJJEz<17(m -M'M"- K{ ( o߫A:SֺkļŽ:ln6f~l!-m79A>?8v0=)e"1 (Q *">ޒVf$S>wޜ% >R!H%"!T3 /$~R,0P_  $5U' H޳ޅV m2#$zD.W$0_=$GF>f3(r Wuh25> # YqhHS[:r S+l ` =v:n#&p)'%d%o_K-D,7Q964/!&mn _  c4"?ɸ ҍ֕ؒvΰΧC5nŁ.< ʟ̖?꾷sg/#Qh"k-3100f02F5708862*/*)." 0"q'/S1Y2Q3-, 0356C881+& a"X7 4FHGYmu\?ݾ+U0ڷ$e@n %l Sk0,OW݀ &2#'s$x3 NU?\e-@Z!l E.7=A>;:<:4,&$ #&#s IC + ( d  u3ܻ.tZJc/0p'VCׄtӲܦ"07i8A1%! cYwjI~I}#$%eVDx^ %(ɽNS*8kllߝh'_$'/#]$"!$&[+$/ 2C772-c#l NX\+۩pސ7ο񴻺Oa܈ ^"5"qg - ^3I,00-] -[P`@ &1i&p****&#"$H$$"A! h#S$} {&ܠY(׉]Ö:˳_dޮ1R;Y?߃߲4ԵH$D2=&@=4,$T!$()'%E!bHe$;3DW`aD]hSF\9@3362430',,,('i*X)'c#w^k֯2²Ž5Ҡժrv[CF  2|Y4`Z"X$_=2zڰ=zW~{#a,^*'#: > l icΰ?ͻ%ݧKV B&-3Y3764v/f*)(''')()1!<@>B=_6+ (MZuxcX wjCݫZQEP yи5[nb`; _h"6GR{UPH@881((Rp0 $A"ZOa%d|/h c K%),/1(5:94"&Okr -EмȠʀ¢2 xY'!"#G#!Bu }T3Gz*yEK +P"U&U( )%fT`!?$',2Y0+J"|JXԴxܶ40ôO'2 xnB49o4SŃ+nj4P pJ&.y61<830I1I7|:o<>EPMVb+iBhb\U7MEIA=;8 41s.)"3A feDZ:ŗ-|*ԘKzynC=l #6qK- %x"$\r&Hb`goZ*^γBНNMv6=/$,13t66|5/!-; i|{ْ;Z H| C %!J,4&;BOJNJD^0`o\ %,044|0&N#vN6D/ REW}LM_3Nɽ຦,3_KЧC֩2r ow b (h.,(J*r1:HSY`4ehhgWbU_EK6+'$R%B#%2$RMKUdBk$ V8_ %  VV N J"| s\ڏVjdֻmM؍ռ/~P( Z ('h#Z}wgxEta$,420$/C7386*782,$ ~+ڤ˜`7Pmi/ZܘI<"G'**&pI*Ch :ЬE" ڼ k !\18ЄSmɢˬΕԒՒ|A ^K ׶  K 9<0i-{f!.,` zLISTJINFOISFT>File created by GoldWave. GoldWave copyright (C) Chris Craigvocoder-1.3-src/examples/example1.wav0100664000175000017500000030005407542365700017527 0ustar emanuelemanuelRIFF$WAVEfmt "VDdataUw!  JnbKh$ >BB9M  pk z +B &}6: hFV kd +q.L6af F !%W RQCi L ntv ; R @:$P>dugQLI ;(Zz B5 '  =3VO`-~in@Z|~%o>BS a3L1 G6HZ&{+E,  UDu$d u; 1X!W. y$xG P.*o9yzEz]Y- d  6F~YD L |M c,zD % p '%iU;!' @s :e'K _rrs B  4 JK v} oR|"6LY c pG( ~H|K ~ I< EUx"  HiVhb  S;WrU> ; ;F 4/v U6d1sR^ a  z/ ZCL>4U 'f/-?@. v _w~ r S 2 5"!!bf&@:;9>]`  $6l zL {B%| B/\RHH8x[){4fzEd-,liq&~  ]S tTډ<$MMi[' "=/h <usy  `%y,+xD  vLd}]2 ;EP Fu?ZN+&K` Nik $'$lydN 3aIלPyWoc 5  9'- 0 &)<|\ ;K  q,Nnt 2!a*$.(|)&%E<c cDAYYuKR F- 'Vc #s@ v 6j J8SNG>]"1)!p3$"X+,")lOB' kS {x LV F GY X UzJ+oguIp$K@ _z. [BYxj K n Z_`cݥד'$fmu? ,#e~y"|;llI8; .+/F{_S Ob;?osJXzn+?ܚKV C] -rr!kO$'""u'/o&%!) _ f2X"  Gqx  ! ͦ mݺBxF}=vW !i+^-G''\wGY7 8Z q&&h.'Q#' ai. Dԯ߯K qPA _Hz\JqoUXp ;o E KW ,Nh| =`e;[ H+ ; '*Z/031G1,*%w Tm3 I n~[  W5Q=*'+(F+)F02D,4<+BHJDX?2%-#.s.,.)p#*/&% ]$Q##"_}47@J9QeJsOZ ;8 b4uGF .Ti  " W/7ҵ)+v5v1 C $>"&++'%i$ l A3 _ ?=B ! Dw޵#BzL?ѻCל$*8Nڄۃ?6f. o w&%7ӝƳ@͇ʩއs._D&+A,48|7s742)  A C>M@9εɷˏ׎Q9ٰ c !'4#v"(T!0< C7@7# @vlN '58/  ['7BA-7& XRbicm-CԎVhd_a`d  y@7/@`q4AV\ !  og >* =܄bGܘ5  %U#$ "Vh*_2;?EFKJLH!@2!!&,iQ}nN4 } [ ` E>W4!'"AD4>$J*'&&+4>;>@B8DpM?X,do.qf0WCq508>CD c7AQ-CRPs@( Zg lܓͱ2х- S3K4[&A{]Ms "kk1܃ s u Q \/ [G קŸ c$u-+*x"Y j{*!72>_GR_WS G4 b('Q|g-M & L|hݡ +='Y/*I.B'p.+a)/).7n:52037;EP]dknaM08h(W$-9B=GB\6! Af$e!߉EN9! #,563_/$G:O T +YMeT<ߓz} gE 1XtW3 ;u3vM5{̠D407Ӄѝɟu{" 9f%a6>:4-! Vl/S}$c*4'+ L&)"NA(( pzZ͊`ܖߵ y:maj7ތ\it*37!>CCnFGC9;-es  T@[A"&B$!!%K`y`p% 6uԆp;٬jٝbԃ٬]*k.(p#/N2 DO9Q2D$}g`I >K*S- E~SP?z&  #k:6bu7t6kupGV(: ?/ c Oc RWó #s, +]*f" jU'4`3 JWUDLG#kh8 z!1*2f30=,"gL$ b ܳۏۖLd R Pg1 )?Lj+:=XrȌ -a͸uϊܫIvk1l ! 17d50C+wJ'&Opt%"qZN #T?@$"%՚ٷzO$ӫٺa(eӯ>*о_&8 Pvt%?V L 8   Fq I`RZbJRk^ "!+J1c4<9<9p1,$D "1nC w[]> c[; @uM~S~XMpWjJ 4o y  n  pK3; ;^U:HG . PT4 pRB vu ~VY6J \Z 1  HpkM * M3} m@[Kt(qW: 3c ^ 1)9~ 15 8hic)Oi gYfCPM ~La*~VPQD& $F) W)S  9Pp " YO i`E$2 k@u +vM= P[ @_`F'-_.2Z v|( oV`n#R F 9 ] =Vv jBx BbG;Q818?SN)8=c+1d u   6w4 IJ?M" w Gv4IS dk'+a L+(fOE`#Lk: lI7)CF ,} ; uKEX-oE#DK #x o  , prUm F7U|E P 1i;x x jO`~']# C:v0y, LQt| !rM%VE<9" }ee w%lMO@I~h M[6y CXOR@T=\^ `3VU A < yw: >K WVwh= KmMKnnL#g Q h;W ~9]+> Y{#U = ^ ޓ sT P *DLK:*!d- r0 ' pn rwP DsJC  \}  R9 Ze 8!M1G G!TfS'] Aݛs`+/S K#S QR \|M%8 n|j;+ $ VZ  1&U51X& $K5QwRP%^@;!S& of$r=*eݘz@@hxsE-u:{VP( e- U / -=|H.]79nD^G~x]>dB> 4!z|=؈u ZAC|aZ OGU6T+oasU"| /q%բg:K P U(~`9+;H4A1qnN1uj}4O@Vh}"&kn%3** %g0liqD i { 0ۮ'}e *y=E ) s.{%W< <i}*E  O.}d+Co-  7 1 i-1&Dg3O *$f%YB-0 | )_Sd d[ 0z< ^w #,eX' 0_a"ן D8L>a"o,Y Me$U $&,u =(J&L&W\xvw=?t%RNIY)?y!XRD8Q%1C n 6T"&F1 `n, p oNzikF"& Fܼ YJ*WlZ W8 '<Q_&VM5I)N M9'p!/c  y#GxW HV,3'/N !!TNc2e3cN;x'\; \| O0D:$޹p 5(k x(}X'! ޗ Ga b  Di# .oT i1TFm"p)&T *D#&% #\f _ w 7m NF 'Vک =^Oc4(wX) a%qa.y$!wN00$ux )` Mӂ= 9+Aj }%%(-.܊'PlU.l KV!5 =24k%y) ~Xx[|(qHI0*lb} pp2B!K}G!G;"7ez a!:Z$[8B K 3^tZ!K~%JKy,k݃DGn8u| YB'U5JM#Ik1|  sipܥ}, aS& lh75o_ %3+>"c&i)E5x)a x"_*%II!vl$.:'"ؕxi f(K :}&L ps&C)h@ tL M"cH@!MC4 \ ibUC 2z& ! } 3  ' C! u(!o Yn %$zrb$ > !߄&3* Ce-' )bA#gb7pz4U"a4w`M <_x ]y N X[ E&9 #Rr5UKj:g $ ^D8Pb Ts/{K4z\m"a ?tL Tg gt-Wp9j  )ohW gcrO RNY"e A;_( ,s\dO'[r M' Uav t+ 6 z/e7Wd9f'n  +3)7tC IF W  n 2;_  mLMY+ ^  1cj[yO]Ns =K4b<UBAx13G !] _y !jfu16mFz} YT vWsD. :P}8- QG\ 3sD &1ti .W !< _o@>><sb*r]Q m$ Uu ~M$(5^?sW N}x ;!6_\V2]Msqrs]h"%x.C qStGYJ87S^ Z2Ty} &MK8*uV~/2S+a;Uj(gHTyY%(E2 3t# HhE*h`MiwggOX rVm%I^y&t`<CvlO+ uAKco2Vl]z'flbo1O5GK5( w)CGZzzMMx2cCn|x62|7Mb_"Z,@*?-!G4B)$4+!oR`e^o-K'^qTPM x\,8t*XBE"DE}jmv_m`~\+-nLT+;%$EH[?]Kx()w#maF%qdz6FXezYJ/MG)1ezX =@XVjMaG%5Li*eT" y]p\  }}UE2wwI38Sz4XJq6bk[  hr T g1/0m:3f\:)[gqz:!1  B   ?K#0\hfT[4N *mJwa2jCi${l]D4V;$~gh! CEK>3D6 ;IY + NN>8 ' 5 ,+ LIV\U9 !;.JDi- +E w^ydx \`gE% J2nl Xu 6pj_7Y€zLW + -g FRT ]s@ ! ]EnZ\"2 k c G/}E.5 VP[Z T W>cC U(C8 ^*I C@^ G Q>  b \ 2O @gr b rlH # ("XdoB S s(F D< z#4c3GK 1AC/ " I cTD  c$$72N.x [b #m7f  ` Lx /On"z\d`<l NCt)eR eT(8LbH߉޷0 h@0_M >Q #Df + GcwO=2= q2\2&P~@^~1 Z"E_%940Pr?c P K#I> `,I ?D 1'32  * t/T[%   f'SZ*K"AJY"#V&H~%(&*-#'%#!M,;VYeVi g 0I3 CTx&j3JBQ7$+9$2,x**7O8)9>CSDJKBoD8#i 6-s$'" Yp&|"k_ bR)7 MA I ^r1?o TC#9 ct>` Cd A Fq[8O1ڷӹ+ا͒]oKԏeX?x vT 1og>&G"&3 '34F^P_ 0aAH[+ [k?]ډE:ձbnΏʴ?,YނJe n]VnT rL߽kuˀܹ׍Е>QOU ]$*#u""g)o#@L4^7CZ D  g h xx WY Y 6Q15Iնڠ1O-RP@  CB&x02.+o < E >h-:gY'1?0,/$04c" rԦХڙ}t# I WNLn2Oc yW? ]/B $"t@x315B!j+.3345341,%{PbhrD} 9T+ac d`v%.4388K;:v8?FIkR8[]iUJ>;-))13{43, 5-XB91Uc tmS =/ 5H ~  Mm E3  k(d |1HBشЛ;P׸ q͎NwuN?[ f# Eyb"#.! !a`#xl $,g8 +O[w̵P^b rZ a  z8l0NߘDԸԠh`fr']! #". !!$"J 3B 5[u *I l S' 'Fi؄B{^x^4D &"l0P8_4)gD5W! ( y < z^f!04y/w"Qy}c 1e֣\E?jm&FC=4 jz;h$[ 2Usxn _:a A!A8o 0'*-*''T&%# dnv# H^~<  6!g\Hs"!Pg _ b&.52.)"h)14 ANSJ}9*el4 "*+!Ax]C~**7V 294_%t O>BK=ԯ]_w:[  Pߞ!,_ S&'?'& v%?G _ $|ҍӧ!%)_t"157/).'+%%%"   3S<ߙ Y: CGF.% L AD)'C|qm,8B>8/g%Z+7GeY_UD.&1~:;.5U*ve 1IeT[#GR׵U֗ڜ՘љV,PDkXh>WGPpx N? $:&L$)Kzs!"#_SSdRBSЎw8(OhBw- mߤsԿף\D\2Na"i r 8!91uaD+m3c?3}O (&OوJT-`$K6  ? s <-4/$ C#0 -P  %<&| (Q.* (CoK JaݮU| usAA 1pr< 8 {')9N3to# x+| + E% (*,&!0 "7;|| y,=#@AK5  L Zh # *O\n*7F - Y"@+F30v-P(!%-6BlF@5(fR">'y+2+ [>_ii(:vq{@ jE- ^ "b?\rbfh U v{,65 , ,2 9!kWZޖ5&,Gڟb\eGuV4rFJ! Y`9iz51WF5 Cf,ZH\lWݯڞ޷ں܆}1(r7s L{*ޝr߈;J{lFx8&X9 oGl }( ;o  GECE;9a  8P[ #W K"W pk "W o }n 8j='LT7~}_ Oc)Hq.qt#xmi c s/5 s%G pb;$qC   Y [8r\ "R!|Wv]Hv s< F_ d? $#L"<"v!"&*%0y1-)"?6+5f C5r;i[Zq N` cz:%X7ipK+A1 7 Qfvw?~!o I/Gvs&R$  ' DO) r%V 8qm-/ Rl L V > ifdhd\4^Dlx+COiN{tl1{i~ ZKI ! B EN ~ L;*MqEP_DP.(#=|p>z J4jl'b'g m I n U2uln?VB2>P<!nOHT;]l4A&0EXtH,  R&98vC5}ze n J?M fbRa~Ld,#+.\HuaxQuRl< @ {/V7]!""!7V;J5r_IH?FV>B ,4 I  8)U^1 U@9lwgAp|cQ,ny#c}gTjS6"eT{.K9KS f -"] 1 T[<o W d ${\Hu[|h2Xr1\}b6$nXEn&5 j^8< Lbnysj}'* U~GWy"2W}f% A2W V2o!_ W mY \'"-M`]?&IPur-_vh{ R #>;12fxI3 ^N6  S%_Z<1OETN|wXA<jYT33>_ [t.9Y}3?( !mQo`XMk" Y u  oHJQX!G)-MveN_:++tm{"ee F?!7! Jd$E/bS7 2 Tw[ # x3? J; 9o?r+6c.~d e7~t7uK?d8\*!}`}`~J6t@.w~!qRS;`T-vU"hY`  =  >'!& bX!zN,nGe #MG[+oa mnR@9cx8\ 6z bWfirX W  }B28B52?QN`,=~I90Byl@;yF/v [IvEpqrw@   & %$R w ^DVcC%~!L   O  Sp|f!4?7WiYk5Y'=shDw1+YFF $Ap7U  }} K/ y:a i I <Bs^L?ozCX0cbnZc!=n OA? fvu0 Om;~V7oE=]j4)cU%oR$ 1 `2O|N z/ K \  $] nB()-]&GM   /ELI$E%)+*)z%lu5hR~pLCp r e )"sw~~#&%+*((.1\.4H78:x.th {R9-fk"M$kB'S0e^ (;C$(cj 3 i m%Rb,'Ќc:ow>љ%IJZY Wl:#Y&%=! DBNn u [zsZ 'w/ڈՐԱ-[xwӍ=ځݻٰߗth*buN5)?KslO-t};ݹح(oЫ,ΐkG a!()24(33.1,!$jSA bg.C Ez`]h = *!g^8ܳRsr/qG?6cVr 5L&&i'(B/1E1,W+f$<u( y 9/x )"]$I)(+,($J \ <Bw.Iۏ(քzWo gI !T/'0VX4^y\Rywgsqsvtf ]t8| j !$9,"/77%>5>@Bp?<6w.# M Kގ3])!7)I%Z xN j 5 S!f&-X5`;=DFN8TwS [] _a cE_c^XPJJB;6,$#)>' ?@u % F"V'&o%$  A'xx*Ufbg[h W=7 <c4N !  /w is50ǯbC˦;W( T0!&-%w- 10+ (h'c"ro  *wI'&l"\<[eڎl̚J XUv@+ݯlEldrD}nШ࿡^^ڦa&Q.,09<:;y63P+g ^>*6'P !akBw ao |\,>~gס֒LۉG07 O.#$9,M,-X.H69832!*v$m M ""B&(-W-;12.*x% @ v%}ݳ҉Ч=CZ@ }, dE!eVafDmQqy| 9H:Iq]$l  #!$.-/:F9@@TDUFC-@m9(1%?B nDC۪ه5] iKsIV( o@Zvb"'-M6;"H;iP2H/ Zd \ E s =e!s(ͰSdił)%GY* { sn&!|'+O+&D#)#KBr d n ,7 <RnucC+f)(2ܭOOY-Ei`χJP yڭׯ؀iCP$@ep?/=:]t\r>CB0 $%W-/8..*(!W$ y):n*Yjn6 |ZR[c.v߁ڈ|~YF`, ' ]? | G!`')N)%$$ o  P, 3 6, "$$!E n+@;0.h'` q %_,8qKf,} G  G EUj b |-Sipt ZK i#N#(')*8)'"C0JH43f++,4R2 | 8 X}[  " #'V(4-0/46h7=9<:;762-)*&<" 5Q(L~!N ʼnfuf-i 193'E5(E*m9N = ~~(JaTPݞK١^ޝ$ XO,;J;@) PMZtxR ,% $ , $8a7fyt[ )u/98RhV1Fm$*9w AVa &  ?<[`i h  av!!{LQX_S RO%gvlgNbl7`*a S-8W/  !;",##L"!{P& "t. $Z"cz)"U2 ˕3 3 ab-66sCf;c)yg^Q8V9Dt>CaLB*Pf[cs/;s;Lm K zЄOXT - s?I^  * PV `"J'#AC,KG)+I-bB/h^ h% " $ =GW[9u;"mm\39\ (8H%} W &d}%VR +"?$ N@:(p |*Bj:(6eG%g}DL/&|4"R$+2{0  T  hKC.;'mtis ljVBH <"NNJt#lI+qsNNE v 8 ]vZ "#d&'()*)#({%F"Mw%zw \y|Z a q'C.{Q?uq2cn.8 ~oX& H"2V hb"o0]ܬ?UߘIE <R!~<ZI H>D_ - v'c P R2]de|2zݡ@= ܟ-fq=~v['jc%P!0WݑY6 ^ z gQ H<s 3 6R U iJ"8=X<f ,E "#   $ X  g 6fXimu 2)%.^b7{Wm+g#1 e w sf}h 1#h  .CSvj ;Va].1oz RD!$**..0!1/o,'! S#nXDe<0/ h % 4 SW"(~-/46l<@AF?I`J[L^MJID%>9 9S3D.*"l9 MmDSZ^M)H^ 06gn*0=ylHXI + Aa 4?@4djڹ԰H ŧ]"˧z`Sr KX ')(j$S @ pVRn j VFQ w R)ۭAղOҮM֍or7ҩiIv@Yߒ h~,sH5CܔH~ɶFӅfvA >%t-28;*;95/7'f %IQNZl  gIUs OI5 fV տ=؄-+%d !$({))$,.2n6?723,\"X }}t %j$'*+,.-.-)O$8F }XI7F@C j`  ~nj>a+x`Q^  s aw<KKk4imǿT&U,25^:=@CyD B0ACdFaIJM&O?PRIUUUQK$GFC?; 27''<6\}b~^$"e*51`320) ,54b+BB+F]~'s* L2 sA   e`\|vHu~DƾVѽI o>K2Lv"$%*.6}95,#:?809 `f^p0m%&"TZzR-r.}ρФΕ,P,ߝԠת֥ɢ֧ͦ[l{E3CijLxL "5BKTXWSJ@1c 9 ROdA ~$%~ XR /C ?GnqEmy͟Ҽ܋l(G-}2I225>DEv?50& H[ *3*8<<=:V:7]0&H ]@lZF+ۇj:ٹ,8d0 S 0jcF-@&$ 6   }i 7 a ~ d}"l)3w6=JAGMO'O`It??1f"v|O=f9}T$R wlK ) Mg}!u"!#%`*2;9V-b!  fh&,,e&U\@T@ߩ|&]΂.*L|C8'Ѵ%Ţ{mq=WW4f w $T._¤Ŧ #h:JbTJ_.c`\CQD2}| R b\@a C$**#m* X+*,X LB]ף!@l/w_19B'+1G004=aDE>3". $n\5 !r-7E<>?>s>:z9 6B-!-?xZ%Q20 8hYr60F@=9R8y===s>;2%y &7֣,ݐ&`K Fvpwa l CCU HjWۅ{ǽ4B2[~ݽlB#%$*,572&2Z1i ~;#=**" ;"3 i7܌ѸIK̏ђؼK4W{T9kپ+H{ǾΙdhR?/{ 62㱸j۶z5DL7X[:YzUI>^+k{>EOMӎݡx I"(|(d @v 3) / A  EQX+aݨbטev #$=*7((*x5;=5- ]R}RUTsZ'C13g657c3T30e')[4'SLlba+  #NsKIsfwH(Dx[Zkm 3 {  - H( Fc 8Xjo  e*&(f+3;>@;3N& ׎_`՞^SEX$$A"s5 L8 k  9 8E%,h/Q*+% (B( &%%%*/.1D.)P(10H128+^%^ P!J:  )3 554r,I{جݹݚt3h1 `  Tw' - ;la=~X kL;rD?Ќtl-5M"x"-0S, ]<ߪ)} ?`$$n&P  7;޾ 6Ҡdb 9}~o\ݱ/2oZba 6 k*ձ+CKӔo ).);AALPNK@5#GoVi՛ߑ$#O) ,k'  ,UISc-  Zk#v! "W,a24".&} 7=,9 '*..0a-,) E1 =-WD1=~q Q\1m?c*? &)T#6 q AJK5  ,c7 h#k"*F3783M+D~_1Ҋ<խ}vd  vp#7$ ! cg4vl9C $ X lje -L!A''!Tbhd#$$'%! 6''(* &8!MtDE8Wa!2%[[%{-.+/-z'HBD %R,`J UP12 D NO 0Z"b 6 *ЙO:pզgv {Ugf{K',*u!Oi9 xbM% X9Z+[_!2ߺhTէ:ܚ}(s<>IdΰJ?,G)_h+<f K+5ִ҄Lk.-ЊWK(J44;DBJkJG0>f2!mhE !vN S q= B[K:)  0G ~!. Z)041)P5|( , %)-)/1N0("'$[J}R>}PTzeYJ R/Byl e`3KJ  Q pnQ S 2T. )Ki > g(2,=DB@8|+R w3D u$(,*"t #&+-.231.(#."-&(/+`-+&Gp"pcdW$N>&Z,v-,$*=$h~EC,"&Ul2!wY P5a!Y \ #n87?hˉx"PԮ3[: WX"+-V( s *0hG5KLA J  J`4%<T >W ڼ'۔ݖZ4* E&Mݐy>3+iZW TEDh(ϋʀ0%ֽ J!.*/c8t>I@>7.E> F3w F2Rh j)وڒXM^O_~Q $,02n1** NN K4MwV$k*0\2",7!/$ .[?snaw| ;JD698v  ^h`m` C N tYOQi]+kP  +'B1:b>F;1#w_;Q__ Qe Yp  y> "&P(%N]&&*1\5r7(:6:50(!J!#W%'&#i"P!%NMK_T"!2 B@rCJ@(&z;H7E;  W>)U " BX$6#IݴէӼ7g;_C{! 0S  EH":&#$P vMv!t kw,r; 8L1 t>`^ n'Ay.;B&RZ7xb2vW2t/)ݥ2QoL1M$(T*n*& ;R(Q7S qL L[8Z ( Ufy y5ROa U[ $n$ B}#XZ(R #* O#%|"{BPx&d#18mbO"2 g ~ s }m$wu:VX -3+= j MdM!ct)K6wL.<8=fZWYZKKPsRwY2 ) 7U]+..o  E a b 7&H^H@ I^#`\(eyYD:1uwSs  3ktl pfDLU!#$%+&"&!A% %D{Q P5^Bd | > t{%=v=:p<C!Nrb*i]++:cX"mDv!Naw= A  6Y I@ T ]I; AE9{#YI"#.*9$)9?A[x0eP7Vz48e<"kdq Ci d  ^ qD_6jl v&c+B`t1%{Gz - u _  L( 1 & 0#r8|ntbVUP,r"X]PSO7qvY]s`JUFmIe^td  P  y)x h =yZ'WbIF/ 5X .  LkS:7!?W[ U [r v pAlk) P&grn .0}z;J vd[2"w8^&3D1?\ ]3]Wf  ; 6 ^bsvmQ  ZWvtt7/rv=Ft_-o2&eyn2 _ 9 `7 rBwMaE<Vx8)V7![f2X{v~'' 5 mX zD%O'F @ { !xv =&v_7Wjs'J0*V`#qt{xwGjjga\GLtkmipP5e %  2> e9g`<2(NUEx2p21-9k&,:ha q 5g f+;Sr f s{l:_<8k,} d7:I)h/0B9%F"77#JXMZu-U*zN[AY[G0_M+ > 0! LdD+u;  o*2 [^wx'C4nnFhFUM)|CI%d?4l<8 o B ]) 6<!K c)UAK!v]o_A6G% 7 B ntX&F = W b - )gxJ,uMB'lPd !UYbE4d9@f qH%@W6I S_JT5#9V b1 vUm&kv\3g|wMo^[R %"n"CQ   T:q6X 1 v[YqPK|d1%H'X1jf3vJ_"Yt ]iXkNoF0~^  X ! V . FRZY<^* zaPZrh)!lLCgzoH3`2{;|@+VO 5Zr,9Ml 7 " R  Ce_PG]~Y[,KGAc+8!PTrEZaD S \!vPY~5mN:  eAA[mRe|]G'}y!{+LgBM&6r3}rguVTM];\#U  0  D u]^4> <`,g&v2:)E.2S<1jPy y }8PQ (  UATe6?EHPk{\X>pT/~47eP6ai831*]1eU"9(30@>^*%cJI[1GlP^c*eM(/n+W9NYrI6^[FM>2"BYz#G9{__ kad>@, j^)A X E  &,d~\$^QW~.= ;+U L {[ZW"Jx;H` Z;Cv;)B;~VcOnH31qM?J \-Du+n?|Z>GqA\Poe / _  O  =%!-j9G1Y.BS QNb$h ] ]  4< o yao}!{q, ~E.M>Q1&jOX/X)o]*8a/k$7y>(29$$]To8'JRjd:C#>g,="ff7%][rsrR0Jo"HOZN/{xdrDJG ^M,8J/IEKO5s2Eb:y=N8nqmB=@Kg>08[+CJYhexcq H  1  AIpH).]QP)qA[1N/ju [ }  0 sr4x ! \!I =A6'*2<#/aN2 5e7d-:pVtwXd).#R|&S@@'p! 7XP=%\|?7Y]l>eo'S5`c=]Q9[uTkE jV`&) %#91]7bkZJ*l9t*77 BdRD/3P|N4Azu1C*|Ts/2@zZ}7Ig lh,/WD:%>/j/al b9#Fp^}/a,FVt,j/+qy"D,MiGa;0e3r-*s?*r ~}a`>[z$  ! E ;   D4(# #*-T2Y:(#(v8^\ty` +h::Tlo4W9?/d{~4a 0KEki#2X+<o+Q" f`Fw_Fz1{_K*H 'Zi}/]Fw=0; \95M6 \sQ-;=[:~IDsT/J!`2YH=xj\xqU.$BZ@=Q}j3@A1|Cp)bxiWu0`vm=`e~"?vIkCt0b\x$a 1Zm`_N,6kA{,u9  .ere_xV3#0>CVe?+7- n]SOIBFmB=Q~PWwZcQ4X>0H*\=A%yPM)vkF0 s_h[NWNkv|2Ok*+Th}:s 7qH zou6,zY-> IkC@/ [= q]o mrd% O1k "B1pC;u}k|wb,:_U1lC$? h{Jzj}cFy%zsG/e'?|/5cNAih &$F4@9G9.(9C"%rbSz4`LJ Xn~F"Tn /_h(#m&Esq:*BOg_/\OYM "7nz _=yK!7d:%*yso2au?w]v9rz?N_30(&?Dd G -085;HH@ 9 5 0G 8 T<IPB# 2JPF .-M,Q5<:' &F_V1R$ xIqrk[-J(E$ -&"L*AB+0$"=-,/@H.7.ZO; `Wfj<G-0"W80//6! /8M{FEXPUk~#(W5tR8Pd\rd!) /:_:Mr?",$  !9%c)S- ^aI$ $)*OYS++"'K+S2>4* #!#GiN8P'3=A" zhm")R~ y}+:*v L{/G[oHHA:>[%tbuv+m[*1a)3tn w0xDu-+.CRU |IBKG' o. 5BvtNp"7H}8SOS3q'avxO=f~a!/(,S^xdLE9!~UVUe5sccdd"M  R,4m/mYpz>{nfl9d62j'7 SDE:77.=pS qUj^1`OH? .] |qh8f 3nWMa)&tJ\@,x9D Rr. ,f>G ^cLR w/v~VX&1 ws4$s~ a3. .& 2 ^6 Y 5 :vzFIW} z9|Kd_X fUw@rW  V: Zpɞ,|h`,j.-b( ? 5PE{!x4 = P?D  @,$ ~.   A  $9 ;$%E"y E Q/)&s OM 3i( |< ,[ ,\I>` 0+ 33'` <1bicok7 k c F.^6 I 8 Q2Vz ;  Pr #nxA& ,;  2n# ApAoo !c 4QB"OX - I9 Tl\Mr =^v]=#rg. 34( j93|-4S rB΄e'=j"#9@1 ]E0j ;  w : e9 =r IJ+y Z*(8~d 5;X m yal RD_[?2 c?Ow G'<  nE UR#d yeqX  i>T?1jy!J(TyMjZ)/tfZf nW <z =U. qT B` (L|>k7\u\6 .V1 <0o!{J  ad> [I 5{9u tv| 1  AM;OgE$A \tP @ N)/5Nl2 k`,u<!?c;r X   MlK L k9f UW_&2 pXT IA q{o <azJx p p&<@1 [;T[)~ - W 7[ n ) O ji 6  ~: Gam  `3  vB@5 O bO)&Dx' cMxB l . I* t vr%  >osyA}) ?P3R i% BI &GV(1 39jf 9K"[TMA% L v}, L} Zthz n-O7)> *1(4 ? ( /r _ *v7<,g ,DB L .  . 'mdT, j r-  lE <z nu:  (i>sqq 'qHpc&=GL 9U886O @2 2Ds's MZ  K1" vq/[6@0 KM@ & <{T7dv03 Sa #G > )  1 A "5+CA~nZRQps$< Or8 XJqT7X6 e9)'  $ 7ks`\l~glO[Z BxYo azbmUP B L{a -& V 1S?`4 * H4"jM9'GE7SV%|F: = 2 oG >iTjN _ /9?m I^jRIdPOWw+1 < R E@R oZN 5[ Fw  % >#Mk7X,:!/ R~hOgSEJX: Pk- s|bW0Z4; 1   E aj  G!LDBR}Ql VNAm&[  dVn'> ! # rei"F"%' B =n5 4O%v#k$#3C  8 (+,.I#4HKFZ fR']/jH% TH  L eg7 B wG   n R nbHQ]W}BUh}.*<85U q.Bx&bx2 JZ Cc^ X[?hyz I#{ r.lc2o 2SdX|lB]3  E W7X t i  1 sx> =_iKe{umi]P#* _zoj 06} [ T O 4lG(}w  sH0 xJ=G5~ wV:%}\ X2hkJ|zR"'+/#0*%a~ AP@Ll =`0 c SB XnFt=^BgP9 (3CZP K XF;K6 :c"8>B62HS>S?'/ Vx [AQ$up) D  # u]+ eB %;&kFIU:i YC3?`pB'9FZt, 1utY2nk ?[@ n)yFO# =oc$ p ; 8s=x$ S%Qf |7]  WQ,8C8*  _z Z`\ NNWx&7V;p^toxt"X{ QP_/!6cF N (  KG )}YNFCd  K:CpD ZSD];bCjLS% kX8 $pq#)-22Q-&@rT6 8hv2D`.V~ 5 ;B#8}h n;<`h_ ) T]B8,!x>|t * p [y<lW >~ZA h" I. +C  }0Olvgq) {t'qI)A9zL%!w7Y/*/ `R x Qp2.-i NmBz4TMhS +Y e o 4 gfIt'hGjs@T^M V 1}|0 3 {  d , Y @ B8-q*G8o ^  43d,AUbV2W  @_ ? VTCu})UCu/    cB545=z> j i VOEbJ#(,S0 1:,&//;V/ vbEpD4'j  6A !Y[zXkYf\O=c_ E Z & asWGKv-ScdjU)NZz+m V {m!Hz) \IV& q 38d"G ` [#h. S(Q_91|CE;==4Lm-&<2d{aB W?Br]T sV`(z%R  T-WcgC@&u< YVNT (V O Lh TgF LrCg`a"ETn!G`!G w*uK'&c=5TW$ -!'7* }V 6- '{4_ Bt F cL P20y!G OLw;^m[qM7 hs  PY^Wi$Y #%#)*%]"P- L /&? l/luDQ  d{l /0u@=yc{uj,p }AdD#h)g)G`W8 s4<m?# G V= 3z1 N|y"S yzQ ^  v 9_ j"f "f8D}([J~*&G{K>5Xlg8Am.Af[6P3~xlF.23w Xj]!:H Ag.3_ #2o?ce 5!ݣ hYU5 s* 4  E}\S\B_r?Kn{WCqt AzN  Ub^) + Pr/ t A A &)'@>% mO!7${~M# .2t3  E*P U "#H&X'#!=);,n J"ZQ~z}M!) J =)< 9?jdl,m,jGI&1>3PxF!yZNBY/O?k4!3LfJ3A [: T  K  p&w | $meu]gjSn   aH  __}ZJqQ6QSMkvB[dWaf 4M= H@78&0@| $ pmpGQspq 7$ L etIk+<?u~9 l -  O)I !l vOv M$p*_rlku_OGS6 :f2W w!fNJdhT  " sM:  w^a% WPSVe . i >PZ|C"# 2  &,|EED^e8tT wdz ,ej4[fmnp~6 Mcj63;r\!@egLj'(h93V[`g E . P *YMo6 M 9b E#ml:1tQ^nm`)w_GLsdc=DfQL%q?$ 1h 5RmGS(` nTo4yV|Zf\i9nVL 9 B͏ho  eY6f_ D  s ki f ZP F ?qM 1II#yJwX%jOp^jt(Ge\J*o Ux  jdSH ! .dbM0hEzLNBQG 3z`xIgSw OkM$N"N 0i `OP  E9f D  d E7 ,3&Yj%2":My<( 6z;e9SoC:^\]\q   Wwh Q F(lha h~sI w5B;-9!"M+4Cq5{UxJkzJmG"w{kg!| d-^b zu$Z v\;W/?(TQS|4\uo,s4&c ]Z 3 O)r(#f 6  a  @hU _*6:kK 25M=Rt_ t Uh]SWJjPFX2?!baoN P Mi re\18k*K?xu4HW b y^J]o:'`g Nc5aUQ@d 0;777X w r,G_Z-IB#A,xr=d)Idg2xm/~P~UY8kU:b;f5k ! %epA\pLTRi X^\[zxGe]su2^0'W} sXNx}s60uiZG jQ l E ntkm&z]FDr7'4b @H*qx/}U=    P n Lym[1 < m  8i 1!O'AXd}&rZtXXEtE' NLj)(-G !oa% 3a_ $>ad  N q\S7\{ IeE= "mH!B.S|F\[^g1 o$-eid+) L 8K$8I405 e #YN4.DRN3S~<o_xukKI 6 grnVkupa95jKm V= A n x\P,O:~ yF4CwD!wWq.S0fsqk^(_[r(C8Jy (Czo   sj4.t\[&pX,bguSDpJ  m zd`[ w9sA?cs9?+U # T x ZAL7j_?XIeF+RfeO0IOO"`?->c,|aS@%%s BO1b d Wpf m Q`H =.&MCsdi'!'z - ,'G*D)ua Q wV|_7ZmW+163| s  `|hq -> n L1$\u;^~+Z"3 %ae*SeD*3%(  {8 j CG0n%Az8 s c } Nc=S(d/G^)Ej,BFk&}\YoEO9uj!?}"%{)`H6RT=[ >" o  Qy>|?I:nrN$"h!K(>mV &SbK  B=  9vTiE;_W{Xin@PAl=I"Ae_U ElIYt e5K^B~d;o46adpE=6~x_djs$}Y^Z e 7-|w=xWBd>UFB6oN{gB]p$&HJO IgWnIbai N b SW'<.hAhx13'zckp%V  x=qOhiE0VfQ2#{yz~i lHpeP /l]t2Dx#G2&0$B8tl D   P&cG!OO/4j$w/kAXjm?B;6\Gi ~ c g :s  7 ] '?[sn"ED W]iB0?DSlqZ$P @87`7mZP`d*t?ogHlv &WSwT$Q2 n"==Znc'Ni/0=J6y"#$MTkX<7,6hL?3h1hQtqO@NE7'$V  c9KVAR_{E|4l6YNMe' dFf&st'HT FbJW{uq L"~P?2&I ia9]^1T[nr6!G(~suUR.r%p6us+:4,.?0@!%zYTeNLX9lOsU2jN}wbg4B c%X=|Bqcoc(] A~Rx@'i/m~Sp_=N>["hm|]6sxw,7;6xne/!JW!$ZORjsB&HIeF|$N#E!tT3K3o2-`nYOd%kA3}&P?n|0oOq:0ZA (9s]!\|8BKc&"%L9io&4x)JdA5"6<G){r9k$w\nNCWK|jYG]zU RFf2f^v{5xbx8MDC2~!Wz`]! H i;tqITD2w >J.y+Ads .iabXjc;{75EY:)<5G*JY`r9gXios oxruP3.26@K|,DkI`F kYz`Q< )G-7)R :-PyxNh2!5zfok;oi%Qa U%=PWK"=Fl:.86H}%V~njuYVk<3l14qDrW>qJ#.oF'#j:6Zn}w7,?!,)kTP5McOOfneb AT. jj2f#\d57.pRkZapnOya2Yl[ BZ_DE/rHM|:djc![Xy%f*v/>Fp1`GHeO7|cNRzt./?A0Wzcc@%L&oE'rX\?Di!]jYxvKk`9.`zlX{2 <[;m;G.ZyY=3t, lZBZ6~S[OFxI1IG\"c!/1[|hO(]nU&k 5pW~EpH"@]tU%TN-$P &jCzqQQ]Gv`'oFwYcw+F>wd^\Z P<X/`G>wKQ<<iQ7]|r]Jg;M6jooYpL2w\=/*0 D!_%wi b[ d LT9-EdouGG<X/?N\:0S%ZF=wRiby1,"p^' yo) O@eqm9gmC-69> 1#vh Mv#~l\L D}B 4sG7)h&p2%4bNEQ*tMn:9F57iN0:vIOQ o@`hL ),BZN F,U8jO@Ru/UU{w9G9Sq/hARo8wj:?~6RN15FF~(ygt7Rw zryL1E5~cM$c Si"\XRCS*flT. RD 9ioj %2ST/ao8+/!lB"8Zvw'iY"o?z #_Qk A)|gv/WyKAPFd(>tylJLA,sVa[@Z;*B#c'. 7`P.!P[Dkb 6\nh]FIqNvsfF7 W8Og6`f;,TH_r sk9W'KUl?9B_Q gw7xj" \a= jkHiQr1BcNaXR#CzO ` dLI EsZ&%a'N+fSI\l_zxWyq/*"M7G|UCP$VI3{rZ& Rjh%a3ab-A[/gEf"O1JGsCttCQG; 2lV:6tgi8F&cy0csBx~OsYZ|BIN^-6X }AnT4T'w^?*AaM=5c_GU' 9CGz-G4Yh|^]W jVzTI#FJrgJtL`fyuhE6LC=XFjs*X@A%+$Nx1 YB|#PXM6%spzZYGa [rpA^A'(*M?G,a^(m},6l~[2BVgg7TsuEk( -.PHH0-9yZ  Bf շ "QeѫJ2  v[ATk`(a Z5/t{rWR;-CF>5i1!b$%+J0.U4Qu Od6 W W]q; d ym g/2 ,{ > p)67h/G ]}~~iykJ[_~X-I >A+JtW(@ 7 UL 3Tqy 8 O" CPHvvhjc)_ 4 ] J X1ygtV k9 ^xc \##@E8 ;;QQ3zl 9 S:b"}I0l *[ ; _;z8ycC( R n  } V\  Jh^gw, l\ezGc_5 0Cw'hr ! {U^/,#R(*..(% }uwdU o^RxmC  t2EYboqQwcb .r6sjb+rL<+6Cw,b+Q2qUBk o|Qq R4  \A5 g v ~ R f,n"yw 4:;d'2_iI]g/;}CstN>6qs jR [^jC b + s9 A9p5m^WY=yI[ C4'?C= eT &%zwHvy)Y\vKJwp!?h%("Uvb2,%HTb=:eP` T+n&8oG $  f* $ X1 \T=]9qM!RnPrzZe'G%?i|If'QOG dO@ D`P ` fxlM O TefI w  J, T+;&86"P#?!}zpfP  cSYxM7em^ \-pf&_Wd>d /]eV //  c *3r: 2 2 L[]}2Q5ZRf7>@9T_yLz;>F%Heu\lO +_+(hT:^q b o RA zlnz<M PNJN>;k ^ s Cy@;0x  v{* :x]]mMofO7|a^Pyt%aGsF @<.23$/!!Q0p v+Lx@ ZJ^ + 7$4CZWaV pWW`UzY< _C 9V!MO pQX#&H'%&!cEtyy(upr #b\ :HqZq%"|]07s['DU N6)NU@SHC|f{qB{qBi ? WA ^sc ^{| K c | #/yl{M:Vo(@[L:YzeYz?2  K: uQb {Mp7Z' %  ZB\lm Y$f~ & Z¾ m %@AR| p  w#p& K&KFbUssX"rQ|=gjq3?%q h vSF8+IC )-Ds SS : `m3=cbNX& l{)N@ar *#'O*)8%B0.te[[< }@@J\g t /&okXY *Q[?`_Z&F\VY #d6[)f6_ bfK T%%: p`, v w%M}" t _ ( f$G5-wMKG%7t#Mmwl8BUCV'7r n e Ea.   # c Z EW}27 KkJ5*d 8 : [cv C zQ J M?(i`DDn %!x41_re ]c15SKV | o  |uSA9E\ "`4 I V uH}7LL UP^70]  ,UP# K駃IU/ $;(++f(#{AT$o%='>+0 fI8Ub K U ) `7\${!}o:i5ir< h&o@^B"T^jR$ii 9/>4E< bXS|1 c sb9&c  W, = \ 94 F8$mMeII-yiH F9^W?hV&N(P5 `_=6 h 5 P Pmd+\G U6/8=)d`8o|=i:]|-ZF> }   fM B kHg  '  nY ,XX0)6*UaDKr-L[^-M=L Cg\^- c E`pubD>u @  '] `&  ^C?2"yb5WP6WrO  3t + = {X MxBj| k]C ;=sz_`^V_  = + SO!Qayh[3R(Zg=R`NuHjpntQ.>$=t8|=qzjQ1PJ &A [J% C 3 ]|1S?.I , J  & z0T @dougoJ!:#S T  q VbGIU66?#-NHW}/wFi ) t |>+1WY$ P ZgBf& / @Kv %OZ nJj@U/Y^[xU7D-?T6tP/&rZ M[z%aFf6f[  -\ P B+B3 2 2Xk)<,:;MH! >v? $ q1] 8 ^-6owX4 ~/`ra^ ^"*(`@k__NiT, RX#S L#7s@o4iGK|o4d!7 aF z J )H=: ?  $()Q1nNFIJi<_OjDDR(E]2F!>mh>; H " P p Sy{VA.PW#V^aZG##_;NOlG^ C39 +1lV `   .3NG>y%\5%00,X-HiF&3/G]vH1C|US8q  =  % > L \Irwd(jvZ~)LE8w(aWQ ( R>>=S[  # BM([%m/A q~!(M<)`} $VAzMszeZDKG>4&> !v`Y-[`e~KK1q2bJ`Vt6)qAdv8|J4tb=D34pkx:z[I']{@BshOSsY |l,Vk}7E5)u2#9Ak[3,s@$ m s j >iD!4T]K-] W-g<~d{w<0C :(eChG,ej3&#FP!I\MI1N, f3^  s ) J )'CHa3C|lDQu[%XN0e4xNGUv  A6 |kK *  /})^ VHg}9[<'omo_(B?7 tn 2?kx ]L?4al;4d?)4tq;#M,^gC2Jyv@~VQMW1&;%-Ylk!E`) FY{+$PC pFbl{[ @LX 7JY}!\nXyt\= P98H(wtL{k+F"NCI!E01)0/{ad?S\. Wf'Oloz]R1>3d> C3Q=j6DH|#_k_d1xT2"A] i6 +TH)5=V5]M gx nujJz~_Q_A *>$+* m  ^ = H] A  Q:,*gviHEu$wbMR'.<5y^yYhwPrcW!2EX16,vo q&@(_W myM@ELen-A4[m]W_GH+|:1rj<2~jJ92xY<Uk nv?jS v iEU5vFGGAKz}A5:HtC ('z{O+(-HKVq~rdp(Sa~ZKha9Bu&"bD`b%(F#9P . j xG* %vK^|u2_V;I)h8LV~il]E}6|e}MH S  ( :cNAp*Tij/OumbUrkFp(-pgycL^R%^P>p_l.R18~ kBc#`vPB[]UZY,k0k5BT h}{k|t a{A/:-*Dr-J.z0K vUZTQm<b+O#5 _QKuJH\$_g&lj0^Dg~a|$=%ZVmCJ o$<pZ[8YX}2C\E<$xsUrE:8I m&/ #t+j'8 3j#Ii7mD|=3|NwdFlSym [Y=|uxe?aBm`x+RS&. e#b wT}_L UoS 10^o\";jh.Ur1nd wD`]!xg$:^P^dxN]@NM56+5|F1k'f~_LXk*>.)Q3y#"q? !#$si[s<G^Zho>r F3yq'n] 8R)UFf&XM# y}&z w]mJFPr]"T+[#v%Ngn&I3p::]_E4w+P@|I:{h*3W-NaLO|l[lb}u8 wE730:r N1RAwe>,:+F. T.1 lh{{U2IK s_(lP%s350="h &_g2k>|?A!qZ  Kn"=   Fg^DJ-R*a-m?L9`oQ.40] TMOtFMC}MT"e8h~iWjlVA 7swoC[7m/w/lHnD<+_kH\sTbhr(99nP[&O bSNxx{> YS~V6!]xFq?wQiau+ lsuB :6;a9y6q-}p*}Rj_R'kFI hh:v16uL1a0(1( m(/9B'"'w0gp1d1s2F &rX@a, Ch_GM0R*a~vocoder-1.3-src/examples/example2.wav0100664000175000017500000030005407542365700017530 0ustar emanuelemanuelRIFF$WAVEfmt "VDdata;  jwT2 B ! Q 1 O $v CV f y'~N>J G S mrDZ  u` MIY j_E R +&,W 9y'-- 6KD4I+cY  .I By +t% +w+dy ; ) C"GBz3= eigy#+Ka`O/u*C^%  j   W'z"yk~ +d ,]Pd7 Bm YyB &c]!kY9cCJKa".=P0Ys ^cR ;Q ED ;% xV+ C462 4i~ Cm3O& X]c ~3g>{0sMhX Y J^$ ` IE)  'R<wgOA 7E N X6 ! ,E'`Q  D= |f &  U!/G ~# 31 c BtWg'dI%  ^U h>+^T&ZG^2} &6b :F )?Ob R@- "mL BkKrIy ?Yw  - 4 v dLBl6&H Zi Xe\'i+.u,$B<V9M| Ae eQ CzmYZ B8 ?`=C)  &T_p53 b).MxB~'2$jn>M_\X8=P1<'| ]19 k;!(  z AHv-i >fcm:  T #YT,3b|R gLx  B cnR%! GA)UNݻc( j 7P dWW E.gF5k^0L*,3m    zs &e! TvAzMveCxvo=o mK  \ O. "87 LZ  OB9 ky@ f r[  +t1&r,~k," 2fh`fm) Eu & OK@w@[ 0 X  $ esz --B%)K  L6Z~&<;U ]+ m.0 "U 5 /g!" xd-B.[i#^=Yo< _^ Lڦ'-~ޫy < n {!D\ *A@. x .ka}5&#1&w%I  V H(Ksׂ:a8(RG O[ < $ \RBl8}} A + a F e' JtL?h r 5 '"w#Kzq^&yS p ,g`  u J THC#+ @ P v4  g )#!#',,,(h!N'/)y%${!kUPzߒߛS2ޥ3   AWj, Kx [| -A nGa G 2Q? 9D,jS%JS:WG) 0OaCM*bIH1_wtZ N8 w> 6 . m2+ x ] Xd$*,)%LWen3 CLvV/`_ *; -, 5V%|`!l`^ ݓۖܣS>P$ b~ >O` qa#< f  :#0j>%H;M>OMHM?V859[p^FMo6$0|(GB 8 `?L!f w& VZt+*#%fgJZ &J9;I*\!шڷ'R޾׳Δɽ59@یpz~Ն݈UC3;,xwou K*Nϋ͆&34n%a3 a]#02=LCDC0CEE=P/9!f1)361'- Y "T9[ K |Fݛ5aFۺܯX7"1T a9 M LO5 ACJ'&kc 5  f7 lAJqE%u3hbf ic$sQN! C    y<Pfb]14 Ly Ck!zN; g 2' ՚uiu<50uX Eb 6#$&`&&" Iw d@*2F} 9)ޯ}Uةq3݀݊ݰ,d;/x/V[k# . "A16'xtb 9">= ~ '*b.5;>2?=:4+ ? 4 4lۖUkߞט?O {X5;X6_cP&xG׈Sۣe8HFy IjJ X @ U -  * 4I995/k+(&&)i/382:5Y.#t>lM A =v2M3X=+[g V }qw7~ E$# Lb'B1<43/%\Z#./&b 3s Xh ]dlQނbs+/O{Ufޘشq݈MXZUΟו|R({ՙszbQ ;^< 4z1jzbk/;NzƟ/ʵ|mxѵсMi 0${&vC9&! !*-& 6! |HveLN?$& g"m'#Ic l! 5  P o~PD$l#Mk ',*-2w42,%"&*%myYb$  \a);`]^ P ^ w%z0;xAYLdPC0m_XS j@t'اV}Jl1-Ng&ԘҞӘ۷ށWYh C< '$w&[EJ EOFo<0 f '&' wn(/21#+X"C=PNS܌<}mjxDj%:+) [Bg `|~˼ĮGՈ`gK^2>pG(;be,E~=+Up%'%"vB!$W$P fFK KeO,wI*ͽN8K :ggM7j %a-bz2 O, Y&},9Oo }xpd # _IO\@QZ%q. KoF *x_ I:!$ ^.VE !'g-38_;:L8=6C431z/*&'/*;)(<($N{kEM&~! > QG. c![Hv3@!k=(h f uF 7GY; m) ON!K>VG+ #4!$# b2Ic-)t%6  \R9 & @L!` @p1HXsk]0YeniJ>RHG w!H R${kAgQINjD D$&0<8@[Up_ Q> 1 4L. _ . y> - D&GfL,{ MTtg JYνY.@e  GgZ:V K1|Cw :  J, >n \}sS_)K #8q g+  En . [O& P&gxaPt  -CD celQyK WBx[Px\GS'!!Y cH#E<jiZ~JcX -w2 ~  u  "L?KI  "E.bDr*`6GyX6  7*@c (OEG )O*A WU\|Z h  S cws! 4n 1(^ ' D R.B`Dxzk I5lxZb:`EQd=8 y>V2v` uND.gdMO 4` xg!NR74Y/JN0CWP S+St{ " . M4N-,q2l 7  v. t 2,:Z-e"66=$m&'_$M|I# GGv}Q}= q f0 a 79 DBuf F !s  vA,( ;rx%C?rs')8 y@F% ~(p Ny! iTx> suK~  N!g!y  u YރRoc\ .I $MTfc"i/]h"oW8'UD2%c ,J$܂y Lt="R8 [M!JH꒰st4Cbo my; @Y<rk x @ E} O I$VUm;x+$[m i52;W5L}, ) $m $~ _& R(6 q-."!](4T/Q%M  !"Nm rf3 ~wG nwU \zt GIFܴ 6 T F ^,u s \ ir p]za'yoeZJ;Sr $t 4 P*.= 9 ۇb 8%bd w | - iH}KF1WY I R|#F*|"1ZP= (;Df:  ( `[b 0 ^! 9 Y4 hJ=Xo) Ci s6 :e &I G? ,M )5i'e8 y9Hzl *E [h Uu {D x 6laVW.o9  g?/$F{_C'l wK ;# z`2 0;4\Z5IX^zgw {I o yp:< i^mU 2t 13[ n)E;m% =e {9 p \,PlK=W  HO.MvUs2 J w .k_  S(E]eKkdk j]aJ)W Z <0 $X# X /(0 &O]G dR `ptP|=ib'R z6CR" Nz fV{ e5`w l f, $bY 0v kCM^7 Y~b"DdjrC"g s s -Q+0SSD/ F/}vWmHy5'V$av . !vPEv`Z#`5||/wrJ@"Kk! *-p:YS]6 v+]Kc t } w}D@4  gd ;de,L ( 8 `  F+,i8*S;}/_Zw9+x@nw/R((A6+~<lItQH{@5J1cT `y ozrHO){df(x!bTQ5[/] /]*ojSTY%yaz&5ct8g* NM>0W>Ord'{NUVj?S~]aQeX+fdIuMai/k/"ZN|i1r9ntqJJ BA0LrT4_Ai^ dz4Y_s|(-MhHwKN6A1Dpyw0. pi{ c.o16}"W o.Q q o[JhF#%#R:`"3I\6h6wC%~?%39|}R,1;@eX>Q8Iwf[5mw#AGEx.z|s ;j.Fw{GrborK~r|P6@(cI",#~mYiO|$r=j}{HA;u aNemz{6:T`?L.B+-?},]s.nzzZbDFdm^hyQ)HN{ eRRmuJ5.~#3BzHY,6 \.I g \~Asdr b74SY-[Jo }*CX95J%!%Jk?  Ee/:U*mP0z4(AnfE? 5-0!Pdb(L{jwE?.HL@M#g,Lp} N8%zoI1&/ lPZo+5d}19C |Do73+ Kv<>YqDH%#e @ }CA 9:PO qF *ikENO|*8}9(  Q k]s @ PX T rV@ LZ{N+ % " FU oIzG)1Ve; [eJ,v:[u]o yDyke]S.|D? fEk  u F  ufHG;"+0~!({ 1= /]R K& LO +X b]o ~ s<Tss%.fQ}d!y2g"$PpSM 5 cmR0p-y Pdh+Pp4Lm7gh a K |Nu'Q0&k+>uRJJ0Plc 1%$ 4"}e%!$*&+ F!#+2 KE>:im:\nH)\D_o ?BiU@o `$b kS-JL+ 2Qe8 V' \W _E1;;9JWQ`t#&}}|`#7@UE-tus/$ 8t~( p x4\F=}L#XZ4 ?R "$l "-Ev @ % T/<]* 2I ?3manF r Ԧ` #12%&$!8q"` >Kg cfL X@YrZr5*Uߵڛz8hux%y A*W=h#p&L# 1>U2ںۺDxލKZܑ9$Fm޺;ـm wc  <t A Z ,9$A_4#41ߊ!sA uS "&c^O; xp B 6.Yx "|! _"(,->)'H$_TjKD\hvX> cbj ei6 @CFd} u~#?"!"!&_0H56+4`0)"SUpk }6ioHg9q"*-p)" -~8?4A=6t-%l"0!0 ~*gq FhY J""y.`M6( };4b{cPpuJ7~Z^^YwBFE  G,?vG\&^aH"Pq =ShYL  ]h-  H%X  J8lU'r yQ=zrQ( g 2!"2G7 OFQ|C-K*OBb߇=R`|؈{ vqf{g Dd> &CV} ;M l \  =2bM}r aMwH$"yM}V:@@ EI$r r a-Wq`Dy "a#$"l!@-595/%!c,`"!I:utD~_3)gH  (X G -SqDlK 6 % yivh '^1 1t|='TaJC. Yh >M6 w\k :-:f:Fzz SMq#= ~]Njk=QG :~+$%X*&H; O_/jI<R d&0 fwy{%sq leK*.+&x O "]"}c snXa݉ދtK` |\ #$C !-F r M r  D`h| `D#' #S/x_?2J`t[)  ~hP."u g 8 V 48]gd u4&0k6_D٠ [Madc / \H@w7.Bx<FFI}5 ? Y!!B  c|n1XCajKhaf 3 ( oQm gM+-f]G6Q)-#uDT" H",O^y; in9 x42,{$$E'&%a!f' '*'2,B2PY5>%] W j$'o IFLvV#& ]3 IF  {3 Y.e B5Z[((   @o 2, TDu?P ) "I[: 4Y і0J9Z y.p& Y8L"Ze ~WR;ze^Ra:Qb6S0nA\cVes!3) :'>AW YZqc $OR?A& 1 Kf [T[{%  GG!!py \!~$al  '}Ho;rw\y:AU_w63QBMKxu,98M^V/Y9pNd ! E8  U-'1[b[`GZ7HO6 `&!~%agx, h+?c! @  KR*nY ` {:Gi't0_  )ZBPT)XXiUlQJ_ALoA^055^I[;R#C=gG,f,{ 7ѓi1 'Y9d  $  g##{rH{ cXV M=pKyn U   0 0 Pj Z GUsqo73v91  Dp=ӛ7\m}Y0k|NEOwYL=e.$y~; Q@x(uh  &c2#hKVBC8.?YT.{L=]>T$MVVY$W'*Iz|V=?AKBj4%7'Jry@8L#J]w/%>ih%9[gR}d} R [% Sze:\(i  :>] 7 L pl<3f P  y}`LU't<?k= b Q?A7QlcPnA xKWt {  W!chFYF5q3_} 5 Rut#@jZz)[9 # l K#"<53&I  5@-SI2<0I`=~N ' J*T[orYqb"dXU*DN 7x 83Pyj#[j1a|7G ~# +n_%7l|L'SR Yp]9= "g} i [ l 6[-ruPw Ow[lD8PpV(P?>|:C /   *' AN9SD/4QAng(h,7UFoc)  GYPP O _ 4J@F dBi d \ 0 ^ {=37D5Q~HC3W:w7Z?~ d#=r*vBJwPde7 Z  C .FG}s H B 8 kxH &5;IVAzuQ T 9 ;0'  @ OJJu[QE2BIrWZq!O"%3  T -se H 9  n7%M"w@{ Zq&,+eaOsNW78Y4PXC_BMIAHI;z` v T v F )c+|GrFl q58a"m;t f)xb d0%Ap[]P} A]+\eAX/T);lU M 5   X "j_nA!@ikQ0x8Zp y EO F? # } V1 X ,  S *-Q9q+B5bqv7#q hh7<i ~V765?P`d|qR:'f8Cok_U`bLzr$K! 9  A  " U9 b2_Nx&t'2ePTWgNc}eDt3tZ$pNq&0j;7f[jhx{6R2N&UR Noo L E G +rkjIU^-8U'Rms%/?|WJS,d=l q< FGxg@XW:TO3  q?@QO  F(  "Mm[Vo^^e .2];k~>~  3T T"Fm3 O[7*^ 5E79s.F N wD)~l.*UUcj%iSB5r9H~Q_^g6dKO*}*Hs+s,k,]0CyJxYm CDav.!I^9  [> $J s  o=Z+UU/dsfquDc TB>& ["cO)w{LL  v S^ m#W{ n Z"N,( ; ({c.G<(|V I l  gP=  !dXoH'ڦפLۃ@kG?B^UgH 0=ax53VoPC_f ~kyfa V $'(())&&A"!_ |+!SW 2$C'3&(*'&J(f$! j.  Whgsd7F R #''% jhYYIwїЈG #50̟\^^[jdB5{ M`Oތ3]M="$#"a%"""s]!aV-I xCrH"]M W fxNlYh?q !% '%4"%!# pg 8BSגӻLُ֟?8V$XN g M 3"  aQ%`f=]X-QA}ixGM/[lEr#^u WY[1q[@]PFOc   _r8FN]N!{LII͏ʑɌ=ɘKx/۳<~{P7G  A>0>w;!CM:v{!w_* "F!< 4";,!~M@*B,p\'ӭoUѝ$gϥua'&~tGN ] NDPvqO)yPؠo߳0{5;x#K-}2Z5K987:20;){!|!$'Osf!JԹך؅Mc3$) Ynh^_yrvD c! v yO/js+ % Pv}fYBl( 9pIފ֙Z0ڋ2hDM#&^&w-,1S22/)Gov FEX~X-Pmm5ݯْٰ-ߏ9x<a LT~3/0vI  r  r mea WO| !!<' Y D&j$e@P,F+%UQ@` nK d"p)+(+o.w-V*l%f"'fk7O+8*([>>MmmV Ie@{ptl@i9Jk OXZPy$ ?aW K=-!o"#$!#! ! lB ^1'VHU,9M>qB.  b 37WS3Mo{/G.,O(j oNV TQ{D|&Z_:W L4^I>:#"3FH՜r8;r (5eLcz[ M~RU*O!)J?X.E!zf7-E?]Zl  eKK^6|+>2= HH dNA&v;x/oGZ Z`+*8' ` 8v2Q$ Nv6_  b'^wJ $' :VV x~~V;i^w]S%R3T@ }_`A Cmehu.,3M>s |$ {jXq ]J $ ~efj^R_{}( F}}IrHH]/8Cs3 7)t0Kp! NF/TFO;p(S fFY 8j q ; p J?rt S/ uMd]y'M,a{~O,;ej*:v8#e[V>a)JwNE $ V  K_  n C 5 ! 9 e ^m0ur q  t ;{75niHy a,"G/=E  N+Z@MyvJ>? HwAradL z.b]N6 o_L?c8D) ?v~ 1 pY1 m V n iHG"eNUR.8TR<!~CeLAyr'!%5gp2cV ABv 0 ! &Iz|*gY+(9a^!ImF95!fAz`_}#cf1k]']4"`ck ]0|ivm,&vm@=C?0VB;rWX-yE,=H 8" +^+EA6 2 ~N6"-MQ.ZOA@:]Onu#AU#p , | <hC8`Du%sSJ<8G{l@djS 1vhrc L  D_O t   FVde4]1&l=i Sjہ 7(D֠Nأa!Xbh*^iire%c 0 G Y}6q |Vݸ!j8ftH Rr&E? EXx(:N*@}w1_ nBg65NV/T (I/R M  R !U!)  g gN?XOJ![#$$h%$l&$!P ^ j!%N F]#2߳w'8܅Aҳُ֦\ALYvmw!u2NmZ=5g t6I5\& 3vc_'| omQPPd .Oo^ N  ]; &gB!""a$$&z&()*-`/0Y0.,K+, ,)%%8- -!*P_   }_7PA 'f 5PY] N1 Y LZ)8.D [ osJM Q a -Q3 YSp&p!%%b#!9 F$&&9$R,s YBE= >@Oٱ7 ІٻgenQD #hejB\7+O \ Bُ׹օ֬\YR | h  %#"Y"J u(Ar]tv/GbZ}w"qO*vB E%,(00.+-)% !Lrqr  XgRX lrm\6$؅ӮcJ+(%+| |ozk<&S,!+#Bۯxϻ)מ޸n(! 4 /0\(N Aow _ #('*/2j6u;g>7>94@0*(J'~+- -+A/1N2O2I.)&q%!& Ԧ -} !  O) 0r>9".r(x@ik ! 2 ILX.i+4eh=ΆսÅ|թrK,y _ˋ[%L*QDċd̶PtR 'z.w3~6'50&>b \Nd } #%l+u--,'w Y 2 2eZcYkIrst.8Ns8T OzՌrrک hR~}#)-1E1-%{ /!c!,Ht,q8+WKc,: y~"$%(p(#zY$?@"9 x: <EB+ JLX  h0a]w#1 1UG։t]bK_3RZ#M/k lY۱/׭:6]  o f[yLYDAT!#$%F$+!v"Zf4߆Q+|Y$ "(k.0.g*$A CH5ذq=6ݧz\Re +23543/(E!&(Z(*&!Z %e  pM"H!fQeqSa{z _ Q +JfHg|$7Tt40X B%4#+A  f F '|y^AݐIݝ>O@PKU]Ycps+[1|L}\oa:u&;q X .kvKnJEt!c ~ &~(FpY3[dhd _$1*U G>z /uLzSC |L !*&$U 1^ K_AA@`eQ U/cQS޸tps )   j% p   RAb  E7CK޹XQ!Y7L{6 JDmeѺ*֋8ءGmXqJN>,&7? ' zGO(  y3.zV c 1rD[t{Y;k7$8(&&)&#!1Z ,BA0+obcOVn j%MdX1 ?H %P( PB0$`$.6% ,   7`$*)% / 4? &!*7**)C&`4 .7orAye15t< u u9 3fD #"X!?aS9>;j aqY݉ڝۘ5<9g+W P0 a9m:ixU- @bf EiLAXl(.3@7-?0L6 -7ہܘ-Sgf ENY-N;`A ` K[w^N@+'_y-V (^ o/zfMx] '`! CmD-4P( * ]"]\V QxLHDLN':'.35iDK"dp5I/ rR WC 2 ` Jba <_њxAdۭ6y3܀ۡm#$ C47h\sr  -OTNPfev``X =^!V#"! i "<%v&$oA* uTi|Kmyf0}/|;9r #&*v+t*5'#?e\4 b@lSj-8NSH?g2w 6C ^ s j i.q/ >a_J`;c [x25xuPc "Hf _ +S#g ,Nl  O:0 q  S]E xEY ~9q߹ QOkK c? lN9 E2;htN:=K  $3- jre H |C=P M 5![ b# \/s??W 0?- op{ m1%/v'y) *\9;`>h8O,4Y>:&  e .* F_P  < W- f`@Yow l:\uq  R. 3DK o7L d I % ~"" g Qu g FTn\0?d,C"e6qs&9~j8{wQ` 8 'puST_ ,f>.WB%a! k $iKdGA; ? F[;fy gF 3 D i#(}Z.gtQs.* 9QBv&~jorF m iYH8)r?cP/.go6^J)g2(A| '` f2'Eu[ A~oJ\jU#r=  # * PBm/7H 'z8z " ^ Y1g>pheNrZVIIb@,WH5Itq[v( ,FPGKTb_m TRNRRP*$J*0MGp^Mt @ d+G?A#  LGH_e4Cp)e +S g$0.%PsA=aUf`F _F[c0}fFr\as_O{}Y ' [: F yjpR-snk&Gw6tX%C)a$UlK~}?ZLjWieZ~L2bPvH qh=${dN>I937  Y 63^0aPMLV4|O<m(w{,%ly133jc? YdwK "v   ^ui{<q A@'A0|Hp_&U}Nv2&[ W  2 LvM#~-1GRN)Pt7d  6 PMynVlwY ,o :  ~ 5  \0``w(tE8mD(/G^|w\!h d  CKN_-({_Nin(l>t feQO*Oe9_!:P|Ex ?iR$*n3(7b0 ?+vul4djRyFPSLG am~Tvmgg=ww#P)H_NfsF/H/jeI)Xah-Iz;X,A7"%&V/Q]q9y65um?["l=UIrsT7I}f*v,AklR-oQ'HKtIm/%Q'XAFVW=h~.!Dk73uWXbjT.(&<s =  hUT4 U  " % dk+7)k ; 7 / sY%.~ve-M8Mm^#KnO6^j0gi<E;  @ a [6|5:,Li 8ZZtt5Ur`[P` :Bx R#d# q  > _[RRp)Tj"iNIa]ll .s%-9Ha7~>9wH*H8 8  M g/?eDxWp UCX~5' 9:SIM5p/FNU{H+ Bp$I ^| " & PQ9e^,4/&?m,d["C/G'#'v9t@qo1VegpBHW?U`f;7Sf}5^K(~:$>-s2$U1=F7ft8/Y/#ru8 p sD_SH/_~xr~ymWx%5mEvY%"O5fY`8 N'{0fzW\vj/Q?cos#`l)N"#j5;WjTM@M^<c|Kb|hXD1 ,   B M   )d&86@i _ :4IV?0FaHxFQxH K=\& UDLw\~' ,EjXNY_$Y$OXwe:/=_!xvv1IsY*7b] \r _| <9\"|s <9%f8M78!{4la](`Y, +"tHCsL,  $t!e>L!7EWP\:#ELy# Cs`mh\YR31^P5sY=d`f GhHK%&hZ'Ffve-!T\ZB'DTnP}"Lum`Z>o\pu"uMAan E0pK &c=YTGMd9w#C3Th:\n MURy7Tlm1#s^9Um_2A~glET2v"0BE{tlnV`*d{[IED,9WV$k;d u t  D  v % = )}LSnq'hA}N_5Hm]z9\ e#"56, {cj,FM8~RPjM,w[ xWp>IeD;&=ue;8&yf6i|+pRM &1tW i t  d d @ [ r T  pU_Z(*cN I(z-7y+O`7=[wc5Poy5.i8h>[s0Ib})G|8{5IvM2:okU_pY"Yw0I0Nl8ho2:? A t   nX{so#B@k,]44k4c")& r?u(<QXC }f|\>EEF s{l,$72V[ m yi_"F["0C'@\"60rp~#eo2jV0X8`A X@?-DPc"{C@s2d>v(L-{0&Q;.fa|i|OD>G{po ?KwC[]0MsG1o8?6hc#Dr}9QJ{tZC}wNaNb/6mH7gPIM'yc\6b@dh/.PGB,ph|@%$$ eo!|N-R%%jl9ey: |Gw =*X HxFC25c6}{@C_r wtO {_ipS F9R HO*fRD;D2a:EPA5E'rQ8&mP u*yd'}4{*Kr=hhLSh[n(])=")^ aK=mgQN:C}%Wx@<sH  vLYW\:COo&Hv|GV1Pj?H#@*2 [ w/iG^C$oMok[r*]VILf,4.98`<.IakxoE1|7 ;wg4TDljh6;dVNnCOCF0 7(B\UL9DU~ )G#eR}5m3 "0,@)'N'00ms^N ~ewP^ ,#+LC~-\`Oy:\=j -(q$<  g3)^%  QHA1i?BXMTk\3IQ8uXRQtAl*RvpbI;SM`uL2v^-?"kHlaPU4N!+*z8@Y1 _mc84]c.ka5B3k=o`y_)]xV1)]ET;c&2fUq"dgxmqNi#F }^ / "( ]Grj_/&! `d]_{q^S1msKZ#{U?=%7NMRW} 1K3%o_6=;Ewjt[PseCwv+>& [Jhyi5h;Dn<kH9i]V'<C+rny`v{{/N<XWq^S}@`sumT4>=_R" niw@B+ >N4]hV3/DO& Z sT< 3t[HDKEDAP 8;-hp@EetlSBgnx# ZT(B &0DE)zdVy=SJi6&/C0@!1(/'RGJfI0 .+LBE")%9 "2!+1HWL+ <$>8/ ,:4- #< 9&  *-- ($$!8/$/E>5*'A@,''*9&'X7,5 !.!>33;  %5290N;D$ /-#0 9 53*. R1.B%2.^W AQ;,'#$!#% ':'=-91/ .5../N^D->62U#[M3+'A -=2*#.":""&  '&-),$%<#=;,(!?98-)"" &#J +1%7,  :'>\I517"?C+6 #T 4  8'J4a"B i^r^HGvQf4E)`~[h@= )BIY T@eKTrVuOLkEy6I3WNe9tEmG4o"U6{aI\~NFTenf{n|a ZrT>jy H@8}'m^ sT]w&lnJNsO U=<>&]&jG6tV\p+]Y6;H`z>5Sa'GyjN3>&t^@L:AG:A vxqf-!C^2n=Wvm5uM1])D8WW$pvlht=.x]EQNL&|=mb?MQmv`.EgJ&qD?%Yrg@.z"+pr_-&?"nLf"\JEukGF^ aBP(HKDP}i/gvl Zi5b]Y&VCl;`'!uum .^ 7T0sl^c}%/(4Yr$N(oOh8v_}~I!1,j}b O.nc0[r[&P%?A 9W Z9@_1>>dL d_ QA?@ N \'G_ 79m[ys:MdZ_c d&/ bbw!FK < DNX|H )j$? <+ g !a2}Bb kY`=_^vEa k: Jg 'bw < O6 ZT 4I,`92b R% gc "I1-QW%, qky+C_ } V[m[4fv 1;< q i)4 7 YZb U7 NDx\aZ+Jy1w  z@7 E' VTU XAj 7 7   +E ib= P s ARJ E5;MW? @Zp  =YNo5? | k\Sf8^ H %jg `I g 6H  Da \ EMK_  0" kq d5CQA=C&="` "uDQ}  ]7 ;& IvpO2 FR9 w@ 8I\ v1[6e jiQ Z~+ QfF@#V 4gYT] R3  TB {J  ZCNYk7 BW ' b@ #hL0S.; Xg lkR  'k!z } 7ph9:-`UQH=5j L w(?GvH-R i RSQ > y"H/C\/( Ukg_O+' k% X niAAj!VgF z! 9 Eqyob{9k lQ#p2( -n^Q r :s ebV 'c 'I h U1WJE: 1 4\OC# S*(~m2y*1"` q"#jQ s8c;!{ 7\F+|< rjnX0- hq EaZ>jFz6p^ 7m&`x\ )|LSL-#`!##/pp?N6Db8^$6y6M26f2I3KO^A"YJCct0v1[:T F?X:"S+8 W yAf|<!m_IdSPcT}l }K%CN >GBD  " 7 #B{S21MP S [RV>eoTY]oYU}+q9 0%]-$qv/ V( -  3u ~ Q 1 nG /Q lqI,UzzElI}e /  ]X~kNoy;;k6%@7IN"$K;T O p eT0 * :] H?'q D!`vZ`v  \g/9$uZo"IF   Y % d h O}an'3G:  ' e CxIP,5 6T.D,l^jD`}zf,< o97oYs:}ta5^/A(t9T:\*PZ']<{FUImV:? c$iV^GgW@Zo.@o3\!SgK * N   Y{B[FZb R S 9xet   c)n'f\#n52$Esb)j 6 ! N ?.* /hHe\7 p8Tm\;!,[ gvLJJL q?=9PX3@0qr*6= H  c2 Ii`/: ^I\Uts>8pbAMF_0K cD W 8u .?  nD/Hsg Ib(0bT B U 7R ,rd Mhb`ykN(2/@4bff235) ut}aiq  @,lZ<I"CkT# <$28C2~@t;K89T `z12(@` p [ CT.p>f v [ 9PMZ<Hw FbeO^,Mhp\RYYd&,:Mx`%  CH " iGp\=Q n R wy >%9+ixjJ 0 C  [x'Vyk2n + Y$A  tPmU-rw!41US'n{NEi!Irw e  42?U8Q8JwJ=  70q_xv!|  gU#zIPquO/]Zo ^/+K.^~oa/}p<{8"Da"2X S3~1AJ+{V1 ps L$6*%^d _7 N   U5tHSB 5q|Dz c \~u ,KQ@1#$ #m<! H pjfs} ;mH2tGw}zL1hq4Xi+i'QgS[dki < 2 1fUqLxxg]]%r(=ial:uuEKz(hcls!6mi koQ'( hE7 V K1B`g* `FydRk>Mb}B PV$6/Ffuo*M+l$d(p =* &5Ag5HLzwh2uBB<5/z G zi VJ>P.g8Uaphu^ 6Zlj By V</ $ j(q u/a[,   $tU?, 'm?!pJB .x`wBq W dL I 0 >4,"(|5X;}jx6nC=?U71ME%k4:=4s}2>a_9%fbxK)Yt nCp1/bEeEfn=@)_j`:l  5d XR|b5 yr\q~2G F  B #g'F 6,R JtlZ #z8c  ( {c G-CyVNF:K7uTK:4=Q Bb@#o<t!d$c:Y.ygpU9TKs9wC2 dzk??l/Y`]~V)%=v6u0r $2y <>]m$vE5i9`jr4/a N$  =  L 3 H nz,>;%6/}X3b5m qR)_jFKw5ZsuV6U^/]qp $th"*!b! P:]݇ (Fl89 a2EbTG0 G] :=YW ̆ ; lB4UAfSF?r G/gIVkUp&>)%DGeSu}1Z_ dc0k4}z0`vI3fOn|QHt<  m a+[}jLhGSd{z"2==;BFX>zMhpL*_NX &/\HIyh1A7B:~O19  8Tdc=f"QGQL9JAn ~M?yK5c**puuw\&pl*qjOkc"&E|y i;CoW 07Q%ipGmHY(~o}>{E}>]!|H+%-|:TJX[#j5x*}JKn Hto&VQlt* ] cz ` T [  EW8=Xr?cl^Lh+ -2QH8<  PqyvfXQQ)CqjdE+'qc}|}&<.rnJ1;Sq5f Gz;[Oy3G!,dn>v7V#  C ~ CZ7+9{^ ZyE- b5aRc\\z?DNo) oIMvL@> 6[(nLuBRM,zacJ/!W_C:J2.1y5{G5vMM P < J1swj s C"h4uL@V Dm| V  ddpYc uB_V  '  qU- N]X~">f({W@ b x dt  $T[".d"Ln#9=^(F&FTi@*QX^ yi{7.{sG(Y"]fA8mQ=+^p2}<3wQA%4pAm_X92=O&7)g8mfkc)q2\o, uw LI=Ylc$Nqc? m= P =  qtid]M $4OY- o: TnnN_P?C}Rya v !CKH5g3N'#iMOwY@|l[)>m@8*> ~ \*sC.,IhJ \ I .D!'{-nM Z^4_'0Mo<"?jg]01*_qBBreNcm#='R; C7=j94na =/ y^ /5Mez1dkGq c;FHj D%Y2-G=^Zu [+/<g7 (</} M  3 ? =toB|=`n*'p( uQsfDNG>PUR+ V #l9N)UJ.j(2,@daKA=DeQ,~  j  % !<|I8RH0bs. & ,  j S ` P  8X2Jn.b)7)r'`m0Q  r R'  o S | _mYXRp)&t &   a H ;%.ew?CFD]q,,$ie O0%o ' V z3L{xdE}A*= V=_ :+  y r [0,7!.f\Hz}`_}eiGYH.59PL3VhL' <'to^_t$m4w}:UVI- D,0 <@xX(=!P&^yO~:km5@W pMDmzm  w N  3 K  81J'P[OR(3J,W7$%keZ1QCX */Bf!j"@l%A.ZUc' <LL [T8{M9[Iq:U[JB3L@w>e $amxpCJT2 . /}nli\DTJ8"Hg]l;Zq4S91r[;r_*}-X97\>+&SJ  Z0 oeXm2Kc$r^l7M.'H XF0)Nzr$nw!J>Jq6r(+I2Uy/BK_o pOOB7p_."1[J%$v7$$N~O.K?_Z"kBkO;U0 oJ9T]0+ xPg ^Sa YMAB  r_2Ef\o6JfC!sZ2Pa1ATDQF8d^'Y>dP&+ogElKf@' o)SsRy$W&G"qUh:w]j>EI@ :RlyRV W/rb4guL#k_! ~E 05-XL"f/%+8!QjOmAblge{1<@wRs7R=$'GFOC6R @N|Yeg& nKmW~1;s|b}S<Q0Xt]evLb2IKJdR!a;@}kp/$]8D~HTJhB1 e>D-Ci@U(5AxQxr$!YGmf&uv SJuP& m_c Lc\CNSFgT/xh0k 8Q98@O$]SgBvAIa:-\!T201Wpg]Kf+15Sqi{PMs|s=Up$S#;6F5I0>9YmL=*s-jwYOL@^f+ j=l9:E &4"ODdV3o p6$ lLp'76V%-GJ c 1mee:T TbH? xu"Sb ~jr!F}~F}(a|%r%TL;u]ylexz"w8]>[MW4yKhe7G[f:&T.%%6^ M]zTX\at"B=>Xn{AWpT4j,}"w[G#u0w_BOu3E!,N2r.WHKmcJa>}ASz( Gq|e#DQ2o2pxa{#Zr\#e-N@!#3-(KohrN7s?>iXXlQ8N$Es\t#{F aV@z}.<K|sBf^(y[0!y|w?`A>)|4@a{:Rq36YDJr4]vGYWoe|)uNb5+ ' 5KF[K]BwC+.`')RoFcm!y0z ]JoCM$ ^ t^` r> T Tc\{6k}}F2vb#>4A#xr4p:]T; ^nS#dM)tOD~r1YqICY#o Pyq%X(S:F.TCf`GW4aKzlDjm!u~%@JeR <XPFft-,3W&) $Djt+tWNm4*Y"*Cinh-R66^ 7M)s1CU4oAP4G|<.K-5h0g.[(Vc=]+&]@l0 TsKc7HzMz(ETp,.NAmh,4jMA7(!mpgLh3l_wy-\b<,Y5Fi#sqCPeMmOY?.{g`Oo++.;bEj(7u{ &|W|B&aD4K61z3=Aw`u)B&$h~p?\mJK3W!V/.4Quk!KYg|Zx(&$TgXG v < w0kIFt+ZakK) 5hdi-2cl3$'/T[,01OK=wS{\9!qB@: 7M[F N}^U, [SQwt%ClF[8*?u5<p@.e]9}hL@2N](}M8Z 3[0EPJ>yj9;3~9+`s$! Uks$tl{gGgV kiq81&  Ff> - u= 5[NaGy8~]:x'U:Lk1G%sCa1dlo4F ?0;;:hyGmQ)q64M9LH(_]V) u|L&wZjo2Ftg`KXHl NZPg7lea{x%tL3QePZ0\ ~Yr_./;; q)i^| {f;41H/8nJbf\plQ"2$xC{gp?t: 4~}5t5 psR,]xr-bMXP\G4R_MuN0)7` ~%q*w-p"|39 [DB+1[ZfXbi2{,XrP.JmvH^.hOv3/{? ID"3 1<8? dJQmL-qbymryxqE 3#$M7-G[ykBF^4Hxgz!Se_=4=j[,oj5axT/mJ_nG3Z# xyB)'Jp_SC'8>89g4>=Obg@YGyfXm"[TvlOAl4Ee`>L.TrTsK'qA@Jg(QDT n`+ }=M.'24 K}wb6{93Yk<=_(z>FH%E[N -9TCL(s_,"Gy`rgW>R0>Fxz%h])!N]sDG{Me4pJ+1T'4b8K0*3FsoMt zud7p;)X -v2p3+cI1cb}8aUk?vu{R'|H-&$g Y]Gn\Q#6<$=*-BeZs|{\Iy.z~'9.)W(Vj2N*maAxmF4cyu^g_$u=2XQ*PVe IEH]l: >I~?f]tR=SCg-E\ =_9N%@l@zrS_t0F{>`  ,7b  r Lb e :CDza>"l8-'Koe>bj;iDi,}!d:pxxj %-eG>:b+Z~$R > D <\ow pmK.j g d > $ 4 >VYHC&jfk >M  I J9 vW 8 KP cs-jsd32QIse E<}m"?w+.\J~-0a  f45 q w ; m V #"| ,   [/]Q<.6jgsA|w3X>pL=Sv0i7 F ~=a = )P ;soZnyo @ S> qc?0b T5 A  $>O1?L%AuH%F B@+,RM| `!lz U7<+^ P1e8^Ow(n )#Z g9IP}X Jt!4w]T_Bip|r9RIo.M[QS :28-NE<`=$ gTi*GsBa)(UY od@  BNcx] # XUDD)yG}qHvr"&P *jvBeo9#{/ 2M.+ X0tk_ mh KT:|IyjqlH8SE00:B4mxUOlg w6r'$4S@firf07* A H ,e|, ='f-zk Z(-\ ]=7Esi+%  " \ [D1?M"yt%8#n]S-t d@ffC(Pbf:-!bLdF{iqWx4bx)<]$#Ow*.~< '  E\ C P4\#~\jI7qT( T4cs 6 / L t\)i(+ :.ll-|m-TxjUty}lwX&C:y2lgELtJ@\d6WlYjJ  q K1z A3B[J=BagJe ;-  s '2`(FreKhZx f-.Eg4z0<T:W"W /YX`AF0pp* Nut5X| \La$; :hqd;!NZ!YC 6 ~r~DWq|Y_Tr%a~ o `Sg=4M~9-LW=>Ua_u[V}Za~%n@j^ISv`v+/G| der"' K?K3ej db.kDG2oA#Eo i9 I K ]+?|L  > i w:mW~ *PBi7+ W,V=YS(uyWQb6} ^z} M$j=  .VREK[xI2|S GFLqZp6W66t/F}f3sUvq &d{Pg%~Gb\1v Gi!H 4- p  ! 7&H a4 m8O~B7E0lLPO ~n B r((` w 8 uOq RoG#+yTd;F/_ H3STmK7 pv  4 G ,A I -P(E6HT5d 6  TW T@"~t %rVrb } ; : " Q  % 7F:RRLyD N >rsK ?! .`u}Bk t;T&y:Ry6jD_>;TMm^7`"d t _*nmy3M$ ] h, -Q+0g#}{0I@ 2/8>)r(0( V u nZ > SI t'1XC4E:k ZO O 1s Q K= 5>&z)IuwGN;0H!32 20F& BRAI{L?KZ%o$oA{l  `$p _ v = x+QMqA^Bv ISu}  2#g\DZZPv6 % @Zd:+c'DP+xn+\NHA,&r~m2P[e(   ;L$>- pl CH#  7Whw2^q.1|pEIYZHnmV$\}E,8MU3ooo`utf`$ s s ^CO%zy 8B  2 , XI  0 j l B Bo^!p:0u9VvY.!aNuZu=]>cf $#7r2zS1*WQp)j -+B  y (8[[ \Bk:\sDuE1fYUXP  Y $(`&9*=Z"ggZl\j/hc|u M]N Ѳ` K#BxMcF:WG4n,.MEJW H?r4qdS^`CuXq3>#Oer Q_ j = FO 1nhemY`AE+/,t@2zjaxr"iN+(X< xffq!6z@x+_i eF` @  Q 7 6N?n$i5  &flIImt @sTL3O+A IH. OE8@Jbg?1S0P?* ~O5 K[O Yc,Rn> 7IG9#bL^;UM ,@4&x[=&j+ (PGXVcB"p5f8]Z/+].@0q"2P2m4!QFXCJXfzzl0m6B) X#t xi0CC~!Jx4[M^XK:!9Z L < GubX~{b,??HmuIs k wB )~_sc% _49 =>K8U53Eug$= @Z2f%Zz\NB2t& {c=4-DMfkJ;GqL|#"K{L6zJs.0&uhg*o0M:G&GN6#kvn4lBYP8h.e6:@IIpEpC'V0=f:4+P!1McvN!j+f8J]]/:CA0XMec4[ZP:&(.x xz#8[C*8{v t <a42>b "&`iqNXk)&oEqE( 3J\H&aZ~;  6vxM?*$^E Aqics=pvpG4"fdB6BVIt K CF9 5sG] }/f+J XFz[UM?>e&Q9d%k1+!}\[t^=?r9"o>@vJ*XFcaI3 HnrH1 VP(>)r.wG  @K;+0fN[\C"<G:<vXj}X^~=|83)pSo 6 f o s z v2#I?Rb^t0da)zfhH.s%M buE-Bo\#<D ]dc<7VciUoeDwXq!c 8 SC&BDa:K.dYv616]U's\;9TeT^ x < [|t5!k19)YPt"|zlTB o8o(":_Bw\;@bwV?g ye90G]g>-JS{o^tC'g /97q .:xR !p]Hxa;_bLMs-nos)Bf" %y owpQ9`M l!67[*D`S,\jq->sRmB9B<rh. `n'npLk,gY4tKrl4]5u;.u |OIvOv9Km^I7qh6~LM <+ -K?75gggNKk-W e^ wun'OrYG[ePpBfunCN \imv j@6omU]m'z &w+GrLU?y+K|(BSIB3at8N} fBM\xv<l"W_NK#nKC=So0__P<XlJ5R:-3 ua RMCJI z/t|//"?DR'Z$T"\I6RD.OM`t\1'M'iN;@]g`'Q KZ0U Sxn"9ZS=SFUK AMp FCgk.h c;];d9Fp~VK+~2yH.KvxfSUe=9Y8m*@,4LnwM}*Z2+#II41JuLv%3y $x~\\1 T|N~ =zZ6o 4]+z;bDb!#ocW#M)NVf>}bLV@sKTk~"5vRwgJN4.TU0xG>UHPu!XD=(!`<p`vy))+Ltn[5x<^|&r(AToP(o``thKY^}U)+Ze^1_oy;\S~'9g> #\q=} SX?iz6Fm !<.Nux"XVcQH=_q*FJhND]eyb5BcA+{A` !S.Ey6 n u]tb#?68!}o ;(JR3&#\=Wjy8:yK$D&g* 5 I WH?&oEUc?TAJ`yK3=s`J?(Fwg{q{}8$wADddJr{.TwTO|}73Wz2(IKUKF(M@?>Z05PkoW h X8*ou1/DF>%l3i2(r?jUO6MS Xd>]oBrT!+?F1GF;(2yZ3W@P:T\jS=lIc8uofP5-d R5V=Fq(J38La3!zm#&'SBa+r_KSY,)4/)B2cDUxrl3E$CGUs xnUQNH63@G/wZF$&pUi#}3;5qwP_X2#jyy\90+j$<)\Y|9![}7;&ruOxm?:_{)R5>P5"2vb*7%}*tvq sps:' hP k $bDk%[,D5 : V>/LbdtG1E!<;7V9EFc=JPTB-a[C* 7.UAv&jK@h: A#3P\MC: !Q|0#,Q*9# "eE)1BO|-&*Wo*0Nds@{kl ,\aT"C^c1C*ipO {>RvT:3?C$DWvocoder-1.3-src/examples/example3.wav0100664000175000017500000030005407542365700017531 0ustar emanuelemanuelRIFF$WAVEfmt "VDdata  "_,] sJ =(r H -/@mV)*uR"_#MQO rUc/ aRs 84, # Rf wC#$ f=s"(8Z[Q qo n$a`Q &!R^Ib z'!.] L _s7 2er)ۢ~ ;02Wc #D p 9Q(h%n9o- ;i+l OQw 1Wc#O :] uIa6 F Ff: 9{yP :BޛxC " Geb @rLPq D8'0 kf: ܓ->:;kkX:>^#\lb|u Et 5oJ{8-Xޓ]#G QV>wF&>#e;v@8RޏP! x5ds U{8 (-]1 z\ 4m+=??E x?!Dv :{L!^Y+ z5+ +e gVF"Q+R 97U.z{<0U&m+KYKk+x[ veJ|AwK  :l N j 1 uJ <wG 8E<% #]i&J hcb  c$Y,sH5.A~+y.ro"/XJ "9Mx; wmT 8  0Ft [ 0 Pa\\7>ބ4 b?jXMJ7 2|Y{y a@..%[WQ8"V+ f n!K d7?{ M H+f #z?4xa!&.xm AaJxvY k.*v IRvզOzScQ-3]' cbfnb+k 4,z(Xx$  x$\# y$#.Q "$"h m0 2c a`5/>p`h D&1{gV EU t<#>^ky^42UJ^1 -" r!?!Y! uYV D 5'  Q1 q2PU^D k p  6 I9u ϩT ) ݚތ_'nrN)tΨY݀oUm$}; Q#*$$XxjR(&J"*)%:E3=% _6 x"x> wG;!p- CPo-99b5]1xl?C#}oYQYZ < > g~0: x-H5u]I1%2 }8   U u  D *\~S1}L!1]a;-PoqCO:>J $ 6ұ("v0\uK )T&CC #Px _ #+ JXm}R7<dXKMO߱d^GvҘn_dW)lWJ',( y6X&  # g W.E{AY5 CIO  d6 Ah&>s*aKkMACEj# 4Wv)#`}yw5 :KinBhZφFM6S"B݊# 3 P Ee;#K G eX #%)%Y{WfxO"O""Sp Y.:m` %6& $X!Xj$M)q)$ / l]нџGrI![߀֥¶o֙ہ܄bJ U  GCf-x6D41+#) !g&q&t"O"Y#!!q!%K&""+64>@8 ,:+69 /g 9  t%&X#J Cc7H {y8ڸKR`\ѵBȝq4h60 "$+n.//3+$/ml'8!Sz[4d+{r@lrF k `&adF$pFqjh ro:Y<+aE8#% %-3k h ՜TϜiyP#U%"1Hb4!y#!$ ls Xm )/=10-% z'5<90.c[ *F!&9((%6R~%[e.Uv W¼$׺]VÅWo/u xH a.Q O &)/##- 6X9;X=8=/_'&)*/^231|*"T qR$,- (MV % Jzk 7Y:E"Җ˲׷(m( ZHm3#T.z32.! P3$Aߧa.xٰ)ߎٺٽC4`L 5 ,Y)V o&e'";Ti ;JYLD3;3_#+ \,]K c bb <s }$(t#X+6T1"'  Kq  ` 9Q~! CP[ /1 4v Z"1%҂̀ҡܛ8QeC =ܣj<sݸsܧx.Ӻg.zR ?O] #l(}((:"-i /<:0&0 y / O)/586420#,-&$ _o1 S(պ3N EJ6//t@>/e 5xwdT.2^( O ;n ' rעLgA 16[۴"?! g= y%28a2I1I;$X . - u lT1HB Az؍k b@pWp  ' #,90L/A*T5>:r.N LWW KF!(G, .~,'I ,%!+ ] i=dڔQŴ$ɷ)G$A C9Vܜ.E 7}/G -:"e$'" # )5|șķXp', , _5#5><-Wbm&۰ؑ0fM(_48"6*r @(0%-34,"- 8 u ڐ.N785,4 'M!C-`/G+0i}%D^FS*&+] x@OTӱ2D޸qYqˉ4A#f' _ 3h=< 2<)P wJ  Vn #9'E)'0dxcy{#)+( R߻u}dnZp?%V B֔+v x# ,Bh-U/upK I &s.  Y&ѿ5 < z( &+z]E>j @CFlխ*;.zSI/2Ww`S4 nqB PWeU^o!G$&&%g!O E$@,(*b%Z DT*g$ a L2!(-+/e(+D[z$ױ>ii{ӣ^Ӳ3΀Mٓ }[ 5xJ!Pc 5 u@ m\^ZX dT"&r%^%&$6#$ %!r!%'%d m Ss.7Xe3If Q } h #bAr;&BdvA"y$u G+ω̦ʕ̀@ׅhloS &&.X-&s &cW H5L۞r[ Vs #w(*)(#=\pO $ PRP Z4 #1p/M+  %GѪ Txfb'{V"m* rV%{9qo3֘ԲPT=Ԍڼp u &b&<o T `vW;a~V d+&KA *Yw  IJ ml]\m fn2sBbOy L vol{Sd 3!H.u AqU$9cafdWz'dB\ Q`=% K\qa8}Qx-SJ {6y& =c V ClrA3  Uib/6'J * 3T  !0  &PvueZ}M>57.tQ d # jM  2j;,MIQ~ UdR !!w ( -Iz nFV'w* -`?N|~&vxLpV=ZM>qH~uf 2q 1 N H<% o wrv % ,^O:[b`KB r p$vah Yu{7#{od SGJ&Q D0+#Q'e^ ZuW$"5J < ]G   ;~~ R  :*? e=r!?vbX 8 Sju  ) Sq(dYC oj)4- eX]}O Cs>- icqg mf z *Ai m )jK@ s~ 6wX571qqaG 6 M, a3 RF SW zuN `r$'^ U: p}O:6Q6OU+~r"geIgx(wG u 1vnwe<r  W C v2.hM*#{*=~* Q ? DJ8Loc:'qM{;>U s hP]uDb~DrPElIh0=8LtG,_k:  osjJ+ 5m' F=7`%  } dX &jn \WQo:fv>Sl kK nVM%Y  !U _`'k,L -$wo :v/7 {6tX eLA _T^ 'Pb {{.6WCl=F U(b  ag`9e y~` >< a_2}gp Ha(u9f I /xW+~H}bZ ?87 1 oe D':t F u   l%"b 6& 8 {] 7 D * S,:",qI)s%. 6m L:`G#V v /U[  gfs lL"# KTscoh794oP9 o$ lV H(,p 3&6p>: f*8 TXJ!L [Ht Ziv+JSRW~@+' ^X ?RT y.u?3 G ~$sI KT@wVC_@gx t=Q5Xx ZDp yMSIC ' S \i6 C 75({0*F/xHR%XM3#3  Q nRP'B {ygB ohe F\W!Z"9U6; <{MD.bZ/ Kv0G^OA"&L m] o' Jm=s V6e/ l ;[U`G-<<+ [(CN yZ9Q(C {> Ovy\$TJ:AlE ff=I/.Y"{%Yv3g < -Lal+%cse6=.M M b!/ s w ``;WPDgv#G3 IQz\]560_m * l@g -3 Og I~:g " S3 Bt:pcL }$q! eu"Wc`Y8 H  d M(!3U>:i yY@ Aza7W2X w!fV:W, x y^B1X-kM@{+u j} iA](I8s+ n$b+N Pzv~& MkP5SuDQ4 n?< A:P//3{Fyl-M8Ri{Ne9#H-mlopqxrVha:'zx4.;&'"p)aP4G'8(r_9ji$h>eK^M8dgX[ !o^UIJbqnx\*o@.9af~P1Z"nIh T6%/l0R[,C.^%.Kj=\ZSz`A6#3oWG?S2KKoA9H>#D<n`\>_cYjqu26j ]6$5dDc9f:I d.!<FW 2X8?^[q:VM Xy9lFs5wIb/ lA&9f&|SYDe)0^`a(V'#-jAyn+%^#vP<+l<-5wC EDim AX0zW9|v'~b>1)zl&Aqj2%n="<Ou0BXpO-T ]Sr@ 6\HO 5-O&X>kUo{f='z423bRL:I^C2=a-HTXhl[l@$ZLnq&haCDd'YOwq5At#aq{$ kY"I1R#OHLKORFT_nP>+  VUp)^n{s f{Q= k_,B_/}G r`-TOl[)J~] hk|q>2g1siw06TFSSM[,.as49VK;SH/mV~T5d)8T +`u8kW 9Z   (JkU*mF_'{,1`9!t !z$$!)<zvULrpsPy~l~93tck]m+\0QL7|]m>Ux @:^ZCGDpK2$fz E4 -hv< , < l O O Lzu ,  p'BLx^IN0MeKH_\=dq/ R  R@+ ( IrS B (ZN shV y"-Me6a/I1 eY f  n& u.DI.I49 ZWKM: C0[UD/=q&@  x e Z=i<f  e.\+YT4h'Vp!7 K K'S3O ds j@ K uM0Ptq ZHjBgD cD >\pt!$B .B =3 [  v @ l %EXE.AjCj24t9ON_ K  S%l  1 #h84A>( >W6 + ""|# qwh cGUYTK٨Y%<@I Do  R&kq1@ e\B [zAB u [aysx) $n:Z.5=Viu HO,nP # -p2 5\1+*F+-@/.l..*M# WbHa4;ہGюJc./u ;|a@Y|%-@fYD bu} e % l :1M pzeSi |)e)G"!$ f -O'" _yyjQh֧GN^az rp}SLfzB>pl-*yqrs,տUB{L [ WG&3!=T e# .t0.&h !:&-+k#T   \ "(x(#C!x%%Rq$ t)hHNV2CYxmuHS2PstݻܔW_kҹdx׳|TXG];"o'/6=>n7)R%1n:7+i3\TQD3<% S?I%"X+"?"wU߰޶xH~)Xh4+7ovGL7 - %3 d  % xaG3f ;^Vb`J`$%"]   qD"% 8>ۨ9^/:C,96X>/pG  B )- ;#%) T auO#E$4XY bAޙXI/ "B! vQKB/cMb\o:$<ԕڎ]j_!3r8#'*@./X$*|g#v  0O޺y9bߜ۔3_ [.>5YGa[v+H]jd'K1'2* !&'oFXs lSdHKoS&MspA$uΠ.qa`gdwF ,&Qce$-,!R3}0# [bH[*nL:qkV*FQ R) Wc ( $YM@]%%''3$ `: {*Y-)UJ1?Uryd}yobY~?r$-~C7"O[i(\,LS+" N>F zI[55!\ Lga ] v 0o' | 3.Dk& y: ;%@o]ZG3N+ߩ}'YY]R:(I6V3xA?R 4   M "#!C!%%>! FI n  ` wsG z3%!E {+!> 0 I.lsYP&19yT+h$%EcZ4tT\S _ wW- lk[ ye _}8w|>~y0u=uV2r 0 !TU&upXF,QnRv`L+DqMNJ;:|hv wl_$ D""%%" 9 g "Y Fѕ #-)I!]4MZ,@ Bk:yQ IL]u:GP{ 5 GU$Fk? &Exs=V9E s i 4.>ta7 K2 ` >NHCcX|m\gW#T{  ) R >h+f1C > ^ j V arb6q x/Imm9S_^r@dpQ|pTl}t&(H$-=ydg V@Y{g  >} .MB]5l)/d K B  h`V.W9P :n57  ! a;@H 5kSpzQ_8/ @t(w/  g=(Q"mOuXn &@m'0jeC$h (4oaDT-D JF18rcI;3` )0Y3.r 1) s?i59UJJU0 ^~+I _ j^P_ns  ^ (~#&ilJmy l]QD"{CPRZB1|C[v0Z"PW>6 88 q [   D )Aax;J_ZG%3%  W 0(/ALcrr0_mlTlKZt;E &h z&wzc4Ko 4 4  %  D a r1v3N?jT~#,d\9lpw8&O_Z2Lk3%X{HQF%  Q<V"+`8]p0HZxN[=M3Mq;vEyf('~Z=jW   t  <G*5:~   m^~@P!6NV8 ;Iq4!1DTDT|T5njA .*S;    M k#Nr C V % t " A]϶D }Ic3kq ,cW-/iAVbREa0UN23/s>_# O NUG: r 85/ kXa2 ( lVWpbSRj2JT=`"r3l : B  !41QwyPo#"N#"!< 8 0 "N9 u , `  uz@ 9D27TI"bs}/]}(mݫݬ1z8i @5 -Iei9@+9GJ\!(}A hp,U3!Bw- 0!":"o$#())(#x [ RJ   E' Xp0wJ>H[ FUt @$wmbb}'h s[Lb}8,\MlT} bZ=05`A]/pk8c!$)8,, * (y&g%'H-0-+V,A)(t%#!3r dI}\oZ T N f F 2y1-K9 D9}*cEn,Xc;&v" t ~E*tQO!> K y HMI dVݡ؄Ԫѹν>Ǹ=Ֆw{T:| u #(5-l/=:s61.*mgE pT  n4 b#s$j&~"uwW[M #mV;.2Zf3AwU(h^rUZ|jzm! R\7 UrU$ RQ|C+r!@Yh qdmg =Q | Y $plƾExԫvla;#+138=CGxKK[ONaOMJLHGAl<2()@H*8GD >q-v I 0 AcVܼ٥ۿo{Hrf8 Y 0 B# l~AVHN\mK!?"GKoZoH%BuœoDż?¿00Ģɽrw "]+0x6<AY4:rD9fh  j>` tP!_ZH8fۮOٸوnS &o&)@-2r52]-*+$#Q!(fx / ea$>S 7 KKt^ `|9?nl TT^.mZj )vsL\Bm^7#>`.TTg y368Cp 5 w 1(}?{; 2 ? auA,i#@46 + \Nc{ =  YSF_iz'f)&-emk`_TJ4y#R[   N [}~cK.L D) +G"%)A,-+)9*F*(%5#!dc; zC1V~$8[\AINLX8l+ S<8l0igbE;UDt-}B6uM<A 2 PB&ax+Y!a|Y1 ih/, k D >  / i++]GG3^KW#c.Fp- VQ (I;u6FtCp\%b'7mpqal }SBW 2  : ?ZORT[b5( ]^vh~@  #vq^F C {"MZhy^&?G2xuI@Y@5 Ugy*4z  4OnogEGT=qE[k9# % X k%^pOVI`)A8rp~LG20qK,<t?Q\ ' R E ' bc  5k%|QECT5A||)S`zOts1Pqt@x.>eDSm2h O ~  n:ic8mIcr)6 E+J1 s s*^dF#ts=8ck> o  Ifnk]rv0^ynG*6\anf 'Yy y X  DejCG z!N|a"AY9E. p 5 > _r[MqQ?vq;2 4 }_^ȸ uI'$(2rt+d`}G]@4ao{+x2Kg^y,K $j V ] 1RO@)WdG[%cd}\$  *:'OFDm] Z<kI5zjNa%5CN x } $%%5%k'&#)"  o_OBz aZPZgYܕ8 p0S ,m T  fU03rkzKdjYt:] }. "C$%')f+1,+(g#~ Wf T:92-Xf!OvtVUsb?I?#EHt+<OHQ=I#'nV_ .$a"$(9(7)+)2'M$A!M c b3CVy[0bf~f2] wT 6+G#Z%%$""\z^heN[ز<ͽʗ˴}huik&d; $<3sEeyQ : _ A W@M1݃pݓt~s:O"%')*&.x13#3%0/Y-+&"t[ ,T]d !O3Yz%%%8/^09__ *  lFE] _(bN,YS1b+e/mA _7- "/tP'-p uCv   *&1mLzclp 9i&..#-]+*+--F//5//g1B35667 7_65645w2,!k6ߊֿyHcR]˜ƇɁu -'AM:CX o Pr] M + HR0hh&~Yuq{.fݷv3T (]-4L;BJF GECBB?h<8210.,)@&?Kn YUoCAYsk o:8 Q:- -1wi.M5DLn31$5^}]lL_ۋ;9z)n]yv+8 kv,  6 Sn(^j',g?fr}j34+$x+D0N49:73W,#PM~ $i-/7>?<6-  \k0oƷBM'Âƶșʞʏʬ6vݩX-Lq . 8[y* '=+T,*'o1 L֯@5 5A.\4Kx J@-:BFGD?s:z6"3s+2#S#!\_ _B5-6Epj ,%P7L$%!;, M ?y X1< B  !/MM^!Uƽ k3""xY8 3#k!Pa5JC(yknTٲaͳ^ !V `"G-zmZWat4 7,n:!EEOSV~VP~G<3/,e(&)H-T3~9AJOSTM!>)VݖҬSܯ3|1\o ;g5u m߁OȚ>ȵoǖ%tJ\ *5?EEGA7"-386_;լ\֩h A ]Gμ̜jދ d1=6E9MQUR PJ@[3&##'K*+++,*t# - ÔNxα)hF ydaC |Z !-"II}*M^$,35*5857/ VN==RDOĎiQe'B  Hh20^z.cwl mRq"$D{(QULJڊߐ+Hdkg"&1,132,t! e BF{"w.9;c8Q/)M%%w'+2-0/z26k={BGI/G$E?9E0O?+ijlN+@1q4AۉEW. ]3F $" 8&[k68YsҹՇ؂ dg{F u$(s*(x'&&(,b0/.,z& $d8\ۙp؎ In~fr{WB4y}93^<  c$%mu#$C#FNTsbD0"^Ak*@) 5L929"%@!Ca Ž ;Ñk|e ! $$#!!0x hb2:a ( 2567;DJOPRJ?6/(#;FP-N]~ol߆/&o{u M Sq'\n' qXbX*kP7;qw޺Gk|:+v fQZ q"3! pȶȻg?ɉ΄ԥ:l 5 C&~a3ڱJ(݆MQcF<1)6 οHWߗowJ!"&  \>Q X r#%)c Y'}|g oj K&"!l&"=Q6S#Ji1|g F BoC&,pۢggl%,&.f(')a'!f8abEFX d~_Q3%! 0{LPKfٱcZMC$ #o K ~1"xv7)P;<Ӭ1:ugaI;Cp-*#*(UEk Q9H(A04q656C71-)!5 hC1tGb n [ ~B%E^=֢ڽrV` bo"))#&r8Ҕ9\qM4k$%$h ^ f x 8;o^co-,p! fLh, "'C$ hr-Vm3'MJW*Q0 X !(n ]E+t[?N8  fZb Ne޹جR=g.&]U %hf_ rqڽrȾ7ݎ$ %X)d,a-S*$$(')*)$g} x u yO7i<7M'x\[>Mi ( 060r.&,l zqir4s@ҕݺhh #5#iyQ pDn'8rtcJsE&3o ׮Ո9<H%Z*.-x+(Z_I'A#F0;QT  !g!,l$   s 2'W- [!"8d#ޭ9n | Aa/:q0Lx@oqa]TB27'Ͳ\ͱ̫OVҡk3 *"S(()y//21w+"%P !)!Ac .g  r yzU [ ^hU5CQc& b1&'./-+$ T ^iQ-y 6*8r"I R"~6'Y!I$ / KT}؁KtKi )3A:95-;%ShK]= W?AB JfY!s*|g1*Zw\W[F(BFA{J,a,W /US h V :' @N]W:(u}ȕ,Ђ97h7Bj&+.-*(%c"V6f&-/*`"&rXJn G b*.y4KRs Bd8%  K&$b* `$ k   | E@O, o #$!6:yz YX   -a,#%E5 M {F&  h ~&S Y _z+v,\i4  S J?"l   !d!=!=|U b ddO!F% O h H < 4EOw?);&nGբʯҚlq7i#>-D !O"H!Q % #&''$=%   [d:y/1.NW7MdL'timw hQ.JQDYgwml&~Zr GxcC }9"l-rZkDAZE i1 M x V3FQ~ cD ~b Stp< 1% J*FpEu~E KlvIr(_/# s \ gS~' (kճԖbBeqo(0R}2n )D/0o.*+(')**)'%8!  / bbu w M%"7.3TYOi4U -yDD x X)GY5F"TBam54z p "#!Rp0vFo xg*-LaVK]I'Y G 9* sS!atedr  ,.m p c |}H:(+ q .F  fe~ s XLs &~u N<آl&(?3v۱}--43F U( c W }$*,*\%  RC: \ C r[bQ{i vx  Mp>*_3m%>W|] E NF4 zw - O$\6NOLG_P9m6&v Teyb=S hA0v /8 ;OHc B bC*>5LOR vQ# N^&,kO > C< 3uNw C{}1o2 @ A) o{qK" NNj8r S  6 A | ^  .p Wh5,]-'?e+^`Fu)|\b w'F-Z.&,Ek *   < 4  Y1;h 1_]lr=O#zAGo_kF q umXuj(QAVVUxTy _F2EUz-` Q 2 NcI{qg NeIS ^ K -8]O[*o!wF,Og|6EVF*0bHn"XTUGQ _3 oYrt! 5cwO}$ <zF*gOq=n__QRP|"> xYQa*^89 A 07; ?{{*{Y#Xh@, U=7 #  :  WjbjnO4c*r.^C3Fg82/k S0"  I 5=:`  g r Xc`BVaodqFGc.FdKY|o%)H(uls X l  A NQ9 %,jYc:Ba.+ yG7+H$dYex'yhS\ rwKEc d`+ `!.'rt49Xe ;lnsnN;V;!Zb9)S5 ^cy #1/T1{q+w?_B3p%\ n$8Zc'$+0EZp`{ T -&Qzi~c/R\Y9a"$!*k-q^2+'DbP]_;- ]v' Q]*i$n^S;a;O\9vK\mACsw $ ID7D ^ r rfOjcH_)q=aJsL 81A3x!45Ekl>O_NLK-%&qj]Wzk_xDh,K\fY}A+>cVq|lk) 6_9b$sRh\'|H~j_+Q-&D} >Ey?R,Piw_ACi!5^ko"&Vlir1$sae[9"j>w|vst'o8\(,O}'qWw*gvBIP5EMCs9Q7U4yJ. `of=N&QxB3`$L%tq=k)S.[`r^#[S$MrWb`S$`2$r;{r=#XLSV[G%(XCSR.$}afxf*i]T F 7nV79dXpDx%'!4oul gZH0J#QXuUCA-2 KFoQ?"  K <`8'#SrX|qG<qCD'Sw$q9_rjaaLkFRS6% #Z9I:@-w=r^n)L!GDy1_lR`)'usf'iZ=x~Y'N ~P/U &wRlchMTP^Vl~XGHz`e$Xfm>&NnyC"Jry(v)Qn-]"boJ[E6z]l[`5yP+ ; u  ( OKW{r/B[/*(L9`<9-T1)3n{:`}Lokptb/?- #UW(pe0 COB36(0FVy@V+\Gy#DSFb"t1f7Z&g?\S@,k{fR_c))MzY8G~xz:Uq/Uu'Pu)f^H/i  hC :qBy#BP:=^`g_];~x>7+?I *Z"iiWA}7:6?2Ok}?TPgHC0:qg{zWP:D%[XLgj2@x-_BGy3PfMU{2R;.6I>2iU"Z= Cm?i>p GinA3(!LAV#P$&+b$?Big/ 4f`he  wm !5 4Y n^.g[251fl|^UJ):i8M>2Dg`@N7,Fb[LwJUhXd!3G{]_#/40$,Z>S-0Iu" RZ) mIZpGUjkj|MXyNg~2.SpmW<2^@OklLKn{Y si0"{bccD#A%_<Rd~M#G%nJ!.! '' " ,GQnZ[/  C6G3,;RFO!%0(1 2}/ R%$(f%;6 Jo";> !B E3# 5Q=R)! $ /*#rQ%K!# '#I : #EBFFCT8S$Ss/X8 ^% 10#4*g#=T-]>$< 233)H 9 !, * L2  & $+&%#  %KEbaI\Z\H;h[>ARO*!C_ '   "=bR8 UN3HE. !    $27=)2E - ) &==.?    9jF$p LD+'-YB50.{hH q2$7*8tt}4[!ARD:u/i>uJn$ !j0o`=oGG?<2kdNW2 BAxGT1ypoq>8{^IX5{xf!2r~fs=# h%Sd^BGsf|q!gO'zXF)Q+ =OEJ^elbc'C}y5yD)afU9\=(<yKX7C.'}>#sbjI-|!lemz^$9-GY {YZ`FL.fE 63~L  .T; kA,( b '&$lsB1EHl?Of3}& ~Xu|- wI4UC{ 1'r8[kKCi~Hfn} LH5u7z2j >|Jk{Gi kquxt!= f&d?vim'-`. } Vw=$zBO!> {&ar|b 5#E E  z p(&$fIt@[ g ~fl$zCyK kosu2 5mn4o"qt CQ&,If.]Oc\y"OnI `nLv owt^ x? " dNtcS6A_4H*4 '- D&lj(> {9=*z( @)3~`N9:Iq'PG eL3D v g 1 D6: -pr=[ x a#[c bgO4&|4D Rtt{O3v G%|D u g7,WE?)5qtXG ,jI.m$ Ql /G)SH=  j#s1S1x!Tr#@B ` ~ w4T- gg qj5d BWU ~\4WHm; +iU W  L no ;  \gR1n6S XFX?]>  $Io tmY`cu  G zN 7~2-f) <v["! 0 RxDBwh}7.)6  8lbg cX '+," Sq% ~s*M? 9?K g610t^d *NG< P 53 ,'$ Z  <bNxs G^A bx J 9NX'eI%tN\ C4: }aF o[  eQne^%" bXCv7=wS }W&9/ Ai<u_5 l&}+}!ߢ_ tk/ )9.eC 9 S dx Kr, 6gc M#V{ 9Y8 ~-2%5!E<N  i fC ok&~  LQ[]| ?  \O  aJK Z C) `*I X|uK C5H= | 7o=XT.gr9V)|$ B (KKw }V3z7pGemPI):*S jcRW_EvQ~Yp .c fI -/ O6Da.V &c xFs}|B^W hX% j+y2b;"/RS  _ i8Mi f$gU C2}) P/4l /Ap, UJten[" 3 ^G#s:N jDva{ lmE~1.c 11.:Y*Jgp s d86s1 29  *L 'a`rcD a%L s|XY{ ~8;d3 \i $j+ } Q ( To4\@Tn[, MNt hnd_ ($j_2 w;ib>C 6Y $~:N , P h tpG}5 5|t).Ox rRMh<z 1*Nk] !6G% D  ERs2 ; ye>T&>' > e` 4  ` $z- K t O Gb?R4_Gh dy|e%( 4 +DV6vBrj?=H/;C-ny   mm V&]  \ P+% MGj>lN{% 3lSG1o| \ &n^ ~;U` | "s+yE}.3wm X # b \z9 %N,y`/p40goEN6zH]O5y|W[997w-0Y q ;V - g`w| (   a4&:)/..0r fGelUUij9#}2TGZ?B0;| T A U[ k [B{<9+loT UV|-"TaAKI 7:C6,YOGhs,2[VMkF2W(V!eGYQ_hl\Zd'6sOD4pS9\t6 $ tjhC5rr : S  lu %o YUF;y=c-n;#O) 4q)9"5 %$;g%;AkZ{(~3( 8 N "x xy 1vl9(<iSXA N  /!u[e14 i| & > ' o6!'S*Cm  e  l  z rX'7Io+DC[}e = ( U Q ` * HdF s\F|L8"[xVtzbtfpkueY`b -ah> ( q9#L)4MCA8J. {eI) AapRK& 6YJJrK PD D} =  oj3b `Ysb++)EXktM DZ ~U LR W ` \ * F = P db}ulkBKhm  8!h& t n K `B4L"5%O}sL J'4:  64U9eR1p_KQx~h }Y  : VMj<uS w t u O-qxvjw38 q0^ R wPkDXG{jf|za8[Z}<fB(q68 ?D5BboO|Qq +E% eR9Y !1J % ?  l2NP0v >gwRy%$o\7s,vs.o,W a |X]#@Fd)2> ^S j6gxnk&q 8 iJ%O݇#ݲ48Bd  X K?^j - F J ; S1H`"^z - $JY }np38JqFl"0{ =|Ay.-h 4Rj^.h,(C_TWAM6  + 6WYqn١(iNu{;^z_ 7[b 8`6FG[:y. OHoM yI  ^ $(<sI y^&;RH. 1.g0q$ pP +dfh^WOe HS U wY+S4ie `o^ ( i r b RKK9}T< eQ`KlJܑuDq>~AH l{ N a* - p 6XZ""+!;v  s e~0C;v/KvbKgtZ\ `@U x eU g 0 p/Fge*]i39 fXPX$=X2?08Ya N(H(5 a` qR_X+R -> C()I o\g4ffPCetغ߯1g Sjb M 6%A T"6 q 4lt#\v?)*leO*_f:t [ = 5U g \ CYJ^])FI+(Eu'N?m&\Xb<Aj@ E nc,  $ h'e^Z__X + & e9(  ' g m_s0 =  Z aaW`~^tD `\b"8m8%_ A  E :V N } wj  ?  8 q  /w>8zb bX"Nim8SJ4$ P S=*>1 NH=kdtoUC}c}DsQ{}.PG)P$DT U~3?5Yindyq w 5  # x U|WDSZ+!_oF*>l48h ;h]_]&jk*q"6lHGqbx4/6w :N n\| de qpn{a>6Aoi;dyuM-{n?|H3 C<e -\I < r]F*/aN.@j  {'s|CRHS \7rY75 9 .|g- b_T3\y}hhB*?oN5 ,:R;~Eig z\Uue 7_Z]]RG\_]L+9ag %>pUc i! * E&vpIhQwtNOY z QOb!_JC\*z8JO{1A)^Or)cn9=72c?__SF<u%o C )  y :OMu jHx(F|R6LEo2!UfH  %< p  K r|'$rRd2sXcwxa"70C5rt]Q_eH BYVrx^7!42?h  r | Hl2'Z1 &]|00y._JdEtKCgBz :"4   s +wydN_ :VkK+Z:42o6Biz&);7X'a2F[>T~ 1  ] pFcQ_4 u\Ah5t~:5=MkX_PvJC%<n-\lvDtLw/ x8ZPyi:!<% C Iz m bekO9rxvBD+4yMz Pb0Q!f ,   - )  _ c, @1kSwQ_<P3!ee!)KIpuYaj ^ bVk:$[9 < mhXAAV2N@BR&'EP ejHeobk6| _o lwk l . mFOM=synf;dNimR2Az? !'F(JLLwwT+k=0v5%5OFZxj;S3U3gF &  A  | K P 0 -?,h(Z iu@bp%<_@+EE q , -5+H\UA(4%)pU   p f  " /  h  VX%KL1n-V|2tDMrYc{h,_P]u7|1jbm S E4$ X _ Bm 7 4  5 jL#z<'jbu&6EA52?jg uLjSgl5^0Ol&f^$lV,ba}OofAQ (@>hA}uoCK@* IlUZl ` jk@ku/pW>Y??X,w"9`zF|T_& : R b - 5 | myw& +p:}A~qyy{&:8.,GiwT2O$;~U FP W f >eLD~`cDg,>$: v  v  %/CCrTX/bx9 M}6;-gA'LKg[ 0+~*   % / k u Y | Jq+&#y0coA1*3gVSop`z<:*W59&"Q\2zf' .5wg,-[Ms"'K[ % 0put1 HEkd?[(Qc(PdoNV;!h\@Ryt3 }Ffb L Y Y6 B 7 v m   ['R 7 }EAX7 ,@s?;"w4I4+fVx2S#.UTv !3{Z$?R,vq0U1PI|$4\N{(-TDH_5,.~;oqK8|5=B ZJWKB7hOqRP 2#kk7BVmt/I mk[4 Y\A7Inw3iV4`4Ww6M4#';GH@E'x/NswM 'ZS@"K"Hs$baVf60PRkAbKN@Uy+Bd#mjH/D8R@sp{-EtHYIN|)SswtH_mV*tj5HoS98j8=>W%q38 )p!` ;-j8`8~M\ 7fF=(CWs&@pw@K\Emz5rL$}|sb$7;bkfG0x2\Q$90|!#C'gL*k{[G(|q<&C3/gNy(ydUzY'!G|D/ CkESU\|R]h!Uy2g1.)1 ~w{%MIyKD +m'}n J|0FOHTtry^blw84aQKFP-d_x5sW_oc\j}^ %%vt,G&~l a.GXor xJ3"[1( z-B  (`8"H(dnrpF> WuQGv(#Y'>r,m t8VXX[B*j.=> Ow Q-[7(:4vS,Iy >%51H^`' !DY*< E9H]JEq@ 6z_G bEbt f>"6Is>_k[%&I{4XoY{ 7v3t I{^B UG|\0b Q=88/n5}NTA-7hC-v}:Ua,T8:W%?/hQV/X\Dxv=48^5>NItL1f2t`5-)G 4x5s1%@MEI>H$Cp.Rr i- }9=XCI1 >rRQ5U|0i02are73iZMG-hJPnd8_#7Tj=>u]qiAn2bj[P;U["ISmams(J]uax\'?&k+%V&g!bA<5Od[Iy1R=}Pt\ Tjzgjbrm)[AlI'~"*%Rnj5w]&4(}59NVF7o4i2"JJ:;1<8YmT}P4Gaws&T>A6Kg6.>+x mz@zx ..Uje8znU#SQ.{R^'bUaFYM;)EK.'o|3"pdRNd:{ n)+`WQ?D  hHX!BeA&b<=nZ^$YXG('CF&nj^]#onb/EoqFgiXX>0!2hXTx;C(`c3,mZd@bMpS482J ^1 It}^f&JCbY _0)I /Mv1E)1O|SndWy-?4[@$J,Z/\:Eh!Hf1ISzlAaq_SQ,6Brz0|rgOU/`:)Y4D8]z@)K5!`f;I6RD.0mSF{ Lw5M]aR:h#w KK(rqj=\a:8WOXZglhmzA'snpaK|JRIX Z< $k'FB~3-{D2]IY =2s9g(qMN=,+S04LZ:Uk'8+_#qosL\2QU|_kTFP?s1J }a-k5"H' 8[p (KgvO:.+#f\ %<krlpPJvBZ7UBn&$T%&gY>Vg_|8DQ^PBt:+3SdGhR>2't<.7u'ks{{*v0cC)28B4Ivu eg[.:,&5D|tcY,wY(y62#S^Ps'%V#[H? Jg^?&$RkVa 8~PG{M  !Jx\}5'MH)MCoM3HNM 5IxjGYs 63Z"kVHFNT 9mC%eNe*` @&6nV'`}B]y+;#_}Lx-]/eW).N&uPf2{P%7eZ\;+Rnm4=\=P!|^>1/) }hhlw~duT&9l_|2*B-I)3hg?8 ^- e8OGaFg&W% ]E% C ŕ Vx kS$+tj&r*7*g Lep2/,\c`f tY`*d_M["q8O/6iA pJUKZ1S@D   9?\ g (<? ; ?M%h\'P V.j - c<wY ^$B"LR$k4 u r; I=2h3Aw}{n)d qpwybFy5/B^dNx vWjHn\tr hgsksF[+P8* a1X|-D*] 'DX(w x ;tU(UkYBlJ.mTF/?w'&)6  W{U>qTizH_>?9|eWSPMRPY e;41l}(XA0jnk h 8 ~] X: eN 9vd 2*xL  M V<j([1{-dmilM1> 4 1j% HX VFj/T_@jv1_-MuZ8np. 9 B   :\|.P U TQ LO  ~ s*1X&']s El,_EO4~$PD_}WR!#(GF_'W:3c v "!&" !`p^U ju#C~:n7Bu :V.]@Qxa]76cCY"rAm3"iFP/=uqk B P ^,oqwtEO&  3 u ;S*5x  < e(XQKw_mIA?b)  ?s*p[+T'8Q. |m` qLThG 2\ ) 4r- 0fhfsZx&>yZ&LgDf=J yT lRm[vx F ]+ F Hm4 {0;*? J 1" J L %ehN5-n&%`(GGcE:N%TpiP aTem ,z t 5f?&|b `+i0~3&<|n  TD9" gX\pZ_+n*ck"R|[. $ 9.T#k.gwF?sVoo"juMJ!vL> E$~HAo|.~.?r 0{%Cz E * 36z"RBUB E}1""{yWH 4>B03CB Hglm; :Iz4 7|z^_}?FuQOGnRtg1 4V~ ,t, *Y e (  A|> !-"LV2S% -S c^ra]* Dv`(i;n abn]J c0 0 OF m H g w y9o4^c #DaT* z 5jZE0z yrt! \ 5 Q9O/ZG ,gQ{g% NI3lGjS8?,,1U6 Kn T7` l !Y &"@!w.8?1d& Vwxf"/g_ /z*t(G[U  ( 6% M\w3U?z?#L,'7} K  {4p @vqX<5CQs4BV$u0w)e } Q H !XMSm r i > A nJ]'ri:.JiM}d! grA|(vD.:^u QK!  X ,s \i`[1Z73|@N ;Ev-;Uji+c9oNC \k 5tR u%c&FIger}h#qen|}0!|Cc\a d" 2? = v D 08 -o  s OUy4@"/4N{4fVGd#oAft> q*WhX gQ` 5wmisx{m,Fk R   ~ J , | J  R&C|)=4l\zW'*0 $;'X~Q2 y7_iFp T M  g K7 _%#QS-[VL7{tm3G*;W Oj!t(  }@ f{ _~Ik ~pmufPBn[edSI6 T Q U RiPse7sBjYRvc ??{ ?Rj:G h  Gb0 6J!ys dGGv,zIKkCp p `a : N5W|h*8=o~U{;/ 4;7 ) J|  CG/&*!1 Vu\jNas?21PyQ L![P`K--5A x+q'Df3 { D 'EK z[<=@!( 5L%YZ = J . j Qrl(- q sD   iFd~xJ~hgi&L8" ~  >(0@%:eD:ztFxMr.PO~h_sl_<Ag%<zFZU _K&2qE"A'* L0JYNqY ' x jtN:6qQA3v|CaYI <#9h5O 5vrR bi{ L "  9 D ]g<A0Pt ! Hf{  CZ8h@`~o e 8 kf  [E  < " >e4z=$0}'l|m>!G}B ` y v b  \NY-9OfG4sx_ZX 9 % oT=lGr#1ra(bk bxQ>r y # * S[ [+%hS7. F ;  # Z ^ ]SSS$*5`ITX* 6A0P<_,8iZ';z,3m[G=)c= B w R  #Vs:hfNpMSnBJ 659B,TP_+Q8o^ O61  .gR,5F[JT+U_ J G R c O$ T GzL HD.VIN   P '0j c7+ja4s;e^#fVdI v3AY ~ pM~tn}wG~_+]x\ Bx 4C2 n F` s kA =EYx] '  ) m {H]K*o SyEM+j gO*eB5~ufk;P)u 7~dmhAAt$ ;E R & e3n6HR(N3*a!Z{Jb}@))*[{Fbbf  m{6MbQGeh /M3:bc3i B M~o%hNE5])9~fNN+_i2l7qJ[_E_p.SBikfO3SYfgwXj`;9 YqAwv 33n]M$  QZr 5cR 0 ]I8a+!#J _)A^r*/g=JeO [  V&kBhBQV8pyV+Q]rt},ig7&d"d?%OrqWwxZ\,e7B )@ofP_B$kIvKoGb=GO:!Z^k>fyJI y!1"$" % 8A+z -b]@BS7[][<"G]THdF_,>:J"0q|?G#p@& Mt1cZ$I]\X!M!HJxCunuLYr,Je{\C7Fqv :<mtH|L0 vfX%N@ZrE wH##{6#l^ovB;<hb]|1Y {A: GWg'~b2g_l~,[98M39iI {..%G3Bd'O' jdD87FR]8{ZvEu>8Yv~Xq\-Dh)2LarGP>i.ig:lzyAc=4@0n|z"] ,0[q#G204bOQ *) k;-_v_qP_]{moa%acR$6VBw\CPzr::'pZmg[)'X0&K@i.!F`7q+N*3gdN}x25iI|"(#EKkW!w"p x/koj."MpUS*Z},EK_ ZBQ;|e"*W~7 J6_15]+a@Lv~>WNJ_8y)0r/j/uhH0}o[cmb< %?>g~xDrLy`nUkta5\'>0>FX[m2emU"c^e{(QdB~gI(tw Q~|@ef1dc;_|w"lG:lC r]e*~ho*>nmyO@xGm>Z11Ke Z U,Izz$,58eBK%;gP~sK ?Sae*J;I;08jb$PK Wg^^R&x5/*[O sk)Jukv.8#z$t(&r&ZFHQiX4i7'-k"2|e*@0Vr '},r}\$1JiOvXOr)F _q-^.c~',C$rOU(r0 P$!{ n6>;lFtzq(&sB0l3lCChn*%%,WyUB2eP ~%\G5arO<.vY? 8e4Pc_Y#FjGs-$l{,~<uc'#_aD\W?@DXA*= 8 7"u  AxTU6N<j Iog>]uvY>\%`+R-s4;]C2Jo, "|YcXRzC9S N,/ulkp-Xk }[>J_Pb?hXvI$Qdi<[/Yi"h#c dt( QpL[_A` 2_?{l?2E oXs$zW}DVqTXrtm A7V,b*% u#,eBmRE%1HX '?"27sDj 9mKX7{=M=*31A/zCv*8Q"GQ,YbZW=*V_G+94)+H\rEr>9[L8^5O4V^*)JV)pG5 Vk&{qp-] 00?Utu ^fS};4pHI4efEAU#Co ?Lq*: Sgjk]jH0*1bvZ 2X$SP8Iyz]kG_|j;PbvvxF*A )/'+@Gc) "ia!^)&-cpiX;'pCQoXixAW|f-4nQ_XjZol,43Tf66=MFq 2v*iF^ "fyV/<|a@z9R}m|O_G?9}gAI !F6Ae 1j~'m G9)~H 0=MIi~;{3*xKH{qtY06d2BNv5qPfn!$' zsqA!RHaiuT@I_) sSEtw@q;l?cD:9^KS960`d&BH4W.A_}vocoder-1.3-src/examples/modulator22.wav0100664000175000017500000030013207542365700020162 0ustar emanuelemanuelRIFFRWAVEfmt "VDdatarKvmr\\vzi`X>Gir\zzvi\ez~zrmmmXeO\KvKO5``rz\`mimr;H;*&zvr~zz`ezzrmmw0 U AJ~6hL2D/ m!$FXo -)HUS=x!HQ32DiQo=Blk3'!O h Y]Kp)Q K nKeo GQ W . U cN'R*Q*) e0N&u93upo +  3H ]/}EG%@T a&IK 0 4KY+ w[aR d3 jJX h &fE } P} }~j]\qf ] :D`kn. )G,Q =o XT .. #MM%w; ]7 im@-G-b5,=h"J isL  " # }&WPRsA& 3l w  sQm Oms &G)oH  s, tJf{TH. y > r8um7hK 3Dy , % T X ?}U ]N1|A}Goh*3T a L  ; a,Qtd cX@@r&W7uzf)@@w&30 Ds>F:-$A$uR||*BsA .Q4\jB~ 8 kb"}7e Is)3GfQZ}RUX_ 4=\*_:p8 %y#wUJT OA7  +U ;1D 9V" v)*E\8cB:;. >kRe)[L8GX'Ewf,,|mA YQ  *pf mpO ;oK]+am)qW-- 8zR Ruy"Lio #7A9v/Q ` k7 `&RNuLjC0 3H@f `aK>WoH/EfowFJ [ *alsS@ xe6 . P: QN fݪ@hP>U" }f z"u am q,1?-$ )'o()%w$" W~&10(F.+ Y " 6 X}wffIx"unxo!<.^'%Xe/hJP_Av(o5\߫Q}:6O_ieZih3 ABqeC Zvy[$$  )Q153i-(<")!)./+A)&S#'<c>$Ld %` D\ az r!$t%J#< Y:S]~X6gH}>("W9iwTZ**Yn`g5%`لw׽"ۢhߠn ED%'-0>0#24:e99<BYC>4%` + \,w4i -DsT   * 7 f sz; w  8*s'r6i*yXob> \bj -T=@UzR6D=(Aۮ&kJv@ߕڿ~ݑ Sf v'/@4Y7*:E>Q@]FIJ9K-HC;7f76.;! *X0- Y Hi V/+ ,NE#}r k^G Q TBt <  6  ^ }#aLN@G@vCDFx|FI,7Uqv`s#Ͽj`Z&ι؈-B{OcPiB5;48Y@IYRX2XRJ;:#*8O1}(qRDL˨B 9]$(,, /o1P0*%x" . mwy?Hϑg_}  H ^D`߂/ۭ T!8*fݳ/"3k["x raL4&fˣ@Q—'^}wONj!/4*@ЈֿӍ r|m 1 <o MCm%*ћϣ 9/qde:@ 1 FP(T)WReh}\l!( = 0%t2ySCA/2&[MEC$Fٺ&R Tw:`q\^;46'29;9@:19e-stzZdh` !!F&+D.0^41& vGKGN̋3eТnԳa3~\J#$! R ^/m܎qRgҳ$l1 (@n`i.Yb1 ?AۯZ ۖ\\  #|"V7 R b/VH*o]W7]a?^Je9,;%ߕ8"~֩se?y`8iMV1N(S))C**n*(/0#3 ZN@,&&$/(.y21@.$oEXwΊYԣ]/\ . \kj! d=6mZ> Y `*'1X Qyjf T,{e=J:)3 VJ!D%&&%#K  r^NFLeO[7C Q  nc;Z)d"0k ,[~Z {HRՂw=\bJ[,(###$&N)T'JIp Doݻ[D› s&O 1 !'>06)6,/~ ?6`Gaݬڴ!dٴۋ6* } %!j r6gMYl y<?: s \ HCCmh6a[x' 3$#Z%%'t%e! Q QKoC \ = = :R /")o(r^N@5PJާYѐͅPF_ZT4A+ &%((T*+-+' PHBM"z(3}.- ]!&+4980x"3m_tO܋t՞сk v 0 mb 2P}%u j2VM 2 } Rln/MANaM1@k"&)n*'=&# j6=9Lb]G#E& ' w @ U6r- 7GAd"7i70PWwF٫рm>STSfI8=&"{*:*v-*4-622*4T02'a/ҽdB[''5;<6,e c~25w+n\7, VR!W#"AQkGI۝ݷi@7 im,9c" vDU"oZ>LX /(Zq4dE)\"%eo Q _zU)JRz_cs[Zkyh*,*Gay Hy < fn_9LS8G03(*),#+9N;-9Y=5?841.!6 S<=P{#- , :',-?'bKK[:3 ߭܁GG= pK4 4 b>|)KAr H&A V`ED ,_|"Ga-|}?hc7)) U)faeJ"y#["rGW>&|bZ3e* v`x (#V""&3(%$u&u#Y.R ^=|QE v EX N 6  '/s7fV8r*]D<Z 4rNa&C%- <|_s R ) 1  v $ r_7]s>+#Emp)R^*J$XrmB|)Y_ "0UsLOc )f:1}XuG Q &`]!^j.}Zd{0?)I 6 " Ro :w 0 e w B o)0:&z^U6U3:#^Z_o=%:^urmA:Gx(& i++e74 0zOB;D]r|}__f(6E/wK5?) |\ M E 3 XY#Y#G*aR^^ z& uoGN[@   NQOO| fk[ 'Gh_E@d3[&%^:\4J #_#)7Ol9M"@ M-rRe.f s?T  -n-[),ap j' \= R *4B%_,mAX11 )Zfy; f 7[yr p' (-V `u; 8w D ^GY1 5l Q_u})D3@&iasEh5pD,,b J) - A he:[lc1wo3 ;& 11\} %E#f |Cf >X# so 5[0 T @7 % E,W0oh  *;D"YK3 T UP_ 7H  h}o|N|Kj oJT y-ofvkJ<ab=}W/A` a7r7H75NJ KTfZoB4z @FATA NQ 1_-8\yl7O\*YNr ^R m0 G =1U ]m\^T!Xzl] Sz 1UYblyVKf="a ;DAN DIv_ iO--|>Zs *i #D,' W%U 0jJ/OzWܢ&Tq  ,% w'jD` \ 2<| Q:bl@R  oo q@ r h A/-|,H6  ƍ"w>&v-EJ׬)  ^GN *Q ްbtE NAnlac 1Iya ! s J߇R $3m9~k=A4 VX *||ow 3 a8 xl/9YK%Mm  #X'6|_ כOrI) 9iRbKM׃ JORJA ]hO8\)p1Q uK#V xDN CA PsH=Y)KCX W8i8AM 8-{FXxH  ,<~} Q o$ 5bAak ,d rG"& H ) | SR-%bJ KoT|T6bs Xn bGD\19ևA#:  J6yKmK p4"J(t 8R!ZO\_+  +f }YUh>kwR=V-<4&))v+CW w= y c|   aS21 k*@9#{J 3eFLQ=; ,@ &tL# )K 5) A-BNhj1#%O @o.|tU opN.s [ ^ j h",iXYN^:w D8z k" Z5hr—|r۽ ~^=y$G l\6@ooJwcٽ(߉= 7ZE Y,TjK2 t] s_s 2  Nj0E/'m7-uMMUr $# ^fJ i> -c*' ,tv-T1o =w ~m7oX&#C=su JS  ڦ\  #`[2;@;= %H , .XPs3E"pYUO t yryeo K3 - n9 " -0 b| |3 X[_\l7 3&3( {` =o{\aAp9 zp r `s6l0R3  - 4$ iwG~[Mh=f=Kr_xiI= WO7,K>! oH >*Dhrh:@k9_ s,y$ vpJ>e7"0  su :1 h-*Xw h| mK'l. #_]5k{zS > Jd r%f|aR>8K\ [(i#U|XoO~ b[[ E =&lzxG 7 C^i G ai C&pehlv p4- D/Y $-[v)||>BX@oAyJ)hD%=b> KrDbK@kUN`x6bk#ki^^@0LB3%xfA#&"ho,*dHb^_px^3wD,4 sJ7D<NbxU<s^^sMH"|fU^|H<DHs^|U=#f k^kZ"f/7|3^HUQx|skfMZDx|sMkkxbbkoD<@QQ|Zs"^^HD<fs"HkUb^soUM|ZQZZ7UD3ZZ@@<"H7fk^bk<o^/Qx<fZfUUsoboHsbQf^UxkosMMf&@xZDMkxH<xUMo @<MM<&b@|f3U|sMU&|b<MUH<U"DbQsk&@bHf7<U3H*fQk^DU/xoobMHok*MM*H*H773bH@U""&oU3fU&fZ3@<7"&@&@b^QHUH&&7H"3Z"Z^&H@/Qbb^&oQUf*DQ*DH*M3/@3<3" D&*D "Z**UHH7 &< &M<M/MMH7  wo|jUoYUow]sYwwwD|oYQQUQY]f]HYws|YsUjsjwLwsswH|wUQs$leb.Ub]U|&*LoL7ffoswYsj]]|bfsfHf]b7bY&bjbL]Doo?YHsU]Y7L3LUfDULL]3D&.U3Q7]QUYUfsHsswsjos H|?j|*U?]?j|;.UD]!3!?*Q. ?L! 3Q!*7* !Q?*&&;*  !;3lO##J03D (1-uf3\ jlo_1QHN}:-Bi:S!7w\%V\z,> Gh 3%}M`7:\vj>p~|SOTs,~RmTGX R'}/>L  , y Ga>qh . |X\=c!JiXC;P6A0Mj@k>)~MlT6 o u TMv`=7$ T p Eo& [ UpH$a=m:vuM6l;>7B(:M:JzU7RH-J *[V _p v TXV p$|tK&/  - $Q6 $- GLc7v kK3 -E Y XayGGU3B&epHO&\e -@=4 m"|tD u 7X & Y0H&=/A@6UG 77'z M_Yvr_ 'H)) >nXn w$z f  VbD=DDcTh,-5cJ^5dB lvf*>"H NfklfDzuDBBo=u   c uQ V  U H 1  T\  hQRK7?XAhsa9o v6Nn3 07^ZD/{@RnGGH(ݰ2jԿ5dײ)#pױwab y  1 -:?'A@<9*:t>@ABB=98981) ˜ ky= uHL1yVJWK:עףFӔЫϙd0_جعfڔ8E׌ޛKJ9  iT ]'i97FIFC;=9e6D:?BBBS?X962. $E  1lKܕO-=7 >B "$$"!""!e!" @IVe ALkarbG*#msso0!*1s49$ے~cH1ΈL' وcؑ=T940,D%d`. E Y )" @ވNZ2ܥ2F3u & $%#w! ?!h 8Zn` Yh{imlQ:E(FWB߂җ ֪V1ٶբ׋E۰ڲۄ!#j^ g"y;_J.OJ?4)'. GLKC8.&"p\Kg;D O_ә!@J vWPI!#G$?$^"1w \T : %]vA2lq3[Mu)D ol1%>m73=={<6:N@;+*MumۈjmXYKُnP'i ֯yϒ? ] f(COODC6*a!9&5vE.O!RK>]-<"-B :IV޻|,sTqulK  B ne?  Rau1s/NMu YJC<|&Ur4=x 0 eW5Fd߶a5LzRޘ݁ۇݥܜL OF'1 D *C'MF6&*>MJIX?S,<f B 6@:*`3"' 8r' w?( 7  ^*G>v0wxd.;3_@(** P "'޽۰I 1`1ߠۅ@ޯ8uؿ֊FEҾ|!7*}h%"|=5K H9[&$1&G Eb A *#3;tSYYs HN5r1oRDkAh}=1"raVY9Hw8'x'Hݾp\FqOٷڇwlޛ1B#r %<%FAJ2S ?-OBgML?(8t%B&dXOXQ W[ yHi4 wo EOH4)U YG1: LQUhrOx-&"sT)M 2.w];TZܠEۏܷ S{מLg؞2~c :3<><1/v8);HLM@K-.!*%*F#>")y* HrI6"YS U ۜAL  ^i'E-BkasJCEHtj ~&@#@;/^h6|h`L(Pdլ8c`]-UD;1[FZ%22I+, ;YI"4B(H@1 S +.( 1 \4i>e&*E! @js  ^^W*cJE4C\ r*r rsc s XN|T,o>fs\am'Ap:1m1,^wNinys3C,NlMMB^$gKZUs[ Xlv1.-4a\Y2LNB o & *Yf swJ>//0_\1zmJ0xD)="Jm 6`u6vv}[u0y[s"nGH z}vZ@[pR%@w ILH\*ʋ T*i,7l/_P -&xb@ f_ofb*P(f `o0'8upc#La#o>f9Hrq/ L[ c* m ``+_vf  yjmh>7GzH|ch_0f^Q"e)^j">-*UkRV7-PR^-o@Th%WNK ^ מ2H\1FlH$] KHMa>GLsnv)x*v%Ca>)F"[O8*R4,A ,UCEb,CJM6F3-j!~4nC> $L {]E~.b.2 B#$Ʀ ` * _@:hQMo1HHC11X1(7"< y'$oz\ :Q,cE; ;@7XR@3'@PuQ7 p\A,b ~ !:v *&wB  4 * |NCp/U4}N#;^/\F$#^zT>h.rC$E4yH'eC[A\#Q7=$)H > =-X*.>I 7:H,*<4eT_s@)WMwKQv$*ib'e"r1> [Y LdI0v/0 | #>1t~Utw$ 6v_sNo#/:O\ml_(bv$wQ"KMNJAWm-aarRT:2#*i&P|, LaR^ m N8#:iz1E}Y]tH $ '^6o3QiyRceu#@8L| rCp|@MhN,^ }Wnf7$R XJV 3 ~A~.c_LOXc X|7od[pWhN9=zH[)@^)rA/oHe-VHzs&saaGU4lK,,Xo=nKJA 3 ![}OK  mj= ^#7|D74-7' #4[DCy"?tELO,RpA'J$-R=^=H sCl] TJ#4UifM\p llSXF$i2ojb i f )9-w !D3 &U/_#k)&uHW0,hlh:zX\61uNc0K*P_ Cuu:J3aN7MG 4ESeX`OQ =W1FAs*&o,PUxrh"f`l|-|;.y0 pG.Y^YYQD\-R'sTZ@X'!my- S3}1?jtl r ' ; DO_bz=bj fo0eD/xx@*;J ; Jo\94E_C3HHUo^@H@QsmKCuEf#h 47\U*v twoP.;;3H&S[  7 " l@D5e?QKH@4ulUHU:[E A_=hh vL@f&\ p0Y<R^yDG"ri) j s`~4SL } z:'47C/HLMRG39X& p}U&w>R$ fcx[W<1=yZiJS|TP?Kzbl3߬xL؜~Ӽ ߁.o;% (.5;?wCFxGtG;F_D?^:f4-&S V 3w-%Wf#/  J  B ^ -$v$  4j e =zf k(9,0|eWHas[30=,3%mIH.~ۛۙ1يqӒҥЊgb}}ؾ?Qn;}$r-i6e?GMRNW_Z[C[,ZWyQ'J]C:1A)[  YlE  K%i~sJ%xd?/;$ SDPoD7XU1hX޺BٙpՑ*Ѷ-Фϊ=_o^Έm̑l˼E9<r"f 1(_2t;_D|M|SXh]`*baae^Y!RKbCb:U19) KroQEiFڅۂgޮW,b3/Q .#i.YioR  bfpy=)nGCFhY)H3 ~{]e/9j}ՍvӬҊj]]ѮЮкLο.?_w8սWG mG'\0e9AJPUY\^_3_]YS^MF ?7R/n'HfjFM݄"ޠ * # U eiBmqX T RKdYYW+CߦR,L2#b}*xx&E%v|]2߉T`ܒڕPڠذؙהV?(ӛҡӜ؁P8!)*2U:lAGLLPS&VV`WtVSjOJD>N82*S#9R |p)g99P_ h,jbV ~[ cx<g;go  }1O{!kwWOC&/C-o;MYLbCRhKI`aJ0)a,u܅8m]1ߣaA &G-2[8?=@C?FSH!IHHnFPC? < 82-'k"LlT*'al~2(f my.5YOc 7 Ocsb MWU:bIJn|P9*[WeoH;=HlD 6lk9'Zv0G>O ~&h,1W5z9<>@A@>5<883/* &"~E] _h[^0v<6 :i@bK CVO@=.H:UA$@ [  b w w  O N U BGpi:1z;A-":o<uoYif9k74s\"-d^69K &Ew"%')+,_,+)&B# n<!5UV  O Q1Ee)6h* WWu\Yv3A &hNJYhz -e?bHApDJvi8sp:k=,0 r|^i Qnh|Ma_JMpT}0 fO   ZzF`I X 4 GD?v#*O-TOm8DQb~.V-]u-y MkHN&AlCzizs~#HwjJbm:vLvKR0= p6`T*HrehD:fMokk9C4O~MT co`` iB8 M AsX4j.w|J}lAD*3U[7osde"ne60w[Fc@.pVBQYRA.D8Bv|>1#Jaf93: I]l.Zc<2\pwm}w R ^ >#k]'wD.fQfo+Jl'^3 b-cWr &}-& RRhJR=h1  eeb3K-'8>rz,E=p7m$Q;z~J}vu,@r^@o0krs@f\ZJi*vp)W* '&5-U<+R'7OlY(ei : ^&$U4Q[!7*B$4fukK)H+?<[6lm4\iBGX7X-[O 8 4 6-Q#D7YD7JB>0Q[o w/a7;*Rc8c'ROec3y0Uz:ACyUk:>"Aw \P9w%kOo} k N)TU1E~d"1p-9vO:f9TQb  [ A V X,0^EKA6 :cw>H}!e9Xw['1=YAUv&9r/9Pd#==&) NraO~GpWGU 0B{`#9&')*+,},h,Q+)&`# _@ ="Z6T:nG- M w3[:@Jaj B 7 NR$U   3 GT 1b" b*Aq(tfX  >RO/[NJ7^\_ce&s&Y&0^lpsQMo|(sDW6 B߱Ej8 Z)Uk6 0E#M(+ 045.:==]=< ;8 6"40) #VRw DRkY݌]`1U_ ۅVxa[Xr  o '*;${g+ Zn 8y8/o:   |.'p o**|9 6b+|ߩ!sEANQvӘ?RޠQv pG L buK;RXM=nx% Zް$W'ElkAX/(.016!@J~QRPBKD4>;93n' 0O'Qջ6۶ٻ*ݳx WM! *;O8H ^ Q *HQ13 oY'ޭlՍvA̢}ι/,Q q"'*,-./s.,3(!B#'1-Eo7|Fq5k62uyb-fb L 1,?T_rV(Y%{ZJ:J5Kq&'\:4N:{OAvӔ ӧy]$D4m?FG`HOFZobc^T'D4*9#v܊JƤ rG@1-^  b*1tuj!!{< &$2ݰҊTǺqXżfNtsYN&,-J,)$J .! lrC:-X&9< QK1yD7>o^bL 'R0;Lo -a8 2=^ aU3)4YyHJ{~&Ty8]'P ׆ߍ"~ N 2aIPX3__YSCUZY1Q@)kC$&\̸W$ŭCay \NYy  ~8` "$y#J 3ETmǮDZ. n%+.+%q$R c@o^ |30( pݠhdsi%,//0.9,(" &Ψ̉˺f:b c B > K`.(1U&vXd.raY=n#Ta&)r6BRt̸Ѱ !0Fr[gEia{U(KF Ct;+۵Ǽ@5y3=!J* M]WN d##c"c"w$'(%jHzHI{yWL*o PYL @ &)`"H;Q>%H(KӘ  )p%@(v'&$x"#ƎVG-701@1rOcGal *a34"baHdjq)66-Y rϯ!/Q6Ϳ 9`W$ !g1`*3A877h2+#!R2BHuƔh=rApҙקސDX } ' E #[  6*%~Ӄ>ʲʗׅޗi#   ~ zf@O_1 ZX%Fr%:U  bSQ n \WK63ocULoWdCdZC{'O$^k,6 C*sui}z@)Wvp R H lQfyG AQ,l=}=_i~"!{vN(6)߈1Y.vz 2?ExJWQ\^imAcN2@T t-N|[AE3\vGy Z!).T0/&.s+h&JS0tkŃ]u\ Mx|0 +LU3^+ׇ!0TD bf2\ 1lKKHR A A ^" U zb#^}iKRNoZc8SQ9kne|^kC+9E|zR.#3&=AFOZ3_MYG- e??KwשM2 _ . _vt) b 5 o"&'%'W&%:$K|]KOeu11* ; $2[ l4^ p j O kR b Y  # 0h1y34Y ]+h # 8E`>U_   3 O O4HmREN0JJR6C \RM~: }D-p;C InOY _[L3>k8&# ב yG%-00G-(#HI6 M| -V U h,GD  e *oJU:c6N bt}i3_[ Y pZ_ K%K/H  }N * KUr1z\CW^yXk.;"*nQ,_G2PZ2kfv "u2=DFLUN5D(/p20+P$  s C9C?$vm%UKV }MVz (d25R2+#-cGf@w  >Qb [g`d7K% g ozpWGf7O4\WW 4;s^ @ /C@ -#lNF}u>QG^d> Vp s0yi t L p,sv)#i;.Vob3o \w8i-vCa+JP{%)\9DGgGSH9NO+D-#bwdV z  ';o2ڌ@ 1"(*P' Ύ il. ^evW0Xc|  Q@E: !' Q7u|zC'3, * tsn!  ayoxm TNJEuG 1UJO|4w,zI(BJBis(8YCC;=3=BBs7#chP f iT"FfD El} [ S|$]'& Hqhuvo/orR` )Svae /|ve-T. ?fYO7^ l hBh+AlaD  pb/|;Capo'>}[xyse!163+8;6 47;4^%o &.'&8%6 .L] X ; #1~ %'&V"vK `@EG/.TCsBb   bc# -so|WTUU 7?Df}; X O efh`"0=sKhh,#"-z'AFe2K<}a>dvou WV^p,E5-3,"+G0l/?'sL!@+i0R/e-%J dUMp}4 $& _ AjVZWJDk\"b D 9%;4)-\T*#  b  )Q7Q *otQ)*Vd_(o}:U-3 D J0F6X!D~h[h xq T*)$#<('[#SsjJ&-G32/k(( o Q_ vyKCSRzx?r1 \>{oEcPQLw@y* T c ^U  RRL v h >hQ* *U*H>+jiak60eW"dq2P]K/3(#l `,y| n>m]~#(,e-2-(V"A iJ _fOXu)Wm~^ual  ~> & NL } T za,oOG3N; a$vJi3sO ` ]jGy B \'@CHtAwzeep}[R'plU ;l0Q u(X,h {EV85i~ Y 1=3Xvo4H@vPWU*:bHZMo& ze34RP} =4F9Q~\ h@:8=o&TJQ<-[K/R#z #wO T i e ^ $cI]2P?3qGUU L R 4,:\bT^)p}\@A6hhB sA([}KQHxb ;7H|Rxnh| & w7_^*v$JEyRh[Qh|RDaRDGl)A4v#_3z > 1 ` G ; x1&?~OpU | #UZHHs$|l$pGT ~<=_Fhic}#|@ Dk&4M;`J|co7 vT 6u# &l n=e'J1,voXY w # J ۑm+b]?v1-BL E[AzR3reolO`:c@ErQHQR\7az4|M]UJj0fe }A^G,yU5i\sJGZ = X 'lI2mO [v  }lA#\;Bk U4p'V"lbowUf|erzvX%TX)fo7v)[|-NA&m [RU1@a[3e l)kJYS>,\es L KY!iOy_o7 = OOubr/] t;G~G=Y@mA 6JB|]fH(4}|:ycN4Q*G|Ueaf&)p|"#"2vMN-7y@Wm/Ai o 5]~ :}t#! = HmJ3w=e:\`O-p f&3f0=,Jhc}O7b. #H3NR[f|$=EU@KcY@*>}A^ &)}>Manb v)[:7J^ ' i c+e$((v\i 1 m GJe11X$DaEG~r*=KQ!YLjYswH]wQzybLz~rB=,wQG},o:NUPlvbS@E60"i"@ \ 7#V0VNjY  # @4|7v$6))KGufCCa_ @} 7 `zv;fsoL.e`OO`rL $h4 QH wiH0^ yx3#CY:1 vEY  lVN_{SK.h^  Ebp  \t>$-vVH@Qe Yl$r`X>`X`eO )=;z:6pl[=8JR_8Y&mlQ*i1fe%q >Kmw"4v3"# B N~3]o&b*;Y343 O&)_kQ->~el'1`Dw+X -$$$K)_Rj":}N8'[}uuVJ|w@aR-43 _ of YW/_ j 1zKm~  fZDAmOiXKrX[#UJbER SeXGiX5V'Hl4,EucpyJ474Y\p/i9Tyns)U6U;}  V1>e~1y  )^4^HpLXiKl 8 |_py Q7SX5c4##=fXR'lufX}=^y3z93aP34iT&hs B '>-XOe:q\`t R @ EKNx]_@@: p0NVOvooAX\m>X55G5:`G #L}uEN_V=#bz$l,#wXRZAQ%-9H=\7msasN1H>b U } Xe`K:-G A^ j iWQz@\EL|QD&zXcVup>v7U4>zO5)51r`B5 Bm>XV3m\BTK1 yJb'3 DA*TfO1>U   i Y j _0 D O&1]'.e ezYQp:i~z\KN~rzBK->61->K6[44s:R,UCpdkCQ#X3,`w)mYp  b 0[p0=# \ t 7 A6l[*vA8=4 wj Xv~HJ[` )Sv5tty==+hAww@3~``By00#oX: 'uEf[Nvkl\zUl0)/oz; |  K U o f 3  & X A Mr6}b_A +f.b3JlX7*i`1lN +=+ sfYU*QfU;oHoY*.Q3Yf*`OmK> ysY7m>$E&-h#/i):"KR /Fn#"r      z m y @ y*r;zv$^|=h1SXeXr1K}_[^|sY.X~."*HH@bY;Y.~XAQr147a)N=Q Na7'@#Gb  O z 1  R  ^  ihbJ\F$yhE'EA)~~B\im`vKeR+j.7vwHsDypc As\6[iHbpz7ErYz<pG*,i " | s Q j L " BNT)N;}s<rKmO wYU*eGi}yRE^^77*f7|+4Jtl_=hhtyp0o^r[orX>X 3o[eYte U|#*9c[}hJM1/;1ptNRVJ '+l[pl}_AA o0z!1B0l|o|&3ve*U@@" "tKe.7KiT-JdN,sU<Ur>) $ Oi5 K ht_'8Jc#Ah+8JV0S>OSKSKSer\S3*Zk7?f; e)K >z\>i`vvz)lH3&&Q==VcvD3. r:)j*oX]Hx<?&e\8bv LoH!!*XtJ#~H/bQfb"QUfY rBv!7]woQmr:15- GiOOK>Gmz~zOeXB::GiSrr~~~rzme5-) -B$rSX>`iS1OX:>KzSeve\vviXm\OS:SiBX--:S\)iSSKO-KXOrmvrrz~KX:G1BXGBGemr~vrv~Srr\veG-r1X:r)5`rm``iGKG)XiSOvXrGGOvivveXv`vKezSem\OKS\5Gm1>eiveXX1\B)Se)-:\X:5`Bev>Bi~mvXB)>z`r~G-vX\i~~`5> O1B1B5Gi`SSzKiv~iz`ze\vX~GvX\~Xm~emi~mr~zezvz~zirmvrz~eirrrXemr`~mSve`vr5ev~\OmOi>vSOeKrz\~v5\\rrm~v~mzmi~vvimim:SzmmrBXrXOXmi`\vGemiK~emS`r~mzzemKe`XiSrmOzvzv~zmvreirzre\ezvviXz\\vvrmK\v>v&. e`rz`i`iSKiX\5Gvvz`SrKim-Xm\e\vi>veme`Xe>iir5`OiK\Bmez5B`GX\G5eeOz~ie\`\~eXeKvv~SzSimzzSvr`>rSOS`SOGz\5 r\1ziOKiz~Sm>r`r~vvOvmi>S`rzvervm~~z`\~rizOmKzmrrz !&Xz~~XXX\`mvi`>`O\vzeSizvz`e~vz~z~vGiX\eB`mm`\r~\KrX~ie~eim`Ke`~v~z\O~ee~~v~z`\~zvmmvKveerv~`riv~rzmXvir1XGGO\mXmerSKGXi)1Ge``zeXGKm`ii~m~G`~eOXzim~~~z~XeOKSimerme\e`v\`OXSi~~~~vzzizi`i\rSOiz>5ei~vvr~re`rizzimi\iemz`vzeGm~v\~vzvzXm\rmvOmKmrvXm~z~z~v~`mvvr`mri~rrrm~erz`\mvSiX>Svv5GBGKvi~vrz`~z:~zrvv~mzmiz```mvziv\v\Kmrz~iz~z~izXvm\~~iv`izKGSXK>eerXXzrzrvzvrrvrvXrmz~e~zSizBGm:KK5e5>``eSOXimrzmevX\\vzK~rvv~i~z~\zv~rvz~\ve5r\iO`KmrzSremzvj Kovj}U & N r' Q5zoU.4T:\t.\Gj-&}'|ic$zY-)J,fSi)3BJS~oAjR>DJjhN YAX7/V(tD}V|7#@}KG;_A8u`~Gr;w_e.;9'Hfx[}\3#->FMVx[*e7& \zT ub Dr?le[f-~TsQT$'"A&E;6Ul*K4X@[-R\ #\>^ $xm o6SKiye -;EmKV A[am=s t4 |mQel[:G T@ s~Z@0s*Y d)7rkW ogAviU) Jm'406p \Z}u - p5:T 0Ne-[v<,=YUS A'o9e 6)t, |/a+B\ GdWvEboh(HwUGj y _v_ Nr l T3Y. yp *n G=#+$ XDj* p @VBf  HpU  Y]^xa;Hk b>\v P"K\D]U) |8Ck%5 \pT?VTl% RjG >ecT[ @m@ U6T _>B M l@ 6}oT4 vy7T40 $ @l ylksv*' );f}G&Ax6y, L<7U:ETz@XJX3S #n<  llT  0#4vgG[d/n 9}*.Dzf\| #mG 08J0obJ6A Dbh4 r6dPUeQkH@3 z RhK @E\ O $) m8_\#WffXLe^ ZzSrejQ D`8 _f1 (7s"i/Us*476|Gn 6 &J7l ;] w/ 'sr6ah .3 W-_ZYz6 )le/Ea,JcWp07 P3%\#1 ^yW) XYipmzpEzviA,&, eZ&t s736| @y-$F C]g h1 /KOMb mD:Sp z. G~ ʾp > K`w Zx_()k@o Hf,=WW  c*6\j:( Nm &=HO [ zy"m6:wu00r:9'f y6U |Tb m-)N&6F<|=`fwaH 7o9NU [>JUi=|YUpsO&zY _s }1#R 'M-D (@*_bRl 3 !6yC-h> =fj_^;-@Op'ly H9T KfmzfTT!*>\4L\l&H- "DXw NpuR0,JONi b&=[ >9UsMA\9[QHrZ d; 1iN@ X9 )9D@sWfv  "@O*xbnXJm}C9sM8\o Yh\'DpJD?&XYoW}Q(>&&@|:-yH&ls"efAe|;|%Qi3_zu/=@B_s.b*H"7J.E#K  GuK3Xpck1GU;hr.B" h+\@)7YN5)m8 l;\ao\b_._yGJ0w[  >D F7:ADN&tNiWc*.,U4,#Klt9K  . ,Y ` 4 =   l3C0DRQG YJ0,Eh|0_y zz>6k^res_rR`v_c}GCb|Wg{Z9led,  %# $"n!FdO&T*++y&1  _\ Vn<( 49s^|d@KJ-z7Lis$ ; $ 0: + Z41N i ;s_#vcY| &U.\y|e=#LfC)oXazM{u:UsekAAI|My6: ^,+   7c$)S,+{$jV-'m ;kC\)3rx$yARh$c$hX) I | w Q+}& 1V izl}}Pf~`#Dsz@37c,\C[uP@\RHsU,"u:u3z[Gl,A}=6T"[ ;U5;R0 9"(*)b%?! Z" ddgaJ`DO_EK  K:  EbI3 @" H v[Nw6@b_5+70G HpN:sxkh>XxieD"as%JC6i 3 tsxI%''#u r!$h#, _ZZ#@lz3 05[v""bE@OJe $ Es pI Xef: eARf}1=[6oENYUWR&:da2&k\FuQHbA#!%C Q:)H gAq(s&P9!t%%"+g$% #3" 5[/3M/3G G|=D"ev:Hk  L . ' :  R \ t s 3Z>,z5*|O8@`\1o_OJp_)y. }Q'9pp-n=J9evGy^yo]0kx$)O8 Lp=c6}+%HZ+"!I!$##"F}>B X\yFt| x,3+iy7 e :  # \ 3  z MayCv')\SO@";j>uTy7[y}K%4"b36hl"2(,|Gj'r= -x D X~(}cOM>/"!"G$G!HMT ][oC=d[Wd A^iDMpT77JU s : 6ia o Wa"MlyaH.=8SRN.ypV JbsDD:J^;eK:F)74JQ(xxTg|<9e |K>Lf6X[ ~x9L k$  "" 1IXNy 1:_3vK0 2x  `LN+ 3 *7T|Pk-9-3J -k| 8QnMJ|QY  r  A t  Q    @ [Xa4HUf\ "'y0'3yc=0T1pV8^ izEM^z)%}N# :,<)NZe"> mT%rA c;B\BFV'$W2s 1jo748pPo{"M9_*bW[ 6U @  _  1GT*#UD@z^VsK 6=mCO-&iJp%aC1i%4h@) @WlXHeW^ &  \ l*^^~'VBYFM#gK 4i1@a/d J aa=Qz =jr'6O G c c T - V t l D y4=*;sU1_voj&" 6)7H&;ppQyh\vv*OraX^D6> =lhkJB)/:  !txma?` <:-w? lyHM%:G~Prgg9/zeGNf%KK E ^ *  O ^ ' v : i 'W:_}A f3izc G1eic *Hk.bQO uEJA@s"\>F_ &_Cvy\a uj V f w2jBpHTWs\_l.zA ,|D =,x 'P,XITDZ b    BV  '  * h oR@<j [NA)4:zzV[T o=h4@ah|AH^6'eG -uFLo Y  LOp}3:OK &eYs:D>=b7xXKD|Nr  8 ) 7 Gr|  U  L G J#<QL7ri))4fw0 ur c:\&U/YQ^,uylho@f%[2@L.h; aR| | E ^ E\Rjf$q> { z & ee7z:a"Mp**C0^Ra$Q5]flK7 8  r  p [@#1=V0b;*B\J@&@"QH'A&*'JyVcUCW'l lu7vJ/v%2HD 1  7F_+FHjW-$l y 8 T=N=4g G O | zs L 8,UKy|Hz}U B:Ju0Uk4[l4Q7uOyeMD <[o!x b ) 6 ? R[FoVa9?sSKs # N Hc shs"PCCG0soY\EXb1|HBQ f 7 A A J U X4 )|MZ}|hsj^U&KmyJ0h0=l=pc .rEyyEJE9a2KHZVbQ: i  \ !8b <j*}OU ! 8 a"}@g|GbwHsWN:, Kf ^ 0  4 V  D  9%C:F^1"-e-v"@6hJ,Q70N om \$|#bsHHKZ>0qPp/;-^DD* ^  s;F!_A~D 4 m4 MKr6d\RrriW[vM_\iRBcH#u-Osmi-vK* L # l R  D h|U&isH]\JLD..rB>10kbD3UQ."&& @7ww3KT=[wJ0=AzG>D W%_BJ3\ E 5bFRt>p7R~ K M ;67 aCKJ,=2Q_ nh>oNzDhlE#s-T [lA M iSSKOcErGXTVH Hk}_=8'LH;mR} $Cz9sv"4QgKhU w3p1z 'U\b#']O+L c ;Hph$0/=R .8OjFv U3h}=k"C:Hfhc xnNH^*&^@&:)GEEclGiG=,kvC6kUQ;Dr&@D@"7 z 3 6Y.)/} U 3#q ~ J Ruf/$O^Guoi-^CiD&;NG] DUN,F_y17ksC4|;Qos& yy=D@3j.: 1X \3[O>1jcpoAc}eu-&3|HRi^3  , V | . N|z1_(Q\@vhwNX.Yw o0 @'Xz61fD cj;Yy:BERJl5mmG+*'AN=pY==|YfSmV0)} &7RD@O"b@@s@FhK pC%#=^?j;#@f=1Xa6WHWveG)7s*~3oU37 @ A:sU"3o:Xvi6 1@"*`iKrB~ .f0A##E |;@VNE3*,_KXOX yE_h5>U 3lT}W 1GzT@\>PvXvG1e@ sA[o DrJ!XKz1E+=pB:K'}\SL*&rBO\>pR |yi QGt0QHX e1 .i JNJreBRRuE>.l))bwDfJ)Te\1z koX9#FR6Cvri%W>XT> %l"33j?3YQ.]jb:1GG`QQ?fBemL|Dwj!ALL7 0# Y f[Q7zr"* *lAN`}Eu,V[i*D`51S]l=k^b*Z<7*HYby1e-adZTioMf~7@hs3~K}r/7*U|uA_,tD3(rv]54 t' Y-~6>-GJ}$m *&f&QL v~iVHQM@oLww5`Bbi-y#4_=*Y:~ y6^Qkp o#[(lJ*LBDLE=>_i^iGBvVs_!js7ZwYU61)N<oRTKrl}0LK\o&k}^sTkbYB`r0 7U;N (uHRJTv}T[ ^N9<S?JJtE ;flGX9h1}xA(^ -pfk>hXObe\B6`|e0-GOmt 0^OoQD.*GU&<zz:sNhw@Y,*4p oB]fPW^DHYD9!JAz(O?&:0J;Y">~$rt|"L$z 8V"o0h!*G.Hp d!RW# Y/W#sD7~ L?.\BY?LiOo!ew]$4b3KbxkZk|s@*O"D~o!!rS EX]m `o!-DL.^ S/..sbwMb3s)z> Dr`Yi!> m*vlAG)# `1iNVvoc.G51 GH&`]G3;;DK!j?!|!e>&vbHszM] o|o*i|sfHMrwHY]w:v*|*LiKi 7 ?& ~.H\&U?Lo&K~XO~``lN8p_}cc'l8hi5=}\)5ir5$\~mrm!\~L!Lb7&Q&f]bs<ZMf7*</"xD/U<UUQ&^o (#7RD"&jf3.|Q.DL)S+s7ziXT y_}4~@j6 vEEy}ch_\1r``r1?7?|<jH@ZUxMU&Z7bsb mBe-Ge\Gi!f&3LHj]&7Q3;|D7sw"7Ql0sQ|Q4=4'A RAX`v-m*HHz$ z`oUDfjbb|ANKmwf&bw]f~Oc ;3LL4V=K)OA01:irz|-5>v }X~]"bHHB)S)#D)!|b.3*f7^o<*3}f0+VRJ'owi&s"Qo|<D*f .v!#Viw*,p[ n;MUa_Hey) j;D6BL7__UD9W}d|@@xD@s!w8 y 8+40b7ip\H"D4A;LLtQL&<oH*?"U/7*s*70Nm8;v6DX~Br)1X=l;f^p5i7o6zPn(^;0v&Y3fm\B1os]||E B#?`l=4l1e~QfsDj7H7=DHZ&1N;uV,@-1v7Df@;O-)OSf&! &0D>f- 8:3YVQ$0r~734^7 Q39NUi:cwXwMx3s/SSbDbj&?3#FQLo ~1K e*Yb fQODw.fLD0silSO7'Lrl&})XAL!~?& sQ=npn/xU-\r z3&5yH7vV5&yzi>rX l:A8phQEH'Yw-Q@3UOH/Mb ."&*$1'p-e EL7f[-.U7jf;}6o"vA;.Q&l?D|QjX$wsiQoK;s Z&BOQKh1NJFM.i11AHmlw1iSB)&xM A;D4;Y|;^.&b~[ttis0DMR,T;T:NWU*!*&7YMxHsZ0prpfop bip}uNK)[p dUNKb!@b:5K `RT oJr\$DsJi16v:[rm1mvE-j?S+K^c}c$~.d*Y#3.QsK|L |"l0}-=8K\$i:sSriO:5?>[VtiG4K?*0U.Q||D3U5G.[JpJ\&UO;;e m h !L&#&_*@`SmU;3x/3yD WN<DHD~`1w$ev.3|U3&K;4r Jss}LQihm)XyVJ==o0flN|4j=O4@Am;B\710 .~!:z*>$RepHocH;ww|px} yV ?j3bka<\H_UdoXYA,i3KEGU, TTDbD|}A K $Jf"k,Ahfbms K6vU: tJihp;vsY-xnP ZX7 z P>/(%iA%9bU"DCs;Rf\R4\X):1/Jo!Y.0^DTJ#Owi;_NH|fm0f*cvkBcN8*vQteo)E0: &'7iA'U/0PfJ%^v:G>_[ ^y nr@ _ _^"  6@ Q E3nGU z _ f8&.\E4#/aD`.GUo<"`uH1V - v ~X:s }S>o \1'vD-|-=*3** t U [aj  Xt -G9^"oL.*HX" WDl"w*JKn"lqZ0Z2Yޅ0' Fg r/  W ;6YKl U_ l9i:,*T G*p:3uAp7}V p Zo\y1:\ue,s DbU':3?o$3E99'rJW?) 96$\C@}ol`oA sEmk'Jm71 ]f^_H/j7zO,;@w;eE&== 3wE>^4Zf,chhNe9ygX2 *Q%UQmv 0  Y . O[)]"Ms\F:6x%A \tRY#E +YB>+'Vl|Cdb:x*j@kR7DzGQ*mO"Xi8|=0=4;szCvh\ly^N,7F=r|M1}Hv>YQ F{ 8 ~ )  . 13G0J``|+7&R bM6\aM,N=i^JZ^b\3)>#t`]*R)@DJ"o(7;DOQ.*KY~yO.yELuh 7# hRCW0k:7,zJ:d98o: a*hZD 5AO9\   t#Xc|&T/ich#LcL)UE s QN+NB)`Ss U U4=|OPAo&fec6- GsUGyOyh|y_"Y@Q60"RNJBYRV/"  C&  <%&%x"Y =?-]  Y mH&7"<n0GbayRvmE!e6o':kl|O`iAb3eo Y OYQ)Ro]:=^-C0w> OTMo9[X; T4aj!8%3%!R5"$3%J#Z'* '6w0$MxhZ[u(lg^:r-W7 c c4TBckw50Qc=w:|kc)H}p&#OT" p|Eo _&  |H\lFF-c.|E)6r`[:b>%(UF+I.2}i%R Dcz4;(q$d 3""V"  ]Rc4* O'QCG"7Gv[i'7,u6)&:f _ R 9)#CfW3X l#wW[uPP^y   @&odyJ.>kz*Z'6Ela3'.mK,v%JA3N=a? D4#P 3<xA<cj r)z?`x5  _2y|~~[sa"0'}!]"R. [4Er.przU#zKHeRk)o3bKh#b&HGKv @VE lR=\uy^J(MXQTY"a[z 7}Q 0 {E?O9j O\6^3i[7Gb2 vi6 >pfs"ME>hs%O BlmOl7 $7\GvX;#C.  1C @xH H'f=f ,GQ,i74vz=h#Ao[ H(w)E\4:}}:,wir h  a:6a73"ffyBrBGl -,y"/F9Mw4* 4OG&iQGm8OTz6),ei,0o|-nay*5ffDD, 4 8 ]AM.Lc : 3 * \:yOzC#>>z'U_[RN>"l1)-%zoYQs\rpu 8o"p4jj&:&ciyalY _,3CH3U,7&T1_8BX:D"DK-wvnhl2i}xRxBXpo *ts?f(41_ K r —z Ao#^ y(o&iQk~n&i4D _$O@=}u$OH=Gaj TTR@o&L3#br94#:Lw|4-\>VRYD|3kCf"bp'Ro[0ED6_U.G^ yl 2 ;BlI*os  8p DYQ* iDKWR7sUyWUWaGuM?:84cXy,EAR:. OU0\ J;7vpA[ 4|wHw7$)\66wGTifsjD7:6}[hcAVUGfK@El yp4TpK$Q O 6 -6Fo!Bq[ 4 * [E-),hXM JvfD1LvH>uJhpJpf3<!`Yh:`O)>NA_[bf Q;|Z>Gu}EAv}+r>V##=cOOv;LUQrO,loL;"Y1";E}T<@OyYe_  iH )m3 tvmB T p N X p[0 Ur`7J4G*<- l[ni*}*3Dfb78lct+f~`&vKi#4RQ_|/ URXj;LSJcf; QGvD^s&r>eGiXpyhE'7y[p=4p[l}i~`-EJ[6e6T9\wRv*4  D ; i _ ` 4 6 ~  @K6\Yf  BrQjo<lK:-KyWy=&wQ]fX84sQzU.;;A08R ]]</&u"d},uAF]sYLo? R4 sz-)z~e1$RV -)XiOrr.sQo.&7Y&v.sL;* y p \ , ` ) U l ' ; _xo];+8_0#c#f7`zGze~"S./99l l9U3Ymt#E#E..Hs"LbNyy)>j."wwA \aaWA * v$vrpL@ 7 R #u -mO~`7H;;RpRy:)'_[yDXE76 #`K4o lG 6@    T s @  h\".>[V$RY3N-zBGc -5X H3sd[&kbxb/Q~1 lhN.wDjD";Dl[$BiO3QY3D-n%))NZ; $c+Ui~>G6K\>:BX11-e`jYDs@[c_hVclpN8o}0LOGfo & p L  y  a))GRJ}>~E}B JNR}Us*ox&j]*j3]K-G:NJ0||4 V'Rh}-b;D "bG%F|&f bUy_Q*Givyh's|;`rzTm1 )rG:\.;H"*foJ}RyE=XyR1GrH;-E@etp@"DK%o^O J_ " E"[3 M*:>HB8hy5j3 x=x3"@bb.sQ?X HHDD[1K>XjQ7L7&"&Mx0d7Qx,Qo0H|*Uo!-h[|^L 3 iw3"b#s#t='V}hyl'#tG-yie 8G i)hR8;`6b[~L'GjDxQTEU3}E}s%jv~@v>&@jy$\j]@HZ**~S5tJph+}y}hp$z]wD?o73j&j !B)`e5-+_}-bL@jjwf7o|*&3@D#pVREob||0EAVNl5 O-:B>e-S84H@4)1[N,yr6'";\9#":  &$8l>Y7*m;s]U]fQ1 ei#EV#_0++E8  1*?H7HsYjj|.Qb??L];w7.73eGm>-v)[AVNR448#'8[_0|^|3"HD3Djj0+=l__:\ \ss:YH;!|Q~&*?sB&r==:v1=w^+U;cOwk "Fre6%/f :z [R*?mer.LvB>rO lch04 hJEpNpc-KemGe v`K~>$\KjH~:~"Y|fof7wbb;?"s3?*>B cE0Vl0#+boHU|J#JN} 11:K~`\zzi~iBXmSOi~X>rzY|fO 3?]i\`~UXOGmm??]H7k7s40 "M7^^.YjQ;D!H !fD]w]s;;b]D/733z_zv=AEe=t):t>G$p1iv&UHD &.!HHL*OmecJ=h+AVl_}lyhp}t}ly-)55Bm--v1$i&!`:vz-> z57O Yoo&GG`O5vOeBS*L"&UZUx7*MbZ</Y&jD.j *|bY3`Kzs~.!*jS*bHKem`B  eX:->rcANcthEl_yRlV}_p-ht  `i\vzr!B1ei**mv~\\G>S: OzLISTJINFOISFT>File created by GoldWave. GoldWave copyright (C) Chris Craigvocoder-1.3-src/examples/white.wav0100664000175000017500000025440607542365700017144 0ustar emanuelemanuelRIFFXWAVEfmt DXdataX`3Ԕk nvbD Phr ~Jc ^`D"P;jsJszrIVo@D뮀2֨9Npj࠸4Ⱦ087L1"s$F(JwV&duSl5(Nl\fc@ ( F(JN4SxBvм;"1G` @$vTd60c`6めXԈOr !Rj$kT*{x<>^T$|P(dN\b2LfVTUꕐ^M*dt[LV?N>B"dNPr4ܞsVS6=AXSHpnR=ت b&aDX.[OR~* jBx&Y@dLN$,u8j4ZTE*ߊKh_O ܃HLJ:fj\2Xf$5lTX͂/d~t܎|Ɯ:?182tn."7$|ـ0Xd|"ɒaT6FJ\ѐ]da~"U쵐fBZjnx0r xY([YT"v?j*bj_\ܯG]~~"_]ljЌWx@Mįt)ؾ8Ȗ^AH5Ɗ\`frҶNt3.`dh_죠s*:FhEh,jZ=Lʺ85xbާZ{dpe* lbfhLj>2<Ҿ֪:pzbjVhX XV lt@,*9?*Qtat|ڭ/́rFH_8dTYBvrZFV bt+~7H;Ȝ^x"^Dx^J17e֯P@g ,e`^ iIXDLl:|:T䷜$8؅Xoԍv;I=褩 | @:( $,Z%7 ϶Z>*YD6QFBbBlTU𭤗RPdj0=n7uYvnb>%" 6hDĵB! B028j8+KƵM: gص p>nZC*xp0&7?~p ^+LԦ0Y\3PkXr-Ʈd`H'1To0h怰UNd <0n38 Pj%$Dz؟P`ʻ|hG^,(_4y|ft8ZrLN.R!8H\ȌqN4 :zX:'v`&oX4`1l\Ӹ\ڦcy'Ҹ6IP7f8 7Rg9Rkph/"ddJ@]FZۈ*D"" Xp~%!`SdLܠ4цC 5ZU"✶ HPl໬鲻ڨ`8~gqBV&p&v.^|d|`Jz':`@vd0jL7)LtNu̝kCzK4F"n&R$CȌ(|l{fePpbkD8lKzKrDqB&2>MrVI]h$zU艔Ҩ2&PUȞgbC|^Ɣ]jp ,@ rX:@7Y1jĜ x."\ҩj+T6Fb^oZI,1Qjη@oT4P\|X`xC@B$x,H*6ВΎ$2:V@(I Rc6SRxv_:< -tWJ&}dۤRh '>Ԣ4aE3L6'H(?~jRN~zed ݀$E<2ROH9 p: f̾& $!6zlGt4 $p~$&ఔ Jul03zDNF:.vs 2l@:z aFA'|2zU1ft&.ш|YH:;h$fP68IV4C,:֤"M{dھdh0(< }#Pr،.+~;HHX\fb ^z=Xxtf9 8 +&MZjzn:bZQ>*b B!^ZHdTT0drg%]rBT*n v?Z[LbaD}Vsr`! JEMlڦpa{+>2YﺅȪĀ * eur뀲=>H"`1liܕ^'xrfO8yH L3}&d- BX@>*,Iؔ ,M(tkVt|9V֒L$މFh|袐&tߤnNbwz̀@VĿڈtbF^~ "(6xf364K.: veLaxV棔%f>Nt1Qf0H4V(aF[Z~eV/X6 ̔h0z01ln..sBAr,@E|r Pd*kJ 81lFV{ˮ\qHMZӒˎ\ CNx6X(Mj]X\=,R:a&>!|N?~>‰`7g.K0g2$|`TeF\|1R"ڋVR..z $cxp- hIxWg2 Jgn"Nv6iᖴ*@rqrn,=>Gr.Z |, A- r*Xbb"ȜdR-)ly^.SN`>#.|Hh=f~H_P yv_P)2Z.yav>dDSl6F8B K:@j6K(:[tmDQtXf&\bpXQ+(*AROtV."|dJĀPgQt(䈺n#nB2~NnL?/zD78xzAnHȌP0>آ\0m8L`?L~ ^/~α$@޿>< ? >L|OX\X(:Α&惔~`BVD|K66|&.X<6l`] ^Z0t*E$r@JHhdphX$O3HKZ( v`=`n .ڀe*{p 扢R:@mdV|"Z(-޹PZi6&nhF[ 0ȴ)n^\`vb [f˸}p28pjӮ(tDP}f蓖vܶdqRدR(ƔL? &zJ3r Zt.ZZ^ HFF$$x\V0"xJXt*l9f$˄pl> =-ꠢg0}qמ OĺMx\ČXTnx.0>X8:޿ؾ=pĮ. Nj,T),t$Dvy5<ОZBE Ql фtnJLO+|vPZ`[+!D7hN=rfHn|>~X4^ o1jb(h9xV2$$L,x0Pzn*L Fo |jŐ#/PQz0ЄWtkȮvzڮ0DSp{4^īJk4($U2v"pa \JvQn6R_g Pl\&Jjhr@n"->vϠCRjLxQƺ|LˆF EH~b>R=V\*>X*ȺIԧdV| T ngJUjB^0 V7ZlHtiu.>vXrRCv"lԶ9dRBXþZx.FvSM8.Z,2|88*P䦜,sL~ƦzJDT[~m"X Z\լ ^ Jvt ԩP\.2R`hhy@,Fl!B.H$,|tdF-A@tâP^zC`|H.|$|ڂ6|Q&{sNBК,l*ńon854r[b]"Ή+n}Z>zlXjjPVi||ָҼ}*ibb|lLT~FN""@_tV80A8ڢ DPH^ul !\["CĄVDֆ1*nBLJ;BN"=4< b$.:K AFJ?֍Iؿت&f]^-8;oWz z@޴6 b๼ʢTjB"^y2n_zd G\h6zz=f|_N(}"2Ʉ]bIv~d&HJq2y$@P>n+Hf2nvzpyZC[8|,@zR htd # Gj¢|mʪPdrx#L~uFXz  NE^3M҆3f2i,2bf$~F+=h/MUrtlJ`(Zh2jd,d=fZxidfLHRJƐ⒳:&9e 2 rѼ|MڬfPPV~67v?_oHTfD:&obêDL*od<xpH>~eZ[d^2m2LPP$oN r9DO8ht]@BJ%)b$PR{0H(A}~QdJӶv>4b,I8r_q L`gl -hEB )0"P?2|WV5<o:@0Sd>n,:m\3P 8Ę8z苈j(ViLϒk..(bfhNzp*~ejL>[:0[26T͢ hC{׬ qpiv`Ĉľ@&;ZIl,HtɎst$)0:ď ./!"f$vD0wB;\]i,\vk\ :G*Ar0PJ~H|%p# ҫRU#p$~V&cDt֊rz6dhuި^vi޶?frh*VZzƶУ*8L:m61>yrX&&^Г\n}pкA '(BDl:l]v ln]DtqΘ<2:/>3DrQx%P1bsz7$ "OH@"LxD):VzH@lS:Fޠ9Qy@D(|@ .p >"6rrRpФV3媠Z3 xP[nm`+VzfDx=|A oJ洰x{F!.`yؗ",*QXPxn<>"ڷN:8v*a0AppF6zHG̞zC&]Bp`$--rT"xcX(i.̭ܻ6%¡(|xTJ@\F>VڢqwZBA:ںĹND*B6:D(N 'F\NbOPTH6:ܪ?!Dhr'"ʦm~~tPfUzjt~4zT{Vn0j]ޏZ&V'xuݮl8f}ڂz8^ʺ`r04$^\|"%'^ &(:%Wwvbw[tɎ\ftul1$VJ&f{lDJMbH:-0 VN'Ԡԯ$ft@m8NnPd̎g4#ÞT^ޓ򗔼gBnzF<&U@iTdN|,TpS&T`JcĿ>>GP2/Aj6t<7H,"@&= mfGʃ֐ʖ*kR\RsoJj8id6x$6n4 ]|2N5x3p@:MhX6f~RXw6Dřb(a z:~c3bD $Ȟg I\ f4{ȌHy^T(Pۄ0< B*Р?&M6N8V,-b=qvR|x*bjm,vLӌaD6³TH4VzL,X "!bZjjP0[@Bg@FbQDv,ג\F8 g~PAҵ „zJw˴Ga'2f2Ҏ18;v$B^< @t jvPon<Z!NRtuP1:/UdDtA&ڵ̠|P+4lb2H2^F(̆T&0QL8""Uld/|*P#J]BDzܢ `oF2bfjs ~Ro Fujd<|jC;<=n8xPZZGLPj6vRzq@ff(L8#'0`.XB#rFp]~nԌo8#DƢҊ#0'hnh '#bj|d(mL"k¾6YKU󆚚"$sڰn'L8m^j3Ɲ:Pn`~\ҧι(2XI@RNL۶Ue-"2Na,^8hJ~FJԽ P' %Ȕ|A*6[v2gTN}&,nJ7r|7:GڠޅC vR~@X[S> ~>*:3BPs >P֒h|z bh>f[b<9.z>xIPh!|ugXy*dqh&iZFKjtW"b^Vl+hHlQ:5L4 VޜyKb ldv00|)ʀ&ic6*9Kг*OH&|CR)ߪM(d Z3&X1V'6-Lh&l^B `ΞP6f9Y(v~LL# L('4pp{©ڠ& nն) l\dB V*"Lp<#`%U΢*XYx؄ 7\GBHH!.غ^,uPr*,&t,NFvt&Gxj4t2?f^nXfL 9h$$ Ж^T}6azHXO4r<xN~R<Ͳ*2U3n-@H\SLrYi6,=4P$o*`jz8^jV^Ҙ2ګ+08.*Yxp΃n rh\dJҞadJhmb1-Aɒ\ _>):ǼM.#(Bʎ RhT?afVPL1.uM_M8MϬ\e"n. $:~v|$Ԍ2 6Bv"$D%#F6SwjBv(:&lF8"r2]ق nB픏ʙLEH}Ҹ5!:fz2tjQ#$w͖ti<^[L% T&5/7D򄼢BɸV$kՈK rrΟLn znZ>8h.ޘ Ȟf_D`J |J$wm!@$O<*o6>DhԿb楺wrԃF23 jTbP*Jn*XJ2 2tPVʸߊJN~wd`DtzpzBq ,yqKҦ( {4 f:+hTCd:.A|>z/Nb,T[b\oҝ"zTr\N5H|IEj^x~<$n<(ǶJMH>$p"tj&0vhR*@QrjQ^OhD$r4Q,Ժ zԪF1Lŀ"&,,R^4nfe$^!D|=bhr=b_0ljq%ֳeP&lt#v0` pBxPVr`7Ԗ$$:GprJ`ƨZl3>xS KPxMifHj? }8uFyڇ(XTTs|~.<|N4аL.LNH,TTZ\Q f->[|kO DL>cBFT6wDpbBǎw?+zTtdr*žux0EhJ A PI<:;J_/zP򴼑cBB؞i4J^,$&ĵ^geRZވ x<*`ͮp$wߴ<&VzHs|tt PFb1 =LVYpܸ܃Bmj01\lHL<0\$ 4o2X2z@mEVYqfLL-˘+/VCP Ν6a.$fVybbBPnrA0NT6 bVʼƮ8a"PD gBlNz ¤"yxH=ĴPU@Z i6NZZBŦ&0\"D" &Nw6t** ĴFvҜ (}nRVSሶ@ÞD, \RH.WN*@LcO4A8x8hv㒧jt>%2:{ˆl(ȴ[?r)Tv^Y~\ݘ9ޚz8؇Dh`|Hh9漂W"l= ~hA~`8ՖPfk+ќlೂB ?k{JO"UV8-*\"c&q&=~jʤ][HnꝆ*dNV 'FXXHRڧԞ4b .X!>"p 8AM0pHUp9xT9{2(qB /`֦ jQr ,,4*,8pt~xY],(Ezb^@ow/ NR`¹hHXDTҪq6tp9j7lA玔cr tl5 A.褡‡m<:$0x="JWKMڑT Lv :PvB$8Ő5x6\̙dpNXbY8LADE\}8G}44Cz;"f<@iLz&ӊGplTrܤfF&z4(4ֺdX>|XqfN(f^p0,JTR7Ba` L8\wJ HV?lzF$T}t`‰22ƧDp5hRWJG@$lp\ <0L+48jv1dR 8रj?x :?^К0FP8Ʃ l `"uCÔD4J'p;>fRZs8;r⛀{nc&(d$' ꆨhD~X6/bh ܍i̟PMpvZ0ߴzRԸ4t6=ĶZj ffrIFdB~S` ob }NǞm:*$ \ctF^YDD*r:>RMTuVm4 x :NX˶A<*v [e>3J :}4C<}+68p!Հe|1FQn1ZVd$0dYL>rؤJN?)6B1:\bBEczze(hIRzһĬZTT<:њTbj`"B& flĂa&؊;B\%*ZD p_6>+Xhhk:ˈi ֒&EҰ0Xǔ'>r-HFg~xl{RzUÔkJBZ Ud$R5 {`[ܛFbS(ߊĒkT/jzxָ8F0Lw޺,W̲>"g^Z]X4K|b$3%>4HfoqI@씻~0I)8`LKN'/ZHv6LV<|Pr2ZLRq5<#1/>S*b%J,]XBݔ>Fr+*: +HNa!*+RMpc?xc,h0´[2,SfrP9^΄JJv`.YB}uu\|0kD: Ϧvk|xlQlB#"2_6KT&N++ /{d?HoHʴԈ-r4~,qЌ0] G$ <'V>lU0 ]d|V>&Gh^ }jDm*b#fPXHl,iFԬԛV+`rfȎf/(4J֬7pR:V4AvfȏdZ&n.Q-8\6r \t||0@N3&<z<t>]W@x1N>:B "id5U / p$(6d54 ,(Jռ}~ ~@$%Ҹ/vZ&.< ΈX*2U(KRD^,P<^b:r2P&\-`&عrlHV޲Y /8At["$dɆ2"nw.dɸe4G 4Issb%VFudf:eҐH p|zШNDK:Lf:C @j,B\*[hLpj5v[}P`9>bZf^Ѭ lwZ^fJGR'^>~j€u2(1< &tXE(|q$pp4fl\B{ư :>L;Jʰh?'OJ6μ p"ڈ0z,YhPrOpmȀ;DFx*\ؕZ t,!^ԤBD Ȩ\`ZUdn6r:K61\!&ψyFnh֎4^^:x+Ӿ3vgL*f%Jx#tZ( "nA2J܆XQd^E6H;-r d{ HDS ŐyOb$b~mO*R4J~eDlzبֆDTRfޅxP#_$2*OJTpjb НZL&d" l4Nhd!5LڂD2bA@!PV¦%Df{8" ?R^Z(x°vjJlLVtQ'&5A/CZ(^snȱ0cI-X= QL-"yL1$Ԥ|>:Zdpʓ^+ruv݈C@~<J4F|HK|nNdNiƸ2,>-L~')24OTBDl O( Ax6Jnn}Gj&u$\dX]SwzbSD0PDYJrUO\N~ vŀ$X{Lucд̦ |T٬\CV|ҸS (BcR!@z]0d*B}B}ZWv]昞[&l~m.$FdƔVHJdVؙH҈?0hO>F0X n~s>6tX:ZPv,Ā20(LJBF&z@&X;6]PY`.\l!(F486$^!xQ& (=3PbNprBcZ|i!$x>N@o[ }}ȤzuTehfC\Į6 I\d "7ZK-&"tvB<X`î$ , ;eveJPrvYh甗|hKB] a&xP״/f]Rq*wf bl~ԆRG :`;\H$P(ɢOm)ޓf䨸D*҅n"fMVXPirV):RF(g1{E.R&йXVr ܻ.K@ !KTXV{Z:TV8vD${D+.^9:x%b¤F<>Yj̴UB|Sbt˴*Xw$W68j+Ҥ~XE X]Fh Ls '`Ǩw6Pm\{PjѮ.G.4&Rɲprkt{zҙ~/tntR#``"#h`CȘb]9ZۜB~ޜ4-ZZr"Cz:Ҽ6RR|KZް.a"Z,wffIx?0*T~P|.;#ƃDrN*P*Hm*Zzx`qTx ԰ 2tƮF.fFJʮ,PvXӴ4bKKBZ4UuRLc0pFT*ZXfKNRXjs#h~Dzb9\TX1h,Xh".[lfigldL֨D;>.Rt 8y`&/D=@Ftz1Mb^ZcBa2y$DB,VhP$:$<(:vr&[. ;62*:eJrN3\;*t4d&>NrDVbHZ|=Bi4DϾ6ò?.t~^:-`^{&:0)F˂ Ī03_p d{|zY&rvP2ut,tVoR.zzעPdpGN8hm bjd&AB|3(+c_֚ynj`6>68mXO`)v@KbgBg6p}&H1l`dȷ ;N@!lf`:?,yFN[ۘܶi07ZՠH~"PvBFFOrX(iN-z>.3,@*PE2W8A4:s,5r$8ԐDٌ H6 bJs&Ԩ$&&Xx Y"!B R+6vb~\HZERҜ50f~0 2.T0@Z`>K`% HJnwn/p|L&.JTDNƨ'*g`\0ZjtR< dFf@|0jfQTqp `&~3['Drؤ-`pV`%MG. )&8R,R Bϊ ^M*׆l 0| ʔ^rf0pz[T^h\FET\FDh,Rybz\4Rj\M7SVXJvlrj\mX,8ȃ]0?gt{ތnp~Z:4*l>m|p`&7Jj^ z6ي[GCb r\ hPԝy&N~?>XN:NV&v+&ݲ?rNRҮzSxjQta}4([4 Ftp]?<{t;*p`X#PU2SxҲUPT쩞(Z+Pܨ @PZiM@-<8 OķLyȧ."Lt"_r<\J0&LDTl\#nUNJ夿6Rr͞ĿN0L( y fغaT2Y.T\6_z4?NhxAX*2L֊=*~r8mM؇\b|LlNR`L94y<AJLLu)#ȋIv؟Ӣn8$N^hxҢ/`Z|_Ƃ̪̔J.Cʚ,xI4f0z>tr,<e$2d&Ê (> tӈdKH2D~6z9vn&5).|0h,]"^@.<=T@vyLx$R)x+ FMx{$: ̌̐|FV;kZ/KO<`FF-  ~GIбZ&%:TZ: (Dާu8b*rVv"_Ҙ䲷t$"5 Fs׸Y(v:=hȶb<8$¤H2i2LքƗd =hVh|͌7F8B$bM0mjPȠEJ,Kz^jl?zlR~VH4v&Lh@bAZdTj"b RHmR nBb&+pe,f.d,.dg΂+5:π|)0xP{hT4IB5Ɔި2PB>\Rpbd8j\܂g$l0]`bZ>xf0p,Zdt gkV RNJ @jl‪`[6(pO"~ਜb%ʆ$pDjzJ=.hBy;jAjѐ<@Snqʆs:*LdL&@zn~`0d`YO^tF~v].\VD}|(&C:We/*~ b(׮?jJ0'lFXS|T^č܄ pTtB؞6_6$jruNwpd}X(Jsz"\`*q*xp$X"h閃Ulj!d1Tn{bΒz b*h`J"Lk bӎ8OJ'ZT΢bPʖ(|4hⷒtFc`H4HrLFSF6.$&!&_H}g1`ܬjLHH~Aa}l`TGٔU@ J76H|'혉^e\}IN8poR1HK"4"RFgJ:$ rʖZ[JܮX7Zj>j]zDNFRzZز a<{ҋp&::Ǻ\,^ ,wjMu|_P ސFh=6͖Ȣb}~BZT`X$Vr}:˘:N4Xfwܪzhlq\. Hfg b9lK:zHxc\ݠ[jEx8zLHl|~~jL*mҦP,0V0*i'2h@D|楮SܨLL.}@:FnNDmp/2_$B-7ĪSlfdd\Z]+, ~3t7FWHo:kIJh}&GLl&<_ U2@L@`>0lzM$(RV.IGM:p\Rph:Pl5l^R}$}ZBT6a i`2 0l5xlbBT2V"Ҽ#⦌+\ԸFpvhPJPм6B0 *T@qNr!/V,Emt4qpD8@Pվ^l <"㴡*z4+x 2*|Blx5țhd|tR-L= @81HR#RtH¦6Ku@X.7{6=&:㒍l`CϺ\W\^wV:CG0B\7|2lnBD6~(|< |2g&&ڐ0hqծ~dknv4B5xL.hB8,p2r0Xf䲪hNVv h#֝8^bǖ/Pg0b5z󈃶tQ+=D0;F@V],=",@I(҆DVBSWc;P^x,4#B`z9^D\Ϋ.6̴ZR8O0 N=(X^.x06!_P,ռ%Ή(CtʱW@n\Ī S VLrm R+t^#4≀.YtŒ>^zl\UΠOSP .PnM0 <0hWjVđCLo,/PlRҿ 0pӒ.~^P.M0D07c ؆qP{3\EnCtcxRp 6}[ҒJv~fh${otދCxˮI$Ml$3,r\40pWXL H|ԭ@c(Ro.rBЦZr:fXd8d:0t"Ϊ-*7Pp.4£ JkrG[B["z 7T,4tf*r4|e 5\Idoj4DZ~jp"L6&"^XxA4لvV'UR04*^bKx; ,~T|xX]RA 7,/_6a'N:"L Č@EO*~|VԝǘBkj WAQ^/~$/K8Z84HcVJJbbґ:vP$tɰރ;~@~\"'K&mXT\/syX":~8x&M2ll)Y;Fwh}P#hVQfZXnNʣ"\@n2 h nWbz*zhwncBj̄czרq?(C>VDLZȮLX)XcW5D@*+T$vRCj^NKִr^ "tO>UƥD$DXPj~3\\b=˺ _ $ "LpB0<ŠNj*_G"Soڄ:`L `H>J}DJDn:, P+l8pHQOt Pd"`z0l@kBJ"zԜuuvڽ 9@hЁ_ [T1`ni@D\Ό&NO4h"Q鄯f?fhv Ҁ&l"ߤF| VPR7^xJ%*GJf$rxTc6*xpV斜8nTz&'"84jN/T h|&ڨ|.Cp oDT PT:PD.XNٮF,K"ҦvhZez4.82ݺ w JHDLZΔQ"dirk~*f6ANXP+ncƁONf$/ i-S̷Oc*%bq4vX0am|r@SYDD%x`(zO݂m\D4 Z5lDZ~0ʃlۮ ]nV^!^&ʥ81z `JRs^ƴk(wb 똙"ZXn8<I0le{<@,ȳng`W(+x8AxjRyTfp(OΌ#sDeXXW$<!܃$І~D4WxVfeB%G,j: pLXhP|JTpR4(b8?o6(F6>,PxvhEgt(&ʊ/(Z} , ӔbZ۶pVDD,d[TD ʴ48#qhTX8%:z(βH(Gt(! |/0삣LNxpv,b@8Zz݌/:T>8&nJجROL|.|Va~\bIHC.!\݌ ʢF,V9,&F0AZA Z 0`H')PGŀ x`¾$s̿da Rd8$baPbhnG[b L5|Jvg|@P> F 4Ӓ虒vP~ J R@Z]k\X>W{.;#L< &F`42~v x lxƒ[!%0>"(kȖR $6!"4$'buZׂ$SyR:%t"0:^c^h [OXMHԤZ(;sa"p,݀l^DX+\a۞W7)Y u V~gt" e"49zMʝM.֭߬V ׬NZgb$2{r``sZ``0\40]]` 4E"|4B./د|-J&@ϔkk'Rr84jl|Vg6C jF:ƂؖOcKȅ NQ+|ܧYFF NrPr2RKŴZ<n\`QZ#muH4U*6Hr/SD/2T~.k6.U@ ?[EB4>$x;MqZrBylh#~K5\,>,=ȱ̫2=P 6$Ь B {^O !]޻"z2RϘrd}<d rgxs^"rhh2ҰƤαjRJ0@V52ֳ,Vz@ӜAczT){H}Z @4"Y8vq" 0jEp֡x20^lmL7vz<it4~F$<.` jJ|^>mf?fjh28Rv "W@8xm" ʾLfWxrtSꑀPWzaBbbTJdԊs꟬oe2*14>,FpC$oPҮT#8NHi4@3*<fo(Dt ~:2r3+B>@ш $jךi@@:X P.sˮ(6B~^V$p$!FR@$&vvI<;ׄZ X6rfC3XH @Kic,VTY8-R ZFK\tvD@yp$&Rt( /|5>`<<L+u8y~64TplfrOs0Z|Vk`ބᆒb| @o~72Tf2:t"|0GDpPRᘴbvrFNV6Ϡ*H./|vb,&D~BZ2*(:.fr`TB,LrJ,(|#4тլ-.8ʰM\.t6ЏIz1 *``QXrtN%SmP#&1R2%hnvl`)\W!b& 1@VR2*d[wRej92R :**ކ_]ܤ:zrR?f@,9} &}6,+(N\ؿN.KDv4L5Bî` zԖ8~ Yhy욼D_t*RTvڹJRڢ on`e~ JK5XjS>׀ 'Pꖀ ӘhфJ.DLf"H6aH:p2Ft2Pżd1d'hCb粀D:]b^Uv@R>qn=$v̂ĈL:[n4H!BƼ^0*:H"B|ܲ\ :1Ѣ@ֿ̼l6+T&Nɂxhf|./n|6;ȫFft`Yں?b&NVڪ*ѐZVn#phI詖`4/`$4`F>Hd|z?hzvWZXܺ,;hPF q0XdQsUZ+rtn~*}fP*\6m!1> D2r .^mDcFvDfuRF6Q ̼WH֋ȼվ3-FȖWN eθ~薝 d~p.y6m*Tb"N@D,~s^~UX6>ΐ]Աp,sDۊG4 bk$Nu8T|chP~%h678x2@Яި0RFL%*XAZڮ=a UrֿZ$bP*Tqߪ`V#&jUܨ$*EWZ^x'+ȜV^Ӧ@&H@ ^lLКD(NrTA4(gP8j*mb/N}rZw`ܹ5rlpTZ:tQnR9f\JBg &,F0LMLچB8OZL@Ԓ4rxgLN抇T͎`r"lX8|~T͜!"\2jR*Ԓ0B-DG:2֙d~mrs9up~m&NlfxOtjN |j'T\ut(fz<֐6^!Ԣ@8:9f8" 6J"$0HdܼYc* &܉0txE&{z%"R,>j2]|< pZ_̀Ű>No(ZƄ⒐_@%X/:R ԫJdVb"rsK0-H[`DF$RcRv) Ű!Bd`8CVLd%Sz$؀=§6¢0GSjʤۚ y$jm6^(6I4ęnba~9~2<~|Fh*LB3*&Uo0fDؠ]0NʪY:.r82S+g%Ln(L֍(<pfRelj?J(T/t(\9$dx(Uuޫ4Ӥh47 2p☆8.PwԜŤLQxCldyo!d2zf .J4j0_ZϚ)ښV:^c.CB2BN_{R FgϞD2<)bpbʷ[dJHJ,ę$qZIҷPXv ALH lDr b Uut ^|Ҩx^<`v@Uvj (jGaP$,/Fy ʋ*@NHE wvq42`.8J~̥8\C-LtQfZ)TXIC6.rVp{Ҡ* +^v~ !S|_8 sTvF8=J$ggĈ6/ xUD"BY`N2>$ZbHjf1@t."MBZ".@B*@8UDk¹RL4cb5B628&\.6~Xxd?hfX  !`p:l*Lj,L>r׮N 8ElfĺX]TV1\ҰBch,T7@n;f]jDzĄR|rBrVd2i[@"Jrab?\bɆ =rYKTGFdp~ Aqd`KFe4uLbff=n 0FERHB.JBv,lOTr\\vfذ;ġf0;mLƞ(n|J@G`LB>{Q֓#vEXږaL r:?P:0#x4.|R;hu(Š$``D"x\tҦd<>.dp\7lB{,d ^"n9"gB 5+pXev *&]dn]@T?N 2̚'4gQzXXʚnJp2zLd rF ńJN4nz "2:RB|f S vz+00 ݎ0֟[̈́~u@_?浮4(,X^^ɶiHH6;Q@@v{Uv՚RlT.7nZL⬸PBXEajxB,Fj#xgRU̡h y~# Қ4<<½|1t~N?R$ђrnnCz`r.t"!Q|&ݞxc񲢰jU*2b²4jN6,88?Ho,2Q𪮽|}`T;DfWYB~eFmHdnf&RAj@UZ8jf$-@CFj0UH خv>nĒژ`$aP2:kTJaw֐nbD^&d68C zK('W$".~ڮMvڪ/D0䢦ؠsY4W,>@BhFJ;\FWfPhw>/p(":`Y4OE"R`O$pEMqxت/d (|‘#LpvJV{ۀSNxdP5h&.OђD8Z9 8ʑC6Z )"&଒KJ̈r2GV)nbB:bWX.V NLդA|Z9(@'|Y.w8Sģq1 t| r|2?bUB\NR*8 樤nFͲB5&lvo԰*ZI?  V0h>d*O%ZTfPFp,v$shV<pf RG|6$'P?v6< C޲o,(Đtc^)R^7WlplލĝlPl/`p)R;rXG5VwFr'3BP_ʵc]AXyjY!Zj8 ҋmT\_B68θePj0ϸ6kZ \`BVшnL$6~+\(H*b5S>ξP6J"  C$۬ḼylLֆRXNlV&^gq,¦J.#^mg% H^v8̅МKd0f <iV^%xJ2o__6j.R{<^Ǫr.&bBKrnΒijrLءܚrS`ƭ(fNΆ6\3W4dR%f.H0~Bq?؁|7ɺlT%$1fy x Xyĕ\$(QT4H:p"E^9*pfؠ."h(B_~lrø~d>Q$ >J n6\08"5pq,jqҰHW2˦RvTd%\FysdȒ=HK(> ^v\N.ȡG&[b=hZTY62T"k@|(heDތFV-<o4v&$v6ϔf |ْ()\|y,MF̊lZi߄zFe,攖\VPF["fyw|uNP޷ |jP쭸u0h>G\Fhfep 2^JS^gJ8*Ӡ`&76YjBf4r3hbYZ]N,lx^ +.}H&*\H^.h $-<:Dh\4\$fHҡ$ZNp? ;s@hT8(-6]֨x$8.$RyDdFp3Эd"e0蘽ɨS I,mȫ@*h\HVV& jdI@eyԒZ ^@0úZ-va(h2&~lTq<_d(eڲ8wR:lutnXU.fK0T.Ԕ7ľ8g 1uD6{4!ާ4oDlң?Xe@P}c8bhx?FȲ5jN\Xx>p&pM"/v3 (KN:@ -Nn8H08.RD]޵:bDR<(Jĩvd">:=M>|̽odD"O껬ֻDYPFD"w+f>+̐h>,2t2|PնFȖg`ct&4Ӵ,|(*P^Qihr..^BڮQJR~PyK&vro@TXbq>cα`1܇94" ڡhj}:܄<9cjx'R:bx0׈8f7Z,B`Cvlf(_z7]HT8'TrVF{ yNKJFZJ.kh|b촮Fܮ/fPܒ?j?C fQ>zj&~x [16tWdG6Q~DBjLTD&T*Yu$(^L/\1$+FNڮ8?  ^⑀wdBq9,f|܋vGz\+`ِU:H=ȼ\,T-5LX茋tEh L.(5\̴+FnN=R/8&0SU,*&!DVS>P '3C@pLzd0j蔪FWH}(kDdzDh"&sO,j;bUbr®}LqXγf7N*DXh(4Tr]rp y=%~G*v2 `ČPqJVh؞8"(M|`v0-6L ϴ}4FLDڐt1bc("ZX'pnRpt|\CɦrFrtd2ཬ`fEWz^4Idn6$(bo 5J`ΰN`nr*n">Ğt@bpFx.^*ټ44~_J+ ad]xh B^7x7RR O}&ɐLo4"~`뜬1^`̴sΈDh4"` &R9r7BT .6|Yz ~j"#Ъ C8N ;,h~(3z0zL88K\ K Y4X4hb!tڒ5RDh?W~ȻVnNP2d`Fv,@Q:fgGB٦.cC@F|L96d: IdJp`: B@pID:LUО[J xvP`&̾ls'E_* Ҡ8VHh0n؍" #6L|ƽЦPp J&/" d64 ]C~BLBV7|+i` !U0_WHLߜNݲ-.N )bAzZr@b8~^tZ8d'ҔyoTL )wF:r^mH("T\:$_`:-0JC \%* 2DP#(bTWnjE ppQUTHZ,t "E=.nH!~J VHJvR|A4$Z^di1W̯̞5pPt>w V|9Rװd\m Z^OXn0r.th5n)>4,QV4XРdyڄ846B$rhH9 Š-jxFX<^pc 'jf. Vh5N V nԍ`X B( hMi:~TݪL<FwjT67|9zX``? @(w.sf7':%&dԩBPbۖzDrXY~JخJ*^< ~vr @ _,D$V1l,rRN0*@jz!&An(2=Ft'C~6wbbQvQƙ<2R% ܎j#nZ^(̼{>֪R[Zv,2(fTN޸V$ڊZղ OClng :k꺵BwxQMsZB D  `YP`I ŽPfʴSN4rcN hB?2~>rh%$٪wF̶vlX/K 0 pHI6 26_1~+N(Fc=,1&l0,~ْH2``b&Ft&5X ~"jqܵN"$V4CV6PC|ZK LxV8\l6 P6tT-<2T2PZ&ddZF M5X>>&\pʈ- DRhNJd&Ox*P /6$T"ғ7$ZHbjT7'ԀgOmr:V_4,JŮpHXLdS)aVF\*im">mDƋ }l46@VxEz%t`joF| &D (":|.n8Hb.,XZ&U,22ꍠ O4ZFtl<ԴBl3&x,n<ڹbzʘ;B xZ%J:1f|^t~e(n`54fD8 ̼`,rtG_mcڬ(j$hn9JL明 l1F{&֚ft8R攼@cl0u4|TT 8RBV RZp^ ނ6bܐ4ѐvb"x}2SZThFluFB2nm !>#E N'ng \AJj77$Oj jQ~~Fx$ОۚGTk E^bf, >4n^xpF /^Jx^RMn:ZUHB$JLjzh$& hlȷFm ,4"hl "$1J ~`apNJ԰&`|[zVEilADd*i.zN)pTKn,TP+x8>yed*ƒļ|<, "^ޢjڰ\zvt^,oI`x<-:i <, rАB& 醹~c>򃜯B,pb@@&r1P}>ERLIFa-]q 2`F#:*-l(l,P&2qfԐ-x8 서NҜ@lXʠcf6 $m` >F"8ʔ(z \p;8κ.n(:\2T@HRp XrO:9 Y~">(^Gp^x)6~~ȰTDݾWd|~):8<ֲDԮ,x,Byl-Ȁ&ˆE~no49 zFtPNÊ(j|Tg4|x5FJ޹Bl 0|pDpUj zhqhdv6xޖ]hvFBs3Ye*D6ߪe~y>DopfCدDq$TcD@\BB f *LB&܀$JֽD:8Cnf$zdI^Y2K3,j|j(Z^AsPC]24x|~^/Dp( hT, 0cb H<^B%†/^zR{0ԘTHvg)(0X?6,8ܞvuL5^e[fbft$$XwԒpFjX'N~@eTZ žkh\6zB{  l>"lujTNZMvv<24`qa,XiTm0ώgRfUBħ8Rpntla^J=qj)r"r zx^,fX7!~C\`Dd8n@lmАpf"hQ ą+tDl7DLQtҒ@jt֣`Z"*&ds̼dd@, LefgݨHPt(+^$![\$OjNCyj´*" S}Z e2HDb~2%Xv *Z;0((F#|^l菒c'О)+\4H"t%0D*(vA\n 0@pΝ$r Rch:~ZMx[yԾV,u'nfDeXz&'䒐FR!ƾxx7smظ,nortv"kNN#"Y69u`n~׬8s;Th(`!r!fD s:8nTBlP<2_\+bn^耚h@4i Jި6w6nR6dl9@rR$U6<;HXҐmi$R*\!PZ LtXyP7LVZ)"cR;֍P؃$]nxAr2>X4ڂ p@2ZNМBRkh($CڿR麤\PV$BRLR-;8ɺzXxMR/ܡ.jiV$ -|hipϖE;8Z#,XRNV@d& łaPrr8Jr1*^pX^-dDBlzdnKLhRC<*˜Ii>>y:.Vx}nM^GZ~ 4ަ| HPw3$^LoVzQmpZVK|8䊰4"XD:lBZd,n:~fτ X76S:| 5|*|f"P(˜8,jֶ췚wH(Ǿ">",^Z2gNKb+ Xpb̉lLYऔF 2@PhLvF $f7.&|Z}+d:J$9 ~r4 x0>4fοĨp6܂2rcf"$)@Ҫ&v^aD72~@:4*2nr8::'PfA&d.vX RpT7f2vd2aH##Z| ݜl/%zXJGm*JrA e &':&cyt&&`L&Bjx06Fn `J<.gZvУX|`K*| _VdhVڍ9j9Xtk\xB6 J2@(_SzB  6sҔҮT=~(2xsE.vK!: (n!tpfd3Vh2>̜|:>g&־D,BlpMʓ> Z R DWI;.ƸD褈 >RZ:f؜BObjBZc ZR5JOaʒ8a&_@pH ܵ4^`Lf p1b[[ z?"pbR ,᪞TKnt:u~F}ܲ\װe.\na2?8 `j|܂F=6̜ؖ {H~T[ŸIjzB{r<>~GxB )WF>;Lf*R8dRVF }jT\tRDV}69$] ZVl^ʘ6nNĢbST `tPfjl"Ҹ Όd@"Z:7rx4x @юȌlazqP )6bwZDjnV$$jv B`FRPLj0jV;fň,2L6hȲ7Y4pà" "d .?OZܴ#:fp`TJ #ZV8ڲ*( |M $804 @ Rβ:<TN@u~U ,uJC<'-݄^̸`J2\d?:Nfi{vdĒ;y׺r> 2fT⦀w$K,(t'X^pgRyLeڂa`}*^QHZfbfz'6)ҹ[* PjTXHx @N6 J.rr Ҽ>s/~!UE∼Tp$(BRs2749 ^ɠkl.bąv"~b4D@N"nX삏ᜌ fJ|F~Nv!pZ|l"~\2N9ytTH liFl)(pT JX"j~iE8N!bLiӨ%>Bbf@JH|Ū_d Y%N{ "2lJQ>:ܖx]nD_Kz]N <.`R"#E Ɲ$R=\ xNR#ld\hTSz\x>1luٸbI߀1t|/ZZ.jQm'b=F6f.@v܆ ķ*Ÿ0( d d,S8(޹Flp|/ܡR؄l^/4;R nWPZJXΌ\?L],:ThXnYBh:ZO:ְޘX/#P,,.WBzȄ!Nz2$8| &} $d5l |fc~CYL-y^BXAF/CEufy*$R(tjj6Lo",R~>6-O^>Н4~y B^ F›xH6uP*J2A5^qP:(:p׈*X@L FNQj"Cb,&)":*LP~12f^Ju2Z<=HFJ-Zt, 2{2RAꭦ%5kZ`wtl2ftږa4MzdkIzڄk(:Q4V` Qش!*\|l4W^nu$#5W=B*T_|s>FY&*Wj"6.li=X,]V6=4:Дm`dT $F%~SV 8\>sKFu\Id9)pֈx2G"x0Ы th5@Rl,"ꀿ$lO`*x8Hrh&^B<.)H*?lW?:3,90PY4 V;b3E-JjMPe ZjU6 ~6R$zJ֒Oh~9"@L嶇jBdk2./o zR&06lx9 d"Piؗ^̂4ɸn4g8u\"B4U.|<¡XxvNs|{r`I&PP-l4% fַߴxH9r*fTH[:i`$|nPdNzb:ia:Gn~F9/.bBdפ[XnRr[.Zl^|D `r Mjܢ'(5:"FvX^lx{nXVntw $Ă6VæS^ZTG5 Lz(*Yx$t v`A@J9b4܀Ԯ"xՈ6͆>N:41 &¸8pjfBzDP̀-f좞X"Sx1@Dr&Jz$ T.Z$BЗ,DVk&dK,A8OsRbxOh@WT­:N4tM6L?킝, F0rT!RgAHZN uwtfFxBOP/, @1KPԖt Pe~N`xdrȦ& 6> xXf MN:@{d: -F'dv$`(T*V*/Z\Lx6Wv"=CvVt\:c&NX*\躰p6ǼvXtjR.4{D3&&l0PT.rο`87@ZU$Ob*TnzPPtR#D^>?8<O$LƾÜ><&x/ލ;\(ĵj3 b?|6j(68B2$8 .U쾈405b 0JcRDҧ0Fpx(WRl ƈ^0(@@JlJMK¨`o6i0?*[VFD6"}kjQܬ!`΀#V= SƼ:e:e^hTzJ->J(L2άTPv" ڞFٖq44茰JxL? Ǭ|:*KDm')":,fF<4皿zSTK)"bNjШ>Z8:Vldch۰HTMȢTLp1?zhb2Fܕ^Ήj/Ҟzl5z00IV0 OBd V~ҸH/r*gZr ȒX䆇FtWhຒEҞA LR6v\8H4nL $^{w^>D)"Eh$R JV?>9^6d1Ү"Yv}nA 8g|3_fJOb4L1>u=b|( T@{ex'p^#֊Z֦&Šon…9F M(d̐*Rvr2FƌyHƤ@'~ f8M|&03Zd2֮p=$bfBnpL٘58g0>w]`Ҟ&|8άt1jO;f܍yaR(>.pJAd yl Ę̏ƾ `NHR2Y|h%_r8fЦ%J;DFwDp&KxF蔶4HȚh408* V3"`>rf( 9(##p,njb5P2NxҬr_z ̂Z`Ab K OVxvbP(PRDĆe2ҁV$B\h@0dDxp4: 6S& Jl4XB98r`aj(JT"G(\(/hOv^TZ d4ƙ>(ke d,ڰvMN&$ВĬ``1 r{>,0RHdQ.zV̆OV1*&AY`̿lX2&,lpҠd) څU$"SDj=Hx^Pϖ檾ƫ`$f*8D!r8ƮVE%Zʜe0$B]>"'d$ M(l֐H?0l@8znnN{Hlr~vMȮ¸),",ЉFbXܔ[\V,XkO8*2zl)\[~:xn =ZV7`BڜdFhkV\/MWHغ"怨6ZaVDN*^EF?Vfp52VxR\Q\'tIruA얈|?J_Hb 肻RVVn~,p4;tQ30 "V!F{*P>Wfk{ *n&k!}j6"O2uP>\n$dI %8 P{᪤vkz Y$S`|Cԅ֌]$9-⟰*g`=h8Œh.r2 HJV3{<,ѤֿJ`LpprtF;Fs6SbXA֐ᤢt&s.ΧM2xԖГttzJ9o^.J`FRziڳNL.tJ,ԑCnR ̑AN4" ̄O$<Ȉ>]B60&i2B8+<َɾ8)Lڕ"۸~#F?pBZޜSz*|>6Wأ6,ꗲg~#.~~dl;bdd1#4VXj0'HxЈ:FFlt| @^tY"*F7fTTPp,`l|Prez҈]R37S&% i<{#"XXLL히B@Hf0Rld t *$6\Lm@`x&. tR`tt&&.Pd|9|$eN1o1^FfT^j#^y؃TmJr'Xt82ԔS/ 6AߎsԳB6,<ԋv,ހmLԇDDp-f>xTܴܥ> DC.$]=VDm_(vD+Qb@2"gT(EޔqHZPSa@+4>(KDR2Ѱ`rbټY:D5Vj8< Īxwzl&6?1|Jt0V~)iDf@rdlH@hAΙ̂vVdPe|g CX WjZZ${;f|ڼGTgbB=Xv6ؐوz@1RZr)@꧒lֲ~.Vz.aH,>*ԃ4605.@~=h(q+&=T[^ F>DoP{lD~C3АZpX3j+P@.5j8@b#ʫ^(sJxRoNp~bM ,5pO$f8*FJh,.f>Q$@hF)NPw@\1RIxHk>τ-f X%0*΀@hVmO!Jb1(h ݬ3JH}(gy抆n*x$>T6(8Ա$VU2l#|aҮt2#Jd8v#,BMܜ4J^4j_*j29x*e*_mغe0`8BV󦻬H&Zô"xx@HlcJ @_p|'.tENn"LRUwQ?C:0T:"$p HZVh\r/VRGt)^lYxD V-dOV^>yèզYp"ަ# ovAV0U Lt";EVV'V<\ QGF&h&LC?/I@$.Jp퐟P~.+jZttƏ+$zr%d@ 4[6^N$T -D1JL-'1IHV\ 舭b:_bU+VxHè&Y@,rh|2݌^<`؄8:Z~pFPKBz Nm<A)V<@38#*D0V$n~r8VR&ڨh,9 <|~J\_L:Hر^4 $H1Xm"X?v.6NHz<:P꺐if1Dl^>qo=8 #@żYӔ:&Xp~p &RT$њP\h$J`xHCZxJU"f>jθzO6:҄T@ff^zP \(HTV~BX$3,⺆?݊ 0?*Rj,jDTzp 9j.yV(VGx.⽄oިd2>T*j Rޕ|+FLiTjJpb@P-L`c,:\fƐFƎdj,1Rˆew-vHbeX&(IhºMHT^%ƝČ4CpbOpXdr! S[^4Tu^~~EL$44&F89 " 4LXM!8ԉ@!:$,Fe$k~pH`+rr\ʢW.ڙRb#ʛfZ x j+~[ `0lZ: .nXĆ暹wל=7Rpp iD6)EfR,}.A^+4,м6q2(VN& MIUeNv2u0%p IZxjT,WbjN7N^5ޭ }zKW\ZD_BXzzDJִSAnJz2XVZC&`ؒL$J'Hx:.nɆ1>f:rjFL8Rr=HDX*%Luʩ$:rV2m@@L@4Vv%pL|U:X rBu O<:;6Ĵ>V6Uz<%ƛ;@Rp$7͘NcXNZhfy>a>*mTiXRB>\ 9hd? :\XȆ4TR$d겦NvU Y|V܋"۸!f kf 5z:J0#^Y$dƕ&lK\^@v ?P4&0-,š;8l@g F$'*Ȭ4<z9;Z;(h`tRl hzhx3x'[&~qD|xzS&9;nVl(Y$[0CV_TLkD.p2njR|pL~0LrՖ .w (Eb39N1:ܗ^f>7 iNf] ̌"\T~kfN<mIPnF2PBJ2,>># lV\ZX$DŽ<C,K(Y1LJx<Ͳ$S4ߘʹ0,}0k ”2T~5Q 6Jfpxr4~z9s궵d%k>TƌΤT,|Z8Ct$E7J8l"'IzV,^7=G|/f3Jv T0` "L,{P121`TTxWzb@*9v&^ψJabֱ*(MVîz^>Pjްdғ򶊄?&vJd<&1RuZƴdZ\c3* v$(8$<|&xx<մCshMZfݒvTgc=0JVHm1漦@?4yzrfT B<8[EhzRm1[sPJMȔRx7DL\m4NM,]x$Ji^.joZd.,L@8nЗ^*6-D{2? dpľNd< ۺ^B*v4nȔFF=fR>CvT4&k45 `b؋#>o@f.H>$fT``@4j3Ujf|t},,>: Fr'A$@<6Jҝ|;0Pb<nL/V96ތDn^R@>-\`<(+Z$tl9SBdxFx:Ķgjs2CԎ%$F7,"ZCfD\GD҂BoDؒԖ2\?梪jӠ2O]œh9|̥jy#[&&#FkҔ'خX"w WfET2Y|#L6[ږ "5PvFLQ Bz(`!. Hd>D~k,dF„+~fj RTT?R0*M 1*btY+lz;^PdFb.t2v*BHk{PNHj˜U,L&⛼2*B)nXd4 $6ul͢Jn0jRR4*+ v܇vpTƿc"\nqH||**2ԋVY &RoU s/M$A EK#hLv~@& :Ʋ$f fR.|5VlPlJNPUHdߌ'XH\o戢Hш2 e (s LB, BFp@pDYl{ Oh N\62R>(lה:f&{H f&ȷX:ѼF_L, p+v:+>$xJTQ@tP5`Fh7@D$u&Y~fi;FJ'&u-lʟ*த U(2f(vR~Df`2TJrk1>nvKf^Ţs '0KJ KLT~(NhtBJ 0t\Z0`tA,􈾰N=nFLڊ 2.8mn.xPoЁ>H@:>Ov *Ud{fX^\`8W׾M0roco|O$k(^jք(mp.lڀ͠P0nسx>H<Lw&Fnl 懶y|Іm RL/d2j\&5 8Rruf Llfm@#̈.X (ANZM> JJǞ.tR L<ÜHgr^"/h"KpOnфwɒ*>q$_@ b^JZO $3PN(8z0z\+#FnZ%s4 8oЪ.@x*D\*8T<:6p걘Dݜ;Hrl$dhƒ||PHt`J [D>@p-8ittZ}vp4Ǣd/<X6sҜ@ ,2N0-%.42N2jtg‘H򌧤$f|ڽNf6(oJ\35j,NDi>+:Bu"P2;UT< Bc/ R}}(IrBH¤V1t.LzVG<:#8X8RAтJ`Ĭ$8 \{6KJ tp䈲-\5Jv]"_Yp櫖4;l05ʴBFJJzٚ5 aY_}, %(u$_x*RV`͊.@ָR$t܊>苄 .` ƘZ,i֞9XVgO")b J"<~ i&`GXBUޠZp14JׂR|{xht뎻\H*\^ET48Tx搂PTCrd6nTb 6 xjV%DNn.b<: vlx RѢs bjYt}zbN""VݤsxwhvJnƈ)"bTMHqt5nLZnNE$YT n%ȏZ L~ф+kOZޜ ,oDB؄|gH@bHbrhZ3NH lZd=bsa" Jg^OQ斯R"J觊ضVF+ V,6Ɗ Ut0IVDLVyf1GbnќnizV.@f˔n }{.qBbE-~RJ*~i|ZF5r.R! ZT3f.[n8TЋN_XFZBPh/L"H.`&2<`=DLNtrtT·EH>~LbϔljrJI:&ڙZB .W&lD/ޠK`t@r;Y6ڗ&p $yGC>&\&5F*.vBDU8̼>|\bW?G]Hw(gZ34Ꜯj@*1n䴀޸b&Q]xSݪ:tDğhځZα`ɤ!ꬼ @CJdǪJb|M.T(tcղθǮ'Rn[(Ԩ1t R0Ð^}𛂂> J8uDRx>f\rcvdy)p4*,4ִIP𼗖?SҖ< :2hSp~t,̖.zQ^-\E,>.ʖ& H Bwsfԝf7(BDHlŐImXfmVRbܨEꞂ^ejF.17_^^.4 B.tELjV&F[R}୸HUШpBxnV4fV5XX-}80fX̔J$v"1 N>خ+0VP|lznl(GT>xR) p)VvTˬf,Z¦xfT&xV2bЈ@ňsRIШVopz*J_|L0q=r&ULö6PI50.qVdJLZʏ@}-Gl|B7\ Tj8vTi:j,.R5p'v : \yF LØ;>d&L"~p<"r~<5h^$>Gjٌ~ĴPްz-"tR9PǮ&ށNIZX:Rgv\VLV01LAntbx6ZJXF>F 4u|E`42̤nUا<;`D$Gf2b[ü$"/v8 : |hWN7@ЈOD1BM搊@D!}`&>tǠڲ,%V Y`ވ^pfwv@19lOu ŸYb$hV@1nOR #^;*"4ޚC,G&^ L&2lr|8~&A:V:8!BKRPEI ^n״(=޵lhO4p(M@ߒ!A 8X>ZPz>ȏ,f:f{ܐ\,VPν.~~t!XPxJ吼,N>E ]bLNo\_6BHJʻֻ`kʍjg~&JؠBrhfꗈt:&* N&øW➪EB.< 3*% ,^|X=I  &#nkQ2F`j`#ȆvDŔ~#d@OzX*$PЈB@w:DD;MHbxĂлt^2` V@n8:XV.lŴ"LӴ_F06OPt:^pb<5v3*.b =\A:~(ORF46~Y 4ɌExzv\:YOV> Ht*QsT>zP䄖GȌ\Ir~P2 Lr>lJjd?X*Wxx0Ҵhr$^M"r ]dQ.4rj68$Jق7kƷ($ >fDd$H]& DrQJRfBV^6JKR j[hmb怨Xa|md`DxzVznbHi}0`؝Mxy$`c&!FT^, צJZ> Dapenf:x0טଡn@>'FrJ~`6ȖNUXZN~dϺ^Kf,|Ȁd6db"^|@JW逽ҩd} X)Ȉ,shI,Ⱦ60ORVj:JU3ݸnjCVv">H0\Nh~z$Ӧ~`8U;$f6ND&*f0zflڜ"| [>ZΚf@f~I(ŌvĊ3$7f+'8`p&]x)H x>(z)̋tn=pY_8.HtZ@,p:HئLletPʢ|A8D60bV0S ~: wKpU4`. n(} m*&"|ϸ(nnyB" y>Hh޶8U$8vev0Rr4nnP6p_DPツZ.>֋\Op #~}p$Va`GBX3ޚP.`䀷l[ƕk,j6y6DjCja~$s'Nm`jsޞf˰IP*Й̊Ԇ0r&BpDt|(h ^ vHI6L0^%xdB0:-6 >Rdhhfh^r7Ӟ<4$yx/Lz ,("uX&@}Vr8,ўEDNȩభ)Bu20`0/,^,\^@޼< ރ,p*F296Ma@'nRHZZG"$f{ȆFƢ!R[oJjfv3|\>qp?PnrD \.h/f9W*v;|$l@xM h]" |}8,n:m\G&LP!Ȗ}|(j|zx^4[ dj[Dph0hLObkxPv C3:?~G>Z6s)TRI?`m.cFy^Vd8&BF0V}t l%E9 [HZnp%BaðdL"L4k(ԂvZYuԯ,(FH&2hvdvnlH\搾,Zn)T&ehgB_Ƥ8 ێXnx)4=@F,ΚXV7ߤ_4X|: jzwrdNKj`<`E2ENJ}@8l µJr6p!^͞#PhTJ۞`2U`NH~A_ Z&FJMg jV$Z4ψZxC{4j#/ $)ߺ8^lG-{ )2UJZ]Զ-L 9BHp6lFJ/$Bj~=TtIlNf$?ʎ\z&(8%\Z7O ^׎ʑ>6x$F*2lPSJGck_̄($R hF8S9 n&Spad,U`bTF 62"!Ols8T ?2`R4ˈ)t|EN190tҾ[,8(HzZB8شW$ c6Jxhxh@hkPB<̩>W >\LT880"#z`:Ht\,ry; X.p.B6J,*X,Z{Bu'~`ȰnSH\zܦ}2X2l{T`%" x8kPrM.|^jXެngeڒ8H%F$^J,ԾxkZ#[@I0E`K\/bqRgx PV0!5\tjP49 DC|z=U PPPΚZPEBK|,ΏfL(Ȉqw>ĜexidED"w6mdx ib8D5ʎ` 6]ZHFڴFDh8~"̞Ұıo2&Z 2,0_nLIS..(y.|l8Fxz^H>@nP`E5nFZa2[N}ĒxڼޣhB:eZv0Ȳ{xtP^%2|::VzP셈Y:t_6@Jz bc>:t<`DXJ{5<8GBX"Xu@h?h/6ުy.d)LDaڼn"TXX@m(Ѽ7`=z| ARܷ\`JQƋ i;(0iSP2Ն c&j0ؤlQb 6$j$.j:8R!\Ҏڭ0rtV%bP~&(ƾI*rp:Ƭ ubFtp|(t+3Ѷ0<"NcZhz?Lnv\"r%tPuq\.d8{QZQ|Dhn YXBƘH^FBf(|@9Ho4x2~|ĴA'<~H شkT T~n%ngd#%o`Iޖ28UrlNTښ2^|+PxSĊpJLB, sD+tS~j!rjWNƞhX:c^^Lsvǐ6?,[p"L( M0@ݼ2vRjb<_ *)t8t~Fz%R/+jHP9xFyp ظX$2 U^kHNX4Jhd*F:0ޜ:8DZXs$ 6*d Z @"< P{xL֢H\F*&zl.b֔Mh:rš&Ď T(tKDP~`:pw8 z,+v!jfv. P,CبrNV.*!V43nGE>b6>7Fٚ.6ipѾ@Jq|=B0 >u>NjLkd6F|PHz6&B2I65Ðqx6>ꌂXuxq&h&^bH@s ޮ>WVviM d`},^hx|<+R 43ʪ`ZVzҮOJ¬:XnuVr;D,l6!N D&6F]\M& AlⱄTC&_qtF(r|) ݔ$:& >op`J6┺VKtRjIڒŢnJl $l "h|62Ř2vn>VN2A6p`hҬ,jިcN84(,|Nf>px0p]b D6bFJKj|\7l{>& 4~<mbyp>z@.Vڭ@X]LZŮĐdjĬZEf4LXzZϦĶbiFa. R1*PdݘZߐZ=>|f^<. ʉd X468P6T2JrE8J"k_%fҮ?J<xj-f0V8,@ ?PC@ފTN~%*[.0b.8ʋl{r?PPR"~9NW&NܚlVT%vyl$dƇo3{x.hܰ,8vP4L45dx)r^j gzހfz(ƈ:fx| PbFބ|;&pX4;on ~m:W/ ~4䖍Ц6Vum\(~fTk 45,40v$֜~H>#:B:ePT8lj\n^j> lE|.i8y8 2N?hN!|4}"Ks8v_ E@b8`SR|4N:xLp`fNΉ6}$DPl(tD<1@Z,Qb/(VT/K~2t<[ ] F76ʪ2KS=@TZ>, zLdF~FҌM*=кr#@t4lx6ڐZJ{n"4^\|f5 >j ^GPU̎SI.l"2nxnNPRPFSI ]*D)JXt8^`Ôp1,̷/Dd\^9 .j<@4#$zȉ6ԇC&2dxL\,MfQRU¾Y|#tCN<"4~^FL*b=jnZ@*dv-TWL>kA atP + ~\JR,Jc4Q<`ޤ~ n&F:pLyf~fh/Zfeփ z(@wx44$6dd8G\ lzX5b6(kb`hP:&,(>)  =RjryT\X*àp0`XIƒ vHxD #t~ 8/}@ ~|)44F\pq,n҆nXxfbPH8jr*{`4P>s T6jK+  ldv &~R2n*@ P\ l&^jr\BRs̞Pv{ro31\M0l3T,h%Sqx$B82ܺ7$hZ˼ŦbXuzL7N'wl&lS2KDZDJ"j}HN6Hp~)Dzd(& $me%D@pԽwV2MYh^I԰Bغ$Yb&Z@[N<a"`0_JFĐ|" RHnoN8~}͌ T ZT ꌖped-rҤH9܄^ Lfˊڊ}/R$rs̠\ly Yp 8Pv <:$ nZvFZh.d̖e4VJ4d@FYvhF"jf_d1@>cvVl(MppL?dXԑZ:@n,l#njzpͪ!xmd FuM|>Ω)nbn & fh~gr~"'i,|p۰/4vU4*tv\[)-փ~5,$y*:jV@J5޼zR J BUJbbh҂{@ pPvZp$0ܥD8^D J"ފxʕV)|TP (LڂRqG~ vP 솊7`cvl4NŽQM^"ܴz6r0yFG`gW$=H?l \&bª&xdF4bTAOXl%5x, r&" @&8X)H'|Ȭ~-ZB!ٴ$#VQDD-xP@z1Ic􄠕yv< z7CG (޽9kX.菮9R6RJf& ʸ߂,27hyPblt,`6%^Vy^ax# v zydҿjlXBΟ-lp΋FV`&8 D^xH,e$66hzLV!rT8(R|Rv4(?6ze>x~LDJ.t*RqҮv BWPZApJ*D¨Ğ#F^OoRb\AjxkZ2~)rŠL ėb|`zde L '\rNnJ(Pnv{8z^.x('btlq쪺V0Pوv`,Uև0TpV~vIrz~x`6𐻾6vpW|VZRm](* E E8dF𓖈q:g6rTv~i2(10bit5.2'Rqb(e&<#p$ZĂ.$A^¦JHT6Hb"64* ` ;z:\{*aˌ..f iNԤR\Bv:yNFx8 .&πP#Nzt^) trlPvJj L=dx)FV$x✋$f[ay޿0]E66 lf٘AX*zZl4^vMu^jܮ, wZnDKGO$N4h kDB=Dy&,;TU`̫tX`, Gǒ!"|br?jD}|23"&$.|A.+"|>ghXZ™pFLWP>"`jgsOt8;eԎoz>Nhu&tVtP }2npNfz$(p;l6w4J6Lʆ>&$P]xEQxZ;ܕEēpl0!xRژx[ VDS'ڿԳ0|U,1dl\ bwCP^({~>+. &d<~: d/y~hS~j0 iVx>]bY.Dz8 fQJɠdkV$6j\byNI`ֵR[a0x,T\KZhҮzޖ!v8~aXm w@"L}ꗞ*'Xao`(CLHXrrD0?z&|{8\SZ/ԱNd.YZ||~JFQFpRD b6tӜZ2H4"Pp4pDNdlEXR$(*~ZndʨH̠^OV7Xܢ7xurM[r@` .|b^h,x̦Azu|<3ʜbBq F"Umt涬aOp,m8hZ\<P 4*zYhNnpӰ?S5䦔&jpHWp* ~HTfJVʳFx*bT"T^$1~|~t;*s.6섟J8覤fv{pe|^@FUڔ1p2*J*蜄֠ -t,|=*`g0,;0%4I8(d$ zI:ΕZp"W^>ZLN rޘy0 6qڞNru*ҼQ":;v|%8Ά:nµrg \ljq<(tƤ!b|M(7<2?D 6l>6sr:f?펤nhXn(s~\J[|fV`8(J*^0V iP#f^cڮert ]:2crpdZyL$XF|z&Bh |DV~)zS( ̃_nLJCSl6*It\ wUԋj䦷ζ$,,&z,r>scVk:c>j:hl6;yFvwbE(/"R/S 6`hE򢀾ZXhM< Rq0SQ>8P7^t'H虒uZtnȂ1_f8&ȾziPff:ez\&v<(7"J c몷frAqO|mH1r>82fZVD> DS0@?,d.>nWqj`00A_~irVBSh܈Z4*鲅"`!Ϣ~`H8P|ք)\&cKb{bXxL.#L[L-0ox1!4&F/xy:4Jy_†G Tf6ʰ C|o4>$CZ(eT4Lzh1Z0zLOϼv~h}bDn/MROؑkpD ISa^hE* FHq(IF>Ttk=dK)JY%"ZND<⓼jb䈨~4g2f~apǮS(`0dt<,vDע6*dzø*|)Ų tb-t¢"uF>dLPNjhBlzB̏4|",ֺ)v>9WԤ,2ZXDf6@9*Thd:|߰:{~X~(;㸎|R!!\;:8@"&HTTNHFHmj| F dN>h"\pLW tP ^,Zc4H&B>Fw8|dGi$NLW>&&V`gz`\y8n(*#nsT_DV>H!82FS,}pΆF:Dtpq(L1 ,H@Ρ4v:ruP̔h1 =h& jWBΠOP⪖1.ߊ[vK@7pc7Z2H7"V"7RˈŦ)r ޔu%1P0NZ&JrL1.E`МnJzlt`-ViV>b쇶zP8rfE45DA Q֋ʇ^82|sl4lth$.(bƌqY:9x xL/vfJ{0ꈪbD|b^2^ N`ͶVZ RK09)V|( $Ar^yfFNm%ؔjI,k*h83òJRLt0X>L^Pǒj:"0Ί<:bvdjH 0"`$DPNt1H'zL]22: ~'rOIf’hRDbB,BX{.0M[4on >X@`@nSČDo#0u%nltXP>+ҋ^7B\^!~bo,vxL+uj&^-bD lCI>Fv&48.FW,|ը| "W0ܻ$+$$ Xb04tJ'6 *J׌8:(~('H ͒0llTbJ"fԒy\±q|+r?Vw~PjCh.`h>PbOں3|@Fh:"6LbfP.>ll3NlzvBJ~يD4.2{&%EզZs'& ;T>V$ 6N"hxpx2b5l{ VXxzZ2aF{.@sV|մgxT}\?hĕ PFzV|40kgzȃDR<ʾMnƋšEʲ` ZdD\t^|`޸|X l$Ŧ᐀s~}2VH5F-Ⱦ>XpH {O4RiV`*l+iڭΖќ 5 nYeBnⷠ7_* ;g(ܲnθ@tĩx"h` F46|bo"7Τ.f:1W,Dv/84CLzxcP稤H<7H:dD@H0zʫ^FF˼ -BlFgx~aޤav V ^[bRRNor (5^@b3:^\,w%D-oIvV$b=dj2@Z6ږFܮx2>̗ndlX8l>~IPz,HJ+ⱖX̞DҔ1, r\FlN,bgd^ ^0Wt2zh_VC@[h@K,lLn!sz>⾢)h0*pZZm@d`{,yBwqg8´D$X 1" S.RZF #j6pRxVXʘKq,(r%`c pޜJ0Ԩ2Bb&8 nj #>qN |t,.4^&rSN*.t |`vtBS~u* |.i@4d*x6R xgZI`C/NBh́`R/B>(rCwJ/鞓ghLHgbB^pR!hպX\?9+ΐkA(LC~J VL~P,@Lh샜Y("?W*D";^o`r\nj}, Y%4 jλ;Dܲ؄6EF(b=亲BWNZVl`Li y42 r鮖dt.P 6./~FwXt°TBj-YH8fD Q-jh& ,*RҼ^ho@T$CplCxgr@ft8`lR$2"Zp+N{"4^ vV焢x-Ȁ32(l&"+ęT `½$v4\j䮭pN BO@VW¤vmH;iz1pO/DrV7z ~Z2o{ $ jʾn%5txisDN ؆fI 4=`VlfE(Iԩ ^4<:|jx '6*Vd֔kb&抐%RNHx0<|8fEpfp+bx7Bjn(?෈$vR`:H,PT,]o`~0VrTuPhz+ ]4XJ$fl&[ܦ\V^x4K *<rU.~.bzZxƭґ@NZؤ>9p6?=vԁ0* v04qI=pT@DQ0XRl ~H{9z6fdsDiZLh``r~HVOvB*4sH\ο|"Z )PPlzh4\8v"\D {"Vr$FNT$+xf:40*[֋\Z~)PPNJ.Ԯ.y~ҫLҨYDl н<x:^x<1nm HNV28ْњvrڏT_cl֨}.ZjRV~u\ KZos n*^͜ij<| \f@K2d}V}>*)6*vVrBd^(>Āx W1ڰaYTrB$dd:. NO>>;@28S0Xg^ QsvCg }_/6◸oH`LC,^n,>䩺ڞ'z2:>dv! 6Jzg?hhrBӄN*j2^&!>:/vK8LbFR::>Hx 뚈z$4LSFz2ގ(llv $(S sy^=F St\e΂~XʠFFL26nlO}d$YjF^,~z0C(Iq&Ĩ/Z)В&K$'0NnK:qB9.}",Ԩ,V!]l~\f=>D.ND r!$vb>d+s,p Bgtsx`<6:Dh4\m&%rXʥt6Tl!zz`94B<$pnO(Bf[KZ{JHbS貲:fV[fז$jĘ6 :㆗ۦ8fBV@Cڹd#:sD&H܃~2bJUc^Z4LfWxj 780S.l D аD&Nf@`6*V>patat`pt`$>wʼŸvx,XD`6*( tt`M*̴d^@ @`vBJL Rd.m,ܸ,j43KGt5.^nf2ڬBkJ`hHJbb2(.z.`N;[7I[v >CpۂPzIaZt6:HTDl6d\\:LShB/$."DzBlkOҖN,vKOr<;xjt$"kvxkQPJMzsHK:*~1d8jObfvLISTJINFOISFT>File created by GoldWave. GoldWave copyright (C) Chris Craigvocoder-1.3-src/examples/white512.wav0100664000175000017500000000217607542365700017367 0ustar emanuelemanuelRIFFvWAVEfmt  dataÌ$M+wL0 ܀ҋpSjT<6&z @RjѢI,)YC 3p=q f(dv<ww ZɖfVVJHjUxBZZ0C4J|%$OH:$`Odj̠+.,KB;24`(<_ǀZJ4t>TBTΊgZHPdƊ2MS#νJO&bDJ r-V.*ԅƀ&V. brPe6`SdRkZ27@FPpFpgHd  *\XD#c|by\ B4Njm H܎=o%Y8Ћ†Ե~ @:A)(hp֮. pdƴbgzπOP>&iv. nR$32BАJF>X7a4^nu)k%\z8.̌:~t<(^PK<~\3Mf.@nRbZ"vW7?yhђ<t(>| tV%x&Z8t]Yhl_@D]lsD"|D^jjJyvYN)UfXUjMz}RB96xȢB>&6*ڠ"PPw̒x8x6_d td%ņߴlBHr(ڢD`]ԲEfhl.P`ޛ:F%$^:\q9@֮ޢ9\Ä"^Of$n+$*wj\2h&R2h*vdzԙR5t^`lຈ[^4fGZZHM nx̺4\XDhދ^{$B_~RӞ, `U HԐLISTJINFOISFT>File created by GoldWave. GoldWave copyright (C) Chris Craigvocoder-1.3-src/win32/0040775000175000017500000000000007542520157014420 5ustar emanuelemanuelvocoder-1.3-src/win32/cli/0040775000175000017500000000000007542520157015167 5ustar emanuelemanuelvocoder-1.3-src/win32/cli/VocoderCLI.dsp0100664000175000017500000001121107542504732017622 0ustar emanuelemanuel# Microsoft Developer Studio Project File - Name="VocoderCLI" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 60000 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=VocoderCLI - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "VocoderCLI.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "VocoderCLI.mak" CFG="VocoderCLI - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "VocoderCLI - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "VocoderCLI - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cwcl.exe RSC=rc.exe !IF "$(CFG)" == "VocoderCLI - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D PATH_MAX=2048 /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=cwlink.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "VocoderCLI - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D PATH_MAX=2048 /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=cwlink.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "VocoderCLI - Win32 Release" # Name "VocoderCLI - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\aiff.c # End Source File # Begin Source File SOURCE=..\..\error.c # End Source File # Begin Source File SOURCE=..\..\extended.c # End Source File # Begin Source File SOURCE=..\..\fftaux.c # End Source File # Begin Source File SOURCE=..\..\fftn.c # End Source File # Begin Source File SOURCE=..\..\main.c # End Source File # Begin Source File SOURCE=..\..\riff.c # End Source File # Begin Source File SOURCE=..\..\vocode.c # End Source File # Begin Source File SOURCE=..\..\wave.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\..\aiff.h # End Source File # Begin Source File SOURCE=..\..\config.h # End Source File # Begin Source File SOURCE=..\..\error.h # End Source File # Begin Source File SOURCE=..\..\extended.h # End Source File # Begin Source File SOURCE=..\..\fft.h # End Source File # Begin Source File SOURCE=..\..\riff.h # End Source File # Begin Source File SOURCE=..\..\spt.h # End Source File # Begin Source File SOURCE=..\..\vocode.h # End Source File # Begin Source File SOURCE=..\..\wave.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project vocoder-1.3-src/win32/Vocoder.dsw0100664000175000017500000000130507542504725016537 0ustar emanuelemanuelMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "VocoderCLI"=".\cli\VocoderCLI.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "VocoderGUI"=".\gui\VocoderGUI.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### vocoder-1.3-src/win32/gui/0040775000175000017500000000000007542520157015204 5ustar emanuelemanuelvocoder-1.3-src/win32/gui/hlp/0040775000175000017500000000000007542520157015767 5ustar emanuelemanuelvocoder-1.3-src/win32/gui/hlp/AfxDlg.rtf0100664000175000017500000010742407542504750017657 0ustar emanuelemanuel{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\f4\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica;}{\f7\fswiss\fcharset0\fprq2{\*\panose 020b0604020202030204}Helv;}{\f36\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}MS Sans Serif;} {\f37\froman\fcharset238\fprq2 Times New Roman CE;}{\f38\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f40\froman\fcharset161\fprq2 Times New Roman Greek;}{\f41\froman\fcharset162\fprq2 Times New Roman Tur;} {\f42\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f43\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f44\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f45\froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\f77\fswiss\fcharset238\fprq2 Helvetica CE;}{\f78\fswiss\fcharset204\fprq2 Helvetica Cyr;}{\f80\fswiss\fcharset161\fprq2 Helvetica Greek;}{\f81\fswiss\fcharset162\fprq2 Helvetica Tur;}{\f82\fswiss\fcharset177\fprq2 Helvetica (Hebrew);} {\f83\fswiss\fcharset178\fprq2 Helvetica (Arabic);}{\f84\fswiss\fcharset186\fprq2 Helvetica Baltic;}{\f85\fswiss\fcharset163\fprq2 Helvetica (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128; \red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\ql \li0\ri0\sb240\nowidctlpar\faauto\outlinelevel0\rin0\lin0\itap0 \b\f7\fs24\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1;}{\s2\ql \li0\ri0\sb120\nowidctlpar\faauto\outlinelevel1\rin0\lin0\itap0 \b\f7\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 2;}{\s3\ql \li360\ri0\nowidctlpar\faauto\outlinelevel2\rin0\lin360\itap0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 heading 3;}{\s4\ql \li360\ri0\nowidctlpar\faauto\outlinelevel3\rin0\lin360\itap0 \fs24\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 heading 4;}{\s5\ql \li720\ri0\nowidctlpar\faauto\outlinelevel4\rin0\lin720\itap0 \b\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 heading 5;}{ \s6\ql \li720\ri0\nowidctlpar\faauto\outlinelevel5\rin0\lin720\itap0 \fs20\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 heading 6;}{\s7\ql \li720\ri0\nowidctlpar\faauto\outlinelevel6\rin0\lin720\itap0 \i\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 heading 7;}{\s8\ql \li720\ri0\nowidctlpar\faauto\outlinelevel7\rin0\lin720\itap0 \i\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 heading 8;}{ \s9\ql \li720\ri0\nowidctlpar\faauto\outlinelevel8\rin0\lin720\itap0 \i\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 heading 9;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\*\cs15 \additive \fs16\up6 \sbasedon10 \ssemihidden footnote reference;}{ \s16\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 \ssemihidden footnote text;}{\s17\ql \li720\ri0\nowidctlpar\faauto\rin0\lin720\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 Normal Indent;}{\s18\ql \fi-240\li480\ri0\sb80\nowidctlpar\tx480\faauto\rin0\lin480\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 nscba;}{ \s19\ql \fi-240\li240\ri0\sa20\nowidctlpar\faauto\rin0\lin240\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext19 j;}{\s20\ql \li480\ri0\sa20\nowidctlpar\faauto\rin0\lin480\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 ij;}{\s21\ql \li0\ri0\sb80\sa20\nowidctlpar\faauto\rin0\lin0\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext21 btb;}{ \s22\ql \fi-240\li2400\ri0\sb20\sa20\nowidctlpar\faauto\rin0\lin2400\itap0 \f4\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext22 ctcb;}{\s23\ql \fi-240\li480\ri0\sa40\nowidctlpar\tx480\faauto\rin0\lin480\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext23 ns;}{\s24\ql \li0\ri0\sa120\nowidctlpar\faauto\rin0\lin0\itap0 \f4\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 TT;}{ \s25\ql \fi-240\li2400\ri0\sa20\nowidctlpar\faauto\rin0\lin2400\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext25 crtj;}{\s26\ql \fi-240\li480\ri0\nowidctlpar\tx480\faauto\rin0\lin480\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 nsca;}{\s27\ql \li0\ri0\sa20\nowidctlpar\faauto\rin0\lin0\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext27 bt;}{ \s28\ql \li240\ri0\sb120\sa40\nowidctlpar\faauto\rin0\lin240\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext28 Hf;}{\s29\ql \li240\ri0\sb120\sa40\nowidctlpar\faauto\rin0\lin240\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 Hs;}{\s30\ql \li480\ri0\sb120\sa40\nowidctlpar\faauto\rin0\lin480\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext30 RT;}{ \s31\ql \fi-2160\li2160\ri0\sb240\sa80\nowidctlpar\tx2160\faauto\rin0\lin2160\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext31 c;}{\s32\ql \li2160\ri0\sa20\nowidctlpar\faauto\rin0\lin2160\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext32 ct;}{\s33\ql \li240\ri0\sa20\nowidctlpar\faauto\rin0\lin240\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 it;}{ \s34\ql \li480\ri0\nowidctlpar\faauto\rin0\lin480\itap0 \f4\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext34 nsct;}{\s35\ql \fi-160\li400\ri0\sb80\sa40\nowidctlpar\faauto\rin0\lin400\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext35 nscb;}{\s36\ql \fi-2640\li2880\ri0\sb120\sa40\nowidctlpar\brdrb\brdrs\brdrw15 \brdrbtw\brdrs\brdrw15 \tx2880\faauto\rin0\lin2880\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext36 HC2;}{\s37\ql \fi-2640\li2880\ri0\sb120\sa20\nowidctlpar\tx2880\faauto\rin0\lin2880\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext37 C2;}{ \s38\ql \fi-240\li2400\ri0\sa20\nowidctlpar\faauto\rin0\lin2400\itap0 \f4\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext38 ctc;}{\s39\ql \li2160\ri0\sb160\nowidctlpar\faauto\rin0\lin2160\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext39 crt;}{\s40\ql \li480\ri0\sb20\sa40\nowidctlpar\faauto\rin0\lin480\itap0 \f4\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext40 or;}{ \s41\ql \fi-259\li360\ri0\sb40\sa40\nowidctlpar\tx360\faauto\rin0\lin360\itap0 \f36\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext41 Ln1;}{\s42\ql \li115\ri0\sb80\sa80\nowidctlpar\faauto\rin0\lin115\itap0 \f36\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 *Intro;}{\s43\ql \li115\ri0\sb80\sa80\keepn\nowidctlpar\faauto\rin0\lin115\itap0 \b\f36\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon3 \snext42 *Title;}{ \s44\ql \fi-245\li360\ri0\sb80\nowidctlpar\faauto\rin0\lin360\itap0 \f36\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext44 *Jl;}{\s45\ql \li360\ri0\sb40\sa40\nowidctlpar\faauto\rin0\lin360\itap0 \f36\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Lp1;}{\s46\ql \fi-1800\li1915\ri0\sb60\sl-240\slmult0\nowidctlpar\tx1915\faauto\rin0\lin1915\itap0 \f36\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext46 Tph;}{ \s47\ql \li115\ri0\sb120\sa80\nowidctlpar\faauto\rin0\lin115\itap0 \b\f36\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext41 Proch;}{\*\cs48 \additive \super \sbasedon10 \ssemihidden \styrsid2388245 endnote reference;}{\*\ts49\tsrowd\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \sbasedon11 \snext49 \styrsid10226465 Table Grid;}}{\*\rsidtbl \rsid206949\rsid1777430\rsid2299193\rsid2388245\rsid2569830\rsid2626385\rsid2718765\rsid3698896\rsid5717100\rsid6251161\rsid6708985 \rsid6832146\rsid6972838\rsid7096557\rsid7170858\rsid7305175\rsid7427241\rsid7545484\rsid7752749\rsid8459186\rsid8730685\rsid9705255\rsid10114284\rsid10226465\rsid11434804\rsid11566958\rsid14630110\rsid15284074\rsid15676911\rsid15937185\rsid16324984} {\*\generator Microsoft Word 10.0.2627;}{\info{\title # <> Help Index}{\author David Broman}{\operator Emanuel Borsboom}{\creatim\yr2002\mo9\dy18\hr15\min48}{\revtim\yr2002\mo9\dy19\hr19\min18}{\version27}{\edmins76}{\nofpages2}{\nofwords626} {\nofchars3569}{\*\company Exile Interactive Inc.}{\nofcharsws4187}{\vern16437}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3 \jcompress\viewkind4\viewscale75\htmautsp\nolnhtadjtbl\rsidroot2388245 \fet0\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}} {\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (} {\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ql \li0\ri0\sl240\slmult0\widctlpar\faauto\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs15\fs16\up6\insrsid2388245\charrsid2388245 #{\footnote \pard\plain \ql \li0\ri0\sl240\slmult0\widctlpar\faauto\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs15\fs16\up6\insrsid15284074\charrsid2388245 #}{\insrsid15284074 HIDD_VOCODERGUI_DIALOG}}}{\fs16\up6\insrsid2388245 }{\b\f7\fs24\up6\insrsid7305175 Zerius Vocoder Help}{\b\f7\insrsid2388245 \par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0\pararsid15284074 {\f7\insrsid15284074\charrsid15284074 \par This program is used to make speech sound cool. It imposes the vocal}{\f7\insrsid15284074 }{\f7\insrsid15284074\charrsid15284074 effects of speech onto another sound. This technique }{\f7\insrsid15284074 was}{\f7\insrsid15284074\charrsid15284074 been made}{\f7\insrsid15284074 }{\f7\insrsid15284074\charrsid15284074 popular by artists such as Kraftwerk and Laurie Anderson.}{\f7\insrsid10226465 \par \par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0\pararsid14630110 {\f7\insrsid14630110\charrsid14630110 This channel vocoder works by a}{\f7\insrsid14630110 nalyzing the frequencies in the }{\f7\insrsid14630110\charrsid14630110 modulator, splitting them into bands, finding the magnitude of each}{\f7\insrsid14630110 }{\f7\insrsid14630110\charrsid14630110 band, and then amplifying the corresponding bands of the carrier by}{\f7\insrsid14630110 }{ \f7\insrsid14630110\charrsid14630110 that magnitude.}{\f7\insrsid14630110 \par \par }{\f7\insrsid10226465 This table describes the controls on the form: \par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0\pararsid15284074 {\f7\insrsid10226465 \par }\trowd \irow0\irowband0\ts49\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid10226465\charrsid14630110 Modulator File\cell }{\f7\insrsid10226465 Click }{\f7\insrsid7096557 [}{ \f7\insrsid10226465 Browse}{\f7\insrsid7752749 ]}{\f7\insrsid10226465 to select a sound file of your voice speaking. It works best if you speak very clearly and more slowly than usual. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid10226465 \trowd \irow0\irowband0\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid10226465\charrsid14630110 Carrier File\cell }{\f7\insrsid10226465 Click }{\f7\insrsid7096557 [}{\f7\insrsid10226465 Browse}{\f7\insrsid7096557 ]}{\f7\insrsid10226465 to select a sound file of the sound that will be \'93saying\'94 what you said in the modulator. The carrier should be some kind of frequency-rich waveform. White noise works well. Periodic white noise (i.e. a very short sample of white noise) gives a robot-like sound. Another one that sounds good is a synthesized string-chord. This waveform will automatically be loop ed. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid10226465 \trowd \irow1\irowband1\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid10226465\charrsid14630110 Output File\cell }{\f7\insrsid10226465 Click }{\f7\insrsid7096557 [}{\f7\insrsid10226465 Browse}{\f7\insrsid7096557 ]}{\f7\insrsid10226465 to select the file that the results of vocoding will be written to. This file does not need to exist, it will be created. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid10226465 \trowd \irow2\irowband2\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid10226465\charrsid14630110 Window Length\cell }{\f7\insrsid10226465 Move the slider to choose how long a processing window is, in seconds. The inp ut audio is split into windows of this length and each window is processed on its own. The best window length is one that will give you around two windows per spoken syllable in the modulator. }{\f7\insrsid6972838 If the window length is too large, it will be hard to understand the results. If it is too small, the result won\rquote t sound very good.}{\f7\insrsid10226465 \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid10226465 \trowd \irow3\irowband3\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid6972838\charrsid14630110 Window Overlap\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid6972838\yts49 {\f7\insrsid6972838 Move the slider to choose how much the processing windows should overlap, in per cent of window length. }{\f7\insrsid6972838\charrsid15284074 Since the sound is processed in d}{\f7\insrsid6972838 iscrete windows, the output can }{\f7\insrsid6972838\charrsid15284074 change very abruptly where it goes from one }{\f7\insrsid6972838 window}{\f7\insrsid6972838\charrsid15284074 to the next. This}{ \f7\insrsid6972838 }{\f7\insrsid6972838\charrsid15284074 is audible as a click. To remedy this, the program can have the}{\f7\insrsid6251161 }{\f7\insrsid6972838\charrsid15284074 windows overlap and cross-fade between them. }{\f7\insrsid6972838 This parameter controls how much overlap there is. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid6972838 \trowd \irow4\irowband4\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid14630110\charrsid14630110 Band Count\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid14630110\yts49 {\f7\insrsid14630110 Move the slider to choose with how many frequency bands the carrier will be modulated. }{\f7\insrsid14630110\charrsid14630110 In order to excite the frequencies in the carrier, the frequencies of}{\f7\insrsid14630110 }{\f7\insrsid14630110\charrsid14630110 the modulator are split into bands. The larger your band-count, the}{\f7\insrsid14630110 }{ \f7\insrsid14630110\charrsid14630110 more the output will sound like the modulator. Somewhere}{\f7\insrsid14630110 }{\f7\insrsid14630110\charrsid14630110 between 8 and 64 usually sounds best.}{\f7\insrsid14630110 \par }{\f7\insrsid6251161\charrsid14630110 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid14630110 \trowd \irow5\irowband5 \ts49\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid7427241 Output Volume}{\b\f7\insrsid7427241\charrsid14630110 \cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid7427241\yts49 {\f7\insrsid7427241 Move the slider to choose how much the output will be amplified, in per cent. }{\f7\insrsid7427241\charrsid7427241 If you find that the output is clipped (distorted) or is too quiet,}{\f7\insrsid7427241 }{\f7\insrsid7427241\charrsid7427241 you can }{\f7\insrsid7545484 change}{\f7\insrsid7427241\charrsid7427241 the volume. Anything less than }{\f7\insrsid7545484 zero}{\f7\insrsid7427241\charrsid7427241 will}{\f7\insrsid7427241 }{\f7\insrsid7427241\charrsid7427241 reduce the volum}{\f7\insrsid7545484 e, and anything greater than zero}{\f7\insrsid7427241\charrsid7427241 will increase it.}{\f7\insrsid7427241 \par }{\f7\insrsid6251161\charrsid7427241 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid7427241 \trowd \irow6\irowband6\ts49\trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid2718765 Normalize\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid7427241\yts49 { \f7\insrsid2718765 When checked, the output is normalized with respect to the carrier. Turning it off will result in less clear results. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid2718765 \trowd \irow7\irowband7\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid2718765 Restore Defaults\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid7427241\yts49 { \f7\insrsid2718765 Will reset all parameters to their original values. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid2718765 \trowd \irow8\irowband8\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid7305175 Vocode Progress\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid7427241\yts49 { \f7\insrsid7305175 Displays how complete the vocoding is, if it is in progress. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid7305175 \trowd \irow9\irowband9\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid7305175 Stop\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid7427241\yts49 {\f7\insrsid7305175 Stops the vocoding that is in progress. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid7305175 \trowd \irow10\irowband10\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid7305175 Vocode\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid7427241\yts49 {\f7\insrsid7305175 Starts vocoding. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid7305175 \trowd \irow11\irowband11\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid7305175 Vocode and Listen\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid7427241\yts49 { \f7\insrsid7305175 Starts vocoding and will play the result when complete. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid7305175 \trowd \irow12\irowband12\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid7305175 Help\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid7427241\yts49 {\f7\insrsid7305175 Displays this help. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid7305175 \trowd \irow13\irowband13\ts49\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid15284074\yts49 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f7\insrsid7305175 Close\cell }\pard \ql \li0\ri0\widctlpar\intbl\faauto\rin0\lin0\pararsid7427241\yts49 {\f7\insrsid7305175 Closes the vocoder. \par }{\f7\insrsid6251161 \cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f7\insrsid7305175 \trowd \irow14\irowband14\lastrow \ts49\trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1998\clshdrawnil \cellx1890\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6858\clshdrawnil \cellx8748\row }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0\pararsid15284074 {\f7\insrsid2388245 \par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0\pararsid11566958 {\b\f7\fs24\insrsid11566958 \par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0\pararsid1777430 {\b\f7\fs24\insrsid8459186 Contact}{\b\f7\fs24\insrsid1777430 \par }{\f7\insrsid1777430\charrsid1777430 \par Please see the web site at \par \par }{\f7\insrsid1777430 http://www.nuel.ca/Vocoder}{\f7\insrsid1777430\charrsid1777430 \par \par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0\pararsid2299193 {\f7\insrsid2299193\charrsid2299193 for the latest information. The}{\f7\insrsid2299193 latest version will always be }{\f7\insrsid2299193\charrsid2299193 available from there.}{ \f7\insrsid1777430 \par }{\f7\insrsid11434804\charrsid2299193 \par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0\pararsid1777430 {\f7\insrsid1777430\charrsid1777430 If you have any problems, don't hesitate to contact me. I am always}{\f7\insrsid1777430 }{\f7\insrsid1777430\charrsid1777430 pleased to help. Also, drop me a line if like this program, or have}{\f7\insrsid1777430 }{\f7\insrsid1777430\charrsid1777430 any suggestions. I am especially eager to hear your creations. If}{\f7\insrsid1777430 }{\f7\insrsid1777430\charrsid1777430 you release some music utilizing the vocoder, please tell me so I can \par try to find it (freebies are always a}{\f7\insrsid1777430 ccepted)! My e-mail address is em@nuel.ca}{\f7\insrsid1777430\charrsid1777430 \par \par Chanks to Cody Jones for porting to MacOS. \par \par I appreciate any bug reports. \par \par }{\b\f7\fs24\insrsid11566958\charrsid11566958 Copyright \par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0\pararsid11566958 {\f7\insrsid11566958\charrsid11566958 \par The Zerius Vo}{\f7\insrsid8730685 coder is Copyright (C) 1996-1999}{\f7\insrsid11566958 , 2002}{\f7\insrsid11566958\charrsid11566958 Emanuel Borsboom. \par \par The FFT code (contained in fftn.c,}{\f7\insrsid6708985 fftaux.c, fft.h, and spt.h) is }{\f7\insrsid11566958\charrsid11566958 Copyright (C) 1993 Steven Trainoff. \par \par The code for converting to and from}{\f7\insrsid6708985 IEEE floating-point numbers is }{\f7\insrsid11566958\charrsid11566958 Copyright (C) 1988-1991 Apple Computer Inc. \par \par You are free to do whatever you like w}{\f7\insrsid6708985 ith the vocoder, as long as the }{\f7\insrsid11566958\charrsid11566958 copyright notice stays intact and you note any changes. \par \par There is no warranty. \par \par }} vocoder-1.3-src/win32/gui/hlp/VocoderGUI.cnt0100664000175000017500000000010207542372256020436 0ustar emanuelemanuel:Base VocoderGUI.hlp 1 Zerius Vocoder Help=HIDD_VOCODERGUI_DIALOG vocoder-1.3-src/win32/gui/hlp/VocoderGUI.hpj0100664000175000017500000000430307542504750020436 0ustar emanuelemanuel[OPTIONS] LCID=0x409 0x0 0x0 ;English (U.S.) TITLE=VOCODERGUI Application Help COMPRESS=true WARNING=2 BMROOT= ..,. ROOT= ..,. HLP=VocoderGUI.HLP ERRORLOG=VocoderGUI.LOG [FILES] afxdlg.rtf [ALIAS] HIDD_ABOUTBOX = HID_APP_ABOUT HID_HT_SIZE = HID_SC_SIZE HID_HT_HSCROLL = scrollbars HID_HT_VSCROLL = scrollbars HID_HT_MINBUTTON = HID_SC_MINIMIZE HID_HT_MAXBUTTON = HID_SC_MAXIMIZE AFX_HIDP_INVALID_FILENAME = AFX_HIDP_default AFX_HIDP_FAILED_TO_OPEN_DOC = AFX_HIDP_default AFX_HIDP_FAILED_TO_SAVE_DOC = AFX_HIDP_default AFX_HIDP_ASK_TO_SAVE = AFX_HIDP_default AFX_HIDP_FAILED_TO_CREATE_DOC = AFX_HIDP_default AFX_HIDP_FILE_TOO_LARGE = AFX_HIDP_default AFX_HIDP_FAILED_TO_START_PRINT = AFX_HIDP_default AFX_HIDP_FAILED_TO_LAUNCH_HELP = AFX_HIDP_default AFX_HIDP_INTERNAL_FAILURE = AFX_HIDP_default AFX_HIDP_COMMAND_FAILURE = AFX_HIDP_default AFX_HIDP_PARSE_INT = AFX_HIDP_default AFX_HIDP_PARSE_REAL = AFX_HIDP_default AFX_HIDP_PARSE_INT_RANGE = AFX_HIDP_default AFX_HIDP_PARSE_REAL_RANGE = AFX_HIDP_default AFX_HIDP_PARSE_STRING_SIZE = AFX_HIDP_default AFX_HIDP_FAILED_INVALID_FORMAT = AFX_HIDP_default AFX_HIDP_FAILED_INVALID_PATH = AFX_HIDP_default AFX_HIDP_FAILED_DISK_FULL = AFX_HIDP_default AFX_HIDP_FAILED_ACCESS_READ = AFX_HIDP_default AFX_HIDP_FAILED_ACCESS_WRITE = AFX_HIDP_default AFX_HIDP_FAILED_IO_ERROR_READ = AFX_HIDP_default AFX_HIDP_FAILED_IO_ERROR_WRITE = AFX_HIDP_default AFX_HIDP_STATIC_OBJECT = AFX_HIDP_default AFX_HIDP_FAILED_TO_CONNECT = AFX_HIDP_default AFX_HIDP_SERVER_BUSY = AFX_HIDP_default AFX_HIDP_BAD_VERB = AFX_HIDP_default AFX_HIDP_FAILED_MEMORY_ALLOC = AFX_HIDP_default AFX_HIDP_FAILED_TO_NOTIFY = AFX_HIDP_default AFX_HIDP_FAILED_TO_LAUNCH = AFX_HIDP_default AFX_HIDP_ASK_TO_UPDATE = AFX_HIDP_default AFX_HIDP_FAILED_TO_UPDATE = AFX_HIDP_default AFX_HIDP_FAILED_TO_REGISTER = AFX_HIDP_default AFX_HIDP_FAILED_TO_AUTO_REGISTER = AFX_HIDP_default [MAP] #include #include vocoder-1.3-src/win32/gui/MakeHelp.bat0100664000175000017500000000264707542504744017374 0ustar emanuelemanuel@echo off REM -- First make map file from Microsoft Visual C++ generated resource.h echo // MAKEHELP.BAT generated Help Map file. Used by VOCODERGUI.HPJ. >"hlp\VocoderGUI.hm" echo. >>"hlp\VocoderGUI.hm" echo // Commands (ID_* and IDM_*) >>"hlp\VocoderGUI.hm" makehm ID_,HID_,0x10000 IDM_,HIDM_,0x10000 resource.h >>"hlp\VocoderGUI.hm" echo. >>"hlp\VocoderGUI.hm" echo // Prompts (IDP_*) >>"hlp\VocoderGUI.hm" makehm IDP_,HIDP_,0x30000 resource.h >>"hlp\VocoderGUI.hm" echo. >>"hlp\VocoderGUI.hm" echo // Resources (IDR_*) >>"hlp\VocoderGUI.hm" makehm IDR_,HIDR_,0x20000 resource.h >>"hlp\VocoderGUI.hm" echo. >>"hlp\VocoderGUI.hm" echo // Dialogs (IDD_*) >>"hlp\VocoderGUI.hm" makehm IDD_,HIDD_,0x20000 resource.h >>"hlp\VocoderGUI.hm" echo. >>"hlp\VocoderGUI.hm" echo // Frame Controls (IDW_*) >>"hlp\VocoderGUI.hm" makehm IDW_,HIDW_,0x50000 resource.h >>"hlp\VocoderGUI.hm" REM -- Make help for Project VOCODERGUI echo Building Win32 Help files start /wait hcw /C /E /M "hlp\VocoderGUI.hpj" if errorlevel 1 goto :Error if not exist "hlp\VocoderGUI.hlp" goto :Error if not exist "hlp\VocoderGUI.cnt" goto :Error echo. if exist Debug\nul copy "hlp\VocoderGUI.hlp" Debug if exist Debug\nul copy "hlp\VocoderGUI.cnt" Debug if exist Release\nul copy "hlp\VocoderGUI.hlp" Release if exist Release\nul copy "hlp\VocoderGUI.cnt" Release echo. goto :done :Error echo hlp\VocoderGUI.hpj(1) : error: Problem encountered creating help file :done echo. vocoder-1.3-src/win32/gui/ReadMe.txt0100664000175000017500000000770407542504744017113 0ustar emanuelemanuel======================================================================== MICROSOFT FOUNDATION CLASS LIBRARY : VocoderGUI ======================================================================== AppWizard has created this VocoderGUI application for you. This application not only demonstrates the basics of using the Microsoft Foundation classes but is also a starting point for writing your application. This file contains a summary of what you will find in each of the files that make up your VocoderGUI application. VocoderGUI.dsp This file (the project file) contains information at the project level and is used to build a single project or subproject. Other users can share the project (.dsp) file, but they should export the makefiles locally. VocoderGUI.h This is the main header file for the application. It includes other project specific headers (including Resource.h) and declares the CVocoderGUIApp application class. VocoderGUI.cpp This is the main application source file that contains the application class CVocoderGUIApp. VocoderGUI.rc This is a listing of all of the Microsoft Windows resources that the program uses. It includes the icons, bitmaps, and cursors that are stored in the RES subdirectory. This file can be directly edited in Microsoft Visual C++. VocoderGUI.clw This file contains information used by ClassWizard to edit existing classes or add new classes. ClassWizard also uses this file to store information needed to create and edit message maps and dialog data maps and to create prototype member functions. res\VocoderGUI.ico This is an icon file, which is used as the application's icon. This icon is included by the main resource file VocoderGUI.rc. res\VocoderGUI.rc2 This file contains resources that are not edited by Microsoft Visual C++. You should place all resources not editable by the resource editor in this file. ///////////////////////////////////////////////////////////////////////////// AppWizard creates one dialog class: VocoderGUIDlg.h, VocoderGUIDlg.cpp - the dialog These files contain your CVocoderGUIDlg class. This class defines the behavior of your application's main dialog. The dialog's template is in VocoderGUI.rc, which can be edited in Microsoft Visual C++. ///////////////////////////////////////////////////////////////////////////// Help Support: hlp\VocoderGUI.hpj This file is the Help Project file used by the Help compiler to create your application's Help file. hlp\*.bmp These are bitmap files required by the standard Help file topics for Microsoft Foundation Class Library standard commands. hlp\*.rtf This file contains the standard help topics for standard MFC commands and screen objects. ///////////////////////////////////////////////////////////////////////////// Other standard files: StdAfx.h, StdAfx.cpp These files are used to build a precompiled header (PCH) file named VocoderGUI.pch and a precompiled types file named StdAfx.obj. Resource.h This is the standard header file, which defines new resource IDs. Microsoft Visual C++ reads and updates this file. ///////////////////////////////////////////////////////////////////////////// Other notes: AppWizard uses "TODO:" to indicate parts of the source code you should add to or customize. If your application uses MFC in a shared DLL, and your application is in a language other than the operating system's current language, you will need to copy the corresponding localized resources MFC42XXX.DLL from the Microsoft Visual C++ CD-ROM onto the system or system32 directory, and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation. For example, MFC42DEU.DLL contains resources translated to German.) If you don't do this, some of the UI elements of your application will remain in the language of the operating system. ///////////////////////////////////////////////////////////////////////////// vocoder-1.3-src/win32/gui/StdAfx.cpp0100664000175000017500000000031407542504744017100 0ustar emanuelemanuel// stdafx.cpp : source file that includes just the standard includes // VocoderGUI.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" vocoder-1.3-src/win32/gui/StdAfx.h0100664000175000017500000000203107542504744016543 0ustar emanuelemanuel// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #if !defined(AFX_STDAFX_H__E2B25587_7B12_45A3_8212_CA512CC281E2__INCLUDED_) #define AFX_STDAFX_H__E2B25587_7B12_45A3_8212_CA512CC281E2__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers #include // MFC core and standard components #include // MFC extensions #include // MFC Automation classes #include // MFC support for Internet Explorer 4 Common Controls #ifndef _AFX_NO_AFXCMN_SUPPORT #include // MFC support for Windows Common Controls #endif // _AFX_NO_AFXCMN_SUPPORT #include //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__E2B25587_7B12_45A3_8212_CA512CC281E2__INCLUDED_) vocoder-1.3-src/win32/gui/VocoderGUI.cpp0100664000175000017500000000403107542504744017655 0ustar emanuelemanuel// VocoderGUI.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "VocoderGUI.h" #include "VocoderGUIDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CVocoderGUIApp BEGIN_MESSAGE_MAP(CVocoderGUIApp, CWinApp) //{{AFX_MSG_MAP(CVocoderGUIApp) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CVocoderGUIApp construction CVocoderGUIApp::CVocoderGUIApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance } ///////////////////////////////////////////////////////////////////////////// // The one and only CVocoderGUIApp object CVocoderGUIApp theApp; ///////////////////////////////////////////////////////////////////////////// // CVocoderGUIApp initialization BOOL CVocoderGUIApp::InitInstance() { AfxEnableControlContainer(); // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif SetRegistryKey("Zerius"); CVocoderGUIDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; } vocoder-1.3-src/win32/gui/VocoderGUI.dsp0100664000175000017500000002210307542504744017661 0ustar emanuelemanuel# Microsoft Developer Studio Project File - Name="VocoderGUI" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 60000 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=VocoderGUI - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "VocoderGUI.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "VocoderGUI.mak" CFG="VocoderGUI - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "VocoderGUI - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "VocoderGUI - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cwcl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "VocoderGUI - Win32 Release" # PROP BASE Use_MFC 6 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 5 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=cwlink.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 winmm.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "VocoderGUI - Win32 Debug" # PROP BASE Use_MFC 6 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 5 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=cwlink.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "VocoderGUI - Win32 Release" # Name "VocoderGUI - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\StdAfx.cpp # End Source File # Begin Source File SOURCE=.\VocoderGUI.cpp # End Source File # Begin Source File SOURCE=.\hlp\VocoderGUI.hpj !IF "$(CFG)" == "VocoderGUI - Win32 Release" # PROP Ignore_Default_Tool 1 # Begin Custom Build - Making help file... OutDir=.\Release InputPath=.\hlp\VocoderGUI.hpj InputName=VocoderGUI "$(OutDir)\$(InputName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" start /wait hcw /C /E /M "hlp\$(InputName).hpj" if errorlevel 1 goto :Error if not exist "hlp\$(InputName).hlp" goto :Error copy "hlp\$(InputName).hlp" $(OutDir) goto :done :Error echo hlp\$(InputName).hpj(1) : error: type "hlp\$(InputName).log" :done # End Custom Build !ELSEIF "$(CFG)" == "VocoderGUI - Win32 Debug" # PROP Ignore_Default_Tool 1 # Begin Custom Build - Making help file... OutDir=.\Debug InputPath=.\hlp\VocoderGUI.hpj InputName=VocoderGUI "$(OutDir)\$(InputName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" start /wait hcw /C /E /M "hlp\$(InputName).hpj" if errorlevel 1 goto :Error if not exist "hlp\$(InputName).hlp" goto :Error copy "hlp\$(InputName).hlp" $(OutDir) goto :done :Error echo hlp\$(InputName).hpj(1) : error: type "hlp\$(InputName).log" :done # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\VocoderGUI.rc # End Source File # Begin Source File SOURCE=.\VocoderGUIDlg.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\Resource.h !IF "$(CFG)" == "VocoderGUI - Win32 Release" # PROP Ignore_Default_Tool 1 # Begin Custom Build - Making help include file... TargetName=VocoderGUI InputPath=.\Resource.h "hlp\$(TargetName).hm" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" echo. >"hlp\$(TargetName).hm" echo // Commands (ID_* and IDM_*) >>"hlp\$(TargetName).hm" makehm ID_,HID_,0x10000 IDM_,HIDM_,0x10000 resource.h >>"hlp\$(TargetName).hm" echo. >>"hlp\$(TargetName).hm" echo // Prompts (IDP_*) >>"hlp\$(TargetName).hm" makehm IDP_,HIDP_,0x30000 resource.h >>"hlp\$(TargetName).hm" echo. >>"hlp\$(TargetName).hm" echo // Resources (IDR_*) >>"hlp\$(TargetName).hm" makehm IDR_,HIDR_,0x20000 resource.h >>"hlp\$(TargetName).hm" echo. >>"hlp\$(TargetName).hm" echo // Dialogs (IDD_*) >>"hlp\$(TargetName).hm" makehm IDD_,HIDD_,0x20000 resource.h >>"hlp\$(TargetName).hm" echo. >>"hlp\$(TargetName).hm" echo // Frame Controls (IDW_*) >>"hlp\$(TargetName).hm" makehm IDW_,HIDW_,0x50000 resource.h >>"hlp\$(TargetName).hm" # End Custom Build !ELSEIF "$(CFG)" == "VocoderGUI - Win32 Debug" # PROP Ignore_Default_Tool 1 # Begin Custom Build - Making help include file... TargetName=VocoderGUI InputPath=.\Resource.h "hlp\$(TargetName).hm" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" echo. >"hlp\$(TargetName).hm" echo // Commands (ID_* and IDM_*) >>"hlp\$(TargetName).hm" makehm ID_,HID_,0x10000 IDM_,HIDM_,0x10000 resource.h >>"hlp\$(TargetName).hm" echo. >>"hlp\$(TargetName).hm" echo // Prompts (IDP_*) >>"hlp\$(TargetName).hm" makehm IDP_,HIDP_,0x30000 resource.h >>"hlp\$(TargetName).hm" echo. >>"hlp\$(TargetName).hm" echo // Resources (IDR_*) >>"hlp\$(TargetName).hm" makehm IDR_,HIDR_,0x20000 resource.h >>"hlp\$(TargetName).hm" echo. >>"hlp\$(TargetName).hm" echo // Dialogs (IDD_*) >>"hlp\$(TargetName).hm" makehm IDD_,HIDD_,0x20000 resource.h >>"hlp\$(TargetName).hm" echo. >>"hlp\$(TargetName).hm" echo // Frame Controls (IDW_*) >>"hlp\$(TargetName).hm" makehm IDW_,HIDW_,0x50000 resource.h >>"hlp\$(TargetName).hm" # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\StdAfx.h # End Source File # Begin Source File SOURCE=.\VocoderGUI.h # End Source File # Begin Source File SOURCE=.\VocoderGUIDlg.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=.\res\VocoderGUI.ico # End Source File # Begin Source File SOURCE=.\res\VocoderGUI.rc2 # End Source File # End Group # Begin Group "Help Files" # PROP Default_Filter "cnt;rtf" # Begin Source File SOURCE=.\hlp\AfxDlg.rtf # End Source File # Begin Source File SOURCE=.\hlp\VocoderGUI.cnt !IF "$(CFG)" == "VocoderGUI - Win32 Release" # PROP Ignore_Default_Tool 1 # Begin Custom Build - Copying contents file... OutDir=.\Release InputPath=.\hlp\VocoderGUI.cnt InputName=VocoderGUI "$(OutDir)\$(InputName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" copy "hlp\$(InputName).cnt" $(OutDir) # End Custom Build !ELSEIF "$(CFG)" == "VocoderGUI - Win32 Debug" # PROP Ignore_Default_Tool 1 # Begin Custom Build - Copying contents file... OutDir=.\Debug InputPath=.\hlp\VocoderGUI.cnt InputName=VocoderGUI "$(OutDir)\$(InputName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" copy "hlp\$(InputName).cnt" $(OutDir) # End Custom Build !ENDIF # End Source File # End Group # Begin Group "Vocoder Files" # PROP Default_Filter "" # Begin Source File SOURCE=..\..\aiff.c # End Source File # Begin Source File SOURCE=..\..\aiff.h # End Source File # Begin Source File SOURCE=..\..\config.h # End Source File # Begin Source File SOURCE=..\..\error.c # End Source File # Begin Source File SOURCE=..\..\error.h # End Source File # Begin Source File SOURCE=..\..\extended.c # End Source File # Begin Source File SOURCE=..\..\extended.h # End Source File # Begin Source File SOURCE=..\..\fft.h # End Source File # Begin Source File SOURCE=..\..\fftaux.c # End Source File # Begin Source File SOURCE=..\..\fftn.c # End Source File # Begin Source File SOURCE=..\..\riff.c # End Source File # Begin Source File SOURCE=..\..\riff.h # End Source File # Begin Source File SOURCE=..\..\spt.h # End Source File # Begin Source File SOURCE=..\..\vocode.c # End Source File # Begin Source File SOURCE=..\..\vocode.h # End Source File # Begin Source File SOURCE=..\..\wave.c # End Source File # Begin Source File SOURCE=..\..\wave.h # End Source File # End Group # Begin Source File SOURCE=.\ReadMe.txt # End Source File # Begin Source File SOURCE=.\vocoder.nsi # End Source File # End Target # End Project vocoder-1.3-src/win32/gui/VocoderGUI.h0100664000175000017500000000244707542504744017333 0ustar emanuelemanuel// VocoderGUI.h : main header file for the VOCODERGUI application // #if !defined(AFX_VOCODERGUI_H__B2E4805C_F3FF_401D_91BF_4874C34BF245__INCLUDED_) #define AFX_VOCODERGUI_H__B2E4805C_F3FF_401D_91BF_4874C34BF245__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #ifndef __AFXWIN_H__ #error include 'stdafx.h' before including this file for PCH #endif #include "resource.h" // main symbols ///////////////////////////////////////////////////////////////////////////// // CVocoderGUIApp: // See VocoderGUI.cpp for the implementation of this class // class CVocoderGUIApp : public CWinApp { public: CVocoderGUIApp(); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CVocoderGUIApp) public: virtual BOOL InitInstance(); //}}AFX_VIRTUAL // Implementation //{{AFX_MSG(CVocoderGUIApp) // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_VOCODERGUI_H__B2E4805C_F3FF_401D_91BF_4874C34BF245__INCLUDED_) vocoder-1.3-src/win32/gui/VocoderGUI.rc0100664000175000017500000001735307542506617017513 0ustar emanuelemanuel//Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "#define _AFX_NO_SPLITTER_RESOURCES\r\n" "#define _AFX_NO_OLE_RESOURCES\r\n" "#define _AFX_NO_TRACKER_RESOURCES\r\n" "#define _AFX_NO_PROPERTY_RESOURCES\r\n" "\r\n" "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" "#ifdef _WIN32\r\n" "LANGUAGE 9, 1\r\n" "#pragma code_page(1252)\r\n" "#endif //_WIN32\r\n" "#include ""res\\VocoderGUI.rc2"" // non-Microsoft Visual C++ edited resources\r\n" "#include ""afxres.rc"" // Standard components\r\n" "#endif\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDR_MAINFRAME ICON DISCARDABLE "res\\VocoderGUI.ico" ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 55 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About Zerius Vocoder" FONT 8, "MS Sans Serif" BEGIN ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 LTEXT "Zerius Vocoder version 1.3",IDC_STATIC,40,10,119,8, SS_NOPREFIX LTEXT "Copyright (C) 1996-1999, 2002 Emanuel Borsboom", IDC_STATIC,40,25,160,8 DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP LTEXT "E-mail: em@nuel.ca",IDC_STATIC,40,40,64,8 LTEXT "Web: http://www.nuel.ca/Vocoder",IDC_STATIC,120,40,112, 8 END IDD_VOCODERGUI_DIALOG DIALOGEX 0, 0, 252, 201 STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW CAPTION "Zerius Vocoder" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "&Vocode",IDOK,0,185,50,14 PUSHBUTTON "&Close",IDCANCEL,200,185,50,14 PUSHBUTTON "&Help",ID_HELP,145,185,50,14 LTEXT "Carrier File:",IDC_STATIC,5,23,36,8 LTEXT "Modulator File:",IDC_STATIC,5,8,47,8 EDITTEXT IDC_MODULATOR_FILE_EDIT,55,5,130,14,ES_AUTOHSCROLL PUSHBUTTON "Browse...",IDC_MODULATOR_BROWSE_BUTTON,185,5,35,14 EDITTEXT IDC_CARRIER_FILE_EDIT,55,20,130,14,ES_AUTOHSCROLL PUSHBUTTON "Browse...",IDC_CARRIER_BROWSE_BUTTON,185,20,35,14 CONTROL "Slider2",IDC_WINDOW_LENGTH_SLIDER,"msctls_trackbar32", TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,70,75,150,10 LTEXT "Window Length:",IDC_STATIC,15,75,53,8 LTEXT "Window Overlap:",IDC_STATIC,15,90,56,8 CONTROL "Slider2",IDC_WINDOW_OVERLAP_SLIDER,"msctls_trackbar32", TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,70,90,150,10 LTEXT "Band Count:",IDC_STATIC,15,105,40,8 CONTROL "Slider2",IDC_BAND_COUNT_SLIDER,"msctls_trackbar32", TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,70,105,150,10 LTEXT "Output Volume:",IDC_STATIC,15,120,50,8 CONTROL "Slider2",IDC_OUTPUT_VOLUME_SLIDER,"msctls_trackbar32", TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,70,120,150,10 LTEXT "Output File:",IDC_STATIC,5,38,37,8 EDITTEXT IDC_OUTPUT_FILE_EDIT,55,35,130,14,ES_AUTOHSCROLL PUSHBUTTON "Browse...",IDC_OUTPUT_BROWSE_BUTTON,185,35,35,14 CONTROL "Normalize",IDC_NORMALIZE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,135,47,10 GROUPBOX "Parameters",IDC_STATIC,5,60,245,95 LTEXT "Static",IDC_WINDOW_LENGTH_VALUE_LABEL,220,75,25,8 LTEXT "Static",IDC_WINDOW_OVERLAP_VALUE_LABEL,220,90,25,8 LTEXT "Static",IDC_BAND_COUNT_VALUE_LABEL,220,105,25,8 LTEXT "Static",IDC_OUTPUT_VOLUME_VALUE_LABEL,220,120,25,8 CONTROL "Progress1",IDC_VOCODE_PROGRESS,"msctls_progress32", PBS_SMOOTH | WS_BORDER,65,165,130,14 LTEXT "Vocode Progress:",IDC_STATIC,5,168,57,8 PUSHBUTTON "Stop",IDC_STOP_BUTTON,200,165,50,14,WS_DISABLED PUSHBUTTON "Play",IDC_OUTPUT_PLAY_BUTTON,225,35,25,14,WS_DISABLED PUSHBUTTON "Play",IDC_MODULATOR_PLAY_BUTTON,225,5,25,14,WS_DISABLED PUSHBUTTON "Play",IDC_CARRIER_PLAY_BUTTON,225,20,25,14,WS_DISABLED PUSHBUTTON "Restore Defaults",IDC_RESTORE_DEFAULTS_BUTTON,180,135, 65,14 PUSHBUTTON "Vocode and &Listen",IDC_VOCODE_LISTEN_BUTTON,55,185,70, 14 END #ifndef _MAC ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904B0" BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "VocoderGUI MFC Application\0" VALUE "FileVersion", "1, 0, 0, 1\0" VALUE "InternalName", "VocoderGUI\0" VALUE "LegalCopyright", "Copyright (C) 2002\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "VocoderGUI.EXE\0" VALUE "ProductName", "VocoderGUI Application\0" VALUE "ProductVersion", "1, 0, 0, 1\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END #endif // !_MAC ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO DISCARDABLE BEGIN IDD_ABOUTBOX, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 228 TOPMARGIN, 7 BOTTOMMARGIN, 48 END IDD_VOCODERGUI_DIALOG, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 245 TOPMARGIN, 7 BOTTOMMARGIN, 194 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE DISCARDABLE BEGIN IDS_ABOUTBOX "&About Zerius Vocoder..." END #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // #define _AFX_NO_SPLITTER_RESOURCES #define _AFX_NO_OLE_RESOURCES #define _AFX_NO_TRACKER_RESOURCES #define _AFX_NO_PROPERTY_RESOURCES #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE 9, 1 #pragma code_page(1252) #endif //_WIN32 #include "res\VocoderGUI.rc2" // non-Microsoft Visual C++ edited resources #include "afxres.rc" // Standard components #endif ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED vocoder-1.3-src/win32/gui/VocoderGUIDlg.cpp0100664000175000017500000003725107542504744020316 0ustar emanuelemanuel// VocoderGUIDlg.cpp : implementation file // #include #include #include "stdafx.h" #include "VocoderGUI.h" #include "VocoderGUIDlg.h" extern "C" { #include "vocode.h" #include "error.h" extern int ipow(int, int); extern int ilog2(int); } using namespace std; #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif static const int MAX_OUTPUT_VOLUME = 200; static const int DEFAULT_OUTPUT_VOLUME = 100; static const int ONE_OUTPUT_VOLUME = 100; static const int DEFAULT_BAND_COUNT = 16; static const int MAX_BAND_COUNT = 64; static const int MAX_WINDOW_OVERLAP = 50; static const int DEFAULT_WINDOW_OVERLAP = 50; static const int WHOLE_WINDOW_OVERLAP = 100; static const int MAX_WINDOW_LENGTH = 500; static const int DEFAULT_WINDOW_LENGTH = 67; static const int ONE_SECOND_WINDOW_LENGTH = 1000; static const BOOL DEFAULT_NORMALIZE = TRUE; static const char* PROFILE_SECTION = "Settings"; static const char* MODULATOR_FILE_PROFILE_ENTRY = "ModulatorFile"; static const char* CARRIER_FILE_PROFILE_ENTRY = "CarrierFile"; static const char* OUTPUT_FILE_PROFILE_ENTRY = "OutputFile"; static const char* WINDOW_LENGTH_PROFILE_ENTRY = "WindowLength"; static const char* WINDOW_OVERLAP_PROFILE_ENTRY = "WindowOverlap"; static const char* BAND_COUNT_PROFILE_ENTRY = "BandCount"; static const char* OUTPUT_VOLUME_PROFILE_ENTRY = "OutputVolume"; static const char* NORMALIZE_PROFILE_ENTRY = "Normalize"; ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CVocoderGUIDlg dialog CVocoderGUIDlg::CVocoderGUIDlg(CWnd* pParent /*=NULL*/) : CDialog(CVocoderGUIDlg::IDD, pParent) { //{{AFX_DATA_INIT(CVocoderGUIDlg) m_modulatorFile = _T(""); m_carrierFile = _T(""); m_outputFile = _T(""); m_bandCount = 0; m_normalize = FALSE; m_outputVolume = 0; m_windowLength = 0; m_windowOverlap = 0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CVocoderGUIDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CVocoderGUIDlg) DDX_Text(pDX, IDC_MODULATOR_FILE_EDIT, m_modulatorFile); DDX_Text(pDX, IDC_CARRIER_FILE_EDIT, m_carrierFile); DDX_Text(pDX, IDC_OUTPUT_FILE_EDIT, m_outputFile); DDX_Slider(pDX, IDC_BAND_COUNT_SLIDER, m_bandCount); DDX_Check(pDX, IDC_NORMALIZE_CHECK, m_normalize); DDX_Slider(pDX, IDC_OUTPUT_VOLUME_SLIDER, m_outputVolume); DDX_Slider(pDX, IDC_WINDOW_LENGTH_SLIDER, m_windowLength); DDX_Slider(pDX, IDC_WINDOW_OVERLAP_SLIDER, m_windowOverlap); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CVocoderGUIDlg, CDialog) //{{AFX_MSG_MAP(CVocoderGUIDlg) ON_WM_SYSCOMMAND() ON_WM_DESTROY() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_MODULATOR_BROWSE_BUTTON, OnModulatorBrowseButton) ON_BN_CLICKED(IDC_CARRIER_BROWSE_BUTTON, OnCarrierBrowseButton) ON_BN_CLICKED(IDC_OUTPUT_BROWSE_BUTTON, OnOutputBrowseButton) ON_NOTIFY(NM_CUSTOMDRAW, IDC_WINDOW_LENGTH_SLIDER, OnCustomdrawWindowLengthSlider) ON_NOTIFY(NM_CUSTOMDRAW, IDC_WINDOW_OVERLAP_SLIDER, OnCustomdrawWindowOverlapSlider) ON_NOTIFY(NM_CUSTOMDRAW, IDC_BAND_COUNT_SLIDER, OnCustomdrawBandCountSlider) ON_NOTIFY(NM_CUSTOMDRAW, IDC_OUTPUT_VOLUME_SLIDER, OnCustomdrawOutputVolumeSlider) ON_BN_CLICKED(IDC_STOP_BUTTON, OnStopButton) ON_BN_CLICKED(IDC_MODULATOR_PLAY_BUTTON, OnModulatorPlayButton) ON_BN_CLICKED(IDC_CARRIER_PLAY_BUTTON, OnCarrierPlayButton) ON_BN_CLICKED(IDC_OUTPUT_PLAY_BUTTON, OnOutputPlayButton) ON_EN_CHANGE(IDC_MODULATOR_FILE_EDIT, OnChangeModulatorFileEdit) ON_EN_CHANGE(IDC_CARRIER_FILE_EDIT, OnChangeCarrierFileEdit) ON_EN_CHANGE(IDC_OUTPUT_FILE_EDIT, OnChangeOutputFileEdit) ON_BN_CLICKED(IDC_RESTORE_DEFAULTS_BUTTON, OnRestoreDefaultsButton) ON_BN_CLICKED(IDC_VOCODE_LISTEN_BUTTON, OnVocodeListenButton) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CVocoderGUIDlg message handlers BOOL CVocoderGUIDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon CSliderCtrl* pSlider = (CSliderCtrl*)GetDlgItem(IDC_WINDOW_LENGTH_SLIDER); pSlider->SetRange(1, MAX_WINDOW_LENGTH); pSlider = (CSliderCtrl*)GetDlgItem(IDC_WINDOW_OVERLAP_SLIDER); pSlider->SetRange(0, MAX_WINDOW_OVERLAP); pSlider = (CSliderCtrl*)GetDlgItem(IDC_BAND_COUNT_SLIDER); pSlider->SetRange(1, MAX_BAND_COUNT); pSlider = (CSliderCtrl*)GetDlgItem(IDC_OUTPUT_VOLUME_SLIDER); pSlider->SetRange(0, MAX_OUTPUT_VOLUME); CWinApp* app = AfxGetApp(); m_modulatorFile = CString(app->GetProfileString(PROFILE_SECTION, MODULATOR_FILE_PROFILE_ENTRY, "")); m_carrierFile = CString(app->GetProfileString(PROFILE_SECTION, CARRIER_FILE_PROFILE_ENTRY, "")); m_outputFile = CString(app->GetProfileString(PROFILE_SECTION, OUTPUT_FILE_PROFILE_ENTRY, "")); m_windowLength = app->GetProfileInt(PROFILE_SECTION, WINDOW_LENGTH_PROFILE_ENTRY, DEFAULT_WINDOW_LENGTH); m_windowOverlap = app->GetProfileInt(PROFILE_SECTION, WINDOW_OVERLAP_PROFILE_ENTRY, DEFAULT_WINDOW_OVERLAP); m_bandCount = app->GetProfileInt(PROFILE_SECTION, BAND_COUNT_PROFILE_ENTRY, DEFAULT_BAND_COUNT); m_outputVolume = app->GetProfileInt(PROFILE_SECTION, OUTPUT_VOLUME_PROFILE_ENTRY, DEFAULT_OUTPUT_VOLUME); m_normalize = app->GetProfileInt(PROFILE_SECTION, NORMALIZE_PROFILE_ENTRY, DEFAULT_NORMALIZE); UpdateData(FALSE); UpdatePlayButtonsEnabled(); return TRUE; // return TRUE unless you set the focus to a control return TRUE; // return TRUE unless you set the focus to a control } void CVocoderGUIDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } void CVocoderGUIDlg::OnDestroy() { WinHelp(0L, HELP_QUIT); CDialog::OnDestroy(); } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CVocoderGUIDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CVocoderGUIDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CVocoderGUIDlg::UpdatePlayButtonsEnabled() { UpdatePlayButtonEnabled(IDC_MODULATOR_FILE_EDIT, IDC_MODULATOR_PLAY_BUTTON); UpdatePlayButtonEnabled(IDC_CARRIER_FILE_EDIT, IDC_CARRIER_PLAY_BUTTON); UpdatePlayButtonEnabled(IDC_OUTPUT_FILE_EDIT, IDC_OUTPUT_PLAY_BUTTON); } void CVocoderGUIDlg::OnModulatorBrowseButton() { BrowseFile(TRUE, GetDlgItem(IDC_MODULATOR_FILE_EDIT)); } void CVocoderGUIDlg::BrowseFile(BOOL bOpenFileDialog, CWnd *editCtl) { CFileDialog fileDlg(bOpenFileDialog, ".wav", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Sound Files (*.wav)|*.wav|All Files (*.*)|*.*||", this); int iRV = fileDlg.DoModal(); if (iRV == IDOK) { editCtl->SetWindowText(fileDlg.GetPathName()); } } void CVocoderGUIDlg::OnCarrierBrowseButton() { BrowseFile(TRUE, GetDlgItem(IDC_CARRIER_FILE_EDIT)); } void CVocoderGUIDlg::OnOutputBrowseButton() { BrowseFile(FALSE, GetDlgItem(IDC_OUTPUT_FILE_EDIT)); } static jmp_buf _vocodeErrorJmpBuf; static CVocoderGUIDlg* _vocoderDlg; static void _StartStatusCB(VINT num_frames) { _vocoderDlg->StartStatus(num_frames); } static void _FinishStatusCB() { } static VBOOL _UpdateStatusCB(VINT frame_no) { return _vocoderDlg->UpdateStatus(frame_no); } static void _ErrorDisplayCB(char* message) { AfxMessageBox(message); longjmp(_vocodeErrorJmpBuf, 1); } static UINT _VocodeThread(LPVOID pParam) { if (setjmp(_vocodeErrorJmpBuf) == 0) { vocode(); } vocode_cleanup(); _vocoderDlg->VocodeFinished(); return 0; } void CVocoderGUIDlg::OnOK() { m_listenAfterVocode = FALSE; DoVocode(); } void CVocoderGUIDlg::DoVocode() { UpdateData(); CWinApp* app = AfxGetApp(); app->WriteProfileString(PROFILE_SECTION, MODULATOR_FILE_PROFILE_ENTRY, m_modulatorFile); app->WriteProfileString(PROFILE_SECTION, CARRIER_FILE_PROFILE_ENTRY, m_carrierFile); app->WriteProfileString(PROFILE_SECTION, OUTPUT_FILE_PROFILE_ENTRY, m_outputFile); app->WriteProfileInt(PROFILE_SECTION, WINDOW_LENGTH_PROFILE_ENTRY, m_windowLength); app->WriteProfileInt(PROFILE_SECTION, WINDOW_OVERLAP_PROFILE_ENTRY, m_windowOverlap); app->WriteProfileInt(PROFILE_SECTION, BAND_COUNT_PROFILE_ENTRY, m_bandCount); app->WriteProfileInt(PROFILE_SECTION, OUTPUT_VOLUME_PROFILE_ENTRY, m_outputVolume); app->WriteProfileInt(PROFILE_SECTION, NORMALIZE_PROFILE_ENTRY, m_normalize); char* error = NULL; if (m_modulatorFile.IsEmpty()) { error = "Modulator file not specified."; } else if (m_carrierFile.IsEmpty()) { error = "Carrier file not specified."; } else if (m_outputFile.IsEmpty()) { error = "Output file not specified."; } if (error != NULL) { AfxMessageBox(error); } else { _vocoderDlg = this; if (setjmp(_vocodeErrorJmpBuf) == 0) { vocode_start_status_cb = _StartStatusCB; vocode_update_status_cb = _UpdateStatusCB; vocode_finish_status_cb = _FinishStatusCB; error_display_cb = _ErrorDisplayCB; vocode_modulator_filename = m_modulatorFile.GetBuffer(0); vocode_carrier_filename = m_carrierFile.GetBuffer(0); vocode_output_filename = m_outputFile.GetBuffer(0); vocode_normalize = m_normalize; vocode_volume = m_outputVolume / (float)ONE_OUTPUT_VOLUME; vocode_band_count = m_bandCount; vocode_open_files(); vocode_window_length = ipow(2, ilog2(vocode_modulator_rate * m_windowLength / ONE_SECOND_WINDOW_LENGTH)); if (vocode_window_length < 2) { vocode_window_length = 2; } vocode_window_overlap = vocode_window_length * m_windowOverlap / WHOLE_WINDOW_OVERLAP; if (vocode_band_count > vocode_window_length / 2) { vocode_band_count = vocode_window_length / 2; } CWnd* pButton = GetDlgItem(IDOK); pButton->ModifyStyle(0, WS_DISABLED); pButton->Invalidate(); pButton = GetDlgItem(IDC_VOCODE_LISTEN_BUTTON); pButton->ModifyStyle(0, WS_DISABLED); pButton->Invalidate(); pButton = GetDlgItem(IDC_STOP_BUTTON); pButton->ModifyStyle(WS_DISABLED, 0); pButton->Invalidate(); m_stopVocode = FALSE; AfxBeginThread(_VocodeThread, NULL); } else { vocode_cleanup(); } } } void CVocoderGUIDlg::OnCustomdrawWindowLengthSlider(NMHDR* pNMHDR, LRESULT* pResult) { UpdateSliderLabels(); *pResult = 0; } void CVocoderGUIDlg::OnCustomdrawWindowOverlapSlider(NMHDR* pNMHDR, LRESULT* pResult) { UpdateSliderLabels(); *pResult = 0; } void CVocoderGUIDlg::OnCustomdrawBandCountSlider(NMHDR* pNMHDR, LRESULT* pResult) { UpdateSliderLabels(); *pResult = 0; } void CVocoderGUIDlg::OnCustomdrawOutputVolumeSlider(NMHDR* pNMHDR, LRESULT* pResult) { UpdateSliderLabels(); *pResult = 0; } void CVocoderGUIDlg::StartStatus(int num_frames) { CProgressCtrl* pProgress = (CProgressCtrl*)GetDlgItem(IDC_VOCODE_PROGRESS); pProgress->SetRange32(0, num_frames - 1); pProgress->SetPos(0); } BOOL CVocoderGUIDlg::UpdateStatus(int frame_no) { CProgressCtrl* pProgress = (CProgressCtrl*)GetDlgItem(IDC_VOCODE_PROGRESS); pProgress->SetPos(frame_no); return m_stopVocode; } void CVocoderGUIDlg::VocodeFinished() { CWnd* pButton = GetDlgItem(IDOK); pButton->ModifyStyle(WS_DISABLED, 0); pButton->Invalidate(); pButton = GetDlgItem(IDC_VOCODE_LISTEN_BUTTON); pButton->ModifyStyle(WS_DISABLED, 0); pButton->Invalidate(); pButton = GetDlgItem(IDC_STOP_BUTTON); pButton->ModifyStyle(0, WS_DISABLED); pButton->Invalidate(); UpdatePlayButtonsEnabled(); if (m_listenAfterVocode && !m_stopVocode) { PlaySound(m_outputFile, NULL, SND_ASYNC); } } void CVocoderGUIDlg::OnStopButton() { m_stopVocode = TRUE; } void CVocoderGUIDlg::OnModulatorPlayButton() { UpdateData(); PlaySound(m_modulatorFile, NULL, SND_ASYNC); } void CVocoderGUIDlg::OnCarrierPlayButton() { UpdateData(); PlaySound(m_carrierFile, NULL, SND_ASYNC); } void CVocoderGUIDlg::OnOutputPlayButton() { UpdateData(); PlaySound(m_outputFile, NULL, SND_ASYNC); } void CVocoderGUIDlg::OnChangeModulatorFileEdit() { UpdatePlayButtonsEnabled(); } void CVocoderGUIDlg::OnChangeCarrierFileEdit() { UpdatePlayButtonsEnabled(); } void CVocoderGUIDlg::OnChangeOutputFileEdit() { UpdatePlayButtonsEnabled(); } void CVocoderGUIDlg::UpdatePlayButtonEnabled(int nEditCntl, int nPlayCntl) { CString fileName; GetDlgItem(nEditCntl)->GetWindowText(fileName); CButton* pButton = (CButton*)GetDlgItem(nPlayCntl); TRY { CFile file(fileName, CFile::modeRead); pButton->ModifyStyle(WS_DISABLED, 0); } CATCH (CFileException, e) { pButton->ModifyStyle(0, WS_DISABLED); } END_CATCH pButton->Invalidate(); } void CVocoderGUIDlg::OnRestoreDefaultsButton() { UpdateData(); m_windowLength = DEFAULT_WINDOW_LENGTH; m_windowOverlap = DEFAULT_WINDOW_OVERLAP; m_bandCount = DEFAULT_BAND_COUNT; m_outputVolume = DEFAULT_OUTPUT_VOLUME; m_normalize = DEFAULT_NORMALIZE; UpdateData(FALSE); UpdateSliderLabels(); } void CVocoderGUIDlg::OnVocodeListenButton() { m_listenAfterVocode = TRUE; DoVocode(); } void CVocoderGUIDlg::UpdateSliderLabels() { UpdateSliderValueLabel(IDC_WINDOW_LENGTH_SLIDER, IDC_WINDOW_LENGTH_VALUE_LABEL, ONE_SECOND_WINDOW_LENGTH, "s"); UpdateSliderValueLabel(IDC_WINDOW_OVERLAP_SLIDER, IDC_WINDOW_OVERLAP_VALUE_LABEL, WHOLE_WINDOW_OVERLAP / 100, "%"); UpdateSliderValueLabel(IDC_BAND_COUNT_SLIDER, IDC_BAND_COUNT_VALUE_LABEL); UpdateSliderValueLabel(IDC_OUTPUT_VOLUME_SLIDER, IDC_OUTPUT_VOLUME_VALUE_LABEL, ONE_OUTPUT_VOLUME / 100, "%", -ONE_OUTPUT_VOLUME); } void CVocoderGUIDlg::UpdateSliderValueLabel(int nSliderId, int nLabelId, int nOneValue, char *pszUnits, int nOffset) { CSliderCtrl* pSlider = (CSliderCtrl*)GetDlgItem(nSliderId); CStatic* pLabel = (CStatic*)GetDlgItem(nLabelId); ostringstream ss; ss << (pSlider->GetPos() + nOffset) / (float)nOneValue; if (pszUnits != NULL) { ss << pszUnits; } pLabel->SetWindowText(ss.str().c_str()); } vocoder-1.3-src/win32/gui/VocoderGUIDlg.h0100664000175000017500000000527607542504744017765 0ustar emanuelemanuel// VocoderGUIDlg.h : header file // #if !defined(AFX_VOCODERGUIDLG_H__F93F4248_5661_4180_B396_5929D14B0369__INCLUDED_) #define AFX_VOCODERGUIDLG_H__F93F4248_5661_4180_B396_5929D14B0369__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ///////////////////////////////////////////////////////////////////////////// // CVocoderGUIDlg dialog class CVocoderGUIDlg : public CDialog { // Construction public: void VocodeFinished(); BOOL UpdateStatus(int frame_no); void StartStatus(int num_frames); CVocoderGUIDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CVocoderGUIDlg) enum { IDD = IDD_VOCODERGUI_DIALOG }; CString m_modulatorFile; CString m_carrierFile; CString m_outputFile; int m_bandCount; BOOL m_normalize; int m_outputVolume; int m_windowLength; int m_windowOverlap; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CVocoderGUIDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: HICON m_hIcon; // Generated message map functions //{{AFX_MSG(CVocoderGUIDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnDestroy(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnModulatorBrowseButton(); afx_msg void OnCarrierBrowseButton(); afx_msg void OnOutputBrowseButton(); virtual void OnOK(); afx_msg void OnCustomdrawWindowLengthSlider(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnCustomdrawWindowOverlapSlider(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnCustomdrawBandCountSlider(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnCustomdrawOutputVolumeSlider(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnStopButton(); afx_msg void OnModulatorPlayButton(); afx_msg void OnCarrierPlayButton(); afx_msg void OnOutputPlayButton(); afx_msg void OnChangeModulatorFileEdit(); afx_msg void OnChangeCarrierFileEdit(); afx_msg void OnChangeOutputFileEdit(); afx_msg void OnRestoreDefaultsButton(); afx_msg void OnVocodeListenButton(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: void UpdateSliderValueLabel(int nSliderId, int nLabelId, int nOneValue = 1, char* pszUnits = NULL, int nOffset = 0); BOOL m_listenAfterVocode; void UpdateSliderLabels(); void UpdatePlayButtonEnabled(int nEditCntl, int nPlayCntl); BOOL m_stopVocode; void DoVocode(); void BrowseFile(BOOL bOpenFileDialog, CWnd* editCtl); void UpdatePlayButtonsEnabled(); }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_VOCODERGUIDLG_H__F93F4248_5661_4180_B396_5929D14B0369__INCLUDED_) vocoder-1.3-src/win32/gui/resource.h0100664000175000017500000000311407542503317017177 0ustar emanuelemanuel//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by VocoderGUI.rc // #define IDM_ABOUTBOX 0x0010 #define IDD_ABOUTBOX 100 #define IDS_ABOUTBOX 101 #define IDD_VOCODERGUI_DIALOG 102 #define IDR_MAINFRAME 128 #define IDC_MODULATOR_FILE_EDIT 1006 #define IDC_MODULATOR_BROWSE_BUTTON 1007 #define IDC_CARRIER_FILE_EDIT 1008 #define IDC_CARRIER_BROWSE_BUTTON 1009 #define IDC_WINDOW_LENGTH_SLIDER 1010 #define IDC_WINDOW_OVERLAP_SLIDER 1011 #define IDC_BAND_COUNT_SLIDER 1012 #define IDC_OUTPUT_VOLUME_SLIDER 1013 #define IDC_OUTPUT_FILE_EDIT 1014 #define IDC_OUTPUT_BROWSE_BUTTON 1015 #define IDC_NORMALIZE_CHECK 1016 #define IDC_WINDOW_LENGTH_VALUE_LABEL 1017 #define IDC_WINDOW_OVERLAP_VALUE_LABEL 1018 #define IDC_BAND_COUNT_VALUE_LABEL 1019 #define IDC_OUTPUT_VOLUME_VALUE_LABEL 1020 #define IDC_VOCODE_PROGRESS 1021 #define IDC_STOP_BUTTON 1022 #define IDC_OUTPUT_PLAY_BUTTON 1023 #define IDC_MODULATOR_PLAY_BUTTON 1024 #define IDC_CARRIER_PLAY_BUTTON 1025 #define IDC_RESTORE_DEFAULTS_BUTTON 1026 #define IDC_VOCODE_LISTEN_BUTTON 1027 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 129 #define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif vocoder-1.3-src/win32/gui/vocoder.nsi0100664000175000017500000000470107542506617017364 0ustar emanuelemanuel; Generated NSIS script file (generated by makensitemplate.phtml 0.21) ; by 207.102.108.37 on Sep 18 02 @ 21:06 ; NOTE: this .NSI script is designed for NSIS v1.8+ Name "Zerius Vocoder" OutFile "InstallZeriusVocoder.exe" ; Some default compiler settings (uncomment and change at will): ; SetCompress auto ; (can be off or force) ; SetDatablockOptimize on ; (can be off) ; CRCCheck on ; (can be off) ; AutoCloseWindow false ; (can be true for the window go away automatically at end) ; ShowInstDetails hide ; (can be show to have them shown, or nevershow to disable) ; SetDateSave off ; (can be on to have files restored to their orginal date) InstallDir "$PROGRAMFILES\VocoderGUI" InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Zerius\VocoderGUI" "" DirShow show ; (make this hide to not let the user change it) DirText "Select the directory to install Zerius Vocoder in:" Section "" ; (default section) SetOutPath "$INSTDIR" ; add files / whatever that need to be installed here. File Release\VocoderGUI.exe File Release\VocoderGUI.hlp File ..\..\examples\modulator22.wav File ..\..\examples\carrier22.wav File ..\..\examples\white.wav File ..\..\examples\white512.wav WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Zerius\VocoderGUI" "" "$INSTDIR" WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\VocoderGUI" "DisplayName" "Zerius Vocoder (remove only)" WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\VocoderGUI" "UninstallString" '"$INSTDIR\uninst.exe"' ; write out uninstaller WriteUninstaller "$INSTDIR\uninst.exe" CreateShortCut "$SMPROGRAMS\Zerius Vocoder.lnk" "$INSTDIR\VocoderGUI.exe" CreateShortCut "$DESKTOP\Zerius Vocoder.lnk" "$INSTDIR\VocoderGUI.exe" SectionEnd ; end of default section ; begin uninstall settings/section UninstallText "This will uninstall Zerius Vocoder from your system" Section Uninstall ; add delete commands to delete whatever files/registry keys/etc you installed here. Delete "$INSTDIR\VocoderGUI.exe" Delete "$INSTDIR\VocoderGUI.hlp" Delete "$INSTDIR\modulator22.wav" Delete "$INSTDIR\carrier22.wav" Delete "$INSTDIR\white.wav" Delete "$INSTDIR\white512.wav" Delete "$SMPROGRAMS\Zerius Vocoder.lnk" Delete "$DESKTOP\Zerius Vocoder.lnk" Delete "$INSTDIR\uninst.exe" DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Zerius\VocoderGUI" DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\VocoderGUI" RMDir "$INSTDIR" SectionEnd ; end of uninstall section ; eof vocoder-1.3-src/win32/gui/res/0040775000175000017500000000000007542520157015775 5ustar emanuelemanuelvocoder-1.3-src/win32/gui/res/VocoderGUI.ico0100664000175000017500000000206607542365717020451 0ustar emanuelemanuel &(( @ CC(  vocoder-1.3-src/win32/gui/res/VocoderGUI.rc20100664000175000017500000000060507542504753020355 0ustar emanuelemanuel// // VOCODERGUI.RC2 - resources Microsoft Visual C++ does not edit directly // #ifdef APSTUDIO_INVOKED #error this file is not editable by Microsoft Visual C++ #endif //APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // Add manually edited resources here... /////////////////////////////////////////////////////////////////////////////