freealut-1.1.0/ 0000777 0003730 0000144 00000000000 10434331354 010321 5 0000000 0000000 freealut-1.1.0/doc/ 0000777 0003730 0000144 00000000000 10434331354 011066 5 0000000 0000000 freealut-1.1.0/doc/alut.html 0000644 0003730 0000144 00000142716 10427607450 012655 0000000 0000000
The OpenAL Utility Toolkit
The OpenAL Utility Toolkit (ALUT)
Contents
Release History
Discussion of the API is done via the openal-devel mailing
list.
2005-08-14: Version 1.0.0 by Steve Baker
2005-09-02: Version 1.0.1 by Sven Panne
2005-09-10: Version 1.0.2 by Sven Panne
2005-09-26: Version 1.0.3 by Sven Panne
2005-09-28: Version 1.0.4 by Sven Panne
2005-10-29: Version 1.0.5 by Sven Panne
2005-11-19: Version 1.0.6 by Sven Panne
2006-04-10: Version 1.0.7 by Sven Panne
2006-04-11: Version 1.1.0 by Sven Panne
Introduction
This is the OpenAL Utility Toolkit
(ALUT) Reference Manual.
Licensing
Some previous versions of ALUT were released under the BSD license -
others under LGPL. This version will be released exclusively under LGPL.
Some History
At the time of the first writing of this document (August 2005), ALUT was
a set of undocumented semi-portable functions that were mixed up in the
OpenAL library distribution. The intent had always been that ALUT would be a
cleanly separated library that would be portable between systems. It was
hoped that it would be well suited to producing succinct demo programs and
to help new developers to get started with OpenAL. It was to do this by
removing the annoying details of getting an audio application started -
allowing developers to learn OpenAL without distractions such as loading
sound samples from disk.
In order to move from this initial implementation to a clean API that
would meet the original goals of ALUT, it was necessary to break from the
past and make a clean start. The original version(s) were unnumbered - so we
will arbitarily label all previous versions as 0.x.x and start this cleaned
up version at release 1.0.0 to reflect changed API and implementations.
Backwards Compatibility with Version 0.x.x
There are no formal guarantees of reverse compatibility with the various
versions of ALUT prior to 1.0.0. Having said that, some effort has been made
to at least allow these programs to continue to run if they are recompiled
against ALUT 1.0.0 or later.
The old Linux implementation of OpenAL poses a special compatibility
problem: ALUT 0.x.x was not a physically separate library on this platform,
it was actually part of libopenal itself. This is bad for at least two
reasons: It was handled differently on other platforms and much more
seriously it locked together OpenAL and ALUT releases. So a deliberate
decision was made to break binary compatibility in this respect and cleanly
split the libraries into an OpenAL (i.e. AL and ALC) part and an ALUT
one.
If you have a program which needs such an old, deprecated "combined
OpenAL/ALUT" and you are not able to recompile it for some reason
(e.g. it is available in binary format only), then temporarily setting the
environment variable LD_PRELOAD to the full path of your installed
ALUT dynamic library can help. If this really works depends on the platform,
but e.g. Linux, FreeBSD, NetBSD, Solaris etc. support this mechanism. On Mac
OS X there is a similar environment variable called
DYLD_INSERT_LIBRARIES , but this has not been tested yet.
Example: Using a legacy program with the new ALUT
Let's assume that your ALUT dynamic library is at the usual location
/usr/lib/libalut.so and you have an old program called
myOldProg , then the following commandline in Bash syntax does the
trick:
LD_PRELOAD="/usr/lib/libalut.so" myOldProg
Note that setting LD_PRELOAD globally might not be a good idea,
because in that case the new ALUT would be loaded before every
dynamically linked executable.
OpenGL, GLUT and using what you already know
If you are already familiar with OpenGL and its utility toolkit GLUT,
then you should feel very familiar with ALUT. Wherever GLUT has 'GL', ALUT
has 'AL' and wherever GLUT has 'glut', ALUT has 'alut'. 'Window' is replaced
with 'Context' throughout the API.
Example: 'Hello, world' in ALUT
Here is the traditional first program for any language or library, but
this time it is actually saying 'Hello, world!' instead of
printing it:
#include <stdlib.h>
#include <AL/alut.h>
int
main (int argc, char **argv)
{
ALuint helloBuffer, helloSource;
alutInit (&argc, argv);
helloBuffer = alutCreateBufferHelloWorld ();
alGenSources (1, &helloSource);
alSourcei (helloSource, AL_BUFFER, helloBuffer);
alSourcePlay (helloSource);
alutSleep (1);
alutExit ();
return EXIT_SUCCESS;
}
Note that there error checks are missing in the program above to keep
it simple.
Compiling and Linking
All ALUT programs should contain:
#include <AL/alut.h>
The ALUT header includes <AL/al.h> and
<AL/alc.h> for you so you don't need to include them again -
although it does not hurt to do so. ALUT reserves the
"ALUT_ " prefix for preprocessor macros, so you should
never define such a macro in your own program. Furthermore, you should not
rely on any macro starting with "ALUT_ " not mentioned in
this specification.
If you are using the freealut implementation of ALUT, which is available
via the OpenAL homepage , you can find
out the necessary compilation flags by using one of the following
commands:
pkg-config --cflags freealut
freealut-config --cflags
To find out the necessary flags for linking, use one of the following
commands:
pkg-config --libs freealut
freealut-config --libs
On Windows, link with alut.dll and openal32.dll .
ALUT reserves the "alut " prefix for globally visible
functions and variables, so you should never define such a function or
variable in your own program. Furthermore, you should not rely on any such
function or variable not mentioned in this specification.
The ALUT API
Error Handling
ALUT's error handling and reporting is a little bit different from the
one used in OpenAL and OpenGL: All functions which can fail report
success/failure via a return value, where AL_FALSE /
AL_NONE / NULL mean failure. alutGetError can be
used to find out what exactly went wrong.
It is guaranteed that if a function fails, no data pointed to by pointer
arguments has been changed.
alutGetError
Name
alutGetError - return and clear the current error state
Synopsis
ALenum alutGetError (void);
Description
Any ALUT routine that fails will return AL_FALSE /
AL_NONE / NULL and set the global error state. If a
subsequent error occurs while there is still an error recorded internally,
the second error will simply be ignored. Calling alutGetError will
reset the error code to ALUT_ERROR_NO_ERROR . Note that the error
state is not cleared by other successful ALUT calls.
Return Value
alutGetError returns the contents of the global error state,
which can be one of the following values:
ALUT_ERROR_NO_ERROR
No ALUT error found.
ALUT_ERROR_OUT_OF_MEMORY
ALUT ran out of memory.
ALUT_ERROR_INVALID_ENUM
ALUT was given an invalid enumeration token.
ALUT_ERROR_INVALID_VALUE
ALUT was given an invalid value.
ALUT_ERROR_INVALID_OPERATION
The operation is invalid in the current ALUT state.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to an ALUT function.
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to an ALUT function.
ALUT_ERROR_OPEN_DEVICE
There was an error opening the ALC device.
ALUT_ERROR_CLOSE_DEVICE
There was an error closing the ALC device.
ALUT_ERROR_CREATE_CONTEXT
There was an error creating an ALC context.
ALUT_ERROR_MAKE_CONTEXT_CURRENT
Could not change the current ALC context.
ALUT_ERROR_DESTROY_CONTEXT
There was an error destroying the ALC context.
ALUT_ERROR_GEN_BUFFERS
There was an error generating an AL buffer.
ALUT_ERROR_BUFFER_DATA
There was an error passing buffer data to AL.
ALUT_ERROR_IO_ERROR
I/O error, consult errno for more details.
ALUT_ERROR_UNSUPPORTED_FILE_TYPE
Unsupported file type.
ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE
Unsupported mode within an otherwise usable file type.
ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA
The sound data was corrupt or truncated.
Errors
alutGetError can be called in any ALUT state and will never
fail.
alutGetErrorString
Name
alutGetErrorString - return an error message string
given an error code
Synopsis
const char *alutGetErrorString (ALenum error);
Description
alutGetErrorString can be used to convert an error code into a
human-readable description. The precise text of these descriptions may vary
from implementation to implementation and should not be relied upon by the
application.
Return Value
alutGetErrorString returns a pointer to an immutable
zero-terminated string corresponding to the given error code.
Errors
alutGetErrorString can be called in any ALUT state and
will never fail. An unknown error code is not considered an error
and a generic description will be returned in that case.
Example: Context Handling and Error Reporting
A typical ALUT program might look like this:
static void
reportError (void)
{
fprintf (stderr, "ALUT error: %s\n",
alutGetErrorString (alutGetError ()));
exit (EXIT_FAILURE);
}
int
main (int argc, char **argv)
{
if (!alutInit (&argc, argv))
{
reportError ();
}
/* ...play audio for a while... */
if (!alutExit ())
{
reportError ();
}
return EXIT_SUCCESS;
}
Initialization / Exit
ALUT starts in an uninitialized state. alutInit and
alutInitWithoutContext put ALUT into the initialized
state. Those functions must only be called when the state is
uninitialized . alutExit puts ALUT back from an
initialized state to an uninitialized one.
The following functions must only be called in an initialized
state and with a current context: alutExit ,
alutCreateBufferFromFile , alutCreateBufferFromFileImage ,
alutLoadMemoryFromFile , alutLoadMemoryFromFileImage ,
alutGetMIMETypes , alutCreateBufferHelloWorld ,
alutCreateBufferWaveform . All these functions check for AL/ALC
errors on entry and immediately return ALUT_ERROR_AL_ERROR_ON_ENTRY
or ALUT_ERROR_ALC_ERROR_ON_ENTRY if there was one. Note that as a
consequence of these checks the AL/ALC error states for the current
context/device are cleared after calling any of these functions.
alutSleep can be called in every state.
The following functions never fail and can be called in any state:
alutGetError , alutGetErrorString ,
alutGetMajorVersion , alutGetMinorVersion .
alutInit
Name
alutInit - initialize the ALUT library and create a default
current context
Synopsis
ALboolean alutInit (int *argcp, char **argv);
Description
alutInit initializes the ALUT internals and creates an OpenAL
context on the default device and makes it the current OpenAL context. If
you want something more complex than that (e.g. running on a non-default
device or opening multiple contexts on multiple devices), you can use alutInitWithoutContext
instead. alutInit examines the commandline arguments passed to it
and remove those it recognizes. It is acceptable to pass two NULL
pointers in settings where no useful information can be obtained from argc
and argv.
Return Value
alutInit returns AL_TRUE on success or
AL_FALSE on failure.
Errors
ALUT_ERROR_INVALID_VALUE
One of the arguments was NULL , but not the other one.
ALUT_ERROR_INVALID_OPERATION
ALUT has already been initialized.
ALUT_ERROR_OPEN_DEVICE
There was an error opening the default ALC device.
ALUT_ERROR_CREATE_CONTEXT
There was an error creating an ALC context.
ALUT_ERROR_MAKE_CONTEXT_CURRENT
Could not change the current ALC context.
Example: Handling command-line options
If you pass alutInit the argc and argv from your main program,
it will examine your command-line options and use (and remove) those
options that it recognises:
int
main (int argc, char **argv)
{
alutInit (&argc, argv);
...
}
Precisely which (if any) command-line options are accepted and what
they control is implementation and operating system dependent. Note that
some implementations will use argv[0] in debug and error messages - but
this is not guaranteed by the API because it is operating-system
dependent. On some OS's, alutInit may use initial settings from
other sources such as 'registry' data, '.alutrc ' files or shell
variables. Please consult the README.xxx file for your OS if you need
further details.
alutInitWithoutContext
Name
alutInitWithoutContext - initialize the ALUT library
Synopsis
ALboolean alutInitWithoutContext (int *argcp, char **argv);
Description
alutInitWithoutContext initializes the ALUT internals. It does
not create any OpenAL context or device, so this has to be done via the
usual ALC calls. alutInitWithoutContext examines the commandline
arguments passed to it and remove those it recognizes. It is acceptable to
pass two NULL pointers in settings where no useful information can
be obtained from argc and argv.
Return Value
alutInitWithoutContext returns AL_TRUE on success or
AL_FALSE on failure.
Errors
ALUT_ERROR_INVALID_VALUE
One of the arguments was NULL , but not the other one.
ALUT_ERROR_INVALID_OPERATION
ALUT has already been initialized.
alutExit
Name
alutExit - shutdown the ALUT library
Synopsis
ALboolean alutExit (void);
Description
When the application has finished playing audio, it should shut down ALUT
using aluExit . This closes any OpenAL device/context that ALUT may
have created in alutInit (but not any that the application created
using ALC). After calling alutExit , you may subsequently call
alutInit or alutInitWithoutContext again. Note that under
well-behaved operating systems, it should be acceptable to simply exit from
your program without bothering to call alutExit , relying on the OS
to clean up after you. However, it is dangerous to rely on this behavior if
portable operation is expected.
Return Value
alutExit returns AL_TRUE on success or
AL_FALSE on failure.
Errors
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to alutExit .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to alutExit .
ALUT_ERROR_CLOSE_DEVICE
There was an error closing the ALC device created by
alutInit .
ALUT_ERROR_MAKE_CONTEXT_CURRENT
Could not release the current ALC context.
ALUT_ERROR_DESTROY_CONTEXT
There was an error destroying the ALC context created by
alutInit .
Sound Sample File Loading
ALUT attempts to simplify the business of getting a simple application
running by providing loaders for a range of file formats. Rather than
enumerate a list of formats that will likely grow with time, the loaders are
generic and try to do their best either by using OpenAL extensions if
possible or by converting the sound data into standard OpenAL formats.
In order to simplify initial startup and to keep test program
distributions clean, ALUT provides built-in sounds, too, that do not require
disk I/O because they are built into the ALUT library. These functions may
be used to write compact ALUT test/example applications with no external
file dependancies whatsoever. When sending short application programs to
either the ALUT or OpenAL developers as a part of bug reporting, one should
endeavor to use these functions instead of loading ones own sound files.
There are eight (= 4 * 2) different loaders, corresponding to the sources
and destinations of the sound data. The possible sources are:
The loaders with a FromFile suffix get their sound data from
a named file.
The loaders with a FromFileImage suffix get their data from a
continuous memory region. This region can be re-used or destroyed
afterwards.
The loaders with a HelloWorld suffix get their fixed data
internally.
The loaders with a Waveform suffix get their data via
internal waveform calculation.
The possible destinations are:
The loaders with a alutCreateBuffer prefix create a new
OpenAL buffer and put the sound data into it. If possible, OpenAL
extensions are used to avoid conversions at the ALUT level and enable the
use of possible hardware/driveer features for some sound
formats. Therefore, these are the preferred loaders.
The loaders with a alutLoadMemory prefix allocate a new
memory region with malloc and put the sound data into it,
optionally passing back more information about the sound. The sound data
is guaranteed to be in one of the four standard OpenAL formats (8/16bit
monon/stereo) aftwerwards. Because no OpenAL extensions can be used here,
these loaders might handle fewer sound formats than the
alutCreateBuffer ones.
alutCreateBufferFromFile
Name
alutCreateBufferFromFile - load a sound file into an OpenAL
buffer
Synopsis
ALuint alutCreateBufferFromFile (const char *filename);
alutCreateBufferFromFile tries to guess the sound data format by
looking at the filename and/or the file contents and loads the sound data
into an OpenAL buffer.
Return Value
On success, alutCreateBufferFromFile returns a handle to an
OpenAL buffer containing the loaded sound. It returns AL_NONE on
failure.
Errors
ALUT_ERROR_OUT_OF_MEMORY
ALUT ran out of memory.
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to
alutCreateBufferFromFile .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to
alutCreateBufferFromFile .
ALUT_ERROR_GEN_BUFFERS
There was an error generating an AL buffer.
ALUT_ERROR_BUFFER_DATA
There was an error passing buffer data to AL.
ALUT_ERROR_IO_ERROR
I/O error, consult errno for more details.
ALUT_ERROR_UNSUPPORTED_FILE_TYPE
Unsupported file type.
ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE
Unsupported mode within an otherwise usable file type.
ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA
The sound data was corrupt or truncated.
alutCreateBufferFromFileImage
Name
alutCreateBufferFromFileImage - load in-memory sound data into
an OpenAL buffer
Synopsis
ALuint alutCreateBufferFromFileImage (const ALvoid *data, ALsizei length);
alutCreateBufferFromFileImage tries to guess the sound data
format by looking at the contents of the memory region given as parameters
and loads the sound data into an OpenAL buffer.
Return Value
On success, alutCreateBufferFromFileImage returns a handle to an
OpenAL buffer containing the loaded sound. It returns AL_NONE on
failure.
Errors
ALUT_ERROR_OUT_OF_MEMORY
ALUT ran out of memory.
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to
alutCreateBufferFromFileImage .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to
alutCreateBufferFromFileImage .
ALUT_ERROR_GEN_BUFFERS
There was an error generating an AL buffer.
ALUT_ERROR_BUFFER_DATA
There was an error passing buffer data to AL.
ALUT_ERROR_UNSUPPORTED_FILE_TYPE
Unsupported file type.
ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE
Unsupported mode within an otherwise usable file type.
ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA
The sound data was corrupt or truncated.
alutCreateBufferHelloWorld
Name
alutCreateBufferHelloWorld - create a buffer with a 'Hello, world!' sound
Synopsis
ALuint alutCreateBufferHelloWorld (void);
Description
alutCreateBufferHelloWorld returns a handle to an OpenAL buffer
containing the sound of someone saying 'Hello, world!'.
Return Value
On success, alutCreateBufferHelloWorld returns a handle to an
OpenAL buffer containing a 'Hello, world!' sound. It returns
AL_NONE on failure.
Errors
ALUT_ERROR_OUT_OF_MEMORY
ALUT ran out of memory.
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to
alutCreateBufferHelloWorld .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to
alutCreateBufferHelloWorld .
ALUT_ERROR_GEN_BUFFERS
There was an error generating an AL buffer.
ALUT_ERROR_BUFFER_DATA
There was an error passing buffer data to AL.
alutCreateBufferWaveform
Name
alutCreateBufferWaveform - create a buffer with a synthesized waveform sound
Synopsis
ALuint alutCreateBufferWaveform (ALenum waveshape,
ALfloat frequency,
ALfloat phase,
ALfloat duration);
Description
alutCreateBufferWaveform returns a handle to an OpenAL buffer
containing a snippet of audio with the specified waveshape at the specified
frequency (in Hertz), phase (in degrees: -180 to +180) and duration (in
seconds). Allowed waveforms are:
ALUT_WAVEFORM_SINE
ALUT_WAVEFORM_SQUARE
ALUT_WAVEFORM_SAWTOOTH
ALUT_WAVEFORM_WHITENOISE
ALUT_WAVEFORM_IMPULSE
The duration will always be rounded up to an exact number of cycles of
the sound to avoid a click if you loop the sample. The frequency and phase
arguments are ignored for ALUT_WHITENOISE .
Return Value
On success, alutCreateBufferWaveform returns a handle to an
OpenAL buffer containing the synthesized waveform. It returns
AL_NONE on failure.
Errors
ALUT_ERROR_OUT_OF_MEMORY
ALUT ran out of memory.
ALUT_ERROR_INVALID_ENUM
An invalid waveform token was given to
alutCreateBufferWaveform .
ALUT_ERROR_INVALID_VALUE
The frequency was not positive or the duration was negative.
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to
alutCreateBufferWaveform .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to
alutCreateBufferWaveform .
ALUT_ERROR_GEN_BUFFERS
There was an error generating an AL buffer.
ALUT_ERROR_BUFFER_DATA
There was an error passing buffer data to AL.
alutLoadMemoryFromFile
Name
alutLoadMemoryFromFile - load a sound file into OpenAL-like
data
Synopsis
ALvoid *alutLoadMemoryFromFile (const char *filename,
ALenum *format,
ALsizei *size,
ALfloat *frequency);
alutLoadMemoryFromFile tries to guess the sound data format by
looking at the filename and/or the file contents and loads the sound data
into a newly malloc ed buffer, possibly converting it in the
process. The format is guaranteed to be a standard OpenAL format
afterwards.
Return Value
On success, alutLoadMemoryFromFile returns a pointer to a newly
allocated memory area containing the sound data, which can be free d
if not needed anymore. It returns NULL on failure. If any of the
format, size or frequency parameters are non-NULL , the respective
information about the sound will be passed back.
Errors
ALUT_ERROR_OUT_OF_MEMORY
ALUT ran out of memory.
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to
alutLoadMemoryFromFile .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to
alutLoadMemoryFromFile .
ALUT_ERROR_IO_ERROR
I/O error, consult errno for more details.
ALUT_ERROR_UNSUPPORTED_FILE_TYPE
Unsupported file type.
ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE
Unsupported mode within an otherwise usable file type.
ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA
The sound data was corrupt or truncated.
alutLoadMemoryFromFileImage
Name
alutLoadMemoryFromFileImage - convert in-memory sound data into
OpenAL-like data
Synopsis
ALvoid *alutLoadMemoryFromFileImage (const ALvoid *data,
ALsizei length,
ALenum *format,
ALsizei *size,
ALfloat *frequency);
alutLoadMemoryFromFileImage tries to guess the sound data format
by looking at the contents of the memory region given as the first two
arguments and loads the sound data into a newly malloc ed buffer,
possibly converting it in the process. The format is guaranteed to be a
standard OpenAL format afterwards.
Return Value
On success, alutLoadMemoryFromFileImage returns a pointer to a
newly allocated memory area containing the sound data, which can be
free d if not needed anymore. It returns NULL on
failure. If any of the format, size or frequency parameters are
non-NULL , the respective information about the sound will be passed
back.
Errors
ALUT_ERROR_OUT_OF_MEMORY
ALUT ran out of memory.
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to
alutLoadMemoryFromFileImage .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to
alutLoadMemoryFromFileImage .
ALUT_ERROR_UNSUPPORTED_FILE_TYPE
Unsupported file type.
ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE
Unsupported mode within an otherwise usable file type.
ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA
The sound data was corrupt or truncated.
alutLoadMemoryHelloWorld
Name
alutLoadMemoryHelloWorld - load a 'Hello, world!' sound into
OpenAL-like data
Synopsis
ALvoid *alutLoadMemoryHelloWorld (ALenum *format,
ALsizei *size,
ALfloat *frequency);
Description
alutLoadMemoryHelloWorld loads the sound of someone saying
'Hello, world!' into a newly malloc ed buffer. The sound data is
guaranteed to be in a standard OpenAL format, with a sample frequency chosen
by the ALUT implementation.
Return Value
On success, alutLoadMemoryHelloWorld returns a pointer to a
newly allocated memory area containing the sound data, which can be
free d if not needed anymore. It returns NULL on
failure. If any of the format, size or frequency parameters are
non-NULL , the respective information about the sound will be passed
back.
Errors
ALUT_ERROR_OUT_OF_MEMORY
ALUT ran out of memory.
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to
alutLoadMemoryHelloWorld .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to
alutLoadMemoryHelloWorld .
alutLoadMemoryWaveform
Name
alutLoadMemoryWaveform - load a synthesized waveform sound into
OpenAL-like data
Synopsis
ALvoid *alutLoadMemoryWaveform (ALenum waveshape,
ALfloat frequency,
ALfloat phase,
ALfloat duration,
ALenum *format,
ALsizei *size,
ALfloat *sampleFrequency);
Description
alutLoadMemoryWaveform loads a snippet of audio with the
specified waveshape at the specified frequency (in Hertz), phase (in
degrees: -180 to +180) and duration (in seconds) into a newly
malloc ed buffer. The sound data is guaranteed to be in a standard
OpenAL format, with a sample frequency chosen by the ALUT
implementation. Allowed waveforms are:
ALUT_WAVEFORM_SINE
ALUT_WAVEFORM_SQUARE
ALUT_WAVEFORM_SAWTOOTH
ALUT_WAVEFORM_WHITENOISE
ALUT_WAVEFORM_IMPULSE
The duration will always be rounded up to an exact number of cycles of
the sound to avoid a click if you loop the sample. The frequency and phase
arguments are ignored for ALUT_WHITENOISE .
Return Value
On success, alutLoadMemoryWaveform returns a pointer to a newly
allocated memory area containing the sound data, which can be free d
if not needed anymore. It returns NULL on failure. If any of the
format, size or sample frequency parameters are non-NULL , the
respective information about the sound will be passed back.
Errors
ALUT_ERROR_OUT_OF_MEMORY
ALUT ran out of memory.
ALUT_ERROR_INVALID_ENUM
An invalid waveform token was given to
alutLoadMemoryWaveform .
ALUT_ERROR_INVALID_VALUE
The frequency was not positive or the duration was negative.
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to
alutLoadMemoryWaveform .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to
alutLoadMemoryWaveform .
alutGetMIMETypes
Name
alutGetMIMETypes - get list support supported audio MIME types
Synopsis
const char *alutGetMIMETypes (ALenum loader);
Description
alutGetMIMETypes returns a comma-separated list of
supported MIME types for the given loader type, e.g. something like
"audio/basic,audio/mpeg,audio/x-wav ". Allowed loader
types are:
ALUT_LOADER_BUFFER
For the loaders returning sound data in an OpenAL buffer,
e.g. alutCreateBufferFromFile and
alutCreateBufferFromFileImage
ALUT_LOADER_MEMORY
For the loaders returning sound data in a newly allocated memory
region, e.g. alutLoadMemoryFromFile and
alutLoadMemoryFromFileImage
It is possible that ALUT_LOADER_MEMORY loaders will be unable to
support some file types that ALUT_LOADER_BUFFER loaders can support
(although the reverse is never the case). Furthermore, it is possible that
for some file types (notably audio/x-wav) the support may be only for a few
sub-formats. For example, an implementation may advertise that audio/x-wav
is supported when in fact it only supports uncompressed (i.e. PCM) WAV files
and not any of the compressed subformats. In this event, the various ALUT
loaders may return an error and set
ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE rather than
ALUT_ERROR_UNSUPPORTED_FILE_TYPE which would indicate that no files
of this type are allowed.
Return Value
On success, alutGetMIMETypes returns a zero-terminated string
which contains a comma-separated list of supported MIME types. It returns
NULL on failure.
Errors
ALUT_ERROR_INVALID_ENUM
alutGetMIMETypes was given an invalid loader token.
ALUT_ERROR_INVALID_OPERATION
ALUT has not been initialised.
ALUT_ERROR_NO_CURRENT_CONTEXT
There is no current AL context.
ALUT_ERROR_AL_ERROR_ON_ENTRY
There was already an AL error on entry to
alutGetMIMETypes .
ALUT_ERROR_ALC_ERROR_ON_ENTRY
There was already an ALC error on entry to
alutGetMIMETypes .
Deprecated WAV loaders
For backwards-compatibility with ALUT 0.x.x, ALUT still offers the three
deprecated functions below. Note that on MacOS 0.x.x version, the
'loop ' parameter is omitted from both loader functions.
void alutLoadWAVFile (ALbyte *filename,
ALenum *format,
void **data,
ALsizei *size,
ALsizei *frequency,
ALboolean *loop);
void alutLoadWAVMemory (ALbyte *buffer,
ALenum *format,
void **data,
ALsizei *size,
ALsizei *frequency,
ALboolean *loop);
void alutUnloadWAV (ALenum format ALvoid *data, ALsizei size, ALsizei frequency);
Version Checking
ALUT version numbers consist of a major version number, a minor version
number, and a patchlevel. The former two numbers will match the major/minor
version number of the corresponding ALUT specification document and can be
accessed at compile time as well as runtime. The patchlevel is not
programmatically available and it is incremented only when fixing bugs
without any API changes.
alutGetMajorVersion
Name
alutGetMajorVersion - return the major ALUT version number
Synopsis
ALint alutGetMajorVersion (void);
Description
alutGetMajorVersion returns the major version number of the ALUT
in use, which will match the major version number of the corresponding ALUT
specification document.
Return Value
alutGetMajorVersion returns the major version number of the ALUT
in use.
Errors
alutGetMajorVersion can be called in any ALUT state and will
never fail.
alutGetMinorVersion
Name
alutGetMinorVersion - return the minor ALUT version number
Synopsis
ALint alutGetMinorVersion (void);
Description
alutGetMinorVersion returns the minor version number of the ALUT
in use, which will match the minor version number of the corresponding ALUT
specification document.
Return Value
alutGetMinorVersion returns the minor version number of the ALUT
in use.
Errors
alutGetMinorVersion can be called in any ALUT state and will
never fail.
Compile Time Version Checking
#define ALUT_API_MAJOR_VERSION 1
#define ALUT_API_MINOR_VERSION 1
Version 1.0.0 introduced the above preprocessor symbols, whose values
will be incremented appropriately in future revisions of ALUT. In version
1.1.0, alutLoadMemoryHelloWorld and alutLoadMemoryWaveform
have been added to the ALUT API.
Example: Version consistency check
Applications can verify at runtime that they have been compiled and
linked with the matching header file and library file as follows:
#ifdef ALUT_API_MAJOR_VERSION
if (alutGetMajorVersion () != ALUT_API_MAJOR_VERSION ||
alutGetMinorVersion () != ALUT_API_MINOR_VERSION)
/* Oh-oh! The ALUT header and the ALUT library are different revisions... */
#else
/* Oh-oh! We're linking against an ALUT 0.x.x header file... */
#endif
Sleeping
Having a general utility function like the following in an audio-related
toolkit might seem strange at first, but sleeping is a common task in a lot
of audio demos and it can't be done portably without cluttering the source
code with #ifdefs .
alutSleep
Name
alutSleep - sleep for a given number of seconds
Synopsis
ALboolean alutSleep (ALfloat duration);
Description
alutSleep will delay the execution of the current thread for at
least the given amount of seconds. It will only return earlier if a signal
has been delivered to the thread, but this does not count as an error. Note
that sleeping for zero seconds will give other runnable threads a chance to
run.
Return Value
alutSleep returns AL_TRUE on success or
AL_FALSE on failure. Note that current implementations will always
succeed if the duration is non-negative, but this might change in the
future.
Errors
ALUT_ERROR_INVALID_VALUE
alutSleep was given a negative duration.
freealut-1.1.0/doc/alut.css 0000644 0003730 0000144 00000001746 10427607450 012476 0000000 0000000 body, div {
font-family: sans-serif;
color: black;
background: white
}
h1, h2, h3, h4, h5, h6, p.title { color: #005A9C }
/*
* We could use the following to make the headers stand out a little bit more:
*
* h1 { background-color: #b8bec2 }
* h2 { background-color: #cfd5da }
*/
h3.manpage { background-color: #e6edf2 }
h1 { font: 170% sans-serif }
h2 { font: 140% sans-serif }
h3 { font: 120% sans-serif }
h4 { font: bold 100% sans-serif }
h5 { font: italic 100% sans-serif }
h6 { font: small-caps 100% sans-serif }
pre {
font-family: monospace;
border-width: 1px;
border-style: solid;
padding: 0.3em
}
pre.screen { color: #006400 }
pre.programlisting { color: maroon }
div.example {
background-color: #fffcf5;
margin: 1ex 0em;
border: solid #412e25 1px;
padding: 0ex 0.4em
}
a:link { color: #0000C8 }
a:hover { background: #FFFFA8 }
a:active { color: #D00000 }
a:visited { color: #680098 }
freealut-1.1.0/src/ 0000777 0003730 0000144 00000000000 10434331354 011110 5 0000000 0000000 freealut-1.1.0/src/alutWaveform.c 0000644 0003730 0000144 00000160270 10430631713 013650 0000000 0000000 #include "alutInternal.h"
#include
#include
#if defined(_WIN32)
#define random() rand()
#endif
static const double sampleFrequency = 44100;
/*
* The following waveformFoo functions expect the phase of the previous call and
* the current phase, both in the range [0..+1). They return an amplitude in the
* range [-1..+1].
*/
typedef double (*waveformFunction) (double lastPhase, double phase);
static double
waveformSine (double UNUSED (lastPhase), double phase)
{
static const double pi = 3.14159265358979323846;
return sin (phase * pi);
}
static double
waveformSquare (double UNUSED (lastPhase), double phase)
{
return (phase >= 0.5) ? -1 : 1;
}
static double
waveformSawtooth (double UNUSED (lastPhase), double phase)
{
return 2 * phase - 1;
}
static double
waveformWhitenoise (double UNUSED (lastPhase), double UNUSED (phase))
{
static const long prime = 67867967L;
return 2 * (double) (random () % prime) / prime - 1;
}
static double
waveformImpulse (double lastPhase, double phase)
{
return (lastPhase > phase) ? 1 : 0;
}
static waveformFunction
getWaveformFunction (ALenum waveshape)
{
switch (waveshape)
{
case ALUT_WAVEFORM_SINE:
return &waveformSine;
case ALUT_WAVEFORM_SQUARE:
return &waveformSquare;
case ALUT_WAVEFORM_SAWTOOTH:
return &waveformSawtooth;
case ALUT_WAVEFORM_WHITENOISE:
return &waveformWhitenoise;
case ALUT_WAVEFORM_IMPULSE:
return &waveformImpulse;
}
_alutSetError (ALUT_ERROR_INVALID_ENUM);
return NULL;
}
static OutputStream *
generateWaveform (ALenum waveshape, ALfloat frequency, ALfloat phase,
ALfloat duration)
{
waveformFunction func;
double sampleDuration, lastPhase, numSamplesD;
size_t numBytes, numSamples, i;
OutputStream *stream;
func = getWaveformFunction (waveshape);
if (func == NULL)
{
return NULL;
}
/* ToDo: Shall we test phase for [-180 .. +180]? */
if (frequency <= 0 || duration < 0)
{
_alutSetError (ALUT_ERROR_INVALID_VALUE);
return NULL;
}
/* allocate stream to hold AU header and sample data */
sampleDuration = floor ((frequency * duration) + 0.5) / frequency;
/* GCC is a bit picky about casting function calls, so we do it in two
steps... */
numSamplesD = floor (sampleDuration * sampleFrequency);
numSamples = (size_t) numSamplesD;
numBytes = numSamples * sizeof (int16_t);
stream = _alutOutputStreamConstruct (AU_HEADER_SIZE + numBytes);
if (stream == NULL)
{
return NULL;
}
/* write AU header for our 16bit mono data */
if (!_alutOutputStreamWriteInt32BE (stream, 0x2e736e64) || /* ".snd" */
!_alutOutputStreamWriteInt32BE (stream, AU_HEADER_SIZE) ||
!_alutOutputStreamWriteInt32BE (stream, (Int32BigEndian) numBytes) ||
!_alutOutputStreamWriteInt32BE (stream, AU_PCM_16) ||
!_alutOutputStreamWriteInt32BE (stream,
(Int32BigEndian) sampleFrequency) ||
!_alutOutputStreamWriteInt32BE (stream, 1))
{
_alutOutputStreamDestroy (stream);
return NULL;
}
/* normalize phase from degrees */
phase /= 180;
/* the value corresponding to i = -1 below */
lastPhase = phase - frequency / sampleFrequency;
lastPhase -= floor (lastPhase);
/* calculate samples */
for (i = 0; i < numSamples; i++)
{
double p = phase + frequency * (double) i / sampleFrequency;
double currentPhase = p - floor (p);
double amplitude = func (lastPhase, currentPhase);
if (!_alutOutputStreamWriteInt16BE
(stream, (Int16BigEndian) (amplitude * 32767)))
{
_alutOutputStreamDestroy (stream);
return NULL;
}
lastPhase = currentPhase;
}
return stream;
}
ALvoid *
alutLoadMemoryWaveform (ALenum waveshape, ALfloat frequency, ALfloat phase,
ALfloat duration, ALenum *format, ALsizei *size,
ALfloat *freq)
{
OutputStream *outputStream;
InputStream *inputStream;
ALvoid *data;
if (!_alutSanityCheck ())
{
return NULL;
}
outputStream = generateWaveform (waveshape, frequency, phase, duration);
if (outputStream == NULL)
{
return NULL;
}
/* We could do something more efficient here if the internal stream
structures were known, but this would break the abstraction. */
inputStream =
_alutInputStreamConstructFromMemory (_alutOutputStreamGetData
(outputStream),
_alutOutputStreamGetLength
(outputStream));
if (inputStream == NULL)
{
_alutOutputStreamDestroy (outputStream);
return NULL;
}
data = _alutLoadMemoryFromInputStream (inputStream, format, size, freq);
_alutOutputStreamDestroy (outputStream);
return data;
}
ALuint
alutCreateBufferWaveform (ALenum waveshape, ALfloat frequency, ALfloat phase,
ALfloat duration)
{
OutputStream *outputStream;
InputStream *inputStream;
ALuint buffer;
if (!_alutSanityCheck ())
{
return AL_NONE;
}
outputStream = generateWaveform (waveshape, frequency, phase, duration);
if (outputStream == NULL)
{
return AL_NONE;
}
/* We could do something more efficient here if the internal stream
structures were known, but this would break the abstraction. */
inputStream =
_alutInputStreamConstructFromMemory (_alutOutputStreamGetData
(outputStream),
_alutOutputStreamGetLength
(outputStream));
if (inputStream == NULL)
{
_alutOutputStreamDestroy (outputStream);
return AL_NONE;
}
buffer = _alutCreateBufferFromInputStream (inputStream);
_alutOutputStreamDestroy (outputStream);
return buffer;
}
/* converted from helloworld.wav */
static uint8_t helloWorldSample[] = {
0x2e, 0x73, 0x6e, 0x64, /* ".snd" */
0x00, 0x00, 0x00, 0x18, /* byte offset to data part (24) */
0x00, 0x00, 0x1f, 0xf2, /* number of bytes in the data part (8178) */
0x00, 0x00, 0x00, 0x01, /* encoding of the data part (8-bit ISDN u-law) */
0x00, 0x00, 0x2b, 0x11, /* number of samples per second (11025) */
0x00, 0x00, 0x00, 0x01, /* number of interleaved channels (1) */
0x7e, 0x7c, 0x7d, 0x7a, 0x79, 0xfc, 0xf8, 0x7e, 0x73, 0x6f, 0x7c, 0x7d,
0x6f, 0x71, 0x78, 0x78, 0x77, 0x6f, 0x6b, 0x6e, 0x71, 0x6c, 0x6b, 0x75,
0xff, 0x7b, 0x70, 0x6d, 0x6d, 0x6a, 0x6c, 0x74, 0x70, 0x73, 0x71, 0x63,
0x68, 0xfb, 0xf4, 0x78, 0x6f, 0xfd, 0xef, 0x74, 0x62, 0x70, 0xf6, 0x6a,
0x60, 0x6b, 0xf9, 0x7e, 0x6a, 0x7b, 0xea, 0x78, 0x62, 0x75, 0xe3, 0xe7,
0x71, 0x66, 0x78, 0xf9, 0x6d, 0x6d, 0x77, 0x74, 0x6f, 0x68, 0x6a, 0xfe,
0xf8, 0x7e, 0x6f, 0x6b, 0x72, 0xfe, 0xea, 0xe7, 0x72, 0x60, 0x6a, 0xed,
0xe8, 0x6f, 0x62, 0x62, 0x6a, 0xf3, 0xef, 0x7e, 0xfd, 0x70, 0x64, 0x6e,
0xed, 0xe6, 0xec, 0x6b, 0x5e, 0x7b, 0xe0, 0xe7, 0x7e, 0x62, 0x5c, 0x72,
0xee, 0xf5, 0x74, 0x65, 0x69, 0x6d, 0xfd, 0xe6, 0xef, 0x6c, 0x6a, 0x7e,
0xf6, 0x7a, 0x67, 0x64, 0x7b, 0x7c, 0x6b, 0xf0, 0xde, 0xfe, 0x5c, 0x5f,
0x7c, 0xe5, 0xe4, 0xf6, 0x6e, 0x69, 0x7e, 0xe2, 0xe0, 0x77, 0x5d, 0x6a,
0xf3, 0x6e, 0x6a, 0x79, 0xfa, 0xed, 0xeb, 0xeb, 0xec, 0x7e, 0x6f, 0x78,
0x69, 0x64, 0x7d, 0xff, 0x74, 0x67, 0x6c, 0xe5, 0xee, 0x77, 0xf2, 0xeb,
0xf2, 0x68, 0x67, 0x73, 0x6f, 0x74, 0xf2, 0xeb, 0x78, 0x66, 0x66, 0x71,
0xe7, 0xe2, 0x6d, 0x65, 0xf1, 0x7a, 0x5f, 0x64, 0x73, 0x79, 0x75, 0xeb,
0xe8, 0x6c, 0x6e, 0xee, 0xe5, 0xee, 0x66, 0x6c, 0xf5, 0x6b, 0x6f, 0xe5,
0xec, 0x7b, 0x7d, 0x79, 0x76, 0x68, 0x67, 0xf6, 0xef, 0x6e, 0x73, 0xfd,
0x7c, 0xf6, 0x75, 0x68, 0x72, 0x6a, 0x5e, 0x68, 0x77, 0x77, 0x68, 0x5e,
0x6e, 0xea, 0xfb, 0x6a, 0xf5, 0xf1, 0x70, 0x6a, 0x6b, 0xde, 0xdf, 0x66,
0x6e, 0x7d, 0x64, 0x5f, 0xf5, 0xe6, 0x7a, 0x7a, 0xee, 0xeb, 0x74, 0x60,
0x76, 0xde, 0xf2, 0x58, 0x66, 0xdb, 0xdd, 0x6d, 0x5b, 0xfa, 0xe3, 0x68,
0x6e, 0xe1, 0xe1, 0x73, 0x55, 0x5a, 0xe5, 0xda, 0xee, 0x7e, 0xef, 0x7c,
0x6b, 0x7a, 0xe9, 0xe7, 0x72, 0x5e, 0x79, 0xe5, 0xfa, 0xff, 0x78, 0x64,
0x6b, 0x7a, 0xf6, 0xf7, 0x78, 0xef, 0xe8, 0xf8, 0x7a, 0xef, 0xde, 0xe7,
0x58, 0x58, 0xde, 0xdf, 0x6c, 0x74, 0xfa, 0xef, 0xed, 0xfd, 0xf8, 0xf4,
0x66, 0x5f, 0xe7, 0xe0, 0x6e, 0x7c, 0xee, 0x71, 0x67, 0x69, 0xfb, 0xe7,
0xed, 0x72, 0x6c, 0x6f, 0x67, 0x6b, 0xe8, 0xe2, 0x70, 0x6b, 0xf0, 0x64,
0x58, 0xee, 0xe3, 0x66, 0x74, 0xe7, 0xed, 0x6d, 0x58, 0x56, 0x62, 0x6e,
0x6d, 0xe8, 0xd8, 0xe2, 0x6f, 0x5e, 0x63, 0xfd, 0xfa, 0x6f, 0x64, 0x59,
0x5b, 0x6e, 0x71, 0x69, 0x6c, 0x6c, 0x74, 0xe3, 0xdd, 0xf5, 0x69, 0x71,
0x7e, 0x62, 0x65, 0xe6, 0xda, 0xee, 0x64, 0xed, 0xcd, 0xcd, 0xd8, 0xd6,
0xcd, 0xd2, 0xea, 0xe0, 0xcd, 0xcf, 0xe9, 0x74, 0xdd, 0xd0, 0xd4, 0xdc,
0xef, 0xe2, 0xdd, 0x69, 0x66, 0x76, 0x6c, 0x6d, 0x5c, 0x5a, 0x67, 0x6b,
0x5c, 0x4c, 0x48, 0x4d, 0x5d, 0x5a, 0x4c, 0x51, 0x4f, 0x4f, 0x58, 0x4d,
0x4e, 0x4d, 0x40, 0x40, 0x49, 0x4d, 0x4f, 0x4d, 0x3e, 0x38, 0x4c, 0xbe,
0xb1, 0xb9, 0xc9, 0xcb, 0xcd, 0xf2, 0xe8, 0xd1, 0xd4, 0xeb, 0x4d, 0x54,
0xca, 0xc2, 0xbf, 0xb7, 0xb2, 0xb7, 0xc6, 0xc4, 0xb8, 0xbe, 0xde, 0x77,
0xd0, 0xcd, 0xe1, 0xdf, 0xcf, 0xc7, 0xda, 0x54, 0x59, 0x5d, 0x4f, 0x49,
0x49, 0x51, 0x4d, 0x45, 0x46, 0x4a, 0x46, 0x3b, 0x38, 0x38, 0x38, 0x35,
0x32, 0x33, 0x38, 0xe7, 0xb0, 0xb0, 0xbc, 0xce, 0xd8, 0x74, 0x47, 0x44,
0x4b, 0x50, 0x43, 0x3e, 0x57, 0xca, 0xbb, 0xbc, 0xc0, 0xc1, 0xca, 0xde,
0xee, 0xe0, 0xd3, 0x6c, 0x4d, 0xcf, 0xb7, 0xb9, 0xc7, 0xd1, 0xc5, 0xc7,
0xe2, 0xf7, 0xd1, 0xcc, 0xfe, 0x5d, 0xe7, 0xce, 0xcd, 0xe1, 0x74, 0x67,
0x4d, 0x3e, 0x3b, 0x3d, 0x3b, 0x39, 0x34, 0x33, 0x3c, 0x4b, 0x52, 0x4f,
0xce, 0xaf, 0xae, 0xc3, 0x5c, 0x51, 0x51, 0x3d, 0x36, 0x3c, 0x4b, 0x4d,
0x47, 0x5c, 0xc7, 0xb9, 0xbb, 0xbe, 0xbe, 0xc6, 0xe7, 0x57, 0x5a, 0x6b,
0x60, 0x51, 0x54, 0xd0, 0xb7, 0xb4, 0xbc, 0xc0, 0xc5, 0xdc, 0x6b, 0xee,
0xde, 0xe5, 0x63, 0x5c, 0x7d, 0xe1, 0xd1, 0xcf, 0xe8, 0x51, 0x3d, 0x32,
0x2d, 0x2c, 0x30, 0x3e, 0x4d, 0x52, 0x62, 0xbe, 0xac, 0xad, 0xbc, 0xdc,
0x58, 0x43, 0x38, 0x36, 0x3e, 0x48, 0x47, 0x46, 0x6a, 0xbf, 0xb4, 0xb4,
0xb9, 0xc0, 0xcf, 0x71, 0x57, 0x5b, 0x5d, 0x50, 0x47, 0x4b, 0x63, 0xdd,
0xc4, 0xb3, 0xad, 0xb2, 0xc9, 0xfc, 0xf9, 0xf5, 0x58, 0x4d, 0x53, 0x5a,
0x56, 0x53, 0xf1, 0xcd, 0xda, 0x52, 0x3d, 0x38, 0x2f, 0x27, 0x2b, 0x43,
0xd5, 0xbd, 0xb0, 0xae, 0xb6, 0xc4, 0xe9, 0x6f, 0x71, 0x4a, 0x38, 0x34,
0x36, 0x3a, 0x4a, 0xde, 0xbe, 0xb6, 0xb9, 0xbf, 0xc3, 0xc9, 0xcf, 0xe3,
0x5d, 0x4e, 0x44, 0x3f, 0x45, 0x52, 0xf6, 0xd2, 0xc3, 0xb6, 0xb2, 0xb5,
0xb8, 0xbd, 0xd2, 0x4e, 0x41, 0x43, 0x47, 0x4a, 0x4a, 0x53, 0x5e, 0x51,
0x48, 0x41, 0x3e, 0x2e, 0x28, 0x37, 0xc1, 0xac, 0xac, 0xb4, 0xbf, 0xd5,
0x51, 0x46, 0x6e, 0xde, 0x4d, 0x38, 0x2f, 0x33, 0x4a, 0xce, 0xba, 0xb1,
0xb3, 0xc0, 0xde, 0x71, 0xdc, 0xce, 0xde, 0x59, 0x47, 0x3e, 0x3e, 0x49,
0x7a, 0xc8, 0xc0, 0xc3, 0xbc, 0xb7, 0xb8, 0xbb, 0xbf, 0xd3, 0x52, 0x3f,
0x3d, 0x44, 0x4e, 0x4f, 0x4f, 0x4b, 0x45, 0x3f, 0x3c, 0x38, 0x2e, 0x2f,
0xe1, 0xab, 0xaa, 0xb6, 0xc1, 0xca, 0xf7, 0x47, 0x44, 0xfa, 0xdd, 0x3e,
0x2d, 0x2f, 0x41, 0xec, 0xc6, 0xb8, 0xaf, 0xb4, 0xcd, 0x66, 0xe8, 0xcb,
0xcc, 0x6e, 0x4a, 0x44, 0x3e, 0x3c, 0x47, 0xdc, 0xc0, 0xc2, 0xc9, 0xc0,
0xb7, 0xb4, 0xbd, 0xc9, 0xca, 0xde, 0x48, 0x3b, 0x3f, 0x4e, 0x51, 0x49,
0x42, 0x42, 0x43, 0x39, 0x32, 0x2f, 0x31, 0xde, 0xaa, 0xaa, 0xb6, 0xbb,
0xc4, 0x6c, 0x4b, 0x49, 0x6c, 0xd5, 0x43, 0x2e, 0x31, 0x3c, 0x51, 0xce,
0xbc, 0xb1, 0xb1, 0xc2, 0xee, 0xd8, 0xc8, 0xc7, 0xd6, 0x5e, 0x55, 0x42,
0x37, 0x3c, 0x50, 0xd9, 0xcb, 0xc4, 0xb9, 0xb5, 0xb6, 0xbd, 0xc5, 0xbe,
0xc6, 0x5e, 0x42, 0x3e, 0x3f, 0x3d, 0x3a, 0x3a, 0x3d, 0x3b, 0x33, 0x2d,
0x2a, 0x36, 0xb7, 0xa5, 0xab, 0xb1, 0xb4, 0xc9, 0x52, 0x44, 0x4b, 0xcf,
0xd7, 0x37, 0x2d, 0x2f, 0x34, 0x3f, 0xeb, 0xbb, 0xad, 0xaf, 0xc5, 0xd4,
0xc7, 0xc2, 0xc1, 0xc5, 0xd2, 0xfb, 0x43, 0x31, 0x33, 0x3f, 0x53, 0xcf,
0xba, 0xb6, 0xb5, 0xba, 0xbe, 0xbb, 0xba, 0xc4, 0xdc, 0x5c, 0x43, 0x3a,
0x35, 0x35, 0x37, 0x35, 0x30, 0x2c, 0x27, 0x2c, 0xcf, 0xaa, 0xab, 0xac,
0xab, 0xb3, 0xc9, 0x5c, 0x58, 0xc6, 0xc3, 0x47, 0x33, 0x2f, 0x2d, 0x2f,
0x38, 0x58, 0xb9, 0xb2, 0xbf, 0xc6, 0xbf, 0xbe, 0xbb, 0xba, 0xba, 0xb9,
0xcc, 0x40, 0x35, 0x38, 0x43, 0x5e, 0xde, 0xc5, 0xb9, 0xbd, 0xd9, 0xeb,
0xc9, 0xbe, 0xc6, 0xe4, 0x5b, 0x48, 0x39, 0x2f, 0x2c, 0x2b, 0x29, 0x28,
0x32, 0xd3, 0xb7, 0xbc, 0xba, 0xb2, 0xb3, 0xba, 0xc4, 0xbf, 0xb5, 0xbe,
0x4c, 0x38, 0x37, 0x35, 0x32, 0x35, 0x46, 0xd6, 0xd2, 0x66, 0xe6, 0xc0,
0xb9, 0xb8, 0xb6, 0xb2, 0xb2, 0xbf, 0x65, 0x64, 0xdc, 0xea, 0x7c, 0xe2,
0xdc, 0xfc, 0x4f, 0x49, 0x5a, 0xe5, 0xf0, 0x5e, 0x55, 0x48, 0x3a, 0x2e,
0x2a, 0x27, 0x2b, 0x51, 0xb8, 0xb9, 0xbe, 0xba, 0xbd, 0xcf, 0xda, 0xcc,
0xb8, 0xb0, 0xc3, 0x4e, 0x40, 0x39, 0x33, 0x37, 0x45, 0xd9, 0xc1, 0xd9,
0x58, 0xf9, 0xd8, 0xcf, 0xbf, 0xb6, 0xb0, 0xb3, 0xc9, 0x57, 0x69, 0xd7,
0xd4, 0xcb, 0xc2, 0xc7, 0xf5, 0x48, 0x42, 0x4d, 0x6c, 0x6f, 0x69, 0x62,
0x4b, 0x3a, 0x2f, 0x2a, 0x28, 0x29, 0x30, 0xed, 0xb5, 0xb7, 0xbd, 0xbb,
0xbe, 0xcb, 0xd0, 0xc8, 0xb8, 0xb4, 0xc8, 0x4a, 0x3d, 0x39, 0x35, 0x38,
0x46, 0xd9, 0xc3, 0xd6, 0x5f, 0xf2, 0xcf, 0xc9, 0xbf, 0xb7, 0xb1, 0xb4,
0xc4, 0xe1, 0xd0, 0xca, 0xcf, 0xd0, 0xcd, 0xd0, 0xfd, 0x49, 0x41, 0x4a,
0x55, 0x59, 0x56, 0x53, 0x4a, 0x3a, 0x2e, 0x28, 0x26, 0x2a, 0x38, 0xda,
0xb6, 0xb5, 0xb9, 0xb8, 0xc1, 0xde, 0xd2, 0xc0, 0xba, 0xb8, 0xc7, 0x50,
0x41, 0x3b, 0x35, 0x3a, 0x4f, 0xe0, 0xca, 0xcd, 0xec, 0xdd, 0xd1, 0xd5,
0xc3, 0xb7, 0xb5, 0xb8, 0xbf, 0xc8, 0xc9, 0xcb, 0xd9, 0xd9, 0xce, 0xd5,
0x69, 0x4e, 0x4c, 0x4c, 0x4f, 0x51, 0x4e, 0x4f, 0x4a, 0x3c, 0x30, 0x2a,
0x27, 0x2a, 0x2d, 0x38, 0xc6, 0xaf, 0xba, 0xbf, 0xbb, 0xc4, 0xd0, 0xcd,
0xc9, 0xb9, 0xb3, 0xce, 0x48, 0x45, 0x3e, 0x3a, 0x3e, 0x4b, 0xde, 0xc2,
0xd4, 0x6e, 0xd6, 0xcc, 0xce, 0xc4, 0xbb, 0xb6, 0xb5, 0xbc, 0xc7, 0xc3,
0xc4, 0xd3, 0xdc, 0xd5, 0xdd, 0x64, 0x4e, 0x4a, 0x4f, 0x61, 0x5d, 0x55,
0x5a, 0x4f, 0x3c, 0x31, 0x2b, 0x28, 0x2b, 0x2c, 0x2c, 0x44, 0xb7, 0xb5,
0xc6, 0xbb, 0xb6, 0xc3, 0xcd, 0xd2, 0xc9, 0xb5, 0xb9, 0x73, 0x58, 0x64,
0x40, 0x39, 0x3e, 0x4b, 0xda, 0xc7, 0xe2, 0xdd, 0xc3, 0xcc, 0xd6, 0xc5,
0xbf, 0xba, 0xb6, 0xbe, 0xc2, 0xbd, 0xc5, 0xde, 0xdf, 0xdd, 0xf5, 0x61,
0x55, 0x51, 0x64, 0xf7, 0x63, 0x66, 0xfd, 0x57, 0x43, 0x38, 0x2e, 0x2b,
0x2b, 0x2a, 0x29, 0x2b, 0x3f, 0xbf, 0xba, 0xc6, 0xba, 0xb1, 0xbc, 0xce,
0xd0, 0xc5, 0xb8, 0xba, 0xd8, 0xee, 0xea, 0x46, 0x39, 0x3b, 0x42, 0x66,
0xd3, 0xe7, 0xda, 0xc3, 0xca, 0xd7, 0xc8, 0xc0, 0xbd, 0xb9, 0xbc, 0xbd,
0xb9, 0xc1, 0xdd, 0xdf, 0xdf, 0x65, 0x5b, 0x61, 0x64, 0x77, 0xf4, 0x6f,
0xf1, 0xd9, 0xe7, 0x5b, 0x49, 0x3b, 0x30, 0x2c, 0x2a, 0x29, 0x2a, 0x2a,
0x2c, 0x4c, 0xbd, 0xc2, 0xc9, 0xb4, 0xb0, 0xbb, 0xc3, 0xc6, 0xbe, 0xb5,
0xbe, 0xfe, 0xe5, 0xe8, 0x43, 0x3a, 0x3b, 0x3f, 0x56, 0xfc, 0x5d, 0xd3,
0xbb, 0xc3, 0xcc, 0xc0, 0xc0, 0xc0, 0xbc, 0xc4, 0xc2, 0xb8, 0xbf, 0xd8,
0xd5, 0xe1, 0x5f, 0x6d, 0x6d, 0x66, 0xda, 0xd2, 0xe8, 0xdc, 0xd1, 0xdc,
0xe8, 0x6a, 0x47, 0x3c, 0x37, 0x2e, 0x2a, 0x2a, 0x29, 0x29, 0x29, 0x2d,
0x4d, 0xbf, 0xc5, 0xbf, 0xae, 0xae, 0xbb, 0xc2, 0xc6, 0xc4, 0xbd, 0xcd,
0x63, 0xdf, 0xf4, 0x3f, 0x3b, 0x3e, 0x40, 0x5a, 0xf1, 0x78, 0xc6, 0xb9,
0xc4, 0xc7, 0xbe, 0xc4, 0xc3, 0xbe, 0xc9, 0xc8, 0xbb, 0xc2, 0xd3, 0xc8,
0xcf, 0x7d, 0xe5, 0x7a, 0x5f, 0xd6, 0xd1, 0xf0, 0xd2, 0xc9, 0xd8, 0xda,
0xd9, 0x68, 0x4f, 0x42, 0x37, 0x33, 0x30, 0x2c, 0x29, 0x2a, 0x29, 0x26,
0x2b, 0x47, 0xc8, 0xcb, 0xbf, 0xae, 0xae, 0xba, 0xbf, 0xcc, 0xc7, 0xbb,
0xce, 0x5e, 0xce, 0xd5, 0x46, 0x40, 0x41, 0x3f, 0x5f, 0xf8, 0x5a, 0xc6,
0xb6, 0xc3, 0xc4, 0xbb, 0xc7, 0xc5, 0xbe, 0xd6, 0xcf, 0xbb, 0xc7, 0xd4,
0xc1, 0xcd, 0xf7, 0xd5, 0xed, 0x5e, 0xd5, 0xd2, 0xec, 0xcd, 0xca, 0xdc,
0xd0, 0xce, 0xe9, 0xe3, 0xe0, 0x54, 0x41, 0x3a, 0x32, 0x2e, 0x2b, 0x27,
0x26, 0x28, 0x26, 0x23, 0x2a, 0xff, 0xb2, 0xbe, 0xb9, 0xa5, 0xa8, 0xbb,
0xc6, 0xe0, 0xeb, 0xc7, 0x55, 0x3b, 0xea, 0xd5, 0x3e, 0x3c, 0x47, 0x48,
0xdc, 0xc7, 0xce, 0xb1, 0xa8, 0xb1, 0xb8, 0xb2, 0xbd, 0xc9, 0xcf, 0x53,
0x63, 0xd8, 0x48, 0x41, 0xec, 0xde, 0xd8, 0xc2, 0xca, 0xc2, 0xb4, 0xc0,
0xd8, 0xbf, 0xc6, 0xea, 0xdd, 0x70, 0x60, 0xda, 0x6a, 0x4e, 0xfb, 0x75,
0x47, 0x3e, 0x37, 0x30, 0x2f, 0x2c, 0x29, 0x2a, 0x2b, 0x28, 0x27, 0x27,
0x25, 0x3c, 0xac, 0xa8, 0xb0, 0xa0, 0x9d, 0xb3, 0xe2, 0x57, 0x35, 0x40,
0x54, 0x2f, 0x3a, 0xc2, 0x52, 0x36, 0x76, 0xd3, 0xcb, 0xae, 0xae, 0xad,
0xa0, 0xa7, 0xc1, 0xbd, 0xc7, 0x42, 0x43, 0x3e, 0x35, 0x4d, 0x4e, 0x34,
0x40, 0xf9, 0x5a, 0xcd, 0xb7, 0xb1, 0xa8, 0xa9, 0xbc, 0xbd, 0xbe, 0x4d,
0x44, 0x4d, 0x44, 0x68, 0xe4, 0x4f, 0xe7, 0xca, 0xec, 0xf0, 0xe6, 0x64,
0x5b, 0x45, 0x38, 0x3a, 0x3a, 0x31, 0x30, 0x32, 0x2e, 0x2d, 0x2a, 0x23,
0x25, 0x24, 0x1f, 0x3e, 0xa1, 0xa3, 0xab, 0x9b, 0x9c, 0xba, 0xe5, 0x3b,
0x2b, 0x4e, 0x50, 0x2a, 0x4a, 0xb8, 0x4c, 0x43, 0xcf, 0xe3, 0xb8, 0xa7,
0xb0, 0xab, 0x9e, 0xad, 0xd5, 0xcd, 0x47, 0x35, 0x3d, 0x31, 0x32, 0x66,
0x4f, 0x3b, 0x5e, 0xdc, 0xe8, 0xc1, 0xbc, 0xba, 0xad, 0xad, 0xbd, 0xc1,
0xc7, 0x58, 0x4b, 0x4c, 0x49, 0xf9, 0xcf, 0xdd, 0xcf, 0xc7, 0xce, 0xdc,
0xe7, 0xdd, 0xe2, 0x6e, 0x6a, 0x5a, 0x50, 0x52, 0x42, 0x3d, 0x47, 0x3e,
0x37, 0x3a, 0x34, 0x2d, 0x2c, 0x28, 0x26, 0x27, 0x25, 0x26, 0x2b, 0x27,
0x2e, 0xaa, 0x9c, 0xa8, 0x9f, 0x99, 0xa8, 0xca, 0x45, 0x29, 0x35, 0x54,
0x2b, 0x32, 0xbc, 0xc6, 0xfb, 0xbf, 0xc1, 0xaf, 0xa3, 0xac, 0xaf, 0xa1,
0xaa, 0xd6, 0x66, 0x3d, 0x33, 0x3b, 0x30, 0x2f, 0x62, 0xe1, 0x49, 0xef,
0xcb, 0xcc, 0xbc, 0xbf, 0xcb, 0xb8, 0xb8, 0xe0, 0x6c, 0x6f, 0x4f, 0x51,
0x4e, 0x4f, 0xd0, 0xbf, 0xc7, 0xc4, 0xc0, 0xc5, 0xcf, 0x6a, 0x59, 0x6f,
0x60, 0x55, 0x5c, 0x7e, 0xdc, 0xe7, 0x65, 0xee, 0xe0, 0x60, 0x4f, 0x4b,
0x43, 0x3e, 0x38, 0x35, 0x39, 0x3a, 0x39, 0x3b, 0x3d, 0x39, 0x37, 0x34,
0x2e, 0x2c, 0x2c, 0x28, 0x29, 0x28, 0x29, 0xca, 0x9e, 0xa2, 0xa4, 0x99,
0xa0, 0xc0, 0x68, 0x2d, 0x2b, 0x58, 0x39, 0x2e, 0xc7, 0xbc, 0x77, 0xc0,
0xbf, 0xbd, 0xa7, 0xaa, 0xb5, 0xa6, 0xaa, 0xcc, 0xe8, 0x42, 0x33, 0x41,
0x3a, 0x34, 0xf0, 0xcc, 0x69, 0xce, 0xcb, 0xce, 0xbb, 0xbf, 0xcd, 0xbb,
0xbd, 0xec, 0x5e, 0x4a, 0x40, 0x48, 0x45, 0x46, 0xe5, 0xc8, 0xc6, 0xc2,
0xc4, 0xc2, 0xc4, 0xdf, 0x77, 0xe0, 0x7a, 0x5c, 0x5a, 0x5d, 0x7d, 0x75,
0x5e, 0xfa, 0xda, 0xde, 0xf7, 0x6f, 0x6a, 0x56, 0x46, 0x3f, 0x40, 0x41,
0x41, 0x43, 0x49, 0x53, 0x52, 0x4b, 0x49, 0x48, 0x43, 0x3c, 0x37, 0x38,
0x39, 0x36, 0x35, 0x32, 0x30, 0x31, 0x2f, 0x2d, 0x2e, 0x30, 0x33, 0xc3,
0x9e, 0x9f, 0xa4, 0x9c, 0xa2, 0xc8, 0x4d, 0x30, 0x2b, 0x49, 0x46, 0x37,
0xc7, 0xb7, 0xd1, 0xbe, 0xbe, 0xc0, 0xab, 0xac, 0xb6, 0xaa, 0xad, 0xd4,
0xea, 0x41, 0x32, 0x41, 0x3d, 0x38, 0xe2, 0xcc, 0xee, 0xc9, 0xcb, 0xd1,
0xbe, 0xc6, 0xcf, 0xbe, 0xc5, 0xee, 0x5f, 0x48, 0x41, 0x43, 0x3f, 0x46,
0x66, 0xdb, 0xcc, 0xcd, 0xd0, 0xcb, 0xd3, 0x7c, 0xec, 0xd7, 0xd5, 0xdc,
0xee, 0x73, 0x65, 0x59, 0x51, 0x53, 0x68, 0xe1, 0xdd, 0xdc, 0xd9, 0xec,
0x60, 0x59, 0x51, 0x4f, 0x53, 0x54, 0x5c, 0x61, 0x58, 0x57, 0x59, 0x51,
0x4d, 0x49, 0x44, 0x44, 0x42, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3c, 0x3b,
0x3b, 0x37, 0x34, 0x32, 0x2f, 0x2d, 0x2f, 0x33, 0x36, 0xbf, 0x9f, 0xa1,
0xa7, 0x9f, 0xa6, 0xcb, 0x55, 0x34, 0x30, 0x62, 0x4c, 0x3d, 0xc6, 0xbd,
0xd6, 0xc1, 0xcb, 0xc0, 0xaa, 0xaf, 0xb7, 0xaa, 0xb3, 0xd7, 0xf5, 0x3b,
0x36, 0x49, 0x3a, 0x3b, 0xde, 0xdb, 0xe5, 0xcc, 0xd5, 0xca, 0xbd, 0xc9,
0xcb, 0xc3, 0xd0, 0x6f, 0x4e, 0x42, 0x43, 0x44, 0x45, 0x4e, 0x6f, 0xd7,
0xd0, 0xdb, 0xdf, 0xdd, 0xe3, 0xfb, 0x6c, 0xf8, 0xeb, 0x65, 0x53, 0x4f,
0x55, 0x5a, 0x57, 0xf2, 0xcb, 0xcc, 0xd3, 0xd6, 0xea, 0x6f, 0x5e, 0x4d,
0x51, 0x60, 0x59, 0x63, 0xf1, 0xf4, 0xe3, 0xdf, 0xed, 0xe5, 0xee, 0x61,
0x5e, 0x58, 0x4f, 0x4f, 0x4a, 0x45, 0x45, 0x45, 0x46, 0x47, 0x48, 0x4a,
0x45, 0x3f, 0x3d, 0x3a, 0x37, 0x35, 0x31, 0x31, 0x33, 0x31, 0x33, 0x44,
0xb5, 0xa2, 0xa6, 0xa9, 0xa2, 0xad, 0xeb, 0x41, 0x34, 0x3a, 0x59, 0x44,
0x45, 0xc7, 0xc7, 0xe3, 0xce, 0xc7, 0xb6, 0xac, 0xb1, 0xb0, 0xad, 0xbb,
0xe4, 0x4b, 0x3a, 0x3e, 0x43, 0x3b, 0x49, 0xe5, 0xee, 0x7b, 0xea, 0xd9,
0xc4, 0xbe, 0xc1, 0xbe, 0xbd, 0xcb, 0x62, 0x49, 0x43, 0x40, 0x40, 0x46,
0x50, 0x76, 0xe0, 0xea, 0xf1, 0xdf, 0xd9, 0xdc, 0xde, 0xd9, 0xda, 0xfe,
0x54, 0x49, 0x47, 0x48, 0x47, 0x46, 0x55, 0xf8, 0xeb, 0xe7, 0xd7, 0xca,
0xcb, 0xde, 0xed, 0xdf, 0xe1, 0x74, 0x5c, 0x60, 0x7a, 0x6f, 0x61, 0x7c,
0xda, 0xd2, 0xd6, 0xd9, 0xd5, 0xd9, 0xf2, 0x61, 0x5a, 0x5d, 0x61, 0x59,
0x58, 0x60, 0x5c, 0x4f, 0x4b, 0x47, 0x42, 0x3e, 0x3c, 0x3b, 0x3b, 0x3a,
0x39, 0x3a, 0x3a, 0x3a, 0x3a, 0x37, 0x36, 0x3a, 0x6f, 0xae, 0xa8, 0xae,
0xaa, 0xaa, 0xc9, 0x4a, 0x3f, 0x38, 0x4e, 0xf5, 0x48, 0x77, 0xc6, 0xfd,
0x63, 0xd5, 0xc4, 0xb3, 0xae, 0xb2, 0xaf, 0xb3, 0xcb, 0x56, 0x45, 0x44,
0x48, 0x49, 0x4d, 0x60, 0x73, 0x5d, 0x52, 0x69, 0xd0, 0xc5, 0xbe, 0xbc,
0xbd, 0xc3, 0xea, 0x4c, 0x45, 0x43, 0x44, 0x4a, 0x52, 0x68, 0x7d, 0x65,
0x5f, 0x67, 0xfb, 0xde, 0xda, 0xd6, 0xd1, 0xe2, 0x5b, 0x4c, 0x47, 0x46,
0x49, 0x49, 0x51, 0x6d, 0x72, 0x60, 0x7e, 0xde, 0xe0, 0xd6, 0xc9, 0xc7,
0xca, 0xd6, 0x78, 0x60, 0x5a, 0x4f, 0x54, 0x76, 0xde, 0xd5, 0xd4, 0xdb,
0xd7, 0xd3, 0xdc, 0xdd, 0xd7, 0xdc, 0xed, 0x6d, 0x59, 0x51, 0x51, 0x50,
0x54, 0x5f, 0x61, 0x59, 0x52, 0x4c, 0x49, 0x47, 0x42, 0x3f, 0x42, 0x40,
0x3c, 0x3b, 0x3e, 0x40, 0x3c, 0x38, 0x38, 0x38, 0x3a, 0x48, 0xbf, 0xaa,
0xab, 0xaf, 0xab, 0xb5, 0xf2, 0x55, 0x46, 0x4c, 0xd9, 0x5f, 0x47, 0x74,
0x5f, 0x45, 0x54, 0xd7, 0xbb, 0xaf, 0xb0, 0xb3, 0xb3, 0xbe, 0xea, 0x4f,
0x54, 0x65, 0x5d, 0x55, 0x4f, 0x4d, 0x4a, 0x41, 0x44, 0xfe, 0xca, 0xc1,
0xbd, 0xbd, 0xc1, 0xd0, 0x5a, 0x50, 0x59, 0x56, 0x51, 0x51, 0x4e, 0x4a,
0x46, 0x43, 0x49, 0x68, 0xd5, 0xce, 0xc9, 0xc6, 0xce, 0xe9, 0x5f, 0x57,
0x5c, 0x5d, 0x53, 0x51, 0x52, 0x4d, 0x47, 0x48, 0x54, 0x78, 0xd9, 0xcc,
0xc7, 0xc3, 0xc2, 0xc8, 0xd6, 0xe2, 0xed, 0x69, 0x5a, 0x5c, 0x5f, 0x5d,
0x5b, 0x5c, 0x67, 0xeb, 0xdf, 0xda, 0xcf, 0xcb, 0xcc, 0xd9, 0xef, 0x72,
0x60, 0x55, 0x4f, 0x50, 0x53, 0x4f, 0x4c, 0x4b, 0x4d, 0x4f, 0x4f, 0x51,
0x59, 0x5a, 0x54, 0x51, 0x4d, 0x4a, 0x47, 0x44, 0x42, 0x41, 0x41, 0x40,
0x3e, 0x3c, 0x3a, 0x39, 0x4d, 0xb9, 0xad, 0xb3, 0xae, 0xab, 0xbc, 0xde,
0x72, 0x55, 0xe0, 0xd5, 0x4e, 0x4e, 0x63, 0x45, 0x3d, 0x4c, 0xdc, 0xbe,
0xb8, 0xb8, 0xb8, 0xb8, 0xc3, 0xee, 0xef, 0xd4, 0xde, 0x7d, 0x5d, 0x4c,
0x46, 0x3c, 0x39, 0x46, 0x7a, 0xd3, 0xc8, 0xc3, 0xc2, 0xc7, 0xdc, 0xf5,
0xdc, 0xd3, 0xda, 0xf7, 0x67, 0x55, 0x46, 0x3f, 0x40, 0x4c, 0x67, 0xef,
0xdf, 0xd5, 0xd5, 0xe3, 0xfd, 0xeb, 0xd9, 0xd6, 0xdf, 0x7c, 0x5f, 0x53,
0x47, 0x41, 0x47, 0x55, 0x61, 0x6b, 0xf6, 0xdd, 0xd4, 0xd0, 0xce, 0xcc,
0xca, 0xcd, 0xda, 0xf3, 0x6b, 0x61, 0x5a, 0x56, 0x5e, 0x6c, 0x70, 0x77,
0xf0, 0xe3, 0xdc, 0xd8, 0xd8, 0xda, 0xde, 0xf2, 0x67, 0x5a, 0x52, 0x4d,
0x4b, 0x4b, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x52, 0x54, 0x54, 0x56, 0x58,
0x54, 0x4e, 0x4c, 0x4a, 0x45, 0x42, 0x45, 0x44, 0x42, 0x42, 0x40, 0x40,
0x3f, 0x41, 0xcd, 0xb0, 0xb9, 0xba, 0xaf, 0xba, 0xcd, 0xd3, 0xfe, 0xd0,
0xc2, 0xed, 0x54, 0x5f, 0x4d, 0x3f, 0x41, 0x61, 0xc9, 0xbf, 0xbe, 0xbf,
0xbe, 0xbe, 0xcf, 0xd6, 0xc3, 0xc1, 0xcb, 0xe0, 0x5b, 0x4e, 0x43, 0x3c,
0x3f, 0x53, 0xeb, 0xe1, 0xe2, 0xd7, 0xd6, 0xdd, 0xdd, 0xd3, 0xc6, 0xc4,
0xcf, 0xe9, 0x61, 0x4e, 0x44, 0x42, 0x47, 0x4f, 0x58, 0x56, 0x4f, 0x55,
0x5c, 0x5d, 0x7b, 0xd5, 0xcb, 0xcb, 0xd4, 0xed, 0x6b, 0x5f, 0x5a, 0x5e,
0xe5, 0xd3, 0xdc, 0x7c, 0x66, 0x60, 0x5e, 0x62, 0xef, 0xd4, 0xd0, 0xdb,
0xf1, 0x72, 0x71, 0x77, 0xf1, 0xdc, 0xd1, 0xd5, 0xed, 0x66, 0x5b, 0x5b,
0x5c, 0x5a, 0x63, 0x6a, 0x57, 0x4d, 0x4c, 0x4c, 0x4d, 0x4f, 0x52, 0x58,
0x58, 0x50, 0x4a, 0x4a, 0x4e, 0x4d, 0x4a, 0x4c, 0x4d, 0x4b, 0x44, 0x40,
0x43, 0x46, 0x46, 0x46, 0x4a, 0x48, 0x47, 0xcf, 0xb6, 0xbb, 0xbb, 0xb0,
0xb8, 0xc5, 0xc7, 0xd8, 0xcd, 0xc1, 0xd9, 0x5d, 0x6a, 0x5b, 0x46, 0x44,
0x59, 0xe1, 0xce, 0xc8, 0xcc, 0xc8, 0xc0, 0xca, 0xce, 0xc0, 0xbe, 0xc4,
0xce, 0xea, 0x5c, 0x4e, 0x47, 0x42, 0x4b, 0x61, 0x5a, 0x52, 0x5d, 0x61,
0x65, 0xf1, 0xdd, 0xcd, 0xc5, 0xc9, 0xd8, 0xe7, 0xf6, 0x5e, 0x56, 0x58,
0x58, 0x57, 0x51, 0x47, 0x45, 0x4a, 0x4c, 0x4e, 0x62, 0xea, 0xdd, 0xdf,
0xef, 0xe2, 0xd4, 0xd8, 0xd9, 0xce, 0xcd, 0xd0, 0xd8, 0xed, 0x76, 0xfc,
0x72, 0x63, 0x70, 0xf3, 0x6b, 0x61, 0x66, 0x64, 0x7b, 0xe1, 0xe0, 0xdc,
0xd4, 0xdc, 0x7c, 0x68, 0x60, 0x5d, 0x5c, 0x59, 0x54, 0x51, 0x4d, 0x47,
0x45, 0x48, 0x4a, 0x4e, 0x53, 0x55, 0x54, 0x53, 0x4f, 0x4d, 0x4e, 0x51,
0x53, 0x53, 0x51, 0x4f, 0x4f, 0x4d, 0x4b, 0x4d, 0x50, 0x4f, 0x4d, 0x48,
0x45, 0xe3, 0xbc, 0xc6, 0xc5, 0xb5, 0xba, 0xc4, 0xc4, 0xcc, 0xc6, 0xbc,
0xc6, 0xe0, 0xdd, 0xd9, 0x58, 0x46, 0x58, 0xfc, 0xeb, 0xd7, 0xe5, 0xe6,
0xcc, 0xd2, 0xe8, 0xd0, 0xc0, 0xc0, 0xca, 0xcc, 0xd4, 0xf3, 0x6c, 0x53,
0x4d, 0x68, 0x6c, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x54, 0x66, 0xe6, 0xd4,
0xda, 0xf8, 0xeb, 0xe6, 0x79, 0x6b, 0xf8, 0xe2, 0xee, 0x63, 0x55, 0x4e,
0x4f, 0x4e, 0x4c, 0x5e, 0xec, 0xfb, 0xf8, 0xdf, 0xd6, 0xd4, 0xd3, 0xcf,
0xcc, 0xcb, 0xcf, 0xe1, 0xe9, 0xeb, 0x6a, 0x5f, 0x6b, 0x70, 0x6b, 0x66,
0x5e, 0x5b, 0x5f, 0x61, 0x5b, 0x65, 0xfb, 0x6e, 0x5f, 0x5d, 0x58, 0x55,
0x54, 0x51, 0x50, 0x54, 0x54, 0x4d, 0x49, 0x4a, 0x49, 0x49, 0x4b, 0x4c,
0x4d, 0x4e, 0x4b, 0x4b, 0x4e, 0x53, 0x5c, 0x62, 0x6d, 0xf9, 0xfa, 0x69,
0x5f, 0x66, 0x6e, 0x6c, 0x72, 0xea, 0xcf, 0xc7, 0xcb, 0xcc, 0xc4, 0xc4,
0xc9, 0xc9, 0xc9, 0xc7, 0xc5, 0xca, 0xd3, 0xd8, 0xd5, 0xe2, 0x78, 0xee,
0xe6, 0xea, 0xeb, 0xf6, 0xfe, 0xee, 0xe7, 0xee, 0xed, 0xda, 0xd5, 0xdb,
0xdf, 0xe0, 0xe4, 0xe8, 0xf8, 0x6f, 0x79, 0xf8, 0x6f, 0x5e, 0x5d, 0x5e,
0x5a, 0x56, 0x57, 0x5b, 0x5f, 0x63, 0x61, 0x64, 0x75, 0x7d, 0x7c, 0xea,
0xe4, 0xdf, 0xd5, 0xd2, 0xd5, 0xd4, 0xd4, 0xdc, 0xe1, 0xdf, 0xec, 0xf9,
0xf5, 0x7a, 0x6c, 0x68, 0x63, 0x62, 0x68, 0x71, 0x7e, 0x7c, 0x77, 0x72,
0x65, 0x5f, 0x61, 0x5e, 0x5c, 0x5e, 0x5e, 0x58, 0x55, 0x51, 0x4d, 0x4c,
0x4c, 0x4b, 0x4a, 0x4b, 0x4c, 0x4a, 0x4a, 0x4b, 0x4b, 0x4a, 0x4b, 0x4e,
0x51, 0x55, 0x5b, 0x61, 0x6d, 0xff, 0xf5, 0xf2, 0xec, 0xe2, 0xdf, 0xe5,
0xe8, 0xe4, 0xe0, 0xe5, 0xe2, 0xd8, 0xd1, 0xcd, 0xcb, 0xca, 0xca, 0xc9,
0xcb, 0xce, 0xcd, 0xcc, 0xce, 0xcf, 0xd1, 0xd5, 0xd9, 0xdd, 0xe9, 0xf6,
0xf2, 0xf6, 0x7c, 0xfa, 0xf6, 0xf5, 0xef, 0xf3, 0xfa, 0xf5, 0xee, 0xee,
0xf1, 0xee, 0xea, 0xea, 0xed, 0xef, 0xf6, 0xfe, 0x77, 0x73, 0x71, 0x6f,
0x6e, 0x6c, 0x6d, 0x6f, 0x6b, 0x6e, 0xf7, 0xed, 0xe7, 0xdd, 0xd9, 0xd9,
0xd8, 0xd6, 0xda, 0xde, 0xdf, 0xe6, 0xea, 0xed, 0xfd, 0x6f, 0x6d, 0x68,
0x5f, 0x5d, 0x5b, 0x59, 0x58, 0x57, 0x56, 0x53, 0x51, 0x4f, 0x4d, 0x4d,
0x4d, 0x4d, 0x4c, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4e, 0x4d, 0x4d, 0x4d,
0x4d, 0x4f, 0x52, 0x51, 0x54, 0x5b, 0x5e, 0x5e, 0x62, 0x6d, 0xfc, 0xee,
0xe8, 0xdf, 0xdd, 0xdb, 0xdb, 0xdd, 0xdc, 0xda, 0xdc, 0xdc, 0xd7, 0xd1,
0xcf, 0xce, 0xcc, 0xcb, 0xcc, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd7, 0xd8,
0xd8, 0xd6, 0xd9, 0xdc, 0xdd, 0xe2, 0xe8, 0xe7, 0xea, 0xeb, 0xe6, 0xe4,
0xe8, 0xec, 0xf0, 0xf7, 0xf9, 0x7a, 0x6f, 0x71, 0x78, 0x77, 0x79, 0xfc,
0xfc, 0xf9, 0xf3, 0xf2, 0xeb, 0xe0, 0xdd, 0xdd, 0xda, 0xd8, 0xdb, 0xde,
0xdf, 0xe5, 0xef, 0xf7, 0xf9, 0x7c, 0x79, 0x7a, 0x6e, 0x6b, 0x68, 0x61,
0x5d, 0x5a, 0x58, 0x57, 0x55, 0x54, 0x53, 0x52, 0x4f, 0x4e, 0x4e, 0x4d,
0x4c, 0x4c, 0x4d, 0x4e, 0x50, 0x51, 0x50, 0x51, 0x53, 0x53, 0x53, 0x52,
0x53, 0x54, 0x56, 0x59, 0x5c, 0x60, 0x66, 0x69, 0x6e, 0x75, 0x7c, 0xfc,
0xf6, 0xee, 0xe9, 0xe2, 0xde, 0xdd, 0xdc, 0xdb, 0xda, 0xdb, 0xd9, 0xd7,
0xd5, 0xd3, 0xcf, 0xce, 0xcd, 0xcd, 0xcd, 0xcc, 0xce, 0xd1, 0xd3, 0xd4,
0xd7, 0xda, 0xdb, 0xdb, 0xdb, 0xdc, 0xdd, 0xe1, 0xe4, 0xeb, 0xf5, 0xff,
0x76, 0x71, 0x6f, 0x6e, 0x72, 0x74, 0x6f, 0x72, 0x72, 0x6d, 0x6d, 0x6e,
0x72, 0x7c, 0xf9, 0xea, 0xdf, 0xdb, 0xd8, 0xd6, 0xd5, 0xd6, 0xdb, 0xe0,
0xe6, 0xee, 0xf3, 0xfc, 0x70, 0x6b, 0x6a, 0x68, 0x65, 0x60, 0x5e, 0x5b,
0x58, 0x58, 0x57, 0x55, 0x54, 0x54, 0x56, 0x56, 0x57, 0x5a, 0x5a, 0x5b,
0x5b, 0x59, 0x57, 0x56, 0x55, 0x55, 0x56, 0x56, 0x59, 0x5c, 0x5d, 0x5d,
0x5d, 0x5d, 0x5c, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x62, 0x64, 0x6a, 0x71,
0x77, 0xfa, 0xee, 0xeb, 0xe8, 0xe7, 0xe4, 0xe3, 0xe3, 0xe1, 0xdf, 0xde,
0xdc, 0xda, 0xd8, 0xd7, 0xd7, 0xd4, 0xd2, 0xd2, 0xd2, 0xd0, 0xd1, 0xd3,
0xd2, 0xd4, 0xd7, 0xd7, 0xd6, 0xd9, 0xdb, 0xda, 0xdc, 0xdf, 0xe1, 0xe6,
0xe9, 0xed, 0xfb, 0x75, 0x6e, 0x6a, 0x69, 0x67, 0x66, 0x6b, 0x71, 0x7d,
0xf4, 0xed, 0xe5, 0xe2, 0xe1, 0xde, 0xde, 0xe1, 0xe8, 0xef, 0xf9, 0x79,
0x70, 0x6d, 0x6c, 0x6d, 0x6f, 0x6e, 0x68, 0x67, 0x68, 0x60, 0x5d, 0x5d,
0x5c, 0x5a, 0x59, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5d, 0x5e,
0x5d, 0x5d, 0x5d, 0x5d, 0x5e, 0x5f, 0x5f, 0x5e, 0x5f, 0x5f, 0x5f, 0x5f,
0x60, 0x62, 0x64, 0x67, 0x69, 0x6b, 0x6d, 0x6d, 0x6e, 0x74, 0x7b, 0x7c,
0xfe, 0xf8, 0xf3, 0xed, 0xe9, 0xe6, 0xe3, 0xe3, 0xe1, 0xdf, 0xe1, 0xe1,
0xdf, 0xe0, 0xe4, 0xe5, 0xe5, 0xe7, 0xe4, 0xe2, 0xe3, 0xe0, 0xdd, 0xdb,
0xda, 0xd8, 0xd7, 0xd7, 0xd6, 0xd6, 0xd7, 0xd8, 0xda, 0xde, 0xdf, 0xdf,
0xe3, 0xe7, 0xe5, 0xe2, 0xe0, 0xe3, 0xe7, 0xe7, 0xe9, 0xed, 0xf6, 0x7e,
0x79, 0x73, 0x6e, 0x6e, 0x6d, 0x6c, 0x6b, 0x67, 0x67, 0x6a, 0x68, 0x67,
0x67, 0x65, 0x64, 0x64, 0x64, 0x63, 0x64, 0x66, 0x66, 0x68, 0x69, 0x67,
0x67, 0x67, 0x67, 0x67, 0x65, 0x66, 0x68, 0x69, 0x69, 0x6d, 0x6d, 0x6b,
0x6d, 0x6d, 0x6c, 0x6b, 0x69, 0x6d, 0x6e, 0x6c, 0x6a, 0x6a, 0x6b, 0x68,
0x68, 0x6b, 0x6a, 0x6a, 0x6f, 0x73, 0x6f, 0x72, 0x77, 0x75, 0x75, 0x78,
0x7b, 0x7a, 0xfe, 0xfb, 0xf9, 0xf5, 0xf4, 0xed, 0xe9, 0xea, 0xe9, 0xe6,
0xe3, 0xe3, 0xe4, 0xe0, 0xdf, 0xe2, 0xe4, 0xe3, 0xe3, 0xe7, 0xe6, 0xe2,
0xe2, 0xe4, 0xe2, 0xe0, 0xdf, 0xdf, 0xdf, 0xdf, 0xde, 0xde, 0xdf, 0xe3,
0xe2, 0xe1, 0xe8, 0xed, 0xee, 0xee, 0xf0, 0xf5, 0xf6, 0xf6, 0xf8, 0xfd,
0xfd, 0xfc, 0xff, 0x78, 0x73, 0x74, 0x74, 0x71, 0x71, 0x72, 0x75, 0x79,
0x7b, 0x7e, 0xfb, 0xf5, 0xf5, 0xfa, 0xfd, 0x7e, 0x75, 0x70, 0x70, 0x70,
0x70, 0x70, 0x6f, 0x70, 0x75, 0x71, 0x6f, 0x70, 0x6f, 0x6c, 0x6b, 0x6b,
0x6b, 0x6a, 0x68, 0x68, 0x67, 0x67, 0x67, 0x66, 0x68, 0x69, 0x67, 0x69,
0x68, 0x67, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6e, 0x6c, 0x6a, 0x6a, 0x6c,
0x6b, 0x6a, 0x6d, 0x6f, 0x6f, 0x6f, 0x70, 0x72, 0x72, 0x76, 0x7c, 0xfd,
0xf5, 0xf0, 0xf2, 0xf4, 0xf2, 0xf0, 0xf1, 0xf9, 0xfb, 0xf1, 0xf1, 0xf2,
0xec, 0xe8, 0xe7, 0xe4, 0xdf, 0xde, 0xdc, 0xd9, 0xd8, 0xd8, 0xd8, 0xd7,
0xd8, 0xda, 0xdb, 0xde, 0xe2, 0xe3, 0xe4, 0xe4, 0xe6, 0xe8, 0xe7, 0xe7,
0xe9, 0xec, 0xef, 0xf2, 0xf3, 0xfb, 0x79, 0x76, 0x77, 0x76, 0x70, 0x6f,
0x6f, 0x6c, 0x6d, 0x6e, 0x6f, 0x71, 0x70, 0x75, 0x7e, 0x7c, 0x77, 0xfe,
0xf5, 0xf8, 0xf9, 0xf8, 0xfa, 0xfb, 0xfe, 0xfb, 0xfa, 0x7d, 0xfd, 0xfa,
0xf9, 0xfd, 0x7b, 0x7c, 0x77, 0x72, 0x72, 0x70, 0x6d, 0x6b, 0x69, 0x66,
0x67, 0x65, 0x63, 0x62, 0x60, 0x62, 0x63, 0x62, 0x62, 0x61, 0x62, 0x61,
0x60, 0x61, 0x60, 0x61, 0x61, 0x61, 0x63, 0x66, 0x67, 0x68, 0x6b, 0x6d,
0x6e, 0x74, 0x7b, 0xfd, 0xfa, 0xf7, 0xf2, 0xef, 0xee, 0xee, 0xed, 0xec,
0xea, 0xe9, 0xe8, 0xe6, 0xe6, 0xe7, 0xe9, 0xeb, 0xea, 0xe9, 0xe6, 0xe4,
0xe3, 0xe0, 0xdf, 0xde, 0xdd, 0xde, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xe0,
0xe2, 0xe4, 0xe9, 0xe8, 0xe6, 0xe9, 0xeb, 0xeb, 0xeb, 0xef, 0xf2, 0xf0,
0xf4, 0xfa, 0xfe, 0x77, 0x74, 0x74, 0x71, 0x6f, 0x6f, 0x71, 0x6f, 0x6e,
0x71, 0x73, 0x76, 0x7c, 0xff, 0xfe, 0xfa, 0xfb, 0xfb, 0xf5, 0xf5, 0xfa,
0xfb, 0xfc, 0xfe, 0x7e, 0xff, 0x79, 0x74, 0x76, 0x79, 0x75, 0x74, 0x7a,
0x78, 0x75, 0x75, 0x72, 0x6f, 0x6d, 0x6d, 0x6d, 0x69, 0x65, 0x63, 0x63,
0x61, 0x5e, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x5f, 0x5e, 0x5f, 0x5f, 0x60,
0x63, 0x65, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6e, 0x70, 0x76, 0x7b, 0xfe,
0xf5, 0xef, 0xef, 0xef, 0xec, 0xea, 0xeb, 0xe9, 0xe8, 0xec, 0xf0, 0xf4,
0xef, 0xeb, 0xe9, 0xea, 0xe6, 0xe0, 0xde, 0xdd, 0xdc, 0xda, 0xd9, 0xd9,
0xdb, 0xdd, 0xdd, 0xde, 0xe2, 0xe2, 0xe1, 0xe3, 0xe6, 0xe5, 0xe4, 0xe6,
0xe7, 0xe7, 0xe9, 0xed, 0xef, 0xf6, 0xfe, 0xff, 0x7b, 0x72, 0x72, 0x73,
0x6f, 0x6e, 0x6f, 0x73, 0x6f, 0x6d, 0x6c, 0x6b, 0x6a, 0x6a, 0x6e, 0x73,
0x75, 0x7a, 0x7e, 0xfa, 0xf7, 0xf2, 0xef, 0xee, 0xee, 0xf0, 0xf2, 0xf4,
0xf9, 0xf9, 0xfc, 0xfe, 0x7d, 0x79, 0x77, 0x72, 0x73, 0x71, 0x6d, 0x6d,
0x6d, 0x68, 0x65, 0x67, 0x66, 0x60, 0x5f, 0x5e, 0x5f, 0x5e, 0x5d, 0x5d,
0x5e, 0x5e, 0x5e, 0x5e, 0x60, 0x61, 0x62, 0x66, 0x66, 0x64, 0x67, 0x69,
0x66, 0x67, 0x6a, 0x6b, 0x6a, 0x6c, 0x71, 0x72, 0x74, 0x76, 0x75, 0x7a,
0x79, 0x7a, 0xf8, 0xef, 0xeb, 0xe7, 0xdf, 0xdc, 0xda, 0xd7, 0xd4, 0xd2,
0xd0, 0xd0, 0xd1, 0xd3, 0xd3, 0xd6, 0xda, 0xdd, 0xde, 0xdf, 0xe5, 0xe5,
0xe5, 0xe9, 0xeb, 0xeb, 0xef, 0xf2, 0xf5, 0x7d, 0x72, 0x6f, 0x6e, 0x6d,
0x6c, 0x6e, 0x73, 0x72, 0x72, 0x73, 0x75, 0x78, 0x77, 0x74, 0x74, 0x72,
0x72, 0x73, 0x6f, 0x6f, 0x72, 0x74, 0x7d, 0xf3, 0xef, 0xec, 0xe7, 0xe5,
0xe6, 0xe6, 0xe7, 0xe9, 0xea, 0xee, 0xfa, 0xfd, 0xfd, 0x7a, 0x79, 0xfe,
0xfd, 0x78, 0x74, 0x71, 0x6b, 0x66, 0x65, 0x65, 0x5f, 0x5e, 0x5f, 0x5e,
0x5d, 0x5d, 0x5e, 0x5e, 0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x5e, 0x5d, 0x5d,
0x5d, 0x5d, 0x5d, 0x5d, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x60, 0x5f,
0x62, 0x67, 0x68, 0x6d, 0xfd, 0xee, 0xe7, 0xdd, 0xd6, 0xd2, 0xcf, 0xcd,
0xcb, 0xcb, 0xcb, 0xca, 0xcb, 0xcd, 0xcf, 0xd0, 0xd4, 0xd8, 0xdb, 0xdf,
0xe9, 0xea, 0xed, 0xfc, 0x7b, 0x7a, 0x71, 0x6b, 0x68, 0x65, 0x60, 0x5f,
0x5f, 0x5f, 0x5f, 0x63, 0x67, 0x6b, 0x77, 0xf8, 0xef, 0xec, 0xe8, 0xe5,
0xe6, 0xe9, 0xed, 0xf4, 0xfe, 0x76, 0x6f, 0x6f, 0x72, 0x79, 0xfb, 0xee,
0xe7, 0xe2, 0xdf, 0xde, 0xde, 0xe0, 0xe7, 0xef, 0xfd, 0x74, 0x6e, 0x71,
0x72, 0x75, 0x7c, 0xfc, 0xfa, 0x7e, 0x77, 0x6f, 0x67, 0x60, 0x5d, 0x5a,
0x58, 0x58, 0x57, 0x57, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 0x59, 0x59,
0x59, 0x57, 0x56, 0x55, 0x55, 0x55, 0x56, 0x56, 0x57, 0x5a, 0x5b, 0x5d,
0x61, 0x64, 0x64, 0x68, 0x6f, 0x7c, 0xee, 0xe4, 0xdc, 0xd3, 0xce, 0xcc,
0xc9, 0xc6, 0xc5, 0xc5, 0xc5, 0xc6, 0xc9, 0xcb, 0xce, 0xd4, 0xd8, 0xdc,
0xe5, 0xed, 0xf4, 0xfd, 0x73, 0x6a, 0x66, 0x64, 0x5f, 0x5d, 0x5c, 0x5b,
0x5c, 0x5c, 0x5d, 0x64, 0x6f, 0x7b, 0xf7, 0xe6, 0xdf, 0xdf, 0xdc, 0xdb,
0xdc, 0xdf, 0xe5, 0xe9, 0xf2, 0xfe, 0x74, 0x6b, 0x6a, 0x68, 0x63, 0x61,
0x65, 0x67, 0x63, 0x63, 0x67, 0x6c, 0x73, 0x7c, 0xef, 0xe3, 0xdf, 0xdc,
0xd8, 0xd4, 0xd4, 0xd6, 0xd8, 0xdb, 0xe0, 0xe8, 0xf7, 0x6e, 0x66, 0x5e,
0x5a, 0x59, 0x58, 0x59, 0x57, 0x57, 0x59, 0x58, 0x56, 0x55, 0x54, 0x53,
0x50, 0x50, 0x51, 0x53, 0x54, 0x55, 0x57, 0x58, 0x57, 0x55, 0x54, 0x53,
0x51, 0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x57, 0x69, 0x7c, 0xfa, 0xd8,
0xca, 0xc9, 0xc7, 0xbf, 0xbf, 0xc0, 0xbf, 0xc1, 0xc4, 0xc5, 0xca, 0xce,
0xcf, 0xd2, 0xd7, 0xe1, 0xe6, 0xe6, 0x74, 0x60, 0x63, 0x5c, 0x53, 0x52,
0x52, 0x53, 0x58, 0x5c, 0x5f, 0x74, 0xe6, 0xde, 0xdd, 0xd7, 0xd1, 0xd5,
0xd9, 0xd7, 0xda, 0xe2, 0xe2, 0xe6, 0xee, 0xf6, 0x77, 0x6a, 0x65, 0x5f,
0x58, 0x51, 0x50, 0x4f, 0x4d, 0x4c, 0x4f, 0x53, 0x56, 0x60, 0x7a, 0xec,
0xdf, 0xd6, 0xd0, 0xcd, 0xcc, 0xcc, 0xcb, 0xcb, 0xcd, 0xcf, 0xd3, 0xd6,
0xdd, 0xe9, 0xf1, 0x76, 0x63, 0x5d, 0x58, 0x53, 0x52, 0x50, 0x4e, 0x4f,
0x51, 0x51, 0x4f, 0x52, 0x57, 0x56, 0x53, 0x55, 0x57, 0x55, 0x54, 0x54,
0x53, 0x51, 0x4f, 0x4d, 0x4e, 0x4d, 0x4b, 0x4a, 0x4c, 0x4c, 0x4b, 0x4c,
0x4d, 0x4d, 0x56, 0x7a, 0xf8, 0xde, 0xc6, 0xc0, 0xc1, 0xbb, 0xb8, 0xbb,
0xbc, 0xbd, 0xc1, 0xc5, 0xca, 0xce, 0xd5, 0xd8, 0xd8, 0xee, 0x75, 0xf0,
0x62, 0x51, 0x55, 0x52, 0x4d, 0x4f, 0x55, 0x5c, 0x6e, 0xe7, 0xd8, 0xd2,
0xcb, 0xc9, 0xce, 0xcd, 0xcc, 0xd6, 0xde, 0xdc, 0xe1, 0xf0, 0xfd, 0x75,
0x69, 0x5d, 0x56, 0x4e, 0x4b, 0x4a, 0x47, 0x44, 0x49, 0x4e, 0x4f, 0x58,
0x6e, 0xef, 0xe4, 0xdb, 0xd5, 0xd2, 0xcf, 0xce, 0xd0, 0xcd, 0xc8, 0xcc,
0xcd, 0xc9, 0xcd, 0xd9, 0xdf, 0xf4, 0x61, 0x58, 0x56, 0x51, 0x51, 0x57,
0x58, 0x59, 0x66, 0x67, 0x5d, 0x5e, 0x61, 0x59, 0x54, 0x56, 0x54, 0x52,
0x51, 0x51, 0x4f, 0x4f, 0x4d, 0x48, 0x46, 0x45, 0x3f, 0x3e, 0x3f, 0x40,
0x41, 0x44, 0x49, 0x4c, 0x4e, 0x4f, 0x53, 0xfe, 0xd3, 0xd5, 0xc7, 0xb7,
0xb7, 0xb9, 0xb4, 0xb5, 0xb9, 0xbd, 0xc7, 0xce, 0xd7, 0xef, 0x66, 0x5f,
0x7d, 0x64, 0x4e, 0x5c, 0x5e, 0x4c, 0x4e, 0x53, 0x58, 0x6f, 0xed, 0xd7,
0xc9, 0xc1, 0xbf, 0xc4, 0xbf, 0xc0, 0xcf, 0xd7, 0xd5, 0xe8, 0x76, 0x67,
0x62, 0x61, 0x58, 0x4f, 0x4b, 0x4a, 0x49, 0x42, 0x44, 0x4d, 0x4f, 0x58,
0xf7, 0xdb, 0xd3, 0xd1, 0xd2, 0xd3, 0xd4, 0xd6, 0xe0, 0xdd, 0xcf, 0xd3,
0xdb, 0xcf, 0xcf, 0xdd, 0xed, 0xfb, 0x6d, 0x5f, 0x5a, 0x5c, 0x68, 0xf9,
0xff, 0xfc, 0xde, 0xe2, 0x6e, 0x69, 0x69, 0x5d, 0x56, 0x54, 0x56, 0x55,
0x52, 0x4d, 0x49, 0x49, 0x43, 0x3e, 0x3e, 0x3f, 0x3d, 0x3c, 0x3e, 0x41,
0x41, 0x41, 0x43, 0x48, 0x4a, 0x49, 0x4b, 0x51, 0x72, 0xcd, 0xc6, 0xbf,
0xb3, 0xb1, 0xb7, 0xb6, 0xb8, 0xc0, 0xcb, 0xd7, 0xe6, 0xea, 0xf8, 0x6e,
0x66, 0xfc, 0x6a, 0x4b, 0x4f, 0x59, 0x4c, 0x53, 0xfd, 0xdb, 0xca, 0xc3,
0xbf, 0xbd, 0xbd, 0xc1, 0xcd, 0xce, 0xcf, 0xfb, 0xf9, 0xe5, 0xfe, 0x77,
0x63, 0x59, 0x53, 0x4c, 0x47, 0x44, 0x4b, 0x55, 0x55, 0x78, 0xd4, 0xd1,
0xcf, 0xd1, 0xd6, 0xda, 0xea, 0x72, 0x7b, 0xe8, 0xe8, 0xec, 0xdc, 0xdc,
0xf9, 0x70, 0x6b, 0x60, 0x61, 0x6d, 0xef, 0xdf, 0xd4, 0xd1, 0xd4, 0xd3,
0xdb, 0x7d, 0x6d, 0x65, 0x59, 0x57, 0x5d, 0x5f, 0x5b, 0x58, 0x50, 0x4a,
0x46, 0x40, 0x3c, 0x3d, 0x3d, 0x3c, 0x3e, 0x40, 0x3f, 0x3e, 0x3e, 0x3d,
0x3d, 0x3e, 0x41, 0x45, 0x4b, 0x57, 0x5e, 0xdc, 0xbf, 0xbf, 0xbf, 0xb3,
0xb2, 0xbb, 0xb9, 0xbc, 0xc5, 0xca, 0xd9, 0xf0, 0xe9, 0xee, 0x5c, 0x52,
0x6c, 0x5b, 0x4a, 0x5a, 0x6f, 0x6b, 0xdc, 0xce, 0xc8, 0xbf, 0xbe, 0xc2,
0xc2, 0xc0, 0xca, 0xdb, 0xd2, 0xd9, 0x76, 0x7e, 0x6c, 0x5e, 0x5b, 0x4f,
0x4b, 0x4e, 0x53, 0x4f, 0x56, 0xeb, 0xdf, 0xe0, 0xd1, 0xcf, 0xd3, 0xd7,
0xe2, 0xe9, 0xe2, 0xe6, 0x7d, 0xf3, 0xe1, 0xf9, 0x67, 0x6a, 0x64, 0x61,
0x66, 0x6a, 0xf0, 0xdb, 0xdc, 0xdf, 0xd8, 0xda, 0xf7, 0x70, 0x76, 0x68,
0x61, 0x61, 0x5d, 0x5e, 0x5c, 0x4f, 0x4b, 0x4b, 0x46, 0x3f, 0x3f, 0x40,
0x3e, 0x3d, 0x3e, 0x3d, 0x3c, 0x3c, 0x3a, 0x3b, 0x3e, 0x3f, 0x41, 0x49,
0x4e, 0x4f, 0x51, 0xf0, 0xc2, 0xbe, 0xbd, 0xb1, 0xaf, 0xb6, 0xb9, 0xbd,
0xc9, 0xcf, 0xec, 0x6c, 0xea, 0xe5, 0x6b, 0x59, 0x6e, 0x62, 0x4a, 0x51,
0x65, 0x7b, 0xd2, 0xcb, 0xc2, 0xbb, 0xbc, 0xc2, 0xc6, 0xc8, 0xd4, 0xff,
0xec, 0xeb, 0x72, 0x6e, 0x5d, 0x5a, 0x57, 0x4a, 0x47, 0x4d, 0x57, 0x5c,
0x79, 0xd3, 0xcc, 0xcc, 0xcd, 0xd4, 0xd5, 0xdb, 0xef, 0xdf, 0xd4, 0xd7,
0xde, 0xdd, 0xe4, 0x6c, 0x60, 0x5d, 0x5e, 0x73, 0xfe, 0xf1, 0xdc, 0xd9,
0xeb, 0xfc, 0xf3, 0x6b, 0x5c, 0x5e, 0x5f, 0x5e, 0x5c, 0x54, 0x4e, 0x4a,
0x43, 0x3e, 0x3d, 0x3e, 0x3c, 0x3c, 0x3d, 0x3c, 0x3a, 0x38, 0x36, 0x37,
0x3a, 0x3c, 0x3e, 0x49, 0x53, 0x50, 0x5e, 0xcc, 0xbc, 0xbc, 0xb8, 0xae,
0xaf, 0xb8, 0xba, 0xc1, 0xca, 0xd2, 0x68, 0x68, 0xe5, 0x77, 0x57, 0x59,
0x72, 0x59, 0x4e, 0x6d, 0xe4, 0xd1, 0xc6, 0xc4, 0xbc, 0xba, 0xc0, 0xc9,
0xcb, 0xce, 0xef, 0x63, 0x6f, 0x64, 0x5b, 0x52, 0x4b, 0x4f, 0x4d, 0x46,
0x4c, 0x61, 0xfd, 0xe7, 0xd1, 0xc8, 0xc8, 0xca, 0xcf, 0xd4, 0xd0, 0xd7,
0xde, 0xd5, 0xd1, 0xdc, 0xe9, 0xf6, 0x71, 0x69, 0x61, 0x65, 0xeb, 0xde,
0xe6, 0xe2, 0xdb, 0xe4, 0x76, 0x6e, 0x6c, 0x65, 0x61, 0x5a, 0x57, 0x54,
0x4a, 0x42, 0x3e, 0x3c, 0x39, 0x37, 0x37, 0x37, 0x36, 0x36, 0x34, 0x34,
0x36, 0x36, 0x39, 0x3d, 0x43, 0x4a, 0x78, 0xbc, 0xb6, 0xb8, 0xae, 0xac,
0xb5, 0xb9, 0xbe, 0xc9, 0xca, 0xdb, 0x76, 0xe9, 0xec, 0x55, 0x46, 0x4f,
0x50, 0x48, 0x5e, 0xdb, 0xcb, 0xbd, 0xbd, 0xbd, 0xb8, 0xbd, 0xc8, 0xcb,
0xca, 0xd3, 0xf4, 0xf1, 0x6b, 0x53, 0x4c, 0x40, 0x3f, 0x45, 0x42, 0x46,
0x5b, 0xef, 0xde, 0xd4, 0xcd, 0xcb, 0xcb, 0xce, 0xcf, 0xc7, 0xc4, 0xcb,
0xcb, 0xca, 0xd5, 0xf0, 0x6d, 0x65, 0x6a, 0x6d, 0x69, 0xf1, 0xda, 0xe6,
0x78, 0xef, 0xf2, 0x68, 0x66, 0x6b, 0x69, 0x65, 0x57, 0x4c, 0x48, 0x3f,
0x3a, 0x37, 0x36, 0x34, 0x33, 0x33, 0x33, 0x32, 0x30, 0x2f, 0x33, 0x36,
0x37, 0x41, 0xce, 0xb7, 0xb7, 0xaf, 0xaa, 0xae, 0xb8, 0xbd, 0xc8, 0xc8,
0xcc, 0xf0, 0xde, 0xd2, 0x64, 0x46, 0x45, 0x49, 0x43, 0x4a, 0xfa, 0xce,
0xbc, 0xb9, 0xbc, 0xb7, 0xb9, 0xc5, 0xcb, 0xc7, 0xc9, 0xd4, 0xdd, 0xeb,
0x5f, 0x4e, 0x3f, 0x3c, 0x41, 0x43, 0x43, 0x58, 0xe2, 0xda, 0xd5, 0xcf,
0xce, 0xcc, 0xcc, 0xcb, 0xc4, 0xbf, 0xc2, 0xca, 0xcb, 0xd6, 0x69, 0x59,
0x58, 0x58, 0x5f, 0x67, 0xfc, 0xde, 0xe5, 0x73, 0x71, 0xf9, 0x6e, 0x63,
0x79, 0x7c, 0x62, 0x52, 0x45, 0x3e, 0x3a, 0x34, 0x32, 0x32, 0x32, 0x31,
0x32, 0x32, 0x31, 0x31, 0x33, 0x35, 0x3f, 0xd7, 0xba, 0xb7, 0xaf, 0xaa,
0xaf, 0xb9, 0xbf, 0xce, 0xd0, 0xd3, 0xee, 0xdb, 0xd8, 0x5f, 0x48, 0x44,
0x45, 0x42, 0x4d, 0xe7, 0xc9, 0xbb, 0xb8, 0xba, 0xb8, 0xbb, 0xc8, 0xcb,
0xca, 0xcd, 0xd6, 0xdd, 0xf8, 0x59, 0x49, 0x3d, 0x3c, 0x40, 0x43, 0x49,
0x6b, 0xda, 0xd3, 0xce, 0xce, 0xcc, 0xc4, 0xc5, 0xc6, 0xbd, 0xbb, 0xc1,
0xc8, 0xcf, 0xe7, 0x62, 0x53, 0x4f, 0x5b, 0x6d, 0x62, 0x72, 0xe3, 0x6e,
0x59, 0x5c, 0x5b, 0x57, 0x54, 0x50, 0x4c, 0x46, 0x3d, 0x37, 0x34, 0x31,
0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x31, 0x34, 0x37, 0x45, 0xcc, 0xbc, 0xb8,
0xad, 0xac, 0xb1, 0xb6, 0xbf, 0xca, 0xc9, 0xd8, 0xeb, 0xd6, 0xde, 0x56,
0x49, 0x4a, 0x48, 0x47, 0x5b, 0xdf, 0xc6, 0xba, 0xbc, 0xbb, 0xb8, 0xbe,
0xca, 0xcb, 0xcd, 0xd3, 0xdf, 0xfc, 0x5e, 0x50, 0x46, 0x3d, 0x3e, 0x43,
0x45, 0x4e, 0x7e, 0xd8, 0xce, 0xcc, 0xc7, 0xbf, 0xbf, 0xc1, 0xbe, 0xbb,
0xbd, 0xc6, 0xcd, 0xd2, 0xef, 0x59, 0x51, 0x53, 0x5c, 0x5b, 0x5a, 0x75,
0x7b, 0x5e, 0x58, 0x59, 0x57, 0x4d, 0x48, 0x44, 0x3f, 0x3a, 0x34, 0x30,
0x2f, 0x2d, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x3a, 0xdd, 0xbf, 0xbf, 0xb3,
0xad, 0xb2, 0xb8, 0xbd, 0xc7, 0xc4, 0xcb, 0xee, 0xd9, 0xd7, 0x56, 0x46,
0x4a, 0x4b, 0x4a, 0x5b, 0xdd, 0xc9, 0xbb, 0xbc, 0xbe, 0xb7, 0xbc, 0xc8,
0xc6, 0xc6, 0xcd, 0xd9, 0xfa, 0x5d, 0x52, 0x46, 0x3d, 0x3f, 0x47, 0x46,
0x4b, 0x6d, 0xe1, 0xd8, 0xce, 0xca, 0xc2, 0xbd, 0xc0, 0xbf, 0xbb, 0xbe,
0xc9, 0xcf, 0xda, 0xfb, 0x5c, 0x53, 0x55, 0x5f, 0x5e, 0x59, 0x6e, 0xff,
0x5c, 0x56, 0x57, 0x50, 0x4a, 0x42, 0x3d, 0x3b, 0x37, 0x30, 0x2e, 0x2f,
0x2d, 0x2c, 0x2f, 0x30, 0x33, 0x4e, 0xc8, 0xc5, 0xb9, 0xae, 0xb3, 0xb9,
0xba, 0xca, 0xcc, 0xc8, 0xef, 0xf1, 0xd4, 0x62, 0x49, 0x4c, 0x4c, 0x46,
0x56, 0xe6, 0xd2, 0xbe, 0xbb, 0xbe, 0xb9, 0xba, 0xc6, 0xc7, 0xc6, 0xcf,
0xda, 0xeb, 0x5b, 0x4f, 0x49, 0x3d, 0x3d, 0x43, 0x43, 0x49, 0x65, 0xe2,
0xd1, 0xc8, 0xc6, 0xbf, 0xbb, 0xbd, 0xbe, 0xba, 0xbc, 0xc5, 0xcb, 0xd6,
0xf8, 0x64, 0x58, 0x55, 0x61, 0x66, 0x5b, 0x6c, 0xf6, 0x5c, 0x54, 0x53,
0x4a, 0x44, 0x3d, 0x38, 0x35, 0x31, 0x2e, 0x2d, 0x2d, 0x2d, 0x2e, 0x30,
0x3b, 0xdf, 0xca, 0xc7, 0xb2, 0xb0, 0xbc, 0xbd, 0xc5, 0xcf, 0xca, 0xdc,
0xfd, 0xd3, 0xe0, 0x4f, 0x4c, 0x54, 0x4c, 0x4d, 0xef, 0xcf, 0xc2, 0xba,
0xbc, 0xba, 0xb7, 0xc1, 0xcb, 0xc5, 0xcc, 0xdb, 0xe8, 0x6b, 0x56, 0x4b,
0x3f, 0x3c, 0x41, 0x44, 0x44, 0x54, 0xe2, 0xd5, 0xcd, 0xc8, 0xc3, 0xbf,
0xbf, 0xc1, 0xbe, 0xbd, 0xc5, 0xce, 0xd3, 0xe9, 0x5c, 0x54, 0x54, 0x5a,
0x64, 0x63, 0x7c, 0xe5, 0x70, 0x57, 0x51, 0x4c, 0x40, 0x39, 0x35, 0x34,
0x31, 0x2d, 0x2d, 0x2f, 0x2f, 0x2f, 0x3f, 0xd9, 0xcd, 0xc3, 0xb3, 0xb4,
0xbb, 0xbe, 0xcf, 0xd4, 0xcc, 0x75, 0x6c, 0xd5, 0x71, 0x4c, 0x4e, 0x4f,
0x4b, 0x51, 0x78, 0xd4, 0xbf, 0xbb, 0xbd, 0xb8, 0xb7, 0xc3, 0xca, 0xc9,
0xd3, 0xdf, 0xfa, 0x5d, 0x5a, 0x4e, 0x3f, 0x3f, 0x46, 0x44, 0x46, 0x5b,
0xe0, 0xcd, 0xc7, 0xc5, 0xbf, 0xbd, 0xc2, 0xc5, 0xbf, 0xc2, 0xca, 0xce,
0xd5, 0xec, 0x60, 0x54, 0x51, 0x59, 0x5b, 0x58, 0x69, 0xf9, 0x5c, 0x4e,
0x49, 0x41, 0x3a, 0x33, 0x2f, 0x30, 0x2e, 0x2c, 0x2f, 0x34, 0x39, 0x5a,
0xd1, 0xce, 0xba, 0xb5, 0xbe, 0xbd, 0xbf, 0xd5, 0xd0, 0xd6, 0x7a, 0xe8,
0xf6, 0x52, 0x4e, 0x54, 0x4d, 0x4e, 0xf3, 0xd3, 0xc8, 0xbc, 0xba, 0xb9,
0xb8, 0xbe, 0xc5, 0xc5, 0xd0, 0xee, 0xf9, 0x5f, 0x4f, 0x4b, 0x43, 0x3f,
0x41, 0x41, 0x43, 0x4e, 0x73, 0xdc, 0xcc, 0xc1, 0xbe, 0xbd, 0xbd, 0xc1,
0xc1, 0xc3, 0xce, 0xd5, 0xd9, 0x7b, 0x5d, 0x58, 0x51, 0x50, 0x53, 0x56,
0x5f, 0x6d, 0x5c, 0x50, 0x4d, 0x43, 0x3a, 0x34, 0x2f, 0x2e, 0x2e, 0x2e,
0x32, 0x3b, 0x5f, 0xd0, 0xcf, 0xbc, 0xb7, 0xc4, 0xc5, 0xc6, 0xd8, 0xcf,
0xd5, 0xf8, 0xda, 0xf5, 0x4d, 0x4d, 0x4e, 0x48, 0x4b, 0x78, 0xd1, 0xc6,
0xbc, 0xba, 0xb9, 0xb8, 0xbf, 0xc7, 0xc5, 0xcf, 0xef, 0xee, 0x6c, 0x55,
0x4c, 0x42, 0x3f, 0x42, 0x3f, 0x43, 0x57, 0xeb, 0xd6, 0xc7, 0xbe, 0xbc,
0xbb, 0xbe, 0xbf, 0xbe, 0xc6, 0xd1, 0xcf, 0xdb, 0x67, 0x57, 0x50, 0x4e,
0x4d, 0x4c, 0x4f, 0x57, 0x55, 0x4d, 0x4b, 0x45, 0x3a, 0x32, 0x2f, 0x2e,
0x2d, 0x2f, 0x34, 0x42, 0xdd, 0xca, 0xc9, 0xb9, 0xba, 0xcb, 0xcb, 0xce,
0xdf, 0xd4, 0xdf, 0xe7, 0xda, 0x62, 0x4b, 0x4c, 0x4b, 0x48, 0x52, 0xdd,
0xc7, 0xbe, 0xb9, 0xb7, 0xb6, 0xb9, 0xc3, 0xc8, 0xc8, 0xd8, 0xf0, 0xef,
0x69, 0x55, 0x4a, 0x41, 0x42, 0x42, 0x40, 0x4b, 0x74, 0xd5, 0xc9, 0xbf,
0xb9, 0xb9, 0xbd, 0xbe, 0xc0, 0xc9, 0xd2, 0xda, 0xde, 0x7c, 0x55, 0x4e,
0x4d, 0x47, 0x44, 0x47, 0x4a, 0x4a, 0x47, 0x43, 0x3f, 0x37, 0x2f, 0x2e,
0x2e, 0x2e, 0x31, 0x3d, 0x78, 0xc5, 0xc5, 0xbb, 0xb5, 0xc0, 0xce, 0xcd,
0xde, 0xdf, 0xdf, 0xed, 0xd3, 0xde, 0x53, 0x4e, 0x4e, 0x48, 0x49, 0x62,
0xcf, 0xc1, 0xbb, 0xb7, 0xb5, 0xb7, 0xbf, 0xca, 0xc9, 0xd6, 0x6d, 0xfb,
0xfb, 0x5e, 0x53, 0x48, 0x43, 0x42, 0x3e, 0x43, 0x5c, 0xe2, 0xcd, 0xbd,
0xb7, 0xb9, 0xbb, 0xbc, 0xc4, 0xcb, 0xd3, 0xdf, 0xdc, 0xe8, 0x67, 0x68,
0x5c, 0x4c, 0x4a, 0x48, 0x45, 0x43, 0x42, 0x3e, 0x37, 0x31, 0x2e, 0x2c,
0x2c, 0x2f, 0x36, 0x4e, 0xc8, 0xc1, 0xba, 0xb0, 0xba, 0xc6, 0xc9, 0xe7,
0x72, 0xf5, 0x66, 0xeb, 0xdf, 0x5d, 0x52, 0x50, 0x47, 0x44, 0x4f, 0xea,
0xcb, 0xbe, 0xb7, 0xb3, 0xb3, 0xb8, 0xc1, 0xc8, 0xd8, 0x63, 0x5f, 0x63,
0x59, 0x53, 0x4d, 0x49, 0x45, 0x40, 0x46, 0x56, 0x73, 0xcb, 0xbb, 0xb8,
0xb6, 0xb5, 0xbb, 0xc2, 0xcb, 0xdd, 0xf5, 0x7e, 0x6b, 0x69, 0x6b, 0x5c,
0x51, 0x4c, 0x44, 0x3e, 0x3d, 0x39, 0x31, 0x30, 0x30, 0x2d, 0x2e, 0x33,
0x35, 0x48, 0xcc, 0xc8, 0xbd, 0xb0, 0xb9, 0xc1, 0xbf, 0xdc, 0x71, 0xf6,
0x53, 0x5d, 0xf3, 0x55, 0x53, 0x5c, 0x4c, 0x4b, 0x5b, 0xee, 0xce, 0xbf,
0xb8, 0xb3, 0xb0, 0xb4, 0xba, 0xbd, 0xcc, 0x71, 0x60, 0x55, 0x4b, 0x4c,
0x49, 0x46, 0x49, 0x4b, 0x4b, 0x59, 0xde, 0xcb, 0xc2, 0xb9, 0xb6, 0xb8,
0xbb, 0xbf, 0xcc, 0xdb, 0x6c, 0x5c, 0x5f, 0x57, 0x50, 0x53, 0x4e, 0x45,
0x3e, 0x39, 0x32, 0x2e, 0x2c, 0x2c, 0x2c, 0x2e, 0x35, 0x3c, 0x6e, 0xc0,
0xc0, 0xb8, 0xaf, 0xb9, 0xbf, 0xc1, 0xdd, 0xef, 0x7b, 0x4e, 0x5c, 0x5e,
0x47, 0x4c, 0x51, 0x49, 0x4d, 0x69, 0xd9, 0xc7, 0xbc, 0xb6, 0xb2, 0xb1,
0xb5, 0xbb, 0xbe, 0xcc, 0x7a, 0x66, 0x57, 0x4a, 0x4a, 0x47, 0x47, 0x51,
0x4e, 0x51, 0xe1, 0xce, 0xcb, 0xbd, 0xb8, 0xb9, 0xb9, 0xbb, 0xc3, 0xcb,
0xdc, 0x64, 0x69, 0x5e, 0x4d, 0x4f, 0x50, 0x43, 0x3e, 0x37, 0x2e, 0x2c,
0x2a, 0x29, 0x2a, 0x2e, 0x32, 0x3c, 0xe0, 0xbe, 0xbe, 0xb4, 0xae, 0xb9,
0xbd, 0xc2, 0xe8, 0xeb, 0x69, 0x4b, 0x60, 0x58, 0x43, 0x4d, 0x4d, 0x45,
0x4d, 0x64, 0xd9, 0xc4, 0xbc, 0xb5, 0xaf, 0xaf, 0xb5, 0xb9, 0xbd, 0xce,
0xfd, 0x6a, 0x52, 0x4b, 0x4b, 0x48, 0x52, 0x59, 0x4e, 0x7c, 0xd3, 0xda,
0xc6, 0xbb, 0xbc, 0xbb, 0xbb, 0xbf, 0xc5, 0xd0, 0xfe, 0x6a, 0x5f, 0x4e,
0x4c, 0x4f, 0x46, 0x3d, 0x37, 0x2e, 0x2c, 0x2a, 0x27, 0x29, 0x2e, 0x2f,
0x3c, 0xcf, 0xbd, 0xbc, 0xb0, 0xae, 0xb7, 0xbb, 0xc4, 0xdd, 0xdf, 0x5c,
0x4c, 0x6b, 0x52, 0x42, 0x4d, 0x4b, 0x42, 0x4b, 0x5d, 0xdd, 0xc4, 0xbc,
0xb5, 0xae, 0xaf, 0xb6, 0xb7, 0xbc, 0xd3, 0xfe, 0x62, 0x4e, 0x4a, 0x4b,
0x4d, 0x57, 0x5b, 0x5e, 0xe9, 0xd9, 0xd4, 0xc8, 0xbf, 0xbd, 0xbd, 0xbe,
0xbf, 0xc8, 0xd8, 0xfe, 0x5d, 0x4f, 0x49, 0x45, 0x42, 0x3d, 0x34, 0x2e,
0x2d, 0x2a, 0x27, 0x29, 0x2d, 0x2f, 0x3c, 0xce, 0xbd, 0xb9, 0xad, 0xad,
0xb5, 0xb8, 0xc6, 0xe6, 0xe0, 0x54, 0x4d, 0xfb, 0x52, 0x48, 0x58, 0x4c,
0x44, 0x4b, 0x54, 0xef, 0xc8, 0xbd, 0xb4, 0xae, 0xae, 0xb3, 0xb5, 0xbc,
0xd7, 0x6b, 0x57, 0x48, 0x4c, 0x55, 0x4f, 0x6a, 0xe4, 0x6d, 0xe3, 0xd1,
0xdb, 0xcd, 0xc3, 0xc4, 0xbf, 0xbd, 0xc3, 0xc9, 0xd5, 0x65, 0x51, 0x4a,
0x3f, 0x3c, 0x39, 0x30, 0x2d, 0x2d, 0x29, 0x28, 0x2b, 0x2c, 0x2f, 0x49,
0xcc, 0xc0, 0xb2, 0xaa, 0xad, 0xb2, 0xb7, 0xca, 0xde, 0x67, 0x49, 0x57,
0x5d, 0x49, 0x55, 0x5b, 0x48, 0x4a, 0x4d, 0x52, 0xe6, 0xcd, 0xbf, 0xb3,
0xaf, 0xb0, 0xb0, 0xb4, 0xbf, 0xd3, 0x72, 0x4e, 0x4b, 0x4f, 0x4e, 0x61,
0xdb, 0xec, 0xe1, 0xd1, 0xe9, 0xe7, 0xd0, 0xd0, 0xc8, 0xc2, 0xc4, 0xc2,
0xc8, 0xdf, 0x6d, 0x52, 0x41, 0x3b, 0x34, 0x2e, 0x2d, 0x2b, 0x29, 0x2a,
0x2c, 0x2c, 0x33, 0x57, 0xd6, 0xc5, 0xaf, 0xac, 0xaf, 0xaf, 0xb7, 0xc6,
0xcd, 0x5a, 0x48, 0x5b, 0x49, 0x44, 0x5b, 0x4f, 0x4a, 0x53, 0x4f, 0x5e,
0xe4, 0xd8, 0xc1, 0xb6, 0xb4, 0xb3, 0xaf, 0xb5, 0xbf, 0xcc, 0xf6, 0x5b,
0x56, 0x4c, 0x59, 0xdb, 0xdf, 0xdc, 0xc9, 0xce, 0xda, 0xd3, 0xd5, 0xcf,
0xcc, 0xce, 0xc6, 0xc6, 0xdb, 0xf8, 0x61, 0x44, 0x38, 0x2f, 0x2d, 0x2b,
0x29, 0x28, 0x2c, 0x2e, 0x2e, 0x3d, 0xdc, 0xdb, 0xc2, 0xaf, 0xb1, 0xb4,
0xb3, 0xbf, 0xc3, 0xce, 0x4e, 0x5e, 0x64, 0x3f, 0x49, 0x58, 0x48, 0x4d,
0x54, 0x5a, 0xdf, 0xd6, 0xcd, 0xba, 0xb5, 0xb7, 0xb3, 0xb2, 0xba, 0xc4,
0xce, 0xdf, 0x76, 0x56, 0x54, 0xec, 0xe2, 0xfc, 0xd2, 0xcb, 0xd6, 0xd6,
0xcf, 0xce, 0xcf, 0xd5, 0xce, 0xca, 0xda, 0x76, 0x68, 0x4c, 0x39, 0x30,
0x2d, 0x2b, 0x28, 0x27, 0x2b, 0x2d, 0x2f, 0x3f, 0xe3, 0xd2, 0xbe, 0xb1,
0xb2, 0xb4, 0xb6, 0xbf, 0xc2, 0xce, 0x5f, 0xf8, 0x70, 0x49, 0x50, 0x54,
0x49, 0x4d, 0x4d, 0x55, 0xeb, 0xde, 0xce, 0xbb, 0xb7, 0xb7, 0xb4, 0xb4,
0xba, 0xc3, 0xcd, 0xd2, 0xeb, 0x59, 0x68, 0xe2, 0xef, 0xf0, 0xd9, 0xd3,
0xdb, 0xe2, 0xd9, 0xd2, 0xda, 0xda, 0xce, 0xcf, 0xe3, 0x70, 0x5a, 0x42,
0x34, 0x2e, 0x2c, 0x29, 0x28, 0x29, 0x2c, 0x2e, 0x3b, 0x6a, 0xd6, 0xc1,
0xb2, 0xb3, 0xb4, 0xb5, 0xbf, 0xc5, 0xcb, 0x65, 0x76, 0xf4, 0x4d, 0x58,
0x5e, 0x4c, 0x51, 0x52, 0x4f, 0x6e, 0xe4, 0xd6, 0xc0, 0xba, 0xb9, 0xb5,
0xb5, 0xba, 0xbf, 0xca, 0xd1, 0xe1, 0x64, 0x6b, 0xe1, 0xe2, 0xde, 0xcf,
0xce, 0xd7, 0xda, 0xd9, 0xda, 0xdd, 0xdf, 0xd9, 0xd6, 0xe8, 0x66, 0x58,
0x41, 0x34, 0x2f, 0x2d, 0x29, 0x29, 0x2b, 0x2c, 0x2f, 0x40, 0x6e, 0xdb,
0xbd, 0xb2, 0xb6, 0xb5, 0xb6, 0xc2, 0xc3, 0xcf, 0x69, 0xe1, 0x6f, 0x4d,
0x64, 0x59, 0x4a, 0x52, 0x4f, 0x52, 0x7a, 0xec, 0xcf, 0xbe, 0xbc, 0xb9,
0xb5, 0xb7, 0xbc, 0xc2, 0xc9, 0xd1, 0xf2, 0x6b, 0xeb, 0xe2, 0xea, 0xdc,
0xd1, 0xd5, 0xdd, 0xdb, 0xd9, 0xdf, 0xe1, 0xdb, 0xd7, 0xde, 0x74, 0x5f,
0x4a, 0x38, 0x31, 0x2e, 0x2a, 0x29, 0x2a, 0x2b, 0x2e, 0x3a, 0x5d, 0xe0,
0xc2, 0xb2, 0xb4, 0xb6, 0xb4, 0xbf, 0xc7, 0xc9, 0xfe, 0xed, 0xe3, 0x54,
0x65, 0x6e, 0x4a, 0x4d, 0x4f, 0x4a, 0x56, 0x69, 0xdf, 0xc6, 0xbe, 0xba,
0xb6, 0xb5, 0xb9, 0xbf, 0xc5, 0xcb, 0xde, 0xf7, 0xde, 0xd5, 0xd7, 0xd2,
0xcb, 0xce, 0xd9, 0xdc, 0xdf, 0xeb, 0xf4, 0xef, 0xdf, 0xe2, 0x72, 0x5f,
0x4b, 0x3a, 0x33, 0x2e, 0x2b, 0x29, 0x2a, 0x2b, 0x2e, 0x3d, 0x5e, 0xe7,
0xc0, 0xb4, 0xb8, 0xb7, 0xb6, 0xc3, 0xc7, 0xcb, 0x7e, 0xdb, 0xe2, 0x56,
0xf7, 0x6b, 0x49, 0x4f, 0x4d, 0x48, 0x52, 0x5b, 0xee, 0xca, 0xc2, 0xbc,
0xb7, 0xb8, 0xbc, 0xbf, 0xc3, 0xcb, 0xda, 0xde, 0xd2, 0xd0, 0xd2, 0xcb,
0xc9, 0xcf, 0xd9, 0xda, 0xdf, 0xef, 0x7e, 0xef, 0xe3, 0xfa, 0x5e, 0x54,
0x42, 0x35, 0x2f, 0x2d, 0x2a, 0x29, 0x2b, 0x2c, 0x35, 0x4e, 0x69, 0xcd,
0xb5, 0xb7, 0xba, 0xb5, 0xbe, 0xca, 0xc8, 0xe5, 0xe7, 0xd6, 0x5e, 0x73,
0xde, 0x51, 0x4e, 0x57, 0x4a, 0x4b, 0x54, 0x63, 0xd7, 0xc7, 0xc1, 0xba,
0xb7, 0xbb, 0xbe, 0xbf, 0xc6, 0xd3, 0xd8, 0xcf, 0xce, 0xd0, 0xcb, 0xc6,
0xcb, 0xd7, 0xdb, 0xe0, 0x72, 0x5f, 0x67, 0x73, 0x64, 0x55, 0x4e, 0x43,
0x37, 0x30, 0x2e, 0x2b, 0x2a, 0x2b, 0x2c, 0x35, 0x4d, 0x60, 0xcf, 0xb6,
0xb8, 0xbb, 0xb5, 0xbe, 0xcc, 0xc9, 0xe5, 0xe2, 0xd3, 0x68, 0xee, 0xd6,
0x5b, 0x54, 0x5b, 0x4c, 0x4c, 0x50, 0x5b, 0xdd, 0xcc, 0xc6, 0xbb, 0xb8,
0xbb, 0xbe, 0xbe, 0xc3, 0xd0, 0xd6, 0xcc, 0xcc, 0xcf, 0xc8, 0xc4, 0xcb,
0xd2, 0xd8, 0xe2, 0x7e, 0x5e, 0x5f, 0x6d, 0x5e, 0x50, 0x4b, 0x3f, 0x36,
0x2f, 0x2d, 0x2b, 0x2a, 0x2a, 0x2d, 0x3b, 0x51, 0x65, 0xc3, 0xb4, 0xba,
0xb9, 0xb6, 0xc2, 0xc7, 0xcb, 0xec, 0xd4, 0xd7, 0x67, 0xd9, 0xdb, 0x58,
0x5c, 0x57, 0x4b, 0x4e, 0x4e, 0x5a, 0xdc, 0xd0, 0xca, 0xbd, 0xbb, 0xbe,
0xc0, 0xbe, 0xc3, 0xd3, 0xce, 0xc4, 0xcc, 0xcd, 0xc2, 0xc5, 0xcd, 0xd1,
0xdd, 0xe5, 0x6d, 0x57, 0x62, 0x62, 0x50, 0x4c, 0x45, 0x3b, 0x34, 0x2f,
0x2d, 0x2b, 0x2a, 0x2b, 0x2f, 0x3f, 0x4e, 0x68, 0xbd, 0xb6, 0xbd, 0xb6,
0xb7, 0xc4, 0xc1, 0xcd, 0xda, 0xc7, 0xdc, 0xe7, 0xc8, 0xe0, 0x62, 0x79,
0x53, 0x4b, 0x4b, 0x48, 0x56, 0xfb, 0xea, 0xce, 0xbf, 0xbe, 0xc1, 0xbe,
0xbc, 0xc4, 0xcd, 0xc2, 0xc1, 0xcb, 0xc4, 0xbf, 0xc5, 0xcb, 0xd3, 0xdd,
0xeb, 0x57, 0x50, 0x5c, 0x51, 0x48, 0x44, 0x3f, 0x39, 0x32, 0x2f, 0x2d,
0x2c, 0x2b, 0x2d, 0x35, 0x48, 0x4e, 0xe7, 0xb8, 0xba, 0xbd, 0xb3, 0xbb,
0xc3, 0xbe, 0xd3, 0xcd, 0xc4, 0xe5, 0xd1, 0xc5, 0xed, 0x7a, 0xf5, 0x52,
0x4d, 0x49, 0x48, 0x54, 0x60, 0x6c, 0xd7, 0xc7, 0xc6, 0xc9, 0xbf, 0xbe,
0xca, 0xc7, 0xbe, 0xc3, 0xc3, 0xbe, 0xc2, 0xc3, 0xc8, 0xdc, 0xda, 0xee,
0x52, 0x55, 0x56, 0x4a, 0x43, 0x3d, 0x39, 0x35, 0x2f, 0x2d, 0x2d, 0x2d,
0x2c, 0x2f, 0x3f, 0x4e, 0x58, 0xc4, 0xb8, 0xbe, 0xb8, 0xb6, 0xc1, 0xbe,
0xc5, 0xd7, 0xc3, 0xcd, 0xea, 0xc7, 0xce, 0x75, 0xea, 0x68, 0x4f, 0x4e,
0x49, 0x4a, 0x59, 0x64, 0x70, 0xd7, 0xca, 0xcc, 0xc7, 0xbf, 0xc5, 0xc7,
0xbf, 0xc0, 0xc3, 0xbd, 0xbf, 0xc3, 0xbf, 0xcb, 0xda, 0xd6, 0x7b, 0x59,
0x59, 0x4e, 0x47, 0x40, 0x3b, 0x37, 0x32, 0x2f, 0x2d, 0x2d, 0x2d, 0x2d,
0x34, 0x46, 0x4d, 0x79, 0xbd, 0xbc, 0xbe, 0xb5, 0xba, 0xc1, 0xbd, 0xc9,
0xce, 0xc3, 0xd0, 0xd6, 0xc8, 0xd8, 0xfd, 0xf3, 0x59, 0x4b, 0x49, 0x48,
0x48, 0x4f, 0x5f, 0x73, 0xdc, 0xcb, 0xca, 0xc6, 0xc0, 0xc5, 0xc2, 0xbe,
0xc2, 0xbf, 0xbb, 0xc1, 0xc4, 0xc1, 0xcd, 0xdc, 0xe2, 0x72, 0x5a, 0x52,
0x4b, 0x41, 0x3c, 0x39, 0x34, 0x30, 0x2f, 0x2e, 0x2e, 0x2f, 0x30, 0x3a,
0x4c, 0x51, 0xde, 0xbc, 0xbf, 0xbf, 0xb6, 0xbc, 0xc3, 0xbe, 0xc6, 0xca,
0xc5, 0xcc, 0xce, 0xcc, 0xd6, 0xea, 0x79, 0x5e, 0x4d, 0x49, 0x4c, 0x4b,
0x4c, 0x63, 0xf8, 0xed, 0xcf, 0xc7, 0xc9, 0xc6, 0xbf, 0xbf, 0xc0, 0xbe,
0xbb, 0xbd, 0xbf, 0xc0, 0xc6, 0xcd, 0xd7, 0xee, 0x6d, 0x5a, 0x4d, 0x47,
0x3f, 0x3c, 0x38, 0x34, 0x31, 0x2f, 0x2f, 0x2e, 0x2f, 0x33, 0x3d, 0x4a,
0x4f, 0xd8, 0xbe, 0xc4, 0xc0, 0xb9, 0xbe, 0xc6, 0xc1, 0xc3, 0xcb, 0xca,
0xc8, 0xc9, 0xcd, 0xd2, 0xdd, 0x7e, 0x5e, 0x50, 0x4a, 0x4d, 0x4f, 0x4d,
0x5b, 0xef, 0xee, 0xdb, 0xca, 0xc9, 0xcb, 0xc2, 0xbe, 0xc2, 0xbf, 0xbb,
0xbd, 0xc1, 0xbf, 0xc3, 0xcf, 0xd8, 0xde, 0x69, 0x54, 0x52, 0x47, 0x3d,
0x3c, 0x39, 0x35, 0x33, 0x33, 0x31, 0x2f, 0x32, 0x34, 0x3a, 0x47, 0x4f,
0x7a, 0xca, 0xc4, 0xc6, 0xc0, 0xbd, 0xc4, 0xcc, 0xc4, 0xc3, 0xce, 0xcc,
0xc4, 0xc7, 0xd2, 0xd4, 0xd3, 0xfb, 0x5c, 0x5a, 0x57, 0x57, 0x56, 0x5f,
0xfd, 0xee, 0xdb, 0xd1, 0xd3, 0xcd, 0xc7, 0xc7, 0xc8, 0xc3, 0xbe, 0xc0,
0xc4, 0xc1, 0xc3, 0xcd, 0xd6, 0xda, 0xf5, 0x5b, 0x53, 0x4e, 0x44, 0x3e,
0x3d, 0x3b, 0x36, 0x34, 0x34, 0x33, 0x32, 0x34, 0x35, 0x3b, 0x46, 0x4d,
0x5f, 0xd6, 0xca, 0xcb, 0xca, 0xc4, 0xc5, 0xcc, 0xcc, 0xc5, 0xc5, 0xc8,
0xc6, 0xc2, 0xc6, 0xce, 0xd5, 0xdd, 0x7a, 0x63, 0x5d, 0x5a, 0x60, 0x65,
0x6e, 0xf1, 0xdc, 0xd0, 0xd4, 0xd6, 0xcc, 0xc8, 0xcb, 0xca, 0xc2, 0xbf,
0xc3, 0xc7, 0xc5, 0xc7, 0xd3, 0xe2, 0xf2, 0x6a, 0x5c, 0x4c, 0x47, 0x47,
0x40, 0x3f, 0x3c, 0x39, 0x3c, 0x38, 0x36, 0x36, 0x37, 0x39, 0x3c, 0x47,
0x4f, 0x62, 0xdd, 0xd3, 0xcf, 0xd0, 0xcc, 0xca, 0xd2, 0xd0, 0xca, 0xc6,
0xc4, 0xc5, 0xc4, 0xc3, 0xc8, 0xd0, 0xd9, 0xe8, 0x73, 0x6e, 0x68, 0x66,
0x77, 0xf2, 0xea, 0xe3, 0xde, 0xdc, 0xdc, 0xdb, 0xd6, 0xcf, 0xcd, 0xcb,
0xc7, 0xc7, 0xc9, 0xcb, 0xd0, 0xd9, 0xe5, 0xf6, 0x6d, 0x63, 0x58, 0x4f,
0x4d, 0x4b, 0x48, 0x42, 0x3f, 0x3f, 0x3c, 0x3b, 0x3b, 0x3b, 0x3b, 0x3a,
0x3e, 0x47, 0x4d, 0x54, 0x67, 0xe5, 0xd9, 0xd8, 0xd9, 0xd5, 0xd1, 0xd2,
0xcf, 0xcd, 0xca, 0xc7, 0xc4, 0xc4, 0xc9, 0xcb, 0xce, 0xd4, 0xdc, 0xeb,
0xec, 0xe3, 0xe6, 0xe5, 0xe6, 0xe3, 0xde, 0xdd, 0xdc, 0xde, 0xdc, 0xd5,
0xd4, 0xd2, 0xcf, 0xcf, 0xce, 0xd2, 0xda, 0xdd, 0xe6, 0xf7, 0x7d, 0x6f,
0x69, 0x68, 0x5d, 0x59, 0x56, 0x4d, 0x4c, 0x4c, 0x4c, 0x4a, 0x44, 0x46,
0x45, 0x43, 0x47, 0x42, 0x42, 0x45, 0x48, 0x52, 0x55, 0x5c, 0x6a, 0x72,
0xef, 0xf5, 0xea, 0xe2, 0xe3, 0xdb, 0xd6, 0xcf, 0xcc, 0xcb, 0xca, 0xcc,
0xcd, 0xd0, 0xd4, 0xd7, 0xda, 0xda, 0xd8, 0xd6, 0xd6, 0xd6, 0xd5, 0xd9,
0xdd, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdd, 0xdd, 0xde, 0xdf, 0xe6, 0xe9,
0xf2, 0xfe, 0xf3, 0xfc, 0x70, 0x79, 0x7b, 0x6e, 0x67, 0x67, 0x65, 0x5c,
0x58, 0x56, 0x57, 0x56, 0x54, 0x57, 0x52, 0x4f, 0x4e, 0x4b, 0x4a, 0x49,
0x47, 0x48, 0x4c, 0x4f, 0x53, 0x5a, 0x5d, 0x60, 0x67, 0x65, 0x69, 0x6b,
0x70, 0xf9, 0xeb, 0xdf, 0xda, 0xd5, 0xcf, 0xd0, 0xcf, 0xcf, 0xd3, 0xd2,
0xd2, 0xd1, 0xcf, 0xd0, 0xd0, 0xd1, 0xd4, 0xd7, 0xdc, 0xde, 0xdf, 0xe2,
0xe0, 0xdf, 0xdf, 0xe6, 0xe9, 0xe7, 0xec, 0xfc, 0x7b, 0x7c, 0x72, 0x6c,
0x72, 0x7c, 0x75, 0x77, 0xfa, 0x73, 0x6f, 0x6c, 0x64, 0x68, 0x61, 0x62,
0x64, 0x5c, 0x5f, 0x5e, 0x5b, 0x5d, 0x58, 0x57, 0x59, 0x54, 0x56, 0x56,
0x53, 0x53, 0x53, 0x54, 0x57, 0x56, 0x59, 0x5f, 0x61, 0x63, 0x68, 0x6d,
0x71, 0x7e, 0xfc, 0xf5, 0xe7, 0xe4, 0xe2, 0xda, 0xd9, 0xdb, 0xdb, 0xd9,
0xd9, 0xda, 0xd9, 0xd8, 0xd7, 0xd7, 0xda, 0xda, 0xdc, 0xdf, 0xe3, 0xe9,
0xea, 0xef, 0xf6, 0xef, 0xf5, 0x78, 0x79, 0xff, 0x73, 0x70, 0x73, 0x6f,
0x70, 0x6f, 0x74, 0xfc, 0xff, 0xfb, 0xfd, 0x76, 0x79, 0x7b, 0x7a, 0x77,
0x7c, 0x78, 0x6d, 0xf0, 0xf5, 0x64, 0x74, 0x76, 0x65, 0x6e, 0x6b, 0x6a,
0x69, 0x5f, 0x69, 0x67, 0x5f, 0x65, 0x61, 0x61, 0x63, 0x5e, 0x5f, 0x60,
0x5c, 0x5d, 0x5f, 0x61, 0x62, 0x61, 0x68, 0x77, 0x75, 0x6e, 0x7e, 0xfe,
0x77, 0xf8, 0xf7, 0xf4, 0xeb, 0xec, 0xe8, 0xe3, 0xe6, 0xe1, 0xde, 0xe0,
0xde, 0xdd, 0xdf, 0xdd, 0xdf, 0xe0, 0xde, 0xe7, 0xe5, 0xe5, 0xf6, 0xf3,
0xf5, 0xfd, 0x7d, 0x7b, 0xfa, 0x7d, 0x7a, 0x76, 0x76, 0x78, 0x6d, 0xe2,
0xe8, 0x55, 0x6a, 0xea, 0x61, 0x79, 0xf6, 0x6a, 0xfb, 0xfa, 0x79, 0xf5,
0x7e, 0xfe, 0xf6, 0x75, 0x79, 0x7d, 0x79, 0xfe, 0x79, 0x71, 0x75, 0x79,
0x6d, 0x6e, 0x75, 0x6e, 0x6f, 0x69, 0x6d, 0x79, 0x6b, 0x6b, 0x74, 0x70,
0x6f, 0x6f, 0x6c, 0x70, 0x71, 0x71, 0x73, 0x6d, 0x6d, 0x64, 0xfa, 0xee,
0x5a, 0x65, 0x6c, 0x64, 0x7d, 0x6f
};
static InputStream *
generateHelloWorld (void)
{
return _alutInputStreamConstructFromMemory (helloWorldSample,
sizeof (helloWorldSample));
}
ALvoid *
alutLoadMemoryHelloWorld (ALenum *format, ALsizei *size, ALfloat *frequency)
{
if (!_alutSanityCheck ())
{
return NULL;
}
return _alutLoadMemoryFromInputStream (generateHelloWorld (), format, size,
frequency);
}
ALuint
alutCreateBufferHelloWorld (void)
{
if (!_alutSanityCheck ())
{
return AL_NONE;
}
return _alutCreateBufferFromInputStream (generateHelloWorld ());
}
freealut-1.1.0/src/alutLoader.c 0000644 0003730 0000144 00000030053 10427607447 013300 0000000 0000000 #include "alutInternal.h"
#include
/****************************************************************************/
typedef enum
{
LittleEndian,
BigEndian,
UnknwonEndian /* has anybody still a PDP11? :-) */
} Endianess;
/* test from Harbison & Steele, "C - A Reference Manual", section 6.1.2 */
static Endianess
endianess (void)
{
union
{
long l;
char c[sizeof (long)];
} u;
u.l = 1;
return (u.c[0] == 1) ? LittleEndian :
((u.c[sizeof (long) - 1] == 1) ? BigEndian : UnknwonEndian);
}
/****************************************************************************/
static int
safeToLower (int c)
{
return isupper (c) ? tolower (c) : c;
}
static int
hasSuffixIgnoringCase (const char *string, const char *suffix)
{
const char *stringPointer = string;
const char *suffixPointer = suffix;
if (suffix[0] == '\0')
{
return 1;
}
while (*stringPointer != '\0')
{
stringPointer++;
}
while (*suffixPointer != '\0')
{
suffixPointer++;
}
if (stringPointer - string < suffixPointer - suffix)
{
return 0;
}
while (safeToLower (*--suffixPointer) == safeToLower (*--stringPointer))
{
if (suffixPointer == suffix)
{
return 1;
}
}
return 0;
}
static BufferData *
loadWavFile (InputStream *stream)
{
ALboolean found_header = AL_FALSE;
UInt32LittleEndian chunkLength;
Int32BigEndian magic;
UInt16LittleEndian audioFormat;
UInt16LittleEndian numChannels;
UInt32LittleEndian sampleFrequency;
UInt32LittleEndian byteRate;
UInt16LittleEndian blockAlign;
UInt16LittleEndian bitsPerSample;
Codec *codec = _alutCodecLinear;
if (!_alutInputStreamReadUInt32LE (stream, &chunkLength) ||
!_alutInputStreamReadInt32BE (stream, &magic))
{
return NULL;
}
if (magic != 0x57415645) /* "WAVE" */
{
_alutSetError (ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE);
return NULL;
}
while (1)
{
if (!_alutInputStreamReadInt32BE (stream, &magic) ||
!_alutInputStreamReadUInt32LE (stream, &chunkLength))
{
return NULL;
}
if (magic == 0x666d7420) /* "fmt " */
{
found_header = AL_TRUE;
if (chunkLength < 16)
{
_alutSetError (ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA);
return NULL;
}
if (!_alutInputStreamReadUInt16LE (stream, &audioFormat) ||
!_alutInputStreamReadUInt16LE (stream, &numChannels) ||
!_alutInputStreamReadUInt32LE (stream, &sampleFrequency) ||
!_alutInputStreamReadUInt32LE (stream, &byteRate) ||
!_alutInputStreamReadUInt16LE (stream, &blockAlign) ||
!_alutInputStreamReadUInt16LE (stream, &bitsPerSample))
{
return NULL;
}
if (!_alutInputStreamSkip (stream, chunkLength - 16))
{
return NULL;
}
switch (audioFormat)
{
case 1: /* PCM */
codec = (bitsPerSample == 8
|| endianess () ==
LittleEndian) ? _alutCodecLinear : _alutCodecPCM16;
break;
case 7: /* uLaw */
bitsPerSample *= 2; /* ToDo: ??? */
codec = _alutCodecULaw;
break;
default:
_alutSetError (ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE);
return NULL;
}
}
else if (magic == 0x64617461) /* "data" */
{
ALvoid *data;
if (!found_header)
{
/* ToDo: A bit wrong to check here, fmt chunk could come later... */
_alutSetError (ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA);
return NULL;
}
data = _alutInputStreamRead (stream, chunkLength);
if (data == NULL)
{
return NULL;
}
return codec (data, chunkLength, numChannels, bitsPerSample,
(ALfloat) sampleFrequency);
}
else
{
if (!_alutInputStreamSkip (stream, chunkLength))
{
return NULL;
}
}
if ((chunkLength & 1) && !_alutInputStreamEOF (stream)
&& !_alutInputStreamSkip (stream, 1))
{
return NULL;
}
}
}
static BufferData *
loadAUFile (InputStream *stream)
{
Int32BigEndian dataOffset; /* byte offset to data part, minimum 24 */
Int32BigEndian len; /* number of bytes in the data part, -1 = not known */
Int32BigEndian encoding; /* encoding of the data part, see AUEncoding */
Int32BigEndian sampleFrequency; /* number of samples per second */
Int32BigEndian numChannels; /* number of interleaved channels */
size_t length;
Codec *codec;
char *data;
ALint bitsPerSample;
if (!_alutInputStreamReadInt32BE (stream, &dataOffset) ||
!_alutInputStreamReadInt32BE (stream, &len) ||
!_alutInputStreamReadInt32BE (stream, &encoding) ||
!_alutInputStreamReadInt32BE (stream, &sampleFrequency) ||
!_alutInputStreamReadInt32BE (stream, &numChannels))
{
return AL_FALSE;
}
length = (len == -1) ?
(_alutInputStreamGetRemainingLength (stream) - AU_HEADER_SIZE -
dataOffset) : (size_t) len;
if (!
(dataOffset >= AU_HEADER_SIZE && length > 0 && sampleFrequency >= 1
&& numChannels >= 1))
{
_alutSetError (ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA);
return AL_FALSE;
}
if (!_alutInputStreamSkip (stream, dataOffset - AU_HEADER_SIZE))
{
return AL_FALSE;
}
switch (encoding)
{
case AU_ULAW_8:
bitsPerSample = 16;
codec = _alutCodecULaw;
break;
case AU_PCM_8:
bitsPerSample = 8;
codec = _alutCodecPCM8s;
break;
case AU_PCM_16:
bitsPerSample = 16;
codec =
(endianess () == BigEndian) ? _alutCodecLinear : _alutCodecPCM16;
break;
case AU_ALAW_8:
bitsPerSample = 16;
codec = _alutCodecALaw;
break;
default:
_alutSetError (ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE);
return AL_FALSE;
}
data = _alutInputStreamRead (stream, length);
if (data == NULL)
{
return NULL;
}
return codec (data, length, numChannels, bitsPerSample,
(ALfloat) sampleFrequency);
}
static BufferData *
loadRawFile (InputStream *stream)
{
size_t length = _alutInputStreamGetRemainingLength (stream);
ALvoid *data = _alutInputStreamRead (stream, length);
if (data == NULL)
{
return NULL;
}
/* Guesses */
return _alutCodecLinear (data, length, 1, 8, 8000);
}
static BufferData *
loadFile (InputStream *stream)
{
const char *fileName;
Int32BigEndian magic;
/* Raw files have no magic number - so use the fileName extension */
fileName = _alutInputStreamGetFileName (stream);
if (fileName != NULL && hasSuffixIgnoringCase (fileName, ".raw"))
{
return loadRawFile (stream);
}
/* For other file formats, read the quasi-standard four byte magic number */
if (!_alutInputStreamReadInt32BE (stream, &magic))
{
return AL_FALSE;
}
/* Magic number 'RIFF' == Microsoft '.wav' format */
if (magic == 0x52494646)
{
return loadWavFile (stream);
}
/* Magic number '.snd' == Sun & Next's '.au' format */
if (magic == 0x2E736E64)
{
return loadAUFile (stream);
}
_alutSetError (ALUT_ERROR_UNSUPPORTED_FILE_TYPE);
return AL_FALSE;
}
ALuint
_alutCreateBufferFromInputStream (InputStream *stream)
{
BufferData *bufferData;
ALuint buffer;
if (stream == NULL)
{
return AL_NONE;
}
bufferData = loadFile (stream);
_alutInputStreamDestroy (stream);
if (bufferData == NULL)
{
return AL_NONE;
}
buffer = _alutPassBufferData (bufferData);
_alutBufferDataDestroy (bufferData);
return buffer;
}
ALuint
alutCreateBufferFromFile (const char *fileName)
{
InputStream *stream;
if (!_alutSanityCheck ())
{
return AL_NONE;
}
stream = _alutInputStreamConstructFromFile (fileName);
return _alutCreateBufferFromInputStream (stream);
}
ALuint
alutCreateBufferFromFileImage (const ALvoid *data, ALsizei length)
{
InputStream *stream;
if (!_alutSanityCheck ())
{
return AL_NONE;
}
stream = _alutInputStreamConstructFromMemory (data, length);
return _alutCreateBufferFromInputStream (stream);
}
void *
_alutLoadMemoryFromInputStream (InputStream *stream, ALenum *format,
ALsizei *size, ALfloat *frequency)
{
BufferData *bufferData;
ALenum fmt;
void *data;
if (stream == NULL)
{
return NULL;
}
bufferData = loadFile (stream);
if (bufferData == NULL)
{
_alutInputStreamDestroy (stream);
return NULL;
}
_alutInputStreamDestroy (stream);
if (!_alutGetFormat (bufferData, &fmt))
{
_alutBufferDataDestroy (bufferData);
return NULL;
}
if (size != NULL)
{
*size = (ALsizei) _alutBufferDataGetLength (bufferData);
}
if (format != NULL)
{
*format = fmt;
}
if (frequency != NULL)
{
*frequency = _alutBufferDataGetSampleFrequency (bufferData);
}
data = _alutBufferDataGetData (bufferData);
_alutBufferDataDetachData (bufferData);
_alutBufferDataDestroy (bufferData);
return data;
}
ALvoid *
alutLoadMemoryFromFile (const char *fileName, ALenum *format,
ALsizei *size, ALfloat *frequency)
{
InputStream *stream;
if (!_alutSanityCheck ())
{
return NULL;
}
stream = _alutInputStreamConstructFromFile (fileName);
return _alutLoadMemoryFromInputStream (stream, format, size, frequency);
}
ALvoid *
alutLoadMemoryFromFileImage (const ALvoid *data, ALsizei length,
ALenum *format, ALsizei *size,
ALfloat *frequency)
{
InputStream *stream;
if (!_alutSanityCheck ())
{
return NULL;
}
stream = _alutInputStreamConstructFromMemory (data, length);
return _alutLoadMemoryFromInputStream (stream, format, size, frequency);
}
/*
Yukky backwards compatibility crap.
*/
void
alutLoadWAVFile (ALbyte *fileName, ALenum *format, void **data, ALsizei *size,
ALsizei *frequency
#if !defined(__APPLE__)
, ALboolean *loop
#endif
)
{
InputStream *stream;
ALfloat freq;
/* Don't do an _alutSanityCheck () because it's not required in ALUT 0.x.x */
stream = _alutInputStreamConstructFromFile (fileName);
*data = _alutLoadMemoryFromInputStream (stream, format, size, &freq);
if (*data == NULL)
{
return;
}
if (frequency)
{
*frequency = (ALsizei) freq;
}
#if !defined(__APPLE__)
if (loop)
{
*loop = AL_FALSE;
}
#endif
}
void
alutLoadWAVMemory (ALbyte *buffer, ALenum *format, void **data, ALsizei *size,
ALsizei *frequency
#if !defined(__APPLE__)
, ALboolean *loop
#endif
)
{
InputStream *stream;
ALfloat freq;
/* Don't do an _alutSanityCheck () because it's not required in ALUT 0.x.x */
/* ToDo: Can we do something less insane than passing 0x7FFFFFFF? */
stream = _alutInputStreamConstructFromMemory (buffer, 0x7FFFFFFF);
_alutLoadMemoryFromInputStream (stream, format, size, &freq);
if (*data == NULL)
{
return;
}
if (frequency)
{
*frequency = (ALsizei) freq;
}
#if !defined(__APPLE__)
if (loop)
{
*loop = AL_FALSE;
}
#endif
}
void
alutUnloadWAV (ALenum UNUSED (format), ALvoid *data, ALsizei UNUSED (size),
ALsizei UNUSED (frequency))
{
/* Don't do an _alutSanityCheck () because it's not required in ALUT 0.x.x */
free (data);
}
const char *
alutGetMIMETypes (ALenum loader)
{
if (!_alutSanityCheck ())
{
return NULL;
}
/* We do not distinguish the loaders yet... */
switch (loader)
{
case ALUT_LOADER_BUFFER:
return "audio/basic,audio/x-raw,audio/x-wav";
case ALUT_LOADER_MEMORY:
return "audio/basic,audio/x-raw,audio/x-wav";
default:
_alutSetError (ALUT_ERROR_INVALID_ENUM);
return NULL;
}
}
freealut-1.1.0/src/alutInit.c 0000644 0003730 0000144 00000006440 10427607447 013000 0000000 0000000 #include "alutInternal.h"
static enum
{
Unintialized, /* ALUT has not been initialized yet or has been de-initialised */
ALUTDeviceAndContext, /* alutInit has been called successfully */
ExternalDeviceAndContext /* alutInitWithoutContext has been called */
} initialisationState = Unintialized;
/*
* Note: alutContext contains something valid only when initialisationState
* contains ALUTDeviceAndContext.
*/
static ALCcontext *alutContext;
ALboolean
_alutSanityCheck (void)
{
ALCcontext *context;
if (initialisationState == Unintialized)
{
_alutSetError (ALUT_ERROR_INVALID_OPERATION);
return AL_FALSE;
}
context = alcGetCurrentContext ();
if (context == NULL)
{
_alutSetError (ALUT_ERROR_NO_CURRENT_CONTEXT);
return AL_FALSE;
}
if (alGetError () != AL_NO_ERROR)
{
_alutSetError (ALUT_ERROR_AL_ERROR_ON_ENTRY);
return AL_FALSE;
}
if (alcGetError (alcGetContextsDevice (context)) != ALC_NO_ERROR)
{
_alutSetError (ALUT_ERROR_ALC_ERROR_ON_ENTRY);
return AL_FALSE;
}
return AL_TRUE;
}
ALboolean
alutInit (int *argcp, char **argv)
{
ALCdevice *device;
ALCcontext *context;
if (initialisationState != Unintialized)
{
_alutSetError (ALUT_ERROR_INVALID_OPERATION);
return AL_FALSE;
}
if ((argcp == NULL) != (argv == NULL))
{
_alutSetError (ALUT_ERROR_INVALID_VALUE);
return AL_FALSE;
}
device = alcOpenDevice (NULL);
if (device == NULL)
{
_alutSetError (ALUT_ERROR_OPEN_DEVICE);
return AL_FALSE;
}
context = alcCreateContext (device, NULL);
if (context == NULL)
{
alcCloseDevice (device);
_alutSetError (ALUT_ERROR_CREATE_CONTEXT);
return AL_FALSE;
}
if (!alcMakeContextCurrent (context))
{
alcDestroyContext (context);
alcCloseDevice (device);
_alutSetError (ALUT_ERROR_MAKE_CONTEXT_CURRENT);
return AL_FALSE;
}
initialisationState = ALUTDeviceAndContext;
alutContext = context;
return AL_TRUE;
}
ALboolean
alutInitWithoutContext (int *argcp, char **argv)
{
if (initialisationState != Unintialized)
{
_alutSetError (ALUT_ERROR_INVALID_OPERATION);
return AL_FALSE;
}
if ((argcp == NULL) != (argv == NULL))
{
_alutSetError (ALUT_ERROR_INVALID_VALUE);
return AL_FALSE;
}
initialisationState = ExternalDeviceAndContext;
return AL_TRUE;
}
ALboolean
alutExit (void)
{
ALCdevice *device;
if (initialisationState == Unintialized)
{
_alutSetError (ALUT_ERROR_INVALID_OPERATION);
return AL_FALSE;
}
if (initialisationState == ExternalDeviceAndContext)
{
initialisationState = Unintialized;
return AL_TRUE;
}
if (!_alutSanityCheck ())
{
return AL_FALSE;
}
if (!alcMakeContextCurrent (NULL))
{
_alutSetError (ALUT_ERROR_MAKE_CONTEXT_CURRENT);
return AL_FALSE;
}
device = alcGetContextsDevice (alutContext);
alcDestroyContext (alutContext);
if (alcGetError (device) != ALC_NO_ERROR)
{
_alutSetError (ALUT_ERROR_DESTROY_CONTEXT);
return AL_FALSE;
}
if (!alcCloseDevice (device))
{
_alutSetError (ALUT_ERROR_CLOSE_DEVICE);
return AL_FALSE;
}
initialisationState = Unintialized;
return AL_TRUE;
}
freealut-1.1.0/src/README 0000644 0003730 0000144 00000001237 10427607447 011722 0000000 0000000 The files in this directory contain the code of the ALUT library. They typically
compile to make 'libalut.so' on *nix platforms or to 'alut.dll' for Windows
platforms.
There is also a header file 'alut.h' in ../include/AL which gets installed into
$(includedir)/AL/alut.h on *nix platforms and someplace else entirely on
Windows platforms.
The file 'helloworld.wav' is the original voice recording of Steve Baker saying
this immortal phrase. It is converted into a large hexadecimal data block inside
alutWaveform.c - but this file is retained in version control just in case
anyone ever feels like re-doing it. The format is 16bit PCM, 1 channel, 44.1kHz
sample rate.
freealut-1.1.0/src/alutBufferData.c 0000644 0003730 0000144 00000006055 10427607447 014102 0000000 0000000 #include "alutInternal.h"
struct BufferData_struct
{
ALvoid *data;
size_t length;
ALint numChannels;
ALint bitsPerSample;
ALfloat sampleFrequency;
};
BufferData *
_alutBufferDataConstruct (ALvoid *data, size_t length, ALint numChannels,
ALint bitsPerSample, ALfloat sampleFrequency)
{
BufferData *bufferData = (BufferData *) _alutMalloc (sizeof (BufferData));
if (bufferData == NULL)
{
return NULL;
}
bufferData->data = data;
bufferData->length = length;
bufferData->numChannels = numChannels;
bufferData->bitsPerSample = bitsPerSample;
bufferData->sampleFrequency = sampleFrequency;
return bufferData;
}
ALboolean
_alutBufferDataDestroy (BufferData *bufferData)
{
if (bufferData->data != NULL)
{
free (bufferData->data);
}
free (bufferData);
return AL_TRUE;
}
ALvoid *
_alutBufferDataGetData (const BufferData *bufferData)
{
return bufferData->data;
}
void
_alutBufferDataDetachData (BufferData *bufferData)
{
bufferData->data = NULL;
}
size_t
_alutBufferDataGetLength (const BufferData *bufferData)
{
return bufferData->length;
}
static ALint
getNumChannels (const BufferData *bufferData)
{
return bufferData->numChannels;
}
static ALint
getBitsPerSample (const BufferData *bufferData)
{
return bufferData->bitsPerSample;
}
ALfloat
_alutBufferDataGetSampleFrequency (const BufferData *bufferData)
{
return bufferData->sampleFrequency;
}
/****************************************************************************
* The utility functions below do not know the internal BufferData
* representation.
****************************************************************************/
ALboolean
_alutGetFormat (const BufferData *bufferData, ALenum *format)
{
if (!_alutFormatConstruct
(getNumChannels (bufferData), getBitsPerSample (bufferData), format))
{
_alutSetError (ALUT_ERROR_UNSUPPORTED_FILE_SUBTYPE);
return AL_FALSE;
}
return AL_TRUE;
}
static ALuint
generateBuffer (void)
{
ALuint buffer;
alGenBuffers (1, &buffer);
if (alGetError () != AL_NO_ERROR)
{
_alutSetError (ALUT_ERROR_GEN_BUFFERS);
return AL_NONE;
}
return buffer;
}
static ALboolean
passBufferData (BufferData *bufferData, ALuint bid)
{
ALenum format;
size_t size;
ALfloat frequency;
if (!_alutGetFormat (bufferData, &format))
{
return AL_FALSE;
}
/* GCC is a bit picky about casting function calls, so we do it in two
steps... */
size = _alutBufferDataGetLength (bufferData);
frequency = _alutBufferDataGetSampleFrequency (bufferData);
alBufferData (bid, format, _alutBufferDataGetData (bufferData),
(ALsizei) size, (ALsizei) frequency);
if (alGetError () != AL_NO_ERROR)
{
_alutSetError (ALUT_ERROR_BUFFER_DATA);
return AL_FALSE;
}
return AL_TRUE;
}
ALuint
_alutPassBufferData (BufferData *bufferData)
{
ALuint buffer = generateBuffer ();
if (buffer == AL_NONE)
{
return AL_NONE;
}
if (!passBufferData (bufferData, buffer))
{
return AL_NONE;
}
return buffer;
}
freealut-1.1.0/src/alutUtil.c 0000644 0003730 0000144 00000005526 10427607447 013016 0000000 0000000 #include "alutInternal.h"
#if HAVE_NANOSLEEP && HAVE_TIME_H
#include
#include
#elif HAVE_USLEEP && HAVE_UNISTD_H
#include
#elif HAVE_SLEEP && HAVE_WINDOWS_H
#include
#else
#error No way to sleep on this platform
#endif
ALboolean
alutSleep (ALfloat duration)
{
if (duration < 0)
{
_alutSetError (ALUT_ERROR_INVALID_VALUE);
return AL_FALSE;
}
{
ALuint seconds = (ALuint) duration;
ALfloat rest = duration - (ALfloat) seconds;
#if HAVE_NANOSLEEP && HAVE_TIME_H
ALuint microSecs = (ALuint) (rest * 1000000);
struct timespec t, remainingTime;
t.tv_sec = (time_t) seconds;
t.tv_nsec = ((long) microSecs) * 1000;
/* At least the interaction of nanosleep and signals is specified! */
while (nanosleep (&t, &remainingTime) < 0)
{
if (errno != EINTR)
{
return AL_FALSE;
}
/* If we received a signal, let's try again with the remaining time. */
t.tv_sec = remainingTime.tv_sec;
t.tv_nsec = remainingTime.tv_nsec;
}
#elif HAVE_USLEEP && HAVE_UNISTD_H
while (seconds > 0)
{
usleep (1000000);
seconds--;
}
usleep ((unsigned int) (rest * 1000000));
#elif HAVE_SLEEP && HAVE_WINDOWS_H
while (seconds > 0)
{
Sleep (1000);
seconds--;
}
Sleep ((DWORD) (rest * 1000));
#endif
}
return AL_TRUE;
}
ALvoid *
_alutMalloc (size_t size)
{
ALvoid *ptr = malloc (size == 0 ? 1 : size);
if (ptr == NULL)
{
_alutSetError (ALUT_ERROR_OUT_OF_MEMORY);
}
return ptr;
}
ALboolean
_alutFormatConstruct (ALint numChannels, ALint bitsPerSample, ALenum *format)
{
switch (numChannels)
{
case 1:
switch (bitsPerSample)
{
case 8:
*format = AL_FORMAT_MONO8;
return AL_TRUE;
case 16:
*format = AL_FORMAT_MONO16;
return AL_TRUE;
}
break;
case 2:
switch (bitsPerSample)
{
case 8:
*format = AL_FORMAT_STEREO8;
return AL_TRUE;
case 16:
*format = AL_FORMAT_STEREO16;
return AL_TRUE;
}
break;
}
return AL_FALSE;
}
ALboolean
_alutFormatGetNumChannels (ALenum format, ALint *numChannels)
{
switch (format)
{
case AL_FORMAT_MONO8:
case AL_FORMAT_MONO16:
*numChannels = 1;
return AL_TRUE;
case AL_FORMAT_STEREO8:
case AL_FORMAT_STEREO16:
*numChannels = 2;
return AL_TRUE;
}
return AL_FALSE;
}
ALboolean
_alutFormatGetBitsPerSample (ALenum format, ALint *bitsPerSample)
{
switch (format)
{
case AL_FORMAT_MONO8:
case AL_FORMAT_STEREO8:
*bitsPerSample = 8;
return AL_TRUE;
case AL_FORMAT_MONO16:
case AL_FORMAT_STEREO16:
*bitsPerSample = 16;
return AL_TRUE;
}
return AL_FALSE;
}
freealut-1.1.0/src/alutOutputStream.c 0000644 0003730 0000144 00000004452 10427607447 014552 0000000 0000000 #include "alutInternal.h"
#include
struct OutputStream_struct
{
char *data;
char *current;
size_t maximumLength;
};
/****************************************************************************
* The functions below know the internal OutputStream representation.
****************************************************************************/
OutputStream *
_alutOutputStreamConstruct (size_t maximumLength)
{
OutputStream *stream = (OutputStream *) _alutMalloc (sizeof (OutputStream));
if (stream == NULL)
{
return NULL;
}
stream->data = _alutMalloc (maximumLength);
if (stream->data == NULL)
{
free (stream);
return NULL;
}
stream->current = stream->data;
stream->maximumLength = maximumLength;
return stream;
}
ALboolean
_alutOutputStreamDestroy (OutputStream *stream)
{
free (stream->data);
free (stream);
return AL_TRUE;
}
void *
_alutOutputStreamGetData (OutputStream *stream)
{
return stream->data;
}
size_t
_alutOutputStreamGetLength (OutputStream *stream)
{
return stream->current - stream->data;
}
static ALboolean
streamWrite (OutputStream *stream, const void *ptr, size_t numBytesToWrite)
{
size_t remainingLength =
stream->maximumLength - _alutOutputStreamGetLength (stream);
if (remainingLength < numBytesToWrite)
{
/* this should never happen within our library */
_alutSetError (ALUT_ERROR_IO_ERROR);
return AL_FALSE;
}
memcpy (stream->current, ptr, numBytesToWrite);
stream->current += numBytesToWrite;
return AL_TRUE;
}
/****************************************************************************
* The utility functions below do not know the internal OutputStream
* representation.
****************************************************************************/
ALboolean
_alutOutputStreamWriteInt16BE (OutputStream *stream, Int16BigEndian value)
{
unsigned char buf[2];
buf[0] = (unsigned char) (value >> 8);
buf[1] = (unsigned char) value;
return streamWrite (stream, buf, 2);
}
ALboolean
_alutOutputStreamWriteInt32BE (OutputStream *stream, Int32BigEndian value)
{
unsigned char buf[4];
buf[0] = (unsigned char) (value >> 24);
buf[1] = (unsigned char) (value >> 16);
buf[2] = (unsigned char) (value >> 8);
buf[3] = (unsigned char) value;
return streamWrite (stream, buf, 4);
}
freealut-1.1.0/src/Makefile.am 0000644 0003730 0000144 00000001706 10427607447 013077 0000000 0000000 # The following files should be in our source distribution in addition to the
# standard ones included by automake itself:
EXTRA_DIST = helloworld.wav README
# We want to build a libalut library with libtool.
lib_LTLIBRARIES = libalut.la
# libalut consists of the followin sources and internal headers:
libalut_la_SOURCES = \
alutBufferData.c \
alutCodec.c \
alutError.c \
alutInit.c \
alutInputStream.c \
alutInternal.h \
alutLoader.c \
alutOutputStream.c \
alutUtil.c \
alutVersion.c \
alutWaveform.c
# We use sin and floor, so we might need -lm, autoconf takes care of this.
libalut_la_LIBADD = $(LIBM)
# The following libtool flag is neccessary for building DLLs on Windows.
libalut_la_LDFLAGS = -no-undefined
# Append -version-info for correct library versioning with libtool.
libalut_la_LDFLAGS += -version-info @VERSIONINFO@
# Specifying the following path is needed to find .
libalut_la_CPPFLAGS = -I$(top_srcdir)/include
freealut-1.1.0/src/Makefile.in 0000644 0003730 0000144 00000064645 10434325076 013114 0000000 0000000 # Makefile.in generated by automake 1.9.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
SOURCES = $(libalut_la_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = src
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = \
$(top_srcdir)/admin/autotools/m4/alut_c__attribute.m4 \
$(top_srcdir)/admin/autotools/m4/alut_check_cflags_wall.m4 \
$(top_srcdir)/admin/autotools/m4/alut_check_flag.m4 \
$(top_srcdir)/admin/autotools/m4/alut_check_func.m4 \
$(top_srcdir)/admin/autotools/m4/alut_eval_stderr.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(libdir)"
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
am__DEPENDENCIES_1 =
libalut_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_libalut_la_OBJECTS = libalut_la-alutBufferData.lo \
libalut_la-alutCodec.lo libalut_la-alutError.lo \
libalut_la-alutInit.lo libalut_la-alutInputStream.lo \
libalut_la-alutLoader.lo libalut_la-alutOutputStream.lo \
libalut_la-alutUtil.lo libalut_la-alutVersion.lo \
libalut_la-alutWaveform.lo
libalut_la_OBJECTS = $(am_libalut_la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/admin/autotools/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libalut_la_SOURCES)
DIST_SOURCES = $(libalut_la_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBM = @LIBM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_DEPS = @LIBTOOL_DEPS@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSIONINFO = @VERSIONINFO@
WNO_DEPRECATED_DECLARATIONS_FALSE = @WNO_DEPRECATED_DECLARATIONS_FALSE@
WNO_DEPRECATED_DECLARATIONS_TRUE = @WNO_DEPRECATED_DECLARATIONS_TRUE@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
# The following files should be in our source distribution in addition to the
# standard ones included by automake itself:
EXTRA_DIST = helloworld.wav README
# We want to build a libalut library with libtool.
lib_LTLIBRARIES = libalut.la
# libalut consists of the followin sources and internal headers:
libalut_la_SOURCES = \
alutBufferData.c \
alutCodec.c \
alutError.c \
alutInit.c \
alutInputStream.c \
alutInternal.h \
alutLoader.c \
alutOutputStream.c \
alutUtil.c \
alutVersion.c \
alutWaveform.c
# We use sin and floor, so we might need -lm, autoconf takes care of this.
libalut_la_LIBADD = $(LIBM)
# The following libtool flag is neccessary for building DLLs on Windows.
# Append -version-info for correct library versioning with libtool.
libalut_la_LDFLAGS = -no-undefined -version-info @VERSIONINFO@
# Specifying the following path is needed to find .
libalut_la_CPPFLAGS = -I$(top_srcdir)/include
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
libalut.la: $(libalut_la_OBJECTS) $(libalut_la_DEPENDENCIES)
$(LINK) -rpath $(libdir) $(libalut_la_LDFLAGS) $(libalut_la_OBJECTS) $(libalut_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutBufferData.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutCodec.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutError.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutInit.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutInputStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutLoader.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutOutputStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutUtil.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutVersion.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libalut_la-alutWaveform.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
libalut_la-alutBufferData.lo: alutBufferData.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutBufferData.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutBufferData.Tpo" -c -o libalut_la-alutBufferData.lo `test -f 'alutBufferData.c' || echo '$(srcdir)/'`alutBufferData.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutBufferData.Tpo" "$(DEPDIR)/libalut_la-alutBufferData.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutBufferData.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutBufferData.c' object='libalut_la-alutBufferData.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutBufferData.lo `test -f 'alutBufferData.c' || echo '$(srcdir)/'`alutBufferData.c
libalut_la-alutCodec.lo: alutCodec.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutCodec.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutCodec.Tpo" -c -o libalut_la-alutCodec.lo `test -f 'alutCodec.c' || echo '$(srcdir)/'`alutCodec.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutCodec.Tpo" "$(DEPDIR)/libalut_la-alutCodec.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutCodec.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutCodec.c' object='libalut_la-alutCodec.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutCodec.lo `test -f 'alutCodec.c' || echo '$(srcdir)/'`alutCodec.c
libalut_la-alutError.lo: alutError.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutError.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutError.Tpo" -c -o libalut_la-alutError.lo `test -f 'alutError.c' || echo '$(srcdir)/'`alutError.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutError.Tpo" "$(DEPDIR)/libalut_la-alutError.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutError.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutError.c' object='libalut_la-alutError.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutError.lo `test -f 'alutError.c' || echo '$(srcdir)/'`alutError.c
libalut_la-alutInit.lo: alutInit.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutInit.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutInit.Tpo" -c -o libalut_la-alutInit.lo `test -f 'alutInit.c' || echo '$(srcdir)/'`alutInit.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutInit.Tpo" "$(DEPDIR)/libalut_la-alutInit.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutInit.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutInit.c' object='libalut_la-alutInit.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutInit.lo `test -f 'alutInit.c' || echo '$(srcdir)/'`alutInit.c
libalut_la-alutInputStream.lo: alutInputStream.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutInputStream.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutInputStream.Tpo" -c -o libalut_la-alutInputStream.lo `test -f 'alutInputStream.c' || echo '$(srcdir)/'`alutInputStream.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutInputStream.Tpo" "$(DEPDIR)/libalut_la-alutInputStream.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutInputStream.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutInputStream.c' object='libalut_la-alutInputStream.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutInputStream.lo `test -f 'alutInputStream.c' || echo '$(srcdir)/'`alutInputStream.c
libalut_la-alutLoader.lo: alutLoader.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutLoader.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutLoader.Tpo" -c -o libalut_la-alutLoader.lo `test -f 'alutLoader.c' || echo '$(srcdir)/'`alutLoader.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutLoader.Tpo" "$(DEPDIR)/libalut_la-alutLoader.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutLoader.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutLoader.c' object='libalut_la-alutLoader.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutLoader.lo `test -f 'alutLoader.c' || echo '$(srcdir)/'`alutLoader.c
libalut_la-alutOutputStream.lo: alutOutputStream.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutOutputStream.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutOutputStream.Tpo" -c -o libalut_la-alutOutputStream.lo `test -f 'alutOutputStream.c' || echo '$(srcdir)/'`alutOutputStream.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutOutputStream.Tpo" "$(DEPDIR)/libalut_la-alutOutputStream.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutOutputStream.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutOutputStream.c' object='libalut_la-alutOutputStream.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutOutputStream.lo `test -f 'alutOutputStream.c' || echo '$(srcdir)/'`alutOutputStream.c
libalut_la-alutUtil.lo: alutUtil.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutUtil.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutUtil.Tpo" -c -o libalut_la-alutUtil.lo `test -f 'alutUtil.c' || echo '$(srcdir)/'`alutUtil.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutUtil.Tpo" "$(DEPDIR)/libalut_la-alutUtil.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutUtil.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutUtil.c' object='libalut_la-alutUtil.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutUtil.lo `test -f 'alutUtil.c' || echo '$(srcdir)/'`alutUtil.c
libalut_la-alutVersion.lo: alutVersion.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutVersion.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutVersion.Tpo" -c -o libalut_la-alutVersion.lo `test -f 'alutVersion.c' || echo '$(srcdir)/'`alutVersion.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutVersion.Tpo" "$(DEPDIR)/libalut_la-alutVersion.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutVersion.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutVersion.c' object='libalut_la-alutVersion.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutVersion.lo `test -f 'alutVersion.c' || echo '$(srcdir)/'`alutVersion.c
libalut_la-alutWaveform.lo: alutWaveform.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libalut_la-alutWaveform.lo -MD -MP -MF "$(DEPDIR)/libalut_la-alutWaveform.Tpo" -c -o libalut_la-alutWaveform.lo `test -f 'alutWaveform.c' || echo '$(srcdir)/'`alutWaveform.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libalut_la-alutWaveform.Tpo" "$(DEPDIR)/libalut_la-alutWaveform.Plo"; else rm -f "$(DEPDIR)/libalut_la-alutWaveform.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alutWaveform.c' object='libalut_la-alutWaveform.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libalut_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libalut_la-alutWaveform.lo `test -f 'alutWaveform.c' || echo '$(srcdir)/'`alutWaveform.c
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES)
installdirs:
for dir in "$(DESTDIR)$(libdir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am: install-libLTLIBRARIES
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libLTLIBRARIES clean-libtool ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-exec \
install-exec-am install-info install-info-am \
install-libLTLIBRARIES install-man install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-info-am \
uninstall-libLTLIBRARIES
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
freealut-1.1.0/src/alutCodec.c 0000644 0003730 0000144 00000006452 10427607447 013115 0000000 0000000 #include "alutInternal.h"
ALvoid *
_alutCodecLinear (ALvoid *data, size_t length, ALint numChannels,
ALint bitsPerSample, ALfloat sampleFrequency)
{
return _alutBufferDataConstruct (data, length, numChannels, bitsPerSample,
sampleFrequency);
}
ALvoid *
_alutCodecPCM8s (ALvoid *data, size_t length, ALint numChannels,
ALint bitsPerSample, ALfloat sampleFrequency)
{
int8_t *d = (int8_t *) data;
size_t i;
for (i = 0; i < length; i++)
{
d[i] += (int8_t) 128;
}
return _alutBufferDataConstruct (data, length, numChannels, bitsPerSample,
sampleFrequency);
}
ALvoid *
_alutCodecPCM16 (ALvoid *data, size_t length, ALint numChannels,
ALint bitsPerSample, ALfloat sampleFrequency)
{
int16_t *d = (int16_t *) data;
size_t i, l = length / 2;
for (i = 0; i < l; i++)
{
int16_t x = d[i];
d[i] = ((x << 8) & 0xFF00) | ((x >> 8) & 0x00FF);
}
return _alutBufferDataConstruct (data, length, numChannels, bitsPerSample,
sampleFrequency);
}
/*
* From: http://www.multimedia.cx/simpleaudio.html#tth_sEc6.1
*/
static int16_t
mulaw2linear (uint8_t mulawbyte)
{
static const int16_t exp_lut[8] = {
0, 132, 396, 924, 1980, 4092, 8316, 16764
};
int16_t sign, exponent, mantissa, sample;
mulawbyte = ~mulawbyte;
sign = (mulawbyte & 0x80);
exponent = (mulawbyte >> 4) & 0x07;
mantissa = mulawbyte & 0x0F;
sample = exp_lut[exponent] + (mantissa << (exponent + 3));
if (sign != 0)
{
sample = -sample;
}
return sample;
}
ALvoid *
_alutCodecULaw (ALvoid *data, size_t length, ALint numChannels,
ALint bitsPerSample, ALfloat sampleFrequency)
{
uint8_t *d = (uint8_t *) data;
int16_t *buf = (int16_t *) _alutMalloc (length * 2);
size_t i;
if (buf == NULL)
{
return NULL;
}
for (i = 0; i < length; i++)
{
buf[i] = mulaw2linear (d[i]);
}
free (data);
return _alutBufferDataConstruct (buf, length * 2, numChannels,
bitsPerSample, sampleFrequency);
}
/*
* From: http://www.multimedia.cx/simpleaudio.html#tth_sEc6.1
*/
#define SIGN_BIT (0x80) /* Sign bit for a A-law byte. */
#define QUANT_MASK (0xf) /* Quantization field mask. */
#define SEG_SHIFT (4) /* Left shift for segment number. */
#define SEG_MASK (0x70) /* Segment field mask. */
static int16_t
alaw2linear (uint8_t a_val)
{
int16_t t, seg;
a_val ^= 0x55;
t = (a_val & QUANT_MASK) << 4;
seg = ((int16_t) a_val & SEG_MASK) >> SEG_SHIFT;
switch (seg)
{
case 0:
t += 8;
break;
case 1:
t += 0x108;
break;
default:
t += 0x108;
t <<= seg - 1;
}
return (a_val & SIGN_BIT) ? t : -t;
}
ALvoid *
_alutCodecALaw (ALvoid *data, size_t length, ALint numChannels,
ALint bitsPerSample, ALfloat sampleFrequency)
{
uint8_t *d = (uint8_t *) data;
int16_t *buf = (int16_t *) _alutMalloc (length * 2);
size_t i;
if (buf == NULL)
{
return NULL;
}
for (i = 0; i < length; i++)
{
buf[i] = alaw2linear (d[i]);
}
free (data);
return _alutBufferDataConstruct (buf, length * 2, numChannels,
bitsPerSample, sampleFrequency);
}
freealut-1.1.0/src/alutInputStream.c 0000644 0003730 0000144 00000013100 10427607447 014337 0000000 0000000 #include "alutInternal.h"
#include
#include
#include
#include
#if HAVE_STAT
#if HAVE_UNISTD_H
#include
#endif
#define structStat struct stat
#elif HAVE__STAT
#define stat(p,b) _stat((p),(b))
#define structStat struct _stat
#else
#error No stat-like function on this platform
#endif
struct InputStream_struct
{
ALboolean isFileStream;
char *fileName;
size_t remainingLength;
union
{
FILE *fileDescriptor; /* for file streams */
const ALvoid *data; /* for memory streams */
} u;
};
/****************************************************************************
* The functions below know the internal InputStream representation.
****************************************************************************/
InputStream *
_alutInputStreamConstructFromFile (const char *fileName)
{
InputStream *stream;
structStat statBuf;
FILE *fileDescriptor;
char *fileNameBuffer;
stream = (InputStream *) _alutMalloc (sizeof (InputStream));
if (stream == NULL)
{
return NULL;
}
if (stat (fileName, &statBuf))
{
_alutSetError (ALUT_ERROR_IO_ERROR);
free (stream);
return NULL;
}
fileDescriptor = fopen (fileName, "rb");
if (fileDescriptor == NULL)
{
_alutSetError (ALUT_ERROR_IO_ERROR);
free (stream);
return NULL;
}
fileNameBuffer = (char *) _alutMalloc (strlen (fileName) + 1);
if (fileNameBuffer == NULL)
{
free (stream);
return NULL;
}
stream->isFileStream = AL_TRUE;
stream->fileName = strcpy (fileNameBuffer, fileName);
stream->remainingLength = statBuf.st_size;
stream->u.fileDescriptor = fileDescriptor;
return stream;
}
InputStream *
_alutInputStreamConstructFromMemory (const ALvoid *data, size_t length)
{
InputStream *stream = (InputStream *) _alutMalloc (sizeof (InputStream));
if (stream == NULL)
{
return NULL;
}
stream->isFileStream = AL_FALSE;
stream->fileName = NULL;
stream->remainingLength = length;
stream->u.data = data;
return stream;
}
ALboolean
_alutInputStreamDestroy (InputStream *stream)
{
ALboolean status =
(stream->isFileStream && fclose (stream->u.fileDescriptor)) ?
AL_FALSE : AL_TRUE;
if (stream->fileName)
{
free (stream->fileName);
}
free (stream);
return status;
}
const char *
_alutInputStreamGetFileName (const InputStream *stream)
{
return stream->fileName;
}
size_t
_alutInputStreamGetRemainingLength (const InputStream *stream)
{
return stream->remainingLength;
}
ALboolean
_alutInputStreamEOF (InputStream *stream)
{
if (stream->isFileStream)
{
int c = fgetc (stream->u.fileDescriptor);
if (c != EOF)
{
ungetc (c, stream->u.fileDescriptor);
}
return (c == EOF) ? AL_TRUE : AL_FALSE;
}
else
{
return (stream->remainingLength == 0) ? AL_TRUE : AL_FALSE;
}
}
static ALboolean
streamRead (InputStream *stream, void *ptr, size_t numBytesToRead)
{
if (stream->isFileStream)
{
size_t numBytesRead =
fread (ptr, 1, numBytesToRead, stream->u.fileDescriptor);
if (numBytesToRead != numBytesRead)
{
_alutSetError (ferror (stream->u.fileDescriptor) ?
ALUT_ERROR_IO_ERROR :
ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA);
return AL_FALSE;
}
return AL_TRUE;
}
else
{
if (stream->remainingLength < numBytesToRead)
{
_alutSetError (ALUT_ERROR_CORRUPT_OR_TRUNCATED_DATA);
return AL_FALSE;
}
memcpy (ptr, stream->u.data, numBytesToRead);
stream->u.data = ((const char *) (stream->u.data) + numBytesToRead);
return AL_TRUE;
}
}
/****************************************************************************
* The utility functions below do not know the internal InputStream
* representation.
****************************************************************************/
ALvoid *
_alutInputStreamRead (InputStream *stream, size_t length)
{
ALvoid *data = _alutMalloc (length);
if (data == NULL)
{
return NULL;
}
if (!streamRead (stream, data, length))
{
free (data);
return NULL;
}
return data;
}
ALboolean
_alutInputStreamSkip (InputStream *stream, size_t numBytesToSkip)
{
ALboolean status;
char *buf;
if (numBytesToSkip == 0)
{
return AL_TRUE;
}
buf = (char *) _alutMalloc (numBytesToSkip);
if (buf == NULL)
{
return AL_FALSE;
}
status = streamRead (stream, buf, numBytesToSkip);
free (buf);
return status;
}
ALboolean
_alutInputStreamReadUInt16LE (InputStream *stream, UInt16LittleEndian *value)
{
unsigned char buf[2];
if (!streamRead (stream, buf, sizeof (buf)))
{
return AL_FALSE;
}
*value = ((UInt16LittleEndian) buf[1] << 8) | ((UInt16LittleEndian) buf[0]);
return AL_TRUE;
}
ALboolean
_alutInputStreamReadInt32BE (InputStream *stream, Int32BigEndian *value)
{
unsigned char buf[4];
if (!streamRead (stream, buf, sizeof (buf)))
{
return AL_FALSE;
}
*value =
((Int32BigEndian) buf[0] << 24) |
((Int32BigEndian) buf[1] << 16) |
((Int32BigEndian) buf[2] << 8) | ((Int32BigEndian) buf[3]);
return AL_TRUE;
}
ALboolean
_alutInputStreamReadUInt32LE (InputStream *stream, UInt32LittleEndian *value)
{
unsigned char buf[4];
if (!streamRead (stream, buf, sizeof (buf)))
{
return AL_FALSE;
}
*value =
((UInt32LittleEndian) buf[3] << 24) |
((UInt32LittleEndian) buf[2] << 16) |
((UInt32LittleEndian) buf[1] << 8) | ((UInt32LittleEndian) buf[0]);
return AL_TRUE;
}
freealut-1.1.0/src/helloworld.wav 0000644 0003730 0000144 00000177666 10427607447 013760 0000000 0000000 RIFF®ÿ WAVEfmt D¬ ˆX dataŠÿ ÿÿñÿÐÿàÿðÿðÿÿÿÿÿòÿàÿÐÿàÿÑÿÐÿÐÿÐÿðÿ ÿÿ ` _ ßÿòÿ¿ÿÐÿ¢ÿ‘ÿ ÿ‚ÿ‘ÿ’ÿ‘ÿ°ÿñÿ 1 Ïÿ’ÿ‘ÿbÿaÿ‘ÿÿ¢ÿÁÿ±ÿ¿ÿ²ÿÁÿÐÿàÿÑÿÏÿÂÿ¿ÿÁÿ²ÿ°ÿ‘ÿ‚ÿpÿcÿ!ÿBÿCÿQÿÿqÿrÿbÿÿ‘ÿÿ’ÿ€ÿSÿ1ÿ"ÿ"ÿ"ÿaÿ‘ÿ‘ÿ°ÿàÿñÿðÿÿÿðÿ ßÿÒÿ¯ÿÂÿ‘ÿbÿbÿAÿpÿ‚ÿaÿrÿRÿQÿ"ÿ3ÿBÿ!ÿQÿ2ÿbÿqÿ’ÿÿ ÿ¡ÿ‘ÿ±ÿ±ÿ‘ÿÿ’ÿpÿ¢ÿÀÿ±ÿ°ÿÿBÿòþ¥þtþ³þÃþÿƒÿ ÿÿÿ0 0 / 0 O ] 0 / ðÿ’ÿ‚ÿQÿBÿ‘ÿßÿ @ o o p _ ? ±ÿ‘ÿ"ÿ¤þ“þ´þ³þ2ÿ ÿ 0 O _ Âÿqÿ"ÿòþÃþ´þ£þ¤þÒþäþ!ÿ’ÿáÿðÿ? ? O òÿ±ÿ‘ÿpÿ#ÿ"ÿ2ÿÿàÿN ž Þ Þ ¯ o ¿ÿcÿ!ÿÓþÃþÃþÒþ#ÿ°ÿ/ ¾ þ M}]Lî ® _ ñÿ‘ÿ@ÿ#ÿÿòþÿ"ÿqÿÁÿ o 0 . Ðÿ’ÿAÿ2ÿ#ÿAÿrÿ ÿÀÿÑÿ¢ÿ ÿ¡ÿÀÿÐÿ£ÿŸÿ“ÿÿƒÿAÿ"ÿóþòþôþÿbÿpÿ‘ÿÀÿ @ @ > Q ñÿÏÿÒÿ±ÿÿÿ2ÿ$ÿQÿBÿbÿÿ¡ÿ±ÿáÿÿÿ _ ÿ M
ß _ ÿÿ’ÿ3ÿãþ²þ•þƒþ²þôþ2ÿÿñÿO ¯ Ý þ þ ý Í Q ‘ÿ1ÿ´þ¤þ³þ¢þ²þÓþÃþµþ²þÄþ"ÿÿàÿ _ ¯ ¯ ~ ^ áÿ / ÿÿâÿÀÿqÿ2ÿ"ÿóþãþÿÿÿ#ÿÿ ~ î Ý Þ î ý ý ¿ Ž 0 °ÿBÿÔþcþEþTþ±þ#ÿ‘ÿàÿ@ Þ m}\N=Ž ±ÿaÿPÿ"ÿÿ£þTþþÕýþsþ$ÿ°ÿ? ¯ ¾ o 1 O @ n ` 0 àÿ`ÿÔþÃþÂþÿÿÿ0ÿ2ÿAÿRÿBÿqÿ¡ÿ°ÿñÿ? ½ M>þ Þ € ^ / áÿ ÿ‚ÿQÿ2ÿóþÓþ#ÿpÿ ? _ ` þÿàÿáÿ±ÿSÿÃþƒþsþÄþÿCÿ‘ÿrÿ¯ÿ @ °ÿaÿ2ÿRÿRÿÿ o
Lœ¬lM® @ €ÿ´þEþþþþuþ³þâþ3ÿaÿÀÿ/ ¿ ý ^LNLþ Ý ? Ðÿ‚ÿsÿQÿbÿ"ÿÿ!ÿaÿ±ÿ ^ ]«]-Ÿ ? áÿaÿÔþCþþþtþâþ1ÿqÿ o ^ ðÿ’ÿaÿBÿAÿ"ÿÿBÿÿáÿÿÿðÿÁÿñÿ P } ß Í Þ î Ž q ¼
M @ ñÿ ÿÿ àÿ‚ÿ0ÿSÿqÿÐÿ ¿ÿ‚ÿ"ÿÿ´þ¤þ²þäþ1ÿ¢ÿ ^ p ^ ‘ÿƒÿpÿ¡ÿ±ÿÿcÿRÿ!ÿÔþdþ²þqÿo MœmÎ o ¡ÿrÿ¿ÿQ ž / ~ Î Þ Ž p Ý ÿ ÒÿâþSþ¤þòþ2ÿ#ÿ"ÿrÿ‘ÿ¡ÿ°ÿ‘ÿqÿCÿpÿ±ÿÀÿ ðÿ ? ý >, Ðÿ"ÿóþ!ÿrÿ€ÿCÿãþ¡þ„þ¤þ#ÿ¡ÿàÿÿÿ0 Ý ^kN<î Ÿ . ‘ÿôþ“þCþÓþbÿÂÿ? Ž ¾ ÿCÿ"ÿÿ²þuþ$þSþÄþRÿ‘ÿÿ¢ÿ‘ÿ‘ÿ¯ÿÁÿ ïÿñÿàÿ±ÿ±ÿ .œl.n Ðÿbÿ3ÿRÿQÿRÿAÿqÿ Þ À Ý ÿ Þ í <Þ q °ÿóþ£þsþãþ#ÿ‘ÿïÿ" ? ÿÿ Âÿpÿ“ÿPÿ$ÿ0ÿbÿâÿN ® ÿ ={}Þ > ÂÿŸÿ‘ÿáÿ@ ? P > ÑÿRÿ1ÿ‘ÿ @ _ ñÿAÿ²þ•þÂþâþ2ÿbÿrÿqÿ ÿ1 Ž Ÿ n O @ Ðÿaÿ3ÿPÿƒÿ‘ÿ°ÿàÿ/ ` o áÿ¡ÿÿÂÿ? o P ÿÿÀÿRÿ#ÿÿäþ1ÿ“ÿÿ²ÿ’ÿqÿ2ÿÿÿÂþ³þ•þcþsþ„þ³þCÿ¯ÿàÿ! ±ÿ‘ÿAÿRÿÿ±ÿÿ$ÿ£þþäýþ„þ!ÿÁÿo Ý Þ o ñÿðÿ_ Þ ¿ ÿ”þ´þÿàÿp î Lþ ` ±ÿpÿ’ÿÐÿ¿ÿcÿÿÿ"ÿqÿ‘ÿQÿCÿ¡ÿ \:ëø+® ÿEþtþÿ‘ÿ°ÿ áÿ@ÿÿ$ÿ‘ÿ Ïÿÿþ¦ýÔý¥þÿ ß
î Ý Ž ` ïÿbÿaÿ‘ÿ _ o ~ ¾ Ž 1 O í ^î áÿƒþÖýþ´þqÿ‘ÿÿ¡ÿðÿ@ Ý |Jo ÿ5þþöýÔýåýõýÃþàÿ® lz‰*½=Ž ðÿ"ÿ³þ´þ£þDþþ3þòþ ¼ÊMÏ aÿóþµþÿRÿÿÑÿ. Þ ~*
Þ ` ^ € n °ÿ´þFýYü[üˆü–ý”þQÿðÿ@ n Î ¬[È»ÛÎ °ÿ‘ÿÀÿp Ý Þ n ÑÿÀÿ p @ ÿÓþ´þòþÿ ž _ Ðÿ ž llÿ ] 1 Ðÿ"ÿ£þ„þƒþÅþòþAÿrÿàÿÝ l-ž ? ÏÿÀÿ @ o ? ‚ÿÿÿ"ÿ"ÿ"ÿÒþ…þ³þAÿ € n ðÿbÿBÿâÿ~ =® Òÿÿ"ÿ¢ÿ0 ¯ n € Í Î Î Þ ï Ž Àÿ 0 O ñÿqÿ±ÿo Mª~œ»»n ²ÿ!ÿóþ´þÕýŠüü‰üDþ œ+:
ùm Áÿÿÿ‚ÿqÿqÿsÿÏÿ n Î P . p ® Þ Ý ¯ o ïÿ²ÿÏÿ n ~ p / ? _ ±ÿÿ“þ”þ”þ²þÃþ´þ2ÿÿÿž NúJ+^ òþ„þãþ n P Áÿ n q ? ÿQÿóþóþäþÿÿÿ1ÿAÿqÿ‘ÿ ž î Þ Î Î Î ß ÿÿ²ÿqÿ’ÿ¯ÿCÿÿ@ÿ’ÿ ÿ‘ÿcÿAÿrÿ"ÿÓþtþ²þqÿàÿ1 } |œ
¾ Þ .½ Ñÿ´þ4þÃþ¡ÿ ? 0 o €ÿ…þÖýþ3þÖýÆýÕý!ÿî ünÜ Ï @ÿ´þ“þ!ÿÐÿÑÿÑÿ ® ›|î o _ À Ž ‚ÿÓþ²þôþòþäýyüúû˜ü¶ýtþÒþÔþsþDþuþÑþcÿþÿ@ ðÿcÿ!ÿ"ÿÁÿ® }š‰¾Þ ¯ Î ¡ÿÿ$þ†ý'ý´ý$ÿ0 o ‘ÿ£þ”þPÿ ]< €ÿÿÓþÔþÿ2ÿ‘ÿQÿ„þ‡ýöü ýfýöý£þóþÒþ£þÔþ1ÿÂÿN ’ÿñþ³þ´þÿ‘ÿ bÿbþTþÿñÿ~ / ¡ÿcÿŸÿO Ë™ºKm? ‘ÿ£ÿ ~ ÐÿôþSþSþäþàÿ€ Ý ¾ ÿEþÕýõý£þ2ÿÐÿ¿ÿÁÿÑÿO -˜»i¼ß / ’ÿPÿcÿ2ÿÿ"ÿ ÿž ~z77ÄÄv·wh(š;ì;×
xÇ6tG‰;+Ü= Ÿ ¿ î {Š÷3Eèé¹üÍ _ ÿÿ²ÿÿàÿï ̨(‰¦x ª¹ùÙ*½]]o ! N þ œ¼»Ü¼¿ °ÿ“þƒþÅþ³þ²þãþ¢ÿ? P ÀÿÿÃþ#ÿpÿ’ÿ‚ÿbÿ`ÿ"ÿdþÆýÖýÖý¦ýWý–ýsþáÿ_ °ÿEþ–ý$þÿÀÿ¡ÿÿõýˆüÌú?úúªû:ü«û,ûMú®úKûyü¶ýsþÔþƒþ†ýHý¥ý%þµýhüÞúÛú|ûHüùüæüGý†ý(ýèûîúÝúiü•ýþ–ýøü÷üFý¨ü
ü;û=û üü8üIüÈüˆülûpùøtø‘ø²øsøø!ùúŽú
ûúûŒûÛûHü(üzü—ü˜ü9üëûûëúÍú°ùRø8öÛômô‹ô‹õ¤÷îù«ûåýÐ : âÁ’N
N¼Ž
õ
Œ@oTåH6‚i¸ +Î ÿÿáÿ / ¿ ¸Ô•Hì{Í+IÜ¿ âþhüoú®ùÎú¨ü”þáÿÌ lTâ¯o=°€žˆ sðO
a
~
°
¾
®
#f
Lð”3ñŽi µ
5D÷
ø L/F©+‹¯ ïÿBÿ‚ÿn *ˆµBggû¿
}ê++Jšö岢ķ+p òþ¦ýçü©ü%ýÇýþþþåýÅý–ýwýGýèüêû;ûNúNúžúû‹ûkûZû,ûªûüýwýýyü{ûoú@ùÐøPùŸú¹û=ûúùŽùýú:üJüûúnúù$ø÷šõYõ)ö ö¬ôó_ó¼ôzõŠõIõõ¬ôþóÑòïò¾óMôýóQòÖðfðÕð5ñCñònôGöwö—ö÷ïù’ÿ$…
Üuo
ÒÄ
_
´ WûœX&ÕLáÿCþ‡ý÷üüËúÀùqù@ùßù?úlú=ûºû;üéû«û«û üšüéûžú’øçövö‡ö4ø¬ú6ý“ÿ ® +«rŒÅ
²6÷ «Í^}ª«ÌÁâb¢³‘æš
! àÿ@ í ŒË¼^M|+è7ù\rÿvýü‹ûúû©ücþî è Õ
äQ#Ef
‰ «¬@Æg™«wv¡°]/åר*þ ½ o ~ Î »
Tâ×;Î ‘ÿÔþ¢þcþTþ³þ2ÿ
ËšhÖWVVçWj./ Áÿ‘ÿàÿ ÿÿ‘ÿäþCþvýxü«û¾úýùùøV÷wöùõÉõö¦ö¶÷3ø´÷×öØõ+õiõYövöÙõ+õ=ôóò´ñÂñ2òóŽóÏó,ô‰õ…÷úúû
üªû\ûùûˆüªüÖüHý¥ý´ýþQÿzÿ¤;vd3FšŽ
´(
ÌŬ"ÿÆýçüJüüZüvýåýVýzü»û½úùV÷êôÞó>ô»ôÌôêôJõXö4÷„øú<û¸üVý(ý
ü¼úúßù_ú
ûûûøü“þÿÿ~7> G
Ô
È
†
'
© ÉÌ;]<,-ìNqRV¶Ø~ïÿ¥þÅýVý(ý'ýeý%þ³þ3ÿ"ÿ³þÃþòþÿÄþCþÖýgýçüùû«ûûûvýÃþðÿNt»È ³o
/
³†
'
h
Ç mMqPï1£Å‡n Rÿbÿ‘ÿÿ¢ÿ .‹|mLMß o ñÿâþþ6ý(ýæý³þÁÿ 0 P ` } ¿ L{§E)Xw û
"ÿÕý‰ükû]ú!ù5÷Kõmômóòöðï~íì¯ì?íœí½ííîÚî÷ï´ñÞó–öùNúûÍúÌú«û+ü÷üýeý†ýçýÿN
•^…
>ä?ž£9kLr
¼³·|‘ÿdþ5þDþ·ý8üûAùø˜öÛôýóîó=ô,ôNôºô{õ'öV÷bøñø.úû\ûyûŸú>úŸù@ùùðù[û¸ü3þ’ÿ¯ xÕù ²
Ž
¯
N
¡$¢×
* ;O12v×)ë~ ÿdþåý—ýVývýÕýþ3þþÖýÖý#þ&þ¥ý7ýØü ü<ûú^úýùŽúûúŒûIü×üÅý”þÿp ëÊÆÅ0'
"½
-†µ43µ Mx î•ÊÛn ±ÿÐÿ > ` o n ’ÿ„þ‡ýèüüûûºûùûXüøüGý¥ý¦ýeýgý†ýµýÆý¥ýgý&ýøüØüýåý3ÿo ¼×èTG·ÊÛÞ ðÿ¢þ(ýKûïù’ø÷Xö¹õHõ½ôÝóÑò„ñEðÚîaìˆé»ç-çËçæéaìÈïÿò öÒøìúÅý-…Aa ¯Ì¢ž—–U¬lüMR˜ /"˜Úy:nîÿÅþ4þ£þ°ÿ~ q ¯ÿUþˆüPú‘øF÷öÙõõ¿óòÃñò°ònó=ôÌô+õêôëôÊõÄ÷Ÿù¬ûfýñþ Mšeœ7
ƒµEÕ
f
H
× J?‘B¯ra–×wwy[Œ bÿeþÔý—ý†ýýYü[û¾úîù ù1ù øòøÁø³øùðø°ùŽú{ûHü'ýæýcþSÿ Ý Ü™Iåµ¢‘ÍÚ&
Ôn
¼;¼¿
áqC"ãÓT·
© Ïõ¶:_ õýÚû>úùòøÑø€ùïù¯ùùùaùîùmú=û;ûZûÍú¼úîúýúªû›û»ûéûiüFý$þ³þÔþ£þõý×ü+ü«ûjûlûíú»úïùRùðørøƒøSøD÷ö^ôpòðží2ë8é*è©èëúî«ôîún U‘K%;ï—ei²«c1
ë$ÏiÚü —(¾ ÷üùd÷Ä÷úýÿàÿÿ3ÿ1ÿ/ ];aÿü¢øVöÛôlôô<ôÀòÆðÚîLî—ïBò™õ#ø>ú|ûˆü$þo h2ª
¶
æ
ƒ’ý
kH »bø ¼1SÅF\ ÿfþ$þÿ +9Æx÷º©Úùª¼/ UþöüëûŠû;ûìú^úù’øU÷‡öÇöu÷2øBùŸù.ú®úKûÇü5þÿÿÝXe4³_~¼^ï pðË[ õ
„Ö
Õ
E³´3ø ë+K:žpWiž bÿ£þwý)üúáøÃ÷×öæöƒ÷Õ÷cø²ø±ø`ùúþú«û*ü¶üÈüÉüYüü
üIüyüˆüIüêû|û½úú/úîùŸùâø£ø#øÄ÷ó÷T÷xö8öšõìô‹ô®ó¡òñ
ïÍíßì<íIïÑò•÷‰üït¹€˜%¦«£ª^
ôÖ
È Ë|QT„FF瘟 5þüíú.úðùù¿ùúnúªûFýÐÿWH¡ÿ(ý-úèökô‘òÇð8ïíí|í
î·ïBòõ%÷ ù,û¸ü„þ ÇT]J µ
CÍ
è
ɛЧ
zq6z ƒÿÃþ±þÿÿÿ-ZI•ÔäµÇkÎ Qÿôý©ü
üûËúúú¿ùù¡ø3ø…÷U÷æöxö‡öööv÷Ñømú*üEþ ̆5_/®¼@²T3B„@Ú÷ õ
£r
p
ÂG
› /Äa52äv×X+o 3þúû ú’ø“÷V÷§öwöµö‰öU÷ù]ú«ûˆüèüÈüxüIüüü‹û\û~ú®ùQù’ø²øù?ù°ù€ù€ùrùÒø¡øøÇöÚõ»ôžóRò$ñ¦ð´ðñÔð(ð§ï‰ï¥ð^ó6÷YüZ-P
E_yÕ‡úp×M"¥
ø
–
U
* N£Uøm‘ÿþÖüüûœúúüú¼ûøû©üvý³þn ù( Èüâøyõ‘ò¦ðˆïéîúî¸ïñ€òîóŠõ÷Bø€ùÍúHüDþ? j6„€ŽêF
ão
»Ú(¹¾
$ æl @ P J¦¦3bTƒb4”øŒ@ BÿEþÕýFýèü‰ü8ü ýùûðù„÷ÛôßóóîóõVöçöä÷_ùúüÅý’ÿLۇ椂¯Œ Ö
RcÀÂB³’ôÕ
x ì¡¢2¢Ï< ¹ ]4kŽ ÿâþ%þ÷üÜúù'÷ö˜öä÷2ù\úïùù´÷8ööçö¤÷õ÷¤÷göIõ¬ôôûôöd÷ô÷¥÷V÷ÕöHö öÙõJõÞóqòõð§ïºîýí]íí¿ì0ìÂë1ì‹îðòù±ÿV|4b$%‰~T º-N\¯
rg
ÌôJ! SþèüÚûÞú>úŸù ùùÎù]ûvý‘ÿ»¨är•š‚ÿªûå÷Ýó$ñ ïÍííîºî‡ï ð¥ðsñ1òáò½ó½ôFösø^úhü³þÞ
#OX ÄLYÄT3TŠ
§
•gÚØ9Æ!pàþÿððÞ‚’ÅÕHzÛî ãþfýšûaùF÷»ôòõðUðwðEñPò¯ójõ&÷Aøù®úÙû&ýFþÿÿmwr_
Ö
eÓar
ða¥–
‰ Y Ú|û}
Ö
Uä
é ;УÔv–Š>Ïÿ…þ¥ý¸üü<û-úbøÖöÙõõÌô¼ô‹ôÎóáò¡ò òðònóÝóôõºôîó@ó ó óqòÑñ×ðæïËîœípìrë†êWéèkç»çIé¿ì„ñ•÷Dþ%‰ ý
u@ Y½ÌP”rÒàÎÒDkŸ
ÕÈ 2ú½ ÿÕý6ýøü6ý×ý"ÿí 9r~Ë«.U¾ (ýÎùF÷ŠõóAòeñ´ð8ððçï‡ï8ï¬î;î;îÊîÇï5ñaòóÌôxö2øOúeýÐ eÝÕ
Ml
Di @!òâ ïŽ+[+=;º) [ §
…
¶
‡
&
ù
•
Eõ
¬ÏVkdþ<û¡øyöKôaóNó_ó~óÞóô˜õ‡öDøïù;ûjüýåýãþÿÿè…qàÚ·
âóÕ
: ½Ÿcv(Û~ ¢ÿÁÿí Ùµ!ï>îË`nw»Î ‘ÿôþþVý¨ülûžú!ùã÷×ö*õÞóqòÕðZï;îí]ííÍìì1ìáë‘ëCë#ëÃêEêFéLè:è6éSë{îaòxö=úUþ+ñh „q¶
h \LÛ÷ %‘á
Kì^
ãw
Y é<áO!‘nºg
ñ
P
BW
Žô*!ÿyüQù%÷:õßóžóþóËôüôºôLôoó°òBòBòòrò"òòSòÿòLôêõã÷^ú§üôþ½ ‰§æI*Ý ‘ÿ³þƒþâþ M¹WÐOk‰ G
Å
å
Õ
ö
bÅ€ò/
Ÿ
þ
ŽË»NŽ
$
®ó‹n Ãþæý¥ý&þÿÐÿ¾ \Ýúì\î áÿÁÿðÿP í «ë›=ý à ž áÿ¢þýéûìúÎú*ûMûùûiüØügýEþBÿ ½*ÍÍ ÒÿAÿÿñþÔþsþôý†ýçü‰üúûŒû
û¾ù£ø÷+õÞóqò6ñ§ï+îíáë´êæéhéøèjèYèšèÆé1ì×ïþó3ø§ü#ªDÐ
#¦
: üžK È
è ¹ Š
ÎÅwKÌüx wSïÛõ
Ìšiî
Ô) ‘åMuþgü½ú€ùùRøcøøÇö‰õôÿòaò2ò òpó¾óô
õˆöÃ÷¡ùùû%þo Z‚€ïïVjP £þÄýwýõý³þpÿQ Ý mj©é:†F? ‡
£s0
ý
ëzëÙÞ
"è 3Ù_ eþ÷ü¹ü&ýFþ‘ÿ} N»j¸
G‡x‡æÄóîM ÁÅ%xz-!ÿùüûðù€ùoùÑùùïùíùoúkûˆüþPÿ0 ’ÿ2ÿÿÿ3ÿ`ÿ’ÿqÿ"ÿÒþeþÔývý©üêûžú¢ø÷[õÞóÑò¢ñGð‰îïìáëôê„êVêDêæéWéÚè¹èWéÄêÏì9ï“ñKôe÷û äI 0
#ƒTe6
ü
Žý) G
ç
'
ª°ó7vôf–
Ç2ðº†
”"‚Áï’Eé²ÄþYüú¿ùù‚øµ÷GöŠõõ¼ô»ôËôôÍó óÿò®óËô öÄ÷0ù?ú»ûVý¡ÿ¦AþðÅxJlž °ÿÔþDþ5þòþ/ œªh·Æå7³£_ü}h f
”¡¿
›Ýú½`
"w
œF¸½]{šW6µóå”Võ˜—‡wyf§÷e'×f›û= áþÖý:üÌúàù ù1ù ùBù¯ù-ú=û»û‡ü¸ü'ýwý¥ý¦ýxýuý¦ý•ý‡ýfýVýÙü×ü‰üXüùû-û\úÂøµ÷ öìóòvð9ïÎí?ì¤ê éúçç½æç¼çØèEê±ëmíYï„ñLôøúû‚ÿØ£Û¸ 6¿Ï
N®
CÔ
Ê ˜ &
#¢Òø üÄÄægꌛ+g$ðMùû
X '
&óñF˜ n›n £þý¬û]ú`ùsøøøU÷·öèõmô?ó€ò²òóËôwöø#ù]úúû‡ý!ÿ¿ ؈UÔT3Æ—Þ / 0 K-É÷ÊÉÙ (wôÛ‰ Ö
ÂQÃ ’‚A£Ö
‰ [Ѓ3äå#C3Õ…xé‰íˬì˜w6W7úiÍk€ ‘ÿTþýyü«ûËû
üêûÉû{ûŒû|û¹ûºûüIüˆüˆüÈü˜ü‰üˆü‰üxü[üHü:üXü:üˆüüèû-û^ú~ùøÇö™õýó’òñyïíì¥êvé™è*è+è™è7é6ê2ë@ì^í;îËîhïGðâñ}ôø×ü°g
¢½+¼n
EúðpÞÇ æ
ô
É Í1$ÃÖÄuÖ)èÇÆÑ`€ïìÈ ÓŸ
ž-¢ç ‚ø? $þ‰üJû.úùù`ù ùùPùCø5÷WöJõÍôxõ¨ö”÷Sø ùùÎùÎújüdþo *¶ö¡2`#˜ïÿÿâþ‘ÿß :)·æ·¨å(EEfµ4ï<) é g
å
$³qñP
>
c46
êîQðá³ñðþ"·‹¼›*ÉÊJëKjŠìß aÿþ&ý÷üøüÉüü‹ûëúžú½ú<û üÇüvýåýDþdþ…þƒþ”þcþþ¶ý'ýøüý&ý¶ýþþÕýýùûíúùÒøT÷šõíócòÔðxï<îNí0ì4ëUêwéXé†é5ê4ëñëìîì?í^ííìaìýì\îñûôîù$ÿ<4
>_
²: ÏSä<µ
r
°”ù
,.&wXvyw——æÄQ¬%
î
Ð
†
ÍäKïÿeþ'ý×üýõýÔþQÿCÿRþYüOú$øföÙõzõºõ§ö÷÷ö¤÷2øâøú¹ûGýÃþP ìgijdiÿ ? @ Þ
X”²R@¢Å¶ª*;Fs@ï]ŽÍ¼˜ †
V1ÔE…
‰ |~߀àm›»š=]2y;lþ <œìûܬL.>Þ ÿ“þ$þþäýÖý•ý8ý¦ü[üHüÙü†ýdþÿ’ÿáÿ Ïÿ“ÿbÿ!ÿ³þdþDþ¤þ1ÿâÿ P ÿÿÿEþ5ý+üKû½ú‘ùÁøT÷Ùõ¼ô~óÒñGðïÍí°ìì¡ërëCë¢ëìâë‚ëAëÆêtêEêêæéêdêëQìîÖðMôƒøýÅy f
Ö
w
É LŸqP|Õ
-n
Ó¥
Š ;€Å‰›õ†Ó3²°<
³’d
;Qe˜>¯ n o ¾ l fþÙûîùø‡öHö¹õŠõÉõö)ö†ö„÷4øùìúúûvý¤þ \›HXØË¿ / 0
JÇñ~R¡Õ%Iš:ªx„e0°^}ílú™ ø E
¦
§
f
Š ¬›Úi ¹ '
f
f
è œN²É«NÌ+*Û>® ‚ÿ"ÿÓþcþÖýwý¥ý#þ³þôþòþãþÂþµþ³þñþsÿ @ n p ÐÿÑÿ°ÿ’ÿ ÿÁÿP Þ ›+[Z,kß 0 €ÿÄþ4þeý‰ü¬ûúýùâøø¸ö*õÞóBòÅð¦ïËîî]í¿ììrëÄêUêEêTêÔêëë2ë4ë3ë1ëëÕêÒêóê£ëí‰ï/óµ÷+üo å2Ëɫ̀Æ×6²ŒÁmÊ8l
‚tg
ÀÒ±1ޝ‚®* p
_
&
ŸSf¼ Ñÿqÿñÿ¾ œ{JKÿgýûù´÷˜öööÚõ™õöö öçöÄ÷Cøùú‹ûýEþ‚ÿN Ž "ÿEþÆýEþ`ÿf„^ºY j õµ¢±Žþßïªê ê<€²tÑÎþ‰ †
DE¥
Y ÌA”Y‰K+;XÊÊj ÿ£þþþ•þaÿÐÿñÿ ÿCÿòþ³þÓþÿbÿ°ÿ? í ¼›Wˆwøì=Ž p í {<¹ 9ø«k+¼LÏ ž ^ 0ÿeþý{û>úñø4øu÷Åöwöùõüôôóòñfðéî¾íÞìPì£ëëÄê¥ê¥êÄêôêë£êê†égé§é5ê„êµêEê×é%ê3ëíFðlôù÷ü0 ©ÅïŒ œð2foÊ ½
ödS¤&·Úlbx
«Mq€>m5¤ô@®këÊíŸ3—k=ÿÿÿcþÄþßÿ^zן ‚þ
ü`ù¥÷e÷õö×öæöˆö¶öT÷f÷d÷5ø‘øAùú®úªû6ý3ÿŸ ® ÿÿRÿ2ÿ ÿ 9!Û ø W
6
i <5³¤SAnlÊ+}à1A¯^Ïþ
ra•&fCÍ (
V
‰ -@Åæ†—Ø6ƒÅ$U { #ÿQÿ Êý\` !ÿTþEþrþÿÀÿP L*Ç·Ù¼Í @ í w…µF¸'küë)\˜›Y½ý áÿÿ4þ†ý÷üŠüü,û]úùÔ÷§öYõmôŸóÿòbò"òòãñ“ñõðVð9ïìíì’ë´êFê5êƒêÕê2ërëdë"ë”êöéWéÉèIè½çšçëçÙèÅê;î’òT÷«ûƒþ€ )³î¡Fg¨1
[‡SÄwúøšÛ1
E) ‘N½ß#ú;W#®w H
'
ú.S¨*ž #ÿEþsþàÿûb“¤ù ¤ýLûßù1ù1ù’ø¢ø²ø±ø2ù¡øBøSøRøùÏùŒúüÕýáÿ.<q !ÿþwý•ý³þÎ w@¬w
”Ãef
šÁSÃ4I (
÷ ûž€‚ôB#-¬NòF¸l:§t] &
n3Øú¸8ø21ð¿âUª
Ïÿ ž˜
zL@ 1ÿôþ³þ²þAÿ Z‡7Evj= o í ë8…bSå$ŠûÝ:ªvèVuIH]Þ ì |Ìûž=Ž °ÿ£þ'ýüÍúÞùÂøÃ÷V÷xö¨õûôÏóòuñÔðWðçï)ï›îí¿ì¢ëUê)éIèŒçþæíæ<ç\ç¼çÛçZèˆè‰èkèÚçç æåCätäå ælçæé,îLôýú, ”
Ž
F €
ò^=’Ö°i
&
Ïä…ó‚µJ±ÿ4þ´þŽ é•¢á划ÿèü_ú’øÅöéõöö®ùÇý=§£E«> øüŸù¤÷9öçõöwöu÷!ù-úú½úú_úÜúÙûý"ÿœ³A£´æhÖ$Í£L¢-·7IU¬’EÆ
ö
~
Ž
Ó
ªáôRTÆ—
0 Uþ¸üüXüwýÿo |[Š«ÁÿèüNúRøv÷øùÌúýÿo NÛ;Ên-»iã^^ dT„²œ; µ
´a’ÃF
ÞbGüØÆ¿›ìÐr÷ª}Þ .‹¬<Ÿ ±ÿ¤þ3þöý”þpÿp }Zû½ 1ÿ—ýyüÉûüØü÷ý1ÿ ¾ Î € Ðÿ¢þý¬ûmú_ùù%øÄ÷D÷)öûôýóóòDñôðÕð§ðuðgððXï:îðìðëë%êÈé—éäéÅêsëìaìpìáëëdêXé™èèúç:è{èièièxè<èªç
çpæ]æ.çæéIïÅöÑÿÌŸ
µÍXÃEÛ5:ÿ
+1_!’&>(B&k"6{«˜ £½ÿÿrÿÐÿ Aÿ™üøÞó£ñ!ò>ôU÷þùÚûFý7ýüïùçöKôFñÉîîçï<õÉûƒÐ0UØüãø‰õ®ó¾ó*õã÷úû ÷÷ˆº+
u=Ç
LS£36øYVÍä›Rq £º5ý
Pÿ¬
|Ò9µþJû£øµ÷Ó÷±øñùMúïùùe÷šõô@óóLõ%÷ ù\û7ýtþCþzü¿ùWöíó‘òRò®ó6öBùºûÔý"ÿÁÿðÿÿ³þþþPÿNÖ õ
‘áo
Mb6´B6 ›€x ~¡l× Æ
†
Ê“ücþ«ûîùùRùùú;ûºûÊûûÛúúîùúûèüãþÝ L\ÂÿþÇü9üŠü´ýBÿ]Ù7ÅÓVÚ ðÿàÿ ï LM
° ïÿQÿóþUþCþEþþ¦ýèükûïùøyö™õºô^ô¬ô*õ™õéõHövö™õ¼ôýóñò’ñÅðððuðñ¤ñòÄñDñvðˆïúîÊîÚîÚî{îìíMíì“êÉèîæRåTäCäSä³äåàå^ææ!å‡ãøá}àpßoàåœí"ù2,9^2ß!Ì!•°Ýœ+v$Ç+L/à-Í(Ú"y4dbI ÿõý¦ýYüù@ó¿ìégé¾íŸóPù¶ý > FþìúæöóUð-ícëßìRòœú9 Ã&‰VRÿ\û¢øøøOù{û„þF£yºß ŠHUYnøVižT ½
» “8° M"N!æFÄòÔh© Öö8þ þŒúV÷¼ô?ó0ókôêõçöT÷çöjõmóñ9ï»îØïòõù)üÄþ0 µþxüîùd÷Hööæöpùütþ «ÚM¿ Ž ß
‡„.‹I x êùJ W
ã>xrá.pÆzÑf
«œÐÎ@níÒÆ|ÿxý8üjû=ûjûªûËû¹ûŒûJû-û¾úÛú‹û÷ü“þ? ½¹‡Åy™û›ÙǤS£‘D#•VÊj»>ý
M|¼úû½k¿ . ðÿsÿ!ÿ"ÿ#ÿ1ÿCÿâþcþ†ýXý÷ü·üšü–üÙüýçü‰ü¬ûmúùøV÷÷6÷Bø!ù°ù^ú]ú úPùÔ÷–öŠõô-ô|ôûô)õ[õ‰õõîóÀò„ñ7ðïKîîýíÍíNíì‘ëUê)éÛçÌæ@æPæ
çêç;è+è»ç<çæ æàå.æÎæ›çéè6ê2ëììQë6êøèüçºçéníšõÍ
gV\"Õ$R&V%Ý!©(PìA# P'á,Ì.E,@'®!e³bkQ 3þîúwö4ñì:èMçVêçï™õ€ù{ûhü›ûŸù ö¢ñ½íë%êƒë÷ï¥÷ Ô
Dè Ž2 L Þ Í(Óïë§ œM±ýC›M„=L]Ôª£YÛ~R¦¼&–ù^ì· £Èþ ðÿRÿòþåýjüÎù'÷êôÿòò#òOókôzõ ööÊôñòñúî¼í¾í8ï ò˜öûÿɈ"ÿWýúû<ûŠû9ü$þP Jöôµö¦ç4ï«È
j š’ÕÓ’ðÚÖ
‘1
ö
º!§ŽàÿÿÿRÿÐÿ ÿÿ’ÿÓþ·ý÷üHü*üJühü™ü¶üØü¸ü‰üÊû|ûLû(ü¶ý’ÿœ—B]?Ѐ²24¡bÿmŽ^ŸP0ÄRui9=@ CÿtþÕý•ýÄýþ“þÿ¡ÿÑÿ¢ÿÿEþåý¥ýwýGýVýwýÖýôý„þÿ‚ÿ ¯ -\Ý**^ ’ÿäþ³þ"ÿbÿàÿŽ -Œ»]ü A €ÿ”þÆýý¹ü‰üHü+ü«û‹ûìú_úÞùùù¢øƒøÓ÷Çöö‹õšôîóßóÞóó¿óÝóô8õzõÉõ öÊõYõ,õ9õ*õ+õÈõgöhö§ö÷öõö÷ö÷¶öÉõYõõ›ô\ô=ôMôýó0óaò„ñ¥ð÷ï:ï[îíîìÀìîìííì€ìàëëVêÖé)ééøèGéÆéæéçé¶é éhè;è'éþì^óJüAZçê_!ø#§$›"ÄP6ÙÑT&U+a-Æ+Þ'Ü"Ö•ÂÐ~¨K 0ÿøüùôÎí(é\çÙèïì!ò÷Íú¸ü7ýêû`ùö!ò«îÍìí³ñ³ø^ #ä
LRÙMÎ ,<%R©ù ¸ #ÂMq6‹³‚†ÎÄÜ
À^”¬!Þ´žuô » ÿ”þYüù8öoó"òòó*õ´÷€ùÏù_ù–÷YõŽóBòÃñ¡òûô¢ø—üO ˆDBD{Ï ±ÿ"ÿ ÿ¾ ;ÆÅr3–å*øˆåí«ø —
W
) žÄVf2`î× æ
6
«€6,¯ °ÿôþ²þdþæýøüwü=ûNúOù„ø±øâøùmú½ú+ûú^úïù`ù€ùù^úkûý2ÿ
UÓ$$c²aŽ‘‘ €@@€ïÿ‚cöš^m Ñÿàÿ ~
Œ¬< ßÿÿ…þ$þöýõý3þõýÖýÖýÕýÄýþuþÿ¢ÿ ` ? ¢ÿÿ´þ„þsþ£þâþcÿ0 Ý ]*K+ë¬Ný ` Àÿ°ÿ’ÿÿ’ÿSÿaÿ#ÿÑþ¥þþvýÈüªûÎúúoùù¢øSøRøTøbøÓø¡øâø ù¢øòøÁø³øùù!ùAù!ùùîù_úûŒûüŠüæüýGýýéühüXü¬û,ûûû-ûÛúýú½ú«ú½ú^úoúïùùù#øt÷¸ö¹õ+õ
õôMôKôô»ôÍô õzõ;õ»ôŒôôô]ó ó/ópó]ó±òòñ„ñSñUñDñññÕðæðñ6ñDñ4ñ†ð‡ïlîÌí¬í®íüí{î*ï¸ïöïHðvðóð…ñòßò{ôtøãþž,ø)|!Ø#—$È#
"㯠œCÙ#!'Þ'²%`!¬{ÊÖ
€Š"ÿ™üŒú`ùµ÷
õ²ñ
î2ëêdëøîÞó4øªûýºü™ûqù´÷ÚõLô^ôWöú ÿ“¥
€
µÙ¸÷ô0žÊ‰ © úž0£ H A
£íØø,¤ß
±‘Ž
«Bù÷=Å@
ú2¹¼mL¿ îÿ%þûûù)ö¾óÓñcñ3òlôõö²ø^úOúÁø%÷ûô¿óóÜô÷>úôý]öcTe ]® p Kºö5âñ¡¶—ê(6¡ Âu–h¶µñP;ª|1vÙ‹ ðÿaÿÿSþæý÷üëû¬úÐù1ù±øùðøaù¿ùqùPù øEøaøó÷dø!ùþù‹û˜üæýÿ ® MË™xFÅ¥e%çÖ¨gX—çTͤ& ºÎ o ~ .Ë[ÊùÚyššŠ‹‹ý ¯ Ÿ ` ? ¡ÿbÿÿñþÔþÑþ„þþ¶ýfýéü×ü©ü·ü÷üÙüøüý¥ýdþ3ÿÀÿn ß M»ÝúÝ«œœÛ+Ky;ú}<Ï _ ’ÿÿdþþþæýÕýµýHýøü¨ü‰üˆüIüŠügü‰ü™üçü'ý6ý ý&ýýGý•ýþuþ´þÒþ”þDþþÆýwý…ýfýfýgý§ýÄýÖý×ý¥ýGýØüˆüYü9üXüü«ûzûýúÝúŒú?úàù€ùŸù`ùùÀùùïùùùáø4øøø„÷¥÷Ä÷•÷Õ÷"øä÷øøÄ÷øøÄ÷µ÷£÷V÷“÷¶÷%÷—öGöö)öÇö–ö8öHö)ö÷õ›õõŒôÞópó óÿò’òqòoò#òƒñôðWðð¨ïïyîî,îzî‰ï´ð•ñâñ”ñSñ„ñ"òAó{ô¶öÍúP MÛŠŠ‘ ‹"\"à ”ÎA‡–‚›£Î!;"° (×SP
ch 4þ·üýúù8ö?óµðÚî{î7ðó2øZü2ÿN ÿ÷ýKû!ùæöxöV÷€ù7ýŒÓ ¦
‡
ª!éªvµóýOÏ"×–ßf
‚=,ÂÙ?
ƒãÞ
³;_Äù Ç,ë¼} ¢þ;üÑø8öýóò¢òÞó öÃ÷¿ù,û
ûïùÄ÷Ùõ‹ôþó|ôgö‚ùˆü€ÿÚGùL¯ ž
æe…E8šŠ©¨Ó¾lªî
%æ&¥c!° ?”uvK-n ’ÿÒþÆýýüûNúpùaùòøùpùpùïù¾ù¡ù¿ù`ù¯ù¯ùïùoúÌú«ûIü÷ü¶ýÂþ’ÿ_
ë»Y–xHÉ‹û¬‹mŒœË˽Œ|mý ž ` ±ÿ±ÿ ÿÿQÿSÿ‘ÿ þ -þ o ÐÿBÿ³þdþäývýýØüiüxüXüküˆüØü6ýwýÖýÕýÔýõýµý‡ýVývý#þSÿ ìÈdÅÔåtçyÈÊø9 ¹J¼M½ 0 Ðÿ€ÿ$ÿòþÔþTþÕýGý§ü
üÊûœûü˜üuýþ•þ²þ“þEþÕýwýfýÕýtþäþaÿÑÿ> q n P @ N Ž À ì N|˼^,Ý ž ½ --Ü ž A ÿÿ£þDþ6þþEþsþDþôý§ý6ý×ü‰üjüüYüYüIü;üùûªû-ûÜúúîù ùùúïù.úúþùîù¡ùþùïùú]ú>úžúNú>ú_úú¬ú}úÍú
ûû[ûíúýú]úÏùùÂø£øDø"øBøµ÷÷¨öHöùõéõ×õõNôôþó¿óOóïòáòò¢ñÖð…ð–ðCñ´ñòRòSòAò"òÃñÓñÂñ´ñTñBñ³ñ ó;õ£÷^ú'ý¿ Ñ2£æ\ÉÚ[]ÑäKšÚWC݈ n5ÀÌôŒdþúûïùä÷¶öØõ¼ôžó²ò"ò¯òüôøÍú&ý%þÕýˆüŽú`ùSøRøÑøÀù*ü2ÿéá¼î5hûMl[ç9hç¤CÏ͘ ¬æ¤”t«=ž
LKGµCTTjÁ¸ ÿvª[ ³þýLû€ùøˆöÉõ©õÉõ8öd÷±øRùïù~ùsø¤÷˜öWöæö”÷âøÍú·ü´þ
}¬n âÿ¿ÿâÿ O o Ž ® ß L¼Z22OÜ+=ý>þ]Î|ú ¬+P ÅH¼ ¤þfý9üœû
û-úú€ù_ùQùÂøñøÁørøÃø‘øÂøùù¯ùúúKûºû‰ü7ý5þÿÁÿP Þ L|Ž=Þ n _ p n Ÿ í M‹¼:jK;ûÌÊ«ÜËü)+{©™+Í RÿÒþþöü
ü«ûû;û
ûÍúŒú0úMúúÌúÍúÍúËú/úúþù úNúNúÌúûüøü4þBÿÿÿo o o Ÿ ¿ Î Þ Þ
M«+zˆEö‚s#U·G›Ûž O Þ M»œl]MLî o Òÿâþ„þþõý%þSþ”þ£þ´þÿqÿßÿ / ÿÿ“þ´þÄþòþ"ÿRÿÐÿP ÌZÊéøê÷øÚy:Z›éèʹkJ*Œþ Q Àÿrÿÿ£þEþþþÕýåý×ýþDþ„þ”þ£þ²þtþUþÅý¶ývývý—ýfýµýþcþµþ²þ“þEþõý´ýGýèüŠü)üÚûZû{û=û,ûÜú]ú/úùQùù¢ø²øRøã÷ä÷÷ÖöÖöwöYöö öùõöxöWöö9ööºõšõ¸õzõjõ˜õùõÉõ«õ'ö(öÙõÈõéõÈõšõÚõö
öØõéõzõ¼ô¬ôëô¬ôôÞó~óóó\ôGöSøÏùÌûSþŠÝ
d,:‹
Ñ×xvÑyC5l&€]ô:ÿ6ýþúîùù¡ø“ø´÷Öö™õlô¬ô—öpù‰ü"ÿn áÿ“þýëû[ûû‹ûØüÿ¥@aTv}¡ÿ•þCþsþ$ÿ ÿ¯ ««å¦b_È
©˜Öi›mL>œ+š É
c+ þ¥š® ÿHýéûûnú
úùùAù/ùßùúÎúÜúÍúìúúÌú¾ú:ûŒûü¨ü'ýÕýuþ!ÿ’ÿ°ÿ’ÿ€ÿÿ³þDþÅýgý'ý÷üçügý%þ"ÿ =‰xW#’
®<‹»ùù * ª-R‘ªþ Bÿ¤ýZü[ûûŽúnúMú°ù¯ùQù1ùpùQù®ù ù±ù>úmúû‹ûüxüÙü6ýÕýtþ"ÿ ÿñÿÿÿßÿ²ÿÿCÿâþ´þcþcþuþ”þÂþÿ"ÿ2ÿ1ÿ¢ÿ/ ¯ \»Ì*KiŠ™é'Xx™m °ÿ´þäý7ý©ü)üëû{ûûœú/úúßù>ú-únú¾ú¼úíúúÎúÌúíúKû‹û(ü¨üvý%þ³þbÿÁÿáÿ°ÿÿcÿÿÔþ²þ²þ³þÿòÿÎ ]ºžLL}½ûÛÛ+ õÕƒ²d"U¡¢õ5·HÊMŽ ²ÿ!ÿÓþ´þÓþ²þDþþ•ýHýý¹ü˜üiü‰ü˜üéüuýDþ1ÿñÿo Ý =œÍ*š (øØº‹
í+Y{¨7ù¹j;,Ü«œÌ:[y‹i*½›^î Ž ßÿ‘ÿÿƒþ÷ý•ýeýGýýÈü™üˆü·ü©ü×üÉüÇüŠüyüˆüÇü ý–ý#þUþUþdþ‚þ“þ´þ³þUþþ¦ýVý'ýýøüÈüXüü©ûkû<û=ûûîúÍú~ú]úîùÐùùùñøÃøBørøsø£øùáøùùãøùsø³÷7÷¦öxö‡öxöXöµöW÷ƒ÷õ÷‚ø“ø‚ø‚øå÷Ò÷Å÷÷—öÛõºô=ômôûôõËôûô*õüôÛôüô:õõ*õ(ö†÷ù;ûøü‘ÿ®ÑÇ€ÝlªŒž'iýØÅ€¯^cIÄ‹ÁXÿÇýFýÙü‡üúû{ûÎúàù`ùù;ûUý²ÿ¼™›‹ 4þˆü<ûŽú~ú
û[üþ±ÿ Ý Ðÿ…þý:ûúžùïùÝúºû6ýtþàÿ,kÈ‚^‰ ²
ì™
©+-þ
Þ
ÿ
ý
°
Єö .`´©Ý BÿþýˆüIüZüxüøü†ý&þ²þòþ#ÿÃþ“þþ¶ý‡ýVývýVýý·üZüúûüëûùûëû©û\û¬ú~úÞùù1ù‚ø¢ø“øpùÜúiüeþ0 ÜÔDñ€?Ü\›ÊÜéë«[ìO¿@¤ã˜ áþ†ýùüxü—üÊü'ýeý†ý‡ý–ýÅý–ývý9ýØüÇü©üÇü¹ü×üÈü¹üGü)üüìûüœûlûú]úú úþù¯ùÁùù€ùÀùïùÍú©ûÈüþ#ÿO -šxçå6„d¢Ññ3•çJ¬ß / ‘ÿôþtþ4þÆý†ýfýuý˜ýóý5þtþeþSþ6þÕý†ý7ýøüçü¹ü¸ü©ü×üØüøüÈüÈü‰üXüËû›ûûÎú}úúMú]úÎúûªûKüýåýrþ#ÿ ÿ_ ü ¼{éHæ6•ôR¢ã1_±°°Îðîpu7vÙŽ<->L=Þ > ’ÿ1ÿÿòþ“þUþôý¥ý·ýµýþDþtþ³þƒþeþ„þDþ#þöýþ%þ&þ#þÇýµýöýDþ“þ´þÿrÿÁÿN ¾
\}›ŒÊj f¨÷&„ÔÓ¶e5èvø+ÌM~ P 0 ? ¿ÿcÿòþ£þcþUþõýÖýwýöü‰üü9ü*ü‰ü˜ü¸ü×ü×üèü×üÈüöüÊüwü:ü¹û»ûšûËûšûkûLûzûŒû›ûêûüiüiü¨üXüXüKüwüzüyü‰ü¨ü÷ü8ýuý†ýÇýäýþþÕývýýöüÙü·üÙüÖüŠüxüZüèûÌû;ûLû*ûûûœú_úßùúïùÏù‚ùðø@ù"ù0ù1ùðøùùÒøÑøÃø‘øòøù‘øsøõ÷Ã÷Ä÷÷ÆöÇöÆö¸ö†ö(öJõÌôÜô*õ©õÆöøOù¬û£þš>„X&UFw;ÿ
>
P
>D=ÎïÅËô Ï¥êËý þÿƒÿòþEþµýWývýþ°ÿmèÖÉBÿgýùû<ûû›û(ü(ýþ³þ´þõýèü©ûúÒøs÷÷ö…÷4øOù}úÛûgý³þ/ Œyd=ºØ f
ö
D…s54tt“”g
ˆ <‘Hž_ Ðÿ°ÿ Ÿ šéºZúÿ o ÿÿÀÿÁÿ’ÿ"ÿCþgýÈüü«û+û<ûÍúNúùrøä÷æöùõ©õKõ+õèõ4÷cøþùºûWýÃþßÿÞ ¬+ù¦Võ’@`ÑÿîÀb“ãçùûý ~ O A ® -}ê,yè 8«+Œ
? ÿaÿóþ“þFþ´ýgýˆüÌûûúùáøcøRøø$ø’ø¡ø`ù úÌúºûšü–ýtþ1ÿ’ÿðÿ o ¼ [œìKªØ‰;¼LÞ ! ? o Þ <œÝ‹Ùè»™JÛŽ¾ p ÿCÿÂþdþþ·ýeý÷ü˜üËû;û_úÝùQùáøùòøPùðù]ú<û«û‡üFý×ý#þvþ¢þÃþãþÿ$ÿqÿðÿ p Ž ¿ «+™ ÙÉ vèåÇ—Ö÷u¥…ÄÄÄÄ¥eGµ)š*¼M½ o °ÿ‘ÿaÿÿÄþ³þ“þƒþdþ&þ´ýhýUýfýwý–ýÅýþUþ£þ´þÿbÿ‘ÿ²ÿÿqÿqÿ’ÿÀÿ°ÿ 0 o Þ ]]ŒË*;*\Š˜ŠJk+:ûûûÝ‹ ! Áÿÿ"ÿÒþdþöý¦ýuýfýgý'ý©ü)üü«ûÊûËû»ûjûlû[ûlû{û;ûÛûºûÛû«ûºûªû›ûÚûùû:üüüéûü(üZühüYüü*üYü¸üýøüý÷üý÷ü'ýý'ý(ý7ýýVýFýfývýµý–ý†ýFýýºü¦ü‰üiüÚû«û\ûjû¬û»ûéû;ûÍú_úú.úîù¯ùùÒø0ùrùíù?úúÿù€ùpùùPù±ùoùù!ù£ø ùùñøPùâøÁøƒøøó÷‚ø£øñøàøøøø‚ø?ú¨ü ¥ju
¼+Û½
¥Y <Šé "Mè8l3ç Ý€c6¸g8 ‰¬¯ 0 ÿÿo ¯~.á%,p "ÿþfý6ýfýÆý4þtþ5þÕýý*ü
ûîùâø"ø$ø"ø„ø!ù¯ùüú™ü¢þ` ×BQÏ M
k‹‹]ݬÎ|Ú«^@Ä™™û)ºw–¡°]Žoï@£3ÅyyMp qÿ„þÅýFýýxüJü«ûû/ú1ù£ø„÷÷æöˆöæö•÷#øAùmúŠû÷üFþQÿ@ ® -~l\N=MM‹Ý*™¹
¨›+úÜœºìJZé¨VÑr q¡u—Ù*mî o àÿ#ÿƒþþhýÇüúûœûú^úÞùRù!ùÁøùQùù/ú]úýúzûêûZü—üýFý—ý¦ýµý…ýfý ýÖü‰üxüzü¸üçüGý†ýÖýõý#þþþ%þ$þEþÃþPÿ ¯ L©iöV”ãÕ„UæxJþ ž ? àÿ‚ÿQÿ"ÿäþ³þTþCþEþþåý¦ý—ýþµþ!ÿ‘ÿ! Þ ¼š'JÙ‰:Ëmî p ðÿqÿAÿòþòþÿÒþ¥þdþEþSþ…þ¢þ•þTþTþ‚þ"ÿ‚ÿáÿo <ìzçwxhHÚˆ=¾ p âÿ°ÿ°ÿ‘ÿ‚ÿaÿƒÿÏÿàÿÂÿÿ¢ÿðÿN € Ý <~»*š
WygªK»=¾ ’ÿ"ÿóþÄþ“þþåý×ýÔýþþ%þþþþçýäýÕýþ4þ4þTþ”þóþ"ÿCÿÿ#ÿ²þöýæüŠüwü‰üü»û<û«ûªû»û¹û¬ûÉûªû»û»û*ü)üXüühüˆü¨ü÷üøüýý6ý•ýÆýäýåýÕýfýøü¦üyü:üêûÊûKûû¼ú®úÍúkûùûüIüúû
üÙû üªû›û[û=û;ûû‰ûªûÛû«ûúû
ü üü‰û\ûŽú^úïù¿ùŸùòøñø¢øbøòø2ùùúú_úMúðùþùðù]ú\ú>ú@úîù_ú¬úÜú\û;û<û¾úúLú ú=úúÊûgý/ § · Vñô¤3f
8 E€
¹[R¦
ùοAÁt$6h™*<è÷S^^3× Qÿ´þƒþ„þ´þâþ#ÿÿÓþtþôýXýhü=û¾ù1ù£ø`ùúŽúzûiü–ý²þÁÿÞ »+©˜E󄢃$“FDÅc¿_MÁÅIwö…“PÎlŒLÜnïP£uÖ 9¬Þ @ Qÿ£þöývý6ýèü(üËû;ûÍú~úúÿùAù_ùpùùmú-ûXüwýCþÒþÔþƒþEþµývý8ý÷üØü÷ü6ýÕý5þ’þÃþäþÃþsþUþ£þÃþQÿÁÿ! ~ Í -NœªwÕ£ #Ä3…æù[¼m;ÿ Þ ž ^ ñÿrÿÓþcþõý…ý8ýuývýwý‡ý”ý‡ý•ý¥ý¦ý–ý•ýfýfýXýVýýöü:ü«ûÍú=úúÏùþù úNú~ú¼úLû[û«ûmûŠû¬û»ûü)ü×üHýäý•þ`ÿ ~ ß N¼ËÛÜ»]ý ¯ ~ ~ o Ð LÜ{É긛IZJKjŠ©(ØTÖ³'·Xx™†i¼>Ý Ÿ o N ²ÿ‘ÿ ÿàÿ1 N ðÿ’ÿaÿòþ³þÄþÒþ"ÿQÿ¢ÿáÿÿÿ/ A ^ 1 ŸÿcÿÓþ³þ£þ„þ¢þÄþÿÿÿÓþ´þÃþãþ"ÿÿàÿo ½ þ }ŒœŒ\^l»k™øê©šylÎ ? ²ÿ‘ÿqÿBÿÿóþÒþÓþƒþDþUþEþ4þ3þ%þ$þ4þþÖý¶ý¤ý–ý‡ýfýý÷üÈü‰ü¸ü·ü¨ü+üéûlû;ûíú]ú^úîùúïùÿù]ú>úÌúÍúýúûû{ûªû
üúûJüGüšü÷üGýgýUýý ýöüý8ýý6ýýùüÖüšüXü§üyüzüüúû«û»ûêûùû9ühüÙü×ü÷üÙüèüÈüý&ý8ý÷üý·üØü©üÖü¹ü‰üHü*üIü9üjügüJüüü|û{ûkûšû«û«ûËûºûêûúûxüˆü¨ü©ü—üJüYüüÚûúû©ûËû+ûÎúNú¿ùÏù°ù¬ú*üâþÛFBml šžPÖ4V‚¿÷ ó
/
’T÷ ª¯MÑ !¢u5f壿ÎÚX ê>”D
J¬M\Ž»I[Kü½ 2ÿfýüû_úMúNú\ûŠüµý“þ‚ÿ / 0 ^ -Ìy¹›)=Í _ ý ¼Ù·v´uÖúk\ì™gfc/ÍíÝà0sædFUgt÷‡Ù+|Ý o ñÿÐÿ‘ÿ2ÿóþtþµýøüGüëûšûÛû™üvýEþâþ’ÿðÿïÿQÿ´þÆýÙühüüéû¬ûüüiüIüŠü‰üÇü·ü¨ühüZüüüYüYüÈüý—ýþ”þÿaÿâÿ~ ý œ;Ê
éz+ªî @ ÿÿ0 n ¿ \NÎ n °ÿ‘ÿpÿƒÿaÿPÿ’ÿ°ÿ0 Þ Lm],î ²ÿAÿ´þDþõý¦ýFý÷ü™üyü9üYüHüXüiü‰üxüYüZüªûªûjû|ûºû˜ü‡ý“þÿÿÿ@ € Ÿ Ž _ 1 O _ ž
}*›™™Š«Êé'HI)ÙÙˆe•uUUW”´¥E¸÷;¼-
ï ý
î Þ ß Í Ž qÿCÿòþ³þTþsþ“þÃþCÿQÿqÿbÿrÿÿ“ÿÿTÿ@ÿ#ÿ"ÿÿÿäþ¢þtþCþEþþæýæýþDþdþsþƒþ³þ´þ³þ£þTþ6þþåýöýsþÓþrÿàÿ àÿ¡ÿÿ@ÿãþ³þfþdþdþDþ$þþõýÖý†ý†ýfýFýHýFý6ýGýý ýèüçü¸ü˜ü‰üˆüˆü¸üèüý8ýýEýýøüÆüÈü9üëû|ûZûíúÍúúÍúKû;ûMû,ûÛúÎú½úüúÌúìúÝúû=û*û‹ûLû¬ûyû¬ûºû»ûúûêûü
ü*üùûÛûšû{û\û:ûlûlû©û¼û üü9ühü¹ü÷üWý†ý¶ý%þTþƒþ”þ£þ´þÒþ1ÿƒÿ°ÿ . 0 ÿÿ…þdþsþ”þ´þ³þ³þÂþÿBÿsÿÿ‘ÿÿSÿAÿ3ÿBÿpÿ¡ÿ 0 n Ÿ KíÈÇfã%ƒ²c2ÅuV6UÅC€àÎ Qá£s3$2Dcd£áó²DãGÕY È™Šj[yËÇÊiÜNÎ ? ÐÿÁÿÂÿþÿP ¾ Ý ß î þ Þ Ý ß Ý à ¾ o ` ÿÿ þÿ O € ½ ¿ Ý ß î Ý î Þ ¯ p o ^ ~ ß >»,™ÈÚª™‹ưܻ̈}Œl|m[]==Þ Ý Ï ¯ n A Ðÿ’ÿbÿpÿ‘ÿÂÿàÿ 0 A áÿ¿ÿ“ÿAÿãþ£þDþ5þ%þþ6þ3þUþcþeþDþþ5þÆý¥ý…ýxýVýVýWýfýfýwý¦ýÕýþþ$þeþƒþ¤þ²þÄþÒþ¥þ¢þ¤þƒþµþ²þ´þÒþãþ"ÿqÿ¢ÿïÿ ïÿ²ÿ±ÿÀÿ/ Ž Î Ý <L^KMm»Ükç
h7øª™Ê ÊÙèùêÈ™KûœMMM}Œ««N<Þ n P _ ? ? P 0 / ? 0 ðÿ¡ÿ’ÿPÿSÿ3ÿÿ!ÿ#ÿ!ÿÔþ²þ³þ´þÃþÂþÓþÂþÄþãþÿÿRÿ‘ÿ‘ÿ±ÿàÿàÿ àÿðÿ ðÿÑÿ°ÿÂÿ±ÿ‘ÿÿ’ÿqÿBÿÃþ”þƒþtþ„þrþ…þ²þ¤þ£þ¤þƒþVþCþþþþ3þEþ5þCþ5þTþ„þdþDþæýÓý¦ýfýWý7ý6ý)ýýéü‰üxüü8üÚûëûÚûÛû›û‰û»û¬û©ûŒû›û{ûkû,ûû+ûìúMû;ûkûlû{û›ûkûªû\ûŠûKû\û+ûûûÌú,û
ûZû[ûkû›û\ûlûû:ûû<û\û+û[ûkûºû¬ûùûühüˆü™ü¨ü¹ü÷ü6ýWýgý•ý·ýåýCþtþ„þ“þ³þäþ"ÿ`ÿ“ÿ¿ÿñÿ ? ? € o ] p n € n í -\n{œŽ‹\Mí þ ÿ Þ þ ,M]|ŒM=L>,
=|Úyéêf˜Ç7d´–¤´ÄÄÆ¤äóÆóõ4Ôµ”veçåçæ%FUVEV&æèÕ—ˆhXhW7
ùÙ‰[jL:+ÜœLß ½ € / / n ` ? o p o o àÿâÿ . / Q o O / O O n p n Ÿ o n p _ N 0 ? A ^ P ? o ½ ° ® Ž p ^ ~ p ~ € ¯ Î ¿ Ï ì Þ ß Ý Ï Î ž ž ¯ Ž n 0 / P @ àÿ°ÿ¢ÿÑÿ¯ÿ¢ÿÿÀÿ²ÿÿ‚ÿÿ’ÿ‘ÿ’ÿ‘ÿ€ÿbÿqÿcÿaÿbÿaÿ"ÿ"ÿRÿÿ‘ÿ‚ÿaÿAÿBÿcÿ‘ÿ€ÿCÿÿ"ÿrÿ ÿáÿ P Ž € Ž _ ° í >{|^Û*j[jZ{J+*lŠ™ª¸›jI*ÝÌÊݼlml|>ü ß Ý ÿ ý ¾ Ÿ ¾ Ÿ 0 àÿâÿÿÿƒÿRÿ0ÿRÿ‚ÿaÿ"ÿ2ÿóþ²þ„þTþDþ4þEþDþ4þþ%þþÔýÆýÆýÕýÄý·ý–ýuý§ý•ýVý7ývýfý•ývý8ý×üøüý÷ü¹üØü¨ü¸üwüJüwü:üüúûüÛûêûªûÚû¼û üúû»û
üÚû
üÉû¬û‹û¹ûËûùûëûÉû
üêûËûÉûüÚû üêûÛûºû©ûëûëûüùû
üºûëûÚûúû)üü*ü
ü üëûûûºûšû{ûûû¶üÊüúûû,ûÚû¸ü™ü‰ü
üHüˆü¹üý(ýöüŠüˆü§üøü'ýWý6ý7ýwýåýsþ„þDþ%þôýDþ„þ³þ„þDþCþeþÿRÿaÿaÿcÿÿ¢ÿ ~ Þ ¯ o @ Þ -m\M>Œ»ëëÛëüK*+Ûììúüê»»üJj+ûÜÛìêüëz‰š¸
Wy–—yˆ—†è&VDGdv„••”vVTeF76öØvYHGh7èèÊÚɨ›š‰[YZ|‰ˆŠ‹™›yŠyjJû¼¼ÜÛÌûÛ»|=ü ý î ü ý ÿ Þ Ü ð Í ¾ ß Ì Î Þ þ
.;>þ î Þ ® Ý Ï Ž o Q > ! N O 1 N ÿÿÑÿÑÿ ÿ‘ÿ‘ÿÿ‚ÿ€ÿƒÿÿÑÿàÿÏÿ²ÿÑÿÐÿÁÿ¿ÿÑÿÑÿÏÿðÿðÿ / ! @ O / ` ` _ m @ o Ž Þ þ .M\œ½¼»¼¼»ÛíêýIzŠ[yj,êÝ»»¬ªŒnKN<ý Ï Ÿ Ÿ Ž 1 > A O @ 0 ÿÿñÿïÿÑÿàÿðÿ±ÿÑÿïÿñÿðÿ°ÿÿ‘ÿ‚ÿqÿ‚ÿ"ÿ!ÿÿ2ÿ"ÿ#ÿ!ÿäþ³þ‚þuþtþSþEþ4þþåýÆýµý·ý†ý†ý…ýwý¦ývývýgý6ý6ýýý8ýýGýýöüÙü×ü×üùü¶üÙü¦ü‰ü˜üjüwüü(üüIüü
üêûûû
üÚûÚûéûëûzûÚû‹û»û«û»ûêûªûêû»ûùûëûüüxüŠü‡ü¨ü©ü¨üŠü§üÈüÉü§üÇüŠü—ü™üØüÈüçüèüýýøüèüÖüÉü÷üýøü÷ü×ü×üùüæüÈüçüùü&ýýEý)ý7ý6ýVýhý…ý¶ý¶ýÕýåýÖýþ5þCþtþÄþ³þÃþ³þÔþòþÿ"ÿ#ÿQÿBÿ2ÿÿqÿ’ÿ ÿÂÿÐÿÁÿñÿïÿâÿÿÿ N @ ? O n p o ¯ Þ Ý Þ ï ü .Lœ¼¼¼ËËë˼û
ûìÛ
,:*ýû)<y™™š›ŠªÉÈéI8Hv˜·ö÷6%&65'6DF&÷æ·XWI8'
øÚè™›zZ;+*ûêìê
ýûë
ÛíÛ¼¼›|N]<-LÞ Î ¯ N Q N ! ðÿÑÿÀÿ°ÿ±ÿ‘ÿ¢ÿ¡ÿ°ÿ‘ÿÿƒÿ`ÿaÿ‚ÿÿ‚ÿÿ’ÿÿÿ¡ÿÀÿÂÿ±ÿŸÿ’ÿ€ÿ‚ÿrÿqÿ’ÿÑÿÐÿ±ÿÿ‚ÿpÿbÿbÿqÿrÿRÿbÿbÿ€ÿrÿQÿqÿ‘ÿ’ÿ‘ÿÀÿÑÿÐÿÑÿ þÿ@ O 0 p Ý î =m|ÍêÛ*++jʹš›¸Úت©Úت{9,Ì»«ml.-,î Þ ¿ ~ € n P > ` ? ïÿ¢ÿqÿSÿaÿqÿbÿ2ÿ1ÿ2ÿ3ÿ"ÿÿÿÿ"ÿÿóþãþ£þ´þ“þ£þ”þdþsþuþCþEþôýçýÕýÅýÅý§ýuýwývý‡ýfý•ý¶ý†ýWýFýý'ýý&ý'ýýý6ýý7ýýýHýeý–ý˜ýfýVý&ýhýuýwý†ýÅýõýÖýÕýÇý´ýÕý×ýþçýþõýþöýäýæýæýäýõý¶ývýfýfýGýfýhýeýFýWý)ýfý7ý&ý'ýHýFý7ýGýUýHýWýGýgýFýeý–ýÅýÆýöýåýþCþ6þ5þCþ&þDþDþCþ6þ$þDþDþSþ6þDþDþ$þDþ5þEþ5þäýæýõýÕýæý$þ4þDþCþFþCþEþDþDþDþcþ„þdþsþtþ³þ£þ´þ²þ´þâþãþóþòþÿ3ÿBÿPÿ¢ÿÀÿ£ÿ¯ÿ±ÿ±ÿÐÿðÿÿÿ0 o n o q Ž ß Î ß Þ Ü î þ í þ -<.LMMM><->Ml^||m«Œ«Ëìëüû +:ZKk™™šzZš™º»é ')(Y((')'Yw˜hW89Y(7( É©šŠ›˜z›©º™š{yjK+**úû,9,
ûûüœŒ|}‹]]<þ ß í þ
ß Î n _ ? @ ÐÿÑÿ°ÿ¢ÿ‚ÿ`ÿaÿ‚ÿbÿBÿ2ÿÿÿ!ÿÿÿ!ÿ2ÿ#ÿóþÓþÓþòþóþ!ÿBÿSÿQÿqÿqÿ’ÿ°ÿ±ÿ±ÿþÿ! > O O P o ¾ í Ý í -LMMM]nML}œœ«¼œœ|M|],/
Ý ° Ž p N P _ @ ñÿÁÿ‘ÿ ÿ¡ÿ’ÿÿ‘ÿrÿaÿ"ÿBÿcÿPÿ‚ÿRÿ`ÿSÿ`ÿƒÿ`ÿqÿ“ÿ‘ÿ€ÿqÿbÿCÿÿÿÿãþóþÿÿÿÿÿÿÿÒþ”þTþ3þFþ4þCþFþCþ4þFþCþ4þþäýþþþÖýÅý¥ý†ý–ý§ý¦ýÕýÕýÕýÖýäýåýÕýçýõýôýþþþæýþþþ4þFþcþ„þdþTþEþ3þEþ5þCþUþDþCþEþ4þEþDþEþ4þ$þþ4þEþþþEþ4þFþEþþ5þDþDþSþdþVþtþcþ„þ”þƒþƒþdþtþtþdþSþTþeþSþUþsþ…þ³þ”þtþ‚þVþTþ‚þ¤þ¤þ„þ’þuþtþ“þdþ’þãþÃþÓþ³þ´þÒþÃþÄþÓþÿ2ÿ#ÿÿ#ÿ"ÿÿ#ÿBÿAÿbÿ‘ÿaÿcÿbÿPÿSÿBÿpÿsÿqÿÿ‘ÿÿ¡ÿ²ÿÑÿÐÿàÿ ÿÿ ïÿÁÿÐÿòÿ N @ 0 / O ` P m ° Ÿ ® ¾ Î ß í
--<NL]LMML^\~œ›lL^K^Œ|l|}‹®ll]l|NL
->;Ý î þ =MLNKMLNL\nLN‹}œ»Ûûíë
**,KYk˜{‰šššª™‰‰›˜ºš™«™Š™Šj‹™ŠY,:ûúÍ̼š}mm‹Œœ|]N
ý þ ,,NLM||ŒmLMMý ì ÿ ý Ý ÿ ì Þ Î ž Ž Ž n 0 ? ÿÿ ßÿ°ÿáÿðÿÁÿ’ÿ ÿÿ’ÿÿaÿsÿ`ÿbÿ€ÿ‚ÿcÿRÿQÿRÿqÿrÿbÿBÿBÿAÿAÿ"ÿÿ1ÿ"ÿâþÿäþÿ#ÿ"ÿ!ÿ2ÿ3ÿ3ÿ!ÿ"ÿÿãþÿÿÿÿÿÿóþÒþãþóþòþÔþÓþâþÓþ´þÓþÂþÒþÄþÒþòþÓþÃþ³þ´þ²þÄþâþãþãþâþãþòþÓþâþÿÿôþÿÿÿÿÿ"ÿ#ÿ!ÿÿÿóþãþâþÿÿÿòþÿ!ÿãþÿòþäþÿÿÿòþôþòþâþÓþÒþÿóþÿáþ#ÿÿòþ#ÿÿ!ÿ$ÿ#ÿ!ÿ#ÿ"ÿ!ÿ"ÿAÿSÿ€ÿ‚ÿrÿRÿRÿ1ÿ#ÿBÿ1ÿbÿrÿÿbÿaÿRÿbÿRÿpÿQÿCÿrÿ`ÿBÿ#ÿ2ÿ!ÿ#ÿ!ÿ3ÿQÿ3ÿPÿÿrÿ‘ÿpÿQÿcÿCÿ@ÿcÿ1ÿ2ÿ2ÿ3ÿ"ÿÿ3ÿ1ÿBÿRÿAÿ3ÿ#ÿÿÿÿñþÿÿ!ÿSÿRÿ1ÿ2ÿ#ÿ"ÿAÿRÿBÿ2ÿ2ÿCÿPÿcÿrÿÿÃÿÐÿ ÿ‘ÿ‘ÿ’ÿbÿqÿÿÿ²ÿÀÿ±ÿÀÿÐÿ°ÿ¡ÿ±ÿÀÿÀÿ±ÿÂÿÐÿ±ÿÿÂÿ±ÿÏÿñÿ ÿÿáÿÐÿÑÿÑÿßÿñÿÿÿ ! ÿÿ/ ? ! P ? N ? 0 € O o ] P Î Þ Þ î î Þ Ý ½ ° Ý Þ ß -î
þ -L>LMN\,-
Om{Œ}}m}|L\^\LMM<OL]L>þ þ
-->KmNNlMMK-MM=l]nk‹||{ŒŒ}{}Œl{¬½»¬¼»ªŽšLNL,==^l|}]ý í Þ ß ® ® ® ® ~ o € ž ~ Ž Ž o @ ? ? ` O _ ` @ O @ ? P ? ? @ / ÿÿ ! ! ÿÿ ÿÿ ÿÿ ÏÿÁÿ°ÿÁÿ±ÿ“ÿ ÿ ÿ¢ÿÁÿŸÿÁÿ±ÿ¢ÿ¿ÿ’ÿ’ÿ ÿ‘ÿ ÿ‘ÿ“ÿŸÿÿ¢ÿ²ÿ ÿ ÿ“ÿ¯ÿÂÿáÿÐÿáÿÏÿÑÿàÿàÿáÿïÿ ÿÿ! ÿÿ ! ? . o n o O / 0 0 . 1 0 0 ïÿ Ðÿ‘ÿ ÿ‘ÿ’ÿÿ’ÿÿ‘ÿ‚ÿ’ÿ€ÿ’ÿÿrÿÿ‘ÿ²ÿ‘ÿ€ÿ‚ÿ‘ÿpÿrÿ‘ÿ’ÿqÿ‘ÿ‚ÿqÿ‘ÿ¡ÿ°ÿÁÿ¿ÿÁÿ¢ÿÿÿ‚ÿ€ÿrÿ€ÿ’ÿ’ÿ‘ÿ‘ÿ‚ÿqÿqÿpÿrÿbÿaÿCÿ2ÿAÿ3ÿAÿ2ÿbÿbÿBÿBÿÿ#ÿ@ÿBÿCÿ2ÿ!ÿ"ÿÿòþÿÿ"ÿÿÿÿÿÿÑþóþóþÿ"ÿ!ÿÿäþÿãþÿòþÓþÿÿ2ÿ"ÿÿ#ÿ"ÿ"ÿÿ"ÿÿòþÿóþÿ"ÿBÿAÿÿÿÿÒþãþÿ!ÿBÿBÿAÿ4ÿ"ÿ!ÿ#ÿ!ÿCÿ`ÿRÿQÿ3ÿAÿ#ÿ!ÿAÿRÿsÿÿqÿaÿbÿSÿAÿRÿ`ÿCÿQÿBÿ"ÿ3ÿ"ÿÿ#ÿBÿRÿqÿbÿ2ÿBÿ@ÿCÿ"ÿ"ÿRÿRÿ1ÿRÿrÿpÿqÿqÿ’ÿÿ‚ÿÿÿqÿpÿ‘ÿ“ÿaÿqÿÿ‘ÿ‘ÿ’ÿÿ‘ÿ’ÿ²ÿ¯ÿ¡ÿ¡ÿ‘ÿ¡ÿÀÿàÿáÿÐÿñÿñÿÿÿðÿ ! N ` ` m p _ o n € ^ _ @ ? ` o p n € o o m p ` n P ` n p o a o N o o o ž ¾ À ý ÿ î þ
þ ->LM|}}‹¬»ËÛÝûû*\Y\iZkJ9‹zšŠkxjkz™™šªZ;+Û*úܼ{]Ml_LMML-==LMN-þ ý ü î ü ï í -ÿ Þ Ï Þ ¿ ½ Ï € ^ ~ ` o n _ P p ` / ? áÿÒÿÀÿÀÿ°ÿ²ÿÐÿ°ÿÑÿàÿ±ÿÂÿ±ÿ¯ÿÂÿ¯ÿ“ÿŸÿ‚ÿ‚ÿ‘ÿÿrÿ€ÿÿ’ÿ‘ÿaÿrÿaÿ"ÿ@ÿcÿRÿÿ’ÿaÿ‘ÿqÿsÿQÿRÿ’ÿ ÿ¢ÿ¡ÿ‘ÿ‚ÿ‘ÿrÿpÿ¡ÿ¡ÿâÿÀÿàÿàÿàÿ ÿÿ ïÿáÿ±ÿ°ÿÑÿÐÿ ? N 1 P O @ > / @ @ . @ O 0 0 / 0 @ ÿÿ ðÿ N a > ÿÿñÿáÿ ÿÿ 0 0 P 1 @ ïÿ ïÿàÿàÿòÿàÿßÿ ðÿ¿ÿ±ÿÀÿ²ÿ ÿ’ÿ¡ÿ°ÿ‘ÿ¡ÿ’ÿ€ÿ‘ÿ’ÿÿ‚ÿqÿRÿQÿSÿAÿ2ÿBÿ3ÿ1ÿ"ÿÿÿóþÿâþäþÿóþóþóþäþÿÔþÂþÄþ³þ³þ´þ²þ´þ²þ¢þ•þtþ„þ‚þ³þÓþÃþÔþÓþÃþÃþ¢þ´þ¤þ£þÂþÒþ³þ¥þ¤þ‚þ„þ“þ¤þ³þ³þ³þ²þ•þ¢þ“þtþ³þ“þ•þ²þ³þ”þ”þ”þ¢þ”þ„þ“þƒþ´þ²þ”þ´þ’þ…þ²þ´þ•þ’þ´þ´þ³þÂþãþòþäþóþÿÿÿÿÿÿÿÿ!ÿ!ÿ$ÿPÿSÿbÿÿqÿrÿaÿcÿÿÿ¡ÿÁÿ¿ÿÂÿàÿàÿïÿðÿ 1 0 0 / > A @ > p n € n € n p ž ¯ ¾ ~ ~ € ž Ÿ ¿ ½ ® ® ° ¾ ß Ý Þ î í Þ Ý þ í î ,.-ß
ý ß Þ Þ Þ ¾ ½ ß Î ¿ ® Î Í Þ í ß Ý î ,ý
M==>=,M=\|}›{|œŽ»¼ËË»½»šÍ¼»ëÛ½ËÜۻ˼ëÜ»¼¬Œœ«›nL]L=MNK=
Ý Ï ì î í
ì ß Þ Í Ï Î ® Î ¯ Ý Ï Î Î ¿ ® Í ¿ Ÿ _ _ N o o € } p n P Q / P ïÿáÿÏÿÑÿ±ÿ°ÿ°ÿÀÿ¡ÿ²ÿ¡ÿÿÁÿ¢ÿÿ’ÿ‘ÿÿÿ‚ÿaÿbÿÿ‘ÿ‘ÿ¢ÿ¡ÿrÿ€ÿ‘ÿ‚ÿrÿrÿÿ‘ÿbÿpÿ‚ÿrÿÿ ÿ¢ÿÀÿ±ÿ¡ÿ€ÿ¢ÿàÿÐÿàÿÐÿáÿ ÿÿïÿðÿ ! ÿÿ @ ? ? / ÿÿ 1 ^ a O n _ ? ? @ 0 @ @ / ÿÿñÿ 0 ! ! ÿÿÑÿáÿ ïÿÂÿ ÿ¡ÿ°ÿÑÿ°ÿÑÿ²ÿ ÿÑÿ¢ÿ°ÿàÿ ðÿÀÿ±ÿ‘ÿ ÿ’ÿ ÿÑÿàÿàÿáÿàÿ±ÿÁÿáÿÏÿÂÿÑÿ°ÿ°ÿ’ÿ±ÿ¿ÿ²ÿÏÿ‘ÿ‘ÿ±ÿÿsÿaÿaÿqÿ‘ÿÿbÿBÿ1ÿCÿ`ÿrÿqÿbÿSÿQÿAÿ#ÿñþåþñþòþäþÒþÄþÄþ“þ¢þ³þÄþÒþÒþ´þÄþ‚þEþSþeþsþƒþtþtþ„þtþ”þ³þsþ„þ„þ“þ³þ…þsþ¤þƒþtþ“þƒþµþ³þ’þdþuþtþCþdþeþsþ¥þ‚þ•þsþtþdþ£þ”þ•þ’þ„þ£þ´þÓþÒþÃþÔþÑþóþÿÿÿ"ÿ#ÿ"ÿ!ÿ#ÿ#ÿ!ÿ$ÿ2ÿ0ÿSÿaÿRÿBÿCÿQÿbÿaÿPÿ’ÿqÿrÿÿ‘ÿ‚ÿŸÿ¢ÿ°ÿÑÿñÿÿÿñÿÀÿáÿ / P ~ _ ` o O ~ Ž Ï o o o ` ž Í À Ü ß Í ® ¾ Ï Ý Î Ï Þ Þ Þ Þ ý ß ï ¾ Ÿ ~ q ^ _ ` ^ P O n ® ½ ¿ ¾ Î Ý Þ ß Þ Ý Þ Þ Ý í í M\}ŒŒ¬œº¼¼ÛìëÝÛÜú,JZKJY;ZJ[K*:üÚܼ¼ÜÜúü»ª}Œ]L^L<MMll]nL>.
.<M==-ÿ ý î þ Ü ß í À ¼ ® Í Ÿ Ž o ` P o n ? ! ÿÿ ïÿ ðÿÐÿ¢ÿÿ£ÿ°ÿ‘ÿÿ’ÿÁÿ±ÿÿ’ÿÿ¡ÿ¡ÿ’ÿÿaÿrÿbÿ`ÿrÿ‘ÿ‘ÿ‘ÿ’ÿ¡ÿ±ÿ‘ÿ‘ÿ‘ÿ’ÿ‚ÿ`ÿbÿBÿRÿqÿ2ÿRÿqÿBÿAÿRÿ0ÿ#ÿBÿQÿ3ÿ!ÿ3ÿ2ÿ!ÿ"ÿaÿrÿ‚ÿ ÿ ÿÁÿ’ÿÿ²ÿ°ÿÁÿÐÿÐÿáÿïÿñÿïÿòÿàÿ / ? @ P / O _ o Ž ž € ~ ~ Ž ž ¯ ¯ ž ¯ n o q _ } p n p N p O / ? P . A . 1 . @ / ïÿáÿÐÿ°ÿàÿÒÿÑÿÁÿ±ÿ ÿÁÿ¡ÿ’ÿÿ¡ÿ‘ÿ¡ÿ±ÿ±ÿ¡ÿÿbÿbÿBÿQÿsÿ€ÿqÿbÿaÿaÿaÿ2ÿ"ÿ#ÿ2ÿÿâþôþÂþÓþóþÿÿÿâþôþÿÄþ²þ£þ¥þƒþtþcþ„þdþdþtþDþtþtþtþbþdþtþTþeþSþƒþTþ%þ%þþ4þ&þDþCþTþuþTþDþTþdþDþDþsþtþDþDþDþdþtþ…þ’þ“þ£þ´þ´þƒþ”þ¢þ³þ´þÓþÒþãþóþóþóþôþòþóþòþÃþÓþÒþÔþãþòþ#ÿ ÿ#ÿ#ÿÿÿÿôþÁþäþòþÿ!ÿ#ÿ"ÿ3ÿ3ÿ1ÿCÿAÿAÿSÿ ÿ4ÿ!ÿ#ÿRÿ2ÿqÿ‘ÿÿ’ÿ‘ÿ‘ÿ ÿ¡ÿ‘ÿ‘ÿ¡ÿ±ÿÐÿÂÿÀÿ¡ÿ¡ÿ°ÿÁÿÁÿÁÿÀÿÒÿÐÿÀÿÿÿÒÿÐÿàÿÐÿÁÿÐÿâÿÿÿ O n o p ž ® í ï í à NŒ¼¼ëû
üJ[™©¹ª©Êé(XIwhHXwxw‡‡g8('(*ùùع©‹iKÜË˼»½Ì»¬|ll]N=-.Lü ß Þ Ý ¾ ¾ à Ü ß Í ® ¯ Ÿ € o n p ] 0 ` n a Ñÿ°ÿ ÿ’ÿ°ÿ’ÿ€ÿ’ÿbÿ€ÿcÿ`ÿqÿbÿÿSÿAÿrÿaÿBÿCÿBÿ€ÿrÿÿ“ÿ‘ÿÿ±ÿÁÿ’ÿ’ÿÿ’ÿ¡ÿÿ²ÿ’ÿÿÂÿ‘ÿÂÿ°ÿ‘ÿÀÿâÿ ÿÒÿÐÿÀÿßÿÑÿ¡ÿ±ÿ‘ÿÁÿ°ÿ¡ÿÁÿ‘ÿ‘ÿÀÿ¡ÿÿ‘ÿ“ÿŸÿ’ÿ’ÿ¯ÿ¡ÿ±ÿ‘ÿ’ÿ‘ÿÿrÿrÿpÿÿ’ÿ‘ÿ’ÿ‚ÿ‘ÿ‘ÿ°ÿÐÿÑÿÂÿÀÿàÿÿÿA ^ ^ € Ž o o À í þ í ÿ ý ý /,.ü ÿ
.ý î Þ Ý î Þ Í Þ Ï ž Ž o o O / ÿÿ! 0 ÿÿ àÿÏÿÂÿÏÿÒÿÐÿñÿïÿ ïÿÿÿ0 ðÿÐÿ±ÿ°ÿƒÿ¡ÿ±ÿ°ÿÁÿ°ÿrÿbÿBÿ!ÿ$ÿ"ÿÿÿóþÓþÓþ³þÂþóþñþÿäþ£þ³þ‚þTþTþEþUþsþtþ„þsþeþeþRþVþTþRþTþ&þþ4þþþDþdþtþUþeþCþEþDþCþEþdþCþEþCþDþTþeþUþSþTþfþCþSþeþsþƒþtþƒþeþEþDþDþEþ4þEþcþCþEþ3þDþ%þþCþ4þDþeþ4þþþþ4þ4þCþUþCþ%þCþ6þþþþ$þþ%þþþþþæýþdþeþrþeþ3þTþEþDþSþdþ„þ…þrþuþ”þƒþƒþ…þ‚þ“þ”þ¤þ³þòþòþôþÿ!ÿÿ"ÿÿ#ÿ1ÿbÿ‘ÿÑÿ 0 O n ¯ ½ î .=\lë;z™é
f‡§¨æö7&e”¥Ã´¥…•–µ´ÄåãÔµµ•UfU6öØÇ¨§——wh(ꪨ‹Y;KëÜÌ\m,ü Ï ¿ ½ ß Ý ß ý ž p ^ 1 ÿÿ áÿàÿñÿðÿáÿ°ÿÁÿÂÿ¿ÿ¡ÿ‚ÿaÿQÿ2ÿ2ÿ!ÿÿ"ÿ!ÿÿñþÄþ´þ“þ¤þ³þ’þ…þsþtþsþTþeþ“þ“þ“þ´þ”þcþcþtþtþ¤þ³þ´þÒþ´þâþòþôþÿ"ÿ2ÿBÿaÿ‘ÿ¡ÿ¢ÿÐÿÿÿ0 P O _ o p ž ° ½ Ý Þ ß î þ ý M<.-ü î î Þ Þ Î ° ž n O O 1 _ . ÏÿÁÿ²ÿ ÿ¢ÿ‘ÿÿ‚ÿÿpÿƒÿpÿrÿ¡ÿÿ¢ÿßÿÒÿ¿ÿâÿïÿðÿ _ o o Ž ® Ý Þ Þ
Mm]\MnŒœ«½«»¼œœ¬m|]>Þ Ý Ï ž ~ _ ` / ñÿ±ÿÐÿ±ÿ¡ÿÿ‘ÿqÿQÿsÿÿ’ÿ¯ÿ¢ÿ¡ÿ ÿ’ÿÿ‘ÿàÿÁÿÁÿÐÿòÿ ÿÿÿÿ@ 0 . þÿòÿÀÿÑÿ’ÿ¿ÿâÿÿÿbÿ"ÿÿòþôþÁþ´þ²þ„þDþ5þ%þCþ6þäýåýÕýÇý…ý–ý¥ý¶ý¦ý—ý•ýwýfýfýfýfý‡ý…ý—ý¥ý¦ýÖýÕýöýôýþþõýþÕýôýþþ4þ%þþþöýþþþ$þþõýÕýÖý§ý–ý¥ý¦ýÅýÖý´ý×ý¦ý†ýfýeývý†ýgýfýVýGý6ý(ý7ý'ý6ýGý7ýHýFýWý&ý8ý%ýXýfýfýWýfýgýgýgý†ý¥ý¶ýµýÖýÔýÕýþþþþþDþVþSþtþ“þ³þÃþâþÿÂþ³þ´þ´þâþòþÿÿ"ÿBÿaÿ‚ÿ€ÿ²ÿðÿ ^ ¾ î <n‹¼ËZšH†ç׿7…Äô"T‚ƒÂ!2121011AòÓ’sD#ÓÅ•fU÷¶xG
÷Ê™‹jJ:úÍË|M=ý Î ® ¯ o ` @ N / ñÿÿ‘ÿÿrÿrÿ2ÿ"ÿÿÿòþÒþÄþÒþÄþáþÓþ•þdþ4þEþ$þ5þCþ4þ5þ4þþäý×ýþþæý$þþ4þDþþþþ%þ#þEþdþtþ£þ´þÿ!ÿSÿ‘ÿ ÿÑÿÑÿðÿ ÿÿ! > p Ÿ Í L]m‹‹~šœ¬ÜìúüûëûÍË«}l>.
ß Ý ž N " ÿÿðÿÑÿßÿ±ÿ’ÿbÿRÿBÿAÿ2ÿ"ÿbÿAÿ$ÿ#ÿÿãþôþÓþ³þÃþ¢þ¤þ£þ³þ´þÂþóþóþÿÿÿãþÃþáþÔþÃþ³þ²þÂþµþÒþâþÿÿ"ÿBÿBÿQÿqÿÿ¢ÿÏÿÂÿßÿñÿðÿ0 ^ a ž =LM]{¬»ÜÜ+:‰»Éø éÉÚùȫ׫šh[[++
üºœ}M-ý þ Þ n O ßÿ¡ÿaÿCÿ"ÿ"ÿòþôþ²þ„þEþþþþäýæýÖýÅý•ý·ý†ývý•ý¶ýµýÇýÅý¤ýgývýhý†ý†ýwý”ý†ý–ý¦ý·ýÅýÕý¥ý…ývýgýVýGýFýfý(ýEý9ýý÷üýýýýøüèüÇü¹ü˜üŠüˆü˜üˆü¸üªü—üšü×üØüèüÈüýöüýýýý&ýýWýgý–ý¦ývýfýÅý†ý–ý˜ý•ý…ýWýfý7ýý&ýý7ý(ýýýýØüöüøüèü§ü¨üŠüˆüyüiüXüyü¸üšü¨ü¨ü‰ühü‡üŠü¶ü©üçü¹üÈüØüÉü§üØüçü(ýUý‡ýåýEþƒþÿ‚ÿ¯ÿ áÿÁÿ o
ÌyIÖUÆó"R£ ŽìϽ\^n~½¾Ì_^ ¾¡p1Ò¡T•f&æ×¶˜ÇwYHù Ù™j|M=
.M-.Þ n ÿCÿÿ²þ¥þ„þ“þ²þ•þ²þ¢þUþ5þåýfýýùüÈü÷ü÷ü÷üùüøüÇü×ü¨üÙüØüøüýGýfý—ý¥ýÕýõýõý&þSþcþ”þ”þÿaÿ‘ÿ p Î M|mŒ¼¬½Ëü*Zzª'HY' êŠYJ;J[{ˆ{il*ûœm\M<L>M\Kí Ý o n P @ àÿ‘ÿ’ÿ‚ÿQÿ2ÿ#ÿÿòþ´þ²þ£þ´þ•þcþEþÕýfý7ýýçü·üªü·ü¨ü˜ü©üˆü‰üYüYüüüÉûËûjûœûªû«ûéûü‰üxüÉüÈüøü&ýý(ýeý˜ýåý#þ…þòþ2ÿ¢ÿ _ o Ž Î .M¼û*JŒÈé9—·Õçö÷7tVvt—ut†…¥”ÄŤ•d(ÇÆ×¨–i)ùÈ«š˜l)ÍKï Ý À ½ ¯ n ` / Ðÿ ÿ’ÿBÿÿäþƒþdþTþþôýåýÅý¥ýhý6ý÷ü ýöüèüØüèüæüéü˜ü‡ü˜üjüxü:üxü*ü(ü+ü‡ü™ü¹ü¨üæü©ü¸üÈü™ü‡üŠüˆüˆü™üÇü÷ü÷üHýeý†ý—ý…ý‡ýgý'ýýÇü÷üý÷üý'ýgýfýhý•ýgýfý8ý6ýGýWý6ý)ýýý÷ü(ý'ýýøüæüØü×ü¨ü©ü¨üÉüyü8üü üêûûûÙûúûüü9üüü
üëûŠû«ûkû=û+ûíú;û+ûœûªûÊûªûœû¹û¬ûÚûŠûmû:ûkû=û{ûšû¬ûøûÌû9üéûúûªûÜû üüÈüvý&þÑþsÿÑÿ