diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2013-12-27 16:13:22 -0800 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2013-12-30 09:40:08 -0800 |
commit | 47c680c62246594107da0a8995c953dfb8040bce (patch) | |
tree | 9d9b3691d83d8f99de0c066cb271d41977c13457 | |
parent | fa3eba16446cc8f2f5e2dfc20d86a49dbd37299e (diff) | |
download | fdk-aac-dabplus-47c680c62246594107da0a8995c953dfb8040bce.tar.gz fdk-aac-dabplus-47c680c62246594107da0a8995c953dfb8040bce.tar.bz2 fdk-aac-dabplus-47c680c62246594107da0a8995c953dfb8040bce.zip |
AAC Decoder: support 6.1/7.1 decoded as 5.1
- Add 6.1 and 7.1 channel support including downmixer. Per default the
decoder creates a 5.1 channel output for all streams with more than six
encoded channels.
Modified file(s):
libPCMutils/include/pcmutils_lib.h
libPCMutils/src/pcmutils_lib.cpp
libAACdec/include/aacdecoder_lib.h
libAACdec/src/aac_rom.h
libAACdec/src/aacdecoder.cpp
libAACdec/src/aac_ram.cpp
libAACdec/src/aacdec_drc.cpp
libAACdec/src/aacdecoder_lib.cpp
libAACdec/src/aac_rom.cpp
libAACdec/src/aacdecoder.h
libSBRdec/include/sbrdecoder.h
libSBRdec/src/sbrdec_drc.h
libSBRdec/src/sbrdecoder.cpp
libSBRdec/src/sbr_ram.cpp
libSBRdec/src/sbr_ram.h
libMpegTPDec/include/tp_data.h
libMpegTPDec/include/tpdec_lib.h
libMpegTPDec/src/version
libMpegTPDec/src/tpdec_asc.cpp
libMpegTPEnc/include/tp_data.h
libMpegTPEnc/src/version
libSYS/include/FDK_audio.h
libSYS/src/genericStds.cpp
- Fix error concealment modules fade-out/in mechanism.
Modified file(s):
libAACdec/src/conceal.cpp
Bug 9428126
Change-Id: I3230bd2072314b730911cd7ec1740e290cb1d254
25 files changed, 6522 insertions, 6539 deletions
diff --git a/documentation/aacDecoder.pdf b/documentation/aacDecoder.pdf index a8cee17..4b94b75 100644 --- a/documentation/aacDecoder.pdf +++ b/documentation/aacDecoder.pdf @@ -88,531 +88,375 @@ endobj << /S /GoTo /D (chapter.4) >> endobj 60 0 obj -(\376\377\000C\000o\000m\000m\000a\000n\000d\000-\000l\000i\000n\000e\000\040\000U\000s\000a\000g\000e) +(\376\377\000C\000l\000a\000s\000s\000\040\000I\000n\000d\000e\000x) endobj 61 0 obj << /S /GoTo /D (section.4.1) >> endobj 64 0 obj -(\376\377\000A\000r\000g\000u\000m\000e\000n\000t\000s) +(\376\377\000C\000l\000a\000s\000s\000\040\000L\000i\000s\000t) endobj 65 0 obj -<< /S /GoTo /D (subsection.4.1.1) >> +<< /S /GoTo /D (chapter.5) >> endobj 68 0 obj -(\376\377\000M\000a\000n\000d\000a\000t\000o\000r\000y\000\040\000A\000r\000g\000u\000m\000e\000n\000t\000s) +(\376\377\000F\000i\000l\000e\000\040\000I\000n\000d\000e\000x) endobj 69 0 obj -<< /S /GoTo /D (subsection.4.1.2) >> +<< /S /GoTo /D (section.5.1) >> endobj 72 0 obj -(\376\377\000O\000p\000t\000i\000o\000n\000a\000l\000\040\000A\000r\000g\000u\000m\000e\000n\000t\000s) +(\376\377\000F\000i\000l\000e\000\040\000L\000i\000s\000t) endobj 73 0 obj -<< /S /GoTo /D (chapter.5) >> +<< /S /GoTo /D (chapter.6) >> endobj 76 0 obj -(\376\377\000C\000l\000a\000s\000s\000\040\000I\000n\000d\000e\000x) +(\376\377\000C\000l\000a\000s\000s\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 77 0 obj -<< /S /GoTo /D (section.5.1) >> +<< /S /GoTo /D (section.6.1) >> endobj 80 0 obj -(\376\377\000C\000l\000a\000s\000s\000\040\000L\000i\000s\000t) +(\376\377\000C\000S\000t\000r\000e\000a\000m\000I\000n\000f\000o\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) endobj 81 0 obj -<< /S /GoTo /D (chapter.6) >> +<< /S /GoTo /D (subsection.6.1.1) >> endobj 84 0 obj -(\376\377\000F\000i\000l\000e\000\040\000I\000n\000d\000e\000x) +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) endobj 85 0 obj -<< /S /GoTo /D (section.6.1) >> +<< /S /GoTo /D (subsection.6.1.2) >> endobj 88 0 obj -(\376\377\000F\000i\000l\000e\000\040\000L\000i\000s\000t) +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 89 0 obj -<< /S /GoTo /D (chapter.7) >> +<< /S /GoTo /D (subsubsection.6.1.2.1) >> endobj 92 0 obj -(\376\377\000C\000l\000a\000s\000s\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\000a\000a\000c\000N\000u\000m\000C\000h\000a\000n\000n\000e\000l\000s) endobj 93 0 obj -<< /S /GoTo /D (section.7.1) >> +<< /S /GoTo /D (subsubsection.6.1.2.2) >> endobj 96 0 obj -(\376\377\000C\000S\000t\000r\000e\000a\000m\000I\000n\000f\000o\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +(\376\377\000a\000a\000c\000S\000a\000m\000p\000l\000e\000R\000a\000t\000e) endobj 97 0 obj -<< /S /GoTo /D (subsection.7.1.1) >> +<< /S /GoTo /D (subsubsection.6.1.2.3) >> endobj 100 0 obj -(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +(\376\377\000a\000a\000c\000S\000a\000m\000p\000l\000e\000s\000P\000e\000r\000F\000r\000a\000m\000e) endobj 101 0 obj -<< /S /GoTo /D (subsection.7.1.2) >> +<< /S /GoTo /D (subsubsection.6.1.2.4) >> endobj 104 0 obj -(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\000a\000o\000t) endobj 105 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.1) >> +<< /S /GoTo /D (subsubsection.6.1.2.5) >> endobj 108 0 obj -(\376\377\000a\000a\000c\000S\000a\000m\000p\000l\000e\000R\000a\000t\000e) +(\376\377\000b\000i\000t\000R\000a\000t\000e) endobj 109 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.2) >> +<< /S /GoTo /D (subsubsection.6.1.2.6) >> endobj 112 0 obj -(\376\377\000a\000a\000c\000S\000a\000m\000p\000l\000e\000s\000P\000e\000r\000F\000r\000a\000m\000e) +(\376\377\000c\000h\000a\000n\000n\000e\000l\000C\000o\000n\000f\000i\000g) endobj 113 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.3) >> +<< /S /GoTo /D (subsubsection.6.1.2.7) >> endobj 116 0 obj -(\376\377\000a\000o\000t) +(\376\377\000e\000p\000C\000o\000n\000f\000i\000g) endobj 117 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.4) >> +<< /S /GoTo /D (subsubsection.6.1.2.8) >> endobj 120 0 obj -(\376\377\000b\000i\000t\000R\000a\000t\000e) +(\376\377\000e\000x\000t\000A\000o\000t) endobj 121 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.5) >> +<< /S /GoTo /D (subsubsection.6.1.2.9) >> endobj 124 0 obj -(\376\377\000c\000h\000a\000n\000n\000e\000l\000C\000o\000n\000f\000i\000g) +(\376\377\000e\000x\000t\000S\000a\000m\000p\000l\000i\000n\000g\000R\000a\000t\000e) endobj 125 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.6) >> +<< /S /GoTo /D (subsubsection.6.1.2.10) >> endobj 128 0 obj -(\376\377\000e\000p\000C\000o\000n\000f\000i\000g) +(\376\377\000f\000l\000a\000g\000s) endobj 129 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.7) >> +<< /S /GoTo /D (subsubsection.6.1.2.11) >> endobj 132 0 obj -(\376\377\000e\000x\000t\000A\000o\000t) +(\376\377\000f\000r\000a\000m\000e\000S\000i\000z\000e) endobj 133 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.8) >> +<< /S /GoTo /D (subsubsection.6.1.2.12) >> endobj 136 0 obj -(\376\377\000e\000x\000t\000S\000a\000m\000p\000l\000i\000n\000g\000R\000a\000t\000e) +(\376\377\000n\000u\000m\000B\000a\000d\000A\000c\000c\000e\000s\000s\000U\000n\000i\000t\000s) endobj 137 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.9) >> +<< /S /GoTo /D (subsubsection.6.1.2.13) >> endobj 140 0 obj -(\376\377\000f\000l\000a\000g\000s) +(\376\377\000n\000u\000m\000B\000a\000d\000B\000y\000t\000e\000s) endobj 141 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.10) >> +<< /S /GoTo /D (subsubsection.6.1.2.14) >> endobj 144 0 obj -(\376\377\000f\000r\000a\000m\000e\000S\000i\000z\000e) +(\376\377\000n\000u\000m\000C\000h\000a\000n\000n\000e\000l\000s) endobj 145 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.11) >> +<< /S /GoTo /D (subsubsection.6.1.2.15) >> endobj 148 0 obj -(\376\377\000n\000u\000m\000B\000a\000d\000A\000c\000c\000e\000s\000s\000U\000n\000i\000t\000s) +(\376\377\000n\000u\000m\000L\000o\000s\000t\000A\000c\000c\000e\000s\000s\000U\000n\000i\000t\000s) endobj 149 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.12) >> +<< /S /GoTo /D (subsubsection.6.1.2.16) >> endobj 152 0 obj -(\376\377\000n\000u\000m\000B\000a\000d\000B\000y\000t\000e\000s) +(\376\377\000n\000u\000m\000T\000o\000t\000a\000l\000A\000c\000c\000e\000s\000s\000U\000n\000i\000t\000s) endobj 153 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.13) >> +<< /S /GoTo /D (subsubsection.6.1.2.17) >> endobj 156 0 obj -(\376\377\000n\000u\000m\000C\000h\000a\000n\000n\000e\000l\000s) +(\376\377\000n\000u\000m\000T\000o\000t\000a\000l\000B\000y\000t\000e\000s) endobj 157 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.14) >> +<< /S /GoTo /D (subsubsection.6.1.2.18) >> endobj 160 0 obj -(\376\377\000n\000u\000m\000L\000o\000s\000t\000A\000c\000c\000e\000s\000s\000U\000n\000i\000t\000s) +(\376\377\000p\000C\000h\000a\000n\000n\000e\000l\000I\000n\000d\000i\000c\000e\000s) endobj 161 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.15) >> +<< /S /GoTo /D (subsubsection.6.1.2.19) >> endobj 164 0 obj -(\376\377\000n\000u\000m\000T\000o\000t\000a\000l\000A\000c\000c\000e\000s\000s\000U\000n\000i\000t\000s) +(\376\377\000p\000C\000h\000a\000n\000n\000e\000l\000T\000y\000p\000e) endobj 165 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.16) >> +<< /S /GoTo /D (subsubsection.6.1.2.20) >> endobj 168 0 obj -(\376\377\000n\000u\000m\000T\000o\000t\000a\000l\000B\000y\000t\000e\000s) +(\376\377\000p\000r\000o\000f\000i\000l\000e) endobj 169 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.17) >> +<< /S /GoTo /D (subsubsection.6.1.2.21) >> endobj 172 0 obj -(\376\377\000p\000C\000h\000a\000n\000n\000e\000l\000I\000n\000d\000i\000c\000e\000s) +(\376\377\000s\000a\000m\000p\000l\000e\000R\000a\000t\000e) endobj 173 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.18) >> +<< /S /GoTo /D (chapter.7) >> endobj 176 0 obj -(\376\377\000p\000C\000h\000a\000n\000n\000e\000l\000T\000y\000p\000e) +(\376\377\000F\000i\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 177 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.19) >> +<< /S /GoTo /D (section.7.1) >> endobj 180 0 obj -(\376\377\000p\000r\000o\000f\000i\000l\000e) +(\376\377\000a\000a\000c\000d\000e\000c\000o\000d\000e\000r\000\137\000l\000i\000b\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) endobj 181 0 obj -<< /S /GoTo /D (subsubsection.7.1.2.20) >> +<< /S /GoTo /D (subsection.7.1.1) >> endobj 184 0 obj -(\376\377\000s\000a\000m\000p\000l\000e\000R\000a\000t\000e) +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) endobj 185 0 obj -<< /S /GoTo /D (chapter.8) >> +<< /S /GoTo /D (subsection.7.1.2) >> endobj 188 0 obj -(\376\377\000F\000i\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 189 0 obj -<< /S /GoTo /D (section.8.1) >> +<< /S /GoTo /D (subsubsection.7.1.2.1) >> endobj 192 0 obj -(\376\377\000a\000a\000c\000d\000e\000c\000o\000d\000e\000r\000\137\000l\000i\000b\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +(\376\377\000A\000A\000C\000D\000E\000C\000\137\000C\000L\000R\000H\000I\000S\000T) endobj 193 0 obj -<< /S /GoTo /D (subsection.8.1.1) >> +<< /S /GoTo /D (subsubsection.7.1.2.2) >> endobj 196 0 obj -(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +(\376\377\000A\000A\000C\000D\000E\000C\000\137\000C\000O\000N\000C\000E\000A\000L) endobj 197 0 obj -<< /S /GoTo /D (subsection.8.1.2) >> +<< /S /GoTo /D (subsubsection.7.1.2.3) >> endobj 200 0 obj -(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\000A\000A\000C\000D\000E\000C\000\137\000F\000L\000U\000S\000H) endobj 201 0 obj -<< /S /GoTo /D (subsubsection.8.1.2.1) >> +<< /S /GoTo /D (subsubsection.7.1.2.4) >> endobj 204 0 obj -(\376\377\000A\000A\000C\000D\000E\000C\000\137\000C\000L\000R\000H\000I\000S\000T) +(\376\377\000A\000A\000C\000D\000E\000C\000\137\000I\000N\000T\000R) endobj 205 0 obj -<< /S /GoTo /D (subsubsection.8.1.2.2) >> +<< /S /GoTo /D (subsubsection.7.1.2.5) >> endobj 208 0 obj -(\376\377\000A\000A\000C\000D\000E\000C\000\137\000C\000O\000N\000C\000E\000A\000L) +(\376\377\000I\000S\000\137\000D\000E\000C\000O\000D\000E\000\137\000E\000R\000R\000O\000R) endobj 209 0 obj -<< /S /GoTo /D (subsubsection.8.1.2.3) >> +<< /S /GoTo /D (subsubsection.7.1.2.6) >> endobj 212 0 obj -(\376\377\000A\000A\000C\000D\000E\000C\000\137\000F\000L\000U\000S\000H) +(\376\377\000I\000S\000\137\000I\000N\000I\000T\000\137\000E\000R\000R\000O\000R) endobj 213 0 obj -<< /S /GoTo /D (subsubsection.8.1.2.4) >> +<< /S /GoTo /D (subsubsection.7.1.2.7) >> endobj 216 0 obj -(\376\377\000A\000A\000C\000D\000E\000C\000\137\000I\000N\000T\000R) +(\376\377\000I\000S\000\137\000O\000U\000T\000P\000U\000T\000\137\000V\000A\000L\000I\000D) endobj 217 0 obj -<< /S /GoTo /D (subsubsection.8.1.2.5) >> +<< /S /GoTo /D (subsection.7.1.3) >> endobj 220 0 obj -(\376\377\000I\000S\000\137\000D\000E\000C\000O\000D\000E\000\137\000E\000R\000R\000O\000R) +(\376\377\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 221 0 obj -<< /S /GoTo /D (subsubsection.8.1.2.6) >> +<< /S /GoTo /D (subsubsection.7.1.3.1) >> endobj 224 0 obj -(\376\377\000I\000S\000\137\000I\000N\000I\000T\000\137\000E\000R\000R\000O\000R) +(\376\377\000H\000A\000N\000D\000L\000E\000\137\000A\000A\000C\000D\000E\000C\000O\000D\000E\000R) endobj 225 0 obj -<< /S /GoTo /D (subsubsection.8.1.2.7) >> +<< /S /GoTo /D (subsection.7.1.4) >> endobj 228 0 obj -(\376\377\000I\000S\000\137\000O\000U\000T\000P\000U\000T\000\137\000V\000A\000L\000I\000D) +(\376\377\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000T\000y\000p\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 229 0 obj -<< /S /GoTo /D (subsection.8.1.3) >> +<< /S /GoTo /D (subsubsection.7.1.4.1) >> endobj 232 0 obj -(\376\377\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\000A\000A\000C\000\137\000D\000E\000C\000O\000D\000E\000R\000\137\000E\000R\000R\000O\000R) endobj 233 0 obj -<< /S /GoTo /D (subsubsection.8.1.3.1) >> +<< /S /GoTo /D (subsubsection.7.1.4.2) >> endobj 236 0 obj -(\376\377\000H\000A\000N\000D\000L\000E\000\137\000A\000A\000C\000D\000E\000C\000O\000D\000E\000R) +(\376\377\000A\000A\000C\000D\000E\000C\000\137\000P\000A\000R\000A\000M) endobj 237 0 obj -<< /S /GoTo /D (subsection.8.1.4) >> +<< /S /GoTo /D (subsection.7.1.5) >> endobj 240 0 obj -(\376\377\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000T\000y\000p\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) endobj 241 0 obj -<< /S /GoTo /D (subsubsection.8.1.4.1) >> +<< /S /GoTo /D (subsubsection.7.1.5.1) >> endobj 244 0 obj -(\376\377\000A\000A\000C\000\137\000D\000E\000C\000O\000D\000E\000R\000\137\000E\000R\000R\000O\000R) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000A\000n\000c\000D\000a\000t\000a\000G\000e\000t) endobj 245 0 obj -<< /S /GoTo /D (subsubsection.8.1.4.2) >> +<< /S /GoTo /D (subsubsection.7.1.5.2) >> endobj 248 0 obj -(\376\377\000A\000A\000C\000D\000E\000C\000\137\000P\000A\000R\000A\000M) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000A\000n\000c\000D\000a\000t\000a\000I\000n\000i\000t) endobj 249 0 obj -<< /S /GoTo /D (subsection.8.1.5) >> +<< /S /GoTo /D (subsubsection.7.1.5.3) >> endobj 252 0 obj -(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000C\000l\000o\000s\000e) endobj 253 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.1) >> +<< /S /GoTo /D (subsubsection.7.1.5.4) >> endobj 256 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000A\000n\000c\000D\000a\000t\000a\000G\000e\000t) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000C\000o\000n\000f\000i\000g\000R\000a\000w) endobj 257 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.2) >> +<< /S /GoTo /D (subsubsection.7.1.5.5) >> endobj 260 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000A\000n\000c\000D\000a\000t\000a\000I\000n\000i\000t) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000D\000e\000c\000o\000d\000e\000F\000r\000a\000m\000e) endobj 261 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.3) >> +<< /S /GoTo /D (subsubsection.7.1.5.6) >> endobj 264 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000C\000l\000o\000s\000e) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000F\000i\000l\000l) endobj 265 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.4) >> +<< /S /GoTo /D (subsubsection.7.1.5.7) >> endobj 268 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000C\000o\000n\000f\000i\000g\000R\000a\000w) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000G\000e\000t\000F\000r\000e\000e\000B\000y\000t\000e\000s) endobj 269 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.5) >> +<< /S /GoTo /D (subsubsection.7.1.5.8) >> endobj 272 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000D\000e\000c\000o\000d\000e\000F\000r\000a\000m\000e) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000G\000e\000t\000L\000i\000b\000I\000n\000f\000o) endobj 273 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.6) >> +<< /S /GoTo /D (subsubsection.7.1.5.9) >> endobj 276 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000F\000i\000l\000l) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000G\000e\000t\000S\000t\000r\000e\000a\000m\000I\000n\000f\000o) endobj 277 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.7) >> +<< /S /GoTo /D (subsubsection.7.1.5.10) >> endobj 280 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000G\000e\000t\000F\000r\000e\000e\000B\000y\000t\000e\000s) +(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000O\000p\000e\000n) endobj 281 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.8) >> +<< /S /GoTo /D (subsubsection.7.1.5.11) >> endobj 284 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000G\000e\000t\000L\000i\000b\000I\000n\000f\000o) -endobj -285 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.9) >> -endobj -288 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000G\000e\000t\000S\000t\000r\000e\000a\000m\000I\000n\000f\000o) -endobj -289 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.10) >> -endobj -292 0 obj -(\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000O\000p\000e\000n) -endobj -293 0 obj -<< /S /GoTo /D (subsubsection.8.1.5.11) >> -endobj -296 0 obj (\376\377\000a\000a\000c\000D\000e\000c\000o\000d\000e\000r\000\137\000S\000e\000t\000P\000a\000r\000a\000m) endobj -297 0 obj -<< /S /GoTo /D (section.8.2) >> -endobj -300 0 obj -(\376\377\000m\000a\000i\000n\000.\000c\000p\000p\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) -endobj -301 0 obj -<< /S /GoTo /D (subsection.8.2.1) >> -endobj -304 0 obj -(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) -endobj -305 0 obj -<< /S /GoTo /D (subsection.8.2.2) >> -endobj -308 0 obj -(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -309 0 obj -<< /S /GoTo /D (subsubsection.8.2.2.1) >> -endobj -312 0 obj -(\376\377\000A\000N\000C\000\137\000B\000U\000F\000\137\000S\000I\000Z\000E) -endobj -313 0 obj -<< /S /GoTo /D (subsubsection.8.2.2.2) >> -endobj -316 0 obj -(\376\377\000F\000I\000L\000E\000\137\000N\000A\000M\000E\000\137\000M\000A\000X) -endobj -317 0 obj -<< /S /GoTo /D (subsubsection.8.2.2.3) >> -endobj -320 0 obj -(\376\377\000I\000N\000\137\000B\000U\000F\000\137\000S\000I\000Z\000E) -endobj -321 0 obj -<< /S /GoTo /D (subsubsection.8.2.2.4) >> -endobj -324 0 obj -(\376\377\000N\000\137\000F\000L\000U\000S\000H\000\137\000F\000R\000A\000M\000E\000S) -endobj -325 0 obj -<< /S /GoTo /D (subsubsection.8.2.2.5) >> -endobj -328 0 obj -(\376\377\000N\000O\000\137\000F\000I\000L\000E\000N\000A\000M\000E) -endobj -329 0 obj -<< /S /GoTo /D (subsubsection.8.2.2.6) >> -endobj -332 0 obj -(\376\377\000O\000U\000T\000\137\000B\000U\000F\000\137\000S\000I\000Z\000E) -endobj -333 0 obj -<< /S /GoTo /D (subsection.8.2.3) >> -endobj -336 0 obj -(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -337 0 obj -<< /S /GoTo /D (subsubsection.8.2.3.1) >> -endobj -340 0 obj -(\376\377\000m\000a\000i\000n) -endobj -341 0 obj -<< /S /GoTo /D (subsection.8.2.4) >> -endobj -344 0 obj -(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) -endobj -345 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.1) >> -endobj -348 0 obj -(\376\377\000a\000n\000c\000B\000u\000f\000f\000e\000r) -endobj -349 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.2) >> -endobj -352 0 obj -(\376\377\000a\000n\000c\000F\000i\000l\000e\000n\000a\000m\000e) -endobj -353 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.3) >> -endobj -356 0 obj -(\376\377\000c\000o\000n\000f) -endobj -357 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.4) >> -endobj -360 0 obj -(\376\377\000c\000o\000n\000f\000\137\000m\000e\000m) -endobj -361 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.5) >> -endobj -364 0 obj -(\376\377\000c\000o\000n\000f\000S\000i\000z\000e) -endobj -365 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.6) >> -endobj -368 0 obj -(\376\377\000c\000o\000n\000f\000S\000t\000r\000i\000n\000g) -endobj -369 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.7) >> -endobj -372 0 obj -(\376\377\000i\000n\000B\000u\000f\000f\000e\000r) -endobj -373 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.8) >> -endobj -376 0 obj -(\376\377\000i\000n\000B\000u\000f\000f\000e\000r\000\137\000m\000e\000m) -endobj -377 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.9) >> -endobj -380 0 obj -(\376\377\000i\000n\000p\000u\000t\000F\000i\000l\000e\000n\000a\000m\000e) -endobj -381 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.10) >> -endobj -384 0 obj -(\376\377\000o\000u\000t\000p\000u\000t\000F\000i\000l\000e\000n\000a\000m\000e) -endobj -385 0 obj -<< /S /GoTo /D (subsubsection.8.2.4.11) >> -endobj -388 0 obj -(\376\377\000T\000i\000m\000e\000D\000a\000t\000a) -endobj -389 0 obj -<< /S /GoTo /D [390 0 R /Fit ] >> +285 0 obj +<< /S /GoTo /D [286 0 R /Fit ] >> endobj -394 0 obj << -/Length 956 +290 0 obj << +/Length 954 /Filter /FlateDecode >> stream -xڅVKs6WHT\KIq;i["Z`AЊx5ψ}|(8(xBMI$*گYe8+Ҋr3̒jfo$o7î -j -mI~AYq~Kw|5'G5Sџ%8Q`Qf$1`4+yW;;<"Of\B>(ֳp:%y7'rϏpJ~x] !L9 -/uiÚhlշEE^2ŸmraitI32j7EQzùTA{#{7yx2Hz})U65[{'1٘d.ZGҹ$<#RFzKWš#b -}kL9o]Vil\+YzlW~qcx|afq^||pX[G4 +xڅV[6~fj, MߜlgI5yЂ0jArXg{tۉΘsUGcw?_(QpJb]%Q/Y$s+҉(B渜ثG;&إ]^9,Vo H7kDݔ)Et?m`3Y:Ym?c-?>ZȣwR5/(0OY3j%1`,/t$8ݒx<&O'\A!mC^I%OO0eEAy +1% + +X߯JQ& PuLs+QgF(HbjU=&wU`PP^<Ӫ1HeD.^&`rǒ3n]&qb
sj5LsO+}j<g`he,HЪ+VqI'{?4~2Y{|i.[{'1>ZOVS1mq78><+u[RFK_S<,W;5z`89
{]_KWX[0?1mn-%dF܉j +D֖\\w4N\̙j*.\h\KΤ8lhh9f%=Ww{jQ:u~'Vv>,vÉ^==k ѪOڰal\nq[]اHu^vcҴds;!i`o?pDE endstream endobj -390 0 obj << +286 0 obj << /Type /Page -/Contents 394 0 R -/Resources 393 0 R +/Contents 290 0 R +/Resources 289 0 R /MediaBox [0 0 595.276 841.89] -/Parent 398 0 R -/Group 392 0 R +/Parent 294 0 R +/Group 288 0 R >> endobj -391 0 obj << +287 0 obj << /Type /XObject /Subtype /Image /Width 5000 /Height 1419 /BitsPerComponent 8 /ColorSpace /DeviceRGB -/SMask 399 0 R +/SMask 295 0 R /Length 111531 /Filter /FlateDecode >> @@ -1010,7 +854,7 @@ iux ]* endstream endobj -399 0 obj << +295 0 obj << /Type /XObject /Subtype /Image /Width 5000 @@ -1107,18 +951,18 @@ t8߀%jY03n-M:3z_GFAsVwq]&ΙuAC pl endstream endobj -392 0 obj +288 0 obj <</Type/Group /S/Transparency /CS/DeviceRGB /I true>> endobj -395 0 obj << -/D [390 0 R /XYZ 90 739.935 null] +291 0 obj << +/D [286 0 R /XYZ 90 739.935 null] >> endobj -393 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> -/XObject << /Im1 391 0 R >> +289 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> +/XObject << /Im1 287 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj -402 0 obj << +298 0 obj << /Length 19 /Filter /FlateDecode >> @@ -1126,797 +970,607 @@ stream x3PHW0Pp2A endstream endobj -401 0 obj << +297 0 obj << /Type /Page -/Contents 402 0 R -/Resources 400 0 R +/Contents 298 0 R +/Resources 296 0 R /MediaBox [0 0 595.276 841.89] -/Parent 398 0 R +/Parent 294 0 R >> endobj -400 0 obj << +296 0 obj << /ProcSet [ /PDF ] >> endobj -430 0 obj << -/Length 817 +327 0 obj << +/Length 832 /Filter /FlateDecode >> stream -xYn0+X?liQG5U5 -N Cj~0$"49\h-,h_AϮala -Ț- -RBlپI\y63AYzt_@] - [F#AI#$$(<Lb#,H9a(ʡ -N13{^=U͆h=%imwK/¤Z&E*vx@6gumq(_r/_8VjyUKϓ4ob+ٸo@-O}:d -U#7/Z-UG: -pDNsS5(ADÕ_KAI@@NO)IXMu:$!/*$ -
#5W$8pt۠>5ʐFKPp-äEm
@asd0Sz49MI=D-W| +xYMs0WhvmBL3ئI} K'ȫy+`[DЙF +}Pǃ>=7uL +q.nG/{g
{@ +_z=_Bv6tq\ܹd9jŲ,c9tìrv[6ʟO:Cg$jQrYŲHW
L5vy
Y#t +U=H/*0Y'/eQ q2ZuqxeAeiL+SZ=N;[ȯGþim5bRHY +甛Rv)n2+pT췋A=9tn3%eV( endstream endobj -429 0 obj << +326 0 obj << /Type /Page -/Contents 430 0 R -/Resources 428 0 R +/Contents 327 0 R +/Resources 325 0 R /MediaBox [0 0 595.276 841.89] -/Parent 398 0 R -/Annots [ 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R ] +/Parent 294 0 R +/Annots [ 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R ] >> endobj -403 0 obj << +299 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 574.541 160.007 583.517] +/Rect [89.004 575.23 160.007 584.206] /A << /S /GoTo /D (chapter.1) >> >> endobj -404 0 obj << +300 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 554.577 153.203 565.481] +/Rect [103.948 555.405 153.203 566.309] /A << /S /GoTo /D (section.1.1) >> >> endobj -405 0 obj << +301 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 538.709 191.1 547.555] +/Rect [103.948 539.674 191.1 548.521] /A << /S /GoTo /D (section.1.2) >> >> endobj -406 0 obj << +302 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 507.691 167.648 518.57] +/Rect [89.004 509.346 167.648 520.225] /A << /S /GoTo /D (chapter.2) >> >> endobj -407 0 obj << +303 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 489.631 193.88 500.535] +/Rect [103.948 491.424 193.88 502.328] /A << /S /GoTo /D (section.2.1) >> >> endobj -408 0 obj << +304 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 471.705 198.861 482.609] +/Rect [103.948 473.636 198.861 484.54] /A << /S /GoTo /D (section.2.2) >> >> endobj -409 0 obj << +305 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 453.779 186.438 464.683] +/Rect [103.948 455.848 186.438 466.752] /A << /S /GoTo /D (section.2.3) >> >> endobj -410 0 obj << +306 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 424.819 198.373 435.698] +/Rect [89.004 427.577 198.373 438.456] /A << /S /GoTo /D (chapter.3) >> >> endobj -411 0 obj << +307 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 406.759 289.072 417.662] +/Rect [103.948 409.654 289.072 420.558] /A << /S /GoTo /D (section.3.1) >> >> endobj -412 0 obj << +308 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 388.833 263.897 399.737] +/Rect [103.948 391.866 263.897 402.77] /A << /S /GoTo /D (section.3.2) >> >> endobj -413 0 obj << +309 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 370.907 239.389 381.811] +/Rect [103.948 374.078 239.389 384.982] /A << /S /GoTo /D (section.3.3) >> >> endobj -414 0 obj << +310 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 355.038 186.189 363.885] +/Rect [126.862 358.348 186.189 367.194] /A << /S /GoTo /D (subsection.3.3.1) >> >> endobj -415 0 obj << +311 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 337.112 212.759 345.959] +/Rect [126.862 340.56 212.759 349.406] /A << /S /GoTo /D (subsection.3.3.2) >> >> endobj -416 0 obj << +312 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 317.129 253.994 328.033] +/Rect [126.862 320.714 253.994 331.618] /A << /S /GoTo /D (subsection.3.3.3) >> >> endobj -417 0 obj << +313 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 288.169 197.536 299.048] +/Rect [89.004 294.347 155.484 303.323] /A << /S /GoTo /D (chapter.4) >> >> endobj -418 0 obj << +314 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 270.108 172.949 281.012] +/Rect [103.948 276.579 168.435 285.425] /A << /S /GoTo /D (section.4.1) >> >> endobj -419 0 obj << +315 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 252.183 251.035 263.087] -/A << /S /GoTo /D (subsection.4.1.1) >> +/Rect [89.004 248.153 148.839 257.13] +/A << /S /GoTo /D (chapter.5) >> >> endobj -420 0 obj << +316 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 234.257 242.188 245.161] -/A << /S /GoTo /D (subsection.4.1.2) >> +/Rect [103.948 230.385 162.348 239.232] +/A << /S /GoTo /D (section.5.1) >> >> endobj -421 0 obj << +317 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 207.199 155.484 216.176] -/A << /S /GoTo /D (chapter.5) >> +/Rect [89.004 201.96 196.43 210.937] +/A << /S /GoTo /D (chapter.6) >> >> endobj -422 0 obj << +318 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 189.293 168.435 198.14] -/A << /S /GoTo /D (section.5.1) >> +/Rect [103.948 184.192 249.481 193.039] +/A << /S /GoTo /D (section.6.1) >> >> endobj -423 0 obj << +319 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 160.179 148.839 169.155] -/A << /S /GoTo /D (chapter.6) >> +/Rect [126.862 164.347 243.463 175.251] +/A << /S /GoTo /D (subsection.6.1.1) >> >> endobj -424 0 obj << +320 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 142.273 162.348 151.119] -/A << /S /GoTo /D (section.6.1) >> +/Rect [126.862 148.616 279.707 157.463] +/A << /S /GoTo /D (subsection.6.1.2) >> >> endobj -425 0 obj << +321 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 113.158 196.43 122.134] -/A << /S /GoTo /D (chapter.7) >> +/Rect [158.742 130.828 271.857 139.675] +/A << /S /GoTo /D (subsubsection.6.1.2.1) >> >> endobj -426 0 obj << +322 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 95.252 249.481 104.099] -/A << /S /GoTo /D (section.7.1) >> +/Rect [158.742 110.983 263 121.887] +/A << /S /GoTo /D (subsubsection.6.1.2.2) >> >> endobj -431 0 obj << -/D [429 0 R /XYZ 90 604.454 null] +323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.742 93.195 287.349 104.099] +/A << /S /GoTo /D (subsubsection.6.1.2.3) >> >> endobj -428 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +328 0 obj << +/D [326 0 R /XYZ 90 604.454 null] +>> endobj +325 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -470 0 obj << -/Length 983 +367 0 obj << +/Length 1005 /Filter /FlateDecode >> stream -xMs8 -}hB#?mKqӈPAY]ō?ml063|&Y
?g+sr=WRi j(k%^'ưn=x5,؟Ps%մ3 -Au{͒,i˚&1c*>zJQۥ+d=k)YF9mbfD -)%_>-C >q_6q +xMF~>B}dq\&[=.UFJ6>͋:ڨl%"jiW3`;=B@X!g l0hQ?O(2>f܂h8?[P]` +E
j#-,8+8o-K~zV,mw_RAjAf-dÄ`d.LeԶk=!N];ېLhB*x͙D$xi +A~G~
X;F32sI:I:phY%k@;qKX<ge9^P#
+q0/Ҝ&x;dC~^9 UT#r.a(78J4#ji%Rx]Hv;y +Q P`I0'1^$Fj)jNa8K,yrU~<B$AAx +8DiJ^(QQ˴u1:\4UU&-eYa-8z_`ydy3D",ǛvlHiD +qw,dID n+Ǒϗ<O,At,>2mT˩\O5~3|kz،d3Y3HەIN7,7:Z_&X=cJcAZ2}Z-KfN;NיtC\Q{5=f<6vz@ԩG1VIZbQ+Q#:4hWG~2xIR#DQ=@mt>+zGӣ?Pmw^kq~.md*#N"+&rx=7هKs}YHeݑBwXl,ݮwYaU%Fk"zcejs*aU endstream endobj -469 0 obj << +366 0 obj << /Type /Page -/Contents 470 0 R -/Resources 468 0 R +/Contents 367 0 R +/Resources 365 0 R /MediaBox [0 0 595.276 841.89] -/Parent 398 0 R -/Annots [ 427 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R ] +/Parent 294 0 R +/Annots [ 324 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R ] >> endobj -427 0 obj << +324 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 726.819 243.463 737.723] -/A << /S /GoTo /D (subsection.7.1.1) >> +/Rect [158.742 728.876 213.756 737.723] +/A << /S /GoTo /D (subsubsection.6.1.2.4) >> >> endobj -432 0 obj << +329 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 711.077 279.707 719.924] -/A << /S /GoTo /D (subsection.7.1.2) >> +/Rect [158.742 711.077 230.363 719.924] +/A << /S /GoTo /D (subsubsection.6.1.2.5) >> >> endobj -433 0 obj << +330 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 691.221 263 702.125] -/A << /S /GoTo /D (subsubsection.7.1.2.1) >> +/Rect [158.742 691.221 259.693 702.125] +/A << /S /GoTo /D (subsubsection.6.1.2.6) >> >> endobj -434 0 obj << +331 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 673.422 287.349 684.326] -/A << /S /GoTo /D (subsubsection.7.1.2.2) >> +/Rect [158.742 673.422 238.114 684.326] +/A << /S /GoTo /D (subsubsection.6.1.2.7) >> >> endobj -435 0 obj << +332 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 657.68 213.756 666.527] -/A << /S /GoTo /D (subsubsection.7.1.2.3) >> +/Rect [158.742 657.68 228.55 666.527] +/A << /S /GoTo /D (subsubsection.6.1.2.8) >> >> endobj -436 0 obj << +333 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 639.881 230.363 648.728] -/A << /S /GoTo /D (subsubsection.7.1.2.4) >> +/Rect [158.742 637.824 270.064 648.728] +/A << /S /GoTo /D (subsubsection.6.1.2.9) >> >> endobj -437 0 obj << +334 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 620.025 259.693 630.929] -/A << /S /GoTo /D (subsubsection.7.1.2.5) >> +/Rect [158.742 620.025 220.401 630.929] +/A << /S /GoTo /D (subsubsection.6.1.2.10) >> >> endobj -438 0 obj << +335 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 602.226 238.114 613.13] -/A << /S /GoTo /D (subsubsection.7.1.2.6) >> +/Rect [158.742 604.284 241.97 613.13] +/A << /S /GoTo /D (subsubsection.6.1.2.11) >> >> endobj -439 0 obj << +336 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 586.485 228.55 595.331] -/A << /S /GoTo /D (subsubsection.7.1.2.7) >> +/Rect [158.742 586.485 285.147 595.331] +/A << /S /GoTo /D (subsubsection.6.1.2.12) >> >> endobj -440 0 obj << +337 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 566.628 270.064 577.532] -/A << /S /GoTo /D (subsubsection.7.1.2.8) >> +/Rect [158.742 566.628 258.039 577.532] +/A << /S /GoTo /D (subsubsection.6.1.2.13) >> >> endobj -441 0 obj << +338 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 548.829 220.401 559.733] -/A << /S /GoTo /D (subsubsection.7.1.2.9) >> +/Rect [158.742 550.887 256.376 559.733] +/A << /S /GoTo /D (subsubsection.6.1.2.14) >> >> endobj -442 0 obj << +339 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 533.088 241.97 541.934] -/A << /S /GoTo /D (subsubsection.7.1.2.10) >> +/Rect [158.742 533.088 286.811 541.934] +/A << /S /GoTo /D (subsubsection.6.1.2.15) >> >> endobj -443 0 obj << +340 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 515.169 285.147 524.136] -/A << /S /GoTo /D (subsubsection.7.1.2.11) >> +/Rect [158.742 515.289 289.331 524.136] +/A << /S /GoTo /D (subsubsection.6.1.2.16) >> >> endobj -444 0 obj << +341 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 495.433 258.039 506.337] -/A << /S /GoTo /D (subsubsection.7.1.2.12) >> +/Rect [158.742 495.433 262.224 506.337] +/A << /S /GoTo /D (subsubsection.6.1.2.17) >> >> endobj -445 0 obj << +342 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 479.571 256.376 488.538] -/A << /S /GoTo /D (subsubsection.7.1.2.13) >> +/Rect [158.742 477.634 268.54 488.538] +/A << /S /GoTo /D (subsubsection.6.1.2.18) >> >> endobj -446 0 obj << +343 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 461.772 286.811 470.739] -/A << /S /GoTo /D (subsubsection.7.1.2.14) >> +/Rect [158.742 459.835 259.444 470.739] +/A << /S /GoTo /D (subsubsection.6.1.2.19) >> >> endobj -447 0 obj << +344 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 443.973 289.331 452.94] -/A << /S /GoTo /D (subsubsection.7.1.2.15) >> +/Rect [158.742 442.036 227.594 452.94] +/A << /S /GoTo /D (subsubsection.6.1.2.20) >> >> endobj -448 0 obj << +345 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 424.237 262.224 435.141] -/A << /S /GoTo /D (subsubsection.7.1.2.16) >> +/Rect [158.742 424.237 248.067 435.141] +/A << /S /GoTo /D (subsubsection.6.1.2.21) >> >> endobj -449 0 obj << +346 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 406.438 268.54 417.342] -/A << /S /GoTo /D (subsubsection.7.1.2.17) >> +/Rect [89.004 397.814 189.785 406.791] +/A << /S /GoTo /D (chapter.7) >> >> endobj -450 0 obj << +347 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 388.639 259.444 399.543] -/A << /S /GoTo /D (subsubsection.7.1.2.18) >> +/Rect [103.948 378.954 257.092 388.882] +/A << /S /GoTo /D (section.7.1) >> >> endobj -451 0 obj << +348 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 370.84 227.594 381.744] -/A << /S /GoTo /D (subsubsection.7.1.2.19) >> +/Rect [126.862 360.179 243.463 371.083] +/A << /S /GoTo /D (subsection.7.1.1) >> >> endobj -452 0 obj << +349 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 353.041 248.067 363.945] -/A << /S /GoTo /D (subsubsection.7.1.2.20) >> +/Rect [126.862 344.437 251.215 353.284] +/A << /S /GoTo /D (subsection.7.1.2) >> >> endobj -453 0 obj << +350 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 326.619 189.785 335.595] -/A << /S /GoTo /D (chapter.8) >> +/Rect [158.742 325.557 288.635 335.485] +/A << /S /GoTo /D (subsubsection.7.1.2.1) >> >> endobj -454 0 obj << +351 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 307.759 257.092 317.686] -/A << /S /GoTo /D (section.8.1) >> +/Rect [158.742 307.759 294.164 317.686] +/A << /S /GoTo /D (subsubsection.7.1.2.2) >> >> endobj -455 0 obj << +352 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 288.983 243.463 299.887] -/A << /S /GoTo /D (subsection.8.1.1) >> +/Rect [158.742 289.96 278.672 299.887] +/A << /S /GoTo /D (subsubsection.7.1.2.3) >> >> endobj -456 0 obj << +353 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 273.242 251.215 282.088] -/A << /S /GoTo /D (subsection.8.1.2) >> +/Rect [158.742 272.161 270.363 282.088] +/A << /S /GoTo /D (subsubsection.7.1.2.4) >> >> endobj -457 0 obj << +354 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 254.362 288.635 264.289] -/A << /S /GoTo /D (subsubsection.8.1.2.1) >> +/Rect [158.742 254.362 293.616 264.289] +/A << /S /GoTo /D (subsubsection.7.1.2.5) >> >> endobj -458 0 obj << +355 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 236.563 294.164 246.49] -/A << /S /GoTo /D (subsubsection.8.1.2.2) >> +/Rect [158.742 236.563 273.133 246.49] +/A << /S /GoTo /D (subsubsection.7.1.2.6) >> >> endobj -459 0 obj << +356 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 218.764 278.672 228.691] -/A << /S /GoTo /D (subsubsection.8.1.2.3) >> +/Rect [158.742 218.764 289.332 228.691] +/A << /S /GoTo /D (subsubsection.7.1.2.7) >> >> endobj -460 0 obj << +357 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 200.965 270.363 210.893] -/A << /S /GoTo /D (subsubsection.8.1.2.4) >> +/Rect [126.862 199.989 257.053 210.893] +/A << /S /GoTo /D (subsection.7.1.3) >> >> endobj -461 0 obj << +358 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 183.166 293.616 193.094] -/A << /S /GoTo /D (subsubsection.8.1.2.5) >> +/Rect [158.742 183.166 315.185 193.094] +/A << /S /GoTo /D (subsubsection.7.1.3.1) >> >> endobj -462 0 obj << +359 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 165.367 273.133 175.295] -/A << /S /GoTo /D (subsubsection.8.1.2.6) >> +/Rect [126.862 164.391 298.288 175.295] +/A << /S /GoTo /D (subsection.7.1.4) >> >> endobj -463 0 obj << +360 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 147.568 289.332 157.496] -/A << /S /GoTo /D (subsubsection.8.1.2.7) >> +/Rect [158.742 147.568 312.037 157.496] +/A << /S /GoTo /D (subsubsection.7.1.4.1) >> >> endobj -464 0 obj << +361 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 128.793 257.053 139.697] -/A << /S /GoTo /D (subsection.8.1.3) >> +/Rect [158.742 129.769 281.631 139.697] +/A << /S /GoTo /D (subsubsection.7.1.4.2) >> >> endobj -465 0 obj << +362 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 111.97 315.185 121.898] -/A << /S /GoTo /D (subsubsection.8.1.3.1) >> +/Rect [126.862 113.051 260.081 121.898] +/A << /S /GoTo /D (subsection.7.1.5) >> >> endobj -466 0 obj << +363 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 93.195 298.288 104.099] -/A << /S /GoTo /D (subsection.8.1.4) >> +/Rect [158.742 94.171 303.369 104.099] +/A << /S /GoTo /D (subsubsection.7.1.5.1) >> >> endobj -468 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +365 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -509 0 obj << -/Length 1015 +379 0 obj << +/Length 430 /Filter /FlateDecode >> stream -xo@+QdG]ualH,_CEVY%}zps< -Yr=:\q -F
]ˇ템dy$<D4sެH7tnklvn38Y5kQ4uE!|mSn#ffZ%'\F$!qo1}tGvA:c[|dJxX^^~C%_Dy멼aUaP=65%\ߋyoExH`#m^R?Llx3DԙE$Uڛ^1 -!~p<MF~q2QfLa\SRF*;NHic;aF1KE(㢽W$⤺RB@~8+ksMM(Z -oVȋ)BŲ&*Nڊ)F"J`&#nq#]Cm/RFJfܪ|< --Gc##/-^Wq]'yoz/EQUorLN>PZ
߸}d8}{kr&T,rsU=wlܛMpڗǖq.n0i\vε)HM6kOmx&U-ZhI'fx;>&g_^@K?/$&.~T3o)VOBH}zL.nQ|9ӒI/V
Ӧ,ؕKY$ո<RY3hp,R"΄41,MZi2j6j]K -XupXSCXEOT&5J& -gD'R +xn0EY&c;eK(RpQ$m5/ ⨢馔(x0wx@72D0 +~>i'`BD#kjDz,[v}x,]H.`4C, b)'b6ɶPo'ɣB +$96:$ Bi:6/:-ӛ<+Bw`"> BC
Q<Hl$11qSk:_jI endstream endobj -508 0 obj << +378 0 obj << /Type /Page -/Contents 509 0 R -/Resources 507 0 R +/Contents 379 0 R +/Resources 377 0 R /MediaBox [0 0 595.276 841.89] -/Parent 398 0 R -/Annots [ 467 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R ] ->> endobj -467 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 727.795 312.037 737.723] -/A << /S /GoTo /D (subsubsection.8.1.4.1) >> ->> endobj -471 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 709.692 281.631 719.619] -/A << /S /GoTo /D (subsubsection.8.1.4.2) >> ->> endobj -472 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 692.669 260.081 701.516] -/A << /S /GoTo /D (subsection.8.1.5) >> ->> endobj -473 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 673.485 303.369 683.412] -/A << /S /GoTo /D (subsubsection.8.1.5.1) >> ->> endobj -474 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 655.381 302.821 665.309] -/A << /S /GoTo /D (subsubsection.8.1.5.2) >> ->> endobj -475 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 637.277 276.271 647.205] -/A << /S /GoTo /D (subsubsection.8.1.5.3) >> ->> endobj -476 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 618.198 298.816 629.102] -/A << /S /GoTo /D (subsubsection.8.1.5.4) >> ->> endobj -477 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 601.07 309.456 610.998] -/A << /S /GoTo /D (subsubsection.8.1.5.5) >> ->> endobj -478 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 582.967 267.424 592.894] -/A << /S /GoTo /D (subsubsection.8.1.5.6) >> ->> endobj -479 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 563.887 308.36 574.791] -/A << /S /GoTo /D (subsubsection.8.1.5.7) >> ->> endobj -480 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 546.76 298.398 556.687] -/A << /S /GoTo /D (subsubsection.8.1.5.8) >> ->> endobj -481 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 528.656 312.783 538.584] -/A << /S /GoTo /D (subsubsection.8.1.5.9) >> ->> endobj -482 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 509.576 275.155 520.48] -/A << /S /GoTo /D (subsubsection.8.1.5.10) >> ->> endobj -483 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 492.449 291.613 502.377] -/A << /S /GoTo /D (subsubsection.8.1.5.11) >> ->> endobj -484 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.948 473.369 226.517 484.273] -/A << /S /GoTo /D (section.8.2) >> ->> endobj -485 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 455.266 243.463 466.17] -/A << /S /GoTo /D (subsection.8.2.1) >> ->> endobj -486 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 439.22 251.215 448.066] -/A << /S /GoTo /D (subsection.8.2.2) >> +/Parent 294 0 R +/Annots [ 364 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R ] >> endobj -487 0 obj << +364 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 420.035 272.884 429.963] -/A << /S /GoTo /D (subsubsection.8.2.2.1) >> +/Rect [158.742 727.795 302.821 737.723] +/A << /S /GoTo /D (subsubsection.7.1.5.2) >> >> endobj -488 0 obj << +368 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 401.931 284.799 411.859] -/A << /S /GoTo /D (subsubsection.8.2.2.2) >> +/Rect [158.742 710.171 276.271 720.098] +/A << /S /GoTo /D (subsubsection.7.1.5.3) >> >> endobj -489 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 383.828 262.363 393.756] -/A << /S /GoTo /D (subsubsection.8.2.2.3) >> ->> endobj -490 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 365.724 290.149 375.652] -/A << /S /GoTo /D (subsubsection.8.2.2.4) >> ->> endobj -491 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 347.621 270.961 357.548] -/A << /S /GoTo /D (subsubsection.8.2.2.5) >> ->> endobj -492 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 329.517 272.326 339.445] -/A << /S /GoTo /D (subsubsection.8.2.2.6) >> ->> endobj -493 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 312.495 260.081 321.341] -/A << /S /GoTo /D (subsection.8.2.3) >> ->> endobj -494 0 obj << +369 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 294.391 221.507 303.238] -/A << /S /GoTo /D (subsubsection.8.2.3.1) >> +/Rect [158.742 691.57 298.816 702.474] +/A << /S /GoTo /D (subsubsection.7.1.5.4) >> >> endobj -495 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.862 276.288 257.849 285.134] -/A << /S /GoTo /D (subsection.8.2.4) >> ->> endobj -496 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 258.184 241.163 267.031] -/A << /S /GoTo /D (subsubsection.8.2.4.1) >> ->> endobj -497 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 240.081 252.49 248.927] -/A << /S /GoTo /D (subsubsection.8.2.4.2) >> ->> endobj -498 0 obj << +370 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 221.977 219.285 230.824] -/A << /S /GoTo /D (subsubsection.8.2.4.3) >> +/Rect [158.742 674.922 309.456 684.85] +/A << /S /GoTo /D (subsubsection.7.1.5.5) >> >> endobj -499 0 obj << +371 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 202.792 244.191 212.72] -/A << /S /GoTo /D (subsubsection.8.2.4.4) >> +/Rect [158.742 657.298 267.424 667.225] +/A << /S /GoTo /D (subsubsection.7.1.5.6) >> >> endobj -500 0 obj << +372 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 185.77 236.44 194.617] -/A << /S /GoTo /D (subsubsection.8.2.4.5) >> +/Rect [158.742 638.697 308.36 649.601] +/A << /S /GoTo /D (subsubsection.7.1.5.7) >> >> endobj -501 0 obj << +373 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 165.609 243.643 176.513] -/A << /S /GoTo /D (subsubsection.8.2.4.6) >> +/Rect [158.742 622.049 298.398 631.977] +/A << /S /GoTo /D (subsubsection.7.1.5.8) >> >> endobj -502 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 149.563 235.086 158.41] -/A << /S /GoTo /D (subsubsection.8.2.4.7) >> ->> endobj -503 0 obj << +374 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 130.378 259.992 140.306] -/A << /S /GoTo /D (subsubsection.8.2.4.8) >> +/Rect [158.742 604.425 312.783 614.352] +/A << /S /GoTo /D (subsubsection.7.1.5.9) >> >> endobj -504 0 obj << +375 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 111.299 259.145 122.202] -/A << /S /GoTo /D (subsubsection.8.2.4.9) >> +/Rect [158.742 585.824 275.155 596.728] +/A << /S /GoTo /D (subsubsection.7.1.5.10) >> >> endobj -505 0 obj << +376 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 93.195 264.126 104.099] -/A << /S /GoTo /D (subsubsection.8.2.4.10) >> +/Rect [158.742 569.176 291.613 579.103] +/A << /S /GoTo /D (subsubsection.7.1.5.11) >> >> endobj -507 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +377 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -512 0 obj << -/Length 219 +382 0 obj << +/Length 19 /Filter /FlateDecode >> stream -xݑ;OA)z; -2݆(VV'9g79{ x0b"1 P^!腡젳d?ܺ,@CBΡqYf˲̬#FM&UW=U`e]y.y$osNzQ.0 [dvMdSo}35YEx"mο̛O5G.)*_xv +x3PHW0Pp2A endstream endobj -511 0 obj << +381 0 obj << /Type /Page -/Contents 512 0 R -/Resources 510 0 R +/Contents 382 0 R +/Resources 380 0 R /MediaBox [0 0 595.276 841.89] -/Parent 398 0 R -/Annots [ 506 0 R ] +/Parent 294 0 R >> endobj -506 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 728.876 241.073 737.723] -/A << /S /GoTo /D (subsubsection.8.2.4.11) >> ->> endobj -510 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> -/ProcSet [ /PDF /Text ] +380 0 obj << +/ProcSet [ /PDF ] >> endobj -515 0 obj << +385 0 obj << /Length 1491 /Filter /FlateDecode >> @@ -1932,39 +1586,39 @@ gA/4A(t+R%w`8V$,y#hRD'm*8,S4iOC2ʒ x<{~:7l(:t7J>[T]'KQI%hI
bC*HZ'Ᵹ!'rE4`(CO$`mM2+`s.4_^j:7>5!
̹!q܁A-i ӠAv֝<ޔQV$MRҐ?XA0"B1,QnGch5ۯ@Zh^nKW? Qڞ>3ۮE PoWZ)Ov̆I#cOle9[n1hM
-&&UЃkˣySЖMGN:CK/aۚbj<keg*d7cZ-1Gi@nj1F7'-Ztrjc7m(*fb3/Kmۛ&B'؏OQO endstream endobj -514 0 obj << +384 0 obj << /Type /Page -/Contents 515 0 R -/Resources 513 0 R +/Contents 385 0 R +/Resources 383 0 R /MediaBox [0 0 595.276 841.89] -/Parent 520 0 R +/Parent 390 0 R >> endobj -516 0 obj << -/D [514 0 R /XYZ 89 770.89 null] +386 0 obj << +/D [384 0 R /XYZ 89 770.89 null] >> endobj 2 0 obj << -/D [514 0 R /XYZ 90 739.935 null] +/D [384 0 R /XYZ 90 739.935 null] >> endobj -517 0 obj << -/D [514 0 R /XYZ 90 553.953 null] +387 0 obj << +/D [384 0 R /XYZ 90 553.953 null] >> endobj -518 0 obj << -/D [514 0 R /XYZ 90 553.953 null] +388 0 obj << +/D [384 0 R /XYZ 90 553.953 null] >> endobj 6 0 obj << -/D [514 0 R /XYZ 90 553.953 null] +/D [384 0 R /XYZ 90 553.953 null] >> endobj -519 0 obj << -/D [514 0 R /XYZ 118.403 425.312 null] +389 0 obj << +/D [384 0 R /XYZ 118.403 425.312 null] >> endobj 10 0 obj << -/D [514 0 R /XYZ 90 407.464 null] +/D [384 0 R /XYZ 90 407.464 null] >> endobj -513 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +383 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -523 0 obj << +393 0 obj << /Length 146 /Filter /FlateDecode >> @@ -1975,272 +1629,225 @@ xڕ l4xc-?j_1f endstream endobj -522 0 obj << +392 0 obj << /Type /Page -/Contents 523 0 R -/Resources 521 0 R +/Contents 393 0 R +/Resources 391 0 R /MediaBox [0 0 595.276 841.89] -/Parent 520 0 R +/Parent 390 0 R >> endobj -524 0 obj << -/D [522 0 R /XYZ 89 770.89 null] +394 0 obj << +/D [392 0 R /XYZ 89 770.89 null] >> endobj -521 0 obj << -/Font << /F22 396 0 R >> +391 0 obj << +/Font << /F22 292 0 R >> /ProcSet [ /PDF /Text ] >> endobj -537 0 obj << -/Length 1949 +404 0 obj << +/Length 1934 /Filter /FlateDecode >> stream -xڍXݓ6_X+Q_taͦ{L2m_ڛ,S6T6{(ko' @?Ex*nX(s-E-ux-~6rXDb߇F"Fhʲ0]RxC5<¯I)N$+If|*(xG7ԃ,ʰEb"&"c"9GVڨIVו;⪎ vWq'膸lee*YYtfy%326#T~qYFD pQP G -ć -+ - -e[\QEZɶ@%Q`5;Z!&LlbxXN``cn#`,]`<K{SF#Y0BZMwBR'I Ùt1M_~ޯ4gU}.Nw$ -ŷ[|wqIΕ e|gsM -eFXYzA_,!tCƔ)gP? -yGapYQ ݊.;FwwDC͟%QIq4pqEZv}\w3vjiL3ĩQ}'lΠ` -,Pj4
Mg<Ɯ -g8iX%Y%/fɕn`& q)݄#>mpHN1M{{W~^|pD&9}꿯\N&p}AF/cx:4Y Aɭl74fIyT$J8o%A10u$WhLO*[Z%HM3uf8qpp\t(x#Qs\MUY*~Su3l/CϛW52a +xڍXKs8W6TMDK9x8ݤ{Lh +PCۍn#OF燖aݫk!V" +\dfUF<-lXVȢ@'ia-bԈV,ӭ w~GRrR0IsJy"x( +.?ސ4zt$2,s؆ImAXȃl`E6Aue垸#=Jb4]Ɓb v !.+e [Y>?pIyp2q<>3b\'326#T~qYFD OpQP G +Fiec'^DQ ֒x1a!.Epr + N[$:@ѐ7 7sXXO4 dEzh3(<=({ԣ]"Ø+y"@=Qi>4Yd,9&r,~&yP!'%~s6Cx8;gs1Ft-ρ1:搥>uR,"#W0$̊36yy_s& +!'s/$9Nn*ìJ6ԯ4Hn>yys_oP$ endstream endobj -536 0 obj << +403 0 obj << /Type /Page -/Contents 537 0 R -/Resources 535 0 R +/Contents 404 0 R +/Resources 402 0 R /MediaBox [0 0 595.276 841.89] -/Parent 520 0 R -/Annots [ 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R ] +/Parent 390 0 R +/Annots [ 395 0 R 396 0 R 397 0 R 398 0 R ] >> endobj -525 0 obj << +395 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [202.716 476.14 272.085 486.068] /A << /S /GoTo /D (aacdecoder__lib_8h) >> >> endobj -526 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.154 339.579 179.948 350.483] -/A << /S /GoTo /D (main_8cpp) >> ->> endobj -527 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.326 279.803 449.021 290.707] -/A << /S /GoTo /D (CommandLineUsage) >> ->> endobj -528 0 obj << +396 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [133.008 217.224 215.21 228.128] /A << /S /GoTo /D (aacdecoder__lib_8h_ac8580fe563e79afe695d7b0b32ea0fed) >> >> endobj -529 0 obj << +397 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [130.579 136.696 236.441 147.6] /A << /S /GoTo /D (aacdecoder__lib_8h_a6016435b8679d2793078b10ecaf3d05d) >> >> endobj -530 0 obj << +398 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [173.128 112.786 289.63 123.69] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -538 0 obj << -/D [536 0 R /XYZ 89 770.89 null] +405 0 obj << +/D [403 0 R /XYZ 89 770.89 null] >> endobj 14 0 obj << -/D [536 0 R /XYZ 90 739.935 null] +/D [403 0 R /XYZ 90 739.935 null] >> endobj -539 0 obj << -/D [536 0 R /XYZ 90 549.218 null] +406 0 obj << +/D [403 0 R /XYZ 90 549.218 null] >> endobj -540 0 obj << -/D [536 0 R /XYZ 90 549.218 null] +407 0 obj << +/D [403 0 R /XYZ 90 549.218 null] >> endobj 18 0 obj << -/D [536 0 R /XYZ 90 549.218 null] +/D [403 0 R /XYZ 90 549.218 null] >> endobj -541 0 obj << -/D [536 0 R /XYZ 302.62 448.737 null] +408 0 obj << +/D [403 0 R /XYZ 302.62 448.737 null] >> endobj 22 0 obj << -/D [536 0 R /XYZ 90 428.837 null] +/D [403 0 R /XYZ 90 428.837 null] >> endobj -542 0 obj << -/D [536 0 R /XYZ 90 232.748 null] +409 0 obj << +/D [403 0 R /XYZ 90 232.748 null] >> endobj -544 0 obj << -/D [536 0 R /XYZ 90 168.823 null] +411 0 obj << +/D [403 0 R /XYZ 90 168.823 null] >> endobj -545 0 obj << -/D [536 0 R /XYZ 90 108.719 null] +412 0 obj << +/D [403 0 R /XYZ 90 108.719 null] >> endobj -535 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F37 543 0 R >> +402 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F37 410 0 R >> /ProcSet [ /PDF /Text ] >> endobj -563 0 obj << -/Length 2405 +425 0 obj << +/Length 2389 /Filter /FlateDecode >> stream -xڝr_ڗU#. T{8Yk&n 屎6?ntC.{f_D -UT[}JVRRl\Jde~
-rzB[:³#"{ZZًzpGkVOWɢvK<@0 -("ܯB.:U,i,8g+gxc`]ʚ\OkeY$X50wjdrg/zӻۛ8^<ʹ<@L_'T$=}d$fXo
F jV^^RU<0yÂtn?Ԛo8ec -oTM~S0IGf5eվc;kmzWsت8\ٶMy©s(xg1;'`̖rۿމզ
V ?S3]bqcx,V/`EQWTE)u5"ɲ0,(ef|Hn:,72 WFŸY:(tȟ<@T\lhQ+ -'J`*T{ՊzMsci+Gv1n`>[&~W4G1tDk)ّOITw+&N I+ah{FlİbmX4
50[IʙuKl{6 *_S3tX >D[h$D~GӜj]-Ҫ٨-,!$u ?"?Np}zv,fS5L՚;tE%1N$tPUdVci/$=çWvr@BSðnpK -?L53:(@8KSƠ䄹QBk"OPqnJ˱m*QZ6Z7TNRVAGRCYyLA`υgABxҎ~܁3pmjA^*a`aY0kL1<`jb݁k h\̧32njtb -e',`Ar0s IA@O-HB -C,ԛ
jx`-3vy
L[݇#v8DB?X@MM2L _m[Pʼ0в2ڞ9xJUG/<\M3<#>Uͤk
<1! +xڝYYs~ׯ@K*NV*,9XɊv*nDcn|{}!fzzg-zuNkc[5$H">ۡ+ +("iWfSEG?*PJ%
lEO߰V KSYw +<V9x.̞*٫ܙ~?}넞}O35n?<||ק)c$fXoMFYh+\b/w/
'!/(vYZ
xB~jtlVYSmK+Tȶm2u(veG3Tն9q`!vN0[Jk=9
Vנn?S]bqEd_45ў~CR2j3deaD:0t#:1ne. W@bDH,m5rZONJ$0)7 O4
&pdqH sQ#;GǪCARWn=zռ\%lWbkG~1qDgDn2 +?[c._8iB-^S7#9E73Ei6:g{6A-lVuۦevl2\y*俛"nN'dMS|fZ3{Pz +Ez۶mG2CG}.,JE9qt߷:pUuI1TkdLQ$PcY-G@]wCp
/md]sow.
tNԮ]i^{MO/uy2g~CVYgB{ +Q#{ޫQkrVI[(<NDT,LP(i+DFv1n +[Ь1SLCje +˪i)x9(``,Mޡ*"rM x +[cE;M/Mle
iM}.eR!,?\4kx.<J6Zq8Og9;bCW9!xqZEGfPwT@2p1}yJx>O%6 +q2g<ge!?QɧQ7@MF*8l9tsjqr2 R,2ne&8Z=# +ƇߘĐKܹ`DG)w}zzy +EHXD{8bT
Cygnb8ѷSoɜ@Jo"䍽+ \7;P03WZ1rGO2Ts2 +HԨ& J|zxEdF]BT(GsMbGLj@C>zZq2.H7qV{+zjH?4}c):3Y:hQ,pPJx `tPHbGU-: endstream endobj -562 0 obj << +424 0 obj << /Type /Page -/Contents 563 0 R -/Resources 561 0 R +/Contents 425 0 R +/Resources 423 0 R /MediaBox [0 0 595.276 841.89] -/Parent 520 0 R -/Group 392 0 R -/Annots [ 531 0 R 532 0 R 533 0 R 566 0 R 534 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 572 0 R 559 0 R ] +/Parent 390 0 R +/Group 288 0 R +/Annots [ 399 0 R 400 0 R 428 0 R 401 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R ] >> endobj -531 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [469.394 688.981 508.188 699.885] -/A << /S /GoTo /D (main_8cpp) >> ->> endobj -532 0 obj << +399 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [228.074 677.026 344.577 687.929] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -533 0 obj << +400 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [433.11 677.026 513.996 687.929] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ad8e91a23786bc032e507dfbd036f63c4) >> >> endobj -566 0 obj << +428 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.91 665.07 184.525 675.974] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ad8e91a23786bc032e507dfbd036f63c4) >> >> endobj -534 0 obj << +401 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [305.852 665.07 380.321 675.974] /A << /S /GoTo /D (aacdecoder__lib_8h_a6d508fce68c364f5dabc9195e701ecf8) >> >> endobj -552 0 obj << +417 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [133.754 619.262 208.224 630.166] /A << /S /GoTo /D (aacdecoder__lib_8h_a6d508fce68c364f5dabc9195e701ecf8) >> >> endobj -553 0 obj << +418 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [133.071 548.567 249.573 559.471] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -554 0 obj << +419 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [195.961 458.943 315.79 469.847] /A << /S /GoTo /D (aacdecoder__lib_8h_a60aa42cb3ddc804b44ce61d877d0501e) >> >> endobj -555 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.346 449.479 392.14 460.382] -/A << /S /GoTo /D (main_8cpp) >> ->> endobj -556 0 obj << +420 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [133.008 317.553 216.325 328.457] /A << /S /GoTo /D (aacdecoder__lib_8h_acca8f4cf9757885d6c654de37a43072f) >> >> endobj -557 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [325.7 176.881 364.494 187.785] -/A << /S /GoTo /D (main_8cpp) >> ->> endobj -558 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [468.935 176.881 513.996 187.785] -/A << /S /GoTo /D (main_8cpp_a08a7e8a6abdc5cf6d2ac4e978e084d1a) >> ->> endobj -572 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 164.926 112.027 175.83] -/A << /S /GoTo /D (main_8cpp_a08a7e8a6abdc5cf6d2ac4e978e084d1a) >> ->> endobj -559 0 obj << +421 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [139.807 152.971 214.277 163.875] /A << /S /GoTo /D (aacdecoder__lib_8h_a6d508fce68c364f5dabc9195e701ecf8) >> >> endobj -564 0 obj << -/D [562 0 R /XYZ 89 770.89 null] +426 0 obj << +/D [424 0 R /XYZ 89 770.89 null] >> endobj -565 0 obj << -/D [562 0 R /XYZ 90 710.306 null] +427 0 obj << +/D [424 0 R /XYZ 90 710.306 null] >> endobj -567 0 obj << -/D [562 0 R /XYZ 90 635.94 null] +429 0 obj << +/D [424 0 R /XYZ 90 635.94 null] >> endobj -568 0 obj << -/D [562 0 R /XYZ 90 567.401 null] +430 0 obj << +/D [424 0 R /XYZ 90 567.401 null] >> endobj -569 0 obj << -/D [562 0 R /XYZ 90 388.153 null] +431 0 obj << +/D [424 0 R /XYZ 90 388.153 null] >> endobj -570 0 obj << -/D [562 0 R /XYZ 90 336.387 null] +432 0 obj << +/D [424 0 R /XYZ 90 336.387 null] >> endobj -571 0 obj << -/D [562 0 R /XYZ 90 281.513 null] +433 0 obj << +/D [424 0 R /XYZ 90 281.513 null] >> endobj 26 0 obj << -/D [562 0 R /XYZ 90 274.111 null] +/D [424 0 R /XYZ 90 274.111 null] >> endobj -561 0 obj << -/Font << /F22 396 0 R /F37 543 0 R /F23 397 0 R >> +423 0 obj << +/Font << /F22 292 0 R /F37 410 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -580 0 obj << +440 0 obj << /Length 1021 /Filter /FlateDecode >> @@ -2253,22 +1860,22 @@ s73"?O]6ƟCǤ*9#Ng;lx,%,S\@LJ)(N3W$)6 ,R8V?" 51;ucOy{{$g0?EJ x[qD1X˴%sٴ-U\T[Y2x2{ 4(S'Z)Li oܛsTC
vߚ~R6@ۄVx9,.|7~%TԾtxkc_A
untmDDP|E endstream endobj -579 0 obj << +439 0 obj << /Type /Page -/Contents 580 0 R -/Resources 578 0 R +/Contents 440 0 R +/Resources 438 0 R /MediaBox [0 0 595.276 841.89] -/Parent 520 0 R -/Group 392 0 R +/Parent 390 0 R +/Group 288 0 R >> endobj -560 0 obj << +422 0 obj << /Type /XObject /Subtype /Image /Width 1405 /Height 715 /BitsPerComponent 8 /ColorSpace /DeviceRGB -/SMask 587 0 R +/SMask 447 0 R /Length 12695 /Filter /FlateDecode >> @@ -2296,7 +1903,7 @@ xݿeי9`࠳nrb `v$Ifl IAf@*A$dv9 endstream endobj -587 0 obj << +447 0 obj << /Type /XObject /Subtype /Image /Width 1405 @@ -2317,18 +1924,18 @@ x?R"_a܁+pn
cоǣޢ߉/$q[[VunXh& ]~8_ha|\
77-{Cr,5m57_hM|No߈/,gNok@~K&puz[-im&pG]|A|sz֎3}_G^n :Xj&Ђ:ЄW|kC]B;{72X[{~'p}rEnвv:XW|+n_8: :B+먃5QjMZ Ж:ИW|Cu2Gj7moו3߲#`3[iw~@|{#a_ w|R߷W]/ Wq~ڶ=w<j| endstream endobj -581 0 obj << -/D [579 0 R /XYZ 89 770.89 null] +441 0 obj << +/D [439 0 R /XYZ 89 770.89 null] >> endobj -582 0 obj << -/D [579 0 R /XYZ 251.553 600.141 null] +442 0 obj << +/D [439 0 R /XYZ 251.553 600.141 null] >> endobj -578 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F13 583 0 R /F11 584 0 R /F8 585 0 R /F14 586 0 R >> -/XObject << /Im2 560 0 R >> +438 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F13 443 0 R /F11 444 0 R /F8 445 0 R /F14 446 0 R >> +/XObject << /Im2 422 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj -590 0 obj << +450 0 obj << /Length 149 /Filter /FlateDecode >> @@ -2337,21 +1944,21 @@ xڕ10F$*P\8":Xtptq
-#"*8qgwZYшu,a ˿91 endstream endobj -589 0 obj << +449 0 obj << /Type /Page -/Contents 590 0 R -/Resources 588 0 R +/Contents 450 0 R +/Resources 448 0 R /MediaBox [0 0 595.276 841.89] -/Parent 520 0 R +/Parent 390 0 R >> endobj -591 0 obj << -/D [589 0 R /XYZ 89 770.89 null] +451 0 obj << +/D [449 0 R /XYZ 89 770.89 null] >> endobj -588 0 obj << -/Font << /F22 396 0 R >> +448 0 obj << +/Font << /F22 292 0 R >> /ProcSet [ /PDF /Text ] >> endobj -605 0 obj << +465 0 obj << /Length 1706 /Filter /FlateDecode >> @@ -2365,112 +1972,112 @@ TR@?'cRNRtXu[CXJXPQi1Cp8IB[&ɴ͈lV ;Z7^<Y_* endstream endobj -604 0 obj << +464 0 obj << /Type /Page -/Contents 605 0 R -/Resources 603 0 R +/Contents 465 0 R +/Resources 463 0 R /MediaBox [0 0 595.276 841.89] -/Parent 613 0 R -/Annots [ 592 0 R 593 0 R 609 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R ] +/Parent 473 0 R +/Annots [ 452 0 R 453 0 R 469 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R ] >> endobj -592 0 obj << +452 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [390.276 498.78 443.735 509.684] /A << /S /GoTo /D (structCStreamInfo) >> >> endobj -593 0 obj << +453 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [473.817 457.246 513.996 468.15] /A << /S /GoTo /D (structCStreamInfo_ac1388034d207ca6075fc0883d39eea1a) >> >> endobj -609 0 obj << +469 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 445.29 167.927 456.194] /A << /S /GoTo /D (structCStreamInfo_ac1388034d207ca6075fc0883d39eea1a) >> >> endobj -594 0 obj << +454 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [111.783 213.894 277.511 223.822] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6e3fa0b7d247c98f132edd55187f9c0c) >> >> endobj -595 0 obj << +455 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [297.843 213.894 493.15 223.822] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> >> endobj -596 0 obj << +456 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [362.637 200.963 461.296 211.867] /A << /S /GoTo /D (aacdecoder__lib_8h_afb42ea8892dd828264bd2f6147e0559f) >> >> endobj -597 0 obj << +457 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [99.384 105.15 215.886 116.054] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -598 0 obj << +458 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [330.639 105.15 384.098 116.054] /A << /S /GoTo /D (structCStreamInfo) >> >> endobj -599 0 obj << +459 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [131.066 93.195 250.895 104.099] /A << /S /GoTo /D (aacdecoder__lib_8h_a60aa42cb3ddc804b44ce61d877d0501e) >> >> endobj -606 0 obj << -/D [604 0 R /XYZ 89 770.89 null] +466 0 obj << +/D [464 0 R /XYZ 89 770.89 null] >> endobj 30 0 obj << -/D [604 0 R /XYZ 90 739.935 null] +/D [464 0 R /XYZ 90 739.935 null] >> endobj -607 0 obj << -/D [604 0 R /XYZ 90 549.218 null] +467 0 obj << +/D [464 0 R /XYZ 90 549.218 null] >> endobj -608 0 obj << -/D [604 0 R /XYZ 90 549.218 null] +468 0 obj << +/D [464 0 R /XYZ 90 549.218 null] >> endobj 34 0 obj << -/D [604 0 R /XYZ 90 549.218 null] +/D [464 0 R /XYZ 90 549.218 null] >> endobj -610 0 obj << -/D [604 0 R /XYZ 219.513 299.929 null] +470 0 obj << +/D [464 0 R /XYZ 219.513 299.929 null] >> endobj 38 0 obj << -/D [604 0 R /XYZ 90 278.186 null] +/D [464 0 R /XYZ 90 278.186 null] >> endobj -611 0 obj << -/D [604 0 R /XYZ 105.223 192.161 null] +471 0 obj << +/D [464 0 R /XYZ 105.223 192.161 null] >> endobj 42 0 obj << -/D [604 0 R /XYZ 90 172.475 null] +/D [464 0 R /XYZ 90 172.475 null] >> endobj -612 0 obj << -/D [604 0 R /XYZ 252.389 96.348 null] +472 0 obj << +/D [464 0 R /XYZ 252.389 96.348 null] >> endobj -603 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +463 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -638 0 obj << +498 0 obj << /Length 1505 /Filter /FlateDecode >> @@ -2484,167 +2091,167 @@ K9u$n^*6G~۔j5=3r&+1Pv[OΝ 2.$ʁrq<Mv!: vj[svi5TeXiwAz\sLTM4=rl**oIqQq;#6!5!йll`-A4(ԌD7ީ6HIogf?'{^PD[dwx+=SKbt endstream endobj -637 0 obj << +497 0 obj << /Type /Page -/Contents 638 0 R -/Resources 636 0 R +/Contents 498 0 R +/Resources 496 0 R /MediaBox [0 0 595.276 841.89] -/Parent 613 0 R -/Annots [ 600 0 R 601 0 R 640 0 R 602 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 642 0 R 626 0 R 627 0 R 628 0 R 629 0 R 630 0 R 631 0 R 632 0 R ] +/Parent 473 0 R +/Annots [ 460 0 R 461 0 R 500 0 R 462 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 502 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R ] >> endobj -600 0 obj << +460 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [136.073 702.45 301.801 712.378] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6e3fa0b7d247c98f132edd55187f9c0c) >> >> endobj -601 0 obj << +461 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [360.204 702.45 513.996 712.378] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> >> endobj -640 0 obj << +500 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 689.519 135.828 700.423] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> >> endobj -602 0 obj << +462 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [239.219 677.563 292.678 688.467] /A << /S /GoTo /D (structCStreamInfo) >> >> endobj -619 0 obj << +479 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 661.996 202.796 670.843] /A << /S /GoTo /D (structCStreamInfo_ac1388034d207ca6075fc0883d39eea1a) >> >> endobj -620 0 obj << +480 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 642.315 205.864 653.219] /A << /S /GoTo /D (structCStreamInfo_aae39329c51fe206a8aee33daba2fe1db) >> >> endobj -621 0 obj << +481 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 624.69 214.96 635.594] /A << /S /GoTo /D (structCStreamInfo_aa35e5be20f99be29ce12f9f41bf4d50e) >> >> endobj -622 0 obj << +482 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.392 607.066 279.12 617.97] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6e3fa0b7d247c98f132edd55187f9c0c) >> >> endobj -623 0 obj << +483 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [165.915 526.323 265.3 537.227] /A << /S /GoTo /D (structCStreamInfo_a36fa897b242eebb936d99010a8c580be) >> >> endobj -624 0 obj << +484 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [136.073 462.787 301.801 472.715] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6e3fa0b7d247c98f132edd55187f9c0c) >> >> endobj -625 0 obj << +485 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [360.204 462.787 513.996 472.715] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> >> endobj -642 0 obj << +502 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 449.856 135.828 460.76] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> >> endobj -626 0 obj << +486 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [239.219 437.9 292.678 448.804] /A << /S /GoTo /D (structCStreamInfo) >> >> endobj -627 0 obj << +487 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 422.333 202.796 431.18] /A << /S /GoTo /D (structCStreamInfo_ac1388034d207ca6075fc0883d39eea1a) >> >> endobj -628 0 obj << +488 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 402.652 205.864 413.556] /A << /S /GoTo /D (structCStreamInfo_aae39329c51fe206a8aee33daba2fe1db) >> >> endobj -629 0 obj << +489 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 373.072 214.96 383.976] /A << /S /GoTo /D (structCStreamInfo_aa35e5be20f99be29ce12f9f41bf4d50e) >> >> endobj -630 0 obj << +490 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.663 355.448 308.97 366.352] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> >> endobj -631 0 obj << +491 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.902 278.048 279.629 288.951] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6e3fa0b7d247c98f132edd55187f9c0c) >> >> endobj -632 0 obj << +492 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [165.915 93.195 265.3 104.099] /A << /S /GoTo /D (structCStreamInfo_a36fa897b242eebb936d99010a8c580be) >> >> endobj -639 0 obj << -/D [637 0 R /XYZ 89 770.89 null] +499 0 obj << +/D [497 0 R /XYZ 89 770.89 null] >> endobj 46 0 obj << -/D [637 0 R /XYZ 90 739.935 null] +/D [497 0 R /XYZ 90 739.935 null] >> endobj -641 0 obj << -/D [637 0 R /XYZ 269.286 529.476 null] +501 0 obj << +/D [497 0 R /XYZ 269.286 529.476 null] >> endobj 50 0 obj << -/D [637 0 R /XYZ 90 507.769 null] +/D [497 0 R /XYZ 90 507.769 null] >> endobj -643 0 obj << -/D [637 0 R /XYZ 269.286 96.348 null] +503 0 obj << +/D [497 0 R /XYZ 269.286 96.348 null] >> endobj -636 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F37 543 0 R >> +496 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F37 410 0 R >> /ProcSet [ /PDF /Text ] >> endobj -652 0 obj << +512 0 obj << /Length 770 /Filter /FlateDecode >> @@ -2654,74 +2261,74 @@ xڝUR0}Wў!FoqLIC&ro+y吤O+]I-FW(EF~ 2x6yV5o:M2^><JMPneY-iWw{(r8p^8w8J
((=u endstream endobj -651 0 obj << +511 0 obj << /Type /Page -/Contents 652 0 R -/Resources 650 0 R +/Contents 512 0 R +/Resources 510 0 R /MediaBox [0 0 595.276 841.89] -/Parent 613 0 R -/Annots [ 633 0 R 634 0 R 654 0 R 635 0 R 647 0 R 648 0 R 649 0 R ] +/Parent 473 0 R +/Annots [ 493 0 R 494 0 R 514 0 R 495 0 R 507 0 R 508 0 R 509 0 R ] >> endobj -633 0 obj << +493 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [136.073 703.446 301.801 713.374] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6e3fa0b7d247c98f132edd55187f9c0c) >> >> endobj -634 0 obj << +494 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [360.204 703.446 513.996 713.374] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> >> endobj -654 0 obj << +514 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 690.515 135.828 701.419] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> >> endobj -635 0 obj << +495 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [366.073 678.559 419.531 689.463] /A << /S /GoTo /D (structCStreamInfo) >> >> endobj -647 0 obj << +507 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 662.992 202.796 671.839] /A << /S /GoTo /D (structCStreamInfo_ac1388034d207ca6075fc0883d39eea1a) >> >> endobj -648 0 obj << +508 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 643.311 205.864 654.215] /A << /S /GoTo /D (structCStreamInfo_aae39329c51fe206a8aee33daba2fe1db) >> >> endobj -649 0 obj << +509 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [89.004 625.686 214.96 636.59] /A << /S /GoTo /D (structCStreamInfo_aa35e5be20f99be29ce12f9f41bf4d50e) >> >> endobj -653 0 obj << -/D [651 0 R /XYZ 89 770.89 null] +513 0 obj << +/D [511 0 R /XYZ 89 770.89 null] >> endobj 54 0 obj << -/D [651 0 R /XYZ 90 739.935 null] +/D [511 0 R /XYZ 90 739.935 null] >> endobj -650 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F37 543 0 R >> +510 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F37 410 0 R >> /ProcSet [ /PDF /Text ] >> endobj -657 0 obj << +517 0 obj << /Length 152 /Filter /FlateDecode >> @@ -2730,701 +2337,602 @@ xڕ @DS&EֻwdN.l:0qcG@'xFkeE#DT43Nmfb99ҿc?qHP&НdfdUfĩ/x3?q9˿2| endstream endobj -656 0 obj << -/Type /Page -/Contents 657 0 R -/Resources 655 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 613 0 R ->> endobj -658 0 obj << -/D [656 0 R /XYZ 89 770.89 null] ->> endobj -655 0 obj << -/Font << /F22 396 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -664 0 obj << -/Length 1136 -/Filter /FlateDecode ->> -stream -xڝV[o6~ϯ Tʞ4\MxLDeQdư>CvC"}Bʋ'1}f'.X9˼+c/O(kj!b?
fQ#qFYcF -j"e#PϞi2*s;"J
1^u ,n>x0K&ږn!:kon$n䦭F4 jz叝~%96HBYfEvο1kh79k؟܇`HrdWA8S_HkVb_V=d_^i\iGˇtrf +ieuo`.|Q< LG`9\!Q}hi;)Sѣ\q`S[H M.-%Ɣ#ltZjy9OX`ZIz
ou %3Ys -Ʃ?q)Ă\JJVC,v4B)IQ3B:2 "M#(
jA&EK1X,L,h6{O2^U=nTuE;A9vAFЦ
JZm_Wz691.XmjM6Jp=|4\GoƉ0:ZR
i,'Ot/= -endstream -endobj -663 0 obj << -/Type /Page -/Contents 664 0 R -/Resources 662 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 613 0 R -/Annots [ 659 0 R 660 0 R 661 0 R ] ->> endobj -659 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [102.761 533.473 141.555 544.376] -/A << /S /GoTo /D (main_8cpp) >> ->> endobj -660 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [293.957 533.473 322.51 544.376] -/A << /S /GoTo /D (main_8cpp_a0ddf1224851353fc92bfbff6f499fa97) >> ->> endobj -661 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [183.861 509.562 222.656 520.466] -/A << /S /GoTo /D (main_8cpp) >> ->> endobj -665 0 obj << -/D [663 0 R /XYZ 89 770.89 null] ->> endobj -58 0 obj << -/D [663 0 R /XYZ 90 739.935 null] ->> endobj -548 0 obj << -/D [663 0 R /XYZ 90 549.218 null] ->> endobj -666 0 obj << -/D [663 0 R /XYZ 511.624 399.171 null] ->> endobj -62 0 obj << -/D [663 0 R /XYZ 90 381.025 null] ->> endobj -667 0 obj << -/D [663 0 R /XYZ 90 282.946 null] ->> endobj -66 0 obj << -/D [663 0 R /XYZ 90 278.239 null] ->> endobj -668 0 obj << -/D [663 0 R /XYZ 90 188.685 null] ->> endobj -70 0 obj << -/D [663 0 R /XYZ 90 183.978 null] ->> endobj -662 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F37 543 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -672 0 obj << -/Length 1077 -/Filter /FlateDecode ->> -stream -xڽWMs8W0=%31ؘ7nMcos 5++a$^=#σ'6<ӛc2܉e:e,cueÑmOĉaD+r2xX~, p\9V//2Gޭq(bclkz.r:52=pmеp\VND=s<qjceyہYLTl)S鳚<Ng_]]߄,.ޟF:?UAsC(< 8L$'p5&n+|&k*Rǐ'1z=T#0jX>I0nZ<-Y -5n螀,%Y@9Oxkzv5T 3lq(t\(1l1T.+a9ep_UYI ZJ( -
*ܘ-
(5wܔ*lHߕ!)!g*AXb5ώ-RREHZ2+p . gڥUD$ꬸO3-]pځP2!OaKt2sln2Bs'W|Z8C~+O$|cr]tG@W.f6C@GV2MK?V+Nw pWE<k眺S[ -HH
bUpX{*7LܷyŖne"*N$#~ -{}[tj݆ -ɣ, +
pU6zoIY>|wكSDPZt[yĖ^).nGoI% -endstream -endobj -671 0 obj << +516 0 obj << /Type /Page -/Contents 672 0 R -/Resources 670 0 R +/Contents 517 0 R +/Resources 515 0 R /MediaBox [0 0 595.276 841.89] -/Parent 613 0 R +/Parent 473 0 R >> endobj -673 0 obj << -/D [671 0 R /XYZ 89 770.89 null] +518 0 obj << +/D [516 0 R /XYZ 89 770.89 null] >> endobj -670 0 obj << -/Font << /F22 396 0 R /F37 543 0 R >> +515 0 obj << +/Font << /F22 292 0 R >> /ProcSet [ /PDF /Text ] >> endobj -678 0 obj << +523 0 obj << /Length 401 /Filter /FlateDecode >> stream -xRMo h[[iZ69H0ǿ/,춫 y3fO -^Ϋٷv!?Gviov +xRMO01wڊR*Nk)8qmW_iތf +qIE2E5OK(\:I*6c2Sou endstream endobj -677 0 obj << +522 0 obj << /Type /Page -/Contents 678 0 R -/Resources 676 0 R +/Contents 523 0 R +/Resources 521 0 R /MediaBox [0 0 595.276 841.89] -/Parent 680 0 R -/Annots [ 674 0 R 675 0 R ] +/Parent 473 0 R +/Annots [ 519 0 R 520 0 R ] >> endobj -674 0 obj << +519 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [103.177 481.935 156.636 492.839] /A << /S /GoTo /D (structCStreamInfo) >> >> endobj -675 0 obj << +520 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [502.041 472.037 513.996 480.884] -/A << /S /GoTo /D (section.7.1) >> +/A << /S /GoTo /D (section.6.1) >> >> endobj -679 0 obj << -/D [677 0 R /XYZ 89 770.89 null] +524 0 obj << +/D [522 0 R /XYZ 89 770.89 null] >> endobj -74 0 obj << -/D [677 0 R /XYZ 90 739.935 null] +58 0 obj << +/D [522 0 R /XYZ 90 739.935 null] >> endobj -78 0 obj << -/D [677 0 R /XYZ 90 553.953 null] +62 0 obj << +/D [522 0 R /XYZ 90 553.953 null] >> endobj -676 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +521 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -683 0 obj << +527 0 obj << /Length 147 /Filter /FlateDecode >> stream xڕ0C -t \YAVu@XZ$>Pdz~2 -ƖDx"#xkX̖EjhPS:GSXlw7CDwa pi]kX1QJќ='|揫R,^0 +@ܑYAVu@XZ$>Pdz~2 +ƖDx"#xkXMalS
jԮ83q\nfhN6#;y\0AN5-}
6+<&jB4g?(˿0 endstream endobj -682 0 obj << +526 0 obj << /Type /Page -/Contents 683 0 R -/Resources 681 0 R +/Contents 527 0 R +/Resources 525 0 R /MediaBox [0 0 595.276 841.89] -/Parent 680 0 R +/Parent 473 0 R >> endobj -684 0 obj << -/D [682 0 R /XYZ 89 770.89 null] +528 0 obj << +/D [526 0 R /XYZ 89 770.89 null] >> endobj -681 0 obj << -/Font << /F22 396 0 R >> +525 0 obj << +/Font << /F22 292 0 R >> /ProcSet [ /PDF /Text ] >> endobj -692 0 obj << -/Length 456 +533 0 obj << +/Length 315 /Filter /FlateDecode >> stream -x͓n0>6m4mUm[U^K!J5Uf0gF]nHͫ=c,%8!E -<EEѮh\0A"+ރ, (ao꫶2g8L1 -iPB#G;"d28YU*θD
s֝+!1A~g&H+3b*!Dfjf)Jh%Peeʮ2{c1'WCP 7vRfi34b;+\r<p%\\F_yM+! +xڽKO0܍3VãHL +ĸuu轧o
U\lDJ& G<'"Kh}b&0KqN,@ <cAتA9Id _!b?G=M 'dғ,%y"yid:0<#A{jjjz7NvS_ߊ@k] 4%q7^U5jv2#!IݾZ8?.U|U.5^UR0ϲDXj9W]eLY&CɠO endstream endobj -691 0 obj << +532 0 obj << /Type /Page -/Contents 692 0 R -/Resources 690 0 R +/Contents 533 0 R +/Resources 531 0 R /MediaBox [0 0 595.276 841.89] -/Parent 680 0 R -/Annots [ 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R ] +/Parent 535 0 R +/Annots [ 529 0 R 530 0 R ] >> endobj -685 0 obj << +529 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [103.177 481.935 172.546 492.839] /A << /S /GoTo /D (aacdecoder__lib_8h) >> >> endobj -686 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.041 484.092 513.996 492.839] -/A << /S /GoTo /D (section.8.1) >> ->> endobj -687 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.177 469.98 141.971 480.884] -/A << /S /GoTo /D (main_8cpp) >> ->> endobj -688 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [416.599 469.98 488.591 480.884] -/A << /S /GoTo /D (LIBUSE_Calling_Sequence) >> ->> endobj -689 0 obj << +530 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.041 460.082 513.996 468.929] -/A << /S /GoTo /D (section.8.2) >> +/Rect [502.041 483.873 513.996 492.839] +/A << /S /GoTo /D (section.7.1) >> >> endobj -693 0 obj << -/D [691 0 R /XYZ 89 770.89 null] +534 0 obj << +/D [532 0 R /XYZ 89 770.89 null] >> endobj -82 0 obj << -/D [691 0 R /XYZ 90 739.935 null] +66 0 obj << +/D [532 0 R /XYZ 90 739.935 null] >> endobj -86 0 obj << -/D [691 0 R /XYZ 90 553.953 null] +70 0 obj << +/D [532 0 R /XYZ 90 553.953 null] >> endobj -690 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +531 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -696 0 obj << -/Length 144 +538 0 obj << +/Length 145 /Filter /FlateDecode >> stream -xڕ -@DS&ݻN.r`&hai509 -ƞ֍NVV4RFWiW 42Z6J,W{^3BD ^4+o,u=#+5a#? -FUoZ0Y +xڕ@D)5#:B%`LJ?߃hai50`hi["#ҋq*=L
lFXhm4uZGzB0dոҔ2S17`cCJ(Ԧp7\5_X0W endstream endobj -695 0 obj << +537 0 obj << /Type /Page -/Contents 696 0 R -/Resources 694 0 R +/Contents 538 0 R +/Resources 536 0 R /MediaBox [0 0 595.276 841.89] -/Parent 680 0 R +/Parent 535 0 R >> endobj -697 0 obj << -/D [695 0 R /XYZ 89 770.89 null] +539 0 obj << +/D [537 0 R /XYZ 89 770.89 null] >> endobj -694 0 obj << -/Font << /F22 396 0 R >> +536 0 obj << +/Font << /F22 292 0 R >> /ProcSet [ /PDF /Text ] >> endobj -720 0 obj << -/Length 747 +563 0 obj << +/Length 749 /Filter /FlateDecode >> stream -xVn0+"Ē( -xKH[>Im%C__Jgqb@v,3@29! yhB<B J5X,]k
qHyY<V"S\<ۺb -]깐2Cl;!d
&q` 6aVކU籘* Lt@R&FUu!m,a,d6ϋUvsgyePUQhrC8ODbD8#BDAL -'tDYeOa6JՔ>,Npxǒ~y%}n8T!q('!cfZ +xWn0+"Ē( +xKp[9Im%C__JlvxzD̛7oH~|cCZгԺ+t\L;?+A@K) !6*m>,zsɤ(W, EB{0B8_8څD)_pm'܄D>Mt:z&
R\.EAB䋢\6/j+W/Rkʓ"婱SaRNdq=^{1Rƶn>) +* +B)q卑w$a6U7eќB?R]Fk=yZfmP
iB^-^^6g~<r8G̻77/;u"_,?c-+l{!9Ok[Q^6:q`{weGπg;1.ӝ.fnjrDJJy2Ή̈2H1,z endstream endobj -719 0 obj << +562 0 obj << /Type /Page -/Contents 720 0 R -/Resources 718 0 R +/Contents 563 0 R +/Resources 561 0 R /MediaBox [0 0 595.276 841.89] -/Parent 680 0 R -/Annots [ 698 0 R 699 0 R 700 0 R 701 0 R 702 0 R 703 0 R 704 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R 711 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R ] +/Parent 535 0 R +/Annots [ 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R ] >> endobj -698 0 obj << +540 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 420.704 181.476 431.608] +/Rect [132.999 422.869 181.476 433.773] /A << /S /GoTo /D (structCStreamInfo_a5d5f38d670deaa5abf887c3b580df1cd) >> >> endobj -699 0 obj << +541 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 408.755 175.379 417.602] +/Rect [132.999 411.441 175.379 420.288] /A << /S /GoTo /D (structCStreamInfo_a36fa897b242eebb936d99010a8c580be) >> >> endobj -700 0 obj << +542 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 394.748 189.785 403.595] +/Rect [132.999 397.957 189.785 406.803] /A << /S /GoTo /D (structCStreamInfo_ac1388034d207ca6075fc0883d39eea1a) >> >> endobj -701 0 obj << +543 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [237.875 378.685 297.73 389.588] +/Rect [237.875 382.414 297.73 393.318] /A << /S /GoTo /D (structCStreamInfo_aae39329c51fe206a8aee33daba2fe1db) >> >> endobj -702 0 obj << +544 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 364.678 227.693 375.582] +/Rect [158.742 368.93 227.693 379.833] /A << /S /GoTo /D (structCStreamInfo_aa35e5be20f99be29ce12f9f41bf4d50e) >> >> endobj -703 0 obj << +545 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 350.671 196.41 361.575] +/Rect [132.999 355.445 196.41 366.349] /A << /S /GoTo /D (structCStreamInfo_a47fa73a2c1269f30d1439e90c7652f49) >> >> endobj -704 0 obj << +546 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 336.665 161.003 347.569] +/Rect [132.999 341.96 161.003 352.864] /A << /S /GoTo /D (structCStreamInfo_aaf23a4756ee1a1b36f0b7d104d3f9882) >> >> endobj -705 0 obj << +547 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [219.344 323.635 233.511 333.562] +/Rect [219.344 329.451 233.511 339.379] /A << /S /GoTo /D (structCStreamInfo_a24cea6707207c95269162847beaa0b7d) >> >> endobj -706 0 obj << +548 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 308.652 193.103 319.556] +/Rect [132.999 314.99 193.103 325.894] /A << /S /GoTo /D (structCStreamInfo_af5c2c8b545a6cc3e5aac82e25a2edea0) >> >> endobj -707 0 obj << +549 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 296.703 163.773 305.549] +/Rect [132.999 303.562 163.773 312.409] /A << /S /GoTo /D (structCStreamInfo_a4d64654dd9d366c5ea41a89d1972534d) >> >> endobj -708 0 obj << +550 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 280.639 220.758 291.543] +/Rect [132.999 288.02 220.758 298.924] /A << /S /GoTo /D (structCStreamInfo_a6e431a6f8aeca62ffb7741b3ec068f7b) >> >> endobj -709 0 obj << +551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.999 276.593 205.267 285.439] +/A << /S /GoTo /D (structCStreamInfo_afa21b3685d93a877cab4aa884524cb67) >> +>> endobj +552 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [219.344 267.609 248.306 277.536] +/Rect [219.344 262.027 248.306 271.954] /A << /S /GoTo /D (structCStreamInfo_a8ffd4db9d615e545a5e8cb51990965fc) >> >> endobj -710 0 obj << +553 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 252.626 203.474 263.53] +/Rect [132.999 247.566 203.474 258.47] /A << /S /GoTo /D (structCStreamInfo_a28c5ba6424b0975f7074b8e1e217a7a3) >> >> endobj -711 0 obj << +554 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [140.192 238.619 161.003 249.523] +/Rect [140.192 234.081 161.003 244.985] /A << /S /GoTo /D (structCStreamInfo_a73484dc9e2406a34c5dddf16b3cf6d0c) >> >> endobj -712 0 obj << +555 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.616 224.613 188.142 235.517] +/Rect [149.616 220.596 188.142 231.5] /A << /S /GoTo /D (structCStreamInfo_a239e02305ca579866e527f4a512b1fdc) >> >> endobj -713 0 obj << +556 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.999 212.663 220.22 221.51] +/Rect [132.999 209.168 220.22 218.015] /A << /S /GoTo /D (structCStreamInfo_ab28c53f72c8c1a9c4adf5d7e84bcc78b) >> >> endobj -714 0 obj << +557 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [140.192 196.6 202.826 207.504] +/Rect [140.192 193.626 202.826 204.53] /A << /S /GoTo /D (structCStreamInfo_ae8a7599cb585fdb0ff5446b0a6abb9c8) >> >> endobj -715 0 obj << +558 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [140.192 182.593 198.642 193.497] +/Rect [140.192 180.141 198.642 191.045] /A << /S /GoTo /D (structCStreamInfo_a8a9699c8f4e00893127a7e49161bbd0d) >> >> endobj -716 0 obj << +559 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [140.192 170.644 229.934 179.491] +/Rect [140.192 168.714 229.934 177.56] /A << /S /GoTo /D (structCStreamInfo_a1f2571c63e5f1db6e4d1537e37310568) >> >> endobj -717 0 obj << +560 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [140.192 156.637 225.75 165.484] +/Rect [140.192 155.229 225.75 164.075] /A << /S /GoTo /D (structCStreamInfo_a7362ae2c2b9bd37a103e575c271f3120) >> >> endobj -721 0 obj << -/D [719 0 R /XYZ 89 770.89 null] +564 0 obj << +/D [562 0 R /XYZ 89 770.89 null] >> endobj -90 0 obj << -/D [719 0 R /XYZ 90 739.935 null] +74 0 obj << +/D [562 0 R /XYZ 90 739.935 null] >> endobj -614 0 obj << -/D [719 0 R /XYZ 90 553.953 null] +474 0 obj << +/D [562 0 R /XYZ 90 553.953 null] >> endobj -94 0 obj << -/D [719 0 R /XYZ 90 553.953 null] +78 0 obj << +/D [562 0 R /XYZ 90 553.953 null] >> endobj -722 0 obj << -/D [719 0 R /XYZ 90 440.709 null] +565 0 obj << +/D [562 0 R /XYZ 90 442.352 null] >> endobj -98 0 obj << -/D [719 0 R /XYZ 90 140.689 null] +82 0 obj << +/D [562 0 R /XYZ 90 140.455 null] >> endobj -718 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F37 543 0 R /F11 584 0 R /F14 586 0 R >> +561 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F37 410 0 R /F11 444 0 R /F14 446 0 R >> /ProcSet [ /PDF /Text ] >> endobj -741 0 obj << -/Length 901 +585 0 obj << +/Length 990 /Filter /FlateDecode >> stream -xڥVMs0+|g*ɖ3qhLShpQ@wڢI+C N{Azo$,|蝦)ub4t҅c' - b8ܹqԏB7YaLֹLI{z_=b0C6,BϜY_8hN@}iKCCQP^`Kߊ|n"v4@, -nh\6m)y[0q[vDLq~曝O4tDM-2 S7i屝6$Umh,2?}-
+IGI}I|cڇ_n +xڥVs8~3'qhK 487m#@w&__Z;\_X~oZлz +m endstream endobj -740 0 obj << +584 0 obj << /Type /Page -/Contents 741 0 R -/Resources 739 0 R +/Contents 585 0 R +/Resources 583 0 R /MediaBox [0 0 595.276 841.89] -/Parent 680 0 R +/Parent 535 0 R >> endobj -742 0 obj << -/D [740 0 R /XYZ 89 770.89 null] +586 0 obj << +/D [584 0 R /XYZ 89 770.89 null] >> endobj -102 0 obj << -/D [740 0 R /XYZ 90 739.935 null] +86 0 obj << +/D [584 0 R /XYZ 90 739.935 null] >> endobj -724 0 obj << -/D [740 0 R /XYZ 90 722.904 null] +573 0 obj << +/D [584 0 R /XYZ 90 722.803 null] >> endobj -106 0 obj << -/D [740 0 R /XYZ 90 722.904 null] +90 0 obj << +/D [584 0 R /XYZ 90 722.803 null] >> endobj -729 0 obj << -/D [740 0 R /XYZ 330.795 680.874 null] +567 0 obj << +/D [584 0 R /XYZ 287.886 668.716 null] >> endobj -110 0 obj << -/D [740 0 R /XYZ 90 663.146 null] +94 0 obj << +/D [584 0 R /XYZ 90 650.482 null] >> endobj -726 0 obj << -/D [740 0 R /XYZ 252.171 587.881 null] +572 0 obj << +/D [584 0 R /XYZ 330.795 610.364 null] >> endobj -114 0 obj << -/D [740 0 R /XYZ 90 572.211 null] +98 0 obj << +/D [584 0 R /XYZ 90 592.131 null] >> endobj -728 0 obj << -/D [740 0 R /XYZ 111.031 518.181 null] +569 0 obj << +/D [584 0 R /XYZ 252.171 516.764 null] >> endobj -118 0 obj << -/D [740 0 R /XYZ 90 500.828 null] +102 0 obj << +/D [584 0 R /XYZ 90 500.588 null] >> endobj -727 0 obj << -/D [740 0 R /XYZ 180.798 460.437 null] +571 0 obj << +/D [584 0 R /XYZ 111.031 446.457 null] >> endobj -122 0 obj << -/D [740 0 R /XYZ 90 444.767 null] +106 0 obj << +/D [584 0 R /XYZ 90 428.597 null] >> endobj -733 0 obj << -/D [740 0 R /XYZ 339.233 402.693 null] +570 0 obj << +/D [584 0 R /XYZ 180.798 388.106 null] >> endobj -126 0 obj << -/D [740 0 R /XYZ 90 384.966 null] +110 0 obj << +/D [584 0 R /XYZ 90 371.93 null] >> endobj -730 0 obj << -/D [740 0 R /XYZ 507.013 344.949 null] +577 0 obj << +/D [584 0 R /XYZ 339.233 329.754 null] >> endobj -130 0 obj << -/D [740 0 R /XYZ 90 327.222 null] +114 0 obj << +/D [584 0 R /XYZ 90 311.521 null] >> endobj -731 0 obj << -/D [740 0 R /XYZ 261.316 287.205 null] +574 0 obj << +/D [584 0 R /XYZ 507.013 271.403 null] >> endobj -134 0 obj << -/D [740 0 R /XYZ 90 269.477 null] +118 0 obj << +/D [584 0 R /XYZ 90 253.169 null] >> endobj -732 0 obj << -/D [740 0 R /XYZ 263.498 229.461 null] +575 0 obj << +/D [584 0 R /XYZ 261.316 213.051 null] >> endobj -138 0 obj << -/D [740 0 R /XYZ 90 211.733 null] +122 0 obj << +/D [584 0 R /XYZ 90 194.818 null] >> endobj -646 0 obj << -/D [740 0 R /XYZ 441.858 171.717 null] +576 0 obj << +/D [584 0 R /XYZ 263.498 154.7 null] >> endobj -142 0 obj << -/D [740 0 R /XYZ 90 153.989 null] +126 0 obj << +/D [584 0 R /XYZ 90 136.466 null] >> endobj -739 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +506 0 obj << +/D [584 0 R /XYZ 441.858 96.348 null] +>> endobj +583 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -746 0 obj << -/Length 1072 +590 0 obj << +/Length 1093 /Filter /FlateDecode >> stream -xWKo8W(kA/.R'k+"-Fmzx%iJw^Lro46V6Jxi=\J85LkH]lmm䬘Kf -!&-g|aWp!B/4Ih}?
x׀ ʍ#v<|F*00Ԯp-ܘ+WbS2N -OC#:`%tߢֆ7Wfef״d.Ƃefl<yBAiK..mqQ/}Ax5`55R+ [Lg:j -B)M(#\\$]KN~p5\uhJx +xWn8+KR`6.R'c+"-Fmzx$i×+URe0fss=Nvkc [=!bǩ~gx +Ѓx72u5 8C'"?Y +E@~?t":gP-Df$xH +0Aul,O:tfJ钕-sJLo&r:2w*/WU@{I9TM@hS^1 Ӧ +.)cpX$G<*Y9F&MSUguw$z#﹦sԯ/8B]O.m.&^͖A#ެ?/h+ /|ttQ^CYA[t8{ZYnk":YNӱpaEɨaaMVi(OHHt)ۏemBf==GMjM20[@wN6<b.#>pN%$|QY2Jx[PfJCSiTwٕLk=k_PX,֔"XzqC6}?YV*r?9rD9vL6 + endstream endobj -745 0 obj << +589 0 obj << /Type /Page -/Contents 746 0 R -/Resources 744 0 R +/Contents 590 0 R +/Resources 588 0 R /MediaBox [0 0 595.276 841.89] -/Parent 748 0 R -/Annots [ 743 0 R ] +/Parent 535 0 R +/Annots [ 587 0 R ] >> endobj -743 0 obj << +587 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.494 432.336 513.996 443.24] +/Rect [397.494 412.695 513.996 423.599] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -747 0 obj << -/D [745 0 R /XYZ 89 770.89 null] +591 0 obj << +/D [589 0 R /XYZ 89 770.89 null] >> endobj -738 0 obj << -/D [745 0 R /XYZ 90 692.566 null] +130 0 obj << +/D [589 0 R /XYZ 90 739.935 null] >> endobj -146 0 obj << -/D [745 0 R /XYZ 90 678.544 null] +582 0 obj << +/D [589 0 R /XYZ 252.171 652.321 null] >> endobj -736 0 obj << -/D [745 0 R /XYZ 90 618.946 null] +134 0 obj << +/D [589 0 R /XYZ 90 635.506 null] >> endobj -150 0 obj << -/D [745 0 R /XYZ 90 604.923 null] +580 0 obj << +/D [589 0 R /XYZ 466.663 593.203 null] >> endobj -615 0 obj << -/D [745 0 R /XYZ 440.382 565.106 null] +138 0 obj << +/D [589 0 R /XYZ 90 574.33 null] >> endobj -154 0 obj << -/D [745 0 R /XYZ 90 548.926 null] +475 0 obj << +/D [589 0 R /XYZ 440.382 534.085 null] >> endobj -734 0 obj << -/D [745 0 R /XYZ 90 489.329 null] +142 0 obj << +/D [589 0 R /XYZ 90 515.212 null] >> endobj -158 0 obj << -/D [745 0 R /XYZ 90 475.306 null] +578 0 obj << +/D [589 0 R /XYZ 443.043 474.967 null] >> endobj -737 0 obj << -/D [745 0 R /XYZ 90 403.753 null] +146 0 obj << +/D [589 0 R /XYZ 90 456.094 null] >> endobj -162 0 obj << -/D [745 0 R /XYZ 90 389.73 null] +581 0 obj << +/D [589 0 R /XYZ 454.119 403.893 null] >> endobj -735 0 obj << -/D [745 0 R /XYZ 90 330.132 null] +150 0 obj << +/D [589 0 R /XYZ 90 385.997 null] >> endobj -166 0 obj << -/D [745 0 R /XYZ 90 316.109 null] +579 0 obj << +/D [589 0 R /XYZ 399.875 344.775 null] >> endobj -645 0 obj << -/D [745 0 R /XYZ 373.594 276.292 null] +154 0 obj << +/D [589 0 R /XYZ 90 325.903 null] >> endobj -170 0 obj << -/D [745 0 R /XYZ 90 260.113 null] +505 0 obj << +/D [589 0 R /XYZ 373.594 285.657 null] >> endobj -644 0 obj << -/D [745 0 R /XYZ 282.307 208.341 null] +158 0 obj << +/D [589 0 R /XYZ 90 266.785 null] >> endobj -174 0 obj << -/D [745 0 R /XYZ 90 192.161 null] +504 0 obj << +/D [589 0 R /XYZ 282.307 214.584 null] >> endobj -725 0 obj << -/D [745 0 R /XYZ 291.194 152.344 null] +162 0 obj << +/D [589 0 R /XYZ 90 195.712 null] >> endobj -178 0 obj << -/D [745 0 R /XYZ 90 136.165 null] +568 0 obj << +/D [589 0 R /XYZ 291.194 155.466 null] >> endobj -723 0 obj << -/D [745 0 R /XYZ 377.928 96.348 null] +166 0 obj << +/D [589 0 R /XYZ 90 136.594 null] >> endobj -744 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F11 584 0 R /F14 586 0 R >> +566 0 obj << +/D [589 0 R /XYZ 377.928 96.348 null] +>> endobj +588 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F11 444 0 R /F14 446 0 R >> /ProcSet [ /PDF /Text ] >> endobj -752 0 obj << -/Length 418 +595 0 obj << +/Length 398 /Filter /FlateDecode >> stream -xڕRMo0+|úcòlUmEdZ)Jr{ +xڕM0 +@89kWjp]U))-03*`zbC>we#"H1C +P@Y)yKY(F:fܹ!z*e+ޓX=T2 +n7Ś+g1&L&φi\ּH?!u
|mh6MMɷ +f?ru3݁Uf-X
lf+`ks5S|'~fX_7ou8/њݺ@,bPDTyv'w_naQC|Iz{gd_ endstream endobj -751 0 obj << +594 0 obj << /Type /Page -/Contents 752 0 R -/Resources 750 0 R +/Contents 595 0 R +/Resources 593 0 R /MediaBox [0 0 595.276 841.89] -/Parent 748 0 R -/Annots [ 749 0 R ] +/Parent 535 0 R +/Annots [ 592 0 R ] >> endobj -749 0 obj << +592 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 642.603 183.28 652.53] +/Rect [113.91 660.227 183.28 670.155] /A << /S /GoTo /D (aacdecoder__lib_8h) >> >> endobj -753 0 obj << -/D [751 0 R /XYZ 89 770.89 null] +596 0 obj << +/D [594 0 R /XYZ 89 770.89 null] >> endobj -182 0 obj << -/D [751 0 R /XYZ 90 739.935 null] +170 0 obj << +/D [594 0 R /XYZ 90 739.935 null] >> endobj -750 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +593 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj - -760 0 obj << -/Length 368 +604 0 obj << +/Length 717 /Filter /FlateDecode >> stream -xڅMS0BzC=4iZˁo qMyMXכ,,A!YRK!O(rJ
Ƅ0{G0'19,!XTvVmm9T9Aqo@1B(RZWu1i~?P:)L^<Pĩ/kt7swqeuAelEm1;Zs_"Η?}qa2VBFTeejva_M^bZWy?={.niہF~^v~E뻿>;uf0$3c#@0Me@ɲ`pT +xڕT[k0~ϯ-]vdykQm%18vf˃GrnK;F]t."h<"i>g1ÐI4_P$XsWjctL/οXQAP %16zRgZWFvH*0!sȐc!TPBTuų/Ws>EcOWv%8 YY:[w{Ʃ
H5yS/| +f2jD+5<:֥E]!bUQԼl4^] xOtSd&oMMFW9$ԧsX6j㒿un> " +eR &l=5"8IB.!^\OM
CH0CS)ks[]ƥj[$q4Ă@0ٟGH(Ck.3KY:mLiZOEf@1EoC0G٘V +w#uYPµG[3viV.>Lr8&+p۲O.sصʃf)=|৵ +x $^,Wubc|h2IC:6wYg'\p|It.ѿدOJMGn~?G"0P +oݤQ[:68
#;w'ŃpqS`kh#1]zeko{5^Ʃ endstream endobj -759 0 obj << +603 0 obj << /Type /Page -/Contents 760 0 R -/Resources 758 0 R +/Contents 604 0 R +/Resources 602 0 R /MediaBox [0 0 595.276 841.89] -/Parent 748 0 R -/Group 755 0 R +/Parent 609 0 R +/Group 598 0 R +/Annots [ 599 0 R 600 0 R ] >> endobj -754 0 obj << +597 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./aacdecoder__lib_8h__incl.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 762 0 R +/PTEX.InfoDict 610 0 R /BBox [0 0 350 164] -/Group 755 0 R +/Group 598 0 R /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> ->>/Font << /f-0-0 763 0 R>> +>>/Font << /f-0-0 611 0 R>> >> /Length 589 /Filter /FlateDecode @@ -3435,23 +2943,23 @@ xUMk1Wd> eRC!M┒;jM{FH3o'4EP xi}ֲF2GQm9t;3Izl\)b|<g/e0uEP98Ӝ_Eein1&Z93806Sܯ2OcRt6LЧ0)&BKi:NNl4)10#X,=PPsT-yVL9xg!UimdxQ*5<ܴn]gz3 endstream endobj -762 0 obj +610 0 obj << /Creator (cairo 1.8.10 \(http://cairographics.org\)) /Producer (cairo 1.8.10 \(http://cairographics.org\)) >> endobj -763 0 obj +611 0 obj << /Type /Font /Subtype /Type0 /BaseFont /FreeSans /Encoding /Identity-H -/DescendantFonts [ 764 0 R] -/ToUnicode 765 0 R +/DescendantFonts [ 612 0 R] +/ToUnicode 613 0 R >> endobj -764 0 obj +612 0 obj << /Type /Font /Subtype /CIDFontType2 @@ -3461,20 +2969,20 @@ endobj /Ordering (Identity) /Supplement 0 >> -/FontDescriptor 766 0 R +/FontDescriptor 614 0 R /W [ 0 [ 500 556 500 556 556 556 333 556 222 222 556 278 556 833 556 278 500 556 611 722 667 556 556 667 500]] >> endobj -765 0 obj +613 0 obj << -/Length 767 0 R +/Length 615 0 R /Filter /FlateDecode >> stream x]Mn0=e@"!*ݰJ{ endstream endobj -766 0 obj +614 0 obj << /Type /FontDescriptor /FontName /FreeSans @@ -3486,15 +2994,15 @@ endobj /CapHeight 1050 /StemV 80 /StemH 80 -/FontFile2 768 0 R +/FontFile2 616 0 R >> endobj -767 0 obj +615 0 obj 328 endobj -768 0 obj +616 0 obj << -/Length 769 0 R +/Length 617 0 R /Filter /FlateDecode /Length1 2928 >> @@ -3508,3720 +3016,2942 @@ xUVkpSݫmY˶l,-X%cɒ%@2-[1cBR
)4i;s6i3%mf!? hMA3')ū%)Z*@ʂJ endstream endobj -769 0 obj +617 0 obj 2185 endobj -755 0 obj +598 0 obj << /Type /Group /S /Transparency /CS /DeviceRGB >>endobj -761 0 obj << -/D [759 0 R /XYZ 89 770.89 null] +599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.538 188.186 191.996 197.033] +/A << /S /GoTo /D (structCStreamInfo) >> >> endobj -186 0 obj << -/D [759 0 R /XYZ 90 739.935 null] +600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.207 105.524 222.75 116.054] +/A << /S /GoTo /D (aacdecoder__lib_8h_a388a21070208ec23217c4ff8f8d98754) >> >> endobj -546 0 obj << -/D [759 0 R /XYZ 90 553.953 null] +605 0 obj << +/D [603 0 R /XYZ 89 770.89 null] >> endobj -190 0 obj << -/D [759 0 R /XYZ 90 553.953 null] +174 0 obj << +/D [603 0 R /XYZ 90 739.935 null] >> endobj -758 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F37 543 0 R >> -/XObject << /Im3 754 0 R >> +413 0 obj << +/D [603 0 R /XYZ 90 553.953 null] +>> endobj +178 0 obj << +/D [603 0 R /XYZ 90 553.953 null] +>> endobj +606 0 obj << +/D [603 0 R /XYZ 90 204.466 null] +>> endobj +608 0 obj << +/D [603 0 R /XYZ 90 123.487 null] +>> endobj +602 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F37 410 0 R /F44 607 0 R /F11 444 0 R >> +/XObject << /Im3 597 0 R >> /ProcSet [ /PDF /Text ] >> endobj -790 0 obj << -/Length 1074 +659 0 obj << +/Length 1046 /Filter /FlateDecode >> stream -xWkF_1RKevfxDVY'Nm6U5.
ٮ{afl;6%s;Cj[J]ZȿE.Ae`N
GFLЩj$SN^6[-$KVo}mIQ6Mf'"h6]=TQĨ 9~k5sG -}$˽]gmʵ>7 XGIϊxrqMf{HXÉLϫ*WPAi@
;87ˬR-]2iR^b`8yTVZ8R<NL)^w.F}[zCbfBbJ1\tH)oA7:' {f|S$IS֝y.mvTc+i -9ށo{d# <c5<%NtɌM㮫
A2i3'[`y](6wB0m㪥, Qa8 I"Y,0/6=k8dpw?^iuᡈ4*$~#'m,RRl9/P|`egYf3tI/wntE1wS)&4A')_}0
{'%kCɎU奸v:et˂ ojr -m)5?ޣ7l9tܖO*`9;de_QWD`}wGGU"VKk=oL{GmW?l( (]S@1+D)U31`1{F`#\ =ԦPK4¡=EOT9{-١m -P.r8J㛫վlrY#|(59 xt-}8BOb\{oqV߽ScP;1շף +xڽXoHJ'U ǩKB*Pd*U9l)Hm2{fb>!.GxaԘ$H(挢x%Fk(&MUK*'a>]oow,t$?# +<ױp] h_#@QHe +A)E"%V`t"JoagFjdasɍHD*(tC8I7xr~OvazU!pKCúYI{QRwd毇U@Ml^381t38&Ɣb&!QK"G?BT~F*~{mV523lh +5lB B +'iՓ-ibpv+Ԇs Y2x];2D}`eg@C(pfq60>l&b׃ xp!taF}uTȚ=^OuM¤[f +#'{Vh';Yeb +25 Ey*mÛk~fɬ%?} = cv,՞\B$bX%EcM()Ӂ?^lvwӆ5 Zιjкy(Cv\D@f(X'33W< endstream endobj -789 0 obj << +658 0 obj << /Type /Page -/Contents 790 0 R -/Resources 788 0 R +/Contents 659 0 R +/Resources 657 0 R /MediaBox [0 0 595.276 841.89] -/Parent 748 0 R -/Group 757 0 R -/Annots [ 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R 776 0 R 777 0 R 778 0 R 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R ] ->> endobj -756 0 obj << -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (./aacdecoder__lib_8h__dep__incl.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 797 0 R -/BBox [0 0 170 164] -/Group 757 0 R -/Resources << -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->>/Font << /f-0-0 798 0 R>> ->> -/Length 337 -/Filter /FlateDecode ->> -stream -xSj0WXKP|BBiHĔY4˓|%A;C -endstream -endobj -797 0 obj -<< -/Creator (cairo 1.8.10 \(http://cairographics.org\)) -/Producer (cairo 1.8.10 \(http://cairographics.org\)) ->> -endobj -798 0 obj -<< -/Type /Font -/Subtype /Type0 -/BaseFont /FreeSans -/Encoding /Identity-H -/DescendantFonts [ 799 0 R] -/ToUnicode 800 0 R ->> -endobj -799 0 obj -<< -/Type /Font -/Subtype /CIDFontType2 -/BaseFont /FreeSans -/CIDSystemInfo << -/Registry (Adobe) -/Ordering (Identity) -/Supplement 0 ->> -/FontDescriptor 801 0 R -/W [ 0 [ 500 556 500 556 556 556 333 556 222 222 556 278 556 833 556 556]] ->> -endobj -800 0 obj -<< -/Length 802 0 R -/Filter /FlateDecode ->> -stream -x]j0 -ҁt IGRI*ItJ:sR.)IWҕ$H[]T IRBR$EBҖYjymm~cr>53MsظZ_<O -endstream -endobj -801 0 obj -<< -/Type /FontDescriptor -/FontName /FreeSans -/Flags 4 -/FontBBox [ -958 -462 1632 1050] -/ItalicAngle 0 -/Ascent 1000 -/Descent -300 -/CapHeight 1050 -/StemV 80 -/StemH 80 -/FontFile2 803 0 R ->> -endobj -802 0 obj -287 -endobj -803 0 obj -<< -/Length 804 0 R -/Filter /FlateDecode -/Length1 2112 ->> -stream -xUUmLSW~Ϲm|:o)V>ZA -ZڋRT.1Df%[2EWgɌY˲ef?˒f1cY4k[0Q{n{s{=ys -\5&Vb_ƚ55m%Xn"y\ʲաh,"qQ -{SêFu^M\ӵYK:B -5*5_\l96TDs9 -֧VUp_'5v87YmVmtbp}ug<L_ES;jjIkZE:'y_4MwE?<9zS) hUxI~*-RzDPX_&AYu;1J>~86E(D%pH`l*amDH+MI9%U2u6lv6XVbuol)q"AVɃ=*KiYXnXa2,GD/8ڑvJcFRH"f8&JgΥu,0+V49tTDZ:|i\jaVOl$tғgBPv b|)%࣎c]M̰
k?̗Εk8!+%pc}_L|)S2!8s|7\ -,B+$u -%m <AȻ℟ .鱊嘸K |W*iWh42G) -endstream -endobj -804 0 obj -1551 -endobj -757 0 obj -<< -/Type /Group -/S /Transparency -/CS /DeviceRGB ->>endobj -770 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.538 484.491 191.996 493.338] -/A << /S /GoTo /D (structCStreamInfo) >> +/Parent 609 0 R +/Annots [ 601 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R 630 0 R 631 0 R 632 0 R 633 0 R 634 0 R 635 0 R 636 0 R 637 0 R 638 0 R 639 0 R 640 0 R 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 646 0 R 647 0 R 648 0 R 649 0 R 650 0 R 651 0 R 652 0 R 653 0 R ] >> endobj -771 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.207 400.747 222.75 411.278] -/A << /S /GoTo /D (aacdecoder__lib_8h_a388a21070208ec23217c4ff8f8d98754) >> ->> endobj -772 0 obj << +601 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.779 376.08 239.806 386.611] +/Rect [145.779 727.192 239.806 737.723] /A << /S /GoTo /D (aacdecoder__lib_8h_ac2c358d4ac0d7747cae32f9f45c20f71) >> >> endobj -773 0 obj << +619 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 350.706 235.474 362.661] +/Rect [145.731 701.663 235.474 713.618] /A << /S /GoTo /D (aacdecoder__lib_8h_af59d78a4583ca81ccb2675dce592b812) >> >> endobj -774 0 obj << +620 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 339.304 240.306 349.232] +/Rect [145.731 690.107 240.306 700.034] /A << /S /GoTo /D (aacdecoder__lib_8h_ae09502f250437ee519971ca3a95ac9e0) >> >> endobj -775 0 obj << +621 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 326.592 224.814 336.52] +/Rect [145.731 677.24 224.814 687.168] /A << /S /GoTo /D (aacdecoder__lib_8h_a8bc17277db0f7651065f62d66f92ed9f) >> >> endobj -776 0 obj << +622 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 313.881 216.505 323.808] +/Rect [145.731 664.373 216.505 674.301] /A << /S /GoTo /D (aacdecoder__lib_8h_abc8ebc3d720699fe1d7c27eccd3da051) >> >> endobj -777 0 obj << +623 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 301.169 234.776 311.096] +/Rect [145.731 651.507 234.776 661.434] /A << /S /GoTo /D (aacdecoder__lib_8h_a4666e424f482470e872827f66399454a) >> >> endobj -778 0 obj << +624 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [306.836 243.796 422.432 254.699] +/Rect [306.836 593.839 422.432 604.743] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -779 0 obj << +625 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.538 187.772 250.986 198.303] +/Rect [138.538 537.522 250.986 548.052] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) >> >> endobj -780 0 obj << +626 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 172.415 180.809 182.602] +/Rect [113.91 522.01 180.809 532.197] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a71440b5535812faf92a0fe99275dd5f0) >> >> endobj -781 0 obj << +627 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 156.715 253.775 166.901] +/Rect [113.91 506.154 253.775 516.341] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41afdf896f1fefa0b962ef99c6cb2681027) >> >> endobj -782 0 obj << +628 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 141.014 218.637 151.201] +/Rect [113.91 490.299 218.637 500.486] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af1e591927344a1a91c49b87efe3fb0b9) >> >> endobj -783 0 obj << +629 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 124.596 217.7 135.5] +/Rect [113.91 473.726 217.7 484.63] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4a877298c7076e5ef4dd848912ab1d48) >> >> endobj -784 0 obj << +630 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 109.613 293.297 119.8] +/Rect [113.91 458.588 293.297 468.775] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41adbb894fd8e900c4993f57ae88f8aee1a) >> >> endobj -785 0 obj << +631 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 93.912 260.102 104.099] +/Rect [113.91 442.733 260.102 452.919] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ad8e91a23786bc032e507dfbd036f63c4) >> >> endobj -791 0 obj << -/D [789 0 R /XYZ 89 770.89 null] ->> endobj -792 0 obj << -/D [789 0 R /XYZ 90 501.144 null] ->> endobj -794 0 obj << -/D [789 0 R /XYZ 90 419.084 null] ->> endobj -795 0 obj << -/D [789 0 R /XYZ 90 260.222 null] ->> endobj -796 0 obj << -/D [789 0 R /XYZ 90 206.109 null] ->> endobj -788 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F44 793 0 R /F11 584 0 R /F14 586 0 R >> -/XObject << /Im4 756 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -861 0 obj << -/Length 871 -/Filter /FlateDecode ->> -stream -xڭ[o0+|H,n@N84&ݘu+8'i95_ -5qܩppPDJ?gF⬲wބG"ªV -AAFk:T Ji$<$#_UVee!nѻxɂs(S$uyQ%Ystd5&4/U4ySWG}s]{Yӱe הdۀS4-F9]-[mO;wƳ#
²hJ?cl?dCI|yi[bk<rêRy1rJZxB__8is=J
a:/ASYU@|(-E!w9*Կix93
}uF. -endstream -endobj -860 0 obj << -/Type /Page -/Contents 861 0 R -/Resources 859 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 748 0 R -/Annots [ 786 0 R 787 0 R 819 0 R 820 0 R 821 0 R 822 0 R 823 0 R 824 0 R 825 0 R 826 0 R 827 0 R 828 0 R 829 0 R 830 0 R 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R 837 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R ] ->> endobj -786 0 obj << +632 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 726.819 214.931 737.723] +/Rect [113.91 426.16 214.931 437.064] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac806692e8a98e9baca1bca5f7d9df0cd) >> >> endobj -787 0 obj << +633 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 711.468 212.729 721.655] +/Rect [113.91 411.022 212.729 421.208] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aa86450161814b428d08b620188302fbc) >> >> endobj -819 0 obj << +634 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 695.4 252.5 705.587] +/Rect [113.91 395.166 252.5 405.353] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a242d8bc09683a84b578546663dda36fa) >> >> endobj -820 0 obj << +635 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 679.332 261.735 689.519] +/Rect [113.91 379.311 261.735 389.497] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a7ea36c43c374f751f65be033057e3888) >> >> endobj -821 0 obj << +636 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 663.264 282.617 673.451] +/Rect [113.91 363.455 282.617 373.642] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4dff2410394a6ffdf0f95ec66cbd0107) >> >> endobj -822 0 obj << +637 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 647.196 300.33 657.383] +/Rect [113.91 347.6 300.33 357.786] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae6d7add4f73779b26c859900f710c34f) >> >> endobj -823 0 obj << +638 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 631.128 290.916 641.315] +/Rect [113.91 331.744 290.916 341.931] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a95dafb71a0623fbeb0715e46b7a189c7) >> >> endobj -824 0 obj << +639 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 615.061 304.993 625.247] +/Rect [113.91 315.889 304.993 326.075] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a97113255d01bdf3cc7104dd411f40949) >> >> endobj -825 0 obj << +640 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 598.993 326.881 609.179] +/Rect [113.91 300.033 326.881 310.22] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a5bc4e4af77d94fa08beb54def8f01f7f) >> >> endobj -826 0 obj << +641 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 582.925 318.034 593.111] +/Rect [113.91 284.178 318.034 294.365] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a0bd193ee6a8c3151c5c6469f7e455a8e) >> >> endobj -827 0 obj << +642 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 566.857 272.445 577.043] +/Rect [113.91 268.322 272.445 278.509] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41afbf7d7d96fdf87cb5f7541348a597b48) >> >> endobj -828 0 obj << +643 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 550.789 250.009 560.975] +/Rect [113.91 252.467 250.009 262.654] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4dbbe3b38d0dfb444fdc3a7adae2f807) >> >> endobj -829 0 obj << +644 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 534.721 258.807 544.907] +/Rect [113.91 236.611 258.807 246.798] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a8aa244ce1ae08763dde378161df0652f) >> >> endobj -830 0 obj << +645 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 518.653 209.959 528.839] +/Rect [113.91 220.756 209.959 230.943] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a60690e0dbc450f62f83548fa484716ab) >> >> endobj -831 0 obj << +646 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 502.585 227.653 512.772] +/Rect [113.91 204.901 227.653 215.087] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a42c5cbc358ada7261ba3d609c33ec3a5) >> >> endobj -832 0 obj << +647 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 486.517 261.745 496.704] +/Rect [113.91 189.045 261.745 199.232] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae36383b7f8b4f36072eb60a303c439c3) >> >> endobj -833 0 obj << +648 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 470.449 234.308 480.636] +/Rect [113.91 173.19 234.308 183.376] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac8bc8e0a106154098f730ba596c43c50) >> >> endobj -834 0 obj << +649 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 454.381 348.36 464.568] +/Rect [113.91 157.334 348.36 167.521] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac12235e2fee27efdcc78f2946f86e4ab) >> >> endobj -835 0 obj << +650 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 438.313 283.922 448.5] +/Rect [113.91 141.479 283.922 151.665] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a0357ce81d9d62cc106c752121fc9dc8a) >> >> endobj -836 0 obj << +651 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 422.245 224.156 432.432] +/Rect [113.91 125.623 224.156 135.81] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a20cdc26726b22cb44143b4e440441e0f) >> >> endobj -837 0 obj << +652 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 406.177 271.877 416.364] +/Rect [113.91 109.768 271.877 119.954] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41acb4252bc9a6eeee71738af951850379c) >> >> endobj -838 0 obj << +653 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 390.109 301.426 400.296] +/Rect [113.91 93.912 301.426 104.099] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aa14848134610eea96115c59a6b944921) >> >> endobj -839 0 obj << +660 0 obj << +/D [658 0 R /XYZ 89 770.89 null] +>> endobj +661 0 obj << +/D [658 0 R /XYZ 90 610.421 null] +>> endobj +662 0 obj << +/D [658 0 R /XYZ 90 556.013 null] +>> endobj +657 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F11 444 0 R /F14 446 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +736 0 obj << +/Length 1198 +/Filter /FlateDecode +>> +stream +xڵX[sF~ׯf"}hr ' p*4mgĺ#aiWh\( fpBS65 Ƀ`"Aװ,$3^e,
,,_IAG3_,
1/F
,,}NX2s BQuY0]?#aH!UZ + +0.xaWFQcE6.vIJv:bv:I!1aԶYec"WR{+0 +Z7t☝8z75S;𓈯 tGKdRvaDn>XF)j'.Od#@k3:8P)>UiZ=Ҽpt)HVY.Uy@ɋl;3z$)iY[Yp-a$Nu^k +ñEA-چ;p0c~)šj3Hǒ۠ +F ]A'#X?洐!
~.n0 b쎹]1xu1?xN[X33/d7qbuvz9+
[E*:,ckͅ*f˼m+cTURj*s1-OzkFBjTKGtrq=^(Q7 ёё~15mULGp5?j +9rYRD1۴a:_<1^r3Uu&ZP4E[]E"H|~f>*v[A̋ak +}&xvizb:_,
5dA
_qހ1H{c~17>a +endstream +endobj +735 0 obj << +/Type /Page +/Contents 736 0 R +/Resources 734 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 609 0 R +/Annots [ 654 0 R 655 0 R 656 0 R 698 0 R 699 0 R 700 0 R 701 0 R 702 0 R 703 0 R 704 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R 711 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R 724 0 R 725 0 R 726 0 R 727 0 R 728 0 R 729 0 R 739 0 R 730 0 R ] +>> endobj +654 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 374.041 261.586 384.228] +/Rect [113.91 727.536 261.586 737.723] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a45662b23139ca5807ed6fe3b8940dc40) >> >> endobj -840 0 obj << +655 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 357.973 259.922 368.16] +/Rect [113.91 711.57 259.922 721.757] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af61dc054946b313e1780cf604ca833c6) >> >> endobj -841 0 obj << +656 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 341.905 348.948 352.092] +/Rect [113.91 695.604 348.948 705.79] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af16b1992a2a415168ab96228671ef337) >> >> endobj -842 0 obj << +698 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 325.837 261.237 336.024] +/Rect [113.91 679.637 261.237 689.824] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a77f722abc6c05f1abf1f51c0d11bf7ec) >> >> endobj -843 0 obj << +699 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 309.769 255.14 319.956] +/Rect [113.91 663.671 255.14 673.858] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a516287ad9b64c230200191fdd60361e1) >> >> endobj -844 0 obj << +700 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 293.702 229.995 303.888] +/Rect [113.91 647.705 229.995 657.891] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41abb11196531beac7285326a5394db0329) >> >> endobj -845 0 obj << +701 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 277.634 224.883 287.82] +/Rect [113.91 631.738 224.883 641.925] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a8bf90eccdaf6063e299f9415c8bd5d1a) >> >> endobj -846 0 obj << +702 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 261.566 234.846 271.752] +/Rect [113.91 615.772 234.846 625.959] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a856cdca9aa719c292b7c351cec03ae06) >> >> endobj -847 0 obj << +703 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 245.498 255.469 255.684] +/Rect [113.91 599.806 255.469 609.992] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a65820f534b99b1529510720eeaafc861) >> >> endobj -848 0 obj << +704 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 229.43 294.004 239.616] +/Rect [113.91 583.839 294.004 594.026] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a72f0dd3698012cdf8b20dd6f0b5de626) >> >> endobj -849 0 obj << +705 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 213.362 305.152 223.548] +/Rect [113.91 567.873 305.152 578.06] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aea6be518456d203d68898efd236a6769) >> >> endobj -850 0 obj << +706 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 196.95 232.076 207.48] +/Rect [113.91 551.563 232.076 562.093] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae2ac2caa02bbffb8ace0fa87ad5ffc05) >> >> endobj -851 0 obj << +707 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.538 157.84 220.58 168.371] +/Rect [138.538 512.657 220.58 523.187] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88) >> >> endobj -852 0 obj << +708 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 142.116 279.638 152.303] +/Rect [113.91 497.034 279.638 507.221] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6e3fa0b7d247c98f132edd55187f9c0c) >> >> endobj -853 0 obj << +709 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 126.048 264.943 136.235] -/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aefc0ded1aea7e08f3c9c55df76c75668) >> +/Rect [113.91 481.068 325.964 491.254] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aee866642a3f335e7874a82939ad0c135) >> >> endobj -854 0 obj << +710 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 109.98 325.964 120.167] -/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aee866642a3f335e7874a82939ad0c135) >> +/Rect [113.91 465.101 309.217 475.288] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> >> endobj -855 0 obj << +711 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 93.912 309.217 104.099] -/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) >> ->> endobj -862 0 obj << -/D [860 0 R /XYZ 89 770.89 null] +/Rect [113.91 449.135 289.292 459.322] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5cec20e1dd4ac89472ad60d3d0c8b5c1) >> >> endobj -859 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F44 793 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -934 0 obj << -/Length 1923 -/Filter /FlateDecode ->> -stream -xYKs6WVr&bЃ,S["d(STD(v:] -
G?CmeW>@7Km2|߲,g˱ٲ(6:B8x!EX=<ZhVY`+z=6d
Hƨ+5ֹihG(L4MZjgЇͻ>w5jk`ޕ?vl-5FWblt&KضCh+u{LUM]7R,;uOx"ƞَBM*Z7K4D'WGH2&Qr1YnCZ -gc<ϯ@((h)7glց #@JJ HL`VU1]ʳP1}@#`|szAl'.!}%k8N&&_1"k}þjc:ǕUM7oHpQ<F2ecyiέlyw'CFTAq|GBj?,ueѬ꙯Vw< -q1dkM0f4ٔK:Ygy&xQ1Lw|)xDt19exA#HOO2N`T?*+0;EE[7Ѭ|ޝtTo_B魶EIA@2C&4l#E5& K%juib -k:Z1qq<CN]bR6SVOԭ*;{[%=%l*d\$Y
k]n&B;zV -rQ.. EO -=͆wup(%V0(P< -e[4*FJ6=q7[aI0[!ΥN!'|~_=ëկ<K}ZE\(MGsi -1֜6C|XOUB*Zk'DKPĨy9rmm'Kӟg(XΑb9B>4d#2cm"o&"Dz2M1wjK9QՃ44}@ :FQu+^{y"`EĊ-Y!:LIj0#aNj\LdSN⨼,EQ, -ȁq&G -endstream -endobj -933 0 obj << -/Type /Page -/Contents 934 0 R -/Resources 932 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 748 0 R -/Annots [ 856 0 R 857 0 R 858 0 R 900 0 R 901 0 R 902 0 R 903 0 R 904 0 R 905 0 R 906 0 R 907 0 R 908 0 R 909 0 R 910 0 R 911 0 R 912 0 R 913 0 R 937 0 R 914 0 R 915 0 R 916 0 R 917 0 R 938 0 R 918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R 928 0 R 929 0 R 939 0 R ] +712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.91 433.169 293.167 443.355] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5e080429e4eaec068ba64c17152ee805) >> >> endobj -856 0 obj << +713 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 727.536 236.151 737.723] +/Rect [113.91 417.202 236.151 427.389] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a28dd853ab4339011893a933020ac5ab8) >> >> endobj -857 0 obj << +714 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 711.366 242.607 721.553] +/Rect [113.91 401.236 242.607 411.423] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6056e5b76cc6a00078388445b1f1cfa1) >> >> endobj -858 0 obj << +715 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 695.196 278.164 705.382] +/Rect [113.91 385.27 278.164 395.457] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a65284784865f22d79700dc268f84e374) >> >> endobj -900 0 obj << +716 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 679.025 260.52 689.212] +/Rect [113.91 369.304 260.52 379.49] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88af24d28dac8b5de47c00c578712d0591e) >> >> endobj -901 0 obj << +717 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 662.855 275.224 673.042] +/Rect [113.91 353.337 275.224 363.524] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a4392100c924c0f20a706f55bc7ab3931) >> >> endobj -902 0 obj << +718 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 646.341 224.943 656.871] +/Rect [113.91 337.027 224.943 347.558] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a605a8fed5c5754dffc63775cc702aae7) >> >> endobj -903 0 obj << +719 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 630.514 218.657 640.701] +/Rect [113.91 321.405 218.657 331.591] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88af84565b78a6ae180e316dd612a0877a7) >> >> endobj -904 0 obj << +720 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 614.001 253.237 624.531] +/Rect [113.91 305.095 253.237 315.625] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aa1a5a121f8b03708d9fdcc06f6e882fb) >> >> endobj -905 0 obj << +721 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [176.92 530.164 289.367 540.695] +/Rect [176.92 222.217 289.367 232.747] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) >> >> endobj -906 0 obj << +722 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [290.609 530.164 393.841 540.695] +/Rect [290.609 222.217 393.841 232.747] /A << /S /GoTo /D (aacdecoder__lib_8h_a8f33403449b41e6a9deda6cb1e07d386) >> >> endobj -907 0 obj << +723 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [398.4 530.164 513.996 540.695] +/Rect [398.4 222.217 513.996 232.747] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -908 0 obj << +724 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [176.737 478.895 289.185 489.425] +/Rect [176.737 171.355 289.185 181.886] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) >> >> endobj -909 0 obj << +725 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [290.244 478.895 394.023 489.425] +/Rect [290.244 171.355 394.023 181.886] /A << /S /GoTo /D (aacdecoder__lib_8h_a404dd0b9b627d3e9ab765dba98be3eec) >> >> endobj -910 0 obj << +726 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [398.4 478.895 513.996 489.425] +/Rect [398.4 171.355 513.996 181.886] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -911 0 obj << +727 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [189.738 427.625 302.186 438.155] +/Rect [189.738 120.494 302.186 131.024] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) >> >> endobj -912 0 obj << +728 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [316.246 427.625 408.27 438.155] +/Rect [316.246 120.494 408.27 131.024] /A << /S /GoTo /D (aacdecoder__lib_8h_afb42ea8892dd828264bd2f6147e0559f) >> >> endobj -913 0 obj << +729 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [462.759 427.625 513.996 438.155] +/Rect [462.759 120.494 513.996 131.024] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -937 0 obj << +739 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 415.296 183.579 426.2] +/Rect [113.91 108.165 183.579 119.069] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -914 0 obj << +730 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [226.965 415.296 309.007 426.2] +/Rect [226.965 108.165 309.007 119.069] /A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88) >> >> endobj -915 0 obj << +737 0 obj << +/D [735 0 R /XYZ 89 770.89 null] +>> endobj +738 0 obj << +/D [735 0 R /XYZ 90 240.819 null] +>> endobj +734 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F44 607 0 R /F14 446 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +789 0 obj << +/Length 1980 +/Filter /FlateDecode +>> +stream +xY[۶~_!I]l9@-˶PYr%=9V/68y"Eù|,ckXƇwƌ.s,s)q5kX7PǁEjt'Qeq(,WW(-*vG<XoExjo،C?,-ڹE
G=W%g%Nw,˜^>2jqgҀA϶r4ލƳx6ws)D85uOzCTN(zXFEW:XϖcYZ/J̏t+v&Hx|-4\%_І]Hwj7J-#UK6 |ZAhGSؾ6H-\ا6a|@O(&qόT7NxQ(<^cyonRjb=:]1ZNo*`3K]U˻Cvܥ-f=kqO͕HNhey9ٗMP4Lc_lU%:6U*~B +8iĢiA`{N(iaBLȓ=tI9ef?f'qo:h +D=pfK +렢??5z-E)pJ!bDד3p86^9aUu?K;UMpe"+?c(a_ZFp]LV7DZn z&#Ҭā1I<4zj7؉Re(f@k8yt'xڪ<iqȥۖ +fpDP3_TE˝Bqɼj).AV;脁m4aR]sN!+up*, +Gw<ުX@[ַl'GWxAFÛSPmТyXh&{5DKSl_Qo3ӐՁiDZ2pd~Gx_:)gJ":eTNq7QB
Ȱ g Lo%fU\׀-6a? =b{|3;8G" cϟB;n:ͯ٦kj4Txx@e]N\2Jyl]U]q3`6p +7M7%P;J'U>00U9+#Kd{
i7c#K{jEbݮ'uؘsx_K)y@1UӺNنp:x=חf!_c|g8Ap&ۚB0D C"Ȥ=M +4)>.., +:d>Cq*U=A+oԧ8U)N>w2XAᜒ6 ݦطuw;8N/6~\.3*tJ*ɊkǗY|՚0a$9{ϐI +endstream +endobj +788 0 obj << +/Type /Page +/Contents 789 0 R +/Resources 787 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 609 0 R +/Annots [ 731 0 R 732 0 R 733 0 R 791 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R 776 0 R 792 0 R 777 0 R 778 0 R 779 0 R 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R ] +>> endobj +731 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [185.554 375.982 298.002 386.886] +/Rect [185.554 714.544 298.002 725.448] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) >> >> endobj -916 0 obj << +732 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [307.877 375.982 416.648 386.886] +/Rect [307.877 714.544 416.648 725.448] /A << /S /GoTo /D (aacdecoder__lib_8h_a15da43e47179e3ca7b58d6b08620533e) >> >> endobj -917 0 obj << +733 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [462.759 375.982 513.996 386.886] +/Rect [462.759 714.544 513.996 725.448] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -938 0 obj << +791 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 364.027 183.579 374.931] +/Rect [113.91 702.589 183.579 713.493] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -918 0 obj << +766 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [183.116 324.712 298.712 335.616] +/Rect [183.116 665.089 298.712 675.993] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -919 0 obj << +767 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [306.149 324.712 381.715 335.616] +/Rect [306.149 665.089 381.715 675.993] /A << /S /GoTo /D (aacdecoder__lib_8h_ac8580fe563e79afe695d7b0b32ea0fed) >> >> endobj -920 0 obj << +768 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [178.254 273.443 290.702 284.347] +/Rect [178.254 615.634 290.702 626.538] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) >> >> endobj -921 0 obj << +769 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [293.278 273.443 392.505 284.347] +/Rect [293.278 615.634 392.505 626.538] /A << /S /GoTo /D (aacdecoder__lib_8h_a6016435b8679d2793078b10ecaf3d05d) >> >> endobj -922 0 obj << +770 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [398.4 273.443 513.996 284.347] +/Rect [398.4 615.634 513.996 626.538] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -923 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [175.618 261.488 195.314 272.391] -/A << /S /GoTo /D (main_8cpp_a93d34427c5ada45032539b77c78ab2f6) >> ->> endobj -924 0 obj << +771 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.74 189.67 293.188 200.2] +/Rect [180.74 533.675 293.188 544.205] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) >> >> endobj -925 0 obj << +772 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [298.25 189.67 366.085 200.2] +/Rect [298.25 533.675 366.085 544.205] /A << /S /GoTo /D (aacdecoder__lib_8h_a6d508fce68c364f5dabc9195e701ecf8) >> >> endobj -926 0 obj << +773 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.469 189.67 490.065 200.2] +/Rect [374.469 533.675 490.065 544.205] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -927 0 obj << +774 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.154 105.524 308.602 116.054] +/Rect [196.154 451.343 308.602 461.873] /A << /S /GoTo /D (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) >> >> endobj -928 0 obj << +775 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [329.078 105.524 438.945 116.054] +/Rect [329.078 451.343 438.945 461.873] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -929 0 obj << +776 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [462.759 105.524 513.996 116.054] +/Rect [462.759 451.343 513.996 461.873] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -939 0 obj << +792 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.91 93.195 183.579 104.099] +/Rect [113.91 439.014 183.579 449.918] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -935 0 obj << -/D [933 0 R /XYZ 89 770.89 null] ->> endobj -936 0 obj << -/D [933 0 R /XYZ 90 548.971 null] ->> endobj -932 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F44 793 0 R /F14 586 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -963 0 obj << -/Length 1296 -/Filter /FlateDecode ->> -stream -xWY6~P ̐聍wݧ$h^DwxH+{}4㛏3#l=Yz{콞Pj(g-V-#Qb- PmDE"(KW}hLL\E'-X>ؔ?-ޗ" -0+>|VY9a`}UR[˥UEV -@ q; uRxb{䴏\=![Qa@pru)y.!5!ayUgRf7a(:!obqQF&K7gR({^r\uXBƨ2JP"9m?`w$j#zGsX18͐˴}[/BO CFV@AXEu_kɨw[ -UJ2%iy滴NRo?ѵtOAl=>w3\9H,ouXZnKlO|&b -endstream -endobj -962 0 obj << -/Type /Page -/Contents 963 0 R -/Resources 961 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 966 0 R -/Annots [ 930 0 R 931 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R ] ->> endobj -930 0 obj << +777 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.181 700.835 272.863 711.365] +/Rect [196.181 401.888 272.863 412.418] /A << /S /GoTo /D (aacdecoder__lib_8h_acca8f4cf9757885d6c654de37a43072f) >> >> endobj -931 0 obj << +778 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [276.679 700.835 392.275 711.365] +/Rect [276.679 401.888 392.275 412.418] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -952 0 obj << +779 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [176.176 657.085 229.635 667.616] +/Rect [176.176 364.387 229.635 374.918] /A << /S /GoTo /D (structCStreamInfo) >> >> endobj -953 0 obj << +780 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [237.606 657.085 350.8 667.616] +/Rect [237.606 364.387 350.8 374.918] /A << /S /GoTo /D (aacdecoder__lib_8h_a60aa42cb3ddc804b44ce61d877d0501e) >> >> endobj -954 0 obj << +781 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [354.616 657.085 470.212 667.616] +/Rect [354.616 364.387 470.212 374.918] /A << /S /GoTo /D (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) >> >> endobj -955 0 obj << +782 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.272 639.643 190.76 649.549] +/Rect [143.272 350.07 190.76 359.975] /A << /S /GoTo /D (structCStreamInfo) >> >> endobj -956 0 obj << +783 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [195.265 613.336 294.073 623.866] +/Rect [195.265 326.887 294.073 337.418] /A << /S /GoTo /D (aacdecoder__lib_8h_a620b5a8c5d7ddd1b525aae1895963e16) >> >> endobj -957 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [124.291 428.872 240.793 439.776] -/A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> ->> endobj -958 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.315 353.765 239.817 364.669] -/A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> ->> endobj -959 0 obj << +784 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [124.215 290.613 240.717 301.517] +/Rect [124.291 161.085 240.793 171.989] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -960 0 obj << +785 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.918 197.882 240.42 208.786] +/Rect [123.315 93.195 239.817 104.099] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -964 0 obj << -/D [962 0 R /XYZ 89 770.89 null] ->> endobj -194 0 obj << -/D [962 0 R /XYZ 90 567.688 null] ->> endobj -198 0 obj << -/D [962 0 R /XYZ 90 500.387 null] ->> endobj -811 0 obj << -/D [962 0 R /XYZ 90 474.957 null] ->> endobj -202 0 obj << -/D [962 0 R /XYZ 90 474.957 null] ->> endobj -808 0 obj << -/D [962 0 R /XYZ 257.47 420.07 null] ->> endobj -206 0 obj << -/D [962 0 R /XYZ 90 397.836 null] +790 0 obj << +/D [788 0 R /XYZ 89 770.89 null] >> endobj -809 0 obj << -/D [962 0 R /XYZ 443.182 356.918 null] +182 0 obj << +/D [788 0 R /XYZ 90 290.48 null] >> endobj -210 0 obj << -/D [962 0 R /XYZ 90 334.684 null] +186 0 obj << +/D [788 0 R /XYZ 90 230.396 null] >> endobj -810 0 obj << -/D [962 0 R /XYZ 90 262.03 null] +668 0 obj << +/D [788 0 R /XYZ 90 206.068 null] >> endobj -214 0 obj << -/D [962 0 R /XYZ 90 241.953 null] +190 0 obj << +/D [788 0 R /XYZ 90 206.068 null] >> endobj -806 0 obj << -/D [962 0 R /XYZ 144.445 189.08 null] +665 0 obj << +/D [788 0 R /XYZ 257.47 152.283 null] >> endobj -218 0 obj << -/D [962 0 R /XYZ 90 166.846 null] +194 0 obj << +/D [788 0 R /XYZ 90 136.165 null] >> endobj -805 0 obj << -/D [962 0 R /XYZ 90 94.191 null] +666 0 obj << +/D [788 0 R /XYZ 443.182 96.348 null] >> endobj -961 0 obj << -/Font << /F22 396 0 R /F44 793 0 R /F23 397 0 R /F14 586 0 R /F46 965 0 R /F11 584 0 R >> +787 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F14 446 0 R /F44 607 0 R >> /ProcSet [ /PDF /Text ] >> endobj -971 0 obj << -/Length 1820 +799 0 obj << +/Length 1559 /Filter /FlateDecode >> stream -xڵXYoF~ׯ P j]^AB%GWSI@a+*Ah;u.oƝ֛yeGCc4|llbdeΠGm!9ۏW!66/EIqg˂ذ8E.ź6"g`D}&w
F(<WƬk7F%J Y ݱ01I@/j9`ƃyЛNglc>sjB-Tq0ej͖V{@.2aQrcY59DzOb~u./8@fyfyfN/d:!ײa`!bU)R""/tF)!xZ^7S]q<DetC< ,U#ZoBhf9:a6: ˵qOy><жmvsr$ -\'X -WiT $$[щ0w?uEwsUS'@MuI'H2ϧz"`>/$9hl̷"|"ukP:K8״'6YzkE""鴅4k[w\ ʞ2K^ +xXko6_!`@!3ˇGnHIڝl(BP,:jK$~.%G`>(s/[[oosJha=8%VZmgH9dy2^f7mtgK[SC[s局ؔ9_wQ4c@`Ul +ϸ5_
>V +,XXԨRϥ5<=ӍLj" .aLsɉù}z6:ϯgJ,ky2!Eґ&ہY
+]7iTu)nK4 Cue66ҩ!a`pArHYB^ipr1U~6ڗt0lOmZVI&>XWVEY,M`n3FaQ6Us
/ ia፝{VܰRZbLQU֏/C=[!$Ga[qD%cԟr~[7:[a1yYy: +lAa?J~Ha<yJ^ + Bx"aݗ7CLH'm汰6ٛ-to}'t:u9b{Ń,wyn%Y^o@TRTV`<Y.vQoa3rrh:
/mh" +ohwýHB|V+Jm-Y*kuyݩcL |:eoɊY(P1'㳫Q-:}`)c>4<ĸF9 P6tj!!xuS-탫lIn^-B~nEPx0m(_unMtIGo}:|;( ni\<ץHISz×m
]ybNXCېpz"YF _p|:(q9&k?JQ\WWu_RWgdA6~z~<q +U1cn,b[y%N"]/:T-"K3tPFQ\SKئˤ}]NMOƳ%Q<4>U67C[EhsC\I^z|KRݐNEUFd}Y,JlH2V6%Np[WB4^5nу%ו(ƓhvBwAw08ĜE3Xl:Y=̤Mq|*SG endstream endobj -970 0 obj << +798 0 obj << /Type /Page -/Contents 971 0 R -/Resources 969 0 R +/Contents 799 0 R +/Resources 797 0 R /MediaBox [0 0 595.276 841.89] -/Parent 966 0 R -/Annots [ 968 0 R 973 0 R ] +/Parent 609 0 R +/Annots [ 786 0 R 795 0 R 796 0 R 802 0 R ] >> endobj -968 0 obj << +786 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [456.692 622.039 513.996 632.943] +/Rect [124.215 702.457 240.717 713.361] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -973 0 obj << +795 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.004 610.458 153.511 620.988] +/Rect [123.918 633.884 240.42 644.788] /A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -972 0 obj << -/D [970 0 R /XYZ 89 770.89 null] ->> endobj -222 0 obj << -/D [970 0 R /XYZ 90 739.935 null] ->> endobj -807 0 obj << -/D [970 0 R /XYZ 243.891 693.668 null] +796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [456.692 416.208 513.996 427.112] +/A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -226 0 obj << -/D [970 0 R /XYZ 90 676.964 null] +802 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [89.004 404.627 153.511 415.157] +/A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> >> endobj -230 0 obj << -/D [970 0 R /XYZ 90 596.907 null] +800 0 obj << +/D [798 0 R /XYZ 89 770.89 null] >> endobj -812 0 obj << -/D [970 0 R /XYZ 90 569.922 null] +198 0 obj << +/D [798 0 R /XYZ 90 739.935 null] >> endobj -234 0 obj << -/D [970 0 R /XYZ 90 569.922 null] +667 0 obj << +/D [798 0 R /XYZ 121.033 693.655 null] >> endobj -238 0 obj << -/D [970 0 R /XYZ 90 545.977 null] +202 0 obj << +/D [798 0 R /XYZ 90 677.24 null] >> endobj -813 0 obj << -/D [970 0 R /XYZ 90 519.231 null] +663 0 obj << +/D [798 0 R /XYZ 144.445 625.082 null] >> endobj -242 0 obj << -/D [970 0 R /XYZ 90 519.231 null] +206 0 obj << +/D [798 0 R /XYZ 90 608.293 null] >> endobj -814 0 obj << -/D [970 0 R /XYZ 107.713 438.172 null] +618 0 obj << +/D [798 0 R /XYZ 221.735 556.508 null] >> endobj -815 0 obj << -/D [970 0 R /XYZ 107.713 422.284 null] +210 0 obj << +/D [798 0 R /XYZ 90 539.719 null] >> endobj -816 0 obj << -/D [970 0 R /XYZ 107.713 406.396 null] +664 0 obj << +/D [798 0 R /XYZ 243.891 487.935 null] >> endobj -817 0 obj << -/D [970 0 R /XYZ 107.713 378.553 null] +214 0 obj << +/D [798 0 R /XYZ 90 471.146 null] >> endobj -818 0 obj << -/D [970 0 R /XYZ 107.713 362.665 null] +218 0 obj << +/D [798 0 R /XYZ 90 390.991 null] >> endobj -573 0 obj << -/D [970 0 R /XYZ 107.713 334.822 null] +669 0 obj << +/D [798 0 R /XYZ 90 363.993 null] >> endobj -863 0 obj << -/D [970 0 R /XYZ 107.713 318.934 null] +222 0 obj << +/D [798 0 R /XYZ 90 363.993 null] >> endobj -864 0 obj << -/D [970 0 R /XYZ 107.713 303.047 null] +226 0 obj << +/D [798 0 R /XYZ 90 340.036 null] >> endobj -865 0 obj << -/D [970 0 R /XYZ 107.713 287.159 null] +670 0 obj << +/D [798 0 R /XYZ 90 313.278 null] >> endobj -866 0 obj << -/D [970 0 R /XYZ 107.713 271.271 null] +230 0 obj << +/D [798 0 R /XYZ 90 313.278 null] >> endobj -867 0 obj << -/D [970 0 R /XYZ 107.713 255.383 null] +671 0 obj << +/D [798 0 R /XYZ 107.713 232.033 null] >> endobj -868 0 obj << -/D [970 0 R /XYZ 107.713 239.495 null] +672 0 obj << +/D [798 0 R /XYZ 107.713 216.065 null] >> endobj -869 0 obj << -/D [970 0 R /XYZ 107.713 223.608 null] +673 0 obj << +/D [798 0 R /XYZ 107.713 200.097 null] >> endobj -870 0 obj << -/D [970 0 R /XYZ 107.713 207.72 null] +674 0 obj << +/D [798 0 R /XYZ 107.713 172.174 null] >> endobj -871 0 obj << -/D [970 0 R /XYZ 107.713 179.877 null] +675 0 obj << +/D [798 0 R /XYZ 107.713 156.207 null] >> endobj -872 0 obj << -/D [970 0 R /XYZ 107.713 152.034 null] +434 0 obj << +/D [798 0 R /XYZ 107.713 128.284 null] >> endobj -873 0 obj << -/D [970 0 R /XYZ 107.713 124.191 null] +676 0 obj << +/D [798 0 R /XYZ 107.713 112.316 null] >> endobj -874 0 obj << -/D [970 0 R /XYZ 107.713 108.303 null] +677 0 obj << +/D [798 0 R /XYZ 107.713 96.348 null] >> endobj -969 0 obj << -/Font << /F22 396 0 R /F46 965 0 R /F11 584 0 R /F23 397 0 R /F14 586 0 R >> +797 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F46 801 0 R /F11 444 0 R /F14 446 0 R >> /ProcSet [ /PDF /Text ] >> endobj -976 0 obj << -/Length 1886 +805 0 obj << +/Length 2163 /Filter /FlateDecode >> stream -xX[s8~ϯfjVĥDlIחM:i;lYlHj>HwsEڽ7oWk;-@Z&7-c ғduR̳ ;WYNhN(3,_Ś/o3>o/_E%B<ӳ^|jȴ_{Om5p͵şHI%w#-9aR04\hFhsfy
BpnHր}/@*ĎCBCN -Jӊ-.J=hU'+>'zIpV-2uY|D\0m`C` -R\fڵa':2ѳXK^r`A$T}9{xq\pqLz:v:8P|ߙ̣0ov`u-um \O_(KY!1a -zP8z -.pUwa݅t
AWMx==e/GCrtdF7 ۼ\YIԉ)uF|"`MIK"K j\x&1[g`4SX=.:su5tuu8za>㸐kmǃ81,HeD!s|0A[Q* -KG@i41gDŖ$x9oF4AN2AMۂla<S~)OJwֆ@RC-p:|^N=LiSbUo3'[SV -MJIBʞՈeLUQ(cr,~KܒDd/
N1Nᙍ -Vզi/D-}M>`ل -1=ĮNuZ'p(Қ<)02^B4 7 )KzWnvH|3,gmsQhDNwO0DC7ὐ|S?"C41RJHy
Swx5Y7h)6^߮rۦD\ +xY[s~ϯts@HltNxLmp7ͿZ`;6;=>$}ZwLE3ƄhՖZ`jkFI'a9ĥtc|}ܳJ4pMƂf9QG[o~6 V3
+_lBw-n1mE2
bښG@0>\j0=NFh'b|mV"&F<$e6b\W-|>fkn'FԓRLl`.tq:_$=/f5e4Zx_ݡ.vQ1HyichH%,Ġ<yQrG}g{8=װ]SZUBY+Wbl+Â.eٚ)UwLn7,O.-r ӡ+ְA"*Xב?N/'pAj_yXLy&EBB; +i $y9`~x4o6zSw;Vࢿb6G)Bv8}@R/g:#lM"^#__D"N0nke?c;:N$@0,}WR/"Q&pUw6σ.ww
~-W<_!pCL/
nH U(=w_>86ܵ?1qdZMHj;^qWҏR(<=?VB?W~y}ʟaQS.XGZV_qD9[ͣ#vs95 GݰuᛆIwY"-ѓ\JP5 +tDKV!jY6U@HvP@&РY$=hQOXą*XN(%؋W"52Lt (+q'obV)<SŢ8R +G +JH,CQY?Mpc%f}>@%p:%;BF +dTIqX"pqpj
~Q!["!5pu'(k؎Ez8i.jổYR:dlnbub{P '^ ֠aԥY +sl?0AQav1aS&<vUye endstream endobj -975 0 obj << +804 0 obj << /Type /Page -/Contents 976 0 R -/Resources 974 0 R +/Contents 805 0 R +/Resources 803 0 R /MediaBox [0 0 595.276 841.89] -/Parent 966 0 R ->> endobj -977 0 obj << -/D [975 0 R /XYZ 89 770.89 null] ->> endobj -875 0 obj << -/D [975 0 R /XYZ 107.713 729.972 null] ->> endobj -876 0 obj << -/D [975 0 R /XYZ 107.713 700.831 null] +/Parent 609 0 R >> endobj -877 0 obj << -/D [975 0 R /XYZ 107.713 683.645 null] ->> endobj -878 0 obj << -/D [975 0 R /XYZ 107.713 666.46 null] ->> endobj -879 0 obj << -/D [975 0 R /XYZ 107.713 649.274 null] ->> endobj -880 0 obj << -/D [975 0 R /XYZ 107.713 620.133 null] ->> endobj -881 0 obj << -/D [975 0 R /XYZ 107.713 590.992 null] ->> endobj -882 0 obj << -/D [975 0 R /XYZ 107.713 561.851 null] ->> endobj -883 0 obj << -/D [975 0 R /XYZ 107.713 544.666 null] ->> endobj -884 0 obj << -/D [975 0 R /XYZ 107.713 515.525 null] ->> endobj -885 0 obj << -/D [975 0 R /XYZ 107.713 486.384 null] ->> endobj -886 0 obj << -/D [975 0 R /XYZ 107.713 457.243 null] ->> endobj -887 0 obj << -/D [975 0 R /XYZ 107.713 428.102 null] ->> endobj -888 0 obj << -/D [975 0 R /XYZ 107.713 398.961 null] ->> endobj -889 0 obj << -/D [975 0 R /XYZ 107.713 381.776 null] ->> endobj -890 0 obj << -/D [975 0 R /XYZ 107.713 352.635 null] ->> endobj -891 0 obj << -/D [975 0 R /XYZ 107.713 335.449 null] ->> endobj -892 0 obj << -/D [975 0 R /XYZ 107.713 318.263 null] ->> endobj -893 0 obj << -/D [975 0 R /XYZ 107.713 301.078 null] ->> endobj -894 0 obj << -/D [975 0 R /XYZ 107.713 283.892 null] ->> endobj -895 0 obj << -/D [975 0 R /XYZ 107.713 254.751 null] ->> endobj -896 0 obj << -/D [975 0 R /XYZ 107.713 225.61 null] ->> endobj -897 0 obj << -/D [975 0 R /XYZ 90 212.564 null] ->> endobj -246 0 obj << -/D [975 0 R /XYZ 90 195.191 null] ->> endobj -616 0 obj << -/D [975 0 R /XYZ 107.713 108.303 null] +806 0 obj << +/D [804 0 R /XYZ 89 770.89 null] >> endobj -974 0 obj << -/Font << /F22 396 0 R /F46 965 0 R /F23 397 0 R >> -/ProcSet [ /PDF /Text ] +678 0 obj << +/D [804 0 R /XYZ 107.713 729.972 null] >> endobj -980 0 obj << -/Length 2842 -/Filter /FlateDecode ->> -stream -xڥr6_P -L8IB,OÌymI^GuZz/~F\s<ӳvl3H|Xc}m"y` ӱrv{X/֛٧bK49է带oq}ELIJ=w9V4>Gyd~aKa c ZޕŞFI-$Rp3mʄs3 -oZ3$\d`yF>QVa[2M3@%Xσ-4r%څ?NvR%MVS#\~șY>q)T1@c;X-
<v9/홸~ʘ:t&ڄP}&Uhfy0SSX{ -קC{O1%~3CpLp~i۶JIkZGj$.65y=v\^/>LNo_(v& -m(XlIᬵ}R?|y03lR{ʾ(ypâH+%yndފJԲ>|Pn^yRΚ損E
Gq3Vy{|d#K~+dTqbMlsyww\ɠ!xw[pK~<ڧ[(pz -=~FT;bnk4DhWTu4"$ (kJLѭ{aVUq!; w\ݨGaP%1ɺ !c])z4Ԣ:[#jkqDaR@#Tx0mn\#Fk2\wVWJ\`divMFyT$ei\o3mrv}ۆ#;@T:{[CG9
ū$oV0;@!ZJ1*ԀV
U8AYN;\
DmYW* 7?Mئkqma'~(E&2/[(H<qAe(@ -6C[
($ky;0&XBB7Q^RK<*҃K -9/[AO(2Ϫ[|U~af -߰s+|zpĩ O -A7,X)QXmr{:TDEK%<`0@pgv RoP-5(jNzIRv~d)(M[P\ބ[ 3]ֆBݕб}ckt1df2!vyO|܇n[A]E44v=[-T8S};á(^Chojspu\LЏ5Yɇ]ѷ|=ʗZ_!aDĕ}.|+MNJYz.)D)x0l:*h[4Ozv!*oJܟm+RV -ETBMݝҋۨU=uY ]3]7 .ٚ|=4x_& xŏKO4GV n6j.GvNL.@t1 7M͋Ԫ$3X,9@'N#e1j'04]d|\=mO͠{W=%:so?69wOS'mP+î8qU,1=4=i119W;ɒprOo6,E -endstream -endobj -979 0 obj << -/Type /Page -/Contents 980 0 R -/Resources 978 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 966 0 R +679 0 obj << +/D [804 0 R /XYZ 107.713 715.912 null] >> endobj -981 0 obj << -/D [979 0 R /XYZ 89 770.89 null] +680 0 obj << +/D [804 0 R /XYZ 107.713 701.852 null] >> endobj -898 0 obj << -/D [979 0 R /XYZ 107.713 729.972 null] +681 0 obj << +/D [804 0 R /XYZ 107.713 687.792 null] >> endobj -899 0 obj << -/D [979 0 R /XYZ 107.713 612.017 null] +682 0 obj << +/D [804 0 R /XYZ 107.713 673.732 null] >> endobj -617 0 obj << -/D [979 0 R /XYZ 107.713 560.053 null] +683 0 obj << +/D [804 0 R /XYZ 107.713 659.671 null] >> endobj -940 0 obj << -/D [979 0 R /XYZ 107.713 532 null] +684 0 obj << +/D [804 0 R /XYZ 107.713 633.656 null] >> endobj -941 0 obj << -/D [979 0 R /XYZ 107.713 473.821 null] +685 0 obj << +/D [804 0 R /XYZ 107.713 607.641 null] >> endobj -942 0 obj << -/D [979 0 R /XYZ 107.713 421.857 null] +686 0 obj << +/D [804 0 R /XYZ 107.713 581.626 null] >> endobj -943 0 obj << -/D [979 0 R /XYZ 107.713 393.803 null] +687 0 obj << +/D [804 0 R /XYZ 107.713 567.565 null] >> endobj -944 0 obj << -/D [979 0 R /XYZ 107.713 341.839 null] +688 0 obj << +/D [804 0 R /XYZ 107.713 541.55 null] >> endobj -945 0 obj << -/D [979 0 R /XYZ 107.713 289.875 null] +689 0 obj << +/D [804 0 R /XYZ 107.713 515.535 null] >> endobj -946 0 obj << -/D [979 0 R /XYZ 107.713 231.696 null] +690 0 obj << +/D [804 0 R /XYZ 107.713 501.475 null] >> endobj -947 0 obj << -/D [979 0 R /XYZ 107.713 203.642 null] +691 0 obj << +/D [804 0 R /XYZ 107.713 487.415 null] >> endobj -250 0 obj << -/D [979 0 R /XYZ 90 174.604 null] +692 0 obj << +/D [804 0 R /XYZ 107.713 473.355 null] >> endobj -949 0 obj << -/D [979 0 R /XYZ 90 150.205 null] +693 0 obj << +/D [804 0 R /XYZ 107.713 447.339 null] >> endobj -254 0 obj << -/D [979 0 R /XYZ 90 150.205 null] +694 0 obj << +/D [804 0 R /XYZ 107.713 421.324 null] >> endobj -978 0 obj << -/Font << /F22 396 0 R /F46 965 0 R /F23 397 0 R /F14 586 0 R >> -/ProcSet [ /PDF /Text ] +695 0 obj << +/D [804 0 R /XYZ 107.713 395.309 null] >> endobj -984 0 obj << -/Length 1292 -/Filter /FlateDecode ->> -stream -xXIS8WhWdY^$4M>%Tش -A#}2Vi;{I<Oe/"LE^[´5n<uB. -5fK7jDJ -fd~ۑ]QbcxL+x'~amhoqwrlHc -VƴǪFAp
Y> /N7ٱL)Ѩ!:YK)Np AQ]Jx -t~V7reE"i-Bqcњ*{%KA8+*/D!oAJC.
2vc"<ˊ
sdYS+bS}9#e^ -B6?:.*ogl᧫i.tȽ~%]/gl^> "z:+ 7lytT -͏f0,e1Tj -*d~f_P5a(DF榲~OEҸ\Iܕ$0}z1:Ltf Of+_E?A -)G8K#SSGH|xWpWf\?L%ϫ[i걽m8bSvrQ`ASZH[Y -endstream -endobj -983 0 obj << -/Type /Page -/Contents 984 0 R -/Resources 982 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 966 0 R +696 0 obj << +/D [804 0 R /XYZ 107.713 381.249 null] >> endobj -985 0 obj << -/D [983 0 R /XYZ 89 770.89 null] +697 0 obj << +/D [804 0 R /XYZ 107.713 355.233 null] >> endobj -948 0 obj << -/D [983 0 R /XYZ 90 591.248 null] +740 0 obj << +/D [804 0 R /XYZ 107.713 329.218 null] >> endobj -258 0 obj << -/D [983 0 R /XYZ 90 575.739 null] +741 0 obj << +/D [804 0 R /XYZ 107.713 303.203 null] >> endobj -576 0 obj << -/D [983 0 R /XYZ 90 372.039 null] +742 0 obj << +/D [804 0 R /XYZ 107.713 277.187 null] >> endobj -262 0 obj << -/D [983 0 R /XYZ 90 356.53 null] +743 0 obj << +/D [804 0 R /XYZ 107.713 251.172 null] >> endobj -550 0 obj << -/D [983 0 R /XYZ 90 199.683 null] +744 0 obj << +/D [804 0 R /XYZ 107.713 237.112 null] >> endobj -266 0 obj << -/D [983 0 R /XYZ 90 184.173 null] +745 0 obj << +/D [804 0 R /XYZ 107.713 211.097 null] >> endobj -982 0 obj << -/Font << /F22 396 0 R /F46 965 0 R /F23 397 0 R /F14 586 0 R >> -/ProcSet [ /PDF /Text ] +746 0 obj << +/D [804 0 R /XYZ 107.713 197.037 null] >> endobj -988 0 obj << -/Length 1899 -/Filter /FlateDecode ->> -stream -xXKs6WR3 -&K,qJu_],H2$^H`/~ -XP,!~YUH8ۊF]ؕM.͊vt,P]Ķ:/rn#K]?DqYnqM<>\0(K!)?/`8 -S1Iay Uw4Zc㉁8yh ckCGa:S +N+vL(lFDtuUڮ("vBbȨ2 -_rNڊ:Đ./O_]89:_H$Mṏ́YA\^/o.~&2`/hSb9AeGtϷLzJ,AOAִpqjLpuU4Φ^i)*dJ}C[~KvtJ8"92Aay1˵}nWyp<{8KS0͢(d8-h9'đ?aԅsuw -(#X15 - -M32~ -t6]R10/)= -~WQwED"`SDaJ0f*Iww~#` dd1L/v΄.Ք>Stc!?(.(RW Өٯ1,ZӒz' -xh6zKpWWn> -Q1 -~+zUY >ǂ(y7]Y]ޤx2Ѝ -] -wnAR/=U\䖕#늂^W-k}65tfzb"JvMsGHX -qPGKm -endstream -endobj -987 0 obj << -/Type /Page -/Contents 988 0 R -/Resources 986 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 966 0 R +747 0 obj << +/D [804 0 R /XYZ 107.713 182.977 null] >> endobj -989 0 obj << -/D [987 0 R /XYZ 89 770.89 null] +748 0 obj << +/D [804 0 R /XYZ 107.713 168.916 null] >> endobj -551 0 obj << -/D [987 0 R /XYZ 90 598.72 null] +749 0 obj << +/D [804 0 R /XYZ 107.713 154.856 null] >> endobj -270 0 obj << -/D [987 0 R /XYZ 90 584.213 null] +750 0 obj << +/D [804 0 R /XYZ 107.713 128.841 null] >> endobj -574 0 obj << -/D [987 0 R /XYZ 90 321.263 null] +751 0 obj << +/D [804 0 R /XYZ 107.713 102.826 null] >> endobj -274 0 obj << -/D [987 0 R /XYZ 90 306.756 null] +752 0 obj << +/D [804 0 R /XYZ 90 96.348 null] >> endobj -986 0 obj << -/Font << /F22 396 0 R /F46 965 0 R /F23 397 0 R /F14 586 0 R >> +803 0 obj << +/Font << /F22 292 0 R /F46 801 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -994 0 obj << -/Length 1142 +814 0 obj << +/Length 2276 /Filter /FlateDecode >> stream -xڽW[s6}0ST]sq.L:n_;YW7X7I} $]t>z'og{| 7_y>(1~++Y-lDv,˥ZV,R=|/O|uW!2Vjfvm̽"ȣ9 "ja_BOle"iMI(j|x,U.!A/̚dqڶBgj -;/~m.W/k^4xh=d^ob~F|+[~JٓiYBMDݙnmرL?}_;)36]FFX&@N3l+
LQbAB +xY[s
~[iCNTY9uƷ͜d<8#*IXr%S/X@?xهe^x4_2ā`4_8cN/jQ-U)w5|Wl> uTX#"g-%JDF/h ߏ|OfYSmGݟp濩i":8}4oIč"gz1>ܹIL>MQ3`'-vh,B/N&jۢ|.jUxF#]Ǿe1HT$a:oh"-"h*p|j6qqvq} ^ ̀;ATvoq9[7p4ُ2uQ+|.leOT+7 +]rEu\oSlwFרUeST,0йm +ĉq +BFcYANXM=(RR 1ˋ}]ݼдTJK@4mڵf$R%a 0t[VoHνRX|O\~x6p`<dmVya pq +ײFDWRIn=*h<J5K\ʄ[ϩ=TWE7fjz$,뚞+7=ҪeDM4M>uPP}=I1 >S^lb 7>8e)'$!HOLgÓh +Y!`HK<;_m~7
@6nwubf{7zU۹եV
zs>[J_M1anPC0My
< +s^/ endstream endobj -993 0 obj << +813 0 obj << /Type /Page -/Contents 994 0 R -/Resources 992 0 R +/Contents 814 0 R +/Resources 812 0 R /MediaBox [0 0 595.276 841.89] -/Parent 996 0 R -/Annots [ 990 0 R 991 0 R ] +/Parent 817 0 R +/Annots [ 807 0 R 816 0 R 808 0 R 809 0 R 810 0 R ] >> endobj -990 0 obj << +807 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [105.88 211.845 159.339 220.691] -/A << /S /GoTo /D (structCStreamInfo) >> +/Rect [457.05 466.557 513.996 477.461] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5e080429e4eaec068ba64c17152ee805) >> >> endobj -991 0 obj << +816 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.495 122.043 253.953 151.109] -/A << /S /GoTo /D (structCStreamInfo) >> ->> endobj -995 0 obj << -/D [993 0 R /XYZ 89 770.89 null] +/Rect [128.635 455.578 256.256 465.506] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5e080429e4eaec068ba64c17152ee805) >> >> endobj -950 0 obj << -/D [993 0 R /XYZ 90 630.093 null] ->> endobj -278 0 obj << -/D [993 0 R /XYZ 90 613.631 null] ->> endobj -967 0 obj << -/D [993 0 R /XYZ 90 443.45 null] ->> endobj -282 0 obj << -/D [993 0 R /XYZ 90 426.988 null] ->> endobj -575 0 obj << -/D [993 0 R /XYZ 90 283.61 null] ->> endobj -286 0 obj << -/D [993 0 R /XYZ 90 267.148 null] ->> endobj -549 0 obj << -/D [993 0 R /XYZ 90 94.191 null] ->> endobj -992 0 obj << -/Font << /F22 396 0 R /F46 965 0 R /F23 397 0 R /F14 586 0 R >> -/ProcSet [ /PDF /Text ] +808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.806 312.84 363.667 323.744] +/A << /S /GoTo /D (structCStreamInfo_aae39329c51fe206a8aee33daba2fe1db) >> >> endobj - -1002 0 obj << -/Length 981 -/Filter /FlateDecode ->> -stream -xVKFWL9 -y8*^{Hڸ(]U!v>=0`!cyKNAfW -g_f$ 9aKfJ">znH0k?fbh1ĉ)Jno?nE"s~~YE-XwզR%ET>D)Ʉn -J{{%ܓh\PPHLQSy]Usuh~tF\I60}nw'E -`je#ɾy@e`htn/efUzcIF5ʦKM~<i9C98NU -*/znc x_rD'ĩkD:j9mU3Z\άiL1fߒ2XQlNQI
nDk|3}e8>*5)?\`"iZă -ރz?b >M
Eiz?sz_eIm /1&h+ Fca}\ -9PQr(F0lG`r!>p=~zxQS=3VUUdV 3UTpVR`zbfNiMegSdS&h977מeoؙ*tbǵ;w_[eǸ첮_JՃy2m}+(ܫ~9B]_T5>M>7Fq_ySDžanBg-h#'uCE@ZU -N`F>EuSyxuzݰQqj4D?J}9tOI -endstream -endobj -1001 0 obj << -/Type /Page -/Contents 1002 0 R -/Resources 1000 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 996 0 R -/Annots [ 997 0 R ] +809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.723 312.84 510.679 323.744] +/A << /S /GoTo /D (structCStreamInfo_aa35e5be20f99be29ce12f9f41bf4d50e) >> >> endobj -997 0 obj << +810 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.906 181.317 431.905 192.221] -/A << /S /GoTo /D (LIBUSE_Calling_Sequence) >> +/Rect [314.704 274.924 493.961 285.828] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5e080429e4eaec068ba64c17152ee805) >> >> endobj -1003 0 obj << -/D [1001 0 R /XYZ 89 770.89 null] +815 0 obj << +/D [813 0 R /XYZ 89 770.89 null] >> endobj -290 0 obj << -/D [1001 0 R /XYZ 90 739.935 null] +234 0 obj << +/D [813 0 R /XYZ 90 739.935 null] >> endobj -618 0 obj << -/D [1001 0 R /XYZ 90 543.139 null] +476 0 obj << +/D [813 0 R /XYZ 107.713 661.694 null] >> endobj -294 0 obj << -/D [1001 0 R /XYZ 90 513.396 null] +753 0 obj << +/D [813 0 R /XYZ 107.713 633.681 null] >> endobj -547 0 obj << -/D [1001 0 R /XYZ 90 267.75 null] +477 0 obj << +/D [813 0 R /XYZ 107.713 549.645 null] >> endobj -298 0 obj << -/D [1001 0 R /XYZ 90 236.885 null] +754 0 obj << +/D [813 0 R /XYZ 107.713 521.633 null] >> endobj -1000 0 obj << -/Font << /F22 396 0 R /F46 965 0 R /F23 397 0 R /F37 543 0 R >> +755 0 obj << +/D [813 0 R /XYZ 107.713 236.059 null] +>> endobj +812 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F46 801 0 R /F14 446 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1025 0 obj << -/Length 981 +821 0 obj << +/Length 2657 /Filter /FlateDecode >> stream -xڵW[s6~Wh/0S+ .ewkN[Pf8e+qIv'$qtΧOpX+r5"60
B z!5m1E^f|wTr6ĘRm~T`%pФX" -8fzo*#!Z}1T`D MLM0
b2#7y9_V;˅q =W*ڌ2tF$^>w?֢h
S-ja=`c߅[(gYdM5Tf84}I#2qPN0L?{F
;KR(mx#0O<];>|waގV|wBa ="haU;`l$s\hS]h>ߺg)GF,B`MdAu#1 39釹SgS8abBFo4j -<֒SJ4ԄfO,J2Td~H9yZ^,(ah!.4A.$PHYgg&E.W,JLVu$۸[o罹;9wyNIY7H"<JnY&u-Ir,oF~%K}kO
A9g=F+SS<dʋy|E^<g2~?"z_7qoܬ˷)jOl\* MV]J4;
hBQg ;d}~щB,J*<Ej/좭h"P/!qb~tU<Syy,-*/b8~{i2h_6'[rZ0ݷ%"6 +xڥY[s~툪VM
^{&E +$P*\~e$B_ LEHi3>]Ҭ]x=V28YmI +
폡haZs. +XgJ35Z{^xA:fj!2(Y{C;Vuȶ,m0 ٢Kn_d26ݎ`df[{>liN&EpJgp+Sˤ3Os4u4\j,nyjdfI>d'YYYFKzFyc_Zz:tʋ::ր0թFMK&؛hҀ8[Fk ;z+uJϤ\O8dhY4{$lA/5bB$r~^~S#p{Ma]xt'p +WzV%Yeh0-,?D~t&JEȶS;Exb/.~ +6sY%UMLYr9XAc7,!x1ya_{ǒZ{v"y&CIl&X Vrlo.y\{́^D`VaG~t=mgU`6/H?G7 4U#bHRNv쾿dBۃAz(׃~;p*6#`=b z=\JI6@UVx.4'9')MHC]Ỵ<?l:qĽn-ZAǁS"?R.γW4{|ܙcXvuJ]U!ڽ=w &X<
mIr[onR tv;@@}j@YA\5`+Lg?zaw݄PR]lFՆ)D0""Ѭ` +X2Q۾B2:)etGcmmRc +u(V endstream endobj -1024 0 obj << +820 0 obj << /Type /Page -/Contents 1025 0 R -/Resources 1023 0 R +/Contents 821 0 R +/Resources 819 0 R /MediaBox [0 0 595.276 841.89] -/Parent 996 0 R -/Group 999 0 R -/Annots [ 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R ] ->> endobj -998 0 obj << -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (./main_8cpp__incl.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 1030 0 R -/BBox [0 0 635 224] -/Group 999 0 R -/Resources << -/ExtGState << -/a0 << -/CA 1 -/ca 1 ->> ->>/Font << /f-0-0 1031 0 R>> ->> -/Length 1121 -/Filter /FlateDecode ->> -stream -xnIDd*:XB#!9 `H0y}ȥPF-ΨΥ2?"?7$H0!zAO_}b???d>ן?Od^!Kd6m;m9gDo4F]Md/̶KmȺZY'[]Fb:\bK)) Dx7=5K"9kfame>?FP#4?^Oqf&]39N#10eP̀>R|;>;wi{7*%{<
pX -Yk)9JzAu ۩pBnߵRvK}6j1|*V!GE\@ZZVSެ)./$8E[10t3JI7{F
0YQӕٹFQG9siڈ6*^q='hδ拧g53*HzS<k>M3+>a:7;]շl(!tiOBkP% -endstream -endobj -1030 0 obj -<< -/Creator (cairo 1.8.10 \(http://cairographics.org\)) -/Producer (cairo 1.8.10 \(http://cairographics.org\)) ->> -endobj -1031 0 obj -<< -/Type /Font -/Subtype /Type0 -/BaseFont /FreeSans -/Encoding /Identity-H -/DescendantFonts [ 1032 0 R] -/ToUnicode 1033 0 R ->> -endobj -1032 0 obj -<< -/Type /Font -/Subtype /CIDFontType2 -/BaseFont /FreeSans -/CIDSystemInfo << -/Registry (Adobe) -/Ordering (Identity) -/Supplement 0 ->> -/FontDescriptor 1034 0 R -/W [ 0 [ 500 833 556 222 556 278 500 556 556 556 556 333 556 222 556 556 500 500 278 556 722 278 611 722 500 722 667 556 667]] ->> -endobj -1033 0 obj -<< -/Length 1035 0 R -/Filter /FlateDecode ->> -stream -x]j0>]A3"Ehr -5,|Ɯ0>=IƗJe+
Vf%SQG"%55˩3Q<5zÉj7zxRsϏoV.->7c~xbR5)v/y&؛rngSYJrVN*qjpXzzwg}pIRS -#@= -hGPL@'hAh -endstream -endobj -1034 0 obj -<< -/Type /FontDescriptor -/FontName /FreeSans -/Flags 4 -/FontBBox [ -958 -462 1632 1050] -/ItalicAngle 0 -/Ascent 1000 -/Descent -300 -/CapHeight 1050 -/StemV 80 -/StemH 80 -/FontFile2 1036 0 R ->> -endobj -1035 0 obj -344 -endobj -1036 0 obj -<< -/Length 1037 0 R -/Filter /FlateDecode -/Length1 3236 ->> -stream -xUV{lƉc;N| _$$q؉cbCqJS
P -@u[&g[U7lH(Uۉj
SA:s?>ι{>rHy,?&$ݽynY/?NHv岭ۦd't|MZh<>6囗uqTȿ<l~Ԯݭ)əͣ=!BY+OlجX*(' {FfX0A(%IG-o4ZR_oiq^/kUCZ%\yܢ{RZ\4*Nѻoh˹Rk튦vX
J -ms5%-5\Ae,Vhk -JVZW7hј ; UюTȑʚz U&dg1u%4FZcsG}f -c>ֵ[:C>vD]hHkd!lkc~W397]b«Aă7#YޠwBɚML14֙M;o8wХM,NJ)+U?5)"Ġ":B-3NG:9ghk]P'~ٗA.}kL,1Y1Ers<͠d"f^ᮿϹcᆳ3Hċ -JGϯ\P|fz(1~+ꈉrKX؆EP(ho"ys_, -wVzoxEgJ]tek=ƞby;LB>>j<w쥳 \簾ixreت?sRDzܕJ=Gۄ{T5KB+u]8hףohH`}Aȼ<.ayis1j'ZDE8A7|L}"ə5gUp<DS=.G}EoKQx~!C::d& C:ڽrm |[- -R]SM4G[nFle%JQU:1fb$x0
]M<*a -!\x.,LE<3/W0h*{=@>Eoz ک2k!}VRu)lh}ԉOB]ne6WU \Qm}kqu!kz=M+uݦUk/m3.[m$RbVjRX# -,AxvK -A4Uxk
G4]-֓b^)&@h/ŻO'AIbOm Y&s$: -r[tuL7-Il.ţf75olXbFK&IYjBs3$;qDjg.-eo31#>2͒2[4雋XٗkrB)àqc}LTu>Qe5Uu5${=J?jۇ]B|,g%_7Ƞ]7fO&OQ;&.l}P@PN,X*A/R{d|8KڨQ6ѿ9f2aaIϬTOzĂߣhA(~aR,!,0]H>A~dh'*/G$Zܽ -yDrv," -#$ -E -endstream -endobj -1037 0 obj -2418 -endobj -999 0 obj -<< -/Type /Group -/S /Transparency -/CS /DeviceRGB ->>endobj -1004 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 498.262 230.941 508.189] -/A << /S /GoTo /D (main_8cpp_aea681fdc68ba4b307e92a33c8a62ea08) >> ->> endobj -1005 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 482.837 217.103 493.741] -/A << /S /GoTo /D (main_8cpp_ab4a8982ff08a7f0ed68e15d851833d38) >> ->> endobj -1006 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 468.762 208.505 479.292] -/A << /S /GoTo /D (main_8cpp_a08a7e8a6abdc5cf6d2ac4e978e084d1a) >> ->> endobj -1007 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 454.313 218.468 464.844] -/A << /S /GoTo /D (main_8cpp_a8abd3ebb6e18277a43604c06f41e77a8) >> ->> endobj -1008 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 439.865 219.026 450.395] -/A << /S /GoTo /D (main_8cpp_ab3bc9e46a841eaef9e74d55e0045eba8) >> ->> endobj -1009 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.731 426.019 236.291 435.946] -/A << /S /GoTo /D (main_8cpp_a414bbb1046de58d0a2596be7b829448d) >> ->> endobj -1010 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.921 362.651 148.839 373.555] -/A << /S /GoTo /D (main_8cpp_a0ddf1224851353fc92bfbff6f499fa97) >> +/Parent 817 0 R +/Annots [ 811 0 R 823 0 R 818 0 R 824 0 R ] >> endobj -1011 0 obj << +811 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.547 300.259 193.102 311.163] -/A << /S /GoTo /D (main_8cpp_ab7e6541570b5f939d29aa8bbcc1dde61) >> +/Rect [483.072 726.819 513.996 737.723] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5cec20e1dd4ac89472ad60d3d0c8b5c1) >> >> endobj -1012 0 obj << +823 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.547 285.811 198.084 296.715] -/A << /S /GoTo /D (main_8cpp_a2e18f5738841433eb8c7cd9357ff6ced) >> +/Rect [128.635 714.864 278.402 725.768] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5cec20e1dd4ac89472ad60d3d0c8b5c1) >> >> endobj -1013 0 obj << +818 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.547 271.92 186.447 282.266] -/A << /S /GoTo /D (main_8cpp_ac7fa490a7117a01e48e05784a6da30fc) >> +/Rect [388.428 649.544 513.996 660.448] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5cec20e1dd4ac89472ad60d3d0c8b5c1) >> >> endobj -1014 0 obj << +824 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 257.471 194.239 267.818] -/A << /S /GoTo /D (main_8cpp_a904ab05aa185e4cbd7dfbfbf043caa6f) >> +/Rect [128.635 639.646 183.758 648.493] +/A << /S /GoTo /D (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5cec20e1dd4ac89472ad60d3d0c8b5c1) >> >> endobj -1015 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [151.27 243.023 211.673 253.369] -/A << /S /GoTo /D (main_8cpp_a84b7343ea6e13f56b7a06559a7ef8b5a) >> +822 0 obj << +/D [820 0 R /XYZ 89 770.89 null] >> endobj -1016 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [220.171 228.574 261.655 238.92] -/A << /S /GoTo /D (main_8cpp_ab78424394912809ef271c9587d264664) >> +756 0 obj << +/D [820 0 R /XYZ 107.713 585.529 null] >> endobj -1017 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [151.27 214.126 192.844 224.472] -/A << /S /GoTo /D (main_8cpp_aa5539bfe92dba402e77bcbbb497eee32) >> +757 0 obj << +/D [820 0 R /XYZ 107.713 528.468 null] >> endobj -1018 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.742 199.677 178.438 210.023] -/A << /S /GoTo /D (main_8cpp_a93d34427c5ada45032539b77c78ab2f6) >> +758 0 obj << +/D [820 0 R /XYZ 107.713 476.951 null] >> endobj -1019 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [151.27 185.229 195.872 195.575] -/A << /S /GoTo /D (main_8cpp_a774499c04248e86e7f71ea689c3a7d19) >> +759 0 obj << +/D [820 0 R /XYZ 107.713 449.345 null] >> endobj -1020 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [140.192 170.78 177.043 181.126] -/A << /S /GoTo /D (main_8cpp_a7f18a204314393991d3da96356b2fd16) >> +760 0 obj << +/D [820 0 R /XYZ 107.713 397.828 null] >> endobj -1021 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.547 155.774 177.601 166.677] -/A << /S /GoTo /D (main_8cpp_aad1596787d6c1baa977de86d9a6f503c) >> +761 0 obj << +/D [820 0 R /XYZ 107.713 346.311 null] >> endobj -1022 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.906 93.195 431.905 104.099] -/A << /S /GoTo /D (LIBUSE_Calling_Sequence) >> +762 0 obj << +/D [820 0 R /XYZ 107.713 289.25 null] >> endobj -1026 0 obj << -/D [1024 0 R /XYZ 89 770.89 null] +763 0 obj << +/D [820 0 R /XYZ 107.713 261.644 null] >> endobj -1027 0 obj << -/D [1024 0 R /XYZ 90 517.732 null] ->> endobj -1028 0 obj << -/D [1024 0 R /XYZ 90 383.098 null] +238 0 obj << +/D [820 0 R /XYZ 90 233.092 null] >> endobj -1029 0 obj << -/D [1024 0 R /XYZ 90 320.706 null] +765 0 obj << +/D [820 0 R /XYZ 90 208.764 null] >> endobj -302 0 obj << -/D [1024 0 R /XYZ 90 138.831 null] +242 0 obj << +/D [820 0 R /XYZ 90 208.764 null] >> endobj -1023 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F14 586 0 R >> -/XObject << /Im5 998 0 R >> +819 0 obj << +/Font << /F22 292 0 R /F23 293 0 R /F46 801 0 R /F14 446 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1056 0 obj << -/Length 1316 +827 0 obj << +/Length 1335 /Filter /FlateDecode >> stream -xڽW[s8~`/0h%8qHwiXvᒵq:_lng//>}\e(%(ݍnS%X:֥p%YP2tFRdUSZ -FF4EnmT+LVB\Pb0`B!ivt (?N`#!
as/B.u@.t
qϸH,7gZ*EPޭLݴڷnA@ǚSEB-R<8-N0eлNNNrN0M1[NS܋5Htڄd4`p.ڷ4^KC8~$Z*;O兣P*IDdڦIJ"gO^I,g2DM}4YB/Gc˿rBβY7-ƿIO'H<8{4;_ﶭ7M/A_,n\Q䌓Wb[B.pXF -*Ύ克p +xX[w6~ Gf[mS6'c9),\;@CnOF7`O<ϊQxX1 k.$]X:+6+Duo7tHd<Sh}8[DBRf0ƑQh3k1u͍`BBЃKuz
{VE!Pԅ[7+nx4"%O3"HioyێW5_=y*,)pF5:ckLp CqZ%~fCchvkZؼ4B-ף2c;j8'f(,}#Kc@yK0/RØ=&z6;s15515)<q.j3,/a endstream endobj -1055 0 obj << +826 0 obj << /Type /Page -/Contents 1056 0 R -/Resources 1054 0 R +/Contents 827 0 R +/Resources 825 0 R /MediaBox [0 0 595.276 841.89] -/Parent 996 0 R -/Annots [ 1053 0 R ] ->> endobj -1053 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [177.272 483.592 293.774 494.496] -/A << /S /GoTo /D (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) >> ->> endobj -1057 0 obj << -/D [1055 0 R /XYZ 89 770.89 null] ->> endobj -306 0 obj << -/D [1055 0 R /XYZ 90 739.935 null] ->> endobj -1041 0 obj << -/D [1055 0 R /XYZ 90 721.648 null] ->> endobj -310 0 obj << -/D [1055 0 R /XYZ 90 721.648 null] +/Parent 817 0 R >> endobj -1038 0 obj << -/D [1055 0 R /XYZ 90 658.58 null] ->> endobj -314 0 obj << -/D [1055 0 R /XYZ 90 636.729 null] ->> endobj -577 0 obj << -/D [1055 0 R /XYZ 90 611.8 null] ->> endobj -318 0 obj << -/D [1055 0 R /XYZ 90 611.8 null] ->> endobj -1042 0 obj << -/D [1055 0 R /XYZ 90 549.869 null] +828 0 obj << +/D [826 0 R /XYZ 89 770.89 null] >> endobj -322 0 obj << -/D [1055 0 R /XYZ 90 528.018 null] +764 0 obj << +/D [826 0 R /XYZ 90 665.784 null] >> endobj -1039 0 obj << -/D [1055 0 R /XYZ 90 466.964 null] ->> endobj -326 0 obj << -/D [1055 0 R /XYZ 90 445.112 null] +246 0 obj << +/D [826 0 R /XYZ 90 651.627 null] >> endobj -1040 0 obj << -/D [1055 0 R /XYZ 90 401.683 null] +437 0 obj << +/D [826 0 R /XYZ 90 477.186 null] >> endobj -330 0 obj << -/D [1055 0 R /XYZ 90 379.831 null] +250 0 obj << +/D [826 0 R /XYZ 90 463.029 null] >> endobj -334 0 obj << -/D [1055 0 R /XYZ 90 296.926 null] +415 0 obj << +/D [826 0 R /XYZ 90 332.767 null] >> endobj -669 0 obj << -/D [1055 0 R /XYZ 90 271.141 null] +254 0 obj << +/D [826 0 R /XYZ 90 318.61 null] >> endobj -338 0 obj << -/D [1055 0 R /XYZ 90 271.141 null] +416 0 obj << +/D [826 0 R /XYZ 90 96.348 null] >> endobj -1054 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F14 586 0 R /F46 965 0 R >> +825 0 obj << +/Font << /F22 292 0 R /F46 801 0 R /F23 293 0 R /F14 446 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1060 0 obj << -/Length 641 +831 0 obj << +/Length 2006 /Filter /FlateDecode >> stream -xV[0~WLs!\;JB;m]aZĶN{@kwɅ/I(@y!6`LP !5
yŢu,z8s
[jEr6D2m(n|U \"3(U#&b Hm|/W@'T3+%f$kl܄!f5yx=Vial4
CF5܇[gPY\%Z㦆~qG5*=dEX4UJ)SDa})yR=<1$>b̶ɑ\tn2YVOc?\oTx]5q+fN}' +yk;-edRhY2K=lB]d_&gP2pv)]?
CخR%riO<'W> EqqN~a_y&M_Ƴ]/xT?va%p7^<By:sS.4RWeV},ր˒U"╃gQfUqTkb5'M;}kTq[7#bNjeyjͻhyeQH9u䃹 +xڭXIsWV,,AOv$:ǥCD +t6_Q 2A1L
4!&5mf+&+ڲ ycb +a$9,Z;:|LaR^bDiOq}g)C
H +5PHՠХQaXԴet9TeMe6(qcSn ^Q1 +$t8ŪwZ9K!2,k%~ݮtMϼ,[zZbB[Dn-JGi< 8-ۺґ?nucџ蠞#\IɿRD2V
H֠w +@AF
Hqh]Q9
hG.k"H+;jnH1aYo]&?uFRVtѨ{Ycˊ*tAPtm}V_l[ヶuTQ0εK獫z^:y#uր* +;-\0icU@?u2]:N[-&= +Ӽ;_ +$nYnk'| +jأ)Y=B.\~㚽(\9-әmGjӌb +6 Vw]YNwvFTЉ!@vHe +.fB鰗Gõ'" +$̄gב}̴ƉuHx@WZOfIT(]ZX|BfQaOxpݬLJ^<˕\٨ze+[n9s˔"H_x<2%0Hf3rb$n,/L x2ze_10꺕:[jXdOd x1. endstream endobj -1059 0 obj << +830 0 obj << /Type /Page -/Contents 1060 0 R -/Resources 1058 0 R +/Contents 831 0 R +/Resources 829 0 R /MediaBox [0 0 595.276 841.89] -/Parent 996 0 R ->> endobj -1061 0 obj << -/D [1059 0 R /XYZ 89 770.89 null] +/Parent 817 0 R >> endobj -342 0 obj << -/D [1059 0 R /XYZ 90 739.935 null] ->> endobj -1049 0 obj << -/D [1059 0 R /XYZ 90 722.92 null] +832 0 obj << +/D [830 0 R /XYZ 89 770.89 null] >> endobj -346 0 obj << -/D [1059 0 R /XYZ 90 722.92 null] +258 0 obj << +/D [830 0 R /XYZ 90 739.935 null] >> endobj -1045 0 obj << -/D [1059 0 R /XYZ 90 661.124 null] +435 0 obj << +/D [830 0 R /XYZ 90 494.849 null] >> endobj -350 0 obj << -/D [1059 0 R /XYZ 90 645.634 null] +262 0 obj << +/D [830 0 R /XYZ 90 478.74 null] >> endobj -951 0 obj << -/D [1059 0 R /XYZ 90 585.852 null] +793 0 obj << +/D [830 0 R /XYZ 90 166.593 null] >> endobj -354 0 obj << -/D [1059 0 R /XYZ 90 570.361 null] +266 0 obj << +/D [830 0 R /XYZ 90 150.485 null] >> endobj -1050 0 obj << -/D [1059 0 R /XYZ 90 528.203 null] +829 0 obj << +/Font << /F22 292 0 R /F46 801 0 R /F14 446 0 R /F23 293 0 R >> +/ProcSet [ /PDF /Text ] >> endobj -358 0 obj << -/D [1059 0 R /XYZ 90 512.712 null] +837 0 obj << +/Length 943 +/Filter /FlateDecode +>> +stream +xVMo8W(Qc'i먇"-٦Jr;)(6X'93o=rzD].1cHa + ?8YH7f(54E&yjoYePVn.ϴ|)t~*<A`f6)jEjƟ.m#4nG[}zH6
7eE
iֽXq ) +Js]jIN(RR]y7)GXJvT8t=Jqn'gXDG\Y\nM*6߈ '*xjSៅh5F7Z(g/@
տ8>dY + 쥮&'SAz0"@ 4Ď]6cyU^d0NLr~6`~Xt+mUU9HD.Հ&b˽"nU@ss1-^ӫѼ2ţ+!Ws'/@dL&RLe_CU2oNvSd龭ߤ"?^|Ap+evUOaj3R,D>%
Wb>j3߉t^&;ZD_gsC"9͊#`_ʷa(OEd]b)ֱ'
%&aGPw=CfROS +KɈjbإ]#iJ潷:喹nr pO +endstream +endobj +836 0 obj << +/Type /Page +/Contents 837 0 R +/Resources 835 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 817 0 R +/Annots [ 833 0 R 834 0 R ] >> endobj -1051 0 obj << -/D [1059 0 R /XYZ 90 452.931 null] +833 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [105.88 386.397 159.339 395.244] +/A << /S /GoTo /D (structCStreamInfo) >> >> endobj -362 0 obj << -/D [1059 0 R /XYZ 90 437.44 null] +834 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.495 291.427 253.953 320.493] +/A << /S /GoTo /D (structCStreamInfo) >> >> endobj -1052 0 obj << -/D [1059 0 R /XYZ 90 377.658 null] +838 0 obj << +/D [836 0 R /XYZ 89 770.89 null] >> endobj -366 0 obj << -/D [1059 0 R /XYZ 90 362.167 null] +794 0 obj << +/D [836 0 R /XYZ 90 635.059 null] >> endobj -1046 0 obj << -/D [1059 0 R /XYZ 90 302.385 null] +270 0 obj << +/D [836 0 R /XYZ 90 614.72 null] >> endobj -370 0 obj << -/D [1059 0 R /XYZ 90 286.894 null] +436 0 obj << +/D [836 0 R /XYZ 90 462.814 null] >> endobj -1047 0 obj << -/D [1059 0 R /XYZ 90 227.112 null] +274 0 obj << +/D [836 0 R /XYZ 90 442.476 null] >> endobj -374 0 obj << -/D [1059 0 R /XYZ 90 211.622 null] +414 0 obj << +/D [836 0 R /XYZ 90 278.615 null] >> endobj -1043 0 obj << -/D [1059 0 R /XYZ 90 151.84 null] +278 0 obj << +/D [836 0 R /XYZ 90 258.276 null] >> endobj -378 0 obj << -/D [1059 0 R /XYZ 90 136.349 null] +478 0 obj << +/D [836 0 R /XYZ 90 96.348 null] >> endobj -1058 0 obj << -/Font << /F22 396 0 R /F23 397 0 R /F14 586 0 R >> +835 0 obj << +/Font << /F22 292 0 R /F46 801 0 R /F23 293 0 R /F14 446 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1064 0 obj << -/Length 358 +841 0 obj << +/Length 553 /Filter /FlateDecode >> stream -xڵMO0>'iqܷ6mLBlSյ)TZ[Z!=2!6. !rlُ2 nFAHBy 3|(66!BSuaA4*ΫmzD'$!>$<U˸XY^HWҘN}fD,ULTjM,ܢ@(i%]YDpFh(& ӡh'p~ijjӟfѼr6\d~If.nh=vFe&MW_Edz5cxg<&ㅁM2M"yqon29(ZM?0=PIw{da?98~{oR- +xڕTMo@+R~{tm$MF$dCkg4XRO7^/ȺOx,zaqЂh˞lstϤ4Cn:h!͊Y cqB"U9/5gd[~ +u`JHZlm}4A[_"| rD_p:=8ZxNg*W+G'fnmzit819?F7yv** +EL!yic7UOiA[2kBD%.+U࣡@-{^09A)#J>lb@6\\;z_]^Գz^nuMžnb8#*AKȣJcY1;]
^rc(r__8mEx endstream endobj -1063 0 obj << +840 0 obj << /Type /Page -/Contents 1064 0 R -/Resources 1062 0 R +/Contents 841 0 R +/Resources 839 0 R /MediaBox [0 0 595.276 841.89] -/Parent 996 0 R ->> endobj -1065 0 obj << -/D [1063 0 R /XYZ 89 770.89 null] ->> endobj -1044 0 obj << -/D [1063 0 R /XYZ 90 727.815 null] +/Parent 817 0 R >> endobj -382 0 obj << -/D [1063 0 R /XYZ 90 713.245 null] ->> endobj -1048 0 obj << -/D [1063 0 R /XYZ 90 653.647 null] +842 0 obj << +/D [840 0 R /XYZ 89 770.89 null] >> endobj -386 0 obj << -/D [1063 0 R /XYZ 90 639.077 null] +282 0 obj << +/D [840 0 R /XYZ 90 739.935 null] >> endobj -1062 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +839 0 obj << +/Font << /F22 292 0 R /F46 801 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1112 0 obj << -/Length 780 +889 0 obj << +/Length 773 /Filter /FlateDecode >> stream -x͘ˎ0<TR'IH6ӢQeс#Uİh߾΅K:-*@ (Ձ+`2'DFC#G@UlV'؉/ qq1R2bDTe=p烡jۨy||XV2uiwjO~#^Ǻ{ -Q}"u]KB -s^U`*Znu[vU%4[nw7g)O{fļweXnz<z(Eݑo!RdV۹(ьH$^egJnd1űhz:|GYu/l>¨NW勷Kr=ܔ0ꜙ{:JZ|Zw$ r/*Unc۷zz[rw`V -]Pv1ggC{Gc(h$3U"*xb}uTDXBkK.qub1M_ ,P9}۫D>qD]b>d}s)6H<Úf;6V~Xzʥ̕Wgn</iLQb* -F6fXhuxu_R3A})M&oW0ɱ{SI m`vMjqVR'VdNxiW"SFWAFV9aO6uǫ4hF:ԛbT{[: hSЃ9k +x͘I0 +Yvtqld;ӢQeс#Uph}%9 +<fi~VA`o[9TbY"1Y`8*6jo_.Wz+<}Cﺧ6ۆѨzcd(k=JXeWeZWrR\oV(r.,CD;C3$sK4 +D_*;/!
Vb:Q9b듋Am\}e@XGL|A7."wA#G^ 5@kL\inSqCV;mQr sM;"; +Xr2eNVIS\)R buulOX͝z*D<PʅVf62Jλ8; 1
8 endstream endobj -1111 0 obj << +888 0 obj << /Type /Page -/Contents 1112 0 R -/Resources 1110 0 R +/Contents 889 0 R +/Resources 887 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1114 0 R -/Annots [ 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R ] +/Parent 891 0 R +/Annots [ 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R 864 0 R 865 0 R 866 0 R 867 0 R 868 0 R 869 0 R 870 0 R 871 0 R 872 0 R 873 0 R 874 0 R 875 0 R 876 0 R 877 0 R 878 0 R 879 0 R 880 0 R 881 0 R 882 0 R 883 0 R 884 0 R 885 0 R ] >> endobj -1066 0 obj << +843 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 608.529 193.242 618.716] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.26) >> >> endobj -1067 0 obj << +844 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 584.593 193.242 594.78] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1068 0 obj << +845 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 560.658 193.242 570.844] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1069 0 obj << +846 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 536.722 193.242 546.909] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1070 0 obj << +847 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 512.786 193.242 522.973] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1071 0 obj << +848 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 488.851 193.242 499.037] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1072 0 obj << +849 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 464.915 193.242 475.102] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1073 0 obj << +850 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 440.979 193.242 451.166] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1074 0 obj << +851 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 417.044 193.242 427.23] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1075 0 obj << +852 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 393.108 193.242 403.295] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1076 0 obj << +853 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 369.172 193.242 379.359] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1077 0 obj << +854 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 345.237 193.242 355.423] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1078 0 obj << +855 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 321.301 193.242 331.488] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1079 0 obj << +856 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 297.365 193.242 307.552] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1080 0 obj << +857 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 273.43 193.242 283.616] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1081 0 obj << +858 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 249.494 193.242 259.681] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1082 0 obj << +859 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 225.558 193.242 235.745] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1083 0 obj << +860 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 201.623 193.242 211.809] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1084 0 obj << +861 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 177.687 193.242 187.874] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1085 0 obj << +862 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 153.751 193.242 163.938] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1086 0 obj << +863 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 129.816 193.242 140.002] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1087 0 obj << +864 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 105.88 193.242 116.067] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1088 0 obj << +865 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 620.497 409.724 630.684] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1089 0 obj << +866 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 596.559 409.724 606.746] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1090 0 obj << +867 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 572.622 409.724 582.809] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1091 0 obj << +868 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 548.684 409.724 558.871] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1092 0 obj << +869 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 524.747 409.724 534.934] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1093 0 obj << +870 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 500.809 409.724 510.996] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1094 0 obj << +871 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 476.872 409.724 487.058] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1095 0 obj << +872 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 452.934 409.724 463.121] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1096 0 obj << +873 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 417.042 409.724 427.228] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1097 0 obj << +874 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 393.104 409.724 403.291] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1098 0 obj << +875 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 369.167 409.724 379.353] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1099 0 obj << +876 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 333.274 409.724 343.461] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1100 0 obj << +877 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 309.336 409.724 319.523] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1101 0 obj << +878 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 273.444 409.724 283.63] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1102 0 obj << +879 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 249.506 409.724 259.693] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1103 0 obj << +880 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 225.569 409.724 235.755] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1104 0 obj << +881 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 201.631 409.724 211.818] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1105 0 obj << +882 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 177.694 409.724 187.88] -/A << /S /GoTo /D (page.26) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1106 0 obj << +883 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 153.756 409.724 163.943] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.24) >> >> endobj -1107 0 obj << +884 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 129.819 409.724 140.005] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.26) >> >> endobj -1108 0 obj << +885 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.768 105.881 409.724 116.068] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.26) >> >> endobj -1113 0 obj << -/D [1111 0 R /XYZ 89 770.89 null] +890 0 obj << +/D [888 0 R /XYZ 89 770.89 null] >> endobj -1110 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +887 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1189 0 obj << -/Length 1137 +966 0 obj << +/Length 1122 /Filter /FlateDecode >> stream -xZێ8}+HCIHG8NzF۰HݴF߯sA%\:ub^ -c>J DZli>pR!M\˱.1O"c9^,/N'OS(
PeL|TŚ̓pO<(H$7u!__ <мL5qB0͞u.Ը:+H沫HHB ?4 dYuGu}]5^zj.a@v4FNpr%i,Sq%A,o2]ӳkۆkuj4&<[~{G8xbuC`1gcWWF]Y"Ҥ,FM쑜?
I7R6D]xfeYՑ8ZYy:lUYۆ#z}Vz quJ R.-LAK:\S -ɡ0Ln8/n7vm.gQmF1CVK)C6 a(Ni||m:ؠ0EΗr\fsybǽA*ZeƸ:
5vVˏoe0vB.kfF +xZ[s6~#TfWVi2M43Ygxf@,}9st`ڛޯ〱5?o[cqn
1/Ckm5|_zX!ѻz@W?qx[6@l5J|~w{_ +dp_aR.X&$S.15]@d,Hdψ`(Dr!wX#nNҰ\uĜW5jˡF<1ibQteYLH1L[/foI$IZDoY5`v8Y(^64( F8EʴZmbb.t ;"%9P!;Af1h1ha}rx
ed,
;'<Q5۴m5[v\/aPR\.V\,O"e=_IMvx7WvMCCf-#(X[<.ؐي 51*7ġ,I| + >x>aE>>?RHձWy>4F%i,I'ͧ39GǶt[RmNed7`ukMAͱx+22DOԿ*AL${{[||gpP"(WB]5!TMY7ӏkm BJo !ʳJF'a6winǥ+T#rTVGU
>f}j:M8@wމ(eI?_LyҺ>JfuS<<pb_*aة EB/Iam]Ya僗QNYm|=(|RF&r
\EsE`W۽FiPZ1j/ߨsS|^VI'];<\gӭjhhTuyުsKG5}Do~|ۊ[t~|/s(G\c_x^?v0r-:]u/
endstream endobj -1188 0 obj << +965 0 obj << /Type /Page -/Contents 1189 0 R -/Resources 1187 0 R +/Contents 966 0 R +/Resources 964 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1114 0 R -/Annots [ 1109 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R ] +/Parent 891 0 R +/Annots [ 886 0 R 892 0 R 893 0 R 894 0 R 895 0 R 896 0 R 897 0 R 898 0 R 899 0 R 900 0 R 901 0 R 902 0 R 903 0 R 904 0 R 905 0 R 906 0 R 907 0 R 908 0 R 909 0 R 910 0 R 911 0 R 912 0 R 913 0 R 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R 928 0 R 929 0 R 930 0 R 931 0 R 932 0 R 933 0 R 934 0 R 935 0 R 936 0 R 937 0 R 938 0 R 939 0 R 940 0 R 941 0 R 942 0 R 943 0 R 944 0 R 945 0 R 946 0 R 947 0 R 948 0 R 949 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R ] >> endobj -1109 0 obj << +886 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 727.536 193.242 737.723] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.26) >> >> endobj -1115 0 obj << +892 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 703.626 193.242 713.812] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.26) >> >> endobj -1116 0 obj << +893 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 679.715 193.242 689.902] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.26) >> >> endobj -1117 0 obj << +894 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 643.85 193.242 654.037] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.25) >> >> endobj -1118 0 obj << +895 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 619.94 193.242 630.126] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.25) >> >> endobj -1119 0 obj << +896 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 596.029 193.242 606.216] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.25) >> >> endobj -1120 0 obj << +897 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 572.119 193.242 582.306] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.25) >> >> endobj -1121 0 obj << +898 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 548.209 193.242 558.395] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.25) >> >> endobj -1122 0 obj << +899 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 524.298 193.242 534.485] -/A << /S /GoTo /D (page.28) >> +/A << /S /GoTo /D (page.26) >> >> endobj -1123 0 obj << +900 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 500.388 193.242 510.575] /A << /S /GoTo /D (page.26) >> >> endobj -1124 0 obj << +901 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 476.478 193.242 486.664] -/A << /S /GoTo /D (page.25) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1125 0 obj << +902 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 452.567 193.242 462.754] -/A << /S /GoTo /D (page.25) >> +/A << /S /GoTo /D (page.22) >> >> endobj -1126 0 obj << +903 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 428.657 193.242 438.844] -/A << /S /GoTo /D (page.25) >> +/A << /S /GoTo /D (page.22) >> >> endobj -1127 0 obj << +904 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 404.747 193.242 414.933] -/A << /S /GoTo /D (page.25) >> +/A << /S /GoTo /D (page.22) >> >> endobj -1128 0 obj << +905 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [181.287 380.836 193.242 391.023] -/A << /S /GoTo /D (page.27) >> +/A << /S /GoTo /D (page.23) >> >> endobj -1129 0 obj << +906 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [234.159 356.926 246.114 367.113] -/A << /S /GoTo /D (page.28) >> +/Rect [181.287 356.926 193.242 367.113] +/A << /S /GoTo /D (page.24) >> >> endobj -1130 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.476 344.971 265.432 355.157] -/A << /S /GoTo /D (page.27) >> ->> endobj -1131 0 obj << +907 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [230.084 333.016 242.039 343.202] -/A << /S /GoTo /D (page.27) >> +/Rect [234.159 333.016 246.114 343.202] +/A << /S /GoTo /D (page.26) >> >> endobj -1132 0 obj << +908 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [232.853 321.06 244.808 331.247] -/A << /S /GoTo /D (page.27) >> +/Rect [253.476 321.06 265.432 331.247] +/A << /S /GoTo /D (page.24) >> >> endobj -1133 0 obj << +909 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [222.164 309.105 234.119 319.292] -/A << /S /GoTo /D (page.27) >> +/Rect [230.084 309.105 242.039 319.292] +/A << /S /GoTo /D (page.24) >> >> endobj -1134 0 obj << +910 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [222.891 297.15 234.846 307.337] -/A << /S /GoTo /D (page.27) >> +/Rect [232.853 297.15 244.808 307.337] +/A << /S /GoTo /D (page.24) >> >> endobj -1135 0 obj << +911 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.66 285.195 237.615 295.382] -/A << /S /GoTo /D (page.27) >> +/Rect [222.164 285.195 234.119 295.382] +/A << /S /GoTo /D (page.24) >> >> endobj -1136 0 obj << +912 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [281.929 273.24 293.885 283.426] -/A << /S /GoTo /D (page.27) >> +/Rect [222.891 273.24 234.846 283.426] +/A << /S /GoTo /D (page.24) >> >> endobj -1137 0 obj << +913 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.967 261.285 219.922 271.471] -/A << /S /GoTo /D (page.27) >> +/Rect [225.66 261.285 237.615 271.471] +/A << /S /GoTo /D (page.24) >> >> endobj -1138 0 obj << +914 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [210.736 249.329 222.691 259.516] -/A << /S /GoTo /D (page.26) >> +/Rect [281.929 249.329 293.885 259.516] +/A << /S /GoTo /D (page.24) >> >> endobj -1139 0 obj << +915 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [269.885 237.374 281.84 247.561] -/A << /S /GoTo /D (page.27) >> +/Rect [207.967 237.374 219.922 247.561] +/A << /S /GoTo /D (page.24) >> >> endobj -1140 0 obj << +916 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [250.508 225.419 262.463 235.606] -/A << /S /GoTo /D (page.26) >> +/Rect [210.736 225.419 222.691 235.606] +/A << /S /GoTo /D (page.23) >> >> endobj -1141 0 obj << +917 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [270.452 213.464 282.408 223.651] -/A << /S /GoTo /D (page.26) >> +/Rect [269.885 213.464 281.84 223.651] +/A << /S /GoTo /D (page.24) >> >> endobj -1142 0 obj << +918 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [256.814 201.509 268.769 211.695] -/A << /S /GoTo /D (page.26) >> +/Rect [250.508 201.509 262.463 211.695] +/A << /S /GoTo /D (page.23) >> >> endobj -1143 0 obj << +919 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [258.109 189.554 270.064 199.74] -/A << /S /GoTo /D (page.26) >> +/Rect [270.452 189.554 282.408 199.74] +/A << /S /GoTo /D (page.24) >> >> endobj -1144 0 obj << +920 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [178.817 177.598 190.772 187.785] -/A << /S /GoTo /D (page.26) >> +/Rect [256.814 177.598 268.769 187.785] +/A << /S /GoTo /D (page.24) >> >> endobj -1145 0 obj << +921 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [251.783 165.643 263.738 175.83] -/A << /S /GoTo /D (page.26) >> +/Rect [258.109 165.643 270.064 175.83] +/A << /S /GoTo /D (page.23) >> >> endobj -1146 0 obj << +922 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [232.316 153.688 244.271 163.875] -/A << /S /GoTo /D (page.27) >> +/Rect [178.817 153.688 190.772 163.875] +/A << /S /GoTo /D (page.23) >> >> endobj -1147 0 obj << +923 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [228.002 141.733 239.957 151.92] -/A << /S /GoTo /D (page.27) >> +/Rect [251.783 141.733 263.738 151.92] +/A << /S /GoTo /D (page.23) >> >> endobj -1148 0 obj << +924 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [248.017 129.778 259.972 139.964] -/A << /S /GoTo /D (page.26) >> +/Rect [232.316 129.778 244.271 139.964] +/A << /S /GoTo /D (page.24) >> >> endobj -1149 0 obj << +925 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [212.938 117.105 224.893 128.009] -/A << /S /GoTo /D (page.26) >> +/Rect [228.002 117.823 239.957 128.009] +/A << /S /GoTo /D (page.24) >> >> endobj -1150 0 obj << +926 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.708 105.15 227.663 116.054] -/A << /S /GoTo /D (page.26) >> +/Rect [248.017 105.867 259.972 116.054] +/A << /S /GoTo /D (page.24) >> >> endobj -1151 0 obj << +927 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.148 93.912 265.103 104.099] -/A << /S /GoTo /D (page.27) >> +/Rect [212.938 93.195 224.893 104.099] +/A << /S /GoTo /D (page.23) >> >> endobj -1152 0 obj << +928 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [402.342 715.581 414.297 725.768] -/A << /S /GoTo /D (page.27) >> +/Rect [432.189 726.819 444.144 737.723] +/A << /S /GoTo /D (page.23) >> >> endobj -1153 0 obj << +929 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.336 693.011 357.291 701.857] -/A << /S /GoTo /D (page.27) >> +/Rect [469.629 715.581 481.584 725.768] +/A << /S /GoTo /D (page.24) >> >> endobj -1154 0 obj << +930 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [476.234 679.715 488.189 689.902] -/A << /S /GoTo /D (page.27) >> +/Rect [402.342 691.671 414.297 701.857] +/A << /S /GoTo /D (page.24) >> >> endobj -1155 0 obj << +931 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.336 657.145 357.291 665.992] -/A << /S /GoTo /D (page.26) >> +/Rect [345.336 669.2 357.291 677.947] +/A << /S /GoTo /D (page.24) >> >> endobj -1156 0 obj << +932 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [433.126 643.85 445.081 654.037] -/A << /S /GoTo /D (page.26) >> +/Rect [476.234 655.805 488.189 665.992] +/A << /S /GoTo /D (page.24) >> >> endobj -1157 0 obj << +933 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [476.224 631.895 488.179 642.081] -/A << /S /GoTo /D (page.26) >> +/Rect [345.336 633.235 357.291 642.081] +/A << /S /GoTo /D (page.23) >> >> endobj -1158 0 obj << +934 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [476.075 619.94 488.03 630.126] -/A << /S /GoTo /D (page.27) >> +/Rect [433.126 619.94 445.081 630.126] +/A << /S /GoTo /D (page.23) >> >> endobj -1159 0 obj << +935 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [434.989 596.029 446.944 606.216] -/A << /S /GoTo /D (page.26) >> +/Rect [476.224 607.984 488.179 618.171] +/A << /S /GoTo /D (page.24) >> >> endobj -1160 0 obj << +936 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.336 573.459 357.291 582.306] -/A << /S /GoTo /D (page.26) >> +/Rect [476.075 596.029 488.03 606.216] +/A << /S /GoTo /D (page.24) >> >> endobj -1161 0 obj << +937 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [390.725 548.209 402.68 558.395] -/A << /S /GoTo /D (page.26) >> +/Rect [434.989 572.119 446.944 582.306] +/A << /S /GoTo /D (page.24) >> >> endobj -1162 0 obj << +938 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [456.468 524.298 468.424 534.485] -/A << /S /GoTo /D (page.27) >> +/Rect [345.336 549.648 357.291 558.395] +/A << /S /GoTo /D (page.24) >> >> endobj -1163 0 obj << +939 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.106 512.343 509.061 522.53] -/A << /S /GoTo /D (page.26) >> +/Rect [390.725 524.298 402.68 534.485] +/A << /S /GoTo /D (page.24) >> >> endobj -1164 0 obj << +940 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [427.179 488.433 439.134 498.619] -/A << /S /GoTo /D (page.27) >> +/Rect [456.468 500.388 468.424 510.575] +/A << /S /GoTo /D (page.24) >> >> endobj -1165 0 obj << +941 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [474.411 476.478 486.366 486.664] -/A << /S /GoTo /D (page.27) >> +/Rect [497.106 488.433 509.061 498.619] +/A << /S /GoTo /D (page.24) >> >> endobj -1166 0 obj << +942 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [413.101 452.567 425.056 462.754] -/A << /S /GoTo /D (page.26) >> +/Rect [427.179 464.522 439.134 474.709] +/A << /S /GoTo /D (page.24) >> >> endobj -1167 0 obj << +943 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [409.534 428.657 421.49 438.844] -/A << /S /GoTo /D (page.27) >> +/Rect [474.411 452.567 486.366 462.754] +/A << /S /GoTo /D (page.24) >> >> endobj -1168 0 obj << +944 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [426.142 404.747 438.097 414.933] -/A << /S /GoTo /D (page.26) >> +/Rect [413.101 428.657 425.056 438.844] +/A << /S /GoTo /D (page.24) >> >> endobj -1169 0 obj << +945 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [475.726 392.791 487.681 402.978] -/A << /S /GoTo /D (page.27) >> +/Rect [409.534 404.747 421.49 414.933] +/A << /S /GoTo /D (page.24) >> >> endobj -1170 0 obj << +946 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [492.653 380.836 504.608 391.023] -/A << /S /GoTo /D (page.28) >> +/Rect [426.142 380.836 438.097 391.023] +/A << /S /GoTo /D (page.24) >> >> endobj -1171 0 obj << +947 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [457.096 368.881 469.051 379.068] -/A << /S /GoTo /D (page.28) >> +/Rect [475.726 368.881 487.681 379.068] +/A << /S /GoTo /D (page.24) >> >> endobj -1172 0 obj << +948 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [489.713 356.926 501.668 367.113] -/A << /S /GoTo /D (page.28) >> +/Rect [492.653 356.926 504.608 367.113] +/A << /S /GoTo /D (page.26) >> >> endobj -1173 0 obj << +949 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [475.009 344.971 486.964 355.157] -/A << /S /GoTo /D (page.28) >> +/Rect [457.096 344.971 469.051 355.157] +/A << /S /GoTo /D (page.26) >> >> endobj -1174 0 obj << +950 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [433.146 333.016 445.101 343.202] -/A << /S /GoTo /D (page.28) >> +/Rect [489.713 333.016 501.668 343.202] +/A << /S /GoTo /D (page.26) >> >> endobj -1175 0 obj << +951 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.647 309.105 391.602 319.292] -/A << /S /GoTo /D (page.28) >> +/Rect [475.009 321.06 486.964 331.247] +/A << /S /GoTo /D (page.26) >> >> endobj -1176 0 obj << +952 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [395.148 285.195 407.104 295.382] -/A << /S /GoTo /D (page.28) >> +/Rect [433.146 309.105 445.101 319.292] +/A << /S /GoTo /D (page.26) >> >> endobj -1177 0 obj << +953 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [479.432 273.24 491.387 283.426] -/A << /S /GoTo /D (page.27) >> +/Rect [379.647 285.195 391.602 295.382] +/A << /S /GoTo /D (page.25) >> >> endobj -1178 0 obj << +954 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.127 261.285 506.082 271.471] -/A << /S /GoTo /D (page.27) >> +/Rect [345.336 262.625 357.291 271.471] +/A << /S /GoTo /D (page.25) >> >> endobj -1179 0 obj << +955 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [439.432 248.986 451.387 259.516] -/A << /S /GoTo /D (page.28) >> +/Rect [345.336 238.714 357.291 247.561] +/A << /S /GoTo /D (page.25) >> >> endobj -1180 0 obj << +956 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [467.726 237.374 479.681 247.561] -/A << /S /GoTo /D (page.28) >> +/Rect [395.148 213.464 407.104 223.651] +/A << /S /GoTo /D (page.25) >> >> endobj -1181 0 obj << +957 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.768 213.464 409.724 223.651] -/A << /S /GoTo /D (page.28) >> +/Rect [494.127 201.509 506.082 211.695] +/A << /S /GoTo /D (page.25) >> >> endobj -1182 0 obj << +958 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.768 189.554 409.724 199.74] -/A << /S /GoTo /D (page.29) >> +/Rect [439.432 189.21 451.387 199.74] +/A << /S /GoTo /D (page.26) >> >> endobj -1183 0 obj << +959 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.768 165.643 409.724 175.83] -/A << /S /GoTo /D (page.29) >> +/Rect [467.726 177.598 479.681 187.785] +/A << /S /GoTo /D (page.26) >> >> endobj -1184 0 obj << +960 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.768 141.733 409.724 151.92] -/A << /S /GoTo /D (page.29) >> +/Rect [397.768 153.688 409.724 163.875] +/A << /S /GoTo /D (page.26) >> >> endobj -1185 0 obj << +961 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.768 117.823 409.724 128.009] -/A << /S /GoTo /D (page.30) >> +/Rect [397.768 129.778 409.724 139.964] +/A << /S /GoTo /D (page.27) >> >> endobj -1186 0 obj << +962 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.768 93.912 409.724 104.099] -/A << /S /GoTo /D (page.30) >> +/Rect [397.768 105.867 409.724 116.054] +/A << /S /GoTo /D (page.27) >> >> endobj -1190 0 obj << -/D [1188 0 R /XYZ 89 770.89 null] +967 0 obj << +/D [965 0 R /XYZ 89 770.89 null] >> endobj -1187 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +964 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1266 0 obj << -/Length 938 +1043 0 obj << +/Length 861 /Filter /FlateDecode >> stream -xř]s0-\"bKǪn-3|H(`!<$90&!XI"0g@@[Y'ZGټ-jHJRIxr|fH -ms!Ef0W9sCve9A)VOUF=UT]On"b RfE<0FCE6wk6f$H˺PDlr&\4)e*^;o2m\"yN3sIh/Ddڌ8͢q=6"(<N̓{a|jF˧9 -Grd75ꭣ(ٶIqӡ-A9
Uf.|, -DX>
d+uJ=ͱR8rUZ+GIgX=|/6k [ uZ
5qmo,WNEdN|a7kOeT2uK1HYUu \{(lx&0:maiuꂥ?"- -U,KcnK*|99U=arӕX+\_#eIz+Z%:ek&7>G/ --p
TtMl -OۂFEo~٠QSIvA,"ҙ"ň- +xřr0y\̖
^RԖ.t;2 +;o@ZQP ^A$'$ +@pݚ!B$$ % +a˽OqV${1CukVӿ#pC{H+9Ϛg]0$E7Z]HUpͳ(J?]L"x
&XJ#^3",o2Vʨ6p43ϤeS6mPKѕoEI{V<oM"tdyNXg3i٠UEU[m.S]6QɯX=a}&(IZu&ޙl QXt+h0mU[H7sF@muu̜hXl)#_XtDt~\J}<Qy&rZDBrqQt Lne?B,&RN?& +8A6wT$Y +P#@wHc37 +.rxHs3k8\8_LS#ѧo%ZzyG1 +u1%zy endstream endobj -1265 0 obj << +1042 0 obj << /Type /Page -/Contents 1266 0 R -/Resources 1264 0 R +/Contents 1043 0 R +/Resources 1041 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1114 0 R -/Annots [ 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R 1196 0 R 1197 0 R 1198 0 R 1199 0 R 1200 0 R 1201 0 R 1202 0 R 1203 0 R 1204 0 R 1205 0 R 1206 0 R 1207 0 R 1208 0 R 1209 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1214 0 R 1215 0 R 1216 0 R 1217 0 R 1218 0 R 1219 0 R 1220 0 R 1221 0 R 1222 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R 1227 0 R 1228 0 R 1229 0 R 1230 0 R 1231 0 R 1232 0 R 1233 0 R 1234 0 R 1235 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R 1240 0 R 1241 0 R 1242 0 R 1243 0 R 1244 0 R 1245 0 R 1246 0 R 1247 0 R 1248 0 R 1249 0 R 1250 0 R 1251 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1257 0 R 1258 0 R 1259 0 R 1260 0 R 1261 0 R 1262 0 R ] ->> endobj -1191 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.287 715.534 193.242 725.72] -/A << /S /GoTo /D (page.31) >> ->> endobj -1192 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.287 691.529 193.242 701.716] -/A << /S /GoTo /D (page.31) >> ->> endobj -1193 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.287 667.524 193.242 677.711] -/A << /S /GoTo /D (page.31) >> ->> endobj -1194 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [161.362 655.522 173.317 665.708] -/A << /S /GoTo /D (page.21) >> ->> endobj -1195 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [224.366 643.519 236.321 653.706] -/A << /S /GoTo /D (page.26) >> ->> endobj -1196 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.963 631.517 212.919 641.703] -/A << /S /GoTo /D (page.25) >> ->> endobj -1197 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [206.493 619.514 218.448 629.701] -/A << /S /GoTo /D (page.25) >> ->> endobj -1198 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [191.001 607.512 202.956 617.699] -/A << /S /GoTo /D (page.25) >> +/Parent 891 0 R +/Annots [ 963 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R ] >> endobj -1199 0 obj << +963 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [182.692 595.51 194.647 605.696] -/A << /S /GoTo /D (page.25) >> +/Rect [181.287 727.536 193.242 737.723] +/A << /S /GoTo /D (page.27) >> >> endobj -1200 0 obj << +968 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.96 583.507 205.915 593.694] +/Rect [181.287 703.531 193.242 713.718] /A << /S /GoTo /D (page.27) >> >> endobj -1201 0 obj << +969 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.698 571.505 227.653 581.691] +/Rect [181.287 679.526 193.242 689.713] /A << /S /GoTo /D (page.28) >> >> endobj -1202 0 obj << +970 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.15 559.502 227.105 569.689] -/A << /S /GoTo /D (page.29) >> +/Rect [181.287 655.522 193.242 665.708] +/A << /S /GoTo /D (page.28) >> >> endobj -1203 0 obj << +971 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [188.599 547.5 200.555 557.686] +/Rect [181.287 631.517 193.242 641.703] /A << /S /GoTo /D (page.29) >> >> endobj -1204 0 obj << +972 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [211.145 534.78 223.1 545.684] +/Rect [181.287 607.512 193.242 617.699] /A << /S /GoTo /D (page.29) >> >> endobj -1205 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [221.785 523.495 233.74 533.682] -/A << /S /GoTo /D (page.30) >> ->> endobj -1206 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.753 511.493 191.708 521.679] -/A << /S /GoTo /D (page.30) >> ->> endobj -1207 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [220.689 498.773 232.644 509.677] -/A << /S /GoTo /D (page.31) >> ->> endobj -1208 0 obj << +973 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [210.726 487.488 222.682 497.674] -/A << /S /GoTo /D (page.31) >> +/Rect [161.362 595.51 173.317 605.696] +/A << /S /GoTo /D (page.19) >> >> endobj -1209 0 obj << +974 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.112 475.485 237.067 485.672] -/A << /S /GoTo /D (page.31) >> +/Rect [224.366 583.507 236.321 593.694] +/A << /S /GoTo /D (page.23) >> >> endobj -1210 0 obj << +975 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.484 462.766 199.439 473.67] -/A << /S /GoTo /D (page.31) >> +/Rect [200.963 571.505 212.919 581.691] +/A << /S /GoTo /D (page.22) >> >> endobj -1211 0 obj << +976 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [203.942 451.48 215.897 461.667] -/A << /S /GoTo /D (page.32) >> +/Rect [206.493 559.502 218.448 569.689] +/A << /S /GoTo /D (page.22) >> >> endobj -1212 0 obj << +977 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [227.514 439.478 239.469 449.665] -/A << /S /GoTo /D (page.26) >> +/Rect [191.001 547.5 202.956 557.686] +/A << /S /GoTo /D (page.22) >> >> endobj -1213 0 obj << +978 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [205.945 427.476 217.9 437.662] -/A << /S /GoTo /D (page.25) >> +/Rect [182.692 535.497 194.647 545.684] +/A << /S /GoTo /D (page.23) >> >> endobj -1214 0 obj << +979 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [185.462 415.473 197.417 425.66] -/A << /S /GoTo /D (page.25) >> +/Rect [193.96 523.495 205.915 533.682] +/A << /S /GoTo /D (page.24) >> >> endobj -1215 0 obj << +980 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [201.661 403.471 213.616 413.657] +/Rect [215.698 511.493 227.653 521.679] /A << /S /GoTo /D (page.26) >> >> endobj -1216 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.287 379.466 193.242 389.653] -/A << /S /GoTo /D (page.31) >> ->> endobj -1217 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.287 355.461 193.242 365.648] -/A << /S /GoTo /D (page.32) >> ->> endobj -1218 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 331.456 177.332 341.643] -/A << /S /GoTo /D (page.18) >> ->> endobj -1219 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 307.451 177.332 317.638] -/A << /S /GoTo /D (page.18) >> ->> endobj -1220 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 282.729 162.667 293.633] -/A << /S /GoTo /D (page.34) >> ->> endobj -1221 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 258.724 162.667 269.628] -/A << /S /GoTo /D (page.35) >> ->> endobj -1222 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 234.72 162.667 245.624] -/A << /S /GoTo /D (page.35) >> ->> endobj -1223 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 211.432 177.332 221.619] -/A << /S /GoTo /D (page.18) >> ->> endobj -1224 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 176.677 177.332 186.864] -/A << /S /GoTo /D (page.18) >> ->> endobj -1225 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 141.922 177.332 152.109] -/A << /S /GoTo /D (page.18) >> ->> endobj -1226 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 117.2 162.667 128.104] -/A << /S /GoTo /D (page.35) >> ->> endobj -1227 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 93.195 162.667 104.099] -/A << /S /GoTo /D (page.35) >> ->> endobj -1228 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.193 714.795 379.148 725.699] -/A << /S /GoTo /D (page.35) >> ->> endobj -1229 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.193 690.747 379.148 701.651] -/A << /S /GoTo /D (page.35) >> ->> endobj -1230 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [361.933 679.44 373.888 689.627] -/A << /S /GoTo /D (page.17) >> ->> endobj -1231 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [391.81 666.699 403.766 677.602] -/A << /S /GoTo /D (page.18) >> ->> endobj -1232 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [416.159 654.674 428.114 665.578] -/A << /S /GoTo /D (page.18) >> ->> endobj -1233 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [342.566 643.368 354.521 653.554] -/A << /S /GoTo /D (page.18) >> ->> endobj -1234 0 obj << +981 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.173 631.344 371.128 641.53] -/A << /S /GoTo /D (page.18) >> +/Rect [215.15 499.49 227.105 509.677] +/A << /S /GoTo /D (page.27) >> >> endobj -1235 0 obj << +982 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [388.503 618.602 400.458 629.506] -/A << /S /GoTo /D (page.18) >> +/Rect [188.599 487.488 200.555 497.674] +/A << /S /GoTo /D (page.27) >> >> endobj -1236 0 obj << +983 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [366.924 606.578 378.88 617.482] -/A << /S /GoTo /D (page.18) >> +/Rect [211.145 474.768 223.1 485.672] +/A << /S /GoTo /D (page.27) >> >> endobj -1237 0 obj << +984 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.36 595.271 369.315 605.458] -/A << /S /GoTo /D (page.18) >> +/Rect [221.785 463.483 233.74 473.67] +/A << /S /GoTo /D (page.27) >> >> endobj -1238 0 obj << +985 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [398.874 582.53 410.829 593.434] -/A << /S /GoTo /D (page.18) >> +/Rect [179.753 451.48 191.708 461.667] +/A << /S /GoTo /D (page.28) >> >> endobj -1239 0 obj << +986 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [349.211 570.506 361.166 581.41] -/A << /S /GoTo /D (page.18) >> +/Rect [220.689 438.761 232.644 449.665] +/A << /S /GoTo /D (page.28) >> >> endobj -1240 0 obj << +987 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [370.78 559.199 382.735 569.386] -/A << /S /GoTo /D (page.18) >> +/Rect [210.726 427.476 222.682 437.662] +/A << /S /GoTo /D (page.29) >> >> endobj -1241 0 obj << +988 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [413.957 547.175 425.912 557.362] -/A << /S /GoTo /D (page.19) >> +/Rect [225.112 415.473 237.067 425.66] +/A << /S /GoTo /D (page.29) >> >> endobj -1242 0 obj << +989 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.849 534.434 398.804 545.338] -/A << /S /GoTo /D (page.19) >> +/Rect [187.484 402.753 199.439 413.657] +/A << /S /GoTo /D (page.29) >> >> endobj -1243 0 obj << +990 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.186 523.127 397.141 533.314] -/A << /S /GoTo /D (page.19) >> +/Rect [203.942 391.468 215.897 401.655] +/A << /S /GoTo /D (page.29) >> >> endobj -1244 0 obj << +991 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [415.621 511.103 427.576 521.289] -/A << /S /GoTo /D (page.19) >> +/Rect [227.514 379.466 239.469 389.653] +/A << /S /GoTo /D (page.23) >> >> endobj -1245 0 obj << +992 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [418.141 499.079 430.097 509.265] -/A << /S /GoTo /D (page.19) >> +/Rect [205.945 367.464 217.9 377.65] +/A << /S /GoTo /D (page.23) >> >> endobj -1246 0 obj << +993 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [391.034 486.337 402.989 497.241] -/A << /S /GoTo /D (page.19) >> +/Rect [185.462 355.461 197.417 365.648] +/A << /S /GoTo /D (page.23) >> >> endobj -1247 0 obj << +994 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.35 474.313 409.305 485.217] -/A << /S /GoTo /D (page.19) >> +/Rect [201.661 343.459 213.616 353.645] +/A << /S /GoTo /D (page.23) >> >> endobj -1248 0 obj << +995 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [388.254 462.289 400.209 473.193] -/A << /S /GoTo /D (page.19) >> +/Rect [181.287 319.454 193.242 329.64] +/A << /S /GoTo /D (page.29) >> >> endobj -1249 0 obj << +996 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [356.404 450.265 368.359 461.169] -/A << /S /GoTo /D (page.19) >> +/Rect [181.287 295.449 193.242 305.636] +/A << /S /GoTo /D (page.29) >> >> endobj -1250 0 obj << +997 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [376.877 438.241 388.832 449.145] -/A << /S /GoTo /D (page.19) >> +/Rect [165.377 271.444 177.332 281.631] +/A << /S /GoTo /D (page.16) >> >> endobj -1251 0 obj << +998 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.858 403.799 393.813 413.986] -/A << /S /GoTo /D (page.18) >> +/Rect [165.377 247.439 177.332 257.626] +/A << /S /GoTo /D (page.16) >> >> endobj -1252 0 obj << +999 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.858 379.751 393.813 389.938] -/A << /S /GoTo /D (page.18) >> +/Rect [165.377 223.434 177.332 233.621] +/A << /S /GoTo /D (page.16) >> >> endobj -1253 0 obj << +1000 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.858 355.703 393.813 365.89] -/A << /S /GoTo /D (page.18) >> +/Rect [165.377 199.43 177.332 209.616] +/A << /S /GoTo /D (page.16) >> >> endobj -1254 0 obj << +1001 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.193 319.826 379.148 330.73] -/A << /S /GoTo /D (page.34) >> +/Rect [165.377 164.675 177.332 174.861] +/A << /S /GoTo /D (page.16) >> >> endobj -1255 0 obj << +1002 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.858 296.496 393.813 306.682] -/A << /S /GoTo /D (page.18) >> +/Rect [165.377 129.92 177.332 140.106] +/A << /S /GoTo /D (page.16) >> >> endobj -1256 0 obj << +1003 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.858 272.447 393.813 282.634] -/A << /S /GoTo /D (page.18) >> +/Rect [145.451 117.917 157.407 128.104] +/A << /S /GoTo /D (page.15) >> >> endobj -1257 0 obj << +1004 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.768 237.288 409.724 247.475] -/A << /S /GoTo /D (page.26) >> +/Rect [184.186 105.915 196.141 116.101] +/A << /S /GoTo /D (page.16) >> >> endobj -1258 0 obj << +1005 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.193 201.412 379.148 212.316] -/A << /S /GoTo /D (page.34) >> +/Rect [175.329 93.195 187.284 104.099] +/A << /S /GoTo /D (page.16) >> >> endobj -1259 0 obj << +1006 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.193 177.363 379.148 188.267] -/A << /S /GoTo /D (page.35) >> +/Rect [416.159 726.819 428.114 737.723] +/A << /S /GoTo /D (page.16) >> >> endobj -1260 0 obj << +1007 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.193 153.315 379.148 164.219] -/A << /S /GoTo /D (page.35) >> +/Rect [342.566 715.505 354.521 725.692] +/A << /S /GoTo /D (page.16) >> >> endobj -1261 0 obj << +1008 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.193 129.267 379.148 140.171] -/A << /S /GoTo /D (page.35) >> +/Rect [359.173 703.474 371.128 713.661] +/A << /S /GoTo /D (page.16) >> >> endobj -1262 0 obj << +1009 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.768 105.936 409.724 116.123] -/A << /S /GoTo /D (page.25) >> ->> endobj -1267 0 obj << -/D [1265 0 R /XYZ 89 770.89 null] +/Rect [388.503 690.726 400.458 701.63] +/A << /S /GoTo /D (page.16) >> >> endobj -1264 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1306 0 obj << -/Length 604 -/Filter /FlateDecode ->> -stream -xŗ[o0iỈ*M@jY<pR$0,!_?Cda9@#"X#}614tg: - VヹFʳs4A|ךGOف4rRL:E_5^"ƚXC`K$t`D3"b.ϼg+7~)m$×Oղp2 1)ηBn-CE<8sjDao1z[nD^*B/IiYso2p֏ѕQf,L[Cs(3bNp#UU85%*#T֤. -x]MO^'nI*.53kNEj <Y?ڡL{!ޤW$]/"6)trTF4&Syl ]db4">#RvBr&c(]$)
?X -:d|%))Z~꺓͋tWOpǫ~M$dS9Ѕq%pXhn=>jPCÿe} -endstream -endobj -1305 0 obj << -/Type /Page -/Contents 1306 0 R -/Resources 1304 0 R -/MediaBox [0 0 595.276 841.89] -/Parent 1114 0 R -/Annots [ 1263 0 R 1268 0 R 1269 0 R 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R 1286 0 R 1287 0 R 1288 0 R 1289 0 R 1290 0 R 1291 0 R 1292 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R ] ->> endobj -1263 0 obj << +1010 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.287 727.536 193.242 737.723] -/A << /S /GoTo /D (page.25) >> +/Rect [366.924 678.695 378.88 689.599] +/A << /S /GoTo /D (page.16) >> >> endobj -1268 0 obj << +1011 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.287 703.488 193.242 713.675] -/A << /S /GoTo /D (page.26) >> +/Rect [357.36 667.381 369.315 677.568] +/A << /S /GoTo /D (page.16) >> >> endobj -1269 0 obj << +1012 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 667.612 162.667 678.515] -/A << /S /GoTo /D (page.34) >> +/Rect [398.874 654.633 410.829 665.537] +/A << /S /GoTo /D (page.16) >> >> endobj -1270 0 obj << +1013 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [130.787 655.587 142.742 666.491] -/A << /S /GoTo /D (page.32) >> +/Rect [349.211 642.602 361.166 653.506] +/A << /S /GoTo /D (page.16) >> >> endobj -1271 0 obj << +1014 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [185.212 644.281 197.168 654.467] -/A << /S /GoTo /D (page.34) >> +/Rect [370.78 631.288 382.735 641.475] +/A << /S /GoTo /D (page.16) >> >> endobj -1272 0 obj << +1015 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.491 632.257 165.447 642.443] -/A << /S /GoTo /D (page.35) >> +/Rect [413.957 619.257 425.912 629.444] +/A << /S /GoTo /D (page.17) >> >> endobj -1273 0 obj << +1016 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.819 620.232 176.774 630.419] -/A << /S /GoTo /D (page.35) >> +/Rect [386.849 606.509 398.804 617.413] +/A << /S /GoTo /D (page.17) >> >> endobj -1274 0 obj << +1017 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.614 608.208 143.569 618.395] -/A << /S /GoTo /D (page.35) >> +/Rect [385.186 595.195 397.141 605.382] +/A << /S /GoTo /D (page.17) >> >> endobj -1275 0 obj << +1018 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [156.52 596.184 168.475 606.371] -/A << /S /GoTo /D (page.35) >> +/Rect [415.621 583.164 427.576 593.35] +/A << /S /GoTo /D (page.17) >> >> endobj -1276 0 obj << +1019 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [148.769 584.16 160.724 594.347] -/A << /S /GoTo /D (page.35) >> +/Rect [418.141 571.133 430.097 581.319] +/A << /S /GoTo /D (page.17) >> >> endobj -1277 0 obj << +1020 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [155.972 571.419 167.927 582.323] -/A << /S /GoTo /D (page.35) >> +/Rect [391.034 558.385 402.989 569.288] +/A << /S /GoTo /D (page.17) >> >> endobj -1278 0 obj << +1021 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [197.128 560.112 209.083 570.299] -/A << /S /GoTo /D (page.34) >> +/Rect [397.35 546.353 409.305 557.257] +/A << /S /GoTo /D (page.17) >> >> endobj -1279 0 obj << +1022 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.692 548.088 186.647 558.275] -/A << /S /GoTo /D (page.34) >> +/Rect [388.254 534.322 400.209 545.226] +/A << /S /GoTo /D (page.17) >> >> endobj -1280 0 obj << +1023 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [147.414 536.064 159.369 546.251] -/A << /S /GoTo /D (page.35) >> +/Rect [356.404 522.291 368.359 533.195] +/A << /S /GoTo /D (page.17) >> >> endobj -1281 0 obj << +1024 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.321 524.04 184.276 534.227] -/A << /S /GoTo /D (page.35) >> +/Rect [376.877 510.26 388.832 521.164] +/A << /S /GoTo /D (page.17) >> >> endobj -1282 0 obj << +1025 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.474 511.299 183.429 522.202] -/A << /S /GoTo /D (page.35) >> +/Rect [381.858 475.689 393.813 485.875] +/A << /S /GoTo /D (page.16) >> >> endobj -1283 0 obj << +1026 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.835 499.992 145.79 510.178] -/A << /S /GoTo /D (page.34) >> +/Rect [381.858 451.627 393.813 461.813] +/A << /S /GoTo /D (page.16) >> >> endobj -1284 0 obj << +1027 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [202.478 487.968 214.433 498.154] -/A << /S /GoTo /D (page.34) >> +/Rect [381.858 427.565 393.813 437.751] +/A << /S /GoTo /D (page.16) >> >> endobj -1285 0 obj << +1028 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [183.29 475.944 195.245 486.13] -/A << /S /GoTo /D (page.34) >> +/Rect [381.858 392.276 393.813 402.462] +/A << /S /GoTo /D (page.16) >> >> endobj -1286 0 obj << +1029 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [184.655 463.92 196.61 474.106] -/A << /S /GoTo /D (page.34) >> +/Rect [381.858 368.214 393.813 378.4] +/A << /S /GoTo /D (page.16) >> >> endobj -1287 0 obj << +1030 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [176.455 451.178 188.41 462.082] -/A << /S /GoTo /D (page.36) >> +/Rect [397.768 332.925 409.724 343.111] +/A << /S /GoTo /D (page.23) >> >> endobj -1288 0 obj << +1031 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.402 439.871 165.357 450.058] -/A << /S /GoTo /D (page.36) >> +/Rect [397.768 297.636 409.724 307.822] +/A << /S /GoTo /D (page.23) >> >> endobj -1289 0 obj << +1032 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 403.995 162.667 414.899] -/A << /S /GoTo /D (page.34) >> +/Rect [397.768 273.574 409.724 283.76] +/A << /S /GoTo /D (page.23) >> >> endobj -1290 0 obj << +1033 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 379.947 162.667 390.851] -/A << /S /GoTo /D (page.34) >> +/Rect [397.768 249.511 409.724 259.698] +/A << /S /GoTo /D (page.23) >> >> endobj -1291 0 obj << +1034 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 356.616 177.332 366.803] -/A << /S /GoTo /D (page.19) >> +/Rect [381.858 214.223 393.813 224.409] +/A << /S /GoTo /D (page.17) >> >> endobj -1292 0 obj << +1035 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 332.568 177.332 342.754] -/A << /S /GoTo /D (page.19) >> +/Rect [381.858 190.16 393.813 200.347] +/A << /S /GoTo /D (page.17) >> >> endobj -1293 0 obj << +1036 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 308.52 177.332 318.706] -/A << /S /GoTo /D (page.19) >> +/Rect [381.858 166.098 393.813 176.285] +/A << /S /GoTo /D (page.17) >> >> endobj -1294 0 obj << +1037 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 284.471 177.332 294.658] -/A << /S /GoTo /D (page.19) >> +/Rect [381.858 142.036 393.813 152.223] +/A << /S /GoTo /D (page.17) >> >> endobj -1295 0 obj << +1038 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 260.423 177.332 270.61] -/A << /S /GoTo /D (page.19) >> +/Rect [381.858 117.974 393.813 128.161] +/A << /S /GoTo /D (page.17) >> >> endobj -1296 0 obj << +1039 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 236.375 177.332 246.562] -/A << /S /GoTo /D (page.19) >> +/Rect [381.858 93.912 393.813 104.099] +/A << /S /GoTo /D (page.17) >> >> endobj -1297 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 200.499 162.667 211.403] -/A << /S /GoTo /D (page.34) >> +1044 0 obj << +/D [1042 0 R /XYZ 89 770.89 null] >> endobj -1298 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.712 176.45 162.667 187.354] -/A << /S /GoTo /D (page.36) >> +1041 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> +/ProcSet [ /PDF /Text ] >> endobj -1299 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 142.009 177.332 152.195] -/A << /S /GoTo /D (page.19) >> +1050 0 obj << +/Length 256 +/Filter /FlateDecode +>> +stream +xڵ1O0wSRt@P)t %iH+!=] +Nwg0gw>&NW$VP$r2HܠK?g,{c>Js-lVl*_ +endstream +endobj +1049 0 obj << +/Type /Page +/Contents 1050 0 R +/Resources 1048 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 891 0 R +/Annots [ 1040 0 R 1045 0 R 1046 0 R 1047 0 R ] >> endobj -1300 0 obj << +1040 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 117.96 177.332 128.147] -/A << /S /GoTo /D (page.19) >> +/Rect [165.377 715.581 177.332 725.768] +/A << /S /GoTo /D (page.17) >> >> endobj -1301 0 obj << +1045 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 93.912 177.332 104.099] -/A << /S /GoTo /D (page.19) >> +/Rect [165.377 691.671 177.332 701.857] +/A << /S /GoTo /D (page.17) >> >> endobj -1302 0 obj << +1046 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.858 715.581 393.813 725.768] -/A << /S /GoTo /D (page.19) >> +/Rect [165.377 667.76 177.332 677.947] +/A << /S /GoTo /D (page.17) >> >> endobj -1303 0 obj << +1047 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.193 680.991 379.148 691.895] -/A << /S /GoTo /D (page.36) >> +/Rect [165.377 633.887 177.332 644.074] +/A << /S /GoTo /D (page.17) >> >> endobj -1307 0 obj << -/D [1305 0 R /XYZ 89 770.89 null] +1051 0 obj << +/D [1049 0 R /XYZ 89 770.89 null] >> endobj -1304 0 obj << -/Font << /F22 396 0 R /F23 397 0 R >> +1048 0 obj << +/Font << /F22 292 0 R /F23 293 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1309 0 obj +1053 0 obj [556 167 333 611 278 333 333 0 333 606 0 611 389 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 389 555 500 500 833 778 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 832 667 667 667 722 667 667 722 778 389 500 667 611 889 722 722 611 722 667 556 611 722 667 889 667 611 611 333 278 333 570 500 333 500 500 444 500 444 333 500 556 278 278 500 278 778 556 500 500 500 389 389 278 556 444 667 500 444 389] endobj -1310 0 obj +1054 0 obj [500 500 167 333 556 278 333 333 0 333 675 0 556 389 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 214 250 333 420 500 500 833 778 333 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389] endobj -1311 0 obj +1055 0 obj [500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8] endobj -1312 0 obj +1056 0 obj [500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8] endobj -1313 0 obj +1057 0 obj [777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6] endobj -1314 0 obj +1058 0 obj [769.8] endobj -1315 0 obj -[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +1059 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] endobj -1316 0 obj +1060 0 obj [556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500 1000 333 980 389 333 722 0 0 722 0 333 500 500 500 500 200 500 333 760 276 500 564 333 760 333 400 564 300 300 333 500 453 250 333 300 310 500 750 750 750 444 722 722 722 722 722 722 889 667 611 611 611 611 333 333 333 333 722 722 722 722 722 722 722 564 722 722 722 722 722 722 556 500 444 444 444 444 444] endobj -1317 0 obj -[556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394] +1061 0 obj +[556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444] endobj -1318 0 obj << +1062 0 obj << /Length1 1648 /Length2 9497 /Length3 0 @@ -7276,7 +6006,7 @@ V y endstream endobj -1319 0 obj << +1063 0 obj << /Type /FontDescriptor /FontName /MCOYWV+CMMI10 /Flags 4 @@ -7288,9 +6018,9 @@ endobj /StemV 72 /XHeight 431 /CharSet (/A/B/C/D/E/F/I/N/O/P/R/S/T/U/Z/greater/less) -/FontFile 1318 0 R +/FontFile 1062 0 R >> endobj -1320 0 obj << +1064 0 obj << /Length1 1542 /Length2 8229 /Length3 0 @@ -7332,7 +6062,7 @@ TT(Lg;t̯#s00q@Ӊ|Z"d6]h3+m*~^ @ΰǃmW=j5,[ endstream endobj -1321 0 obj << +1065 0 obj << /Type /FontDescriptor /FontName /VYDKHY+CMR10 /Flags 4 @@ -7344,9 +6074,9 @@ endobj /StemV 69 /XHeight 431 /CharSet (/eight/equal/five/four/one/seven/six/three/two/zero) -/FontFile 1320 0 R +/FontFile 1064 0 R >> endobj -1322 0 obj << +1066 0 obj << /Length1 1425 /Length2 6103 /Length3 0 @@ -7380,7 +6110,7 @@ MqjLeA| o|$+l#*n*.qf!-+~I۪qh6܌ol8Hc"
g:|#}^JʄxM=l^NJZp!?}w endstream endobj -1323 0 obj << +1067 0 obj << /Type /FontDescriptor /FontName /NBBWCW+CMSY10 /Flags 4 @@ -7392,9 +6122,9 @@ endobj /StemV 40 /XHeight 431 /CharSet (/asteriskmath/bar) -/FontFile 1322 0 R +/FontFile 1066 0 R >> endobj -1324 0 obj << +1068 0 obj << /Length1 1399 /Length2 5955 /Length3 0 @@ -7434,7 +6164,7 @@ P5Cg.AOb?+@9$shMe>,<1'yj/>X<srQkZㇲ _WIb'꽐Ip'r}!=DLQT>Kno5V5
̷GF#2v2*DzV?f04_h-s$Ϝlot*!ż"%[V$DiEQ/bsfϮ43:EGsW%`3qz9zNؗ*">\Njmy89}E9wnY:'Hml$er endstream endobj -1325 0 obj << +1069 0 obj << /Type /FontDescriptor /FontName /LAJUWJ+CMSY7 /Flags 4 @@ -7446,93 +6176,72 @@ endobj /StemV 49 /XHeight 431 /CharSet (/logicaland) -/FontFile 1324 0 R +/FontFile 1068 0 R >> endobj -1326 0 obj << +1070 0 obj << /Length1 1612 -/Length2 17354 +/Length2 13615 /Length3 0 -/Length 18194 +/Length 14446 /Filter /FlateDecode >> stream -xڬct]&{ǶmbsN*v*mۮضm -ӧ}~ckιk579 -1P΅`ikYN;ௐ\ hbio'fh -ㇳF@p9 -QUSTE;Se{UTM{wH 됋_07rqtM_?WzF^Qq13^K䇓_Vu&5:4[[7iR;<)>PڨZT_c]i^4tq(Cs4ڋiCٓ!+@ݢ= -d/ELЈYہ`R?ڛT_E0sLOZNk []EPd!mN,,9o9qC'+rJ8ER[ϨэppX gA6y_ΠKJ.&Xq?ѲD3t z ]o.՜c(F=Yw9c?tPh讃DʄGGM_:h-D?lrrNF'@槲I8EjٸMZG:E7?.) -F#D+H⦣#P]i -_z#CRYb -ӦW"њ-[#;[\;_?dv5x|5E[AC"1cW@лu_ҽ)3Qr/3e -c%Q*K9KFj)0dxmBUXLramU9ERe}adYߩ1ǐ[\anͧ= -T?(vlRʁØ%q%
qT+(\j؉4D[n4.jaXCt6 -Ll/u6Z~1&
CKDJ -gng -D)!h뵩%xD* - -_+\СdS -}$м2K̶IIJ$Mm0fڅ'-Uedb9`0\C`eyeOg3ĐޜCX('ٌvS/&N8Sp@.- uM3N&iINCK,n5u~"졚3LTP=>Qy=FV0CID: -痦 -da5лz3HE8LaՊ*x''KCZWfyQeqĮ,VgSGXiBD)MAS2Vo$^7TP^ŏhVih#+*ou6o4l} -Mdk/C9x|)xsМÅ|L$ьԒfK$~Du `v?gLI7('ʫ[Į&b - V<oٻSHOTV-9hܖ -O=)sqSp8Pw;ϣ{G5.4zut> AvoSW 3\bE -@H>"-yERźwy
mCo|d+B2&HƆu6SRJZxw$jl'g\<R2fgSov*~~YĿR%f7+qb:zC);OyNaxL9ȍ܉=;o[j~{iZz`|a˲IRN{c%'Eb^S -u -{TH{ -^:[
,kE{ -{=&SIÉ X&d+2ն$!HᩪLPQ&,4h#)K!{7&) -О83*
XXiHuu tVSp -IX/yKdo~GR'^d֓g:ٹ&JP}ퟭ6gSߕ:VDE'_*͑p -hb w5H0s`$ܜ_LY,G$Jk=\`}mOkr19tNzE=nIT^PuG^u$ - -'?dLJ h|!anrG¥>iIJXi.(mU<<%^b9 >HԾ3+:b-\90kOq}(bxoA! -.,N9ļU=oLsl{ LޚM%{oPQ]yq1IwYk -:veKAg:I6om*v5LSjBu"VG'oq1@} -kɠz 4[/+Qn;-<#
xVAz{7QD _o6$&@ޑ7hcROU\((?{ǛRߴK& -'vvdjR8=
-Vȓ1vK,RqE@4sd[b/ڱ̡`bVgU,k(szap!d:dƗEtI[2rF.ب -Ryq)ƠD33AbH)gifUahjQ+-1<IGjPZZL%ދh-Dmԕ̈́ڽb攃4Doj0f.Η#-ޮbA+o<"uTPB3Eš`liyeofʏ8KYG3vLځLԪ*e|̙0U~GFj?]g2ߪ"`nfdAáǔ$S0f!WBo]ˌGΗnExԧHeoSr;mX<wˌԙ!-B~ա0s=,?!#e%*3 -|늚`/?~)֗Qp~QWqscjye~&NzJZ3# -@r_K\'o^#}zI
`.bHA%tQZMptFUaw -V(K.d2>9]c-H3yG&j-W CIݭlbUc2jXtY-hq -kv`, - BZ7+aNƌ[rv[3}WC;vYvIc1S&b/_Ppgj|u_H,xEf=|I!&2W|ڌ;jTY -Nm=)f= ͇i{}gbmLk(c -eToElSԷ'2q{,\!د~&h =Ƀm-ŤWkGў6SۛDJYZ -CYu` uv$[E%m8\ 6Їّ0/o|:2xg%7%3Fye:hxMzYũ#FɃnpdLJ9|>y+W c`>Wd|lk_vJis/\V;}x:\7}W;2
l#Y.)}AE?1F19ˈtdt#D-TXkr NzOuHଏ 9tl6Pg-ԂE(6G_c}
BaPrFH -uPYG=b/-ؖ^jH* ~k
uhŕfY=$uAΉ`A"k5%nX$q^8&1Eu2+`\社efgO_>Py@w)ݽ}!&ildPjb[˿zYYկ}ʞfltsX4R_a*i)*a,
R -<ݠٖu)1EʎN!diy$Zd'G -
_{K4:P=ľ -M)řa M\\s+U]G0t[v,1$"%5Fhy۞AN̶Z;^8߃fH\6 -b%3 q7,`T#"v(GvOT=pDq!< -u,~4x^JD6dŒ$"5m]3$o&I#.79;fm6;&a\}Q% -63@c{&oD.[ʅدuG y'ҞPzKUe:1!ěixWX|ߟᘧn ݫlnh`xņ,?i27@ڕ -(@sv!~$<"aF<>u;w1aQB,t"50P(2_r7 }N'uOu.f7Te'BdHwHji9fi4K,հ\xm8goUBwOpϼjUתŠZ7݀Ha6OcϗPA9XoZJ]j(p_ڐXPskփvSVs 'ƭ6Q.(,
I"Y&PCNfEKqJF?oH hm8xv{wxRHtz;Fs+Igu:}ɲܸδb23yi3_VhAat_ZMS?Puֹ-qOiׁ[Q
Sfv7 BGb0w[057s,35(aLdxZ*BN*Kե -w-bsޓ4F6̘~6D`ZU3>9x\ӄEL~ś:y3h4\آYRa堄rxce@}孠|d#RČƹaVΒ})0eωVn_;"1Ÿ΄:q(+'m8]wT_67 -ڔRD7H`#y6Hx8sjOgQ 9IDӈd?uܵN̡u}al3I=5tK*
w_/ھӓ~EKbg|)9Sz'6 vڑ>Br?#ǮR!'unwc?%.xHM0[ -hY,cOWLl=E ҎS{ju%ƩJb3KONB#=QӏФ8vCfv|
m{.ssӗ:ʸ ܻZ}9TiЊPT$<~YM=PXQi\^I(."F-D~j`LjJI1<^^*va33KbQ9($a͉aq9+] -֛#|⽃]@]ϮJ;,<)p3j$ik!Ꮰޝ5aQ`JyMKcގyxW:Oң)=H;ã<0!DPZU7^-C+jw0rQj? DCo'VVi|+⸟jEqNvox^X$VRcuN-Eژ߷@RsOdN*ZU0{ҝQ{3(xz.~t4˘3\2[Mڼ4QsVw+*6G3
熿?""c1x
+D}`;ia_0y9|?E;sFj, -37dVZwֽҹS -&4 -t91_2E;@[aqWph -H -t9!/xqO|\vң3&w]#ksB=_WRD[>(A>ƙi;O4!"N$Abx4qtShOA>!r"nN\<8NjXGmp}sd6pMB(8`N<#69D7dZ^]%YpR1˭NE){@W0g%[CtprT9ob{M(^1Mͽx6f9{cZDzq>yC6Be#@<(JY;_"۬0肇r,먬p:V+?6(5/w^eIo>FWa~-!R \GOdl[+5澆O"G7
RӠ;H_`Dxq/KpJ2'2pM~52IO;e|n8d-48ӁA{O*ďx. -1!ͽs%ov+FZ=ϯ!9մ -h2DpXz44>Ym4Շ',6]tt\P+:,/#8~P1(Y#%Xr]|=
}tߡyn'6<'F{OTm=/p;ӡ68:6y\,4F%V׆-HPS@MYܽU' >Q:@iv/Ĭ8Zcɢ -.?;B)G -m\W.RZxj!]U9+$3 -lf9~.Q6w[u7.ؗҥ1kkF:m$ܾJmvTh bڤi힉vvׯ?~ -\J1q=
̤
Uw,!饢n}[s"鸈8n#dFJ(rҷZb`v Rj
N_;#'~6?>~ɲOzt=43w"9_&9ʄN5v[!ej5Ν̷0>9)it?NR@\tuÓ8@='[|tRdho !{ixmEBHh'-բqGGAmXDݸ;A,rFn@tZ)E_8hO.qWd:)A(L-E=~EF;ʮbF'L_17+B@He|d=PrMnmx珔ԸQg̰U%Q -+U^廋eX(ڃlZۅ(T3InIҞB\GV4%=42c2(^Džoċ]%N9 C|S!4|j<pXh1>7!`xD3h [1FTV.Lqٙ緦XBG`0E]cLiiR{mtHoH,(w#I*_Bp9'J #5I늧3_gzÊ-cn8Kxg-i3\151-M75w4nx=?${+C"O 9%:%B7nF?[Ú$m^>A W\% -AG>L3~1~XF4sJO{bf!.ñ35YW1C@;թ+GTI* -Y%!;௭k -~z=H/ܔ(!rcIK^F!+I\6p}Ǫ0:`u}0ƷbUW)lprLr֙eBGJV|ݠXnSV}25uh#ȏ\J0*:)miv8zo.&sfQ';wݕ [Q$yK7N_%:̦<M`m㩧7C#mz]%IJŞ$ϖe2dU#zR|k}syb1uzM4&$WlF$ dzɱ O$QRLZED*tlXAyOv}k.f] -iH\?D_⻙Y[)]!gjɇNѾEnk'ҙS㟙O4ӨccOU6&3Z}9e(?XGە +xڭtctݖmRAũɛm۶7Umۨbb۶mݧǹ}=?1=\kIhm
6N4 +אɪ +-le%k`g +oxmLPD.vF)bڿՃ &=>áʎ&2N:!Ltrw3xqasR49ǐoOpPFLi~2t<_zq=t=4 VSΦ!u&T)~4[[MPB8N +2.dh/*E=C|0˜5)HaKtH[x!ۧP!rvٔӞ8 oV
g̝Ibt.6~>'u&/|y0ʸ/z[<'pΓw +T~98YE-hp893αQ0fIsn8&{bz.M6?f]'kl\a¨]OE%ݾw͒X*K`)N9:LV9<(<\z.~_,cg[ukb
ƞ +1,̽d{ u%S2jh۬qB.V<<!FS0b$;L+=oP~L:D0dMgs7Cah
|})q3jB/p)
Ht@cRGʄIjs0|H*{[u})z +V<.KS =2}!-*d\ +O1<@d糳1FI;"sc"?M&*ph:< |AwNB@daU x.NVxهٳ,u3M\{)7qbkƚl [́룘=zRO>SÓK=KnDC靖ȳ_[{crvW͠IsOj>(SƇ!uq>U/'گJ$%{VHXr](xOuI3썸iIefd9!U4CVT۲aʶODe܆L#Y\gAZ^ҡ\$L'A̢ך/(PU8o1w;nEiV7ЫmUcfDV:l>JATi(Ґ7$0`+$Qp"iNM0V:!x("Wiͯ>I1hD}DƃR@*R]?4Y~^4w:-'bv|[D?p2_mE*̋R$+wت_;v[l~Cüo/4̭OlaUYr{o~R +'Ɓ] p`\˔g5|2ym2jƸ({g_<ÜtU
DED.Zs> xUy"R[3eD9d7K"GÒAN}d^v-?~>AC(6
>Em
-Ք}8LFd(A{ES+u:G!qZIk*4Q-}jdЅ>QDʱXDÄh ЂǯoxћAF둴 :995YAq Q0)+|Z*oxߕ]O^@HۤQU_VoifSE`TE܀Mt"w|x*Ó\b'SxA<lؔVēXu
21:kF=~=uXԊLO,hh|%:_JFQ?V:.Xaytr +M0J%}#F?n.|JFa +33`3
9]A[)2אD8gJUIyz +> +NyDj7m>ff7 ;Ҩs,A BTRHeOv0=zVĞV^r9њm$Ո]҄~%kM|afQ^/v(~AKC4Ih77:[FKS}ӹke0XFWY$JL-LugrEk`Tщ@E$eI4}h*NMME9l.zxO`E)csM D\$@><p9ajPKY*W;CSK2?]o,?MPbj0"ly;-hP?+ty7ߕLe+p4TK|QUH[<_(D4X0jgK^L}JaJ:MfAAN2S+jPϳW_C
tf.<óF@,apo(;6 +alWQyecDq5Ơu_~Q4[ږOݐ6&{<ӴK˵_?.y=-Y9/yLVDr/z7J<4ao8[VfܔC-kdq;_Ep|t]RŜ|:j[I7})ǭdF\8T}5P5RHCL\̲nզ?djʨeoŅ3A6' +QruC(NAdc%Oq+ƌOZEMkcĔxMgYq
b6
0w2OuYt+ W__u%'el}nIO~w)KӕaEy\C_fŀ=ӎM_jY`[gߥˌP7w9zZF0W@K_0luW1]*ܫb[%DeLcU.+{Dk_jE@ +nͤ;>JcD*iGSj5cWfڲJ":[idZla:*zqs&w#T`I#|%DDthjn4I%ѯU ga(۳o~ju[^r}6 .jƣuQa,1=AY&6!&~.)`o*mhƹ̟t\~5a~iNBg:vMeTTmDxN
CO+;d16 ݔ$*0Ӥh2qGO\FؠQ}?3953?#PRC<7x(N% +}}s5AM˿]ΊJU@x:|x}V~12 +lKP!ӽ^Ia +Ԥe;OrR4aN3B9||7CTne@o5 MG >lL/w8Uh
7_"x6)V@߱E5aA\z146]c<KMoDA-:YءnqDL?`-<!iT0'ohEpEIDA7.cHZcwf)-_D{[5(Mge8-82KM02֎1κJp|(o(]x&W#ffeVOOӾ/QTոeu0KڗT{0avWnzxU?A<0]iR|,S[(~=G6Xu/gsW])L>'kzPK<u 1(j-ɘORC )gh +L8Jk`F?>^vx D$, + <0gAV:B z:lMg&,UȘ\ xi&gYU)9+fahmXn[ȰsŸ6l_u2(-r~1i?oG6k那S2^?2#FmT`T(0}!c($cE|XBHlkFs/e~wPZL.r^zX+k +<FOw['E5eÔm4aR?Ϡ=qJNIG0ՇS![7!yęl72&[4r!~A`Tt*lxQ/t,&OL[69yv G=\2Bϲ?`h`YM:>(m??(r᱙m;=JٟJ#9*ށh$N~-l.Ia<ۈ
$ b\_t5v p)lnfb!b)"X&t- +d)}%){4N +=Ij>bp&NxF]ň\=&achINwǐ8@ǽ>jf&ȱυ6Sq&I!p:bV
7~_إWI>!rSo;KҒ1$$_+J6XJ>\ ϣ[8
w;wrl_`BõDp|E5Q6cC<gOWkaV0 *a|:cz77ȜR*T[
n%!
'&=惲.w:43=7KR[~CZд(u#~$D_4O?\^%5X|5C>R;2_rܼZd +{v6b𡮁f]ɵiG?)E^DZmck +ٰ7C! +뫾_
|6T2ŬWffT-KH|'Dv$5_v':HUgT1da#cX$]}UB5 D H{ZkȁǔLd\X&gh$}3tCy!!qܒuL\d|Q~T4x=n7.;rϑK[PbqyjE"uѪbJ V$3}MBxpv(3xI&}4[R +&4ADYvk./ +P^i^NJ}ƗT3^J3-zNRkOsR:NPo3:/r`.2 ]F{O,iX7}I;EܥqHw'hB}5yqmIҸKx0%j|}9;ۿjO7K*ia2C,MNGdal, $vPLrcBآvQ?HSbtK@ +|-cnUHo+bֹ40)`fE,\LRC7WmͮHKS?!1GoغPH}T+UBY}(z}ݤ;LH%RA =iz4ԴF^T0m|#I6rYlMAW*?ڣsxhl+.uv֊:K>Y; +7F+NmǯFNJH@MҸz}ٖ, Z&'tN=G@=,$-8+C4"+\0Tz_"[Fn BR)dMUHd! -%Kkv+#N uraboXC%5*nu"߱4mԅE$im~Tݨzf6ə]R,;;V#`T_0bKr(܃cdfqp{sxevP)t!/-vÆ|:
P~ɥwI]gnK|U0[P]'Ҝ}ꌩUj9ꜛ!LKHNzk^^afD_1LAY֪<2X%:ѿ*Z<o#)ѧ;N4W%rkn1X$}hI6^.#?/I{p~_1Kl|XDϼo= @f+6KmԜ@p9.}ݞŤxa.bb鷫ʏ:v?Y 0"0]sfk+(?ڞd2ή[6Dgz,{``h\2?3:$Q,(\H +~3+1s|f#I'q bigS +<ſX]ia
Uo9pnFmcF+i<gꙍ8Z_4Qra?L- }>i7V<"sTXg6g5ly!4ZZn$G0iufy&(MPFhP9 +pM
©fEd27kֳC=k졎H yptʚAڑ +,Xk~T_[Kkf5Cp霧n+qs@xnL6T8ٛzM8%<H>DH
\u?\Z]v)3e1xd8He;\ۅnL!ƤpH0X%.ew"}QP6&⧠ʤdȤtMI Dq͛M-bcۯR`pW/̥$TEٹM䨚*L(FI,fߥ{ߏt7B +SaD(К^Һ>X+s +MHDj߫.3 7d}~-++,htO-5Vk0i)/9KwCo\GG`miId- +0{np=Od2؞B}deQfWJXᔬ9|%*yMmׅa[[KCJ Sieb5wd8e46%<<,ʖn<xE↶Ay\S-!̷RՖ~D WNuV5S!@uDf~?]h20Br@uԥ~ woj&PHA韂D=t V
+= + uݕhcK;Ȉ/9 +46D? +9oE+kvd0EEgUt|KOn,1أ7%VPO7\ȿ4[$
n&%B=vCS>H,Y\ uxAk*>R, +` +L>G2$vf)Sʷt>tX+F uH^5o%ҏk{d"r)>W2_d6f<B
k +]˧(ڻzp$:iZRGXwX)[s&$F%&JS(NX1Fvܩ6ZG[l2/i$T}e\BsGy|
g>
Q<2b~LOU:DQ\ Mz\`gjROD1C,Jv
q˱tW@m2-B@Fә0 -ޖ"ѡgqU+o`Z +w=}0\p!L$
f_,Gѡ(>*?-Xu)Hu{G,mMK+OCq+?<v&EvxMm+_:˘Zz՟XGʾ]dFCEZWpka$H=]s~#ԖXz]'ɶż)"0,X:\ H?L)HEǨ,/==v--+e|^5w8 +<Sbۼ8!%=iv~aVqTTu3 V&:w"X\N·_|(qúxbճ&Z;'Yc\V02:gqzm7GMZ(XhMX0aoU S\9T9\Έ/Q:{0c$~-A(gzQ%*(\eG'\HG6hzZ=o̻S
Q,q=G;<eWX# pa`VLE5yb+]r!? +?¼moV9yYGbߤ8P3|).drA|jR2{|C,u&s'ßQ]2+Y7Oa$d=[ +jnHʠ5#fj=U8}Aʈבf +xj[u@i`fn~-%{n4Ҥdmwr9;]jRTU,]:ck306]7 T +oZYbqs FGD; f>\л0NqƎG:oS#c ~jVF6 .=
'e`F{clZ瀊\W2ey'&5rJ*ݒ\~=Kpk4cܐmyR|ǵS#oJ'xF*/d=|](&xy&]G"
x^dXMw:Y+*@+Hv(đ3+..'0~nb ڴH/j|]K:zbJwٰ㈧`CBBV'wN&vQbArJ,E6P6vv Oc뒧Ţ5]bJH0 %6PSu_sxEӚU7ˈ?w r.F&ZTYqqEi@YE'=KlR~^D&qܮc{~j2C-`>rV\-,MJ6ιknU<oΠKx9Pl] endstream endobj -1327 0 obj << +1071 0 obj << /Type /FontDescriptor -/FontName /TXCSIR+NimbusMonL-Regu +/FontName /IIWFZB+NimbusMonL-Regu /Flags 4 /FontBBox [-12 -237 650 811] /Ascent 625 @@ -7541,77 +6250,95 @@ endobj /ItalicAngle 0 /StemV 41 /XHeight 426 -/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/Z/a/ampersand/b/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/five/g/greater/h/hyphen/i/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/percent/period/q/quotedbl/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 1326 0 R +/CharSet (/B/C/D/E/F/G/I/K/L/N/O/R/S/T/U/V/W/Z/a/b/braceleft/c/colon/comma/d/e/equal/f/g/greater/h/i/l/less/m/n/numbersign/o/one/p/parenleft/parenright/period/q/quotedbl/r/s/semicolon/t/two/u/underscore/y/z/zero) +/FontFile 1070 0 R >> endobj -1328 0 obj << +1072 0 obj << /Length1 1626 -/Length2 17043 +/Length2 16381 /Length3 0 -/Length 17901 +/Length 17233 /Filter /FlateDecode >> stream -xڬSte.Tl[3mN*vŚmfIŶm;bԷm}n/fk|zGXI^LHP5vqVU疣73Ò:-Čf< - -76jo`uCHFd7Z7n~YvwՁxjCrVD+<~A:u\2uιe~ 0iv[فR!::
`I_=;Ŧ> w|ziL`_i?2eGpPQQʍuԺKNEZX4bhl9 - c,Mg.jnvfjө*OŞ*/2s[qvu:\G;L/z~Bw~O?;Dd|>R_)uno1ޟw\Sii
ͳXΣ~z*:%&+{`'K - -Ѭg -TCf/Jf79,<I^OYQVNٟqHiKc¹W{h6#Àc]#*ÕrBeߔ[WCq182.1%ъ:p1 -yH7fr(eO]s![#W
jݘ?6`$_3uDܡ};`Iމ&Zd$<d*uV+.TV{ G݀<gK.tz$> ʣ_u 9lںY}d!iD[T8)2 -%.FX]+O[
2碪TPǻ!RRh/R_Z<!lѩaa0~f/W~{ Neam_1`"4lS<;n9cVKxUX@f~R`рqg=/!2Exi<-^8\hmIx^7lA6bwun|RiUԅ(%28uҕsQBV>Ꞓ=vݿ@V8 }1QT(Vd rH]Ufyq@?ϛA"KxJmbR!"n,H2;1 A7NNOs#5PÕn9I"lDqyaw,\}q3RGykisVpPm*0QY> -YNDHd;.Y*ܶۃy sԋ)h)>G9M$3|Nmа$xWQtxFv_>ӕ`rʙu_|ƺMd>H5eiJm-j>;X.o -qc:쿰&hASd#I 7pCS7DoI40suBO}V^ׯrH=SнXhYCnL0ȉ/^{o8$Y3j/HTrtaq
ade&K$nO'CJ÷-`N_.toOδp>T6~ -V2laS{L
<'<'rc[Eg5;CEhʩ {y֮ց~=+J)2E{uސH7MO-%,[. }j x0#qSW3ׇgY/84"EHBy{uզ|>'fTe~j:4i<EYT?nq5_MϴE(?yvٺ;^".mg"QoYByɍDIQ@p[4H`,l>+Tv6Aq]KJp))('a(3訅zmH)_8Qkxd]R4NE.WW^D M1=">q9kϏZUףbm'įY5A7=oa?Bt-YH?1p=)37O,Բ+
|&pSϯx>6(3IS`{]=AZ{fU\~[LQN|5nUbϗ)ƣ(o$i'1 -L(̙I-3)Kh3ԙŔ[+ffxS<jFPm!C*(L˼ygz[3[-"ΞwO@mhe -) G:#f-`wgs_X -T.3iFn2r)N<T{\0R|Fs>8wMU - VzDХeqߊSGΌ(u*BR`Q IwUşsBM:؊omwR
XRm܅LR -rp$+F!H~A-aZǙP,ɔ{o
^O+r9]
o&+\bq>XoۃdDMM$Љ wf1{+K*+esB/T^{d9CJq#f$>v*WTN^ɛiSvWKUkd<k&nBz"hBeÊZf5"ᾟگp(|sN] Ο^B+ -xO%ӫ˒dh_V6E͜)c!@V.λ;+>J?YfǗ[~aAnK5Ov?,: jKlm]XATuv%qQq+J֢Bu( -ǥ5C0"L |KbpREn=܈<m;^ducY-2;Td!:Qx=6?Ckjs/(@OT8R&$U!q߄ -3R˼fza_q`)Z TO#ݐv~AIWE797MZTؙe<q8rȮTP3jaf;:K -զg>:%>u_^ּ -n`]y:T^uLȄNOQcja>@hyۇ<;[5c0J6](jt"/x*? }"e]fDk{(6 "-꽃_H8te"%EHȼ $,yZ͚tYP*fA]?p1u_ayJּs?;=hC}w?k|#Jh(unOaҦd쯇{iR9N-Y̞cq<Wv Ti\D{N_Pk$jU=L,b$LҶBWxEX|4B -i$ߘpL2^ѯ|oGn')ugʠoyv1/\܃.SͲbp+5ت2U-htֹ+,K2r"Sn8a -A9lR)ƼZ9cHy3oBQ-o]=i"٢X(b6l?w4OBĽU"L eS3=UC͖ڐ8wR_,4cU$HYY/"m:+.4 /55%TDWfcD~A.v-.<xJ00/V?b1TnaqBy
斧l] -5(Ew;~Cn! 6O7_̍FQP?p^0o\@u1ܼ7zVeCTR5p{̀.XbɚSBiÐ~GkԤfK:(}M}}̍M<Ϗb,G.K-6kZa7JٙWe
a@\^}^,@%Q7S7z6%r'QRi̞Qk~rgi.]x<32D?zy=S+avxeŗlF,a̟ljTߘSQV @@y~lL5>Ԁ
2ym -XG尲R9A,uPo;kk] ;TU%B-ʄ(:МZf䩩⣰7DUXo|qwBZaFd&nT-$=g}lzHXtEFĦ%z]W/]U/"p0q_玹]KWb3_kOe>m
U}Nǁ<#|J5Ԅ\qENW0DVY@F.|{LZH}v)mQ*9|BP;5WF;\59|n|Sw4E&یV+#3RJrEoskZjJ4/92gKᙠL@1ZW+1WSo. Kb kTϕa>qj 9^/;ପHR4VFE:Q1k*KԐphAGG
Qg#3W1]ɣ_~p'U'喡طg ѽf't,BQ<'ӔeIv&ÙECVvA/WH5;1X60[kư\e:oJ3Kfe5zB~CMS*ny+Njx!>: -sM)4;z۔h˘SLݟpmm%w8QT-c8Q\esd)Mv[DeYmZ߳{c;6yXӕ=f02z`GQdWP
b?dF$#`<f3m -EAWbZC{^_EHFjbuky'd}8Q'$ -n:'BWc0D?8.8D:͈@lb0&jeUCc"m*,a~էfWƀk*Ј7V uv(NϮҾ [qR2w*_g: ֟^p8Ow!j=Id^yPEaخu:Ufܼ^ -K%9 -CNF^],AP>]3ԞA)->"?NIҏO6#7U.13ezYKA\滆"M}̃0}\ǣ#ӕ-m-ExWuUݮ!`w@qDUk@M `VC}պvȸDT.kCdClHcZM'V%=Yfyɬ]x<)Γ -
XJiya@ֿhuքgN b%DT&D&ӿr&;ݔ?=6'i*d -?0#\KSXx -a).JǒH 7)
% d++yCAV";U1=/,;C`6}OҢ1'/lcAӌFeU-M\#@hOU|/V#%Yf.Pj0m{r:b#O+ytL;I&]= --VԮ_7=mĵXTL׳Gcltw,Uo*\E:1o,L㵬J涔.ONZ!j;VYZMZZN46YtyV=(HI+h_m]o&aVvYYfSb*#vߠEҼoݥz.5y -9w43f䇥'*O&!i[
/Л!ʒb^ -;r(0 [+7"N'7^GߙZCt%jS.sq+^qF%ƥl;jj'b>c}%OQ2s&t:-,Pfs쏬ؼ酺BOAc4; -12
Tf7~`UCNhW"pK͵(VUP|hZ٨.lGZԅopW˼%}~b/)d -sȣzZd+
-f[aӳbO-N( -'?@5~2 -jcA -hbgPl?p)jO}I.^{<p\6Sws!A+"I? {>zkUvWJ~nqaf=cRQ3$m giU%N<Ӎ'Dn-:=(tH.3Aܙ?SgS: -o$4*y -C%" -{MC|aW|ogt>}3roZ-y۶G7n75fr4XdN*}NǞSTO -&ʉ4ާFY[ -uX`1|\f4Axzp9 + dtc0ĎFJ0<Uu($|Ds=YўaI-N$oGXgAtq*1&?ܯQC%넆=37B1EbDZ_w~$:Ef
˪bޅ|&6hjPY巊?#'n~":sGD<?"t"XzIl5{LAz$ Ҿ<tzz(HB*iBa[^o^{yǔ8= NR[vS8ͭírF<^;EMag+`Z ~Ȧx0+P88!5PV|6FB<%*6#4y|hAE
j=@iO480ؐPɷ jx*$~Eix@}V[00}h{4ÎDڱ<N|kvģ"S=<d9
#-?p(k'Zr=<e&s|/3L -o8B_G^o3zWnF@HT~{Ø;W>q'08 .-?`CG@ϐA\\0l 5zcBCqFJFQeA4Nxb?}"z:}zehnjmd*jr7-9yP@Eqj_='h%Pp¹u,EؚK?Q Vh2kO@ۖm+SЊST{̂utL I/t~i -8;(aT)&v:DdMeBU!&:&jܺ*a?̚:3g,q -*id绍;[\З -Hꏵڥ0ؿf3'pL! -lv]p|n ]v0Jy-Ξn@$ڠ7`5wS0d2n\"{0ބxON+AT:.Ff/NS=$|8k5dU2]z4Ezi]cpմY5rܱ:St)0g7)|(>a(A8r>\N<Ku#pu) LN5;[=v1>(?n;%9'9*o+9^v*pʂ2=
Nc%AxohD$yN8.N:In;oZgl=mM+I7J\rP>?^WeG_|ۗT+фM6_If7䪱ɵtc` ->]^mQ6اV"I<`p}MaI(0ګqѲ]hVbSY7d
B@DPI-CJH^M&h`A(|eCYI;FbQlJS͒{FdF'G\kf^EFxdM^!EK#rgXv0QCσJteL]yfdAlRY%ieN4gRpاY˹<JC3̀&ޑB0/$<> !
vᶍ -f#;x"#c0Ydz>#u#$vN~OvbhTږ)tCB!$u}ϥ,8ʚ)T6˂rt +xڬct&[;;m۶mVIŶ*͊m[sqn/}{ߚ||c/rb%Uza3{=3@YV[^hf+g#'uXۉ +lob#ӥ+oxRL|8ԡQ0ƾ?#b6is@pӆ'
xUKJWm0Ѡ1\3zQnBIpwRYŠ` :ԭ0 +>[XW)J\|u/Q|T($1џO$E[y<5'ְpXV虇[iZU_x_+8@^}J +Y *&h-6\0P}XVE#}
4.olV˨jA?~)F:o5):dG]}gj"hpEӓvɀ57-H+4"m%jp ka35/:X̛`$a&P!mh7羽U풐|i +e|~&-'B0D$MpVcl+fyEܸ]e%x?䆑xo
g\ny{ܔu05y-bz)*ogȵ]r +50g)$eC49`30PΫBNUBPZD]92tAەx&QOSVW4Z 9ŕzsD:/ +fjOS^A涜5<w$7V^7f\L}d +ꪨ3M26ԀBj*=*/>ۉk0ޤG %,)\ǔ\g0,*m3a-mG((^(
<Fr*}-J)M=]= +wQ'.}}ݟn+)K> +> +[$PU.T +&,e.=[ۂzͷd3yybHH 3
Vn +5EV*\0
-!QŹb9:AZ>[(Y'FoVzٕjAK:b擢Ж4i!$ji6l:`c [S%1RRY%[3pfXN/},5vXKGҲsh|DVB8~#d\|cɝŦ4jG./au1KM3dگ!Ӷ<H"*m0mmHH_;a$w=x[券õA6>T/B]Zj*MҬG̢\q&thr3RŕP@5E}R9܆`lP2EpaPp.B1X.J@)eۀ)MTӓFpzmfwTg58AzCmȸ9 |Z95zzmAcw^"Rnl"`OS%5{CAptĜ߰$ +C{(e%*PJd=nR&aq9'U#TnGܠO2."]I.]cB?y]\3Zٙbw9s&)]:oXNm`.]eCwnFggp߅4[diK^uW/9TuS+н#q 1,=V-WN`(>rKJ83c_Rh7WTL817ƂӽAog
>C%C_ +@%+@rO!lV-ޒ$),VUZgI,1~_Q$s|6)(auIvxWs>eEU.?Oocc<&(Ѫ^j "x +g
?F"/Gۭ\ed:=`É +e!eˉO_.W>^
͘Y
DA龇:<gkcU/8>Gk_nCd0[D^o8D6bu|R:4*BzTʹB_Vo?Svw=nm2fsԄquh +0^DKͥ6{bp18Oa0ư "SIf'W4$2)vicŠ'[kR0'i2"/}vEwz8g];%mQZUN M8")1K5`~#y.J1i|r`BpP)ަ/<"o`Ew]ảL!%+#>Ses~+op#1S9GA({Pe#MD7ԎGwMkmei_`N(x;]!*禜ŻUG8ZmTAy|QS>ޚTf=*9=.ތ43@KT)uNzՈbmL%zHv4k^72swAO}V˞{;>Zvn)^,CnB0ȉn Q`4$Y3 +Dؓ"*p=<G{4_e&K$nO/MQi-l'Y/F/6yQ֕4Çf<[nC0 I(VѶ#1=E
#Ոbɲ
JZ9
+e7/0WLo@5%ػ)?[ԛձ⢳s#i1O|ޘw#i#l@@m[. +R]c:Y:ԡ6u\Yy$PLCP-&H905A;;gywk{ӣ%U=DғP<jcϴXi?c(Z..-YXjK +ۗ*L%ȿffܩ>C=JgI~ğ[7@OZ&CR$-gSb]uÝ:Dw1Cņ<Z-ٻVH;@+Y0fEMe[۞áfdV rE}3os@[4yPW>#1Nccg)vB҃(KԀvgQ6]1;()BS37HgPCd]$贝9OrK"j~fϐkE_pL:-9$_5/]m6泥6 +Q]k߭jz\6v^-)J[T(`0=<6=vVϽUq\(s6Jw J0w.S1%ZeYkqS_ep$Fq8O rUFS?C/0䧇xJB[Q +5W}۾`c,55ϽoJpt%TXO2X[gu$ÂΡǰu~ +* +VJ:RU-^~ieuEI[="_:Mt? +<I/"/nH"۞►eyJ+]z)yvAOwg2&{0:wK! 1j-($z(CQݓ";UjgAx*^ՍFtZ>P:
y;|:A1'B(di&Cji$J +7bU3gi +^r*㾆H^`C>²P`7RbŤ24!677DdLs+ .$(j Tl)J?.ѳ/4RDցW|lED.CᢔAiUhjħqDN`q/͓bV!;?-sJiX\Ru]H`Hd}jLM1s$ԶpT;İB += +6l^>:r4/I(2\wM}z|K-/{I +$ +ӌ;G$]
y'AuA_#*{*~B`{T!SRgse/WenJA鑓ZŃorjG:)Qb='Mǔ:tغY +ݸSƞ|Uz6g2'Գ5Wa%bZ(K
S*rϨ(wig=6pn +VĿs(qu0D'<ul+XU^!0ƝhBc5M!aRڢ(В5ԟ{V@q[Y#^"m +g{,x{L uB@u0'%zV-y:rw9_mWM4vODC.\
f1"Z$CE"wg$|*d1U:yoe}] +(q,qY
deu:
aTQS*kcY%;f\|2jzsw<w?pYdOnѮWD:X +N~rHHR=R3r`:ҍѡY? +}T~ҤvEASDNG YCҤl(}5k Rv b*#KHң묶fO\}^%mM9i!̪9lc +=C镋]] +bDؤ\훮uЛ#%m`J%w^ɭqhSHEY_x-&3-#6ǝ'T +7Arz[ݬ5s@ٰ;XHl`l,%1[Z9a
gr?=^Zd`bcb^wIHt*
S[ŨYx~sYm9;9AZQ\m%ތg$pp3Tdo%gO#U-qB~pj,*1<TOnR,Tʫ4IG1fsSv
r
QkvArFh:MV|@HqQqCOrl)J#_ed@ nfsVT>g1-߳Qc#5vĹFۘ? wFOv>p2&w\9Ldՠqo3/Y"NfB"--=L~>7>X0kve4kGCu@mt~~ ڝi.^$-C)aSp;ĊNsu4uqSHZ@ɱFlrWȧn~~1Sk=Y|ap9Nə욡߇Z*~ڥxi{Ȭzϲ>s, 61sNWLkxR +9xS9^&9r'ںl!PWDSrO+V[`+MaS*QˏC925»lʏOKuWTpl7DŽ ś2Bu,:J1.8&{\)+(nDC32ȢWm&>|[߬5We Utps8Џ3D,fn-F +;Pͤ_fm%To<{J]xe6wL3C0 ekXfn;|[c`XXaWi·{!* QA
+A0-J5tB ++N8t`yښnC.@xO^߈L +o\D
zGʢl?\:EqKa~ۋ3-Gw4+G|Z4S] +,x_k?Ul ?=l|!c*8/|<2)vLK߽m-KSYٵz +ٷEИӾQE>RD0`ShW$|Xv Xkc$ޯOwSH(Rw{:>u߉}y'2rIը<F+&ih<Ρ(w?5/>!`LҠ!G}h7h+_B{o_]z]DBUlNshW{}?4qE6bzyr6ȁ;A-pJsO頞Gq9kiK0rLn~[ƾ 2#VomܨVGQF٘hgYDCM=82U34痗{;]$뱑|>QG
+n]ݦĈiOɟhks+bW,}ىˎ&E?QÞ/roBZFڶ@FiB7JIm?5]k亀M6Nya݉c-ksх + +DX><tVL%@ +,hil2&E\Xv{ypZDnTNFZ0.юffwgx8d* FKDF*Jv_>##<<.eX\W^٧?f+U;q&>^,-y]MEN +OSϠu\95Fr{i\_{}džסX9ea'8Ԏ}SstZtґJ~Z흡r0PsZ@ex 3gS$ +tote^2,h鱴7_pmfQ4EK>ډ<"m
Pys,
[kyru`;68Djs0tlE>&9yBK3θ6sʍNriY-4
#Y>:CG +4L}3N2ËPyenlYp> RrK]Acs}y
oFmXHhu$72dZTԘKEsap{8U}T;aфB9ةK"ٷr +һz8wNYެCfؽk^̈́9s.9]+!xI^EW
c-~c~q}'&,f +qFG#ɽ&ǭ<3{dESٍgxuV1P=9Y#H9D.
ޡ<wl/3vf6ǘ; 4U4
J-/et+<}0}xieuȵB3Yl
(]?~z=*?KTm +͜JHL"-$ծ**>'["cJICCS~sӢI|1ݣO#Jc@Bcnֶ7|COY eAyv+{k2^Ic +cGaʟf Y\܊O_Lb wQQ멼F fUk)Т. ?3}aTAyhI/*3?~,V82م/Tgjv{}ZqS9<ꄬpt"D
fAa&ga]l-33Ny8݁?;pnT(;>K&53v7} +u{WPR]B_ +'ȿÎa8>j_-s2~fx{(Y}Ư`yN:)T嫿'`GiA
wIŕҌ;#TC'y0G=mT?8[ `6ou~,Bt'&lK쳿XV϶3) +gdgӔNr˝ MOjX{@N9 &DV߄S:e'aQz=:هm6w
9ǢCiZɋͺM5Nu\DXC3 +96tTe? ~× RB+7{uD-~/>@,,XYhBX9&=Ű2&k>tN=kKٖEfsX))ݒ16U<Q"totq%WGŗi@7$rr$Gt?gkk{2.Glе$Ek *lZ3TNZS4gTu`n(_gpݻc0%Lf8J2{Wn3F=0;?bl!v&
G:͟3{tȎ9dcޥIt)#ⶂyN{X(!~7Q\mZ$A-~!W!zeVpsTn +|v\rhHMDYTxbھ{qKʓ)7sBNAᷱf-좦2 }J$:Js ROQ>ER@4r#fZR'MMkGI_LgCEqY6KD&W?<hlvmx!?;W +\lU\;:(Qr|[}۫^sϯ'[])Mw:Ûctwt6Fk`xJԥܵ0-T[#-
n6#xX6B@@JqJDQUJJʏYܶ`cM`CiX#lh}i
<e+?/gX}Ѽ@[½R8觧CQtsEKxYrV\u$Z'Κr]aZSّ9A+Z\*C'};Mq3Cf*7Τڧ>H4FLڙ(L
9,(wݳjdYKwR +ө+ڐbD#ZUрBtO]hzKOF?̟dd $dNXIqG +&XEزYT=8 +5اg""Ʒ{]˰-cj,"2%o}b+7iޙ}bv2Bj4R0g}TWV7v2~g1=12rא^,N~MovrMӹ`XiVe!O"S.!b*($SȻQLTPFNIXP +n}e61+h3̇E'e}o9~9}a1; +)fbe05@ݍAd?bRA˅cb.D#%%${7STP!|UFP<\/hz,=6Tu4Lbx(GgI깕s/S%W]=l
V^vdd\?tީ O`&UQJD=ƍ +ƽ2!Ny *cyU13*Smg3sza/iJK(I[㢙%K9uկWkX-JWSRGe TN~}_j|c]Pe7U#
aAZ7LaX=hO +ntS1@DMO`/>A8NJH+b!RLt}rF~FaY#bHh%ojKy=xNc
ltA+XjU>uVm]J3:"bg\K-SO1멉WfzaVs,0[o&/mWx: [*6ќLF(/ҟk :OUUx4PljRgۓE?e"x} +v* +wu}\{{Oݬ&zpAYރbk#,-x@?z(w:,ږ8Ui,`(LR +p't}怒#%J.T2lFZ}"?X:eC?ϵpI[xRJ.`oہuP.Mha0A|L^jAݴJJlQ#<s@%{J{Y?¹ݙmm$- endstream endobj -1329 0 obj << +1073 0 obj << /Type /FontDescriptor -/FontName /VRKWGK+NimbusRomNo9L-Medi +/FontName /LHHNFJ+NimbusRomNo9L-Medi /Flags 4 /FontBBox [-168 -341 1000 960] /Ascent 690 @@ -7620,10 +6347,10 @@ endobj /ItalicAngle 0 /StemV 140 /XHeight 461 -/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/X/Y/Z/a/ampersand/b/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/fi/five/fl/four/g/h/hyphen/i/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/q/question/quotedbl/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 1328 0 R +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/X/Y/a/ampersand/b/c/colon/comma/d/e/eight/equal/f/fi/five/fl/four/g/h/i/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/q/question/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 1072 0 R >> endobj -1330 0 obj << +1074 0 obj << /Length1 1642 /Length2 13106 /Length3 0 @@ -7686,7 +6413,7 @@ Zp',9 _o9l?}MM~}IcRޕ)23`^c+w|P=%p ORW$y endstream endobj -1331 0 obj << +1075 0 obj << /Type /FontDescriptor /FontName /XTTWYM+NimbusRomNo9L-MediItal /Flags 4 @@ -7698,91 +6425,95 @@ endobj /StemV 120 /XHeight 462 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/a/b/bracketleft/bracketright/c/comma/d/e/f/fl/g/h/i/l/m/n/o/p/r/s/t/u/underscore/v/x/y/z) -/FontFile 1330 0 R +/FontFile 1074 0 R >> endobj -1332 0 obj << +1076 0 obj << /Length1 1630 -/Length2 18910 +/Length2 19012 /Length3 0 -/Length 19757 +/Length 19857 /Filter /FlateDecode >> stream -xڬctf]&v$۶}ǶmIfŶm'VPI*m~o>=c5qM\sͱ79 P^Lޕ`eg`-Glf+g#'u63rr3r5hL -(&<]-\bW
p0ki`OIu5wy`jhk7_0Ggbeo,Mm\\;Y'_9Xٚ31i7=?"mo -Q9;%_oqܛy.;ZgdgcN395:dDnsWׅ14|vx-:~cR]QnPtq3!fi\-mAhs0L))뗾Ct:\=Qb|{tD7IoFiA/:=H>~z黁ǧ͍%5O=%Iq2to2|ut^iӨEMV[v#ΜyJd%$l/qR$@G<):*н,}±v(ag,AV̾N%$5h*ą?ր'H..-T8Q#TGR1H?oN|މIHH:,U-Np,mKrں*$`FK\j9+nԆ]31Ot]~[NOo8{0₠`lWӨTH,@B?[ҢqHs3Nv~NHZvw^l.ZA$bwz4 F&ZMF -r=X_w쥄LPTPl]ǦLYw?i 6&i=J-2y6r9J?5bxe}ij$Mɪ4GK~հۡy6<{8b0?YAV{M1;bRtV8JBP` -kuI5/bl.VXl;1^,iaΕPv -j A'rOt#nw+Vµ:E3et*xNLkl.X\mJl}N_5-<P6Efz$ -.FE`o"wH
/ 3vd]flisĽSZ[QruY"mC_T.>A1#a/S['D_s^VtG&es!+1*R -o=>Mレי0./~ev!Ivxdu;g9oΘ6AP҃K%;HLw" -[F0}4B7UoU.O̙
%x#Fa0h(}_ɁgQg8-eeUK&m[yhRm2a7;u+44{Yn9]4&L;Ҿ?h~^!^+mnnLfE~kRKlLޑ31-.{YB!E`DUVv7&Jw×<g![Yׄ|k\nNVOSF(\%+ۺU:6/W=\U)$e7H᮰!Rߣ`"ws%8X8)EP@&\9aԇo=InI_X -1}WkDbO_X9\QWo /iUBd_ U)Mex o/pY*1,_hm%[6Z-*6g稐M:11wp;vt=#ws6ԡ5JiXuKb*:Xri(!
j#hθow'#1Ahg"xjdI)rMʕQi0G0$#pOЅҮY:$Ye+{a
F56D؏:??^n - '&6}FL3GD(dSgAT]qYKXّYT.!y/D6"*XhoĴ33&oMn.sE{?^
]H!l)1Q48T5B~SbA_ƿ |UV -hrj79 -?zb3/}-<B[*m(}gF }IpKC=tvأXGFR.I
,p^12 "œvc:Iu຺?LI[WYk68qӀV-v#!㲩Qs둡um'@vfپ^\ۭQ3(<3߲Q-E6|J'%%2RNn-#;6PD3o~%D~s|ksz -/uڔ;9T/"czHK
H{p>7V7Yi5WJ*<dYC[l_13&ljr#S;8: 9~6_ll2]l);w?e) - :=CP#伕inZX&Z̡X\)AԲ3gV&7fSƗ)7;ǀavRerx/Ehuc4Dv~v:U_pl"h=>L)_kopXn{vtUV=KTX.pэF)4?e<Q*lj!̚hE
~%P -2*BxW=1,0CG*<(!j@[IKoZ4 -kNS JJ&77wÑpQfϟʩj"-D6,XóA߲6an0M5@d=s1nq WM#~ߕ5zB6SQBb#rKIRv_Ӑ9Lr#ʙ1Uk4Ţ$ 1DkPv
c&^gbKqUgQ{?ؘ>?|ȾcZ:kMYۡ`325qcsUFUNpXT'RoV'OpV?Q| -&|X=6Lq1S݂RE4_+;c=A(PpCYcZc=%F1mD\xw4 -I]e1 ]eOA"^ua =_`-7XU%~'o`4aPPNM<'+uw2'kg`@ڠ*;{$J1a|Ch%[ÕGUL1#Ђ
Ir2<'ᕼ8q82(J0O;'|fmo-~u30ky%Zml_~`Fʽe3vzRnC:D&l;qy]wQ:2r(s8_ -iXsXDlm*aҼ2}~0?DA܉km-Q<2i!XV8[nHY/n^g[lvhq i;R
uEl5KYri+7a7sDgAo`gdtAKFQ/&|@ ,Z3acu}!^ЧZ#Wbk0zQʯg9ĝb_' Ę2{s'T+(g#cmQ4M-[@.;\ Taa7V~[-XnM5.]]Z9~Ci&]rv`tVY%r24usq;!%^zvou~28Į)CBlYTAUEއ_ngV$|3;,뎁r/u, -^ӡYiVRl?=U!+KUuȢ#f`}mquKo77רm 8]R-3GBWJ>p}Oui[~>"~Φ:$Isqg%kKz!]PO~ť q:'HTaY;:4y?qy#$<M ?/ -aB>ʼnԲa܆yO|47 -gҡ!\nrM*P,{1][O["!R$
{gL?C> ڞ, E:`֖×d{D)m#0"*y9T9gbhҵ9"izW_~O8_8 ,^<2c0>C]sm[nMEgfbaJRf2\FG~ڄĀ)[M8MO\wή'sP[7!g -G66 -߂3eǿ5ǃqkNhEK#DכrZQJ2ڒm=Wu;="m>lA֒<dZ*FZGS E'Ǫå0x1kPeӮU>VCH"_>^zgeU61bmt-VbqdIDGSH_ܑ5&kos5ܫP|.qD=n
mp0`]iǔtF7YLR|5::[9UihOƑxQdNo÷!Sh>3yB"ivY:Y*!/OXrsViz~
ae8Lg[w\0z31ֶr'_v1OZ0~E?&B -E^qڄbƨ;'E%;D:)=~y6zrʐA#2g%L_ׯIMd1V*o6^_^=MsJ?vHS03}pLy}y7XAac|RO
gOKcp8Cv?GE-u1\ApXc[M@R`5IF{
Xd.xc{BkG7-3og -D=SsQwI)ø-<J;z6NUq=^wv37F??aS>+NǒN)C^r?O%d= Dw}b${S^_/6 -2| -%V~"OD<d4dX,8'iuj!/6'fߘ%G+g6Gվ9*#}_:*yVu%l\0臀Ӡ&PU-]ՅOzV|!֞@Ὢ~ükue\xc\E"N7\y<MP%7h~Z+F?-(apO\<L`8.p~#| gҞHnuۮtݕ{zqa"#&|_ -+rKq"^$1EfqMGN@/
}WNW(AW3Lcw-eŰ:O(4-$ڎ - -sJci빀ZO^j%,} SWJzHbY_/ߪ
͒w!(!TMtYܴZe֜U˵x2?u -;Y"^05|U߆x$ McPtݎĬ:T]8aѾ'MD]-(mCcUL=/ԣ0AQZLhxwm:j'v8W9n0Lb㳒y4'm?Z!
[̺)% >:*I-CC]?u0>
~[6Mz[^g|tCfS}p]\{2y!_DѨ1]zڇPZxI߀eٺ>Xّѕ\seLPj-t`G8e45EB7MWb_+h||iiHJTvo:y72a- 3˟\3%j -ZEsV}%8ݷ idY( j0Z6og{K%݀HEvvː -~GNz+RP6K$#=FS -"˛# -CDTah<D>1*Gyٵ@9LGV<,;%.vdP}zH-B!0E8t?^DD|=gv6f2=(<g#J͐tgxIFUB!
*Һ4t'@l.z]m&QRC:6O 85Pk璦*f0\:Z`TȡW?ֆ0$6aӄ1Z"B39yK_l'Pʔ - _mI%ތ!d<v@ y0 -}$'
Fn\X8[~/2zd$ԥAN+EeR.J)bDŽ?{N -_C@e3C/Fu=+;sfCV2V(#.$ga{ۆn9N,+4B]4Jқ
X0FsD;I"GL5j@ -'v"E03k>ՂP=a}_c5ܙ@*'V/IT&ͮ<ʑ;m,X8F>\DG*9,yJU DЁ)l#,.E"snl%d(L%7Q-CXzȬm^V
|0r,$\7`U(B*G* ՂnY_j2t4R|@! -ߴUJ - -+: -Fȋn{?Y - -be3M5]7U%t_`D -8}fԌʆ=;Ɏv15%C% -c>e~m$lfqfBv!ClMO< -;y7u.N -
WdcQ [/*Cb5<W7<tu{YP@)ygtqI\ߊ|xUG%hW5ϦnkidAlL2$_:4EKY[&5u?qA!v]\IwQH-k~*Cd"bp 7
O$~Kej,]3,cZg!.SR)?(_D,q<sBO;+9?LZשm+7QZ"=gX+:g\NZa:G}Fǖb
(yOfL=14)601W+!@xM&bh1k??(
Is$kB"&dlz)Pgv?XGYM>'NS=y|ŔlhGz&J#Cp4vNцژ^qU$mu3t! X`EtCs^`<z>xz/Uҙ\yŬd -|PV9TH0I+>p%Ʃ\P
̅<{EEMUQbP:-R22=z/%JW
Nhfh}|S?̒b{KYdYk8-%
qQ8|8"qex&|Dgݛ"KO kVD*a4V=ڍ6<z8Y xj\KEƚW*9_
qzѥ.V؉U""/TW6waFT!e=mAuhBC* cyW`n{Px`BQ! -{ qBfCtq_8{LGev!B P~,i;3|@`&:dLЃ3V?>S2C FΡA -Įkw7x8y:> -W,vU#ڽYXFS4_*=l%VKӖJ]N͔o;D XYa6Π>-6z"Al[ϮjijK_Ԯ -XٹA/EȹWoNzPE -T^_TF>tcopddZs.uu!=̪F)ce+ʴYy>hSV0].}Pf{d.
]vCH0]CJUj3r}9n4Ba -3zŵA:{AzEz̪ -`89: -1mɶz" ׅl oTf -du;S$jeWgAsxa>lw %O_Ygy=C^+}%?6 -U ->TcO̕gv 5)I2k;P5![ :TMڌ3OKH@Lo~bLL4Igtٽ|SvNzkDS+Zv:vZEk- Yg#ՄJzYYЁۣ@YG_Y1Ton -*S(:4-8x%erC߸[Pf+-ʑv,%o6(]齬;]3O'Έ\`+4 P~K)!Zԓk̠h*LY~ʌNz3&q =%;̋L%Y3 -#YX:iʱl -u -zY- 30K<I__oX~vVPJT"7)|pu9Rj+$~5a*̳{p+;M9H9ۀgB#ubdwΡ(,o?BIY4Uv8)WЋOf~ -[{<`CJՃ\@*BOu;HIBH`oq\̎Q+G%!~ -}g,. ,!oP5 -W؉sևԌ$ԇob]pBpYM?<yivbbn{1| lVg]cE%iNát.O5!ؿ>;@TZt6oR{5K}Y?Fifm9jK&f&Ö[fxhΞDsՖE#5jGն^#S4Vlh4qZ77'n'/Y3-珀2^rDl`5DwGS#J"6eޅ;,zc =%ݮ9)nЦ8ƕ
33X1ks;ܖ(s`46yZ[5THەgJF|wVQDAht'q~ܣ0ƓGrMܴo +xڬctf]&bضUm+͊͊mIŶm_=ۧOu>?{M\\sMFL'dbgd*fgDD
9;*q);DL
v?L& +0:[4-/_u
m/ڌoLćp̊rgй:A$Ml&fprvNC(X#[#r\_Ŝmw13 +3PcDNST` G-K,kw&TI:SE3FeԴ>z~U*eKh.ZHmDv#cy Eذi%Cvuܭٕ*mN`ꨯAhƽ~HSD?F.ׇ5IqިzV;Xg/M89;}7 xŊK"<-- +q.fUjADJӮmV!jk+>-XjINf⒱+7dp#ȹ3 KsPǾ>~}*s-EՈqz2(b^[L;S2(i/JqrA_Bl66!%njȏ.nL +,B +&{
HwBϕh,@P%l]EA(0\Uxyʗ,n@L֝(!5s^KXsCdƯ<Q[JH<Q9`;9!ZrT"s=zR:et<\v'&Ls'W}?>XjN'.zԴLP+cJ3&?
ub
}850AD +7ߋh~m#=z8Qc{LRUXndz۱M'T22q_}ƾe4LR8`0zɤ[N.GLװѰY'r +~ s?M@ƴxO\ + +M +[w +W`Yl7c0#ymN`)Mk'
&ag`pY)`lƊtqC[}p۰DiC!QR_νo_zDqC0eM]neCF5覷%SOx'Bɗs@Ʋ[+ +Oʙ!SQi+aYau] a +B3#XijA|6^|/93܀{$>Hp&*᩸jp&J
d`c` ۈtt4zXH|XhystwpHZH֟ӌIdIy\m>I9
B1XH:ēGV
oHͯ0RF~{]g^mv"Uqs@g^$d͵6iK0)fNmEٟӪ7FUhSī23;/_;.5[مS
|ʥ*%DN̅^yXZe|[8dk6fZl.M6,sf8;ܗNVQ-$-ǂ5a*`?.E6 6|R4ܠ֨W҃$9(`Y&Gp5TÊ$8 )1WTmֵ^ )7BtAL\ +}Jt _M4~bbG)玧^45n
1/YRj +͐jwi5Ŏ kv7gR`L[y%mp`+X˻kVjō4H4z"#o
0agDz'?HC-cnh !8UN4X4LZ_>$|?_;1׃BM%rтAF
Ǹ'n^(ф0dpQ`+
R)pYCGC釅 +?VGF[o|O&
8.7mۺZtK)nɫhfdcкr8%G
vBFObUjiïsZ_: +U{1_'C`'IzyggDGư::K2XFLES'H_gsYN%b^4$yyg +,nŲQA+#n9K?iAa{-nga'yGo:LX"IsC_^< <29V+I+>!vHSw۽R$}2CD{?2,HL~CW|'8,sȽIiU#.nԈȂhJZ +@OMxEnZg,+ɟlA03z珤Rp#!3?iƴ
":ks6~;V0` +ɤ'`IG
zR!KB˄"㚚nD5mH̆,ٻgDK֔7Mf痗3Z~6!Ї!+c5=!uVK`ޝcOޗc{L77sXMai4m>h@h紊Z:k*G+^P C]GBwZ;G`Z/NtQ8W +bku`Q(NcnwhY:r%OaD|V{r-0d?#&:yCE*y;.>Pp!Úѝ<Q>4wԾr5TQs8CݫUA:7`ʗzֽQCy@.?7W/>YfE;;IYbH;3qSEWx]yr`{H]!!zFpk1jZv(3mmt^C7giQ)8\E?mz#Lq(<溛MV[d3Zh7<m1?-={ȷh?/Ū# j3=aA;_IS&oB㤎t=k6 ÁBYfK/N y,_o@LbUr&URVj ę".,u/uAԣmBUOzh@1xg2
}ZuJF*PgoRaD.Ӄ=ivpuyUI. XGʯ{)[&{V~QUwo8zZ4C5R!Wݽm E
+g6U9Z&m1[
)R9ZJh
;figj~RX/NdC`T>|!bG +>O<C,۾s0wR`YnO@#Tn*Kzґq.B0sZd\!́ Ʒ֊O0nO3k##$(GY7n<&S0,X k"-H"z`I|1ao775((͑%' zp[<&]/|E3潗?Buc$Mﮈ(HGBph2)>@@ K-0"60zƞ[@Br`[L>Ylrs2]@!;}'<bb +^1('}"'͠?CB;WyMbޏ͙[i0o#|519D9(QW(3JiqMݖ kÈ54VS UIiٴ\!8eѭy|M;s`fz=8Ó` Is"v9.8IČbJ"T:An0I4 +y TKlU`,0I\"OQ;X"f(XrChOJlOEdOZ&ձ4?`>}5_ +yæ7$#/ΓHPmB>0LAa=Jp9g-TΩ@~LI3
FR=eZmGʈ#c~#mT)P%JX'qSPVI+eVic3 ޖF"٢r@"B/Ք|fSF0/CL\؋H'$kFO3 \㑌
LЩ~sBziqԂ˫,DKqs-3աr-⽭҈WbF1asఁΑ%&F X|i{!U{ņ7Ŕ6]oȒi[(1ƛI;~fs &N
)dMWtT0>n]?Az:~Z~M79mo`!=+pnF`gst)݂R/S,Ni}(gfY>*czbIBZ +JwV:<L,(.jY~E<{$2MHَ1
,+ͮ]`<6p!Zdes֊߲v1RI=Mx:y6X@=ơ|k+`]b X.L-Oig"bOd)^>pum6D-tН@iq8ۙI({m+<&Hi.evą3I\L*Up4UlTLɩ\wO%h
5r(p[)m[tg;$hL0qe CQz;/|J1)z*&}[d3>]+ihgWzN:B|u{M7x+ +讻-Se0?nP`^jm4F^TV'BqnHbD2b(tޒ⦻x जSRئS4olA^:p
4[bsEBrWX'!;M +몶%?
Eo6?fB R#;v0IB<īQS\e02+=VJ$<%{'3WVbP$*( +?V!J
/< +'y繥#n|JH +8~#C+6}I<.bJ8(j'd3'k5z +V9 ~l2[IBM 77Eyݍ=3*;T/΄ʘF'^2[w8zٛk[_ЗoJAr9ɷ>[T!h3 $4wj߬KҒFB}_fpz;"2ChHFޡC{l:ھ2ϗO~i}AEbxGgvFYѸx +sfvd +C:V2S{Y}гW[=AoU\"~Ӏrۚ +-L Ԍm?ϿW1ޯqv4X)$[qbX"(\BuwDxN$\5F"ñ=qr3a;R yB(}( &])+ +cPnONY箑:;
nE$3!$B!$xR8nFQ%O<695Y|u떢t:=w
$'2 +?ͅdt bV3xTrZ/"qH#0ҟhp^AnO5pN>bVL1?h\\7&o%| +/|nUM{fC
ʽtG;oi'`]-2-nO +N\ڬCx#]XzŖ[| 0促C*Isi'Ntm _<#4jjZXG.B4}JUDJfB,ZB>.I;.T{i_D3e?S[;V$%voۚ0fIE"ͻQv'+ą#\@GS:x +w kUGs]2*n
ǩ +\#&EwTlʫhLdfHg!"Y#˽φZJip0o fG{<e0ƤO6{iC1kfs2w-G7G?|34,mn3h\#GFĎӬGeGR[2Gr:Cz}U.d.\CS[Nϭ@4~Vs;6y9vkph(RWɉ[h|oB:.,匝/TC-0UN
wڪ.'63Wf + +g'ʟygMhnه0l*U$xʻk*7IEcyG/}j.YԪUzX^XaxtFdUy)=,@HWgҾ#=wyR:k*q8ie[M<)i}H*5=ɡ +ӈ219R-`pb?g cNyN׳{m5_/o?&%|o +_P¸S| HI*pj(gUs↖a5s"C}x+9Y>;[L)4;U[5 +W#U# ceb +8Ǯʆ2Z*.bzvHatWǍa֞RK${3`ݎ7y/Vd^o4ٔB%>>Ll0 *МGUUY3"Кxd +MYs &+XϷ3vTBL@Tb|Q廂bi4X"UTohws mp2$U~9jRDT+%'?FBr7m}ٹ{KkVF6Lnfh
Ƃߺe(P~yc^T2&kGu$;BS'::qy[)b>+aDI]|0lswFN@ȹ?JJpk#O|އt[gCjk!)ejZ}w@!;CRTHJ/ RSV__7<RC +/.\53sS;[*/M>cYA8mUqMiʉHKdYV?9 Q1LlKR?4eJBApO3)1moe$#hGKKJmɕYٰ?>DE(KNBjUarϲJtq1"~3u.7l +FU_{l96IiOիB|X"S;Zeo;uɛVbւJR?Υ-4;;tyyjXKA=skxps9>܃
s_0wςٳ*v+.tu[ JwCqr>Ր]Mڅ'"|Xwo!^Vx:FbzoLK3^u)h)IDϨ\16jT=pSjbz&H ++.er*].F<lOvO"'%d +ew3!(6"+4 ssr<Rfvn{mqC^!IiqXD.$c0o$ѳ`|CBvl5Pt҉.J8Qz+Qtmg4־䑒]i3,$<+8GM]g~.uG$|e
("gm8P52cL /䊢Zf
A ^Xtqӗ1m'B +p#_i*(?iF')d;PJzjSZ1͞x0!b<EARR"jZ;z<<$`i4]d?WvDUc " +A +5̫XֲvFekW/'uyS2M%ݸ8]
j$Rk-/rʀk"a[z8P}y':I^5my3Z6To1OAy+^҅<,U|Nh;:K*ikHSw!=&'sȶlGbfk4ԕ{'+ߋ<CkJ(Tg8Jo,4G\ҝ-6=a;k]4Pe҈0"NgtgEZ%#;loL{y +.KZ0G}˅&d̍|_ +2H\Jaato$Jv:zuf#^+&`U/lS#1[,Ƌ"*Fk]}:{ӹ +nմ^r7nXG`k>7 `awz1Uձ&ԡ9ۧ*RACv|7}E"#4)1"dҊTr$DLOߞNln-$!עˋs)DC_?G@@%coiF4!{Ti)1Iȥ"ڬ0,fS%Y*时N}cpme|ݰ2X_Ŧ +yxpQ']$[;PkJZРL"<?'b$]""w'}UWRnP +5.
+dg٨,} +%hpk9d"%-ҐaI4y<qH v-܇MɦߎSdMÐHm2Etau{BbyApE`QRn?;J L}]EL\}W +B8eQHebZ
f\cwEۆ8?-}~/ ?쳕#VF{Ρu(hun+/l.Ɔ`軫b#lv,JкEW/`W"2g)@\̆;L
a+Sǂ#wU(r6W+FʲMY9?k|d)(ojyͰĤtg<=U;eJghO3)S^;#C,XUEpF_vxPan8L$dB|*Svzg1z'#JcShEֻ!}qjĵ<i91c'hVlzGk7@UKӳfyG: wW`Ȑe}\-RKD8Z +Wl(]Ԕ#?mzBi+&iD`4zfϓՖAfTAwOYĘ\%++Yro>jU6:ZT-b|Ѹ~Qjb8;h(~-Gr1?
IC<Ms<51i0acCM.+i~LG=FG7Oo/spE9q%ˀO
Oۨŋ[=YCD +5ՕlT>'_ʺZm]sXMc/A_Us;o<[+ + jhV2$䱈O"t[QT!9ToDže5ۢ1oHxk7ukXm7㍎Sн\t0tMẏ&FjA{/sTx^>W+sBe7ڬsKcQ&Z\}ۗ!\4d$^2h^5]y_I͖
#T;@̔ՑhDfu)Q}da,,®̹{:ɕJqF +%fR#4"\bfR@qbvͣvaH,8ĉt@MN&/Et[o`iIJkyOvPWsك>OQ8VȨpsl$]+uQ)Nl
mW(>b,=m(,{*NKh-pA21V2Llϟ668-pEE'@\5FzʠW3rG/-lcx +y +/g&)G7B"m$|5.UOY<EՒMtOuLgvF& 瀖hNL2_,)&dV >DID#$-1q,Ǣʂ'}-Z/;Mzw],T8~IM+wwihTMįUۺwx$(Xػpj @
>5sU lE_~ebGc +R
?K^vy<O51ӟYvY=<mzə}xNE''&
Bs{ܟvHu^\L}Aj,YQME*/CKk(.Ѹ7}h-67U{sL Me=83}|&ڳ|/h(nv"hk~8Krn +pAER[ꛪW]*cO;a)ȶ[M샢 }?|) +qԻ4DHuP +5+^ZK}1l,[=Z(̚=ܨN<yG\0 [N)fHOi=@ tΎ +*qn(A?e(!z_F̳uykt֫^!Z|e.*OR~b}ޯCM endstream endobj -1333 0 obj << +1077 0 obj << /Type /FontDescriptor -/FontName /IIGVCM+NimbusRomNo9L-Regu +/FontName /OQYQQG+NimbusRomNo9L-Regu /Flags 4 /FontBBox [-168 -281 1000 924] /Ascent 678 @@ -7791,10 +6522,10 @@ endobj /ItalicAngle 0 /StemV 85 /XHeight 450 -/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/adieresis/ampersand/b/braceleft/braceright/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/plus/q/question/quotedbl/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 1332 0 R +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/adieresis/ampersand/b/braceleft/braceright/bracketleft/bracketright/bullet/c/colon/comma/d/e/eight/equal/exclam/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/plus/q/question/quotedbl/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 1076 0 R >> endobj -1334 0 obj << +1078 0 obj << /Length1 1647 /Length2 12791 /Length3 0 @@ -7865,7 +6596,7 @@ Qo ]VnϞ`FR[A`k~~TF!1Ӡ݈܍!!a`$բdU7sWqhaq>(qH&ïfu>1RVq:?ho[DKZ*`=]t{BISHcovߒ,OL+gѮʣM{NSrS`\^.zw 5okgd1X$kĊmiԪf`E]tѯqLP endstream endobj -1335 0 obj << +1079 0 obj << /Type /FontDescriptor /FontName /YODDGY+NimbusRomNo9L-ReguItal /Flags 4 @@ -7877,422 +6608,231 @@ endobj /StemV 78 /XHeight 441 /CharSet (/A/B/C/D/E/F/G/I/L/M/O/P/R/S/T/V/a/b/c/comma/d/e/f/fi/four/g/h/hyphen/i/k/l/m/n/o/p/parenleft/parenright/period/q/quoteright/r/s/t/u/underscore/v/w/x/y/z) -/FontFile 1334 0 R +/FontFile 1078 0 R >> endobj -1308 0 obj << +1052 0 obj << /Type /Encoding -/Differences [2/fi/fl 34/quotedbl/numbersign 37/percent/ampersand/quoteright/parenleft/parenright 43/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft 93/bracketright 95/underscore 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft 125/braceright 149/bullet 228/adieresis] +/Differences [2/fi/fl 33/exclam/quotedbl/numbersign 38/ampersand/quoteright/parenleft/parenright 43/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft 93/bracketright 95/underscore 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft 125/braceright 149/bullet 228/adieresis] >> endobj -584 0 obj << +444 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MCOYWV+CMMI10 -/FontDescriptor 1319 0 R +/FontDescriptor 1063 0 R /FirstChar 60 /LastChar 90 -/Widths 1313 0 R +/Widths 1057 0 R >> endobj -585 0 obj << +445 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VYDKHY+CMR10 -/FontDescriptor 1321 0 R +/FontDescriptor 1065 0 R /FirstChar 48 /LastChar 61 -/Widths 1312 0 R +/Widths 1056 0 R >> endobj -586 0 obj << +446 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NBBWCW+CMSY10 -/FontDescriptor 1323 0 R +/FontDescriptor 1067 0 R /FirstChar 3 /LastChar 106 -/Widths 1311 0 R +/Widths 1055 0 R >> endobj -583 0 obj << +443 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LAJUWJ+CMSY7 -/FontDescriptor 1325 0 R +/FontDescriptor 1069 0 R /FirstChar 94 /LastChar 94 -/Widths 1314 0 R +/Widths 1058 0 R >> endobj -543 0 obj << +410 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /TXCSIR+NimbusMonL-Regu -/FontDescriptor 1327 0 R +/BaseFont /IIWFZB+NimbusMonL-Regu +/FontDescriptor 1071 0 R /FirstChar 34 -/LastChar 125 -/Widths 1315 0 R -/Encoding 1308 0 R +/LastChar 123 +/Widths 1059 0 R +/Encoding 1052 0 R >> endobj -396 0 obj << +292 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /VRKWGK+NimbusRomNo9L-Medi -/FontDescriptor 1329 0 R +/BaseFont /LHHNFJ+NimbusRomNo9L-Medi +/FontDescriptor 1073 0 R /FirstChar 2 -/LastChar 125 -/Widths 1317 0 R -/Encoding 1308 0 R +/LastChar 122 +/Widths 1061 0 R +/Encoding 1052 0 R >> endobj -965 0 obj << +801 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XTTWYM+NimbusRomNo9L-MediItal -/FontDescriptor 1331 0 R +/FontDescriptor 1075 0 R /FirstChar 3 /LastChar 122 -/Widths 1309 0 R -/Encoding 1308 0 R +/Widths 1053 0 R +/Encoding 1052 0 R >> endobj -397 0 obj << +293 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /IIGVCM+NimbusRomNo9L-Regu -/FontDescriptor 1333 0 R +/BaseFont /OQYQQG+NimbusRomNo9L-Regu +/FontDescriptor 1077 0 R /FirstChar 2 /LastChar 228 -/Widths 1316 0 R -/Encoding 1308 0 R +/Widths 1060 0 R +/Encoding 1052 0 R >> endobj -793 0 obj << +607 0 obj << /Type /Font /Subtype /Type1 /BaseFont /YODDGY+NimbusRomNo9L-ReguItal -/FontDescriptor 1335 0 R +/FontDescriptor 1079 0 R /FirstChar 2 /LastChar 122 -/Widths 1310 0 R -/Encoding 1308 0 R ->> endobj -398 0 obj << -/Type /Pages -/Count 6 -/Parent 1336 0 R -/Kids [390 0 R 401 0 R 429 0 R 469 0 R 508 0 R 511 0 R] +/Widths 1054 0 R +/Encoding 1052 0 R >> endobj -520 0 obj << +294 0 obj << /Type /Pages /Count 6 -/Parent 1336 0 R -/Kids [514 0 R 522 0 R 536 0 R 562 0 R 579 0 R 589 0 R] +/Parent 1080 0 R +/Kids [286 0 R 297 0 R 326 0 R 366 0 R 378 0 R 381 0 R] >> endobj -613 0 obj << +390 0 obj << /Type /Pages /Count 6 -/Parent 1336 0 R -/Kids [604 0 R 637 0 R 651 0 R 656 0 R 663 0 R 671 0 R] +/Parent 1080 0 R +/Kids [384 0 R 392 0 R 403 0 R 424 0 R 439 0 R 449 0 R] >> endobj -680 0 obj << +473 0 obj << /Type /Pages /Count 6 -/Parent 1336 0 R -/Kids [677 0 R 682 0 R 691 0 R 695 0 R 719 0 R 740 0 R] +/Parent 1080 0 R +/Kids [464 0 R 497 0 R 511 0 R 516 0 R 522 0 R 526 0 R] >> endobj -748 0 obj << +535 0 obj << /Type /Pages /Count 6 -/Parent 1336 0 R -/Kids [745 0 R 751 0 R 759 0 R 789 0 R 860 0 R 933 0 R] +/Parent 1080 0 R +/Kids [532 0 R 537 0 R 562 0 R 584 0 R 589 0 R 594 0 R] >> endobj -966 0 obj << +609 0 obj << /Type /Pages /Count 6 -/Parent 1336 0 R -/Kids [962 0 R 970 0 R 975 0 R 979 0 R 983 0 R 987 0 R] +/Parent 1080 0 R +/Kids [603 0 R 658 0 R 735 0 R 788 0 R 798 0 R 804 0 R] >> endobj -996 0 obj << +817 0 obj << /Type /Pages /Count 6 -/Parent 1337 0 R -/Kids [993 0 R 1001 0 R 1024 0 R 1055 0 R 1059 0 R 1063 0 R] +/Parent 1080 0 R +/Kids [813 0 R 820 0 R 826 0 R 830 0 R 836 0 R 840 0 R] >> endobj -1114 0 obj << +891 0 obj << /Type /Pages /Count 4 -/Parent 1337 0 R -/Kids [1111 0 R 1188 0 R 1265 0 R 1305 0 R] +/Parent 1081 0 R +/Kids [888 0 R 965 0 R 1042 0 R 1049 0 R] >> endobj -1336 0 obj << +1080 0 obj << /Type /Pages /Count 36 -/Parent 1338 0 R -/Kids [398 0 R 520 0 R 613 0 R 680 0 R 748 0 R 966 0 R] +/Parent 1082 0 R +/Kids [294 0 R 390 0 R 473 0 R 535 0 R 609 0 R 817 0 R] >> endobj -1337 0 obj << +1081 0 obj << /Type /Pages -/Count 10 -/Parent 1338 0 R -/Kids [996 0 R 1114 0 R] +/Count 4 +/Parent 1082 0 R +/Kids [891 0 R] >> endobj -1338 0 obj << +1082 0 obj << /Type /Pages -/Count 46 -/Kids [1336 0 R 1337 0 R] +/Count 40 +/Kids [1080 0 R 1081 0 R] >> endobj -1339 0 obj << +1083 0 obj << /Type /Outlines /First 3 0 R -/Last 187 0 R -/Count 8 ->> endobj -387 0 obj << -/Title 388 0 R -/A 385 0 R -/Parent 343 0 R -/Prev 383 0 R ->> endobj -383 0 obj << -/Title 384 0 R -/A 381 0 R -/Parent 343 0 R -/Prev 379 0 R -/Next 387 0 R ->> endobj -379 0 obj << -/Title 380 0 R -/A 377 0 R -/Parent 343 0 R -/Prev 375 0 R -/Next 383 0 R ->> endobj -375 0 obj << -/Title 376 0 R -/A 373 0 R -/Parent 343 0 R -/Prev 371 0 R -/Next 379 0 R ->> endobj -371 0 obj << -/Title 372 0 R -/A 369 0 R -/Parent 343 0 R -/Prev 367 0 R -/Next 375 0 R ->> endobj -367 0 obj << -/Title 368 0 R -/A 365 0 R -/Parent 343 0 R -/Prev 363 0 R -/Next 371 0 R ->> endobj -363 0 obj << -/Title 364 0 R -/A 361 0 R -/Parent 343 0 R -/Prev 359 0 R -/Next 367 0 R ->> endobj -359 0 obj << -/Title 360 0 R -/A 357 0 R -/Parent 343 0 R -/Prev 355 0 R -/Next 363 0 R ->> endobj -355 0 obj << -/Title 356 0 R -/A 353 0 R -/Parent 343 0 R -/Prev 351 0 R -/Next 359 0 R ->> endobj -351 0 obj << -/Title 352 0 R -/A 349 0 R -/Parent 343 0 R -/Prev 347 0 R -/Next 355 0 R ->> endobj -347 0 obj << -/Title 348 0 R -/A 345 0 R -/Parent 343 0 R -/Next 351 0 R ->> endobj -343 0 obj << -/Title 344 0 R -/A 341 0 R -/Parent 299 0 R -/Prev 335 0 R -/First 347 0 R -/Last 387 0 R -/Count -11 ->> endobj -339 0 obj << -/Title 340 0 R -/A 337 0 R -/Parent 335 0 R ->> endobj -335 0 obj << -/Title 336 0 R -/A 333 0 R -/Parent 299 0 R -/Prev 307 0 R -/Next 343 0 R -/First 339 0 R -/Last 339 0 R -/Count -1 ->> endobj -331 0 obj << -/Title 332 0 R -/A 329 0 R -/Parent 307 0 R -/Prev 327 0 R ->> endobj -327 0 obj << -/Title 328 0 R -/A 325 0 R -/Parent 307 0 R -/Prev 323 0 R -/Next 331 0 R ->> endobj -323 0 obj << -/Title 324 0 R -/A 321 0 R -/Parent 307 0 R -/Prev 319 0 R -/Next 327 0 R ->> endobj -319 0 obj << -/Title 320 0 R -/A 317 0 R -/Parent 307 0 R -/Prev 315 0 R -/Next 323 0 R ->> endobj -315 0 obj << -/Title 316 0 R -/A 313 0 R -/Parent 307 0 R -/Prev 311 0 R -/Next 319 0 R ->> endobj -311 0 obj << -/Title 312 0 R -/A 309 0 R -/Parent 307 0 R -/Next 315 0 R ->> endobj -307 0 obj << -/Title 308 0 R -/A 305 0 R -/Parent 299 0 R -/Prev 303 0 R -/Next 335 0 R -/First 311 0 R -/Last 331 0 R -/Count -6 ->> endobj -303 0 obj << -/Title 304 0 R -/A 301 0 R -/Parent 299 0 R -/Next 307 0 R ->> endobj -299 0 obj << -/Title 300 0 R -/A 297 0 R -/Parent 187 0 R -/Prev 191 0 R -/First 303 0 R -/Last 343 0 R -/Count -4 ->> endobj -295 0 obj << -/Title 296 0 R -/A 293 0 R -/Parent 251 0 R -/Prev 291 0 R ->> endobj -291 0 obj << -/Title 292 0 R -/A 289 0 R -/Parent 251 0 R -/Prev 287 0 R -/Next 295 0 R ->> endobj -287 0 obj << -/Title 288 0 R -/A 285 0 R -/Parent 251 0 R -/Prev 283 0 R -/Next 291 0 R +/Last 175 0 R +/Count 7 >> endobj 283 0 obj << /Title 284 0 R /A 281 0 R -/Parent 251 0 R +/Parent 239 0 R /Prev 279 0 R -/Next 287 0 R >> endobj 279 0 obj << /Title 280 0 R /A 277 0 R -/Parent 251 0 R +/Parent 239 0 R /Prev 275 0 R /Next 283 0 R >> endobj 275 0 obj << /Title 276 0 R /A 273 0 R -/Parent 251 0 R +/Parent 239 0 R /Prev 271 0 R /Next 279 0 R >> endobj 271 0 obj << /Title 272 0 R /A 269 0 R -/Parent 251 0 R +/Parent 239 0 R /Prev 267 0 R /Next 275 0 R >> endobj 267 0 obj << /Title 268 0 R /A 265 0 R -/Parent 251 0 R +/Parent 239 0 R /Prev 263 0 R /Next 271 0 R >> endobj 263 0 obj << /Title 264 0 R /A 261 0 R -/Parent 251 0 R +/Parent 239 0 R /Prev 259 0 R /Next 267 0 R >> endobj 259 0 obj << /Title 260 0 R /A 257 0 R -/Parent 251 0 R +/Parent 239 0 R /Prev 255 0 R /Next 263 0 R >> endobj 255 0 obj << /Title 256 0 R /A 253 0 R -/Parent 251 0 R +/Parent 239 0 R +/Prev 251 0 R /Next 259 0 R >> endobj 251 0 obj << /Title 252 0 R /A 249 0 R -/Parent 191 0 R -/Prev 239 0 R -/First 255 0 R -/Last 295 0 R -/Count -11 +/Parent 239 0 R +/Prev 247 0 R +/Next 255 0 R >> endobj 247 0 obj << /Title 248 0 R /A 245 0 R /Parent 239 0 R /Prev 243 0 R +/Next 251 0 R >> endobj 243 0 obj << /Title 244 0 R @@ -8303,306 +6843,303 @@ endobj 239 0 obj << /Title 240 0 R /A 237 0 R -/Parent 191 0 R -/Prev 231 0 R -/Next 251 0 R +/Parent 179 0 R +/Prev 227 0 R /First 243 0 R -/Last 247 0 R -/Count -2 +/Last 283 0 R +/Count -11 >> endobj 235 0 obj << /Title 236 0 R /A 233 0 R -/Parent 231 0 R +/Parent 227 0 R +/Prev 231 0 R >> endobj 231 0 obj << /Title 232 0 R /A 229 0 R -/Parent 191 0 R -/Prev 199 0 R -/Next 239 0 R -/First 235 0 R -/Last 235 0 R -/Count -1 +/Parent 227 0 R +/Next 235 0 R >> endobj 227 0 obj << /Title 228 0 R /A 225 0 R -/Parent 199 0 R -/Prev 223 0 R +/Parent 179 0 R +/Prev 219 0 R +/Next 239 0 R +/First 231 0 R +/Last 235 0 R +/Count -2 >> endobj 223 0 obj << /Title 224 0 R /A 221 0 R -/Parent 199 0 R -/Prev 219 0 R -/Next 227 0 R +/Parent 219 0 R >> endobj 219 0 obj << /Title 220 0 R /A 217 0 R -/Parent 199 0 R -/Prev 215 0 R -/Next 223 0 R +/Parent 179 0 R +/Prev 187 0 R +/Next 227 0 R +/First 223 0 R +/Last 223 0 R +/Count -1 >> endobj 215 0 obj << /Title 216 0 R /A 213 0 R -/Parent 199 0 R +/Parent 187 0 R /Prev 211 0 R -/Next 219 0 R >> endobj 211 0 obj << /Title 212 0 R /A 209 0 R -/Parent 199 0 R +/Parent 187 0 R /Prev 207 0 R /Next 215 0 R >> endobj 207 0 obj << /Title 208 0 R /A 205 0 R -/Parent 199 0 R +/Parent 187 0 R /Prev 203 0 R /Next 211 0 R >> endobj 203 0 obj << /Title 204 0 R /A 201 0 R -/Parent 199 0 R +/Parent 187 0 R +/Prev 199 0 R /Next 207 0 R >> endobj 199 0 obj << /Title 200 0 R /A 197 0 R -/Parent 191 0 R +/Parent 187 0 R /Prev 195 0 R -/Next 231 0 R -/First 203 0 R -/Last 227 0 R -/Count -7 +/Next 203 0 R >> endobj 195 0 obj << /Title 196 0 R /A 193 0 R -/Parent 191 0 R +/Parent 187 0 R +/Prev 191 0 R /Next 199 0 R >> endobj 191 0 obj << /Title 192 0 R /A 189 0 R /Parent 187 0 R -/Next 299 0 R -/First 195 0 R -/Last 251 0 R -/Count -5 +/Next 195 0 R >> endobj 187 0 obj << /Title 188 0 R /A 185 0 R -/Parent 1339 0 R -/Prev 91 0 R +/Parent 179 0 R +/Prev 183 0 R +/Next 219 0 R /First 191 0 R -/Last 299 0 R -/Count -2 +/Last 215 0 R +/Count -7 >> endobj 183 0 obj << /Title 184 0 R /A 181 0 R -/Parent 103 0 R -/Prev 179 0 R +/Parent 179 0 R +/Next 187 0 R >> endobj 179 0 obj << /Title 180 0 R /A 177 0 R -/Parent 103 0 R -/Prev 175 0 R -/Next 183 0 R +/Parent 175 0 R +/First 183 0 R +/Last 239 0 R +/Count -5 >> endobj 175 0 obj << /Title 176 0 R /A 173 0 R -/Parent 103 0 R -/Prev 171 0 R -/Next 179 0 R +/Parent 1083 0 R +/Prev 75 0 R +/First 179 0 R +/Last 179 0 R +/Count -1 >> endobj 171 0 obj << /Title 172 0 R /A 169 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 167 0 R -/Next 175 0 R >> endobj 167 0 obj << /Title 168 0 R /A 165 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 163 0 R /Next 171 0 R >> endobj 163 0 obj << /Title 164 0 R /A 161 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 159 0 R /Next 167 0 R >> endobj 159 0 obj << /Title 160 0 R /A 157 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 155 0 R /Next 163 0 R >> endobj 155 0 obj << /Title 156 0 R /A 153 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 151 0 R /Next 159 0 R >> endobj 151 0 obj << /Title 152 0 R /A 149 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 147 0 R /Next 155 0 R >> endobj 147 0 obj << /Title 148 0 R /A 145 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 143 0 R /Next 151 0 R >> endobj 143 0 obj << /Title 144 0 R /A 141 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 139 0 R /Next 147 0 R >> endobj 139 0 obj << /Title 140 0 R /A 137 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 135 0 R /Next 143 0 R >> endobj 135 0 obj << /Title 136 0 R /A 133 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 131 0 R /Next 139 0 R >> endobj 131 0 obj << /Title 132 0 R /A 129 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 127 0 R /Next 135 0 R >> endobj 127 0 obj << /Title 128 0 R /A 125 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 123 0 R /Next 131 0 R >> endobj 123 0 obj << /Title 124 0 R /A 121 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 119 0 R /Next 127 0 R >> endobj 119 0 obj << /Title 120 0 R /A 117 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 115 0 R /Next 123 0 R >> endobj 115 0 obj << /Title 116 0 R /A 113 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 111 0 R /Next 119 0 R >> endobj 111 0 obj << /Title 112 0 R /A 109 0 R -/Parent 103 0 R +/Parent 87 0 R /Prev 107 0 R /Next 115 0 R >> endobj 107 0 obj << /Title 108 0 R /A 105 0 R -/Parent 103 0 R +/Parent 87 0 R +/Prev 103 0 R /Next 111 0 R >> endobj 103 0 obj << /Title 104 0 R /A 101 0 R -/Parent 95 0 R +/Parent 87 0 R /Prev 99 0 R -/First 107 0 R -/Last 183 0 R -/Count -20 +/Next 107 0 R >> endobj 99 0 obj << /Title 100 0 R /A 97 0 R -/Parent 95 0 R +/Parent 87 0 R +/Prev 95 0 R /Next 103 0 R >> endobj 95 0 obj << /Title 96 0 R /A 93 0 R -/Parent 91 0 R -/First 99 0 R -/Last 103 0 R -/Count -2 +/Parent 87 0 R +/Prev 91 0 R +/Next 99 0 R >> endobj 91 0 obj << /Title 92 0 R /A 89 0 R -/Parent 1339 0 R -/Prev 83 0 R -/Next 187 0 R -/First 95 0 R -/Last 95 0 R -/Count -1 +/Parent 87 0 R +/Next 95 0 R >> endobj 87 0 obj << /Title 88 0 R /A 85 0 R -/Parent 83 0 R +/Parent 79 0 R +/Prev 83 0 R +/First 91 0 R +/Last 171 0 R +/Count -21 >> endobj 83 0 obj << /Title 84 0 R /A 81 0 R -/Parent 1339 0 R -/Prev 75 0 R -/Next 91 0 R -/First 87 0 R -/Last 87 0 R -/Count -1 +/Parent 79 0 R +/Next 87 0 R >> endobj 79 0 obj << /Title 80 0 R /A 77 0 R /Parent 75 0 R +/First 83 0 R +/Last 87 0 R +/Count -2 >> endobj 75 0 obj << /Title 76 0 R /A 73 0 R -/Parent 1339 0 R -/Prev 59 0 R -/Next 83 0 R +/Parent 1083 0 R +/Prev 67 0 R +/Next 175 0 R /First 79 0 R /Last 79 0 R /Count -1 @@ -8610,29 +7147,29 @@ endobj 71 0 obj << /Title 72 0 R /A 69 0 R -/Parent 63 0 R -/Prev 67 0 R +/Parent 67 0 R >> endobj 67 0 obj << /Title 68 0 R /A 65 0 R -/Parent 63 0 R -/Next 71 0 R +/Parent 1083 0 R +/Prev 59 0 R +/Next 75 0 R +/First 71 0 R +/Last 71 0 R +/Count -1 >> endobj 63 0 obj << /Title 64 0 R /A 61 0 R /Parent 59 0 R -/First 67 0 R -/Last 71 0 R -/Count -2 >> endobj 59 0 obj << /Title 60 0 R /A 57 0 R -/Parent 1339 0 R +/Parent 1083 0 R /Prev 31 0 R -/Next 75 0 R +/Next 67 0 R /First 63 0 R /Last 63 0 R /Count -1 @@ -8681,7 +7218,7 @@ endobj 31 0 obj << /Title 32 0 R /A 29 0 R -/Parent 1339 0 R +/Parent 1083 0 R /Prev 15 0 R /Next 59 0 R /First 35 0 R @@ -8710,7 +7247,7 @@ endobj 15 0 obj << /Title 16 0 R /A 13 0 R -/Parent 1339 0 R +/Parent 1083 0 R /Prev 3 0 R /Next 31 0 R /First 19 0 R @@ -8732,1685 +7269,1369 @@ endobj 3 0 obj << /Title 4 0 R /A 1 0 R -/Parent 1339 0 R +/Parent 1083 0 R /Next 15 0 R /First 7 0 R /Last 11 0 R /Count -2 >> endobj -1340 0 obj << -/Names [(CommandLineUsage) 548 0 R (CommandLineUsage_ARGS) 666 0 R (CommandLineUsage_MANARGS) 667 0 R (CommandLineUsage_OPTARGS) 668 0 R (Doc-Start) 395 0 R (INTRO) 517 0 R] -/Limits [(CommandLineUsage) (INTRO)] ->> endobj -1341 0 obj << -/Names [(INTRO_DecoderBasics) 519 0 R (INTRO_SCOPE) 518 0 R (Item.1) 542 0 R (Item.2) 544 0 R (Item.3) 545 0 R (Item.4) 565 0 R] -/Limits [(INTRO_DecoderBasics) (Item.4)] ->> endobj -1342 0 obj << -/Names [(Item.5) 567 0 R (Item.6) 568 0 R (Item.7) 569 0 R (Item.8) 570 0 R (LIBUSE) 539 0 R (LIBUSE_BufferSystem) 571 0 R] -/Limits [(Item.5) (LIBUSE_BufferSystem)] ->> endobj -1343 0 obj << -/Names [(LIBUSE_Calling_Sequence) 541 0 R (LIBUSE_InterfaceDescritpion) 540 0 R (OutputFormat) 607 0 R (OutputFormat_ExamplesArib) 643 0 R (OutputFormat_ExamplesStereo) 612 0 R (OutputFormat_ExamplesSurround) 641 0 R] -/Limits [(LIBUSE_Calling_Sequence) (OutputFormat_ExamplesSurround)] ->> endobj -1344 0 obj << -/Names [(OutputFormat_OutputFormatChange) 610 0 R (OutputFormat_OutputFormatExample) 611 0 R (OutputFormat_OutputFormatObtaining) 608 0 R (aacdecoder__lib_8h) 546 0 R (aacdecoder__lib_8h_a15da43e47179e3ca7b58d6b08620533e) 950 0 R (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) 551 0 R] -/Limits [(OutputFormat_OutputFormatChange) (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24)] ->> endobj -1345 0 obj << -/Names [(aacdecoder__lib_8h_a388a21070208ec23217c4ff8f8d98754) 805 0 R (aacdecoder__lib_8h_a404dd0b9b627d3e9ab765dba98be3eec) 949 0 R (aacdecoder__lib_8h_a4666e424f482470e872827f66399454a) 811 0 R (aacdecoder__lib_8h_a6016435b8679d2793078b10ecaf3d05d) 550 0 R (aacdecoder__lib_8h_a60aa42cb3ddc804b44ce61d877d0501e) 575 0 R (aacdecoder__lib_8h_a620b5a8c5d7ddd1b525aae1895963e16) 967 0 R] -/Limits [(aacdecoder__lib_8h_a388a21070208ec23217c4ff8f8d98754) (aacdecoder__lib_8h_a620b5a8c5d7ddd1b525aae1895963e16)] ->> endobj -1346 0 obj << -/Names [(aacdecoder__lib_8h_a6d508fce68c364f5dabc9195e701ecf8) 574 0 R (aacdecoder__lib_8h_a8bc17277db0f7651065f62d66f92ed9f) 809 0 R (aacdecoder__lib_8h_a8f33403449b41e6a9deda6cb1e07d386) 948 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88) 897 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a28dd853ab4339011893a933020ac5ab8) 940 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a4392100c924c0f20a706f55bc7ab3931) 944 0 R] -/Limits [(aacdecoder__lib_8h_a6d508fce68c364f5dabc9195e701ecf8) (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a4392100c924c0f20a706f55bc7ab3931)] ->> endobj -1347 0 obj << -/Names [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6056e5b76cc6a00078388445b1f1cfa1) 941 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a605a8fed5c5754dffc63775cc702aae7) 945 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a65284784865f22d79700dc268f84e374) 942 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6e3fa0b7d247c98f132edd55187f9c0c) 616 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aa1a5a121f8b03708d9fdcc06f6e882fb) 947 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) 617 0 R] -/Limits [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6056e5b76cc6a00078388445b1f1cfa1) (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568)] ->> endobj -1348 0 obj << -/Names [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aee866642a3f335e7874a82939ad0c135) 899 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aefc0ded1aea7e08f3c9c55df76c75668) 898 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88af24d28dac8b5de47c00c578712d0591e) 943 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88af84565b78a6ae180e316dd612a0877a7) 946 0 R (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) 812 0 R (aacdecoder__lib_8h_abc8ebc3d720699fe1d7c27eccd3da051) 810 0 R] -/Limits [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aee866642a3f335e7874a82939ad0c135) (aacdecoder__lib_8h_abc8ebc3d720699fe1d7c27eccd3da051)] ->> endobj -1349 0 obj << -/Names [(aacdecoder__lib_8h_ac2c358d4ac0d7747cae32f9f45c20f71) 806 0 R (aacdecoder__lib_8h_ac8580fe563e79afe695d7b0b32ea0fed) 549 0 R (aacdecoder__lib_8h_acca8f4cf9757885d6c654de37a43072f) 576 0 R (aacdecoder__lib_8h_ae09502f250437ee519971ca3a95ac9e0) 808 0 R (aacdecoder__lib_8h_af59d78a4583ca81ccb2675dce592b812) 807 0 R (aacdecoder__lib_8h_afb42ea8892dd828264bd2f6147e0559f) 618 0 R] -/Limits [(aacdecoder__lib_8h_ac2c358d4ac0d7747cae32f9f45c20f71) (aacdecoder__lib_8h_afb42ea8892dd828264bd2f6147e0559f)] ->> endobj -1350 0 obj << -/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) 813 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a0357ce81d9d62cc106c752121fc9dc8a) 881 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a0bd193ee6a8c3151c5c6469f7e455a8e) 872 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a20cdc26726b22cb44143b4e440441e0f) 882 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a242d8bc09683a84b578546663dda36fa) 865 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a42c5cbc358ada7261ba3d609c33ec3a5) 877 0 R] -/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a42c5cbc358ada7261ba3d609c33ec3a5)] ->> endobj -1351 0 obj << -/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a45662b23139ca5807ed6fe3b8940dc40) 885 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4a877298c7076e5ef4dd848912ab1d48) 817 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4dbbe3b38d0dfb444fdc3a7adae2f807) 874 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4dff2410394a6ffdf0f95ec66cbd0107) 867 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a516287ad9b64c230200191fdd60361e1) 889 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a5bc4e4af77d94fa08beb54def8f01f7f) 871 0 R] -/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a45662b23139ca5807ed6fe3b8940dc40) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a5bc4e4af77d94fa08beb54def8f01f7f)] ->> endobj -1352 0 obj << -/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a60690e0dbc450f62f83548fa484716ab) 876 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a65820f534b99b1529510720eeaafc861) 893 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a71440b5535812faf92a0fe99275dd5f0) 814 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a72f0dd3698012cdf8b20dd6f0b5de626) 894 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a77f722abc6c05f1abf1f51c0d11bf7ec) 888 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a7ea36c43c374f751f65be033057e3888) 866 0 R] -/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a60690e0dbc450f62f83548fa484716ab) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a7ea36c43c374f751f65be033057e3888)] +1084 0 obj << +/Names [(Doc-Start) 291 0 R (INTRO) 387 0 R (INTRO_DecoderBasics) 389 0 R (INTRO_SCOPE) 388 0 R (Item.1) 409 0 R (Item.2) 411 0 R] +/Limits [(Doc-Start) (Item.2)] >> endobj -1353 0 obj << -/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a856cdca9aa719c292b7c351cec03ae06) 892 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a8aa244ce1ae08763dde378161df0652f) 875 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a8bf90eccdaf6063e299f9415c8bd5d1a) 891 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a95dafb71a0623fbeb0715e46b7a189c7) 869 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a97113255d01bdf3cc7104dd411f40949) 870 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aa14848134610eea96115c59a6b944921) 884 0 R] -/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a856cdca9aa719c292b7c351cec03ae06) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aa14848134610eea96115c59a6b944921)] +1085 0 obj << +/Names [(Item.3) 412 0 R (Item.4) 427 0 R (Item.5) 429 0 R (Item.6) 430 0 R (Item.7) 431 0 R (Item.8) 432 0 R] +/Limits [(Item.3) (Item.8)] >> endobj -1354 0 obj << -/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aa86450161814b428d08b620188302fbc) 864 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41abb11196531beac7285326a5394db0329) 890 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac12235e2fee27efdcc78f2946f86e4ab) 880 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac806692e8a98e9baca1bca5f7d9df0cd) 863 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac8bc8e0a106154098f730ba596c43c50) 879 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41acb4252bc9a6eeee71738af951850379c) 883 0 R] -/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aa86450161814b428d08b620188302fbc) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41acb4252bc9a6eeee71738af951850379c)] +1086 0 obj << +/Names [(LIBUSE) 406 0 R (LIBUSE_BufferSystem) 433 0 R (LIBUSE_Calling_Sequence) 408 0 R (LIBUSE_InterfaceDescritpion) 407 0 R (OutputFormat) 467 0 R (OutputFormat_ExamplesArib) 503 0 R] +/Limits [(LIBUSE) (OutputFormat_ExamplesArib)] >> endobj -1355 0 obj << -/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ad8e91a23786bc032e507dfbd036f63c4) 573 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41adbb894fd8e900c4993f57ae88f8aee1a) 818 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae2ac2caa02bbffb8ace0fa87ad5ffc05) 896 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae36383b7f8b4f36072eb60a303c439c3) 878 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae6d7add4f73779b26c859900f710c34f) 868 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aea6be518456d203d68898efd236a6769) 895 0 R] -/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ad8e91a23786bc032e507dfbd036f63c4) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aea6be518456d203d68898efd236a6769)] +1087 0 obj << +/Names [(OutputFormat_ExamplesStereo) 472 0 R (OutputFormat_ExamplesSurround) 501 0 R (OutputFormat_OutputFormatChange) 470 0 R (OutputFormat_OutputFormatExample) 471 0 R (OutputFormat_OutputFormatObtaining) 468 0 R (aacdecoder__lib_8h) 413 0 R] +/Limits [(OutputFormat_ExamplesStereo) (aacdecoder__lib_8h)] >> endobj -1356 0 obj << -/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af16b1992a2a415168ab96228671ef337) 887 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af1e591927344a1a91c49b87efe3fb0b9) 816 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af61dc054946b313e1780cf604ca833c6) 886 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41afbf7d7d96fdf87cb5f7541348a597b48) 873 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41afdf896f1fefa0b962ef99c6cb2681027) 815 0 R (chapter*.1) 431 0 R] -/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af16b1992a2a415168ab96228671ef337) (chapter*.1)] +1088 0 obj << +/Names [(aacdecoder__lib_8h_a15da43e47179e3ca7b58d6b08620533e) 793 0 R (aacdecoder__lib_8h_a245a0e4176fb886d890a86627c55bb24) 416 0 R (aacdecoder__lib_8h_a388a21070208ec23217c4ff8f8d98754) 618 0 R (aacdecoder__lib_8h_a404dd0b9b627d3e9ab765dba98be3eec) 765 0 R (aacdecoder__lib_8h_a4666e424f482470e872827f66399454a) 668 0 R (aacdecoder__lib_8h_a6016435b8679d2793078b10ecaf3d05d) 415 0 R] +/Limits [(aacdecoder__lib_8h_a15da43e47179e3ca7b58d6b08620533e) (aacdecoder__lib_8h_a6016435b8679d2793078b10ecaf3d05d)] >> endobj -1357 0 obj << -/Names [(chapter.1) 2 0 R (chapter.2) 14 0 R (chapter.3) 30 0 R (chapter.4) 58 0 R (chapter.5) 74 0 R (chapter.6) 82 0 R] -/Limits [(chapter.1) (chapter.6)] +1089 0 obj << +/Names [(aacdecoder__lib_8h_a60aa42cb3ddc804b44ce61d877d0501e) 436 0 R (aacdecoder__lib_8h_a620b5a8c5d7ddd1b525aae1895963e16) 794 0 R (aacdecoder__lib_8h_a6d508fce68c364f5dabc9195e701ecf8) 435 0 R (aacdecoder__lib_8h_a8bc17277db0f7651065f62d66f92ed9f) 666 0 R (aacdecoder__lib_8h_a8f33403449b41e6a9deda6cb1e07d386) 764 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88) 752 0 R] +/Limits [(aacdecoder__lib_8h_a60aa42cb3ddc804b44ce61d877d0501e) (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88)] >> endobj -1358 0 obj << -/Names [(chapter.7) 90 0 R (chapter.8) 186 0 R (figure.2.1) 582 0 R (main_8cpp) 547 0 R (main_8cpp_a08a7e8a6abdc5cf6d2ac4e978e084d1a) 577 0 R (main_8cpp_a0ddf1224851353fc92bfbff6f499fa97) 669 0 R] -/Limits [(chapter.7) (main_8cpp_a0ddf1224851353fc92bfbff6f499fa97)] +1090 0 obj << +/Names [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a28dd853ab4339011893a933020ac5ab8) 756 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a4392100c924c0f20a706f55bc7ab3931) 760 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5cec20e1dd4ac89472ad60d3d0c8b5c1) 754 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a5e080429e4eaec068ba64c17152ee805) 755 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6056e5b76cc6a00078388445b1f1cfa1) 757 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a605a8fed5c5754dffc63775cc702aae7) 761 0 R] +/Limits [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a28dd853ab4339011893a933020ac5ab8) (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a605a8fed5c5754dffc63775cc702aae7)] >> endobj -1359 0 obj << -/Names [(main_8cpp_a2e18f5738841433eb8c7cd9357ff6ced) 1044 0 R (main_8cpp_a414bbb1046de58d0a2596be7b829448d) 1042 0 R (main_8cpp_a774499c04248e86e7f71ea689c3a7d19) 1050 0 R (main_8cpp_a7f18a204314393991d3da96356b2fd16) 1051 0 R (main_8cpp_a84b7343ea6e13f56b7a06559a7ef8b5a) 1047 0 R (main_8cpp_a8abd3ebb6e18277a43604c06f41e77a8) 1040 0 R] -/Limits [(main_8cpp_a2e18f5738841433eb8c7cd9357ff6ced) (main_8cpp_a8abd3ebb6e18277a43604c06f41e77a8)] +1091 0 obj << +/Names [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a65284784865f22d79700dc268f84e374) 758 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a6e3fa0b7d247c98f132edd55187f9c0c) 476 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aa1a5a121f8b03708d9fdcc06f6e882fb) 763 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88ab49a2169c22ea876c67154d6caa04568) 477 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88aee866642a3f335e7874a82939ad0c135) 753 0 R (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88af24d28dac8b5de47c00c578712d0591e) 759 0 R] +/Limits [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a65284784865f22d79700dc268f84e374) (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88af24d28dac8b5de47c00c578712d0591e)] >> endobj -1360 0 obj << -/Names [(main_8cpp_a904ab05aa185e4cbd7dfbfbf043caa6f) 1046 0 R (main_8cpp_a93d34427c5ada45032539b77c78ab2f6) 951 0 R (main_8cpp_aa5539bfe92dba402e77bcbbb497eee32) 1049 0 R (main_8cpp_aad1596787d6c1baa977de86d9a6f503c) 1052 0 R (main_8cpp_ab3bc9e46a841eaef9e74d55e0045eba8) 1041 0 R (main_8cpp_ab4a8982ff08a7f0ed68e15d851833d38) 1039 0 R] -/Limits [(main_8cpp_a904ab05aa185e4cbd7dfbfbf043caa6f) (main_8cpp_ab4a8982ff08a7f0ed68e15d851833d38)] +1092 0 obj << +/Names [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88af84565b78a6ae180e316dd612a0877a7) 762 0 R (aacdecoder__lib_8h_aa9ba2e98e71adc41124eaf8d6e5d6f2d) 669 0 R (aacdecoder__lib_8h_abc8ebc3d720699fe1d7c27eccd3da051) 667 0 R (aacdecoder__lib_8h_ac2c358d4ac0d7747cae32f9f45c20f71) 663 0 R (aacdecoder__lib_8h_ac8580fe563e79afe695d7b0b32ea0fed) 414 0 R (aacdecoder__lib_8h_acca8f4cf9757885d6c654de37a43072f) 437 0 R] +/Limits [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88af84565b78a6ae180e316dd612a0877a7) (aacdecoder__lib_8h_acca8f4cf9757885d6c654de37a43072f)] >> endobj -1361 0 obj << -/Names [(main_8cpp_ab78424394912809ef271c9587d264664) 1048 0 R (main_8cpp_ab7e6541570b5f939d29aa8bbcc1dde61) 1043 0 R (main_8cpp_ac7fa490a7117a01e48e05784a6da30fc) 1045 0 R (main_8cpp_aea681fdc68ba4b307e92a33c8a62ea08) 1038 0 R (page.1) 516 0 R (page.10) 658 0 R] -/Limits [(main_8cpp_ab78424394912809ef271c9587d264664) (page.10)] +1093 0 obj << +/Names [(aacdecoder__lib_8h_ae09502f250437ee519971ca3a95ac9e0) 665 0 R (aacdecoder__lib_8h_af59d78a4583ca81ccb2675dce592b812) 664 0 R (aacdecoder__lib_8h_afb42ea8892dd828264bd2f6147e0559f) 478 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41) 670 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a0357ce81d9d62cc106c752121fc9dc8a) 694 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a0bd193ee6a8c3151c5c6469f7e455a8e) 685 0 R] +/Limits [(aacdecoder__lib_8h_ae09502f250437ee519971ca3a95ac9e0) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a0bd193ee6a8c3151c5c6469f7e455a8e)] >> endobj -1362 0 obj << -/Names [(page.11) 665 0 R (page.12) 673 0 R (page.13) 679 0 R (page.14) 684 0 R (page.15) 693 0 R (page.16) 697 0 R] -/Limits [(page.11) (page.16)] +1094 0 obj << +/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a20cdc26726b22cb44143b4e440441e0f) 695 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a242d8bc09683a84b578546663dda36fa) 678 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a42c5cbc358ada7261ba3d609c33ec3a5) 690 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a45662b23139ca5807ed6fe3b8940dc40) 740 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4a877298c7076e5ef4dd848912ab1d48) 674 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4dbbe3b38d0dfb444fdc3a7adae2f807) 687 0 R] +/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a20cdc26726b22cb44143b4e440441e0f) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4dbbe3b38d0dfb444fdc3a7adae2f807)] >> endobj -1363 0 obj << -/Names [(page.17) 721 0 R (page.18) 742 0 R (page.19) 747 0 R (page.2) 524 0 R (page.20) 753 0 R (page.21) 761 0 R] -/Limits [(page.17) (page.21)] +1095 0 obj << +/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4dff2410394a6ffdf0f95ec66cbd0107) 680 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a516287ad9b64c230200191fdd60361e1) 744 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a5bc4e4af77d94fa08beb54def8f01f7f) 684 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a60690e0dbc450f62f83548fa484716ab) 689 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a65820f534b99b1529510720eeaafc861) 748 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a71440b5535812faf92a0fe99275dd5f0) 671 0 R] +/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a4dff2410394a6ffdf0f95ec66cbd0107) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a71440b5535812faf92a0fe99275dd5f0)] >> endobj -1364 0 obj << -/Names [(page.22) 791 0 R (page.23) 862 0 R (page.24) 935 0 R (page.25) 964 0 R (page.26) 972 0 R (page.27) 977 0 R] -/Limits [(page.22) (page.27)] +1096 0 obj << +/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a72f0dd3698012cdf8b20dd6f0b5de626) 749 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a77f722abc6c05f1abf1f51c0d11bf7ec) 743 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a7ea36c43c374f751f65be033057e3888) 679 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a856cdca9aa719c292b7c351cec03ae06) 747 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a8aa244ce1ae08763dde378161df0652f) 688 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a8bf90eccdaf6063e299f9415c8bd5d1a) 746 0 R] +/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a72f0dd3698012cdf8b20dd6f0b5de626) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a8bf90eccdaf6063e299f9415c8bd5d1a)] >> endobj -1365 0 obj << -/Names [(page.28) 981 0 R (page.29) 985 0 R (page.3) 538 0 R (page.30) 989 0 R (page.31) 995 0 R (page.32) 1003 0 R] -/Limits [(page.28) (page.32)] +1097 0 obj << +/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a95dafb71a0623fbeb0715e46b7a189c7) 682 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a97113255d01bdf3cc7104dd411f40949) 683 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aa14848134610eea96115c59a6b944921) 697 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aa86450161814b428d08b620188302fbc) 677 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41abb11196531beac7285326a5394db0329) 745 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac12235e2fee27efdcc78f2946f86e4ab) 693 0 R] +/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a95dafb71a0623fbeb0715e46b7a189c7) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac12235e2fee27efdcc78f2946f86e4ab)] >> endobj -1366 0 obj << -/Names [(page.33) 1026 0 R (page.34) 1057 0 R (page.35) 1061 0 R (page.36) 1065 0 R (page.37) 1113 0 R (page.38) 1190 0 R] -/Limits [(page.33) (page.38)] +1098 0 obj << +/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac806692e8a98e9baca1bca5f7d9df0cd) 676 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac8bc8e0a106154098f730ba596c43c50) 692 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41acb4252bc9a6eeee71738af951850379c) 696 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ad8e91a23786bc032e507dfbd036f63c4) 434 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41adbb894fd8e900c4993f57ae88f8aee1a) 675 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae2ac2caa02bbffb8ace0fa87ad5ffc05) 751 0 R] +/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ac806692e8a98e9baca1bca5f7d9df0cd) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae2ac2caa02bbffb8ace0fa87ad5ffc05)] >> endobj -1367 0 obj << -/Names [(page.39) 1267 0 R (page.4) 564 0 R (page.40) 1307 0 R (page.5) 581 0 R (page.6) 591 0 R (page.7) 606 0 R] -/Limits [(page.39) (page.7)] +1099 0 obj << +/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae36383b7f8b4f36072eb60a303c439c3) 691 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae6d7add4f73779b26c859900f710c34f) 681 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41aea6be518456d203d68898efd236a6769) 750 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af16b1992a2a415168ab96228671ef337) 742 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af1e591927344a1a91c49b87efe3fb0b9) 673 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af61dc054946b313e1780cf604ca833c6) 741 0 R] +/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41ae36383b7f8b4f36072eb60a303c439c3) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41af61dc054946b313e1780cf604ca833c6)] >> endobj -1368 0 obj << -/Names [(page.8) 639 0 R (page.9) 653 0 R (section*.10) 1029 0 R (section*.2) 722 0 R (section*.3) 792 0 R (section*.4) 794 0 R] -/Limits [(page.8) (section*.4)] +1100 0 obj << +/Names [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41afbf7d7d96fdf87cb5f7541348a597b48) 686 0 R (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41afdf896f1fefa0b962ef99c6cb2681027) 672 0 R (chapter*.1) 328 0 R (chapter.1) 2 0 R (chapter.2) 14 0 R (chapter.3) 30 0 R] +/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41afbf7d7d96fdf87cb5f7541348a597b48) (chapter.3)] >> endobj -1369 0 obj << -/Names [(section*.5) 795 0 R (section*.6) 796 0 R (section*.7) 936 0 R (section*.8) 1027 0 R (section*.9) 1028 0 R (section.1.1) 6 0 R] -/Limits [(section*.5) (section.1.1)] +1101 0 obj << +/Names [(chapter.4) 58 0 R (chapter.5) 66 0 R (chapter.6) 74 0 R (chapter.7) 174 0 R (figure.2.1) 442 0 R (page.1) 386 0 R] +/Limits [(chapter.4) (page.1)] >> endobj -1370 0 obj << -/Names [(section.1.2) 10 0 R (section.2.1) 18 0 R (section.2.2) 22 0 R (section.2.3) 26 0 R (section.3.1) 34 0 R (section.3.2) 38 0 R] -/Limits [(section.1.2) (section.3.2)] +1102 0 obj << +/Names [(page.10) 518 0 R (page.11) 524 0 R (page.12) 528 0 R (page.13) 534 0 R (page.14) 539 0 R (page.15) 564 0 R] +/Limits [(page.10) (page.15)] >> endobj -1371 0 obj << -/Names [(section.3.3) 42 0 R (section.4.1) 62 0 R (section.5.1) 78 0 R (section.6.1) 86 0 R (section.7.1) 94 0 R (section.8.1) 190 0 R] -/Limits [(section.3.3) (section.8.1)] +1103 0 obj << +/Names [(page.16) 586 0 R (page.17) 591 0 R (page.18) 596 0 R (page.19) 605 0 R (page.2) 394 0 R (page.20) 660 0 R] +/Limits [(page.16) (page.20)] >> endobj -1372 0 obj << -/Names [(section.8.2) 298 0 R (structCStreamInfo) 614 0 R (structCStreamInfo_a1f2571c63e5f1db6e4d1537e37310568) 737 0 R (structCStreamInfo_a239e02305ca579866e527f4a512b1fdc) 733 0 R (structCStreamInfo_a24cea6707207c95269162847beaa0b7d) 726 0 R (structCStreamInfo_a28c5ba6424b0975f7074b8e1e217a7a3) 731 0 R] -/Limits [(section.8.2) (structCStreamInfo_a28c5ba6424b0975f7074b8e1e217a7a3)] +1104 0 obj << +/Names [(page.21) 737 0 R (page.22) 790 0 R (page.23) 800 0 R (page.24) 806 0 R (page.25) 815 0 R (page.26) 822 0 R] +/Limits [(page.21) (page.26)] >> endobj -1373 0 obj << -/Names [(structCStreamInfo_a36fa897b242eebb936d99010a8c580be) 646 0 R (structCStreamInfo_a47fa73a2c1269f30d1439e90c7652f49) 724 0 R (structCStreamInfo_a4d64654dd9d366c5ea41a89d1972534d) 728 0 R (structCStreamInfo_a5d5f38d670deaa5abf887c3b580df1cd) 723 0 R (structCStreamInfo_a6e431a6f8aeca62ffb7741b3ec068f7b) 729 0 R (structCStreamInfo_a73484dc9e2406a34c5dddf16b3cf6d0c) 732 0 R] -/Limits [(structCStreamInfo_a36fa897b242eebb936d99010a8c580be) (structCStreamInfo_a73484dc9e2406a34c5dddf16b3cf6d0c)] +1105 0 obj << +/Names [(page.27) 828 0 R (page.28) 832 0 R (page.29) 838 0 R (page.3) 405 0 R (page.30) 842 0 R (page.31) 890 0 R] +/Limits [(page.27) (page.31)] >> endobj -1374 0 obj << -/Names [(structCStreamInfo_a7362ae2c2b9bd37a103e575c271f3120) 738 0 R (structCStreamInfo_a8a9699c8f4e00893127a7e49161bbd0d) 736 0 R (structCStreamInfo_a8ffd4db9d615e545a5e8cb51990965fc) 730 0 R (structCStreamInfo_aa35e5be20f99be29ce12f9f41bf4d50e) 645 0 R (structCStreamInfo_aae39329c51fe206a8aee33daba2fe1db) 644 0 R (structCStreamInfo_aaf23a4756ee1a1b36f0b7d104d3f9882) 725 0 R] -/Limits [(structCStreamInfo_a7362ae2c2b9bd37a103e575c271f3120) (structCStreamInfo_aaf23a4756ee1a1b36f0b7d104d3f9882)] +1106 0 obj << +/Names [(page.32) 967 0 R (page.33) 1044 0 R (page.34) 1051 0 R (page.4) 426 0 R (page.5) 441 0 R (page.6) 451 0 R] +/Limits [(page.32) (page.6)] >> endobj -1375 0 obj << -/Names [(structCStreamInfo_ab28c53f72c8c1a9c4adf5d7e84bcc78b) 734 0 R (structCStreamInfo_ac1388034d207ca6075fc0883d39eea1a) 615 0 R (structCStreamInfo_ae8a7599cb585fdb0ff5446b0a6abb9c8) 735 0 R (structCStreamInfo_af5c2c8b545a6cc3e5aac82e25a2edea0) 727 0 R (subsection.3.3.1) 46 0 R (subsection.3.3.2) 50 0 R] -/Limits [(structCStreamInfo_ab28c53f72c8c1a9c4adf5d7e84bcc78b) (subsection.3.3.2)] +1107 0 obj << +/Names [(page.7) 466 0 R (page.8) 499 0 R (page.9) 513 0 R (section*.2) 565 0 R (section*.3) 606 0 R (section*.4) 608 0 R] +/Limits [(page.7) (section*.4)] >> endobj -1376 0 obj << -/Names [(subsection.3.3.3) 54 0 R (subsection.4.1.1) 66 0 R (subsection.4.1.2) 70 0 R (subsection.7.1.1) 98 0 R (subsection.7.1.2) 102 0 R (subsection.8.1.1) 194 0 R] -/Limits [(subsection.3.3.3) (subsection.8.1.1)] +1108 0 obj << +/Names [(section*.5) 661 0 R (section*.6) 662 0 R (section*.7) 738 0 R (section.1.1) 6 0 R (section.1.2) 10 0 R (section.2.1) 18 0 R] +/Limits [(section*.5) (section.2.1)] >> endobj -1377 0 obj << -/Names [(subsection.8.1.2) 198 0 R (subsection.8.1.3) 230 0 R (subsection.8.1.4) 238 0 R (subsection.8.1.5) 250 0 R (subsection.8.2.1) 302 0 R (subsection.8.2.2) 306 0 R] -/Limits [(subsection.8.1.2) (subsection.8.2.2)] +1109 0 obj << +/Names [(section.2.2) 22 0 R (section.2.3) 26 0 R (section.3.1) 34 0 R (section.3.2) 38 0 R (section.3.3) 42 0 R (section.4.1) 62 0 R] +/Limits [(section.2.2) (section.4.1)] >> endobj -1378 0 obj << -/Names [(subsection.8.2.3) 334 0 R (subsection.8.2.4) 342 0 R (subsubsection.7.1.2.1) 106 0 R (subsubsection.7.1.2.10) 142 0 R (subsubsection.7.1.2.11) 146 0 R (subsubsection.7.1.2.12) 150 0 R] -/Limits [(subsection.8.2.3) (subsubsection.7.1.2.12)] +1110 0 obj << +/Names [(section.5.1) 70 0 R (section.6.1) 78 0 R (section.7.1) 178 0 R (structCStreamInfo) 474 0 R (structCStreamInfo_a1f2571c63e5f1db6e4d1537e37310568) 581 0 R (structCStreamInfo_a239e02305ca579866e527f4a512b1fdc) 577 0 R] +/Limits [(section.5.1) (structCStreamInfo_a239e02305ca579866e527f4a512b1fdc)] >> endobj -1379 0 obj << -/Names [(subsubsection.7.1.2.13) 154 0 R (subsubsection.7.1.2.14) 158 0 R (subsubsection.7.1.2.15) 162 0 R (subsubsection.7.1.2.16) 166 0 R (subsubsection.7.1.2.17) 170 0 R (subsubsection.7.1.2.18) 174 0 R] -/Limits [(subsubsection.7.1.2.13) (subsubsection.7.1.2.18)] +1111 0 obj << +/Names [(structCStreamInfo_a24cea6707207c95269162847beaa0b7d) 569 0 R (structCStreamInfo_a28c5ba6424b0975f7074b8e1e217a7a3) 575 0 R (structCStreamInfo_a36fa897b242eebb936d99010a8c580be) 506 0 R (structCStreamInfo_a47fa73a2c1269f30d1439e90c7652f49) 567 0 R (structCStreamInfo_a4d64654dd9d366c5ea41a89d1972534d) 571 0 R (structCStreamInfo_a5d5f38d670deaa5abf887c3b580df1cd) 566 0 R] +/Limits [(structCStreamInfo_a24cea6707207c95269162847beaa0b7d) (structCStreamInfo_a5d5f38d670deaa5abf887c3b580df1cd)] >> endobj -1380 0 obj << -/Names [(subsubsection.7.1.2.19) 178 0 R (subsubsection.7.1.2.2) 110 0 R (subsubsection.7.1.2.20) 182 0 R (subsubsection.7.1.2.3) 114 0 R (subsubsection.7.1.2.4) 118 0 R (subsubsection.7.1.2.5) 122 0 R] -/Limits [(subsubsection.7.1.2.19) (subsubsection.7.1.2.5)] +1112 0 obj << +/Names [(structCStreamInfo_a6e431a6f8aeca62ffb7741b3ec068f7b) 572 0 R (structCStreamInfo_a73484dc9e2406a34c5dddf16b3cf6d0c) 576 0 R (structCStreamInfo_a7362ae2c2b9bd37a103e575c271f3120) 582 0 R (structCStreamInfo_a8a9699c8f4e00893127a7e49161bbd0d) 580 0 R (structCStreamInfo_a8ffd4db9d615e545a5e8cb51990965fc) 574 0 R (structCStreamInfo_aa35e5be20f99be29ce12f9f41bf4d50e) 505 0 R] +/Limits [(structCStreamInfo_a6e431a6f8aeca62ffb7741b3ec068f7b) (structCStreamInfo_aa35e5be20f99be29ce12f9f41bf4d50e)] >> endobj -1381 0 obj << -/Names [(subsubsection.7.1.2.6) 126 0 R (subsubsection.7.1.2.7) 130 0 R (subsubsection.7.1.2.8) 134 0 R (subsubsection.7.1.2.9) 138 0 R (subsubsection.8.1.2.1) 202 0 R (subsubsection.8.1.2.2) 206 0 R] -/Limits [(subsubsection.7.1.2.6) (subsubsection.8.1.2.2)] +1113 0 obj << +/Names [(structCStreamInfo_aae39329c51fe206a8aee33daba2fe1db) 504 0 R (structCStreamInfo_aaf23a4756ee1a1b36f0b7d104d3f9882) 568 0 R (structCStreamInfo_ab28c53f72c8c1a9c4adf5d7e84bcc78b) 578 0 R (structCStreamInfo_ac1388034d207ca6075fc0883d39eea1a) 475 0 R (structCStreamInfo_ae8a7599cb585fdb0ff5446b0a6abb9c8) 579 0 R (structCStreamInfo_af5c2c8b545a6cc3e5aac82e25a2edea0) 570 0 R] +/Limits [(structCStreamInfo_aae39329c51fe206a8aee33daba2fe1db) (structCStreamInfo_af5c2c8b545a6cc3e5aac82e25a2edea0)] >> endobj -1382 0 obj << -/Names [(subsubsection.8.1.2.3) 210 0 R (subsubsection.8.1.2.4) 214 0 R (subsubsection.8.1.2.5) 218 0 R (subsubsection.8.1.2.6) 222 0 R (subsubsection.8.1.2.7) 226 0 R (subsubsection.8.1.3.1) 234 0 R] -/Limits [(subsubsection.8.1.2.3) (subsubsection.8.1.3.1)] +1114 0 obj << +/Names [(structCStreamInfo_afa21b3685d93a877cab4aa884524cb67) 573 0 R (subsection.3.3.1) 46 0 R (subsection.3.3.2) 50 0 R (subsection.3.3.3) 54 0 R (subsection.6.1.1) 82 0 R (subsection.6.1.2) 86 0 R] +/Limits [(structCStreamInfo_afa21b3685d93a877cab4aa884524cb67) (subsection.6.1.2)] >> endobj -1383 0 obj << -/Names [(subsubsection.8.1.4.1) 242 0 R (subsubsection.8.1.4.2) 246 0 R (subsubsection.8.1.5.1) 254 0 R (subsubsection.8.1.5.10) 290 0 R (subsubsection.8.1.5.11) 294 0 R (subsubsection.8.1.5.2) 258 0 R] -/Limits [(subsubsection.8.1.4.1) (subsubsection.8.1.5.2)] +1115 0 obj << +/Names [(subsection.7.1.1) 182 0 R (subsection.7.1.2) 186 0 R (subsection.7.1.3) 218 0 R (subsection.7.1.4) 226 0 R (subsection.7.1.5) 238 0 R (subsubsection.6.1.2.1) 90 0 R] +/Limits [(subsection.7.1.1) (subsubsection.6.1.2.1)] >> endobj -1384 0 obj << -/Names [(subsubsection.8.1.5.3) 262 0 R (subsubsection.8.1.5.4) 266 0 R (subsubsection.8.1.5.5) 270 0 R (subsubsection.8.1.5.6) 274 0 R (subsubsection.8.1.5.7) 278 0 R (subsubsection.8.1.5.8) 282 0 R] -/Limits [(subsubsection.8.1.5.3) (subsubsection.8.1.5.8)] +1116 0 obj << +/Names [(subsubsection.6.1.2.10) 126 0 R (subsubsection.6.1.2.11) 130 0 R (subsubsection.6.1.2.12) 134 0 R (subsubsection.6.1.2.13) 138 0 R (subsubsection.6.1.2.14) 142 0 R (subsubsection.6.1.2.15) 146 0 R] +/Limits [(subsubsection.6.1.2.10) (subsubsection.6.1.2.15)] >> endobj -1385 0 obj << -/Names [(subsubsection.8.1.5.9) 286 0 R (subsubsection.8.2.2.1) 310 0 R (subsubsection.8.2.2.2) 314 0 R (subsubsection.8.2.2.3) 318 0 R (subsubsection.8.2.2.4) 322 0 R (subsubsection.8.2.2.5) 326 0 R] -/Limits [(subsubsection.8.1.5.9) (subsubsection.8.2.2.5)] +1117 0 obj << +/Names [(subsubsection.6.1.2.16) 150 0 R (subsubsection.6.1.2.17) 154 0 R (subsubsection.6.1.2.18) 158 0 R (subsubsection.6.1.2.19) 162 0 R (subsubsection.6.1.2.2) 94 0 R (subsubsection.6.1.2.20) 166 0 R] +/Limits [(subsubsection.6.1.2.16) (subsubsection.6.1.2.20)] >> endobj -1386 0 obj << -/Names [(subsubsection.8.2.2.6) 330 0 R (subsubsection.8.2.3.1) 338 0 R (subsubsection.8.2.4.1) 346 0 R (subsubsection.8.2.4.10) 382 0 R (subsubsection.8.2.4.11) 386 0 R (subsubsection.8.2.4.2) 350 0 R] -/Limits [(subsubsection.8.2.2.6) (subsubsection.8.2.4.2)] +1118 0 obj << +/Names [(subsubsection.6.1.2.21) 170 0 R (subsubsection.6.1.2.3) 98 0 R (subsubsection.6.1.2.4) 102 0 R (subsubsection.6.1.2.5) 106 0 R (subsubsection.6.1.2.6) 110 0 R (subsubsection.6.1.2.7) 114 0 R] +/Limits [(subsubsection.6.1.2.21) (subsubsection.6.1.2.7)] >> endobj -1387 0 obj << -/Names [(subsubsection.8.2.4.3) 354 0 R (subsubsection.8.2.4.4) 358 0 R (subsubsection.8.2.4.5) 362 0 R (subsubsection.8.2.4.6) 366 0 R (subsubsection.8.2.4.7) 370 0 R (subsubsection.8.2.4.8) 374 0 R] -/Limits [(subsubsection.8.2.4.3) (subsubsection.8.2.4.8)] +1119 0 obj << +/Names [(subsubsection.6.1.2.8) 118 0 R (subsubsection.6.1.2.9) 122 0 R (subsubsection.7.1.2.1) 190 0 R (subsubsection.7.1.2.2) 194 0 R (subsubsection.7.1.2.3) 198 0 R (subsubsection.7.1.2.4) 202 0 R] +/Limits [(subsubsection.6.1.2.8) (subsubsection.7.1.2.4)] >> endobj -1388 0 obj << -/Names [(subsubsection.8.2.4.9) 378 0 R] -/Limits [(subsubsection.8.2.4.9) (subsubsection.8.2.4.9)] +1120 0 obj << +/Names [(subsubsection.7.1.2.5) 206 0 R (subsubsection.7.1.2.6) 210 0 R (subsubsection.7.1.2.7) 214 0 R (subsubsection.7.1.3.1) 222 0 R (subsubsection.7.1.4.1) 230 0 R (subsubsection.7.1.4.2) 234 0 R] +/Limits [(subsubsection.7.1.2.5) (subsubsection.7.1.4.2)] >> endobj -1389 0 obj << -/Kids [1340 0 R 1341 0 R 1342 0 R 1343 0 R 1344 0 R 1345 0 R] -/Limits [(CommandLineUsage) (aacdecoder__lib_8h_a620b5a8c5d7ddd1b525aae1895963e16)] +1121 0 obj << +/Names [(subsubsection.7.1.5.1) 242 0 R (subsubsection.7.1.5.10) 278 0 R (subsubsection.7.1.5.11) 282 0 R (subsubsection.7.1.5.2) 246 0 R (subsubsection.7.1.5.3) 250 0 R (subsubsection.7.1.5.4) 254 0 R] +/Limits [(subsubsection.7.1.5.1) (subsubsection.7.1.5.4)] >> endobj -1390 0 obj << -/Kids [1346 0 R 1347 0 R 1348 0 R 1349 0 R 1350 0 R 1351 0 R] -/Limits [(aacdecoder__lib_8h_a6d508fce68c364f5dabc9195e701ecf8) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a5bc4e4af77d94fa08beb54def8f01f7f)] +1122 0 obj << +/Names [(subsubsection.7.1.5.5) 258 0 R (subsubsection.7.1.5.6) 262 0 R (subsubsection.7.1.5.7) 266 0 R (subsubsection.7.1.5.8) 270 0 R (subsubsection.7.1.5.9) 274 0 R] +/Limits [(subsubsection.7.1.5.5) (subsubsection.7.1.5.9)] >> endobj -1391 0 obj << -/Kids [1352 0 R 1353 0 R 1354 0 R 1355 0 R 1356 0 R 1357 0 R] -/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a60690e0dbc450f62f83548fa484716ab) (chapter.6)] +1123 0 obj << +/Kids [1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R] +/Limits [(Doc-Start) (aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88)] >> endobj -1392 0 obj << -/Kids [1358 0 R 1359 0 R 1360 0 R 1361 0 R 1362 0 R 1363 0 R] -/Limits [(chapter.7) (page.21)] +1124 0 obj << +/Kids [1090 0 R 1091 0 R 1092 0 R 1093 0 R 1094 0 R 1095 0 R] +/Limits [(aacdecoder__lib_8h_aa34599717f4ed74b0c954cd57edc9f88a28dd853ab4339011893a933020ac5ab8) (aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a71440b5535812faf92a0fe99275dd5f0)] >> endobj -1393 0 obj << -/Kids [1364 0 R 1365 0 R 1366 0 R 1367 0 R 1368 0 R 1369 0 R] -/Limits [(page.22) (section.1.1)] +1125 0 obj << +/Kids [1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R] +/Limits [(aacdecoder__lib_8h_afbc7e8b4f1613dfd8cb91b681eeb9d41a72f0dd3698012cdf8b20dd6f0b5de626) (page.1)] >> endobj -1394 0 obj << -/Kids [1370 0 R 1371 0 R 1372 0 R 1373 0 R 1374 0 R 1375 0 R] -/Limits [(section.1.2) (subsection.3.3.2)] +1126 0 obj << +/Kids [1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R] +/Limits [(page.10) (section*.4)] >> endobj -1395 0 obj << -/Kids [1376 0 R 1377 0 R 1378 0 R 1379 0 R 1380 0 R 1381 0 R] -/Limits [(subsection.3.3.3) (subsubsection.8.1.2.2)] +1127 0 obj << +/Kids [1108 0 R 1109 0 R 1110 0 R 1111 0 R 1112 0 R 1113 0 R] +/Limits [(section*.5) (structCStreamInfo_af5c2c8b545a6cc3e5aac82e25a2edea0)] >> endobj -1396 0 obj << -/Kids [1382 0 R 1383 0 R 1384 0 R 1385 0 R 1386 0 R 1387 0 R] -/Limits [(subsubsection.8.1.2.3) (subsubsection.8.2.4.8)] +1128 0 obj << +/Kids [1114 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R] +/Limits [(structCStreamInfo_afa21b3685d93a877cab4aa884524cb67) (subsubsection.7.1.2.4)] >> endobj -1397 0 obj << -/Kids [1388 0 R] -/Limits [(subsubsection.8.2.4.9) (subsubsection.8.2.4.9)] +1129 0 obj << +/Kids [1120 0 R 1121 0 R 1122 0 R] +/Limits [(subsubsection.7.1.2.5) (subsubsection.7.1.5.9)] >> endobj -1398 0 obj << -/Kids [1389 0 R 1390 0 R 1391 0 R 1392 0 R 1393 0 R 1394 0 R] -/Limits [(CommandLineUsage) (subsection.3.3.2)] +1130 0 obj << +/Kids [1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R] +/Limits [(Doc-Start) (subsubsection.7.1.2.4)] >> endobj -1399 0 obj << -/Kids [1395 0 R 1396 0 R 1397 0 R] -/Limits [(subsection.3.3.3) (subsubsection.8.2.4.9)] +1131 0 obj << +/Kids [1129 0 R] +/Limits [(subsubsection.7.1.2.5) (subsubsection.7.1.5.9)] >> endobj -1400 0 obj << -/Kids [1398 0 R 1399 0 R] -/Limits [(CommandLineUsage) (subsubsection.8.2.4.9)] +1132 0 obj << +/Kids [1130 0 R 1131 0 R] +/Limits [(Doc-Start) (subsubsection.7.1.5.9)] >> endobj -1401 0 obj << -/Dests 1400 0 R +1133 0 obj << +/Dests 1132 0 R >> endobj -1402 0 obj << +1134 0 obj << /Type /Catalog -/Pages 1338 0 R -/Outlines 1339 0 R -/Names 1401 0 R +/Pages 1082 0 R +/Outlines 1083 0 R +/Names 1133 0 R /PageMode/UseOutlines/PageLabels<</Nums[0<</S/D>>2<</S/r>>6<</S/D>>]>> -/OpenAction 389 0 R +/OpenAction 285 0 R >> endobj -1403 0 obj << +1135 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.10)/Keywords() -/CreationDate (D:20120927161848+02'00') -/ModDate (D:20120927161848+02'00') +/CreationDate (D:20130815104144+02'00') +/ModDate (D:20130815104144+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0) >> endobj xref -0 1404 +0 1136 0000000000 65535 f 0000000015 00000 n -0000183153 00000 n -0000506334 00000 n +0000173981 00000 n +0000461564 00000 n 0000000060 00000 n 0000000146 00000 n -0000183322 00000 n -0000506264 00000 n +0000174150 00000 n +0000461494 00000 n 0000000193 00000 n 0000000244 00000 n -0000183439 00000 n -0000506193 00000 n +0000174267 00000 n +0000461423 00000 n 0000000291 00000 n 0000000391 00000 n -0000187370 00000 n -0000506068 00000 n +0000177856 00000 n +0000461298 00000 n 0000000437 00000 n 0000000532 00000 n -0000187540 00000 n -0000505994 00000 n +0000178026 00000 n +0000461224 00000 n 0000000580 00000 n 0000000685 00000 n -0000187657 00000 n -0000505907 00000 n +0000178143 00000 n +0000461137 00000 n 0000000733 00000 n 0000000843 00000 n -0000193762 00000 n -0000505833 00000 n +0000183369 00000 n +0000461063 00000 n 0000000891 00000 n 0000000986 00000 n -0000222468 00000 n -0000505707 00000 n +0000212075 00000 n +0000460937 00000 n 0000001032 00000 n 0000001165 00000 n -0000222638 00000 n -0000505633 00000 n +0000212245 00000 n +0000460863 00000 n 0000001213 00000 n 0000001434 00000 n -0000222756 00000 n -0000505546 00000 n +0000212363 00000 n +0000460776 00000 n 0000001482 00000 n 0000001681 00000 n -0000222874 00000 n -0000505435 00000 n +0000212481 00000 n +0000460665 00000 n 0000001729 00000 n 0000001882 00000 n -0000228900 00000 n -0000505361 00000 n +0000218507 00000 n +0000460591 00000 n 0000001935 00000 n 0000001992 00000 n -0000229018 00000 n -0000505274 00000 n +0000218625 00000 n +0000460504 00000 n 0000002045 00000 n 0000002135 00000 n -0000231747 00000 n -0000505200 00000 n +0000221354 00000 n +0000460430 00000 n 0000002188 00000 n 0000002324 00000 n -0000234298 00000 n -0000505074 00000 n +0000222987 00000 n +0000460304 00000 n 0000002370 00000 n -0000002490 00000 n -0000234473 00000 n -0000504976 00000 n -0000002538 00000 n -0000002610 00000 n -0000234586 00000 n -0000504902 00000 n -0000002663 00000 n -0000002788 00000 n -0000234699 00000 n -0000504828 00000 n -0000002841 00000 n -0000002961 00000 n -0000237270 00000 n -0000504702 00000 n -0000003007 00000 n -0000003092 00000 n -0000237326 00000 n -0000504641 00000 n -0000003140 00000 n -0000003220 00000 n -0000239491 00000 n -0000504515 00000 n -0000003266 00000 n -0000003346 00000 n -0000239547 00000 n -0000504454 00000 n -0000003394 00000 n -0000003469 00000 n -0000245207 00000 n -0000504327 00000 n -0000003515 00000 n -0000003640 00000 n -0000245320 00000 n -0000504228 00000 n -0000003688 00000 n -0000003861 00000 n -0000245433 00000 n -0000504152 00000 n -0000003914 00000 n -0000004045 00000 n -0000246770 00000 n -0000504035 00000 n +0000002455 00000 n +0000223043 00000 n +0000460243 00000 n +0000002503 00000 n +0000002583 00000 n +0000224573 00000 n +0000460117 00000 n +0000002629 00000 n +0000002709 00000 n +0000224629 00000 n +0000460056 00000 n +0000002757 00000 n +0000002832 00000 n +0000230489 00000 n +0000459929 00000 n +0000002878 00000 n +0000003003 00000 n +0000230602 00000 n +0000459831 00000 n +0000003051 00000 n +0000003224 00000 n +0000230715 00000 n +0000459757 00000 n +0000003277 00000 n +0000003407 00000 n +0000232141 00000 n +0000459644 00000 n +0000003460 00000 n +0000003618 00000 n +0000232254 00000 n +0000459570 00000 n +0000003676 00000 n +0000003773 00000 n +0000232372 00000 n +0000459483 00000 n +0000003831 00000 n +0000003923 00000 n +0000232490 00000 n +0000459394 00000 n +0000003981 00000 n 0000004099 00000 n -0000004258 00000 n -0000246884 00000 n -0000503956 00000 n -0000004317 00000 n -0000004410 00000 n -0000247003 00000 n -0000503863 00000 n -0000004469 00000 n -0000004587 00000 n -0000247122 00000 n -0000503770 00000 n -0000004646 00000 n -0000004689 00000 n -0000247241 00000 n -0000503677 00000 n -0000004748 00000 n -0000004811 00000 n -0000247360 00000 n -0000503584 00000 n -0000004870 00000 n -0000004963 00000 n -0000247479 00000 n -0000503491 00000 n -0000005022 00000 n -0000005090 00000 n -0000247598 00000 n -0000503398 00000 n -0000005149 00000 n -0000005207 00000 n -0000247717 00000 n -0000503305 00000 n -0000005266 00000 n -0000005369 00000 n -0000247836 00000 n -0000503212 00000 n -0000005428 00000 n -0000005481 00000 n -0000247955 00000 n -0000503119 00000 n -0000005541 00000 n -0000005614 00000 n -0000249696 00000 n -0000503026 00000 n -0000005674 00000 n -0000005787 00000 n -0000249810 00000 n -0000502933 00000 n -0000005847 00000 n -0000005930 00000 n -0000249929 00000 n -0000502840 00000 n -0000005990 00000 n -0000006073 00000 n -0000250043 00000 n -0000502747 00000 n -0000006133 00000 n -0000006251 00000 n -0000250157 00000 n -0000502654 00000 n -0000006311 00000 n -0000006434 00000 n -0000250270 00000 n -0000502561 00000 n -0000006494 00000 n -0000006587 00000 n -0000250389 00000 n -0000502468 00000 n -0000006647 00000 n -0000006750 00000 n -0000250508 00000 n -0000502375 00000 n -0000006810 00000 n -0000006898 00000 n -0000250627 00000 n -0000502282 00000 n -0000006958 00000 n -0000007021 00000 n -0000251708 00000 n -0000502203 00000 n +0000232608 00000 n +0000459303 00000 n +0000004158 00000 n +0000004201 00000 n +0000232727 00000 n +0000459211 00000 n +0000004260 00000 n +0000004323 00000 n +0000232846 00000 n +0000459119 00000 n +0000004382 00000 n +0000004475 00000 n +0000232964 00000 n +0000459027 00000 n +0000004534 00000 n +0000004602 00000 n +0000233083 00000 n +0000458935 00000 n +0000004661 00000 n +0000004719 00000 n +0000233202 00000 n +0000458843 00000 n +0000004778 00000 n +0000004881 00000 n +0000233319 00000 n +0000458751 00000 n +0000004941 00000 n +0000004994 00000 n +0000235086 00000 n +0000458659 00000 n +0000005054 00000 n +0000005127 00000 n +0000235205 00000 n +0000458567 00000 n +0000005187 00000 n +0000005300 00000 n +0000235324 00000 n +0000458475 00000 n +0000005360 00000 n +0000005443 00000 n +0000235442 00000 n +0000458383 00000 n +0000005503 00000 n +0000005586 00000 n +0000235561 00000 n +0000458291 00000 n +0000005646 00000 n +0000005764 00000 n +0000235680 00000 n +0000458199 00000 n +0000005824 00000 n +0000005947 00000 n +0000235799 00000 n +0000458107 00000 n +0000006007 00000 n +0000006100 00000 n +0000235918 00000 n +0000458015 00000 n +0000006160 00000 n +0000006263 00000 n +0000236037 00000 n +0000457923 00000 n +0000006323 00000 n +0000006411 00000 n +0000236156 00000 n +0000457831 00000 n +0000006471 00000 n +0000006534 00000 n +0000237218 00000 n +0000457753 00000 n +0000006594 00000 n +0000006672 00000 n +0000243193 00000 n +0000457635 00000 n +0000006719 00000 n +0000006840 00000 n +0000243307 00000 n +0000457531 00000 n +0000006889 00000 n 0000007081 00000 n -0000007159 00000 n -0000256953 00000 n -0000502085 00000 n -0000007206 00000 n -0000007327 00000 n -0000257067 00000 n -0000501967 00000 n -0000007376 00000 n -0000007568 00000 n -0000289847 00000 n -0000501888 00000 n -0000007622 00000 n -0000007753 00000 n -0000289904 00000 n -0000501756 00000 n -0000007807 00000 n -0000007938 00000 n -0000290018 00000 n -0000501677 00000 n -0000007997 00000 n -0000008098 00000 n -0000290135 00000 n -0000501584 00000 n -0000008157 00000 n -0000008258 00000 n -0000290254 00000 n -0000501491 00000 n -0000008317 00000 n -0000008408 00000 n -0000290367 00000 n -0000501398 00000 n -0000008467 00000 n -0000008553 00000 n -0000290485 00000 n -0000501305 00000 n -0000008612 00000 n -0000008721 00000 n -0000293228 00000 n -0000501212 00000 n -0000008780 00000 n -0000008879 00000 n -0000293347 00000 n -0000501133 00000 n -0000008938 00000 n -0000009047 00000 n -0000293404 00000 n -0000501001 00000 n -0000009101 00000 n -0000009237 00000 n -0000293518 00000 n -0000500936 00000 n -0000009296 00000 n -0000009412 00000 n -0000293575 00000 n -0000500804 00000 n -0000009466 00000 n -0000009650 00000 n -0000293689 00000 n -0000500725 00000 n -0000009709 00000 n -0000009828 00000 n -0000298546 00000 n -0000500646 00000 n -0000009887 00000 n -0000009978 00000 n -0000302539 00000 n -0000500527 00000 n -0000010032 00000 n -0000010173 00000 n -0000302653 00000 n -0000500448 00000 n -0000010232 00000 n -0000010368 00000 n -0000304426 00000 n -0000500355 00000 n -0000010427 00000 n -0000010568 00000 n -0000304540 00000 n -0000500262 00000 n -0000010627 00000 n -0000010738 00000 n -0000304653 00000 n -0000500169 00000 n -0000010797 00000 n -0000010928 00000 n -0000307032 00000 n -0000500076 00000 n -0000010987 00000 n -0000011128 00000 n -0000307146 00000 n -0000499983 00000 n -0000011187 00000 n -0000011293 00000 n -0000309116 00000 n -0000499890 00000 n -0000011352 00000 n -0000011498 00000 n -0000309229 00000 n -0000499797 00000 n -0000011557 00000 n -0000011693 00000 n -0000309342 00000 n -0000499704 00000 n -0000011752 00000 n -0000011903 00000 n -0000310996 00000 n -0000499611 00000 n -0000011963 00000 n -0000012069 00000 n -0000311112 00000 n -0000499532 00000 n -0000012129 00000 n -0000012255 00000 n -0000311227 00000 n -0000499414 00000 n -0000012304 00000 n -0000012453 00000 n -0000321808 00000 n -0000499335 00000 n -0000012507 00000 n -0000012638 00000 n -0000323788 00000 n -0000499203 00000 n -0000012692 00000 n -0000012823 00000 n -0000323905 00000 n -0000499124 00000 n -0000012882 00000 n -0000012976 00000 n -0000324021 00000 n -0000499031 00000 n -0000013035 00000 n -0000013134 00000 n -0000324135 00000 n -0000498938 00000 n -0000013193 00000 n -0000013282 00000 n -0000324250 00000 n -0000498845 00000 n -0000013341 00000 n -0000013445 00000 n -0000324367 00000 n -0000498752 00000 n -0000013504 00000 n -0000013590 00000 n -0000324484 00000 n -0000498673 00000 n -0000013649 00000 n -0000013743 00000 n -0000324542 00000 n -0000498541 00000 n -0000013797 00000 n -0000013938 00000 n -0000324658 00000 n -0000498476 00000 n -0000013997 00000 n -0000014045 00000 n -0000325731 00000 n -0000498357 00000 n -0000014099 00000 n -0000014240 00000 n -0000325847 00000 n -0000498278 00000 n -0000014299 00000 n -0000014372 00000 n -0000325963 00000 n -0000498185 00000 n -0000014431 00000 n -0000014514 00000 n -0000326079 00000 n -0000498092 00000 n -0000014573 00000 n -0000014621 00000 n -0000326196 00000 n -0000497999 00000 n -0000014680 00000 n -0000014751 00000 n -0000326313 00000 n -0000497906 00000 n -0000014810 00000 n -0000014878 00000 n -0000326429 00000 n -0000497813 00000 n -0000014937 00000 n -0000015015 00000 n -0000326546 00000 n -0000497720 00000 n -0000015074 00000 n -0000015142 00000 n -0000326663 00000 n -0000497627 00000 n -0000015201 00000 n -0000015292 00000 n -0000326779 00000 n -0000497534 00000 n -0000015351 00000 n -0000015444 00000 n -0000327615 00000 n -0000497441 00000 n -0000015504 00000 n -0000015602 00000 n -0000327732 00000 n -0000497362 00000 n -0000015662 00000 n -0000015730 00000 n -0000016819 00000 n -0000016953 00000 n -0000160276 00000 n -0000160404 00000 n -0000015782 00000 n -0000160347 00000 n -0000495354 00000 n -0000495710 00000 n -0000496066 00000 n -0000128679 00000 n -0000160744 00000 n -0000160625 00000 n +0000270529 00000 n +0000457452 00000 n +0000007135 00000 n +0000007266 00000 n +0000270585 00000 n +0000457320 00000 n +0000007320 00000 n +0000007451 00000 n +0000270699 00000 n +0000457241 00000 n +0000007510 00000 n +0000007611 00000 n +0000270817 00000 n +0000457148 00000 n +0000007670 00000 n +0000007771 00000 n +0000273683 00000 n +0000457055 00000 n +0000007830 00000 n +0000007921 00000 n +0000273802 00000 n +0000456962 00000 n +0000007980 00000 n +0000008066 00000 n +0000273920 00000 n +0000456869 00000 n +0000008125 00000 n +0000008234 00000 n +0000274039 00000 n +0000456776 00000 n +0000008293 00000 n +0000008392 00000 n +0000274158 00000 n +0000456697 00000 n +0000008451 00000 n +0000008560 00000 n +0000274215 00000 n +0000456565 00000 n +0000008614 00000 n +0000008750 00000 n +0000274329 00000 n +0000456500 00000 n +0000008809 00000 n +0000008925 00000 n +0000274386 00000 n +0000456368 00000 n +0000008979 00000 n +0000009163 00000 n +0000274500 00000 n +0000456289 00000 n +0000009222 00000 n +0000009341 00000 n +0000283385 00000 n +0000456210 00000 n +0000009400 00000 n +0000009491 00000 n +0000288227 00000 n +0000456091 00000 n +0000009545 00000 n +0000009686 00000 n +0000288341 00000 n +0000456012 00000 n +0000009745 00000 n +0000009881 00000 n +0000290157 00000 n +0000455919 00000 n +0000009940 00000 n +0000010081 00000 n +0000290271 00000 n +0000455826 00000 n +0000010140 00000 n +0000010251 00000 n +0000290385 00000 n +0000455733 00000 n +0000010310 00000 n +0000010441 00000 n +0000292870 00000 n +0000455640 00000 n +0000010500 00000 n +0000010641 00000 n +0000292984 00000 n +0000455547 00000 n +0000010700 00000 n +0000010806 00000 n +0000293097 00000 n +0000455454 00000 n +0000010865 00000 n +0000011011 00000 n +0000294868 00000 n +0000455361 00000 n +0000011070 00000 n +0000011206 00000 n +0000294981 00000 n +0000455268 00000 n +0000011265 00000 n +0000011416 00000 n +0000295095 00000 n +0000455175 00000 n +0000011476 00000 n +0000011582 00000 n +0000296128 00000 n +0000455096 00000 n +0000011642 00000 n +0000011768 00000 n +0000012855 00000 n +0000012989 00000 n +0000156312 00000 n +0000156440 00000 n +0000011820 00000 n +0000156383 00000 n +0000453224 00000 n +0000453580 00000 n +0000453936 00000 n +0000124715 00000 n +0000156780 00000 n +0000156661 00000 n +0000156561 00000 n +0000158065 00000 n +0000158215 00000 n +0000158369 00000 n +0000158521 00000 n +0000158672 00000 n +0000158825 00000 n +0000158978 00000 n +0000159132 00000 n +0000159283 00000 n +0000159437 00000 n +0000159590 00000 n +0000159744 00000 n +0000159903 00000 n +0000160061 00000 n +0000160220 00000 n +0000160371 00000 n 0000160525 00000 n -0000162006 00000 n -0000162157 00000 n -0000162311 00000 n -0000162463 00000 n -0000162613 00000 n -0000162766 00000 n -0000162920 00000 n -0000163074 00000 n -0000163225 00000 n -0000163379 00000 n -0000163533 00000 n -0000163687 00000 n -0000163846 00000 n -0000164005 00000 n -0000164164 00000 n -0000164315 00000 n -0000164469 00000 n -0000164628 00000 n -0000164787 00000 n -0000164938 00000 n -0000165091 00000 n -0000165242 00000 n -0000165396 00000 n -0000165546 00000 n -0000167324 00000 n -0000165756 00000 n -0000161683 00000 n -0000160785 00000 n -0000165699 00000 n -0000167483 00000 n -0000167642 00000 n -0000167802 00000 n -0000167966 00000 n -0000168129 00000 n -0000168293 00000 n -0000168457 00000 n -0000168620 00000 n -0000168783 00000 n -0000168947 00000 n -0000169111 00000 n -0000169275 00000 n -0000169440 00000 n -0000169605 00000 n -0000169770 00000 n -0000169935 00000 n -0000170099 00000 n -0000170264 00000 n -0000170428 00000 n -0000170593 00000 n -0000170757 00000 n -0000170922 00000 n -0000171073 00000 n -0000171227 00000 n -0000171386 00000 n -0000171545 00000 n -0000171709 00000 n -0000171872 00000 n -0000172036 00000 n -0000172200 00000 n -0000172364 00000 n -0000172528 00000 n -0000172692 00000 n -0000172851 00000 n -0000173014 00000 n -0000174772 00000 n -0000173172 00000 n -0000166905 00000 n -0000165841 00000 n -0000174936 00000 n -0000175100 00000 n -0000175259 00000 n -0000175423 00000 n -0000175587 00000 n -0000175751 00000 n -0000175915 00000 n -0000176078 00000 n -0000176242 00000 n -0000176405 00000 n -0000176568 00000 n -0000176732 00000 n -0000176896 00000 n -0000177061 00000 n -0000177215 00000 n -0000177373 00000 n -0000177531 00000 n -0000177695 00000 n -0000177859 00000 n -0000178023 00000 n -0000178187 00000 n -0000178351 00000 n -0000178515 00000 n -0000178674 00000 n -0000178838 00000 n -0000178997 00000 n -0000179161 00000 n -0000179324 00000 n -0000179488 00000 n -0000179651 00000 n -0000179813 00000 n -0000179977 00000 n -0000180140 00000 n -0000180304 00000 n -0000180468 00000 n +0000160675 00000 n +0000160829 00000 n +0000160978 00000 n +0000161132 00000 n +0000161291 00000 n +0000161450 00000 n +0000161614 00000 n +0000161774 00000 n +0000163584 00000 n +0000161994 00000 n +0000157734 00000 n +0000156821 00000 n +0000161937 00000 n +0000163748 00000 n +0000163912 00000 n +0000164076 00000 n +0000164240 00000 n +0000164402 00000 n +0000164566 00000 n +0000164731 00000 n +0000164894 00000 n +0000165059 00000 n +0000165224 00000 n +0000165389 00000 n +0000165554 00000 n +0000165719 00000 n +0000165884 00000 n +0000166048 00000 n +0000166213 00000 n +0000166377 00000 n +0000166542 00000 n +0000166693 00000 n +0000166847 00000 n +0000167006 00000 n +0000167165 00000 n +0000167329 00000 n +0000167493 00000 n +0000167656 00000 n +0000167820 00000 n +0000167984 00000 n +0000168147 00000 n +0000168311 00000 n +0000168470 00000 n +0000168634 00000 n +0000168793 00000 n +0000168957 00000 n +0000169121 00000 n +0000169280 00000 n +0000170250 00000 n +0000169443 00000 n +0000163165 00000 n +0000162079 00000 n +0000170414 00000 n +0000170578 00000 n +0000170741 00000 n +0000170904 00000 n +0000171068 00000 n +0000171231 00000 n +0000171395 00000 n +0000171559 00000 n +0000171724 00000 n +0000171889 00000 n +0000170039 00000 n +0000169528 00000 n +0000172193 00000 n +0000172074 00000 n +0000171974 00000 n +0000174323 00000 n +0000173806 00000 n +0000172234 00000 n +0000173925 00000 n +0000174036 00000 n +0000174093 00000 n +0000174205 00000 n +0000454054 00000 n +0000174810 00000 n +0000174635 00000 n +0000174408 00000 n +0000174754 00000 n +0000177060 00000 n +0000177220 00000 n +0000177414 00000 n +0000177607 00000 n 0000181156 00000 n -0000180632 00000 n -0000174353 00000 n -0000173257 00000 n -0000181321 00000 n -0000181017 00000 n -0000180717 00000 n -0000183495 00000 n -0000182978 00000 n -0000181406 00000 n -0000183097 00000 n -0000183208 00000 n -0000183265 00000 n -0000183377 00000 n -0000496184 00000 n -0000183982 00000 n -0000183807 00000 n -0000183580 00000 n -0000183926 00000 n -0000186263 00000 n -0000186423 00000 n -0000186575 00000 n -0000186734 00000 n -0000186928 00000 n -0000187121 00000 n -0000190726 00000 n -0000190878 00000 n -0000191073 00000 n -0000191526 00000 n -0000187884 00000 n -0000186084 00000 n -0000184054 00000 n -0000187314 00000 n -0000187426 00000 n -0000187483 00000 n -0000187596 00000 n -0000187713 00000 n -0000495180 00000 n -0000187770 00000 n -0000187827 00000 n -0000257010 00000 n -0000311170 00000 n -0000234354 00000 n -0000309399 00000 n -0000304596 00000 n -0000306976 00000 n -0000191720 00000 n -0000191915 00000 n -0000192110 00000 n -0000192304 00000 n -0000192455 00000 n -0000192650 00000 n -0000192800 00000 n -0000193170 00000 n -0000195152 00000 n -0000193818 00000 n -0000190468 00000 n -0000187982 00000 n -0000193365 00000 n -0000193421 00000 n -0000191300 00000 n -0000193478 00000 n -0000193534 00000 n -0000193591 00000 n -0000193648 00000 n -0000193705 00000 n -0000192986 00000 n -0000294056 00000 n -0000307089 00000 n -0000309286 00000 n -0000304483 00000 n -0000324079 00000 n -0000218033 00000 n -0000195018 00000 n -0000193916 00000 n -0000217915 00000 n -0000217971 00000 n -0000495036 00000 n -0000494602 00000 n -0000494747 00000 n -0000494891 00000 n -0000208041 00000 n -0000218610 00000 n -0000218435 00000 n -0000218205 00000 n -0000218554 00000 n -0000220672 00000 n -0000220831 00000 n -0000221216 00000 n -0000221444 00000 n -0000221671 00000 n -0000221866 00000 n -0000222059 00000 n -0000222218 00000 n -0000224945 00000 n -0000225172 00000 n -0000225626 00000 n -0000222991 00000 n -0000220469 00000 n -0000218682 00000 n -0000222412 00000 n -0000222524 00000 n -0000222581 00000 n -0000221024 00000 n -0000222694 00000 n -0000222812 00000 n -0000222930 00000 n -0000496302 00000 n -0000245263 00000 n -0000249867 00000 n -0000298603 00000 n -0000301985 00000 n -0000311054 00000 n -0000225786 00000 n -0000225979 00000 n -0000226172 00000 n -0000226363 00000 n -0000226589 00000 n -0000226781 00000 n -0000227009 00000 n -0000227463 00000 n -0000227621 00000 n -0000227813 00000 n -0000228006 00000 n -0000228198 00000 n -0000228425 00000 n -0000228653 00000 n -0000230271 00000 n -0000230499 00000 n -0000230954 00000 n -0000229135 00000 n -0000224662 00000 n -0000223076 00000 n -0000228844 00000 n -0000225399 00000 n -0000228956 00000 n -0000227237 00000 n -0000229074 00000 n -0000250446 00000 n -0000250327 00000 n -0000247893 00000 n -0000231114 00000 n -0000231307 00000 n -0000231500 00000 n -0000231803 00000 n -0000230084 00000 n -0000229233 00000 n -0000231691 00000 n -0000230727 00000 n -0000232309 00000 n -0000232134 00000 n -0000231901 00000 n -0000232253 00000 n -0000233753 00000 n -0000233905 00000 n -0000234090 00000 n -0000234755 00000 n -0000233598 00000 n -0000232381 00000 n -0000234242 00000 n -0000234411 00000 n -0000234529 00000 n -0000234642 00000 n -0000324600 00000 n -0000236186 00000 n -0000236011 00000 n -0000234853 00000 n -0000236130 00000 n -0000236900 00000 n -0000237060 00000 n -0000237382 00000 n -0000236753 00000 n -0000236271 00000 n -0000237214 00000 n -0000496420 00000 n -0000237870 00000 n -0000237695 00000 n -0000237467 00000 n -0000237814 00000 n -0000238650 00000 n -0000238811 00000 n -0000238965 00000 n -0000239116 00000 n -0000239281 00000 n -0000239603 00000 n -0000238479 00000 n -0000237942 00000 n -0000239435 00000 n -0000240088 00000 n -0000239913 00000 n -0000239688 00000 n -0000240032 00000 n -0000241279 00000 n -0000241473 00000 n -0000241667 00000 n -0000241861 00000 n -0000242054 00000 n -0000242248 00000 n -0000242441 00000 n -0000242635 00000 n -0000242829 00000 n -0000243023 00000 n -0000243217 00000 n -0000243411 00000 n -0000243605 00000 n -0000243798 00000 n -0000243992 00000 n -0000244186 00000 n -0000244378 00000 n -0000244570 00000 n -0000244764 00000 n -0000244958 00000 n -0000245489 00000 n -0000240988 00000 n -0000240160 00000 n -0000245151 00000 n -0000245376 00000 n -0000250684 00000 n -0000246827 00000 n -0000250565 00000 n -0000247060 00000 n -0000247298 00000 n -0000247179 00000 n -0000246941 00000 n -0000247536 00000 n -0000247655 00000 n -0000247774 00000 n -0000247417 00000 n -0000249986 00000 n -0000250213 00000 n -0000249753 00000 n -0000250100 00000 n -0000249639 00000 n -0000248012 00000 n -0000246595 00000 n -0000245613 00000 n -0000246714 00000 n -0000249389 00000 n -0000250745 00000 n -0000249250 00000 n -0000248097 00000 n -0000249583 00000 n -0000496538 00000 n -0000251494 00000 n -0000251765 00000 n -0000251355 00000 n -0000250856 00000 n -0000251652 00000 n -0000252435 00000 n -0000256830 00000 n -0000258679 00000 n -0000262116 00000 n -0000257124 00000 n -0000252301 00000 n -0000251852 00000 n -0000256897 00000 n -0000253345 00000 n -0000253475 00000 n -0000253615 00000 n -0000253902 00000 n -0000254307 00000 n -0000254511 00000 n -0000254532 00000 n -0000256808 00000 n -0000262183 00000 n -0000262343 00000 n -0000262537 00000 n -0000262731 00000 n -0000262926 00000 n -0000263121 00000 n -0000263315 00000 n -0000263510 00000 n -0000263705 00000 n -0000263900 00000 n -0000264095 00000 n -0000264322 00000 n -0000264549 00000 n -0000264776 00000 n -0000264999 00000 n -0000265224 00000 n -0000267281 00000 n -0000267508 00000 n -0000265734 00000 n -0000258405 00000 n -0000257250 00000 n -0000265450 00000 n -0000265506 00000 n -0000495886 00000 n -0000265563 00000 n -0000265620 00000 n -0000265677 00000 n -0000259342 00000 n -0000259472 00000 n -0000259612 00000 n -0000259863 00000 n -0000260227 00000 n -0000260431 00000 n -0000260452 00000 n -0000262094 00000 n -0000290542 00000 n -0000290424 00000 n -0000293285 00000 n -0000290075 00000 n -0000290192 00000 n -0000290311 00000 n -0000289961 00000 n -0000293461 00000 n -0000293632 00000 n -0000293746 00000 n -0000293808 00000 n -0000293870 00000 n -0000293932 00000 n -0000293994 00000 n -0000267735 00000 n -0000267958 00000 n -0000268185 00000 n -0000268412 00000 n -0000268638 00000 n -0000268865 00000 n -0000269092 00000 n -0000269319 00000 n -0000269546 00000 n -0000269773 00000 n -0000270000 00000 n -0000270227 00000 n -0000270454 00000 n -0000270681 00000 n -0000270908 00000 n -0000271135 00000 n -0000271361 00000 n -0000271586 00000 n -0000271813 00000 n -0000272040 00000 n -0000272267 00000 n -0000272494 00000 n -0000272720 00000 n -0000272947 00000 n -0000273174 00000 n -0000273400 00000 n +0000181351 00000 n +0000181804 00000 n +0000178370 00000 n +0000176897 00000 n +0000174882 00000 n +0000177800 00000 n +0000177912 00000 n +0000177969 00000 n +0000178082 00000 n +0000178199 00000 n +0000453050 00000 n +0000178256 00000 n +0000178313 00000 n +0000243250 00000 n +0000295038 00000 n +0000290328 00000 n +0000290441 00000 n +0000181998 00000 n +0000182193 00000 n +0000182388 00000 n +0000182582 00000 n +0000182777 00000 n +0000184759 00000 n +0000183425 00000 n +0000180938 00000 n +0000178468 00000 n +0000182972 00000 n +0000183028 00000 n +0000181578 00000 n +0000183085 00000 n +0000183141 00000 n +0000183198 00000 n +0000183255 00000 n +0000183312 00000 n +0000274867 00000 n +0000292927 00000 n +0000294924 00000 n +0000290214 00000 n +0000207640 00000 n +0000184625 00000 n +0000183523 00000 n +0000207522 00000 n +0000207578 00000 n +0000452906 00000 n +0000452472 00000 n +0000452617 00000 n +0000452761 00000 n +0000197648 00000 n +0000208217 00000 n +0000208042 00000 n +0000207812 00000 n +0000208161 00000 n +0000210279 00000 n +0000210438 00000 n +0000210823 00000 n +0000211051 00000 n +0000211278 00000 n +0000211473 00000 n +0000211666 00000 n +0000211825 00000 n +0000214552 00000 n +0000214779 00000 n +0000215233 00000 n +0000212598 00000 n +0000210076 00000 n +0000208289 00000 n +0000212019 00000 n +0000212131 00000 n +0000212188 00000 n +0000210631 00000 n +0000212301 00000 n +0000212419 00000 n +0000212537 00000 n +0000454172 00000 n +0000230545 00000 n +0000235380 00000 n +0000283442 00000 n +0000283566 00000 n +0000295152 00000 n +0000215393 00000 n +0000215586 00000 n +0000215779 00000 n +0000215970 00000 n +0000216196 00000 n +0000216388 00000 n +0000216616 00000 n +0000217070 00000 n +0000217228 00000 n +0000217420 00000 n +0000217613 00000 n +0000217805 00000 n +0000218032 00000 n +0000218260 00000 n +0000219878 00000 n +0000220106 00000 n +0000220561 00000 n +0000218742 00000 n +0000214269 00000 n +0000212683 00000 n +0000218451 00000 n +0000215006 00000 n +0000218563 00000 n +0000216844 00000 n +0000218681 00000 n +0000235975 00000 n +0000235856 00000 n +0000233376 00000 n +0000220721 00000 n +0000220914 00000 n +0000221107 00000 n +0000221410 00000 n +0000219691 00000 n +0000218840 00000 n +0000221298 00000 n +0000220334 00000 n +0000221916 00000 n +0000221741 00000 n +0000221508 00000 n +0000221860 00000 n +0000222617 00000 n +0000222777 00000 n +0000223099 00000 n +0000222470 00000 n +0000221988 00000 n +0000222931 00000 n +0000223587 00000 n +0000223412 00000 n +0000223184 00000 n +0000223531 00000 n +0000224202 00000 n +0000224363 00000 n +0000224685 00000 n +0000224055 00000 n +0000223659 00000 n +0000224517 00000 n +0000454290 00000 n +0000225171 00000 n +0000224996 00000 n +0000224770 00000 n +0000225115 00000 n +0000226372 00000 n +0000226566 00000 n +0000226760 00000 n +0000226954 00000 n +0000227147 00000 n +0000227340 00000 n +0000227533 00000 n +0000227726 00000 n +0000227920 00000 n +0000228113 00000 n +0000228307 00000 n +0000228500 00000 n +0000228694 00000 n +0000228888 00000 n +0000229081 00000 n +0000229275 00000 n +0000229467 00000 n +0000229660 00000 n +0000229853 00000 n +0000230047 00000 n +0000230240 00000 n +0000230771 00000 n +0000226073 00000 n +0000225243 00000 n +0000230433 00000 n +0000230658 00000 n +0000236213 00000 n +0000232310 00000 n +0000236094 00000 n +0000232546 00000 n +0000232784 00000 n +0000232665 00000 n +0000232428 00000 n +0000232197 00000 n +0000233021 00000 n +0000233140 00000 n +0000233259 00000 n +0000232902 00000 n +0000235499 00000 n +0000235737 00000 n +0000235262 00000 n +0000235618 00000 n +0000235143 00000 n +0000233437 00000 n +0000231966 00000 n +0000230895 00000 n +0000232085 00000 n +0000234835 00000 n +0000236274 00000 n +0000234696 00000 n +0000233522 00000 n +0000235030 00000 n +0000237003 00000 n +0000237275 00000 n +0000236864 00000 n +0000236385 00000 n +0000237162 00000 n +0000238321 00000 n +0000242716 00000 n +0000242783 00000 n +0000242943 00000 n +0000245176 00000 n +0000243478 00000 n +0000238159 00000 n +0000237361 00000 n +0000243137 00000 n +0000243364 00000 n +0000453756 00000 n +0000243421 00000 n +0000454408 00000 n +0000239231 00000 n +0000239361 00000 n +0000239501 00000 n +0000239788 00000 n +0000240193 00000 n +0000240397 00000 n +0000240418 00000 n +0000242694 00000 n +0000273977 00000 n +0000245371 00000 n +0000245566 00000 n +0000245761 00000 n +0000245955 00000 n +0000246150 00000 n +0000246345 00000 n +0000246540 00000 n +0000246735 00000 n +0000246961 00000 n +0000247188 00000 n +0000247415 00000 n +0000247639 00000 n +0000247866 00000 n +0000248093 00000 n +0000248319 00000 n +0000248546 00000 n +0000248771 00000 n +0000248998 00000 n +0000249225 00000 n +0000249449 00000 n +0000249676 00000 n +0000249903 00000 n +0000250129 00000 n +0000250356 00000 n +0000250583 00000 n +0000250810 00000 n +0000251037 00000 n +0000251264 00000 n +0000251491 00000 n +0000251718 00000 n +0000251944 00000 n +0000252170 00000 n +0000252397 00000 n +0000252623 00000 n +0000252850 00000 n +0000255063 00000 n +0000255290 00000 n +0000255516 00000 n +0000253246 00000 n +0000244757 00000 n +0000243630 00000 n +0000253076 00000 n +0000253132 00000 n +0000253189 00000 n +0000273858 00000 n +0000274096 00000 n +0000270756 00000 n +0000270874 00000 n +0000273740 00000 n +0000270642 00000 n +0000274272 00000 n +0000274443 00000 n +0000274557 00000 n +0000274619 00000 n +0000274681 00000 n +0000274743 00000 n +0000274805 00000 n +0000274929 00000 n +0000274991 00000 n +0000277595 00000 n +0000277657 00000 n +0000277719 00000 n +0000277781 00000 n +0000277843 00000 n +0000277905 00000 n +0000277967 00000 n +0000278029 00000 n +0000278091 00000 n +0000278153 00000 n +0000278215 00000 n +0000278276 00000 n +0000278338 00000 n +0000278400 00000 n +0000278462 00000 n +0000278524 00000 n +0000278586 00000 n +0000278648 00000 n +0000278710 00000 n +0000278772 00000 n +0000255742 00000 n +0000255969 00000 n +0000256195 00000 n +0000256422 00000 n +0000256649 00000 n +0000256876 00000 n +0000257103 00000 n +0000257330 00000 n +0000257556 00000 n +0000257783 00000 n +0000257977 00000 n +0000258204 00000 n +0000258431 00000 n +0000258658 00000 n +0000258885 00000 n +0000259112 00000 n +0000259339 00000 n +0000259566 00000 n +0000259792 00000 n +0000260017 00000 n +0000260244 00000 n +0000260471 00000 n +0000260698 00000 n +0000260925 00000 n +0000261119 00000 n +0000261314 00000 n +0000261507 00000 n +0000261702 00000 n +0000261897 00000 n +0000262090 00000 n +0000262285 00000 n +0000262479 00000 n +0000262868 00000 n +0000265679 00000 n +0000265874 00000 n +0000266069 00000 n +0000263176 00000 n +0000254636 00000 n +0000253357 00000 n +0000263063 00000 n +0000263119 00000 n +0000262674 00000 n +0000278834 00000 n +0000278896 00000 n +0000278958 00000 n +0000279020 00000 n +0000279082 00000 n +0000279144 00000 n +0000279206 00000 n +0000279268 00000 n +0000279330 00000 n +0000279392 00000 n +0000279454 00000 n +0000279516 00000 n +0000279578 00000 n +0000283504 00000 n +0000283628 00000 n +0000283690 00000 n +0000287732 00000 n +0000287794 00000 n +0000287856 00000 n +0000287918 00000 n +0000287980 00000 n +0000288042 00000 n +0000288104 00000 n +0000288165 00000 n +0000290100 00000 n +0000288284 00000 n +0000266458 00000 n +0000266653 00000 n +0000266848 00000 n +0000267043 00000 n +0000267238 00000 n +0000267431 00000 n +0000267625 00000 n +0000267819 00000 n +0000268014 00000 n +0000268209 00000 n +0000268404 00000 n +0000268793 00000 n +0000268988 00000 n +0000269183 00000 n +0000269343 00000 n +0000269536 00000 n +0000269731 00000 n +0000269889 00000 n +0000270084 00000 n +0000270279 00000 n +0000272849 00000 n +0000270935 00000 n +0000265348 00000 n +0000263287 00000 n +0000270473 00000 n +0000266264 00000 n +0000268599 00000 n +0000293040 00000 n +0000294811 00000 n +0000273044 00000 n +0000273238 00000 n +0000275052 00000 n +0000272686 00000 n +0000271046 00000 n 0000273627 00000 n -0000273853 00000 n -0000274080 00000 n -0000274307 00000 n -0000274533 00000 n -0000274760 00000 n -0000274985 00000 n -0000275178 00000 n -0000275405 00000 n -0000275632 00000 n -0000275858 00000 n -0000278661 00000 n -0000278888 00000 n -0000279115 00000 n -0000276140 00000 n -0000266838 00000 n -0000265886 00000 n -0000276084 00000 n -0000294118 00000 n -0000294180 00000 n -0000294242 00000 n -0000294304 00000 n -0000294366 00000 n -0000294428 00000 n -0000294490 00000 n -0000294552 00000 n -0000294613 00000 n -0000294675 00000 n -0000294737 00000 n -0000294799 00000 n -0000297127 00000 n -0000297189 00000 n -0000297251 00000 n -0000297313 00000 n -0000297374 00000 n -0000297436 00000 n -0000297498 00000 n -0000297560 00000 n -0000297622 00000 n -0000297684 00000 n -0000297746 00000 n -0000297808 00000 n -0000297870 00000 n -0000297932 00000 n -0000297994 00000 n -0000298056 00000 n -0000298118 00000 n -0000298180 00000 n -0000298242 00000 n -0000298304 00000 n -0000298366 00000 n -0000298428 00000 n -0000298489 00000 n -0000301861 00000 n -0000301923 00000 n -0000279342 00000 n -0000279568 00000 n -0000279795 00000 n -0000280022 00000 n -0000280249 00000 n -0000280476 00000 n -0000280670 00000 n -0000280865 00000 n -0000281058 00000 n -0000281253 00000 n -0000281448 00000 n -0000281641 00000 n -0000281836 00000 n -0000282030 00000 n -0000282417 00000 n -0000282610 00000 n -0000282805 00000 n -0000283000 00000 n -0000283389 00000 n -0000283584 00000 n -0000283779 00000 n -0000283974 00000 n -0000284169 00000 n -0000284362 00000 n -0000284548 00000 n -0000284739 00000 n -0000284930 00000 n -0000285122 00000 n -0000285317 00000 n -0000285512 00000 n -0000287720 00000 n -0000287915 00000 n -0000286013 00000 n -0000278242 00000 n -0000276238 00000 n -0000285900 00000 n -0000285956 00000 n -0000282225 00000 n -0000283195 00000 n -0000285707 00000 n -0000302047 00000 n -0000302105 00000 n -0000302167 00000 n -0000302229 00000 n -0000302291 00000 n -0000302353 00000 n -0000302415 00000 n -0000302477 00000 n -0000304369 00000 n -0000302596 00000 n -0000309059 00000 n -0000326021 00000 n -0000288110 00000 n -0000288270 00000 n -0000288463 00000 n -0000288658 00000 n -0000288817 00000 n -0000289012 00000 n -0000289207 00000 n -0000289402 00000 n -0000289597 00000 n -0000290598 00000 n -0000287501 00000 n -0000286124 00000 n -0000289791 00000 n -0000495530 00000 n -0000496656 00000 n -0000309173 00000 n -0000292783 00000 n -0000294861 00000 n -0000292636 00000 n -0000290735 00000 n -0000293172 00000 n -0000292978 00000 n -0000298665 00000 n -0000296952 00000 n -0000294985 00000 n -0000297071 00000 n -0000302710 00000 n -0000301686 00000 n -0000298763 00000 n -0000301805 00000 n -0000304710 00000 n -0000304194 00000 n -0000302821 00000 n -0000304313 00000 n -0000307203 00000 n -0000306801 00000 n -0000304821 00000 n -0000306920 00000 n -0000308684 00000 n -0000308843 00000 n -0000309455 00000 n -0000308537 00000 n -0000307314 00000 n -0000309003 00000 n -0000496774 00000 n -0000310772 00000 n -0000312780 00000 n -0000317980 00000 n -0000311285 00000 n -0000310630 00000 n -0000309567 00000 n -0000310938 00000 n -0000318047 00000 n -0000318234 00000 n -0000318421 00000 n -0000318608 00000 n -0000318795 00000 n -0000318982 00000 n -0000319169 00000 n -0000319356 00000 n -0000319543 00000 n -0000319730 00000 n -0000319916 00000 n -0000320103 00000 n -0000320289 00000 n -0000320475 00000 n -0000320661 00000 n -0000320848 00000 n -0000321034 00000 n -0000321220 00000 n -0000321407 00000 n -0000321866 00000 n -0000312460 00000 n -0000311397 00000 n -0000321573 00000 n -0000321631 00000 n -0000321690 00000 n -0000321749 00000 n -0000314216 00000 n -0000314347 00000 n +0000453400 00000 n +0000273433 00000 n +0000279634 00000 n +0000277420 00000 n +0000275176 00000 n +0000277539 00000 n +0000282260 00000 n +0000282715 00000 n +0000282908 00000 n +0000283101 00000 n +0000286764 00000 n +0000283752 00000 n +0000282089 00000 n +0000279732 00000 n +0000283329 00000 n +0000282487 00000 n +0000454526 00000 n +0000287220 00000 n +0000288398 00000 n +0000286601 00000 n +0000283863 00000 n +0000287676 00000 n +0000286992 00000 n +0000287448 00000 n +0000290497 00000 n +0000289925 00000 n +0000288509 00000 n +0000290044 00000 n +0000293154 00000 n +0000292695 00000 n +0000290608 00000 n +0000292814 00000 n +0000294436 00000 n +0000294595 00000 n +0000295208 00000 n +0000294289 00000 n +0000293265 00000 n +0000294755 00000 n +0000296185 00000 n +0000295953 00000 n +0000295319 00000 n +0000296072 00000 n +0000297612 00000 n +0000297762 00000 n +0000297911 00000 n +0000298061 00000 n +0000298211 00000 n +0000298361 00000 n +0000298511 00000 n +0000298661 00000 n +0000298811 00000 n +0000298960 00000 n +0000299110 00000 n +0000299260 00000 n +0000299410 00000 n +0000299560 00000 n +0000299710 00000 n +0000299859 00000 n +0000300009 00000 n +0000300159 00000 n +0000300309 00000 n +0000300459 00000 n +0000300609 00000 n +0000300759 00000 n +0000300908 00000 n +0000301058 00000 n +0000301208 00000 n +0000301358 00000 n +0000301508 00000 n +0000301658 00000 n +0000301808 00000 n +0000301958 00000 n +0000302108 00000 n +0000302258 00000 n +0000302408 00000 n +0000302558 00000 n +0000302708 00000 n +0000302858 00000 n +0000303007 00000 n +0000303157 00000 n +0000303307 00000 n +0000303457 00000 n +0000303606 00000 n +0000303756 00000 n +0000303906 00000 n +0000306107 00000 n +0000304112 00000 n +0000297137 00000 n +0000296283 00000 n +0000304056 00000 n +0000454644 00000 n +0000306257 00000 n +0000306407 00000 n +0000306557 00000 n +0000306706 00000 n +0000306855 00000 n +0000307005 00000 n +0000307155 00000 n +0000307305 00000 n +0000307455 00000 n +0000307605 00000 n +0000307755 00000 n +0000307905 00000 n +0000308055 00000 n +0000308205 00000 n +0000308355 00000 n +0000308505 00000 n +0000308655 00000 n +0000308804 00000 n +0000308954 00000 n +0000309103 00000 n +0000309253 00000 n +0000309402 00000 n +0000309551 00000 n +0000309701 00000 n +0000309851 00000 n +0000310001 00000 n +0000310150 00000 n +0000310300 00000 n +0000310449 00000 n +0000310599 00000 n +0000310748 00000 n +0000310898 00000 n +0000311047 00000 n +0000311197 00000 n +0000311347 00000 n +0000311497 00000 n +0000311646 00000 n +0000311796 00000 n +0000311946 00000 n +0000312096 00000 n +0000312244 00000 n +0000312394 00000 n +0000312544 00000 n +0000312693 00000 n +0000312843 00000 n +0000312992 00000 n +0000313142 00000 n +0000313292 00000 n +0000313441 00000 n +0000313591 00000 n +0000313741 00000 n +0000313891 00000 n +0000314041 00000 n +0000314191 00000 n +0000314340 00000 n 0000314490 00000 n -0000314795 00000 n -0000315218 00000 n -0000315424 00000 n -0000315446 00000 n -0000317957 00000 n -0000323963 00000 n -0000324308 00000 n -0000324425 00000 n -0000323846 00000 n -0000324191 00000 n -0000326721 00000 n -0000327556 00000 n -0000325904 00000 n -0000326487 00000 n -0000326604 00000 n -0000327673 00000 n -0000325789 00000 n -0000326137 00000 n -0000326254 00000 n -0000326370 00000 n -0000323534 00000 n -0000324716 00000 n -0000323391 00000 n -0000321993 00000 n -0000323730 00000 n -0000326837 00000 n -0000325551 00000 n -0000324828 00000 n -0000325673 00000 n -0000327790 00000 n -0000327376 00000 n -0000326936 00000 n -0000327498 00000 n -0000329260 00000 n -0000329411 00000 n -0000329561 00000 n -0000329712 00000 n -0000329863 00000 n -0000330014 00000 n -0000330165 00000 n -0000330316 00000 n -0000330467 00000 n -0000330617 00000 n -0000330768 00000 n -0000330919 00000 n -0000331070 00000 n -0000331221 00000 n -0000331372 00000 n -0000331522 00000 n -0000331673 00000 n -0000331824 00000 n -0000331975 00000 n -0000332126 00000 n -0000332277 00000 n -0000332428 00000 n -0000332578 00000 n -0000332729 00000 n -0000332880 00000 n -0000333031 00000 n -0000333182 00000 n -0000333333 00000 n -0000333484 00000 n -0000333635 00000 n -0000333786 00000 n -0000333937 00000 n -0000334088 00000 n -0000334239 00000 n -0000334390 00000 n -0000334541 00000 n -0000334691 00000 n -0000334842 00000 n -0000334993 00000 n -0000335144 00000 n -0000335294 00000 n -0000335445 00000 n -0000335596 00000 n -0000337902 00000 n -0000335805 00000 n -0000328738 00000 n -0000327876 00000 n -0000335747 00000 n -0000496897 00000 n -0000338053 00000 n -0000338204 00000 n -0000338355 00000 n -0000338505 00000 n -0000338655 00000 n -0000338806 00000 n -0000338957 00000 n -0000339108 00000 n -0000339259 00000 n -0000339410 00000 n -0000339561 00000 n -0000339712 00000 n -0000339863 00000 n -0000340014 00000 n -0000340165 00000 n -0000340316 00000 n -0000340467 00000 n -0000340618 00000 n -0000340768 00000 n -0000340919 00000 n -0000341069 00000 n -0000341219 00000 n -0000341369 00000 n -0000341520 00000 n -0000341671 00000 n -0000341821 00000 n -0000341972 00000 n -0000342123 00000 n -0000342274 00000 n -0000342424 00000 n -0000342575 00000 n -0000342725 00000 n -0000342876 00000 n -0000343026 00000 n -0000343177 00000 n -0000343328 00000 n -0000343478 00000 n -0000343628 00000 n -0000343779 00000 n -0000343930 00000 n -0000344081 00000 n -0000344232 00000 n -0000344382 00000 n -0000344533 00000 n -0000344682 00000 n -0000344833 00000 n -0000344984 00000 n -0000345134 00000 n -0000345285 00000 n -0000345435 00000 n -0000345586 00000 n -0000345737 00000 n -0000345888 00000 n -0000346038 00000 n -0000346189 00000 n -0000346340 00000 n -0000346491 00000 n -0000346642 00000 n -0000346793 00000 n -0000346944 00000 n -0000347095 00000 n -0000347246 00000 n -0000347397 00000 n -0000347547 00000 n -0000347698 00000 n -0000347849 00000 n -0000348000 00000 n -0000348151 00000 n -0000348301 00000 n -0000348451 00000 n -0000348601 00000 n -0000348752 00000 n -0000348960 00000 n -0000337110 00000 n -0000335891 00000 n -0000348902 00000 n -0000350849 00000 n -0000350999 00000 n -0000351150 00000 n -0000351301 00000 n -0000351452 00000 n -0000351603 00000 n -0000351754 00000 n -0000351905 00000 n -0000352056 00000 n -0000352206 00000 n -0000352356 00000 n -0000352507 00000 n -0000352657 00000 n -0000352806 00000 n -0000352954 00000 n -0000353104 00000 n -0000353255 00000 n -0000353406 00000 n -0000353557 00000 n -0000353708 00000 n -0000353858 00000 n -0000354008 00000 n -0000354159 00000 n -0000354308 00000 n -0000354458 00000 n -0000354609 00000 n -0000354760 00000 n -0000354911 00000 n -0000355062 00000 n -0000355213 00000 n -0000355364 00000 n -0000355515 00000 n -0000355665 00000 n -0000355816 00000 n -0000355967 00000 n -0000356118 00000 n -0000356267 00000 n -0000356417 00000 n -0000356568 00000 n -0000356719 00000 n -0000356869 00000 n -0000357019 00000 n -0000357170 00000 n -0000357321 00000 n -0000357471 00000 n -0000357622 00000 n -0000357772 00000 n -0000357922 00000 n -0000358072 00000 n -0000358222 00000 n -0000358372 00000 n -0000358523 00000 n -0000358674 00000 n -0000358825 00000 n -0000358976 00000 n -0000359127 00000 n -0000359278 00000 n -0000359428 00000 n -0000359579 00000 n -0000359730 00000 n -0000359881 00000 n -0000360032 00000 n -0000360183 00000 n -0000360333 00000 n -0000360483 00000 n -0000360634 00000 n -0000360785 00000 n -0000360936 00000 n -0000361087 00000 n -0000361238 00000 n -0000361389 00000 n -0000361540 00000 n -0000362989 00000 n -0000361749 00000 n -0000350066 00000 n -0000349046 00000 n -0000361691 00000 n -0000363140 00000 n -0000363291 00000 n -0000363442 00000 n -0000363593 00000 n -0000363744 00000 n -0000363895 00000 n -0000364046 00000 n -0000364197 00000 n -0000364347 00000 n -0000364497 00000 n -0000364648 00000 n -0000364799 00000 n -0000364950 00000 n -0000365101 00000 n -0000365251 00000 n -0000365402 00000 n -0000365552 00000 n -0000365703 00000 n -0000365852 00000 n -0000366001 00000 n -0000366151 00000 n -0000366302 00000 n -0000366453 00000 n -0000366604 00000 n -0000366755 00000 n -0000366906 00000 n -0000367056 00000 n -0000367207 00000 n -0000367357 00000 n -0000367508 00000 n -0000367659 00000 n -0000367809 00000 n -0000367960 00000 n -0000368110 00000 n -0000368260 00000 n -0000368411 00000 n -0000368620 00000 n -0000362521 00000 n -0000361835 00000 n -0000368562 00000 n -0000494133 00000 n -0000368706 00000 n -0000369178 00000 n -0000369654 00000 n -0000370255 00000 n -0000370339 00000 n -0000370537 00000 n -0000370563 00000 n -0000370951 00000 n -0000371830 00000 n -0000372320 00000 n -0000383005 00000 n -0000383270 00000 n -0000392653 00000 n -0000392923 00000 n -0000400117 00000 n -0000400356 00000 n -0000407385 00000 n -0000407617 00000 n -0000425933 00000 n -0000426479 00000 n -0000444502 00000 n -0000445043 00000 n -0000459125 00000 n -0000459501 00000 n -0000479380 00000 n -0000479971 00000 n -0000493741 00000 n -0000497004 00000 n -0000497124 00000 n -0000497213 00000 n -0000497286 00000 n -0000506443 00000 n -0000506678 00000 n -0000506872 00000 n -0000507061 00000 n -0000507371 00000 n -0000507788 00000 n -0000508319 00000 n -0000508949 00000 n -0000509744 00000 n -0000510440 00000 n -0000510971 00000 n -0000511700 00000 n -0000512495 00000 n -0000513290 00000 n -0000514085 00000 n -0000514880 00000 n -0000515675 00000 n -0000516320 00000 n -0000516500 00000 n -0000516789 00000 n -0000517254 00000 n -0000517718 00000 n -0000518072 00000 n -0000518243 00000 n -0000518413 00000 n -0000518584 00000 n -0000518755 00000 n -0000518932 00000 n -0000519100 00000 n -0000519285 00000 n -0000519482 00000 n -0000519679 00000 n -0000519877 00000 n -0000520286 00000 n -0000520809 00000 n -0000521332 00000 n -0000521748 00000 n -0000521987 00000 n -0000522230 00000 n -0000522502 00000 n -0000522793 00000 n -0000523079 00000 n -0000523362 00000 n -0000523645 00000 n -0000523930 00000 n -0000524213 00000 n -0000524496 00000 n -0000524781 00000 n -0000525064 00000 n -0000525187 00000 n -0000525357 00000 n -0000525596 00000 n -0000525792 00000 n -0000525910 00000 n -0000526030 00000 n -0000526159 00000 n -0000526298 00000 n -0000526442 00000 n -0000526541 00000 n -0000526675 00000 n -0000526787 00000 n -0000526890 00000 n -0000526930 00000 n -0000527111 00000 n +0000314640 00000 n +0000314790 00000 n +0000314940 00000 n +0000315090 00000 n +0000315239 00000 n +0000315389 00000 n +0000315539 00000 n +0000315689 00000 n +0000315839 00000 n +0000315989 00000 n +0000316139 00000 n +0000316287 00000 n +0000316437 00000 n +0000316587 00000 n +0000316737 00000 n +0000318729 00000 n +0000316943 00000 n +0000305400 00000 n +0000304197 00000 n +0000316887 00000 n +0000318879 00000 n +0000319029 00000 n +0000319179 00000 n +0000319329 00000 n +0000319479 00000 n +0000319629 00000 n +0000319778 00000 n +0000319928 00000 n +0000320078 00000 n +0000320228 00000 n +0000320376 00000 n +0000320526 00000 n +0000320675 00000 n +0000320825 00000 n +0000320973 00000 n +0000321123 00000 n +0000321271 00000 n +0000321419 00000 n +0000321568 00000 n +0000321718 00000 n +0000321868 00000 n +0000322017 00000 n +0000322167 00000 n +0000322317 00000 n +0000322467 00000 n +0000322614 00000 n +0000322764 00000 n +0000322914 00000 n +0000323063 00000 n +0000323213 00000 n +0000323363 00000 n +0000323513 00000 n +0000323663 00000 n +0000323813 00000 n +0000323964 00000 n +0000324114 00000 n +0000324265 00000 n +0000324416 00000 n +0000324566 00000 n +0000324717 00000 n +0000324868 00000 n +0000325019 00000 n +0000325169 00000 n +0000325319 00000 n +0000325469 00000 n +0000325620 00000 n +0000325771 00000 n +0000325921 00000 n +0000326072 00000 n +0000326223 00000 n +0000326374 00000 n +0000326524 00000 n +0000326675 00000 n +0000326826 00000 n +0000326976 00000 n +0000327127 00000 n +0000327278 00000 n +0000327428 00000 n +0000327579 00000 n +0000327730 00000 n +0000327881 00000 n +0000328032 00000 n +0000328181 00000 n +0000328332 00000 n +0000328483 00000 n +0000328633 00000 n +0000328784 00000 n +0000328935 00000 n +0000329085 00000 n +0000329236 00000 n +0000329387 00000 n +0000329538 00000 n +0000330340 00000 n +0000329746 00000 n +0000317971 00000 n +0000317028 00000 n +0000329688 00000 n +0000330491 00000 n +0000330642 00000 n +0000330792 00000 n +0000331001 00000 n +0000330170 00000 n +0000329832 00000 n +0000330943 00000 n +0000452004 00000 n +0000331087 00000 n +0000331559 00000 n +0000332035 00000 n +0000332636 00000 n +0000332720 00000 n +0000332918 00000 n +0000332944 00000 n +0000333324 00000 n +0000334203 00000 n +0000334681 00000 n +0000345366 00000 n +0000345631 00000 n +0000355014 00000 n +0000355284 00000 n +0000362478 00000 n +0000362717 00000 n +0000369746 00000 n +0000369978 00000 n +0000384546 00000 n +0000384975 00000 n +0000402330 00000 n +0000402807 00000 n +0000416889 00000 n +0000417265 00000 n +0000437244 00000 n +0000437842 00000 n +0000451612 00000 n +0000454748 00000 n +0000454868 00000 n +0000454947 00000 n +0000455020 00000 n +0000461673 00000 n +0000461859 00000 n +0000462022 00000 n +0000462280 00000 n +0000462611 00000 n +0000463142 00000 n +0000463673 00000 n +0000464468 00000 n +0000465263 00000 n +0000465860 00000 n +0000466490 00000 n +0000467285 00000 n +0000468080 00000 n +0000468875 00000 n +0000469670 00000 n +0000470465 00000 n +0000471260 00000 n +0000471672 00000 n +0000471851 00000 n +0000472022 00000 n +0000472192 00000 n +0000472363 00000 n +0000472533 00000 n +0000472702 00000 n +0000472881 00000 n +0000473076 00000 n +0000473273 00000 n +0000473600 00000 n +0000474123 00000 n +0000474646 00000 n +0000475169 00000 n +0000475477 00000 n +0000475729 00000 n +0000476020 00000 n +0000476309 00000 n +0000476593 00000 n +0000476876 00000 n +0000477159 00000 n +0000477444 00000 n +0000477695 00000 n +0000477858 00000 n +0000478130 00000 n +0000478323 00000 n +0000478442 00000 n +0000478605 00000 n +0000478779 00000 n +0000478896 00000 n +0000479028 00000 n +0000479127 00000 n +0000479223 00000 n +0000479263 00000 n +0000479444 00000 n trailer -<< /Size 1404 -/Root 1402 0 R -/Info 1403 0 R -/ID [<F402B200711665781F0B684C4A0FC9D9> <F402B200711665781F0B684C4A0FC9D9>] >> +<< /Size 1136 +/Root 1134 0 R +/Info 1135 0 R +/ID [<33DE22F3062993CAE4ECB2B2ECC0D2C2> <33DE22F3062993CAE4ECB2B2ECC0D2C2>] >> startxref -527438 +479771 %%EOF diff --git a/libAACdec/include/aacdecoder_lib.h b/libAACdec/include/aacdecoder_lib.h index 60efe8d..0253c5c 100644 --- a/libAACdec/include/aacdecoder_lib.h +++ b/libAACdec/include/aacdecoder_lib.h @@ -430,21 +430,58 @@ typedef enum { typedef enum { AAC_PCM_OUTPUT_INTERLEAVED = 0x0000, /*!< PCM output mode (1: interleaved (default); 0: not interleaved). */ - AAC_PCM_OUTPUT_CHANNELS = 0x0001, /*!< Number of PCM output channels (if different from encoded audio channels, downmixing or - upmixing is applied). \n - -1: Disable up-/downmixing. The decoder output contains the same number of channels as the - encoded bitstream. \n - 1: The decoder performs a mono matrix mix-down if the encoded audio channels are greater - than one. Thus it ouputs always exact one channel. \n - 2: The decoder performs a stereo matrix mix-down if the encoded audio channels are greater - than two. If the encoded audio channels are smaller than two the decoder duplicates the - output. Thus it ouputs always exact two channels. \n */ - AAC_PCM_DUAL_CHANNEL_OUTPUT_MODE = 0x0002, /*!< Defines how the decoder processes two channel signals: - 0: Leave both signals as they are (default). - 1: Create a dual mono output signal from channel 1. - 2: Create a dual mono output signal from channel 2. + AAC_PCM_DUAL_CHANNEL_OUTPUT_MODE = 0x0002, /*!< Defines how the decoder processes two channel signals: \n + 0: Leave both signals as they are (default). \n + 1: Create a dual mono output signal from channel 1. \n + 2: Create a dual mono output signal from channel 2. \n 3: Create a dual mono output signal by mixing both channels (L' = R' = 0.5*Ch1 + 0.5*Ch2). */ AAC_PCM_OUTPUT_CHANNEL_MAPPING = 0x0003, /*!< Output buffer channel ordering. 0: MPEG PCE style order, 1: WAV file channel order (default). */ + AAC_PCM_MIN_OUTPUT_CHANNELS = 0x0011, /*!< Minimum number of PCM output channels. If higher than the number of encoded audio channels, + a simple channel extension is applied. \n + -1, 0: Disable channel extenstion feature. The decoder output contains the same number of + channels as the encoded bitstream. \n + 1: This value is currently needed only together with the mix-down feature. See + ::AAC_PCM_MAX_OUTPUT_CHANNELS and note 2 below. \n + 2: Encoded mono signals will be duplicated to achieve a 2/0/0.0 channel output + configuration. \n + 6: The decoder trys to reorder encoded signals with less than six channels to achieve + a 3/0/2.1 channel output signal. Missing channels will be filled with a zero signal. + If reordering is not possible the empty channels will simply be appended. Only + available if instance is configured to support multichannel output. \n + 8: The decoder trys to reorder encoded signals with less than eight channels to + achieve a 3/0/4.1 channel output signal. Missing channels will be filled with a + zero signal. If reordering is not possible the empty channels will simply be + appended. Only available if instance is configured to support multichannel output.\n + NOTE: \n + 1. The channel signalling (CStreamInfo::pChannelType and CStreamInfo::pChannelIndices) + will not be modified. Added empty channels will be signalled with channel type + AUDIO_CHANNEL_TYPE::ACT_NONE. \n + 2. If the parameter value is greater than that of ::AAC_PCM_MAX_OUTPUT_CHANNELS both will + be set to the same value. \n + 3. This parameter does not affect MPEG Surround processing. */ + AAC_PCM_MAX_OUTPUT_CHANNELS = 0x0012, /*!< Maximum number of PCM output channels. If lower than the number of encoded audio channels, + downmixing is applied accordingly. If dedicated metadata is available in the stream it + will be used to achieve better mixing results. \n + -1, 0: Disable downmixing feature. The decoder output contains the same number of channels + as the encoded bitstream. \n + 1: All encoded audio configurations with more than one channel will be mixed down to + one mono output signal. \n + 2: The decoder performs a stereo mix-down if the number encoded audio channels is + greater than two. \n + 6: If the number of encoded audio channels is greater than six the decoder performs a + mix-down to meet the target output configuration of 3/0/2.1 channels. Only + available if instance is configured to support multichannel output. \n + 8: This value is currently needed only together with the channel extension feature. + See ::AAC_PCM_MIN_OUTPUT_CHANNELS and note 2 below. Only available if instance is + configured to support multichannel output. \n + NOTE: \n + 1. Down-mixing of any seven or eight channel configuration not defined in ISO/IEC 14496-3 + PDAM 4 is not supported by this software version. \n + 2. If the parameter value is greater than zero but smaller than ::AAC_PCM_MIN_OUTPUT_CHANNELS + both will be set to same value. \n + 3. The operating mode of the MPEG Surround module will be set accordingly. \n + 4. Setting this param with any value will disable the binaural processing of the MPEG + Surround module (::AAC_MPEGS_BINAURAL_ENABLE=0). */ AAC_CONCEAL_METHOD = 0x0100, /*!< Error concealment: Processing method. \n 0: Spectral muting. \n diff --git a/libAACdec/src/aac_ram.cpp b/libAACdec/src/aac_ram.cpp index a38f57c..1ff289b 100644 --- a/libAACdec/src/aac_ram.cpp +++ b/libAACdec/src/aac_ram.cpp @@ -108,15 +108,15 @@ C_ALLOC_MEM(AacDecoder, AAC_DECODER_INSTANCE, 1) /*! The structure CAacDecoderStaticChannelInfo contains the static sideinfo which is needed for the decoding of one aac channel. <br> Dimension: #AacDecoderChannels */ -C_ALLOC_MEM2(AacDecoderStaticChannelInfo, CAacDecoderStaticChannelInfo, 1, (6)) +C_ALLOC_MEM2(AacDecoderStaticChannelInfo, CAacDecoderStaticChannelInfo, 1, (8)) /*! The structure CAacDecoderChannelInfo contains the dynamic sideinfo which is needed for the decoding of one aac channel. <br> Dimension: #AacDecoderChannels */ -C_ALLOC_MEM2(AacDecoderChannelInfo, CAacDecoderChannelInfo, 1, (6)) +C_AALLOC_MEM2(AacDecoderChannelInfo, CAacDecoderChannelInfo, 1, (8)) /*! Overlap buffer */ -C_ALLOC_MEM2(OverlapBuffer, FIXP_DBL, OverlapBufferSize, (6)) +C_ALLOC_MEM2(OverlapBuffer, FIXP_DBL, OverlapBufferSize, (8)) C_ALLOC_MEM(DrcInfo, CDrcInfo, 1) @@ -128,7 +128,7 @@ C_ALLOC_MEM(DrcInfo, CDrcInfo, 1) Dynamic memory areas, might be reused in other algorithm sections, e.g. the sbr decoder */ -C_ALLOC_MEM_OVERLAY(WorkBufferCore2, FIXP_DBL, ((6)*1024), SECT_DATA_L2, WORKBUFFER2_TAG) +C_ALLOC_MEM_OVERLAY(WorkBufferCore2, FIXP_DBL, ((8)*1024), SECT_DATA_L2, WORKBUFFER2_TAG) C_ALLOC_MEM_OVERLAY(WorkBufferCore1, CWorkBufferCore1, 1, SECT_DATA_L1, WORKBUFFER1_TAG) diff --git a/libAACdec/src/aac_rom.cpp b/libAACdec/src/aac_rom.cpp index fa04c42..607cb3b 100644 --- a/libAACdec/src/aac_rom.cpp +++ b/libAACdec/src/aac_rom.cpp @@ -1777,42 +1777,62 @@ const FIXP_TCC FDKaacDec_tnsCoeff4 [16] = }; /* MPEG like mapping (no change). */ -const UCHAR channelMappingTablePassthrough[8][8] = +const UCHAR channelMappingTablePassthrough[15][8] = { + { 0, 1, 2, 3, 4, 5, 6, 7}, /* fallback */ { 0, 1,255,255,255,255,255,255}, /* mono / PS */ { 0, 1,255,255,255,255,255,255}, /* stereo */ { 0, 1, 2,255,255,255,255,255}, /* 3ch */ { 0, 1, 2, 3,255,255,255,255}, /* 4ch */ { 0, 1, 2, 3, 4,255,255,255}, /* 5ch */ { 0, 1, 2, 3, 4, 5,255,255}, /* 5.1ch */ - { 0, 1, 2, 3, 4, 5, 6, 7}, /* 7ch */ - { 0, 1, 2, 3, 4, 5, 6, 7} /* 7.1ch */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* 7.1 front */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* reserved */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* reserved */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* reserved */ + { 0, 1, 2, 3, 4, 5, 6,255}, /* 6.1ch */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* 7.1 rear */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* reserved */ + { 0, 1, 2, 3, 4, 5, 6, 7} /* 7.1 top */ }; /* WAV file like mapping (from MPEG mapping). */ -const UCHAR channelMappingTableWAV[8][8] = +const UCHAR channelMappingTableWAV[15][8] = { + { 0, 1, 2, 3, 4, 5, 6, 7}, /* fallback */ { 0, 1,255,255,255,255,255,255}, /* mono / PS */ { 0, 1,255,255,255,255,255,255}, /* stereo */ { 2, 0, 1,255,255,255,255,255}, /* 3ch */ { 2, 0, 1, 3,255,255,255,255}, /* 4ch */ { 2, 0, 1, 3, 4,255,255,255}, /* 5ch */ { 2, 0, 1, 4, 5, 3,255,255}, /* 5.1ch */ - { 0, 1, 2, 3, 4, 5, 6, 7}, /* 7ch */ - { 2, 0, 1, 6, 7, 4, 5, 3} /* 7.1ch */ + { 2, 6, 7, 0, 1, 4, 5, 3}, /* 7.1 front */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* reserved */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* reserved */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* reserved */ + { 2, 0, 1, 4, 5, 6, 3,255}, /* 6.1ch */ + { 2, 0, 1, 6, 7, 4, 5, 3}, /* 7.1 rear */ + { 0, 1, 2, 3, 4, 5, 6, 7}, /* reserved */ + { 2, 0, 1, 4, 5, 3, 6, 7} /* 7.1 top */ }; /* Lookup tables for elements in ER bitstream */ -const MP4_ELEMENT_ID elementsTab[8][7] = +const MP4_ELEMENT_ID elementsTab[15][7] = { - {ID_SCE, ID_EXT, ID_END, ID_NONE, ID_NONE,ID_NONE,ID_NONE }, /* 1 channel */ - {ID_CPE, ID_EXT, ID_END, ID_NONE, ID_NONE,ID_NONE,ID_NONE } /* 2 channels */ - , - {ID_SCE, ID_CPE, ID_EXT, ID_END, ID_NONE,ID_NONE,ID_NONE }, /* 3 channels */ - {ID_SCE, ID_CPE, ID_SCE, ID_EXT, ID_END, ID_NONE,ID_NONE }, /* 4 channels */ - {ID_SCE, ID_CPE, ID_CPE, ID_EXT, ID_END, ID_NONE,ID_NONE }, /* 5 channels */ - {ID_SCE, ID_CPE, ID_CPE, ID_LFE, ID_EXT, ID_END, ID_NONE }, /* 6 channels */ - {ID_SCE, ID_CPE, ID_CPE, ID_CPE, ID_LFE, ID_EXT, ID_END} /* 8 channels */ + /* 1 */ { ID_SCE, ID_EXT, ID_END, ID_NONE, ID_NONE, ID_NONE, ID_NONE }, /* 1 channel */ + /* 2 */ { ID_CPE, ID_EXT, ID_END, ID_NONE, ID_NONE, ID_NONE, ID_NONE } /* 2 channels */ + /* 3 */ ,{ ID_SCE, ID_CPE, ID_EXT, ID_END, ID_NONE, ID_NONE, ID_NONE }, /* 3 channels */ + /* 4 */ { ID_SCE, ID_CPE, ID_SCE, ID_EXT, ID_END, ID_NONE, ID_NONE }, /* 4 channels */ + /* 5 */ { ID_SCE, ID_CPE, ID_CPE, ID_EXT, ID_END, ID_NONE, ID_NONE }, /* 5 channels */ + /* 6 */ { ID_SCE, ID_CPE, ID_CPE, ID_LFE, ID_EXT, ID_END, ID_NONE } /* 6 channels */ + /* 7 */ ,{ ID_SCE, ID_CPE, ID_CPE, ID_CPE, ID_LFE, ID_EXT, ID_END }, /* 8 channels */ + /* 8 */ { ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE }, /* reserved */ + /* 9 */ { ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE }, /* reserved */ + /* 10 */ { ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE }, /* reserved */ + /* 11 */ { ID_SCE, ID_CPE, ID_CPE, ID_SCE, ID_LFE, ID_EXT, ID_END }, /* 7 channels */ + /* 12 */ { ID_SCE, ID_CPE, ID_CPE, ID_CPE, ID_LFE, ID_EXT, ID_END }, /* 8 channels */ + /* 13 */ { ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE, ID_NONE }, /* reserved */ + /* 14 */ { ID_SCE, ID_CPE, ID_CPE, ID_LFE, ID_CPE, ID_EXT, ID_END } /* 8 channels */ }; /*! Random sign bit used for concealment diff --git a/libAACdec/src/aac_rom.h b/libAACdec/src/aac_rom.h index 536d184..f314a2d 100644 --- a/libAACdec/src/aac_rom.h +++ b/libAACdec/src/aac_rom.h @@ -177,11 +177,12 @@ extern const USHORT randomSign[AAC_NF_NO_RANDOM_VAL/16]; extern const FIXP_DBL pow2_div24minus1[47]; extern const int offsetTab[2][16]; -/* Channel mapping indices for time domain I/O. First dimension is channel count-1. */ -extern const UCHAR channelMappingTablePassthrough[8][8]; -extern const UCHAR channelMappingTableWAV[8][8]; +/* Channel mapping indices for time domain I/O. + The first dimension is the channel configuration index. */ +extern const UCHAR channelMappingTablePassthrough[15][8]; +extern const UCHAR channelMappingTableWAV[15][8]; /* Lookup tables for elements in ER bitstream */ -extern const MP4_ELEMENT_ID elementsTab[8][7]; +extern const MP4_ELEMENT_ID elementsTab[15][7]; #endif /* #ifndef AAC_ROM_H */ diff --git a/libAACdec/src/aacdec_drc.cpp b/libAACdec/src/aacdec_drc.cpp index 2666454..bc74ddf 100644 --- a/libAACdec/src/aacdec_drc.cpp +++ b/libAACdec/src/aacdec_drc.cpp @@ -539,7 +539,7 @@ static int aacDecoder_drcReadCompression ( UINT payloadPosition ) { int bitCnt = 0; - int dmxLevelsPresent, compressionPresent; + int dmxLevelsPresent, extensionPresent, compressionPresent; int coarseGrainTcPresent, fineGrainTcPresent; /* Move to the beginning of the DRC payload field */ @@ -562,7 +562,8 @@ static int aacDecoder_drcReadCompression ( } FDKreadBits(bs, 2); /* dolby_surround_mode */ FDKreadBits(bs, 2); /* presentation_mode */ - if (FDKreadBits(bs, 2) != 0) { /* reserved, set to 0 */ + FDKreadBits(bs, 1); /* stereo_downmix_mode */ + if (FDKreadBits(bs, 1) != 0) { /* reserved, set to 0 */ return 0; } @@ -571,9 +572,7 @@ static int aacDecoder_drcReadCompression ( return 0; } dmxLevelsPresent = FDKreadBits(bs, 1); /* downmixing_levels_MPEG4_status */ - if (FDKreadBits(bs, 1) != 0) { /* reserved, set to 0 */ - return 0; - } + extensionPresent = FDKreadBits(bs, 1); /* ancillary_data_extension_status; */ compressionPresent = FDKreadBits(bs, 1); /* audio_coding_mode_and_compression status */ coarseGrainTcPresent = FDKreadBits(bs, 1); /* coarse_grain_timecode_status */ fineGrainTcPresent = FDKreadBits(bs, 1); /* fine_grain_timecode_status */ @@ -631,6 +630,19 @@ static int aacDecoder_drcReadCompression ( bitCnt += 16; } + /* Read extension just to get the right amount of bits. */ + if (extensionPresent) { + int extBits = 8; + + FDKreadBits(bs, 1); /* reserved, set to 0 */ + if (FDKreadBits(bs, 1)) extBits += 8; /* ext_downmixing_levels_status */ + if (FDKreadBits(bs, 1)) extBits += 16; /* ext_downmixing_global_gains_status */ + if (FDKreadBits(bs, 1)) extBits += 8; /* ext_downmixing_lfe_level_status */ + + FDKpushFor(bs, extBits - 4); /* skip the extension payload remainder. */ + bitCnt += extBits; + } + return (bitCnt); } diff --git a/libAACdec/src/aacdecoder.cpp b/libAACdec/src/aacdecoder.cpp index 3a2a561..7903f76 100644 --- a/libAACdec/src/aacdecoder.cpp +++ b/libAACdec/src/aacdecoder.cpp @@ -338,17 +338,22 @@ AAC_DECODER_ERROR CAacDecoder_AncDataParse ( \return Error code */ static AAC_DECODER_ERROR CDataStreamElement_Read ( + HANDLE_AACDECODER self, HANDLE_FDK_BITSTREAM bs, - CAncData *ancData, - HANDLE_AAC_DRC hDrcInfo, - HANDLE_TRANSPORTDEC pTp, UCHAR *elementInstanceTag, UINT alignmentAnchor ) { + HANDLE_TRANSPORTDEC pTp; + CAncData *ancData; AAC_DECODER_ERROR error = AAC_DEC_OK; - UINT dataStart; + UINT dataStart, dseBits; int dataByteAlignFlag, count; + FDK_ASSERT(self != NULL); + + ancData = &self->ancData; + pTp = self->hInput; + int crcReg = transportDec_CrcStartReg(pTp, 0); /* Element Instance Tag */ @@ -361,6 +366,7 @@ static AAC_DECODER_ERROR CDataStreamElement_Read ( if (count == 255) { count += FDKreadBits(bs,8); /* EscCount */ } + dseBits = count*8; if (dataByteAlignFlag) { FDKbyteAlign(bs, alignmentAnchor); @@ -372,19 +378,29 @@ static AAC_DECODER_ERROR CDataStreamElement_Read ( transportDec_CrcEndReg(pTp, crcReg); { - INT readBits, dataBits = count<<3; - /* Move to the beginning of the data junk */ FDKpushBack(bs, dataStart-FDKgetValidBits(bs)); /* Read Anc data if available */ - readBits = aacDecoder_drcMarkPayload( hDrcInfo, bs, DVB_DRC_ANC_DATA ); + aacDecoder_drcMarkPayload( self->hDrcInfo, bs, DVB_DRC_ANC_DATA ); + } + + { + PCMDMX_ERROR dmxErr = PCMDMX_OK; - if (readBits != dataBits) { - /* Move to the end again. */ - FDKpushBiDirectional(bs, FDKgetValidBits(bs)-dataStart+dataBits); + /* Move to the beginning of the data junk */ + FDKpushBack(bs, dataStart-FDKgetValidBits(bs)); + + /* Read DMX meta-data */ + dmxErr = pcmDmx_Parse ( + self->hPcmUtils, + bs, + dseBits, + 0 /* not mpeg2 */ ); } - } + + /* Move to the very end of the element. */ + FDKpushBiDirectional(bs, FDKgetValidBits(bs)-dataStart+dseBits); return error; } @@ -774,7 +790,7 @@ LINKSPEC_CPP void CAacDecoder_Close(HANDLE_AACDECODER self) if (self == NULL) return; - for (ch=0; ch<(6); ch++) { + for (ch=0; ch<(8); ch++) { if (self->pAacDecoderStaticChannelInfo[ch] != NULL) { if (self->pAacDecoderStaticChannelInfo[ch]->pOverlapBuffer != NULL) { FreeOverlapBuffer (&self->pAacDecoderStaticChannelInfo[ch]->pOverlapBuffer); @@ -851,18 +867,19 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_Init(HANDLE_AACDECODER self, const CS /* valid number of channels -> copy program config element (PCE) from ASC */ FDKmemcpy(&self->pce, &asc->m_progrConfigElement, sizeof(CProgramConfig)); /* Built element table */ - el = CProgramConfig_GetElementTable(&asc->m_progrConfigElement, self->elements, 7); - for (; el<7; el++) { + el = CProgramConfig_GetElementTable(&asc->m_progrConfigElement, self->elements, (8), &self->chMapIndex); + for (; el<(8); el++) { self->elements[el] = ID_NONE; } } else { return AAC_DEC_UNSUPPORTED_CHANNELCONFIG; } } else { + self->chMapIndex = 0; if (transportDec_GetFormat(self->hInput) == TT_MP4_ADTS) { /* set default max_channels for memory allocation because in implicit channel mapping mode we don't know the actual number of channels until we processed at least one raw_data_block(). */ - ascChannels = (6); + ascChannels = (8); } else { return AAC_DEC_UNSUPPORTED_CHANNELCONFIG; } @@ -874,26 +891,34 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_Init(HANDLE_AACDECODER self, const CS case 1: case 2: case 3: case 4: case 5: case 6: ascChannels = asc->m_channelConfiguration; break; - case 7: + case 11: + ascChannels = 7; + break; + case 7: case 12: case 14: ascChannels = 8; break; default: return AAC_DEC_UNSUPPORTED_CHANNELCONFIG; } + if (ascChannels > (8)) { + return AAC_DEC_UNSUPPORTED_CHANNELCONFIG; + } + /* Initialize constant mappings for channel config 1-7 */ if (asc->m_channelConfiguration > 0) { int el; - FDKmemcpy(self->elements, elementsTab[asc->m_channelConfiguration-1], sizeof(MP4_ELEMENT_ID)*FDKmin(7,7)); - for (el=7; el<7; el++) { + FDKmemcpy(self->elements, elementsTab[asc->m_channelConfiguration-1], sizeof(MP4_ELEMENT_ID)*FDKmin(7,(8))); + for (el=7; el<(8); el++) { self->elements[el] = ID_NONE; } for (ch=0; ch<ascChannels; ch++) { self->chMapping[ch] = ch; } - for (; ch<(6); ch++) { + for (; ch<(8); ch++) { self->chMapping[ch] = 255; } + self->chMapIndex = asc->m_channelConfiguration; } #ifdef TP_PCE_ENABLE else { @@ -909,9 +934,6 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_Init(HANDLE_AACDECODER self, const CS self->streamInfo.channelConfig = asc->m_channelConfiguration; - if (ascChannels > (6)) { - return AAC_DEC_UNSUPPORTED_CHANNELCONFIG; - } if (self->streamInfo.aot != asc->m_aot) { self->streamInfo.aot = asc->m_aot; ascChanged = 1; @@ -1096,6 +1118,7 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame( MP4_ELEMENT_ID type = ID_NONE; /* Current element type */ INT aacChannels=0; /* Channel counter for channels found in the bitstream */ + int chOutMapIdx; /* Output channel mapping index (see comment below) */ INT auStartAnchor = (INT)FDKgetValidBits(bs); /* AU start bit buffer position for AU byte alignment */ @@ -1119,12 +1142,12 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame( if (self->streamInfo.channelConfig == 0) { /* Init Channel/Element mapping table */ - for (ch=0; ch<(6); ch++) { + for (ch=0; ch<(8); ch++) { self->chMapping[ch] = 255; } if (!CProgramConfig_IsValid(pce)) { int el; - for (el=0; el<7; el++) { + for (el=0; el<(8); el++) { self->elements[el] = ID_NONE; } } @@ -1378,10 +1401,8 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame( { UCHAR element_instance_tag; - CDataStreamElement_Read( bs, - &self->ancData, - self->hDrcInfo, - self->hInput, + CDataStreamElement_Read( self, + bs, &element_instance_tag, auStartAnchor ); @@ -1401,29 +1422,6 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame( //self->frameOK = 0; } } - - { - UCHAR *pDvbAncData = NULL; - AAC_DECODER_ERROR ancErr; - int ancIndex; - int dvbAncDataSize = 0; - - /* Ask how many anc data elements are in buffer */ - ancIndex = self->ancData.nrElements - 1; - /* Get the last one (if available) */ - ancErr = CAacDecoder_AncDataGet( &self->ancData, - ancIndex, - &pDvbAncData, - &dvbAncDataSize ); - - if (ancErr == AAC_DEC_OK) { - pcmDmx_ReadDvbAncData ( - self->hPcmUtils, - pDvbAncData, - dvbAncDataSize, - 0 /* not mpeg2 */ ); - } - } break; #ifdef TP_PCE_ENABLE @@ -1442,9 +1440,9 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame( } else if ( result > 1 ) { /* Built element table */ - int elIdx = CProgramConfig_GetElementTable(pce, self->elements, 7); + int elIdx = CProgramConfig_GetElementTable(pce, self->elements, (8), &self->chMapIndex); /* Reset the remaining tabs */ - for ( ; elIdx<7; elIdx++) { + for ( ; elIdx<(8); elIdx++) { self->elements[elIdx] = ID_NONE; } /* Make new number of channel persistant */ @@ -1632,6 +1630,23 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame( return ErrorStatus; } + /* Setup the output channel mapping. The table below shows the four possibilities: + * # | chCfg | PCE | cChCfg | chOutMapIdx + * ---+-------+-----+--------+------------------ + * 1 | > 0 | no | - | chCfg + * 2 | 0 | yes | > 0 | cChCfg + * 3 | 0 | yes | 0 | aacChannels || 0 + * 4 | 0 | no | - | aacChannels || 0 + * ---+-------+-----+--------+------------------ + * Where chCfg is the channel configuration index from ASC and cChCfg is a corresponding chCfg + * derived from a given PCE. The variable aacChannels represents the number of channel found + * during bitstream decoding. Due to the structure of the mapping table it can only be used for + * mapping if its value is smaller than 7. Otherwise we use the fallback (0) which is a simple + * pass-through. The possibility #4 should appear only with MPEG-2 (ADTS) streams. This is + * mode is called "implicit channel mapping". + */ + chOutMapIdx = ((self->chMapIndex==0) && (aacChannels<7)) ? aacChannels : self->chMapIndex; + /* Inverse transform */ @@ -1663,10 +1678,10 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame( /* Setup offset and stride for time buffer traversal. */ if (interleaved) { stride = aacChannels; - offset = self->channelOutputMapping[aacChannels-1][c]; + offset = self->channelOutputMapping[chOutMapIdx][c]; } else { stride = 1; - offset = self->channelOutputMapping[aacChannels-1][c] * self->streamInfo.aacSamplesPerFrame; + offset = self->channelOutputMapping[chOutMapIdx][c] * self->streamInfo.aacSamplesPerFrame; } @@ -1746,8 +1761,8 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame( /* Reorder channel type information tables. */ { - AUDIO_CHANNEL_TYPE types[(6)]; - UCHAR idx[(6)]; + AUDIO_CHANNEL_TYPE types[(8)]; + UCHAR idx[(8)]; int c; FDK_ASSERT(sizeof(self->channelType) == sizeof(types)); @@ -1757,8 +1772,8 @@ LINKSPEC_CPP AAC_DECODER_ERROR CAacDecoder_DecodeFrame( FDKmemcpy(idx, self->channelIndices, sizeof(idx)); for (c=0; c<aacChannels; c++) { - self->channelType[self->channelOutputMapping[aacChannels-1][c]] = types[c]; - self->channelIndices[self->channelOutputMapping[aacChannels-1][c]] = idx[c]; + self->channelType[self->channelOutputMapping[chOutMapIdx][c]] = types[c]; + self->channelIndices[self->channelOutputMapping[chOutMapIdx][c]] = idx[c]; } } diff --git a/libAACdec/src/aacdecoder.h b/libAACdec/src/aacdecoder.h index 16351e6..f581054 100644 --- a/libAACdec/src/aacdecoder.h +++ b/libAACdec/src/aacdecoder.h @@ -176,22 +176,23 @@ struct AAC_DECODER_INSTANCE { UINT flags; /*!< Flags for internal decoder use. DO NOT USE self::streaminfo::flags ! */ - MP4_ELEMENT_ID elements[7]; /*!< Table where the element Id's are listed */ - UCHAR elTags[7]; /*!< Table where the elements id Tags are listed */ - UCHAR chMapping[(6)]; /*!< Table of MPEG canonical order to bitstream channel order mapping. */ + MP4_ELEMENT_ID elements[(8)]; /*!< Table where the element Id's are listed */ + UCHAR elTags[(8)]; /*!< Table where the elements id Tags are listed */ + UCHAR chMapping[(8)]; /*!< Table of MPEG canonical order to bitstream channel order mapping. */ - AUDIO_CHANNEL_TYPE channelType[(6)]; /*!< Audio channel type of each output audio channel (from 0 upto numChannels). */ - UCHAR channelIndices[(6)]; /*!< Audio channel index for each output audio channel (from 0 upto numChannels). */ + AUDIO_CHANNEL_TYPE channelType[(8)]; /*!< Audio channel type of each output audio channel (from 0 upto numChannels). */ + UCHAR channelIndices[(8)]; /*!< Audio channel index for each output audio channel (from 0 upto numChannels). */ /* See ISO/IEC 13818-7:2005(E), 8.5.3.2 Explicit channel mapping using a program_config_element() */ const UCHAR (*channelOutputMapping)[8]; /*!< Table for MPEG canonical order to output channel order mapping. */ - + UCHAR chMapIndex; /*!< Index to access one line of the channelOutputMapping table. This is required + because not all 8 channel configurations have the same output mapping. */ CProgramConfig pce; CStreamInfo streamInfo; /*!< pointer to StreamInfo data (read from the bitstream) */ - CAacDecoderChannelInfo *pAacDecoderChannelInfo[(6)]; /*!< Temporal channel memory */ - CAacDecoderStaticChannelInfo *pAacDecoderStaticChannelInfo[(6)]; /*!< Persistent channel memory */ + CAacDecoderChannelInfo *pAacDecoderChannelInfo[(8)]; /*!< Temporal channel memory */ + CAacDecoderStaticChannelInfo *pAacDecoderStaticChannelInfo[(8)]; /*!< Persistent channel memory */ CAacDecoderCommonData aacCommonData; /*!< Temporal shared data for all channels hooked into pAacDecoderChannelInfo */ diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp index ec8f41e..d1b895d 100644 --- a/libAACdec/src/aacdecoder_lib.cpp +++ b/libAACdec/src/aacdecoder_lib.cpp @@ -110,7 +110,7 @@ amm-info@iis.fraunhofer.de /* Decoder library info */ #define AACDECODER_LIB_VL0 2 #define AACDECODER_LIB_VL1 5 -#define AACDECODER_LIB_VL2 5 +#define AACDECODER_LIB_VL2 6 #define AACDECODER_LIB_TITLE "AAC Decoder Lib" #define AACDECODER_LIB_BUILD_DATE __DATE__ #define AACDECODER_LIB_BUILD_TIME __TIME__ @@ -420,8 +420,8 @@ aacDecoder_SetParam ( const HANDLE_AACDECODER self, /*!< Handle of the decode self->outputInterleaved = value; break; - case AAC_PCM_OUTPUT_CHANNELS: - if (value < -1 || value > (6)) { + case AAC_PCM_MIN_OUTPUT_CHANNELS: + if (value < -1 || value > (8)) { return AAC_DEC_SET_PARAM_FAIL; } { @@ -429,7 +429,30 @@ aacDecoder_SetParam ( const HANDLE_AACDECODER self, /*!< Handle of the decode err = pcmDmx_SetParam ( hPcmDmx, - NUMBER_OF_OUTPUT_CHANNELS, + MIN_NUMBER_OF_OUTPUT_CHANNELS, + value ); + + switch (err) { + case PCMDMX_OK: + break; + case PCMDMX_INVALID_HANDLE: + return AAC_DEC_INVALID_HANDLE; + default: + return AAC_DEC_SET_PARAM_FAIL; + } + } + break; + + case AAC_PCM_MAX_OUTPUT_CHANNELS: + if (value < -1 || value > (8)) { + return AAC_DEC_SET_PARAM_FAIL; + } + { + PCMDMX_ERROR err; + + err = pcmDmx_SetParam ( + hPcmDmx, + MAX_NUMBER_OF_OUTPUT_CHANNELS, value ); switch (err) { @@ -449,7 +472,7 @@ aacDecoder_SetParam ( const HANDLE_AACDECODER self, /*!< Handle of the decode err = pcmDmx_SetParam ( hPcmDmx, - DUAL_CHANNEL_DOWNMIX_MODE, + DMX_DUAL_CHANNEL_MODE, value ); switch (err) { @@ -825,6 +848,7 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame( if (self->sbrEnabled) { SBR_ERROR sbrError = SBRDEC_OK; + int chOutMapIdx = ((self->chMapIndex==0) && (self->streamInfo.numChannels<7)) ? self->streamInfo.numChannels : self->chMapIndex; /* set params */ sbrDecoder_SetParam ( self->hSbrDecoder, @@ -838,7 +862,16 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame( (self->flags & AC_LD_MPS) ? 1 : 0 ); } + { + PCMDMX_ERROR dmxErr; + INT maxOutCh = 0; + dmxErr = pcmDmx_GetParam(self->hPcmUtils, MAX_NUMBER_OF_OUTPUT_CHANNELS, &maxOutCh); + if ( (dmxErr == PCMDMX_OK) && (maxOutCh == 1) ) { + /* Disable PS processing if we have to create a mono output signal. */ + self->psPossible = 0; + } + } /* apply SBR processing */ @@ -846,7 +879,7 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame( pTimeData, &self->streamInfo.numChannels, &self->streamInfo.sampleRate, - self->channelOutputMapping[self->streamInfo.numChannels-1], + self->channelOutputMapping[chOutMapIdx], interleaved, self->frameOK, &self->psPossible); @@ -870,19 +903,19 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame( self->channelType[1] = ACT_FRONT; self->channelIndices[0] = 0; self->channelIndices[1] = 1; - } else { - self->flags &= ~AC_PS_PRESENT; } } } + { + PCMDMX_ERROR dmxErr = PCMDMX_OK; if ( flags & (AACDEC_INTR | AACDEC_CLRHIST) ) { /* delete data from the past (e.g. mixdown coeficients) */ pcmDmx_Reset( self->hPcmUtils, PCMDMX_RESET_BS_DATA ); } /* do PCM post processing */ - pcmDmx_ApplyFrame ( + dmxErr = pcmDmx_ApplyFrame ( self->hPcmUtils, pTimeData, self->streamInfo.frameSize, @@ -890,9 +923,15 @@ LINKSPEC_CPP AAC_DECODER_ERROR aacDecoder_DecodeFrame( interleaved, self->channelType, self->channelIndices, - self->channelOutputMapping + self->channelOutputMapping, + NULL ); - + if (dmxErr == PCMDMX_INVALID_MODE) { + /* Announce the framework that the current combination of channel configuration and downmix + * settings are not know to produce a predictable behavior and thus maybe produce strange output. */ + ErrorStatus = AAC_DEC_DECODE_FRAME_ERROR; + } + } /* Signal interruption to take effect in next frame. */ diff --git a/libAACdec/src/conceal.cpp b/libAACdec/src/conceal.cpp index c26051c..1c313ef 100644 --- a/libAACdec/src/conceal.cpp +++ b/libAACdec/src/conceal.cpp @@ -762,7 +762,6 @@ int CConcealment_UpdateState( hConcealmentInfo, frameOk ); - if ( !frameOk ) { /* Create data for signal rendering according to the selected concealment method and decoder operating mode. */ @@ -775,11 +774,13 @@ int { default: case ConcealMethodMute: - /* Mute spectral data in case of errors */ - FDKmemclear(pAacDecoderChannelInfo->pSpectralCoefficient, samplesPerFrame * sizeof(FIXP_DBL)); - /* Set last window shape */ - pAacDecoderChannelInfo->icsInfo.WindowShape = hConcealmentInfo->windowShape; - appliedProcessing = 1; + if (!frameOk) { + /* Mute spectral data in case of errors */ + FDKmemclear(pAacDecoderChannelInfo->pSpectralCoefficient, samplesPerFrame * sizeof(FIXP_DBL)); + /* Set last window shape */ + pAacDecoderChannelInfo->icsInfo.WindowShape = hConcealmentInfo->windowShape; + appliedProcessing = 1; + } break; case ConcealMethodNoise: @@ -801,7 +802,7 @@ int pSamplingRateInfo, samplesPerFrame, 0, /* don't use tonal improvement */ - 0); + frameOk); break; } diff --git a/libMpegTPDec/include/tp_data.h b/libMpegTPDec/include/tp_data.h index 5269858..c6e89b5 100644 --- a/libMpegTPDec/include/tp_data.h +++ b/libMpegTPDec/include/tp_data.h @@ -146,12 +146,15 @@ typedef struct UCHAR FrontElementIsCpe[PC_FSB_CHANNELS_MAX]; UCHAR FrontElementTagSelect[PC_FSB_CHANNELS_MAX]; + UCHAR FrontElementHeightInfo[PC_FSB_CHANNELS_MAX]; UCHAR SideElementIsCpe[PC_FSB_CHANNELS_MAX]; UCHAR SideElementTagSelect[PC_FSB_CHANNELS_MAX]; + UCHAR SideElementHeightInfo[PC_FSB_CHANNELS_MAX]; UCHAR BackElementIsCpe[PC_FSB_CHANNELS_MAX]; UCHAR BackElementTagSelect[PC_FSB_CHANNELS_MAX]; + UCHAR BackElementHeightInfo[PC_FSB_CHANNELS_MAX]; UCHAR LfeElementTagSelect[PC_LFE_CHANNELS_MAX]; @@ -324,16 +327,23 @@ int getSamplingRateIndex( UINT samplingRate ) */ static inline int getNumberOfTotalChannels(int channelConfig) { - if (channelConfig > 0 && channelConfig < 8) - return (channelConfig == 7)?8:channelConfig; - else + switch (channelConfig) { + case 1: case 2: case 3: + case 4: case 5: case 6: + return channelConfig; + case 7: case 12: case 14: + return 8; + case 11: + return 7; + default: return 0; + } } static inline int getNumberOfEffectiveChannels(const int channelConfig) -{ - const int n[] = {0,1,2,3,4,5,5,7}; +{ /* index: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 */ + const int n[] = {0,1,2,3,4,5,5,7,0,0, 0, 6, 7, 0, 7, 0}; return n[channelConfig]; } diff --git a/libMpegTPDec/include/tpdec_lib.h b/libMpegTPDec/include/tpdec_lib.h index fb4c41d..2ad397d 100644 --- a/libMpegTPDec/include/tpdec_lib.h +++ b/libMpegTPDec/include/tpdec_lib.h @@ -151,6 +151,7 @@ typedef enum { #define PC_ASSOCDATA_MAX 8 #define PC_CCEL_MAX 16 /* CC elements */ #define PC_COMMENTLENGTH 256 +#define PC_NUM_HEIGHT_LAYER 3 /*! @@ -239,14 +240,20 @@ int CProgramConfig_LookupElement( ); /** - * \brief Get table of elements in canonical order. - * \param pPce A valid program config structure. - * \param table An array where the element IDs are stored. - * \return Total element count including all SCE, CPE and LFE. + * \brief Get table of elements in canonical order from a + * give program config field. + * \param pPce A valid program config structure. + * \param table An array where the element IDs are stored. + * \param elListSize The length of the table array. + * \param pChMapIdx Pointer to a field receiving the corresponding + * implicit channel configuration index of the given + * PCE. If none can be found it receives the value 0. + * \return Total element count including all SCE, CPE and LFE. */ int CProgramConfig_GetElementTable( const CProgramConfig *pPce, MP4_ELEMENT_ID table[], - const INT elListSize ); + const INT elListSize, + UCHAR *pChMapIdx ); /** * \brief Initialize a given AudioSpecificConfig structure. diff --git a/libMpegTPDec/src/tpdec_asc.cpp b/libMpegTPDec/src/tpdec_asc.cpp index 4d7cc02..82adec1 100644 --- a/libMpegTPDec/src/tpdec_asc.cpp +++ b/libMpegTPDec/src/tpdec_asc.cpp @@ -90,6 +90,9 @@ amm-info@iis.fraunhofer.de #include "tpdec_lib.h" #include "tp_data.h" +#ifdef TP_PCE_ENABLE +#include "FDK_crc.h" +#endif void CProgramConfig_Reset(CProgramConfig *pPce) @@ -111,13 +114,75 @@ int CProgramConfig_IsValid ( const CProgramConfig *pPce ) } #ifdef TP_PCE_ENABLE +#define PCE_HEIGHT_EXT_SYNC ( 0xAC ) + +/* + * Read the extension for height info. + * return 0 if successfull or -1 if the CRC failed. + */ +static +int CProgramConfig_ReadHeightExt( + CProgramConfig *pPce, + HANDLE_FDK_BITSTREAM bs, + int * const bytesAvailable, + const UINT alignmentAnchor + ) +{ + int err = 0; + FDK_CRCINFO crcInfo; /* CRC state info */ + INT crcReg; + FDKcrcInit(&crcInfo, 0x07, 0xFF, 8); + crcReg = FDKcrcStartReg(&crcInfo, bs, 0); + UINT startAnchor = FDKgetValidBits(bs); + + FDK_ASSERT(pPce != NULL); + FDK_ASSERT(bs != NULL); + FDK_ASSERT(bytesAvailable != NULL); + + if ( (startAnchor >= 24) && (*bytesAvailable >= 3) + && (FDKreadBits(bs,8) == PCE_HEIGHT_EXT_SYNC) ) + { + int i; + + for (i=0; i < pPce->NumFrontChannelElements; i++) + { + pPce->FrontElementHeightInfo[i] = (UCHAR) FDKreadBits(bs,2); + } + for (i=0; i < pPce->NumSideChannelElements; i++) + { + pPce->SideElementHeightInfo[i] = (UCHAR) FDKreadBits(bs,2); + } + for (i=0; i < pPce->NumBackChannelElements; i++) + { + pPce->BackElementHeightInfo[i] = (UCHAR) FDKreadBits(bs,2); + } + FDKbyteAlign(bs, alignmentAnchor); + + FDKcrcEndReg(&crcInfo, bs, crcReg); + if ((USHORT)FDKreadBits(bs,8) != FDKcrcGetCRC(&crcInfo)) { + /* CRC failed */ + err = -1; + } + } + else { + /* No valid extension data found -> restore the initial bitbuffer state */ + FDKpushBack(bs, startAnchor - FDKgetValidBits(bs)); + } + + /* Always report the bytes read. */ + *bytesAvailable -= (startAnchor - FDKgetValidBits(bs)) >> 3; + + return (err); +} + void CProgramConfig_Read( CProgramConfig *pPce, HANDLE_FDK_BITSTREAM bs, UINT alignmentAnchor ) { - int i; + int i, err = 0; + int commentBytes; pPce->NumEffectiveChannels = 0; pPce->NumChannels = 0; @@ -190,8 +255,12 @@ void CProgramConfig_Read( FDKbyteAlign(bs, alignmentAnchor); pPce->CommentFieldBytes = (UCHAR) FDKreadBits(bs,8); + commentBytes = pPce->CommentFieldBytes; + + /* Search for height info extension and read it if available */ + err = CProgramConfig_ReadHeightExt( pPce, bs, &commentBytes, alignmentAnchor ); - for (i=0; i < pPce->CommentFieldBytes; i++) + for (i=0; i < commentBytes; i++) { UCHAR text; @@ -203,7 +272,7 @@ void CProgramConfig_Read( } } - pPce->isValid = 1; + pPce->isValid = (err) ? 0 : 1; } /* @@ -235,6 +304,10 @@ int CProgramConfig_Compare ( const CProgramConfig * const pPce1, } else { int el, numCh1 = 0, numCh2 = 0; for (el = 0; el < pPce1->NumFrontChannelElements; el += 1) { + if (pPce1->FrontElementHeightInfo[el] != pPce2->FrontElementHeightInfo[el]) { + result = 2; /* different height info */ + break; + } numCh1 += pPce1->FrontElementIsCpe[el] ? 2 : 1; numCh2 += pPce2->FrontElementIsCpe[el] ? 2 : 1; } @@ -248,6 +321,10 @@ int CProgramConfig_Compare ( const CProgramConfig * const pPce1, } else { int el, numCh1 = 0, numCh2 = 0; for (el = 0; el < pPce1->NumSideChannelElements; el += 1) { + if (pPce1->SideElementHeightInfo[el] != pPce2->SideElementHeightInfo[el]) { + result = 2; /* different height info */ + break; + } numCh1 += pPce1->SideElementIsCpe[el] ? 2 : 1; numCh2 += pPce2->SideElementIsCpe[el] ? 2 : 1; } @@ -261,6 +338,10 @@ int CProgramConfig_Compare ( const CProgramConfig * const pPce1, } else { int el, numCh1 = 0, numCh2 = 0; for (el = 0; el < pPce1->NumBackChannelElements; el += 1) { + if (pPce1->BackElementHeightInfo[el] != pPce2->BackElementHeightInfo[el]) { + result = 2; /* different height info */ + break; + } numCh1 += pPce1->BackElementIsCpe[el] ? 2 : 1; numCh2 += pPce2->BackElementIsCpe[el] ? 2 : 1; } @@ -290,6 +371,44 @@ void CProgramConfig_GetDefault( CProgramConfig *pPce, switch (channelConfig) { /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + case 32: /* 7.1 side channel configuration as defined in FDK_audio.h */ + pPce->NumFrontChannelElements = 2; + pPce->FrontElementIsCpe[0] = 0; + pPce->FrontElementIsCpe[1] = 1; + pPce->NumSideChannelElements = 1; + pPce->SideElementIsCpe[0] = 1; + pPce->NumBackChannelElements = 1; + pPce->BackElementIsCpe[0] = 1; + pPce->NumLfeChannelElements = 1; + pPce->NumChannels = 8; + pPce->NumEffectiveChannels = 7; + pPce->isValid = 1; + break; + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + case 12: /* 3/0/4.1ch surround back */ + pPce->BackElementIsCpe[1] = 1; + pPce->NumChannels += 1; + pPce->NumEffectiveChannels += 1; + case 11: /* 3/0/3.1ch */ + pPce->NumFrontChannelElements += 2; + pPce->FrontElementIsCpe[0] = 0; + pPce->FrontElementIsCpe[1] = 1; + pPce->NumBackChannelElements += 2; + pPce->BackElementIsCpe[0] = 1; + pPce->BackElementIsCpe[1] += 0; + pPce->NumLfeChannelElements += 1; + pPce->NumChannels += 7; + pPce->NumEffectiveChannels += 6; + pPce->isValid = 1; + break; + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + case 14: /* 2/0/0-3/0/2-0.1ch front height */ + pPce->FrontElementHeightInfo[2] = 1; /* Top speaker */ + case 7: /* 5/0/2.1ch front */ + pPce->NumFrontChannelElements += 1; + pPce->FrontElementIsCpe[2] = 1; + pPce->NumChannels += 2; + pPce->NumEffectiveChannels += 2; case 6: /* 3/0/2.1ch */ pPce->NumLfeChannelElements += 1; pPce->NumChannels += 1; @@ -348,10 +467,11 @@ void CProgramConfig_GetDefault( CProgramConfig *pPce, /** * \brief get implicit audio channel type for given channelConfig and MPEG ordered channel index - * \param channelConfig MPEG channelConfiguration from 1 upto 7 + * \param channelConfig MPEG channelConfiguration from 1 upto 14 * \param index MPEG channel order index * \return audio channel type. */ +static void getImplicitAudioChannelTypeAndIndex( AUDIO_CHANNEL_TYPE *chType, UCHAR *chIndex, @@ -364,9 +484,9 @@ void getImplicitAudioChannelTypeAndIndex( *chIndex = index; } else { switch (channelConfig) { - case MODE_1_2_1: - case MODE_1_2_2: - case MODE_1_2_2_1: + case 4: /* SCE, CPE, SCE */ + case 5: /* SCE, CPE, CPE */ + case 6: /* SCE, CPE, CPE, LFE */ switch (index) { case 3: case 4: @@ -379,12 +499,12 @@ void getImplicitAudioChannelTypeAndIndex( break; } break; - case MODE_1_2_2_2_1: + case 7: /* SCE,CPE,CPE,CPE,LFE */ switch (index) { case 3: case 4: - *chType = ACT_SIDE; - *chIndex = index - 3; + *chType = ACT_FRONT; + *chIndex = index; break; case 5: case 6: @@ -397,6 +517,42 @@ void getImplicitAudioChannelTypeAndIndex( break; } break; + case 11: /* SCE,CPE,CPE,SCE,LFE */ + if (index < 6) { + *chType = ACT_BACK; + *chIndex = index - 3; + } else { + *chType = ACT_LFE; + *chIndex = 0; + } + break; + case 12: /* SCE,CPE,CPE,CPE,LFE */ + if (index < 7) { + *chType = ACT_BACK; + *chIndex = index - 3; + } else { + *chType = ACT_LFE; + *chIndex = 0; + } + break; + case 14: /* SCE,CPE,CPE,LFE,CPE */ + switch (index) { + case 3: + case 4: + *chType = ACT_BACK; + *chIndex = index - 3; + break; + case 5: + *chType = ACT_LFE; + *chIndex = 0; + break; + case 6: + case 7: + *chType = ACT_FRONT_TOP; + *chIndex = index - 6; /* handle the top layer independently */ + break; + } + break; default: *chType = ACT_NONE; break; @@ -467,7 +623,24 @@ int CProgramConfig_LookupElement( else { /* Accept the additional channel(s), only if the tag is in the lists */ int isCpe = 0, i; - int cc = 0, fc = 0, sc = 0, bc = 0, lc = 0, ec = 0; /* Channel and element counters */ + /* Element counter */ + int ec[PC_NUM_HEIGHT_LAYER] = {0}; + /* Channel counters */ + int cc[PC_NUM_HEIGHT_LAYER] = {0}; + int fc[PC_NUM_HEIGHT_LAYER] = {0}; + int sc[PC_NUM_HEIGHT_LAYER] = {0}; + int bc[PC_NUM_HEIGHT_LAYER] = {0}; + int lc = 0;; + + /* General MPEG (PCE) composition rules: + - Over all: + <normal height channels><top height channels><bottom height channels> + - Within each height layer: + <front channels><side channels><back channels> + - Exception: + The LFE channels have no height info and thus they are arranged at the very + end of the normal height layer channels. + */ switch (elType) { @@ -476,87 +649,206 @@ int CProgramConfig_LookupElement( case ID_SCE: /* search in front channels */ for (i = 0; i < pPce->NumFrontChannelElements; i++) { + int heightLayer = pPce->FrontElementHeightInfo[i]; if (isCpe == pPce->FrontElementIsCpe[i] && pPce->FrontElementTagSelect[i] == tag) { - chMapping[cc] = channelIdx; - chType[cc] = ACT_FRONT; - chIndex[cc] = fc; + int h, elIdx = ec[heightLayer], chIdx = cc[heightLayer]; + AUDIO_CHANNEL_TYPE aChType = (AUDIO_CHANNEL_TYPE)((heightLayer<<4) | ACT_FRONT); + for (h = heightLayer-1; h >= 0; h-=1) { + int el; + /* Count front channels/elements */ + for (el = 0; el < pPce->NumFrontChannelElements; el+=1) { + if (pPce->FrontElementHeightInfo[el] == h) { + elIdx += 1; + chIdx += (pPce->FrontElementIsCpe[el]) ? 2 : 1; + } + } + /* Count side channels/elements */ + for (el = 0; el < pPce->NumSideChannelElements; el+=1) { + if (pPce->SideElementHeightInfo[el] == h) { + elIdx += 1; + chIdx += (pPce->SideElementIsCpe[el]) ? 2 : 1; + } + } + /* Count back channels/elements */ + for (el = 0; el < pPce->NumBackChannelElements; el+=1) { + if (pPce->BackElementHeightInfo[el] == h) { + elIdx += 1; + chIdx += (pPce->BackElementIsCpe[el]) ? 2 : 1; + } + } + if (h == 0) { /* normal height */ + elIdx += pPce->NumLfeChannelElements; + chIdx += pPce->NumLfeChannelElements; + } + } + chMapping[chIdx] = channelIdx; + chType[chIdx] = aChType; + chIndex[chIdx] = fc[heightLayer]; if (isCpe) { - chMapping[cc+1] = channelIdx+1; - chType[cc+1] = ACT_FRONT; - chIndex[cc+1] = fc+1; + chMapping[chIdx+1] = channelIdx+1; + chType[chIdx+1] = aChType; + chIndex[chIdx+1] = fc[heightLayer]+1; } - *elMapping = ec; + *elMapping = elIdx; return 1; } - ec++; + ec[heightLayer] += 1; if (pPce->FrontElementIsCpe[i]) { - cc+=2; fc+=2; + cc[heightLayer] += 2; + fc[heightLayer] += 2; } else { - cc++; fc++; + cc[heightLayer] += 1; + fc[heightLayer] += 1; } } /* search in side channels */ for (i = 0; i < pPce->NumSideChannelElements; i++) { + int heightLayer = pPce->SideElementHeightInfo[i]; if (isCpe == pPce->SideElementIsCpe[i] && pPce->SideElementTagSelect[i] == tag) { - chMapping[cc] = channelIdx; - chType[cc] = ACT_SIDE; - chIndex[cc] = sc; + int h, elIdx = ec[heightLayer], chIdx = cc[heightLayer]; + AUDIO_CHANNEL_TYPE aChType = (AUDIO_CHANNEL_TYPE)((heightLayer<<4) | ACT_SIDE); + for (h = heightLayer-1; h >= 0; h-=1) { + int el; + /* Count front channels/elements */ + for (el = 0; el < pPce->NumFrontChannelElements; el+=1) { + if (pPce->FrontElementHeightInfo[el] == h) { + elIdx += 1; + chIdx += (pPce->FrontElementIsCpe[el]) ? 2 : 1; + } + } + /* Count side channels/elements */ + for (el = 0; el < pPce->NumSideChannelElements; el+=1) { + if (pPce->SideElementHeightInfo[el] == h) { + elIdx += 1; + chIdx += (pPce->SideElementIsCpe[el]) ? 2 : 1; + } + } + /* Count back channels/elements */ + for (el = 0; el < pPce->NumBackChannelElements; el+=1) { + if (pPce->BackElementHeightInfo[el] == h) { + elIdx += 1; + chIdx += (pPce->BackElementIsCpe[el]) ? 2 : 1; + } + } + if (h == 0) { /* LFE channels belong to the normal height layer */ + elIdx += pPce->NumLfeChannelElements; + chIdx += pPce->NumLfeChannelElements; + } + } + chMapping[chIdx] = channelIdx; + chType[chIdx] = aChType; + chIndex[chIdx] = sc[heightLayer]; if (isCpe) { - chMapping[cc+1] = channelIdx+1; - chType[cc+1] = ACT_SIDE; - chIndex[cc+1] = sc+1; + chMapping[chIdx+1] = channelIdx+1; + chType[chIdx+1] = aChType; + chIndex[chIdx+1] = sc[heightLayer]+1; } - *elMapping = ec; + *elMapping = elIdx; return 1; } - ec++; + ec[heightLayer] += 1; if (pPce->SideElementIsCpe[i]) { - cc+=2; sc+=2; + cc[heightLayer] += 2; + sc[heightLayer] += 2; } else { - cc++; sc++; + cc[heightLayer] += 1; + sc[heightLayer] += 1; } } /* search in back channels */ for (i = 0; i < pPce->NumBackChannelElements; i++) { + int heightLayer = pPce->BackElementHeightInfo[i]; if (isCpe == pPce->BackElementIsCpe[i] && pPce->BackElementTagSelect[i] == tag) { - chMapping[cc] = channelIdx; - chType[cc] = ACT_BACK; - chIndex[cc] = bc; + int h, elIdx = ec[heightLayer], chIdx = cc[heightLayer]; + AUDIO_CHANNEL_TYPE aChType = (AUDIO_CHANNEL_TYPE)((heightLayer<<4) | ACT_BACK); + for (h = heightLayer-1; h >= 0; h-=1) { + int el; + /* Count front channels/elements */ + for (el = 0; el < pPce->NumFrontChannelElements; el+=1) { + if (pPce->FrontElementHeightInfo[el] == h) { + elIdx += 1; + chIdx += (pPce->FrontElementIsCpe[el]) ? 2 : 1; + } + } + /* Count side channels/elements */ + for (el = 0; el < pPce->NumSideChannelElements; el+=1) { + if (pPce->SideElementHeightInfo[el] == h) { + elIdx += 1; + chIdx += (pPce->SideElementIsCpe[el]) ? 2 : 1; + } + } + /* Count back channels/elements */ + for (el = 0; el < pPce->NumBackChannelElements; el+=1) { + if (pPce->BackElementHeightInfo[el] == h) { + elIdx += 1; + chIdx += (pPce->BackElementIsCpe[el]) ? 2 : 1; + } + } + if (h == 0) { /* normal height */ + elIdx += pPce->NumLfeChannelElements; + chIdx += pPce->NumLfeChannelElements; + } + } + chMapping[chIdx] = channelIdx; + chType[chIdx] = aChType; + chIndex[chIdx] = bc[heightLayer]; if (isCpe) { - chMapping[cc+1] = channelIdx+1; - chType[cc+1] = ACT_BACK; - chIndex[cc+1] = bc+1; + chMapping[chIdx+1] = channelIdx+1; + chType[chIdx+1] = aChType; + chIndex[chIdx+1] = bc[heightLayer]+1; } - *elMapping = ec; + *elMapping = elIdx; return 1; } - ec++; + ec[heightLayer] += 1; if (pPce->BackElementIsCpe[i]) { - cc+=2; bc+=2; + cc[heightLayer] += 2; + bc[heightLayer] += 2; } else { - cc++; bc++; + cc[heightLayer] += 1; + bc[heightLayer] += 1; } } break; case ID_LFE: - /* Initialize channel counter and element counter */ - cc = pPce->NumEffectiveChannels; - ec = pPce->NumFrontChannelElements+ pPce->NumSideChannelElements + pPce->NumBackChannelElements; + { /* Unfortunately we have to go through all normal height + layer elements to get the position of the LFE channels. + Start with counting the front channels/elements at normal height */ + for (i = 0; i < pPce->NumFrontChannelElements; i+=1) { + int heightLayer = pPce->FrontElementHeightInfo[i]; + ec[heightLayer] += 1; + cc[heightLayer] += (pPce->FrontElementIsCpe[i]) ? 2 : 1; + } + /* Count side channels/elements at normal height */ + for (i = 0; i < pPce->NumSideChannelElements; i+=1) { + int heightLayer = pPce->SideElementHeightInfo[i]; + ec[heightLayer] += 1; + cc[heightLayer] += (pPce->SideElementIsCpe[i]) ? 2 : 1; + } + /* Count back channels/elements at normal height */ + for (i = 0; i < pPce->NumBackChannelElements; i+=1) { + int heightLayer = pPce->BackElementHeightInfo[i]; + ec[heightLayer] += 1; + cc[heightLayer] += (pPce->BackElementIsCpe[i]) ? 2 : 1; + } + /* search in lfe channels */ for (i = 0; i < pPce->NumLfeChannelElements; i++) { + int elIdx = ec[0]; /* LFE channels belong to the normal height layer */ + int chIdx = cc[0]; if ( pPce->LfeElementTagSelect[i] == tag ) { - chMapping[cc] = channelIdx; - *elMapping = ec; - chType[cc] = ACT_LFE; - chIndex[cc] = lc; + chMapping[chIdx] = channelIdx; + *elMapping = elIdx; + chType[chIdx] = ACT_LFE; + chIndex[chIdx] = lc; return 1; } - ec++; - cc++; - lc++; + ec[0] += 1; + cc[0] += 1; + lc += 1; } - break; + } break; /* Non audio elements */ case ID_CCE: @@ -590,13 +882,19 @@ int CProgramConfig_LookupElement( int CProgramConfig_GetElementTable( const CProgramConfig *pPce, MP4_ELEMENT_ID elList[], - const INT elListSize + const INT elListSize, + UCHAR *pChMapIdx ) { int i, el = 0; - if ( elListSize - < pPce->NumFrontChannelElements + pPce->NumSideChannelElements + pPce->NumBackChannelElements + pPce->NumLfeChannelElements + FDK_ASSERT(elList != NULL); + FDK_ASSERT(pChMapIdx != NULL); + + *pChMapIdx = 0; + + if ( elListSize + < pPce->NumFrontChannelElements + pPce->NumSideChannelElements + pPce->NumBackChannelElements + pPce->NumLfeChannelElements ) { return 0; @@ -623,6 +921,47 @@ int CProgramConfig_GetElementTable( } + /* Find an corresponding channel configuration if possible */ + switch (pPce->NumChannels) { + case 1: case 2: case 3: case 4: case 5: case 6: + /* One and two channels have no alternatives. The other ones are mapped directly to the + corresponding channel config. Because of legacy reasons or for lack of alternative mappings. */ + *pChMapIdx = pPce->NumChannels; + break; + case 7: + { + C_ALLOC_SCRATCH_START(tmpPce, CProgramConfig, 1); + /* Create a PCE for the config to test ... */ + CProgramConfig_GetDefault(tmpPce, 11); + /* ... and compare it with the given one. */ + *pChMapIdx = (!(CProgramConfig_Compare(pPce, tmpPce)&0xE)) ? 11 : 0; + /* If compare result is 0 or 1 we can be sure that it is channel config 11. */ + C_ALLOC_SCRATCH_END(tmpPce, CProgramConfig, 1); + } + break; + case 8: + { /* Try the four possible 7.1ch configurations. One after the other. */ + UCHAR testCfg[4] = { 32, 14, 12, 7}; + C_ALLOC_SCRATCH_START(tmpPce, CProgramConfig, 1); + for (i=0; i<4; i+=1) { + /* Create a PCE for the config to test ... */ + CProgramConfig_GetDefault(tmpPce, testCfg[i]); + /* ... and compare it with the given one. */ + if (!(CProgramConfig_Compare(pPce, tmpPce)&0xE)) { + /* If the compare result is 0 or 1 than the two channel configurations match. */ + /* Explicit mapping of 7.1 side channel configuration to 7.1 rear channel mapping. */ + *pChMapIdx = (testCfg[i]==32) ? 12 : testCfg[i]; + } + } + C_ALLOC_SCRATCH_END(tmpPce, CProgramConfig, 1); + } + break; + default: + /* The PCE does not match any predefined channel configuration. */ + *pChMapIdx = 0; + break; + } + return el; } #endif @@ -714,7 +1053,7 @@ TRANSPORTDEC_ERROR GaSpecificConfig_Parse( CSGaSpecificConfig *self, #ifdef TP_ELD_ENABLE static INT ld_sbr_header( const CSAudioSpecificConfig *asc, - HANDLE_FDK_BITSTREAM hBs, + HANDLE_FDK_BITSTREAM hBs, CSTpCallBacks *cb ) { const int channelConfiguration = asc->m_channelConfiguration; @@ -728,6 +1067,8 @@ static INT ld_sbr_header( const CSAudioSpecificConfig *asc, } switch ( channelConfiguration ) { + case 14: + case 12: case 7: error |= cb->cbSbr(cb->cbSbrData, hBs, asc->m_samplingFrequency, asc->m_extensionSamplingFrequency, asc->m_samplesPerFrame, AOT_ER_AAC_ELD, ID_CPE, i++); case 6: @@ -737,6 +1078,8 @@ static INT ld_sbr_header( const CSAudioSpecificConfig *asc, error |= cb->cbSbr(cb->cbSbrData, hBs, asc->m_samplingFrequency, asc->m_extensionSamplingFrequency, asc->m_samplesPerFrame, AOT_ER_AAC_ELD, ID_CPE, i++); break; + case 11: + error |= cb->cbSbr(cb->cbSbrData, hBs, asc->m_samplingFrequency, asc->m_extensionSamplingFrequency, asc->m_samplesPerFrame, AOT_ER_AAC_ELD, ID_CPE, i++); case 4: error |= cb->cbSbr(cb->cbSbrData, hBs, asc->m_samplingFrequency, asc->m_extensionSamplingFrequency, asc->m_samplesPerFrame, AOT_ER_AAC_ELD, ID_CPE, i++); error |= cb->cbSbr(cb->cbSbrData, hBs, asc->m_samplingFrequency, asc->m_extensionSamplingFrequency, asc->m_samplesPerFrame, AOT_ER_AAC_ELD, ID_SCE, i++); @@ -802,24 +1145,6 @@ TRANSPORTDEC_ERROR EldSpecificConfig_Parse( } switch (eldExtType) { - case ELDEXT_LDSAC: - esc->m_useLdQmfTimeAlign = 1; - if (cb->cbSsc != NULL) { - ErrorStatus = (TRANSPORTDEC_ERROR)cb->cbSsc( - cb->cbSscData, - hBs, - asc->m_aot, - asc->m_samplingFrequency, - 1, /* muxMode */ - len - ); - } else { - ErrorStatus = TRANSPORTDEC_UNSUPPORTED_FORMAT; - } - if (ErrorStatus != TRANSPORTDEC_OK) { - goto bail; - } - break; default: for(cnt=0; cnt<len; cnt++) { FDKreadBits(hBs, 8 ); diff --git a/libMpegTPDec/src/version b/libMpegTPDec/src/version index 2803347..cda01c8 100644 --- a/libMpegTPDec/src/version +++ b/libMpegTPDec/src/version @@ -2,7 +2,7 @@ /* library info */ #define TP_LIB_VL0 2 #define TP_LIB_VL1 3 -#define TP_LIB_VL2 3 +#define TP_LIB_VL2 4 #define TP_LIB_TITLE "MPEG Transport" #define TP_LIB_BUILD_DATE __DATE__ #define TP_LIB_BUILD_TIME __TIME__ diff --git a/libMpegTPEnc/include/tp_data.h b/libMpegTPEnc/include/tp_data.h index 5269858..c6e89b5 100644 --- a/libMpegTPEnc/include/tp_data.h +++ b/libMpegTPEnc/include/tp_data.h @@ -146,12 +146,15 @@ typedef struct UCHAR FrontElementIsCpe[PC_FSB_CHANNELS_MAX]; UCHAR FrontElementTagSelect[PC_FSB_CHANNELS_MAX]; + UCHAR FrontElementHeightInfo[PC_FSB_CHANNELS_MAX]; UCHAR SideElementIsCpe[PC_FSB_CHANNELS_MAX]; UCHAR SideElementTagSelect[PC_FSB_CHANNELS_MAX]; + UCHAR SideElementHeightInfo[PC_FSB_CHANNELS_MAX]; UCHAR BackElementIsCpe[PC_FSB_CHANNELS_MAX]; UCHAR BackElementTagSelect[PC_FSB_CHANNELS_MAX]; + UCHAR BackElementHeightInfo[PC_FSB_CHANNELS_MAX]; UCHAR LfeElementTagSelect[PC_LFE_CHANNELS_MAX]; @@ -324,16 +327,23 @@ int getSamplingRateIndex( UINT samplingRate ) */ static inline int getNumberOfTotalChannels(int channelConfig) { - if (channelConfig > 0 && channelConfig < 8) - return (channelConfig == 7)?8:channelConfig; - else + switch (channelConfig) { + case 1: case 2: case 3: + case 4: case 5: case 6: + return channelConfig; + case 7: case 12: case 14: + return 8; + case 11: + return 7; + default: return 0; + } } static inline int getNumberOfEffectiveChannels(const int channelConfig) -{ - const int n[] = {0,1,2,3,4,5,5,7}; +{ /* index: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 */ + const int n[] = {0,1,2,3,4,5,5,7,0,0, 0, 6, 7, 0, 7, 0}; return n[channelConfig]; } diff --git a/libMpegTPEnc/src/version b/libMpegTPEnc/src/version index 2803347..cda01c8 100644 --- a/libMpegTPEnc/src/version +++ b/libMpegTPEnc/src/version @@ -2,7 +2,7 @@ /* library info */ #define TP_LIB_VL0 2 #define TP_LIB_VL1 3 -#define TP_LIB_VL2 3 +#define TP_LIB_VL2 4 #define TP_LIB_TITLE "MPEG Transport" #define TP_LIB_BUILD_DATE __DATE__ #define TP_LIB_BUILD_TIME __TIME__ diff --git a/libPCMutils/include/pcmutils_lib.h b/libPCMutils/include/pcmutils_lib.h index 5ba74be..e7e6a41 100644 --- a/libPCMutils/include/pcmutils_lib.h +++ b/libPCMutils/include/pcmutils_lib.h @@ -95,69 +95,88 @@ amm-info@iis.fraunhofer.de #include "machine_type.h" #include "common_fix.h" #include "FDK_audio.h" +#include "FDK_bitstream.h" -/* ------------------------ * - * MODULE SETTINGS: * - * ------------------------ */ -/* #define PCM_UPMIX_ENABLE */ /*!< Generally enable up mixing. */ -#define PCM_DOWNMIX_ENABLE /*!< Generally enable down mixing. */ -#define DVB_MIXDOWN_ENABLE /*!< Enable this to support DVB ancillary data for encoder - assisted downmixing of MPEG-4 AAC and - MPEG-1/2 layer 2 streams. PCM_DOWNMIX_ENABLE has to - be enabled, too! */ -#define MPEG_PCE_MIXDOWN_ENABLE /*!< Enable this to support MPEG matrix mixdown with a - coefficient carried in the PCE. PCM_DOWNMIX_ENABLE - has to be enabled, too! */ -/* #define ARIB_MIXDOWN_ENABLE */ /*!< Enable modifications to the MPEG PCE mixdown method - to fulfill ARIB standard. MPEG_PCE_MIXDOWN_ENABLE has - to be set. */ /* ------------------------ * * ERROR CODES: * * ------------------------ */ typedef enum { - PCMDMX_OK = 0x0, /*!< No error happened. */ - PCMDMX_OUT_OF_MEMORY = 0x2, /*!< Not enough memory to set up an instance of the module. */ - PCMDMX_UNKNOWN = 0x5, /*!< Error condition is of unknown reason, or from a third - party module. */ - PCMDMX_INVALID_HANDLE, /*!< The given instance handle is not valid. */ - PCMDMX_INVALID_ARGUMENT, /*!< One of the parameters handed over is invalid. */ - PCMDMX_INVALID_CH_CONFIG, /*!< The given channel configuration is not supported and - thus no processing was performed. */ - PCMDMX_INVALID_MODE, /*!< The set configuration/mode is not applicable. */ - PCMDMX_UNKNOWN_PARAM, /*!< The handed parameter is not known/supported. */ - PCMDMX_UNABLE_TO_SET_PARAM, /*!< Unable to set the specific parameter. Most probably - the value ist out of range. */ - PCMDMX_CORRUPT_ANC_DATA /*!< The read ancillary data was corrupt. */ + PCMDMX_OK = 0x0, /*!< No error happened. */ + + pcm_dmx_fatal_error_start, + PCMDMX_OUT_OF_MEMORY = 0x2, /*!< Not enough memory to set up an instance of the module. */ + PCMDMX_UNKNOWN = 0x5, /*!< Error condition is of unknown reason, or from a third + party module. */ + pcm_dmx_fatal_error_end, + + PCMDMX_INVALID_HANDLE, /*!< The given instance handle is not valid. */ + PCMDMX_INVALID_ARGUMENT, /*!< One of the parameters handed over is invalid. */ + PCMDMX_INVALID_CH_CONFIG, /*!< The given channel configuration is not supported and thus + no processing was performed. */ + PCMDMX_INVALID_MODE, /*!< The set configuration/mode is not applicable. */ + PCMDMX_UNKNOWN_PARAM, /*!< The handed parameter is not known/supported. */ + PCMDMX_UNABLE_TO_SET_PARAM, /*!< Unable to set the specific parameter. Most probably the + value ist out of range. */ + PCMDMX_CORRUPT_ANC_DATA /*!< The read ancillary data was corrupt. */ } PCMDMX_ERROR; +/** Macro to identify fatal errors. */ +#define PCMDMX_IS_FATAL_ERROR(err) ( (((err)>=pcm_dmx_fatal_error_start) && ((err)<=pcm_dmx_fatal_error_end)) ? 1 : 0) /* ------------------------ * * RUNTIME PARAMS: * * ------------------------ */ typedef enum { - DMX_BS_DATA_EXPIRY_FRAME, /*!< The number of frames without new metadata that have to - go by before the bitstream data expires. The value 0 - disables expiry. */ - DMX_BS_DATA_DELAY, /*!< The number of delay frames of the output samples - compared to the bitstream data. */ - NUMBER_OF_OUTPUT_CHANNELS , /*!< The number of output channels (equals the number of - channels processed by the audio output setup). */ - DUAL_CHANNEL_DOWNMIX_MODE /*!< Downmix mode for two channel audio data. */ - + DMX_BS_DATA_EXPIRY_FRAME, /*!< The number of frames without new metadata that have to go + by before the bitstream data expires. The value 0 disables + expiry. */ + DMX_BS_DATA_DELAY, /*!< The number of delay frames of the output samples compared + to the bitstream data. */ + MIN_NUMBER_OF_OUTPUT_CHANNELS, /*!< The minimum number of output channels. For all input + configurations that have less than the given channels the + module will modify the output automatically to obtain the + given number of output channels. Mono signals will be + duplicated. If more than two output channels are desired + the module just adds empty channels. The parameter value + must be either -1, 0, 1, 2, 6 or 8. If the value is + greater than zero and exceeds the value of parameter + MAX_NUMBER_OF_OUTPUT_CHANNELS the latter will be set to + the same value. Both values -1 and 0 disable the feature. */ + MAX_NUMBER_OF_OUTPUT_CHANNELS, /*!< The maximum number of output channels. For all input + configurations that have more than the given channels the + module will apply a mixdown automatically to obtain the + given number of output channels. The value must be either + -1, 0, 1, 2, 6 or 8. If it is greater than zero and lower + or equal than the value of MIN_NUMBER_OF_OUTPUT_CHANNELS + parameter the latter will be set to the same value. + The values -1 and 0 disable the feature. */ + DMX_DUAL_CHANNEL_MODE, /*!< Downmix mode for two channel audio data. */ + DMX_PSEUDO_SURROUND_MODE /*!< Defines how module handles pseudo surround compatible + signals. See PSEUDO_SURROUND_MODE type for details. */ } PCMDMX_PARAM; - +/* Parameter value types */ typedef enum { - STEREO_MODE = 0x0, /*!< Leave stereo signals as they are. */ - CH1_MODE = 0x1, /*!< Create a dual mono output signal from channel 1. */ - CH2_MODE = 0x2, /*!< Create a dual mono output signal from channel 2. */ - MIXED_MODE = 0x3 /*!< Create a dual mono output signal by mixing the two channels. */ + NEVER_DO_PS_DMX = -1, /*!< Never create a pseudo surround compatible downmix. */ + AUTO_PS_DMX = 0, /*!< Create a pseudo surround compatible downmix only if + signalled in bitstreams meta data. (Default) */ + FORCE_PS_DMX = 1 /*!< Always create a pseudo surround compatible downmix. + CAUTION: This can lead to excessive signal cancellations + and signal level differences for non-compatible signals. */ +} PSEUDO_SURROUND_MODE; +typedef enum +{ + STEREO_MODE = 0x0, /*!< Leave stereo signals as they are. */ + CH1_MODE = 0x1, /*!< Create a dual mono output signal from channel 1. */ + CH2_MODE = 0x2, /*!< Create a dual mono output signal from channel 2. */ + MIXED_MODE = 0x3 /*!< Create a dual mono output signal by mixing the two + channels. */ } DUAL_CHANNEL_MODE; @@ -178,7 +197,7 @@ extern "C" /** Open and initialize an instance of the PCM downmix module * @param [out] Pointer to a buffer receiving the handle of the new instance. - * @returns Returns an error code. + * @returns Returns an error code. **/ PCMDMX_ERROR pcmDmx_Open ( HANDLE_PCM_DOWNMIX *pSelf @@ -188,20 +207,46 @@ PCMDMX_ERROR pcmDmx_Open ( * @param [in] Handle of PCM downmix instance. * @param [in] Parameter to be set. * @param [in] Parameter value. - * @returns Returns an error code. + * @returns Returns an error code. **/ PCMDMX_ERROR pcmDmx_SetParam ( HANDLE_PCM_DOWNMIX self, - PCMDMX_PARAM param, - UINT value + const PCMDMX_PARAM param, + const INT value + ); + +/** Get one parameter value of one PCM downmix module instance. + * @param [in] Handle of PCM downmix module instance. + * @param [in] Parameter to be set. + * @param [out] Pointer to buffer receiving the parameter value. + * @returns Returns an error code. + **/ +PCMDMX_ERROR pcmDmx_GetParam ( + HANDLE_PCM_DOWNMIX self, + const PCMDMX_PARAM param, + INT * const pValue ); -/** Read the ancillary data transported in DSEs of DVB streams with MPEG-4 content +/** Read downmix meta-data directly from a given bitstream. + * @param [in] Handle of PCM downmix instance. + * @param [in] Handle of FDK bitstream buffer. + * @param [in] Length of ancillary data in bits. + * @param [in] Flag indicating wheter the ancillary data is from a MPEG-1/2 or an MPEG-4 stream. + * @returns Returns an error code. + **/ +PCMDMX_ERROR pcmDmx_Parse ( + HANDLE_PCM_DOWNMIX self, + HANDLE_FDK_BITSTREAM hBitStream, + UINT ancDataBits, + int isMpeg2 + ); + +/** Read downmix meta-data from a given data buffer. * @param [in] Handle of PCM downmix instance. * @param [in] Pointer to ancillary data buffer. - * @param [in] Size of ancillary data. + * @param [in] Size of ancillary data in bytes. * @param [in] Flag indicating wheter the ancillary data is from a MPEG-1/2 or an MPEG-4 stream. - * @returns Returns an error code. + * @returns Returns an error code. **/ PCMDMX_ERROR pcmDmx_ReadDvbAncData ( HANDLE_PCM_DOWNMIX self, @@ -211,12 +256,11 @@ PCMDMX_ERROR pcmDmx_ReadDvbAncData ( ); /** Set the matrix mixdown information extracted from the PCE of an AAC bitstream. - * Note: Call only if matrix_mixdown_idx_present is true. * @param [in] Handle of PCM downmix instance. * @param [in] Matrix mixdown index present flag extracted from PCE. * @param [in] The 2 bit matrix mixdown index extracted from PCE. * @param [in] The pseudo surround enable flag extracted from PCE. - * @returns Returns an error code. + * @returns Returns an error code. **/ PCMDMX_ERROR pcmDmx_SetMatrixMixdownFromPce ( HANDLE_PCM_DOWNMIX self, @@ -235,34 +279,42 @@ PCMDMX_ERROR pcmDmx_Reset ( UINT flags ); -/** Apply down or up mixing. +/** Create a mixdown, bypass or extend the output signal depending on the modules settings and the + * respective given input configuration. * * \param [in] Handle of PCM downmix module instance. * \param [inout] Pointer to time buffer with decoded PCM samples. - * \param [in] Pointer where the amount of output samples is returned into. - * \param [inout] Pointer where the amount of output channels is returned into. - * \param [in] Flag which indicates if output time data are writtern interleaved or as subsequent blocks. - * \param [inout] Array were the corresponding channel type for each output audio channel is stored into. - * \param [inout] Array were the corresponding channel type index for each output audio channel is stored into. - * \param [in] Array containing the output channel mapping to be used (From MPEG PCE ordering to whatever is required). - * - * @returns Returns an error code. + * \param [in] The I/O block size which is the number of samples per channel. + * \param [inout] Pointer to buffer that holds the number of input channels and where the + * amount of output channels is written to. + * \param [in] Flag which indicates if output time data is writtern interleaved or as + * subsequent blocks. + * \param [inout] Array were the corresponding channel type for each output audio channel is + * stored into. + * \param [inout] Array were the corresponding channel type index for each output audio channel + * is stored into. + * \param [in] Array containing the output channel mapping to be used (from MPEG PCE ordering + * to whatever is required). + * \param [out] Pointer on a field receiving the scale factor that has to be applied on all + * samples afterwards. If the handed pointer is NULL the final scaling is done + * internally. + * @returns Returns an error code. **/ PCMDMX_ERROR pcmDmx_ApplyFrame ( HANDLE_PCM_DOWNMIX self, INT_PCM *pPcmBuf, UINT frameSize, INT *nChannels, - int fInterleaved, AUDIO_CHANNEL_TYPE channelType[], UCHAR channelIndices[], - const UCHAR channelMapping[][8] + const UCHAR channelMapping[][8], + INT *pDmxOutScale ); /** Close an instance of the PCM downmix module. * @param [inout] Pointer to a buffer containing the handle of the instance. - * @returns Returns an error code. + * @returns Returns an error code. **/ PCMDMX_ERROR pcmDmx_Close ( HANDLE_PCM_DOWNMIX *pSelf @@ -270,7 +322,7 @@ PCMDMX_ERROR pcmDmx_Close ( /** Get library info for this module. * @param [out] Pointer to an allocated LIB_INFO structure. - * @returns Returns an error code. + * @returns Returns an error code. */ PCMDMX_ERROR pcmDmx_GetLibInfo( LIB_INFO *info ); diff --git a/libPCMutils/src/pcmutils_lib.cpp b/libPCMutils/src/pcmutils_lib.cpp index a84a050..bd291d7 100644 --- a/libPCMutils/src/pcmutils_lib.cpp +++ b/libPCMutils/src/pcmutils_lib.cpp @@ -84,8 +84,8 @@ amm-info@iis.fraunhofer.de /**************************** FDK PCM utils module ************************** Author(s): Christian Griebel - Description: Defines functions to interface with the PCM post processing - module. + Description: Defines functions that perform downmixing or a simple channel + expansion in the PCM time domain. *******************************************************************************/ @@ -93,21 +93,66 @@ amm-info@iis.fraunhofer.de #include "genericStds.h" #include "fixpoint_math.h" +#include "FDK_core.h" + + +/* ------------------------ * + * GLOBAL SETTINGS (GFR): * + * ------------------------ */ +#define DSE_METADATA_ENABLE /*!< Enable this to support MPEG/ETSI DVB ancillary data for + encoder assisted downmixing of MPEG-4 AAC and + MPEG-1/2 layer 2 streams. */ +#define PCE_METADATA_ENABLE /*!< Enable this to support MPEG matrix mixdown with a + coefficient carried in the PCE. */ + +#define PCM_DMX_MAX_IN_CHANNELS ( 8 ) /* Neither the maximum number of input nor the maximum number of output channels ... */ +#define PCM_DMX_MAX_OUT_CHANNELS ( 8 ) /* ... must exceed the maximum number of channels that the framework can handle. */ + +/* ------------------------ * + * SPECIFIC SETTINGS: * + * ------------------------ */ +#define PCM_CHANNEL_EXTENSION_ENABLE /*!< Allow module to duplicate mono signals or add zero channels to achieve the + desired number of output channels. */ + +#define PCM_DMX_DFLT_MAX_OUT_CHANNELS ( 6 ) /*!< The maximum number of output channels. If the value is greater than 0 the module + will automatically create a mixdown for all input signals with more channels + than specified. */ +#define PCM_DMX_DFLT_MIN_OUT_CHANNELS ( 0 ) /*!< The minimum number of output channels. If the value is greater than 0 the module + will do channel extension automatically for all input signals with less channels + than specified. */ +#define PCM_DMX_MAX_DELAY_FRAMES ( 1 ) /*!< The maximum delay frames to align the bitstreams payload with the PCM output. */ +#define PCM_DMX_DFLT_EXPIRY_FRAME ( 50 ) /*!< If value is greater than 0 the mixdown coefficients will expire by default after the + given number of frames. The value 50 corresponds to at least 500ms (FL 960 @ 96kHz) */ +/* #define PCMDMX_DEBUG */ + +/* Derived setting: + * No need to edit beyond this line. */ +#if defined(DSE_METADATA_ENABLE) || defined(PCE_METADATA_ENABLE) || defined(ARIB_MIXDOWN_ENABLE) + #define PCM_DOWNMIX_ENABLE /*!< Generally enable down mixing. */ +#endif +#if (PCM_DMX_MAX_IN_CHANNELS > 2) || (PCM_DMX_MAX_OUT_CHANNELS > 2) + #define PCM_DMX_MAX_CHANNELS ( 8 ) + #define PCM_DMX_MAX_CHANNEL_GROUPS ( 4 ) + #define PCM_DMX_MAX_CHANNELS_PER_GROUP PCM_DMX_MAX_CHANNELS /* All channels can be in one group */ +#else + #define PCM_DMX_MAX_CHANNELS ( 3 ) /* Need to add 1 because there are three channel positions in first channel group. */ + #define PCM_DMX_MAX_CHANNEL_GROUPS ( 1 ) /* Only front channels supported. */ + #define PCM_DMX_MAX_CHANNELS_PER_GROUP ( 2 ) /* The maximum over all channel groups */ +#endif +#if (PCM_DMX_MAX_IN_CHANNELS > PCM_DMX_MAX_OUT_CHANNELS) + #define PCM_DMX_MAX_IO_CHANNELS PCM_DMX_MAX_IN_CHANNELS +#else + #define PCM_DMX_MAX_IO_CHANNELS PCM_DMX_MAX_OUT_CHANNELS +#endif /* Decoder library info */ #define PCMDMX_LIB_VL0 2 #define PCMDMX_LIB_VL1 4 -#define PCMDMX_LIB_VL2 0 +#define PCMDMX_LIB_VL2 1 #define PCMDMX_LIB_TITLE "PCM Downmix Lib" #define PCMDMX_LIB_BUILD_DATE __DATE__ #define PCMDMX_LIB_BUILD_TIME __TIME__ -/* Library settings */ -#define PCM_DMX_MAX_DELAY_FRAMES ( 1 ) -#define PCM_DMX_MAX_CHANNELS ( 8 ) -#define PCM_DMX_MAX_CHANNEL_GROUPS ( 4 ) -#define PCM_DMX_MAX_CHANNELS_PER_GROUP ( 3 ) /* The maximum over all groups */ -#define PCMDMX_DFLT_EXPIRY_FRAME ( 50 ) /* At least 500ms (FL 960 @ 96kHz) */ /* Fixed and unique channel group indices. * The last group index has to be smaller than PCM_DMX_MAX_CHANNEL_GROUPS. */ @@ -122,22 +167,64 @@ amm-info@iis.fraunhofer.de #define CENTER_FRONT_CHANNEL ( 0 ) /* C */ #define LEFT_FRONT_CHANNEL ( 1 ) /* L */ #define RIGHT_FRONT_CHANNEL ( 2 ) /* R */ -#define LEFT_OUTSIDE_CHANNEL ( 3 ) /* Lo */ -#define RIGHT_OUTSIDE_CHANNEL ( 4 ) /* Ro */ -#define LEFT_REAR_CHANNEL ( 5 ) /* Lr aka left back channel */ -#define RIGHT_REAR_CHANNEL ( 6 ) /* Rr aka right back channel */ -#define LOW_FREQUENCY_CHANNEL ( 7 ) /* Lf */ +#define LEFT_REAR_CHANNEL ( 3 ) /* Lr (aka left back channel) or center back channel */ +#define RIGHT_REAR_CHANNEL ( 4 ) /* Rr (aka right back channel) */ +#define LOW_FREQUENCY_CHANNEL ( 5 ) /* Lf */ +#define LEFT_MULTIPRPS_CHANNEL ( 6 ) /* Left multipurpose channel */ +#define RIGHT_MULTIPRPS_CHANNEL ( 7 ) /* Right multipurpose channel */ /* More constants */ -#define ANC_DATA_SYNC_BYTE ( 0xBC ) /* ancillary data sync byte. */ -#define ATTENUATION_FACTOR_1 ( FL2FXCONST_SGL(0.70710678f) ) +#define ONE_CHANNEL ( 1 ) #define TWO_CHANNEL ( 2 ) +#define SIX_CHANNEL ( 6 ) +#define EIGHT_CHANNEL ( 8 ) + +#define PCMDMX_A_IDX_DEFAULT ( 2 ) +#define PCMDMX_B_IDX_DEFAULT ( 2 ) +#define PCMDMX_LFE_IDX_DEFAULT ( 15 ) +#define PCMDMX_GAIN_5_DEFAULT ( 0 ) +#define PCMDMX_GAIN_2_DEFAULT ( 0 ) + +#define PCMDMX_MAX_HEADROOM ( 3 ) /* Defines the maximum PCM scaling headroom that can be done by a + postprocessing step. This value must be greater or equal to 0. */ + +#define FALSE 0 +#define TRUE 1 +#define IN 0 +#define OUT 1 + +/* Type definitions: */ +#ifndef DMX_HIGH_PRECISION_ENABLE + #define FIXP_DMX FIXP_SGL + #define FX_DMX2FX_DBL(x) FX_SGL2FX_DBL((FIXP_SGL)(x)) + #define FX_DBL2FX_DMX(x) FX_DBL2FX_SGL(x) + #define FL2FXCONST_DMX(x) FL2FXCONST_SGL(x) + #define MAXVAL_DMX MAXVAL_SGL + #define FX_DMX2SHRT(x) ((SHORT)(x)) + #define FX_DMX2FL(x) FX_DBL2FL(FX_DMX2FX_DBL(x)) +#else + #define FIXP_DMX FIXP_DBL + #define FX_DMX2FX_DBL(x) ((FIXP_DBL)(x)) + #define FX_DBL2FX_DMX(x) ((FIXP_DBL)(x) + #define FL2FXCONST_DMX(x) FL2FXCONST_DBL(x) + #define MAXVAL_DMX MAXVAL_DBL + #define FX_DMX2SHRT(x) ((SHORT)((x)>>FRACT_BITS)) + #define FX_DMX2FL(x) FX_DBL2FL(x) +#endif -/* Sanity checks on library setting: */ +/* The number of channels positions for each group in the internal representation. + * See the channel labels above. */ +static const UCHAR maxChInGrp[PCM_DMX_MAX_CHANNEL_GROUPS] = { +#if (PCM_DMX_MAX_CHANNELS > 3) + 3, 0, 2, 1 +#else + PCM_DMX_MAX_CHANNELS_PER_GROUP +#endif +}; /* List of packed channel modes */ typedef enum -{ /* CH_MODE_<numFrontCh>_<numOutsideCh>_<numRearCh>_<numLfCh> */ +{ /* CH_MODE_<numFrontCh>_<numSideCh>_<numBackCh>_<numLfCh> */ CH_MODE_UNDEFINED = 0x0000, /* 1 channel */ CH_MODE_1_0_0_0 = 0x0001, /* chCfg 1 */ @@ -151,53 +238,93 @@ typedef enum CH_MODE_3_0_1_0 = 0x0103, /* chCfg 4 */ CH_MODE_2_0_2_0 = 0x0202, CH_MODE_2_0_1_1 = 0x1102, + CH_MODE_4_0_0_0 = 0x0004, /* 5 channels */ CH_MODE_3_0_2_0 = 0x0203, /* chCfg 5 */ CH_MODE_2_0_2_1 = 0x1202, CH_MODE_3_0_1_1 = 0x1103, CH_MODE_3_2_0_0 = 0x0023, + CH_MODE_5_0_0_0 = 0x0005, /* 6 channels */ CH_MODE_3_0_2_1 = 0x1203, /* chCfg 6 */ + CH_MODE_3_2_0_1 = 0x1023, CH_MODE_3_2_1_0 = 0x0123, + CH_MODE_5_0_1_0 = 0x0105, + CH_MODE_6_0_0_0 = 0x0006, /* 7 channels */ CH_MODE_2_2_2_1 = 0x1222, + CH_MODE_3_0_3_1 = 0x1303, /* chCfg 11 */ CH_MODE_3_2_1_1 = 0x1123, CH_MODE_3_2_2_0 = 0x0223, + CH_MODE_3_0_2_2 = 0x2203, + CH_MODE_5_0_2_0 = 0x0205, + CH_MODE_5_0_1_1 = 0x1105, + CH_MODE_7_0_0_0 = 0x0007, /* 8 channels */ - CH_MODE_3_2_2_1 = 0x1222, /* chCfg 7 */ + CH_MODE_3_2_2_1 = 0x1223, + CH_MODE_3_0_4_1 = 0x1403, /* chCfg 12 */ + CH_MODE_5_0_2_1 = 0x1205, /* chCfg 7 + 14 */ + CH_MODE_5_2_1_0 = 0x0125, CH_MODE_3_2_1_2 = 0x2123, - CH_MODE_2_2_2_2 = 0x2222 + CH_MODE_2_2_2_2 = 0x2222, + CH_MODE_3_0_3_2 = 0x2303, + CH_MODE_8_0_0_0 = 0x0008 } PCM_DMX_CHANNEL_MODE; /* These are the channel configurations linked to the number of output channels give by the user: */ -static const PCM_DMX_CHANNEL_MODE outChModeTable[PCM_DMX_MAX_CHANNELS] = +static const PCM_DMX_CHANNEL_MODE outChModeTable[PCM_DMX_MAX_CHANNELS+1] = { + CH_MODE_UNDEFINED, CH_MODE_1_0_0_0, /* 1 channel */ CH_MODE_2_0_0_0, /* 2 channels */ - CH_MODE_3_0_0_0, /* 3 channels */ - CH_MODE_3_0_1_0, /* 4 channels */ + CH_MODE_3_0_0_0 /* 3 channels */ +#if (PCM_DMX_MAX_CHANNELS > 3) + ,CH_MODE_3_0_1_0, /* 4 channels */ CH_MODE_3_0_2_0, /* 5 channels */ CH_MODE_3_0_2_1, /* 6 channels */ - CH_MODE_3_2_2_0, /* 7 channels */ - CH_MODE_3_2_2_1 /* 8 channels */ + CH_MODE_3_0_3_1, /* 7 channels */ + CH_MODE_3_0_4_1 /* 8 channels */ +#endif }; -static const FIXP_SGL dvbDownmixFactors[8] = +static const FIXP_DMX abMixLvlValueTab[8] = { - FL2FXCONST_SGL(1.0f), - FL2FXCONST_SGL(0.841f), - FL2FXCONST_SGL(0.707f), - FL2FXCONST_SGL(0.596f), - FL2FXCONST_SGL(0.500f), - FL2FXCONST_SGL(0.422f), - FL2FXCONST_SGL(0.355f), - FL2FXCONST_SGL(0.0f) + FL2FXCONST_DMX(0.500f), /* scaled by 1 */ + FL2FXCONST_DMX(0.841f), + FL2FXCONST_DMX(0.707f), + FL2FXCONST_DMX(0.596f), + FL2FXCONST_DMX(0.500f), + FL2FXCONST_DMX(0.422f), + FL2FXCONST_DMX(0.355f), + FL2FXCONST_DMX(0.0f) +}; + +static const FIXP_DMX lfeMixLvlValueTab[16] = +{ /* value, scale */ + FL2FXCONST_DMX(0.7905f), /* 2 */ + FL2FXCONST_DMX(0.5000f), /* 2 */ + FL2FXCONST_DMX(0.8395f), /* 1 */ + FL2FXCONST_DMX(0.7065f), /* 1 */ + FL2FXCONST_DMX(0.5945f), /* 1 */ + FL2FXCONST_DMX(0.500f), /* 1 */ + FL2FXCONST_DMX(0.841f), /* 0 */ + FL2FXCONST_DMX(0.707f), /* 0 */ + FL2FXCONST_DMX(0.596f), /* 0 */ + FL2FXCONST_DMX(0.500f), /* 0 */ + FL2FXCONST_DMX(0.316f), /* 0 */ + FL2FXCONST_DMX(0.178f), /* 0 */ + FL2FXCONST_DMX(0.100f), /* 0 */ + FL2FXCONST_DMX(0.032f), /* 0 */ + FL2FXCONST_DMX(0.010f), /* 0 */ + FL2FXCONST_DMX(0.000f) /* 0 */ }; + +#ifdef PCE_METADATA_ENABLE /* MPEG matrix mixdown: Set 1: L' = (1 + 2^-0.5 + A )^-1 * [L + C * 2^-0.5 + A * Ls]; R' = (1 + 2^-0.5 + A )^-1 * [R + C * 2^-0.5 + A * Rs]; @@ -207,111 +334,176 @@ static const FIXP_SGL dvbDownmixFactors[8] = M = (3 + 2A)^-1 * [L + C + R + A*(Ls + Rs)]; */ - static const FIXP_SGL mpegMixDownIdx2Coef[4] = + static const FIXP_DMX mpegMixDownIdx2Coef[4] = { - FL2FXCONST_SGL(0.70710678f), - FL2FXCONST_SGL(0.5f), - FL2FXCONST_SGL(0.35355339f), - FL2FXCONST_SGL(0.0f) + FL2FXCONST_DMX(0.70710678f), + FL2FXCONST_DMX(0.5f), + FL2FXCONST_DMX(0.35355339f), + FL2FXCONST_DMX(0.0f) }; - static const FIXP_SGL mpegMixDownIdx2PreFact[4] = - { - FL2FXCONST_SGL(0.4142135623730950f), - FL2FXCONST_SGL(0.4530818393219728f), - FL2FXCONST_SGL(0.4852813742385703f), - FL2FXCONST_SGL(0.5857864376269050f) + static const FIXP_SGL mpegMixDownIdx2PreFact[3][4] = + { { /* Set 1: */ + FL2FXCONST_DMX(0.4142135623730950f), + FL2FXCONST_DMX(0.4530818393219728f), + FL2FXCONST_DMX(0.4852813742385703f), + FL2FXCONST_DMX(0.5857864376269050f) + },{ /* Set 2: */ + FL2FXCONST_DMX(0.3203772410170407f), + FL2FXCONST_DMX(0.3693980625181293f), + FL2FXCONST_DMX(0.4142135623730950f), + FL2FXCONST_DMX(0.5857864376269050f) + },{ /* Mono DMX set: */ + FL2FXCONST_DMX(0.2265409196609864f), + FL2FXCONST_DMX(0.25f), + FL2FXCONST_DMX(0.2697521433898179f), + FL2FXCONST_DMX(0.3333333333333333f) } }; +#endif /* PCE_METADATA_ENABLE */ - typedef struct - { - USHORT matrixMixdownIdx; /*!< MPEG mixdown index extracted from PCE. */ - USHORT pseudoSurroundEnable; /*!< Pseudo surround enable flag extracted from PCE. */ - USHORT mixdownAvailable; /*!< Will be set to 1 if we found a valid coefficient. */ - - } MPEG_MIXDOWN_INFO; +#define TYPE_NONE ( 0x0 ) +#define TYPE_DSE_DATA ( 0x1 ) +#define TYPE_PCE_DATA ( 0x2 ) typedef struct { - FIXP_SGL centerMixLevelValue; /*!< DVB mixdown level for the center channel extracted from anc data. */ - FIXP_SGL surroundMixLevelValue; /*!< DVB mixdown level for back channels extracted from anc data. */ - - UCHAR mixLevelsAvail; /*!< Will be set to 1 if we found a valid coefficient. */ + UINT typeFlags; + /* From DSE */ + UCHAR cLevIdx; + UCHAR sLevIdx; + UCHAR dmixIdxA; + UCHAR dmixIdxB; + UCHAR dmixIdxLfe; + UCHAR dmxGainIdx2; + UCHAR dmxGainIdx5; +#ifdef PCE_METADATA_ENABLE + /* From PCE */ + UCHAR matrixMixdownIdx; +#endif + /* Attributes: */ + SCHAR pseudoSurround; /*!< If set to 1 the signal is pseudo surround compatible. The value 0 tells + that it is not. If the value is -1 the information is not available. */ + UINT expiryCount; /*!< Counter to monitor the life time of a meta data set. */ + +} DMX_BS_META_DATA; + +/* Default metadata */ +static const DMX_BS_META_DATA dfltMetaData = { + 0, 2, 2, 2, 2, 15, 0, 0, +#ifdef PCE_METADATA_ENABLE + 0, +#endif + -1, 0 +}; -} DVB_MIXDOWN_LEVELS; +/* Dynamic (user) params: + See the definition of PCMDMX_PARAM for details on the specific fields. */ +typedef struct +{ + UINT expiryFrame; /*!< Linked to DMX_BS_DATA_EXPIRY_FRAME */ + DUAL_CHANNEL_MODE dualChannelMode; /*!< Linked to DMX_DUAL_CHANNEL_MODE */ + PSEUDO_SURROUND_MODE pseudoSurrMode; /*!< Linked to DMX_PSEUDO_SURROUND_MODE */ + SHORT numOutChannelsMin; /*!< Linked to MIN_NUMBER_OF_OUTPUT_CHANNELS */ + SHORT numOutChannelsMax; /*!< Linked to MAX_NUMBER_OF_OUTPUT_CHANNELS */ + UCHAR frameDelay; /*!< Linked to DMX_BS_DATA_DELAY */ +} PCM_DMX_USER_PARAMS; /* Modules main data structure: */ struct PCM_DMX_INSTANCE { - DVB_MIXDOWN_LEVELS dvbMixDownLevels[PCM_DMX_MAX_DELAY_FRAMES+1]; - MPEG_MIXDOWN_INFO mpegMixDownInfo[PCM_DMX_MAX_DELAY_FRAMES+1]; - DUAL_CHANNEL_MODE dualChannelMode; - UINT expiryFrame; - UINT expiryCount; - SHORT numOutputChannels; - UCHAR applyProcessing; - UCHAR frameDelay; + /* Metadata */ + DMX_BS_META_DATA bsMetaData[PCM_DMX_MAX_DELAY_FRAMES+1]; + PCM_DMX_USER_PARAMS userParams; + + UCHAR applyProcessing; /*!< Flag to en-/disable modules processing. + The max channel limiting is done independently. */ }; /* Memory allocation macro */ C_ALLOC_MEM_STATIC(PcmDmxInstance, struct PCM_DMX_INSTANCE, 1) -/** Evaluate a given channel configuration and extract a packed channel mode and generate a channel offset table +/** Evaluate a given channel configuration and extract a packed channel mode. In addition the + * function generates a channel offset table for the mapping to the internal representation. * This function is the inverse to the getChannelDescription() routine. * @param [in] The total number of channels of the given configuration. * @param [in] Array holding the corresponding channel types for each channel. * @param [in] Array holding the corresponding channel type indices for each channel. * @param [out] Array where the buffer offsets for each channel are stored into. - * @returns Returns the packed channel mode. + * @param [out] The generated packed channel mode that represents the given input configuration. + * @returns Returns an error code. **/ static -PCM_DMX_CHANNEL_MODE getChannelMode ( +PCMDMX_ERROR getChannelMode ( const INT numChannels, /* in */ const AUDIO_CHANNEL_TYPE channelType[], /* in */ const UCHAR channelIndices[], /* in */ - UCHAR offsetTable[PCM_DMX_MAX_CHANNELS] /* out */ + UCHAR offsetTable[PCM_DMX_MAX_CHANNELS], /* out */ + PCM_DMX_CHANNEL_MODE *chMode /* out */ ) { - UINT chMode = CH_MODE_UNDEFINED; UCHAR chIdx[PCM_DMX_MAX_CHANNEL_GROUPS][PCM_DMX_MAX_CHANNELS_PER_GROUP]; - UCHAR numChInGrp[PCM_DMX_MAX_CHANNEL_GROUPS]; - int ch, grpIdx, err = 0; + UCHAR numChInGrp[PCM_DMX_MAX_CHANNEL_GROUPS]; /* Total num of channels per group of the input config */ + UCHAR numChFree[PCM_DMX_MAX_CHANNEL_GROUPS]; /* Number of free slots per group in the internal repr. */ + UCHAR hardToPlace[PCM_DMX_MAX_CHANNELS]; /* List of channels not matching the internal repr. */ + UCHAR h2pSortIdx[PCM_DMX_MAX_CHANNELS]; + PCMDMX_ERROR err = PCMDMX_OK; + int ch, grpIdx; + int numChToPlace = 0; FDK_ASSERT(channelType != NULL); FDK_ASSERT(channelIndices != NULL); FDK_ASSERT(offsetTable != NULL); + FDK_ASSERT(chMode != NULL); /* For details see ISO/IEC 13818-7:2005(E), 8.5.3 Channel configuration */ FDKmemclear(numChInGrp, PCM_DMX_MAX_CHANNEL_GROUPS*sizeof(UCHAR)); FDKmemset(offsetTable, 255, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR)); FDKmemset(chIdx, 255, PCM_DMX_MAX_CHANNEL_GROUPS*PCM_DMX_MAX_CHANNELS_PER_GROUP*sizeof(UCHAR)); + FDKmemset(hardToPlace, 255, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR)); + FDKmemset(h2pSortIdx, 255, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR)); + /* Get the restrictions of the internal representation */ + FDKmemcpy(numChFree, maxChInGrp, PCM_DMX_MAX_CHANNEL_GROUPS*sizeof(UCHAR)); + + *chMode = CH_MODE_UNDEFINED; /* Categorize channels */ for (ch = 0; ch < numChannels; ch += 1) { - int i = 0, j, chGrpIdx = channelIndices[ch]; + UCHAR chGrpIdx = channelIndices[ch]; + int i = 0, j; switch (channelType[ch]) { - case ACT_FRONT: case ACT_FRONT_TOP: + chGrpIdx += numChInGrp[CH_GROUP_FRONT]; /* Append after normal plain */ + case ACT_FRONT: grpIdx = CH_GROUP_FRONT; break; - case ACT_SIDE: +#if (PCM_DMX_MAX_CHANNEL_GROUPS > 1) case ACT_SIDE_TOP: + chGrpIdx += numChInGrp[CH_GROUP_SIDE]; /* Append after normal plain */ + case ACT_SIDE: grpIdx = CH_GROUP_SIDE; break; - case ACT_BACK: case ACT_BACK_TOP: + chGrpIdx += numChInGrp[CH_GROUP_REAR]; /* Append after normal plain */ + case ACT_BACK: grpIdx = CH_GROUP_REAR; break; case ACT_LFE: grpIdx = CH_GROUP_LFE; break; +#endif default: - err = -1; - continue; + /* Found a channel that can not be categorized! Most likely due to corrupt input signalling. + The rescue strategy is to append it to the front channels (=> ignore index). + This could cause strange behaviour so return an error to signal it. */ + err = PCMDMX_INVALID_MODE; + grpIdx = CH_GROUP_FRONT; + chGrpIdx = numChannels + numChToPlace; + numChToPlace += 1; + break; } if (numChInGrp[grpIdx] < PCM_DMX_MAX_CHANNELS_PER_GROUP) { @@ -327,76 +519,152 @@ PCM_DMX_CHANNEL_MODE getChannelMode ( } } - /* Compose channel offset table */ +#if (PCM_DMX_MAX_CHANNEL_GROUPS > 1) + FDK_ASSERT( (numChInGrp[CH_GROUP_FRONT]+numChInGrp[CH_GROUP_SIDE] + +numChInGrp[CH_GROUP_REAR]+numChInGrp[CH_GROUP_LFE]) == numChannels); +#else + FDK_ASSERT( numChInGrp[CH_GROUP_FRONT] == numChannels ); +#endif + + /* Compose channel offset table: + * Map all channels to the internal representation. */ + numChToPlace = 0; /* Non-symmetric channels */ if (numChInGrp[CH_GROUP_FRONT] & 0x1) { /* Odd number of front channels -> we have a center channel. In MPEG-4 the center has the index 0. */ offsetTable[CENTER_FRONT_CHANNEL] = chIdx[CH_GROUP_FRONT][0]; + numChFree[CH_GROUP_FRONT] -= 1; } for (grpIdx = 0; grpIdx < PCM_DMX_MAX_CHANNEL_GROUPS; grpIdx += 1) { - int chMapPos, maxChannels = 0; - ch = 0; + int chMapPos = 0; + ch = 0; /* Index of channel within the specific group */ switch (grpIdx) { case CH_GROUP_FRONT: chMapPos = LEFT_FRONT_CHANNEL; - maxChannels = 3; ch = numChInGrp[grpIdx] & 0x1; break; +#if (PCM_DMX_MAX_CHANNEL_GROUPS > 1) case CH_GROUP_SIDE: - chMapPos = LEFT_OUTSIDE_CHANNEL; - maxChannels = 2; break; case CH_GROUP_REAR: chMapPos = LEFT_REAR_CHANNEL; - maxChannels = 2; break; case CH_GROUP_LFE: chMapPos = LOW_FREQUENCY_CHANNEL; - maxChannels = 1; break; +#endif default: - err = -1; + FDK_ASSERT(0); continue; } + /* Map all channels of the group */ for ( ; ch < numChInGrp[grpIdx]; ch += 1) { - if (ch < maxChannels) { + if (numChFree[grpIdx] > 0) { offsetTable[chMapPos] = chIdx[grpIdx][ch]; chMapPos += 1; + numChFree[grpIdx] -= 1; } else { - err = -1; + /* Add to the list of hardship cases considering a MPEG-like sorting order: */ + int pos, sortIdx = grpIdx*PCM_DMX_MAX_CHANNELS_PER_GROUP + channelIndices[chIdx[grpIdx][ch]]; + for (pos = numChToPlace; pos > 0; pos -= 1) { + if (h2pSortIdx[pos-1] > sortIdx) { + hardToPlace[pos] = hardToPlace[pos-1]; + h2pSortIdx[pos] = h2pSortIdx[pos-1]; + } else { + /* Insert channel at the current index/position */ + break; + } + } + hardToPlace[pos] = chIdx[grpIdx][ch]; + h2pSortIdx[pos] = sortIdx; + numChToPlace += 1; } } } - if (err == 0) { - /* Compose the channel mode */ - chMode = (numChInGrp[CH_GROUP_LFE] & 0xF) << 12 - | (numChInGrp[CH_GROUP_REAR] & 0xF) << 8 - | (numChInGrp[CH_GROUP_SIDE] & 0xF) << 4 - | (numChInGrp[CH_GROUP_FRONT] & 0xF); + { /* Assign the hardship cases */ + int chMapPos = 0; + int mappingHeat = 0; + for (ch = 0; ch < numChToPlace; ch+=1) { + int chAssigned = 0; + + /* Just assigning the channels to the next best slot can lead to undesired results (especially for x/x/1.x + configurations). Thus use the MPEG-like sorting index to find the best fitting slot for each channel. + If this is not possible the sorting index will be ignored (mappingHeat >= 2). */ + for ( ; chMapPos < PCM_DMX_MAX_CHANNELS; chMapPos+=1) { + if (offsetTable[chMapPos] == 255) { + int prvSortIdx = 0; + int nxtSortIdx = (CH_GROUP_LFE+1)*PCM_DMX_MAX_CHANNELS_PER_GROUP; + + if (mappingHeat < 2) { + if (chMapPos < LEFT_REAR_CHANNEL) { + /* Got front channel slot */ + prvSortIdx = CH_GROUP_FRONT*PCM_DMX_MAX_CHANNELS_PER_GROUP + chMapPos - CENTER_FRONT_CHANNEL; + nxtSortIdx = CH_GROUP_SIDE *PCM_DMX_MAX_CHANNELS_PER_GROUP; + } + else if (chMapPos < LOW_FREQUENCY_CHANNEL) { + /* Got back channel slot */ + prvSortIdx = CH_GROUP_REAR*PCM_DMX_MAX_CHANNELS_PER_GROUP + chMapPos - LEFT_REAR_CHANNEL; + nxtSortIdx = CH_GROUP_LFE *PCM_DMX_MAX_CHANNELS_PER_GROUP; + } + else if (chMapPos < LEFT_MULTIPRPS_CHANNEL) { + /* Got lfe channel slot */ + prvSortIdx = CH_GROUP_LFE *PCM_DMX_MAX_CHANNELS_PER_GROUP + chMapPos - LOW_FREQUENCY_CHANNEL; + nxtSortIdx = (CH_GROUP_LFE+1)*PCM_DMX_MAX_CHANNELS_PER_GROUP; + } + } + + /* Assign the channel only if its sort index is within the range */ + if ( (h2pSortIdx[ch] >= prvSortIdx) + && (h2pSortIdx[ch] < nxtSortIdx) ) { + offsetTable[chMapPos++] = hardToPlace[ch]; + chAssigned = 1; + break; + } + } + } + if (chAssigned == 0) { + chMapPos = 0; + ch -= 1; + mappingHeat += 1; + continue; + } + } } - return (PCM_DMX_CHANNEL_MODE)chMode; + /* Compose the channel mode */ + *chMode = (PCM_DMX_CHANNEL_MODE)( (numChInGrp[CH_GROUP_FRONT] & 0xF) +#if (PCM_DMX_MAX_CHANNEL_GROUPS > 1) + | (numChInGrp[CH_GROUP_SIDE] & 0xF) << 4 + | (numChInGrp[CH_GROUP_REAR] & 0xF) << 8 + | (numChInGrp[CH_GROUP_LFE] & 0xF) << 12 +#endif + ); + + return err; } /** Generate a channel offset table and complete channel description for a given (packed) channel mode. - * This function is the inverse to the getChannelMode() routine. - * @param [in] The total number of channels of the given configuration. + * This function is the inverse to the getChannelMode() routine but does not support weird channel + * configurations. All channels have to be in the normal height layer and there must not be more + * channels in each group than given by maxChInGrp. + * @param [in] The packed channel mode of the configuration to be processed. * @param [in] Array containing the channel mapping to be used (From MPEG PCE ordering to whatever is required). * @param [out] Array where corresponding channel types for each channels are stored into. * @param [out] Array where corresponding channel type indices for each output channel are stored into. * @param [out] Array where the buffer offsets for each channel are stored into. * @returns None. **/ +static void getChannelDescription ( const PCM_DMX_CHANNEL_MODE chMode, /* in */ - const UCHAR channelMapping[][PCM_DMX_MAX_CHANNELS], /* in */ + const UCHAR channelMapping[][8], /* in */ AUDIO_CHANNEL_TYPE channelType[], /* out */ UCHAR channelIndices[], /* out */ UCHAR offsetTable[PCM_DMX_MAX_CHANNELS] /* out */ @@ -412,15 +680,17 @@ void getChannelDescription ( FDK_ASSERT(offsetTable != NULL); /* Init output arrays */ - FDKmemclear(channelType, PCM_DMX_MAX_CHANNELS*sizeof(AUDIO_CHANNEL_TYPE)); - FDKmemclear(channelIndices, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR)); + FDKmemclear(channelType, PCM_DMX_MAX_IO_CHANNELS*sizeof(AUDIO_CHANNEL_TYPE)); + FDKmemclear(channelIndices, PCM_DMX_MAX_IO_CHANNELS*sizeof(UCHAR)); FDKmemset(offsetTable, 255, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR)); /* Extract the number of channels per group */ numChInGrp[CH_GROUP_FRONT] = chMode & 0xF; +#if (PCM_DMX_MAX_CHANNEL_GROUPS > 1) numChInGrp[CH_GROUP_SIDE] = (chMode >> 4) & 0xF; numChInGrp[CH_GROUP_REAR] = (chMode >> 8) & 0xF; numChInGrp[CH_GROUP_LFE] = (chMode >> 12) & 0xF; +#endif /* Summerize to get the total number of channels */ for (grpIdx = 0; grpIdx < PCM_DMX_MAX_CHANNEL_GROUPS; grpIdx += 1) { @@ -428,7 +698,29 @@ void getChannelDescription ( } /* Get the appropriate channel map */ - pChannelMap = channelMapping[numChannels-1]; + switch (chMode) { + case CH_MODE_1_0_0_0: + case CH_MODE_2_0_0_0: + case CH_MODE_3_0_0_0: + case CH_MODE_3_0_1_0: + case CH_MODE_3_0_2_0: + case CH_MODE_3_0_2_1: + pChannelMap = channelMapping[numChannels]; + break; + case CH_MODE_3_0_3_1: + pChannelMap = channelMapping[11]; + break; + case CH_MODE_3_0_4_1: + pChannelMap = channelMapping[12]; + break; + case CH_MODE_5_0_2_1: + pChannelMap = channelMapping[7]; + break; + default: + /* fallback */ + pChannelMap = channelMapping[0]; + break; + } /* Compose channel offset table */ @@ -436,15 +728,17 @@ void getChannelDescription ( if (numChInGrp[CH_GROUP_FRONT] & 0x1) { /* Odd number of front channels -> we have a center channel. In MPEG-4 the center has the index 0. */ - offsetTable[CENTER_FRONT_CHANNEL] = pChannelMap[0]; - channelType[0] = ACT_FRONT; + int mappedIdx = pChannelMap[ch]; + offsetTable[CENTER_FRONT_CHANNEL] = mappedIdx; + channelType[mappedIdx] = ACT_FRONT; + channelIndices[mappedIdx] = 0; ch += 1; } for (grpIdx = 0; grpIdx < PCM_DMX_MAX_CHANNEL_GROUPS; grpIdx += 1) { - AUDIO_CHANNEL_TYPE type; - int chMapPos, maxChannels = 0; - int chIdx = 0; + AUDIO_CHANNEL_TYPE type = ACT_NONE; + int chMapPos = 0, maxChannels = 0; + int chIdx = 0; /* Index of channel within the specific group */ switch (grpIdx) { case CH_GROUP_FRONT: @@ -453,10 +747,11 @@ void getChannelDescription ( maxChannels = 3; chIdx = numChInGrp[grpIdx] & 0x1; break; +#if (PCM_DMX_MAX_CHANNEL_GROUPS > 1) case CH_GROUP_SIDE: + /* Always map side channels to the multipurpose group. */ type = ACT_SIDE; - chMapPos = LEFT_OUTSIDE_CHANNEL; - maxChannels = 2; + chMapPos = LEFT_MULTIPRPS_CHANNEL; break; case CH_GROUP_REAR: type = ACT_BACK; @@ -468,20 +763,646 @@ void getChannelDescription ( chMapPos = LOW_FREQUENCY_CHANNEL; maxChannels = 1; break; +#endif default: break; } - for ( ; (chIdx < numChInGrp[grpIdx]) && (chIdx < maxChannels); chIdx += 1) { - offsetTable[chMapPos] = pChannelMap[ch]; - channelType[ch] = type; - channelIndices[ch] = chIdx; + /* Map all channels in this group */ + for ( ; chIdx < numChInGrp[grpIdx]; chIdx += 1) { + int mappedIdx = pChannelMap[ch]; + if (chIdx == maxChannels) { + /* No space left in this channel group! + Use the multipurpose group instead: */ + chMapPos = LEFT_MULTIPRPS_CHANNEL; + } + offsetTable[chMapPos] = mappedIdx; + channelType[mappedIdx] = type; + channelIndices[mappedIdx] = chIdx; chMapPos += 1; ch += 1; } } } +/** Private helper function for downmix matrix manipulation that initializes + * one row in a given downmix matrix (corresponding to one output channel). + * @param [inout] Pointer to fixed-point parts of the downmix matrix. + * @param [inout] Pointer to scale factor matrix associated to the downmix factors. + * @param [in] Index of channel (row) to be initialized. + * @returns Nothing to return. + **/ +static +void dmxInitChannel( + FIXP_DMX mixFactors[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS], + INT mixScales[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS], + const unsigned int outCh + ) +{ + unsigned int inCh; + for (inCh=0; inCh < PCM_DMX_MAX_CHANNELS; inCh+=1) { + if (inCh == outCh) { + mixFactors[outCh][inCh] = FL2FXCONST_DMX(0.5f); + mixScales[outCh][inCh] = 1; + } else { + mixFactors[outCh][inCh] = FL2FXCONST_DMX(0.0f); + mixScales[outCh][inCh] = 0; + } + } +} + +/** Private helper function for downmix matrix manipulation that does a reset + * of one row in a given downmix matrix (corresponding to one output channel). + * @param [inout] Pointer to fixed-point parts of the downmix matrix. + * @param [inout] Pointer to scale factor matrix associated to the downmix factors. + * @param [in] Index of channel (row) to be cleared/reset. + * @returns Nothing to return. + **/ +static +void dmxClearChannel( + FIXP_DMX mixFactors[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS], + INT mixScales[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS], + const unsigned int outCh + ) +{ + FDKmemclear(&mixFactors[outCh], PCM_DMX_MAX_CHANNELS*sizeof(FIXP_DMX)); + FDKmemclear(&mixScales[outCh], PCM_DMX_MAX_CHANNELS*sizeof(INT)); +} + +/** Private helper function for downmix matrix manipulation that applies a source channel (row) + * scaled by a given mix factor to a destination channel (row) in a given downmix matrix. + * Existing mix factors of the destination channel (row) will get overwritten. + * @param [inout] Pointer to fixed-point parts of the downmix matrix. + * @param [inout] Pointer to scale factor matrix associated to the downmix factors. + * @param [in] Index of source channel (row). + * @param [in] Index of destination channel (row). + * @param [in] Fixed-point part of mix factor to be applied. + * @param [in] Scale factor of mix factor to be applied. + * @returns Nothing to return. + **/ +static +void dmxSetChannel( + FIXP_DMX mixFactors[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS], + INT mixScales[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS], + const unsigned int dstCh, + const unsigned int srcCh, + const FIXP_DMX factor, + const INT scale + ) +{ + int ch; + for (ch=0; ch < PCM_DMX_MAX_CHANNELS; ch+=1) { + if (mixFactors[srcCh][ch] != (FIXP_DMX)0) { + mixFactors[dstCh][ch] = FX_DBL2FX_DMX(fMult(mixFactors[srcCh][ch], factor)); + mixScales[dstCh][ch] = mixScales[srcCh][ch] + scale; + } + } +} + +/** Private helper function for downmix matrix manipulation that adds a source channel (row) + * scaled by a given mix factor to a destination channel (row) in a given downmix matrix. + * @param [inout] Pointer to fixed-point parts of the downmix matrix. + * @param [inout] Pointer to scale factor matrix associated to the downmix factors. + * @param [in] Index of source channel (row). + * @param [in] Index of destination channel (row). + * @param [in] Fixed-point part of mix factor to be applied. + * @param [in] Scale factor of mix factor to be applied. + * @returns Nothing to return. + **/ +static +void dmxAddChannel( + FIXP_DMX mixFactors[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS], + INT mixScales[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS], + const unsigned int dstCh, + const unsigned int srcCh, + const FIXP_DMX factor, + const INT scale + ) +{ + int ch; + for (ch=0; ch < PCM_DMX_MAX_CHANNELS; ch+=1) { + FIXP_DBL addFact = fMult(mixFactors[srcCh][ch], factor); + if (addFact != (FIXP_DMX)0) { + INT newScale = mixScales[srcCh][ch] + scale; + if (mixFactors[dstCh][ch] != (FIXP_DMX)0) { + if (newScale > mixScales[dstCh][ch]) { + mixFactors[dstCh][ch] >>= newScale - mixScales[dstCh][ch]; + } else { + addFact >>= mixScales[dstCh][ch] - newScale; + newScale = mixScales[dstCh][ch]; + } + } + mixFactors[dstCh][ch] += FX_DBL2FX_DMX(addFact); + mixScales[dstCh][ch] = newScale; + } + } +} + + +/** Private function that creates a downmix factor matrix depending on the input and output + * configuration, the user parameters as well as the given metadata. This function is the modules + * brain and hold all downmix algorithms. + * @param [in] Flag that indicates if inChMode holds a real (packed) channel mode or has been + converted to a MPEG-4 channel configuration index. + * @param [in] Dependent on the inModeIsCfg flag this field hands in a (packed) channel mode or + the corresponding MPEG-4 channel configuration index.of the input configuration. + * @param [in] The (packed) channel mode of the output configuration. + * @param [in] Pointer to structure holding all current user parameter. + * @param [in] Pointer to field holding all current meta data. + * @param [out] Pointer to fixed-point parts of the downmix matrix. Normalized to one scale factor. + * @param [out] The common scale factor of the downmix matrix. + * @returns An error code. + **/ +static +PCMDMX_ERROR getMixFactors ( + const UCHAR inModeIsCfg, + PCM_DMX_CHANNEL_MODE inChMode, + const PCM_DMX_CHANNEL_MODE outChMode, + const PCM_DMX_USER_PARAMS *pParams, + const DMX_BS_META_DATA *pMetaData, + FIXP_DMX mixFactors[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS], + INT *pOutScale + ) +{ + PCMDMX_ERROR err = PCMDMX_OK; + INT mixScales[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS]; + INT maxScale = 0; + int numInChannel, numOutChannel; + unsigned int outCh, inCh, inChCfg = 0; + unsigned int valid[PCM_DMX_MAX_CHANNELS] = { 0 }; + + FDK_ASSERT(pMetaData != NULL); + FDK_ASSERT(mixFactors != NULL); + /* Check on a supported output configuration */ + FDK_ASSERT( (outChMode == CH_MODE_1_0_0_0) + || (outChMode == CH_MODE_2_0_0_0) + || (outChMode == CH_MODE_3_0_2_1) ); + + if (inModeIsCfg) { + /* Workaround for the ambiguity of the internal channel modes. + Convert channel config to channel mode: */ + inChCfg = (unsigned int)inChMode; + switch (inChCfg) { + case 1: case 2: case 3: +#if (PCM_DMX_MAX_CHANNELS > 3) + case 4: case 5: case 6: +#endif + inChMode = outChModeTable[inChCfg]; + break; + case 11: + inChMode = CH_MODE_3_0_3_1; + break; + case 12: + inChMode = CH_MODE_3_0_4_1; + break; + case 7: case 14: + inChMode = CH_MODE_5_0_2_1; + break; + default: + FDK_ASSERT(0); + } + } + + /* Extract the total number of input channels */ + numInChannel = (inChMode&0xF) + + ((inChMode>> 4)&0xF) + + ((inChMode>> 8)&0xF) + + ((inChMode>>12)&0xF); + /* Extract the total number of output channels */ + numOutChannel = (outChMode&0xF) + + ((outChMode>> 4)&0xF) + + ((outChMode>> 8)&0xF) + + ((outChMode>>12)&0xF); + + /* MPEG ammendment 4 aka ETSI metadata and fallback mode: */ + + + /* Create identity DMX matrix: */ + for (outCh=0; outCh < PCM_DMX_MAX_CHANNELS; outCh+=1) { + dmxInitChannel( mixFactors, mixScales, outCh ); + } + if (((inChMode>>12)&0xF) == 0) { + /* Clear empty or wrongly mapped input channel */ + dmxClearChannel( mixFactors, mixScales, LOW_FREQUENCY_CHANNEL ); + } + + /* FIRST STAGE: */ + if (numInChannel > SIX_CHANNEL) + { /* Always use MPEG equations either with meta data or with default values. */ + FIXP_DMX dMixFactA, dMixFactB; + INT dMixScaleA, dMixScaleB; + int isValidCfg = TRUE; + + /* Get factors from meta data */ + dMixFactA = abMixLvlValueTab[pMetaData->dmixIdxA]; + dMixScaleA = (pMetaData->dmixIdxA==0) ? 1 : 0; + dMixFactB = abMixLvlValueTab[pMetaData->dmixIdxB]; + dMixScaleB = (pMetaData->dmixIdxB==0) ? 1 : 0; + + /* Check if input is in the list of supported configurations */ + switch (inChMode) { + case CH_MODE_3_0_3_1: /* chCfg 11 */ + /* 6.1ch: C' = C; L' = L; R' = R; LFE' = LFE; + Ls' = Ls*dmix_a_idx + Cs*dmix_b_idx; + Rs' = Rs*dmix_a_idx + Cs*dmix_b_idx; */ + dmxClearChannel( mixFactors, mixScales, RIGHT_MULTIPRPS_CHANNEL ); /* clear empty input channel */ + dmxSetChannel( mixFactors, mixScales, LEFT_REAR_CHANNEL, LEFT_REAR_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, LEFT_REAR_CHANNEL, LEFT_MULTIPRPS_CHANNEL, dMixFactB, dMixScaleB ); + dmxSetChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL, RIGHT_REAR_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL, LEFT_MULTIPRPS_CHANNEL, dMixFactB, dMixScaleB ); + break; + case CH_MODE_3_2_1_0: + case CH_MODE_3_2_1_1: /* chCfg 11 but with side channels */ + /* 6.1ch: C' = C; L' = L; R' = R; LFE' = LFE; + Ls' = Ls*dmix_a_idx + Cs*dmix_b_idx; + Rs' = Rs*dmix_a_idx + Cs*dmix_b_idx; */ + dmxClearChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL ); /* clear empty input channel */ + dmxSetChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL, LEFT_REAR_CHANNEL, dMixFactB, dMixScaleB ); + dmxSetChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL, RIGHT_MULTIPRPS_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, LEFT_REAR_CHANNEL, LEFT_REAR_CHANNEL, dMixFactB, dMixScaleB ); + dmxSetChannel( mixFactors, mixScales, LEFT_REAR_CHANNEL, LEFT_MULTIPRPS_CHANNEL, dMixFactA, dMixScaleA ); + isValidCfg = FALSE; + err = PCMDMX_INVALID_MODE; + break; + case CH_MODE_5_2_1_0: + case CH_MODE_5_0_1_0: + case CH_MODE_5_0_1_1: + /* Ls' = Cs*dmix_a_idx; + Rs' = Cs*dmix_a_idx; */ + dmxClearChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL ); /* clear empty input channel */ + dmxSetChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL, LEFT_REAR_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, LEFT_REAR_CHANNEL, LEFT_REAR_CHANNEL, dMixFactA, dMixScaleA ); + isValidCfg = FALSE; + err = PCMDMX_INVALID_MODE; + break; + case CH_MODE_3_0_4_1: /* chCfg 12 */ + /* 7.1ch Surround Back: C' = C; L' = L; R' = R; LFE' = LFE; + Ls' = Ls*dmix_a_idx + Lsr*dmix_b_idx; + Rs' = Rs*dmix_a_idx + Rsr*dmix_b_idx; */ + dmxSetChannel( mixFactors, mixScales, LEFT_REAR_CHANNEL, LEFT_REAR_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, LEFT_REAR_CHANNEL, LEFT_MULTIPRPS_CHANNEL, dMixFactB, dMixScaleB ); + dmxSetChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL, RIGHT_REAR_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL, RIGHT_MULTIPRPS_CHANNEL, dMixFactB, dMixScaleB ); + break; + case CH_MODE_5_0_2_1: /* chCfg 7 || 14 */ + if (inChCfg == 14) { + /* 7.1ch Front Height: C' = C; Ls' = Ls; Rs' = Rs; LFE' = LFE; + L' = L*dmix_a_idx + Lv*dmix_b_idx; + R' = R*dmix_a_idx + Rv*dmix_b_idx; */ + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_MULTIPRPS_CHANNEL, dMixFactB, dMixScaleB ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_MULTIPRPS_CHANNEL, dMixFactB, dMixScaleB ); + } else { + /* 7.1ch Front: Ls' = Ls; Rs' = Rs; LFE' = LFE; + C' = C + (Lc+Rc)*dmix_a_idx; + L' = L + Lc*dmix_b_idx; + R' = R + Rc*dmix_b_idx; + CAUTION: L+R are not at (MPEG) index 1+2. */ + dmxSetChannel( mixFactors, mixScales, CENTER_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, CENTER_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, dMixFactA, dMixScaleA ); + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, dMixFactB, dMixScaleB ); + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_MULTIPRPS_CHANNEL, FL2FXCONST_DMX(0.5f), 1 ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, dMixFactB, dMixScaleB ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_MULTIPRPS_CHANNEL, FL2FXCONST_DMX(0.5f), 1 ); + } + break; + default: + /* Nothing to do. Just use the identity matrix. */ + isValidCfg = FALSE; + err = PCMDMX_INVALID_MODE; + break; + } + + /* Add additional DMX gain */ + if ( (isValidCfg == TRUE) + && (pMetaData->dmxGainIdx5 != 0)) + { /* Apply DMX gain 5 */ + FIXP_DMX dmxGain; + INT dmxScale; + INT sign = (pMetaData->dmxGainIdx5 & 0x40) ? -1 : 1; + INT val = pMetaData->dmxGainIdx5 & 0x3F; + + /* 10^(dmx_gain_5/80) */ + dmxGain = FX_DBL2FX_DMX( fLdPow( + FL2FXCONST_DBL(0.830482023721841f), 2, /* log2(10) */ + (FIXP_DBL)(sign*val*(LONG)FL2FXCONST_DBL(0.0125f)), 0, + &dmxScale ) + ); + /* Currently only positive scale factors supported! */ + if (dmxScale < 0) { + dmxGain >>= -dmxScale; + dmxScale = 0; + } + + dmxSetChannel( mixFactors, mixScales, CENTER_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, dmxGain, dmxScale ); + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, dmxGain, dmxScale ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, dmxGain, dmxScale ); + dmxSetChannel( mixFactors, mixScales, LEFT_REAR_CHANNEL, LEFT_REAR_CHANNEL, dmxGain, dmxScale ); + dmxSetChannel( mixFactors, mixScales, RIGHT_REAR_CHANNEL, RIGHT_REAR_CHANNEL, dmxGain, dmxScale ); + dmxSetChannel( mixFactors, mixScales, LOW_FREQUENCY_CHANNEL, LOW_FREQUENCY_CHANNEL, dmxGain, dmxScale ); + } + + /* Mark the output channels */ + valid[CENTER_FRONT_CHANNEL] = 1; + valid[LEFT_FRONT_CHANNEL] = 1; + valid[RIGHT_FRONT_CHANNEL] = 1; + valid[LEFT_REAR_CHANNEL] = 1; + valid[RIGHT_REAR_CHANNEL] = 1; + valid[LOW_FREQUENCY_CHANNEL] = 1; + + /* Update channel mode for the next stage */ + inChMode = CH_MODE_3_0_2_1; + } + + /* SECOND STAGE: */ + if (numOutChannel <= TWO_CHANNEL) { + /* Create DMX matrix according to input configuration */ + switch (inChMode) { + case CH_MODE_2_0_0_0: /* chCfg 2 */ + /* Apply the dual channel mode. */ + switch (pParams->dualChannelMode) { + case CH1_MODE: /* L' = 0.707 * Ch1; + R' = 0.707 * Ch1; */ + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + break; + case CH2_MODE: /* L' = 0.707 * Ch2; + R' = 0.707 * Ch2; */ + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + break; + case MIXED_MODE: /* L' = 0.5*Ch1 + 0.5*Ch2; + R' = 0.5*Ch1 + 0.5*Ch2; */ + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, FL2FXCONST_DMX(0.5f), 0 ); + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, FL2FXCONST_DMX(0.5f), 0 ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, FL2FXCONST_DMX(0.5f), 0 ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, FL2FXCONST_DMX(0.5f), 0 ); + break; + default: + case STEREO_MODE: + /* Nothing to do */ + break; + } + break; + case CH_MODE_2_0_1_0: + /* L' = L + 0.707*S; + R' = R + 0.707*S; */ + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_REAR_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, LEFT_REAR_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + break; + case CH_MODE_3_0_0_0: /* chCfg 3 */ + /* L' = L + 0.707*C; + R' = R + 0.707*C; */ + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + break; + case CH_MODE_3_0_1_0: /* chCfg 4 */ + /* L' = L + 0.707*C + 0.707*S; + R' = R + 0.707*C + 0.707*S; */ + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_REAR_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, LEFT_REAR_CHANNEL, FL2FXCONST_DMX(0.707f), 0 ); + break; + case CH_MODE_3_0_2_0: /* chCfg 5 */ + case CH_MODE_3_0_2_1: /* chCfg 6 */ + /* MPEG + ITU + DLB + But because the default downmix equations and coefficients are equal we stick to MPEG. */ + if ( (pMetaData->typeFlags & TYPE_DSE_DATA) + || !(pMetaData->typeFlags & TYPE_PCE_DATA) ) + { + FIXP_DMX cMixLvl, sMixLvl, lMixLvl; + INT cMixScale, sMixScale, lMixScale; + + /* Get factors from meta data */ + cMixLvl = abMixLvlValueTab[pMetaData->cLevIdx]; + cMixScale = (pMetaData->cLevIdx==0) ? 1 : 0; + sMixLvl = abMixLvlValueTab[pMetaData->sLevIdx]; + sMixScale = (pMetaData->sLevIdx==0) ? 1 : 0; + lMixLvl = lfeMixLvlValueTab[pMetaData->dmixIdxLfe]; + if (pMetaData->dmixIdxLfe <= 1) { + lMixScale = 2; + } else if (pMetaData->dmixIdxLfe <= 5) { + lMixScale = 1; + } else { + lMixScale = 0; + } + /* Setup the DMX matrix */ + if ( (pParams->pseudoSurrMode == FORCE_PS_DMX) + || ((pParams->pseudoSurrMode == AUTO_PS_DMX) && (pMetaData->pseudoSurround==1))) + { /* L' = L + C*clev - (Ls+Rs)*slev + LFE*lflev; + R' = R + C*clev + (Ls+Rs)*slev + LFE*lflev; */ + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, cMixLvl, cMixScale ); + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_REAR_CHANNEL, -sMixLvl, sMixScale ); + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, RIGHT_REAR_CHANNEL, -sMixLvl, sMixScale ); + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LOW_FREQUENCY_CHANNEL, lMixLvl, lMixScale ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, cMixLvl, cMixScale ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, LEFT_REAR_CHANNEL, sMixLvl, sMixScale ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_REAR_CHANNEL, sMixLvl, sMixScale ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, LOW_FREQUENCY_CHANNEL, lMixLvl, lMixScale ); + } + else + { /* L' = L + C*clev + Ls*slev + LFE*llev; + R' = R + C*clev + Rs*slev + LFE*llev; */ + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, cMixLvl, cMixScale ); + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_REAR_CHANNEL, sMixLvl, sMixScale ); + dmxAddChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LOW_FREQUENCY_CHANNEL, lMixLvl, lMixScale ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, cMixLvl, cMixScale ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_REAR_CHANNEL, sMixLvl, sMixScale ); + dmxAddChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, LOW_FREQUENCY_CHANNEL, lMixLvl, lMixScale ); + } + + /* Add additional DMX gain */ + if ( pMetaData->dmxGainIdx2 != 0 ) + { /* Apply DMX gain 2 */ + FIXP_DMX dmxGain; + INT dmxScale; + INT sign = (pMetaData->dmxGainIdx2 & 0x40) ? -1 : 1; + INT val = pMetaData->dmxGainIdx2 & 0x3F; + + /* 10^(dmx_gain_2/80) */ + dmxGain = FX_DBL2FX_DMX( fLdPow( + FL2FXCONST_DBL(0.830482023721841f), 2, /* log2(10) */ + (FIXP_DBL)(sign*val*(LONG)FL2FXCONST_DBL(0.0125f)), 0, + &dmxScale ) + ); + /* Currently only positive scale factors supported! */ + if (dmxScale < 0) { + dmxGain >>= -dmxScale; + dmxScale = 0; + } + + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, dmxGain, dmxScale ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, dmxGain, dmxScale ); + } + } +#ifdef PCE_METADATA_ENABLE + else { + FIXP_DMX flev, clev, slevLL, slevLR, slevRL, slevRR; + FIXP_DMX mtrxMixDwnCoef = mpegMixDownIdx2Coef[pMetaData->matrixMixdownIdx]; + + if ( (pParams->pseudoSurrMode == FORCE_PS_DMX) + || ((pParams->pseudoSurrMode == AUTO_PS_DMX) && (pMetaData->pseudoSurround==1))) + { /* 3/2 input: L' = (1.707+2*A)^-1 * [L+0.707*C-A*Ls-A*Rs]; + R' = (1.707+2*A)^-1 * [R+0.707*C+A*Ls+A*Rs]; */ + flev = mpegMixDownIdx2PreFact[1][pMetaData->matrixMixdownIdx]; + slevRR = slevRL = FX_DBL2FX_DMX(fMult(flev, mtrxMixDwnCoef)); + slevLL = slevLR = -slevRL; + } + else { + /* 3/2 input: L' = (1.707+A)^-1 * [L+0.707*C+A*Ls]; + R' = (1.707+A)^-1 * [R+0.707*C+A*Rs]; */ + flev = mpegMixDownIdx2PreFact[0][pMetaData->matrixMixdownIdx]; + slevRR = slevLL = FX_DBL2FX_DMX(fMult(flev, mtrxMixDwnCoef)); + slevLR = slevRL = (FIXP_SGL)0; + } + /* common factor */ + clev = FX_DBL2FX_DMX(fMult(flev, mpegMixDownIdx2Coef[0] /* 0.707 */)); + + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, flev, 0 ); + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, clev, 0 ); + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, LEFT_REAR_CHANNEL, slevLL, 0 ); + dmxSetChannel( mixFactors, mixScales, LEFT_FRONT_CHANNEL, RIGHT_REAR_CHANNEL, slevLR, 0 ); + + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, flev, 0 ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, CENTER_FRONT_CHANNEL, clev, 0 ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, LEFT_REAR_CHANNEL, slevRL, 0 ); + dmxSetChannel( mixFactors, mixScales, RIGHT_FRONT_CHANNEL, RIGHT_REAR_CHANNEL, slevRR, 0 ); + } +#endif /* PCE_METADATA_ENABLE */ + break; + default: + /* This configuration does not fit to any known downmix equation! */ + err = PCMDMX_INVALID_MODE; + break; + } + /* Mark the output channels */ + FDKmemclear(valid, PCM_DMX_MAX_CHANNELS*sizeof(unsigned int)); + valid[LEFT_FRONT_CHANNEL] = 1; + valid[RIGHT_FRONT_CHANNEL] = 1; + /* Update channel mode for the next stage */ + inChMode = CH_MODE_2_0_0_0; + } + + if (numOutChannel == ONE_CHANNEL) { + FIXP_DMX monoMixLevel; + INT monoMixScale; + +#ifdef PCE_METADATA_ENABLE + if ( (pMetaData->typeFlags & TYPE_PCE_DATA) + && !(pMetaData->typeFlags & TYPE_DSE_DATA) ) + { /* C' = (3+2*A)^-1 * [C+L+R+A*Ls+A+Rs]; */ + monoMixLevel = mpegMixDownIdx2PreFact[2][pMetaData->matrixMixdownIdx]; + monoMixScale = 0; + + dmxClearChannel( mixFactors, mixScales, CENTER_FRONT_CHANNEL ); + mixFactors[CENTER_FRONT_CHANNEL][CENTER_FRONT_CHANNEL] = monoMixLevel; + mixFactors[CENTER_FRONT_CHANNEL][LEFT_FRONT_CHANNEL] = monoMixLevel; + mixFactors[CENTER_FRONT_CHANNEL][RIGHT_FRONT_CHANNEL] = monoMixLevel; + monoMixLevel = FX_DBL2FX_DMX(fMult(monoMixLevel, mpegMixDownIdx2Coef[pMetaData->matrixMixdownIdx])); + mixFactors[CENTER_FRONT_CHANNEL][LEFT_REAR_CHANNEL] = monoMixLevel; + mixFactors[CENTER_FRONT_CHANNEL][RIGHT_REAR_CHANNEL] = monoMixLevel; + } + else +#endif + { /* C' = L + R; [default] */ + monoMixLevel = FL2FXCONST_DMX(0.5f); + monoMixScale = 1; + dmxClearChannel( mixFactors, mixScales, CENTER_FRONT_CHANNEL ); /* C is not in the mix */ + dmxSetChannel( mixFactors, mixScales, CENTER_FRONT_CHANNEL, LEFT_FRONT_CHANNEL, monoMixLevel, monoMixScale ); + dmxAddChannel( mixFactors, mixScales, CENTER_FRONT_CHANNEL, RIGHT_FRONT_CHANNEL, monoMixLevel, monoMixScale ); + } + + /* Mark the output channel */ + FDKmemclear(valid, PCM_DMX_MAX_CHANNELS*sizeof(unsigned int)); + valid[CENTER_FRONT_CHANNEL] = 1; + } + +#define MAX_SEARCH_START_VAL ( -7 ) + + { + LONG chSum[PCM_DMX_MAX_CHANNELS]; + INT chSumMax = MAX_SEARCH_START_VAL; + + /* Determine the current maximum scale factor */ + for (outCh=0; outCh < PCM_DMX_MAX_CHANNELS; outCh+=1) { + if (valid[outCh]!=0) { + for (inCh=0; inCh < PCM_DMX_MAX_CHANNELS; inCh+=1) { + if (mixScales[outCh][inCh] > maxScale) + { /* Store the new maximum */ + maxScale = mixScales[outCh][inCh]; + } + } + } + } + + /* Individualy analyse output chanal levels */ + for (outCh=0; outCh < PCM_DMX_MAX_CHANNELS; outCh+=1) { + chSum[outCh] = MAX_SEARCH_START_VAL; + if (valid[outCh]!=0) { + int ovrflwProtScale = 0; + + /* Accumulate all factors for each output channel */ + chSum[outCh] = 0; + for (inCh=0; inCh < PCM_DMX_MAX_CHANNELS; inCh+=1) { + SHORT addFact = FX_DMX2SHRT(mixFactors[outCh][inCh]); + if ( mixScales[outCh][inCh] <= maxScale ) { + addFact >>= maxScale - mixScales[outCh][inCh]; + } else { + addFact <<= mixScales[outCh][inCh] - maxScale; + } + chSum[outCh] += addFact; + } + if (chSum[outCh] > (LONG)MAXVAL_SGL) { + while (chSum[outCh] > (LONG)MAXVAL_SGL) { + ovrflwProtScale += 1; + chSum[outCh] >>= 1; + } + } else if (chSum[outCh] > 0) { + while ((chSum[outCh]<<1) <= (LONG)MAXVAL_SGL) { + ovrflwProtScale -= 1; + chSum[outCh] <<= 1; + } + } + /* Store the differential scaling in the same array */ + chSum[outCh] = ovrflwProtScale; + } + } + + for (outCh=0; outCh < PCM_DMX_MAX_CHANNELS; outCh+=1) { + if ( (valid[outCh] != 0) + && (chSum[outCh] > chSumMax) ) + { /* Store the new maximum */ + chSumMax = chSum[outCh]; + } + } + maxScale = FDKmax(maxScale+chSumMax, 0); + + /* Normalize all factors */ + for (outCh=0; outCh < PCM_DMX_MAX_CHANNELS; outCh+=1) { + if (valid[outCh]!=0) { + for (inCh=0; inCh < PCM_DMX_MAX_CHANNELS; inCh+=1) { + if (mixFactors[outCh][inCh] != (FIXP_DMX)0) { + if ( mixScales[outCh][inCh] <= maxScale ) { + mixFactors[outCh][inCh] >>= maxScale - mixScales[outCh][inCh]; + } else { + mixFactors[outCh][inCh] <<= mixScales[outCh][inCh] - maxScale; + } + mixScales[outCh][inCh] = maxScale; + } + } + } + } + } + + + /* return the scale factor */ + *pOutScale = maxScale; + + return (err); +} + /** Open and initialize an instance of the PCM downmix module * @param [out] Pointer to a buffer receiving the handle of the new instance. @@ -526,24 +1447,24 @@ PCMDMX_ERROR pcmDmx_Reset ( if (self == NULL) { return (PCMDMX_INVALID_HANDLE); } if (flags & PCMDMX_RESET_PARAMS) { - self->dualChannelMode = STEREO_MODE; - self->numOutputChannels = 0; - self->applyProcessing = 0; - self->frameDelay = 0; - self->expiryFrame = PCMDMX_DFLT_EXPIRY_FRAME; + PCM_DMX_USER_PARAMS *pParams = &self->userParams; + + pParams->dualChannelMode = STEREO_MODE; + pParams->pseudoSurrMode = NEVER_DO_PS_DMX; + pParams->numOutChannelsMax = PCM_DMX_DFLT_MAX_OUT_CHANNELS; + pParams->numOutChannelsMin = PCM_DMX_DFLT_MIN_OUT_CHANNELS; + pParams->frameDelay = 0; + pParams->expiryFrame = PCM_DMX_DFLT_EXPIRY_FRAME; + + self->applyProcessing = 0; } if (flags & PCMDMX_RESET_BS_DATA) { int slot; + /* Init all slots with a default set */ for (slot = 0; slot <= PCM_DMX_MAX_DELAY_FRAMES; slot += 1) { - self->dvbMixDownLevels[slot].centerMixLevelValue = dvbDownmixFactors[2]; /* 0.707 */ - self->dvbMixDownLevels[slot].surroundMixLevelValue = dvbDownmixFactors[0]; /* 1.000 */ - self->dvbMixDownLevels[slot].mixLevelsAvail = 0; - - self->mpegMixDownInfo[slot].mixdownAvailable = 0; + FDKmemcpy(&self->bsMetaData[slot], &dfltMetaData, sizeof(DMX_BS_META_DATA)); } - /* Reset expiry counter */ - self->expiryCount = 0; } return (PCMDMX_OK); @@ -558,8 +1479,8 @@ PCMDMX_ERROR pcmDmx_Reset ( **/ PCMDMX_ERROR pcmDmx_SetParam ( HANDLE_PCM_DOWNMIX self, - PCMDMX_PARAM param, - UINT value + const PCMDMX_PARAM param, + const INT value ) { switch (param) @@ -567,39 +1488,70 @@ PCMDMX_ERROR pcmDmx_SetParam ( case DMX_BS_DATA_EXPIRY_FRAME: if (self == NULL) return (PCMDMX_INVALID_HANDLE); - self->expiryFrame = value; + self->userParams.expiryFrame = (value > 0) ? (UINT)value : 0; break; case DMX_BS_DATA_DELAY: - if (value > PCM_DMX_MAX_DELAY_FRAMES) { + if ( (value > PCM_DMX_MAX_DELAY_FRAMES) + || (value < 0) ) { return (PCMDMX_UNABLE_TO_SET_PARAM); } if (self == NULL) { return (PCMDMX_INVALID_HANDLE); } - self->frameDelay = value; + self->userParams.frameDelay = (UCHAR)value; break; - case NUMBER_OF_OUTPUT_CHANNELS: - switch ((int)value) { /* supported output channels */ - case -1: case 0: case 1: case 2: - case 6: case 8: + case MIN_NUMBER_OF_OUTPUT_CHANNELS: + switch (value) { /* supported output channels */ + case -1: case 0: case ONE_CHANNEL: case TWO_CHANNEL: +#if (PCM_DMX_MAX_OUT_CHANNELS >= 6) + case SIX_CHANNEL: +#endif +#if (PCM_DMX_MAX_OUT_CHANNELS >= 8) + case EIGHT_CHANNEL: +#endif break; default: return (PCMDMX_UNABLE_TO_SET_PARAM); } if (self == NULL) return (PCMDMX_INVALID_HANDLE); - if ((int)value > 0) { - self->numOutputChannels = (int)value; - self->applyProcessing = 1; - } else { - self->numOutputChannels = 0; - self->applyProcessing = 0; + /* Store the new value */ + self->userParams.numOutChannelsMin = (value > 0) ? value : -1; + if ( (value > 0) + && (self->userParams.numOutChannelsMax > 0) + && (value > self->userParams.numOutChannelsMax) ) + { /* MIN > MAX would be an invalid state. Thus set MAX = MIN in this case. */ + self->userParams.numOutChannelsMax = self->userParams.numOutChannelsMin; } break; - case DUAL_CHANNEL_DOWNMIX_MODE: + case MAX_NUMBER_OF_OUTPUT_CHANNELS: + switch (value) { /* supported output channels */ + case -1: case 0: case ONE_CHANNEL: case TWO_CHANNEL: +#if (PCM_DMX_MAX_OUT_CHANNELS >= 6) + case SIX_CHANNEL: +#endif +#if (PCM_DMX_MAX_OUT_CHANNELS >= 8) + case EIGHT_CHANNEL: +#endif + break; + default: + return (PCMDMX_UNABLE_TO_SET_PARAM); + } + if (self == NULL) + return (PCMDMX_INVALID_HANDLE); + /* Store the new value */ + self->userParams.numOutChannelsMax = (value > 0) ? value : -1; + if ( (value > 0) + && (value < self->userParams.numOutChannelsMin) ) + { /* MAX < MIN would be an invalid state. Thus set MIN = MAX in this case. */ + self->userParams.numOutChannelsMin = self->userParams.numOutChannelsMax; + } + break; + + case DMX_DUAL_CHANNEL_MODE: switch ((DUAL_CHANNEL_MODE)value) { case STEREO_MODE: case CH1_MODE: @@ -611,8 +1563,22 @@ PCMDMX_ERROR pcmDmx_SetParam ( } if (self == NULL) return (PCMDMX_INVALID_HANDLE); - self->dualChannelMode = (DUAL_CHANNEL_MODE)value; - self->applyProcessing = 1; + self->userParams.dualChannelMode = (DUAL_CHANNEL_MODE)value; + self->applyProcessing = 1; /* Force processing */ + break; + + case DMX_PSEUDO_SURROUND_MODE: + switch ((PSEUDO_SURROUND_MODE)value) { + case NEVER_DO_PS_DMX: + case AUTO_PS_DMX: + case FORCE_PS_DMX: + break; + default: + return (PCMDMX_UNABLE_TO_SET_PARAM); + } + if (self == NULL) + return (PCMDMX_INVALID_HANDLE); + self->userParams.pseudoSurrMode = (PSEUDO_SURROUND_MODE)value; break; default: @@ -622,87 +1588,239 @@ PCMDMX_ERROR pcmDmx_SetParam ( return (PCMDMX_OK); } - -/** Read the ancillary data transported in DSEs of DVB streams with MPEG-4 content +/** Get one parameter value of one PCM downmix module instance. * @param [in] Handle of PCM downmix module instance. - * @param [in] Pointer to ancillary data buffer. - * @param [in] Size of ancillary data. - * @param [in] Flag indicating wheter the DVB ancillary data is from an MPEG-1/2 or an MPEG-4 stream. + * @param [in] Parameter to be set. + * @param [out] Pointer to buffer receiving the parameter value. * @returns Returns an error code. **/ -PCMDMX_ERROR pcmDmx_ReadDvbAncData ( +PCMDMX_ERROR pcmDmx_GetParam ( HANDLE_PCM_DOWNMIX self, - UCHAR *pAncDataBuf, - UINT ancDataBytes, + const PCMDMX_PARAM param, + INT * const pValue + ) +{ + PCM_DMX_USER_PARAMS *pUsrParams; + + if ( (self == NULL) + || (pValue == NULL) ) { + return (PCMDMX_INVALID_HANDLE); + } + pUsrParams = &self->userParams; + + switch (param) + { + case DMX_BS_DATA_EXPIRY_FRAME: + *pValue = (INT)pUsrParams->expiryFrame; + break; + case DMX_BS_DATA_DELAY: + *pValue = (INT)pUsrParams->frameDelay; + break; + case MIN_NUMBER_OF_OUTPUT_CHANNELS: + *pValue = (INT)pUsrParams->numOutChannelsMin; + break; + case MAX_NUMBER_OF_OUTPUT_CHANNELS: + *pValue = (INT)pUsrParams->numOutChannelsMax; + break; + case DMX_DUAL_CHANNEL_MODE: + *pValue = (INT)pUsrParams->dualChannelMode; + break; + case DMX_PSEUDO_SURROUND_MODE: + *pValue = (INT)pUsrParams->pseudoSurrMode; + break; + default: + return (PCMDMX_UNKNOWN_PARAM); + } + + return (PCMDMX_OK); +} + + +#ifdef DSE_METADATA_ENABLE + +#define MAX_DSE_ANC_BYTES ( 16 ) /* 15 bytes */ +#define ANC_DATA_SYNC_BYTE ( 0xBC ) /* ancillary data sync byte. */ + +/* + * Read DMX meta-data from a data stream element. + */ +PCMDMX_ERROR pcmDmx_Parse ( + HANDLE_PCM_DOWNMIX self, + HANDLE_FDK_BITSTREAM hBs, + UINT ancDataBits, int isMpeg2 ) { - DVB_MIXDOWN_LEVELS *pDownmixLevels = &self->dvbMixDownLevels[0]; + PCMDMX_ERROR errorStatus = PCMDMX_OK; + DMX_BS_META_DATA *pBsMetaData = &self->bsMetaData[0]; - int offset = (isMpeg2) ? 2 : 0; - UCHAR ancDataStatus; + int skip4Dmx = 0, skip4Ext = 0; + int dmxLvlAvail = 0, extDataAvail = 0; + int foundNewData = 0; + UINT minAncBits = ((isMpeg2) ? 5 : 3)*8; - if (self == NULL) { return (PCMDMX_INVALID_HANDLE); } + if ( (self == NULL) + || (hBs == NULL) ) { return (PCMDMX_INVALID_HANDLE); } + + ancDataBits = FDKgetValidBits(hBs); /* sanity checks */ - if (pAncDataBuf == NULL || ancDataBytes < (UCHAR)(3+offset)) { + if ( (ancDataBits < minAncBits) + || (ancDataBits > FDKgetValidBits(hBs)) ) { return (PCMDMX_CORRUPT_ANC_DATA); } + pBsMetaData = &self->bsMetaData[0]; + + if (isMpeg2) { + /* skip DVD ancillary data */ + FDKpushFor(hBs, 16); + } + /* check sync word */ - if (pAncDataBuf[offset] != ANC_DATA_SYNC_BYTE) { + if (FDKreadBits(hBs,8) != ANC_DATA_SYNC_BYTE) { return (PCMDMX_CORRUPT_ANC_DATA); } - offset += 2; - ancDataStatus = pAncDataBuf[offset++]; + /* skip MPEG audio type and Dolby surround mode */ + FDKpushFor(hBs, 4); if (isMpeg2) { - /* skip advanced_dynamic_range_control */ - if (ancDataStatus & 0x80) offset += 3; - /* skip dialog_normalization */ - if (ancDataStatus & 0x40) offset += 1; - /* skip reproduction_level */ - if (ancDataStatus & 0x20) offset += 1; + /* int numAncBytes = */ FDKreadBits(hBs, 4); + /* advanced dynamic range control */ + if (FDKreadBit(hBs)) skip4Dmx += 24; + /* dialog normalization */ + if (FDKreadBit(hBs)) skip4Dmx += 8; + /* reproduction_level */ + if (FDKreadBit(hBs)) skip4Dmx += 8; + } else { + FDKpushFor(hBs, 2); /* drc presentation mode */ + pBsMetaData->pseudoSurround = FDKreadBit(hBs); + FDKpushFor(hBs, 4); /* reserved bits */ } - else { - /* check reserved bits */ - if (ancDataStatus & 0xE8) { return (PCMDMX_CORRUPT_ANC_DATA); } + + /* downmixing levels MPEGx status */ + dmxLvlAvail = FDKreadBit(hBs); + + if (isMpeg2) { + /* scale factor CRC status */ + if (FDKreadBit(hBs)) skip4Ext += 16; + } else { + /* ancillary data extension status */ + extDataAvail = FDKreadBit(hBs); } + /* audio coding and compression status */ + if (FDKreadBit(hBs)) skip4Ext += 16; + /* coarse grain timecode status */ + if (FDKreadBit(hBs)) skip4Ext += 16; + /* fine grain timecode status */ + if (FDKreadBit(hBs)) skip4Ext += 16; + + /* skip the useless data to get to the DMX levels */ + FDKpushFor(hBs, skip4Dmx); + /* downmix_levels_MPEGX */ - if (ancDataStatus & 0x10) + if (dmxLvlAvail) { - int foundNewData = 0; - UCHAR downmixData = pAncDataBuf[offset++]; - - if (downmixData & 0x80) { /* center_mix_level_on */ - pDownmixLevels->centerMixLevelValue = - dvbDownmixFactors[(downmixData >> 4) & 0x07]; + if (FDKreadBit(hBs)) { /* center_mix_level_on */ + pBsMetaData->cLevIdx = FDKreadBits(hBs, 3); foundNewData = 1; } else { - pDownmixLevels->centerMixLevelValue = dvbDownmixFactors[0]; - if (downmixData & 0x70) { return (PCMDMX_CORRUPT_ANC_DATA); } + FDKreadBits(hBs, 3); } - - if (downmixData & 0x08) { /* surround_mix_level_on */ - pDownmixLevels->surroundMixLevelValue = - dvbDownmixFactors[downmixData & 0x07]; + if (FDKreadBit(hBs)) { /* surround_mix_level_on */ + pBsMetaData->sLevIdx = FDKreadBits(hBs, 3); foundNewData = 1; } else { - pDownmixLevels->surroundMixLevelValue = dvbDownmixFactors[0]; - if (downmixData & 0x07) { return (PCMDMX_CORRUPT_ANC_DATA); } + FDKreadBits(hBs, 3); + } + } + + /* skip the useless data to get to the ancillary data extension */ + FDKpushFor(hBs, skip4Ext); + + /* anc data extension (MPEG-4 only) */ + if (extDataAvail) { + int extDmxLvlSt, extDmxGainSt, extDmxLfeSt; + + FDKreadBit(hBs); /* reserved bit */ + extDmxLvlSt = FDKreadBit(hBs); + extDmxGainSt = FDKreadBit(hBs); + extDmxLfeSt = FDKreadBit(hBs); + FDKreadBits(hBs, 4); /* reserved bits */ + + if (extDmxLvlSt) { + pBsMetaData->dmixIdxA = FDKreadBits(hBs, 3); + pBsMetaData->dmixIdxB = FDKreadBits(hBs, 3); + FDKreadBits(hBs, 2); /* reserved bits */ + foundNewData = 1; + } + if (extDmxGainSt) { + pBsMetaData->dmxGainIdx5 = FDKreadBits(hBs, 7); + FDKreadBit(hBs); /* reserved bit */ + pBsMetaData->dmxGainIdx2 = FDKreadBits(hBs, 7); + FDKreadBit(hBs); /* reserved bit */ + foundNewData = 1; + } + if (extDmxLfeSt) { + pBsMetaData->dmixIdxLfe = FDKreadBits(hBs, 4); + FDKreadBits(hBs, 4); /* reserved bits */ + foundNewData = 1; } + } - pDownmixLevels->mixLevelsAvail = foundNewData; + /* final sanity check on the amount of read data */ + if ((INT)FDKgetValidBits(hBs) < 0) { + errorStatus = PCMDMX_CORRUPT_ANC_DATA; } - /* Reset expiry counter */ - self->expiryCount = 0; + if ( (errorStatus == PCMDMX_OK) + && (foundNewData == 1) ) { + /* announce new data */ + pBsMetaData->typeFlags |= TYPE_DSE_DATA; + /* reset expiry counter */ + pBsMetaData->expiryCount = 0; + } - return (PCMDMX_OK); + return (errorStatus); +} + +/* + * Read DMX meta-data from a data stream element. + */ +PCMDMX_ERROR pcmDmx_ReadDvbAncData ( + HANDLE_PCM_DOWNMIX self, + UCHAR *pAncDataBuf, + UINT ancDataBytes, + int isMpeg2 + ) +{ + FDK_BITSTREAM bs; + HANDLE_FDK_BITSTREAM hBs = &bs; + PCMDMX_ERROR errorStatus = PCMDMX_OK; + + if (self == NULL) { return (PCMDMX_INVALID_HANDLE); } + + /* sanity checks */ + if ( (pAncDataBuf == NULL) + || (ancDataBytes == 0) ) { + return (PCMDMX_CORRUPT_ANC_DATA); + } + + FDKinitBitStream (hBs, pAncDataBuf, MAX_DSE_ANC_BYTES, ancDataBytes*8, BS_READER); + + errorStatus = pcmDmx_Parse ( + self, + hBs, + ancDataBytes*8, + isMpeg2 ); + + return (errorStatus); } +#endif /* DSE_METADATA_ENABLE */ +#ifdef PCE_METADATA_ENABLE /** Set the matrix mixdown information extracted from the PCE of an AAC bitstream. * Note: Call only if matrix_mixdown_idx_present is true. * @param [in] Handle of PCM downmix module instance. @@ -717,38 +1835,36 @@ PCMDMX_ERROR pcmDmx_SetMatrixMixdownFromPce ( int pseudoSurroundEnable ) { - MPEG_MIXDOWN_INFO *pMpegMixDownInfo; + DMX_BS_META_DATA *pBsMetaData = &self->bsMetaData[0]; if (self == NULL) { return (PCMDMX_INVALID_HANDLE); } - pMpegMixDownInfo = &self->mpegMixDownInfo[0]; - if (matrixMixdownPresent) { - pMpegMixDownInfo->matrixMixdownIdx = matrixMixdownIdx & 0x03; - pMpegMixDownInfo->pseudoSurroundEnable = pseudoSurroundEnable; + pBsMetaData->pseudoSurround = pseudoSurroundEnable; + pBsMetaData->matrixMixdownIdx = matrixMixdownIdx & 0x03; + pBsMetaData->typeFlags |= TYPE_PCE_DATA; + /* Reset expiry counter */ + pBsMetaData->expiryCount = 0; } - pMpegMixDownInfo->mixdownAvailable = matrixMixdownPresent; - /* Reset expiry counter */ - self->expiryCount = 0; - return (PCMDMX_OK); } +#endif /* PCE_METADATA_ENABLE */ /** Apply down or up mixing. * @param [in] Handle of PCM downmix module instance. - * @param [inout] Pointer to time buffer. Depending on interface configuration, the content of pTimeData is ignored, - * and the internal QMF buffer will be used as input data source. Otherwise, the MPEG Surround processing is - * applied to the timesignal pTimeData. For both variants, the resulting MPEG Surround signal is written into pTimeData. + * @param [inout] Pointer to buffer that hold the time domain signal. * @param [in] Pointer where the amount of output samples is returned into. * @param [inout] Pointer where the amount of output channels is returned into. * @param [in] Flag which indicates if output time data are writtern interleaved or as subsequent blocks. * @param [inout] Array where the corresponding channel type for each output audio channel is stored into. * @param [inout] Array where the corresponding channel type index for each output audio channel is stored into. - * @param [in] Array containing the output channel mapping to be used (From MPEG PCE ordering to whatever is required). + * @param [in] Array containing the out channel mapping to be used (From MPEG PCE ordering to whatever is required). + * @param [out] Pointer on a field receiving the scale factor that has to be applied on all samples afterwards. + * If the handed pointer is NULL scaling is done internally. * @returns Returns an error code. **/ PCMDMX_ERROR pcmDmx_ApplyFrame ( @@ -756,97 +1872,173 @@ PCMDMX_ERROR pcmDmx_ApplyFrame ( INT_PCM *pPcmBuf, UINT frameSize, INT *nChannels, - int fInterleaved, AUDIO_CHANNEL_TYPE channelType[], UCHAR channelIndices[], - const UCHAR channelMapping[][8] + const UCHAR channelMapping[][8], + INT *pDmxOutScale ) { + PCM_DMX_USER_PARAMS *pParam = NULL; PCMDMX_ERROR errorStatus = PCMDMX_OK; DUAL_CHANNEL_MODE dualChannelMode; PCM_DMX_CHANNEL_MODE inChMode; - int numOutChannels; - int numInChannels = *nChannels; - int slot; + PCM_DMX_CHANNEL_MODE outChMode; + INT devNull; /* Just a dummy to avoid a lot of branches in the code */ + int numOutChannels, numInChannels; + int inStride, outStride, offset; + int dmxMaxScale, dmxScale; + int ch, slot; UCHAR inOffsetTable[PCM_DMX_MAX_CHANNELS]; - MPEG_MIXDOWN_INFO mpegMixDownInfo; - DVB_MIXDOWN_LEVELS dvbMixDownLevels; + DMX_BS_META_DATA bsMetaData; - if (self == NULL) { return (PCMDMX_INVALID_HANDLE); } - - if ( (self->expiryFrame > 0) - && (++self->expiryCount > self->expiryFrame) ) - { /* The metadata read from bitstream is too old. */ - errorStatus = pcmDmx_Reset(self, PCMDMX_RESET_BS_DATA); + if ( (self == NULL) + || (nChannels == NULL) + || (channelType == NULL) + || (channelIndices == NULL) + || (channelMapping == NULL) ) { + return (PCMDMX_INVALID_HANDLE); } - FDKmemcpy(&mpegMixDownInfo, &self->mpegMixDownInfo[self->frameDelay], sizeof(MPEG_MIXDOWN_INFO)); - /* Maintain delay line */ - for (slot = self->frameDelay; slot > 0; slot -= 1) { - FDKmemcpy(&self->mpegMixDownInfo[slot], &self->mpegMixDownInfo[slot-1], sizeof(MPEG_MIXDOWN_INFO)); - } - FDKmemcpy(&dvbMixDownLevels, &self->dvbMixDownLevels[self->frameDelay], sizeof(DVB_MIXDOWN_LEVELS)); - /* Maintain delay line */ - for (slot = self->frameDelay; slot > 0; slot -= 1) { - FDKmemcpy(&self->dvbMixDownLevels[slot], &self->dvbMixDownLevels[slot-1], sizeof(DVB_MIXDOWN_LEVELS)); + /* Init the output scaling */ + dmxScale = 0; + if (pDmxOutScale != NULL) { + /* Avoid final scaling internally and hand it to the outside world. */ + *pDmxOutScale = 0; + dmxMaxScale = PCMDMX_MAX_HEADROOM; + } else { + /* Apply the scaling internally. */ + pDmxOutScale = &devNull; /* redirect to temporal stack memory */ + dmxMaxScale = 0; } - if (self->applyProcessing == 0) { return (errorStatus); } + pParam = &self->userParams; + numInChannels = *nChannels; + /* Perform some input sanity checks */ if (pPcmBuf == NULL) { return (PCMDMX_INVALID_ARGUMENT); } if (frameSize == 0) { return (PCMDMX_INVALID_ARGUMENT); } - if (numInChannels == 0) { return (PCMDMX_INVALID_ARGUMENT); } + if ( (numInChannels == 0) + || (numInChannels > PCM_DMX_MAX_IN_CHANNELS) ) + { return (PCMDMX_INVALID_ARGUMENT); } + + /* Check on misconfiguration */ + FDK_ASSERT( (pParam->numOutChannelsMax <= 0) \ + || (pParam->numOutChannelsMax >= pParam->numOutChannelsMin)); + + /* Determine if the module has to do processing */ + if ( (self->applyProcessing == 0) + && ((pParam->numOutChannelsMax <= 0) + || (pParam->numOutChannelsMax >= numInChannels)) + && (pParam->numOutChannelsMin <= numInChannels) ) { + /* Nothing to do */ + return (errorStatus); + } - if (self->numOutputChannels <= 0) { + /* Determine the number of output channels */ + if ( (pParam->numOutChannelsMax > 0) + && (numInChannels > pParam->numOutChannelsMax) ) { + numOutChannels = pParam->numOutChannelsMax; + } + else if (numInChannels < pParam->numOutChannelsMin) { + numOutChannels = pParam->numOutChannelsMin; + } + else { numOutChannels = numInChannels; - } else { - numOutChannels = self->numOutputChannels; } - dualChannelMode = self->dualChannelMode; + + dualChannelMode = pParam->dualChannelMode; /* Analyse input channel configuration and get channel offset * table that can be accessed with the fixed channel labels. */ - inChMode = getChannelMode( + errorStatus = getChannelMode( numInChannels, channelType, channelIndices, - inOffsetTable + inOffsetTable, + &inChMode ); - if (inChMode == CH_MODE_UNDEFINED) { + if ( PCMDMX_IS_FATAL_ERROR(errorStatus) + || (inChMode == CH_MODE_UNDEFINED) ) { /* We don't need to restore because the channel configuration has not been changed. Just exit. */ return (PCMDMX_INVALID_CH_CONFIG); } + /* Set input stride and offset */ + if (fInterleaved) { + inStride = numInChannels; + offset = 1; /* Channel specific offset factor */ + } else { + inStride = 1; + offset = frameSize; /* Channel specific offset factor */ + } + + /* Reset downmix meta data if necessary */ + if ( (pParam->expiryFrame > 0) + && (++self->bsMetaData[0].expiryCount > pParam->expiryFrame) ) + { /* The metadata read from bitstream is too old. */ + PCMDMX_ERROR err = pcmDmx_Reset(self, PCMDMX_RESET_BS_DATA); + FDK_ASSERT(err == PCMDMX_OK); + } + FDKmemcpy(&bsMetaData, &self->bsMetaData[pParam->frameDelay], sizeof(DMX_BS_META_DATA)); + /* Maintain delay line */ + for (slot = pParam->frameDelay; slot > 0; slot -= 1) { + FDKmemcpy(&self->bsMetaData[slot], &self->bsMetaData[slot-1], sizeof(DMX_BS_META_DATA)); + } + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +#ifdef PCM_DOWNMIX_ENABLE if ( numInChannels > numOutChannels ) { /* Apply downmix */ - INT_PCM *pInCF, *pInLF, *pInRF, *pInLO, *pInRO, *pInLR, *pInRR, *pOutL, *pOutR; - FIXP_SGL flev, clev, slev; - - UINT sample; - int inStride, outStride, offset; - int useGuidedDownMix = 0; - UCHAR outOffsetTable[PCM_DMX_MAX_CHANNELS]; - - /* Set I/O strides and offsets */ - if (fInterleaved) { - inStride = numInChannels; - outStride = TWO_CHANNEL; /* The output of STAGE ONE is always STEREO !!! - STAGE TWO creates a downmix to mono if required. */ - offset = 1; /* Channel specific offset factor */ - } else { - inStride = 1; - outStride = 1; - offset = frameSize; /* Channel specific offset factor */ + INT_PCM *pInPcm[PCM_DMX_MAX_IN_CHANNELS] = { NULL }; + INT_PCM *pOutPcm[PCM_DMX_MAX_OUT_CHANNELS] = { NULL }; + FIXP_DMX mixFactors[PCM_DMX_MAX_CHANNELS][PCM_DMX_MAX_CHANNELS]; + UCHAR outOffsetTable[PCM_DMX_MAX_CHANNELS]; + UINT sample; + int chCfg = 0; + int bypScale = 0; + +#if (PCM_DMX_MAX_IN_CHANNELS >= 7) + if (numInChannels > SIX_CHANNEL) { + AUDIO_CHANNEL_TYPE multiPurposeChType[2]; + + /* Get the type of the multipurpose channels */ + multiPurposeChType[0] = channelType[inOffsetTable[LEFT_MULTIPRPS_CHANNEL]]; + multiPurposeChType[1] = channelType[inOffsetTable[RIGHT_MULTIPRPS_CHANNEL]]; + + /* Check if the input configuration is one defined in the standard. */ + switch (inChMode) { + case CH_MODE_5_0_2_1: /* chCfg 7 || 14 */ + /* Further analyse the input config to distinguish the two CH_MODE_5_0_2_1 configs. */ + if ( (multiPurposeChType[0] == ACT_FRONT_TOP) + && (multiPurposeChType[1] == ACT_FRONT_TOP) ) { + chCfg = 14; + } else { + chCfg = 7; + } + break; + case CH_MODE_3_0_3_1: /* chCfg 11 */ + chCfg = 11; + break; + case CH_MODE_3_0_4_1: /* chCfg 12 */ + chCfg = 12; + break; + default: + chCfg = 0; /* Not a known config */ + break; + } } +#endif - /* Get channel description and channel mapping for this - * stages number of output channels (always STEREO). */ + /* Set this stages output stride and channel mode: */ + outStride = (fInterleaved) ? numOutChannels : 1; + outChMode = outChModeTable[numOutChannels]; + + /* Get channel description and channel mapping for the desired output configuration. */ getChannelDescription( - CH_MODE_2_0_0_0, + outChMode, channelMapping, channelType, channelIndices, @@ -854,287 +2046,300 @@ PCMDMX_ERROR pcmDmx_ApplyFrame ( ); /* Now there is no way back because we modified the channel configuration! */ - /* Set channel pointer for input */ - pInCF = &pPcmBuf[inOffsetTable[CENTER_FRONT_CHANNEL]*offset]; - pInLF = &pPcmBuf[inOffsetTable[LEFT_FRONT_CHANNEL]*offset]; - pInRF = &pPcmBuf[inOffsetTable[RIGHT_FRONT_CHANNEL]*offset]; - pInLO = &pPcmBuf[inOffsetTable[LEFT_OUTSIDE_CHANNEL]*offset]; - pInRO = &pPcmBuf[inOffsetTable[RIGHT_OUTSIDE_CHANNEL]*offset]; - pInLR = &pPcmBuf[inOffsetTable[LEFT_REAR_CHANNEL]*offset]; - pInRR = &pPcmBuf[inOffsetTable[RIGHT_REAR_CHANNEL]*offset]; - - /* Set channel pointer for output - Caution: Different channel mapping compared to input */ - pOutL = &pPcmBuf[outOffsetTable[LEFT_FRONT_CHANNEL]*offset]; /* LEFT_FRONT_CHANNEL */ - pOutR = &pPcmBuf[outOffsetTable[RIGHT_FRONT_CHANNEL]*offset]; /* RIGHT_FRONT_CHANNEL */ - - /* Set downmix levels: */ - flev = ATTENUATION_FACTOR_1; /* 0.707 */ - clev = ATTENUATION_FACTOR_1; /* 0.707 */ - slev = ATTENUATION_FACTOR_1; /* 0.707 */ - - if ( dvbMixDownLevels.mixLevelsAvail ) { - clev = dvbMixDownLevels.centerMixLevelValue; - slev = dvbMixDownLevels.surroundMixLevelValue; - useGuidedDownMix = 1; - } - - /* FIRST STAGE: - Always downmix to 2 channel output: */ - switch ( inChMode ) - { - case CH_MODE_2_0_0_0: - case CH_MODE_2_0_0_1: - /* 2/0 input: */ - switch (dualChannelMode) - { - case CH1_MODE: /* L' = 0.707 * Ch1; R' = 0.707 * Ch1 */ - for (sample = 0; sample < frameSize; sample++) { - *pOutL = *pOutR = - (INT_PCM)SATURATE_RIGHT_SHIFT(fMult((FIXP_PCM)*pInLF, flev), DFRACT_BITS-SAMPLE_BITS, SAMPLE_BITS); - - pInLF += inStride; - pOutL += outStride; pOutR += outStride; - } - break; - - case CH2_MODE: /* L' = 0.707 * Ch2; R' = 0.707 * Ch2 */ - for (sample = 0; sample < frameSize; sample++) { - *pOutL = *pOutR = - (INT_PCM)SATURATE_RIGHT_SHIFT(fMult((FIXP_PCM)*pInRF, flev), DFRACT_BITS-SAMPLE_BITS, SAMPLE_BITS); - - pInRF += inStride; - pOutL += outStride; pOutR += outStride; + /* Create the DMX matrix */ + errorStatus = getMixFactors ( + (chCfg>0) ? 1 : 0, + (chCfg>0) ? (PCM_DMX_CHANNEL_MODE)chCfg : inChMode, + outChMode, + pParam, + &bsMetaData, + mixFactors, + &dmxScale + ); + /* No fatal errors can occur here. The function is designed to always return a valid matrix. + The error code is used to signal configurations and matrices that are not conform to any standard. */ + + /* Determine the final scaling */ + bypScale = FDKmin(dmxMaxScale, dmxScale); + *pDmxOutScale += bypScale; + dmxScale -= bypScale; + + { /* Set channel pointer for input. Remove empty cols. */ + int inCh, outCh, map[PCM_DMX_MAX_CHANNELS]; + ch = 0; + for (inCh=0; inCh < PCM_DMX_MAX_CHANNELS; inCh+=1) { + if (inOffsetTable[inCh] != 255) { + pInPcm[ch] = &pPcmBuf[inOffsetTable[inCh]*offset]; + map[ch++] = inCh; } - break; - case MIXED_MODE: /* L' = 0.5*Ch1 + 0.5*Ch2; R' = 0.5*Ch1 + 0.5*Ch2 */ - for (sample = 0; sample < frameSize; sample++) { - *pOutL = *pOutR = (*pInLF >> 1) + (*pInRF >> 1); - - pInLF += inStride; pInRF += inStride; - pOutL += outStride; pOutR += outStride; - } - break; - default: - case STEREO_MODE: - /* nothing to do */ - break; } - break; - - case CH_MODE_3_0_0_0: - /* 3/0 input: L' = L + 0.707*C; R' = R + 0.707*C; */ - for (sample = 0; sample < frameSize; sample++) - { - FIXP_DBL tCF = fMultDiv2((FIXP_PCM)*pInCF, clev); -#if (SAMPLE_BITS == 32) - /* left channel */ - *pOutL = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>1)+tCF, 1, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>1)+tCF, 1, SAMPLE_BITS); -#else - /* left channel */ - *pOutL = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>1)+tCF, DFRACT_BITS-SAMPLE_BITS-1, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>1)+tCF, DFRACT_BITS-SAMPLE_BITS-1, SAMPLE_BITS); -#endif - pInLF += inStride; pInRF += inStride; pInCF += inStride; - pOutL += outStride; pOutR += outStride; + FDK_ASSERT(ch == numInChannels); + + /* Remove unused cols from factor matrix */ + for (inCh=0; inCh < numInChannels; inCh+=1) { + if (inCh != map[inCh]) { + int outCh; + for (outCh=0; outCh < PCM_DMX_MAX_CHANNELS; outCh+=1) { + mixFactors[outCh][inCh] = mixFactors[outCh][map[inCh]]; + } + } } - break; - /* 2/1 input: not supported! - case CH_MODE_2_0_1_0: */ - - case CH_MODE_3_0_1_0: - if (useGuidedDownMix) { - /* 3/1 input: L' = L + clev*C + 0.707*slev*S; R' = R + clev*C + 0.707*slev*S; */ - slev = FX_DBL2FX_SGL(fMult(flev, slev)); /* 0.707*slef */ - - for (sample = 0; sample < frameSize; sample++) - { - FIXP_DBL tCF = fMultDiv2((FIXP_PCM)*pInCF, clev) >> 1; - FIXP_DBL tLR = fMultDiv2((FIXP_PCM)*pInLR, slev) >> 1; -#if (SAMPLE_BITS == 32) - /* left channel */ - *pOutL = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>2)+tCF+tLR, 2, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>2)+tCF+tLR, 2, SAMPLE_BITS); -#else - /* left channel */ - *pOutL = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>2)+tCF-tLR, DFRACT_BITS-SAMPLE_BITS-2, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>2)+tCF+tLR, DFRACT_BITS-SAMPLE_BITS-2, SAMPLE_BITS); -#endif - pInLF += inStride; pInRF += inStride; pInCF += inStride; pInLR += inStride; - pOutL += outStride; pOutR += outStride; - } - } else { - /* 3/1 input: L' = L + 0.707*C - 0.707*S; R' = R + 0.707*C + 0.707*S */ - for (sample = 0; sample < frameSize; sample++) - { - FIXP_DBL tCF = fMultDiv2((FIXP_PCM)*pInCF, clev) >> 1; - FIXP_DBL tLR = fMultDiv2((FIXP_PCM)*pInLR, slev) >> 1; -#if (SAMPLE_BITS == 32) - /* left channel */ - *pOutL = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>2)+tCF-tLR, 2, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>2)+tCF+tLR, 2, SAMPLE_BITS); -#else - /* left channel */ - *pOutL = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>2)+tCF-tLR, DFRACT_BITS-SAMPLE_BITS-2, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>2)+tCF+tLR, DFRACT_BITS-SAMPLE_BITS-2, SAMPLE_BITS); -#endif - pInLF += inStride; pInRF += inStride; pInCF += inStride; pInLR += inStride; - pOutL += outStride; pOutR += outStride; + /* Set channel pointer for output. Remove empty cols. */ + ch = 0; + for (outCh=0; outCh < PCM_DMX_MAX_CHANNELS; outCh+=1) { + if (outOffsetTable[outCh] != 255) { + pOutPcm[ch] = &pPcmBuf[outOffsetTable[outCh]*offset]; + map[ch++] = outCh; } } - break; - - /* 2/2 input: not supported! - case CH_MODE_2_0_2_0: */ + FDK_ASSERT(ch == numOutChannels); - case CH_MODE_3_0_2_0: /* 5.0ch input */ - case CH_MODE_3_0_2_1: /* 5.1ch input */ - if (useGuidedDownMix) { - /* 3/2 input: L' = L + clev*C + slev*Ls; R' = R + clev*C + slev*Rs; */ - for (sample = 0; sample < frameSize; sample++) - { - FIXP_DBL tCF = fMultDiv2((FIXP_PCM)*pInCF, clev) >> 1; - FIXP_DBL tLR = fMultDiv2((FIXP_PCM)*pInLR, slev) >> 1; - FIXP_DBL tRR = fMultDiv2((FIXP_PCM)*pInRR, slev) >> 1; -#if (SAMPLE_BITS == 32) - /* left channel */ - *pOutL = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>2)+tCF+tLR, 2, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>2)+tCF+tRR, 2, SAMPLE_BITS); -#else - /* left channel */ - *pOutL = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>2)+tCF+tLR, DFRACT_BITS-SAMPLE_BITS-2, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>2)+tCF+tRR, DFRACT_BITS-SAMPLE_BITS-2, SAMPLE_BITS); -#endif - pInLF += inStride; pInRF += inStride; pInCF += inStride; pInLR += inStride; pInRR += inStride; - pOutL += outStride; pOutR += outStride; + /* Remove unused rows from factor matrix */ + for (outCh=0; outCh < numOutChannels; outCh+=1) { + if (outCh != map[outCh]) { + FDKmemcpy(&mixFactors[outCh], &mixFactors[map[outCh]], PCM_DMX_MAX_CHANNELS*sizeof(FIXP_DMX)); } } - else if (mpegMixDownInfo.mixdownAvailable) { - /* 3/2 input: L' = (1.707+A)^-1 * [L+0.707*C+A*Ls]; R'= (1.707+A)^-1 * [R+0.707*C+A*Rs]; */ - FIXP_SGL mtrxMixDwnCoef = mpegMixDownIdx2Coef[mpegMixDownInfo.matrixMixdownIdx]; - FIXP_SGL mtrxMixDwnPreFact = mpegMixDownIdx2PreFact[mpegMixDownInfo.matrixMixdownIdx]; - clev = FX_DBL2FX_SGL(fMult(mtrxMixDwnPreFact, flev /* 0.707 */)); - flev = mtrxMixDwnPreFact; - slev = FX_DBL2FX_SGL(fMult(mtrxMixDwnPreFact, mtrxMixDwnCoef)); - - for (sample = 0; sample < frameSize; sample++) - { - FIXP_DBL tCF = fMultDiv2((FIXP_PCM)*pInCF, clev); - FIXP_DBL tLF = fMultDiv2((FIXP_PCM)*pInLF, flev); - FIXP_DBL tRF = fMultDiv2((FIXP_PCM)*pInRF, flev); - FIXP_DBL tLR = fMultDiv2((FIXP_PCM)*pInLR, slev); - FIXP_DBL tRR = fMultDiv2((FIXP_PCM)*pInRR, slev); - -#if (SAMPLE_BITS == 32) - /* left channel */ - *pOutL = (INT_PCM)SATURATE_LEFT_SHIFT(tLF+tCF+tLR, 1, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_LEFT_SHIFT(tRF+tCF+tRR, 1, SAMPLE_BITS); -#else - /* left channel */ - *pOutL = (INT_PCM)SATURATE_RIGHT_SHIFT(tLF+tCF+tLR, DFRACT_BITS-SAMPLE_BITS-1, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_RIGHT_SHIFT(tRF+tCF+tRR, DFRACT_BITS-SAMPLE_BITS-1, SAMPLE_BITS); -#endif + } - pInLF += inStride; pInRF += inStride; pInCF += inStride; pInLR += inStride; pInRR += inStride; - pOutL += outStride; pOutR += outStride; - } + /* Sample processing loop */ + for (sample = 0; sample < frameSize; sample++) + { + FIXP_PCM tIn[PCM_DMX_MAX_IN_CHANNELS]; + FIXP_DBL tOut[PCM_DMX_MAX_OUT_CHANNELS] = { (FIXP_DBL)0 }; + int inCh, outCh; + + /* Preload all input samples */ + for (inCh=0; inCh < numInChannels; inCh+=1) { + tIn[inCh] = (FIXP_PCM)*pInPcm[inCh]; + pInPcm[inCh] += inStride; } - else { - /* 3/2 input: L' = L + 0.707*C - 0.707*Ls - 0.707*Rs; R' = R + 0.707*C + 0.707*Ls + 0.707*Rs */ - for (sample = 0; sample < frameSize; sample++) - { - FIXP_DBL tCF = fMultDiv2((FIXP_PCM)*pInCF, clev) >> 2; - FIXP_DBL tLR = fMultDiv2((FIXP_PCM)*pInLR, slev) >> 2; - FIXP_DBL tRR = fMultDiv2((FIXP_PCM)*pInRR, slev) >> 2; -#if (SAMPLE_BITS == 32) - /* left channel */ - *pOutL = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>3)+tCF-tLR-tRR, 3, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_LEFT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>3)+tCF+tLR+tRR, 3, SAMPLE_BITS); + /* Apply downmix coefficients to input samples and accumulate for output */ + for (outCh=0; outCh < numOutChannels; outCh+=1) { + for (inCh=0; inCh < numInChannels; inCh+=1) { + tOut[outCh] += fMult(tIn[inCh], mixFactors[outCh][inCh]); + } + /* Write sample */ +#if (SAMPLE_BITS == DFRACT_BITS) + *pOutPcm[outCh] = (INT_PCM)SATURATE_LEFT_SHIFT(tOut[outCh], dmxScale, SAMPLE_BITS); #else - /* left channel */ - *pOutL = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInLF)>>3)+tCF-tLR-tRR, DFRACT_BITS-SAMPLE_BITS-3, SAMPLE_BITS); - /* right channel */ - *pOutR = (INT_PCM)SATURATE_RIGHT_SHIFT((FX_PCM2FX_DBL((FIXP_PCM)*pInRF)>>3)+tCF+tLR+tRR, DFRACT_BITS-SAMPLE_BITS-3, SAMPLE_BITS); + *pOutPcm[outCh] = (INT_PCM)SATURATE_RIGHT_SHIFT(tOut[outCh], DFRACT_BITS-SAMPLE_BITS-dmxScale, SAMPLE_BITS); #endif - pInLF += inStride; pInRF += inStride; pInCF += inStride; pInLR += inStride; pInRR += inStride; - pOutL += outStride; pOutR += outStride; - } + pOutPcm[outCh] += outStride; } - break; - - default: - errorStatus = PCMDMX_INVALID_MODE; - break; } - /* SECOND STAGE: - If desired create a mono donwmix: - Note: Input are always two channels! */ - if (numOutChannels == 1) - { - INT_PCM *pOutC; - FIXP_SGL mlev; - - if (useGuidedDownMix) mlev = FL2FXCONST_SGL(1.0f); else mlev = flev; + /* Update the number of output channels */ + *nChannels = numOutChannels; - /* Output of STAGE ONE = Input of STAGE TWO */ - FDKmemcpy(inOffsetTable, outOffsetTable, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR)); + } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + else +#endif /* PCM_DOWNMIX_ENABLE */ +#ifdef PCM_CHANNEL_EXTENSION_ENABLE + if ( numInChannels < numOutChannels ) + { /* Apply rudimentary upmix */ + /* Set up channel pointer */ + UINT sample; + UCHAR outOffsetTable[PCM_DMX_MAX_CHANNELS]; + + /* FIRST STAGE + Create a stereo/dual channel signal */ + if (numInChannels == ONE_CHANNEL) + { + INT_PCM *pInPcm[PCM_DMX_MAX_CHANNELS]; + INT_PCM *pOutLF, *pOutRF; - /* Set I/O strides and offsets */ - inStride = outStride; /* output from STAGE ONE */ - outStride = numOutChannels; /* final output */ + /* Set this stages output stride and channel mode: */ + outStride = (fInterleaved) ? TWO_CHANNEL : 1; + outChMode = outChModeTable[TWO_CHANNEL]; /* Get channel description and channel mapping for this - * stages number of output channels (always MONO). */ + * stages number of output channels (always STEREO). */ getChannelDescription( - CH_MODE_1_0_0_0, + outChMode, channelMapping, channelType, channelIndices, outOffsetTable ); + /* Now there is no way back because we modified the channel configuration! */ - /* Set input channel pointer. */ - pInLF = &pPcmBuf[inOffsetTable[LEFT_FRONT_CHANNEL]*offset]; - pInRF = &pPcmBuf[inOffsetTable[RIGHT_FRONT_CHANNEL]*offset]; + /* Set input channel pointer. The first channel is always at index 0. */ + pInPcm[CENTER_FRONT_CHANNEL] = &pPcmBuf[(frameSize-1)*inStride]; /* Considering input mapping could lead to a invalid pointer + here if the channel is not declared to be a front channel. */ - /* Set output channel pointer */ - pOutC = &pPcmBuf[outOffsetTable[CENTER_FRONT_CHANNEL]*offset]; + /* Set output channel pointer (for this stage). */ + pOutLF = &pPcmBuf[outOffsetTable[LEFT_FRONT_CHANNEL]*offset+(frameSize-1)*outStride]; + pOutRF = &pPcmBuf[outOffsetTable[RIGHT_FRONT_CHANNEL]*offset+(frameSize-1)*outStride]; - /* C' = 0.707*L + 0.707*R */ + /* 1/0 input: */ for (sample = 0; sample < frameSize; sample++) { -#if (SAMPLE_BITS == 32) - *pOutC = - (INT_PCM)SATURATE_LEFT_SHIFT(fMultDiv2((FIXP_PCM)*pInLF,mlev)+fMultDiv2((FIXP_PCM)*pInRF,mlev), 1, SAMPLE_BITS); -#else - *pOutC = - (INT_PCM)SATURATE_RIGHT_SHIFT(fMultDiv2((FIXP_PCM)*pInLF,mlev)+fMultDiv2((FIXP_PCM)*pInRF,mlev), DFRACT_BITS-SAMPLE_BITS-1, SAMPLE_BITS); -#endif + /* L' = C; R' = C; */ + *pOutLF = *pOutRF = *pInPcm[CENTER_FRONT_CHANNEL]; - pInLF += inStride; pInRF += inStride; - pOutC += 1; + pInPcm[CENTER_FRONT_CHANNEL] -= inStride; + pOutLF -= outStride; pOutRF -= outStride; } - /* Finished STAGE TWO */ + + /* Prepare for next stage: */ + inStride = outStride; + inChMode = outChMode; + FDKmemcpy(inOffsetTable, outOffsetTable, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR)); } - /* Update the number of output channels */ - *nChannels = self->numOutputChannels; +#if (PCM_DMX_MAX_OUT_CHANNELS > 2) + /* SECOND STAGE + Extend with zero channels to achieved the desired number of output channels. */ + if (numOutChannels > TWO_CHANNEL) + { + INT_PCM *pIn[PCM_DMX_MAX_CHANNELS] = { NULL }; + INT_PCM *pOut[PCM_DMX_MAX_CHANNELS] = { NULL }; + AUDIO_CHANNEL_TYPE inChTypes[PCM_DMX_MAX_CHANNELS]; + UCHAR inChIndices[PCM_DMX_MAX_CHANNELS]; + UCHAR numChPerGrp[2][PCM_DMX_MAX_CHANNEL_GROUPS]; + int nContentCh = 0; /* Number of channels with content */ + int nEmptyCh = 0; /* Number of channels with content */ + int ch, chGrp, isCompatible = 1; + + /* Do not change the signalling which is the channel types and indices. + Just reorder and add channels. So first save the input signalling. */ + FDKmemcpy(inChTypes, channelType, PCM_DMX_MAX_CHANNELS*sizeof(AUDIO_CHANNEL_TYPE)); + FDKmemcpy(inChIndices, channelIndices, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR)); + + /* Set this stages output stride and channel mode: */ + outStride = (fInterleaved) ? numOutChannels : 1; + outChMode = outChModeTable[numOutChannels]; + + /* Check if input channel config can be easily mapped to the desired output config. */ + for (chGrp = 0; chGrp < PCM_DMX_MAX_CHANNEL_GROUPS; chGrp += 1) { + numChPerGrp[IN][chGrp] = (inChMode >> (chGrp*4)) & 0xF; + numChPerGrp[OUT][chGrp] = (outChMode >> (chGrp*4)) & 0xF; + + if (numChPerGrp[IN][chGrp] > numChPerGrp[OUT][chGrp]) { + isCompatible = 0; + break; + } + } + if ( isCompatible ) { + /* Get new channel description and channel + * mapping for the desired output channel mode. */ + getChannelDescription( + outChMode, + channelMapping, + channelType, + channelIndices, + outOffsetTable + ); + /* If the input config has a back center channel but the output + config has not, copy it to left and right (if available). */ + if ( (numChPerGrp[IN][CH_GROUP_REAR]%2) + && !(numChPerGrp[OUT][CH_GROUP_REAR]%2) ) { + if (numChPerGrp[IN][CH_GROUP_REAR] == 1) { + inOffsetTable[RIGHT_REAR_CHANNEL] = inOffsetTable[LEFT_REAR_CHANNEL]; + } else if (numChPerGrp[IN][CH_GROUP_REAR] == 3) { + inOffsetTable[RIGHT_MULTIPRPS_CHANNEL] = inOffsetTable[LEFT_MULTIPRPS_CHANNEL]; + } + } + } + else { + /* Just copy and extend the original config */ + FDKmemcpy(outOffsetTable, inOffsetTable, PCM_DMX_MAX_CHANNELS*sizeof(UCHAR)); + } + + /* Set I/O channel pointer. + Note: The following assignment algorithm clears the channel offset tables. + Thus they can not be used afterwards. */ + for (ch = 0; ch < PCM_DMX_MAX_CHANNELS; ch+=1) { + if ( (outOffsetTable[ch] < 255) + && (inOffsetTable[ch] < 255) ) + { /* Set I/O pointer: */ + pIn[nContentCh] = &pPcmBuf[inOffsetTable[ch]*offset+(frameSize-1)*inStride]; + pOut[nContentCh] = &pPcmBuf[outOffsetTable[ch]*offset+(frameSize-1)*outStride]; + /* Update signalling */ + channelType[outOffsetTable[ch]] = inChTypes[inOffsetTable[ch]]; + channelIndices[outOffsetTable[ch]] = inChIndices[inOffsetTable[ch]]; + inOffsetTable[ch] = 255; + outOffsetTable[ch] = 255; + nContentCh += 1; + } + } + if ( isCompatible ) { + /* Assign the remaining input channels. + This is just a safety appliance. We should never need it. */ + for (ch = 0; ch < PCM_DMX_MAX_CHANNELS; ch+=1) { + if (inOffsetTable[ch] < 255) { + int outCh; + for (outCh = 0 ; outCh < PCM_DMX_MAX_CHANNELS; outCh += 1) { + if (outOffsetTable[outCh] < 255) { + break; + } + } + /* Set I/O pointer: */ + pIn[nContentCh] = &pPcmBuf[inOffsetTable[ch]*offset+(frameSize-1)*inStride]; + pOut[nContentCh] = &pPcmBuf[outOffsetTable[outCh]*offset+(frameSize-1)*outStride]; + /* Update signalling */ + channelType[outOffsetTable[outCh]] = inChTypes[inOffsetTable[ch]]; + channelIndices[outOffsetTable[outCh]] = inChIndices[inOffsetTable[ch]]; + inOffsetTable[ch] = 255; + outOffsetTable[outCh] = 255; + nContentCh += 1; + } + } + /* Set the remaining output channel pointer */ + for (ch = 0; ch < PCM_DMX_MAX_CHANNELS; ch+=1) { + if (outOffsetTable[ch] < 255) { + pOut[nContentCh+nEmptyCh] = &pPcmBuf[outOffsetTable[ch]*offset+(frameSize-1)*outStride]; + /* Expand output signalling */ + channelType[outOffsetTable[ch]] = ACT_NONE; + channelIndices[outOffsetTable[ch]] = nEmptyCh; + outOffsetTable[ch] = 255; + nEmptyCh += 1; + } + } + } + else { + /* Set the remaining output channel pointer */ + for (ch = nContentCh; ch < numOutChannels; ch+=1) { + pOut[ch] = &pPcmBuf[ch*offset+(frameSize-1)*outStride]; + /* Expand output signalling */ + channelType[ch] = ACT_NONE; + channelIndices[ch] = nEmptyCh; + nEmptyCh += 1; + } + } + + /* First copy the channels that have signal */ + for (sample = 0; sample < frameSize; sample+=1) { + INT_PCM tIn[PCM_DMX_MAX_CHANNELS]; + /* Read all channel samples */ + for (ch = 0; ch < nContentCh; ch+=1) { + tIn[ch] = *pIn[ch]; + pIn[ch] -= inStride; + } + /* Write all channel samples */ + for (ch = 0; ch < nContentCh; ch+=1) { + *pOut[ch] = tIn[ch]; + pOut[ch] -= outStride; + } + } + + /* Clear all the other channels */ + for (sample = 0; sample < frameSize; sample++) { + for (ch = nContentCh; ch < numOutChannels; ch+=1) { + *pOut[ch] = (INT_PCM)0; + pOut[ch] -= outStride; + } + } + } +#endif /* if (PCM_DMX_MAX_OUT_CHANNELS > 2) */ + + /* update the number of output channels */ + *nChannels = numOutChannels; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ else +#endif /* PCM_CHANNEL_EXTENSION_ENABLE */ if ( numInChannels == numOutChannels ) { /* Don't need to change the channel description here */ @@ -1143,8 +2348,9 @@ PCMDMX_ERROR pcmDmx_ApplyFrame ( { case 2: { /* Set up channel pointer */ - INT_PCM *pInLF, *pInRF, *pOutL, *pOutR; - FIXP_SGL flev; + INT_PCM *pInPcm[PCM_DMX_MAX_CHANNELS]; + INT_PCM *pOutL, *pOutR; + FIXP_DMX flev; UINT sample; int inStride, outStride, offset; @@ -1160,41 +2366,41 @@ PCMDMX_ERROR pcmDmx_ApplyFrame ( } /* Set input channel pointer */ - pInLF = &pPcmBuf[inOffsetTable[LEFT_FRONT_CHANNEL]*offset]; - pInRF = &pPcmBuf[inOffsetTable[RIGHT_FRONT_CHANNEL]*offset]; + pInPcm[LEFT_FRONT_CHANNEL] = &pPcmBuf[inOffsetTable[LEFT_FRONT_CHANNEL]*offset]; + pInPcm[RIGHT_FRONT_CHANNEL] = &pPcmBuf[inOffsetTable[RIGHT_FRONT_CHANNEL]*offset]; /* Set output channel pointer (same as input) */ - pOutL = pInLF; - pOutR = pInRF; + pOutL = pInPcm[LEFT_FRONT_CHANNEL]; + pOutR = pInPcm[RIGHT_FRONT_CHANNEL]; /* Set downmix levels: */ - flev = ATTENUATION_FACTOR_1; /* 0.707 */ + flev = FL2FXCONST_DMX(0.70710678f); /* 2/0 input: */ switch (dualChannelMode) { case CH1_MODE: /* L' = 0.707 * Ch1; R' = 0.707 * Ch1 */ for (sample = 0; sample < frameSize; sample++) { *pOutL = *pOutR = - (INT_PCM)SATURATE_RIGHT_SHIFT(fMult((FIXP_PCM)*pInLF, flev), DFRACT_BITS-SAMPLE_BITS, SAMPLE_BITS); + (INT_PCM)SATURATE_RIGHT_SHIFT(fMult((FIXP_PCM)*pInPcm[LEFT_FRONT_CHANNEL], flev), DFRACT_BITS-SAMPLE_BITS, SAMPLE_BITS); - pInLF += inStride; + pInPcm[LEFT_FRONT_CHANNEL] += inStride; pOutL += outStride; pOutR += outStride; } break; case CH2_MODE: /* L' = 0.707 * Ch2; R' = 0.707 * Ch2 */ for (sample = 0; sample < frameSize; sample++) { *pOutL = *pOutR = - (INT_PCM)SATURATE_RIGHT_SHIFT(fMult((FIXP_PCM)*pInRF, flev), DFRACT_BITS-SAMPLE_BITS, SAMPLE_BITS); + (INT_PCM)SATURATE_RIGHT_SHIFT(fMult((FIXP_PCM)*pInPcm[RIGHT_FRONT_CHANNEL], flev), DFRACT_BITS-SAMPLE_BITS, SAMPLE_BITS); - pInRF += inStride; + pInPcm[RIGHT_FRONT_CHANNEL] += inStride; pOutL += outStride; pOutR += outStride; } break; case MIXED_MODE: /* L' = 0.5*Ch1 + 0.5*Ch2; R' = 0.5*Ch1 + 0.5*Ch2 */ for (sample = 0; sample < frameSize; sample++) { - *pOutL = *pOutR = (*pInLF >> 1) + (*pInRF >> 1); + *pOutL = *pOutR = (*pInPcm[LEFT_FRONT_CHANNEL] >> 1) + (*pInPcm[RIGHT_FRONT_CHANNEL] >> 1); - pInLF += inStride; pInRF += inStride; + pInPcm[LEFT_FRONT_CHANNEL] += inStride; pInPcm[RIGHT_FRONT_CHANNEL] += inStride; pOutL += outStride; pOutR += outStride; } break; @@ -1254,23 +2460,37 @@ PCMDMX_ERROR pcmDmx_GetLibInfo( LIB_INFO *info ) if (i == FDK_MODULE_LAST) { return PCMDMX_UNKNOWN; } - info += i; /* Add the library info */ - info->module_id = FDK_PCMDMX; - info->version = LIB_VERSION(PCMDMX_LIB_VL0, PCMDMX_LIB_VL1, PCMDMX_LIB_VL2); - LIB_VERSION_STRING(info); - info->build_date = PCMDMX_LIB_BUILD_DATE; - info->build_time = PCMDMX_LIB_BUILD_TIME; - info->title = PCMDMX_LIB_TITLE; + info[i].module_id = FDK_PCMDMX; + info[i].version = LIB_VERSION(PCMDMX_LIB_VL0, PCMDMX_LIB_VL1, PCMDMX_LIB_VL2); + LIB_VERSION_STRING(info+i); + info[i].build_date = PCMDMX_LIB_BUILD_DATE; + info[i].build_time = PCMDMX_LIB_BUILD_TIME; + info[i].title = PCMDMX_LIB_TITLE; /* Set flags */ - info->flags = 0 + info[i].flags = 0 +#ifdef PCM_DOWNMIX_ENABLE | CAPF_DMX_BLIND /* At least blind downmixing is possible */ + #ifdef PCE_METADATA_ENABLE | CAPF_DMX_PCE /* Guided downmix with data from MPEG-2/4 Program Config Elements (PCE). */ + #ifdef ARIB_MIXDOWN_ENABLE + | CAPF_DMX_ARIB /* PCE guided downmix with slightly different equations and levels. */ + #endif + #endif /* PCE_METADATA_ENABLE */ + #ifdef DSE_METADATA_ENABLE | CAPF_DMX_DVB /* Guided downmix with data from DVB ancillary data fields. */ + #endif +#endif /* PCM_DOWNMIX_ENABLE */ +#ifdef PCM_CHANNEL_EXTENSION_ENABLE + | CAPF_DMX_CH_EXP /* Simple upmixing by dublicating channels or adding zero channels. */ +#endif ; + /* Add lib info for FDK tools (if not yet done). */ + FDK_toolsGetLibInfo(info); + return PCMDMX_OK; } diff --git a/libSBRdec/include/sbrdecoder.h b/libSBRdec/include/sbrdecoder.h index 13707e0..cb06dbc 100644 --- a/libSBRdec/include/sbrdecoder.h +++ b/libSBRdec/include/sbrdecoder.h @@ -308,7 +308,7 @@ SBR_ERROR sbrDecoder_Apply ( HANDLE_SBRDECODER self, INT_PCM *timeData, int *numChannels, int *sampleRate, - const UCHAR channelMapping[(6)], + const UCHAR channelMapping[(8)], const int interleaved, const int coreDecodedOk, UCHAR *psDecoded ); diff --git a/libSBRdec/src/sbr_ram.cpp b/libSBRdec/src/sbr_ram.cpp index 6ae941f..c1c2499 100644 --- a/libSBRdec/src/sbr_ram.cpp +++ b/libSBRdec/src/sbr_ram.cpp @@ -107,19 +107,19 @@ amm-info@iis.fraunhofer.de /*! SBR Decoder main structure */ C_ALLOC_MEM(Ram_SbrDecoder, struct SBR_DECODER_INSTANCE, 1) /*! SBR Decoder element data <br> - Dimension: (4) */ -C_ALLOC_MEM2(Ram_SbrDecElement, SBR_DECODER_ELEMENT, 1, (4)) + Dimension: (8) */ +C_ALLOC_MEM2(Ram_SbrDecElement, SBR_DECODER_ELEMENT, 1, (8)) /*! SBR Decoder individual channel data <br> - Dimension: (6) */ -C_ALLOC_MEM2(Ram_SbrDecChannel, SBR_CHANNEL, 1, (6)+1) + Dimension: (8) */ +C_ALLOC_MEM2(Ram_SbrDecChannel, SBR_CHANNEL, 1, (8)+1) /*! Filter states for QMF-synthesis. <br> - Dimension: #(6) * (#QMF_FILTER_STATE_SYN_SIZE-#(64)) */ -C_AALLOC_MEM2_L(Ram_sbr_QmfStatesSynthesis, FIXP_QSS, (640)-(64), (6)+1, SECT_DATA_L1) + Dimension: #(8) * (#QMF_FILTER_STATE_SYN_SIZE-#(64)) */ +C_AALLOC_MEM2_L(Ram_sbr_QmfStatesSynthesis, FIXP_QSS, (640)-(64), (8)+1, SECT_DATA_L1) /*! Delayed spectral data needed for the dynamic framing of SBR. For mp3PRO, 1/3 of a frame is buffered (#(6) 6) */ -C_AALLOC_MEM2(Ram_sbr_OverlapBuffer, FIXP_DBL, 2 * (6) * (64), (6)+1) +C_AALLOC_MEM2(Ram_sbr_OverlapBuffer, FIXP_DBL, 2 * (6) * (64), (8)+1) /*! Static Data of PS */ diff --git a/libSBRdec/src/sbr_ram.h b/libSBRdec/src/sbr_ram.h index 8fc2dae..f12631d 100644 --- a/libSBRdec/src/sbr_ram.h +++ b/libSBRdec/src/sbr_ram.h @@ -118,8 +118,8 @@ typedef struct struct SBR_DECODER_INSTANCE { - SBR_DECODER_ELEMENT *pSbrElement[(4)]; - SBR_HEADER_DATA sbrHeader[(4)][(1)+1]; /* Sbr header for each individual channel of an element */ + SBR_DECODER_ELEMENT *pSbrElement[(8)]; + SBR_HEADER_DATA sbrHeader[(8)][(1)+1]; /* Sbr header for each individual channel of an element */ FIXP_DBL *workBuffer1; FIXP_DBL *workBuffer2; diff --git a/libSBRdec/src/sbrdec_drc.h b/libSBRdec/src/sbrdec_drc.h index 872c6a0..7eed53a 100644 --- a/libSBRdec/src/sbrdec_drc.h +++ b/libSBRdec/src/sbrdec_drc.h @@ -95,7 +95,7 @@ amm-info@iis.fraunhofer.de -#define SBRDEC_MAX_DRC_CHANNELS (6) +#define SBRDEC_MAX_DRC_CHANNELS (8) #define SBRDEC_MAX_DRC_BANDS ( 16 ) typedef struct diff --git a/libSBRdec/src/sbrdecoder.cpp b/libSBRdec/src/sbrdecoder.cpp index 26b2ea2..5734020 100644 --- a/libSBRdec/src/sbrdecoder.cpp +++ b/libSBRdec/src/sbrdecoder.cpp @@ -137,7 +137,7 @@ amm-info@iis.fraunhofer.de /* Decoder library info */ #define SBRDECODER_LIB_VL0 2 #define SBRDECODER_LIB_VL1 2 -#define SBRDECODER_LIB_VL2 3 +#define SBRDECODER_LIB_VL2 4 #define SBRDECODER_LIB_TITLE "SBR Decoder" #define SBRDECODER_LIB_BUILD_DATE __DATE__ #define SBRDECODER_LIB_BUILD_TIME __TIME__ @@ -428,7 +428,7 @@ SBR_ERROR sbrDecoder_InitElement ( int nSbrElementsStart = self->numSbrElements; /* Check core codec AOT */ - if (! sbrDecoder_isCoreCodecValid(coreCodec) || elementIndex >= (4)) { + if (! sbrDecoder_isCoreCodecValid(coreCodec) || elementIndex >= (8)) { sbrError = SBRDEC_UNSUPPORTED_CONFIG; goto bail; } @@ -615,7 +615,7 @@ INT sbrDecoder_Header ( SBR_ERROR sbrError = SBRDEC_OK; int headerIndex; - if ( self == NULL || elementIndex > (4) ) + if ( self == NULL || elementIndex > (8) ) { return SBRDEC_UNSUPPORTED_CONFIG; } @@ -767,7 +767,7 @@ SBRDEC_DRC_CHANNEL * sbrDecoder_drcGetChannel( const HANDLE_SBRDECODER self, con SBRDEC_DRC_CHANNEL *pSbrDrcChannelData = NULL; int elementIndex, elChanIdx=0, numCh=0; - for (elementIndex = 0; (elementIndex < (4)) && (numCh <= channel); elementIndex++) + for (elementIndex = 0; (elementIndex < (8)) && (numCh <= channel); elementIndex++) { SBR_DECODER_ELEMENT *pSbrElement = self->pSbrElement[elementIndex]; int c, elChannels; @@ -829,7 +829,7 @@ SBR_ERROR sbrDecoder_drcFeedChannel ( HANDLE_SBRDECODER self, if (self == NULL) { return SBRDEC_NOT_INITIALIZED; } - if (ch > (6) || pNextFact_mag == NULL) { + if (ch > (8) || pNextFact_mag == NULL) { return SBRDEC_SET_PARAM_FAIL; } @@ -874,7 +874,7 @@ void sbrDecoder_drcDisable ( HANDLE_SBRDECODER self, SBRDEC_DRC_CHANNEL *pSbrDrcChannelData = NULL; if ( (self == NULL) - || (ch > (6)) + || (ch > (8)) || (self->numSbrElements == 0) || (self->numSbrChannels == 0) ) { return; @@ -1375,7 +1375,7 @@ SBR_ERROR sbrDecoder_Apply ( HANDLE_SBRDECODER self, INT_PCM *timeData, int *numChannels, int *sampleRate, - const UCHAR channelMapping[(6)], + const UCHAR channelMapping[(8)], const int interleaved, const int coreDecodedOk, UCHAR *psDecoded ) @@ -1496,7 +1496,7 @@ SBR_ERROR sbrDecoder_Close ( HANDLE_SBRDECODER *pSelf ) FreeRam_SbrDecWorkBuffer2(&self->workBuffer2); } - for (i = 0; i < (4); i++) { + for (i = 0; i < (8); i++) { sbrDecoder_DestroyElement( self, i ); } diff --git a/libSYS/include/FDK_audio.h b/libSYS/include/FDK_audio.h index c8d9c19..97770a7 100644 --- a/libSYS/include/FDK_audio.h +++ b/libSYS/include/FDK_audio.h @@ -263,17 +263,29 @@ typedef enum { } CHANNEL_MODE; -/** Speaker description tags */ +/** + * Speaker description tags. + * Do not change the enumeration values unless it keeps the following segmentation: + * - Bit 0-3: Horizontal postion (0: none, 1: front, 2: side, 3: back, 4: lfe) + * - Bit 4-7: Vertical position (0: normal, 1: top, 2: bottom) + */ typedef enum { - ACT_NONE, - ACT_FRONT, - ACT_SIDE, - ACT_BACK, - ACT_LFE, - ACT_FRONT_TOP, - ACT_SIDE_TOP, - ACT_BACK_TOP, - ACT_TOP /* Ts */ + ACT_NONE = 0x00, + ACT_FRONT = 0x01, /*!< Front speaker position (at normal height) */ + ACT_SIDE = 0x02, /*!< Side speaker position (at normal height) */ + ACT_BACK = 0x03, /*!< Back speaker position (at normal height) */ + ACT_LFE = 0x04, /*!< Low frequency effect speaker postion (front) */ + + ACT_TOP = 0x10, /*!< Top speaker area (for combination with speaker positions) */ + ACT_FRONT_TOP = 0x11, /*!< Top front speaker = (ACT_FRONT|ACT_TOP) */ + ACT_SIDE_TOP = 0x12, /*!< Top side speaker = (ACT_SIDE |ACT_TOP) */ + ACT_BACK_TOP = 0x13, /*!< Top back speaker = (ACT_BACK |ACT_TOP) */ + + ACT_BOTTOM = 0x20, /*!< Bottom speaker area (for combination with speaker positions) */ + ACT_FRONT_BOTTOM = 0x21, /*!< Bottom front speaker = (ACT_FRONT|ACT_BOTTOM) */ + ACT_SIDE_BOTTOM = 0x22, /*!< Bottom side speaker = (ACT_SIDE |ACT_BOTTOM) */ + ACT_BACK_BOTTOM = 0x23 /*!< Bottom back speaker = (ACT_BACK |ACT_BOTTOM) */ + } AUDIO_CHANNEL_TYPE; typedef enum diff --git a/libSYS/src/genericStds.cpp b/libSYS/src/genericStds.cpp index f0199fb..e67db38 100644 --- a/libSYS/src/genericStds.cpp +++ b/libSYS/src/genericStds.cpp @@ -99,7 +99,7 @@ amm-info@iis.fraunhofer.de /* library info */ #define SYS_LIB_VL0 1 #define SYS_LIB_VL1 3 -#define SYS_LIB_VL2 4 +#define SYS_LIB_VL2 5 #define SYS_LIB_TITLE "System Integration Library" #define SYS_LIB_BUILD_DATE __DATE__ #define SYS_LIB_BUILD_TIME __TIME__ |