summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty <xiphmont@xiph.org>2000-05-08 20:49:51 +0000
committerMonty <xiphmont@xiph.org>2000-05-08 20:49:51 +0000
commitd1ac4fc0fbfa1ae5c7f2f483be66ca1db1bb0a2a (patch)
treeea43c9f3353600ab6388867dd8bc725c4bd12f3b
parent4f58872cf83797418e82216bc6480ad94880c1be (diff)
downloadlibvorbis-git-d1ac4fc0fbfa1ae5c7f2f483be66ca1db1bb0a2a.tar.gz
First merge of new psychoacoustics. Have some unused codebooks to
remove yet, but we're otherwise OK. Tuning still has a little ways to go, but it's not too bad. Monty svn path=/trunk/vorbis/; revision=383
-rw-r--r--Makefile.in4
-rw-r--r--doc/masking.xcfbin0 -> 6405537 bytes
-rw-r--r--examples/Makefile.in10
-rw-r--r--examples/seeking_example.c2
-rw-r--r--include/vorbis/backends.h16
-rw-r--r--include/vorbis/book/lsp20_0.vqh1760
-rw-r--r--include/vorbis/book/lsp20_1.vqh534
-rw-r--r--include/vorbis/book/lsp32_0.vqh5404
-rw-r--r--include/vorbis/book/lsp32_1.vqh3638
-rw-r--r--include/vorbis/book/res0_0a.vqh103
-rw-r--r--include/vorbis/book/res0_0b.vqh184
-rw-r--r--include/vorbis/book/res0_0c.vqh2752
-rw-r--r--include/vorbis/book/res0_0d.vqh1799
-rw-r--r--include/vorbis/book/res0_0e.vqh928
-rw-r--r--include/vorbis/book/res0_0f.vqh368
-rw-r--r--include/vorbis/book/res0_0g.vqh926
-rw-r--r--include/vorbis/book/res0a0aux.vqh291
-rw-r--r--include/vorbis/book/res0a1aux.vqh291
-rw-r--r--include/vorbis/book/res0a_0.vqh151
-rw-r--r--include/vorbis/book/res0a_1.vqh99
-rw-r--r--include/vorbis/book/res0a_2.vqh85
-rw-r--r--include/vorbis/book/res0a_3.vqh74
-rw-r--r--include/vorbis/book/res0a_4.vqh211
-rw-r--r--include/vorbis/book/res0a_5.vqh98
-rw-r--r--include/vorbis/book/res0a_6.vqh62
-rw-r--r--include/vorbis/book/res0b_0.vqh132
-rw-r--r--include/vorbis/book/res0b_1.vqh85
-rw-r--r--include/vorbis/book/res0b_2.vqh74
-rw-r--r--include/vorbis/book/res0b_3.vqh211
-rw-r--r--include/vorbis/book/res0b_4.vqh98
-rw-r--r--include/vorbis/book/res0b_5.vqh62
-rw-r--r--include/vorbis/book/res0b_6.vqh166
-rw-r--r--include/vorbis/book/resaux0_long.vqh289
-rw-r--r--include/vorbis/book/resaux0_short.vqh289
-rw-r--r--include/vorbis/codebook.h61
-rw-r--r--include/vorbis/codec.h34
-rw-r--r--include/vorbis/internal.h2
-rw-r--r--include/vorbis/modes.h118
-rw-r--r--lib/Makefile.in22
-rw-r--r--lib/analysis.c27
-rw-r--r--lib/block.c3
-rw-r--r--lib/bookinternal.h15
-rw-r--r--lib/codebook.c487
-rw-r--r--lib/envelope.c26
-rw-r--r--lib/floor0.c257
-rw-r--r--lib/info.c5
-rw-r--r--lib/lpc.c141
-rw-r--r--lib/lpc.h14
-rw-r--r--lib/lsp.c49
-rw-r--r--lib/mapping0.c72
-rw-r--r--lib/masking.h202
-rw-r--r--lib/misc.h4
-rw-r--r--lib/os.h10
-rw-r--r--lib/psy.c606
-rw-r--r--lib/psy.h22
-rw-r--r--lib/psytune.c210
-rw-r--r--lib/res0.c142
-rw-r--r--lib/scales.h14
-rw-r--r--lib/sharedbook.c545
-rw-r--r--lib/sharedbook.h43
-rw-r--r--vq/Makefile.in19
-rw-r--r--vq/bookutil.c432
-rw-r--r--vq/bookutil.h8
-rw-r--r--vq/build.c109
-rw-r--r--vq/cascade.c66
-rw-r--r--vq/genericdata.c4
-rw-r--r--vq/huffbuild.c9
-rw-r--r--vq/latticebuild.c336
-rw-r--r--vq/latticepare.c567
-rw-r--r--vq/lspdata.c63
-rw-r--r--vq/metrics.c330
-rw-r--r--vq/partition.c86
-rwxr-xr-xvq/residue_entropy51
-rw-r--r--vq/residuedata.c76
-rw-r--r--vq/residuesplit.c151
-rw-r--r--vq/run.c90
-rw-r--r--vq/train.c16
-rw-r--r--vq/vqext.h4
-rw-r--r--vq/vqgen.c220
-rw-r--r--vq/vqgen.h4
-rw-r--r--vq/vqsplit.c270
-rw-r--r--vq/vqsplit.h8
82 files changed, 21902 insertions, 5344 deletions
diff --git a/Makefile.in b/Makefile.in
index b2fea18b..203038a6 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,6 +1,6 @@
# vorbis makefile configured for use with gcc on any platform
-# $Id: Makefile.in,v 1.5 2000/02/12 08:32:57 xiphmont Exp $
+# $Id: Makefile.in,v 1.6 2000/05/08 20:49:14 xiphmont Exp $
###############################################################################
# #
@@ -17,7 +17,7 @@
@SET_MAKE@
-SUBDIRS = lib vq huff examples # cmdline xmms
+SUBDIRS = lib examples # cmdline xmms vq huff
all debug profile selftest target clean:
@for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) $(MFLAGS) $@) || exit 1; done
diff --git a/doc/masking.xcf b/doc/masking.xcf
new file mode 100644
index 00000000..23541ed4
--- /dev/null
+++ b/doc/masking.xcf
Binary files differ
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 46beac32..de522c21 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -1,6 +1,6 @@
# vorbis makefile configured for use with gcc on any platform
-# $Id: Makefile.in,v 1.6 2000/04/03 09:51:07 xiphmont Exp $
+# $Id: Makefile.in,v 1.7 2000/05/08 20:49:42 xiphmont Exp $
###############################################################################
# #
@@ -50,21 +50,21 @@ encoder_example.o: ../include/vorbis/modes.h
encoder_example: $(OFILES) ../lib/libvorbis.a
$(CC) $(CFLAGS) $(LDFLAGS) encoder_example.o ../lib/libvorbis.a -o \
- encoder_example -lm
+ encoder_example $(LIBS)
decoder_example: $(OFILES) ../lib/libvorbis.a
$(CC) $(CFLAGS) $(LDFLAGS) decoder_example.o ../lib/libvorbis.a -o \
- decoder_example -lm
+ decoder_example $(LIBS)
chaining_example: $(OFILES) ../lib/libvorbis.a ../lib/vorbisfile.a
$(CC) $(CFLAGS) $(LDFLAGS) chaining_example.o \
../lib/vorbisfile.a ../lib/libvorbis.a \
- -o chaining_example -lm
+ -o chaining_example $(LIBS)
seeking_test: $(OFILES) ../lib/libvorbis.a ../lib/vorbisfile.a
$(CC) $(CFLAGS) $(LDFLAGS) seeking_test.o \
../lib/vorbisfile.a ../lib/libvorbis.a \
- -o seeking_test -lm
+ -o seeking_test $(LIBS)
$(OFILES): $(HFILES)
diff --git a/examples/seeking_example.c b/examples/seeking_example.c
index b9a2264e..4a6f9311 100644
--- a/examples/seeking_example.c
+++ b/examples/seeking_example.c
@@ -12,7 +12,7 @@
********************************************************************
function: illustrate seeking, and test it too
- last mod: $Id: seeking_example.c,v 1.1 2000/04/03 09:51:07 xiphmont Exp $
+ last mod: $Id: seeking_example.c,v 1.2 2000/05/08 20:49:42 xiphmont Exp $
********************************************************************/
diff --git a/include/vorbis/backends.h b/include/vorbis/backends.h
index 9f2871bb..dbd4ca0d 100644
--- a/include/vorbis/backends.h
+++ b/include/vorbis/backends.h
@@ -13,7 +13,7 @@
function: libvorbis backend and mapping structures; needed for
static mode headers
- last mod: $Id: backends.h,v 1.7 2000/02/23 09:24:00 xiphmont Exp $
+ last mod: $Id: backends.h,v 1.8 2000/05/08 20:49:42 xiphmont Exp $
********************************************************************/
@@ -70,7 +70,7 @@ typedef struct{
int ampbits;
int ampdB;
- int stages; /* <= 16 */
+ int numbooks; /* <= 16 */
int books[16];
} vorbis_info_floor0;
@@ -94,11 +94,13 @@ typedef struct vorbis_info_residue0{
long end;
/* first stage (lossless partitioning) */
- int grouping; /* group n vectors per partition */
- int partitions; /* possible codebooks ofr a partition */
- int groupbook; /* huffbook for partitioning */
- int secondstages[64]; /* expanded out to pointers in lookup */
- int booklist[256]; /* list of second stage books */
+ int grouping; /* group n vectors per partition */
+ int partitions; /* possible codebooks ofr a partition */
+ int groupbook; /* huffbook for partitioning */
+
+ double ampmax[64]; /* book amp threshholds for *encode* */
+ int secondstages[64]; /* expanded out to pointers in lookup */
+ int booklist[256]; /* list of second stage books */
} vorbis_info_residue0;
diff --git a/include/vorbis/book/lsp20_0.vqh b/include/vorbis/book/lsp20_0.vqh
index 5b44418e..35d0f120 100644
--- a/include/vorbis/book/lsp20_0.vqh
+++ b/include/vorbis/book/lsp20_0.vqh
@@ -11,7 +11,7 @@
* *
********************************************************************
- function: static codebook autogenerated by vq/vqbuild
+ function: static codebook autogenerated by vq/somethingorother
********************************************************************/
@@ -20,1304 +20,518 @@
#include "vorbis/codebook.h"
static long _vq_quantlist_lsp20_0[] = {
- 2, 12, 28, 41,
- 52, 28, 34, 84,
- 131, 71, 79, 28,
- 69, 180, 84, 34,
- 107, 98, 135, 99,
- 52, 73, 32, 22,
- 73, 43, 55, 22,
- 64, 76, 77, 51,
- 50, 56, 123, 213,
- 99, 136, 64, 38,
- 113, 28, 36, 28,
- 29, 83, 103, 64,
- 26, 61, 76, 18,
- 84, 60, 43, 92,
- 98, 61, 118, 96,
- 173, 52, 52, 27,
- 16, 31, 61, 86,
- 154, 65, 115, 59,
- 38, 69, 108, 23,
- 111, 34, 49, 118,
- 59, 42, 54, 30,
- 46, 65, 77, 16,
- 185, 139, 80, 53,
- 61, 66, 93, 27,
- 31, 29, 46, 72,
- 87, 81, 43, 61,
- 81, 21, 52, 143,
- 46, 28, 86, 54,
- 44, 101, 121, 97,
- 76, 2, 21, 33,
- 66, 39, 66, 178,
- 29, 39, 79, 89,
- 131, 28, 42, 71,
- 117, 58, 75, 24,
- 60, 30, 46, 83,
- 102, 95, 35, 60,
- 15, 41, 71, 127,
- 186, 11, 22, 26,
- 205, 103, 41, 42,
- 48, 38, 33, 21,
- 78, 20, 52, 49,
- 103, 38, 84, 37,
- 99, 151, 74, 92,
- 40, 112, 51, 81,
- 48, 48, 50, 27,
- 194, 30, 28, 29,
- 33, 43, 138, 44,
- 60, 54, 83, 64,
- 102, 96, 114, 95,
- 35, 70, 71, 14,
- 18, 38, 78, 42,
- 23, 45, 111, 115,
- 104, 122, 37, 25,
- 96, 47, 138, 47,
- 20, 55, 56, 28,
- 39, 27, 63, 69,
- 28, 44, 77, 171,
- 66, 105, 26, 46,
- 221, 112, 114, 123,
- 11, 22, 57, 59,
- 28, 24, 42, 66,
- 145, 119, 85, 34,
- 88, 110, 77, 38,
- 121, 106, 67, 97,
- 13, 28, 71, 47,
- 70, 28, 59, 71,
- 41, 54, 82, 139,
- 77, 126, 78, 140,
- 180, 34, 61, 113,
- 6, 20, 42, 60,
- 37, 115, 100, 27,
- 53, 30, 69, 93,
- 39, 70, 132, 25,
- 107, 148, 80, 147,
- 36, 37, 34, 20,
- 58, 95, 36, 27,
- 34, 49, 122, 137,
- 74, 99, 64, 147,
- 73, 114, 132, 62,
- 69, 0, 14, 19,
- 89, 29, 89, 179,
- 31, 51, 149, 72,
- 162, 254, 108, 76,
- 77, 11, 27, 25,
- 141, 63, 50, 40,
- 55, 46, 62, 110,
- 30, 98, 98, 96,
- 90, 152, 216, 134,
- 50, 14, 15, 28,
- 100, 23, 56, 38,
- 115, 106, 33, 83,
- 63, 67, 141, 223,
- 116, 219, 66, 42,
- 66, 11, 23, 41,
- 97, 39, 40, 22,
- 138, 111, 38, 28,
- 87, 111, 178, 153,
- 63, 87, 243, 191,
- 97, 92, 99, 80,
- 75, 75, 81, 65,
- 89, 34, 135, 101,
- 121, 47, 57, 26,
- 24, 34, 29, 28,
- 133, 66, 71, 171,
- 53, 123, 64, 78,
- 109, 66, 54, 98,
- 119, 32, 80, 125,
- 36, 15, 23, 33,
- 58, 149, 53, 25,
- 35, 113, 75, 19,
- 129, 58, 62, 135,
- 113, 92, 119, 26,
- 57, 56, 30, 23,
- 33, 52, 105, 206,
- 36, 40, 65, 137,
- 62, 73, 198, 192,
- 75, 54, 53, 47,
- 64, 36, 34, 19,
- 28, 31, 113, 86,
- 21, 44, 91, 207,
- 29, 71, 86, 23,
- 117, 179, 56, 73,
- 98, 22, 41, 31,
- 123, 182, 26, 24,
- 250, 141, 48, 47,
- 83, 10, 53, 108,
- 82, 72, 48, 28,
- 18, 21, 44, 46,
- 73, 200, 107, 29,
- 196, 105, 54, 130,
- 100, 23, 76, 63,
- 124, 37, 41, 35,
- 24, 27, 46, 42,
- 175, 69, 58, 41,
- 76, 165, 143, 106,
- 78, 97, 90, 73,
- 35, 101, 49, 58,
- 3, 11, 28, 41,
- 164, 89, 55, 126,
- 92, 61, 181, 96,
- 71, 80, 117, 29,
- 54, 69, 55, 41,
- 25, 13, 27, 32,
- 59, 11, 19, 33,
- 60, 142, 193, 45,
- 103, 90, 40, 30,
- 107, 72, 16, 33,
- 100, 107, 159, 32,
- 49, 23, 26, 51,
- 130, 119, 146, 51,
- 90, 79, 49, 24,
- 133, 56, 21, 40,
- 87, 18, 106, 63,
- 45, 33, 50, 31,
- 101, 211, 186, 71,
- 32, 84, 41, 17,
- 31, 69, 53, 82,
- 33, 60, 172, 73,
- 63, 29, 40, 36,
- 149, 164, 104, 131,
- 32, 65, 52, 51,
- 40, 95, 40, 25,
- 62, 49, 94, 123,
- 77, 8, 28, 63,
- 56, 103, 125, 110,
- 87, 16, 75, 85,
- 113, 37, 43, 30,
- 148, 65, 133, 111,
- 78, 3, 26, 44,
- 66, 121, 132, 143,
- 102, 41, 59, 40,
- 150, 36, 37, 81,
- 88, 22, 84, 114,
- 85, 12, 41, 36,
- 51, 98, 206, 49,
- 94, 50, 44, 33,
- 153, 51, 33, 32,
- 144, 64, 81, 59,
- 89, 21, 54, 46,
- 42, 69, 197, 77,
- 53, 50, 95, 25,
- 182, 28, 39, 86,
- 65, 42, 124, 64,
- 82, 9, 34, 33,
- 145, 233, 91, 48,
- 39, 145, 105, 30,
- 196, 61, 110, 61,
- 44, 18, 28, 42,
- 68, 38, 34, 40,
- 99, 191, 147, 48,
- 49, 84, 168, 32,
- 159, 95, 139, 127,
- 73, 2, 18, 27,
- 82, 6, 36, 73,
- 38, 63, 153, 138,
- 198, 62, 60, 51,
- 119, 33, 81, 59,
- 62, 18, 34, 44,
- 39, 35, 46, 118,
- 48, 80, 173, 132,
- 213, 48, 29, 28,
- 71, 68, 100, 29,
- 35, 30, 48, 38,
- 75, 71, 19, 17,
- 59, 150, 72, 81,
- 136, 125, 56, 42,
- 29, 70, 79, 87,
- 18, 60, 108, 39,
- 113, 24, 21, 21,
- 60, 165, 116, 80,
- 64, 189, 45, 16,
- 51, 56, 60, 36,
- 58, 69, 121, 86,
- 78, 44, 33, 32,
- 44, 134, 157, 23,
- 167, 150, 61, 30,
- 44, 36, 57, 42,
- 99, 82, 121, 23,
- 94, 16, 35, 41,
- 36, 82, 155, 24,
- 254, 86, 44, 35,
- 35, 63, 32, 29,
- 95, 25, 119, 83,
- 137, 26, 20, 21,
- 89, 49, 124, 160,
- 57, 126, 46, 30,
- 23, 36, 64, 87,
- 100, 26, 122, 36,
- 161, 19, 19, 22,
- 52, 60, 110, 144,
- 70, 88, 45, 125,
- 7, 28, 50, 95,
- 55, 36, 103, 96,
- 87, 32, 33, 16,
- 56, 87, 240, 94,
- 38, 84, 80, 18,
- 60, 61, 31, 53,
- 93, 51, 170, 59,
- 89, 18, 28, 21,
- 71, 136, 254, 63,
- 71, 51, 84, 27,
- 75, 62, 45, 24,
- 137, 41, 130, 78,
- 95, 15, 57, 70,
- 7, 34, 54, 132,
- 250, 44, 35, 37,
- 82, 50, 31, 46,
- 133, 40, 97, 66,
- 57, 39, 85, 59,
- 11, 36, 65, 187,
- 95, 64, 17, 29,
- 109, 31, 35, 72,
- 110, 61, 98, 25,
- 85, 7, 42, 90,
- 70, 56, 35, 87,
- 15, 36, 99, 60,
+ 127,
+ 128,
+ 129,
+ 127,
+ 126,
+ 98,
+ 129,
+ 118,
+ 136,
+ 129,
+ 137,
+ 128,
+ 137,
+ 94,
+ 128,
+ 118,
+ 136,
+ 132,
+ 141,
+ 130,
+ 126,
+ 105,
+ 130,
+ 120,
+ 128,
+ 130,
+ 130,
+ 127,
+ 131,
+ 129,
+ 142,
+ 128,
+ 132,
+ 128,
+ 135,
+ 127,
+ 130,
+ 129,
+ 132,
+ 128,
+ 132,
+ 130,
+ 142,
+ 131,
+ 128,
+ 126,
+ 140,
+ 130,
+ 135,
+ 128,
+ 134,
+ 127,
+ 140,
+ 132,
+ 143,
+ 130,
+ 143,
+ 120,
+ 149,
+ 112,
+ 131,
+ 127,
+ 139,
+ 131,
+ 145,
+ 134,
+ 143,
+ 129,
+ 133,
+ 133,
+ 148,
+ 129,
+ 142,
+ 126,
+ 133,
+ 123,
+ 144,
+ 131,
+ 152,
+ 135,
+ 139,
+ 124,
+ 133,
+ 120,
+ 142,
+ 95,
+ 128,
+ 119,
+ 145,
+ 131,
+ 137,
+ 126,
+ 129,
+ 110,
+ 131,
+ 121,
+ 147,
+ 100,
+ 130,
+ 122,
+ 131,
+ 133,
+ 135,
+ 127,
+ 134,
+ 132,
+ 143,
+ 124,
+ 138,
+ 119,
+ 148,
+ 115,
+ 143,
+ 107,
+ 131,
+ 126,
+ 130,
+ 130,
+ 145,
+ 138,
+ 136,
+ 115,
+ 134,
+ 108,
+ 139,
+ 104,
+ 131,
+ 123,
+ 126,
+ 125,
+ 137,
+ 131,
+ 140,
+ 129,
+ 137,
+ 127,
+ 145,
+ 126,
+ 155,
+ 116,
+ 135,
+ 113,
+ 130,
+ 105,
+ 127,
+ 123,
+ 129,
+ 125,
+ 127,
+ 126,
+ 143,
+ 137,
+ 143,
+ 122,
+ 153,
+ 114,
+ 149,
+ 125,
+ 149,
+ 109,
+ 136,
+ 118,
+ 136,
+ 111,
+ 151,
+ 130,
+ 153,
+ 112,
+ 132,
+ 110,
+ 127,
+ 102,
+ 154,
+ 97,
+ 130,
+ 121,
+ 146,
+ 126,
+ 138,
+ 119,
+ 154,
+ 102,
+ 131,
+ 123,
+ 150,
+ 137,
+ 153,
+ 127,
+ 141,
+ 119,
+ 138,
+ 106,
+ 137,
+ 121,
+ 132,
+ 122,
+ 167,
+ 96,
+ 130,
+ 120,
+ 133,
+ 119,
+ 145,
+ 114,
+ 152,
+ 92,
+ 128,
+ 117,
+ 136,
+ 132,
+ 149,
+ 137,
+ 144,
+ 121,
+ 142,
+ 107,
+ 151,
+ 109,
+ 132,
+ 128,
+ 162,
+ 107,
+ 132,
+ 126,
+ 131,
+ 106,
+ 160,
+ 126,
+ 124,
+ 112,
+ 145,
+ 130,
+ 141,
+ 106,
+ 162,
+ 130,
+ 165,
+ 91,
+ 129,
+ 117,
+ 149,
+ 111,
+ 157,
+ 138,
+ 128,
+ 139,
+ 136,
+ 132,
+ 178,
+ 95,
+ 133,
+ 122,
+ 254,
+ 0,
+ 136,
+ 87,
};
static long _vq_lengthlist_lsp20_0[] = {
- 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9,
+ 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9,10,10,
};
static long _vq_ptr0_lsp20_0[] = {
-1, -2, -3, -4, -5, -6, -7, -8,
- -9, -10, -11, -12, -13, 2, 95, -16,
- 90, -18, -19, 9, 160, 74, -23, -13,
- 93, 111, 111, -28, -29, 2, 52, -32,
- 52, 84, -35, 84, -37, -38, -39, -40,
- -41, -42, 15, -44, 133, -14, -24, 133,
- 133, 181, -51, 45, -53, -54, 15, 84,
- -57, 84, 52, 90, -61, -62, 98, 93,
- -65, 68, 177, -68, -69, 14, -71, 110,
- 242, -74, -75, -76, 98, 177, -63, 110,
- -81, -82, -83, -84, 105, 106, -87, 90,
- 110, 187, -91, -85, 148, 171, -77, 74,
- 181, 177, -99, 217, 247, -102, -103, -104,
- -105, 104, 62, -108, 35, 62, -111, 104,
- 140, -114, -115, -116, -117, 53, -119, -84,
- -95, -122, -123, -124, 35, -126, 62, 105,
- 135, -130, -106, 39, -133, 90, 62, 106,
- -87, -131, 98, -140, -141, -142, -143, -144,
- -145, 9, -147, 52, 62, -150, 52, 62,
- -153, -154, -155, -156, 62, 204, 185, -137,
- -161, 108, 185, -159, -165, -166, -167, 9,
- -163, 62, 90, -172, 98, -174, 9, 107,
- -150, 102, -177, -180, -181, -182, -183, 25,
- -185, 35, 84, 105, 171, -190, -191, -192,
- 19, 99, 172, -196, -197, -198, 99, 105,
- -201, 104, 143, 105, -205, -206, -207, 19,
- 106, 105, 19, 196, -213, 19, 88, -216,
- -217, -218, 52, -124, -214, -222, 70, -224,
- 108, -226, -227, 99, -229, -230, 104, -220,
- -233, -234, -235, -236, -237, -238, 33, -21,
- 35, 35, 99, 35, -245, -246, 25, 35,
- 145, -250, -251, 35, 52, -254, -255, -256,
- 70, -258, -259, 99, 201, -262, 140, -239,
- -265, 222, -267, 41, 196, 53, -238, 132,
- 196, -274, -275, -276, 19, -183, 102, 32,
- 35, -282, -283, 33, -285, 101, 145, -288,
- 32, -290, 41, -292, 33, 101, -295, -296,
- -297, 37, 151, 32, 101, -21, 145, -304,
- 37, -306, 45, 171, 151, -310, -311, -312,
- -313, 76, -315, -316, 30, 162, 80, -320,
- -321, 157, 194, 76, -325, -326, 8, 113,
- 194, -318, 60, 113, -333, -334, -335, -336,
- -337, 77, 194, -340, 77, -330, -343, -344,
- -345, 28, -341, -348, 80, -350, -351, 162,
- 229, -354, 212, -356, -357, 28, 157, -321,
- -346, -362, -363, 28, 143, -366, 86, 79,
- 182, -370, 86, 162, -373, -374, -375, -376,
- 19, -378, -379, 162, 182, -367, -383, -384,
- 80, 106, 105, -388, 100, 39, -391, -392,
- -393, -394, -395, -396, 70, 104, -399, 99,
- 86, 83, -403, -404, 104, 39, -407, 135,
- 29, -410, -411, 86, 99, -414, -415, 70,
- -417, 140, 212, -420, -421, -422, 99, -417,
- -408, 182, -427, -428, 99, 182, 212, -432,
- -433, 53, 135, -259, -424, -436, -439, -440,
- -441, -442, 28, 157, -445, -370, -437, -448,
- -449, 157, 190, 190, -453, 185, 107, -456,
- -457, -458, 53, -460, 100, -462, 157, -464,
- -465, -466, -467, -468, 14, -470, 28, 77,
- -473, -474, -475, 14, 100, 77, -479, -480,
- 28, -482, 164, -484, 174, -486, -487, 8,
- 194, -490, 8, 80, -493, -494, 100, -496,
- -497, 179, 194, -500, -501, -502, -503, -504,
- -505, -506, 14, 100, -509, -510, -442, -454,
- 102, -512, -515, -516, -517, -518, -519, 14,
- 53, 53, 100, 106, -525, -526, 14, 237,
- -529, -530, 77, -513, 0, -534, -535, -536,
- 78, 98, -539, 14, -541, -337, -532, 69,
- -545, -546, 78, -548, -172, -543, 135, 135,
- -553, -554, -555, 28, 185, 190, 164, 104,
- -561, -562, -563, 185, -565, 111, -567, -568,
- -569, -570, -571, -572, -573, 42, 121, -576,
- -577, 17, -579, 61, -581, -582, 61, 128,
- -585, -586, -587, 4, 128, -590, -591, 42,
- -593, 121, 149, -596, 73, 129, 73, 167,
- -601, -602, -603, -604, -605, -606, 38, 138,
- -609, 129, -549, -612, -613, -614, 38, 220,
- 195, -618, 186, -609, 127, 123, -623, -624,
- -625, -626, 61, 102, -629, 121, 60, -632,
- -633, -634, 17, 138, 64, -638, -639, 61,
- 186, 59, -643, -644, 38, 138, 195, -648,
- 68, -650, 133, -616, -641, 200, -655, -656,
- -657, -658, -659, -660, -661, 22, 92, -664,
- -665, 92, 149, -588, -652, -670, -671, 73,
- -673, 121, -668, -594, -674, -678, -679, -680,
- -681, -682, 22, 215, -676, -686, 129, -688,
- -689, 73, -684, 149, 167, 186, -695, -696,
- -697, -698, 22, -665, 183, 159, -703, -704,
- 58, 129, -707, -708, 22, 159, -705, 117,
- 168, -714, -715, -682, -712, 124, 92, -720,
- -721, -722, -723, 58, 124, -726, 82, 83,
- 159, -726, -727, -732, 92, -734, -735, 154,
- 184, -701, -730, -738, -741, -742, -743, -744,
- -671, 163, 134, 149, -749, 96, -751, 128,
- -746, 158, 144, -756, -757, -758, 87, 189,
- -761, 154, 183, -764, 87, -762, -767, -768,
- 73, -770, -771, -772, 87, 97, -775, 96,
- -777, 96, 191, -768, -765, -782, -783, -784,
- 134, 189, -666, 153, -787, -790, -791, -792,
- -793, -794, -795, -796, -797, -798, 3, -800,
- 9, 123, 123, 111, -805, -806, 3, 63,
- 61, 117, -811, -812, 9, 98, 9, -47,
- -809, 123, 95, -820, -821, -822, -823, 3,
- 42, 42, 42, -816, -829, -830, -831, -832,
- -833, 3, 78, 204, -837, 78, -839, 3,
- 3, -842, -843, -844, -845, -506, 153, -848,
- -849, 48, 78, 98, 39, -526, -852, -856,
- 103, 110, -859, -860, -861, 67, -863, -539,
- -131, -866, 67, 98, 77, 77, 103, -872,
- -873, -874, -573, -864, -877, 63, -648, -875,
- 103, -882, -883, -884, 42, -886, 17, 48,
- -577, 93, 42, -892, -893, 17, -895, -896,
- -897, -898, 17, 63, -901, -902, 63, 83,
- 90, -906, -907, 17, -909, -910, 17, 133,
- 17, -914, -915, -916, 48, 111, -919, -920,
- -899, 39, -921, 98, -925, -926, -927, -928,
- -929, -930, -931, -932, 4, 139, 67, 103,
- -937, -938, -939, 73, -922, 134, -943, 96,
- -932, -940, -947, -948, -949, 4, 147, -884,
- 148, 128, -955, -956, -957, 4, 144, -960,
- 134, 1, -963, -958, 216, 174, -950, -787,
- -969, -970, 73, -972, 103, 167, 138, -976,
- 144, -978, -979, -777, 160, 234, -773, -980,
- 54, 97, 115, -988, -989, -990, 91, -992,
- 139, 169, -995, -996, -986, 64, 169, 199,
- -1001, -992, 60, -1002, -1005, -1006, 139, 169,
- -1007, -1003, -1011, 144, 174, -1014, -1015, -1016,
- -1017, -1018, -1019, 42, 48, 67, 14, -1024,
- 48, 50, -1027, -1028, -1029, 48, 103, 139,
- 14, 139, 153, -1036, -1037, 67, 169, -1040,
- -1041, -1042, -1043, -1044, 78, 174, 147, -1048,
- -1049, -837, 24, 209, 174, -1050, 153, -1056,
- -1057, 139, 174, -984, -1061, -1062, -1063, -490,
- 50, 91, 77, 103, -1069, -1070, 91, -1021,
- 24, -1074, -934, -1072, 164, -1075, -1079, 139,
- -1081, 164, 199, 194, -1085, -1086, -1087, -992,
- 54, 164, 156, 12, -1091, -1094, 174, -1096,
- -1089, -1092, -1097, -1100, -1101, -1102, -1103, -1104,
- -1105, -1106, -1107, -1108, -1109, 11, 206, -1112,
- 46, 18, -1098, 46, 51, 81, -1119, -1120,
- 18, 136, 47, -1124, -1125, -1126, -1127, 47,
- 152, 152, -1131, 85, 165, -1134, -1135, -1136,
- 18, 47, 206, -1140, 46, -1142, -1143, -1137,
- 244, 85, -1131, 36, -1147, -1150, -1151, -1152,
- -1153, -1154, -1155, 31, 114, 114, -1159, -1160,
- 71, 136, 156, -1164, -1165, 36, -1167, -1168,
- -1169, 51, 118, -1172, 85, -1174, -1175, -1176,
- 71, -1148, 71, -1157, -1177, 36, -1183, -1176,
- -1181, -1186, -1187, 46, 206, -1190, -1191, 118,
- 198, 118, -1195, -1196, -1197, -1198, -1199, 51,
- 66, -1202, -1203, -1204, -1205, 30, -1207, -1208,
- 56, 76, -1211, 66, -1213, 30, -1215, -1216,
- 51, 56, 114, -1220, 51, 81, 66, 36,
- -1225, -1226, -1227, -1228, -1229, -1230, 26, -1232,
- 30, 66, -1235, -1236, -1237, 30, 66, 30,
- 172, -1242, -1243, 26, 165, -1246, -1247, 51,
- 182, -1250, -1251, 66, 85, -1254, -1255, -1256,
- -1257, -1258, -1259, -1260, -1261, 7, -1263, 11,
- -1265, 43, -1267, 43, -1269, -1270, -1271, -1272,
- 7, -1223, 70, -1274, 31, 109, 70, 99,
- -1281, -1282, -1283, 11, -1285, 18, 109, -1288,
- -1289, -1290, 23, 47, -1293, -1294, -1295, 23,
- 72, 72, -1299, -1300, -1301, -1302, -1303, 13,
- 43, -1276, -1307, -1308, -1309, 13, -1311, -1312,
- 7, -1305, -1315, -1316, -1317, 13, 130, 13,
- -1313, -1322, -1323, -1324, 7, 43, -1327, -1328,
- 25, -1330, -1331, -1272, -1320, -1334, 152, -1279,
- 60, -1338, -267, -1336, 24, 152, -1343, -1344,
- -1345, -1346, -1347, -1348, 11, -1350, 43, -1340,
- 86, -1354, 86, 81, 76, 64, -1359, -1360,
- -1361, -1362, -1363, 11, -1365, 81, 70, -415,
- 231, -1370, -1371, 72, 16, -1374, 81, -1372,
- -1377, -1378, 66, 76, -1381, 30, 66, -351,
- -1375, 81, -1387, -1388, -1128, -1384, 50, -1392,
- -1393, 162, 24, -1396, 172, -1398, -1399, -1400,
- -1401, -1402, -1403, -1404, 75, 175, 116, -1408,
- -1409, -1410, -1411, 89, 175, 241, -1415, -1416,
- -1417, 94, 241, -1420, 175, -1394, -1417, 55,
- 246, -1426, 203, -1428, -1429, -1430, -1431, 10,
- 208, 208, -1435, -1417, 1, -1436, 122, -1440,
- 89, 94, -1443, -1444, -1445, -1446, -1447, 6,
- 255, 6, 213, -1452, 122, 178, -1455, -1452,
- 160, -1458, -1459, -1460, 6, 50, -1426, -1461,
- -1465, 161, 255, -1468, -1469, -1470, -1471, 6,
- 141, -1192, 254, -1476, 75, 116, -1479, 161,
- -1460, -1372, 236, 254, -1485, 65, -1487, 178,
- -1489, -1490, -1491, -1492, -1493, 254, 116, 165,
- -1497, 65, -1499, 125, -1481, -1502, -1503, 65,
- 243, -1506, 178, -1508, -1509, -1510, 89, 178,
- 55, 254, -1515, -1516, 116, -1518, -1519, -1520,
- -1521, 18, -1523, 75, -1525, 109, -1512, -1528,
- -1477, -1526, 141, 180, -1533, -1476, -1529, 136,
- -1537, 141, 235, 136, -1541, 6, -1543, -1544,
- 18, 180, -1547, -1548, -1549, 21, -1534, -1552,
- 141, -1554, 120, -1550, -1557, 120, -1559, -1121,
- -1555, 161, -1552, 193, -1563, -1566, -1567, -1568,
- -1569, 254, 116, 141, 40, -1137, -1572, 136,
- 165, 240, -1574, -1580, -1581, -1582, 254, 141,
- 65, -1586, -1587, 21, -1589, -1590, -1591, 141,
- 211, 156, -1595, 120, -1597, -1598, -1599, 120,
- -1601, 27, 120, -1604, 27, 65, -1607, -1608,
- -1609, 254, 156, -1612, -1613, -1605, 125, 65,
- -1617, 71, 65, -1617, 34, 125, -1623, -1624,
- -1625, -1626, -1627, 13, 19, -1630, -1631, 32,
- 130, 170, -1635, 25, 150, -1638, 32, 41,
- -1641, -1642, -1643, 25, 146, -1646, -1647, -1648,
- 25, -1650, 101, 145, 57, -1654, -1655, -1656,
- -1657, 32, -285, -1620, -1661, -1662, -1663, 131,
- -1659, 40, -1667, 146, -1665, 101, -1671, -1672,
- -1673, 57, 146, -1676, 126, 166, -1679, -1680,
- -1681, -1682, -1683, -1684, 10, 89, 166, -1688,
- 89, -1690, 170, 166, -1693, -1694, -1667, 34,
- 166, -1698, 175, -1700, -1701, -1702, -1703, -1704,
- -1705, 7, -1695, -1708, 13, -1706, -1711, -1328,
- -1709, 150, -1715, 57, 27, -1718, -1719, -1715,
- -1716, 20, 75, -1724, 7, -1721, -1727, -1728,
- 23, -1730, 13, -1732, -1733, 7, -1735, 25,
- 41, 7, 150, -1740, -1741, -1742, -1733, -1725,
- 23, 13, -1639, -1743, 130, 170, -1751, -1752,
- -1753, 23, 126, -1756, -1757, 126, -1747, -1760,
- -1761, -1762, -1763, 13, 254, -1766, -1767, 254,
- -1769, -1753, 31, 47, -1773, -1774, 47, 130,
- -1777, -1778, -1764, -1770, 130, -1782, -1783, 130,
- 165, 243, -1787, 254, -1789, -1790, -1791, 89,
- -1793, -1794, 116, -1633, -1779, -1798, -1799, 116,
- 89, -1802, -1803, -1804, -1805, -1806, -1807, -1808,
- -1809, -1810, 12, -1812, 20, -1814, 49, -1721,
- 114, 49, -1819, -1820, -1821, 5, 155, -1824,
- -1810, 31, -1825, -1828, 44, -1826, -1831, -1821,
- -1829, 112, 20, -1836, -1837, -1838, 112, 31,
- -1841, -1842, 44, 158, 112, -1846, 12, -1848,
- 20, -1839, -1851, 6, -1853, 5, 31, -1856,
- -1857, -1587, 27, -1858, 49, 155, 161, -1864,
- -1865, -1866, 163, 173, -1869, -1870, 20, 188,
- 213, -1874, -1875, -1876, -1877, 40, -1879, -1880,
- 173, 218, -1883, -1884, -1885, 117, -1887, 83,
- 183, -1890, 158, 163, 173, -1894, -1895, 112,
- -1859, 233, -1899, -1900, 117, 173, 158, -1904,
- -1867, -1896, 156, 188, -1909, -1910, -1911, -1912,
- -1913, -1914, 5, 6, -1917, -1918, 6, 20,
- -1921, 188, 213, -1924, 161, 5, 211, 20,
- -1929, -1930, 5, 112, -1933, 6, -1935, 203,
- 71, -1938, -1939, -1940, -1941, 122, -1825, 208,
- -1933, -1942, -1935, 71, -1872, 34, -1949, -1952,
- -1953, -1918, 27, 40, -1954, -1958, -1959, -1960,
- -1961, -1962, 1, -1964, 55, -1966, 34, -1968,
- -1969, -1810, -1956, 27, -1973, -1974, 120, -1716,
- -1970, 120, 1, -1980, 27, -1978, -1716, -1981,
- -1090,
+ -9, 13, 52, -12, 34, -14, -15, -16,
+ 16, 31, -19, 34, -21, -22, 19, 23,
+ -25, 16, 22, -28, -29, 16, 46, -32,
+ 19, -23, -35, -36, 55, -38, 16, 22,
+ 39, -42, -43, -44, -45, -46, -47, 17,
+ 4, 38, -51, 4, 61, -54, -55, -56,
+ -57, -58, 13, 56, -61, 17, 28, 52,
+ -62, -66, -47, 36, 34, -70, -47, 30,
+ -73, 4, 38, -76, -61, -71, 29, 4,
+ -81, -39, 47, 38, -85, 34, -82, -88,
+ -89, -90, -91, -92, -93, 14, -95, 44,
+ -97, 2, 18, -100, 44, -102, -103, -104,
+ 4, 26, 31, 30, -109, -110, -111, -112,
+ 44, -107, -115, 44, -117, 14, 28, -112,
+ -118, -120, -123, -124, 55, 22, -127, -128,
+ -129, -130, 54, 18, -131, 30, -135, -136,
+ 14, 18, 27, -140, -141, -142, 14, -144,
+ 44, 18, 18, -148, -149, 55, -151, 62,
+ -153, -154, -155, -156, -157, -158, -159, 14,
+ 24, -162, -163, -164, 2, 26, -167, 61,
+ -160, -164, -168, 33, -173, 14, -170, 31,
+ 18, -178, -179, -180, -181, -182, -183, 17,
+ -51, -175, 24, -188, -189, 4, 61, -192,
+ -193, 4, 29, -167, -186, 30, 29, 4,
+ 58, -165, -197, -202, -205, 17, 23, -208,
+ -209, -210, -211, 61, 25, -214, -215, 15,
+ -167, -206, -219, 7, -221, -222, -223, 2,
+ 26, -226, -164, 31, 7, -167, -197, 23,
+ -233, 61, -235, 25, 27, -238, 7, 15,
+ -241, -219, -231, -194, -242, 37, -247, 29,
+ 37, -250, -251, -252, 54, -254, -255, 14,
+ -244, -258, -145, -256, -259, -262, 20, -260,
+ -265, 54, 49, -268, -269, -270, -271, 12,
+ -273, 25, -275, -223, 45, -276, -277, -280,
+ -281, 2, 18, 24, -285, -286, -287, 12,
+ 27, -290, 25, 51, -293, 20, -295, -296,
+ -297, -298, -299, -300, -301, 15, 8, 37,
+ 43, -290, -304, 2, -306, -310, 27, -312,
+ 14, 27, 7, 56, -308, -318, -319, -320,
+ -321, 45, 28, -82, -316, 48, 28, -328,
+ -329, -326, -324, -67, -291, 50, -335, -336,
+ -337, -326, 35, -340, 48, 40, 50, 21,
+ -345, -346, -347, 6, -349, 50, -343, -339,
+ 47, -350, -353, -349, 21, -358, -359, 32,
+ -356, 48, -363, -364, 28, 42, -367, -368,
+ -359, -365, -369, -372, 50, 5, -375, -376,
+ -377, 15, -379, 37, -381, 8, -383, -310,
+ 3, 56, -387, 50, -384, -390, -391, -392,
+ 32, 9, -387, 42, -395, 28, -399, -392,
+ -396, 1, 42, -404, -405, -406, -407, -408,
+ 54, -402, -411, 45, -409, 45, -415, -416,
+ -417, -418, -130, -412, 47, -138, -419, -422,
+ -130, 50, -287, 8, -427, -430, -408, 20,
+ -433, -431, -431, -434, -352,
};
static long _vq_ptr1_lsp20_0[] = {
- -1099, -566, -309, -179, -101, -60, -36, -31,
- -27, -22, -17, -15, -14, 177, 177, 95,
- 177, -15, 95, 177, -1592, 187, -26, -25,
- 148, 177, 217, 217, -30, 252, 252, -34,
- -33, 252, 90, 171, -52, -50, -48, -45,
- -43, 181, 177, 177, 181, -47, -21, 177,
- -49, 200, 181, 200, -58, -56, -55, 181,
- 171, 176, -59, 95, -80, -64, -26, 143,
- -67, -66, 242, -73, -70, 110, -72, 247,
- 247, -79, -66, -77, 247, 247, -46, 177,
- -97, -90, -86, -85, 247, 247, -88, 110,
- -77, 202, -94, -93, 202, 247, -96, 202,
- 247, -98, -100, 252, 252, -139, -113, -110,
- -107, -106, 135, -109, 108, 108, -112, 135,
- 185, -135, -121, -118, 135, 247, 106, 135,
- -92, -129, -125, 105, 252, -127, 252, -128,
- 252, -134, -132, 202, 105, 135, 247, -136,
- -138, 148, 110, -164, -152, -149, -148, -146,
- 62, 210, 62, 210, 204, -151, 90, 90,
- -112, -160, -158, -157, 210, 210, -157, -120,
- -162, 210, 210, -89, -176, -171, -169, -106,
- -78, -170, 98, -173, 217, -26, 217, 187,
- -126, 187, -175, -273, -215, -189, -184, 196,
- -186, 105, -187, -188, 196, -204, -195, -193,
- 172, -194, 222, -203, -200, -199, 230, 230,
- -199, 230, 187, 222, -212, -210, -209, -208,
- 222, 106, -211, 222, -188, 196, 187, -253,
- -232, -221, -219, 108, -202, -225, -223, 140,
- 225, -228, 140, 225, -224, 140, 225, -178,
- -249, -244, -243, -241, -240, -124, 252, -177,
- 196, -242, 196, 52, -247, 35, 99, -248,
- 225, 171, -252, 84, 84, -264, 252, -257,
- 201, -261, -260, 227, 227, -260, 227, -231,
- -269, -266, -268, 227, 227, -270, -272, 187,
- 252, -294, -281, -280, -277, -279, -271, 196,
- 145, -287, -284, 145, -286, 151, 151, -289,
- 101, -291, 196, -293, 196, 196, -302, -299,
- -298, 228, 228, -300, -286, -278, -303, -305,
- 45, -307, 176, -308, 176, -463, -390, -332,
- -319, -314, -318, -317, 229, 229, 229, -324,
- -322, 229, -323, 229, -328, -327, 194, 194,
- -329, -331, 187, 229, -372, -355, -342, -338,
- 100, 135, -339, -318, 229, -301, -347, -340,
- 229, 212, -263, -349, 230, -353, -352, 230,
- 230, 230, 229, -368, -359, -358, 194, -361,
- -168, -365, -354, 229, 192, -354, 229, 192,
- -369, -371, 212, 212, -382, -377, 80, 222,
- 230, -194, -380, 222, 222, -364, -386, -385,
- 222, 230, -387, -208, 222, -381, -438, -409,
- -402, -400, -398, -397, 140, 140, 104, 140,
- -201, 93, -406, -112, 185, -401, -112, 185,
- 83, -419, -413, -412, 212, 201, -416, 219,
- -418, 219, 219, -431, -426, -423, 182, -425,
- 168, 219, -429, 212, 222, -430, 222, -434,
- 135, 222, -435, -262, -405, -389, -455, -452,
- -444, -443, 190, 190, -447, 219, -360, -451,
- -450, 219, 219, 212, -450, 219, 127, -461,
- -459, 190, 212, 212, 190, 219, 212, -499,
- -485, -478, -472, -469, 77, -471, 164, 164,
- -477, 110, -476, 224, 224, 224, -481, 179,
- 100, -483, 237, 237, 179, -492, -489, -488,
- 229, -491, 224, 224, -495, 224, 194, -498,
- 224, 199, 199, -552, -533, -514, -508, 77,
- 164, -507, 237, 237, -471, 164, -460, 142,
- 142, 127, -528, -524, -522, -521, -520, 135,
- 135, 100, -523, 110, 110, -527, 242, 242,
- -111, -523, 110, -511, 137, -540, -538, -537,
- 164, 164, 237, 98, -544, -138, 142, 142,
- -547, 204, 217, -551, -550, -542, 217, 204,
- -559, -558, -556, 185, -557, 214, 214, -560,
- 210, -564, 217, 204, 214, 204, -789, -654,
- -600, -584, -580, -575, -574, 138, 123, -578,
- 138, 61, 121, 149, -583, 149, 147, 147,
- -592, -589, -588, 42, 149, 73, 128, 121,
- -595, -594, 186, -598, -597, 138, -599, 186,
- -642, -622, -619, -611, -608, -607, 186, 186,
- -607, 186, -531, -617, -616, -615, 245, 245,
- 245, 195, 220, -621, 132, 215, -631, 186,
- -628, -621, 215, -620, -621, 215, 132, -637,
- -607, -635, 195, 195, 132, -607, -640, 195,
- 195, 132, -647, -645, 123, -646, 205, -649,
- 138, -651, 200, -653, -636, 245, -740, -694,
- -677, -669, -663, 189, -662, 215, 215, -667,
- -666, 189, 189, 189, 231, -675, -672, 149,
- -588, 149, -630, 215, -627, -687, -685, 191,
- -618, -683, 220, 220, -610, 186, 220, -691,
- -599, 129, -446, -692, -693, 191, -719, -713,
- -702, -699, 92, -701, 197, 189, -706, -705,
- 191, 191, -710, -709, 191, 191, -709, -700,
- 197, -718, -717, 129, 183, 220, 129, -729,
- -728, -725, -724, 184, 184, -724, 184, 197,
- 184, -731, 183, -733, 184, -737, -736, 189,
- 189, -736, -716, -711, -755, -750, -748, -747,
- -746, 197, 149, 167, 134, 167, -752, 144,
- -754, 197, 149, -766, -763, -760, -759, 239,
- -759, 239, -753, -701, 134, -745, -779, -769,
- 191, -776, -774, -773, 239, 239, 239, 97,
- -778, 239, 239, -781, -739, -759, -786, -785,
- 191, 191, 191, 221, 158, -924, -841, -819,
- -815, -810, -804, -803, -799, 123, 210, -802,
- -801, 210, 205, 205, -808, -807, 42, 205,
- -803, 221, -813, 63, 111, -814, 204, -817,
- -788, -818, 205, -828, -826, -825, -824, 209,
- 209, 128, -582, -780, -840, -838, -836, -835,
- -834, 204, 204, 209, 204, 214, 147, 214,
- 111, -871, -858, -853, -847, 242, 197, -851,
- -850, 98, 98, -527, 197, -855, -846, -857,
- 242, 242, -869, -862, 164, 78, -865, 77,
- -92, -868, -867, 204, 204, -870, 110, -894,
- -881, -878, -876, -854, 67, 138, -880, -787,
- 138, -891, -888, -885, 147, -887, 147, 147,
- -890, 197, 63, 242, 68, 63, -913, -904,
- -900, -899, 242, 242, 242, -25, 177, -889,
- -905, -908, 177, 68, -912, -911, 205, 205,
- 177, -918, 147, -917, 242, 242, 90, -923,
- -857, 83, -903, 242, -1013, -975, -968, -946,
- -936, -935, -934, -933, 169, 169, 169, 169,
- -944, -942, -941, -932, -879, 169, 169, 134,
- 144, -827, -954, 73, -951, -950, 209, -953,
- 197, 209, -962, -959, -958, 209, 209, -958,
- 209, -952, -966, -965, 221, 209, 174, -964,
- -971, 167, 96, -974, -973, 242, 167, -987,
- -977, -985, -982, -981, -967, 239, -981, -961,
- 202, -986, 234, -1004, -994, -991, 199, -993,
- 199, 199, -1000, -999, -998, -984, 234, 234,
- -999, 169, 202, -92, -1008, -1007, 174, 174,
- -1010, -997, -1012, 234, 234, -1060, -1035, -1026,
- -1022, -1021, -1020, 67, 67, 103, -1023, -934,
- 209, 216, -1032, -1030, 147, 139, -1031, 242,
- -1033, -527, -1025, -1039, -1038, 164, 209, -1055,
- -1047, -1046, -1045, 214, 237, 214, 174, -558,
- -1052, -1051, 216, 214, -1051, -1034, 202, -482,
- -1058, 237, 237, -1054, -1083, -1068, -1066, -1065,
- -1059, 224, -1067, 224, -1073, -1071, 169, 224,
- 202, -1078, -1076, -1064, -993, -1053, -1080, 224,
- -1082, 224, 224, -1084, -1093, -1080, 237, -1089,
- 216, 199, 160, -1088, -1077, -1095, 199, 237,
- -497, -1009, -983, -1801, -1397, -1253, -1194, -1149,
- -1118, -1115, -1113, -1111, -1110, 232, 232, 232,
- 206, -1112, -945, -1116, -1117, 232, -1123, -1122,
- -1121, 235, 136, -1133, -1130, -1129, -1128, 232,
- 232, 165, -1132, 232, 232, -1141, -1139, -1138,
- -1137, 248, 248, 248, 47, -1146, -1145, 232,
- 249, 248, -1110, 249, -1144, -1163, -1161, -1158,
- -1157, -1156, 156, 71, 156, 206, 114, 125,
- 85, -1162, 207, -1182, -1166, 118, -1173, -1171,
- -1170, 206, 206, 232, 206, -1179, -1178, -1172,
- 206, 198, 114, -1170, 118, 255, -1185, 248,
- 226, -1189, -1188, 207, 207, -1193, -1138, 248,
- 226, 207, -1224, -1219, -1214, -1201, -1200, 76,
- 76, -1212, -1206, 76, 66, 119, -1210, -1209,
- 119, 119, 76, 119, 119, 113, -1218, -1217,
- 114, 114, 249, -1222, -1221, 157, -1117, 226,
- -1245, -1241, -1234, -1233, -1231, 66, 56, 66,
- 56, 232, -1240, -1239, -1238, 162, 162, 172,
- 232, 125, -1244, 172, 172, -1249, -1248, 66,
- 232, 125, -1252, 114, 114, -1342, -1298, -1280,
- -1268, -1266, -1264, -1262, 47, 43, 47, 43,
- 109, 136, 104, 225, -1278, -1275, -1274, -256,
- 201, -1192, 225, -1277, 226, 225, -1279, 201,
- -1287, -1286, -1284, 72, 72, 136, 136, -1292,
- 136, -1291, 152, 152, 136, -1297, -1296, 201,
- 201, 109, -1321, -1306, 25, -376, -1304, 230,
- 230, -1192, -1310, 19, 41, 130, -1314, -1291,
- 152, -1273, -1291, -1319, -1318, 152, 152, 172,
- -1184, -1329, -1326, -1325, 99, 99, 43, 99,
- 225, -1337, -1335, -1333, -1180, 201, 182, 182,
- 231, -1341, -260, 64, 64, 227, -1376, -1358,
- -1355, -1353, -1349, 182, 86, -1352, -422, -1339,
- 182, 162, 230, -1356, -1352, 231, -449, -1367,
- -1366, -1364, 86, 182, 182, 86, 86, -1369,
- 244, -1373, -425, 219, 244, 219, 182, -1368,
- -1385, -1380, -1379, 113, -1382, 230, -1383, 172,
- -1357, -1386, -1391, -1248, 227, -1351, 55, -1395,
- -1248, 232, 55, 232, 182, -1622, -1517, -1467,
- -1442, -1427, -1407, -1405, 203, -1406, 241, -1425,
- -1414, -1413, -1412, 246, 246, 246, -1422, -1419,
- -1418, 250, 250, -1418, 250, -1390, -1424, 226,
- 250, 250, 241, -1439, -1434, -1433, -1432, 223,
- 223, 250, -1438, -1433, -1423, -1421, 208, -1441,
- 122, 122, -1457, -1454, -1451, -1449, -1441, 122,
- -1423, -1450, 246, -1453, 246, 246, 203, 208,
- -1448, -1464, -1462, -1413, 246, 255, 246, -1456,
- -1426, 241, 226, -1488, -1478, -1474, -1472, 141,
- -1413, 244, -1475, -1477, 141, 141, -1483, -1480,
- -1482, -1473, 246, -1484, -1486, 236, 246, 236,
- -1507, -1501, -1496, -1495, -1494, 243, 243, 243,
- -1498, 243, -1495, 243, -1466, -1505, -1504, 253,
- 253, 243, 253, -1513, -1453, -1511, 243, 243,
- -1500, -1514, 240, 243, 246, -1579, -1565, -1540,
- -1527, -1522, -1524, 136, -1121, 235, -1463, -1532,
- -1530, -1437, -1531, 240, -1536, -1535, -1389, 141,
- -1538, 240, -1539, 240, -1556, -1542, -1546, -1545,
- 235, 235, -1553, -1551, -1545, 235, -1332, 180,
- 235, -1545, 235, -1114, -1558, 136, -1562, -1561,
- -690, 235, -1561, 253, 216, -1576, -1573, -1535,
- -1570, 248, -1571, 248, 178, -1575, 253, 248,
- -1577, -1137, -1564, -1596, -1585, -1584, -1583, 156,
- 141, -1594, -1588, 211, 161, -1593, -1592, 236,
- 236, 236, 156, 161, -1606, -1600, 156, 207,
- -1603, -1602, 180, -1605, 248, 248, -1611, -1610,
- 125, 85, 248, -1619, -1616, -1610, 253, -1614,
- -1610, 248, 71, -1621, 71, 165, -1699, -1670,
- -1640, -1634, -1629, -1628, 32, -1633, -1632, 251,
- 251, 251, -1637, -1636, 170, -1639, 170, 170,
- -1653, -1645, -1644, 57, 151, 170, -1652, -1649,
- 145, -1651, 150, 150, 150, -1669, -1631, -1658,
- 101, 151, -1660, -1618, -1666, -1644, -298, 228,
- -1615, 65, 228, 223, -1592, 170, -1678, -1677,
- -1675, -1674, 250, 146, 150, 170, -1692, -1691,
- -1689, -1687, -1686, -1685, 166, 166, 251, 251,
- 175, 251, 175, 223, -1697, -1696, 250, 211,
- 250, 250, 251, -1759, -1726, -1717, -1710, -1707,
- -1643, 57, 65, -1643, 57, -1592, -1714, -1713,
- -1668, 225, -1713, 225, 211, -1723, -1722, -1277,
- 65, 211, 109, -1286, 136, -1720, -1729, 75,
- 109, -1739, -1731, -1737, -1734, 41, -1736, 150,
- 150, -1738, 201, -1750, -1745, 240, -1744, -1712,
- 41, -1746, -1748, -1664, -1749, 240, -1755, 170,
- -1754, 240, 240, -1636, 170, 175, -1578, -1776,
- -1768, -1765, -1764, 165, 116, 136, 47, 165,
- -1772, -1771, 207, 240, -1775, 152, 130, 165,
- -1786, -1781, -1780, -1193, 240, -1784, 251, 243,
- -1785, 251, -1788, 251, -1797, -1792, 170, 251,
- -1795, 175, 251, 175, 156, -1800, 126, 175,
- 240, -1560, -1957, -1863, -1850, -1835, -1830, -1818,
- -1813, -1811, 160, 44, 160, -1815, 160, -1817,
- 198, 211, -1823, -1822, 20, 155, 160, -1827,
- -1822, 198, 36, -1822, 160, -1816, -1834, -1833,
- -1796, 155, 112, -1845, -1840, -809, 221, 156,
- -1844, -1843, 221, 221, 158, -1847, 216, 216,
- -1842, 207, -1855, -1852, -1817, 211, 255, -1861,
- -1860, -1817, 255, 55, 120, -1862, 211, -1908,
- -1882, -1868, -1867, 238, -1873, -1871, 233, -1872,
- 233, -1881, -1878, 188, 193, 218, 188, 218,
- 193, 233, -1893, -1889, -1886, 238, -1888, 238,
- 238, -1891, 163, -1892, 183, -1898, -1897, -1885,
- -1854, 238, -1903, -1901, 158, -1902, 188, -1907,
- -1897, -1849, 198, 233, -1937, -1928, -1923, -1916,
- 236, -1915, 20, 20, -1920, -1919, 213, 213,
- -1922, 236, 236, -1926, -1925, 236, -1927, 236,
- -1932, -1931, 203, 233, -1934, 203, -1872, 233,
- 198, -1951, -1944, -1943, -1881, 233, -1936, 233,
- -1946, -1906, -1948, 156, -1881, 156, -1947, -1955,
- 40, 236, 156, -1453, -1947, -1758, -1983, -1967,
- -1965, -1963, 216, 216, 160, 55, 160, -1979,
- -1972, -1971, -1950, 160, -1599, -1975, 160, -1977,
- -1945, 211, -1976, -1982, -1949, -1905, -1984, -1832,
- -20,
+ -317, -87, -41, -34, -27, -24, -13, -11,
+ -10, 60, 60, 60, 52, -20, -18, -10,
+ 60, 57, 52, 60, -10, 34, 60, 57,
+ -26, 34, 34, -31, -30, 41, 41, -30,
+ 41, -17, -37, 62, 22, -40, -39, 39,
+ 41, -79, -53, -52, -50, -49, -48, 38,
+ 38, 58, 58, 29, 29, -69, -65, -63,
+ -60, -12, 52, 57, -12, 52, -59, -19,
+ -33, 60, -68, 40, 38, -75, -72, 40,
+ -74, 60, 60, 60, -78, -67, 52, -80,
+ -84, -83, 40, 39, -83, 39, -77, -152,
+ -126, -108, -99, -94, 44, 58, -96, 33,
+ -98, 33, 33, -101, 38, -49, -48, -105,
+ 33, 33, 36, 36, -122, -116, -114, -39,
+ 39, -106, 33, 18, -119, -83, 36, -83,
+ -106, -113, 62, -125, 33, 33, -147, -139,
+ -132, -131, 20, 20, -134, 31, -137, 53,
+ 27, -138, 53, -146, -143, 53, 18, -145,
+ 53, 53, 55, -150, 53, 49, 49, 63,
+ -249, -207, -177, -176, -93, -172, -161, -105,
+ 31, -169, -166, -165, 10, 10, -165, 10,
+ -133, -171, -121, 10, -98, 33, -86, 51,
+ 25, -204, -201, -198, -187, -184, 29, 61,
+ -52, 35, 51, -191, -190, 26, 26, -195,
+ -194, 10, 10, -194, -185, 35, -199, -200,
+ 10, -171, 51, -196, 58, -48, 36, -237,
+ -236, -220, -213, -212, 37, -216, 37, 10,
+ -218, -106, 10, 37, -232, -225, -224, 7,
+ 7, -229, -228, 35, 10, -228, -227, 35,
+ -234, 7, 7, 26, 7, -240, -239, 37,
+ -246, -243, -227, -245, -230, 10, -248, 58,
+ 58, -294, -264, -253, 27, -257, -138, 53,
+ -217, -261, -138, -203, -174, -138, 53, -64,
+ -267, -131, 59, -284, -279, -274, -272, 27,
+ 27, 7, -273, -236, 59, -266, 28, -176,
+ -282, 27, 27, 28, -292, -289, -288, 8,
+ 8, -288, 8, 59, 27, 8, -311, -309,
+ -307, -305, -219, -303, -302, 11, 11, 11,
+ 59, 7, -291, -273, -186, 7, 11, -315,
+ -313, -314, 58, -248, -283, -423, -374, -327,
+ -323, -322, 48, -325, -278, -326, 40, -362,
+ -334, -331, -263, -333, 63, 40, -344, -342,
+ -339, 0, 51, -341, 0, 0, -341, 51,
+ -357, -351, -348, 50, -341, 0, -338, -355,
+ 50, -185, -332, 40, 35, -361, -349, 0,
+ -231, 50, -366, -59, 57, 35, -371, -59,
+ 57, -231, -360, -59, 57, 21, -403, -389,
+ -378, 8, -380, 56, -382, 50, -386, -385,
+ 21, 11, -385, 11, -373, -397, -394, -393,
+ 11, 11, -393, 21, 5, -398, -379, -303,
+ -388, 5, 5, -414, 47, -413, -410, -322,
+ 48, -401, -322, 48, -400, 49, -429, -424,
+ -421, -420, 53, -370, 53, -420, -354, -330,
+ -426, 9, -293, 9, -425, -435, -432, 50,
+ -436, -361, 9, -428, -361,
};
static long _vq_p_lsp20_0[] = {
- 68, 164, 704, 532, 8, 8, 8, 8,
- 708, 36, 8, 8, 8, 8, 380, 360,
- 360, 36, 36, 36, 640, 296, 8, 8,
- 372, 444, 444, 8, 8, 8, 208, 208,
- 208, 336, 336, 336, 180, 60, 60, 60,
- 60, 60, 60, 532, 532, 380, 592, 532,
- 532, 724, 180, 180, 60, 60, 60, 336,
- 336, 336, 208, 360, 272, 868, 392, 372,
- 272, 272, 708, 56, 56, 56, 440, 440,
- 968, 392, 392, 392, 392, 708, 572, 440,
- 440, 420, 424, 420, 420, 424, 360, 360,
- 440, 748, 684, 424, 592, 684, 708, 296,
- 724, 708, 868, 868, 988, 140, 740, 248,
- 416, 416, 248, 140, 140, 248, 540, 416,
- 560, 420, 212, 212, 212, 212, 420, 420,
- 296, 140, 140, 140, 140, 248, 248, 420,
- 540, 420, 248, 156, 360, 360, 248, 424,
- 360, 156, 392, 432, 208, 36, 36, 36,
- 36, 36, 208, 208, 248, 208, 208, 248,
- 248, 248, 248, 248, 248, 816, 740, 156,
- 432, 432, 740, 296, 868, 248, 36, 36,
- 156, 248, 360, 392, 392, 36, 36, 428,
- 208, 408, 408, 336, 76, 336, 100, 100,
- 140, 140, 336, 420, 684, 396, 76, 76,
- 76, 396, 688, 396, 396, 396, 396, 420,
- 416, 416, 572, 420, 420, 420, 76, 76,
- 424, 420, 76, 784, 76, 76, 352, 140,
- 432, 208, 208, 140, 352, 280, 280, 432,
- 432, 396, 396, 396, 416, 416, 416, 352,
- 132, 132, 132, 132, 132, 132, 132, 296,
- 140, 140, 396, 140, 100, 100, 100, 140,
- 580, 336, 140, 140, 208, 396, 560, 280,
- 280, 396, 396, 396, 804, 560, 560, 296,
- 908, 888, 164, 164, 784, 212, 132, 528,
- 784, 132, 100, 100, 76, 100, 408, 128,
- 140, 580, 132, 132, 404, 404, 580, 128,
- 128, 164, 164, 132, 132, 404, 128, 148,
- 148, 148, 604, 128, 404, 296, 580, 148,
- 148, 180, 180, 684, 604, 304, 688, 304,
- 120, 304, 120, 120, 120, 648, 320, 304,
- 628, 628, 776, 304, 32, 32, 32, 452,
- 776, 320, 240, 452, 848, 400, 400, 400,
- 308, 308, 776, 308, 308, 240, 308, 112,
- 112, 112, 240, 320, 320, 648, 648, 648,
- 916, 848, 848, 628, 776, 112, 628, 628,
- 528, 112, 112, 112, 572, 344, 344, 316,
- 728, 344, 344, 648, 76, 76, 76, 76,
- 76, 648, 648, 648, 728, 316, 320, 320,
- 320, 424, 420, 400, 400, 156, 560, 416,
- 280, 560, 280, 280, 280, 416, 396, 396,
- 344, 332, 416, 416, 416, 156, 540, 540,
- 116, 344, 344, 344, 396, 280, 280, 280,
- 560, 560, 848, 728, 560, 396, 396, 560,
- 116, 728, 396, 396, 396, 728, 848, 212,
- 212, 212, 540, 396, 116, 116, 112, 112,
- 112, 112, 112, 628, 344, 344, 316, 628,
- 628, 628, 760, 760, 740, 740, 428, 760,
- 212, 212, 212, 400, 400, 628, 628, 716,
- 112, 56, 112, 56, 56, 112, 112, 308,
- 56, 56, 56, 56, 400, 308, 112, 112,
- 112, 656, 656, 716, 696, 32, 776, 32,
- 776, 32, 32, 320, 400, 400, 400, 716,
- 716, 716, 776, 540, 212, 112, 56, 56,
- 56, 56, 56, 400, 112, 112, 112, 428,
- 408, 408, 56, 212, 56, 56, 56, 56,
- 212, 212, 400, 424, 56, 56, 56, 948,
- 308, 308, 308, 408, 0, 656, 312, 312,
- 312, 392, 56, 56, 308, 308, 548, 276,
- 312, 312, 312, 392, 392, 276, 540, 540,
- 112, 112, 112, 112, 740, 760, 656, 416,
- 740, 740, 740, 740, 444, 444, 88, 272,
- 16, 68, 484, 168, 168, 168, 484, 68,
- 68, 68, 244, 244, 244, 244, 244, 512,
- 16, 16, 16, 16, 512, 168, 168, 168,
- 596, 484, 596, 552, 292, 516, 292, 668,
- 244, 152, 152, 552, 152, 152, 152, 552,
- 516, 516, 276, 152, 152, 152, 152, 880,
- 780, 744, 744, 744, 508, 492, 484, 244,
- 244, 244, 244, 408, 484, 484, 240, 68,
- 68, 68, 68, 552, 256, 244, 244, 244,
- 744, 236, 492, 492, 152, 552, 780, 272,
- 272, 532, 532, 780, 236, 800, 88, 596,
- 484, 368, 88, 368, 88, 88, 368, 368,
- 368, 368, 596, 512, 236, 484, 292, 292,
- 484, 484, 236, 596, 236, 88, 88, 88,
- 88, 88, 88, 860, 236, 516, 516, 516,
- 516, 292, 508, 596, 668, 744, 88, 232,
- 756, 88, 88, 368, 732, 636, 232, 232,
- 232, 516, 88, 88, 88, 636, 516, 468,
- 672, 88, 88, 88, 672, 496, 368, 232,
- 232, 232, 232, 232, 496, 328, 328, 332,
- 636, 328, 332, 368, 368, 616, 616, 616,
- 736, 636, 332, 332, 668, 292, 292, 292,
- 292, 652, 536, 596, 384, 384, 512, 512,
- 536, 632, 576, 636, 616, 348, 348, 756,
- 616, 616, 732, 348, 348, 632, 384, 292,
- 292, 348, 348, 348, 348, 388, 384, 384,
- 384, 384, 764, 292, 652, 536, 536, 536,
- 536, 756, 596, 612, 612, 492, 492, 492,
- 36, 12, 36, 36, 12, 12, 12, 36,
- 36, 492, 492, 444, 168, 168, 12, 252,
- 244, 468, 252, 36, 36, 392, 36, 532,
- 468, 492, 380, 168, 12, 12, 12, 12,
- 168, 168, 168, 612, 312, 312, 12, 12,
- 12, 12, 312, 816, 312, 312, 12, 12,
- 12, 656, 192, 392, 56, 56, 612, 192,
- 192, 192, 312, 392, 156, 56, 156, 412,
- 412, 440, 268, 312, 312, 268, 56, 56,
- 156, 268, 268, 392, 308, 308, 412, 412,
- 412, 252, 168, 592, 252, 252, 272, 156,
- 412, 192, 192, 168, 168, 68, 68, 192,
- 68, 372, 168, 68, 68, 68, 68, 444,
- 68, 68, 68, 252, 444, 252, 252, 332,
- 360, 272, 272, 68, 532, 68, 68, 532,
- 68, 192, 444, 192, 192, 444, 252, 252,
- 252, 156, 156, 392, 16, 292, 16, 676,
- 268, 16, 16, 16, 16, 556, 268, 412,
- 536, 292, 292, 292, 372, 536, 384, 384,
- 16, 372, 512, 168, 16, 16, 588, 168,
- 592, 512, 16, 16, 16, 16, 576, 536,
- 536, 4, 576, 576, 864, 696, 588, 612,
- 292, 292, 292, 412, 412, 668, 552, 384,
- 576, 384, 384, 384, 640, 936, 388, 612,
- 216, 388, 460, 460, 364, 364, 364, 556,
- 556, 676, 460, 460, 460, 256, 676, 796,
- 556, 556, 240, 240, 556, 556, 556, 676,
- 676, 240, 576, 576, 696, 312, 192, 268,
- 168, 192, 168, 168, 192, 268, 56, 192,
- 192, 200, 192, 192, 192, 192, 412, 556,
- 56, 556, 612, 268, 656, 268, 676, 312,
- 588, 312, 312, 312, 312, 696, 588, 312,
- 312, 312, 96, 836, 696, 96, 612, 556,
- 556, 556, 696, 216, 676, 32, 32, 32,
- 200, 364, 308, 412, 364, 364, 364, 412,
- 96, 268, 268, 96, 656, 216, 556, 556,
- 656, 656, 796, 776, 556, 556, 556, 556,
- 216, 656, 624, 48, 48, 696, 696, 716,
- 656, 200, 216, 396, 304, 184, 72, 72,
- 324, 44, 44, 44, 44, 44, 824, 184,
- 184, 72, 4, 184, 204, 324, 544, 72,
- 72, 544, 188, 660, 188, 188, 188, 188,
- 608, 608, 340, 340, 660, 184, 72, 72,
- 72, 188, 824, 184, 184, 188, 188, 188,
- 976, 340, 340, 144, 144, 124, 284, 124,
- 624, 284, 284, 124, 456, 456, 284, 340,
- 284, 544, 624, 340, 144, 144, 204, 204,
- 204, 204, 472, 340, 340, 284, 340, 284,
- 284, 144, 284, 456, 144, 144, 284, 824,
- 1020, 184, 184, 184, 824, 824, 472, 472,
- 792, 472, 304, 304, 476, 204, 204, 204,
- 264, 304, 120, 120, 120, 120, 224, 224,
- 224, 304, 264, 264, 452, 120, 224, 204,
- 204, 224, 456, 204, 204, 324, 264, 144,
- 104, 264, 104, 104, 104, 104, 104, 120,
- 120, 264, 648, 648, 120, 120, 264, 120,
- 688, 104, 104, 104, 660, 204, 264, 204,
- 728, 340, 264, 264, 340, 52, 72, 28,
- 172, 188, 188, 28, 28, 28, 44, 44,
- 172, 172, 172, 172, 28, 28, 804, 28,
- 28, 144, 280, 280, 124, 436, 280, 396,
- 72, 72, 44, 44, 72, 72, 436, 608,
- 188, 92, 92, 188, 436, 92, 92, 92,
- 288, 288, 52, 172, 52, 52, 52, 52,
- 172, 124, 76, 52, 52, 52, 28, 28,
- 28, 124, 52, 608, 52, 52, 520, 52,
- 124, 172, 28, 28, 28, 172, 100, 100,
- 100, 28, 28, 28, 904, 728, 608, 396,
- 240, 164, 164, 240, 96, 608, 44, 172,
- 44, 172, 44, 44, 44, 172, 172, 96,
- 344, 344, 344, 324, 304, 256, 324, 44,
- 44, 44, 44, 44, 324, 324, 280, 280,
- 924, 288, 288, 288, 64, 324, 324, 64,
- 120, 304, 264, 304, 120, 120, 264, 648,
- 64, 324, 608, 608, 608, 64, 200, 648,
- 648, 648, 96, 688, 688, 480, 376, 40,
- 356, 300, 300, 300, 300, 700, 464, 376,
- 356, 356, 356, 356, 700, 964, 964, 376,
- 376, 376, 964, 700, 700, 96, 376, 220,
- 984, 812, 812, 40, 40, 40, 40, 40,
- 832, 832, 376, 376, 4, 4, 488, 356,
- 356, 376, 488, 712, 24, 376, 24, 24,
- 1020, 24, 852, 488, 488, 712, 488, 488,
- 640, 24, 24, 24, 24, 200, 812, 200,
- 644, 644, 1020, 944, 564, 24, 24, 24,
- 564, 904, 1016, 300, 300, 464, 24, 644,
- 24, 64, 944, 1016, 260, 260, 712, 712,
- 260, 500, 1016, 1016, 1016, 1016, 464, 660,
- 260, 260, 500, 500, 64, 260, 260, 260,
- 972, 712, 712, 356, 356, 356, 356, 712,
- 220, 1016, 464, 464, 464, 188, 720, 300,
- 72, 72, 300, 300, 436, 436, 64, 720,
- 464, 64, 564, 720, 300, 300, 200, 544,
- 564, 564, 940, 544, 84, 24, 72, 72,
- 72, 720, 84, 84, 84, 84, 64, 564,
- 564, 480, 480, 220, 480, 480, 544, 544,
- 144, 644, 564, 772, 772, 1016, 1016, 1016,
- 1016, 1016, 464, 564, 160, 188, 160, 544,
- 660, 960, 160, 564, 260, 1016, 1016, 564,
- 260, 84, 84, 84, 564, 564, 564, 564,
- 844, 624, 480, 480, 108, 828, 480, 480,
- 720, 108, 480, 108, 108, 260, 1016, 1016,
- 1016, 1016, 624, 260, 260, 260, 500, 260,
- 284, 284, 260, 284, 136, 500, 604, 524,
- 164, 52, 52, 52, 76, 128, 128, 128,
- 520, 680, 100, 100, 600, 128, 128, 164,
- 228, 584, 228, 100, 584, 600, 100, 100,
- 100, 404, 404, 580, 228, 524, 524, 128,
- 128, 128, 404, 136, 524, 524, 524, 524,
- 136, 160, 892, 584, 160, 404, 504, 504,
- 228, 228, 584, 504, 504, 664, 40, 40,
- 664, 664, 40, 40, 40, 356, 664, 700,
- 356, 680, 680, 664, 664, 584, 584, 136,
- 664, 700, 700, 28, 228, 100, 28, 28,
- 28, 28, 136, 52, 52, 136, 100, 100,
- 136, 600, 228, 228, 108, 228, 228, 228,
- 108, 80, 300, 28, 28, 80, 300, 92,
- 92, 100, 52, 164, 28, 28, 100, 100,
- 164, 28, 600, 164, 92, 92, 28, 108,
- 92, 52, 164, 160, 520, 680, 92, 504,
- 92, 92, 504, 504, 504, 504, 136, 52,
- 52, 52, 52, 52, 1016, 188, 1016, 1016,
- 92, 92, 124, 188, 188, 520, 188, 520,
- 520, 464, 464, 124, 520, 520, 520, 520,
- 660, 972, 1016, 1016, 680, 356, 356, 356,
- 464, 464, 464, 680, 124, 464, 464, 464,
- 356, 24, 872, 176, 48, 620, 176, 196,
- 48, 48, 48, 80, 80, 640, 196, 80,
- 456, 196, 80, 80, 20, 20, 620, 48,
- 48, 124, 124, 176, 176, 144, 20, 20,
- 144, 448, 80, 632, 468, 448, 448, 124,
- 176, 176, 176, 632, 448, 48, 48, 176,
- 80, 124, 20, 24, 20, 20, 124, 196,
- 84, 84, 108, 108, 196, 620, 644, 468,
- 160, 652, 652, 692, 80, 80, 80, 752,
- 852, 692, 160, 160, 160, 160, 692, 692,
- 692, 872, 332, 468, 468, 468, 332, 332,
- 732, 632, 632, 652, 692, 448, 448, 448,
- 108, 932, 468, 468, 468, 692, 632, 692,
- 692, 1020, 624, 752, 20, 752, 24, 20,
- 20, 20, 20, 24, 24, 24, 24, 80,
- 752, 752, 852, 20, 644, 20, 844, 80,
- 20, 20, 20, 448, 24, 24, 812, 812,
- 284, 488, 488, 488, 488, 488, 124, 832,
- 24, 124, 812, 284, 852, 136, 136, 24,
- 24, 24, 108, 160, 108, 4, 48, 4,
- 4, 4, 4, 640, 220, 136, 136, 480,
- 48, 48, 108, 108, 108, 640, 480, 108,
- 136, 480, 4, 136, 108, 284, 108, 108,
- 624,
+ 64, 76, 64, 136, 136, 52, 52, 52,
+ 52, 52, 208, 136, 136, 64, 64, 64,
+ 64, 124, 136, 136, 76, 76, 76, 92,
+ 64, 64, 88, 64, 64, 64, 184, 76,
+ 76, 92, 248, 220, 220, 64, 64, 88,
+ 156, 52, 232, 68, 68, 68, 68, 68,
+ 16, 152, 116, 16, 244, 52, 52, 52,
+ 52, 52, 52, 224, 68, 68, 112, 208,
+ 112, 136, 68, 144, 136, 16, 68, 120,
+ 16, 16, 152, 68, 68, 120, 116, 16,
+ 88, 88, 188, 152, 136, 136, 188, 220,
+ 16, 16, 56, 56, 56, 56, 176, 176,
+ 8, 8, 72, 176, 176, 16, 132, 16,
+ 16, 104, 124, 120, 176, 88, 88, 176,
+ 176, 120, 176, 176, 56, 56, 112, 176,
+ 112, 112, 220, 220, 220, 88, 216, 216,
+ 216, 216, 216, 72, 80, 120, 56, 56,
+ 56, 72, 108, 176, 56, 56, 56, 176,
+ 176, 72, 72, 220, 220, 220, 248, 248,
+ 244, 56, 56, 8, 104, 8, 56, 56,
+ 96, 104, 8, 8, 8, 104, 244, 244,
+ 96, 8, 96, 132, 56, 56, 112, 124,
+ 72, 104, 16, 104, 68, 68, 68, 68,
+ 16, 124, 96, 104, 16, 16, 244, 16,
+ 16, 16, 116, 244, 96, 120, 116, 16,
+ 232, 104, 140, 120, 152, 68, 92, 244,
+ 104, 60, 100, 244, 100, 60, 60, 60,
+ 244, 92, 28, 28, 8, 104, 8, 8,
+ 104, 8, 8, 124, 28, 244, 120, 92,
+ 244, 244, 100, 100, 108, 60, 28, 60,
+ 28, 28, 92, 116, 92, 148, 116, 116,
+ 148, 48, 56, 216, 216, 56, 56, 56,
+ 120, 72, 72, 92, 140, 80, 80, 144,
+ 216, 216, 196, 72, 48, 48, 48, 48,
+ 100, 100, 8, 8, 180, 180, 180, 8,
+ 8, 8, 72, 96, 48, 48, 48, 48,
+ 108, 100, 100, 204, 80, 80, 60, 60,
+ 60, 60, 60, 60, 60, 60, 32, 148,
+ 172, 100, 172, 8, 172, 108, 108, 108,
+ 56, 108, 28, 224, 172, 48, 24, 188,
+ 180, 180, 112, 188, 172, 192, 112, 144,
+ 144, 112, 180, 144, 204, 200, 112, 192,
+ 112, 112, 140, 192, 192, 160, 200, 84,
+ 24, 24, 24, 24, 200, 200, 84, 192,
+ 188, 84, 124, 200, 84, 128, 128, 128,
+ 84, 192, 112, 112, 112, 168, 128, 128,
+ 128, 168, 168, 200, 200, 20, 128, 32,
+ 60, 60, 148, 148, 32, 32, 108, 108,
+ 12, 224, 200, 200, 12, 200, 128, 128,
+ 128, 36, 200, 168, 168, 112, 128, 128,
+ 168, 4, 168, 180, 180, 216, 216, 216,
+ 216, 168, 180, 180, 4, 180, 108, 108,
+ 80, 80, 80, 20, 188, 108, 92, 12,
+ 216, 200, 48, 32, 32, 192, 216, 80,
+ 80, 80, 80, 80, 188,
};
static long _vq_q_lsp20_0[] = {
- 216, 292, 776, 912, 248, 988, 60, 336,
- 1008, 444, 36, 360, 380, 708, 708, 380,
- 708, 360, 380, 708, 844, 748, 868, 444,
- 592, 708, 868, 868, 208, 1008, 1008, 360,
- 336, 1008, 360, 684, 704, 180, 800, 380,
- 532, 724, 708, 708, 724, 532, 748, 708,
- 800, 800, 724, 800, 380, 704, 336, 724,
- 684, 704, 380, 380, 724, 968, 444, 572,
- 440, 708, 968, 392, 988, 440, 968, 988,
- 988, 440, 968, 708, 988, 988, 748, 708,
- 868, 684, 440, 424, 988, 988, 708, 440,
- 988, 808, 724, 684, 808, 988, 724, 808,
- 988, 988, 988, 1008, 1008, 208, 988, 560,
- 432, 540, 540, 248, 432, 432, 560, 540,
- 740, 440, 1008, 424, 540, 988, 424, 540,
- 592, 360, 248, 420, 1008, 540, 1008, 540,
- 1008, 988, 360, 808, 420, 540, 988, 440,
- 392, 592, 440, 1008, 432, 360, 816, 208,
- 248, 840, 248, 840, 816, 248, 360, 360,
- 560, 432, 740, 816, 840, 840, 840, 296,
- 740, 840, 840, 748, 1008, 868, 360, 248,
- 372, 360, 392, 444, 868, 444, 868, 748,
- 248, 748, 428, 704, 164, 424, 140, 784,
- 684, 420, 684, 684, 784, 784, 920, 396,
- 688, 888, 888, 888, 416, 420, 920, 920,
- 420, 920, 748, 888, 684, 784, 420, 424,
- 888, 424, 784, 888, 684, 784, 748, 908,
- 580, 280, 432, 432, 572, 416, 432, 560,
- 900, 416, 560, 900, 432, 560, 900, 428,
- 336, 580, 208, 396, 784, 140, 1008, 408,
- 784, 396, 784, 208, 580, 140, 396, 580,
- 900, 684, 208, 336, 336, 784, 1008, 560,
- 804, 560, 804, 908, 908, 804, 908, 572,
- 1008, 908, 784, 908, 908, 1008, 784, 748,
- 1008, 704, 404, 580, 128, 128, 528, 784,
- 580, 784, 404, 580, 580, 604, 604, 784,
- 404, 404, 784, 404, 784, 784, 684, 404,
- 604, 912, 912, 604, 604, 528, 704, 704,
- 180, 684, 704, 704, 704, 796, 804, 848,
- 452, 916, 320, 648, 916, 916, 916, 452,
- 776, 916, 916, 916, 320, 452, 776, 776,
- 916, 452, 748, 916, 888, 628, 848, 916,
- 400, 540, 916, 320, 916, 528, 920, 308,
- 916, 848, 352, 916, 920, 848, 916, 920,
- 920, 920, 916, 728, 916, 776, 776, 848,
- 808, 344, 848, 916, 768, 848, 916, 768,
- 848, 648, 848, 848, 424, 688, 320, 888,
- 920, 688, 728, 888, 888, 572, 400, 424,
- 888, 920, 424, 424, 888, 572, 760, 848,
- 740, 920, 396, 416, 560, 560, 416, 560,
- 416, 372, 540, 560, 740, 372, 560, 740,
- 332, 888, 876, 848, 848, 804, 560, 876,
- 848, 876, 876, 908, 848, 560, 728, 728,
- 672, 876, 728, 848, 888, 848, 888, 560,
- 540, 888, 560, 560, 372, 768, 400, 740,
- 848, 628, 760, 760, 628, 876, 352, 848,
- 760, 876, 876, 848, 760, 876, 508, 876,
- 400, 760, 848, 848, 760, 876, 848, 760,
- 776, 948, 400, 656, 308, 308, 656, 656,
- 308, 440, 400, 896, 896, 896, 656, 716,
- 400, 716, 948, 948, 716, 716, 896, 776,
- 916, 320, 896, 896, 716, 896, 776, 776,
- 896, 796, 796, 740, 868, 540, 112, 308,
- 656, 400, 948, 948, 308, 656, 400, 568,
- 568, 508, 308, 948, 424, 400, 212, 540,
- 540, 400, 424, 440, 440, 948, 968, 968,
- 540, 424, 440, 428, 548, 816, 948, 392,
- 656, 656, 948, 392, 816, 440, 568, 568,
- 392, 816, 868, 816, 540, 0, 868, 816,
- 816, 656, 760, 740, 760, 856, 856, 740,
- 840, 856, 868, 816, 856, 816, 656, 636,
- 780, 668, 512, 244, 484, 552, 492, 484,
- 552, 244, 484, 596, 512, 596, 588, 588,
- 668, 292, 596, 168, 596, 292, 512, 484,
- 668, 596, 744, 668, 552, 552, 668, 744,
- 820, 244, 860, 780, 516, 552, 744, 744,
- 552, 744, 508, 744, 780, 880, 980, 980,
- 980, 780, 880, 860, 528, 860, 552, 744,
- 484, 492, 860, 528, 492, 860, 528, 244,
- 744, 552, 780, 780, 528, 552, 744, 780,
- 780, 528, 800, 820, 492, 820, 820, 780,
- 552, 780, 800, 800, 256, 980, 384, 636,
- 516, 484, 596, 756, 368, 860, 860, 512,
- 596, 756, 756, 756, 924, 860, 484, 596,
- 512, 596, 240, 860, 508, 596, 516, 764,
- 744, 860, 880, 880, 276, 744, 880, 764,
- 744, 516, 748, 764, 764, 764, 736, 496,
- 764, 636, 368, 636, 788, 756, 636, 516,
- 764, 764, 516, 636, 764, 764, 636, 788,
- 788, 368, 496, 516, 732, 880, 516, 616,
- 636, 328, 496, 736, 736, 496, 736, 788,
- 736, 616, 732, 756, 736, 636, 736, 756,
- 756, 736, 672, 468, 764, 512, 384, 668,
- 536, 788, 596, 668, 536, 668, 596, 576,
- 576, 788, 596, 764, 636, 616, 956, 956,
- 756, 956, 788, 636, 536, 652, 536, 384,
- 764, 764, 384, 388, 956, 956, 956, 388,
- 764, 956, 956, 536, 672, 956, 596, 756,
- 764, 764, 764, 884, 632, 536, 552, 512,
- 380, 816, 252, 444, 36, 492, 840, 820,
- 840, 840, 820, 820, 244, 252, 168, 820,
- 820, 884, 816, 252, 444, 816, 816, 820,
- 612, 820, 820, 312, 588, 512, 168, 836,
- 836, 512, 588, 788, 444, 588, 856, 836,
- 312, 816, 816, 836, 816, 856, 588, 856,
- 444, 820, 268, 440, 392, 968, 788, 968,
- 312, 392, 392, 968, 788, 440, 612, 440,
- 968, 968, 440, 392, 656, 312, 268, 308,
- 592, 308, 392, 816, 816, 440, 440, 440,
- 968, 412, 252, 788, 268, 552, 412, 884,
- 552, 968, 252, 192, 588, 192, 588, 588,
- 252, 788, 252, 968, 272, 252, 192, 532,
- 444, 252, 968, 968, 968, 444, 708, 372,
- 708, 532, 708, 272, 708, 532, 820, 820,
- 708, 252, 588, 444, 968, 968, 360, 392,
- 440, 332, 788, 968, 192, 460, 668, 836,
- 292, 412, 268, 556, 676, 676, 676, 676,
- 576, 384, 536, 676, 592, 676, 676, 536,
- 576, 672, 576, 292, 168, 588, 836, 836,
- 788, 836, 588, 536, 576, 836, 836, 576,
- 836, 788, 588, 696, 884, 836, 696, 864,
- 412, 668, 384, 552, 668, 968, 668, 676,
- 936, 460, 388, 936, 864, 956, 936, 788,
- 808, 460, 936, 576, 460, 676, 796, 676,
- 796, 796, 556, 796, 676, 808, 936, 936,
- 936, 676, 808, 592, 936, 676, 696, 696,
- 936, 256, 696, 936, 936, 796, 312, 556,
- 836, 412, 192, 268, 268, 412, 192, 268,
- 836, 864, 948, 968, 588, 556, 968, 968,
- 948, 948, 864, 312, 676, 656, 836, 556,
- 836, 588, 696, 856, 948, 856, 696, 656,
- 696, 836, 864, 856, 856, 612, 808, 656,
- 696, 948, 948, 612, 696, 796, 308, 364,
- 216, 896, 896, 896, 796, 896, 676, 896,
- 808, 896, 656, 216, 676, 864, 796, 896,
- 796, 896, 896, 796, 696, 896, 948, 656,
- 864, 796, 640, 216, 200, 716, 796, 948,
- 716, 256, 884, 528, 832, 288, 120, 828,
- 660, 324, 72, 184, 824, 928, 928, 928,
- 824, 184, 652, 324, 324, 928, 824, 188,
- 544, 940, 544, 992, 340, 660, 608, 928,
- 928, 660, 660, 928, 928, 928, 184, 824,
- 992, 992, 992, 992, 188, 824, 340, 928,
- 996, 992, 824, 996, 976, 472, 828, 500,
- 824, 456, 624, 284, 624, 824, 456, 500,
- 340, 624, 828, 992, 456, 472, 456, 928,
- 472, 824, 824, 928, 824, 472, 456, 340,
- 824, 792, 456, 472, 472, 1020, 472, 992,
- 904, 472, 824, 828, 828, 828, 824, 992,
- 904, 828, 648, 324, 996, 224, 264, 304,
- 304, 452, 224, 304, 264, 476, 264, 304,
- 476, 476, 304, 476, 476, 452, 996, 224,
- 456, 456, 996, 264, 324, 628, 928, 904,
- 340, 500, 688, 928, 120, 264, 224, 264,
- 224, 928, 928, 688, 264, 648, 648, 688,
- 928, 500, 660, 688, 688, 456, 928, 264,
- 928, 500, 340, 456, 456, 648, 688, 92,
- 280, 416, 544, 44, 188, 172, 188, 172,
- 436, 544, 416, 900, 396, 436, 900, 280,
- 804, 792, 900, 436, 904, 900, 804, 804,
- 92, 436, 72, 288, 288, 544, 544, 804,
- 544, 188, 608, 608, 544, 436, 288, 804,
- 804, 436, 396, 188, 100, 76, 172, 920,
- 920, 792, 688, 76, 164, 520, 52, 188,
- 608, 144, 188, 688, 520, 608, 608, 688,
- 1020, 728, 100, 172, 396, 396, 172, 396,
- 900, 164, 396, 728, 976, 804, 728, 728,
- 924, 608, 804, 256, 256, 908, 928, 280,
- 324, 920, 172, 728, 344, 344, 396, 240,
- 728, 648, 920, 344, 344, 924, 628, 288,
- 280, 324, 344, 728, 728, 344, 344, 288,
- 976, 324, 728, 876, 976, 876, 728, 924,
- 608, 648, 304, 452, 648, 920, 648, 688,
- 256, 728, 688, 728, 908, 96, 220, 688,
- 728, 928, 220, 928, 728, 804, 480, 972,
- 712, 892, 1000, 964, 812, 964, 964, 812,
- 376, 964, 700, 984, 984, 984, 984, 700,
- 964, 1000, 1000, 964, 1000, 200, 984, 904,
- 1000, 1000, 964, 356, 376, 1000, 832, 892,
- 892, 1000, 488, 832, 220, 96, 832, 376,
- 488, 488, 964, 832, 712, 852, 376, 488,
- 904, 852, 984, 712, 984, 984, 812, 832,
- 904, 644, 812, 964, 984, 1020, 984, 220,
- 812, 964, 904, 972, 944, 300, 964, 564,
- 964, 976, 464, 464, 564, 564, 712, 944,
- 944, 904, 984, 944, 712, 944, 984, 944,
- 356, 1012, 500, 660, 464, 972, 972, 972,
- 500, 972, 660, 972, 1020, 712, 972, 1012,
- 1012, 972, 1012, 464, 984, 712, 972, 972,
- 904, 464, 960, 972, 984, 284, 992, 644,
- 720, 940, 436, 544, 544, 940, 200, 940,
- 960, 96, 720, 960, 940, 544, 256, 564,
- 940, 960, 960, 960, 644, 84, 480, 720,
- 940, 940, 480, 564, 720, 940, 144, 720,
- 940, 720, 940, 864, 644, 544, 564, 644,
- 0, 940, 644, 1012, 864, 660, 188, 544,
- 464, 992, 564, 992, 712, 544, 1012, 992,
- 992, 992, 772, 992, 844, 260, 624, 624,
- 564, 480, 564, 844, 644, 624, 844, 944,
- 944, 944, 624, 644, 284, 992, 624, 828,
- 992, 720, 720, 260, 992, 992, 260, 624,
- 500, 340, 992, 500, 284, 624, 1012, 1012,
- 624, 992, 284, 500, 284, 660, 804, 664,
- 404, 100, 1004, 128, 128, 680, 520, 1004,
- 1004, 1004, 128, 600, 680, 164, 680, 680,
- 1004, 600, 584, 228, 604, 680, 228, 600,
- 580, 580, 600, 600, 600, 680, 1004, 524,
- 404, 604, 524, 260, 892, 584, 604, 912,
- 1012, 260, 912, 892, 944, 680, 700, 680,
- 504, 584, 1000, 584, 600, 680, 1000, 892,
- 680, 700, 1004, 356, 664, 664, 1004, 1004,
- 700, 1004, 700, 892, 700, 664, 1000, 844,
- 1000, 1000, 1004, 188, 504, 300, 900, 52,
- 100, 228, 260, 100, 228, 944, 228, 600,
- 160, 900, 600, 900, 844, 544, 300, 436,
- 260, 844, 436, 436, 544, 108, 504, 300,
- 436, 680, 100, 804, 100, 164, 164, 600,
- 600, 804, 804, 600, 520, 960, 92, 136,
- 164, 520, 520, 1012, 680, 960, 600, 680,
- 504, 960, 960, 600, 680, 700, 772, 1004,
- 520, 188, 1016, 660, 464, 544, 188, 660,
- 608, 188, 828, 960, 660, 608, 520, 660,
- 680, 972, 960, 472, 960, 660, 1004, 972,
- 972, 1004, 464, 1004, 960, 700, 680, 1004,
- 680, 700, 1004, 700, 624, 960, 504, 700,
- 960, 240, 1012, 752, 480, 884, 448, 620,
- 196, 80, 640, 176, 640, 844, 640, 196,
- 792, 844, 176, 640, 80, 620, 640, 176,
- 620, 792, 144, 620, 640, 456, 80, 448,
- 472, 620, 448, 864, 632, 468, 884, 624,
- 448, 632, 884, 884, 632, 176, 864, 864,
- 176, 828, 644, 844, 196, 844, 1020, 644,
- 480, 196, 1020, 220, 480, 644, 844, 812,
- 468, 772, 692, 952, 160, 752, 932, 932,
- 932, 932, 692, 752, 772, 872, 752, 872,
- 772, 932, 932, 632, 732, 952, 732, 952,
- 952, 732, 652, 732, 732, 752, 932, 468,
- 124, 952, 952, 752, 632, 752, 752, 752,
- 932, 828, 792, 932, 488, 932, 844, 852,
- 944, 24, 80, 80, 944, 80, 852, 852,
- 852, 944, 944, 844, 944, 944, 944, 944,
- 852, 448, 812, 932, 852, 812, 852, 932,
- 792, 712, 852, 832, 872, 932, 284, 932,
- 852, 624, 852, 624, 872, 624, 284, 712,
- 160, 944, 624, 712, 284, 772, 1020, 844,
- 136, 640, 864, 864, 640, 220, 640, 624,
- 480, 108, 136, 640, 828, 844, 640, 480,
- 792, 844, 136, 640, 136, 1020, 640, 472,
- 844,
+ 92, 80, 68, 156, 164, 88, 64, 136,
+ 208, 240, 240, 240, 208, 76, 136, 208,
+ 240, 228, 208, 240, 208, 136, 240, 228,
+ 88, 136, 136, 76, 184, 164, 164, 184,
+ 164, 124, 164, 248, 88, 164, 88, 156,
+ 164, 88, 240, 244, 116, 232, 16, 152,
+ 152, 232, 232, 116, 116, 16, 152, 240,
+ 68, 136, 208, 228, 136, 208, 228, 240,
+ 124, 240, 136, 160, 152, 116, 16, 160,
+ 152, 240, 240, 240, 116, 144, 208, 88,
+ 136, 152, 160, 156, 152, 156, 120, 44,
+ 80, 88, 152, 132, 176, 232, 72, 132,
+ 72, 132, 132, 132, 152, 232, 152, 104,
+ 132, 132, 144, 144, 220, 152, 132, 88,
+ 156, 124, 132, 72, 176, 152, 144, 152,
+ 124, 120, 248, 88, 132, 132, 196, 220,
+ 212, 72, 80, 80, 212, 124, 72, 212,
+ 108, 212, 212, 220, 176, 212, 72, 72,
+ 212, 212, 220, 248, 212, 196, 196, 252,
+ 32, 108, 152, 100, 232, 72, 8, 104,
+ 124, 132, 244, 104, 40, 40, 104, 40,
+ 120, 132, 112, 40, 72, 132, 160, 204,
+ 100, 152, 132, 232, 104, 16, 116, 244,
+ 244, 140, 204, 40, 244, 104, 104, 244,
+ 116, 40, 40, 116, 124, 140, 232, 232,
+ 40, 132, 204, 124, 232, 152, 144, 116,
+ 108, 8, 28, 100, 148, 28, 148, 40,
+ 28, 124, 40, 148, 100, 40, 104, 28,
+ 28, 244, 28, 140, 40, 28, 124, 140,
+ 100, 28, 28, 104, 28, 40, 148, 148,
+ 232, 40, 124, 148, 120, 40, 148, 232,
+ 232, 60, 8, 80, 108, 72, 108, 212,
+ 144, 80, 108, 96, 160, 108, 212, 228,
+ 48, 80, 236, 80, 72, 8, 100, 108,
+ 108, 28, 100, 108, 236, 196, 112, 100,
+ 72, 108, 108, 112, 80, 100, 108, 32,
+ 32, 108, 32, 236, 108, 32, 232, 108,
+ 8, 100, 28, 148, 32, 44, 44, 44,
+ 236, 28, 204, 28, 96, 28, 44, 224,
+ 108, 232, 232, 232, 112, 204, 36, 200,
+ 188, 112, 192, 192, 180, 160, 160, 228,
+ 0, 144, 160, 200, 252, 160, 128, 200,
+ 192, 0, 204, 160, 0, 0, 160, 204,
+ 128, 192, 0, 200, 160, 0, 140, 200,
+ 200, 124, 236, 160, 140, 192, 200, 0,
+ 92, 200, 128, 224, 228, 140, 200, 224,
+ 228, 92, 84, 224, 228, 84, 192, 36,
+ 44, 32, 44, 224, 44, 200, 200, 224,
+ 84, 44, 224, 44, 20, 224, 200, 36,
+ 44, 44, 36, 84, 20, 224, 224, 148,
+ 12, 20, 20, 80, 188, 196, 180, 112,
+ 192, 4, 112, 192, 12, 196, 200, 32,
+ 108, 188, 212, 92, 212, 188, 124, 144,
+ 48, 36, 80, 36, 200, 36, 80, 200,
+ 188, 192, 36, 32, 192,
};
-static encode_aux _vq_aux_lsp20_0 = {
+static encode_aux_nearestmatch _vq_auxn_lsp20_0 = {
_vq_ptr0_lsp20_0,
_vq_ptr1_lsp20_0,
_vq_p_lsp20_0,
_vq_q_lsp20_0,
- 1985, 1985
+ 437, 437
};
static static_codebook _vq_book_lsp20_0 = {
- 4, 256, 4172015, 2792400, 8, 1,
- _vq_quantlist_lsp20_0,
+ 4, 64,
_vq_lengthlist_lsp20_0,
- &_vq_aux_lsp20_0,
+ 2, 1603965733, 1586933473, 8, 1,
+ _vq_quantlist_lsp20_0,
+ &_vq_auxn_lsp20_0,
+ NULL,
};
diff --git a/include/vorbis/book/lsp20_1.vqh b/include/vorbis/book/lsp20_1.vqh
new file mode 100644
index 00000000..d9e371d6
--- /dev/null
+++ b/include/vorbis/book/lsp20_1.vqh
@@ -0,0 +1,534 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_lsp20_1_VQH_
+#define _V_lsp20_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_lsp20_1[] = {
+ 143,
+ 129,
+ 147,
+ 126,
+ 151,
+ 124,
+ 153,
+ 127,
+ 165,
+ 149,
+ 186,
+ 132,
+ 176,
+ 101,
+ 198,
+ 75,
+ 127,
+ 72,
+ 124,
+ 52,
+ 190,
+ 34,
+ 137,
+ 109,
+ 135,
+ 124,
+ 166,
+ 126,
+ 190,
+ 147,
+ 176,
+ 132,
+ 170,
+ 129,
+ 158,
+ 117,
+ 115,
+ 21,
+ 130,
+ 93,
+ 140,
+ 128,
+ 144,
+ 122,
+ 146,
+ 138,
+ 160,
+ 117,
+ 153,
+ 148,
+ 182,
+ 130,
+ 173,
+ 119,
+ 147,
+ 111,
+ 148,
+ 6,
+ 126,
+ 92,
+ 170,
+ 135,
+ 166,
+ 129,
+ 151,
+ 141,
+ 176,
+ 129,
+ 178,
+ 135,
+ 210,
+ 154,
+ 164,
+ 110,
+ 147,
+ 106,
+ 114,
+ 37,
+ 136,
+ 102,
+ 145,
+ 22,
+ 130,
+ 99,
+ 142,
+ 135,
+ 181,
+ 137,
+ 202,
+ 150,
+ 214,
+ 127,
+ 184,
+ 141,
+ 163,
+ 125,
+ 122,
+ 50,
+ 138,
+ 109,
+ 200,
+ 9,
+ 131,
+ 93,
+ 139,
+ 141,
+ 149,
+ 129,
+ 147,
+ 144,
+ 169,
+ 120,
+ 149,
+ 93,
+ 168,
+ 80,
+ 171,
+ 92,
+ 156,
+ 56,
+ 126,
+ 114,
+ 128,
+ 117,
+ 120,
+ 137,
+ 131,
+ 128,
+ 137,
+ 127,
+ 171,
+ 135,
+ 130,
+ 129,
+ 184,
+ 160,
+ 143,
+ 81,
+ 139,
+ 76,
+ 157,
+ 33,
+ 134,
+ 104,
+ 118,
+ 127,
+ 130,
+ 129,
+ 153,
+ 131,
+ 158,
+ 137,
+ 191,
+ 118,
+ 217,
+ 82,
+ 152,
+ 73,
+ 135,
+ 40,
+ 195,
+ 118,
+ 157,
+ 107,
+ 134,
+ 121,
+ 137,
+ 123,
+ 127,
+ 74,
+ 153,
+ 119,
+ 128,
+ 122,
+ 169,
+ 154,
+ 175,
+ 102,
+ 219,
+ 92,
+ 255,
+ 27,
+ 139,
+ 108,
+ 138,
+ 124,
+ 141,
+ 119,
+ 121,
+ 114,
+ 164,
+ 140,
+ 193,
+ 116,
+ 200,
+ 63,
+ 178,
+ 0,
+ 127,
+ 89,
+ 160,
+ 84,
+ 148,
+ 54,
+ 167,
+ 41,
+ 139,
+ 114,
+ 209,
+ 130,
+ 212,
+ 71,
+ 190,
+ 51,
+ 140,
+ 118,
+ 122,
+ 142,
+ 134,
+ 129,
+ 128,
+ 124,
+ 129,
+ 124,
+ 142,
+ 137,
+ 189,
+ 152,
+ 176,
+ 100,
+ 177,
+ 62,
+ 229,
+ 15,
+ 134,
+ 100,
+ 139,
+ 132,
+ 178,
+ 128,
+ 137,
+ 120,
+ 150,
+ 133,
+ 163,
+ 124,
+ 204,
+ 158,
+ 125,
+ 149,
+ 140,
+ 130,
+ 137,
+ 91,
+ 211,
+ 118,
+};
+
+static long _vq_lengthlist_lsp20_1[] = {
+ 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7,
+};
+
+static long _vq_ptr0_lsp20_1[] = {
+ -1, -2, -3, -4, -5, -6, -7, 28,
+ -9, 29, 53, -12, -13, 28, 53, -16,
+ 41, 56, -19, -20, -21, -22, 28, 30,
+ -25, 5, -27, 30, -416, 44, -29, -32,
+ -33, -25, 33, 50, 30, -38, 36, -40,
+ -41, -42, -13, -34, -43, -46, 31, -48,
+ 31, 44, -51, 28, 47, -54, -55, -56,
+ -57, -58, 6, 28, -61, 28, 18, -64,
+ -65, 46, -67, -68, -69, 6, -71, 47,
+ -73, -74, 43, 33, 43, -78, -79, 62,
+ 47, 27, -83, -84, 10, -86, -62, 21,
+ 28, -90, 18, -92, -93, -80, -87, -96,
+ -84, -94, 54, -100, 62, -97, -103, -104,
+ -105, -106, 28, -108, -109, 41, -111, 46,
+ 53, -415, -101, -114, -117, -118, 31, -71,
+ -115, 15, -123, -124, -109, -121, 44, -126,
+ -129, -111, 12, -130, -113, -131, -133, -136,
+ -137, -138, -62, 44, 29, 29, 29, -144,
+ 29, -146, 45, 40, -149, -150, -151, -152,
+ -153, 25, 35, -156, -157, -158, 34, 42,
+ -161, 35, -147, 15, -165, -166, -167, 5,
+ -169, -170, 30, -163, -132, 8, 27, -176,
+ 5, 16, -179, 25, 34, -182, -183, -25,
+ -177, 45, 50, -188, -189, -190, 4, -192,
+ -193, 4, 20, -196, 14, -163, 9, -200,
+ -201, 4, 20, -204, 19, 16, -207, -208,
+ -209, -210, 4, -212, 4, 16, -215, 24,
+ 34, -193, 15, 39, 34, -222, -223, -224,
+ -225, -226, -227, -228, -229, -230, 1, -232,
+ 11, 26, 37, -236, 3, 11, -239, 3,
+ 11, -242, -243, -244, -245, -246, -247, 1,
+ 11, 1, -251, -252, -230, -218, -253, -172,
+ -213, 8, -259, -260, -237, -257, -261, -264,
+ 32, -262, -267, -233, -265, -255, 12, -270,
+ 6, -274, 1, 37, -277, -278, -279, 6,
+ -271, -282, 32, -280, 63, -286, -287, -288,
+ 33, 26, 43, -292, -293, -294, -295, -296,
+ -297, -249, -283, 6, -298, -302, -303, -304,
+ -305, -306, -307, 0, -300, -84, 45, 48,
+ -313, -69, 40, -314, -315, 43, -316, -320,
+ 6, 38, 26, 6, 10, -326, -327, 6,
+ -321, 11, 43, 63, 11, -279, 23, -336,
+ 6, -334, -339, -340, 11, -342, 13, -337,
+ -345, -346, -347, 1, -230, -343, -232, 38,
+ -351, -354, -355, -356, -236, 23, 15, 44,
+ -358, 33, -363, -364, -365, 21, -360, -288,
+ -366, -370, 27, 23, -373, -374, -375, -376,
+ -377, -378, 3, -380, 8, 8, 40, -384,
+ -385, 8, -387, -388, -389, 3, 12, 48,
+ -342, 15, 40, 45, -397, -398, -261, -269,
+ -393, -270, 23, -401, -403, -232, 38, 13,
+ 13, -410, -411, -412, -413, -414, -415, 2,
+ 38, -418, 17, -130, -421, -422, 7, 17,
+ -419, 45, -427, -428, 7, 22, -431, 17,
+};
+
+static long _vq_ptr1_lsp20_1[] = {
+ -221, -148, -53, -37, -18, -11, -8, 29,
+ -10, 58, 58, -15, -14, 55, 55, -14,
+ 55, 61, -31, -12, -24, -23, 42, 42,
+ -26, 53, 42, 53, -29, 61, -17, -36,
+ -35, 58, 61, 53, 50, -39, 42, -50,
+ 53, -45, -16, -17, -30, -47, 36, -16,
+ 55, 63, -52, 53, 53, -135, -82, -63,
+ -60, -59, 18, 46, -62, 63, 57, -77,
+ -66, 47, -72, -70, 63, 60, 63, 60,
+ -76, -71, 60, 44, 63, -71, -80, 54,
+ 54, 37, -91, -85, 60, -89, -88, 37,
+ 57, 53, 60, -102, 28, -95, -81, -99,
+ -98, 59, 60, -98, 60, 44, -116, -50,
+ -107, 53, 41, -110, 53, 60, -112, 60,
+ 60, -28, -75, -49, -122, -119, 54, -98,
+ -44, -17, -128, -71, -98, -29, 56, 61,
+ -119, -98, 61, -17, -402, -127, -125, -143,
+ -142, -141, -140, 48, 57, 53, 46, -145,
+ 45, -10, 58, 48, -187, -181, -164, -155,
+ -154, 39, 39, -154, -160, -159, 51, 51,
+ -159, 51, -139, 44, -178, -175, -168, 34,
+ -157, -159, 51, -162, -424, -139, 44, -36,
+ 50, 44, -180, 51, 50, -185, 50, 51,
+ -174, -186, 58, -206, -198, -191, 9, -195,
+ -194, 49, 49, -194, 49, -184, -199, -203,
+ -202, 24, 24, -202, 24, 27, -220, -217,
+ -214, -211, 34, -154, 39, 37, -216, 35,
+ 35, -219, 37, 49, 42, -409, -344, -291,
+ -241, -238, -235, -234, -231, 26, 37, -233,
+ 37, 37, 59, -237, 59, 59, -240, 13,
+ 13, -289, -285, -276, -272, -250, -248, 6,
+ -249, 26, -258, -231, -233, -213, -205, -404,
+ -81, 37, -266, -263, -234, -81, -256, -234,
+ 59, -254, -263, 59, -197, -368, 44, -163,
+ -273, -275, 43, 43, -284, -281, -76, 63,
+ -268, -76, 63, -173, 59, 37, 63, 43,
+ 59, -290, 62, -338, -332, -330, -325, -301,
+ -58, -299, -171, 26, -134, -323, -319, -317,
+ -312, -309, -100, 60, -120, -100, 52, 52,
+ -100, -84, 52, -311, -310, -307, -139, -322,
+ -290, 52, 62, -324, 18, -329, -322, 62,
+ -311, 26, -331, 60, -333, -335, 52, -62,
+ 57, 48, 45, -341, 57, -62, 57, -328,
+ -372, -353, -348, 3, -350, -318, -81, 48,
+ -139, -362, -361, -359, -284, 48, 48, -284,
+ -139, 63, -369, -367, -234, 59, -357, 37,
+ -352, -234, 59, 44, -396, -386, -383, -381,
+ -379, 27, 44, 27, 44, -382, 44, 45,
+ 48, 40, -394, -392, -391, -147, -371, 57,
+ 40, 61, -395, 57, -408, -405, -350, -349,
+ -29, 61, -416, -400, -390, -407, -29, 37,
+ 40, -308, -399, -425, -420, -417, -416, 61,
+ 61, -416, 61, 23, -418, -423, 38, 38,
+ -406, -426, -430, -429, 52, 52, -429, 52,
+};
+
+static long _vq_p_lsp20_1[] = {
+ 56, 40, 168, 120, 116, 116, 112, 112,
+ 116, 116, 212, 112, 112, 112, 212, 164,
+ 164, 224, 112, 120, 112, 112, 112, 120,
+ 20, 20, 120, 120, 152, 176, 176, 20,
+ 20, 212, 132, 200, 120, 168, 144, 144,
+ 164, 112, 112, 132, 132, 144, 124, 124,
+ 124, 176, 112, 112, 188, 112, 24, 112,
+ 24, 24, 24, 112, 252, 112, 72, 24,
+ 184, 184, 24, 24, 24, 24, 188, 188,
+ 188, 172, 172, 132, 172, 248, 248, 248,
+ 188, 108, 72, 40, 40, 112, 72, 84,
+ 112, 72, 72, 40, 40, 188, 84, 40,
+ 40, 84, 216, 248, 248, 84, 112, 184,
+ 112, 112, 112, 164, 164, 164, 184, 184,
+ 212, 8, 84, 132, 124, 124, 124, 188,
+ 84, 60, 164, 164, 164, 60, 176, 176,
+ 184, 184, 48, 48, 8, 48, 48, 72,
+ 72, 72, 72, 176, 116, 116, 116, 116,
+ 116, 180, 180, 160, 100, 100, 156, 100,
+ 100, 100, 140, 136, 136, 136, 136, 168,
+ 140, 140, 160, 60, 20, 136, 20, 20,
+ 120, 120, 120, 60, 8, 32, 108, 20,
+ 20, 64, 100, 100, 136, 20, 20, 20,
+ 64, 180, 200, 80, 56, 36, 16, 16,
+ 16, 16, 80, 56, 56, 60, 36, 16,
+ 16, 16, 80, 76, 76, 64, 96, 140,
+ 16, 136, 16, 16, 16, 64, 96, 96,
+ 136, 16, 60, 156, 136, 72, 0, 12,
+ 12, 4, 4, 44, 4, 4, 4, 44,
+ 44, 104, 148, 12, 12, 44, 12, 12,
+ 44, 128, 128, 4, 128, 24, 24, 4,
+ 44, 4, 4, 4, 4, 60, 60, 8,
+ 64, 32, 44, 44, 44, 32, 32, 128,
+ 128, 32, 104, 104, 32, 48, 48, 48,
+ 24, 4, 4, 148, 128, 24, 24, 24,
+ 48, 128, 128, 64, 252, 132, 172, 132,
+ 132, 104, 172, 4, 4, 24, 4, 4,
+ 4, 4, 32, 24, 64, 0, 0, 24,
+ 0, 0, 0, 0, 64, 40, 180, 192,
+ 24, 24, 160, 160, 160, 172, 160, 24,
+ 24, 152, 104, 24, 40, 24, 24, 24,
+ 152, 44, 172, 252, 44, 252, 92, 24,
+ 24, 92, 72, 44, 44, 52, 52, 92,
+ 4, 44, 12, 4, 4, 92, 44, 152,
+ 152, 12, 12, 12, 12, 92, 60, 176,
+ 60, 132, 84, 84, 84, 84, 60, 132,
+ 92, 108, 108, 92, 12, 32, 12, 12,
+ 12, 12, 12, 32, 32, 32, 160, 160,
+ 160, 32, 52, 12, 12, 12, 48, 192,
+ 52, 60, 160, 180, 32, 32, 32, 60,
+ 60, 48, 92, 48, 60, 44, 152, 52,
+ 52, 28, 28, 152, 8, 8, 8, 8,
+ 152, 68, 68, 48, 28, 28, 28, 68,
+ 48, 180, 28, 28, 28, 88, 68, 68,
+};
+
+static long _vq_q_lsp20_1[] = {
+ 88, 140, 252, 144, 200, 164, 212, 116,
+ 212, 232, 232, 164, 212, 220, 220, 212,
+ 220, 244, 200, 220, 212, 120, 168, 168,
+ 120, 212, 168, 212, 176, 244, 224, 120,
+ 200, 232, 244, 212, 200, 188, 168, 188,
+ 212, 144, 164, 224, 176, 220, 144, 164,
+ 220, 252, 188, 212, 212, 116, 40, 188,
+ 252, 112, 72, 184, 228, 252, 228, 248,
+ 240, 188, 172, 188, 252, 240, 252, 240,
+ 252, 188, 240, 176, 252, 240, 188, 216,
+ 216, 148, 184, 72, 240, 212, 112, 148,
+ 228, 212, 240, 184, 112, 240, 108, 248,
+ 216, 236, 240, 216, 240, 176, 124, 188,
+ 184, 212, 164, 184, 212, 240, 212, 240,
+ 240, 152, 132, 252, 164, 188, 216, 216,
+ 224, 224, 184, 188, 216, 176, 224, 244,
+ 188, 216, 244, 224, 92, 176, 60, 180,
+ 184, 212, 116, 192, 228, 212, 184, 212,
+ 180, 212, 232, 192, 196, 232, 200, 204,
+ 140, 156, 156, 156, 140, 168, 204, 204,
+ 168, 204, 176, 176, 100, 200, 204, 136,
+ 136, 168, 204, 160, 48, 176, 176, 120,
+ 200, 176, 200, 204, 200, 232, 200, 204,
+ 108, 232, 232, 140, 76, 56, 36, 56,
+ 80, 196, 196, 80, 196, 64, 76, 76,
+ 80, 96, 96, 80, 96, 108, 168, 196,
+ 96, 156, 136, 140, 156, 148, 136, 140,
+ 140, 156, 148, 196, 168, 244, 32, 228,
+ 252, 52, 12, 236, 44, 104, 148, 104,
+ 148, 148, 236, 44, 236, 236, 44, 52,
+ 52, 248, 132, 252, 172, 128, 104, 24,
+ 104, 104, 128, 44, 104, 64, 108, 60,
+ 108, 148, 104, 128, 148, 108, 64, 148,
+ 236, 60, 128, 236, 176, 192, 176, 60,
+ 172, 148, 172, 172, 236, 128, 172, 252,
+ 64, 172, 252, 192, 236, 148, 252, 172,
+ 236, 248, 248, 52, 228, 252, 44, 0,
+ 72, 24, 160, 104, 224, 72, 104, 172,
+ 24, 40, 248, 240, 84, 248, 208, 208,
+ 248, 40, 208, 192, 180, 240, 176, 104,
+ 248, 208, 248, 72, 72, 44, 104, 248,
+ 192, 104, 252, 240, 228, 228, 208, 72,
+ 228, 192, 180, 52, 228, 72, 228, 152,
+ 52, 236, 44, 12, 44, 160, 108, 192,
+ 176, 108, 132, 176, 252, 192, 192, 252,
+ 176, 252, 108, 132, 148, 236, 92, 148,
+ 152, 148, 236, 176, 44, 52, 192, 160,
+ 32, 108, 176, 108, 176, 160, 176, 180,
+ 192, 160, 180, 52, 228, 160, 92, 228,
+ 160, 244, 180, 228, 160, 52, 44, 160,
+ 176, 244, 152, 60, 92, 52, 176, 148,
+ 160, 132, 92, 208, 28, 68, 152, 244,
+ 244, 152, 244, 92, 244, 68, 152, 152,
+ 176, 208, 68, 88, 208, 208, 88, 208,
+};
+
+static encode_aux_nearestmatch _vq_auxn_lsp20_1 = {
+ _vq_ptr0_lsp20_1,
+ _vq_ptr1_lsp20_1,
+ _vq_p_lsp20_1,
+ _vq_q_lsp20_1,
+ 432, 432
+};
+
+static static_codebook _vq_book_lsp20_1 = {
+ 4, 64,
+ _vq_lengthlist_lsp20_1,
+ 2, 1605458492, 1582935470, 8, 1,
+ _vq_quantlist_lsp20_1,
+ &_vq_auxn_lsp20_1,
+ NULL,
+};
+
+
+#endif
diff --git a/include/vorbis/book/lsp32_0.vqh b/include/vorbis/book/lsp32_0.vqh
index 82c4e775..57c63b1d 100644
--- a/include/vorbis/book/lsp32_0.vqh
+++ b/include/vorbis/book/lsp32_0.vqh
@@ -11,7 +11,7 @@
* *
********************************************************************
- function: static codebook autogenerated by vq/vqbuild
+ function: static codebook autogenerated by vq/somethingorother
********************************************************************/
@@ -20,2200 +20,3274 @@
#include "vorbis/codebook.h"
static long _vq_quantlist_lsp32_0[] = {
- 58, 41, 48, 34,
- 55, 69, 86, 121,
- 159, 246, 57, 31,
- 62, 64, 138, 77,
- 116, 41, 71, 133,
- 171, 48, 140, 59,
- 55, 129, 122, 93,
- 36, 14, 0, 28,
- 32, 29, 66, 90,
- 61, 55, 114, 111,
- 75, 107, 186, 55,
- 78, 90, 109, 175,
- 93, 24, 100, 94,
- 130, 67, 159, 107,
- 88, 53, 39, 63,
- 83, 16, 62, 82,
- 57, 53, 43, 70,
- 61, 58, 93, 77,
- 254, 154, 34, 23,
- 62, 77, 95, 160,
- 103, 35, 109, 79,
- 192, 126, 118, 75,
- 58, 95, 97, 60,
- 86, 12, 53, 28,
- 45, 37, 66, 62,
- 42, 61, 94, 169,
- 156, 45, 50, 108,
- 125, 28, 57, 86,
- 140, 55, 101, 72,
- 107, 144, 139, 133,
- 94, 48, 65, 38,
- 60, 38, 82, 46,
- 60, 29, 74, 112,
- 58, 78, 151, 211,
- 48, 63, 146, 133,
- 38, 110, 74, 93,
- 96, 74, 80, 83,
- 190, 73, 92, 111,
- 126, 77, 70, 72,
- 59, 45, 29, 33,
- 25, 45, 71, 52,
- 45, 58, 126, 83,
- 143, 92, 41, 77,
- 148, 25, 61, 94,
- 105, 84, 91, 72,
- 143, 134, 112, 111,
- 106, 36, 89, 53,
- 63, 77, 32, 32,
- 27, 43, 97, 74,
- 58, 122, 83, 115,
- 121, 45, 136, 92,
- 107, 85, 51, 112,
- 76, 52, 128, 40,
- 235, 92, 64, 38,
- 187, 53, 96, 17,
- 8, 17, 45, 59,
- 39, 51, 67, 73,
- 109, 73, 25, 43,
- 178, 143, 39, 22,
- 142, 117, 37, 87,
- 155, 100, 88, 48,
- 95, 157, 96, 123,
- 68, 78, 84, 55,
- 48, 59, 74, 82,
- 31, 61, 68, 93,
- 77, 89, 58, 129,
- 113, 79, 135, 103,
- 71, 83, 103, 79,
- 127, 39, 107, 70,
- 103, 110, 178, 214,
- 60, 114, 146, 29,
- 43, 13, 50, 55,
- 54, 18, 57, 65,
- 87, 52, 73, 71,
- 89, 146, 174, 43,
- 96, 95, 72, 129,
- 100, 37, 128, 99,
- 88, 111, 120, 165,
- 95, 59, 39, 77,
- 54, 53, 63, 37,
- 33, 65, 75, 102,
- 148, 27, 43, 65,
- 77, 150, 102, 88,
- 125, 93, 51, 125,
- 71, 86, 111, 143,
- 89, 98, 136, 76,
- 73, 125, 148, 31,
- 11, 8, 31, 47,
- 36, 70, 39, 47,
- 38, 71, 87, 132,
- 165, 110, 51, 97,
- 65, 71, 98, 124,
- 135, 43, 80, 131,
- 80, 80, 166, 137,
- 106, 54, 63, 41,
- 70, 51, 55, 65,
- 77, 14, 57, 62,
- 35, 57, 78, 142,
- 181, 133, 64, 107,
- 125, 62, 102, 167,
- 88, 80, 89, 51,
- 129, 184, 107, 116,
- 132, 101, 80, 39,
- 70, 8, 39, 39,
- 7, 38, 58, 146,
- 71, 63, 67, 53,
- 164, 115, 105, 35,
- 103, 123, 42, 70,
- 109, 166, 65, 28,
- 85, 123, 213, 100,
- 79, 80, 55, 52,
- 89, 41, 53, 35,
- 47, 51, 74, 74,
- 80, 80, 52, 90,
- 108, 173, 164, 51,
- 60, 124, 68, 78,
- 134, 68, 131, 46,
- 93, 128, 149, 125,
- 111, 97, 93, 29,
- 24, 19, 44, 51,
- 20, 44, 71, 121,
- 33, 91, 81, 70,
- 114, 169, 104, 81,
- 41, 78, 147, 43,
- 71, 75, 109, 117,
- 165, 61, 73, 142,
- 106, 73, 40, 70,
- 77, 43, 44, 53,
- 65, 47, 44, 38,
- 48, 77, 95, 150,
- 130, 106, 90, 128,
- 88, 63, 84, 72,
- 136, 92, 78, 91,
- 172, 109, 118, 157,
- 64, 149, 83, 27,
- 60, 12, 18, 32,
- 54, 24, 68, 94,
- 69, 69, 93, 98,
- 132, 93, 105, 83,
- 117, 48, 85, 52,
- 93, 181, 101, 33,
- 82, 78, 150, 113,
- 92, 74, 82, 31,
- 65, 64, 55, 40,
- 39, 84, 55, 59,
- 62, 75, 117, 179,
- 132, 65, 36, 74,
- 105, 47, 98, 166,
- 91, 79, 94, 100,
- 117, 83, 99, 108,
- 106, 67, 137, 46,
- 72, 50, 25, 34,
- 31, 27, 58, 66,
- 65, 62, 94, 88,
- 142, 142, 65, 110,
- 110, 34, 64, 117,
- 77, 71, 146, 87,
- 224, 60, 56, 71,
- 73, 128, 32, 35,
- 87, 26, 56, 23,
- 45, 42, 44, 36,
- 80, 54, 58, 132,
- 252, 67, 29, 11,
- 196, 66, 36, 86,
- 71, 121, 128, 121,
- 89, 131, 136, 89,
- 94, 57, 137, 38,
- 77, 9, 46, 49,
- 38, 42, 35, 34,
- 58, 77, 46, 82,
- 136, 201, 80, 25,
- 120, 65, 72, 67,
- 134, 110, 115, 72,
- 146, 95, 95, 174,
- 57, 91, 58, 72,
- 100, 13, 44, 54,
- 22, 69, 93, 31,
- 90, 32, 92, 154,
- 104, 125, 74, 131,
- 94, 92, 86, 55,
- 114, 149, 64, 93,
- 167, 91, 161, 46,
- 111, 97, 85, 77,
- 8, 31, 51, 111,
- 14, 40, 65, 77,
- 47, 60, 82, 102,
- 133, 109, 128, 102,
- 180, 25, 34, 55,
- 103, 119, 135, 47,
- 92, 147, 52, 90,
- 142, 84, 29, 60,
- 115, 14, 47, 59,
- 21, 51, 71, 81,
- 54, 87, 136, 112,
- 82, 113, 99, 77,
- 79, 130, 78, 124,
- 68, 101, 114, 66,
- 172, 42, 77, 101,
- 102, 119, 96, 70,
- 87, 22, 18, 31,
- 24, 47, 93, 117,
- 53, 71, 173, 59,
- 110, 20, 63, 82,
- 228, 51, 21, 19,
- 76, 129, 63, 83,
- 76, 103, 193, 104,
- 108, 84, 84, 21,
- 94, 49, 30, 24,
- 29, 56, 123, 90,
- 41, 107, 105, 101,
- 13, 44, 75, 173,
- 157, 106, 23, 32,
- 191, 51, 20, 22,
- 70, 30, 87, 132,
- 112, 155, 194, 107,
- 115, 19, 19, 33,
- 39, 68, 132, 36,
- 95, 105, 45, 71,
- 85, 29, 60, 105,
- 162, 34, 90, 37,
- 44, 115, 87, 27,
- 56, 83, 163, 122,
- 39, 64, 113, 213,
- 60, 43, 95, 57,
- 76, 159, 94, 27,
- 160, 135, 27, 27,
- 6, 25, 50, 75,
- 47, 115, 126, 27,
- 101, 60, 30, 31,
- 53, 66, 84, 101,
- 174, 167, 137, 103,
- 167, 30, 17, 34,
- 127, 85, 31, 31,
- 75, 102, 55, 70,
- 58, 56, 83, 79,
- 84, 29, 94, 69,
- 31, 104, 79, 25,
- 63, 85, 185, 55,
- 35, 62, 146, 105,
- 94, 21, 72, 59,
- 194, 32, 45, 70,
- 105, 155, 40, 30,
- 16, 31, 56, 63,
- 63, 142, 58, 29,
- 74, 57, 97, 31,
- 130, 23, 43, 64,
- 145, 133, 217, 183,
- 143, 19, 20, 36,
- 106, 135, 27, 25,
- 110, 61, 57, 92,
- 23, 50, 101, 176,
- 31, 55, 115, 56,
- 61, 108, 37, 35,
- 87, 87, 112, 115,
- 85, 94, 160, 201,
- 68, 52, 83, 31,
+ 131,
+ 131,
+ 132,
+ 120,
+ 132,
+ 134,
+ 138,
+ 124,
+ 133,
+ 111,
+ 132,
+ 125,
+ 155,
+ 156,
+ 157,
+ 130,
+ 146,
+ 126,
+ 131,
+ 129,
+ 129,
+ 135,
+ 142,
+ 133,
+ 140,
+ 142,
+ 141,
+ 126,
+ 151,
+ 129,
+ 133,
+ 132,
+ 128,
+ 125,
+ 123,
+ 130,
+ 150,
+ 143,
+ 141,
+ 142,
+ 124,
+ 118,
+ 145,
+ 132,
+ 139,
+ 144,
+ 133,
+ 127,
+ 126,
+ 120,
+ 126,
+ 111,
+ 130,
+ 118,
+ 145,
+ 135,
+ 133,
+ 138,
+ 139,
+ 125,
+ 139,
+ 128,
+ 131,
+ 115,
+ 137,
+ 124,
+ 129,
+ 111,
+ 128,
+ 131,
+ 131,
+ 117,
+ 138,
+ 122,
+ 123,
+ 127,
+ 127,
+ 109,
+ 128,
+ 120,
+ 130,
+ 126,
+ 128,
+ 134,
+ 140,
+ 113,
+ 138,
+ 132,
+ 136,
+ 138,
+ 133,
+ 119,
+ 137,
+ 139,
+ 142,
+ 121,
+ 132,
+ 111,
+ 135,
+ 134,
+ 141,
+ 146,
+ 141,
+ 128,
+ 131,
+ 136,
+ 134,
+ 118,
+ 135,
+ 135,
+ 125,
+ 110,
+ 142,
+ 124,
+ 130,
+ 132,
+ 135,
+ 140,
+ 143,
+ 134,
+ 145,
+ 142,
+ 134,
+ 121,
+ 139,
+ 134,
+ 136,
+ 135,
+ 149,
+ 150,
+ 153,
+ 128,
+ 142,
+ 122,
+ 126,
+ 129,
+ 139,
+ 111,
+ 134,
+ 127,
+ 123,
+ 107,
+ 128,
+ 132,
+ 139,
+ 115,
+ 124,
+ 123,
+ 126,
+ 111,
+ 133,
+ 135,
+ 148,
+ 144,
+ 134,
+ 123,
+ 130,
+ 121,
+ 137,
+ 125,
+ 138,
+ 118,
+ 138,
+ 119,
+ 130,
+ 125,
+ 127,
+ 113,
+ 132,
+ 119,
+ 134,
+ 119,
+ 134,
+ 127,
+ 137,
+ 124,
+ 135,
+ 118,
+ 116,
+ 126,
+ 140,
+ 140,
+ 131,
+ 121,
+ 133,
+ 115,
+ 128,
+ 114,
+ 153,
+ 130,
+ 140,
+ 135,
+ 131,
+ 109,
+ 128,
+ 125,
+ 123,
+ 123,
+ 130,
+ 120,
+ 125,
+ 131,
+ 139,
+ 124,
+ 142,
+ 125,
+ 137,
+ 119,
+ 118,
+ 82,
+ 109,
+ 107,
+ 122,
+ 130,
+ 135,
+ 122,
+ 136,
+ 110,
+ 118,
+ 119,
+ 122,
+ 114,
+ 132,
+ 125,
+ 122,
+ 121,
+ 138,
+ 125,
+ 138,
+ 138,
+ 126,
+ 115,
+ 140,
+ 127,
+ 137,
+ 132,
+ 123,
+ 109,
+ 125,
+ 120,
+ 148,
+ 146,
+ 143,
+ 124,
+ 127,
+ 131,
+ 143,
+ 128,
+ 147,
+ 125,
+ 134,
+ 136,
+ 145,
+ 131,
+ 136,
+ 143,
+ 172,
+ 158,
+ 149,
+ 141,
+ 73,
+ 79,
+ 89,
+ 105,
+ 104,
+ 97,
+ 120,
+ 131,
+ 109,
+ 95,
+ 127,
+ 136,
+ 133,
+ 133,
+ 149,
+ 131,
+ 133,
+ 125,
+ 116,
+ 106,
+ 197,
+ 89,
+ 136,
+ 146,
+ 182,
+ 98,
+ 130,
+ 134,
+ 127,
+ 83,
+ 104,
+ 101,
+ 128,
+ 117,
+ 121,
+ 106,
+ 164,
+ 143,
+ 137,
+ 149,
+ 102,
+ 91,
+ 111,
+ 121,
+ 137,
+ 96,
+ 116,
+ 111,
+ 148,
+ 116,
+ 153,
+ 132,
+ 139,
+ 133,
+ 159,
+ 123,
+ 127,
+ 125,
+ 155,
+ 137,
+ 99,
+ 73,
+ 92,
+ 97,
+ 139,
+ 115,
+ 147,
+ 135,
+ 117,
+ 80,
+ 102,
+ 101,
+ 139,
+ 148,
+ 148,
+ 132,
+ 153,
+ 121,
+ 119,
+ 114,
+ 118,
+ 116,
+ 143,
+ 141,
+ 97,
+ 78,
+ 101,
+ 104,
+ 145,
+ 134,
+ 162,
+ 136,
+ 133,
+ 138,
+ 116,
+ 104,
+ 83,
+ 80,
+ 98,
+ 110,
+ 135,
+ 131,
+ 128,
+ 143,
+ 149,
+ 135,
+ 132,
+ 116,
+ 51,
+ 81,
+ 80,
+ 106,
+ 131,
+ 112,
+ 111,
+ 119,
+ 118,
+ 127,
+ 142,
+ 148,
+ 111,
+ 79,
+ 102,
+ 102,
+ 132,
+ 130,
+ 126,
+ 138,
+ 126,
+ 120,
+ 113,
+ 128,
+ 116,
+ 109,
+ 138,
+ 139,
+ 102,
+ 81,
+ 105,
+ 108,
+ 113,
+ 113,
+ 149,
+ 134,
+ 124,
+ 113,
+ 123,
+ 105,
+ 107,
+ 77,
+ 98,
+ 100,
+ 148,
+ 155,
+ 166,
+ 156,
+ 142,
+ 119,
+ 122,
+ 108,
+ 122,
+ 81,
+ 103,
+ 101,
+ 139,
+ 136,
+ 148,
+ 142,
+ 175,
+ 122,
+ 125,
+ 141,
+ 166,
+ 111,
+ 130,
+ 153,
+ 102,
+ 95,
+ 115,
+ 126,
+ 122,
+ 85,
+ 109,
+ 107,
+ 154,
+ 146,
+ 126,
+ 135,
+ 199,
+ 111,
+ 119,
+ 125,
+ 125,
+ 85,
+ 111,
+ 109,
+ 166,
+ 121,
+ 141,
+ 155,
+ 122,
+ 102,
+ 119,
+ 115,
+ 148,
+ 135,
+ 137,
+ 151,
+ 132,
+ 92,
+ 114,
+ 110,
+ 113,
+ 89,
+ 109,
+ 115,
+ 162,
+ 111,
+ 121,
+ 142,
+ 147,
+ 148,
+ 154,
+ 151,
+ 122,
+ 114,
+ 113,
+ 113,
+ 107,
+ 100,
+ 135,
+ 139,
+ 135,
+ 89,
+ 108,
+ 104,
+ 136,
+ 130,
+ 145,
+ 92,
+ 130,
+ 88,
+ 106,
+ 102,
+ 140,
+ 126,
+ 133,
+ 155,
+ 186,
+ 119,
+ 131,
+ 145,
+ 114,
+ 108,
+ 134,
+ 126,
+ 112,
+ 81,
+ 109,
+ 109,
+ 109,
+ 126,
+ 135,
+ 121,
+ 130,
+ 100,
+ 120,
+ 124,
+ 128,
+ 88,
+ 113,
+ 110,
+ 147,
+ 135,
+ 124,
+ 116,
+ 107,
+ 83,
+ 106,
+ 108,
+ 118,
+ 93,
+ 113,
+ 113,
+ 118,
+ 103,
+ 128,
+ 120,
+ 158,
+ 147,
+ 140,
+ 124,
+ 129,
+ 113,
+ 152,
+ 155,
+ 97,
+ 86,
+ 112,
+ 118,
+ 214,
+ 78,
+ 94,
+ 102,
+ 168,
+ 133,
+ 134,
+ 104,
+ 145,
+ 161,
+ 110,
+ 114,
+ 111,
+ 102,
+ 139,
+ 146,
+ 110,
+ 93,
+ 97,
+ 111,
+ 136,
+ 113,
+ 158,
+ 158,
+ 171,
+ 129,
+ 107,
+ 118,
+ 107,
+ 124,
+ 114,
+ 115,
+ 108,
+ 108,
+ 123,
+ 119,
+ 176,
+ 98,
+ 105,
+ 146,
+ 100,
+ 128,
+ 153,
+ 158,
+ 111,
+ 127,
+ 123,
+ 113,
+ 228,
+ 75,
+ 99,
+ 112,
+ 129,
+ 103,
+ 103,
+ 126,
+ 134,
+ 123,
+ 172,
+ 148,
+ 218,
+ 79,
+ 136,
+ 148,
+ 117,
+ 102,
+ 111,
+ 137,
+ 223,
+ 147,
+ 110,
+ 154,
+ 119,
+ 102,
+ 108,
+ 119,
+ 125,
+ 107,
+ 147,
+ 153,
+ 189,
+ 177,
+ 95,
+ 87,
+ 142,
+ 138,
+ 135,
+ 73,
+ 136,
+ 255,
+ 160,
+ 152,
+ 142,
+ 111,
+ 123,
+ 163,
+ 144,
+ 156,
+ 95,
+ 105,
+ 230,
+ 91,
+ 104,
+ 116,
+ 144,
+ 136,
+ 149,
+ 85,
+ 145,
+ 84,
+ 126,
+ 142,
+ 223,
+ 101,
+ 118,
+ 134,
+ 118,
+ 77,
+ 93,
+ 98,
+ 171,
+ 83,
+ 139,
+ 126,
+ 120,
+ 133,
+ 145,
+ 86,
+ 216,
+ 106,
+ 145,
+ 154,
+ 88,
+ 91,
+ 154,
+ 146,
+ 196,
+ 181,
+ 136,
+ 163,
+ 127,
+ 135,
+ 155,
+ 142,
+ 168,
+ 159,
+ 140,
+ 111,
+ 122,
+ 151,
+ 161,
+ 146,
+ 129,
+ 147,
+ 183,
+ 140,
+ 121,
+ 111,
+ 104,
+ 103,
+ 82,
+ 88,
+ 148,
+ 129,
+ 144,
+ 133,
+ 154,
+ 166,
+ 153,
+ 178,
+ 172,
+ 151,
+ 89,
+ 85,
+ 106,
+ 114,
+ 117,
+ 123,
+ 161,
+ 128,
+ 164,
+ 94,
+ 148,
+ 175,
+ 158,
+ 107,
+ 104,
+ 141,
+ 121,
+ 90,
+ 122,
+ 118,
+ 97,
+ 146,
+ 144,
+ 123,
+ 121,
+ 133,
+ 138,
+ 169,
+ 101,
+ 111,
+ 144,
+ 111,
+ 85,
+ 115,
+ 137,
+ 124,
+ 199,
+ 96,
+ 117,
+ 115,
+ 135,
+ 130,
+ 171,
+ 211,
+ 184,
+ 89,
+ 108,
+ 105,
+ 219,
+ 71,
+ 120,
+ 137,
+ 183,
+ 96,
+ 125,
+ 108,
+ 128,
+ 72,
+ 148,
+ 134,
+ 120,
+ 131,
+ 166,
+ 196,
+ 144,
+ 162,
+ 130,
+ 63,
+ 120,
+ 106,
+ 116,
+ 139,
+ 158,
+ 79,
+ 135,
+ 152,
+ 197,
+ 123,
+ 129,
+ 143,
+ 133,
+ 130,
+ 146,
+ 173,
+ 146,
+ 142,
+ 156,
+ 91,
+ 190,
+ 78,
+ 139,
+ 161,
+ 129,
+ 85,
+ 154,
+ 123,
+ 136,
+ 127,
+ 157,
+ 109,
+ 200,
+ 68,
+ 123,
+ 142,
+ 135,
+ 148,
+ 188,
+ 208,
+ 159,
+ 103,
+ 96,
+ 130,
+ 170,
+ 78,
+ 143,
+ 159,
+ 185,
+ 94,
+ 151,
+ 169,
+ 100,
+ 110,
+ 155,
+ 127,
+ 146,
+ 100,
+ 113,
+ 108,
+ 184,
+ 118,
+ 149,
+ 161,
+ 140,
+ 94,
+ 109,
+ 104,
+ 108,
+ 154,
+ 141,
+ 126,
+ 195,
+ 164,
+ 110,
+ 127,
+ 99,
+ 118,
+ 113,
+ 110,
+ 81,
+ 139,
+ 147,
+ 148,
+ 109,
+ 130,
+ 152,
+ 190,
+ 135,
+ 80,
+ 122,
+ 128,
+ 106,
+ 139,
+ 171,
+ 140,
+ 162,
+ 61,
+ 124,
+ 121,
+ 114,
+ 162,
+ 151,
+ 127,
+ 247,
+ 105,
+ 97,
+ 129,
+ 128,
+ 157,
+ 116,
+ 65,
+ 63,
+ 134,
+ 152,
+ 146,
+ 213,
+ 198,
+ 63,
+ 99,
+ 118,
+ 62,
+ 151,
+ 130,
+ 58,
+ 85,
+ 148,
+ 139,
+ 124,
+ 131,
+ 132,
+ 66,
+ 113,
+ 102,
+ 100,
+ 101,
+ 119,
+ 113,
+ 126,
+ 89,
+ 161,
+ 225,
+ 116,
+ 133,
+ 115,
+ 99,
+ 97,
+ 135,
+ 116,
+ 80,
+ 124,
+ 119,
+ 179,
+ 155,
+ 101,
+ 86,
+ 158,
+ 179,
+ 119,
+ 82,
+ 175,
+ 63,
+ 130,
+ 133,
+ 158,
+ 121,
+ 89,
+ 96,
+ 155,
+ 147,
+ 171,
+ 59,
+ 153,
+ 166,
+ 83,
+ 61,
+ 87,
+ 136,
+ 129,
+ 133,
+ 65,
+ 214,
+ 117,
+ 25,
+ 158,
+ 101,
+ 65,
+ 154,
+ 228,
+ 243,
+ 53,
+ 128,
+ 115,
+ 156,
+ 162,
+ 70,
+ 122,
+ 145,
+ 97,
+ 77,
+ 39,
+ 131,
+ 147,
+ 156,
+ 144,
+ 126,
+ 67,
+ 108,
+ 113,
+ 108,
+ 126,
+ 190,
+ 61,
+ 127,
+ 119,
+ 112,
+ 117,
+ 144,
+ 74,
+ 64,
+ 148,
+ 0,
+ 159,
+ 118,
};
static long _vq_lengthlist_lsp32_0[] = {
+ 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,
};
static long _vq_ptr0_lsp32_0[] = {
-1, -2, -3, -4, -5, -6, -7, -8,
- 9, -10, 22, -12, 22, -14, 35, 137,
- -17, -18, -19, -20, -21, -22, 22, -24,
- 52, -26, -27, 22, 35, 62, -31, 35,
- -33, 123, 216, -36, 52, -38, 123, 220,
- -41, -42, -43, -44, -45, 17, 62, 52,
- -49, 52, 62, -14, 195, 92, -55, -56,
- 35, -58, -59, -60, 41, 123, -47, 75,
- -63, -64, -67, -68, -69, -70, 17, 216,
- 121, -74, -75, 17, -77, -29, 182, -80,
- -81, 35, 174, -84, 121, 195, -87, -88,
- 174, 220, -91, -92, -93, -94, -95, -96,
- 12, -98, 20, 52, 46, 41, -49, 194,
- 131, -103, -107, 137, -109, -110, 12, 131,
- 153, 17, -115, 113, 131, -118, 62, -50,
- 75, 73, -123, -124, -125, -70, -120, 235,
- 216, -100, -126, -132, 52, -130, -135, -136,
- -137, -75, 149, 73, -141, 62, -143, -144,
- 105, -70, -138, -148, -149, 73, 150, -152,
- 105, 149, -155, -156, -157, -158, -159, -160,
- -161, 1, 41, 1, 35, -166, -167, 9,
- 12, -170, -171, 41, -173, -174, -175, 89,
- 97, -178, 97, 208, -181, -182, -183, 41,
- 85, -186, -187, -188, -189, 1, 89, -192,
- -193, 41, 153, 50, -197, -198, 35, -195,
- 41, 213, -203, -198, -199, -206, -207, -208,
- 17, 208, -211, -212, 185, -214, -215, 17,
- 185, -218, 121, -204, 208, -72, -219, -60,
- -222, 208, -227, -228, -229, -190, 156, 194,
- -233, 97, 150, -236, 89, 97, -239, -240,
- -168, -234, 161, -113, -241, -246, -247, 1,
- 194, -250, -189, 156, 148, -190, -252, -256,
- 161, -254, -259, -198, -257, 174, -260, -264,
- -265, -266, -267, 32, 49, 26, -268, -270,
- 208, 234, -275, -276, -277, -278, -279, 121,
- -215, -271, -283, 185, 229, -286, -287, 121,
- -289, 169, 174, 73, -293, -294, 105, 150,
- -297, -298, 218, -300, 17, 148, -303, -256,
- 76, 218, -307, -216, -304, 213, -311, -312,
- -313, -314, -315, 12, 218, 68, -319, 161,
- 50, -322, 17, -324, 17, -309, -320, -328,
- -329, -330, -331, -332, -333, -334, -335, 65,
- 67, 115, 67, -340, -341, -342, -343, -344,
- 3, -346, 20, -348, 9, 76, -351, -352,
- -353, -354, 3, -356, 91, -358, 67, -360,
- 91, 124, -363, -364, -365, 3, 91, -368,
- 9, -326, -366, -369, 209, -374, 4, 20,
- 76, -378, -379, -380, -381, -382, 3, 201,
- -385, -386, 34, 193, -389, 34, 50, -392,
- -393, -394, 19, 44, -397, 34, -395, -400,
- 34, -398, -403, -404, -405, -406, -407, -365,
- 68, 52, -411, -412, 22, -408, -415, 52,
- -417, 20, -419, 20, 131, 51, -423, -424,
- -425, 3, -427, -428, -429, -430, -431, 3,
- -433, -425, -421, 22, 3, 52, 166, -440,
- -441, 22, 67, -444, -36, 4, -445, 67,
- -38, 68, 166, 201, 201, -454, -455, -456,
- -12, 44, 123, 35, 209, -451, -457, -464,
- -465, -466, 22, -462, 115, -470, 67, -467,
- -337, 75, -475, -476, -477, -478, -479, 34,
- 19, -482, -483, 19, -485, -486, 25, 129,
- 129, -490, -491, -492, -493, -494, -495, -496,
- 1, -498, 25, 75, -501, -502, -503, 9,
- 129, -506, 25, 51, 25, -506, -507, -512,
- 41, 89, 89, 238, -517, -518, -519, -247,
- -510, 25, -508, 194, -242, -499, 177, 44,
- -529, -530, -531, -532, -533, 9, 34, 129,
- -527, -538, -539, -483, 44, -542, -483, -540,
- -543, -546, 91, -544, 148, -550, -551, -552,
- -553, -554, -555, -556, 1, -548, -269, 49,
- -559, -562, 65, -560, -565, -566, 35, 9,
- -563, -533, -568, -572, 65, -360, -570, 129,
- -577, 1, 9, 35, -581, -582, 65, 137,
- 161, 35, -587, -512, -574, 123, -591, -592,
- -593, 12, 20, -596, -368, 156, 12, 137,
- -601, -583, 141, -110, -602, 155, 12, -558,
- 141, 85, -611, -612, -613, -614, -615, -616,
- -617, -618, -619, -620, 14, 78, -621, -609,
- 105, -626, 30, 78, -629, 73, -623, -632,
- 78, 169, -635, -636, -637, 73, 161, 150,
- -641, -642, -643, -644, 14, -646, 191, -648,
- 14, 202, 218, -652, -653, 30, -655, 30,
- -657, -658, 202, 85, 150, -662, -663, -664,
- -665, -666, -667, 27, -669, -670, -671, 73,
- 113, -674, 78, 50, 113, -678, -679, -680,
- 27, -675, -603, -607, -681, -684, -687, -688,
- 12, 155, -637, -659, -230, -694, -688, -609,
- -697, 73, -695, -700, 46, -103, -703, -704,
- -705, -706, -707, -708, -709, 30, -711, 30,
- 105, -714, 30, 85, -717, -149, -715, 94,
- -721, 78, -723, -724, 73, 6, -727, 78,
- -725, -730, -731, -732, -709, -728, -735, 46,
- 73, -655, -733, -738, 78, 94, -743, 30,
- -739, -746, -747, 46, 43, -744, 86, -752,
- -753, -754, 30, -756, -757, 78, -659, -760,
- -761, 105, -763, 110, 174, 110, -767, -768,
- -724, 86, -771, 78, 113, -774, 110, -776,
- 73, -778, -779, -780, -781, -782, -783, 27,
- 86, 27, -735, 85, -789, -790, -791, 57,
- 94, 94, -795, -796, 78, -787, -797, -800,
- -801, -802, -803, -804, 57, 126, -807, 81,
- 70, -810, 81, -808, 51, -811, -813, -816,
- -807, 6, 231, -820, 231, 245, -823, -824,
- -825, -826, -827, -828, 30, -711, -784, 6,
- -833, -834, 57, -831, -727, -835, 6, -754,
- -838, -840, 158, -844, -845, -846, 14, -828,
- -841, 228, -851, -852, -853, -854, -855, 30,
- -857, 191, 228, -791, -848, -860, -863, 191,
- -861, -790, 4, 134, 6, -870, 57, -868,
- -873, -874, -875, -876, -877, -878, -804, 201,
- 158, -805, 70, -882, 110, -886, -887, -793,
- 193, -890, 126, 142, -893, -884, -660, -251,
- -241, 94, 70, -900, 142, 158, -903, 94,
- -152, -898, -763, 70, 244, -910, -763, -907,
- 220, -764, -911, -912, -914, -918, -919, -920,
- -921, -922, -923, -924, 46, 62, -927, 52,
- -100, -916, 62, 131, -933, -934, 62, -936,
- 73, 113, -939, -940, -941, -942, -141, 49,
- -765, -943, -230, -948, -139, -268, 110, -949,
- -139, -230, -950, -725, -955, -958, -959, -960,
- -961, -962, 62, -950, -956, 174, 220, -29,
- -964, -968, -969, -972, -973, -974, -975, -924,
- -970, -978, 94, 139, -981, 46, -978, -976,
- -985, -986, 110, 126, -989, -990, -991, -992,
- -993, -994, -995, -996, -934, 156, 124, -1000,
- -1001, -1002, 22, 131, -1005, -1006, 100, -998,
- -1009, -962, 49, 142, -1003, -1010, -1013, -1016,
- 35, -1018, -412, 76, -1021, 113, 115, -1024,
- -1025, -1026, -1027, -22, 6, 148, -1016, -1029,
- 158, -1011, 124, -1034, -901, -304, -1039, -1040,
- 100, 49, -468, -1041, 220, 227, -1047, -1048,
- -1049, 36, -1051, -1052, 36, 67, -1055, -98,
- 84, 36, -1057, -120, -338, 49, -1061, -1064,
- -1065, -1066, 36, 100, 100, -1062, -1071, -1072,
- -1073, 52, -1069, -1076, -1077, -419, -1074, 52,
- 100, -1082, 52, 100, -1073, 76, -1087, 46,
- -1089, -1090, -1091, -1092, -1093, -1094, 52, -1096,
- 20, 100, 20, -1085, -1101, -1102, 100, 142,
- 84, -1106, -1107, -1108, -1109, -1110, -1111, 20,
- 139, 131, -1104, -1097, 84, -1118, -1119, 36,
- -1116, 131, -1123, -1124, 100, 84, -866, 76,
- -1129, -1130, -1066, -1127, -1133, 217, 233, -1136,
- -1067, -1131, 217, -1140, -1141, 126, -1143, -1067,
- 19, 131, 145, -1148, -1149, 46, 131, -1152,
- -924, 84, -1153, -987, 19, -1156, -1159, -1160,
- -1161, 113, 126, -1157, 100, 131, 126, -1168,
- -1169, -1170, -1171, -1172, -1173, -1174, -807, -1163,
- 146, 139, -1179, -805, -1175, -1180, 139, 139,
- 146, 139, -880, 92, -1189, -1190, -1185, 76,
- 142, 206, 206, -1191, -1197, -1198, -1199, 100,
- 142, 206, 4, -1204, 142, 158, -1207, -1205,
- -1202, 233, -1138, -1208, -1213, -1214, -1215, -1216,
- -1217, -1218, 4, 65, -1221, 20, -1223, -1224,
- 36, -1226, -1219, 76, 137, -1230, 113, -1232,
- -98, 147, 36, -1236, -1237, 113, 4, 155,
- -1241, 35, -1243, 65, -605, 75, -672, -1245,
- -583, -1247, 4, -1252, -1253, -1254, -1255, 12,
- -96, -1250, 113, 124, -1261, -667, -1191, 147,
- -1230, -483, -1267, 46, 131, -1270, -1271, -98,
- -1265, 4, -1273, -937, 19, 155, -1276, -1280,
- -937, -1278, -1281, -1284, -1285, -1286, -1287, -1288,
- -1289, 27, -1282, -1292, -1293, 43, 147, -1296,
- -1297, 43, 81, -1298, -608, -1166, -608, -1056,
- -1221, -1303, -1293, -1305, 50, -1310, -1096, -1308,
- -1311, -1087, -1312, -1316, -1317, -1318, -1319, -1320,
- -1321, -1322, -1323, 0, 24, 24, 24, -1328,
- -1329, -1330, 0, 88, -1333, 72, -1335, -1336,
- 72, 160, 96, -1340, -1341, -1342, -1343, -1344,
- 0, 128, -1347, 23, 23, 96, -1351, -1352,
- 23, 141, -1355, -1356, -1329, -1126, -725, -1358,
- -1361, 39, -1359, 39, -1343, -1357, -1056, 6,
- 88, -1370, -1371, -1372, -1373, -1374, 0, 23,
- -1367, -1378, -1379, -1380, 23, 151, -1383, 39,
- -1056, -1383, -1384, 167, -1389, 151, 199, -1392,
- -1393, -1394, -1385, -1365, 11, -1396, -1399, 103,
- -1397, -1402, 103, -1400, -1405, 103, 160, -1408,
- 135, -1410, -1411, -1412, -1413, -1414, 8, 183,
- -1417, 104, -1403, -1420, 104, -1422, -1423, -1424,
- -1425, -1426, 8, 72, -1429, 40, -120, -1432,
- -1433, 8, -1435, 40, -1437, -1438, -1439, 24,
- -1441, -1442, 40, 88, 40, 72, -1447, -1448,
- -1449, 24, -1451, -1452, -1433, -1430, 120, 120,
- -1439, -1308, 176, -1460, -1461, -1462, -1463, -1464,
- 71, 103, -1333, -1457, 92, -1470, -1471, -1472,
- 71, 135, -1405, 50, -1475, 168, -1479, -1480,
- 40, -1482, -1483, 40, 75, -1486, 152, 11,
- -1333, -1487, 152, 72, -1493, -1494, -1495, 152,
- 184, -1498, 183, -1489, -1499, -1502, -1503, 7,
- -1505, 119, -1500, -1508, -1509, 55, -1511, -1512,
- 119, -1498, 221, 226, -1517, -1518, -1519, -1520,
- -1521, -1522, -1523, -1524, -1525, -846, -597, 111,
- -1529, 30, -602, -1532, -1533, 47, 111, -1536,
- 143, -1530, -754, 156, -1541, -1542, -1543, -1544,
- 47, 143, 144, 236, 236, -1550, -1551, -1552,
- -1553, -1554, 15, 95, -1557, 31, -817, -1560,
- -1561, 16, -1558, -1562, -1565, -1566, -1567, 14,
- 111, -1555, 193, 84, -648, -1571, -1575, 31,
- 95, 14, -1579, -1580, -1581, 47, 6, 31,
- -1585, -1586, -1587, -1588, 16, 79, -1582, -1592,
- -1533, -1590, 79, 6, -1597, -1598, -1588, -1595,
- -1601, -1602, 31, -1599, -1605, 95, -1603, -1608,
- -1609, -1561, 141, 79, -1557, 11, -1613, -1616,
- 31, 6, 144, -1583, -1617, 95, -1623, -1624,
- -1625, -1626, 47, 127, -1629, 111, 201, -846,
- -1570, 30, -1527, -386, 207, -1638, -1639, -1640,
- -1641, 111, 175, -1635, 127, -1646, 15, -1648,
- -1649, -1629, 156, 191, -1653, -1654, 175, 191,
- 207, -1658, -1659, -863, 76, 228, -1663, 207,
- -1660, -863, -1664, 215, -1669, -1670, -1671, -1672,
- -1673, -1554, 11, 96, 31, -1678, 16, 31,
- 76, 15, 159, 127, -1685, -1686, -1687, -1688,
- -1689, 16, 88, -1692, -1693, 47, -1695, 79,
- -1680, -1698, -1699, -1700, 47, 128, -1703, 127,
- 145, -1706, -1707, 79, -1104, -1703, 19, 47,
- -1710, -1714, -1715, -1352, -1712, 145, -1352, -480,
- -1721, 23, 159, -1724, -1725, 79, 19, -1395,
- -1726, -1728, -1731, -1732, -1733, 96, 33, -1734,
- -1737, -1683, 11, -1738, -1739, -1742, -1743, -1744,
- 47, 127, -1747, -1627, -1740, 175, -1751, -1389,
- -1748, -1752, -1755, -1756, 159, -1753, -1654, -251,
- 193, -1762, -1763, -1764, -1765, -1766, -1767, -1439,
- -361, -1770, -1771, 56, 196, 88, 56, 136,
- -1777, 31, -1779, -1780, -1781, -1782, 48, -1784,
- 56, -1784, 49, -1786, -1789, -1784, -1787, 64,
- 64, 104, -1795, -1792, -1790, 148, 124, -1800,
- -1801, -1802, -1803, -1804, -1588, -1798, 79, 31,
- -1602, -1805, 112, -1812, -1813, 56, 64, -1816,
- -1817, 16, -1813, 49, -1819, -1822, 31, -1820,
- -1825, -1826, -1771, -1823, 144, -400, -1831, -1832,
- 79, -1829, -1835, 88, -1837, -1838, -1839, -1840,
- -1841, 16, 166, -1676, -1842, -1846, -1841, 76,
- -1695, -1847, -1851, -1852, 16, 56, -1807, -1849,
- 67, -1858, -1326, -1856, 79, 67, -1863, -1864,
- -1865, -1866, 15, 96, -1676, -1861, -1871, -1872,
- 16, -1869, -1873, -1876, -1877, -1817, -447, 56,
- -361, -1882, -1883, 31, -1885, 56, 112, -1888,
- -1889, -1890, -1891, 31, 176, -1894, 64, 112,
- -358, -1898, -1899, -1602, -1896, 3, 144, -1901,
- 64, -1546, -1903, 176, -1909, -1910, -1911, -1912,
- -1913, -1914, -1915, 32, 120, -1918, 64, -1920,
- -1921, -1922, 48, -1924, 64, -1906, 64, 200,
- -1929, -1930, -1931, -1932, 32, 97, -1935, -1936,
- -1937, 80, 208, -1940, 200, -1925, -237, -1941,
- 200, -1946, -1947, -176, -1943, 210, 208, -1927,
- 196, -1954, -1955, -1956, -1957, -1958, -1959, 32,
- -1961, 15, 32, -1964, -1965, -1966, 63, -1968,
- 95, 95, -1971, -1972, -1973, 15, 95, 32,
- -1977, -1891, -1952, 112, -450, -1982, -1983, -1984,
- -1985, -1986, -1975, -1952, 64, 63, -1991, -1992,
- -1993, -1994, 63, 144, -1895, 70, -1937, -1997,
- -1923, 75, -1999, -2002, -2003, -1895, 150, 223,
- 144, -2010, -2011, -2012, 80, -1995, -997, -2016,
- -2017, -2018, -2019, -2020, 32, 97, -2023, 80,
- -2014, 185, -2027, -237, -2024, 185, -2031, -2032,
- -2033, -2034, -2035, -648, -2028, 65, -653, 67,
- -2039, -2042, -2043, 14, 65, -754, -2044, -1786,
- 239, -2050, -2051, -2052, -2053, -2054, -2055, -2056,
- 14, 105, -2059, 95, -1621, -2047, -2061, -620,
- 76, -624, 65, 143, 14, 169, 91, 144,
- 95, 169, -2075, -2076, -2077, -1621, 19, -2078,
- -2081, 223, -2057, -2079, -2083, -376, -2087, 14,
- -374, -2090, -316, -2088, 14, 235, -2095, -2096,
- -2097, 216, -2099, 144, -2101, 144, 19, -2104,
- -2105, -2106, -2057, -2102, -2107, 223, 105, -2108,
- -2113, -2114, -2115, 63, -2111, 218, -2116, -2120,
- -2121, -279, 134, -2124, -2114, 51, 115, -2126,
- -287, -2127, 179, -287, -2130, 115, -2135, -2136,
- 121, -2133, 121, -2140, -2141, -2142, 121, -2137,
- 121, 115, -2147, -2148, -2136, 179, 236, -1102,
- -2153, -2154, 216, 236, -2007, -2151, -2157, -2160,
- -2154, 179, -2122, 216, -2165, -2166, -2136, -2162,
- -2169, 216, 220, -2172, 121, -1547, -2145, 244,
- -2177, -2178, -2179, -760, -2125, -2174, 169, -2184,
- 174, -2186, -2187, -2057, -2181, -2188, -1547, 100,
- 236, -2191, -2193, -2196, -2197, -2198, -2199, -2200,
- -2201, -2202, -2203, 74, 140, -2206, -2207, 13,
- -2209, -2210, 61, 74, -2213, -2211, 134, 172,
- -2217, 165, -2214, -2220, -2221, -2222, -2223, 61,
- -2225, 122, -468, -2228, 61, -2230, 140, -2232,
- 154, -2234, -2235, -2236, 61, -2226, -2239, -2240,
- -2241, 130, -2145, 154, -1856, -2246, -2247, 61,
- 130, -2250, 13, -2244, -2253, -2254, -2255, -2256,
- -2257, 37, 45, -2260, -2258, -2251, 154, 45,
- -2258, -2261, 181, -2268, -2269, -2270, 106, -2272,
- -2273, 122, -2265, 148, -2277, -2278, -2279, -2280,
- 37, -2282, 90, 130, -2285, -2286, 5, -2288,
- 37, 125, -2291, -2292, -2250, -2275, 173, 204,
- -2297, 125, -2130, -2262, 51, 37, -2303, -2304,
- -2305, 5, -2307, -2308, -2305, -2300, 36, -2312,
- 37, -2310, -2315, -2316, -2317, 5, -2313, 172,
- -2318, -2322, -2323, 37, -2133, -2310, -2327, -2328,
- -2329, 37, -2331, 106, -2333, -2334, 90, 154,
- -2331, -2325, -2337, 37, -2338, -2342, -2343, 90,
- 5, -2346, -2347, 58, 106, -2350, 90, -421,
- -2353, -2354, -2355, -2356, -2357, -2358, 2, 21,
- -2361, 18, 115, 18, 21, 18, 21, 101,
- -2369, -2370, -2371, -2372, -2373, -2312, 65, 53,
- 45, -2378, -2379, -2380, -2381, 21, 170, -2384,
- 98, -2386, -2375, -2374, 98, -2387, -2391, -2376,
- -559, 49, -2393, -2396, 45, -2384, -2394, 101,
- -2401, -2402, -2403, 45, -2398, -2406, -2399, -2145,
- 122, -2410, 114, -1856, -2413, 170, -1856, -2416,
- -2417, 114, 67, -2420, 122, -2422, 140, -2424,
- 98, -2426, 106, -2418, -2429, -2430, -2431, -2432,
- -2433, 37, -2427, 90, 98, -2438, -2439, -2440,
- 53, 36, 38, -2441, 166, -2444, -2447, -2448,
- -2449, 53, -2445, -2452, 58, -2454, -2384, 65,
- -2426, -943, 154, -2460, 58, 157, -2463, -2464,
- -2465, -2466, -2467, -2468, -2469, -2470, 29, 109,
- -2203, -2457, -2473, 109, 29, -2478, 69, 109,
- -2481, -2482, -2483, -2484, -2485, 21, 101, -2488,
- 45, -2474, -2491, 21, -2376, 196, -548, -2496,
- -2497, -2498, -2470, 179, -2499, 114, -2503, -2504,
- 45, 134, -2505, -2508, -2509, 21, -2511, -2512,
- 29, -523, -2515, -2512, -527, 133, -2519, 101,
- -2516, -2522, -2523, -2358, 134, -2485, -2524, -2359,
- -2526, 101, 114, -2532, -2533, 133, 230, -2536,
- 214, -2528, -2539, -2540, -2541, -2542, 13, -2544,
- -2545, -2546, -2547, -2548, 29, -234, 29, -2548,
- -898, 117, -2504, -2552, 148, -2558, -2258, -2556,
- 173, 150, -2563, -2564, -2565, -2566, 29, 109,
- -2569, 74, 44, -2572, -2573, 13, -2211, -2570,
- 44, -2442, -2576, -2578, -2581, -2582, -2583, -2584,
- 29, 117, -2587, 109, -2579, -2590, 69, -2588,
- -2590, -507, 173, -2596, -2597, -2301, 49, -2598,
- -2263, -2599, -2603, 69, 133, -2606, -2607, -2608,
- 13, 77, 33, -2612, 77, 205, -2615, -2616,
- -2617, -2618, -2619, -2250, -2601, 139, -2241, -2621,
- 171, -2626, -2210, 100, -2627, -2553, -2628, -2630,
- -2633, -2246, -2577, -2631, 139, -2638, 77, -2640,
- 77, 117, -2612, -2636, -2624, -2646, -2647, -2648,
- -2649, -2207, 51, 117, 117, -2654, -2655, 74,
- -2651, 51, -2657, -2660, -2661, 61, -2663, 61,
- -2658, 171, -2667, -2668, -2669, -2670, -2671, -2672,
- -2673, -2674, -2675, 10, 66, -2207, -2665, -1234,
- -2681, -2682, 10, 165, -2685, 74, -2663, -2679,
- -2676, -2687, -2691, 77, -2689, -2694, -2695, -2696,
- 74, -2692, -2699, -2700, 140, 172, -2703, -2704,
- 61, 165, -2707, -2708, -2709, 82, 165, -2697,
- -2713, 140, 166, -2716, -2663, 68, -2719, 77,
- -2721, -2722, -2723, -2724, 13, -2576, -2727, 66,
- 130, -2730, -2731, -2676, 36, 130, -2735, -2676,
- -2732, 82, -2739, -2740, 82, 165, 138, 82,
- 130, -2746, -2747, 5, -2749, 138, 172, -2752,
- -2753, -2754, -2755, 13, 51, -2710, -2756, 139,
- -2761, 130, 68, -2764, -2765, -2766, 66, 68,
- -1292, -2770, -2761, 36, -2773, 138, -2634, -1110,
- -2775, -2778, -2779, -2780, 5, -2608, -2776, -2784,
- 125, -2724, -2782, 66, 66, -2790, 50, 66,
- -2793, 77, 43, -2796, -2797, -2798, -2727, -2794,
- 149, -2802, 99, 4, 66, -2806, 125, -2808,
- -2788, -2803, -2811, 130, -2813, -2814, -2815, 10,
- -2817, 85, -2819, -2709, -2809, -2820, -2823, 86,
- 140, -2821, -2827, -2828, -2829, 82, 178, 149,
- -2749, -2825, 5, -2836, -2837, -2838, -195, 67,
- -2841, -2791, 76, 138, -2845, 116, -2838, 38,
- 20, -2850, -2851, 85, -2848, -2854, 116, -2856,
- -2857, -2851, 20, 86, -2861, 116, 38, -2858,
- -2865, -2866, -2867, -2868, -2869, -2870, -2871, -195,
- -2863, -2872, 99, -2876, 66, 99, -2879, -2880,
- -1396, 68, 36, -2882, -2885, -2886, -2887, 66,
- -2889, 99, 178, 149, -2883, -2894, 99, 141,
- -2892, -2898, -2899, -2900, -2901, 11, 141, 68,
- -2905, 66, -1367, 68, -2909, 85, -2911, 6,
- -2876, 4, -2862, -2913, -2915, -2918, -2919, 50,
- 66, -2922, -2923, -2924, -2925, 10, -2927, -2928,
- 66, 51, -2909, -2929, -2882, -2934, 10, -2936,
- -817, -2932, -659, 51, 4, -2942, -2943, -2944,
- -2925, -2940, -2945, -2948, 93, -2946, -2951, -2952,
- 6, -2949, 164, 10, 6, -2953, -2959, -2960,
- -2961, -2962, 6, 82, 86, -2911, -2881, -2968,
- 10, -2934, -2576, 36, -2973, -2974, 82, 85,
- -2971, -2978, -2851, -2976, 149, 195, -2983, -2984,
- -2985, -2986, -2675, -2979, 164, -2737, -2987, -2990,
- -2993, -2925, -2991, -2994, -2928, 243, 217, -3000,
- -3001, -3002, 82, 164, 85, -2998, 134, -3008,
- -2727, -3006, -3003, 206, -138, 190, -3013, -3016,
- -3017, -3018, -3019, -2901, -1193, 171, 33, 93,
- -1613, -3021, -3027, 33, -3029, -2887, 107, -3032,
- -3033, -3034, -3035, 33, 93, 93, -3039, -2691,
- 171, -3040, -3041, -3042, -3045, -3046, 61, -3043,
- -2690, 42, -3025, 206, -3053, 164, 171, -3054,
- -3057, -3058, -3059, -3060, -3061, -3062, 58, -3064,
- -3065, 60, 139, -3068, -2334, -3066, -3069, 58,
- -3073, 59, -3075, -3076, 60, -2230, -3070, 206,
- -3081, 108, 190, -3084, -3085, -3086, -3087, 5,
- -2749, -3082, -3091, -3092, -3093, 60, 217, 146,
- -3097, -3098, 138, -2750, -3095, -3102, 108, 180,
- -3105, -3106, 5, -3108, -3109, -2334, 139, -3110,
- -2761, -3111, -2744, 43, -3115, -2806, -3116, 190,
- -3121, -3122, -3123, -3124, -3125, -3126, 54, 60,
- -3129, -3130, 59, 102, -3133, 60, 212, -3136,
- 59, 102, -3139, 60, -3141, -3142, -3143, -3144,
- 5, 116, 60, -3148, -3149, 54, -3151, -3152,
- -3153, 60, 132, -2861, -3082, 187, -3157, -3160,
- -3161, -3162, -3163, -3106, -3158, 60, -3167, 90,
- 5, 157, -3171, -3144, -1176, 125, 157, 163,
- -3177, -3178, -3179, -3180, 59, -3172, 212, -3167,
- -3157, 125, -3187, 60, -3184, -3190, -3191, -3165,
- -807, -3781, -3192, -3194, -2806, 146, -1297, 60,
- -3198, -3202, -3203, 5, 54, -3206, -3062, -3200,
- 60, 58, -3211, -3212, 54, 102, -3215, -3216,
- 60, 108, -3213, 26, -3219, -3222, -3223, -3224,
- 54, -3220, -3557, -3225, -3227, -3230, -3231, -3212,
- 219, 163, 212, -3169, -3234, -3238, 162, -3233,
- 211, 203, -3243, -3244, 60, 58, -3247, -3216,
- -3240, -3250, -3251, 90, 203, -3254, -3255, -3256,
- -3257, -3258, 102, 132, -3261, -2854, -3252, -3262,
- -3259, -3240, 190, -3268, -3269, 83, -3271, -3272,
- 59, 180, -3275, -3276, -3277, -3259, -3266, 189,
- 180, -3282, -3283, 178, -3278, 42, -3287, -3288,
- 138, -3285, 178, -3292, 83, -3294, -2843, -3289,
- -3295, 83, -3299, -3002, -3296, 197, -3283, 212,
- -3279, -3303, 187, -3308, -3309, -3310, -3311, -3312,
- 108, 188, -2713, -3306, -3317, 82, 140, -3315,
- -3321, -3322, -2709, -3266, -3325, -3326, -2964, 26,
- 198, -3313, -3327, -3330, -2854, -3331, 188, 116,
- -3337, -3288, -3333, -3338, -3103, -3339, -3343, -3344,
- -3345, -3346, -3258, 241, -3312, 118, -3349, -3352,
- 189, -3350, 116, -3353, -3357, -3280, -3006, 107,
- -3361, -3362, -3363, -3364, -2802, -3359, -3367, 83,
- -3369, -3370, 59, -3372, -3373, 83, -3365, -3376,
- 132, -3378, -3379, 125, -3374, -3382, -3383, -3384,
- 132, 211, -2843, -3385, -3098, 42, -2744, -3389,
- -3365, -3394, -3395, 28, 50, 149, -2844, -3226,
- 118, -3402, -3173, 107, -3405, -3406, 132, 42,
- -3409, -3410, -3411, -3412, -3413, -3414, 44, -3416,
- -3417, -3418, -3419, -3420, 75, -3407, -3423, 83,
- -3421, -3426, 83, 149, -3426, -3424, 182, 189,
- -3433, -2831, -3429, -3436, -3437, 182, 194, -3399,
- -3434, 190, -3443, -3444, -3445, -3446, 50, 150,
- 85, 116, -3451, -3452, 85, 116, -2831, -3441,
- 118, -3439, -3456, -3458, -3461, -3462, -3463, -3464,
- -457, 42, 118, -3465, -3469, 118, -3471, -3472,
- 44, -3474, 118, -3476, 107, -3478, 118, 38,
- -3481, -527, -3479, -3482, -3485, -3486, 107, 189,
- -3489, -3490, 182, 26, -3487, -3491, -3493, -3496,
- -3497, -3498, -3499, 70, 86, 194, 116, -3466,
- -3494, -3506, -3507, -3508, -3509, 102, -3504, -3510,
- -3513, 118, 116, -3511, -3517, 102, -3515, 118,
- -3521, -3437, -2657, -3501, -1184, -3526, -3279, -1112,
- -3501, -3527, -2794, -3532, -3533, 189, 108, -3534,
- -3530, -3538, -3539, 118, 224, -3542, 134, -3536,
- -3545, -3546, -3547, -3548, -3549, -3550, -3551, -3552,
- 26, -3554, 28, 38, 42, 26, -3559, 28,
- -3561, 42, -3563, -3564, -3565, -3554, -3543, -3479,
- -2636, -3568, -3571, -3572, -3573, 28, 102, -3576,
- -3479, -3095, 118, -3580, 102, -3574, -1102, 116,
- -3585, -3586, -3327, -3582, 166, 83, -3591, -3592,
- 42, 68, -3595, 59, 83, 68, -3599, -3600,
- -3555, -2794, -3603, -3604, -3605, -3606, 38, 107,
- -3609, 42, -3611, -3606, 51, 102, -3615, 102,
- -3613, 51, 38, -3620, 102, -3622, 107, -3618,
- -3625, -3626, -3627, -3628, 42, -3630, 59, -3623,
- -3620, -3631, 189, -3636, 42, 182, -3633, -3640,
- -3641, -3269, -3638, -3642, -3645, 132, -3647, -3648,
- -3258, 217, 132, 116, -3653, -3654, -3655, -3656,
- -3592, -1201, 179, 54, 102, -3662, -3663, -3389,
- -3658, 211, -3620, -3664, 134, -3670, -3671, -3672,
- 59, 211, -3668, -3620, -2122, 225, -3679, 54,
- 102, -3580, -3676, 211, -3685, -3686, -3687, -3688,
- -3689, -3690, 54, 118, -3252, 107, -3695, 163,
- -3693, -3698, -3233, -3696, -3699, -3241, -3700, -3021,
- -3095, -3706, 42, 51, -3301, -3707, -3709, -3712,
- -3713, -3714, -3715, -3716, -3717, -3573, -3486, -3720,
- 38, 44, -3723, 38, -3464, -3457, -527, -3726,
- 68, -507, -3731, 26, -3733, 28, -2576, -3736,
- -3737, -3738, -3739, 28, 38, 50, -3740, -3744,
- -457, -3742, -3745, -3748, -3749, -3750, -3751, -3752,
- 28, -3746, -3753, 50, -3754, -3552, -3756, -3760,
- -3761, -3762, -3752, -3758, -3765, 83, 68, -3768,
- 28, 92, -3426, 43, -3773, -3774, -3775, -3776,
- 75, 38, -3765, -3777, -53, -3731, -3725,
+ -9, -10, -11, -12, -13, -14, 5, 14,
+ -17, -18, -19, -20, -21, 68, -23, 78,
+ -25, 78, 225, -28, -29, 77, 76, -15,
+ 121, 14, 77, 29, -14, 234, 79, -40,
+ -41, 68, 31, -44, -45, 29, 126, 31,
+ -37, -50, -51, -52, 77, 117, 29, 234,
+ -57, -58, -59, 78, 29, -62, 225, -55,
+ 175, -66, 154, -68, -69, 5, -71, 79,
+ 223, -74, 223, -72, 234, -78, 221, -76,
+ 14, -38, -79, -84, 225, 248, 207, -88,
+ -89, -90, -91, -92, -93, -94, 248, 225,
+ -97, 23, 123, -100, 78, -97, 179, 204,
+ -105, -106, 248, -108, 166, -110, 142, 166,
+ 248, -114, 142, 30, 242, -118, -119, -120,
+ 248, 124, -123, -124, 22, -102, -108, 123,
+ 117, -128, -131, -132, -133, -134, 14, 22,
+ 14, 22, 158, -140, 22, 57, -143, -144,
+ -145, -146, 11, -138, -136, 179, -151, -152,
+ -153, -154, -155, -156, 6, -149, -159, 23,
+ -157, -162, -163, 11, -160, -159, 153, -168,
+ 7, 11, -171, 78, -173, -156, -166, -174,
+ -177, -178, -179, 77, -166, -25, -30, -182,
+ -29, -183, 76, -100, 153, -190, -191, -192,
+ -193, 7, 62, -42, -188, -196, -199, 77,
+ -42, 222, 14, -204, -205, 11, -201, -45,
+ 179, -208, -211, -212, -213, -214, -15, -166,
+ -140, -215, 31, -220, -221, -222, -223, -224,
+ 7, 23, -227, -228, -229, 7, 91, 45,
+ -233, -234, 23, -217, 246, -238, -239, -240,
+ 11, -236, -243, 23, -241, -243, -244, -246,
+ 45, 91, -251, -252, 77, 187, -255, -256,
+ 142, 30, -259, -260, -240, -128, 179, -311,
+ -262, 158, -267, -268, -269, -97, -265, -272,
+ 23, -270, -275, 91, -273, -230, 222, -280,
+ -281, -15, -278, 219, -214, -4309, -283, -97,
+ 158, 45, -97, 156, -291, -294, -295, -296,
+ -297, -298, -299, -300, -301, -302, -303, 5,
+ 207, -306, 1, -308, -309, 81, 153, -1488,
+ -310, -314, -315, 79, -312, 81, -319, 68,
+ -321, -322, -323, 5, 61, -326, 79, 223,
+ -329, -330, 90, -309, 153, 90, -335, 81,
+ -337, 81, 1, -340, -341, -342, 14, -344,
+ 22, -346, -347, -348, -349, -350, -351, 22,
+ 26, 26, -353, -332, 1, -358, 28, 219,
+ -330, -359, 28, -364, -15, -361, 1, -368,
+ 81, 179, -371, -372, -373, -374, -375, -376,
+ 5, -378, 5, -380, -381, 68, 234, -38,
+ -382, 77, 79, 81, -29, 115, -391, -392,
+ -368, 179, -393, -396, -397, -398, -399, 5,
+ 207, -402, -403, -404, -405, 4, -37, -408,
+ -409, -410, 14, 45, -413, 22, -406, -416,
+ -417, 4, 147, -420, 51, -418, -423, -424,
+ 4, -421, -399, -425, -429, -430, -431, -417,
+ -427, 28, -435, 90, 76, -438, 22, -436,
+ 158, 4, 156, -444, 5, -446, -447, -448,
+ -449, -450, -451, -452, 5, -410, -442, 31,
+ -457, -458, 68, 147, 171, -459, -461, -398,
+ -460, 115, -369, -410, -138, -468, -471, 77,
+ 153, 77, 31, 77, -472, -478, -479, -480,
+ -481, -482, -483, 4, -485, 90, -487, -488,
+ 81, -476, -518, -489, 147, -494, -485, -492,
+ -497, -498, -499, -500, 5, 31, -503, 90,
+ -495, -506, -507, -508, 81, 58, -511, 126,
+ -504, -514, -515, -516, 90, -512, -1313, 222,
+ -519, -522, -474, -278, -476, 85, 76, -526,
+ -529, -530, 68, -471, -527, -532, -535, 77,
+ -533, -538, -539, -199, -536, -540, 158, -522,
+ -525, 147, -545, -548, 126, -550, -551, -552,
+ 68, 77, 147, -556, 77, -558, -559, 7,
+ -554, 147, -563, -564, -565, 81, -567, -568,
+ 90, 119, -571, 81, -561, -574, 81, 163,
+ 28, 170, -579, -580, 163, -582, 119, 126,
+ -585, -586, -587, -588, -589, -590, -591, -592,
+ 138, 163, -595, -503, -545, 189, -599, 163,
+ 219, -602, -571, -600, -603, -503, -604, -606,
+ -609, -610, -611, 79, -607, 100, 251, 123,
+ -4276, -102, 254, -620, -621, 81, -599, -618,
+ -625, -626, -627, -628, -629, 145, 245, 249,
+ -633, -634, 77, -631, -621, -283, 254, -640,
+ -641, 77, -638, -611, -642, -644, -647, 79,
+ -649, -650, -651, -652, -653, -69, -645, 132,
+ -657, -658, 68, 125, -611, -659, 179, -641,
+ -662, -666, -667, -500, 179, -668, -742, 236,
+ -671, 79, 236, -676, -677, -658, -674, -488,
+ 113, 77, 79, -488, -680, -686, -687, -688,
+ -592, -684, 223, -692, 145, -689, -695, -696,
+ -692, 233, 175, -690, 236, -700, -703, -647,
+ -701, 236, -670, -705, -662, -688, -706, 158,
+ -711, -714, 221, -712, -717, -718, -719, -720,
+ -721, -722, 149, -724, 140, 194, -727, -728,
+ 146, 164, -715, 149, 140, -734, -735, -736,
+ 140, -738, 152, 192, -741, -723, 150, -359,
+ -743, 140, -747, -748, 149, 196, -751, 194,
+ -149, -754, -755, -756, -757, 7, 71, 146,
+ -761, -762, -728, -752, 119, -766, -767, 146,
+ 119, -770, 91, 72, -773, -774, 71, 123,
+ -777, 91, 170, -780, 84, -768, 179, 196,
+ -785, -786, -787, -788, -789, 71, 208, -792,
+ 170, -782, -792, 254, -795, -798, -799, -800,
+ 149, -796, -803, 170, 130, 254, -805, -808,
+ -809, -810, -731, -806, 224, -814, 170, 222,
+ -817, -780, -815, -818, -1191, -98, 246, -824,
+ 170, -822, -827, -828, 142, -825, -829, 149,
+ 164, -834, -835, -836, -837, 142, -839, 141,
+ 146, -114, 255, 238, -845, -846, -847, -848,
+ 142, 91, 166, -852, -853, -854, -855, 141,
+ 166, -777, -842, -860, -861, 146, -858, -862,
+ -865, -866, 146, -856, 187, -870, -871, 141,
+ -873, 142, 91, -114, -868, -878, 141, 142,
+ 239, -882, -850, 237, -883, -886, -887, -888,
+ -889, -890, 142, 146, 142, 238, 238, -896,
+ -897, -898, 84, -900, -866, -884, -903, 196,
+ -905, 161, 199, -908, -909, 164, -674, -912,
+ -913, -914, -915, 142, -910, -767, -680, 236,
+ 164, -922, -923, -861, -919, -924, -850, 236,
+ 196, -930, -931, -932, -933, -934, -935, -879,
+ 158, 166, -939, -940, 91, -936, -941, -944,
+ -228, -820, -942, -919, 66, -950, -872, -945,
+ -948, -952, -953, -956, -240, -711, -951, 219,
+ -961, -962, -963, 142, -965, -140, -959, -966,
+ -969, -351, -948, 133, 45, -970, -975, -976,
+ 164, 219, -979, 166, -981, -982, -112, -977,
+ -985, -986, 161, 66, -987, -990, 199, -988,
+ -993, -994, -995, 71, -997, -229, -991, -1000,
+ 4, 67, -559, 230, 119, -1006, -1007, -1008,
+ -1000, 66, -230, -1009, -249, -1011, 255, -1016,
+ -1017, -1018, 4, -1014, -770, -1019, 166, -1024,
+ -1025, -1026, 163, 149, 28, 190, -799, -1069,
+ 224, 230, -4266, -1033, -1035, -1038, -1039, -1040,
+ -1041, -1042, 4, 84, -1045, -358, 230, -1048,
+ -1049, 84, 33, 33, -1053, -1054, 84, 117,
+ -1057, -1058, -1059, -1060, -1061, 4, -1063, 28,
+ 51, -1066, -351, 222, -1067, -1291, -1068, 234,
+ -1073, 4, -1075, 90, -1063, 219, -1079, -1080,
+ 84, -1082, 248, -1084, 161, 166, -1087, -1088,
+ 84, -1090, -969, 100, 234, 115, -979, -936,
+ 148, -1098, 161, -1179, -1096, -1100, -1103, -1104,
+ -1105, -1043, -1101, 219, -1107, -1110, -1111, -1112,
+ -1113, -1061, -1108, 147, -3249, -1115, 219, -1018,
+ -1118, 45, -1123, -1124, 4, -1120, -1127, -1088,
+ 190, 147, -1064, 115, 156, -1134, 84, -1132,
+ -1137, 84, 166, -1135, 4, -1142, -124, -1093,
+ -1064, 148, -108, -1145, 51, -1150, -1151, -1152,
+ -1153, -1154, -1155, -1156, -1157, -1158, -1159, 138,
+ 159, -1162, 150, -1147, 159, -1166, -592, -1163,
+ 147, -1170, -1171, 150, 189, -1174, 221, -1176,
+ -1177, 150, -1168, -1294, -1178, -1180, -1183, 85,
+ -1185, -1186, 159, -593, -1181, 94, -1191, 220,
+ -1193, -1194, -1195, -1196, -1197, -1198, 150, 94,
+ -1201, 159, -1188, -1204, -1205, -1206, 10, 122,
+ 100, -1207, -1145, -1212, -1213, 85, -1208, -1210,
+ -1132, 150, 100, -1220, -1221, -1222, 150, 188,
+ -1225, 184, -1145, -1228, -1205, 171, -1226, 156,
+ 94, -3676, 67, -1234, -327, -1235, 184, -1240,
+ -1241, -1242, -1243, -1244, -1245, -1246, -1247, -1248,
+ -1249, 10, 50, -1252, 39, -1237, -1255, -1256,
+ 20, -1253, -3240, -1168, -1259, -1262, -1263, 13,
+ 20, 20, -1264, -1260, 94, -1267, 94, 184,
+ -1273, -1265, 197, 34, -1277, 24, 222, -1280,
+ -1281, -1282, -1283, -1284, 10, 24, -1287, 85,
+ -1278, 20, 8, 85, -1293, -1294, 8, 53,
+ -1288, -1298, 10, 85, -1301, -1302, -1303, 10,
+ -1305, -1306, 10, 50, -1309, -1284, -1296, -1132,
+ -1313, 188, -1207, -1316, 171, -1234, -1317, -1320,
+ -1321, -1322, -1323, -1324, -1325, -1326, -1327, -1328,
+ -1329, 10, 13, 10, -1265, -1318, 21, 10,
+ -1337, -1338, -1339, 20, 24, -1333, -1343, 21,
+ -1341, -1346, 13, -1348, 20, 10, -1351, 159,
+ 20, 24, 163, -1356, -1357, -1358, -1359, -1159,
+ -1344, 163, -1160, 190, -1365, -1366, 13, 148,
+ -1160, -1367, 147, 163, 94, -1374, -1375, -1298,
+ -1370, 190, -1379, -1380, 13, 148, -1201, -1381,
+ -1385, -1386, 21, -580, -1383, 201, -1391, -1392,
+ -1340, 219, 163, -1396, -1397, -1398, -1399, -1400,
+ -1401, -1402, -1403, -1404, 138, -1159, -1393, -1406,
+ -1488, 228, -1409, -1412, -1413, -1414, 13, -1410,
+ -1075, 245, 191, -1420, 81, -1075, -1363, -1424,
+ -1425, -1426, -1427, -1159, 122, 79, 79, -1428,
+ -1433, -1434, 13, 90, -1437, -1438, -1439, -1440,
+ 13, 184, -1443, 94, -1445, -315, -1431, 156,
+ -3249, 173, -1451, -315, 228, -1452, -1455, -1456,
+ -1457, -1458, -592, -1453, 230, -647, 148, 79,
+ 122, -1429, 148, -1430, -1466, 223, -593, -1468,
+ -1473, -1474, 184, -1476, -326, 122, -1477, -1225,
+ 67, -1480, -1483, -690, -1481, -1484, -1487, -120,
+ 100, -1485, 184, 148, -1493, -1494, -308, -2224,
+ -987, -1496, -1497, -1500, -1501, -1502, -1503, 26,
+ 43, -306, -1498, 173, -306, -1507, 122, -1512,
+ -333, 173, -1513, -1516, -1517, 96, 230, -3766,
+ -1518, 173, -1523, 26, 1, -1526, -1527, -1528,
+ -1529, -1530, -1531, -1532, -368, 67, 43, -358,
+ -1533, -1536, -1539, 21, -1537, -1519, -1540, -1542,
+ 40, -1546, -1547, -1548, -353, -1543, -1549, -1552,
+ -356, -1550, -1534, -1553, -1535, -1541, -1555, 180,
+ -356, 180, 250, -1564, -1565, -1566, -1420, -1562,
+ -1567, 90, 163, -1572, -1573, -1574, -1575, -1576,
+ 81, -1449, 230, -1580, 21, -1582, 90, 96,
+ -1585, -1586, 81, 28, -1589, 21, -1578, -1592,
+ -1589, -1590, 33, -1596, 96, -1593, -1599, -1600,
+ -309, 173, 228, -1602, -1605, -1606, -1607, -1608,
+ 90, -1603, -1587, -1003, 109, -1583, 109, -1596,
+ -1614, -1616, 90, 191, -1621, 81, 219, -1624,
+ -1625, 21, -792, -1622, -580, -1627, 201, -987,
+ -1633, -1634, -1635, -1636, -1637, 20, -1639, 21,
+ 96, -1631, -1643, -1644, -1645, -1263, -1641, 39,
+ -1264, 245, -1649, -1652, -1653, -1263, -1650, -1656,
+ 39, -1658, 21, -1647, 180, 40, -1663, -1664,
+ -1665, -1666, -1667, 0, 43, -1670, 96, -1003,
+ -1673, -1674, 26, 255, 96, -1675, -1264, 236,
+ 118, -1682, -1683, -1263, -883, 236, 35, -1685,
+ -1687, -1690, -1691, -1263, -674, 233, -4276, -680,
+ 110, -1698, 21, -1700, 21, -1696, -1703, 10,
+ 40, 13, 39, -1701, -1674, -697, 124, -1712,
+ -1713, -1714, -1715, -1440, -1709, 50, 184, -1716,
+ -1199, -1719, -1721, -1724, -1715, -4377, 219, 254,
+ -1517, -1727, -1729, -1725, 109, 233, -1735, 248,
+ -1737, -1738, 184, 236, -1223, 75, -1307, -1741,
+ -1745, -1746, -1747, -1503, -1743, -1748, -1731, 233,
+ -1622, 26, -1752, 53, -1757, 248, 184, 124,
+ 50, -1762, -1763, -1764, -1765, -1766, -1767, -1768,
+ -1769, -1770, -1771, -1332, 55, -1754, -674, -1776,
+ -1777, -1667, -1774, 109, -2592, -1779, -1781, -1648,
+ -1780, -1782, -959, -1786, 21, -1787, -1791, -1589,
+ -674, 66, -1594, -1793, -1795, -1798, -1799, 20,
+ -1796, -1802, -1639, 75, -1920, 109, 75, -1808,
+ -1809, -1810, -1811, 18, -1813, -1814, 18, 34,
+ -1658, -1806, -1817, -1820, -1821, -1822, 20, -1818,
+ 34, -1009, -1827, -1334, -1825, -1815, -1828, -1830,
+ -1833, 20, 33, -1816, -2602, -1831, -1837, 52,
+ -1841, -1799, 237, 75, -1836, -1843, 255, -1848,
+ 16, 18, -1846, 21, 163, 33, -1855, -1856,
+ -1857, -1858, 0, 26, 16, -1862, -1863, -1864,
+ -1865, -1667, 255, -1661, 237, -1674, -1685, 248,
+ 26, 40, 110, -1876, -1877, 88, 248, 245,
+ -1881, -1882, -1883, -1884, -1885, -1886, -1887, -1888,
+ 16, -1890, 17, 27, -1893, 17, 88, -1896,
+ -1897, 16, -1874, -1900, 17, 18, -1803, -1904,
+ -1890, -1902, 40, -1905, -1909, -1910, -1911, -1912,
+ -1913, -1914, 17, 118, -1844, 110, -1917, 159,
+ -1923, 233, -1921, -1961, -1922, -1924, -1647, 236,
+ -1929, -1814, 113, 110, -1931, -1890, 233, 171,
+ -1937, -1938, -1757, -1934, 113, -1942, -1943, 171,
+ 110, -1946, -1913, -4381, -1944, 72, -1949, -1952,
+ 171, -1954, -1955, -1956, -1957, -1958, -1959, -1960,
+ 8, 171, -1950, 233, -1340, -1949, -1329, -1965,
+ -1967, -1970, -1971, 8, 18, -1332, 167, -1968,
+ 105, -1978, -1811, 72, -1979, -1982, -1811, -1980,
+ -1974, -1983, -1985, -1988, -1989, -1990, 18, 163,
+ 18, -1994, -1995, 20, -1976, -1998, -1999, 21,
+ 105, -2002, -2003, 24, 34, -1394, -2000, 144,
+ -2009, -2010, -1848, -2007, -2011, -2057, 82, -2007,
+ -2017, 104, -2019, -2020, -2021, 8, -2023, 8,
+ 44, -1992, -2015, 36, -2029, -2030, -2031, -2032,
+ 8, 36, 34, -2036, -2037, 24, -2026, -2040,
+ 34, -1979, -2041, -2044, -2045, -2046, 34, -2042,
+ -2049, 186, 240, -2052, -2053, -2054, -2055, -2056,
+ -2057, 88, -2059, 104, -2061, -2062, -2063, 8,
+ 18, -2066, -2063, 169, 36, -2057, 254, -2072,
+ -2073, -2074, -2075, -2076, -2077, 16, 171, -2080,
+ 104, -2082, -2057, 72, -2083, -2086, 104, -2088,
+ 88, -2090, 17, -2084, -2086, -2091, 89, 17,
+ -2097, 18, 18, 86, -2101, -2102, -2103, -1265,
+ -2099, -2106, 171, -2108, 171, -1309, -3769, -2104,
+ 255, -2114, -2115, 39, 42, 80, -2119, -2120,
+ 8, 41, -2123, -2124, -2125, -2126, 8, 39,
+ -1293, -4107, 65, -2130, -2116, -2131, -2133, -2136,
+ -1285, 99, 86, -2140, -2115, -2138, 169, 42,
+ 95, -1256, -2144, 24, -2146, -2150, -2151, -1914,
+ 80, -2152, -2155, 171, -2157, -2158, -2159, -2160,
+ -2161, -2120, 255, -2162, -1914, 231, -2167, -2168,
+ -2120, -2165, 42, -1252, -2169, -1675, -2175, -1914,
+ 231, -2094, -4102, -2177, 255, -2182, -2183, 17,
+ 183, -2186, -2187, 17, 99, -2190, 18, 99,
+ -2193, 8, 139, -2121, -2194, -2196, 18, -2127,
+ -2197, 40, -2203, -2204, -2126, -2200, -2205, -2208,
+ -2209, -2210, 8, -2068, -2206, -2214, 36, 41,
+ -2063, -2212, -2219, -2220, -1294, 139, 95, -2224,
+ 2, 95, -2136, -4251, 82, -2228, 37, -2229,
+ -2231, -2234, -2235, -2236, -2237, -2238, 140, -2240,
+ -2241, -2242, -2243, -748, 139, 255, -2245, -2248,
+ -814, 82, -751, -2015, -2253, -824, 254, 240,
+ -751, -2254, 144, -2260, -780, -2258, -1741, -814,
+ 139, -2264, 140, -2268, -2269, -2270, 84, -2272,
+ -2273, -2274, 104, -2276, 36, 186, -2279, 170,
+ -2265, -2282, -2283, -2284, 84, 104, -2287, -2288,
+ 104, 194, -2291, -2292, 186, 240, -2289, -2280,
+ 255, -2298, -2299, 161, -2296, -732, -2300, 194,
+ -2305, -2306, -2307, -2308, -2283, 97, -2302, -2310,
+ 164, -2314, 161, -2316, -2317, 84, 88, -2320,
+ 88, 164, -2323, -2320, -2311, 164, 224, -2328,
+ 104, -2330, 186, -2289, 222, 241, -2335, -2336,
+ 161, 227, -2339, -909, -2332, 241, -2337, -2340,
+ 246, -2346, -2347, -2348, -2349, 16, 131, -2352,
+ 16, 200, -2355, 16, -2353, -2358, -2359, -2025,
+ -2309, 115, -2361, -2328, -1132, -2364, -2367, 84,
+ -2369, -2370, -2371, 15, -1043, -1278, -2375, -2376,
+ -2377, 171, -1081, -1919, -2373, -2360, -2380, 200,
+ -2385, -898, -2332, -2388, -2389, -2390, -2391, 15,
+ -2393, 124, -1088, 156, 153, -1888, -2396, 84,
+ -2401, -2402, -2403, -2404, 161, -2406, -1888, -2398,
+ -2407, -2408, -2411, -2088, 147, 246, -2415, 161,
+ 161, -2381, -2413, -2420, -2421, -2422, -2423, -2424,
+ 84, 97, -1877, 93, -2427, -2428, -2431, -2432,
+ -2433, -1088, 121, -1891, -2434, -2438, -2439, 161,
+ -2398, -2442, 27, -2440, -2445, -1088, -2443, 147,
+ -976, 246, 224, 171, -2450, -2454, 161, 170,
+ -2457, 245, -2459, 248, 227, -2462, -2463, -2464,
+ -2336, 214, -30, -2337, -2466, -2468, -2471, -909,
+ 246, -2472, -2415, -2473, -2477, -2478, -2479, -2480,
+ -2481, -2482, -2483, 16, 18, -2486, -2097, 246,
+ -2487, 93, -2491, -2492, -1813, -2417, 121, 153,
+ -2379, -2493, 93, -2498, -2396, 33, 34, -2504,
+ 33, -2500, 170, -2508, 170, 124, -2511, -2512,
+ -2513, -2514, -2515, 149, 186, -2518, -2519, 163,
+ 76, -2522, -1051, -2520, -2396, -2520, -2527, -2528,
+ 163, -2530, -1343, -2525, 33, -2534, -1343, -2531,
+ -1999, -2535, 170, -2537, -2541, 149, -2543, -792,
+ -2539, 246, -2545, -2548, -2549, 248, -2551, 163,
+ -2553, -1596, -2546, -2556, -1592, 48, -2554, -2558,
+ -1535, -2581, 59, -2350, -1050, -2353, -2567, -2568,
+ -2569, -2570, -2571, -2572, -2573, 0, -2565, -2576,
+ 26, 121, -3250, -2577, -2579, -2598, -2580, -1131,
+ -2585, -2586, -2587, -2588, -2589, -2590, 15, -2583,
+ 37, -1131, -4385, -2592, 234, -2596, 171, -2597,
+ -2601, -1548, 97, -1131, 101, -2602, -2604, -2606,
+ -1587, -2577, -1131, -2612, -353, -2610, -2604, -1062,
+ -2605, -2614, 101, 33, -2621, 33, 76, -2624,
+ 40, -2622, -2627, -2628, 15, 0, -2625, -2632,
+ -2633, -2391, -2630, -2634, -2899, -2635, 151, -2640,
+ 248, -2642, -2643, -2644, -2645, 0, 15, -2648,
+ -2649, 15, -2638, -2650, -2653, -1858, 151, -2654,
+ -2577, 27, -2659, 0, -1168, 33, 37, -2660,
+ -2663, -2666, -2667, -1848, -2604, -1814, -2668, 151,
+ -2673, -2674, 0, -1990, -2671, 27, -1992, -2638,
+ -1168, -2682, -2683, -2684, -2685, -2686, -2687, -2688,
+ -2689, 218, 226, -2692, 157, -2680, -2695, 247,
+ -2697, 157, 226, -2700, -2701, 160, -2693, 165,
+ -2705, -2706, -2707, -2708, 160, 112, -2711, 165,
+ -2702, -2714, -2715, -2716, 160, 176, 176, -2716,
+ -2712, 112, -2723, 165, -2725, -2726, -2727, -2728,
+ 218, 160, -2731, -2732, 218, 176, -2735, 160,
+ 101, -2738, 168, -2740, -2733, 93, 127, -2744,
+ 112, -2741, -2747, -2748, -2749, 155, 172, -2752,
+ 168, 151, 112, -2749, -2753, -2756, -2759, -2760,
+ -2761, -2762, -2763, -2764, -2765, 70, 112, -2768,
+ 155, 101, -2498, -2772, -2773, 155, -2520, -2776,
+ 168, 112, -2779, -2780, -2781, 70, 205, 195,
+ -2785, 155, -2787, -2788, -2789, 152, 192, -2792,
+ -2793, -2794, 165, -2774, -2766, -2795, 200, -2800,
+ 112, 93, -2801, -2804, -2805, -2806, -2807, -2808,
+ -2809, 141, 239, 238, -2802, -2812, 112, -2816,
+ 111, 239, 242, -2820, -2821, -2822, 107, 127,
+ -2825, 112, 232, -2828, 111, -2830, -2831, -2832,
+ -2833, 70, 114, -2836, 107, 101, -2836, -2837,
+ 151, -2780, -2662, -2840, -2843, 127, -2847, -2848,
+ -2849, -2850, -2851, -2852, -2853, -2854, 64, 174,
+ -2857, 157, 172, -2689, 249, 245, -2863, -2864,
+ -2865, 218, 229, -2695, -2861, -2870, 157, 249,
+ -2873, -2874, 247, 174, -2877, -2878, 162, 235,
+ -2855, -2871, -55, -2884, -2885, -2886, -2887, 64,
+ 103, 3, -2618, -2890, 162, 182, -2895, -2896,
+ -2897, 218, 160, -3022, 121, 249, 3, 101,
+ -2905, -2906, -2907, -2908, -2909, 64, 3, -2910,
+ 93, -2914, 74, 202, -2917, 64, -2919, 74,
+ -2912, -2785, -2427, -2750, -2625, -2926, 155, -2924,
+ -2929, -2930, -2931, 64, 172, 172, -2935, -2936,
+ -2937, 103, 193, 212, 193, -2927, -2943, -2944,
+ -2945, -2946, -2947, -2948, 3, -2941, -2951, -2952,
+ -2953, 3, 32, 32, 103, -2958, 74, -2960,
+ -2954, 249, -2837, -2671, -2965, -2966, -2967, -2968,
+ 103, 193, -2963, 178, -2973, -2974, -2975, -2976,
+ -2977, 9, 181, -2980, 87, -418, -2983, -2984,
+ -2985, 9, 114, -2988, 74, -2981, -2991, -2992,
+ -2977, -2989, 32, -2980, -2993, -2998, 87, 32,
+ -3001, 181, 93, -3004, -2914, 151, 151, -3008,
+ 120, 73, -3011, -2998, -3009, 178, -3015, -2971,
+ -3012, -3018, -3019, 181, 193, -3007, -3125, -3016,
+ -3023, -3024, -3027, -3028, -3029, -3030, -3031, 74,
+ -4230, -3025, -3033, -3036, -2977, -3034, -3037, -3040,
+ -3041, 9, 114, -3044, -3045, 107, 111, 93,
+ 97, -2755, 2, 93, -3051, -3054, -2914, 54,
+ -3057, -2926, -2912, 73, -3061, 127, -3059, -2740,
+ -3050, -3062, -3065, -2716, -3066, -3070, -3071, 176,
+ 131, -3074, 239, -3072, -3077, -3078, -3079, -3080,
+ -3081, -3082, 152, -3084, -3085, -3086, -3087, -3088,
+ -839, 206, 35, -3092, 71, -3090, -3095, 141,
+ 107, -3098, -3099, -3100, 146, 97, -2741, -3104,
+ 71, -3102, 35, -840, -3106, -774, -3101, 192,
+ -3113, -840, 19, -3114, -3064, -3115, -3117, -3120,
+ -3121, -3122, -3123, -2765, -3118, -4244, -3106, -3101,
+ -3129, 71, -3131, 71, -3127, -3134, 70, -3132,
+ -3137, -738, -3135, 195, -739, 19, -3141, -3144,
+ -3145, -3146, -3147, -3148, 70, -3150, -3151, 141,
+ 71, -3154, 146, -3142, -3157, 7, -3159, 141,
+ 71, -3162, -3163, -3164, -3165, 7, -3167, -3168,
+ 7, 108, -995, -3155, -3171, 71, -3160, -3005,
+ 108, -3178, -3179, -871, -2736, 71, -3183, 146,
+ -3102, -3186, -3187, 7, -3189, -3190, -634, -2741,
+ -3193, -3194, 108, -3005, -2756, -3198, -774, 93,
+ 73, -3148, -3200, -3204, -3205, -3206, -3207, -995,
+ -3202, -3208, -3209, 19, -3213, 108, -3211, -788,
+ -3238, 73, -3217, -3220, 205, -3218, -3223, -3224,
+ -3225, -3226, -3227, -3228, -3229, 141, -114, -3221,
+ 239, -3234, -3235, -878, -3231, -3236, -3466, -3237,
+ 206, -3242, -3243, 239, 130, -990, 35, -3248,
+ -3230, 37, 167, -3250, -843, -3251, 130, 238,
+ -3249, 35, 97, -3260, -3261, -3262, -3263, 141,
+ -3265, -3266, -3267, 7, -873, -3258, 30, 38,
+ -3273, 142, 146, -3276, -3263, -3269, 142, -3280,
+ -3281, -878, -3257, 19, 142, -3286, -3287, -3288,
+ 141, -257, -3283, 38, -3293, -879, -3290, -3256,
+ -3294, 19, -3299, -878, 12, -3302, 7, -3304,
+ -3157, -3300, 38, -3308, 107, 111, -3311, -3312,
+ 25, -3314, -3159, -3305, 97, -3318, -3319, -3320,
+ -3321, 141, 151, -3273, 151, -3324, -3327, -3328,
+ 141, -3330, 38, 204, -3333, 111, 47, -3235,
+ -3295, -3325, 12, -3340, -3341, 141, 60, -3338,
+ -3345, -3346, -3347, 108, -3349, -192, -3336, -3343,
+ -3324, 77, -3217, -52, -3354, 108, 108, 111,
+ -3361, -3362, -3363, -3364, -3365, -3366, -3367, -3368,
+ 6, 11, -3371, 7, -3356, -3157, -3372, 30,
+ -3157, -3374, 77, -3380, 6, -3382, -3383, -3384,
+ 6, -3377, -205, 12, 171, 77, 151, 6,
+ -3390, -3378, 12, -3396, 78, 142, -3399, -3400,
+ -3401, -3402, -3403, 6, -3405, 11, 25, 25,
+ -3409, -3410, -3411, -3412, -3380, -3394, -3413, -3414,
+ -3417, 25, 151, -3420, 6, -3418, -3423, -3375,
+ 101, 73, -3425, -3428, 111, -3430, -3431, -3432,
+ -3433, -3434, -3435, -3436, -3437, -3438, -3439, 78,
+ 106, -66, -3426, -3444, 154, 106, -3447, -3448,
+ 225, 175, -3440, -3442, -3453, -3454, -3455, -3456,
+ 78, -3451, 87, -3460, -3461, 83, -3457, -3464,
+ 87, -3460, -4220, 200, 222, -3448, -3468, -3472,
+ -3473, 83, -3475, -3476, 87, 116, -3479, 106,
+ 197, -3482, -3483, -3484, -3485, -3486, 77, 29,
+ -3489, -3490, -3491, -3492, -3493, 6, -3480, -3496,
+ 25, 131, -3499, -3500, 78, -3250, -3501, -171,
+ 224, -3527, -3504, -2326, -62, 197, -60, -2332,
+ -3511, -3514, -3515, -52, -3512, 47, -3519, 106,
+ -3516, -3522, -3523, -3524, -3384, 246, -3525, -3772,
+ 131, -3051, -3531, -3407, -3529, -2472, -4385, -2520,
+ -3535, -3538, -3539, 78, -3519, -3536, 11, -2425,
+ -3545, -3546, -3547, 77, -3357, -3543, -3549, -3531,
+ -3534, -3550, 213, -3556, 116, 130, -3559, -3560,
+ -3561, -3562, 145, -3564, 221, 189, 189, -3568,
+ -3569, -3570, 145, -3572, -3573, 145, 175, -3576,
+ 154, -3557, -72, 128, -3448, -3579, -3574, -3581,
+ 177, -3586, -3587, -3588, -3589, -3590, -3591, -3573,
+ -1363, 126, -3595, 185, -3597, -3598, -3599, 145,
+ 77, 145, -3592, -52, 128, -3606, 185, -3608,
+ -3609, -3610, 77, 143, -3611, -3614, -3615, -45,
+ -3612, 228, -1409, -3620, 175, 106, -3623, 175,
+ -46, 220, 203, -3628, -3629, -3486, -3625, 185,
+ -3633, -3634, 108, -3630, -3637, -3638, -52, 143,
+ -3639, -3357, -3640, -3642, -3600, -3643, 185, -3645,
+ -3649, -3650, -3651, -3652, -3573, 100, 98, -3654,
+ -3576, 220, -3621, -3657, -3661, -3575, -3552, -3659,
+ 130, -3666, -3621, 100, 98, -3668, -3595, -3667,
+ 116, -3674, -3675, -641, 100, 185, -3679, -3213,
+ 220, -3677, -3680, -3682, -3677, -3683, -3685, -3688,
+ -3689, -3690, -3691, -3692, -3693, -3694, -3695, -3576,
+ 130, -3696, -3621, 100, -3699, -3621, -3700, 206,
+ -3705, 177, -3707, 181, 98, -3710, -3711, -3712,
+ 9, 181, -3715, 87, -3708, -3718, -3719, -3473,
+ -3716, 177, -3723, 106, -3720, -3726, -3715, 143,
+ 106, -3727, -3731, 87, -3729, -3734, -3735, -3736,
+ 154, -3732, 177, -3740, -3741, 87, 128, -3744,
+ -3745, 177, -3013, -3742, 181, -3750, -3751, -3752,
+ 108, 185, -3755, -3756, 114, 98, -3759, 185,
+ -3757, -3762, -3712, -3760, 114, 185, 98, -3768,
+ -3706, 167, -3769, -1519, 2, -3757, -3773, -3776,
+ -3756, 143, -3777, -3778, -3781, -3782, -3783, 154,
+ 181, -3779, -3787, -3788, -3789, -3790, 154, 181,
+ -3793, 178, -3785, -3796, -3797, 177, 188, -4002,
+ 245, 190, -3791, -3801, 193, -3806, 145, -3808,
+ 221, 223, -3811, -3599, 151, -3812, -3815, 185,
+ -3817, -3576, -3813, 198, -3584, -1370, -3821, -3824,
+ -3825, -3826, -3827, -3828, -3829, -171, 245, -3832,
+ 83, 225, -3830, -3836, -3837, -3838, -3839, 83,
+ -3741, 188, -3625, -2032, -3842, -1191, -3847, -3848,
+ 9, 83, -3849, -3845, 167, -3851, -3853, -3854,
+ -3857, -2810, 173, 197, -3861, -2954, 122, -3864,
+ -3865, 9, 87, -3868, -3041, -3862, -3611, -3872,
+ 32, -3870, -3875, -3876, -3877, -3878, -3879, -3396,
+ 173, -3880, -3883, -3884, -3380, -3881, -1428, -3396,
+ -3640, 228, -3611, -3892, -3893, 83, -3890, -3896,
+ -3897, 25, -3894, -3330, -3898, 167, 197, 78,
+ 83, -3906, -3907, -3908, -3909, -3910, -3911, 9,
+ 167, 116, -3912, -3476, 128, -3918, -3919, -3920,
+ 83, -3902, -3866, 122, -3852, 122, -3925, -3924,
+ -3579, -3639, -3896, -3927, -3929, -3932, -3933, -3936,
+ -3937, -3938, -3865, -3934, -3939, -3942, 116, -3944,
+ -3945, -3896, -3931, -3940, 35, 201, 19, -3950,
+ -3899, 240, -3951, -3757, 159, -3955, -3957, -3417,
+ 151, -3480, -2828, -3961, -3604, -3966, -3967, -3968,
+ -2977, -3611, -3969, -3970, -3973, -3974, -3041, 143,
+ -3975, -3976, -2997, -3956, 167, 143, -3981, -3984,
+ -3985, -3986, 70, -3988, 107, -3990, -3045, -3982,
+ -3176, -3991, -3995, -3996, -3997, -3998, 107, -3993,
+ -4001, -3868, -4005, -3999, -3509, 2, -4004, -1207,
+ -3250, -4007, -1278, -4012, -3045, -4010, -4015, 114,
+ -4013, -3309, 128, 114, -4021, -4022, -3308, -4018,
+ -3480, -4019, -4024, -1128, -4029, 114, -4027, -1128,
+ -4033, -4034, -3866, -1207, -4035, -4036, 35, -4040,
+ -4041, -4042, -4043, -4044, -4045, -4046, -4047, -4048,
+ 245, -4050, -4051, -4052, -4053, 69, 227, -2320,
+ -4038, -1363, -4054, -3812, 232, -4059, -4063, -4064,
+ -4065, -4066, -4067, 69, 241, -4070, 249, -2638,
+ -4073, 251, -4071, -4076, -4077, -4078, -4079, 69,
+ -4081, 73, -4083, 73, -4085, -4086, -4079, -1168,
+ 171, 88, -4087, -4092, -4093, -4094, -4095, -4096,
+ -4097, -4098, -4099, 69, 44, -4102, 41, -4090,
+ -2086, -4103, -4107, 104, -4105, -4110, -2057, -3925,
+ -4111, -4114, -4115, -4116, 69, -4112, -2288, -4117,
+ 147, -2318, -2364, 241, 210, -4126, -4127, -4128,
+ -4099, -1145, -1168, -4130, -4102, -4131, -4133, -4136,
+ -4137, -4138, -4139, -4140, -4067, 234, -4141, -4142,
+ -4145, -4081, -4143, -4146, -2594, 36, 2, -3051,
+ 167, -4154, -4155, 69, 44, -3048, -4152, 240,
+ -4161, -4156, 44, 46, -4165, -4166, 93, 251,
+ -3757, -4162, 36, -4172, 246, -4170, -2472, -4173,
+ -4177, -4067, -2059, -4178, -4068, -4179, 167, -4184,
+ 140, -4186, -4187, -3525, -4182, -4190, -4191, -4192,
+ 224, -4188, -4193, -4196, 240, 167, -2293, 246,
+ -3055, -4199, 46, -2285, 44, -4206, 194, -4208,
+ -4209, 194, -4204, -4168, 97, -4214, -4215, -4216,
+ -4217, -3217, 36, -3059, -4218, 19, -4223, -4224,
+ -4225, -4226, 12, -4228, -4229, 12, 48, -3258,
+ -2059, -4232, -4235, 19, 2, -4238, -4239, -4240,
+ -3283, 36, -4241, -3257, -2210, -4244, -4231, 24,
+ -1960, -4248, -4251, 35, 48, -4249, -4255, -3048,
+ 48, 167, -4259, -4260, -4261, -4262, 12, 97,
+ -4163, -4263, 167, -4268, -4156, -4266, -4269, -4247,
+ -4270, -4272, -4275, -3048, 49, -4276, -4271, -2116,
+ -2121, -4282, -4283, -4284, -4285, 73, -3338, -4280,
+ 49, 245, 41, -4292, 245, -3388, 171, 188,
+ -4297, -4298, -4299, -4300, -4229, -4294, -4301, -4304,
+ 49, -2220, -4307, -3258, -4305, 188, 37, 171,
+ -4311, -3388, -1285, 49, -4317, -4318, -4319, 12,
+ -4321, -4322, -4323, 12, 46, -4326, 41, -2224,
+ -4329, -4330, 171, -1294, -4331, -4334, 246, -4336,
+ -2450, -4332, 167, -4337, -4341, -4342, -3059, 48,
+ -4324, 44, -4345, -4348, -4349, -4350, -4351, -4352,
+ 8, -4354, -4355, -1183, -4346, 37, -1164, 2,
+ 159, 24, -4363, -4364, 220, -4359, -4367, -4368,
+ -4369, -4370, 150, -4365, -4373, -4374, -4375, -4376,
+ 85, 98, -4168, 98, -4371, 37, -4383, 100,
+ -4379, 8,
};
static long _vq_ptr1_lsp32_0[] = {
- -2195, -1315, -610, -327, -154, -90, -66, -16,
- -9, -11, 52, -13, 35, -15, 153, 153,
- -40, -35, -30, -25, -23, 123, 220, 123,
- 220, -29, -28, 62, 62, 220, -32, 123,
- -34, 220, 220, -37, 227, -39, 227, 227,
- -54, -51, -48, -47, -46, 216, 216, 216,
- -50, 153, 153, -50, 204, 149, -57, 153,
- 216, -49, -62, -61, 216, 216, -61, 149,
- -53, -52, -76, -73, -72, -71, 244, 244,
- 216, 244, 62, 174, -86, -79, 194, -83,
- -82, 220, 220, -82, 220, 253, -89, 236,
- 244, 244, -122, -106, -101, -100, -97, 52,
- 131, -99, 131, 131, 52, -102, -104, 253,
- -15, -85, -114, -108, -113, -111, 161, -112,
- 161, 153, -117, -116, 137, -119, 113, -121,
- 253, 153, -134, -129, -128, -127, -85, 244,
- 235, -131, -105, -127, 244, -78, -147, -142,
- -140, -139, 195, 174, 73, 174, -145, 244,
- 174, 234, -133, -151, -127, 244, 194, -127,
- 244, 253, -263, -180, -172, -165, -164, -163,
- -162, 89, 89, 213, 41, -169, -168, 213,
- 213, 213, 238, 123, -177, -176, 213, 97,
- 250, 250, -179, 238, -238, -202, -185, -113,
- -153, -200, -196, -191, -190, 229, 229, -190,
- -194, 229, 229, 149, -193, 89, 229, 182,
- -201, 229, -226, -205, -184, -221, -210, -209,
- 41, 213, -220, -213, 213, -217, -216, 229,
- 229, -216, 229, -150, 229, -223, -146, -225,
- -65, 216, -235, -232, -216, 213, 253, -230,
- -212, 213, 196, -237, 208, 208, -258, -243,
- -242, 194, 213, -245, 156, -249, -112, 161,
- 196, -253, -201, 196, 196, -255, -251, -201,
- 229, -248, -261, 161, -244, -215, -231, -274,
- -272, -232, -212, 213, 253, 51, -103, 156,
- -273, 235, -296, -292, -291, -285, -280, 185,
- -282, -262, -284, 234, 234, -288, 185, 234,
- -290, 234, 234, 169, 169, -273, 235, 156,
- -310, -302, -299, -283, 234, -295, -306, -305,
- 156, 229, -309, 218, -301, 218, 216, -321,
- -318, -309, -316, 235, 235, 76, -309, 218,
- 156, -323, 73, -325, 213, 235, 76, -474,
- -402, -377, -373, -339, -338, -337, -336, 115,
- 115, 209, 137, -372, -350, -347, -345, 67,
- 76, 67, 76, -349, 20, 91, -362, -357,
- -355, 124, 209, 209, 124, -359, 209, -361,
- 209, 209, -370, -367, -366, 137, 137, -366,
- 137, -317, 209, -308, 238, -375, 177, -376,
- 177, -391, 76, -384, -383, 238, 201, 209,
- -388, -387, 201, 201, -372, 238, 148, -399,
- -396, -356, 124, -390, -356, 124, -371, -360,
- 193, -281, -453, -426, -422, -416, -410, -409,
- 92, 67, -414, -338, 137, 148, 67, 137,
- -418, 67, -420, 52, -415, 148, 9, 20,
- 52, 123, -452, -448, -439, -437, -432, 52,
- -436, -435, -413, 123, 227, -438, 227, -443,
- -442, 227, 227, -447, -438, 51, -434, 166,
- -450, 148, -451, 227, 238, -461, -458, 209,
- 137, 150, -459, -460, 227, -463, 148, -469,
- -468, -337, 209, -449, 227, -472, -460, -446,
- 227, 148, -590, -528, -489, 250, -481, -480,
- 222, -484, 222, 177, -488, -487, 222, 222,
- 177, -516, -514, -509, -500, -163, -497, 89,
- 129, 89, 129, 204, -508, -505, -504, 238,
- 238, -504, 238, 204, 213, -511, -499, -513,
- 238, 238, -515, 250, 250, -488, -522, -521,
- -473, 161, -524, 204, -526, -523, 213, 204,
- -585, -549, -537, -534, 177, 129, -535, -372,
- -525, -360, -541, 34, 148, -545, -488, -473,
- -536, -488, 177, -520, 204, -579, -576, -569,
- -564, -561, -367, -366, 137, -523, -2847, 204,
- -523, -366, 137, -557, -567, 65, 209, -562,
- -547, -571, -471, -573, 129, -575, -401, 209,
- -578, 177, 177, -580, -584, -583, 161, 161,
- 177, -586, 137, -589, -224, 238, -600, -595,
- -594, 177, 177, -599, -598, 237, 137, 177,
- -606, -603, 237, -605, -597, 161, -524, -3193,
- 253, 253, -988, -872, -777, -661, -634, -628,
- -625, -622, 252, -621, 169, 169, -624, -608,
- 169, -627, 105, 105, -631, -624, -604, -633,
- 218, 218, -640, -638, 235, 202, -316, -597,
- -651, -650, -645, 202, 30, -647, 239, -649,
- 239, 239, 239, -654, 105, 239, -656, 202,
- -649, -316, 235, 237, 237, -702, -677, -668,
- 46, 78, 126, 155, -676, -673, -672, 161,
- 161, -672, 161, -660, 126, -693, -682, -637,
- 202, -659, -686, -3771, -639, -630, -690, -689,
- 202, 202, -689, -597, 194, -699, -696, 194,
- -658, 235, -692, -637, 202, 195, -766, -751,
- -729, -720, -716, -713, -710, 73, -712, 110,
- 110, -152, 244, -85, -719, 110, -701, 110,
- -722, 94, -726, -712, 110, 253, -712, 110,
- -85, -742, -740, -737, -734, -701, -736, 94,
- 94, -700, -718, -698, -741, 202, -745, -697,
- -691, -148, 244, 235, 51, -150, 237, -765,
- -755, 105, 252, -759, -144, 174, -750, -762,
- 174, 252, -764, 252, 252, 244, -775, -770,
- 78, 150, -773, -772, 174, 174, 113, 126,
- 113, -822, -799, -788, -786, -785, -735, 94,
- 194, 245, 126, 194, -794, -793, -792, 245,
- 245, 126, -793, -792, 245, -784, -769, -815,
- -790, -809, -806, -805, 232, 232, -805, 232,
- 194, -793, 126, -150, 92, -798, -758, -819,
- -818, 237, 232, -821, 247, 247, -850, -843,
- -842, -839, -832, -829, 78, -719, 224, 224,
- -836, -719, 110, 194, -719, -830, 194, -763,
- -808, -837, 252, -849, -847, 78, 228, 228,
- -817, 252, -865, -862, -859, -856, 228, 245,
- -858, 245, 245, -858, -814, -749, -821, 247,
- -685, -869, 92, 194, -867, -820, 247, -560,
- -917, -902, -899, -885, -884, -881, -880, 237,
- 232, -880, 237, -879, 158, -897, -892, -889,
- -883, -891, 158, 158, -890, -891, -597, -248,
- -895, -880, 196, -901, 220, 220, -909, -904,
- -906, -248, -908, 156, 252, -913, -912, -905,
- 252, -915, -896, 236, -894, -971, -938, -932,
- -930, -928, -926, -925, 142, 142, 142, 62,
- 244, -888, -931, 142, 244, -935, 131, -937,
- 131, 131, -957, -952, -947, -944, 244, 196,
- -88, -248, 193, -765, -950, -946, 174, -945,
- -954, -103, -772, -103, -953, -89, -967, -965,
- -963, 174, 233, 233, -597, -966, 233, -900,
- -951, -929, -871, -984, -982, -980, -977, 139,
- -864, -979, 142, 142, 142, 126, 244, -588,
- -987, 142, 233, 142, -1212, -1088, -1070, -1046,
- -1023, -1015, -999, 137, -937, 193, 193, -1008,
- -1004, -1003, 233, 233, -1003, 233, 142, -997,
- -1012, -1011, 193, 233, -1011, -997, -1007, -1017,
- 115, -1022, -1020, -1014, 233, 137, 233, -1036,
- -1032, -1030, -1022, 233, -1019, 253, 233, -230,
- -1033, -966, 148, -1031, -1038, -1035, -1042, -468,
- 227, 148, -1044, -1034, -1045, 243, -1063, -1050,
- 131, 65, -1054, -1053, 100, 100, -1058, -1057,
- 253, 131, -1060, -1056, -116, 75, -1059, -335,
- -1068, -1067, 233, 233, 115, -1043, -1075, 220,
- -925, 142, -1037, -1084, -1081, -1079, -1028, -1080,
- 131, -1083, 166, 166, -1086, 124, 142, 131,
- -1167, -1105, -1100, -1098, -1095, 131, 100, -1097,
- 139, 139, -1082, 147, -979, -1103, 206, 206,
- 193, -1139, -1128, -1117, -1115, -1113, -1112, 249,
- 249, -1112, -997, 131, 124, -1122, -1121, -1112,
- -1114, 249, -1113, -1112, 249, 156, -812, -1125,
- -1135, -1132, 249, -1120, -1134, 249, 249, -1138,
- 249, -1099, 233, -1158, -1147, -1142, -1145, 142,
- 193, -1011, 147, -1151, -1150, 139, 139, -1155,
- -979, 147, -1146, -979, 147, -1146, -1164, -1003,
- -1162, 233, 233, -1154, -1165, -1166, 249, -1196,
- -1188, -1186, -1185, -1183, -1178, -1177, -1176, -1144,
- 232, 232, -1182, -1176, -1137, -1078, 146, -1184,
- 249, 217, 217, 147, -1194, -1192, 206, 147,
- -1193, 217, -880, -1187, -1203, -1193, -1201, -1200,
- 243, 243, 147, -1206, -1205, 243, -1210, -1209,
- -1187, 243, 243, -1195, -1283, -1251, -1240, -1222,
- -1220, -1219, 155, 155, 65, 155, -1231, -1225,
- 137, -1229, -1228, 148, 155, 137, 155, -1235,
- -1234, -1227, 249, -1239, -1121, 249, -1233, 249,
- -1246, -1242, -1244, 177, 177, 147, -1248, -1238,
- -605, -1211, 65, -1279, -1269, -1260, -1256, 46,
- -1258, -1249, -936, 147, -1264, -1230, -1259, 177,
- -1266, -1263, -1268, 155, 155, -1275, -1221, -1087,
- -1262, 124, -1272, -1277, 65, -1121, 49, -110,
- 153, -1274, -1257, -1309, -1304, -1299, -1295, -1291,
- -1112, 249, -1181, 146, -1112, 249, 253, 139,
- -1298, 146, 146, -1301, -1294, -1184, -230, -230,
- -1306, -1302, -1239, -1300, 253, -1313, -1149, -230,
- -1294, 126, -1307, -1516, -1409, -1369, -1339, -1327,
- -1326, -1325, -1324, 96, 96, 79, 88, -1334,
- -1332, -1331, 160, 160, 88, 160, -1338, -1337,
- 167, 167, 167, -1354, -1350, -1348, -1346, -1345,
- 151, 151, 151, 128, -1349, 128, -1338, 167,
- 151, -230, -1364, -1363, -1360, -748, 156, -1353,
- -1331, 160, -1314, 167, -1368, -683, -85, 195,
- 151, -1391, -1388, -1377, -1344, -1375, 167, 167,
- -1366, -1385, -1382, -1381, 199, 199, -1381, 199,
- 147, -1387, 145, 199, -1390, 215, 215, -1407,
- -1404, -1401, -1398, -3766, 253, 147, -1387, 199,
- -1386, -1337, 167, -1376, -1406, 168, 168, 168,
- 199, -1459, -1421, -1419, -1416, -1415, 184, 184,
- -1415, 184, -1362, 120, 210, -1446, -1436, -1431,
- -1428, -1427, 152, 152, -1427, 152, 147, -1434,
- 184, 192, 184, 192, -1444, -1440, 88, 192,
- -1443, 192, 176, 176, -1445, 88, -1458, -1450,
- 48, 136, -1456, -1455, -1454, -1187, 192, 136,
- 136, -1294, 192, -1501, -1478, -1469, -1466, -1465,
- 160, 160, -1465, -1453, 99, -1477, -1474, -1473,
- 168, 168, -1473, -1468, -1467, 242, -1491, -1481,
- 88, -1488, -1485, -1406, 99, -1406, 168, -1484,
- -1490, -85, 160, -1492, -1477, -1497, -1496, 242,
- 242, -1496, 242, -1476, -1418, -1507, -1504, 135,
- -1473, 168, -1290, -1510, 87, 119, 168, -1513,
- 242, -1515, 237, 242, -1908, -1761, -1668, -1622,
- -1549, -1538, -1531, -849, -1528, -1527, -1514, 228,
- 111, 228, -1514, -1535, -1534, 143, 143, -849,
- 252, -1526, -1540, -1514, -1548, -1547, -1546, -1545,
- 144, 144, 236, 255, 252, -1577, -1564, -1559,
- -1556, -1555, 127, 127, -1555, 127, -1514, -1557,
- -1555, 127, -1539, -1537, -1572, -1569, -1568, 127,
- 127, -1568, 221, 221, -1574, -1570, -1576, 239,
- 239, -1578, -1584, -1583, -1568, 127, 221, 255,
- -1618, -1596, -1591, -1589, 144, -1545, -1570, -1544,
- -1594, -1573, 143, 193, -1607, -1600, 31, -997,
- -1604, -1545, 144, -1593, -1545, 144, -1563, -1615,
- -1612, -1611, 221, 127, -1611, 221, -1610, -1594,
- 143, -1614, -1619, -1621, -1606, 255, -1637, -1631,
- -1628, -1627, 207, 207, -1627, 207, 221, -1633,
- -1630, -1634, -1636, 221, 228, -1647, -1644, -646,
- -1642, 191, 191, -1632, -1645, 175, 191, -1657,
- -1652, -1651, 201, 207, -1656, -1655, 215, 215,
- 215, -1665, -1662, -1661, -1650, 247, -1661, 247,
- -1643, -1667, -1620, 247, -1741, -1684, -1681, -1677,
- -1676, -1675, 147, 127, 96, -1679, 31, -1675,
- 84, -1682, -1683, 175, -1713, -1711, -1697, -1691,
- -1690, 128, 128, -1694, 128, 88, -1690, 128,
- -1674, -1705, -1702, -1701, 159, 159, -1701, 159,
- 193, -1709, -1701, 159, -1704, 128, 145, -1368,
- 193, -1723, -1718, -1345, -1708, 222, -1720, -1717,
- -1722, 175, 175, -1730, -1702, -1701, 34, -1297,
- -1719, -1716, -1736, -1701, -1722, 175, 222, -1717,
- -1701, -1722, 33, -1735, -1729, 247, -1746, -1745,
- 151, 151, -1750, -1749, -1696, 207, -1754, -1656,
- -1666, -1506, -1758, -1656, 215, -983, -1656, 201,
- 209, -1887, -1799, -1793, -1776, -1774, -1769, 176,
- -1760, -1773, -1443, 176, 209, 192, -1775, 192,
- -1778, 176, -1788, -1785, -1783, 192, 176, 176,
- 192, -1775, 209, -1772, -1792, -1791, -1760, 192,
- 136, -1794, -1775, -1455, -1768, -251, 196, -1836,
- -1821, -1811, -1808, -1807, -1806, 156, 144, 79,
- -1810, -1797, 144, -1815, -1814, 144, 144, -1818,
- 144, 112, -1810, -252, -1809, -1824, -1806, -1796,
- -1830, -1443, -1828, -1759, 176, 201, -1834, -1828,
- 176, -1827, 176, 144, -1862, -1857, -1850, -1843,
- -1324, 96, 196, -1845, 201, -1848, 128, 201,
- 96, -1650, -1854, -1853, 79, 79, -1853, -1844,
- 196, -1690, -1860, -1034, 88, 76, -1875, -1870,
- -1868, -1867, 136, 136, 136, 166, -1676, -1867,
- 136, 148, -1859, -1881, -1872, -1879, 196, 112,
- 196, -1884, 112, 136, -1886, 136, 136, -1897,
- -1893, -1892, 251, 223, 251, -1892, -1895, 251,
- -1772, -1904, -1902, -1806, -1880, 196, -1547, -361,
- -1905, -1907, -1900, 236, -2030, -1953, -1928, -1927,
- -1917, -1916, 112, 136, 200, -1919, 120, -1926,
- -1923, 251, 112, -1895, 251, -1878, 200, 210,
- -1945, -1934, 251, -1933, 200, 200, -1942, -1939,
- -1938, 251, 251, -1938, 251, -1874, -1944, -1855,
- 208, -1951, -1950, -1949, -1833, 250, 250, 208,
- 227, -2015, -1981, -1970, -1963, -1960, 223, 63,
- -1962, 218, 218, -1969, -1967, 169, 218, 218,
- 169, 223, -1976, -1975, -1974, 112, 112, 112,
- -1974, -1979, 201, 223, -1978, -2009, -2008, -2005,
- -1990, -1989, -1988, -451, 112, 112, -2000, -1998,
- -1996, -1995, 251, 251, 144, 227, 144, 201,
- -1937, 83, -1987, -1980, -879, -2007, -1842, 251,
- 169, -2013, 169, 251, 121, 236, -898, -2026,
- 121, -2025, -2022, -2021, 185, 185, -2021, 185,
- -2006, 218, 251, -2029, -2004, 208, -2094, -2049,
- -2048, -2041, -2038, -646, -1948, 148, -646, 124,
- 209, -2045, -849, 252, 67, -849, -2040, 65,
- 255, -2086, -2074, -2071, -2068, -2063, -2058, -2057,
- 143, 255, -2060, 143, -2057, -2046, -2037, -2065,
- -356, -2067, -2064, 169, -2069, -1536, -361, -2072,
- -2073, 252, -624, -2082, -2080, -2048, 209, -2070,
- 239, 255, -2048, -397, -2066, 124, -2089, -289,
- 124, -2092, 223, -2085, -2093, 239, -2164, -2119,
- -2103, -2098, -2100, 223, -1547, 255, -374, -2112,
- -2110, -2109, -2081, -2091, -346, 234, -316, -2084,
- -289, -2117, -2109, 234, -2062, 234, -2036, -2139,
- -2134, -2123, 243, -2131, -2128, 83, 243, 204,
- -2109, -2122, 217, -289, 204, 217, -2138, -1546,
- 236, -2132, 169, -2146, -2144, -2029, 208, -2129,
- -2007, 179, -2159, -2152, -2150, 206, -2007, -2149,
- -2156, -2155, 251, 251, -2155, -2145, -1201, -2163,
- -2007, 227, -1045, 234, -2176, -2171, -2168, -2161,
- -2170, 236, 236, -2173, 244, -2175, 227, 255,
- -127, -2185, -2183, -2182, 107, 243, 174, 252,
- 236, -2192, -2190, -2175, -2167, -2158, 244, -438,
- -908, 206, -2189, -3408, -2666, -2462, -2352, -2252,
- -2219, -2205, -2204, 114, 172, -2208, 74, 165,
- -2212, -2211, 186, 186, -2216, -2215, 227, 186,
- -2215, 186, -1952, -2245, -2233, -2227, -2224, 140,
- -2204, 172, -1952, -2229, 180, -2231, 180, 172,
- 180, -2238, -2215, 186, 154, -2218, -2243, 180,
- -2215, 186, -2237, -2215, -1842, -2249, -2248, 173,
- 173, -2241, 186, -438, -2341, -2276, -2267, -2264,
- -2259, -2258, 186, -2263, -2262, -2242, 186, 173,
- -2266, -2194, 186, -2271, 140, 154, 181, -2262,
- -2266, 186, -2143, 179, -2302, -2290, -2284, -2281,
- 90, -2283, 154, 154, -2287, 125, 130, -2289,
- 130, 130, -2299, -2296, -2294, -507, -2241, 217,
- -2248, 173, -2295, -2301, 179, 173, -2326, -2306,
- 13, 181, -2314, -2311, -2270, 217, 217, -2270,
- 181, 179, -2321, -2319, -2266, 186, -2309, -2266,
- -2298, -2215, -2266, 186, -2130, -2130, -2339, -2332,
- -2330, 154, 154, 172, -2336, -2335, 172, 172,
- -2335, -2324, -2320, -2215, -2293, -2345, -2344, 125,
- 157, -2349, -2348, 157, 157, -2348, 157, -2037,
- -2368, -2366, -2365, -2363, -2360, -2359, 230, 230,
- -2359, 230, 204, -2364, 98, 170, -2367, 114,
- -2421, -2400, -2395, -2377, -2376, -2375, 204, 181,
- 181, -2390, -2385, -2383, -2382, 181, 181, 181,
- 170, -2384, -2388, -2362, 181, -2351, -2382, -2388,
- -548, 115, -2392, -2397, 101, -2399, -2389, 170,
- -2412, -2405, -2367, 114, -2340, -2409, -2408, 196,
- 170, -2408, 170, -2407, -2415, -2270, -252, -2419,
- -2382, 181, 179, 170, 181, -2428, -2423, -2425,
- 122, -2408, 170, 166, -2459, -2446, -2437, -2435,
- -2348, 157, -2414, -2436, 106, -2436, -2346, -2348,
- 157, 179, 107, -2275, -2443, -2434, -2453, -2451,
- -2384, 170, -2411, 90, 170, -2456, 154, -2450,
- -2458, -252, 170, -2461, 162, 162, -2605, -2538,
- -2521, -2480, -2476, -2475, -2472, -2471, 114, 114,
- -2471, -2455, -2404, 181, -2477, -2479, 214, 214,
- -2507, -2495, -2490, -2487, -2486, 133, 133, -2486,
- 133, -2274, -2492, 114, -2417, 204, -2493, -2417,
- -2502, -2501, -2367, 204, -2493, 122, -2367, 114,
- 122, -2493, -2500, -2510, 133, 214, -2514, -2478,
- 214, -2493, -2518, -2517, 196, 214, -2517, 214,
- -2513, -2530, 114, -2525, 204, -2527, -2520, -2529,
- -2506, 230, -2531, -2535, -2534, 246, 246, -2534,
- 246, -2494, -2595, -2580, -2562, -2543, 117, -2557,
- -2554, -2551, -2550, -2210, 186, -1842, 122, -2553,
- -1842, 186, -2210, -2549, 166, -2247, -2560, -2555,
- 186, 166, -2571, 45, -2568, -2567, 117, 117,
- -2567, 117, 166, -2264, -2574, 74, -2553, -2561,
- 179, 83, 148, -2575, -2592, -2589, -2586, -2585,
- 254, 254, -2585, 254, -2559, -2587, 254, -2537,
- -2594, -548, 254, -2600, 181, -2263, -2524, -2593,
- -2602, -2591, -2604, 173, 173, -2614, -2610, -2609,
- 125, 99, -2611, -2613, 254, 254, -2645, -2642,
- -2632, -2625, -2622, -2560, -2489, 206, -2560, 171,
- 179, -2629, -2560, 179, -2624, -2560, -2149, -2623,
- -2639, -2637, -2180, 217, 171, 173, 130, -2641,
- 173, 173, -2594, 249, 217, -2659, -2585, -2653,
- -2652, -2651, -2644, 165, 205, -2656, 165, 205,
- 205, 249, -1133, -2211, -2662, 74, -2651, 165,
- 171, 249, -3056, -2864, -2812, -2777, -2693, -2686,
- -2680, -2677, -2676, 165, 165, -2676, -1133, -1133,
- -2684, -2683, 205, 205, 205, 165, -2688, -2678,
- -2690, -2664, -2683, 205, -2650, -2720, -2715, -2698,
- -2204, -2643, -2706, -2702, -2701, 180, -2705, 180,
- 172, 172, -2712, -2701, -2710, 188, 188, -2635,
- -2710, 188, 179, -2718, 178, -2714, 165, 178,
- -2745, -2729, -2726, -2638, 130, -2717, -2728, 178,
- 178, -2743, -2734, -2733, 166, 165, -2738, -2737,
- -2725, 165, -2742, -2741, 178, 178, 178, -2744,
- 180, -2751, -2748, 188, -2750, 188, 188, -2763,
- -2760, -2757, -2750, 188, -2736, -2750, -2711, 166,
- -2705, 172, -2759, -2769, -2749, -2710, 188, 139,
- -2767, -2772, 165, -2767, -2748, 165, -2001, -1234,
- -2771, -2789, -2783, -2781, 125, 66, -2768, -2788,
- -2785, -2787, -2762, 130, 138, -2792, -2791, 149,
- -2795, -2728, 171, -2805, -2804, -2801, -2800, 68,
- 178, -2800, 178, 249, 125, -2807, 138, -2810,
- 178, -1293, 178, 138, -2826, -2816, 74, 86,
- -2818, 86, -2822, -2713, -1234, -2799, -2713, -2824,
- 224, -2786, -2834, -2832, -2830, 198, -2831, 198,
- 198, -2758, -2835, -2855, -2846, -2840, 116, -1227,
- -2844, -2843, 166, 149, 138, 149, -2849, 51,
- 166, -2853, -2831, 198, -2842, 149, 198, -2860,
- 116, -2859, 36, 198, -2832, 138, 83, -1861,
- -3015, -2958, -2897, -2878, 147, -2875, -2874, -2791,
- -2852, -2839, 149, -2877, 141, 141, -2884, -85,
- -608, 166, 148, -449, -2893, -2888, 178, 99,
- -2891, -2890, 195, -2890, -2881, -2895, 253, -153,
- -2873, -2917, -2904, -1613, -2902, 164, 164, -421,
- -2910, -2906, -2908, -1227, 195, 164, -2912, 85,
- -623, 68, -3049, -2907, -2903, -2921, -2920, 85,
- 85, -2941, -2933, -2926, 85, 164, -2930, -2902,
- 164, 65, -2902, 148, -2037, -2935, 237, -2938,
- 141, -2931, -602, -2037, 148, -2955, -2950, -2947,
- -2902, -2037, -2939, -2902, 164, -2937, -2954, -2902,
- 164, -2916, 221, -2956, -1514, -2896, -2982, -2972,
- -2965, -2963, 82, -2964, 224, -2967, -2561, -2969,
- 85, -750, 51, 51, -2977, -2975, 85, -1367,
- -2970, -2980, 195, -2966, -2981, 198, -3007, -2999,
- -2992, -2989, -2988, -2957, 165, -2988, -2833, -2620,
- -2996, -2909, -2118, -1757, -2909, 248, 248, -2817,
- -3004, -3003, 195, 195, -3003, -2997, 248, -3012,
- -3010, -3005, 178, 248, -2890, 248, -3011, -3028,
- -3024, -3023, -3022, -2948, -3014, 217, 93, 99,
- -3026, -1193, 145, 221, -3044, -3031, 217, -3023,
- -3038, -3037, -3036, 254, 254, 205, -2612, -3037,
- 190, -3030, -3025, -3020, -2802, -3048, -2719, -3009,
- -3052, 83, 190, 219, -2683, 205, 219, -3051,
- -3253, -3120, -3083, -3071, -3063, 90, 106, -3067,
- -2331, 172, 219, -2232, 106, -3051, -3055, -3072,
- -3074, 180, -3080, -3077, 180, -2701, -3050, 232,
- -2230, 180, 232, -3104, -3101, -3090, -3088, 172,
- 172, -3079, -3096, -2701, -2750, 188, -3089, 217,
- -3099, 188, 180, 180, 190, -3103, 188, 188,
- -3107, 125, 90, -3117, -3112, -2761, -3100, -3094,
- -3114, -3078, -3098, 139, 146, -2811, -3113, 219,
- -3201, -3159, -3140, -3135, -3128, -3127, 102, 102,
- -3132, -3131, 108, 108, -3131, 108, 232, -3137,
- 102, -3138, 197, 132, -3150, -3147, -3146, -3145,
- 197, 197, 116, 60, 197, 116, -3145, -3155,
- -3154, 138, 138, -3154, -3134, 232, -3134, 108,
- -3176, -3170, -3166, -3165, -3156, 90, -3168, 163,
- -3169, 163, -3174, -3173, -3082, 197, -3175, 197,
- -3189, -3186, -3183, -3175, -3173, -3164, 231, -3185,
- -818, 163, -3167, 163, -3182, -3199, -3196, -3152,
- -3188, -3779, -3181, -3119, -3154, 190, 219, -3173,
- -3197, -3221, -3210, -3204, -3205, -3209, -3208, -1298,
- 106, 90, -3214, -3213, 225, 225, -3218, -3217,
- 225, 225, -3217, 190, -3207, -3242, -3229, -2459,
- -2461, -3195, -3049, -3118, -3047, -3235, -3169, -3233,
- 240, 225, 240, -3237, -3232, -3239, 225, -3241,
- 240, 225, -3246, 157, -3245, 225, -3249, 157,
- -3236, -3169, 163, 225, 240, -3360, -3307, -3267,
- -3260, -3259, 198, 198, -3264, -2831, -3234, -3248,
- -2831, 219, 240, -3291, -3270, 189, -3274, -3273,
- 189, 189, -3286, -3281, -3280, -3279, -3232, 198,
- 198, -3273, -3279, 198, -3265, 240, -3290, -3283,
- 198, 219, 180, -3297, -3293, -3283, 198, -3240,
- -3284, -3298, -3302, -2890, -3263, 240, -3304, 219,
- -2981, 240, 240, -3342, -3320, -3316, -3314, -3313,
- 224, 224, 224, -3266, -3318, 180, -3103, -3232,
- -3335, -3324, 224, 219, -3332, -3329, -3328, 240,
- 224, -3328, -3232, -3323, -3334, -3319, 198, -3336,
- -3340, -3334, -3305, -3301, 198, -3300, -3356, -3354,
- -3351, -3348, 224, 248, -3328, 248, -3347, -3328,
- 224, -3011, -3328, -3006, 195, -3279, -3347, 248,
- -3393, -3377, -3368, -3366, 149, -3347, 178, 125,
- -3371, 132, 178, -3375, -2800, 178, -3358, 178,
- 149, -3381, -2728, 178, -3355, -3388, -3386, -2800,
- 178, 248, 178, -3347, -3390, 241, -3290, -3387,
- -3349, -3398, -3397, -3396, 116, 197, -3401, -2914,
- 190, -3404, 149, 190, -2843, 149, 197, 190,
- -2995, -3782, -3544, -3460, -3442, -3415, 75, -3432,
- -3428, -3425, -3422, -138, 195, -3403, -138, 195,
- -3400, -3427, 182, 182, -3430, -3392, -3431, 195,
- -3435, 195, -3391, -3304, -3438, 198, 198, -2774,
- -3380, 211, -3450, -3448, 194, -3447, 182, 182,
- -3449, 150, -3436, -3453, 149, -3454, -3437, 219,
- 211, -1727, 206, -3455, -3495, -3470, -3468, -3447,
- -3466, 219, 150, -3119, 166, 179, -3480, -3475,
- -3473, 134, 194, -3477, 134, -2524, 204, 219,
- -3484, -523, -3119, -3467, -3488, -3487, 204, 204,
- -3492, -523, 204, 219, -523, 190, -3407, -3531,
- -3505, -3502, -3501, -3500, 116, 224, -3503, 194,
- -3483, -3519, -3516, -3512, -2854, -3437, -3459, -3440,
- -3514, 182, -3447, -3341, -3328, 224, -3228, -3520,
- -3525, -3523, -2665, 198, 171, -3528, 224, -2665,
- -3328, -3524, 249, -3535, -3534, 194, 241, -3537,
- -3524, -3541, -3540, 241, 241, -3540, 241, -3529,
- -3711, -3652, -3598, -3584, -3562, -3558, -3556, -3553,
- 28, -3555, 42, 42, -3557, 83, -3560, 132,
- 102, 132, -3581, -3570, -3567, 219, -3522, -3465,
- 217, -2621, -3575, -3574, 219, 118, 118, -3579,
- -3578, -3569, 219, 118, 219, -3583, -3577, 118,
- -3590, -3589, -3301, -3566, 206, 197, -3594, -3589,
- 197, 179, -3596, 197, -3406, 171, -3624, -3602,
- 83, -3597, -3619, -3610, -3608, -3607, 182, 182,
- 182, 107, -3614, -3613, -3601, 182, -3616, 107,
- -3513, 68, 68, -3621, 241, -3539, 241, -3617,
- -3639, -3635, -3632, -3629, 102, -3620, 241, -3612,
- -3634, -3593, 241, -3269, -3637, 189, -3479, -3646,
- -3644, -3637, -3588, -3587, 182, 189, -3651, -3650,
- 182, 243, 182, 182, -3684, -3678, -3661, -3659,
- -3595, -3649, 243, -3660, 197, -3669, -3666, -3665,
- -3649, 241, -3665, -3657, -3649, -3675, -3630, -3673,
- 225, 225, -3667, -3677, 204, 241, -3681, -3680,
- 116, -3683, -2499, 219, -3705, -3232, -3697, -3694,
- -3692, -3240, 240, 134, 211, 179, -3252, 240,
- -3469, -3701, -3673, -3691, -3682, -3673, -3674, -2130,
- -3703, -3708, -3175, 146, -3232, -2295, -3704, -3747,
- -3735, -3730, -3724, -3722, -3719, 44, 179, -3721,
- 118, 118, 68, 44, -3728, -3763, -2499, -3718,
- -3466, -3727, -3732, 92, -408, 92, 118, -3743,
- -457, -3741, -3449, 150, 179, 150, -2624, 118,
- -3607, -3469, -3734, -3772, -3757, -3755, -3427, -195,
- 149, -2970, -3729, -2845, -3710, -3759, -3702, -3770,
- -3767, -3764, 92, -3643, -53, 149, 219, -3769,
- 197, 197, 149, 68, -3778, 149, 189, -3426,
- 182, 92, -3780, -408, 99, -408, -3518,
+ -4039, -2681, -1149, -716, -293, -87, -77, -56,
+ -39, -36, -33, -16, -15, 225, 207, 207,
+ -31, -27, -24, -22, 207, 225, 225, 207,
+ -26, 29, 29, 29, -23, 207, 216, 225,
+ -30, -34, -35, 31, -38, 121, 207, -49,
+ -43, -42, 63, -47, -46, 63, 63, -46,
+ -32, -54, -42, 62, 63, 216, -42, 216,
+ -65, -64, -61, -60, 175, -60, 175, -53,
+ 126, -67, 175, -73, -70, 175, -72, 175,
+ 175, -75, 225, 189, 179, -80, -74, -63,
+ -81, -83, -48, -85, 217, -86, 217, -142,
+ -117, -113, -109, -104, -99, -96, -95, 207,
+ -95, 207, 216, -101, 204, -103, 216, 207,
+ -107, 204, 207, 204, 207, -112, -111, 45,
+ 166, -115, 199, -116, 204, -130, -111, -122,
+ -121, 207, -126, -121, 207, -98, -121, 132,
+ 132, -127, -139, -137, -136, -135, 1, 1,
+ 217, -86, 117, -141, 45, 217, -210, -189,
+ -150, -148, -15, -129, 225, 123, -187, -170,
+ -167, -161, -158, -26, 29, 132, -26, 29,
+ -147, -165, -26, 29, -125, 225, 216, -169,
+ 23, 23, -172, 225, -176, -25, -102, -164,
+ -184, -181, -159, 29, -53, -159, -53, -180,
+ -97, -98, 222, 207, -186, -202, -198, -195,
+ -194, 63, 63, -194, -185, -175, -200, 62,
+ 62, 224, -203, -207, -42, 63, -197, -42,
+ 251, 216, -254, -219, -218, -216, 45, -98,
+ 207, -149, 45, -250, -248, -237, -226, -225,
+ 31, 31, -232, -231, -230, 45, 45, 62,
+ -230, -231, 62, -209, 216, -245, -242, -218,
+ 45, 251, -218, 45, -235, -230, -206, -82,
+ -249, 207, -97, 62, 23, 132, -279, -258,
+ -257, 204, -266, -245, -230, -253, 132, -490,
+ -128, 132, -277, -274, -271, 91, -128, -257,
+ 204, -264, 204, -108, -261, 30, 117, -290,
+ -284, -124, -276, 179, -287, -263, -282, -289,
+ 236, 207, -108, 236, -288, -477, -370, -339,
+ -328, -320, -318, -313, -307, -305, -304, 61,
+ 61, 207, 61, -305, -304, 61, 236, -1313,
+ -288, -317, -309, 61, -292, 207, 207, 79,
+ -327, -325, -324, 217, 217, 61, 217, 217,
+ -334, -331, 1, -333, 222, 61, -336, 28,
+ 51, -338, 43, -363, -345, -343, 90, 45,
+ 51, 217, -360, -357, -354, -353, -352, 57,
+ 57, 51, -356, -316, 51, -356, 51, 236,
+ -362, -355, 1, -367, -366, -286, 207, -121,
+ 51, 117, -395, -388, -387, -385, -379, -377,
+ 79, 207, 81, -383, -317, 207, 117, 81,
+ -369, -386, 81, 90, -390, 121, 170, 207,
+ -358, 121, -389, -443, -426, -401, -400, 58,
+ 58, -422, -415, -407, -140, 45, -389, -124,
+ -412, -411, 58, 58, 45, 58, -394, -419,
+ -400, 58, 121, -400, 58, -389, -218, 58,
+ 31, -394, -428, -414, -441, -437, -434, -433,
+ -384, 58, -433, 58, 234, -435, -433, -432,
+ 115, -420, 115, -445, 90, -475, -473, -470,
+ -463, -456, -453, 58, 31, -455, -440, 58,
+ -453, -455, 58, 115, -4295, -440, -454, -467,
+ -285, 117, -465, -400, -465, -466, -400, 58,
+ 117, -474, 62, -231, -465, -584, -562, -493,
+ -486, -484, 119, 28, 28, 119, -434, -433,
+ 58, -466, -616, -469, 153, -549, -496, 179,
+ -528, -505, -502, -501, 126, 126, -501, 126,
+ -459, -513, -510, -509, 62, 62, -509, 62,
+ -491, -521, -510, -509, 62, -462, -804, 115,
+ -442, -510, -509, -465, -523, 188, 117, -465,
+ -534, -531, 77, -488, -523, -524, -537, -488,
+ -520, -543, -511, -509, -517, -439, 179, -547,
+ -613, 179, -542, 62, 58, -555, -52, -553,
+ 31, 31, 148, -557, 119, -52, -199, 62,
+ -546, 156, -577, -566, 163, 21, -573, -569,
+ 163, -570, -503, 126, -560, -575, 119, -576,
+ 119, -578, -581, 126, 211, -583, 211, 211,
+ -685, -648, -624, -619, -608, -601, -594, -593,
+ 189, 189, -598, -597, 234, 126, -597, 126,
+ -76, -605, -599, -596, -572, -599, -541, -365,
+ -570, -595, -597, 126, -247, 188, 216, -614,
+ -804, -615, 251, -622, 126, 211, 211, -617,
+ -646, -639, -632, -583, -571, 126, 234, 179,
+ -636, -583, 211, -76, -583, -76, -637, -643,
+ -571, 126, -635, -571, -630, -623, 126, 189,
+ -675, -665, -663, -656, 126, -71, -612, 135,
+ -660, -64, 126, 135, -64, -655, 135, 175,
+ -661, -673, -595, -597, -127, -664, -613, -127,
+ -669, -597, 135, -682, -681, -679, 132, 126,
+ 135, 81, -683, 90, -655, -709, -694, -691,
+ -690, -678, 189, -690, 189, -672, -702, -699,
+ -698, 135, 189, -698, -697, 179, -699, -698,
+ -693, 132, -544, 135, -655, -713, -4295, 135,
+ -655, -690, 189, -708, -929, -833, -753, -733,
+ -732, -726, -723, -725, 196, 196, -731, -729,
+ 196, -725, -707, 196, 243, -740, -737, 208,
+ 192, -739, 208, 208, -746, -745, 188, 179,
+ -730, 208, -750, -749, 208, 208, -749, 208,
+ -744, -826, -784, -778, -760, -758, -759, 119,
+ -772, -765, -764, -704, 196, -769, -768, 133,
+ 133, -768, 133, -763, -776, -764, 196, 125,
+ 119, 196, -779, -781, 196, -783, 125, 133,
+ -807, -797, -794, -791, -790, 211, 211, -790,
+ 211, -775, -582, 125, -793, -791, -802, -582,
+ 211, -618, 211, 119, 56, 72, -801, -823,
+ -816, -813, -764, -771, 123, -764, 196, 236,
+ -813, -764, -671, -812, -742, 251, 123, -749,
+ 208, -812, -831, -767, -770, -821, -819, -832,
+ 133, -885, -880, -844, -841, -838, -840, 192,
+ 192, -843, 125, 199, -869, -851, -850, -849,
+ 166, 166, 199, -864, -859, -857, -856, 196,
+ 196, 166, -830, -856, -849, 166, -811, -654,
+ -867, 196, 199, 199, 135, -875, -872, 91,
+ -874, 30, 30, -877, -655, -879, 204, 204,
+ -881, -116, 204, 135, -655, -895, -894, -893,
+ -892, -891, 238, 238, 164, 243, 192, -911,
+ -899, 196, 161, -904, -902, -876, 199, 243,
+ -907, -906, 243, 133, -906, 243, -655, -921,
+ -920, -917, -832, 133, -901, -832, -883, 237,
+ 199, -926, -728, 133, -918, -916, -928, 187,
+ 199, -1023, -992, -980, -960, -943, -938, -937,
+ 187, 204, -257, -937, 204, -927, -253, -949,
+ -874, -710, -925, 135, 135, -955, -230, -464,
+ -883, -947, -946, -277, 30, -674, -1031, 135,
+ -974, -964, 166, 45, -968, -111, -674, -957,
+ -972, -971, -288, 57, -971, -967, -978, -971,
+ 57, 191, 133, 57, -989, -984, 164, 148,
+ -920, -850, 199, 191, -983, -116, 204, -973,
+ -1005, -996, 77, 119, -1002, -999, -954, -231,
+ 62, 230, -1004, 237, 62, -1015, -1012, -1010,
+ 45, 237, 62, -1003, -108, -1001, 113, -1022,
+ -1020, -768, 133, -1013, 119, -998, 133, -1078,
+ -1037, -1030, -1027, -1028, -1004, 197, -794, -1229,
+ -1029, 190, 240, 122, -1032, -1074, -1056, -1052,
+ -1044, -1043, 51, 119, -1047, 119, 187, -1051,
+ -1050, 51, 51, 119, -1043, 51, 170, 187,
+ -1072, 207, -1065, -1062, 51, 57, -1064, 57,
+ 57, -1062, -1064, -1055, -1046, -1099, -1036, 190,
+ 62, 119, -1076, 96, 33, -1071, -1102, -1086,
+ -1081, -1083, 161, -1085, 124, 124, -1089, 164,
+ 57, -1097, -1094, -3240, 115, 187, -971, -1093,
+ 187, -975, 164, -4332, -1093, -1095, -1109, -856,
+ 207, -803, -1092, -936, -1106, -1136, -1122, -1119,
+ -969, -971, -1077, 190, -1091, -1071, 147, -1121,
+ -1117, 133, -1133, -1126, -1064, -1114, -1130, -971,
+ 136, -1128, -971, 136, 136, -768, 133, -1131,
+ -1140, -1138, -121, -1093, -1141, -1146, -1144, 136,
+ 207, 136, -1148, 187, 207, -1761, -1395, -1239,
+ -1190, -1182, -1175, -1165, -1164, -1161, -1160, 94,
+ 94, -1160, 94, -1143, 252, -1169, -714, -1139,
+ 136, -1173, -1172, 252, 252, 189, 252, -713,
+ -690, 189, -1131, -1285, -442, -1167, -1184, 252,
+ -1187, 252, 163, -1189, -1129, 189, -1192, 188,
+ -1236, -1219, -1217, -1203, -1200, -1199, 184, 184,
+ -1199, 184, -1125, -1211, -1200, -1199, 184, 136,
+ 55, 190, -1128, -1200, 94, 184, -3249, -1209,
+ 122, -1218, 184, -1227, -1224, -1223, 217, 217,
+ -1223, 217, -1207, -1224, -1232, -1258, -1216, 122,
+ 188, -1214, 136, -1207, -1238, -1231, 188, -1319,
+ -1300, -1279, -1272, -1270, -1266, -1261, -1254, -1251,
+ -1250, 53, 53, -1250, 53, -1230, -1251, -1250,
+ 53, -1215, -1408, 190, 156, -1265, -1264, 50,
+ 50, 39, -1268, -1257, -1263, -1202, -1271, 50,
+ -1276, -1275, 136, 39, -1275, 39, 136, -1297,
+ -1292, -1289, -1286, -1285, 56, 56, -1285, 56,
+ -1131, -1290, -1291, 24, -1256, -1295, 56, 56,
+ -1135, -1299, 94, 94, -1304, 184, 100, 85,
+ -1315, -1308, -1307, 217, -1312, -1295, -1274, -1207,
+ -1295, 56, 197, -1223, -1271, -1274, -1314, -1384,
+ -1355, -1354, -1347, -1345, -1336, -1335, -1332, -1331,
+ -1330, 39, 39, 20, -1334, -1311, 39, 34,
+ -1342, -1265, -1340, 34, 34, -1310, -1340, 34,
+ -1269, 163, 21, -1350, -1349, 24, -1353, -1352,
+ 163, 163, 96, -1373, -1371, -1364, -1362, -1361,
+ -1070, 94, 163, 244, -1368, -1361, 94, 244,
+ -1361, -1363, -1363, -1372, 96, -1378, 184, -1160,
+ -1369, 191, -1382, -1199, 184, 191, 94, -1377,
+ -1390, -1387, 163, -1389, -1376, 211, 206, -1394,
+ 201, 148, 201, -1632, -1525, -1486, -1472, -1454,
+ -1423, -1411, -1365, -1405, 90, -1366, -554, -1388,
+ -1495, 244, -1407, -1419, -1416, -1354, 96, -561,
+ -1354, -1415, 244, -1421, 163, 163, -1418, -1432,
+ 90, -386, -1430, -1429, 244, 94, 184, -1418,
+ -1436, -1435, 81, 94, -1450, -1444, -1442, -1441,
+ 61, 61, 184, 61, -1442, -1441, -1422, -1446,
+ -3254, 191, -309, 184, 191, -1449, -1470, -1465,
+ -1463, -1461, -1189, -1447, -1377, 94, -1231, -690,
+ 190, -1467, 190, -1469, -1464, 184, 94, -1377,
+ -1482, -1475, 207, -1479, -324, 191, -1377, -324,
+ 191, -1377, -1225, 217, -1478, -1471, -1492, -1490,
+ 56, -1462, -86, 156, -1522, -1499, -333, -1694,
+ -1381, -1491, -1489, -1511, -1508, -1505, -1504, 61,
+ 61, -1504, -1460, 190, -304, -1464, 197, -1515,
+ -306, 197, -1510, -1505, -1504, 61, 173, -3254,
+ -1514, 122, -1524, 217, 217, -1620, -1563, -1545,
+ 207, -1544, -1538, -1535, -1534, 197, 51, -1534,
+ -1510, -1521, -1535, -1534, -1520, -1448, -1509, -1506,
+ 43, -1556, -1551, 207, -1534, -1459, -1417, -1554,
+ 207, -1360, 207, -1021, -1560, -1233, -863, 191,
+ -1534, 253, 253, -1598, -1571, -1569, -1386, -1561,
+ -1559, -1570, 28, -1591, -1584, -1579, -335, -1075,
+ 96, -1559, 191, -1581, 28, -1583, 28, 28,
+ -1588, -1587, 43, 43, -1587, 43, -1559, -1595,
+ -1594, -1577, 43, -1594, 43, -1568, -1604, -1587,
+ -1504, 250, 250, -1601, -1618, -1613, -1610, -338,
+ 43, -1597, -338, -1559, 253, -1615, 191, -338,
+ -1559, -1612, -306, 253, -1623, -580, 253, -1628,
+ -1626, 211, 201, -1619, -1630, -1617, -792, -1559,
+ -1711, -1702, -1642, -1354, -1638, 96, -1640, 33,
+ 33, -977, -1662, -1651, -1648, -1647, -1629, 50,
+ -1647, -1646, -1611, -1657, -1655, 40, -1609, 50,
+ 40, -1659, 40, -1661, 237, 50, -1681, -1678,
+ -1672, -1669, -1668, 50, 50, -1668, 50, -1660,
+ -1676, -1668, 50, 180, -1668, -1671, -1670, -1677,
+ 135, -1689, -1678, -1670, -1680, 118, 37, 135,
+ -1684, -1697, -1669, -1668, 118, -1692, -1772, -1680,
+ 135, -1699, 96, -1668, 50, -1680, -1708, -1704,
+ -1705, -1706, -1250, -1695, -1710, -1680, 50, -1734,
+ -1723, -1720, -1718, -1717, -680, 61, -1717, -1707,
+ -1717, -1693, -1688, -1678, -1728, -1686, 233, 233,
+ -1717, -1726, -1722, -1557, 118, -1732, -1756, -1736,
+ -1744, -1740, -1223, -1733, -1742, 253, 53, -1612,
+ -1755, -1753, -1728, -1717, 236, -1739, -1116, 253,
+ 236, -324, -1751, 217, -1758, 124, -1759, -1760,
+ 207, -2233, -1953, -1875, -1854, -1851, -1847, -1807,
+ -1797, -1790, -1788, -1775, 56, -1749, -1680, -1783,
+ -1659, -1661, -1684, 135, 130, -1680, -1684, -1656,
+ -1750, -1778, -1680, -674, -1544, -1785, -1794, -1544,
+ -883, -883, -1544, -1792, -966, -1801, -1639, 33,
+ -1789, -1595, 43, 237, -4273, 180, 180, -1840,
+ -1832, -1819, -1812, 39, -1816, -1815, 40, 40,
+ -1815, -1805, -1803, -1826, -1824, -1656, 40, 236,
+ -1656, -1823, -1829, 40, -1800, -1656, -1773, -1730,
+ -1835, -1834, 40, -1834, 37, -1679, -1654, 129,
+ -1638, -1640, -1839, 129, 35, -1842, 129, -1849,
+ 40, -1815, -1845, -1852, -1853, 186, -1871, -1861,
+ -1860, -1859, 27, 27, 27, 96, 217, -1869,
+ -1867, 43, 237, 43, 118, 43, -1868, -1872,
+ -1873, -1710, 237, -1880, -1878, 164, -1879, 227,
+ -1936, -1908, -1903, -1899, -1895, -1892, -1889, 27,
+ 124, -1891, 124, 124, -1894, 27, 27, -1888,
+ 171, 88, -1870, -1894, -1901, 27, -1898, -1814,
+ -1906, -1866, 124, -1850, -1933, -1928, -1926, -1254,
+ -1251, -1250, 53, 52, -1784, 52, -1915, 100,
+ -4339, 52, -1915, -2561, -1918, 113, 40, -1925,
+ -1265, -1656, 236, 236, -1930, -1935, 236, 124,
+ -1941, 188, -1935, -1932, 125, 27, -1945, -1223,
+ 125, -1951, -1755, -2557, -1940, 125, -1940, 53,
+ 217, -2051, -2008, -1987, 186, -1969, -1964, -1338,
+ 24, -2013, -1948, 125, -1966, -1963, -1277, -1962,
+ -1939, -1973, -1972, 20, 20, -1977, 48, -1927,
+ 52, -1981, -1265, 52, -1976, -1829, 40, -1975,
+ -4251, 255, -1907, -1993, -1991, 20, 33, -1992,
+ 186, -1997, -1353, 21, -1921, -2001, -1394, 201,
+ 129, -2005, -2004, 201, 201, -2004, -1839, 129,
+ -2016, -1813, -1815, -1839, -2006, -2129, 129, -2014,
+ -2043, -2018, -2028, -2025, -2022, 36, -2024, 186,
+ 186, -2027, -2012, 186, -2027, -2035, -2034, -2033,
+ 2, 2, 36, -2039, -2033, 2, -1996, -2033,
+ 2, -1921, -2038, -2048, 240, -2027, 186, -1843,
+ -2050, 201, 201, -2100, -2098, 186, -2071, -2060,
+ -2058, 41, 41, 44, -2065, -2064, 88, 41,
+ 88, -2069, -2068, -2047, 41, 44, -1934, -2095,
+ -2092, -2087, -2081, -2079, -2078, 41, 41, 41,
+ 171, -2085, -2078, -2070, -2067, 171, 41, -2089,
+ 171, -2057, 41, -1986, -2068, -1838, 183, -2096,
+ 88, 36, -1906, 183, -2202, -2149, -2118, -2105,
+ -2094, -2107, 188, -2109, 56, -2113, -1984, 253,
+ -2111, -1295, -2116, 56, 56, 89, -2122, -2121,
+ 53, 53, -2145, -2135, -2128, -2127, 42, 42,
+ -2132, -2178, 89, -2117, -1295, 92, -2112, -2139,
+ -2116, 102, 102, -2143, -1295, -2137, 102, -1295,
+ 102, -2147, -2142, -1252, -2141, -2156, -2154, -2121,
+ 86, -2148, 41, 53, -2198, -2192, -2181, -2166,
+ -2164, -1256, -2153, -2134, 20, 253, -2174, -2171,
+ -2170, -1561, 53, -2170, -1567, -2172, -2171, -2170,
+ 183, -2176, 44, -2165, -2179, -2185, -1972, 20,
+ 253, -2189, -2127, 42, 183, -2127, 42, 134,
+ -2195, -2170, 134, -2170, -2191, -2188, -2199, -2201,
+ -2184, 42, -2216, -2207, -2190, 255, -2180, -2213,
+ -2211, 41, 44, 44, -2173, -2215, 42, 42,
+ -2218, -2163, -2226, -2223, -2116, -2191, 169, -2116,
+ 56, 134, -2223, -2230, 134, -2225, 48, -2222,
+ -2221, -2476, -2345, -2297, -2266, -2239, 149, -2259,
+ -2252, -2247, -725, -751, -2014, -2244, -2232, -2250,
+ 208, 169, 196, -2249, -2256, -2255, -2251, 208,
+ -2255, -2246, 253, -2263, -725, 75, -1561, -725,
+ 180, 253, -2267, -2281, -2271, 170, 104, -2278,
+ -2275, 186, 240, -2277, 240, 240, -2277, 240,
+ -2262, -2286, 240, -2285, 194, 194, -2290, -2289,
+ 210, 210, -2294, -2293, 210, 210, -2293, -2261,
+ -2295, -2304, -2301, -725, 245, -2303, -2257, 243,
+ -2334, -2322, -2315, -2313, -2312, 48, -2217, -2093,
+ 194, 164, 194, -2319, 241, -2318, 104, -2321,
+ 241, 241, -2327, -2325, -1558, -2292, 131, -2329,
+ 186, -2331, 194, -2333, 131, 210, -2338, -2337,
+ 243, 243, -2342, -2341, -2326, 243, -2341, 197,
+ -2343, -2374, -2368, -2357, -2351, -1054, 136, -2354,
+ -2318, 136, -2034, 36, -2350, -2366, -2318, -2363,
+ -2230, 131, -2356, 36, -2353, -2362, 104, 186,
+ -2372, 170, 40, 84, 186, -2350, -2456, -2453,
+ -2384, -2378, 57, 206, -2356, -2227, -2365, 131,
+ -2400, -2387, -2383, -2397, -2394, -2392, 51, 57,
+ 51, 57, -2393, 200, 131, -2399, -2383, 124,
+ -2419, -2416, -2410, -2405, 104, -2080, -1935, -2395,
+ -2386, -2382, -2414, -2080, -2409, -2412, 104, 171,
+ -2317, -2110, -2344, -2451, -2430, -1084, -2426, -1098,
+ 164, 200, -1098, 121, 131, -2383, -2444, -2437,
+ -2435, 124, 131, 57, -2383, -2441, -2393, 57,
+ -2436, -2393, 57, -2429, -2448, -2442, -2425, -2446,
+ -2442, -2447, 214, -1084, 216, -2455, 196, 124,
+ -2461, -2458, -2460, 199, 199, -2474, -2470, -2467,
+ -906, 216, -2465, -906, -2452, -166, -2337, 199,
+ 214, -2450, 166, -2469, -2547, -2510, -2507, -2490,
+ -2485, 33, -2484, 34, 34, -1992, -2034, -614,
+ -2475, 251, -2503, -2501, -1835, -1947, 216, -2494,
+ 252, -1916, 131, -2434, -2434, -2502, 170, -2506,
+ -2046, -2499, 186, -2509, 40, 51, -2540, -2526,
+ -2521, -2517, -2516, 119, 119, -1853, 186, 119,
+ 131, -2506, -803, -2434, -2361, -2361, -2533, -2529,
+ 186, 186, -2532, -2524, 34, -2049, -2536, -2523,
+ -2538, -2505, 201, -2495, -2542, 170, -2050, -1389,
+ -2489, 93, 251, -2639, -2550, 217, -2566, -2552,
+ -2555, 28, -2544, -2560, 51, 206, -2488, -2449,
+ -2564, 206, 136, -2562, 43, -2562, -2626, -2584,
+ 57, -1794, -1595, -2575, -1596, 43, -2563, -1596,
+ 43, 136, -2557, -2562, -2563, -2636, -2574, -2350,
+ -2620, -2611, -2600, -2560, -2564, -1534, 51, -2582,
+ 49, 121, -4345, -4343, 136, 121, -4324, -2593,
+ -2608, -1535, 49, -2577, 136, -4343, -2603, -2599,
+ -1594, -2350, 131, -2615, -358, -2609, -2350, -2619,
+ -2595, -2613, 121, 57, -2623, -1534, 121, -1534,
+ 51, -2618, -2631, -1906, -2629, 124, -389, -1148,
+ -2392, -1064, -2617, -2607, -4148, -2591, 136, -2665,
+ -2641, -2661, -2657, -2652, -2647, -2646, 124, -2646,
+ -1848, 40, -2562, -2579, -1888, -1860, -2353, -2651,
+ -2353, -2658, -1834, 40, -2353, -2441, -4263, -2656,
+ -2655, -2678, -2672, -2669, -2577, -1834, -37, 121,
+ -2675, 27, 33, -2677, -2670, 33, -1894, 234,
+ 234, -3076, -2846, -2758, -2704, -2699, -2694, -2691,
+ -2690, 172, 172, -2690, 172, -2679, -2696, 229,
+ -2698, 229, 229, -2703, -2698, 229, -2676, 226,
+ -2722, -2713, -2710, -2709, 238, 238, -2709, 238,
+ -2664, -2719, -2718, -2717, 239, 239, 242, -2721,
+ -2637, 239, -2724, 112, -2746, -2737, -2730, -2729,
+ 168, 168, -2734, -2733, 202, 202, -2733, 202,
+ 59, -2739, 112, -2743, -2742, 59, 202, -2742,
+ 202, -2736, -2754, -2751, -2750, 202, 202, -2750,
+ 202, 59, -2755, -2742, -2736, -2745, -2803, -2786,
+ -2778, -2771, -2738, -2767, -2766, 195, 195, -2766,
+ 195, 131, -2769, -2775, -2742, 168, -2769, -2777,
+ 127, 127, -2784, -2783, -2782, 212, 212, 205,
+ 195, 212, -2738, -2791, -2790, 195, 195, -2799,
+ -2796, -2790, 195, -2770, -2790, -2757, 59, -894,
+ 192, 97, -2798, -2829, -2819, -2814, -2709, -2811,
+ -2810, 242, 242, -2810, -2797, -2720, -2815, -2817,
+ 239, -2818, 137, -2827, -2824, -2823, 137, 137,
+ -2823, 137, 234, 239, 137, -2841, -2838, -2835,
+ -2834, 127, 127, -2834, 127, 234, -2777, -2826,
+ 234, -2845, -2616, 232, -2839, 212, -2942, -2904,
+ -2894, -2883, -2862, -2859, -2856, -2855, 172, 182,
+ -2858, 174, 174, -2692, 232, -2860, -2872, -2867,
+ -2866, 235, 235, -2869, -2844, -2866, 235, 121,
+ -2876, -2875, 235, 235, -2880, -2879, 182, 182,
+ -2879, 234, 121, -2892, -2879, -2889, -2888, 182,
+ 182, -2888, -2882, -2881, -2893, 209, -2902, -2864,
+ -2898, 176, 176, -3216, -2465, -2900, -2717, 214,
+ -2928, -2921, -2916, -2911, -2910, 74, 74, -2913,
+ 214, -2915, 215, 215, -2918, 202, -2733, 202,
+ -2903, -2923, -2618, -2925, -2922, -2915, 215, -2920,
+ -2934, -2933, -2932, 215, 215, 182, -2893, -2940,
+ -2938, 193, -2939, 215, 209, -2901, -3026, -2964,
+ -2957, -2950, 103, -2914, 215, -2891, -2956, -2955,
+ -2954, 242, 242, 178, 178, -2959, 176, -2810,
+ -2718, 234, -2961, -2618, -2972, -2971, -2940, -2969,
+ 215, 215, -2840, 193, -3010, -3000, -2982, -2979,
+ -2978, 114, 114, -2978, 114, -37, -2990, -2987,
+ -2986, 120, 120, -2986, 120, -2970, -2997, -2995,
+ -2994, -2962, 114, 32, -2949, -2999, 120, 120,
+ -3003, -2939, 249, -3007, -2939, 97, 93, -2939,
+ 215, 93, -3014, -3013, -3006, 120, -3017, 120,
+ -3005, -3021, -3020, 212, 212, -2969, -4242, -2912,
+ -3002, -2996, -3063, -3049, -2742, -3035, -2835, 114,
+ -4304, -2868, -2813, -3039, -3031, -2559, -2418, -3043,
+ -3042, 137, 137, -2828, -3046, 114, 114, 101,
+ 54, -3053, 55, 54, -3048, -3056, 212, 214,
+ -3060, -2939, -3055, 54, -2939, 215, 214, -3067,
+ 49, -3058, -3052, -3069, -3047, -3073, -2818, 137,
+ 59, -2818, 137, 206, -3429, -3222, -3143, -3119,
+ 242, -3083, 238, -3112, -3107, -3097, -3094, -3091,
+ -2800, 59, -3089, -2800, 192, -3075, -3096, 112,
+ 112, -3103, -2800, -3096, 112, 59, -3072, -3096,
+ -2800, -3101, 59, -3109, -3072, -3111, -3106, 196,
+ -2799, -894, 59, -3106, -3032, -3110, -3108, -3136,
+ 149, -3133, -3128, -2796, -3105, -4005, -2798, -2798,
+ -3130, 112, -2790, 195, -3126, -3096, 112, -3124,
+ -3140, -3139, -3093, 208, -3139, 131, 167, -3185,
+ -3177, -3161, -3156, -3149, 71, -3153, -3152, 107,
+ 107, -3152, 107, 206, -3158, 47, -3160, 47,
+ 47, -3174, -3173, -3166, 119, 146, -3170, -3169,
+ 119, 119, -3169, -3138, -2562, 77, -3176, -3172,
+ 47, 204, -3182, -3181, -3072, 91, -3181, 91,
+ -3180, -3197, -3188, 77, -1004, -3192, 126, -3101,
+ -583, 211, 62, -3191, -2741, -3201, -634, -2736,
+ 59, -3203, -2736, -3215, -3212, -748, -3169, -2515,
+ -3199, -3196, -3195, 97, -582, 211, -2801, -3219,
+ -3799, 97, -2801, -790, 211, -3214, -3344, -3259,
+ -889, -3247, -3233, -3230, 199, 239, -3232, -3210,
+ 199, -3241, -989, -116, -3184, -3175, -3505, -3068,
+ 55, -3245, -116, 204, -3240, 242, 206, -3255,
+ -3252, 55, 206, -3246, -3232, -3244, 55, 242,
+ -4304, 55, 55, -3310, -3298, -3275, -3264, 146,
+ -3272, -3268, 142, 38, -3270, -3257, -3271, 111,
+ -3274, 111, 111, -3279, -3278, -3254, 146, -3285,
+ -3284, -940, -3254, 55, 91, -3292, -3289, 204,
+ 38, -3291, -3254, 204, -3289, 38, -3282, -3032,
+ -3277, 130, -3301, 107, 130, -3303, 108, -3307,
+ -3306, -3297, 47, -3309, 47, 47, -3335, -3313,
+ 204, -3317, -3308, -3296, 35, -3332, -3326, -3323,
+ -3271, 111, -3316, -3271, 19, -3115, -3329, 204,
+ 60, -3331, 60, 60, -3334, 60, 60, -3339,
+ -3116, -3322, 97, -2822, -3342, 137, 137, -3211,
+ -3360, -3358, -3348, 126, -3355, -3353, -2842, -3005,
+ 97, -194, -3211, -3357, -3352, 63, -3359, 116,
+ -3397, -3393, -3391, -3379, -3376, -3373, -3370, -3369,
+ 30, 30, -3369, 30, -3351, -3375, -3337, 47,
+ -3378, -3315, 47, -3381, 47, -3389, -3386, -45,
+ 63, -3253, -45, 232, 130, -45, 130, -874,
+ -3388, -3395, 151, 204, 47, -3398, -3427, -3408,
+ 78, -3407, -3404, 25, -3406, 38, 38, 63,
+ -3422, -3419, -3416, -3306, -3396, -3392, -3387, 19,
+ -3306, 47, 232, -100, 204, 101, -3291, -3306,
+ 232, 232, -3424, 47, 63, -3823, -3687, -3558,
+ -3481, -3471, -3452, -3446, -3443, -3441, -3440, 175,
+ 175, 106, -3421, -3445, 177, 177, -3450, -3449,
+ 177, 177, 177, -3415, -3465, -3459, -3458, -3445,
+ 177, -3385, 106, -3463, -3445, 177, -3239, 106,
+ 177, -3469, -4101, -2332, 197, 106, -3467, -3474,
+ 87, 116, -3478, -3477, 47, 47, -3477, 47,
+ 206, -3544, -3542, -3513, -3488, -3487, 106, 106,
+ -3508, -3503, -3498, -3495, -3487, 106, 131, -3487,
+ 106, 206, -3496, -3487, 106, -3497, -3494, -3499,
+ 206, -4101, -3502, 197, -3510, 131, -3440, -3509,
+ -3507, -3521, -3518, -3517, -3506, 63, -3517, 63,
+ -3470, -3537, -3530, -3518, -3517, 224, -3520, -4100,
+ 54, -3528, -3518, -3517, -3055, -3532, -4359, 214,
+ -2450, -3540, 47, 63, 47, -3533, -45, -3541,
+ -3551, 205, -3548, 108, -3517, -3526, -3462, -3555,
+ -4345, -3038, 244, -3517, 63, 244, -3585, -3566,
+ 126, -3563, 221, -3565, 203, 203, -3567, -3578,
+ -3571, 223, 154, -3575, -3574, 203, 203, -3574,
+ 203, -3554, -3580, 244, -3582, -3554, -3584, -3577,
+ 203, -3673, -3648, -3627, -3607, -3596, -3594, -3593,
+ -3554, 203, 126, 203, -3603, -3601, -3600, 185,
+ 185, -3519, -3583, -3605, 213, 63, 126, -3613,
+ -3440, -60, 175, 213, -3604, -3619, -3440, -3519,
+ -3602, 252, -3554, -3622, -3621, 203, -3624, 63,
+ -3626, 244, 63, -3646, -3632, -3631, -3554, 116,
+ -3636, -3631, 116, -3618, -3644, -3641, -46, 244,
+ -3554, -46, -3618, -3635, 63, -3617, -3593, -3616,
+ -3670, -3660, -3656, -3621, -3595, 252, 252, -3653,
+ -3658, 150, 185, 252, -3665, 177, -3350, -3655,
+ 213, -3449, -3574, 213, -3667, -3664, -3672, 188,
+ 203, -3684, -3678, -3677, 130, 211, -3681, 126,
+ 130, -583, 188, -3676, -3220, -3671, -3669, -3780,
+ -3749, -3733, -3709, -3704, -3701, -3698, 116, -3595,
+ 206, 213, -3672, 206, 213, -3584, -3697, 213,
+ -3706, 181, -3672, 203, 213, -3717, -3714, -3713,
+ 116, 116, -3713, 116, -3703, -3725, -3722, -3721,
+ -3664, 116, -3721, 116, -3702, -3730, -3728, -3703,
+ -3713, -3667, -3705, 181, -3724, -3739, -3738, -3705,
+ 181, -3686, 178, -3743, -3738, 178, 206, -3746,
+ 181, 120, -3748, -3696, 120, -3761, -3754, -3753,
+ 205, 205, -3758, -2782, 212, 206, -2782, 212,
+ -3696, -3767, -3764, -3747, -3765, -3477, 55, -3775,
+ -3670, 37, -3662, -3282, 46, -3771, -3763, -3631,
+ -3759, 128, -3774, -3737, -3805, -3786, -3784, 185,
+ -3759, -3663, -3802, -3795, -3792, -3791, 198, 198,
+ -3791, 198, -3647, -3792, -3791, 198, -3388, -4132,
+ -3798, 130, -3804, 244, 198, -3810, -3807, -3809,
+ 198, 198, -3814, -3783, 244, -3557, -3816, 198,
+ -3820, -3819, -3803, 203, -3819, -3818, 200, -3965,
+ -3874, -3856, -3835, -3448, -3831, 204, -3822, -3833,
+ 204, 204, -3800, -3448, -3846, -3740, -3840, 32,
+ -2955, 244, -3841, -2037, -3554, 130, -3850, -3849,
+ 87, 87, -2997, -3844, -3843, -1409, -3834, -3794,
+ -3860, -100, 252, 213, 239, -3863, 213, -3867,
+ -3866, 60, 60, -3871, -3342, -3859, 197, -3342,
+ 137, -3869, -3905, -3903, -3891, -3882, -3849, 87,
+ 213, 197, -3312, -3887, -3417, -3873, -3554, -3417,
+ -3886, 213, -3889, -3331, -3895, -3334, -3888, -3899,
+ -3334, 60, -3885, -3334, -3858, 252, 200, -3904,
+ 225, -3935, -3930, -3478, -3917, -3915, -3913, -3334,
+ 200, -3334, -3902, 60, 200, -3475, -3922, -3334,
+ 60, -3916, 47, -3921, -3770, 200, -3579, -2578,
+ 200, 200, -3477, -2497, -3928, -3926, -3923, -3962,
+ -3943, -3941, -3334, -3914, -3901, 47, 60, -3959,
+ -3952, -3332, -1034, -3900, 128, 206, 128, -3948,
+ -3332, -3949, -3742, -3246, 24, -3251, -3954, -3477,
+ -3958, -3742, -3342, -3703, -3703, -3983, -3972, -3731,
+ -2980, -3703, -3964, -3963, -3978, -2999, -3872, 206,
+ -3246, -3251, -3013, -3953, 197, -3980, -3977, -3994,
+ -3989, -3987, 107, 205, 108, -3992, 47, -3971,
+ 114, 252, -4032, -4020, -4011, -4000, -3342, -3960,
+ -3332, -3962, 46, -3947, -2383, 42, -2353, -2353,
+ -4381, -4006, -2353, -4017, -4014, -2364, -3334, 60,
+ -4009, -4019, 136, 47, -4028, -4025, -3477, 206,
+ 136, -3477, -4023, -1274, -3309, -3359, -4026, -4018,
+ -4019, -3477, -3334, -4018, -4031, -4030, -4037, -2324,
+ -4147, -4347, -4213, -4183, -4091, -4075, -4062, -4049,
+ 232, -2341, -4058, -4055, -4054, 241, 241, -4054,
+ -4016, -3579, -4060, -3579, 241, -4057, -2341, -4072,
+ -4069, 232, -4068, 214, 214, -4060, 241, -4018,
+ 214, 241, -4031, -4084, -4082, -4080, 214, 232,
+ 232, 214, 232, 249, -4089, -4088, 104, -4018,
+ 232, -4088, -4031, -4135, -4125, -4123, -4113, -4109,
+ -4104, -4101, -4100, 46, 46, -4100, 46, -4074,
+ -4106, -4061, -4100, 46, -2654, 44, -2086, -3916,
+ -3579, -4121, -4118, -2333, 210, -4057, -2333, -4108,
+ 244, 241, -4007, -4124, 214, 49, -2082, -2078,
+ -4102, 122, -4129, -4122, 42, -4120, -4119, -4164,
+ -4160, -4151, -4144, -3051, -3055, -4134, -4056, -4003,
+ -3058, -3055, -3855, -3553, -4380, -2050, 201, -4153,
+ -4150, -4157, -4156, 54, 54, -4156, -4149, -2292,
+ 214, -4163, 210, 54, -4171, -4140, -4167, 214,
+ -4381, -2292, 210, -4174, -4073, -2292, -4176, -4169,
+ -4180, -4124, 210, -4175, -4124, -4159, 240, -4185,
+ 241, -4189, 241, 214, 186, -4203, -4195, -4124,
+ -4068, -2293, -4181, -4198, -4197, 210, -4200, -4194,
+ -4124, -4158, 48, -4205, 48, -4207, 240, -4123,
+ -4124, 214, -4202, -4008, -4210, -4333, -4281, -4222,
+ 232, -4219, 46, -4221, -4100, 54, -4254, -4234,
+ -4227, 46, 206, -4231, -4230, 55, 55, -4230,
+ 46, -4220, -4237, -3250, 44, -4252, -4246, -4243,
+ -4230, 44, -4236, -4230, -4236, -4242, -4250, 167,
+ -4245, -4233, 55, 48, -3240, -4212, -4258, -4257,
+ 54, 54, -4274, -4267, -4264, -4256, 54, 44,
+ -4256, -4256, 201, -4264, -4256, 48, -4265, -4211,
+ -4253, -4201, -4268, -4256, 56, -1295, -3979, -4277,
+ 42, -4291, -4289, 171, -4286, 151, -3005, -4279,
+ 53, -4088, -4288, -4296, -4293, -4295, 49, 130,
+ -4316, -4313, -4306, -4303, -3254, -4290, -4287, -3254,
+ 55, -2215, -4303, -3254, -4302, 53, 130, -4309,
+ -4308, -4315, -2224, 130, 55, -4320, 49, 44,
+ -4328, -4325, -4324, 49, 49, -4324, 49, -4276,
+ -4294, -4102, 46, -4276, -4327, -4340, -4335, -4182,
+ -4338, -4314, 214, -4312, -3048, -4081, -3051, 49,
+ -4343, 49, -4343, -1804, -958, -3946, -4278, -4362,
+ -4353, -4360, -4358, -4357, -4344, 252, 37, 49,
+ -4361, 37, -4366, -1171, 252, -4343, -4384, -4372,
+ -1164, 252, 100, -4344, -2496, -3655, -4378, -4377,
+ 37, 37, -4382, 130, -4356, 206, 206, 37,
+ -4310, 49,
};
static long _vq_p_lsp32_0[] = {
- 252, 16, 164, 68, 88, 88, 208, 36,
- 36, 208, 88, 88, 88, 140, 140, 548,
- 88, 88, 208, 208, 88, 88, 88, 208,
- 208, 88, 88, 88, 140, 248, 140, 140,
- 492, 492, 864, 208, 208, 492, 492, 880,
- 68, 68, 68, 68, 68, 68, 248, 208,
- 208, 208, 248, 140, 780, 368, 140, 140,
- 140, 164, 164, 164, 164, 492, 208, 300,
- 300, 300, 864, 484, 68, 68, 68, 864,
- 484, 248, 68, 68, 248, 248, 728, 140,
- 140, 140, 696, 484, 484, 780, 696, 696,
- 696, 880, 48, 208, 48, 48, 48, 48,
- 48, 80, 80, 208, 184, 164, 208, 776,
- 524, 776, 48, 548, 48, 48, 48, 524,
- 612, 68, 548, 452, 524, 452, 248, 248,
- 300, 292, 208, 68, 68, 68, 300, 940,
- 864, 184, 300, 208, 208, 300, 68, 248,
- 68, 68, 596, 292, 248, 248, 420, 420,
- 420, 68, 596, 292, 292, 292, 600, 420,
- 420, 596, 4, 36, 164, 4, 4, 356,
- 4, 4, 164, 4, 140, 36, 36, 36,
- 48, 164, 164, 164, 356, 356, 356, 356,
- 388, 832, 388, 832, 484, 4, 68, 164,
- 340, 356, 4, 4, 4, 4, 356, 164,
- 164, 164, 612, 200, 140, 140, 140, 200,
- 164, 852, 68, 140, 200, 68, 164, 164,
- 68, 832, 740, 852, 740, 68, 68, 68,
- 740, 484, 484, 200, 832, 484, 200, 164,
- 200, 832, 740, 356, 356, 356, 624, 776,
- 388, 388, 600, 356, 356, 388, 4, 48,
- 48, 600, 644, 68, 600, 612, 4, 4,
- 776, 4, 4, 624, 592, 356, 592, 644,
- 644, 592, 140, 140, 592, 696, 592, 128,
- 740, 128, 128, 128, 196, 104, 196, 196,
- 832, 936, 676, 68, 68, 68, 484, 484,
- 68, 196, 740, 740, 916, 484, 484, 484,
- 676, 676, 696, 292, 420, 420, 420, 600,
- 936, 68, 872, 68, 68, 592, 644, 644,
- 304, 872, 740, 740, 304, 852, 68, 48,
- 48, 48, 48, 48, 872, 272, 644, 644,
- 200, 292, 68, 68, 68, 872, 200, 664,
- 304, 548, 364, 260, 260, 260, 260, 260,
- 268, 460, 268, 12, 80, 12, 12, 12,
- 12, 80, 80, 80, 36, 304, 268, 12,
- 12, 12, 12, 364, 364, 268, 268, 364,
- 364, 496, 12, 12, 12, 12, 364, 36,
- 36, 200, 364, 200, 836, 16, 16, 80,
- 304, 12, 12, 12, 12, 12, 12, 804,
- 804, 136, 136, 772, 136, 136, 200, 496,
- 76, 76, 76, 176, 136, 136, 176, 136,
- 136, 200, 12, 80, 88, 88, 12, 12,
- 272, 208, 88, 88, 88, 368, 208, 208,
- 268, 80, 80, 80, 524, 204, 12, 12,
- 12, 12, 492, 12, 12, 12, 208, 12,
- 492, 12, 204, 88, 12, 208, 664, 88,
- 88, 88, 268, 208, 208, 16, 16, 268,
- 492, 272, 664, 804, 804, 140, 88, 88,
- 88, 176, 492, 140, 836, 804, 176, 88,
- 88, 88, 88, 176, 460, 268, 268, 176,
- 460, 300, 4, 100, 136, 888, 136, 136,
- 76, 76, 76, 76, 100, 100, 100, 516,
- 516, 36, 100, 36, 4, 100, 4, 4,
- 4, 100, 100, 300, 36, 36, 36, 36,
- 516, 100, 100, 204, 100, 100, 204, 164,
- 164, 356, 356, 952, 100, 100, 4, 4,
- 204, 100, 100, 776, 644, 300, 708, 176,
- 36, 76, 36, 36, 36, 36, 136, 516,
- 176, 516, 136, 76, 176, 76, 76, 176,
- 592, 364, 364, 176, 592, 4, 364, 4,
- 4, 4, 4, 4, 4, 592, 104, 196,
- 196, 260, 260, 196, 140, 140, 140, 36,
- 196, 36, 300, 260, 260, 364, 300, 516,
- 4, 4, 36, 140, 260, 260, 260, 548,
- 644, 140, 164, 164, 196, 492, 36, 80,
- 48, 48, 80, 36, 36, 624, 48, 548,
- 620, 548, 564, 48, 564, 620, 48, 204,
- 564, 340, 120, 56, 808, 676, 312, 56,
- 56, 56, 56, 56, 56, 312, 312, 340,
- 420, 120, 120, 312, 420, 292, 340, 312,
- 312, 676, 292, 808, 808, 292, 644, 600,
- 56, 808, 120, 120, 56, 764, 764, 56,
- 56, 808, 872, 420, 120, 120, 120, 120,
- 940, 808, 808, 340, 600, 108, 312, 108,
- 108, 108, 108, 108, 312, 292, 292, 292,
- 452, 312, 312, 200, 452, 108, 108, 108,
- 108, 200, 644, 104, 200, 200, 48, 48,
- 48, 620, 292, 340, 624, 48, 48, 340,
- 292, 292, 340, 184, 184, 776, 376, 292,
- 420, 120, 120, 440, 292, 120, 120, 120,
- 420, 120, 120, 340, 292, 292, 340, 376,
- 376, 312, 292, 292, 292, 24, 312, 312,
- 24, 808, 292, 292, 120, 24, 184, 184,
- 292, 120, 24, 24, 312, 376, 120, 120,
- 24, 184, 184, 184, 172, 340, 344, 420,
- 120, 120, 120, 312, 312, 312, 340, 420,
- 420, 420, 440, 440, 696, 440, 312, 292,
- 292, 344, 312, 312, 452, 440, 440, 452,
- 292, 324, 108, 108, 108, 376, 108, 108,
- 344, 108, 376, 340, 228, 228, 228, 228,
- 376, 376, 312, 312, 312, 340, 340, 228,
- 324, 228, 228, 228, 228, 504, 324, 324,
- 280, 324, 324, 280, 204, 280, 280, 324,
- 324, 24, 924, 924, 924, 980, 312, 228,
- 228, 228, 120, 312, 120, 120, 344, 24,
- 228, 228, 228, 24, 312, 24, 24, 120,
- 24, 280, 632, 120, 56, 56, 56, 120,
- 280, 912, 120, 912, 120, 120, 120, 120,
- 764, 764, 912, 228, 24, 344, 764, 764,
- 24, 376, 16, 536, 24, 228, 228, 24,
- 632, 632, 440, 228, 228, 228, 228, 804,
- 632, 504, 280, 280, 440, 568, 376, 376,
- 772, 504, 504, 568, 440, 440, 600, 624,
- 600, 376, 280, 568, 568, 632, 420, 376,
- 420, 280, 440, 280, 976, 440, 440, 624,
- 880, 696, 280, 880, 280, 452, 184, 184,
- 184, 248, 184, 184, 184, 248, 208, 208,
- 184, 624, 248, 524, 292, 248, 248, 292,
- 292, 452, 452, 248, 248, 248, 248, 196,
- 440, 196, 624, 292, 292, 196, 440, 624,
- 292, 624, 440, 24, 24, 248, 440, 248,
- 248, 248, 248, 440, 24, 696, 880, 248,
- 24, 24, 280, 376, 184, 376, 184, 184,
- 536, 376, 376, 556, 504, 184, 376, 24,
- 440, 440, 440, 504, 400, 140, 88, 88,
- 248, 400, 452, 524, 248, 624, 496, 88,
- 88, 88, 88, 524, 400, 400, 400, 496,
- 248, 248, 196, 568, 524, 196, 196, 140,
- 140, 88, 88, 304, 452, 452, 460, 932,
- 460, 88, 88, 88, 24, 592, 140, 592,
- 632, 568, 496, 496, 632, 304, 400, 400,
- 400, 196, 460, 196, 880, 908, 268, 260,
- 260, 144, 400, 144, 144, 268, 80, 80,
- 336, 144, 144, 300, 268, 196, 196, 144,
- 144, 144, 144, 400, 400, 336, 248, 208,
- 208, 208, 336, 400, 80, 80, 336, 208,
- 400, 208, 208, 400, 208, 304, 524, 184,
- 80, 664, 664, 400, 208, 208, 208, 80,
- 80, 400, 80, 304, 400, 400, 400, 568,
- 336, 80, 524, 80, 80, 80, 80, 80,
- 556, 524, 336, 400, 336, 144, 144, 144,
- 496, 524, 400, 400, 400, 336, 16, 304,
- 144, 144, 144, 304, 868, 868, 932, 400,
- 400, 336, 868, 556, 400, 504, 400, 400,
- 76, 524, 580, 524, 184, 184, 524, 184,
- 184, 336, 336, 504, 76, 76, 932, 452,
- 452, 452, 504, 76, 400, 524, 504, 504,
- 504, 504, 504, 504, 324, 324, 324, 336,
- 584, 556, 504, 504, 76, 76, 556, 556,
- 584, 556, 632, 368, 568, 556, 556, 304,
- 568, 824, 824, 304, 400, 400, 568, 400,
- 568, 824, 16, 568, 568, 632, 632, 632,
- 16, 932, 868, 16, 452, 144, 16, 16,
- 16, 16, 16, 260, 80, 80, 260, 144,
- 144, 260, 260, 304, 548, 452, 452, 80,
- 80, 588, 144, 452, 452, 452, 16, 620,
- 260, 140, 260, 260, 620, 300, 452, 300,
- 548, 300, 16, 620, 48, 48, 184, 48,
- 48, 260, 452, 496, 108, 108, 304, 588,
- 452, 76, 184, 184, 524, 184, 524, 80,
- 76, 16, 16, 452, 76, 620, 76, 452,
- 452, 196, 496, 108, 108, 108, 108, 108,
- 108, 108, 16, 172, 172, 172, 588, 324,
- 172, 172, 324, 324, 564, 504, 564, 336,
- 80, 336, 172, 336, 200, 80, 80, 200,
- 200, 184, 200, 476, 604, 288, 96, 96,
- 0, 0, 0, 0, 96, 96, 96, 0,
- 0, 0, 0, 352, 288, 288, 288, 288,
- 288, 640, 384, 92, 0, 0, 0, 0,
- 0, 512, 92, 92, 92, 384, 92, 92,
- 92, 564, 156, 0, 0, 16, 24, 24,
- 156, 156, 24, 156, 0, 16, 336, 24,
- 352, 92, 92, 0, 92, 0, 0, 92,
- 24, 92, 92, 92, 92, 604, 156, 156,
- 336, 156, 336, 668, 604, 604, 796, 412,
- 156, 156, 156, 104, 44, 44, 412, 412,
- 44, 412, 412, 44, 412, 412, 640, 540,
- 540, 96, 416, 32, 32, 32, 32, 732,
- 416, 416, 44, 416, 416, 288, 32, 608,
- 32, 32, 32, 288, 160, 160, 300, 32,
- 32, 32, 160, 160, 96, 96, 96, 96,
- 160, 160, 160, 352, 160, 288, 192, 192,
- 96, 96, 32, 32, 32, 300, 480, 480,
- 96, 200, 704, 284, 284, 640, 284, 284,
- 284, 412, 288, 200, 368, 284, 284, 284,
- 284, 540, 412, 200, 396, 672, 160, 352,
- 160, 160, 160, 160, 300, 608, 608, 44,
- 288, 300, 608, 288, 608, 608, 608, 608,
- 736, 732, 732, 44, 300, 28, 28, 28,
- 476, 476, 200, 220, 220, 220, 476, 476,
- 476, 732, 884, 904, 316, 380, 444, 576,
- 120, 444, 56, 56, 56, 56, 624, 444,
- 120, 120, 564, 188, 188, 188, 444, 572,
- 572, 564, 120, 624, 572, 572, 572, 188,
- 188, 572, 576, 944, 944, 956, 60, 60,
- 60, 60, 60, 380, 124, 124, 24, 64,
- 64, 64, 24, 24, 444, 56, 56, 56,
- 444, 380, 772, 336, 56, 336, 124, 124,
- 380, 56, 444, 444, 188, 188, 24, 124,
- 572, 188, 64, 64, 64, 316, 24, 572,
- 188, 24, 316, 24, 380, 64, 64, 24,
- 124, 124, 124, 624, 380, 380, 336, 508,
- 64, 64, 564, 316, 124, 44, 44, 124,
- 124, 24, 576, 124, 44, 380, 56, 188,
- 188, 188, 188, 508, 444, 444, 804, 56,
- 772, 120, 444, 136, 828, 508, 444, 444,
- 444, 444, 700, 136, 508, 60, 60, 444,
- 444, 444, 624, 764, 700, 700, 700, 764,
- 828, 828, 764, 764, 304, 912, 828, 828,
- 624, 764, 804, 860, 92, 124, 384, 60,
- 60, 60, 44, 384, 124, 64, 64, 124,
- 304, 60, 636, 508, 64, 512, 64, 64,
- 64, 64, 352, 188, 188, 188, 316, 316,
- 336, 188, 188, 188, 188, 512, 508, 508,
- 580, 316, 316, 316, 336, 508, 76, 188,
- 76, 92, 512, 92, 76, 580, 604, 76,
- 92, 92, 636, 316, 316, 316, 76, 104,
- 136, 136, 384, 384, 384, 384, 132, 132,
- 508, 508, 44, 44, 44, 860, 188, 188,
- 188, 508, 508, 508, 580, 700, 604, 604,
- 580, 884, 636, 636, 636, 76, 700, 624,
- 772, 192, 192, 192, 96, 96, 96, 96,
- 496, 224, 224, 224, 784, 352, 224, 544,
- 124, 124, 192, 192, 192, 192, 192, 224,
- 224, 224, 196, 196, 224, 224, 196, 256,
- 256, 416, 480, 256, 196, 592, 496, 256,
- 448, 124, 64, 64, 64, 496, 316, 124,
- 124, 496, 448, 256, 224, 224, 256, 64,
- 64, 64, 224, 196, 196, 124, 124, 624,
- 224, 224, 224, 772, 576, 772, 316, 316,
- 316, 136, 352, 352, 96, 64, 96, 96,
- 64, 64, 664, 124, 784, 64, 64, 304,
- 316, 304, 64, 64, 64, 224, 124, 304,
- 268, 316, 96, 268, 316, 268, 60, 60,
- 60, 60, 60, 384, 124, 304, 64, 64,
- 64, 304, 304, 64, 224, 64, 268, 224,
- 496, 124, 124, 124, 224, 224, 448, 448,
- 124, 124, 124, 124, 704, 448, 256, 448,
- 268, 124, 124, 124, 268, 12, 576, 12,
- 256, 576, 12, 704, 60, 480, 256, 480,
- 128, 128, 128, 128, 480, 480, 256, 192,
- 192, 192, 192, 256, 256, 12, 256, 800,
- 128, 128, 128, 128, 128, 388, 320, 320,
- 320, 320, 832, 800, 800, 12, 388, 12,
- 800, 388, 388, 388, 12, 840, 832, 800,
- 784, 252, 60, 252, 60, 252, 128, 128,
- 60, 60, 128, 252, 252, 252, 252, 380,
- 380, 380, 60, 60, 60, 60, 380, 128,
- 124, 124, 784, 448, 664, 252, 252, 252,
- 128, 128, 128, 784, 256, 252, 252, 252,
- 252, 252, 252, 576, 448, 280, 320, 280,
- 256, 300, 280, 280, 280, 448, 600, 892,
- 576, 320, 320, 484, 320, 576, 624, 320,
- 320, 128, 128, 128, 128, 388, 320, 320,
- 624, 740, 832, 388, 624, 740, 120, 120,
- 120, 764, 56, 56, 280, 260, 120, 268,
- 496, 56, 56, 56, 260, 120, 260, 196,
- 956, 380, 56, 572, 420, 380, 56, 56,
- 56, 420, 572, 380, 380, 196, 496, 56,
- 304, 420, 260, 572, 56, 676, 364, 576,
- 380, 676, 380, 380, 380, 380, 76, 76,
- 892, 892, 420, 76, 76, 304, 676, 56,
- 16, 872, 872, 16, 56, 940, 892, 420,
- 576, 864, 892, 576, 576, 576, 76, 420,
- 892, 420, 420, 76, 16, 892, 420, 16,
- 252, 252, 252, 252, 76, 872, 76, 252,
- 252, 740, 536, 252, 252, 204, 460, 460,
- 484, 460, 716, 484, 716, 460, 576, 484,
- 484, 460, 484, 832, 832, 484, 484, 868,
- 484, 460, 484, 484, 484, 716, 944, 400,
- 864, 864, 864, 944, 892, 400, 400, 892,
- 864, 716, 536, 864, 484, 864, 484, 536,
- 864, 864, 880, 484, 484, 944, 460, 976,
- 420, 676, 420, 420, 204, 460, 676, 944,
- 696, 420, 420, 420, 460, 536, 944, 400,
- 944, 664, 664, 744, 180, 232, 52, 296,
- 296, 560, 296, 296, 560, 52, 52, 52,
- 244, 244, 244, 296, 296, 296, 536, 688,
- 660, 660, 536, 616, 488, 488, 244, 244,
- 488, 488, 460, 244, 244, 560, 560, 616,
- 616, 244, 244, 244, 244, 460, 520, 520,
- 520, 520, 716, 616, 268, 244, 244, 244,
- 520, 52, 52, 784, 148, 488, 180, 148,
- 148, 148, 180, 616, 180, 268, 616, 180,
- 180, 268, 724, 424, 424, 424, 424, 488,
- 488, 488, 400, 592, 520, 20, 360, 148,
- 148, 360, 360, 520, 20, 20, 20, 148,
- 148, 500, 520, 52, 52, 716, 692, 816,
- 500, 500, 716, 616, 204, 148, 20, 52,
- 20, 20, 424, 20, 20, 204, 144, 148,
- 148, 144, 20, 20, 20, 20, 144, 688,
- 204, 148, 148, 148, 460, 144, 616, 148,
- 148, 148, 424, 424, 360, 360, 360, 616,
- 424, 144, 460, 148, 144, 20, 360, 360,
- 20, 232, 232, 232, 424, 360, 360, 204,
- 72, 8, 8, 8, 8, 8, 8, 84,
- 72, 72, 460, 72, 84, 72, 84, 404,
- 180, 84, 84, 148, 148, 148, 260, 212,
- 180, 84, 84, 84, 84, 84, 680, 392,
- 392, 212, 212, 260, 392, 460, 392, 180,
- 196, 196, 460, 180, 180, 392, 196, 404,
- 180, 180, 180, 180, 196, 404, 404, 460,
- 488, 456, 456, 268, 424, 680, 268, 456,
- 456, 456, 268, 488, 488, 488, 560, 392,
- 392, 424, 424, 268, 212, 148, 148, 148,
- 148, 148, 664, 360, 392, 212, 212, 212,
- 212, 144, 152, 144, 664, 144, 232, 212,
- 212, 212, 144, 232, 232, 392, 392, 260,
- 424, 196, 616, 232, 232, 628, 436, 404,
- 276, 296, 456, 456, 116, 116, 116, 436,
- 296, 196, 784, 436, 116, 276, 276, 436,
- 456, 84, 404, 84, 84, 84, 404, 180,
- 180, 144, 84, 84, 180, 784, 592, 180,
- 116, 116, 116, 716, 716, 456, 180, 180,
- 180, 536, 536, 84, 84, 84, 276, 116,
- 116, 776, 116, 116, 176, 532, 404, 404,
- 176, 404, 404, 8, 536, 532, 536, 84,
- 176, 404, 456, 532, 532, 532, 920, 856,
- 856, 176, 116, 180, 244, 52, 52, 116,
- 116, 244, 244, 116, 116, 600, 116, 116,
- 280, 468, 180, 280, 592, 180, 180, 592,
- 692, 600, 116, 116, 116, 116, 116, 436,
- 296, 296, 176, 296, 52, 52, 296, 176,
- 176, 152, 176, 592, 116, 116, 116, 116,
- 116, 468, 436, 436, 176, 276, 276, 280,
- 276, 204, 692, 148, 148, 148, 196, 196,
- 180, 196, 276, 276, 532, 396, 396, 52,
- 52, 308, 132, 308, 308, 820, 308, 468,
- 52, 52, 52, 52, 280, 556, 520, 556,
- 684, 244, 244, 400, 400, 468, 400, 400,
- 244, 244, 152, 400, 556, 308, 308, 308,
- 308, 468, 308, 556, 716, 52, 820, 52,
- 52, 52, 204, 468, 468, 296, 296, 296,
- 468, 204, 204, 468, 296, 244, 244, 244,
- 204, 684, 264, 52, 244, 40, 40, 52,
- 52, 40, 40, 40, 264, 52, 684, 144,
- 40, 40, 40, 660, 296, 296, 244, 144,
- 264, 144, 308, 308, 144, 244, 328, 296,
- 296, 144, 244, 560, 560, 688, 244, 244,
- 244, 660, 328, 328, 328, 328, 660, 144,
- 560, 560, 664, 244, 244, 272, 308, 308,
- 328, 308, 308, 52, 52, 176, 264, 264,
- 520, 712, 520, 264, 144, 520, 264, 264,
- 144, 328, 328, 328, 328, 660, 552, 328,
- 520, 20, 20, 20, 552, 552, 688, 52,
- 52, 52, 52, 52, 204, 660, 272, 556,
- 520, 520, 272, 264, 264, 264, 264, 272,
- 172, 520, 520, 144, 660, 552, 204, 80,
- 80, 52, 20, 20, 20, 52, 80, 520,
- 500, 52, 80, 264, 264, 200, 200, 264,
- 308, 308, 172, 396, 396, 264, 264, 172,
- 596, 396, 396, 16, 264, 500, 500, 264,
- 264, 16, 520, 520, 40, 40, 40, 40,
- 340, 340, 328, 328, 16, 16, 344, 344,
- 560, 16, 328, 328, 328, 328, 712, 596,
- 752, 16, 20, 264, 264, 200, 200, 268,
- 264, 264, 304, 552, 464, 464, 200, 152,
- 80, 340, 340, 340, 80, 464, 464, 340,
- 340, 340, 80, 344, 464, 464, 152, 144,
- 40, 372, 588, 200, 396, 200, 200, 200,
- 268, 144, 396, 264, 264, 396, 44, 44,
- 44, 272, 144, 144, 264, 264, 396, 264,
- 396, 396, 712, 596, 144, 396, 396, 564,
- 272, 44, 44, 564, 44, 44, 564, 272,
- 780, 264, 24, 272, 656, 340, 24, 24,
- 264, 16, 152, 16, 16, 200, 200, 200,
- 264, 264, 264, 40, 40, 40, 264, 264,
- 264, 204, 340, 204, 144, 40, 40, 24,
- 24, 144, 340, 204, 16, 564, 372, 40,
- 40, 16, 16, 372, 372, 16, 564, 24,
- 24, 144, 656, 40, 24, 16, 24, 344,
- 328, 24, 24, 328, 344, 24, 272, 340,
- 40, 40, 176, 144, 328, 328, 328, 340,
- 144, 340, 340, 176, 596, 780, 328, 40,
- 328, 40, 40, 176, 656, 328, 592, 172,
- 40, 40, 460, 268, 264, 972, 868, 328,
- 328, 328, 328, 656, 340, 868, 536, 264,
- 264, 536, 656, 824, 596, 760, 760, 44,
- 372, 44, 44, 44, 868, 684, 132, 372,
- 44, 684, 132, 132, 372, 264, 428, 308,
- 132, 132, 132, 132, 372, 372, 372, 308,
- 684, 760, 428, 428, 308, 244, 244, 824,
- 308, 168, 684, 824, 656, 656, 684, 684,
- 240, 616, 560, 424, 232, 232, 232, 240,
- 240, 240, 556, 360, 360, 556, 556, 232,
- 236, 236, 240, 240, 240, 560, 556, 824,
- 432, 432, 760, 240, 240, 20, 20, 20,
- 552, 760, 240, 240, 240, 240, 868, 584,
- 552, 552, 552, 688, 584, 432, 432, 720,
- 20, 20, 20, 360, 360, 360, 556, 584,
- 688, 584, 520, 172, 172, 500, 172, 760,
- 236, 216, 408, 216, 216, 216, 216, 240,
- 236, 236, 236, 408, 240, 240, 848, 236,
- 236, 408, 528, 240, 20, 20, 20, 20,
- 20, 464, 240, 216, 216, 216, 528, 240,
- 240, 240, 528, 464, 760, 748, 748, 236,
- 20, 360, 240, 20, 748, 240, 360, 360,
- 20, 628, 500, 20, 584, 500, 628, 652,
- 236, 236, 236, 236, 236, 584, 848, 360,
- 748, 500, 240, 240, 748, 528, 360, 360,
- 324, 104, 324, 748, 500, 584, 172, 240,
- 172, 424, 232, 20, 216, 240, 232, 172,
- 240, 232, 216, 216, 216, 408, 240, 240,
- 240, 432, 408, 104, 104, 216, 232, 216,
- 216, 172, 104, 748, 928, 216, 216, 216,
- 876, 652, 848, 628, 848, 648, 648, 652,
- 844, 812, 232, 232, 240, 232, 240, 240,
- 844, 360, 360, 360, 812, 328, 236, 464,
- 408, 408, 408, 528, 464, 464, 812, 812,
- 528, 844, 760, 528, 332, 332, 236, 236,
- 236, 720, 528, 528, 528, 528, 760, 756,
- 720, 712, 712, 712, 760, 168, 552, 552,
- 552, 168, 712, 596, 332, 596, 596, 168,
- 168, 332, 328, 328, 760, 788, 712, 848,
- 756, 848, 748, 328, 432, 432, 432, 432,
- 432, 752, 560, 748, 328, 328, 560, 748,
- 328, 328, 328, 760, 344, 344, 344, 104,
- 792, 752, 104, 104, 464, 104, 752, 464,
- 552, 552, 748, 104, 720, 104, 432, 408,
- 432, 408, 408, 964, 432, 472, 472, 756,
- 756, 472, 464, 472, 756, 720, 536, 428,
- 332, 332, 500, 396, 396, 428, 500, 332,
- 236, 236, 236, 332, 332, 332, 428, 528,
- 528, 500, 500, 500, 428, 528, 528, 528,
- 528, 844, 552, 844, 552, 168, 520, 168,
- 428, 112, 112, 112, 200, 596, 464, 104,
- 472, 500, 500, 428, 528, 528, 528, 168,
- 168, 464, 280, 300, 176, 176, 176, 300,
- 300, 300, 300, 300, 300, 168, 332, 332,
- 428, 332, 332, 596, 332, 760, 728, 756,
- 596, 596, 760, 728, 728, 728, 776, 168,
- 168, 760, 200, 200, 600, 200, 200, 600,
- 340, 464, 340, 340, 340, 464, 596, 760,
- 472, 332, 472, 472, 816, 600, 176, 176,
- 176, 168, 472, 168, 472, 472, 472, 176,
- 176, 472, 472, 428, 428, 472, 472, 152,
- 176, 176, 152, 152, 428, 428, 428, 756,
- 728, 728, 728, 104, 756, 104, 104, 408,
- 344, 344, 344, 280, 344, 776, 464, 600,
- 104, 408, 472, 408, 408, 408, 152, 152,
- 472, 472, 464, 152, 408, 408, 152, 472,
- 728, 728, 204, 776, 584, 756, 756, 556,
- 776, 556, 172, 756, 756, 756, 432, 432,
- 172, 472, 472, 472, 896, 536, 536, 172,
- 528, 756, 112, 112, 104, 152, 112, 104,
- 104, 112, 112, 152, 168, 104, 112, 112,
- 168, 168, 112, 168, 112, 112, 172, 152,
- 684, 684, 112, 112, 112, 112, 408, 152,
- 152, 584, 472, 408, 408, 408, 400, 464,
- 104, 104, 104, 868, 664, 332, 168, 168,
- 168, 272, 236, 236, 332, 272, 428, 332,
- 168, 172, 168, 168, 152, 152, 152, 428,
- 168, 168, 152, 152, 204, 408, 428, 408,
- 408, 204, 152, 408, 408, 428, 428, 152,
- 236, 236, 236, 168, 168, 236, 236, 152,
- 408, 684, 756, 168, 168, 728, 272, 332,
- 332, 332, 684, 152, 528, 528, 408, 408,
- 408, 868, 528, 464, 236, 168, 216, 168,
- 168, 824, 716, 216, 408, 168, 168, 168,
- 716, 844, 408, 716, 536, 236, 900, 236,
- 236, 844, 536, 408, 536, 900, 216, 216,
- 408, 408, 536, 844, 216, 216, 216, 216,
- 216, 216, 216, 472, 812, 428, 652, 652,
- 428, 652, 652, 428, 428, 812, 428, 684,
- 584, 652, 168, 204, 788, 204, 204, 152,
- 152, 176, 112, 112, 112, 112, 428, 152,
- 152, 176, 176, 152, 176, 104, 176, 176,
- 272, 204, 104, 104, 112, 112, 176, 112,
- 112, 112, 112, 112, 152, 200, 152, 176,
- 176, 152, 152, 112, 200, 112, 112, 112,
- 112, 152, 152, 200, 428, 104, 684, 112,
- 332, 112, 112, 176, 332, 332, 272, 112,
- 112, 368, 332, 172, 300, 332, 332, 300,
- 300, 152, 332, 152, 368, 104, 300,
+ 256, 0, 28, 56, 92, 272, 20, 272,
+ 20, 272, 272, 20, 20, 20, 20, 56,
+ 272, 272, 272, 272, 272, 272, 312, 312,
+ 312, 312, 900, 308, 308, 308, 304, 56,
+ 484, 56, 308, 116, 20, 936, 316, 272,
+ 272, 272, 124, 116, 116, 116, 504, 124,
+ 936, 308, 308, 308, 308, 468, 116, 936,
+ 312, 116, 312, 312, 116, 900, 900, 936,
+ 700, 616, 616, 316, 20, 20, 316, 316,
+ 892, 900, 892, 700, 936, 892, 884, 716,
+ 56, 316, 716, 900, 900, 992, 828, 992,
+ 900, 992, 92, 92, 900, 992, 992, 900,
+ 92, 92, 492, 312, 312, 92, 716, 816,
+ 992, 992, 992, 664, 664, 568, 568, 664,
+ 992, 796, 568, 120, 968, 992, 88, 992,
+ 992, 496, 88, 88, 88, 716, 664, 492,
+ 468, 468, 56, 56, 88, 56, 56, 88,
+ 56, 88, 632, 88, 88, 228, 24, 92,
+ 56, 44, 44, 632, 56, 716, 92, 28,
+ 24, 24, 24, 24, 24, 492, 92, 92,
+ 716, 44, 44, 44, 468, 92, 612, 28,
+ 28, 44, 900, 312, 24, 24, 612, 612,
+ 312, 308, 308, 308, 612, 312, 304, 304,
+ 308, 468, 304, 312, 612, 28, 28, 28,
+ 28, 28, 248, 124, 888, 888, 308, 308,
+ 124, 888, 56, 44, 44, 44, 896, 116,
+ 716, 1004, 28, 56, 56, 56, 56, 612,
+ 88, 612, 124, 28, 92, 28, 124, 28,
+ 28, 92, 28, 28, 28, 28, 364, 180,
+ 92, 92, 92, 612, 984, 44, 44, 44,
+ 44, 984, 92, 92, 984, 92, 984, 612,
+ 180, 364, 308, 308, 308, 748, 44, 568,
+ 568, 120, 44, 44, 44, 468, 716, 400,
+ 716, 632, 92, 92, 364, 92, 632, 92,
+ 92, 632, 664, 364, 632, 364, 888, 88,
+ 88, 56, 888, 876, 56, 212, 876, 92,
+ 632, 180, 92, 624, 624, 4, 4, 20,
+ 20, 4, 20, 20, 20, 20, 20, 20,
+ 828, 4, 4, 324, 324, 324, 612, 400,
+ 612, 316, 316, 316, 612, 324, 272, 272,
+ 316, 20, 20, 20, 244, 316, 316, 892,
+ 360, 4, 360, 324, 612, 360, 112, 324,
+ 4, 324, 4, 88, 56, 56, 56, 88,
+ 88, 4, 88, 88, 88, 88, 88, 88,
+ 104, 104, 104, 888, 4, 112, 112, 876,
+ 360, 876, 112, 4, 56, 612, 4, 204,
+ 324, 716, 324, 360, 20, 272, 20, 316,
+ 20, 324, 20, 272, 272, 272, 936, 316,
+ 936, 308, 316, 324, 308, 460, 324, 324,
+ 324, 716, 716, 16, 56, 20, 20, 20,
+ 828, 56, 88, 16, 16, 16, 936, 56,
+ 56, 56, 56, 180, 88, 88, 936, 16,
+ 16, 16, 588, 204, 204, 588, 16, 16,
+ 16, 588, 20, 588, 112, 16, 16, 16,
+ 460, 112, 360, 360, 304, 88, 88, 304,
+ 632, 16, 624, 360, 20, 124, 232, 272,
+ 272, 20, 20, 20, 20, 56, 624, 124,
+ 272, 272, 272, 588, 684, 588, 588, 20,
+ 684, 460, 716, 56, 632, 632, 308, 308,
+ 612, 308, 124, 308, 612, 28, 308, 16,
+ 16, 16, 16, 16, 360, 360, 324, 324,
+ 324, 612, 752, 612, 588, 504, 476, 612,
+ 20, 20, 20, 20, 20, 124, 360, 360,
+ 612, 324, 324, 324, 324, 232, 504, 504,
+ 588, 360, 360, 360, 360, 612, 752, 888,
+ 888, 124, 124, 888, 612, 340, 304, 304,
+ 272, 272, 272, 308, 304, 304, 324, 308,
+ 612, 308, 308, 308, 304, 612, 632, 124,
+ 340, 588, 588, 504, 504, 124, 124, 272,
+ 272, 308, 588, 476, 308, 248, 28, 28,
+ 592, 588, 324, 84, 84, 324, 360, 652,
+ 360, 476, 324, 324, 624, 324, 324, 652,
+ 112, 680, 652, 652, 652, 476, 476, 504,
+ 272, 580, 552, 552, 552, 552, 552, 552,
+ 552, 652, 360, 360, 588, 756, 652, 652,
+ 876, 324, 324, 876, 876, 360, 592, 460,
+ 316, 316, 316, 316, 460, 400, 1004, 492,
+ 196, 716, 1016, 324, 324, 324, 652, 1016,
+ 580, 580, 580, 580, 580, 580, 980, 996,
+ 308, 308, 308, 996, 324, 876, 1016, 308,
+ 308, 308, 1016, 316, 1016, 996, 756, 316,
+ 20, 700, 272, 20, 20, 20, 1016, 528,
+ 272, 272, 272, 500, 316, 500, 716, 308,
+ 716, 20, 20, 20, 716, 492, 600, 944,
+ 944, 316, 944, 272, 272, 272, 944, 324,
+ 452, 308, 316, 324, 452, 580, 552, 552,
+ 552, 452, 892, 580, 580, 452, 580, 580,
+ 580, 932, 700, 892, 944, 932, 316, 316,
+ 932, 944, 600, 944, 716, 552, 400, 632,
+ 632, 884, 884, 632, 584, 596, 608, 584,
+ 656, 560, 596, 560, 560, 776, 584, 584,
+ 584, 656, 632, 596, 560, 768, 560, 560,
+ 560, 608, 608, 768, 560, 784, 600, 876,
+ 876, 560, 596, 596, 596, 784, 776, 776,
+ 492, 336, 584, 584, 28, 28, 284, 584,
+ 584, 784, 584, 876, 476, 584, 584, 584,
+ 476, 364, 364, 288, 284, 284, 284, 492,
+ 364, 364, 680, 336, 336, 476, 716, 784,
+ 284, 284, 284, 284, 284, 284, 832, 680,
+ 680, 716, 680, 1016, 1016, 596, 596, 596,
+ 596, 492, 680, 680, 520, 1016, 288, 596,
+ 596, 596, 596, 1016, 896, 680, 680, 888,
+ 336, 336, 888, 888, 880, 492, 984, 680,
+ 680, 984, 584, 568, 568, 984, 984, 596,
+ 656, 364, 564, 768, 584, 568, 564, 564,
+ 584, 568, 1020, 952, 664, 568, 568, 568,
+ 568, 364, 664, 564, 564, 564, 564, 564,
+ 664, 364, 1020, 584, 584, 584, 896, 288,
+ 584, 584, 584, 664, 748, 364, 564, 564,
+ 568, 568, 364, 796, 748, 564, 564, 568,
+ 956, 796, 796, 948, 948, 952, 584, 656,
+ 584, 568, 568, 584, 568, 952, 952, 644,
+ 336, 644, 336, 584, 584, 948, 784, 784,
+ 644, 644, 796, 656, 656, 656, 944, 568,
+ 568, 568, 568, 568, 944, 584, 452, 944,
+ 656, 584, 664, 664, 944, 452, 664, 944,
+ 784, 364, 568, 568, 364, 664, 568, 568,
+ 632, 664, 364, 364, 364, 632, 632, 28,
+ 28, 880, 632, 944, 264, 568, 568, 340,
+ 264, 264, 264, 44, 44, 632, 520, 876,
+ 568, 568, 568, 568, 664, 88, 876, 876,
+ 88, 88, 264, 532, 180, 264, 656, 656,
+ 656, 876, 664, 664, 664, 992, 992, 876,
+ 644, 644, 644, 264, 264, 796, 796, 592,
+ 28, 308, 284, 284, 16, 28, 876, 16,
+ 16, 268, 28, 920, 476, 180, 180, 16,
+ 16, 264, 364, 264, 364, 264, 1020, 364,
+ 16, 16, 16, 1020, 364, 920, 664, 112,
+ 596, 652, 652, 596, 112, 760, 596, 340,
+ 896, 920, 668, 920, 920, 16, 680, 112,
+ 16, 16, 16, 336, 112, 112, 920, 336,
+ 336, 336, 132, 132, 680, 680, 336, 468,
+ 112, 204, 16, 16, 16, 16, 112, 112,
+ 204, 88, 88, 888, 888, 340, 888, 936,
+ 16, 16, 360, 360, 112, 876, 656, 496,
+ 336, 992, 992, 644, 644, 664, 336, 336,
+ 336, 88, 88, 400, 936, 460, 664, 632,
+ 592, 644, 644, 96, 592, 592, 680, 680,
+ 680, 336, 592, 876, 876, 180, 88, 88,
+ 16, 16, 592, 588, 148, 588, 876, 16,
+ 876, 180, 16, 16, 16, 588, 336, 336,
+ 760, 588, 204, 460, 624, 336, 336, 624,
+ 496, 336, 664, 624, 16, 88, 88, 460,
+ 204, 592, 664, 592, 204, 884, 340, 600,
+ 552, 552, 552, 376, 600, 552, 552, 552,
+ 636, 600, 600, 592, 636, 552, 552, 592,
+ 588, 600, 600, 600, 756, 884, 884, 600,
+ 600, 600, 588, 32, 588, 588, 340, 340,
+ 636, 636, 636, 652, 592, 376, 880, 880,
+ 600, 340, 340, 600, 600, 600, 600, 376,
+ 636, 636, 624, 40, 40, 40, 40, 488,
+ 400, 488, 592, 340, 340, 340, 400, 592,
+ 624, 600, 400, 600, 600, 600, 600, 752,
+ 736, 736, 592, 376, 736, 684, 592, 624,
+ 376, 520, 268, 268, 892, 268, 736, 340,
+ 80, 52, 40, 40, 40, 40, 40, 40,
+ 40, 40, 200, 156, 156, 268, 80, 80,
+ 80, 268, 824, 588, 588, 52, 52, 52,
+ 80, 80, 80, 588, 376, 268, 376, 736,
+ 80, 80, 788, 136, 96, 96, 888, 80,
+ 40, 40, 40, 40, 40, 96, 340, 340,
+ 888, 80, 32, 340, 32, 32, 32, 212,
+ 888, 40, 40, 340, 340, 40, 340, 40,
+ 40, 200, 40, 200, 40, 40, 888, 624,
+ 752, 752, 488, 736, 684, 268, 268, 636,
+ 80, 80, 52, 80, 40, 84, 52, 52,
+ 40, 40, 52, 40, 80, 268, 84, 40,
+ 80, 96, 80, 80, 96, 268, 84, 84,
+ 888, 52, 52, 40, 80, 40, 636, 636,
+ 80, 96, 652, 552, 52, 552, 552, 552,
+ 268, 652, 636, 760, 52, 52, 52, 592,
+ 636, 592, 588, 652, 376, 40, 40, 40,
+ 588, 760, 52, 52, 52, 592, 636, 592,
+ 84, 84, 84, 652, 764, 804, 96, 96,
+ 96, 876, 652, 324, 52, 52, 376, 360,
+ 384, 376, 552, 360, 552, 552, 876, 876,
+ 400, 912, 912, 52, 52, 52, 52, 592,
+ 360, 980, 764, 324, 324, 360, 760, 552,
+ 552, 552, 552, 552, 488, 316, 316, 488,
+ 360, 324, 52, 360, 52, 52, 52, 52,
+ 52, 736, 376, 376, 316, 316, 488, 624,
+ 148, 692, 316, 316, 912, 912, 552, 552,
+ 552, 552, 552, 692, 920, 316, 592, 316,
+ 488, 376, 592, 316, 592, 892, 652, 592,
+ 316, 828, 736, 316, 316, 488, 488, 736,
+ 268, 268, 892, 892, 268, 268, 992, 992,
+ 400, 268, 736, 592, 244, 324, 324, 8,
+ 264, 264, 264, 104, 104, 104, 104, 104,
+ 172, 4, 268, 692, 4, 692, 488, 360,
+ 360, 692, 692, 384, 384, 384, 920, 392,
+ 920, 692, 104, 104, 4, 360, 104, 324,
+ 324, 84, 324, 324, 324, 268, 172, 112,
+ 268, 268, 84, 84, 268, 392, 920, 692,
+ 160, 104, 104, 104, 104, 268, 264, 4,
+ 4, 264, 172, 624, 112, 392, 692, 720,
+ 4, 720, 1000, 84, 652, 84, 324, 1000,
+ 1000, 360, 652, 112, 384, 324, 360, 324,
+ 324, 692, 920, 84, 84, 360, 360, 384,
+ 324, 324, 324, 112, 84, 84, 920, 84,
+ 84, 920, 132, 384, 384, 692, 324, 324,
+ 324, 692, 912, 912, 172, 360, 360, 360,
+ 360, 912, 112, 920, 436, 112, 436, 384,
+ 436, 720, 360, 764, 324, 324, 876, 84,
+ 84, 84, 680, 876, 652, 876, 804, 264,
+ 172, 80, 132, 84, 80, 80, 84, 84,
+ 384, 264, 160, 80, 52, 52, 264, 156,
+ 80, 980, 264, 52, 52, 52, 264, 156,
+ 156, 84, 84, 156, 720, 160, 0, 0,
+ 0, 0, 0, 0, 172, 384, 384, 920,
+ 104, 104, 104, 1020, 384, 1020, 80, 944,
+ 472, 80, 52, 52, 948, 944, 140, 944,
+ 944, 52, 52, 52, 944, 932, 196, 452,
+ 440, 384, 84, 84, 84, 440, 40, 40,
+ 160, 52, 156, 440, 104, 932, 496, 376,
+ 376, 52, 52, 52, 932, 200, 736, 932,
+ 376, 452, 452, 52, 52, 392, 876, 1016,
+ 384, 1016, 876, 140, 436, 932, 104, 992,
+ 736, 736, 736, 944, 752, 300, 200, 300,
+ 200, 200, 104, 104, 436, 300, 392, 932,
+ 876, 104, 876, 212, 992, 992, 736, 496,
+ 200, 32, 104, 0, 72, 80, 0, 0,
+ 0, 0, 0, 84, 220, 876, 944, 0,
+ 0, 0, 944, 436, 196, 436, 436, 80,
+ 196, 436, 876, 876, 84, 876, 84, 84,
+ 944, 264, 132, 264, 264, 80, 80, 80,
+ 264, 84, 84, 300, 684, 436, 300, 72,
+ 72, 72, 156, 72, 72, 72, 72, 136,
+ 84, 300, 436, 80, 80, 80, 80, 436,
+ 136, 264, 84, 84, 300, 136, 720, 436,
+ 80, 80, 132, 84, 388, 264, 472, 208,
+ 80, 80, 948, 300, 388, 300, 1020, 64,
+ 64, 72, 1020, 84, 652, 132, 0, 64,
+ 0, 0, 0, 104, 64, 0, 104, 0,
+ 0, 0, 1020, 160, 948, 104, 944, 992,
+ 104, 160, 440, 908, 352, 352, 992, 980,
+ 72, 64, 64, 64, 68, 64, 64, 64,
+ 64, 68, 68, 108, 68, 68, 352, 684,
+ 352, 64, 440, 72, 68, 72, 300, 68,
+ 68, 300, 160, 472, 160, 68, 68, 68,
+ 68, 68, 68, 472, 388, 440, 440, 636,
+ 184, 932, 932, 416, 932, 440, 156, 944,
+ 72, 72, 452, 440, 440, 68, 932, 684,
+ 992, 684, 992, 932, 452, 68, 752, 684,
+ 440, 68, 68, 148, 440, 288, 288, 684,
+ 684, 136, 80, 32, 72, 40, 80, 32,
+ 32, 684, 288, 932, 136, 288, 40, 932,
+ 288, 32, 32, 32, 72, 84, 668, 288,
+ 420, 80, 72, 288, 288, 72, 72, 420,
+ 668, 288, 452, 72, 80, 72, 72, 652,
+ 72, 80, 80, 80, 420, 84, 84, 84,
+ 420, 96, 96, 96, 136, 652, 420, 576,
+ 64, 64, 64, 576, 576, 352, 328, 576,
+ 96, 416, 72, 32, 144, 32, 32, 32,
+ 176, 72, 328, 144, 136, 32, 32, 32,
+ 32, 144, 136, 96, 96, 96, 576, 136,
+ 136, 288, 288, 136, 144, 136, 136, 576,
+ 744, 744, 960, 64, 64, 144, 32, 416,
+ 352, 352, 416, 416, 72, 32, 32, 32,
+ 72, 144, 32, 676, 144, 352, 1016, 64,
+ 64, 64, 64, 64, 64, 64, 684, 416,
+ 416, 352, 352, 288, 1016, 416, 416, 684,
+ 352, 68, 68, 576, 416, 676, 356, 68,
+ 72, 72, 72, 344, 68, 40, 40, 80,
+ 344, 752, 684, 684, 684, 40, 148, 344,
+ 1020, 156, 156, 156, 168, 320, 164, 32,
+ 32, 164, 32, 32, 156, 32, 32, 156,
+ 32, 416, 260, 260, 168, 260, 320, 96,
+ 96, 396, 344, 156, 156, 344, 676, 168,
+ 380, 80, 380, 96, 380, 684, 68, 68,
+ 320, 320, 684, 684, 68, 68, 32, 80,
+ 32, 32, 1020, 396, 68, 924, 32, 32,
+ 32, 924, 168, 156, 924, 1020, 68, 68,
+ 924, 356, 164, 732, 1020, 80, 68, 68,
+ 732, 68, 68, 68, 396, 72, 72, 396,
+ 32, 32, 556, 164, 556, 556, 72, 156,
+ 556, 160, 144, 72, 32, 556, 556, 32,
+ 32, 32, 32, 144, 556, 144, 144, 164,
+ 164, 556, 32, 32, 32, 556, 380, 8,
+ 8, 380, 96, 140, 328, 328, 148, 328,
+ 380, 336, 776, 596, 596, 560, 560, 596,
+ 596, 596, 596, 596, 556, 1020, 516, 680,
+ 680, 328, 776, 576, 680, 680, 1016, 960,
+ 776, 576, 576, 336, 336, 576, 300, 680,
+ 556, 556, 560, 680, 336, 336, 336, 416,
+ 416, 416, 416, 144, 144, 744, 680, 680,
+ 556, 336, 776, 336, 336, 416, 416, 416,
+ 416, 776, 744, 744, 744, 960, 776, 556,
+ 1020, 560, 644, 644, 556, 560, 300, 776,
+ 776, 336, 776, 336, 336, 388, 576, 732,
+ 656, 644, 644, 336, 416, 336, 352, 352,
+ 352, 656, 352, 352, 556, 656, 896, 416,
+ 416, 744, 744, 776, 888, 964, 644, 644,
+ 644, 908, 656, 656, 888, 964, 908, 888,
+ 984, 72, 64, 64, 336, 64, 524, 416,
+ 64, 800, 64, 64, 800, 72, 72, 72,
+ 388, 460, 460, 416, 624, 624, 336, 336,
+ 680, 336, 336, 60, 336, 888, 352, 336,
+ 992, 684, 496, 636, 888, 388, 888, 800,
+ 60, 644, 888, 60, 60, 60, 60, 60,
+ 496, 496, 336, 624, 612, 64, 612, 336,
+ 64, 64, 64, 644, 644, 64, 64, 612,
+ 612, 612, 352, 352, 588, 984, 644, 644,
+ 644, 388, 612, 352, 352, 352, 336, 336,
+ 336, 388, 352, 372, 372, 372, 644, 336,
+ 336, 336, 484, 108, 484, 644, 644, 644,
+ 612, 108, 108, 612, 336, 336, 372, 588,
+ 656, 984, 896, 684, 896, 644, 644, 680,
+ 992, 980, 992, 992, 908, 908, 644, 644,
+ 644, 856, 304, 908, 304, 304, 656, 656,
+ 984, 984, 644, 984, 960, 64, 64, 64,
+ 64, 72, 64, 64, 72, 144, 72, 984,
+ 1004, 372, 72, 84, 72, 668, 484, 612,
+ 636, 192, 372, 372, 612, 132, 136, 132,
+ 132, 612, 680, 680, 680, 496, 744, 596,
+ 596, 596, 596, 596, 744, 652, 652, 652,
+ 304, 132, 132, 304, 612, 304, 132, 652,
+ 652, 132, 84, 304, 132, 680, 136, 612,
+ 84, 304, 680, 304, 596, 596, 680, 680,
+ 484, 984, 984, 104, 992, 992, 84, 652,
+ 384, 384, 984, 84, 84, 192, 372, 304,
+ 112, 8, 236, 524, 132, 800, 104, 0,
+ 104, 0, 0, 0, 0, 0, 800, 104,
+ 104, 484, 668, 484, 484, 684, 484, 460,
+ 60, 60, 60, 60, 60, 60, 60, 460,
+ 148, 460, 32, 148, 936, 936, 684, 936,
+ 104, 104, 388, 460, 404, 388, 404, 404,
+ 112, 484, 460, 104, 104, 460, 404, 112,
+ 388, 404, 404, 132, 132, 132, 304, 160,
+ 160, 304, 160, 60, 60, 0, 304, 496,
+ 60, 60, 304, 304, 164, 404, 604, 60,
+ 992, 60, 60, 60, 0, 0, 60, 160,
+ 60, 60, 604, 604, 108, 0, 604, 800,
+ 484, 108, 0, 0, 588, 132, 148, 588,
+ 588, 64, 64, 64, 404, 72, 404, 604,
+ 0, 0, 0, 72, 604, 108, 72, 604,
+ 588, 808, 660, 704, 904, 872, 872, 872,
+ 872, 872, 904, 628, 628, 588, 988, 988,
+ 628, 628, 904, 640, 640, 640, 588, 660,
+ 956, 952, 640, 640, 640, 448, 660, 660,
+ 404, 704, 956, 640, 640, 704, 704, 640,
+ 588, 448, 660, 660, 872, 640, 672, 872,
+ 872, 640, 872, 872, 872, 704, 640, 640,
+ 404, 672, 672, 704, 704, 372, 508, 448,
+ 448, 372, 672, 620, 620, 620, 688, 672,
+ 672, 604, 448, 620, 604, 604, 672, 620,
+ 508, 280, 620, 280, 280, 280, 448, 620,
+ 620, 404, 372, 620, 620, 620, 304, 672,
+ 672, 448, 280, 280, 280, 280, 820, 780,
+ 620, 620, 660, 608, 608, 608, 768, 660,
+ 660, 660, 660, 304, 448, 524, 800, 448,
+ 448, 372, 372, 564, 564, 564, 564, 564,
+ 564, 564, 956, 952, 800, 372, 448, 444,
+ 444, 956, 968, 428, 428, 428, 428, 508,
+ 448, 448, 928, 444, 444, 456, 280, 280,
+ 280, 280, 456, 428, 428, 404, 428, 404,
+ 604, 280, 176, 604, 604, 508, 256, 872,
+ 256, 696, 256, 256, 256, 256, 256, 696,
+ 628, 628, 688, 872, 996, 980, 628, 872,
+ 872, 872, 916, 988, 996, 628, 628, 996,
+ 988, 988, 988, 696, 648, 648, 648, 940,
+ 696, 996, 936, 256, 256, 256, 256, 256,
+ 412, 12, 404, 404, 648, 728, 640, 704,
+ 872, 872, 640, 32, 484, 996, 12, 404,
+ 12, 256, 12, 256, 256, 256, 12, 12,
+ 372, 296, 296, 808, 256, 256, 296, 296,
+ 372, 848, 372, 688, 304, 620, 620, 304,
+ 256, 256, 256, 256, 688, 688, 412, 412,
+ 412, 412, 772, 848, 772, 304, 128, 12,
+ 12, 296, 12, 12, 12, 304, 12, 12,
+ 12, 12, 128, 128, 412, 296, 296, 704,
+ 128, 996, 404, 604, 412, 412, 412, 412,
+ 412, 772, 404, 712, 128, 456, 724, 36,
+ 36, 36, 724, 348, 348, 588, 296, 36,
+ 36, 36, 456, 296, 296, 588, 36, 36,
+ 36, 588, 128, 348, 604, 348, 348, 128,
+ 724, 724, 372, 296, 296, 604, 604, 480,
+ 480, 292, 348, 348, 292, 712, 712, 712,
+ 372, 724, 724, 724, 772, 480, 32, 292,
+ 292, 292, 296, 456, 296, 508, 296, 296,
+ 192, 292, 292, 296, 36, 996, 304, 36,
+ 36, 36, 456, 428, 428, 428, 444, 372,
+ 388, 808, 8, 372, 372, 296, 296, 216,
+ 620, 620, 372, 292, 508, 508, 292, 508,
+ 8, 292, 292, 640, 292, 704, 704, 704,
+ 524, 956, 956, 524, 584, 284, 780, 784,
+ 564, 608, 608, 564, 564, 564, 284, 564,
+ 564, 824, 140, 284, 284, 140, 564, 564,
+ 428, 584, 584, 584, 584, 388, 372, 284,
+ 284, 372, 140, 584, 140, 284, 388, 768,
+ 584, 584, 76, 76, 8, 76, 76, 284,
+ 284, 284, 280, 280, 76, 32, 140, 388,
+ 448, 284, 284, 284, 388, 280, 280, 800,
+ 608, 608, 76, 780, 768, 76, 76, 428,
+ 28, 428, 428, 280, 280, 564, 564, 564,
+ 284, 584, 584, 668, 28, 28, 564, 564,
+ 284, 28, 28, 584, 584, 28, 28, 28,
+ 28, 432, 284, 668, 524, 284, 284, 604,
+ 432, 564, 564, 564, 404, 284, 584, 584,
+ 372, 28, 28, 28, 432, 308, 308, 372,
+ 432, 432, 432, 604, 604, 308, 284, 372,
+ 292, 280, 292, 432, 284, 284, 284, 284,
+ 292, 292, 292, 76, 432, 432, 76, 284,
+ 144, 292, 292, 820, 820, 292, 564, 956,
+ 564, 564, 568, 564, 564, 564, 568, 76,
+ 956, 564, 564, 564, 76, 292, 144, 76,
+ 824, 956, 956, 956, 520, 796, 140, 956,
+ 568, 148, 668, 668, 952, 140, 520, 952,
+ 148, 140, 388, 364, 120, 28, 564, 564,
+ 28, 28, 28, 28, 568, 388, 120, 152,
+ 568, 568, 584, 584, 564, 388, 568, 364,
+ 564, 564, 140, 76, 568, 564, 564, 564,
+ 564, 120, 76, 152, 568, 568, 76, 148,
+ 76, 76, 564, 564, 48, 432, 28, 152,
+ 28, 48, 152, 428, 428, 444, 444, 100,
+ 100, 428, 564, 48, 388, 152, 444, 564,
+ 564, 564, 604, 568, 604, 604, 564, 564,
+ 564, 152, 152, 816, 444, 444, 188, 816,
+ 148, 76, 48, 564, 564, 564, 240, 48,
+ 432, 28, 504, 432, 28, 28, 8, 48,
+ 604, 308, 292, 308, 292, 432, 432, 444,
+ 28, 24, 28, 28, 24, 24, 24, 24,
+ 24, 44, 28, 28, 292, 28, 292, 120,
+ 28, 604, 308, 188, 24, 24, 24, 24,
+ 24, 76, 44, 48, 684, 308, 604, 24,
+ 604, 308, 48, 312, 312, 568, 152, 44,
+ 24, 24, 24, 24, 44, 44, 100, 100,
+ 24, 152, 24, 24, 24, 48, 604, 48,
+ 100, 100, 604, 24, 24, 604, 120, 120,
+ 404, 292, 292, 444, 444, 884, 116, 332,
+ 332, 312, 616, 312, 312, 312, 312, 312,
+ 424, 616, 292, 616, 616, 424, 900, 900,
+ 900, 700, 424, 292, 312, 312, 312, 312,
+ 312, 404, 348, 332, 332, 332, 48, 348,
+ 348, 332, 144, 800, 888, 900, 788, 332,
+ 332, 332, 348, 348, 348, 464, 424, 424,
+ 788, 424, 24, 116, 308, 308, 308, 116,
+ 312, 100, 24, 24, 24, 24, 788, 100,
+ 100, 524, 312, 312, 312, 668, 668, 900,
+ 896, 8, 896, 896, 900, 788, 116, 888,
+ 888, 308, 308, 308, 888, 188, 424, 424,
+ 668, 24, 24, 24, 24, 984, 984, 8,
+ 524, 372, 100, 100, 372, 984, 32, 304,
+ 304, 312, 312, 312, 424, 304, 44, 800,
+ 432, 432, 308, 308, 432, 372, 304, 100,
+ 32, 76, 852, 464, 464, 520, 884, 884,
+ 756, 580, 580, 884, 884, 756, 756, 616,
+ 892, 616, 580, 580, 580, 580, 700, 616,
+ 616, 520, 892, 512, 900, 512, 700, 512,
+ 708, 580, 308, 580, 580, 812, 580, 580,
+ 760, 504, 740, 740, 580, 308, 580, 580,
+ 308, 580, 760, 308, 512, 504, 740, 308,
+ 308, 308, 308, 572, 572, 116, 116, 116,
+ 572, 912, 912, 424, 700, 424, 700, 700,
+ 504, 880, 812, 464, 424, 424, 880, 740,
+ 464, 432, 432, 880, 432, 308, 308, 572,
+ 572, 432, 572, 572, 740, 880, 740, 880,
+ 424, 580, 580, 580, 580, 400, 392, 392,
+ 616, 880, 424, 880, 616, 616, 32, 880,
+ 520, 424, 424, 400, 392, 400, 740, 400,
+ 464, 432, 308, 308, 400, 740, 432, 432,
+ 880, 740, 880, 880, 740, 880, 880, 36,
+ 348, 36, 616, 616, 616, 616, 616, 616,
+ 520, 520, 424, 400, 400, 424, 400, 824,
+ 708, 708, 724, 724, 392, 36, 36, 36,
+ 36, 724, 348, 348, 392, 332, 332, 332,
+ 392, 708, 424, 424, 392, 424, 348, 572,
+ 424, 572, 348, 348, 572, 616, 616, 616,
+ 616, 572, 708, 348, 348, 348, 512, 708,
+ 708, 708, 712, 512, 724, 432, 432, 432,
+ 432, 740, 456, 456, 456, 392, 740, 740,
+ 392, 36, 36, 392, 456, 740, 392, 724,
+ 724, 668, 668, 392, 8, 824, 140, 456,
+ 456, 572, 572, 512, 724, 740, 616, 616,
+ 724, 572, 712, 616, 616, 616, 616, 724,
+ 712, 712, 392, 708, 708, 708, 752, 8,
+ 980, 760, 724, 760, 772, 884, 580, 884,
+ 884, 892, 580, 580, 604, 604, 740, 740,
+ 616, 616, 604, 792, 708, 588, 604, 100,
+ 128, 332, 312, 332, 312, 312, 980, 332,
+ 332, 900, 604, 332, 712, 332, 332, 332,
+ 348, 752, 880, 32, 880, 752, 36, 36,
+ 36, 332, 332, 520, 668, 880, 880, 604,
+ 816, 968, 692, 788, 128, 968, 488, 348,
+ 36, 36, 348, 36, 36, 488, 572, 128,
+ 128, 572, 816, 100, 312, 332, 312, 312,
+ 692, 692, 312, 24, 24, 692, 488, 312,
+ 572, 912, 572, 100, 332, 332, 912, 100,
+ 100, 100, 912, 152, 572, 668, 788, 312,
+ 332, 332, 332, 332, 36, 36, 36, 36,
+ 668, 464, 668, 348, 512, 332, 332, 332,
+ 332, 788, 348, 488, 96, 488, 488, 148,
+ 512, 572, 100, 96, 572, 572, 572, 36,
+ 36, 36, 36, 572, 572, 464, 464, 444,
+ 100, 100, 8, 512, 140, 804, 76, 76,
+ 152, 960, 140, 392, 636, 392, 392, 100,
+ 604, 788, 444, 788, 512, 128, 724, 36,
+ 36, 572, 572, 572, 36, 36, 36, 572,
+ 572, 572, 348, 96, 668, 572, 788, 432,
+ 280, 280, 280, 432, 428, 428, 428, 140,
+ 432, 572, 36, 36, 36, 428, 428, 572,
+ 36, 36, 8, 140, 788, 8, 788, 488,
+ 668, 488, 888, 428, 428, 888, 456, 456,
+ 888, 444, 512, 456, 428, 428, 428, 512,
+ 788, 456, 788, 760, 464, 456, 760, 760,
+ 348, 348, 348, 488, 488, 488, 140, 8,
+ 144, 292, 276, 292, 928, 908, 908, 980,
+ 980, 908, 276, 276, 276, 276, 908, 352,
+ 512, 760, 908, 604, 928, 604, 996, 996,
+ 276, 276, 276, 276, 964, 996, 996, 604,
+ 964, 1004, 604, 292, 276, 276, 276, 276,
+ 292, 292, 292, 292, 276, 276, 276, 588,
+ 684, 352, 588, 416, 416, 276, 176, 276,
+ 276, 276, 276, 276, 176, 164, 164, 588,
+ 164, 588, 416, 416, 512, 352, 352, 488,
+ 488, 276, 276, 276, 276, 488, 416, 488,
+ 588, 352, 624, 964, 840, 164, 276, 276,
+ 276, 592, 588, 588, 164, 800, 592, 176,
+ 276, 292, 276, 276, 276, 936, 588, 760,
+ 292, 292, 888, 512, 32, 144, 8, 372,
+ 668, 276, 276, 276, 176, 388, 668, 960,
+ 216, 176, 176, 184, 216, 372, 372, 1004,
+ 392, 176, 144, 1004, 984, 144, 984, 144,
+ 276, 276, 416, 416, 964, 144, 668, 560,
+ 560, 984, 984, 984, 668, 896, 896, 896,
+ 896, 668, 668, 668, 960, 668, 960, 984,
+ 216, 744, 184, 416, 176, 960, 776, 776,
+ 776, 776, 176, 392, 388, 184, 192, 292,
+ 292, 388, 144, 292, 144, 76, 76, 48,
+ 184, 48, 48, 48, 48, 48, 192, 388,
+ 416, 416, 668, 76, 8, 76, 76, 76,
+ 76, 144, 144, 140, 32, 32, 388, 96,
+ 96, 8, 140, 140, 192, 8, 668, 388,
+ 192, 668, 48, 48, 48, 48, 48, 388,
+ 184, 176, 668, 176, 176, 668, 668, 96,
+ 668, 32, 388, 388, 196, 196, 668, 168,
+ 164, 604, 292, 48, 292, 292, 48, 164,
+ 196, 980, 164, 752, 980, 684, 684, 752,
+ 388, 48, 48, 48, 48, 684, 684, 196,
+ 196, 32, 388, 388, 32, 752, 148, 684,
+ 752, 684, 96, 196, 196, 176, 176, 48,
+ 48, 48, 48, 48, 184, 164, 164, 8,
+ 164, 684, 684, 32, 32, 668, 984, 896,
+ 896, 32, 668, 8, 372, 216, 292, 192,
+ 184, 176, 176, 392, 148, 340, 600, 96,
+ 32, 340, 340, 340, 176, 148, 636, 8,
+ 636, 96, 880, 880, 880, 8, 400, 600,
+ 600, 600, 600, 8, 340, 340, 340, 340,
+ 340, 392, 392, 392, 8, 148, 400, 400,
+ 392, 32,
};
static long _vq_q_lsp32_0[] = {
- 528, 160, 504, 364, 356, 524, 976, 164,
- 548, 612, 208, 548, 140, 548, 612, 612,
- 612, 908, 864, 248, 208, 492, 880, 492,
- 880, 880, 140, 248, 248, 880, 880, 492,
- 864, 880, 880, 492, 908, 880, 908, 908,
- 164, 140, 612, 208, 248, 864, 864, 864,
- 248, 612, 612, 248, 816, 596, 164, 612,
- 864, 612, 208, 492, 864, 864, 492, 596,
- 368, 780, 880, 696, 484, 864, 976, 976,
- 864, 976, 248, 696, 976, 696, 776, 484,
- 696, 880, 880, 696, 880, 1012, 880, 944,
- 976, 976, 940, 248, 612, 184, 80, 208,
- 524, 208, 524, 524, 208, 612, 524, 1012,
- 548, 780, 292, 612, 68, 612, 644, 612,
- 644, 612, 612, 524, 548, 612, 452, 292,
- 1012, 612, 248, 208, 864, 940, 780, 976,
- 940, 976, 776, 940, 976, 728, 940, 976,
- 248, 292, 780, 696, 292, 696, 936, 976,
- 696, 936, 1012, 420, 940, 976, 776, 940,
- 976, 1012, 872, 612, 832, 36, 140, 852,
- 164, 356, 356, 852, 164, 164, 48, 852,
- 852, 852, 952, 492, 832, 1000, 852, 388,
- 1000, 1000, 832, 952, 696, 740, 916, 612,
- 1012, 852, 140, 164, 356, 916, 916, 356,
- 612, 916, 916, 596, 164, 356, 916, 728,
- 916, 916, 388, 484, 1012, 864, 916, 832,
- 164, 852, 832, 916, 852, 484, 740, 916,
- 916, 740, 916, 600, 916, 832, 300, 832,
- 368, 864, 832, 388, 740, 852, 1012, 1012,
- 740, 852, 784, 388, 832, 832, 140, 612,
- 644, 776, 852, 916, 624, 916, 612, 644,
- 784, 644, 852, 784, 784, 644, 624, 852,
- 916, 776, 696, 644, 600, 916, 1012, 872,
- 936, 388, 740, 852, 1012, 204, 776, 624,
- 936, 940, 872, 940, 292, 696, 936, 740,
- 936, 592, 916, 936, 936, 696, 740, 936,
- 696, 936, 936, 676, 676, 936, 940, 624,
- 940, 916, 936, 740, 936, 600, 852, 872,
- 624, 916, 852, 872, 600, 872, 864, 68,
- 644, 852, 872, 940, 940, 304, 852, 872,
- 624, 940, 292, 940, 852, 940, 304, 852,
- 664, 772, 708, 364, 548, 836, 268, 460,
- 460, 836, 548, 952, 548, 36, 80, 268,
- 304, 268, 304, 304, 80, 364, 548, 268,
- 364, 496, 836, 836, 496, 364, 836, 496,
- 836, 836, 836, 36, 364, 548, 548, 364,
- 548, 272, 836, 600, 952, 80, 708, 304,
- 708, 496, 304, 136, 836, 952, 804, 836,
- 952, 772, 804, 804, 836, 952, 592, 836,
- 136, 364, 496, 592, 364, 496, 600, 836,
- 772, 1012, 836, 664, 492, 524, 88, 268,
- 368, 268, 208, 268, 548, 592, 268, 548,
- 524, 268, 548, 208, 548, 592, 36, 80,
- 208, 492, 952, 804, 268, 664, 492, 208,
- 908, 88, 368, 492, 908, 664, 908, 208,
- 268, 908, 908, 268, 664, 204, 368, 664,
- 804, 592, 804, 908, 952, 460, 492, 836,
- 548, 600, 836, 836, 908, 836, 592, 268,
- 908, 460, 836, 272, 908, 460, 836, 368,
- 908, 592, 48, 364, 952, 1000, 516, 888,
- 888, 516, 888, 708, 708, 516, 888, 888,
- 708, 708, 1000, 164, 36, 852, 100, 356,
- 516, 356, 516, 816, 852, 100, 516, 952,
- 952, 516, 952, 816, 852, 356, 300, 356,
- 952, 952, 1000, 1000, 1000, 516, 708, 100,
- 592, 644, 708, 816, 708, 776, 852, 816,
- 164, 260, 364, 952, 708, 516, 952, 952,
- 776, 836, 516, 136, 592, 364, 516, 300,
- 776, 516, 708, 204, 816, 644, 708, 516,
- 140, 260, 36, 364, 548, 776, 152, 816,
- 776, 364, 548, 592, 548, 260, 836, 548,
- 300, 364, 368, 364, 516, 516, 1012, 836,
- 36, 708, 708, 548, 708, 548, 644, 644,
- 708, 164, 548, 492, 780, 952, 644, 548,
- 80, 708, 708, 708, 48, 948, 548, 708,
- 708, 620, 948, 620, 624, 644, 708, 368,
- 1012, 1012, 144, 880, 980, 696, 808, 872,
- 120, 420, 1008, 312, 676, 676, 420, 564,
- 676, 312, 420, 420, 872, 420, 948, 676,
- 872, 872, 956, 872, 940, 808, 872, 624,
- 420, 872, 956, 808, 120, 808, 956, 808,
- 956, 956, 956, 940, 420, 956, 940, 808,
- 956, 872, 940, 948, 948, 376, 808, 452,
- 184, 312, 504, 620, 504, 312, 452, 644,
- 644, 452, 644, 600, 504, 184, 620, 292,
- 808, 340, 808, 172, 624, 564, 292, 620,
- 808, 808, 620, 624, 776, 184, 292, 776,
- 808, 940, 624, 292, 808, 780, 504, 696,
- 940, 312, 376, 976, 440, 292, 420, 440,
- 440, 420, 976, 1012, 376, 440, 776, 440,
- 440, 376, 312, 420, 440, 1012, 420, 440,
- 780, 940, 312, 808, 376, 776, 292, 376,
- 376, 184, 340, 624, 808, 808, 976, 940,
- 948, 292, 976, 940, 204, 600, 948, 976,
- 440, 420, 1008, 440, 420, 696, 344, 440,
- 696, 1008, 696, 1008, 1008, 976, 504, 452,
- 312, 600, 440, 452, 696, 696, 452, 504,
- 452, 912, 324, 312, 504, 980, 184, 376,
- 776, 980, 504, 776, 312, 504, 376, 980,
- 980, 504, 504, 376, 980, 344, 600, 924,
- 980, 376, 324, 504, 928, 928, 504, 928,
- 776, 376, 504, 600, 368, 344, 948, 980,
- 924, 948, 928, 980, 988, 988, 980, 912,
- 632, 1008, 228, 376, 312, 376, 896, 896,
- 312, 376, 440, 776, 376, 344, 776, 440,
- 280, 344, 1008, 1008, 120, 312, 912, 912,
- 948, 1008, 376, 988, 228, 764, 912, 980,
- 912, 980, 980, 912, 340, 1012, 980, 988,
- 564, 924, 368, 776, 536, 924, 988, 196,
- 932, 1008, 880, 376, 440, 504, 632, 948,
- 928, 632, 948, 804, 632, 928, 440, 568,
- 948, 568, 632, 632, 504, 568, 624, 776,
- 624, 928, 784, 632, 880, 880, 696, 440,
- 440, 776, 976, 624, 1008, 696, 880, 784,
- 1008, 880, 600, 944, 948, 504, 440, 292,
- 524, 976, 208, 248, 568, 568, 568, 248,
- 976, 804, 524, 568, 976, 292, 524, 452,
- 524, 524, 932, 452, 292, 440, 976, 784,
- 696, 776, 772, 976, 440, 624, 696, 784,
- 452, 776, 452, 776, 624, 976, 568, 880,
- 440, 696, 932, 932, 948, 880, 932, 568,
- 196, 280, 536, 440, 976, 504, 376, 556,
- 896, 556, 568, 568, 568, 504, 976, 300,
- 504, 568, 932, 568, 620, 584, 208, 268,
- 880, 460, 932, 548, 452, 772, 772, 248,
- 400, 524, 932, 932, 524, 932, 568, 624,
- 524, 568, 772, 932, 568, 624, 496, 932,
- 460, 460, 932, 624, 932, 548, 932, 972,
- 632, 140, 460, 932, 772, 1012, 932, 624,
- 932, 880, 592, 624, 972, 592, 972, 460,
- 908, 592, 972, 496, 972, 972, 460, 268,
- 524, 260, 524, 268, 400, 400, 268, 144,
- 1012, 524, 268, 336, 524, 300, 336, 260,
- 460, 400, 932, 932, 460, 496, 524, 880,
- 248, 568, 624, 568, 664, 524, 772, 524,
- 524, 400, 664, 664, 524, 496, 568, 524,
- 928, 996, 824, 664, 556, 524, 400, 400,
- 556, 556, 664, 588, 556, 568, 824, 824,
- 772, 184, 932, 144, 400, 524, 556, 996,
- 996, 556, 624, 524, 496, 400, 524, 996,
- 772, 996, 524, 556, 996, 624, 204, 624,
- 400, 868, 996, 496, 932, 996, 996, 868,
- 996, 588, 932, 996, 556, 568, 524, 568,
- 772, 568, 588, 568, 524, 556, 556, 504,
- 556, 588, 580, 556, 588, 580, 996, 524,
- 504, 932, 932, 336, 996, 996, 996, 932,
- 568, 632, 868, 996, 504, 556, 584, 772,
- 928, 928, 556, 584, 496, 196, 584, 996,
- 996, 868, 868, 588, 928, 568, 824, 588,
- 824, 868, 928, 368, 932, 868, 824, 568,
- 972, 972, 588, 932, 632, 972, 868, 932,
- 368, 972, 972, 304, 504, 184, 708, 996,
- 80, 260, 620, 620, 260, 620, 996, 260,
- 548, 452, 548, 592, 620, 548, 620, 620,
- 996, 592, 996, 620, 524, 996, 592, 996,
- 548, 260, 644, 708, 708, 588, 548, 592,
- 620, 368, 260, 644, 80, 620, 524, 184,
- 292, 300, 524, 588, 184, 452, 496, 708,
- 524, 588, 524, 620, 620, 452, 620, 184,
- 496, 496, 588, 996, 260, 996, 196, 644,
- 612, 496, 592, 184, 620, 504, 324, 172,
- 556, 996, 772, 584, 556, 996, 1012, 556,
- 324, 584, 584, 504, 588, 584, 624, 624,
- 996, 564, 620, 588, 1012, 504, 184, 624,
- 588, 504, 564, 696, 736, 412, 512, 288,
- 352, 316, 96, 384, 384, 316, 352, 668,
- 288, 352, 640, 640, 352, 640, 384, 640,
- 668, 668, 668, 156, 668, 384, 92, 512,
- 604, 604, 604, 512, 384, 512, 384, 668,
- 604, 624, 604, 668, 156, 172, 624, 564,
- 352, 640, 336, 668, 352, 104, 780, 780,
- 604, 412, 860, 156, 604, 92, 668, 668,
- 336, 668, 156, 604, 796, 796, 604, 796,
- 588, 668, 580, 796, 796, 860, 860, 540,
- 672, 640, 412, 876, 1012, 588, 668, 796,
- 336, 640, 668, 780, 640, 672, 672, 672,
- 796, 640, 768, 480, 416, 732, 736, 736,
- 732, 736, 564, 480, 840, 544, 96, 736,
- 160, 288, 608, 608, 288, 608, 588, 160,
- 736, 768, 736, 768, 288, 160, 352, 768,
- 352, 768, 704, 704, 288, 352, 704, 768,
- 192, 544, 96, 544, 480, 368, 768, 544,
- 544, 588, 768, 476, 608, 672, 288, 412,
- 640, 640, 412, 368, 396, 968, 412, 540,
- 672, 672, 540, 396, 588, 968, 736, 640,
- 352, 288, 608, 640, 396, 640, 672, 300,
- 608, 780, 640, 608, 672, 732, 736, 968,
- 968, 736, 968, 588, 336, 348, 476, 540,
- 540, 672, 304, 904, 348, 476, 672, 904,
- 968, 904, 948, 968, 936, 448, 636, 860,
- 956, 1020, 572, 1008, 120, 444, 884, 912,
- 444, 912, 884, 1008, 444, 572, 572, 912,
- 1008, 624, 1020, 948, 1008, 1020, 944, 572,
- 576, 576, 944, 1020, 1008, 1020, 956, 64,
- 124, 380, 508, 508, 380, 508, 884, 124,
- 380, 508, 624, 564, 956, 380, 444, 508,
- 508, 444, 884, 884, 380, 772, 380, 956,
- 956, 572, 572, 1020, 444, 508, 884, 1020,
- 1020, 508, 188, 316, 576, 576, 772, 576,
- 316, 336, 572, 772, 508, 380, 124, 624,
- 380, 572, 576, 884, 572, 576, 564, 572,
- 124, 316, 884, 508, 316, 884, 564, 316,
- 572, 44, 1020, 380, 336, 1020, 764, 912,
- 444, 508, 828, 828, 508, 828, 884, 444,
- 804, 912, 828, 884, 912, 828, 508, 956,
- 700, 764, 764, 772, 700, 700, 764, 912,
- 700, 764, 804, 828, 828, 764, 860, 860,
- 860, 860, 828, 912, 624, 988, 912, 988,
- 772, 860, 948, 988, 860, 316, 700, 64,
- 124, 384, 588, 508, 384, 508, 124, 508,
- 336, 700, 700, 700, 384, 604, 508, 316,
- 352, 512, 512, 316, 512, 352, 352, 512,
- 588, 316, 508, 512, 636, 636, 512, 636,
- 772, 508, 512, 636, 580, 512, 580, 604,
- 772, 384, 636, 512, 336, 888, 636, 580,
- 636, 700, 700, 384, 508, 512, 136, 584,
- 580, 772, 508, 512, 636, 700, 888, 580,
- 512, 636, 132, 580, 336, 988, 828, 508,
- 604, 604, 636, 700, 588, 828, 636, 828,
- 884, 1012, 700, 828, 860, 816, 828, 804,
- 836, 1004, 448, 480, 192, 544, 224, 704,
- 772, 768, 352, 704, 836, 768, 544, 768,
- 192, 704, 256, 544, 224, 768, 704, 704,
- 768, 544, 836, 784, 544, 256, 772, 768,
- 544, 480, 768, 480, 496, 784, 784, 544,
- 704, 224, 448, 124, 316, 624, 576, 316,
- 448, 592, 576, 448, 256, 576, 576, 224,
- 576, 448, 448, 784, 496, 704, 316, 772,
- 316, 352, 576, 804, 704, 804, 352, 576,
- 704, 496, 704, 576, 544, 352, 224, 316,
- 96, 384, 784, 316, 804, 316, 512, 804,
- 384, 624, 124, 224, 316, 316, 224, 664,
- 784, 512, 316, 496, 352, 304, 448, 64,
- 124, 384, 544, 544, 544, 664, 124, 384,
- 544, 592, 496, 124, 544, 224, 784, 448,
- 784, 224, 448, 544, 448, 544, 544, 576,
- 448, 704, 1004, 892, 1004, 704, 448, 1004,
- 784, 704, 1020, 316, 496, 784, 1020, 496,
- 576, 704, 268, 944, 956, 676, 320, 840,
- 256, 800, 448, 544, 800, 800, 480, 800,
- 256, 1004, 448, 448, 1004, 664, 800, 840,
- 840, 320, 1004, 388, 800, 800, 388, 800,
- 832, 1004, 1004, 832, 1004, 304, 800, 804,
- 832, 800, 832, 840, 772, 1000, 1000, 832,
- 908, 740, 256, 448, 380, 872, 892, 252,
- 128, 872, 872, 892, 380, 676, 872, 872,
- 676, 892, 124, 128, 380, 448, 448, 448,
- 380, 448, 804, 892, 784, 484, 676, 892,
- 320, 252, 256, 804, 448, 448, 256, 320,
- 448, 576, 1004, 1004, 576, 908, 576, 804,
- 320, 332, 784, 664, 948, 892, 664, 1004,
- 676, 576, 676, 1004, 484, 944, 784, 832,
- 484, 872, 320, 388, 740, 740, 388, 740,
- 664, 872, 1004, 740, 804, 832, 976, 420,
- 1020, 912, 120, 764, 496, 592, 764, 496,
- 836, 120, 912, 1008, 268, 912, 496, 260,
- 1020, 872, 956, 576, 1008, 676, 380, 420,
- 572, 1020, 1020, 572, 420, 496, 592, 420,
- 496, 572, 496, 676, 1008, 1008, 496, 676,
- 676, 1008, 676, 420, 892, 956, 836, 496,
- 956, 1020, 956, 136, 260, 496, 872, 676,
- 496, 956, 892, 304, 956, 956, 976, 484,
- 676, 892, 1020, 892, 944, 1020, 708, 676,
- 940, 936, 892, 496, 80, 936, 940, 260,
- 676, 872, 892, 936, 196, 936, 772, 1004,
- 576, 936, 972, 676, 484, 332, 972, 816,
- 892, 536, 868, 676, 816, 868, 676, 576,
- 944, 716, 676, 864, 1004, 740, 832, 972,
- 1004, 716, 936, 864, 1004, 824, 1004, 716,
- 892, 944, 1004, 1004, 944, 460, 972, 936,
- 892, 908, 908, 936, 696, 976, 864, 716,
- 880, 944, 944, 944, 976, 976, 908, 1020,
- 940, 1020, 944, 676, 428, 972, 696, 1008,
- 944, 1008, 944, 976, 536, 824, 976, 664,
- 1008, 824, 716, 996, 792, 276, 84, 724,
- 488, 660, 560, 456, 688, 744, 296, 660,
- 660, 296, 744, 744, 660, 688, 908, 744,
- 688, 744, 784, 692, 744, 616, 488, 560,
- 560, 688, 784, 616, 720, 616, 720, 688,
- 720, 520, 688, 744, 616, 536, 616, 720,
- 688, 744, 784, 688, 664, 744, 520, 692,
- 692, 520, 744, 908, 628, 688, 488, 724,
- 616, 180, 744, 692, 616, 460, 744, 692,
- 724, 400, 744, 488, 560, 616, 724, 616,
- 724, 744, 868, 716, 688, 52, 500, 616,
- 360, 520, 616, 616, 148, 500, 520, 500,
- 520, 520, 616, 500, 520, 816, 744, 868,
- 520, 692, 816, 692, 716, 692, 360, 744,
- 52, 724, 688, 148, 424, 868, 868, 424,
- 724, 716, 148, 688, 724, 744, 204, 744,
- 816, 688, 724, 744, 716, 716, 744, 360,
- 424, 616, 616, 688, 424, 616, 688, 688,
- 616, 460, 816, 744, 592, 424, 628, 500,
- 628, 360, 424, 628, 628, 424, 628, 260,
- 212, 404, 680, 392, 72, 84, 920, 920,
- 84, 920, 816, 84, 392, 680, 404, 456,
- 616, 456, 404, 392, 180, 212, 816, 724,
- 724, 180, 212, 392, 680, 724, 724, 724,
- 680, 680, 392, 460, 724, 592, 680, 392,
- 592, 460, 816, 392, 404, 404, 260, 680,
- 724, 488, 404, 456, 868, 456, 488, 784,
- 680, 488, 680, 460, 488, 724, 592, 488,
- 680, 724, 716, 680, 724, 616, 680, 680,
- 488, 488, 680, 664, 648, 616, 212, 392,
- 424, 628, 784, 392, 424, 392, 232, 424,
- 628, 716, 428, 592, 716, 268, 424, 232,
- 392, 680, 460, 360, 680, 424, 616, 268,
- 616, 592, 680, 628, 648, 648, 820, 692,
- 984, 488, 856, 724, 296, 436, 456, 456,
- 436, 460, 816, 724, 436, 436, 856, 856,
- 856, 488, 456, 180, 404, 532, 532, 404,
- 532, 400, 724, 456, 456, 816, 784, 724,
- 180, 488, 404, 816, 784, 488, 404, 456,
- 488, 816, 716, 404, 532, 856, 532, 276,
- 856, 784, 404, 532, 784, 856, 532, 856,
- 776, 856, 456, 404, 816, 920, 776, 404,
- 716, 920, 856, 856, 920, 984, 984, 920,
- 984, 592, 532, 276, 296, 744, 468, 692,
- 180, 468, 488, 244, 744, 664, 488, 468,
- 664, 744, 744, 600, 664, 244, 692, 784,
- 744, 664, 744, 180, 296, 436, 468, 468,
- 436, 468, 664, 724, 468, 296, 468, 600,
- 716, 332, 592, 600, 692, 276, 436, 468,
- 1016, 1016, 468, 1016, 784, 436, 1016, 536,
- 692, 592, 1016, 532, 724, 180, 816, 592,
- 532, 784, 532, 692, 692, 692, 1016, 308,
- 500, 396, 1016, 820, 1016, 1016, 820, 1016,
- 308, 468, 520, 692, 908, 824, 692, 684,
- 716, 468, 692, 716, 684, 692, 824, 556,
- 468, 308, 204, 868, 684, 692, 520, 468,
- 692, 692, 692, 996, 868, 744, 1016, 296,
- 820, 468, 716, 660, 820, 468, 660, 820,
- 820, 996, 868, 744, 468, 296, 468, 660,
- 684, 996, 528, 372, 896, 200, 752, 308,
- 820, 52, 264, 660, 660, 264, 868, 868,
- 296, 660, 820, 820, 820, 660, 308, 684,
- 308, 204, 660, 820, 716, 520, 712, 660,
- 560, 556, 328, 660, 688, 720, 660, 720,
- 688, 688, 560, 720, 660, 752, 752, 400,
- 660, 752, 716, 308, 712, 664, 660, 712,
- 752, 660, 712, 308, 520, 272, 520, 712,
- 712, 720, 712, 520, 664, 660, 712, 328,
- 272, 660, 552, 660, 712, 712, 712, 720,
- 720, 52, 688, 752, 688, 752, 752, 264,
- 520, 660, 688, 752, 272, 688, 684, 664,
- 660, 688, 664, 520, 552, 660, 752, 556,
- 272, 552, 660, 272, 752, 660, 300, 144,
- 272, 396, 552, 52, 500, 264, 172, 552,
- 520, 264, 664, 520, 552, 396, 264, 596,
- 396, 520, 684, 520, 500, 396, 596, 272,
- 712, 596, 712, 996, 500, 520, 552, 520,
- 712, 172, 712, 552, 264, 752, 296, 344,
- 752, 344, 344, 560, 144, 272, 752, 896,
- 896, 80, 340, 752, 712, 792, 792, 792,
- 792, 204, 464, 752, 340, 264, 464, 592,
- 464, 552, 664, 596, 552, 596, 340, 204,
- 664, 464, 596, 792, 304, 596, 792, 752,
- 464, 344, 144, 792, 752, 552, 332, 268,
- 820, 660, 884, 1012, 588, 564, 396, 264,
- 664, 592, 596, 396, 564, 564, 396, 780,
- 564, 664, 592, 272, 564, 596, 712, 396,
- 596, 712, 780, 780, 664, 564, 1012, 596,
- 304, 372, 780, 884, 564, 656, 656, 592,
- 1012, 656, 656, 304, 780, 656, 564, 340,
- 340, 272, 168, 304, 204, 564, 264, 340,
- 340, 372, 948, 264, 340, 656, 340, 564,
- 656, 260, 564, 592, 260, 340, 948, 340,
- 564, 204, 564, 260, 592, 948, 884, 372,
- 564, 260, 204, 564, 656, 144, 884, 564,
- 656, 272, 884, 948, 948, 80, 656, 792,
- 340, 344, 328, 344, 896, 344, 600, 344,
- 340, 344, 204, 204, 792, 780, 340, 780,
- 176, 596, 780, 272, 780, 792, 712, 344,
- 340, 328, 656, 592, 660, 656, 684, 536,
- 264, 340, 836, 1012, 340, 992, 992, 344,
- 340, 656, 780, 780, 656, 972, 992, 596,
- 656, 972, 712, 992, 712, 992, 824, 308,
- 884, 396, 132, 372, 992, 868, 372, 396,
- 132, 824, 580, 884, 656, 372, 868, 396,
- 308, 820, 372, 1016, 1016, 820, 1016, 372,
- 760, 868, 824, 992, 396, 660, 308, 972,
- 656, 332, 760, 876, 660, 820, 876, 824,
- 792, 652, 752, 560, 240, 360, 424, 360,
- 424, 688, 876, 720, 424, 824, 684, 432,
- 432, 720, 432, 688, 720, 688, 868, 928,
- 560, 720, 928, 360, 432, 240, 552, 688,
- 688, 824, 552, 720, 688, 752, 928, 868,
- 688, 752, 720, 720, 760, 720, 752, 752,
- 688, 500, 360, 500, 720, 520, 584, 928,
- 720, 684, 552, 556, 584, 520, 684, 876,
- 900, 652, 464, 788, 236, 240, 408, 408,
- 240, 408, 432, 432, 408, 432, 928, 528,
- 408, 528, 788, 528, 552, 216, 240, 464,
- 788, 788, 464, 240, 788, 464, 788, 464,
- 528, 552, 552, 528, 848, 928, 848, 432,
- 552, 500, 652, 240, 760, 360, 628, 652,
- 628, 652, 652, 500, 760, 788, 652, 788,
- 528, 240, 360, 652, 500, 748, 924, 500,
- 924, 652, 360, 652, 848, 788, 500, 528,
- 748, 152, 584, 876, 528, 760, 876, 788,
- 760, 628, 900, 240, 240, 360, 240, 324,
- 424, 360, 240, 408, 900, 900, 408, 432,
- 900, 900, 432, 760, 172, 240, 900, 232,
- 628, 748, 168, 824, 992, 812, 628, 652,
- 960, 900, 960, 812, 876, 812, 900, 812,
- 960, 900, 360, 628, 900, 900, 360, 628,
- 848, 628, 652, 900, 960, 520, 432, 552,
- 464, 528, 792, 792, 528, 596, 848, 844,
- 596, 876, 960, 596, 528, 756, 528, 720,
- 756, 756, 552, 712, 720, 756, 876, 792,
- 792, 720, 756, 792, 844, 960, 720, 712,
- 792, 876, 720, 780, 596, 712, 792, 844,
- 760, 780, 756, 712, 848, 960, 780, 876,
- 780, 960, 960, 756, 792, 720, 560, 752,
- 896, 896, 896, 760, 560, 720, 720, 876,
- 720, 792, 896, 876, 464, 752, 792, 960,
- 896, 792, 876, 760, 752, 748, 792, 752,
- 720, 752, 848, 788, 792, 168, 720, 464,
- 756, 432, 896, 992, 792, 992, 964, 792,
- 896, 824, 792, 536, 780, 756, 964, 992,
- 788, 552, 528, 500, 596, 964, 712, 500,
- 332, 528, 712, 528, 596, 712, 536, 712,
- 596, 528, 520, 712, 472, 720, 552, 596,
- 712, 992, 712, 964, 712, 964, 712, 844,
- 472, 528, 788, 464, 464, 788, 528, 152,
- 760, 528, 596, 760, 552, 596, 788, 760,
- 496, 584, 876, 816, 600, 728, 300, 776,
- 756, 728, 332, 596, 780, 428, 596, 780,
- 472, 596, 728, 728, 756, 992, 756, 780,
- 728, 780, 844, 756, 776, 792, 792, 428,
- 536, 844, 596, 464, 776, 600, 728, 728,
- 600, 600, 776, 792, 596, 792, 728, 876,
- 844, 368, 824, 876, 896, 776, 716, 728,
- 472, 876, 600, 760, 664, 716, 728, 816,
- 472, 536, 776, 472, 536, 536, 816, 876,
- 728, 776, 760, 168, 728, 756, 816, 816,
- 756, 776, 816, 876, 776, 760, 168, 964,
- 792, 600, 896, 344, 464, 896, 600, 776,
- 152, 756, 896, 472, 464, 728, 472, 428,
- 600, 728, 600, 960, 792, 896, 684, 728,
- 756, 776, 684, 792, 684, 776, 896, 684,
- 792, 584, 996, 896, 964, 776, 964, 896,
- 584, 536, 896, 964, 964, 896, 964, 556,
- 596, 900, 728, 788, 876, 408, 332, 152,
- 112, 152, 168, 168, 332, 332, 168, 528,
- 408, 528, 464, 408, 152, 876, 204, 168,
- 868, 824, 152, 408, 876, 472, 472, 408,
- 472, 684, 876, 472, 876, 464, 556, 472,
- 168, 332, 788, 996, 824, 788, 236, 332,
- 788, 716, 528, 788, 528, 684, 756, 728,
- 332, 272, 964, 408, 168, 428, 728, 728,
- 728, 428, 472, 408, 684, 728, 472, 428,
- 472, 272, 272, 472, 964, 472, 964, 204,
- 528, 332, 756, 236, 408, 408, 964, 684,
- 756, 716, 964, 332, 756, 756, 876, 408,
- 528, 728, 824, 584, 728, 756, 464, 528,
- 728, 972, 728, 728, 652, 876, 844, 408,
- 236, 868, 972, 408, 788, 236, 408, 844,
- 868, 964, 844, 824, 972, 408, 964, 844,
- 900, 900, 716, 900, 816, 964, 876, 408,
- 464, 844, 716, 876, 788, 876, 900, 652,
- 812, 844, 960, 536, 844, 716, 812, 960,
- 472, 812, 844, 536, 816, 844, 868, 716,
- 684, 960, 652, 584, 876, 868, 684, 332,
- 728, 368, 600, 272, 152, 176, 716, 176,
- 472, 472, 272, 176, 272, 684, 716, 428,
- 600, 428, 112, 368, 272, 368, 472, 728,
- 176, 200, 464, 600, 716, 600, 684, 472,
- 728, 472, 176, 300, 368, 464, 728, 200,
- 596, 204, 428, 464, 868, 368, 824, 728,
- 788, 332, 368, 272, 368, 596, 876, 368,
- 788, 788, 596, 272, 368, 596, 756, 332,
- 728, 368, 368, 272, 396, 272, 844,
+ 344, 456, 168, 532, 232, 92, 868, 700,
+ 504, 316, 124, 272, 56, 900, 828, 828,
+ 56, 308, 116, 312, 828, 900, 900, 828,
+ 900, 116, 116, 116, 312, 828, 864, 900,
+ 864, 124, 124, 124, 316, 484, 828, 308,
+ 116, 124, 252, 124, 504, 252, 252, 252,
+ 864, 116, 124, 248, 252, 864, 252, 864,
+ 892, 504, 900, 700, 700, 116, 700, 468,
+ 504, 892, 700, 900, 316, 700, 892, 700,
+ 700, 700, 900, 756, 716, 868, 892, 864,
+ 868, 868, 484, 828, 868, 828, 868, 252,
+ 868, 796, 180, 664, 816, 92, 900, 828,
+ 900, 828, 864, 828, 816, 816, 864, 828,
+ 664, 816, 828, 816, 828, 992, 180, 180,
+ 664, 816, 796, 816, 816, 868, 180, 664,
+ 828, 828, 664, 496, 828, 492, 496, 528,
+ 528, 492, 180, 828, 868, 88, 4, 4,
+ 868, 828, 468, 228, 180, 868, 120, 124,
+ 92, 900, 56, 528, 900, 492, 816, 308,
+ 28, 44, 92, 900, 116, 528, 900, 116,
+ 468, 92, 900, 116, 864, 900, 864, 44,
+ 92, 92, 116, 900, 92, 312, 716, 468,
+ 828, 312, 92, 116, 468, 92, 468, 612,
+ 92, 492, 888, 828, 888, 44, 308, 124,
+ 248, 252, 252, 248, 468, 528, 124, 248,
+ 248, 896, 124, 116, 124, 252, 864, 124,
+ 1004, 864, 120, 92, 124, 88, 180, 492,
+ 828, 716, 180, 308, 828, 44, 248, 92,
+ 124, 124, 92, 248, 364, 180, 180, 248,
+ 364, 180, 248, 1004, 864, 364, 92, 124,
+ 180, 1004, 124, 180, 612, 364, 896, 484,
+ 828, 828, 828, 248, 92, 528, 56, 44,
+ 120, 816, 120, 92, 364, 748, 528, 520,
+ 468, 528, 180, 664, 120, 364, 468, 120,
+ 816, 716, 816, 664, 748, 120, 468, 664,
+ 180, 88, 748, 716, 92, 224, 632, 180,
+ 944, 828, 664, 944, 632, 504, 232, 56,
+ 360, 868, 272, 316, 324, 4, 828, 244,
+ 244, 828, 244, 4, 828, 244, 944, 752,
+ 632, 828, 324, 244, 624, 828, 828, 316,
+ 892, 316, 244, 868, 868, 244, 868, 868,
+ 112, 244, 4, 360, 888, 244, 4, 112,
+ 204, 4, 172, 828, 4, 88, 360, 180,
+ 204, 868, 360, 112, 4, 204, 104, 228,
+ 228, 204, 4, 624, 204, 4, 204, 944,
+ 112, 632, 4, 204, 4, 468, 828, 828,
+ 204, 468, 232, 112, 360, 308, 272, 324,
+ 316, 828, 324, 316, 324, 828, 468, 324,
+ 716, 324, 324, 360, 324, 484, 680, 828,
+ 112, 484, 460, 248, 360, 56, 828, 232,
+ 232, 124, 204, 232, 88, 180, 460, 828,
+ 88, 180, 232, 232, 180, 232, 716, 204,
+ 828, 232, 484, 828, 232, 460, 180, 232,
+ 124, 716, 360, 936, 204, 88, 360, 112,
+ 468, 232, 112, 232, 936, 360, 232, 460,
+ 460, 204, 460, 232, 360, 180, 248, 308,
+ 828, 272, 56, 232, 124, 124, 632, 232,
+ 56, 124, 232, 460, 752, 632, 624, 56,
+ 224, 468, 460, 828, 460, 716, 828, 232,
+ 468, 248, 248, 248, 460, 580, 844, 248,
+ 232, 360, 476, 112, 112, 476, 360, 112,
+ 232, 716, 196, 632, 612, 252, 248, 716,
+ 272, 232, 360, 124, 504, 504, 124, 504,
+ 460, 360, 504, 232, 248, 248, 232, 248,
+ 632, 124, 504, 232, 248, 624, 520, 460,
+ 624, 504, 232, 460, 888, 752, 468, 460,
+ 124, 232, 308, 324, 888, 612, 248, 324,
+ 624, 124, 504, 232, 716, 484, 716, 504,
+ 400, 716, 632, 248, 232, 248, 252, 308,
+ 124, 124, 592, 248, 476, 252, 308, 248,
+ 632, 624, 844, 112, 652, 84, 112, 504,
+ 652, 504, 360, 504, 632, 112, 476, 112,
+ 476, 844, 476, 504, 844, 504, 844, 844,
+ 892, 700, 580, 844, 316, 324, 504, 652,
+ 756, 756, 652, 756, 936, 504, 756, 504,
+ 716, 360, 652, 588, 632, 652, 460, 748,
+ 324, 360, 756, 504, 864, 752, 864, 1004,
+ 520, 1004, 1004, 652, 504, 844, 844, 716,
+ 756, 316, 308, 844, 324, 504, 936, 716,
+ 324, 504, 844, 936, 504, 936, 716, 316,
+ 324, 504, 996, 324, 980, 1004, 504, 756,
+ 324, 756, 308, 272, 504, 316, 748, 540,
+ 316, 700, 504, 540, 700, 528, 540, 700,
+ 500, 316, 360, 756, 492, 500, 400, 528,
+ 500, 756, 540, 316, 308, 324, 528, 504,
+ 540, 324, 324, 360, 528, 884, 316, 580,
+ 892, 944, 756, 892, 756, 500, 316, 892,
+ 700, 540, 756, 700, 540, 716, 892, 700,
+ 500, 528, 340, 540, 528, 884, 520, 540,
+ 528, 892, 756, 716, 88, 796, 844, 768,
+ 972, 584, 776, 776, 784, 784, 596, 656,
+ 784, 784, 944, 784, 972, 784, 608, 832,
+ 768, 768, 832, 832, 596, 832, 752, 716,
+ 540, 832, 776, 784, 832, 832, 784, 832,
+ 528, 656, 596, 336, 364, 476, 476, 476,
+ 284, 532, 476, 932, 784, 364, 476, 532,
+ 532, 476, 532, 500, 364, 476, 784, 500,
+ 476, 784, 784, 532, 784, 784, 500, 532,
+ 784, 596, 476, 680, 832, 844, 844, 832,
+ 844, 492, 476, 500, 716, 832, 680, 476,
+ 844, 1004, 844, 476, 224, 288, 500, 832,
+ 336, 680, 476, 876, 492, 476, 784, 944,
+ 680, 476, 528, 896, 600, 1004, 492, 784,
+ 832, 896, 656, 584, 364, 1004, 944, 656,
+ 532, 532, 968, 784, 952, 584, 584, 768,
+ 768, 952, 500, 796, 816, 584, 796, 364,
+ 664, 664, 796, 796, 584, 364, 664, 784,
+ 784, 664, 864, 784, 364, 664, 932, 484,
+ 664, 784, 796, 796, 540, 816, 568, 364,
+ 364, 120, 120, 816, 528, 568, 816, 816,
+ 796, 968, 816, 540, 528, 796, 768, 972,
+ 656, 584, 952, 952, 656, 972, 768, 664,
+ 656, 784, 644, 656, 784, 748, 796, 972,
+ 656, 796, 972, 532, 796, 972, 528, 664,
+ 796, 584, 656, 532, 748, 656, 948, 948,
+ 796, 796, 784, 532, 540, 528, 784, 748,
+ 796, 204, 476, 796, 532, 180, 364, 664,
+ 748, 816, 120, 664, 816, 944, 528, 44,
+ 120, 400, 540, 540, 540, 44, 180, 224,
+ 948, 944, 748, 364, 120, 944, 220, 540,
+ 656, 532, 664, 180, 532, 664, 944, 632,
+ 180, 532, 944, 228, 532, 876, 664, 532,
+ 228, 764, 532, 228, 816, 796, 656, 592,
+ 656, 664, 796, 764, 876, 968, 816, 632,
+ 364, 248, 308, 476, 476, 248, 748, 180,
+ 248, 920, 476, 948, 248, 532, 828, 364,
+ 180, 948, 248, 920, 664, 268, 452, 664,
+ 364, 476, 532, 920, 476, 748, 532, 532,
+ 336, 844, 476, 476, 476, 788, 680, 400,
+ 788, 760, 960, 488, 788, 360, 828, 680,
+ 112, 476, 204, 476, 132, 476, 748, 476,
+ 132, 204, 204, 476, 476, 204, 680, 748,
+ 476, 828, 88, 112, 204, 228, 204, 228,
+ 228, 112, 204, 748, 920, 224, 788, 760,
+ 248, 476, 112, 384, 132, 760, 476, 228,
+ 496, 664, 644, 664, 496, 496, 532, 656,
+ 228, 656, 664, 824, 460, 748, 532, 460,
+ 748, 228, 656, 8, 460, 632, 204, 784,
+ 828, 680, 936, 632, 592, 828, 204, 180,
+ 88, 532, 760, 760, 824, 936, 588, 180,
+ 760, 532, 476, 532, 204, 592, 204, 532,
+ 544, 760, 532, 544, 544, 476, 532, 460,
+ 204, 664, 496, 748, 204, 664, 204, 544,
+ 828, 544, 204, 748, 828, 964, 4, 136,
+ 736, 652, 892, 756, 1008, 600, 636, 376,
+ 376, 636, 376, 460, 1008, 600, 884, 624,
+ 544, 884, 756, 1008, 1008, 756, 1008, 884,
+ 892, 756, 460, 96, 624, 592, 636, 1008,
+ 376, 1008, 652, 376, 760, 756, 600, 752,
+ 892, 752, 400, 340, 636, 376, 736, 736,
+ 376, 736, 632, 340, 636, 376, 736, 544,
+ 220, 760, 760, 636, 376, 736, 148, 488,
+ 488, 400, 736, 376, 736, 752, 868, 868,
+ 752, 868, 488, 868, 752, 196, 624, 488,
+ 752, 220, 544, 488, 736, 624, 752, 636,
+ 752, 340, 96, 736, 376, 52, 80, 156,
+ 200, 212, 212, 200, 212, 592, 156, 200,
+ 212, 760, 224, 760, 624, 156, 80, 200,
+ 200, 156, 376, 592, 200, 748, 736, 200,
+ 96, 136, 544, 156, 136, 156, 544, 376,
+ 212, 80, 340, 96, 224, 224, 96, 224,
+ 460, 96, 96, 96, 80, 212, 224, 224,
+ 624, 340, 376, 376, 224, 736, 400, 340,
+ 736, 212, 200, 868, 752, 212, 788, 488,
+ 212, 224, 788, 752, 736, 788, 488, 804,
+ 376, 384, 636, 652, 96, 136, 84, 80,
+ 52, 156, 156, 80, 84, 624, 156, 136,
+ 84, 156, 96, 136, 136, 888, 96, 136,
+ 748, 652, 84, 636, 96, 96, 96, 652,
+ 652, 652, 384, 736, 384, 52, 636, 652,
+ 920, 376, 652, 976, 636, 652, 376, 976,
+ 652, 760, 976, 376, 384, 52, 736, 636,
+ 592, 764, 636, 376, 736, 764, 376, 760,
+ 136, 804, 652, 804, 976, 844, 824, 652,
+ 804, 592, 804, 156, 84, 172, 868, 756,
+ 244, 384, 652, 376, 360, 52, 588, 764,
+ 220, 976, 764, 324, 360, 652, 384, 624,
+ 652, 912, 976, 360, 652, 652, 764, 52,
+ 360, 324, 736, 316, 976, 376, 736, 764,
+ 244, 360, 324, 376, 324, 316, 376, 736,
+ 244, 244, 736, 244, 376, 736, 760, 976,
+ 520, 764, 324, 736, 764, 692, 652, 736,
+ 892, 316, 376, 488, 764, 376, 624, 892,
+ 760, 736, 760, 892, 488, 736, 376, 764,
+ 892, 244, 828, 736, 244, 764, 760, 244,
+ 764, 760, 736, 868, 488, 592, 104, 868,
+ 224, 624, 868, 624, 868, 172, 360, 196,
+ 592, 624, 268, 384, 828, 4, 172, 244,
+ 244, 172, 920, 760, 828, 488, 788, 384,
+ 4, 788, 488, 4, 172, 244, 692, 520,
+ 788, 488, 4, 868, 868, 804, 384, 4,
+ 828, 160, 84, 112, 172, 788, 204, 172,
+ 488, 692, 112, 172, 920, 148, 760, 764,
+ 172, 112, 4, 828, 172, 976, 876, 172,
+ 828, 748, 828, 944, 4, 400, 1004, 764,
+ 172, 1012, 1012, 4, 384, 112, 84, 720,
+ 764, 652, 112, 132, 172, 84, 112, 360,
+ 384, 720, 764, 384, 112, 384, 112, 112,
+ 84, 112, 172, 172, 112, 172, 720, 384,
+ 132, 692, 172, 132, 172, 1000, 360, 112,
+ 172, 1000, 1000, 692, 244, 384, 112, 4,
+ 172, 764, 4, 720, 1012, 172, 764, 4,
+ 720, 1012, 4, 1012, 84, 652, 1012, 652,
+ 680, 844, 804, 764, 804, 436, 844, 720,
+ 244, 212, 172, 652, 84, 384, 384, 132,
+ 132, 876, 172, 84, 80, 156, 436, 200,
+ 156, 1012, 920, 84, 156, 160, 692, 200,
+ 160, 156, 160, 160, 948, 200, 84, 80,
+ 104, 384, 172, 200, 200, 172, 200, 720,
+ 384, 172, 200, 720, 172, 920, 384, 948,
+ 540, 84, 80, 384, 472, 472, 148, 540,
+ 948, 84, 384, 172, 472, 944, 220, 472,
+ 540, 172, 384, 172, 200, 472, 496, 156,
+ 200, 200, 200, 452, 496, 472, 200, 868,
+ 384, 376, 736, 200, 452, 244, 200, 440,
+ 200, 944, 948, 80, 384, 140, 932, 932,
+ 200, 876, 540, 220, 472, 472, 496, 868,
+ 244, 200, 868, 472, 212, 1012, 212, 436,
+ 212, 868, 384, 200, 944, 472, 824, 1012,
+ 944, 868, 932, 868, 736, 496, 496, 200,
+ 828, 336, 8, 68, 108, 652, 64, 72,
+ 384, 132, 172, 160, 224, 436, 472, 80,
+ 156, 160, 948, 540, 520, 472, 948, 160,
+ 220, 944, 472, 944, 160, 436, 132, 160,
+ 948, 948, 160, 944, 876, 384, 84, 132,
+ 436, 384, 172, 948, 840, 720, 720, 384,
+ 132, 80, 160, 156, 84, 136, 160, 160,
+ 136, 436, 948, 84, 136, 156, 160, 944,
+ 156, 436, 136, 160, 472, 156, 1012, 452,
+ 84, 132, 160, 132, 148, 920, 764, 516,
+ 84, 384, 208, 516, 140, 208, 516, 72,
+ 160, 160, 948, 132, 132, 744, 496, 160,
+ 64, 104, 108, 108, 108, 384, 868, 104,
+ 160, 172, 948, 172, 472, 172, 948, 496,
+ 496, 496, 948, 684, 908, 656, 908, 908,
+ 868, 156, 160, 72, 684, 352, 68, 108,
+ 496, 108, 496, 496, 352, 108, 108, 496,
+ 684, 352, 472, 352, 72, 108, 472, 72,
+ 160, 1020, 496, 208, 496, 72, 160, 80,
+ 156, 200, 212, 208, 220, 208, 472, 400,
+ 224, 208, 472, 144, 440, 452, 160, 472,
+ 80, 156, 944, 944, 452, 684, 944, 496,
+ 868, 752, 684, 440, 500, 108, 212, 752,
+ 500, 684, 868, 192, 452, 500, 452, 212,
+ 868, 168, 144, 652, 744, 160, 156, 80,
+ 96, 164, 440, 500, 156, 932, 96, 440,
+ 944, 136, 72, 80, 80, 136, 192, 208,
+ 208, 136, 80, 208, 420, 136, 160, 440,
+ 140, 1020, 948, 136, 652, 80, 132, 744,
+ 744, 136, 652, 84, 932, 136, 652, 804,
+ 516, 652, 136, 804, 804, 136, 208, 516,
+ 144, 72, 136, 208, 420, 416, 516, 328,
+ 804, 144, 136, 72, 176, 144, 176, 744,
+ 744, 144, 420, 744, 744, 96, 136, 144,
+ 8, 8, 144, 136, 144, 8, 932, 144,
+ 8, 932, 420, 804, 960, 144, 744, 300,
+ 960, 804, 804, 168, 160, 744, 68, 144,
+ 416, 164, 164, 176, 144, 72, 352, 164,
+ 352, 176, 144, 420, 164, 176, 932, 72,
+ 144, 68, 352, 416, 684, 164, 164, 164,
+ 684, 416, 684, 932, 676, 684, 164, 164,
+ 684, 352, 164, 472, 144, 764, 732, 72,
+ 352, 144, 160, 732, 144, 160, 96, 212,
+ 356, 212, 752, 212, 224, 156, 192, 1012,
+ 344, 212, 168, 224, 224, 356, 168, 164,
+ 212, 212, 80, 96, 212, 156, 168, 168,
+ 168, 164, 356, 320, 212, 368, 344, 156,
+ 168, 408, 408, 168, 212, 396, 408, 224,
+ 408, 156, 676, 156, 396, 168, 684, 164,
+ 344, 408, 164, 212, 160, 164, 72, 156,
+ 68, 80, 320, 732, 80, 1012, 68, 156,
+ 168, 720, 212, 168, 1000, 924, 156, 168,
+ 732, 924, 176, 1012, 924, 156, 72, 80,
+ 1012, 72, 156, 168, 732, 156, 168, 536,
+ 164, 168, 536, 168, 396, 732, 168, 160,
+ 1012, 168, 8, 144, 72, 1020, 924, 168,
+ 144, 164, 176, 176, 720, 164, 168, 168,
+ 168, 408, 96, 8, 168, 536, 676, 168,
+ 224, 536, 8, 148, 536, 380, 192, 676,
+ 396, 132, 496, 656, 744, 776, 596, 336,
+ 960, 680, 784, 776, 516, 516, 536, 776,
+ 832, 676, 784, 676, 776, 960, 576, 832,
+ 960, 536, 1012, 680, 776, 300, 720, 776,
+ 720, 1012, 776, 776, 744, 680, 416, 680,
+ 144, 744, 960, 744, 960, 960, 744, 960,
+ 300, 744, 960, 416, 776, 776, 744, 776,
+ 840, 840, 776, 960, 840, 840, 960, 576,
+ 720, 964, 972, 776, 980, 776, 516, 972,
+ 972, 744, 964, 644, 656, 192, 732, 540,
+ 776, 656, 776, 656, 964, 416, 416, 656,
+ 964, 964, 416, 744, 304, 744, 524, 840,
+ 744, 840, 776, 964, 524, 840, 656, 908,
+ 972, 972, 908, 964, 896, 972, 964, 788,
+ 896, 108, 160, 72, 416, 336, 544, 144,
+ 416, 544, 136, 144, 524, 336, 352, 416,
+ 148, 524, 544, 144, 800, 460, 416, 744,
+ 744, 680, 160, 336, 744, 524, 908, 680,
+ 108, 496, 228, 824, 800, 140, 460, 524,
+ 108, 496, 800, 64, 336, 496, 204, 228,
+ 204, 228, 496, 800, 524, 336, 800, 496,
+ 108, 336, 352, 496, 416, 416, 684, 624,
+ 888, 460, 644, 416, 544, 612, 416, 684,
+ 416, 668, 896, 684, 108, 496, 352, 644,
+ 656, 800, 644, 484, 524, 800, 656, 644,
+ 108, 496, 524, 228, 800, 108, 496, 228,
+ 484, 496, 228, 372, 656, 108, 388, 612,
+ 108, 612, 856, 496, 864, 496, 784, 496,
+ 644, 908, 908, 796, 796, 684, 656, 908,
+ 796, 864, 856, 796, 896, 612, 908, 796,
+ 856, 896, 664, 612, 868, 804, 496, 160,
+ 144, 132, 72, 136, 136, 744, 136, 1004,
+ 856, 1004, 744, 680, 132, 824, 864, 864,
+ 1008, 220, 524, 484, 484, 680, 680, 680,
+ 744, 372, 744, 204, 160, 204, 960, 804,
+ 680, 652, 744, 476, 476, 132, 744, 476,
+ 524, 744, 680, 484, 460, 460, 680, 132,
+ 744, 744, 132, 612, 136, 744, 680, 484,
+ 680, 372, 804, 864, 804, 680, 960, 804,
+ 1004, 372, 1004, 108, 496, 868, 160, 112,
+ 132, 112, 612, 112, 204, 824, 856, 800,
+ 132, 824, 544, 236, 172, 236, 496, 60,
+ 228, 160, 132, 104, 384, 172, 524, 384,
+ 172, 544, 192, 236, 524, 164, 800, 524,
+ 160, 228, 104, 112, 132, 172, 204, 484,
+ 196, 484, 176, 192, 544, 484, 184, 460,
+ 132, 112, 196, 484, 544, 192, 484, 936,
+ 132, 524, 524, 228, 112, 484, 524, 132,
+ 148, 484, 484, 228, 160, 172, 484, 172,
+ 204, 404, 204, 160, 496, 496, 460, 828,
+ 496, 204, 524, 936, 196, 236, 544, 72,
+ 496, 228, 132, 108, 160, 60, 496, 496,
+ 64, 160, 236, 484, 496, 64, 800, 236,
+ 800, 132, 132, 160, 800, 228, 176, 484,
+ 604, 352, 108, 72, 484, 132, 936, 484,
+ 72, 108, 132, 108, 404, 132, 108, 936,
+ 936, 248, 412, 548, 672, 640, 916, 628,
+ 904, 688, 688, 904, 688, 604, 628, 916,
+ 904, 916, 916, 660, 904, 916, 484, 904,
+ 808, 956, 660, 448, 952, 952, 448, 952,
+ 236, 448, 968, 704, 956, 956, 968, 448,
+ 460, 956, 672, 448, 688, 448, 808, 640,
+ 672, 672, 640, 704, 808, 808, 704, 808,
+ 236, 808, 448, 448, 508, 236, 808, 508,
+ 808, 404, 508, 672, 688, 808, 808, 688,
+ 808, 236, 508, 508, 404, 372, 548, 660,
+ 848, 508, 672, 620, 448, 780, 780, 448,
+ 780, 524, 404, 448, 508, 672, 404, 448,
+ 508, 508, 620, 780, 820, 848, 848, 820,
+ 780, 848, 672, 660, 768, 780, 780, 952,
+ 448, 768, 780, 372, 768, 236, 236, 952,
+ 768, 388, 800, 280, 428, 548, 448, 952,
+ 956, 968, 968, 956, 524, 484, 548, 548,
+ 956, 548, 548, 444, 448, 508, 548, 548,
+ 508, 548, 936, 956, 548, 848, 448, 428,
+ 456, 508, 508, 456, 508, 936, 448, 928,
+ 936, 508, 192, 928, 404, 848, 128, 808,
+ 704, 836, 940, 872, 628, 728, 688, 728,
+ 688, 696, 696, 628, 928, 996, 696, 628,
+ 916, 940, 940, 628, 936, 916, 940, 484,
+ 648, 696, 940, 940, 696, 940, 728, 728,
+ 940, 936, 484, 836, 940, 12, 412, 728,
+ 728, 412, 936, 996, 728, 836, 956, 940,
+ 640, 704, 704, 164, 864, 864, 704, 856,
+ 412, 688, 704, 860, 12, 296, 296, 860,
+ 856, 808, 860, 860, 704, 808, 704, 808,
+ 404, 860, 404, 860, 372, 808, 860, 856,
+ 412, 728, 688, 860, 860, 728, 728, 836,
+ 860, 772, 860, 860, 836, 864, 548, 480,
+ 704, 128, 412, 296, 860, 936, 412, 712,
+ 128, 968, 968, 712, 712, 128, 704, 956,
+ 704, 936, 996, 404, 480, 712, 836, 772,
+ 860, 860, 936, 772, 712, 848, 480, 348,
+ 724, 456, 456, 724, 456, 936, 128, 296,
+ 456, 480, 480, 456, 480, 604, 480, 348,
+ 128, 996, 456, 128, 372, 128, 480, 480,
+ 480, 848, 996, 480, 848, 388, 372, 848,
+ 860, 372, 724, 712, 604, 480, 724, 480,
+ 388, 480, 772, 848, 848, 772, 144, 856,
+ 996, 404, 704, 848, 808, 548, 508, 456,
+ 196, 928, 236, 548, 296, 1004, 888, 444,
+ 456, 548, 548, 548, 444, 456, 456, 404,
+ 216, 860, 220, 216, 388, 508, 848, 856,
+ 508, 848, 216, 216, 848, 860, 856, 548,
+ 196, 372, 388, 704, 404, 956, 968, 548,
+ 236, 968, 548, 824, 724, 120, 820, 832,
+ 968, 768, 952, 952, 784, 584, 428, 284,
+ 448, 236, 824, 448, 768, 524, 428, 448,
+ 448, 284, 768, 428, 448, 236, 524, 428,
+ 768, 388, 236, 284, 524, 768, 140, 784,
+ 448, 952, 236, 140, 192, 388, 524, 832,
+ 596, 428, 284, 448, 372, 168, 800, 800,
+ 768, 448, 768, 780, 140, 428, 448, 524,
+ 768, 780, 824, 832, 780, 524, 668, 820,
+ 364, 432, 188, 428, 284, 584, 284, 428,
+ 428, 284, 428, 824, 564, 188, 284, 188,
+ 188, 188, 308, 284, 476, 584, 284, 432,
+ 476, 476, 432, 140, 544, 308, 432, 236,
+ 188, 816, 584, 284, 524, 364, 284, 364,
+ 404, 284, 432, 308, 476, 432, 504, 388,
+ 504, 844, 248, 236, 372, 432, 308, 236,
+ 236, 820, 404, 820, 844, 832, 432, 596,
+ 372, 604, 388, 388, 476, 844, 372, 820,
+ 168, 388, 372, 832, 844, 76, 308, 548,
+ 584, 952, 816, 568, 796, 956, 956, 236,
+ 796, 956, 796, 968, 524, 140, 8, 216,
+ 220, 796, 968, 816, 824, 968, 824, 968,
+ 952, 220, 824, 140, 956, 520, 220, 968,
+ 196, 220, 220, 240, 188, 364, 152, 584,
+ 584, 120, 568, 152, 152, 140, 152, 444,
+ 584, 444, 444, 364, 568, 520, 584, 120,
+ 568, 364, 520, 220, 364, 568, 120, 816,
+ 152, 152, 520, 816, 120, 152, 140, 192,
+ 388, 520, 152, 428, 520, 188, 432, 444,
+ 152, 76, 188, 444, 188, 188, 548, 152,
+ 816, 444, 428, 220, 140, 188, 240, 568,
+ 152, 444, 388, 152, 76, 236, 152, 816,
+ 240, 816, 240, 240, 188, 240, 240, 240,
+ 8, 388, 388, 428, 240, 548, 548, 76,
+ 188, 444, 252, 504, 432, 308, 176, 604,
+ 388, 252, 76, 432, 604, 252, 444, 464,
+ 152, 312, 364, 252, 308, 188, 28, 44,
+ 120, 120, 44, 120, 48, 120, 236, 188,
+ 308, 520, 188, 252, 188, 308, 44, 116,
+ 252, 824, 116, 928, 520, 252, 520, 120,
+ 684, 312, 604, 816, 188, 44, 444, 120,
+ 312, 252, 44, 100, 100, 152, 152, 252,
+ 120, 816, 100, 152, 312, 520, 928, 76,
+ 152, 188, 928, 312, 816, 404, 816, 152,
+ 928, 928, 404, 188, 252, 956, 724, 812,
+ 100, 188, 348, 900, 708, 616, 424, 700,
+ 700, 424, 604, 424, 708, 708, 424, 700,
+ 708, 708, 708, 48, 900, 332, 348, 424,
+ 708, 236, 424, 348, 424, 708, 372, 424,
+ 708, 900, 164, 524, 788, 424, 524, 424,
+ 348, 464, 424, 464, 188, 188, 464, 188,
+ 824, 464, 44, 252, 312, 116, 424, 424,
+ 700, 900, 312, 100, 116, 424, 524, 116,
+ 424, 824, 100, 116, 424, 524, 788, 116,
+ 824, 164, 668, 788, 116, 524, 424, 788,
+ 896, 312, 424, 188, 668, 252, 188, 252,
+ 800, 312, 100, 424, 188, 896, 668, 176,
+ 216, 524, 424, 188, 856, 372, 8, 856,
+ 896, 424, 188, 252, 188, 372, 116, 524,
+ 464, 820, 188, 432, 188, 668, 404, 464,
+ 176, 484, 976, 188, 252, 976, 740, 892,
+ 504, 812, 884, 756, 812, 812, 812, 708,
+ 700, 892, 616, 616, 700, 812, 812, 700,
+ 812, 852, 708, 976, 700, 852, 708, 520,
+ 812, 844, 616, 432, 700, 252, 740, 504,
+ 852, 812, 504, 812, 504, 424, 308, 740,
+ 740, 424, 512, 504, 852, 252, 504, 252,
+ 424, 116, 700, 852, 512, 504, 700, 424,
+ 976, 1008, 852, 252, 812, 812, 504, 252,
+ 812, 976, 252, 812, 252, 464, 852, 464,
+ 252, 740, 464, 912, 740, 432, 504, 976,
+ 852, 504, 912, 880, 252, 1008, 504, 520,
+ 464, 700, 616, 424, 740, 1008, 1008, 400,
+ 424, 600, 740, 1008, 424, 708, 148, 400,
+ 852, 708, 700, 852, 400, 520, 464, 752,
+ 812, 820, 432, 844, 520, 844, 740, 504,
+ 520, 504, 752, 400, 820, 852, 392, 792,
+ 456, 712, 348, 724, 708, 424, 464, 740,
+ 824, 852, 464, 824, 852, 708, 520, 852,
+ 812, 724, 464, 812, 852, 332, 348, 724,
+ 464, 464, 724, 464, 824, 348, 424, 708,
+ 520, 464, 708, 464, 400, 708, 424, 852,
+ 464, 400, 708, 724, 392, 348, 712, 708,
+ 724, 880, 712, 724, 708, 712, 824, 712,
+ 724, 480, 724, 520, 480, 464, 456, 740,
+ 820, 820, 740, 820, 848, 824, 820, 848,
+ 520, 724, 456, 512, 464, 464, 220, 456,
+ 740, 148, 192, 140, 184, 220, 512, 464,
+ 740, 512, 392, 852, 812, 792, 724, 740,
+ 740, 1008, 772, 708, 712, 724, 792, 792,
+ 724, 792, 976, 712, 724, 792, 520, 164,
+ 684, 520, 772, 976, 792, 812, 884, 892,
+ 792, 792, 812, 616, 976, 520, 812, 792,
+ 708, 792, 760, 812, 792, 604, 800, 456,
+ 444, 240, 348, 708, 332, 816, 588, 900,
+ 816, 816, 684, 900, 480, 708, 348, 128,
+ 128, 976, 752, 96, 852, 520, 128, 332,
+ 348, 348, 128, 976, 8, 912, 604, 512,
+ 240, 816, 1008, 852, 956, 548, 852, 128,
+ 348, 240, 240, 128, 240, 788, 788, 240,
+ 548, 488, 548, 900, 240, 100, 332, 348,
+ 852, 788, 816, 312, 100, 488, 852, 100,
+ 488, 852, 912, 816, 100, 240, 976, 152,
+ 188, 240, 692, 188, 1008, 1008, 800, 900,
+ 900, 444, 100, 424, 332, 348, 464, 240,
+ 800, 188, 788, 240, 800, 464, 348, 188,
+ 240, 512, 188, 788, 148, 800, 512, 824,
+ 800, 800, 464, 392, 512, 488, 788, 548,
+ 444, 464, 188, 668, 1008, 188, 240, 464,
+ 152, 444, 804, 852, 512, 824, 512, 140,
+ 444, 804, 824, 140, 96, 668, 512, 464,
+ 512, 512, 240, 852, 824, 240, 480, 724,
+ 348, 824, 512, 788, 348, 480, 128, 824,
+ 140, 668, 712, 804, 788, 788, 824, 464,
+ 456, 820, 428, 820, 432, 432, 188, 512,
+ 456, 1008, 348, 464, 456, 444, 240, 392,
+ 188, 444, 184, 800, 800, 168, 544, 800,
+ 148, 788, 800, 444, 188, 624, 188, 240,
+ 788, 456, 544, 188, 444, 456, 464, 824,
+ 544, 464, 512, 788, 188, 464, 512, 512,
+ 456, 464, 188, 512, 760, 788, 512, 472,
+ 544, 96, 48, 960, 184, 684, 996, 908,
+ 928, 972, 928, 352, 908, 964, 964, 908,
+ 800, 512, 928, 512, 964, 760, 972, 1004,
+ 996, 928, 964, 856, 856, 928, 964, 512,
+ 856, 964, 760, 684, 996, 292, 856, 928,
+ 928, 856, 928, 996, 352, 684, 416, 512,
+ 928, 684, 760, 216, 684, 856, 840, 352,
+ 416, 164, 176, 184, 184, 176, 184, 604,
+ 184, 976, 176, 184, 800, 176, 416, 512,
+ 976, 352, 416, 964, 840, 760, 964, 544,
+ 976, 964, 488, 840, 856, 196, 352, 684,
+ 164, 488, 592, 800, 168, 976, 760, 840,
+ 184, 388, 292, 372, 216, 760, 788, 852,
+ 372, 216, 752, 236, 8, 960, 804, 388,
+ 804, 388, 176, 216, 216, 176, 960, 840,
+ 856, 184, 840, 216, 840, 216, 856, 856,
+ 148, 744, 840, 856, 1004, 744, 840, 176,
+ 964, 840, 840, 144, 840, 960, 960, 776,
+ 964, 840, 964, 856, 744, 776, 960, 840,
+ 856, 840, 176, 216, 840, 840, 856, 840,
+ 840, 804, 192, 840, 192, 840, 960, 964,
+ 840, 856, 184, 668, 176, 856, 196, 48,
+ 928, 216, 184, 76, 176, 216, 216, 76,
+ 192, 184, 824, 388, 192, 220, 220, 192,
+ 184, 144, 192, 668, 176, 824, 388, 140,
+ 192, 176, 8, 192, 8, 144, 140, 668,
+ 8, 184, 220, 192, 824, 192, 192, 668,
+ 216, 216, 388, 176, 184, 192, 216, 176,
+ 192, 216, 804, 184, 192, 192, 176, 148,
+ 8, 744, 176, 192, 224, 212, 804, 196,
+ 168, 520, 928, 684, 48, 604, 604, 196,
+ 212, 684, 196, 196, 684, 752, 196, 520,
+ 176, 684, 388, 196, 520, 164, 224, 520,
+ 220, 164, 196, 520, 196, 212, 520, 752,
+ 196, 196, 8, 520, 220, 184, 196, 176,
+ 684, 164, 184, 196, 196, 184, 196, 196,
+ 196, 164, 184, 196, 8, 216, 668, 960,
+ 668, 96, 856, 168, 388, 856, 372, 196,
+ 192, 196, 192, 416, 224, 196, 960, 400,
+ 148, 96, 636, 148, 184, 1008, 148, 196,
+ 96, 148, 400, 600, 1008, 192, 520, 340,
+ 636, 1008, 400, 184, 636, 1008, 400, 392,
+ 148, 148, 400, 520, 176, 824, 824, 148,
+ 148, 196,
};
-static encode_aux _vq_aux_lsp32_0 = {
+static encode_aux_nearestmatch _vq_auxn_lsp32_0 = {
_vq_ptr0_lsp32_0,
_vq_ptr1_lsp32_0,
_vq_p_lsp32_0,
_vq_q_lsp32_0,
- 3783, 3783
+ 4386, 4386
};
static static_codebook _vq_book_lsp32_0 = {
- 4, 256, 4099332, 2538097, 8, 1,
- _vq_quantlist_lsp32_0,
+ 4, 256,
_vq_lengthlist_lsp32_0,
- &_vq_aux_lsp32_0,
+ 2, 1603593466, 1583043971, 8, 1,
+ _vq_quantlist_lsp32_0,
+ &_vq_auxn_lsp32_0,
+ NULL,
};
diff --git a/include/vorbis/book/lsp32_1.vqh b/include/vorbis/book/lsp32_1.vqh
new file mode 100644
index 00000000..9c9670f8
--- /dev/null
+++ b/include/vorbis/book/lsp32_1.vqh
@@ -0,0 +1,3638 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_lsp32_1_VQH_
+#define _V_lsp32_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_lsp32_1[] = {
+ 99,
+ 32,
+ 72,
+ 64,
+ 41,
+ 18,
+ 45,
+ 57,
+ 65,
+ 25,
+ 61,
+ 65,
+ 96,
+ 37,
+ 75,
+ 78,
+ 85,
+ 34,
+ 73,
+ 75,
+ 152,
+ 121,
+ 128,
+ 139,
+ 4,
+ 23,
+ 36,
+ 63,
+ 110,
+ 80,
+ 126,
+ 107,
+ 135,
+ 136,
+ 145,
+ 92,
+ 126,
+ 92,
+ 105,
+ 96,
+ 101,
+ 104,
+ 107,
+ 88,
+ 68,
+ 49,
+ 93,
+ 115,
+ 155,
+ 131,
+ 112,
+ 101,
+ 62,
+ 30,
+ 66,
+ 72,
+ 98,
+ 115,
+ 115,
+ 94,
+ 112,
+ 127,
+ 111,
+ 95,
+ 129,
+ 98,
+ 108,
+ 102,
+ 98,
+ 96,
+ 92,
+ 113,
+ 104,
+ 103,
+ 117,
+ 31,
+ 67,
+ 59,
+ 110,
+ 108,
+ 207,
+ 28,
+ 58,
+ 64,
+ 140,
+ 67,
+ 59,
+ 110,
+ 104,
+ 110,
+ 118,
+ 103,
+ 131,
+ 121,
+ 103,
+ 87,
+ 124,
+ 120,
+ 100,
+ 90,
+ 111,
+ 88,
+ 96,
+ 68,
+ 62,
+ 80,
+ 91,
+ 79,
+ 76,
+ 73,
+ 123,
+ 112,
+ 177,
+ 57,
+ 107,
+ 120,
+ 78,
+ 35,
+ 66,
+ 70,
+ 109,
+ 85,
+ 133,
+ 122,
+ 117,
+ 130,
+ 124,
+ 106,
+ 124,
+ 112,
+ 97,
+ 90,
+ 85,
+ 90,
+ 89,
+ 84,
+ 81,
+ 65,
+ 101,
+ 96,
+ 80,
+ 94,
+ 134,
+ 107,
+ 151,
+ 76,
+ 94,
+ 110,
+ 92,
+ 96,
+ 115,
+ 98,
+ 115,
+ 120,
+ 105,
+ 92,
+ 129,
+ 88,
+ 89,
+ 107,
+ 101,
+ 78,
+ 109,
+ 69,
+ 97,
+ 91,
+ 96,
+ 82,
+ 94,
+ 82,
+ 134,
+ 125,
+ 133,
+ 134,
+ 121,
+ 109,
+ 60,
+ 50,
+ 70,
+ 88,
+ 106,
+ 87,
+ 114,
+ 99,
+ 106,
+ 115,
+ 114,
+ 89,
+ 111,
+ 104,
+ 98,
+ 87,
+ 112,
+ 70,
+ 83,
+ 81,
+ 84,
+ 94,
+ 100,
+ 82,
+ 84,
+ 92,
+ 129,
+ 164,
+ 241,
+ 25,
+ 61,
+ 78,
+ 125,
+ 84,
+ 127,
+ 100,
+ 111,
+ 115,
+ 125,
+ 96,
+ 111,
+ 91,
+ 106,
+ 76,
+ 99,
+ 79,
+ 75,
+ 74,
+ 99,
+ 104,
+ 103,
+ 83,
+ 92,
+ 106,
+ 125,
+ 103,
+ 226,
+ 178,
+ 57,
+ 125,
+ 120,
+ 85,
+ 116,
+ 99,
+ 119,
+ 93,
+ 140,
+ 105,
+ 109,
+ 94,
+ 94,
+ 99,
+ 106,
+ 66,
+ 79,
+ 91,
+ 110,
+ 68,
+ 100,
+ 86,
+ 218,
+ 29,
+ 111,
+ 132,
+ 85,
+ 28,
+ 56,
+ 55,
+ 99,
+ 100,
+ 104,
+ 96,
+ 116,
+ 125,
+ 122,
+ 100,
+ 120,
+ 92,
+ 100,
+ 75,
+ 95,
+ 61,
+ 92,
+ 98,
+ 94,
+ 81,
+ 117,
+ 109,
+ 229,
+ 80,
+ 103,
+ 131,
+ 60,
+ 18,
+ 49,
+ 56,
+ 119,
+ 78,
+ 114,
+ 98,
+ 124,
+ 103,
+ 142,
+ 106,
+ 104,
+ 101,
+ 95,
+ 76,
+ 100,
+ 54,
+ 73,
+ 83,
+ 103,
+ 120,
+ 103,
+ 85,
+ 103,
+ 74,
+ 126,
+ 109,
+ 147,
+ 146,
+ 97,
+ 20,
+ 39,
+ 24,
+ 55,
+ 67,
+ 110,
+ 100,
+ 97,
+ 114,
+ 114,
+ 109,
+ 118,
+ 89,
+ 114,
+ 107,
+ 109,
+ 53,
+ 113,
+ 119,
+ 102,
+ 87,
+ 104,
+ 82,
+ 112,
+ 93,
+ 137,
+ 254,
+ 134,
+ 135,
+ 0,
+ 25,
+ 34,
+ 64,
+ 110,
+ 94,
+ 91,
+ 116,
+ 122,
+ 118,
+ 122,
+ 87,
+ 115,
+ 114,
+ 84,
+ 78,
+ 101,
+ 83,
+ 79,
+ 96,
+ 103,
+ 111,
+ 106,
+ 85,
+ 96,
+ 100,
+ 107,
+ 114,
+ 203,
+ 67,
+ 84,
+ 90,
+ 106,
+ 101,
+ 104,
+ 98,
+ 103,
+ 124,
+ 116,
+ 92,
+ 101,
+ 112,
+ 100,
+ 78,
+ 96,
+ 92,
+ 85,
+ 106,
+ 121,
+ 103,
+ 114,
+ 76,
+ 92,
+ 80,
+ 110,
+ 104,
+ 255,
+ 38,
+ 75,
+ 97,
+ 57,
+ 24,
+ 59,
+ 65,
+ 118,
+ 93,
+ 101,
+ 102,
+ 114,
+ 109,
+ 116,
+ 103,
+ 109,
+ 107,
+ 92,
+ 72,
+ 108,
+ 65,
+ 99,
+ 105,
+ 118,
+ 115,
+ 113,
+ 94,
+ 203,
+ 86,
+ 93,
+ 111,
+ 80,
+ 22,
+ 54,
+ 56,
+ 116,
+ 105,
+ 110,
+ 99,
+ 124,
+ 125,
+ 144,
+ 95,
+ 119,
+ 89,
+ 96,
+ 98,
+ 116,
+ 77,
+ 111,
+ 92,
+ 99,
+ 72,
+ 102,
+ 79,
+ 194,
+ 170,
+ 49,
+ 45,
+ 72,
+ 20,
+ 51,
+ 54,
+ 106,
+ 106,
+ 111,
+ 92,
+ 121,
+ 132,
+ 144,
+ 129,
+ 118,
+ 88,
+ 96,
+ 72,
+ 121,
+ 91,
+ 108,
+ 83,
+ 96,
+ 100,
+ 106,
+ 77,
+ 94,
+ 17,
+ 121,
+ 99,
+ 193,
+ 66,
+ 126,
+ 145,
+ 90,
+ 29,
+ 61,
+ 57,
+ 96,
+ 73,
+ 104,
+ 101,
+ 115,
+ 120,
+ 120,
+ 100,
+ 138,
+ 99,
+ 118,
+ 107,
+ 114,
+ 74,
+ 107,
+ 91,
+ 99,
+ 86,
+ 91,
+ 74,
+ 71,
+ 57,
+ 121,
+ 125,
+ 154,
+ 156,
+ 144,
+ 134,
+ 5,
+ 52,
+ 126,
+ 111,
+ 107,
+ 70,
+ 107,
+ 106,
+ 105,
+ 107,
+ 131,
+ 101,
+ 122,
+ 121,
+ 108,
+ 93,
+ 100,
+ 83,
+ 107,
+ 93,
+ 94,
+ 103,
+ 94,
+ 66,
+ 22,
+ 78,
+ 133,
+ 120,
+ 142,
+ 127,
+ 119,
+ 83,
+ 99,
+ 33,
+ 60,
+ 57,
+ 101,
+ 91,
+ 119,
+ 83,
+ 102,
+ 124,
+ 132,
+ 107,
+ 135,
+ 102,
+ 102,
+ 108,
+ 110,
+ 93,
+ 106,
+ 88,
+ 97,
+ 80,
+ 93,
+ 62,
+ 70,
+ 51,
+ 77,
+ 96,
+ 155,
+ 149,
+ 129,
+ 94,
+ 83,
+ 52,
+ 65,
+ 69,
+ 103,
+ 92,
+ 96,
+ 82,
+ 99,
+ 121,
+ 164,
+ 113,
+ 123,
+ 128,
+ 104,
+ 102,
+ 106,
+ 91,
+ 102,
+ 86,
+ 91,
+ 73,
+ 87,
+ 62,
+ 44,
+ 60,
+ 109,
+ 91,
+ 108,
+ 95,
+ 116,
+ 90,
+ 120,
+ 110,
+ 119,
+ 140,
+ 134,
+ 114,
+ 106,
+ 127,
+ 109,
+ 89,
+ 86,
+ 102,
+ 81,
+ 82,
+ 89,
+ 79,
+ 85,
+ 60,
+ 77,
+ 107,
+ 127,
+ 142,
+ 159,
+ 120,
+ 39,
+ 31,
+ 65,
+ 77,
+ 95,
+ 98,
+ 124,
+ 94,
+ 134,
+ 91,
+ 107,
+ 134,
+ 122,
+ 111,
+ 114,
+ 119,
+ 120,
+ 83,
+ 92,
+ 95,
+ 101,
+ 57,
+ 84,
+ 85,
+ 86,
+ 51,
+ 83,
+ 82,
+ 127,
+ 130,
+ 78,
+ 78,
+ 119,
+ 98,
+ 100,
+ 109,
+ 125,
+ 117,
+ 131,
+ 134,
+ 112,
+ 109,
+ 108,
+ 89,
+ 108,
+ 79,
+ 109,
+ 77,
+ 95,
+ 69,
+ 97,
+ 78,
+ 82,
+ 61,
+ 119,
+ 99,
+ 132,
+ 127,
+ 108,
+ 91,
+ 84,
+ 65,
+ 94,
+ 79,
+ 104,
+ 106,
+ 105,
+ 121,
+ 127,
+ 101,
+ 118,
+ 104,
+ 112,
+ 70,
+ 103,
+ 93,
+ 81,
+ 82,
+ 113,
+ 96,
+ 56,
+ 92,
+ 115,
+ 88,
+ 183,
+ 61,
+ 87,
+ 75,
+ 118,
+ 44,
+ 77,
+ 67,
+ 96,
+ 98,
+ 98,
+ 91,
+ 96,
+ 99,
+ 153,
+ 193,
+ 150,
+ 69,
+ 85,
+ 79,
+ 106,
+ 88,
+ 83,
+ 62,
+ 109,
+ 98,
+ 112,
+ 77,
+ 142,
+ 38,
+ 107,
+ 135,
+ 213,
+ 18,
+ 94,
+ 122,
+ 106,
+ 41,
+ 64,
+ 60,
+ 94,
+ 105,
+ 113,
+ 91,
+ 116,
+ 103,
+ 105,
+ 118,
+ 127,
+ 104,
+ 94,
+ 79,
+ 111,
+ 108,
+ 73,
+ 63,
+ 113,
+ 103,
+ 106,
+ 90,
+ 98,
+ 54,
+ 122,
+ 114,
+ 144,
+ 104,
+ 123,
+ 115,
+ 89,
+ 30,
+ 70,
+ 64,
+ 91,
+ 74,
+ 104,
+ 92,
+ 107,
+ 90,
+ 143,
+ 143,
+ 117,
+ 119,
+ 129,
+ 18,
+ 91,
+ 68,
+ 93,
+ 115,
+ 127,
+ 115,
+ 145,
+ 42,
+ 112,
+ 73,
+ 110,
+ 105,
+ 174,
+ 91,
+ 98,
+ 126,
+ 78,
+ 28,
+ 67,
+ 67,
+ 92,
+ 95,
+ 104,
+ 83,
+ 110,
+ 110,
+ 112,
+ 127,
+ 120,
+ 142,
+ 62,
+ 16,
+ 101,
+ 64,
+ 97,
+ 92,
+ 122,
+ 109,
+ 122,
+ 74,
+ 88,
+ 75,
+ 116,
+ 142,
+ 163,
+ 33,
+ 117,
+ 149,
+ 112,
+ 36,
+ 74,
+ 69,
+ 97,
+ 78,
+ 104,
+ 88,
+ 95,
+ 99,
+ 107,
+ 90,
+ 115,
+ 114,
+ 97,
+ 85,
+ 110,
+ 81,
+ 84,
+ 92,
+ 108,
+ 96,
+ 129,
+ 95,
+ 179,
+ 28,
+ 92,
+ 115,
+ 110,
+ 118,
+ 175,
+ 212,
+ 74,
+ 27,
+ 63,
+ 64,
+ 102,
+ 76,
+ 106,
+ 91,
+ 90,
+ 96,
+ 108,
+ 94,
+ 112,
+ 110,
+ 100,
+ 80,
+ 116,
+ 80,
+ 90,
+ 89,
+ 109,
+ 105,
+ 111,
+ 99,
+ 169,
+ 52,
+ 123,
+ 156,
+ 60,
+ 39,
+ 68,
+ 81,
+ 103,
+ 67,
+ 99,
+ 94,
+ 81,
+ 81,
+ 126,
+ 109,
+ 126,
+ 122,
+ 122,
+ 93,
+ 111,
+ 83,
+ 88,
+ 75,
+ 103,
+ 101,
+ 116,
+ 100,
+ 127,
+ 95,
+ 103,
+ 107,
+ 147,
+ 108,
+ 120,
+ 143,
+ 89,
+ 65,
+ 71,
+ 65,
+ 86,
+ 72,
+ 104,
+ 87,
+ 85,
+ 94,
+ 106,
+ 90,
+ 128,
+ 132,
+ 114,
+ 102,
+ 136,
+ 65,
+ 46,
+ 74,
+ 96,
+ 111,
+ 111,
+ 93,
+ 125,
+ 99,
+ 108,
+ 117,
+ 70,
+ 133,
+ 74,
+ 9,
+ 74,
+ 15,
+ 94,
+ 94,
+ 78,
+ 118,
+ 143,
+ 109,
+ 105,
+ 102,
+ 133,
+ 65,
+ 143,
+ 15,
+ 99,
+ 107,
+ 93,
+ 79,
+ 128,
+ 86,
+ 45,
+ 103,
+ 132,
+ 123,
+ 154,
+ 107,
+ 86,
+ 106,
+ 72,
+ 121,
+ 114,
+ 83,
+ 123,
+ 87,
+ 100,
+ 130,
+};
+
+static long _vq_lengthlist_lsp32_1[] = {
+ 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+};
+
+static long _vq_ptr0_lsp32_1[] = {
+ -1, -2, -3, -4, -5, -6, -7, -8,
+ -9, -10, -11, -12, -13, -14, 7, 42,
+ 178, -18, -19, -20, 30, 3, -23, 50,
+ 148, -26, -15, -24, 146, -30, 50, -23,
+ -28, 190, -35, -36, -37, 7, 57, -40,
+ 30, -32, -20, 247, -45, 81, -43, -48,
+ -49, -50, -51, 7, 30, -14, 132, -56,
+ 52, 59, 190, 247, -61, -20, -59, 215,
+ 42, -33, 132, 247, -69, -56, -67, -72,
+ -73, -74, -75, -76, 7, 81, -79, -80,
+ 59, 81, 44, -84, 117, -86, -81, -82,
+ 229, -90, 178, -87, -93, -94, -95, 59,
+ -97, -98, 81, 178, -101, 170, 247, -44,
+ -4260, -102, 44, -108, 170, -106, -111, -112,
+ -113, -99, -109, 221, -117, -118, 14, -114,
+ 61, -119, -121, -124, -125, -76, 246, 221,
+ -90, -126, 138, -132, -133, 57, -66, -120,
+ 11, -136, -139, -140, 52, 194, -143, -144,
+ -145, 30, 248, 50, -52, -137, -151, -152,
+ -153, -154, -155, -156, 14, 11, -159, 22,
+ -157, -156, -160, -162, 22, -166, -167, -168,
+ -169, 22, -163, -135, 148, 140, -175, 30,
+ 57, -178, -40, -173, 248, -38, 4, 148,
+ -185, -175, -183, 134, -189, 57, -191, 248,
+ 140, -194, -195, -196, -197, -198, -199, 14,
+ -169, -192, 248, -204, -205, -206, -159, -201,
+ 194, -99, 0, -210, 96, -214, -215, -216,
+ -217, -218, -219, -220, 22, 178, 194, -224,
+ -225, 30, -227, 248, -229, -230, 30, 134,
+ -227, 0, -235, 248, 96, -238, -239, -240,
+ -241, -242, 22, -233, -140, -243, -245, 52,
+ -102, -236, -248, -252, -247, -250, -255, -256,
+ 104, 247, -259, -52, -257, -262, -20, 200,
+ 208, -266, -267, -20, 29, -270, 194, 210,
+ -273, -16, -268, -222, -274, -276, -279, -280,
+ 77, -171, -192, 124, 178, -283, -287, -288,
+ -289, -247, 29, 170, -293, -294, 110, -290,
+ -101, -295, -299, -300, -301, -302, 52, 194,
+ -305, 110, 246, -308, 104, 110, -311, 104,
+ -313, 194, 237, -316, -317, 52, 170, -320,
+ -321, -322, 36, 255, -325, 52, -306, -323,
+ -326, -56, -328, 109, -333, -334, -335, -336,
+ -337, -338, -339, 9, -341, 16, 65, 102,
+ -345, -322, 102, 2, 52, -350, -351, 16,
+ -353, -354, -355, 32, 84, -358, 38, -347,
+ 110, -362, -363, -309, -359, -364, -367, -368,
+ -369, -370, -371, 16, 72, -313, -372, -281,
+ 132, 72, -302, 1, -309, -379, -383, 38,
+ -432, 6, -385, -388, -389, -390, -391, 16,
+ -386, -394, -395, -396, -397, 16, -399, 82,
+ 99, -402, -403, 52, -1282, -392, -405, -408,
+ -409, -341, 109, 2, 99, -414, 52, -411,
+ -417, -418, -419, -420, -421, 24, 38, -424,
+ 32, 208, 32, -428, -429, -430, -431, -354,
+ -2073, 224, -264, -436, 82, 124, -357, 61,
+ 65, -440, -439, -441, -443, 32, 247, -398,
+ -4834, -446, 65, -452, -453, 84, -450, -456,
+ -457, -458, -459, -460, 46, -268, -463, 84,
+ -461, -460, -59, 99, -435, -4608, 162, 13,
+ -473, 84, -471, -467, -54, -476, -479, -480,
+ -481, -482, -483, 46, 14, -486, -487, 14,
+ -156, -477, 117, -492, -487, 246, -495, 77,
+ 172, -498, 46, -500, 46, -493, -503, -504,
+ 249, 117, 117, -508, -509, -510, -511, -512,
+ -500, -501, -513, 160, 146, -518, 82, 249,
+ 99, -516, -523, 7, 249, -526, -527, 59,
+ 177, 168, -531, -84, -529, 26, -127, -533,
+ -537, -538, -539, -540, -541, 9, -535, -544,
+ 9, 160, -541, 26, -549, 9, -551, 110,
+ -302, -547, -553, -80, -554, 99, -559, -294,
+ 216, -529, -101, 192, -563, -566, -567, -568,
+ 52, 82, -517, -729, 3, -574, 110, -572,
+ -294, -575, -577, -580, -581, -582, -583, -584,
+ -585, -586, -587, 22, 148, 82, -591, -592,
+ 46, 96, -436, -588, -597, -598, 38, 84,
+ -436, -595, -603, -604, -605, -156, -601, -159,
+ 148, 146, 14, 46, -613, 77, -568, -609,
+ -617, -618, -619, -620, -621, -484, -615, 46,
+ 46, -626, -627, -628, 22, 46, -631, 22,
+ -518, 0, -633, -631, -634, -638, 82, -636,
+ -3901, -4770, 246, 146, -641, 146, -533, -648,
+ -484, -646, 249, -649, -653, -654, 248, 246,
+ -655, -656, -659, -660, -661, -662, -663, -624,
+ -657, 122, 96, -665, -669, 249, -671, -672,
+ -597, -644, 122, -674, 19, -678, -589, -676,
+ -679, -674, -683, -684, -685, 52, -687, -688,
+ 249, -399, -157, -666, -690, -694, -695, -696,
+ 249, -698, 203, 205, -701, -666, -692, -702,
+ -673, 3, 122, -708, -709, -710, -711, -628,
+ -706, -712, -704, 247, -715, -718, -719, -631,
+ -67, 104, -236, -720, 154, -726, -638, -516,
+ 122, 128, -728, -730, -733, -734, 96, 53,
+ 60, 11, -739, -740, -741, -742, -743, -744,
+ 16, 104, -436, -737, -747, -750, -414, -748,
+ -751, 166, -752, 168, -545, -758, -759, -598,
+ 122, -760, -763, -358, -761, -547, -4687, -765,
+ -767, -399, -760, 19, -383, -771, -775, -247,
+ -773, -776, -308, 26, -371, -779, -676, -784,
+ -785, -786, -787, -788, -789, -790, -791, -792,
+ -793, 59, 120, -796, 249, -782, -799, -800,
+ -801, 9, 59, 172, -805, 99, -157, -808,
+ -809, 9, 26, -766, -810, -747, -317, -813,
+ -815, -818, -819, -820, 9, 197, -816, -824,
+ 172, -826, 197, -828, -829, 249, 46, -832,
+ -833, 46, -835, -836, -796, -822, -837, -840,
+ 117, -838, -843, -844, 77, 192, -889, 250,
+ 246, -850, -851, -852, 77, -854, 99, -856,
+ 84, 184, -859, -860, -861, 9, 39, -864,
+ 7, -57, -857, 73, -869, -870, 59, 81,
+ -873, -874, -875, -876, -877, -809, 76, 170,
+ -881, 103, -878, -884, -793, -882, -881, 246,
+ -792, 88, -887, -890, -881, -891, 153, -896,
+ -897, -898, 39, 103, -901, 59, -894, 103,
+ -905, 170, 103, 76, -909, -910, 39, -907,
+ -45, -911, -553, -916, -917, -871, 3, 122,
+ -101, 184, -923, -95, 122, 197, -490, 76,
+ -927, -930, -931, -932, -933, -495, -928, -934,
+ -926, -4689, -935, -938, -496, -939, -941, -944,
+ -945, -101, -942, -937, 167, 160, -824, -760,
+ -951, -954, -98, -545, 159, -490, -956, -101,
+ -958, 159, -963, -964, -965, -966, -967, -968,
+ -969, 9, 52, 32, -973, -341, 69, -974,
+ -977, -978, 32, -948, -424, -956, -981, 159,
+ -985, -986, -987, -988, 9, 69, -991, 39,
+ -989, -992, -995, -996, -997, -998, -999, -988,
+ -983, 34, -978, -1001, 32, -1003, 32, 34,
+ -1009, 32, -1007, -1008, -1021, -1010, -1013, -1016,
+ -856, -1014, -907, -1020, 170, 166, -1018, 167,
+ -360, 250, 170, -1028, -1029, -1030, -1031, 9,
+ 250, -1034, -1035, -1036, 39, 59, 39, 85,
+ -1032, -1042, -1043, -1044, -1045, 36, 215, -1048,
+ 190, 122, -1051, -910, 69, -1052, -1053, -1056,
+ -1057, -1058, 39, 73, -1061, -1062, 39, 187,
+ 62, -1066, 20, -1068, 183, -1044, -1039, -1064,
+ -1071, 183, -970, 69, 249, -1078, -1079, -1080,
+ -1081, 79, -421, 122, -453, -1083, 169, -1070,
+ -1085, 76, -1091, -1092, -1093, -1094, -1095, -424,
+ -1089, -1096, -400, -1097, -452, -1180, -1099, 184,
+ 99, -1086, 250, -1106, -1109, 36, -1111, -1112,
+ 249, -1114, -1115, 77, -830, 167, 84, -1120,
+ 99, -453, -1089, 62, -1125, -1126, 36, -1045,
+ -1123, -1128, -1131, -1132, -1133, -1134, -1135, 36,
+ -1137, -1138, 32, -1129, -1138, 55, -1143, 32,
+ 99, -1146, 39, -854, 153, -1150, -1151, 90,
+ 195, -1154, 169, -1089, -1157, -1158, -1159, 77,
+ 55, -854, -1160, -1162, -1165, -1146, 246, -1166,
+ -1151, -1167, -1171, -1172, -1173, 99, 219, -1176,
+ 195, 159, -1179, 120, -1206, 153, -1181, -1184,
+ -1185, -1186, 249, 55, -1189, -1190, -1191, 83,
+ 195, -1194, -1144, -1187, -1195, -1144, 76, -1200,
+ 249, -1173, -1187, -1204, -1205, 77, -4051, -1202,
+ -1207, -1210, -1211, 169, -1213, -1214, -1215, 20,
+ -1208, -1218, 51, -1073, -983, 191, -1223, -1215,
+ -989, 62, 21, -1225, -1229, -1230, -1231, 83,
+ -1233, -1234, 169, 187, -1237, 183, -1227, -1240,
+ -1241, -1086, -1238, 183, 153, -1246, -1247, 183,
+ -1244, 203, -1251, -1252, -1253, -1254, 79, 203,
+ -1257, 183, -1248, -1260, -1261, 169, 55, -4360,
+ -1262, -1264, 115, -1268, -1269, -1270, -1271, -1272,
+ -1273, -1274, 113, -1276, -1277, 21, -1279, 39,
+ 88, 112, 21, -1215, -1265, -1286, -1282, -1284,
+ -1289, 21, 33, -1063, -1290, 153, -1295, -1296,
+ -1297, -1298, 39, 68, 68, -1302, -1303, -1304,
+ -1305, -1306, 47, 90, -1309, -1310, 68, 112,
+ 145, -1314, -1315, 68, 113, -1318, -1319, -1320,
+ 61, -1312, -1281, 55, -1323, -1326, 88, -1281,
+ -1324, 246, -1331, -1332, -1333, -1334, 68, 90,
+ -1337, -1320, -1329, 105, -1335, -1338, -1315, -1341,
+ 119, -1346, 90, 166, -1349, -1350, -1351, -1352,
+ -1353, -1354, -1355, 54, -1343, -1315, 246, 113,
+ 68, -1362, -1363, 61, 113, -1358, -1367, -1368,
+ -1369, 54, 144, -1372, 141, -894, -1364, -878,
+ 141, -1378, -1379, -1380, 56, 61, -1383, -1384,
+ 10, 66, -1387, 56, -1375, 61, -4971, 55,
+ -1391, -1394, -1395, -1396, 61, -1398, -1399, 47,
+ 97, -1335, -1392, -1402, -1405, -1406, -1407, -1408,
+ 10, 160, -1411, 97, -547, -1414, -1415, 47,
+ 153, -4381, -1416, -547, -1421, -1422, 47, 97,
+ -1363, -1419, -1425, -1428, -1429, -1430, -1368, -1417,
+ -1426, 159, -1411, 153, -1437, 68, 26, 61,
+ -1441, -1442, 68, 105, -1438, -1446, -1447, -1448,
+ -1449, 18, -1451, 113, 55, -1454, -1455, -1456,
+ -1457, -1458, 68, 83, -1461, -1462, -1463, -1464,
+ 47, 189, -1467, 97, -1437, 246, -1469, -1472,
+ 47, -1474, -1475, -1458, -1470, 90, -1479, -1459,
+ -1476, -1477, -1480, -1482, -1485, 90, -1431, 138,
+ 130, -1490, -1491, -1492, 68, -1369, -1488, 56,
+ 252, -1498, 54, -1486, -1496, -1500, -1503, -1504,
+ -1505, 18, 19, -1508, 83, -1506, -1511, -1512,
+ 54, -1282, -1509, -1514, -1369, 250, -1517, -1520,
+ 77, -1522, -1523, 18, -1518, -1526, 83, 175,
+ -1529, -1530, -1531, -1532, -1533, -1534, -1299, 130,
+ 119, 105, 119, -1540, -1541, 90, 105, 187,
+ -1545, -1546, 18, -1231, -1535, 122, -1551, 18,
+ 56, 69, -1553, -1556, -1557, -1522, -1552, -1554,
+ -1559, 187, -1525, 141, -1560, 34, -1561, -1565,
+ -1569, 90, -1567, -1298, 130, -1574, -1575, -1576,
+ -1577, -1578, 83, -1549, -1581, 90, 34, -1717,
+ -1582, 175, -1548, 54, -1585, 34, -1591, 20,
+ -1063, -1589, -1595, -1596, -1597, -1598, -1599, -1600,
+ -1601, -1602, 39, 112, -1059, -1593, -1605, -1059,
+ -1488, -1610, -1611, -1062, -1506, -1612, 73, -1587,
+ -1613, -1616, -1619, -1620, -1621, 73, -1617, -1326,
+ -1622, -1626, -1627, 73, 88, 190, 34, -1632,
+ -1633, -1634, -1635, -1636, -1637, -1638, -1058, 26,
+ -760, -903, -1001, -1642, -1645, -1646, 47, -771,
+ -1615, -1647, -1649, 39, 90, 47, 88, -1656,
+ -1657, -1658, 47, -1650, 103, -1662, -1663, 81,
+ -1654, -1659, -1667, 95, -1665, -1670, -1671, -1672,
+ 39, -1668, 120, -1581, 69, -1676, -1679, -1680,
+ -1681, -1682, -1384, 182, 95, -1422, 159, 33,
+ -1689, -1690, -1363, -1687, -1691, 88, -1695, -1696,
+ 88, -1698, -1684, 33, -1701, 73, 112, -1704,
+ 73, 69, -1707, 59, -1705, -1710, -1711, -1704,
+ -1708, -1714, -1658, 204, 175, -1839, 69, -1718,
+ -1604, -4994, -1719, 182, -1725, -1726, 103, -1716,
+ -1729, -1730, -1731, 73, 155, -1734, 120, -1736,
+ -1737, 47, -1414, -1721, 34, -1740, -1743, 120,
+ -1741, -1746, -1747, 95, -1744, -1370, -1748, -1750,
+ -1753, -1754, -1755, -1756, 39, -1758, -1759, -1760,
+ -1761, -1762, 47, 95, 174, -1766, 47, 159,
+ -1769, 92, 155, 95, -1773, 81, 95, 69,
+ 39, -1778, -1779, -793, -1775, -1780, -1783, -881,
+ 246, -794, -1001, -1786, -1789, -1790, 73, -1419,
+ -1726, -1791, -1793, -1796, -1797, -1798, -1799, 10,
+ 92, -1802, 47, -1794, 10, -1806, -1807, -1737,
+ -1803, 95, -1811, 92, -1813, 92, -1808, -1816,
+ -1817, -1818, -1205, -1814, -1821, -1459, -1819, -1822,
+ -1825, 120, 181, -1828, -1829, -1830, 47, -1832,
+ -1205, -1496, 98, -1836, -1477, 125, 98, -1846,
+ 91, -1840, -1843, 39, -1464, -1841, -1913, -1845,
+ 181, -1850, -1851, -1159, -1699, -1854, -1855, -1856,
+ 249, 77, -1859, -1860, -1861, -1862, 249, 125,
+ -1825, 91, -1865, -1862, 201, 181, -1871, -1459,
+ -1869, 125, -1825, -1873, -1875, 83, 49, -1880,
+ -1832, -4994, -1878, -1882, -826, -1883, -1885, -1888,
+ -1646, 181, 33, -1892, -1893, -1894, -1895, -1464,
+ -1890, 92, -1899, -1464, -1896, -1900, -1881, -1901,
+ -1903, -1463, -1902, 49, -1907, -1906, -1908, -1910,
+ -1785, 54, 217, 181, -1915, -1918, -1897, 125,
+ -1919, -1920, -1923, -1924, -1925, -1926, -1927, -1928,
+ -1929, -1930, 7, 45, -1933, 81, -1930, 225,
+ 88, -1938, -1939, -1940, -14, 100, 217, 7,
+ -1945, 73, -1942, -1614, 100, -1950, 88, -1948,
+ -1953, -1954, -1955, -1931, -1951, 78, -1956, 73,
+ -1961, -1962, 78, -1964, -1627, 98, -1965, -1968,
+ 78, -1970, -1971, -1972, -1973, 42, 50, 190,
+ 78, -1978, -1979, 88, 78, -1982, 93, -1984,
+ -1985, 249, -1987, -1988, -1989, 35, 93, -1992,
+ 78, -1966, -1995, -1996, 42, 98, 61, -1907,
+ -1999, 88, -2003, -2004, -2005, -2006, 37, -2000,
+ 17, -2007, -2009, -2012, -2013, 45, 233, -2008,
+ 254, 252, -2019, 78, -2021, -2022, -2023, -2024,
+ -2025, -2026, -1931, -2017, -2027, -2030, -1663, 233,
+ 93, -1693, -1915, 251, -2037, -2038, -2039, 73,
+ -2035, 95, -2040, -2044, -2045, 81, -1948, 128,
+ -2046, -2050, -2051, -2052, 45, -2048, -2053, -1626,
+ -1363, 49, -2057, -2060, 7, -2062, -2063, 45,
+ -1790, -2058, 144, -2068, -2069, -2070, -2071, -2052,
+ -2065, 113, -2072, 198, 61, -1628, 201, -2080,
+ -2081, -2082, 61, 66, -1848, 66, -2087, -2088,
+ -2089, -2090, -2091, -1682, -2143, -2084, 198, -1385,
+ -2094, -2098, -2099, 45, -1837, 66, -2103, 45,
+ -2105, -2106, -2107, -2108, -2109, 37, 93, -2112,
+ 66, -2100, -2115, -2116, 45, -2113, -4384, -1527,
+ -2119, -2122, -2109, 251, 163, -2110, -2123, 252,
+ -2129, -2013, -2127, 95, -2133, -2134, -2135, 10,
+ 95, -2112, 130, -2140, -2116, -2138, -2141, -2228,
+ -2142, -2146, 7, -1848, -2149, -2150, -2151, -2152,
+ -1408, -1527, -2153, -4880, -1527, -2156, -1684, -1848,
+ 27, -1811, -2160, -2162, -2165, -2166, -2167, 10,
+ -2163, -2170, -2136, -2168, -2173, 163, 193, -2176,
+ 155, -2171, -2179, 18, 249, 97, 163, -2184,
+ -2185, -2186, -2187, -2188, -2189, -2190, -2191, -2135,
+ -2177, 141, -2112, -2192, 130, -2198, -2199, 56,
+ 27, 66, -2135, -2200, 97, -1385, -2203, 252,
+ 141, -2210, 249, -2212, -2213, 249, -2193, 252,
+ -1376, -2017, -1372, 181, 27, 249, -2220, -2224,
+ 249, -2208, -2222, -2122, -2311, -2226, -2229, -2193,
+ -2230, 214, -2235, -2236, -2237, -2238, -2239, -2240,
+ -2241, 35, 198, -2244, 42, -2242, -2247, -2248,
+ 35, -2250, -2251, -2252, -2253, -76, 100, 163,
+ -2257, 93, -2254, -2260, -133, -2219, -2254, -4783,
+ -2262, -2220, 7, -2268, -2269, -1989, -2265, 57,
+ -1996, -2270, 251, -2271, -2274, -2262, -2279, -37,
+ -2277, -2282, -2283, 42, -2280, -2286, -2287, -2288,
+ -2289, -37, 98, 93, -2290, -2294, -81, -2292,
+ -2295, -2257, -2296, 125, 133, -2302, -2303, -77,
+ 198, -2306, -2307, -76, 100, -2308, -2253, -4891,
+ -2309, -2312, -2315, 95, -2317, 155, -2313, -1663,
+ -1914, -2322, 59, 81, -2325, -80, 125, -2326,
+ -84, 98, -2329, -2332, -2333, -2334, -2335, -118,
+ -2330, -1948, -2339, 249, -2341, -524, 98, -2344,
+ -84, -2342, -2345, -2317, -2346, 106, 106, -2352,
+ -2353, -2354, -2266, 100, -2355, 249, -2359, 249,
+ 155, -2362, -132, 61, -2356, 98, -2365, 249,
+ -2366, -2370, 77, -796, -2368, -2094, -2375, -2376,
+ 73, -2378, 59, 73, -2381, -2382, -2383, -2384,
+ -80, -1535, 117, -2385, -793, 198, 125, -2392,
+ -881, -2390, -2393, -840, 250, 106, -2399, -2400,
+ -2401, -2323, -2397, 95, -2405, -2315, 98, -2406,
+ -2439, -2407, -2409, -2412, -1809, 201, 117, -1726,
+ -2413, -2418, 81, 204, -881, -2390, -2421, -2424,
+ -2425, -2426, -2427, -2428, -2429, -2430, 14, 248,
+ -2433, -2434, -2435, -2436, -2437, -2438, 35, -1355,
+ -1865, -2440, -2271, -2441, -2445, 57, 248, -2448,
+ -2449, 93, 106, 254, -2182, -2450, -4381, 91,
+ -2455, -2357, -2456, -2460, -2461, -2462, -2438, -2458,
+ 57, 91, -2465, -2468, 81, -38, -2466, -2464,
+ 250, -2474, -2475, -2476, 77, -2478, -2479, -2480,
+ 81, 117, -2483, 95, -2472, -2484, -2487, -2488,
+ 93, -2485, -2491, -2492, -2493, -2494, -2495, -2496,
+ 249, 155, -2326, -2500, -2501, -2502, -2167, -2123,
+ 217, -2483, -2390, -2450, -2509, -2510, 92, -2507,
+ -1344, -2329, -2513, 155, 250, 254, -2167, -2516,
+ -2521, -2496, -2519, -2413, 121, 40, 251, -2528,
+ -2529, -2530, -2531, -2430, 63, -2532, -2496, 40,
+ -2535, -2538, -2539, 249, 92, -2542, -2543, -2544,
+ 77, -2510, -2536, -2546, -844, -2547, -2549, -2482,
+ -2524, -2550, -2553, -4919, -1316, 129, 106, 128,
+ 98, -2560, -2563, -2564, -487, 91, -1186, -2565,
+ -2567, -2570, -2210, -2568, 106, -2544, 91, -2510,
+ -2574, 97, -2579, -2580, 18, -1186, 129, -2584,
+ -2585, 249, 97, -2588, 97, -2574, 63, -2592,
+ -2593, -2594, -2595, -2596, -2597, -2598, -2599, -2600,
+ -2601, -2602, 52, 60, -2605, -2606, -735, -2590,
+ -2607, -2603, -2608, -2610, 82, -403, 21, 60,
+ 96, -2614, -2619, -2620, -2621, -2622, -2623, -371,
+ -2617, 179, -311, -1914, -2535, -2630, -2631, 52,
+ 40, -4381, -2632, -2634, -2637, 52, 38, -2640,
+ -2641, -2642, -2643, -2644, -2645, 15, -2647, 53,
+ 96, -1965, -2651, -2652, -2638, -2649, 209, -2656,
+ -2657, -2658, -2659, 53, 104, -2662, 96, 41,
+ -2665, -2666, 82, -2663, -2633, -2667, 40, -2659,
+ -2670, 107, -2672, -2676, -2677, 53, 104, 179,
+ 38, -2682, 107, 91, -2685, -2686, 38, 96,
+ -2683, -371, -2688, -2692, -311, -2663, 210, -313,
+ 49, -2696, -2699, -2700, -2631, 129, -2703, -2704,
+ 60, -2692, -2668, 41, -2707, -313, -2708, -2712,
+ -2602, -1878, -229, -2706, 41, -2716, -2719, 60,
+ -2717, -2722, 60, 96, -2725, -2726, 15, -2728,
+ 15, 53, 89, -2732, -2733, -61, -2715, -1878,
+ 40, -2976, -2736, -2738, -2741, -2742, -370, 113,
+ -2739, -2744, -2747, 36, -2745, -2750, -2751, 36,
+ 91, -2754, 52, 49, -2757, -2758, -2759, 36,
+ -2761, 164, -2755, 210, -2747, -2762, 255, -2768,
+ -2769, -2770, 52, 143, -2773, 60, 164, -2776,
+ -2777, -2778, 30, 52, 210, -2782, -2631, -2574,
+ 164, -2704, -2716, -2786, -2789, 30, 164, -2792,
+ -2793, -2794, -2795, -2796, -2797, -2798, 23, 79,
+ -2801, -2802, 79, -2787, -2805, 169, -2803, -2808,
+ -2809, -2810, -2798, -2806, 253, 143, 127, -2816,
+ -2817, -2818, -2819, 23, -2730, -2811, -2823, 23,
+ -2821, 137, -2827, -2805, 246, -2830, -2831, -424,
+ -2828, -2832, -2833, -2836, -391, 181, -2839, -2840,
+ -2841, 24, 143, -2837, 33, -2844, -2847, -2848,
+ -2849, 205, -2851, -2852, -2853, 15, 38, 107,
+ -2857, -421, -2837, -1716, -422, -2859, 204, -2864,
+ -2865, -2866, -2728, -2862, 135, -2730, -2867, 175,
+ -2873, -2874, -2730, -2138, -2868, -2875, -2879, -2855,
+ -2877, 201, -2883, 135, -2837, -2886, -2887, -2888,
+ -2889, -2890, -2891, -351, -1716, -2894, 24, -2892,
+ -2897, 24, 107, -2900, 16, -2895, -2903, -2682,
+ 174, -2906, 143, 114, -2909, -2897, -2907, 179,
+ -421, -2910, 143, -2916, -2917, -2918, -2919, -2920,
+ 28, -2907, -2751, -1687, -2923, -1135, 114, -2928,
+ -2929, -2930, 28, 143, -2933, 127, 33, -2936,
+ 28, 127, -2939, -2940, -2941, -2900, -2934, -2944,
+ 127, -2942, -2905, 144, -2881, -1687, -2784, -2949,
+ -1687, -2954, -2955, -2956, 36, -2952, -2959, -2960,
+ -2961, -2962, -2963, 23, -2965, 32, -2967, -2968,
+ -2969, -2823, -2957, -2972, 183, -2970, -2975, -2801,
+ -3060, 212, -2419, -2413, 183, -2982, -2983, -2984,
+ -2920, -2979, -2096, -2988, 36, 204, 175, -1135,
+ -2990, -2992, -2995, -2996, -2799, -2993, 114, -3000,
+ -3001, -3002, 28, -2998, 253, -3006, -3007, -3008,
+ 79, 94, -3003, 79, 250, -3014, 51, -3016,
+ -1218, -3012, -3017, -3020, 94, -3018, -3023, -3024,
+ -3025, -3026, -3027, -3028, -3029, -3030, 15, -2659,
+ 114, -256, -3032, -3036, -3037, -3038, -3039, -3040,
+ 53, 165, 142, -3044, -3045, 126, -3034, -3042,
+ -2455, -3048, -3051, -2719, -3049, 201, -3427, 114,
+ -3055, 33, -3059, -3051, -3069, -3057, -3061, -3064,
+ -2704, -3062, -1699, -3068, 179, -3148, 33, -3070,
+ -3073, -3074, -2784, -3071, 69, -3078, 165, -3076,
+ -2784, 201, 33, -3084, -3085, 248, -3087, -3088,
+ -3089, -3090, -3040, 174, -3076, -231, 62, -3094,
+ -3097, -3098, 96, -3095, -231, 33, -722, -1363,
+ -3101, -3104, -3105, -3108, -3109, -3110, 60, 134,
+ 62, 104, -3112, -3116, -3117, -3118, -3119, -3120,
+ -3121, 50, -3123, -230, -3114, 202, -227, -3124,
+ 250, -3130, 50, 202, -3133, 248, 150, -3128,
+ -3137, 186, 156, -3140, 202, -3142, -3143, -3144,
+ -3145, 60, 164, -3123, -3219, -3135, 40, -2719,
+ 114, -2683, -3155, -20, -2696, -2761, -3156, -2790,
+ 40, -3160, -3163, -3164, 28, 215, -3167, 164,
+ -3161, -3170, -3171, -3172, 150, -3174, -3175, -3176,
+ 60, 156, -3179, 142, 33, -3182, -3183, 74,
+ 49, -1387, 49, 33, -3178, -3185, -3187, -3190,
+ -3193, 150, -3191, -3196, -3197, -3198, -3151, -3189,
+ -3194, -3200, -3042, -3201, -3203, -3206, -231, 114,
+ -3207, 142, 129, -3212, -3213, -227, 48, -3214,
+ -3199, -3215, -3217, 75, -3160, 145, -146, 137,
+ -3223, -3226, -3227, -3145, 129, 74, -3228, -3232,
+ -3233, -2719, -3230, 164, -3237, 156, -3235, 137,
+ 40, -3242, -3243, 156, -3240, -3244, 60, -3245,
+ -3249, -3250, -3251, -3252, -3253, -3254, -3255, 15,
+ -3257, -3258, 23, 135, -3261, 24, 18, -3262,
+ -3265, -3266, -3267, -3268, -3269, -3270, 23, 253,
+ -3273, 151, -3275, 127, 246, 176, -3276, -3278,
+ -3281, -3282, -3283, -3284, -3255, -3279, 89, -3288,
+ -3289, 67, -3291, 89, 151, -3291, -3207, 176,
+ 127, -3295, 40, -3298, -3301, -3302, -3303, -3304,
+ 15, 96, -3307, 53, -3309, -3310, -3311, -3312,
+ -3313, -3314, -3315, 15, 107, 89, -3319, -3320,
+ 53, -3299, 49, -3324, -2677, -3298, 126, -3328,
+ 89, -3325, -3331, -3332, -3333, 15, 126, 165,
+ -3337, -3338, -3339, -3340, 15, -3334, -3329, 151,
+ -3317, -3342, -3347, -3348, -3349, -3328, 145, 49,
+ 127, -3351, -3296, -3353, 33, -3358, -3359, -3326,
+ -3356, -3360, -3363, 135, -3365, 127, 66, -3361,
+ 246, -3370, -3371, -3372, -3373, -3258, -3368, 143,
+ -3377, -3365, -3374, -3378, -3381, 143, 174, -3384,
+ -3385, -2944, 114, -2934, 164, -3387, -3391, -2905,
+ -3366, 145, -2926, -3078, 48, -3074, -1339, -3396,
+ -3399, 165, -2942, -3404, -2930, -3055, 253, -3408,
+ -3409, -2937, 48, -3410, -2813, 62, -3406, 48,
+ 157, -3418, -2937, -3415, 151, 127, -3423, -3424,
+ -3425, -3426, -3319, 56, -3419, 114, -3431, 60,
+ -2934, 60, 126, 60, 142, -3438, -3439, -3440,
+ 31, -3442, -3443, -3444, -3445, 67, -3291, -3187,
+ 205, -3450, -3451, 74, -3447, 74, 74, -3452,
+ -3457, -3458, -3459, -3460, 31, 142, -3463, 74,
+ -3455, -3466, 67, -3427, 55, 145, -3471, 74,
+ 33, -3474, 74, -3476, -3477, -3478, -3289, -3472,
+ 126, -3286, -1323, -3286, -3482, -1312, -3487, -3483,
+ -3467, -2934, -3489, -3492, -3493, 127, -3490, -3292,
+ -3494, -3496, 55, -3500, -3501, -3502, -3503, -2677,
+ 246, -3504, -3507, -3508, -2773, -3505, -3509, -3488,
+ -3510, -3512, -3334, -3513, 142, -3518, -3471, -3515,
+ 142, -2701, -3516, 91, 156, -3526, -3527, -2930,
+ -3523, -3240, -2565, -3532, -3533, -3534, -3328, 129,
+ 63, 126, -3536, -3538, -3541, -3463, -3539, -3544,
+ -3421, 91, 151, -3548, -3549, 156, -3551, -3385,
+ -3511, -3545, -3553, -2774, 48, -3556, -3559, 157,
+ 164, -3562, -3563, -3564, -3565, -3566, -3567, -3568,
+ -3569, -3570, 5, -3572, 12, 108, -3575, -3576,
+ 64, -3557, -3579, -3580, 71, 108, -3577, -3584,
+ -3585, -3586, -3587, 58, 115, -3580, 40, -3590,
+ 101, 58, -3595, 101, -3597, -3598, 12, 21,
+ -3581, -3599, -3601, -3604, -3605, -3606, 5, -3608,
+ -3609, 8, 43, 12, -3613, -3614, -3615, -3616,
+ -3617, 8, -3619, 12, 79, 250, 79, -3621,
+ 8, 43, -3627, -3628, -3629, 58, -3587, 63,
+ 131, 131, -3635, -3636, -3637, -3638, 5, 118,
+ -3641, -3642, -3643, 5, 147, -3646, 131, -3631,
+ -3633, 40, 161, 123, -3653, -3580, -2455, 63,
+ -3657, -3658, -3659, -3660, -3661, -3662, 5, 8,
+ 12, 12, 123, -3668, -3617, -3655, -3664, -3669,
+ -3673, -3674, -3617, 48, -3677, 43, -3679, -3680,
+ 43, 111, -3683, -3684, 43, 199, 111, -3675,
+ -3689, -3690, -3691, -3692, 64, 108, 101, -3696,
+ -3697, -3698, -3699, 12, 123, -3693, -3687, -3702,
+ -3572, -3703, -3707, 5, 40, -3710, -3666, -3708,
+ 230, -3714, 199, -3716, 207, -3711, -3719, -3720,
+ -3721, -3722, -3723, -3707, -3717, 118, -3727, 8,
+ 62, -3728, -3731, -3732, 118, -3734, -3735, -3736,
+ -3737, 111, 171, -3740, -3741, -3725, 188, 186,
+ -3738, -3523, 48, -3172, -3746, 171, -3743, -3748,
+ -3753, -3666, -3751, -3743, -3754, -3415, 186, -3760,
+ -3761, -3762, -3763, -3764, 51, 94, -1123, -3768,
+ -3769, 64, 101, -3772, 94, -3774, -3775, 64,
+ 94, -3778, -3779, -3780, -3781, -3164, -1141, 207,
+ -3785, 64, -3782, -3785, 48, 191, -3791, -3692,
+ -3788, 94, -3792, -3793, -3794, 253, -3799, -3800,
+ -3619, -3796, 108, -3804, -3805, -3806, -2802, -3801,
+ 139, -3810, 94, 94, -3811, -3807, 108, -3816,
+ -3817, -2936, -3813, -3795, -3869, 246, -3821, -3824,
+ 139, -3822, -3693, -3012, -3699, 91, -3829, -3832,
+ -3833, -3834, -3835, -3836, -3837, -3838, -3839, -3840,
+ 31, 199, 171, -3844, -3845, 157, -3094, -3846,
+ -3849, -3850, 111, -3847, 91, -3854, -3855, -3856,
+ 74, 157, -3829, -3860, 111, 48, -3863, -3864,
+ -3865, -3866, -3867, 43, -3861, -1320, -3868, -3870,
+ -3860, -3871, 139, -3876, -3877, -3878, -3879, 43,
+ -3873, -3844, -3944, -3728, 48, -3886, 171, -3884,
+ -3889, -3890, 157, 62, -3738, 21, -3893, 43,
+ -3894, -3898, -3899, -3900, -3854, -5072, -4439, -3896,
+ -3903, -3904, -3907, -3908, 156, -3857, -3905, -3910,
+ -3913, 74, -3915, 171, 199, -3918, -3919, 156,
+ -3911, -3922, -3923, -3924, 127, 196, -3927, 157,
+ -3925, -3927, 187, 211, -3785, 20, -3935, -3936,
+ -3890, -3933, -3937, 18, -3941, -3685, -3939, 250,
+ -3950, 20, -3933, -3948, -3949, -3459, 21, -3946,
+ -3951, 150, -3474, -3952, -3461, -3955, 188, -3960,
+ -3961, -3962, -3963, -3913, 196, -3919, 21, -3966,
+ -3969, -3919, 196, 21, -3973, 186, -3975, -3976,
+ -3193, -3971, -3977, -3177, 196, 235, -3983, 156,
+ -3893, -3984, -3987, -3988, -3989, 8, -3991, -3992,
+ 79, -3994, -3995, 139, -3997, -3866, -4783, -3742,
+ -3999, -4002, 139, -3893, -3849, -3998, -4003, -4006,
+ -4186, -4007, -4009, -3808, 228, 220, -4015, -4016,
+ 74, -4018, 31, -3466, -4013, -3460, -3980, -3549,
+ -3966, -4026, -4027, -4028, -4029, -4030, 127, 67,
+ -4033, -4034, -4035, 31, 157, -3546, -4024, -4040,
+ -3445, 119, -4041, -3292, 25, -4044, -4047, -4048,
+ -4049, 31, -4045, 21, -4053, -4054, -3451, -4051,
+ 199, -4055, -4059, -4060, 127, -4057, -4063, -4064,
+ -4065, -4066, -3493, -4061, -3925, -3295, 246, -4070,
+ -4073, -4036, -4070, -3958, 137, -3495, 128, -4076,
+ -4079, -4078, 25, -4082, -4085, -3845, -4083, 234,
+ -3841, -4086, 188, -4092, -3451, 137, -3860, -4093,
+ -3850, -1551, -4097, -4100, -3451, -4098, 246, -3275,
+ -4102, -3295, -4104, -4106, -4109, -4110, -4111, -4112,
+ -4113, -4114, -3164, -4107, -4115, 25, -4119, -2933,
+ 18, 157, -4120, -4124, -3421, -4122, 253, -4128,
+ -4129, -3781, -4081, -4125, 106, -3916, 250, -4134,
+ -4137, -4138, 157, -3916, 48, -4142, -3797, -2614,
+ -4143, -4138, -4144, 173, 127, -4150, -4151, -4152,
+ -3992, -4147, -4155, -3995, 220, 180, 253, 253,
+ 151, 176, -4163, -3611, -4157, -4166, -4167, -4168,
+ 43, 63, -3824, -4169, -4171, -4174, -4175, -4176,
+ -4002, 63, 207, -3841, -4177, 253, -4180, -4184,
+ -3797, -4051, 158, -4185, 63, -3844, -4219, -4188,
+ 21, -4161, -4192, -4194, -4197, -4198, -4199, -4200,
+ -4201, -4202, -4203, -4204, -4205, -4206, -4207, -4208,
+ -4209, -4210, 17, 85, -4213, 70, -3536, -4216,
+ -4217, 37, -3556, -4041, -4218, -3415, -4223, -4210,
+ 21, -4224, -4225, 61, -4226, -4230, -4231, 37,
+ 45, -4234, -4235, 37, 45, -4216, -4782, 40,
+ 41, -2052, -4240, -4242, -4245, -4246, -2071, -4238,
+ -4076, 137, -4211, -2701, -4251, -4254, 66, 91,
+ -4257, -4258, 61, -4260, 61, -4255, -4263, 66,
+ -4265, -4266, -4267, -4268, 17, 61, -4269, 41,
+ 45, -4271, 17, 41, -4277, -4278, -4279, -4280,
+ 17, -4275, 70, 41, -4285, -4286, 17, 88,
+ -2052, -4283, -4289, -4292, -4293, 17, -4177, -4972,
+ 173, 40, -4299, 78, 93, -1968, -4297, -1975,
+ -3535, -4306, -4307, 37, -4309, -4310, 37, -4312,
+ -4313, -4314, -4315, -4316, -4317, 37, 70, 78,
+ -2019, -4271, -4323, -4324, 85, -4321, 251, -4328,
+ -4329, -4330, -2006, -4297, 254, -2193, -4331, -4334,
+ -4337, -4338, -4339, 17, 85, -4342, 37, -4335,
+ -4345, -4346, -4347, -4348, 37, -4324, -4343, -4350,
+ 37, -4354, -4355, -4348, 40, 40, -4359, -4360,
+ 121, -4348, 25, -4352, -4362, 218, -4367, 121,
+ -3262, -4370, 254, -4368, -4373, -4374, -4339, -4371,
+ -4377, 254, -4379, -4380, -4381, 56, 193, -4384,
+ 141, -4386, -4387, 66, -4375, 166, -3746, -4339,
+ -4390, -4394, 121, 185, 254, -4398, -4399, -2201,
+ -4392, -4400, -4401, -4404, -4405, 17, 21, 180,
+ 133, -4410, 61, 85, 152, -4263, 251, -4340,
+ -4414, 251, -4419, -4420, -4421, -4422, -4423, 78,
+ -4417, 98, -4427, -4428, -4429, -4430, -4431, -2438,
+ -4425, 133, -4132, -1973, -4434, -1957, 98, 113,
+ 250, -4440, -1974, 149, -4443, -4446, -4447, -4448,
+ -4449, 17, -4451, -4452, -4453, -4454, -4455, 35,
+ -4457, 70, 78, -4460, -4235, 173, -4439, -4461,
+ -4463, -4466, -4310, -4443, -4467, -4470, 70, -4468,
+ -4473, -4470, 158, 78, -4474, -4455, -4444, -4480,
+ -4481, 35, 180, -2017, 158, -4484, -4487, -4488,
+ -4489, 37, 251, -4489, 149, -4494, -4495, 17,
+ 70, -4352, -2560, -4498, -2017, -4499, -4503, -4504,
+ 251, -4506, 254, -4508, 226, -4510, -4511, -4512,
+ -2006, -4501, 158, 78, 251, 141, 78, -4318,
+ -2558, 18, -4523, -4352, 98, -4524, -4527, -4504,
+ 21, -4528, 141, -4532, -4533, -4534, -4535, -4536,
+ -4537, -4538, -4495, -4188, 100, -4542, 98, -2350,
+ 98, -4546, -4547, 98, -4549, 100, 133, -4552,
+ -4553, -4554, -4555, -4556, 70, 251, -4559, 100,
+ -2532, -4562, -4563, -4496, -4560, 136, -4564, -4568,
+ -4540, 220, -4407, -4572, 251, -4574, 70, -2342,
+ -4577, -4578, -4579, -4574, -4575, -4580, -2254, 41,
+ -4583, 141, -4584, 217, -4589, 70, -2716, -4592,
+ -4495, -4590, -4593, -2274, -4560, -2035, -2535, -4600,
+ 254, -4598, -4603, -4604, -4605, -4606, -4607, -4608,
+ 17, 136, -4611, 133, 41, -4614, -4615, 98,
+ -4612, -5003, 40, -4618, -4621, -4622, -4623, -4624,
+ 85, -4619, -4625, -4628, -4629, -4630, 128, 158,
+ -4633, 136, -4635, 133, -4626, -4855, -4636, -4640,
+ -4633, -4600, 173, -4644, -4645, -4646, -4647, -4648,
+ -4495, -2825, 185, -4565, -1965, -2707, -4655, -4656,
+ 85, -4565, -4653, -4660, -4661, -4662, 17, 158,
+ -4665, 152, 173, -4624, 185, -4670, 152, -4672,
+ -4547, 149, -4675, 98, -4673, -4678, 136, 209,
+ 98, -4682, -4683, -4684, -4685, -4656, -4680, 136,
+ -4689, 121, 98, -4692, 85, 121, -4695, -4696,
+ -4340, 41, -4697, -4412, -4698, -4700, -4701, -4704,
+ -4705, -4706, -4707, 121, -4650, -2654, -2345, -4712,
+ -4565, 225, 209, -4637, -4461, -4583, -4707, 41,
+ -4719, -4722, -4723, -4724, -4417, -4720, 121, -4728,
+ 136, -4666, -2535, -4732, -4490, -4730, 121, -4736,
+ -4737, -4707, -4733, -4738, -4370, -2035, 40, -4742,
+ -4745, -4746, -4747, 106, -4749, 17, 133, 149,
+ -4753, -4754, -4755, -4756, 70, 41, -4759, 133,
+ -4757, -1975, -4760, -4762, -4715, -4763, 149, -4768,
+ -4769, -4770, 21, -4772, -2300, -4766, 21, 250,
+ -4777, -4778, -4779, -4780, 17, -4782, 61, 85,
+ -4785, -4608, 149, 88, -4789, 61, -4615, -4792,
+ -4793, -4794, -4608, -4790, 251, 136, -4799, -4800,
+ -4210, -4408, 158, -4787, -4557, 158, 136, -4808,
+ 85, 133, -4811, -4812, 128, -2035, -4815, -4816,
+ -4817, -4556, -4813, -2123, -4806, -4822, 85, -4458,
+ -2337, -1976, -4824, -4458, -4826, -4830, -4831, -4832,
+ -4211, -2342, 128, -2073, -4833, -4836, -4839, 251,
+ -4841, 251, -4843, -4834, -4837, -4844, -4845, -4848,
+ -4849, -4850, -4851, -4852, -4853, -4854, -4855, 54,
+ 128, -4858, 119, -4846, -4782, -4147, -4863, 75,
+ -4612, -4866, -4867, -4868, -4869, 18, 75, -4872,
+ -4873, 25, 149, 196, -4877, -4878, -4863, 98,
+ 121, -4879, -4693, -4881, 75, -4886, -4887, -4888,
+ -4889, 18, -4891, 54, 75, 75, 54, -4896,
+ -4897, -4894, -4884, 152, -4901, 75, -4044, -4764,
+ -1523, -4904, -4907, -4908, -4909, -4910, 75, -4905,
+ -4913, -4914, -4915, 121, -4070, -4903, -4916, 18,
+ -4921, -4922, -4923, 136, 173, -4926, -4673, 137,
+ -4927, -4930, -4931, -4910, -4673, -4757, -4665, -4933,
+ -4937, -4938, -4939, -4812, -4935, -4618, -4786, -4941,
+ -4618, -4946, -4687, 137, -4949, 149, -4873, -4952,
+ 128, -4954, 128, -4950, -4957, -4786, -4955, -4960,
+ -4961, 25, -4958, -4964, 75, -4443, 121, -4966,
+ -4969, -4970, -4971, -4972, 128, 75, -4443, -4973,
+ -4917, 137, 25, -4980, -4443, -4978, 121, -4474,
+ -4982, -4950, -4987, -4467, -4976, -4985, -4899, -4989,
+ -4993, 152, 18, -4996, -4997, -4998, -4999, -1551,
+ -4994, -5000, -5003, -4044, -5001, -5004, -4892, -5005,
+ -5009, -5010, -4919, -5007, -5013, -5014, 75, -5011,
+ -5015, -5018, -5019, -1551, -5016, -1538, 196, 97,
+ -1542, 21, -5025, -5028, -5029, 25, -4988, -5026,
+ -1546, -5034, -4443, -5032, 98, -5035, -5039, -5040,
+ -5041, -5042, -5043, 56, 187, 196, 250, -5046,
+ 54, 61, -5051, -5052, -5053, -1504, 97, -5047,
+ 21, 97, -5059, -5060, -5061, -5062, 54, -5056,
+ -5065, 56, -5063, -1498, -5066, 75, -1498, -1223,
+ 21, -5074, -5075, 18, 54,
+};
+
+static long _vq_ptr1_lsp32_1[] = {
+ -4196, -2591, -1267, -783, -332, -193, -142, -68,
+ -47, -34, -31, -17, -16, -15, 255, 255,
+ 255, -25, -22, -16, 255, 4, -16, 255,
+ 4, -29, -16, -21, 4, 255, 178, -33,
+ -21, 255, -42, -39, -38, 178, 178, -38,
+ 178, -27, -44, 146, -16, 255, -41, -60,
+ -58, -53, -52, 52, 52, -55, 231, -57,
+ 255, 255, -57, 231, -64, -63, -54, 255,
+ -65, -63, 154, 154, -110, -71, -66, -92,
+ -83, -78, -77, 178, 236, 178, -77, -81,
+ 236, 236, 154, -85, 236, -89, -88, -66,
+ 236, -88, 236, -70, -103, -96, 81, 229,
+ -100, -99, 229, 229, -99, 229, 4, -107,
+ -1021, -28, 4, -16, 255, -28, -138, -123,
+ -116, -115, -105, 229, -89, -88, 236, -91,
+ 128, -62, -46, -131, -128, -127, 154, 236,
+ -127, -122, 154, -128, -127, 236, -130, -104,
+ 138, 154, 229, -141, 221, 221, -148, -147,
+ -146, 202, 202, 248, -150, -134, -184, -165,
+ -164, -161, -158, -115, 229, 154, -115, 229,
+ -67, -99, 122, -149, 248, -177, -174, -39,
+ -38, 178, -129, -384, 192, 192, -176, 221,
+ 221, -181, -180, -172, 178, -180, 200, 200,
+ -188, -187, -182, 221, -190, 248, -187, 221,
+ 200, -278, -258, -213, -203, -202, -200, 178,
+ 96, -182, 96, -212, -115, -209, -208, -186,
+ 229, 194, 200, -182, 194, -237, -234, -228,
+ -226, -223, -222, -221, 194, 194, 210, 178,
+ 210, 194, 178, 210, -232, -231, 210, 210,
+ 134, 148, -236, 134, 134, -249, -236, -247,
+ -244, -187, 221, -211, -187, -207, -27, 194,
+ -21, -251, -246, -254, 134, -179, 134, -222,
+ 210, 208, -63, -261, 231, -265, -23, 208,
+ 231, -272, -269, 210, 231, -271, 255, 255,
+ -275, 210, -264, 255, -263, -260, -286, -284,
+ -100, -571, -183, 200, -33, -192, -315, -298,
+ -292, -291, 124, 194, -296, -208, 229, -285,
+ 194, -282, -310, -307, -304, -303, 237, 237,
+ -303, 237, -297, -309, 194, 194, -312, 245,
+ -314, 245, 245, -319, -318, 59, 237, -329,
+ -324, -323, 237, 237, -327, -314, -277, 245,
+ -253, -63, -170, 116, -579, -478, -387, -349,
+ -344, -318, -340, 52, -302, 237, -331, 116,
+ -348, -302, 162, 162, 215, -361, -352, 38,
+ -360, -357, -356, 110, 110, -356, 110, -346,
+ 172, -366, -291, 172, -343, -342, -382, -378,
+ -304, -373, -314, 245, 162, 237, -346, -846,
+ -374, 80, -380, 80, 237, -377, -304, 194,
+ -448, 87, 80, -416, -393, -358, 110, 213,
+ -381, -407, -401, -398, 213, 99, -400, 213,
+ 213, -398, 99, 213, -375, -376, -365, -413,
+ -412, -305, 224, 224, 110, -412, 110, -410,
+ -427, 169, -426, -423, -422, 213, 213, -422,
+ 213, -415, 84, -455, -447, -445, -438, -435,
+ -1021, 231, -433, -356, 110, 208, -435, -4812,
+ 208, -437, 88, -434, -425, -399, 124, -451,
+ -1021, -444, 124, 110, -400, 213, 140, 213,
+ -468, -465, -462, -360, 172, -454, -360, 172,
+ -449, -467, 132, 172, -472, -442, 231, 231,
+ -475, -360, -470, -360, -474, -347, -536, -522,
+ -507, -502, -485, -484, 221, -491, -488, 77,
+ -490, -466, 229, -497, -494, -489, -496, 229,
+ 229, -499, 77, -496, 229, -464, -506, -505,
+ 172, 172, 221, -463, -519, -517, -467, -496,
+ -115, -406, -330, 168, 168, 99, 221, -520,
+ 221, -515, -525, -524, 221, -530, -115, -88,
+ 239, 239, -534, -88, -528, 239, 229, -528,
+ -565, -555, -550, -543, -414, 110, -532, -546,
+ -95, 177, -548, 177, 229, 170, -552, 170,
+ -305, -545, -542, -557, -521, -558, -562, -496,
+ 239, -560, -496, 239, -560, -570, -569, 221,
+ 82, 99, -573, -753, 239, -576, -467, -560,
+ -115, -564, -561, -707, -658, -614, -602, -596,
+ -590, -589, -436, 110, 239, 96, -594, -593,
+ 110, 110, 96, -563, -600, -599, 96, 96,
+ 84, -529, -611, -610, -607, 46, -578, -500,
+ 3, 3, 96, -612, 84, 96, -616, -608,
+ -652, -647, -154, -625, -624, -623, -606, 221,
+ 96, -635, -630, -629, 82, 82, -632, 134,
+ -187, 192, -172, -637, -563, -236, 134, -622,
+ -5037, -469, -639, 154, -404, 148, -588, -650,
+ 96, -645, -187, -643, -236, -524, -187, 26,
+ -651, -642, -682, -670, -668, -569, -666, -589,
+ -556, 130, 213, 138, 82, 99, 169, -677,
+ -453, -1101, 154, 138, 154, -666, -599, -130,
+ -675, -130, -693, -686, 213, 249, -689, 134,
+ 213, -691, -130, 134, -681, -700, -697, 213,
+ 205, -699, 213, 213, -697, -699, -680, -667,
+ -1583, 168, 168, -738, -732, -717, -244, -568,
+ -705, -515, -640, 3, -609, -725, -722, -721,
+ 122, 134, -721, -716, 168, -722, -721, -705,
+ 146, 190, -727, -724, -736, 213, -735, 134,
+ -721, 168, -772, -757, -403, -749, -746, -745,
+ 110, 110, -745, -706, -674, -746, -745, -731,
+ -723, 190, -713, 177, -755, -769, -762, -589,
+ 177, -755, -746, -745, -756, -755, 173, -756,
+ -764, -666, -545, 177, -774, -545, -778, -308,
+ -770, -768, -780, 154, -313, 122, -674, -1077,
+ -1027, -962, -858, -827, -817, -814, -798, -795,
+ -794, 197, 197, -794, 197, -781, -807, -804,
+ -802, 59, -803, 197, -803, 197, -674, -792,
+ -794, 197, 168, -4899, -706, -812, -669, -806,
+ -797, -823, -794, -821, 219, 219, -777, -825,
+ 219, 219, 227, -849, -831, -830, 99, -834,
+ 77, 249, -842, -839, -803, -754, -703, -803,
+ 197, -664, -839, -803, 197, 243, -1012, -845,
+ -847, -853, 197, 219, 84, -855, 219, -824,
+ 219, 239, -915, -868, -863, -862, 59, -865,
+ 59, -867, -560, 255, -908, -872, -871, 170,
+ -904, -895, -888, -883, -880, -879, 239, 197,
+ -879, 197, -560, -886, 170, -866, 170, 239,
+ -892, 190, -563, -885, -794, -848, 239, -903,
+ -900, -899, 170, 170, -899, 170, -528, 120,
+ -906, 219, -821, 177, -912, -108, 255, 160,
+ -108, -902, -913, -929, -920, -881, 216, 160,
+ -922, 216, -926, -925, -921, 229, -925, 216,
+ -921, -953, -943, -936, -803, 197, -924, 177,
+ -940, -4665, -919, -918, -925, -914, -893, -950,
+ -940, 197, -841, -811, 177, -948, -821, -948,
+ -949, -957, -101, -948, 177, -959, -948, -925,
+ -955, 160, -984, -323, -980, -972, -971, 36,
+ -970, 99, 99, 99, -976, -322, -961, -960,
+ 99, -322, 237, 174, -400, 174, -979, 174,
+ -994, -910, -990, -318, 237, 174, -318, 237,
+ -983, -982, -1011, -1008, -1006, -1004, -1002, -305,
+ 177, 177, 110, 174, -318, -1000, -905, 167,
+ -854, 219, -1005, -1015, 190, -993, -975, -1019,
+ -854, -952, -545, -1024, -855, 206, -1017, 174,
+ -1026, 184, 172, -1065, -1055, -1041, -1033, -910,
+ 167, -58, -1038, -1037, 73, 73, 190, -4923,
+ 122, -1050, -1047, 255, -1046, 222, 222, -1046,
+ 222, 167, -1048, -33, 167, -1049, -1040, -1060,
+ 190, -1059, 120, 120, -1048, -1063, 222, 222,
+ 167, -1074, -1067, -1069, 191, -1073, -4693, -1032,
+ -1054, 222, -1076, 160, 187, -1209, -1124, -1090,
+ -697, -1082, -1084, -1075, -1086, -1072, 213, -947,
+ -1025, 184, -1110, -1108, -1105, -1100, -1098, -1086,
+ 160, -1088, 169, -1023, -1104, -1513, -1022, 243,
+ 169, -698, 243, -1103, 169, 213, -1113, 203,
+ 77, -1119, -1116, 99, -1118, 184, 99, -1121,
+ 203, -698, -1117, 184, -1130, -1127, 39, -1063,
+ -1122, -1103, -1183, -1156, -1145, -1136, 39, 169,
+ -1140, -1135, 169, -1107, -1142, 243, -1144, 195,
+ 195, -1147, 219, -1149, 184, -1153, -1152, 219,
+ 219, -1152, 219, -1148, -1164, -1161, -824, 219,
+ 153, -824, -1155, -1141, -1168, -1152, 184, 243,
+ -1170, -1163, -1178, -1175, -1174, 227, 227, -1174,
+ 227, 167, -1175, 195, -1390, 167, -1177, -1199,
+ -1188, -1120, 203, 167, -1197, -1193, -1192, 203,
+ 203, -1192, 219, -1177, -1182, 120, 167, -1203,
+ -1201, 120, -1198, -1172, 219, 227, -4474, -1196,
+ -1169, -1228, -1222, -1212, 203, -1217, -1073, 222,
+ -1139, -1219, 191, -1221, -1023, 222, -1226, -1063,
+ -1023, 174, -1063, -1023, -1250, -1239, -1232, 187,
+ -1236, -1235, 195, 195, -1235, 195, -1224, -1245,
+ -1243, 203, -1220, -698, 174, -1249, -1192, 203,
+ -1023, 205, -1266, -1259, -1256, -1255, 211, 211,
+ -1255, 211, -1220, -1256, -1255, 211, 174, 218,
+ -1023, -1220, 211, -1922, -1594, -1445, -1348, -1294,
+ -1283, -1275, 190, -1282, -1278, 166, -1280, 88,
+ -1281, 166, 190, -1285, -1258, -1288, 39, -1242,
+ -1291, -1048, -983, -1048, -1287, 159, -1330, -1301,
+ -1300, -1299, 187, 187, 90, -1299, -1313, -1308,
+ -1307, 112, 88, 112, -1307, -1311, 113, 113,
+ 159, -1317, -1316, 166, 166, -1325, -1322, -1316,
+ 166, -1293, -1316, 159, -1293, -1327, 113, 113,
+ -1321, 55, -1345, -1342, -1336, -1335, 105, 105,
+ -1340, -1339, -1328, 166, 166, -1292, -1344, -1216,
+ 166, -1347, 187, 187, -1393, -1377, -1366, -1361,
+ -1359, -1357, -1316, 166, -1102, 113, -845, -1360,
+ 144, -1316, -1364, 144, 144, -1141, -1374, -1371,
+ -1370, 189, 189, -1370, 189, -857, -1376, -857,
+ 144, -1389, -1382, -1381, 66, 66, -1386, -1385,
+ 144, 144, -1385, 144, -1373, -1371, -4983, -1089,
+ -1388, -1427, -1404, -1397, 97, -1401, -1400, 105,
+ 105, -1400, -907, 160, -1420, -1413, -1410, -1370,
+ 189, -907, -1370, 189, -1409, -1410, -1370, 189,
+ 177, -1263, -956, -956, -1424, -1423, 144, 144,
+ -1423, -1418, -1412, -1439, 119, -1436, -1434, -4395,
+ -1403, 182, 144, -1433, -1370, 189, 159, -1440,
+ -1400, -1443, 119, 119, -1435, -1528, -1519, -1453,
+ -1450, 249, -1411, 141, -1293, -1489, -1473, -1460,
+ 97, -1459, 227, 227, -1471, -1468, -1466, -1465,
+ 227, 227, 189, 227, -1411, 159, -1452, 105,
+ 68, -1484, -1478, -1477, -1444, 227, -1481, 97,
+ -1432, -1467, -1365, -1356, -1333, 97, -3427, 182,
+ 182, -1502, -1497, -1493, 97, -1495, -1487, -1411,
+ 182, -1441, 105, -1087, -1487, -1494, -1510, -1507,
+ -1400, 105, 182, -1400, 105, -1487, -1516, -1507,
+ 83, -4775, -1501, -665, -1411, 204, 130, -1521,
+ 203, -1525, -1255, 211, 122, -1255, 211, 204,
+ -1590, -1571, -1555, -1544, -1539, -1537, -1536, 204,
+ 187, -1538, 196, -1543, -1542, 196, 196, 196,
+ -1550, -1547, 187, -1346, -1527, 175, -1540, 196,
+ 141, 175, -1549, -1568, -1562, -1561, -4360, -1548,
+ -1524, 211, -1566, 173, -919, 160, 203, -919,
+ -1561, 211, 204, -1573, 175, -1260, -1261, -1568,
+ -1580, -1235, 195, -1572, -1235, 195, -1572, -2737,
+ -1579, 182, -1585, 141, 204, 204, -1592, 211,
+ 211, 182, -1752, -1631, -1372, -1618, -1609, 113,
+ -1607, -1604, -1603, 120, -1603, -1588, -1586, 187,
+ -1585, -1291, -1614, -1048, -1585, -1608, 190, -4360,
+ -1606, -1584, -1625, -1623, -1311, 113, -1570, 112,
+ -1564, -1629, -1628, 206, 206, 206, 182, -1678,
+ -1669, -1655, -1653, -1651, -1644, -1641, -1603, -1630,
+ 160, -1603, -545, -1640, -1641, -1603, 120, -760,
+ -1563, 160, -1643, -1652, 120, -1654, 112, -1661,
+ -1660, -1654, 112, -553, 112, -1664, 88, 95,
+ -1666, -1639, -1660, 112, -1624, -1675, -1674, -1179,
+ 195, -1515, 187, -1179, 204, 160, -1706, -1688,
+ 103, -1685, -1684, 240, 144, -1684, 240, 240,
+ -1694, -1693, -1684, -1686, -1683, 95, -1697, 95,
+ 103, -1703, -1700, 204, -1702, 144, 144, -1660,
+ 112, 159, -1709, -903, -1699, -1728, -1720, -1713,
+ -1692, -1666, -1660, 240, 240, -2092, 240, -1716,
+ -1724, 121, -1715, -1715, -1603, 120, 155, -1683,
+ -1735, -1733, -1732, 189, 189, 189, 155, -1745,
+ -1738, 155, -1742, -1648, 240, -1683, -1370, 189,
+ -1727, -1749, -1732, 189, -1723, -1732, -1722, -1712,
+ -1815, -1795, -1776, -1757, 81, -1772, -1768, -1765,
+ -1726, -1763, 103, 103, 175, -881, 197, -1764,
+ -1771, -1770, 197, 197, -1774, 197, -881, -1767,
+ -1777, -1788, -1782, -881, -1751, -1677, -1785, 155,
+ -1639, -1770, -956, -545, -1792, -1734, 155, -961,
+ -1734, -1787, -1686, -1805, -1804, -1801, -1800, 97,
+ 97, -1800, 97, -1784, 95, -1812, -1810, -1809,
+ -1781, 155, 155, 95, -1732, 189, -1673, -1849,
+ -1827, 203, -1820, -1483, -1824, -1176, -946, -514,
+ -1176, 227, 182, -1842, 169, -1831, 90, -1835,
+ -1174, -1826, 181, -1175, -1174, 204, -1837, -2056,
+ 204, 125, -1844, 47, -1824, -1838, 105, -1834,
+ 204, -1879, -1877, -1853, -1848, -1858, 197, -1857,
+ 83, 83, -1870, -1867, -1864, -826, 227, 201,
+ -826, 201, -1863, -1465, 217, 217, -1874, -1465,
+ -1868, 217, -1465, -1868, -1872, -1520, 217, -1887,
+ -1884, -4417, -1868, -1872, -1174, -1876, -1866, -1891,
+ -903, 201, -1889, -1917, -1912, -1905, -1898, -1897,
+ -1865, 227, -1864, -826, -1886, -1852, -1739, -1847,
+ -1833, -1874, -1558, 241, 137, -1499, 254, 98,
+ -1732, 61, 241, 241, -1914, -1813, -1467, 241,
+ -1914, -1916, -2234, -2020, -1983, -1969, -1952, -1937,
+ -1932, -1931, 93, 93, -1934, 88, -1936, 241,
+ 93, -1947, -1944, -1943, -45, -1935, 225, 88,
+ -1933, 88, -1941, -1949, 241, -33, 255, -1919,
+ -1960, -1959, -1936, -1957, -1946, 93, -1921, 78,
+ -1963, 190, 88, -1967, -1629, 241, -1920, 190,
+ 206, -1977, -1976, -1975, -1974, 214, 214, 214,
+ 190, -1980, 190, 214, -1981, 214, 255, -2001,
+ 254, -1986, -1994, -1991, -1990, 163, 163, -1990,
+ 163, -1958, -1991, -1990, 163, -1915, -4663, -1914,
+ -1916, -2002, -2018, -2011, -1991, -1990, 163, -1997,
+ 61, -1993, -1911, -1991, -1990, 163, -1915, -1998,
+ -2014, 233, 163, 141, -2086, -2067, -2059, -2049,
+ -2036, -2029, -1936, 254, -2016, -2033, -2032, 241,
+ 95, -2032, -2031, 241, -2043, -2041, -1693, 95,
+ 233, -1660, -2034, -1695, -1763, 103, 233, -2015,
+ -2034, -2055, -1701, -1627, 206, -2042, -2028, 112,
+ 113, 181, 254, -2061, 45, -2064, 144, 155,
+ -2066, -2054, 155, -2079, -2076, -1363, -1364, -2073,
+ -2010, 206, -1904, 201, -2077, 93, 204, -2085,
+ -2083, 144, 95, -1684, -2078, 88, -2178, -2145,
+ -2104, -2102, -2097, -2095, -2556, -2075, 204, 95,
+ 201, -2101, -1385, 144, -2078, 95, 95, 88,
+ -2128, -2121, -2114, -2111, -2110, 193, 193, -2110,
+ 193, -2096, -2111, -2110, 193, -2093, -4412, -2094,
+ -2117, -2125, -2124, 198, 193, -2124, -2120, 130,
+ -2132, -2131, 182, 163, -2139, -2137, -2136, 193,
+ 193, 95, 198, -2137, -2136, 204, -2119, -2408,
+ 182, -2148, -1790, 182, -2164, -2161, -2158, -1749,
+ -1732, 182, -2147, -2118, -1848, -2094, -1732, 198,
+ 204, -1732, -2094, -2159, -2169, -1809, 155, 244,
+ -2157, -2175, -2172, -2154, -2174, 244, 244, -2124,
+ 193, -2144, -2183, -2180, -2181, -2182, 254, -2223,
+ -2221, -2209, -2208, -2205, -2202, -2197, -2194, -2193,
+ -2130, 193, -2193, -2126, 214, -2201, -2193, 193,
+ 214, 141, -2204, 198, 193, -1376, -2196, 214,
+ 155, -2211, 97, -2216, -2214, 189, 189, -1826,
+ -2218, 181, -1732, 233, 233, -1813, -2219, -2225,
+ 141, -2227, -2217, -2231, -1441, -2215, -2207, -2124,
+ -2206, 233, -2423, -2301, -2278, -2249, -2246, -2243,
+ -147, 248, 233, -147, 248, -2233, 248, 249,
+ 57, -2267, -2266, -2259, -2256, -2255, 233, 236,
+ -2255, 236, -2245, -2256, -2255, 198, -2242, -2155,
+ -2261, -2242, 221, -2275, -2272, -2271, -2261, 163,
+ -2271, -2264, 233, -1990, -2242, -2276, -2285, -2281,
+ -2273, 255, -30, 178, -2258, -1936, -16, -2293,
+ -90, -2291, -2284, 178, 204, -2297, -90, -2232,
+ -2195, 178, -2074, 198, 198, -2369, -2331, -2305,
+ 214, -2319, -2310, -81, 214, -2304, -2314, -1443,
+ -2300, -2299, -2316, 236, -2255, 236, -2123, -2321,
+ 225, -2324, -2323, 117, -2328, -2317, 225, -2320,
+ -2317, 217, 241, -2351, -90, -2340, -2338, -127,
+ -2327, -1935, 221, 236, -2343, 155, 225, -2347,
+ -127, 241, -2337, -127, -2336, 133, 225, -2358,
+ -2357, -524, 155, 225, -2350, 163, -2361, -2360,
+ 163, -2367, -2255, -4665, -2349, 100, -2364, -127,
+ -2348, -2374, -2371, -840, -2318, 214, -2380, -2377,
+ 81, -2379, 103, 103, -2398, -2391, -2388, -2386,
+ 155, 214, -2317, -2373, -1770, 232, 232, -2395,
+ -1770, -2389, -2387, -1770, -2394, 204, -2417, -2411,
+ -2404, -2403, -1837, 117, -2328, -2317, 204, -1837,
+ -2512, -2402, -2329, -2415, -2414, 232, 155, 117,
+ 204, -2420, -840, 232, -840, -2419, -2416, -2473,
+ -2459, -2432, -2431, 249, 96, 254, 244, 249,
+ -2457, -2447, -2444, -2442, -2275, 163, 93, -2559,
+ 232, 204, 254, -2422, -2446, 254, 254, -2452,
+ -2451, -2174, 232, 244, -2172, -2419, -4395, 232,
+ 204, 254, -2453, -2467, -147, -189, -2464, -2443,
+ 93, -1873, -2463, -2469, 93, -2471, -2410, 244,
+ -2470, -2490, -2486, -2477, 117, -1693, -2482, -2481,
+ 244, 244, -2481, 244, -2396, -2372, 155, -2483,
+ 244, -2298, -2562, -2527, -2517, -2499, -1732, -2497,
+ 244, 244, -1942, -2515, -2508, -2505, -2497, -2498,
+ 232, -2497, -2504, -2504, -2505, -2497, 244, -2506,
+ -2559, -2511, 198, -1408, 198, -2518, -2520, -2514,
+ -2172, -2174, -2503, -2504, 218, -2523, 217, -2508,
+ -2551, -2537, -2534, -2481, 225, -1942, -2481, 225,
+ -1942, -2541, -2540, 117, 117, -2548, -2545, 117,
+ 244, -2481, -2533, -2526, -840, -2123, 220, 197,
+ -4412, -2525, -2522, -5054, -2559, 220, 220, 166,
+ 220, -2558, -2578, -2569, -2566, 220, -1520, -2558,
+ -2561, -2573, -1800, -2557, 217, -2575, 217, -2577,
+ -2572, 244, -2583, -2581, 203, 254, 217, -2587,
+ -2586, 254, 254, -2451, -2174, -2582, 217, -3561,
+ -3022, -2791, -2731, -2721, -2684, -2618, -2616, -2613,
+ -2604, -2603, 134, 134, -2612, -2609, -721, -2582,
+ -2589, -721, -2576, -2571, 104, -2615, 250, 213,
+ -721, -2611, -2639, -2638, -2636, -2629, -2626, -2625,
+ -2554, 245, -2625, -1935, -2627, -2626, -2625, 245,
+ 241, -4412, -2035, -2628, 213, 179, 104, -2680,
+ -2675, -2650, -598, -2646, 96, 104, -2648, 104,
+ 104, 225, -2655, 213, -2648, -2635, 241, -2671,
+ -2664, -2661, -2660, 107, 107, -2660, 107, 241,
+ -2661, -2660, 107, -2654, -2552, -1965, 41, -2673,
+ -2669, -666, -2653, -2679, -2678, 179, 179, 213,
+ -2681, -2625, 245, 129, -2698, -2689, -2687, -256,
+ 220, -2691, -2560, -2695, -2694, -1914, 245, -2694,
+ 129, 137, -2711, -2702, 60, 137, -2705, 210,
+ 245, -2709, -2454, 137, -2701, 210, -2697, -2714,
+ 210, -2582, -2718, -2363, 217, -2582, -231, 210,
+ -2713, -2724, -2723, 205, -2730, -2727, 96, -2729,
+ 213, 213, 213, -2767, -2740, -269, -2263, 129,
+ 217, -3882, -2582, -2735, -2753, -2749, -2746, -1385,
+ -2720, -2710, -314, 245, -2693, 245, -348, 215,
+ 98, -2756, -2751, 98, -2763, -2760, 215, 255,
+ -63, 255, -2752, -2764, -2766, -2574, 245, -2788,
+ -2775, -2772, -2771, 179, -2774, 179, 179, -2780,
+ 210, -2779, 60, 60, -2781, -2785, -2784, -2329,
+ 245, -2784, -2329, -2783, -2790, 215, 215, -2958,
+ -2915, -2846, -2826, -2807, -2800, -2799, 169, 169,
+ -2804, -1249, 205, -2765, -1249, 205, -1999, -2815,
+ -2814, -2813, -2812, -2748, 169, 253, 143, -1086,
+ -2822, -2820, 213, 127, 127, -2690, -699, 213,
+ -2674, 254, -2812, -2829, -2825, -2835, -1135, -1109,
+ -2824, -2624, -2489, -2838, 143, 240, -1086, -1138,
+ -2842, 169, 169, -1683, -1686, -2843, -2885, -2863,
+ 169, -2850, -2856, -2855, -2854, 107, 107, 213,
+ -2860, -2855, -1715, -1715, -2855, -2858, -1718, -699,
+ -2872, -2869, -2868, -2861, 213, -2868, -2845, 198,
+ -2878, -2876, 179, -2871, 179, -1585, -2882, -2679,
+ -2870, 240, 213, 179, -2881, -2911, -2908, -2902,
+ -2899, -2896, -2893, 107, -2881, -2854, 107, -2884,
+ -2898, 143, 143, -2771, 179, -2859, -2905, 179,
+ -1716, -2625, 245, 240, 38, 32, -2904, -2912,
+ -2914, -2901, 213, -2938, -2927, -2925, -2922, -2790,
+ 215, -2881, -2790, -2881, -2921, 253, 174, -2935,
+ -2932, -2931, 164, 164, -2931, 164, 174, -2937,
+ 253, 253, -2953, -314, -2946, -2943, -2926, -2771,
+ 179, -2924, -2950, 152, -1715, -1715, 179, -2948,
+ -1718, 52, -2931, 245, 143, -2951, -2981, -2966,
+ -2964, 36, 169, 24, 213, 36, -2974, -2971,
+ 183, 169, -2945, -699, 213, -2913, -2980, -2805,
+ -3820, 232, -2977, -2977, 205, -2994, -2991, -2987,
+ -2751, -2978, -2985, -1046, -1221, 212, 212, -2812,
+ -2989, -2094, -2999, 115, -2812, -2986, 175, -3013,
+ -3005, -3004, -2980, -2389, 183, -3011, -2802, -3009,
+ 253, 253, -2997, -3004, 212, -3015, 79, -3019,
+ -1068, 175, -2989, -1068, 191, -3010, -3248, -3115,
+ -3083, -3058, -3035, -3031, 210, 142, 53, -3033,
+ 232, 107, -2977, -256, -3050, -3043, -3042, -3041,
+ 210, 210, 210, -3047, -3041, 210, -2979, -3041,
+ -2977, -2979, -3047, -3041, -3046, 212, -2947, 212,
+ -3053, 212, -3072, -3063, -1542, -3053, -3056, -3067,
+ -2694, -3052, -1840, -2626, 210, -3398, 201, -3066,
+ -3080, -3077, -2625, -3065, 212, -2625, 245, -2989,
+ -2694, -3079, -3081, 205, -3086, 142, -3107, -3102,
+ -3096, -3093, -3042, 212, -3091, -3042, 212, -3091,
+ -3100, -3042, 210, -3092, 142, 69, -231, -1385,
+ 212, -3091, -3099, -3113, -231, -3111, 142, 142,
+ -3055, -231, -3106, -3169, -3136, -3132, -3129, -3122,
+ 248, 210, -3126, -3125, -3082, 210, -3125, -3075,
+ -3127, -3131, 215, 215, -3134, 186, -3131, -3021,
+ -3141, -3138, -3139, 210, 230, -3162, -3154, -3147,
+ -3146, 202, 202, -3151, -1344, -2973, -3149, -3125,
+ 129, -3152, -3159, -3157, -3152, 215, -3153, -3131,
+ 129, -3152, -3166, -3165, 230, 230, -3165, 230,
+ -3158, -3225, -3195, -3173, 186, -3188, -3181, -3178,
+ -3177, 202, -3177, 202, 181, -3178, -3177, 202,
+ 114, 66, 91, 91, -3192, -3103, -3186, -3184,
+ -3177, 202, -3180, -3222, -3211, -3205, -3202, -3054,
+ -1687, -3168, -3125, -3150, -2880, -3209, -3125, 145,
+ 129, -3125, 145, -3202, -3093, -3042, 145, -3210,
+ -2743, -3208, -3153, 166, -3218, 188, -3193, 188,
+ -3221, -3246, -3231, -3229, 188, -3177, -3221, -3241,
+ -3236, -3235, -3224, 210, -3238, 164, -3041, 145,
+ 188, -3125, -3235, 210, -3221, -3239, -2694, -3234,
+ -3422, -3369, -3280, -3264, -2799, -3256, 24, 151,
+ -3260, -3259, 151, 151, -3259, 151, 137, -3247,
+ -2802, -2812, -3277, -3274, -3272, -3271, 176, 176,
+ 253, 176, -3273, 176, 188, 205, -3221, 18,
+ -3300, -3297, -3296, -3287, -3286, -3263, 151, -3293,
+ -3290, 151, -3292, 234, 234, -3295, -3210, 234,
+ 151, -1249, 145, -3210, -3308, 205, -3306, -3305,
+ 142, 142, 142, 96, 205, -3336, -3330, -3323,
+ -3318, -3317, -3316, 126, 126, 126, -3316, -3317,
+ 126, -3294, 145, -3327, -3326, -3322, 179, -3326,
+ 179, -3321, -3335, -3334, 165, 210, 165, 179,
+ -3346, -3344, -3341, 151, 165, -3343, -3221, 165,
+ 151, -3285, -3357, -3354, -3352, -2883, 182, 137,
+ -2883, 145, -3259, 114, 145, -3364, -3362, -3335,
+ -3207, -3355, 179, 165, -3341, 165, 152, -3350,
+ 182, -3403, -3383, 210, -3376, -3375, -3367, 151,
+ -3380, -3343, -3345, -3220, -3343, 165, 240, -3390,
+ -3388, -3335, -3382, 69, -3335, -3386, -3397, -3395,
+ -4585, 174, -3393, 179, 174, -3401, -1344, -3393,
+ -3394, -2625, -3400, -3407, -3406, 174, 164, -3417,
+ -3412, -2813, -3405, -3095, -3414, 91, -3416, 91,
+ 164, -3421, -3420, -3413, 253, 157, -3499, -3437,
+ -3435, -3433, -3430, 152, -3411, -3091, -3317, 126,
+ -3429, -3434, 142, -3436, 205, -3475, -3473, -3456,
+ -3441, -3454, -3449, -3446, 205, 234, -3448, -3432,
+ 234, -3453, -3291, 234, -3428, 205, -3436, -3402,
+ -3470, -3465, -3462, -3461, 156, 156, -3461, 156,
+ -3389, -3462, 74, -4585, 91, -1683, -3434, 142,
+ 159, 205, 150, -3486, -3483, -3481, -3480, 240,
+ 151, 126, 174, -3296, -3393, 174, -3448, -3491,
+ -3392, -983, -3485, -3495, -3295, 234, -3484, -3295,
+ -3479, -3469, 145, -3525, -3517, 210, -3506, -2773,
+ 145, -3498, -3514, -3359, -3335, 182, -3497, -3216,
+ -3468, -3464, -3516, -3379, 165, -3522, -3520, -3204,
+ -3334, 188, -3524, 188, 165, -3531, -3167, -2933,
+ -3521, -3528, -2557, -3540, -3480, -3537, -2944, 235,
+ 235, -2944, 220, -3535, -3543, 127, -3530, -3547,
+ -3546, 235, 157, -3550, 164, 157, -3558, -3555,
+ -2734, 220, -3535, -3335, 235, -3535, -3560, 165,
+ 165, -3759, -3656, -3626, -3603, -3583, -3574, -3573,
+ -3571, 123, 147, 147, 123, 123, -3578, -3573,
+ 123, -3554, -3573, -3581, 147, 147, -3542, -3594,
+ -3592, -3589, -3588, 147, 147, -3588, 63, -3582,
+ -3593, 115, -3596, 115, -3600, -3588, 147, 91,
+ -3588, -3591, -3529, -3612, -3607, 12, 118, -3611,
+ -3610, 118, 118, 43, -3624, -3622, -3598, -3618,
+ 79, 139, -3620, 139, 139, 232, -3588, -2450,
+ -3625, 79, -3634, -3633, -3630, 86, -3632, 250,
+ 147, 223, -3652, -3651, -3640, -3639, 223, 223,
+ -3648, -3645, -3644, 161, 161, -3644, 161, -3623,
+ -3650, -3647, 223, 223, 123, -3632, -3032, 232,
+ -3718, -3688, -3667, -3665, -3664, -3663, 12, 12,
+ 238, -3666, 238, -3672, -3670, -3032, 139, -3654,
+ -3678, -3676, 111, 232, 139, 111, -3682, -3681,
+ 171, 171, -3686, -3685, 238, 238, -3685, -3032,
+ -3695, 230, -3694, -3693, 207, 207, 108, -3709,
+ -3704, -3701, -3700, 207, 207, -3700, -3654, -3671,
+ -3706, -2419, -3666, 238, 114, -3713, -3712, -3705,
+ 238, -3715, 207, -3712, 238, -3649, -3752, -3733,
+ -3730, -3643, -3726, -3725, -3602, 238, -3725, 238,
+ 243, -1107, 150, 223, 161, -3750, -3739, 150,
+ -3738, 238, 238, -3747, -3744, -3743, 243, 238,
+ -3743, -3228, 188, -3749, -3221, 186, 223, -3230,
+ -3758, -3755, -3745, -3712, -3742, -3468, 223, -3831,
+ -3798, -3773, -3767, -3765, 101, -3595, 243, -3771,
+ -3770, 191, 191, 191, 101, -3777, -3776, 108,
+ 108, -3795, -3790, -3787, -3784, -3783, -1103, 230,
+ -3783, 230, -3766, -3789, 243, 230, -3020, -3793,
+ -1103, 207, -3782, -3797, -3214, 207, -3815, -3803,
+ -3802, -3786, 139, -3812, -3811, -3809, -3808, -3757,
+ 205, 139, 205, 115, -3814, -3756, 115, -3826,
+ -3819, 207, -3729, -3823, 196, 243, -3742, -3797,
+ 207, -3818, -3828, -2989, -3824, 212, -2989, -3986,
+ -3947, -3897, -3862, -3853, -3848, -3843, -3842, -3841,
+ 242, 242, 199, -3842, -3841, 242, -2989, -3830,
+ -3842, -3841, 242, -3827, -3152, -3859, -3842, -3857,
+ 199, 199, -3055, -3842, 199, 212, -3875, 207,
+ -3872, -3849, -3841, 242, -3055, -4186, -3858, -3852,
+ -3874, -3012, 199, -3895, -3888, -3881, -3842, 199,
+ -3851, -3885, -4406, 250, 250, -3841, 242, -3883,
+ -3892, -3685, 238, 250, -3685, 243, -1106, -3716,
+ -3891, -3932, -3917, -3912, -3906, -5071, -4856, -3887,
+ -3880, -3825, -3909, 171, 199, -3842, -3724, -3519,
+ -3914, 230, -3916, 230, 230, -3921, -3167, 230,
+ -2834, -3929, -3926, -3916, 230, 243, -3916, 230,
+ 211, -3167, -3928, 243, -3934, 243, -3940, -3783,
+ -3712, -3931, -3930, -1591, -3715, -3712, -3938, 187,
+ -4008, -3943, -1106, -3959, -3954, -3953, -4041, 222,
+ -3894, 156, -3956, -3945, -3953, -3942, 235, -3167,
+ -3974, -3968, -3965, 171, -3958, -3915, 235, -3964,
+ -3972, -3140, -2565, 220, 230, 202, -3982, -3979,
+ -3973, -3970, -3967, -3973, 235, 243, -3749, 186,
+ -3981, -3980, -4108, -4014, -3990, 111, -3993, 205,
+ 176, -4011, -3996, 176, -4004, -4001, -4856, -3925,
+ -3985, -3841, 242, -3788, -4001, -3902, -3966, -4000,
+ -4190, -3978, -3894, -3277, 235, 235, -4025, -4017,
+ 127, -4021, -4019, 165, -4012, -4023, -4020, 165,
+ -3980, -4099, -4091, -4062, -4046, -4032, -4031, 157,
+ -4039, -4037, -4036, 234, 234, 234, -4022, -4043,
+ -4036, 228, 196, -4036, 196, 228, -4052, -4036,
+ -3857, 199, -4042, 228, -4058, -3857, -4056, 196,
+ 234, -4050, 234, -3857, 199, -4038, -4084, -4077,
+ -4072, -4069, -4056, -4010, -3931, -4056, 211, -4068,
+ -3857, -3295, -1523, -3980, 235, -4073, -4782, -3980,
+ -4075, -4005, 235, -3980, -4088, -4087, -4075, 242,
+ -4087, -4080, 196, -4094, 199, 196, -4096, -4090,
+ -4087, -4090, -4095, -4103, -3448, -4089, 196, -4105,
+ -4090, -3448, -4095, -4101, -4149, -4148, -4127, -4123,
+ -4118, -3927, -3167, -4074, -4071, 119, -4121, 230,
+ -4117, -3167, -4116, 164, -4126, -4067, 157, -4141,
+ -4136, -4133, -1451, -3957, 180, -3783, 180, -4132,
+ -4139, 230, 207, 207, -4135, -4145, -3714, -3884,
+ -1106, -3714, -4140, 228, 205, -4162, -4159, -4154,
+ 253, -4020, -4158, -3271, 228, 228, 205, -4160,
+ -4161, 242, -4165, 207, -4156, -4173, -4170, -3714,
+ 207, 228, -3714, -4156, -4164, -4183, -4181, -4179,
+ -4178, 173, 242, 207, -4172, -4178, -4153, -4189,
+ -4145, -4157, 166, -4182, 106, -4193, -4295, -2561,
+ 106, -3841, -4191, -4187, -1823, -5020, -4847, -4531,
+ -4418, -4311, -4305, -4264, -4229, -4227, -4222, -4215,
+ -4212, -4211, 206, 206, -4211, 206, -4013, -4212,
+ -4211, 206, -4013, -4389, -4214, -4220, -1968, -4217,
+ 48, -4221, -4195, -4211, -4146, -4244, -4233, -4232,
+ 113, -4237, -4236, 78, 78, -4241, -4439, -2590,
+ 98, -4211, -4239, -4228, -4256, -4253, -4250, -1364,
+ -3958, -4013, -2073, -4249, -4248, -4211, 206, 137,
+ -4262, -4259, 113, -4211, 206, -4252, 113, 85,
+ -4276, -4274, -4270, -4269, 88, 88, -4272, 235,
+ -2085, -4013, -2052, 129, -4301, -4298, -4284, -4282,
+ -1957, -4273, -1957, 63, -4291, -4287, 78, -4288,
+ -1968, 129, -4281, -2026, -1936, 93, -4290, -4389,
+ 235, 235, -4300, 214, 214, -4303, -4296, 206,
+ -4076, -4308, 78, 45, 254, 193, 93, -4372,
+ -4327, -4320, 163, -4319, -4318, 85, 85, 85,
+ -4322, -4076, -4326, -1451, 141, -4304, 141, -4336,
+ -4333, -4332, 193, -4076, 193, -4332, -4304, -4325,
+ -4344, -4341, -4340, 218, 218, -4340, 218, -4302,
+ -4353, -4352, -4349, 251, 141, -4326, -4294, -4261,
+ 226, -4358, 226, -4326, -4177, 137, -4366, -4361,
+ 141, -4363, 137, -4365, -4357, 226, -4369, -4365,
+ -4357, -4365, 226, -4364, -4397, -4391, -4376, -4356,
+ -4378, 218, -4385, -4383, -4382, 218, 218, 193,
+ 218, -4383, -4382, 218, -4351, 228, 63, -4393,
+ 250, -4396, -4395, 218, 185, -4403, -1451, -4324,
+ -4388, -4243, -4131, -4409, -4338, 66, -4617, 225,
+ 225, -4413, -4411, -4412, 218, -4415, -4408, -4412,
+ -4407, 173, -4509, -4486, -4426, 251, -1975, -2304,
+ -4416, 180, -4445, -4442, -1972, -4435, -4300, -1957,
+ -4424, 180, -4433, -4437, 198, 214, -4436, 152,
+ -4438, -4432, -2207, 228, -4156, -4477, -4450, 214,
+ 93, 35, -4472, -4465, -4459, -4456, 78, 251,
+ -4458, 251, 251, -4456, 251, 225, -4585, -4407,
+ 228, -4469, -1957, 173, -4464, -1957, 93, -4444,
+ -4475, 214, 228, -4300, -4156, -4479, -4476, -4483,
+ -2233, 233, 220, -2233, -4482, -4478, -4500, -4491,
+ -4490, 254, 254, -4493, 220, -4497, -4496, 226,
+ 226, -4496, -4482, -4492, -4502, -4485, -4505, 233,
+ 226, -4507, 233, 233, 241, -4521, -4518, -4515,
+ -1992, -4471, 220, -4516, -4517, 163, -4519, 251,
+ -4514, -4522, -4526, -4370, 106, -4520, -4530, -4370,
+ -4525, -4513, 254, -4744, -4602, -4591, -4551, -4545,
+ -4544, -4541, -4540, 220, 226, -4540, 226, -4407,
+ 214, -4548, 133, 136, -4550, 136, 136, -4576,
+ -4573, -4561, -4558, -4557, 133, 133, -4557, 133,
+ -4407, -4567, -4504, -4565, -4543, 226, -4539, -4571,
+ -4565, 225, -4569, 226, 136, -2274, 233, 220,
+ -4588, -2245, -4582, -2233, -4570, -4566, -2233, 225,
+ -2342, 152, -2560, -2532, -2300, 198, -4587, -4595,
+ -4542, -4586, -4581, -4597, -4463, -4599, -4461, -4508,
+ 241, -4596, -4721, -4643, -4620, -4613, -4610, -4609,
+ 158, 158, -4609, 158, 220, -4610, -4609, 158,
+ 173, -5045, 173, -4616, -4639, -4627, -4550, -4609,
+ 158, -4601, -4594, -4634, -4632, -4631, 180, 180,
+ 158, 180, -4632, -4631, -4529, -4585, -4441, 158,
+ -4642, -2654, 180, -4681, -4671, -4659, -4654, -4651,
+ -4650, -4641, 226, -4650, -4649, 98, -4657, 226,
+ 185, 185, -4652, -4667, -4664, -4663, 185, 185,
+ -4663, 185, 209, -4669, 209, 185, 158, -4677,
+ -4674, 209, -4663, 185, -4668, -4650, -4679, 226,
+ 209, -4703, -4694, -4691, -4688, -4687, -4676, 185,
+ -4687, 185, 149, -4693, 173, 173, -4687, -4699,
+ -4395, 149, -4690, -4395, -4686, -4666, -4658, -4718,
+ -4711, -4708, 209, 226, -4679, -1935, -4709, -4708,
+ -4679, -2663, 225, -4462, -4714, -1942, -4365, 209,
+ -4717, -4731, -4550, -4726, 209, -4716, -4727, -4666,
+ 209, 225, -4714, -4735, -4734, -4729, 254, -4508,
+ -4740, -4679, -4725, -4713, -4679, 173, -4741, -4739,
+ -4776, -4767, -4752, -4748, -1975, -4750, 190, 173,
+ -2245, -4761, -4758, -2304, 214, 173, -2304, 214,
+ -4751, -2304, -4743, -4710, -1374, -4702, 225, -4774,
+ -4771, 106, 158, 158, 180, 173, -4775, 190,
+ -4814, -4791, -4784, -4781, 85, -4783, 152, 152,
+ -4788, -4787, 158, 158, -4787, 158, -4786, -4807,
+ -4798, -4556, -4611, -4773, -4461, 225, -4805, -4803,
+ -4802, -4797, 206, 206, -4801, -1629, 241, -4810,
+ -4809, 206, -4611, 206, 158, -4806, -4825, -4823,
+ -4821, -4819, -4797, 133, -1935, 251, 133, 198,
+ -4820, -4827, -4818, -4829, -4804, -4840, -4838, -4835,
+ -4834, -4797, 206, -4834, -4801, -4828, 113, 206,
+ -4842, 128, -4433, -4809, -4796, -4795, -4765, -714,
+ -5038, -4995, -4906, -4865, -4860, -4857, -4856, 152,
+ 152, -4856, 152, -4638, -4862, -4157, -4858, 152,
+ -4478, -4885, -4871, -4870, 173, 121, 121, -4876,
+ -4874, 149, -4693, 220, -4882, -4693, -4880, -4875,
+ 152, -4864, -4751, -4861, 196, -4895, -4893, -4890,
+ 119, 75, -4892, 119, 119, -4894, 173, -4878,
+ -4900, -4899, -4093, 173, -4899, 173, -4898, -4247,
+ 196, -4093, -4956, -4929, -4912, -4689, 185, -4902,
+ -4920, -4676, -4668, 209, 137, -4130, -4911, 254,
+ -4925, -4924, 209, 173, 185, 185, -4666, 209,
+ -4673, -4936, -4934, -4663, 173, 209, 158, -4932,
+ -4951, -4945, -4942, -4670, -4928, -4927, -4670, -4940,
+ 137, -4948, 158, 149, -4663, 185, -4947, -4953,
+ 136, -4899, 173, -4751, -4968, -4959, -4944, -4963,
+ -4147, 228, -4943, -4965, 228, -4147, 149, -4947,
+ -4986, -4979, -4974, -4157, 228, 149, -4861, -4967,
+ -3552, 173, 173, -4983, -4157, -4977, 137, -4157,
+ -4981, -4984, -4992, -4990, -2047, -4975, 228, -4962,
+ -4474, 228, 173, -5027, -5017, -5008, -5002, -4884,
+ -4618, -4978, -5006, -1538, -4991, -4919, 196, -4918,
+ 196, -5012, 121, -4883, -2825, -4982, 137, -4859,
+ -4402, -5023, -5022, -1542, -3920, -1543, 211, -5024,
+ -1538, 196, -1543, -5033, 196, -4931, -1909, -5021,
+ -1542, -5036, 185, -5031, -4663, -1523, -5030, -5050,
+ -5048, -4909, -4689, 185, -1048, 228, 222, -1048,
+ -5049, 75, -2555, -5073, -5058, -5057, -4734, -5044,
+ 222, 121, -5070, -5067, -5064, -4870, 121, -1048,
+ -4870, 121, -1291, -5069, -5055, 105, -1400, -5068,
+ 119, -5076, 121, 141, -4360,
+};
+
+static long _vq_p_lsp32_1[] = {
+ 48, 216, 64, 416, 200, 28, 168, 120,
+ 200, 168, 168, 28, 28, 28, 28, 168,
+ 712, 120, 120, 120, 120, 12, 200, 200,
+ 592, 168, 168, 592, 584, 200, 200, 200,
+ 584, 760, 28, 28, 28, 28, 228, 120,
+ 120, 584, 120, 988, 324, 324, 988, 208,
+ 28, 120, 28, 28, 120, 28, 528, 208,
+ 208, 236, 760, 988, 120, 120, 988, 860,
+ 168, 760, 528, 988, 236, 208, 988, 28,
+ 236, 28, 28, 28, 28, 324, 236, 236,
+ 236, 324, 176, 468, 468, 324, 324, 176,
+ 916, 712, 712, 176, 236, 236, 236, 236,
+ 324, 324, 324, 712, 680, 680, 988, 324,
+ 244, 988, 176, 680, 680, 176, 712, 56,
+ 884, 712, 176, 884, 56, 56, 56, 584,
+ 244, 176, 176, 28, 28, 28, 984, 884,
+ 712, 984, 552, 228, 228, 228, 528, 512,
+ 44, 44, 884, 208, 208, 776, 200, 120,
+ 120, 120, 992, 200, 208, 44, 88, 56,
+ 56, 88, 56, 56, 56, 44, 88, 88,
+ 44, 56, 988, 988, 88, 88, 88, 88,
+ 88, 88, 44, 244, 592, 560, 120, 120,
+ 228, 120, 120, 560, 992, 228, 16, 592,
+ 120, 120, 592, 536, 228, 228, 992, 992,
+ 560, 88, 884, 56, 56, 88, 56, 56,
+ 88, 560, 992, 88, 88, 88, 88, 560,
+ 776, 712, 0, 0, 384, 120, 88, 88,
+ 88, 88, 88, 88, 88, 712, 776, 120,
+ 120, 120, 992, 992, 120, 120, 120, 536,
+ 992, 0, 992, 992, 384, 88, 88, 88,
+ 88, 88, 88, 592, 208, 0, 0, 208,
+ 988, 384, 988, 208, 208, 0, 416, 416,
+ 416, 988, 120, 208, 988, 200, 120, 800,
+ 832, 120, 120, 120, 116, 776, 776, 840,
+ 712, 712, 116, 776, 116, 116, 712, 680,
+ 308, 452, 560, 496, 712, 496, 776, 680,
+ 208, 208, 116, 680, 440, 440, 440, 116,
+ 680, 116, 208, 208, 208, 208, 208, 776,
+ 440, 440, 984, 416, 416, 440, 416, 416,
+ 776, 776, 948, 680, 208, 208, 680, 144,
+ 144, 144, 144, 1020, 208, 208, 496, 1020,
+ 116, 208, 116, 436, 36, 128, 36, 36,
+ 64, 36, 36, 36, 64, 64, 260, 408,
+ 144, 144, 408, 8, 208, 128, 64, 64,
+ 336, 128, 128, 128, 336, 152, 152, 8,
+ 440, 680, 440, 440, 8, 8, 64, 64,
+ 64, 64, 64, 64, 288, 776, 288, 244,
+ 528, 288, 208, 4, 440, 4, 152, 152,
+ 452, 24, 24, 64, 152, 64, 64, 64,
+ 24, 328, 64, 64, 64, 64, 328, 328,
+ 396, 208, 208, 208, 84, 320, 288, 64,
+ 64, 64, 436, 8, 396, 208, 208, 8,
+ 96, 96, 152, 96, 96, 96, 152, 128,
+ 128, 832, 128, 152, 128, 152, 128, 128,
+ 452, 896, 832, 328, 328, 496, 152, 244,
+ 260, 260, 244, 260, 260, 128, 988, 328,
+ 512, 988, 260, 336, 336, 336, 260, 396,
+ 184, 336, 184, 184, 184, 116, 336, 336,
+ 116, 184, 988, 396, 328, 68, 648, 52,
+ 336, 336, 52, 396, 528, 52, 184, 56,
+ 308, 184, 884, 184, 56, 468, 308, 56,
+ 56, 52, 468, 56, 56, 984, 308, 308,
+ 688, 308, 184, 184, 184, 52, 996, 996,
+ 996, 468, 468, 184, 184, 184, 184, 184,
+ 184, 52, 408, 640, 584, 328, 328, 996,
+ 396, 584, 996, 28, 996, 236, 236, 236,
+ 708, 672, 468, 468, 672, 104, 884, 104,
+ 236, 36, 36, 208, 36, 36, 104, 236,
+ 36, 640, 440, 104, 680, 36, 680, 440,
+ 208, 104, 640, 236, 104, 396, 440, 440,
+ 864, 672, 680, 768, 768, 208, 208, 208,
+ 208, 328, 328, 512, 12, 688, 440, 12,
+ 440, 12, 12, 184, 88, 440, 440, 184,
+ 88, 88, 88, 88, 592, 328, 184, 184,
+ 184, 384, 328, 592, 152, 152, 152, 336,
+ 328, 592, 56, 184, 56, 56, 592, 88,
+ 592, 584, 56, 184, 308, 308, 208, 584,
+ 56, 184, 184, 56, 56, 56, 584, 184,
+ 184, 184, 184, 88, 88, 184, 88, 88,
+ 328, 0, 0, 88, 592, 328, 328, 0,
+ 80, 84, 984, 584, 632, 584, 104, 56,
+ 56, 104, 996, 104, 992, 992, 992, 984,
+ 984, 104, 676, 184, 184, 184, 328, 184,
+ 12, 488, 384, 520, 996, 996, 152, 152,
+ 152, 664, 488, 488, 76, 328, 328, 76,
+ 76, 488, 208, 208, 208, 208, 996, 996,
+ 996, 328, 44, 384, 44, 996, 996, 996,
+ 996, 812, 812, 820, 384, 384, 44, 76,
+ 68, 12, 488, 88, 208, 208, 328, 88,
+ 488, 488, 664, 988, 988, 88, 88, 88,
+ 988, 416, 384, 488, 616, 328, 328, 584,
+ 488, 512, 488, 584, 384, 212, 384, 212,
+ 240, 44, 440, 64, 328, 64, 64, 64,
+ 64, 416, 328, 44, 44, 208, 208, 44,
+ 44, 664, 44, 672, 640, 152, 384, 152,
+ 488, 488, 152, 152, 488, 104, 544, 104,
+ 104, 328, 488, 76, 152, 76, 208, 208,
+ 76, 76, 416, 104, 64, 104, 76, 36,
+ 184, 996, 396, 36, 396, 36, 996, 236,
+ 236, 236, 480, 996, 996, 76, 396, 36,
+ 36, 36, 236, 688, 396, 396, 44, 36,
+ 36, 36, 104, 544, 104, 44, 236, 104,
+ 44, 36, 36, 36, 36, 788, 44, 688,
+ 688, 788, 788, 184, 396, 996, 184, 184,
+ 184, 184, 996, 996, 996, 104, 104, 468,
+ 468, 488, 308, 308, 308, 768, 352, 1000,
+ 984, 308, 308, 308, 308, 396, 396, 336,
+ 336, 736, 36, 292, 156, 36, 156, 28,
+ 28, 236, 736, 292, 236, 324, 236, 324,
+ 36, 36, 36, 36, 36, 36, 304, 680,
+ 412, 412, 304, 236, 236, 304, 412, 984,
+ 236, 352, 984, 768, 412, 736, 612, 156,
+ 156, 156, 156, 412, 236, 236, 612, 412,
+ 680, 680, 412, 304, 156, 156, 156, 304,
+ 324, 304, 104, 236, 324, 324, 12, 488,
+ 680, 736, 236, 236, 488, 788, 468, 304,
+ 304, 308, 308, 308, 308, 308, 304, 304,
+ 468, 484, 304, 304, 688, 864, 12, 680,
+ 680, 680, 304, 484, 668, 640, 688, 488,
+ 488, 324, 324, 640, 636, 468, 636, 680,
+ 636, 636, 144, 144, 64, 36, 36, 36,
+ 36, 36, 208, 128, 64, 64, 276, 276,
+ 128, 128, 128, 668, 128, 636, 636, 636,
+ 156, 680, 36, 36, 36, 276, 156, 156,
+ 276, 276, 36, 36, 36, 36, 36, 36,
+ 636, 136, 128, 136, 128, 136, 128, 136,
+ 128, 128, 668, 128, 664, 136, 136, 396,
+ 336, 136, 304, 336, 680, 664, 304, 668,
+ 440, 1000, 680, 156, 144, 36, 36, 36,
+ 1000, 156, 236, 156, 156, 236, 156, 340,
+ 1000, 144, 144, 144, 144, 144, 860, 760,
+ 760, 488, 156, 156, 276, 276, 276, 480,
+ 292, 156, 156, 292, 156, 156, 156, 748,
+ 248, 144, 80, 764, 732, 144, 340, 248,
+ 248, 732, 208, 276, 996, 144, 336, 96,
+ 676, 316, 96, 488, 336, 640, 676, 340,
+ 668, 304, 128, 128, 396, 128, 128, 128,
+ 304, 304, 396, 276, 336, 512, 248, 736,
+ 396, 676, 1000, 1000, 144, 144, 996, 996,
+ 996, 308, 308, 308, 184, 668, 336, 396,
+ 396, 336, 304, 248, 748, 156, 144, 144,
+ 248, 248, 676, 128, 128, 156, 144, 144,
+ 144, 128, 128, 248, 676, 220, 128, 128,
+ 396, 156, 156, 396, 612, 360, 360, 360,
+ 780, 676, 676, 304, 308, 308, 308, 308,
+ 220, 396, 220, 736, 156, 156, 984, 984,
+ 360, 984, 396, 396, 396, 396, 876, 780,
+ 780, 636, 480, 480, 84, 612, 612, 332,
+ 996, 996, 996, 220, 332, 332, 332, 332,
+ 780, 396, 396, 220, 220, 396, 304, 996,
+ 996, 396, 220, 308, 308, 308, 84, 304,
+ 668, 80, 732, 676, 732, 80, 80, 80,
+ 220, 204, 204, 732, 636, 764, 80, 80,
+ 276, 248, 84, 248, 748, 332, 332, 332,
+ 676, 676, 676, 748, 732, 732, 248, 676,
+ 676, 676, 248, 732, 612, 732, 732, 732,
+ 612, 812, 316, 316, 316, 316, 316, 812,
+ 732, 732, 612, 676, 676, 676, 220, 484,
+ 220, 220, 460, 272, 272, 244, 448, 84,
+ 664, 452, 452, 664, 84, 84, 156, 156,
+ 352, 448, 84, 80, 220, 156, 84, 220,
+ 84, 84, 132, 748, 132, 612, 188, 156,
+ 156, 156, 156, 272, 272, 448, 188, 188,
+ 188, 188, 188, 360, 272, 272, 272, 448,
+ 580, 272, 272, 272, 452, 244, 244, 244,
+ 244, 580, 448, 220, 220, 352, 352, 448,
+ 220, 984, 272, 420, 272, 272, 272, 360,
+ 244, 244, 984, 420, 360, 580, 272, 132,
+ 476, 360, 360, 664, 224, 216, 244, 216,
+ 216, 216, 216, 216, 612, 272, 984, 452,
+ 272, 244, 244, 244, 452, 984, 216, 216,
+ 216, 216, 576, 564, 564, 612, 452, 304,
+ 564, 224, 244, 224, 224, 244, 40, 40,
+ 40, 264, 224, 224, 304, 244, 512, 220,
+ 220, 188, 420, 244, 244, 188, 188, 188,
+ 388, 360, 612, 304, 40, 40, 40, 40,
+ 40, 640, 388, 388, 104, 188, 188, 188,
+ 612, 224, 612, 104, 188, 188, 188, 388,
+ 244, 104, 636, 216, 272, 216, 216, 484,
+ 104, 636, 388, 612, 272, 272, 104, 244,
+ 272, 272, 272, 420, 104, 452, 756, 996,
+ 996, 72, 564, 452, 220, 188, 188, 332,
+ 332, 272, 272, 332, 388, 188, 188, 188,
+ 188, 756, 388, 388, 272, 984, 984, 272,
+ 188, 332, 272, 272, 984, 360, 332, 332,
+ 984, 360, 736, 104, 388, 360, 484, 552,
+ 520, 272, 388, 272, 272, 216, 520, 224,
+ 1008, 216, 216, 564, 1008, 1008, 72, 72,
+ 72, 72, 76, 332, 332, 76, 332, 216,
+ 216, 84, 76, 76, 216, 1000, 1000, 308,
+ 308, 72, 72, 72, 1000, 332, 332, 700,
+ 72, 272, 784, 272, 272, 272, 272, 520,
+ 476, 420, 476, 360, 360, 360, 420, 748,
+ 332, 72, 72, 332, 520, 488, 72, 72,
+ 224, 276, 276, 332, 72, 72, 224, 276,
+ 276, 748, 332, 564, 276, 136, 748, 136,
+ 360, 360, 136, 156, 520, 332, 360, 332,
+ 332, 332, 332, 488, 360, 360, 136, 452,
+ 136, 700, 520, 216, 700, 136, 80, 80,
+ 748, 136, 448, 452, 452, 156, 452, 292,
+ 156, 156, 156, 448, 292, 136, 136, 480,
+ 520, 156, 156, 156, 76, 76, 292, 216,
+ 76, 76, 452, 292, 292, 292, 76, 352,
+ 136, 352, 292, 292, 352, 760, 136, 156,
+ 188, 156, 156, 188, 156, 156, 156, 104,
+ 488, 412, 136, 136, 188, 188, 188, 76,
+ 216, 76, 76, 156, 360, 188, 352, 188,
+ 188, 188, 188, 76, 412, 324, 324, 324,
+ 352, 76, 380, 380, 104, 156, 156, 156,
+ 156, 104, 480, 360, 276, 276, 40, 188,
+ 380, 40, 40, 728, 380, 188, 636, 132,
+ 244, 244, 244, 132, 636, 352, 352, 352,
+ 352, 380, 380, 132, 292, 292, 448, 292,
+ 292, 276, 236, 236, 276, 448, 188, 292,
+ 276, 188, 188, 816, 700, 244, 276, 276,
+ 292, 72, 276, 728, 412, 412, 412, 700,
+ 292, 292, 292, 292, 620, 480, 480, 188,
+ 620, 188, 188, 72, 136, 136, 480, 480,
+ 136, 380, 380, 380, 136, 576, 136, 136,
+ 324, 480, 188, 156, 156, 188, 188, 380,
+ 380, 188, 188, 380, 696, 188, 188, 636,
+ 368, 368, 620, 380, 324, 324, 380, 276,
+ 156, 236, 236, 236, 696, 136, 412, 412,
+ 984, 480, 136, 136, 292, 292, 292, 104,
+ 412, 104, 136, 40, 188, 40, 40, 40,
+ 368, 188, 188, 636, 40, 188, 188, 188,
+ 104, 380, 368, 368, 368, 368, 132, 360,
+ 332, 332, 308, 520, 332, 332, 132, 708,
+ 480, 480, 724, 360, 360, 188, 188, 308,
+ 308, 1008, 392, 360, 360, 500, 392, 216,
+ 364, 364, 156, 156, 188, 364, 244, 500,
+ 724, 332, 996, 876, 132, 308, 308, 996,
+ 996, 308, 996, 480, 996, 996, 996, 500,
+ 480, 364, 364, 996, 804, 724, 332, 332,
+ 724, 500, 480, 500, 500, 332, 196, 308,
+ 308, 72, 196, 196, 788, 196, 196, 412,
+ 188, 724, 132, 188, 368, 368, 368, 188,
+ 132, 368, 188, 188, 132, 804, 1004, 196,
+ 196, 188, 216, 196, 196, 216, 196, 196,
+ 480, 216, 868, 724, 724, 388, 368, 500,
+ 500, 500, 180, 168, 28, 28, 28, 180,
+ 180, 28, 28, 180, 324, 324, 28, 900,
+ 352, 28, 28, 324, 28, 400, 868, 28,
+ 292, 292, 868, 292, 400, 352, 352, 400,
+ 180, 180, 180, 180, 500, 312, 400, 292,
+ 352, 352, 312, 292, 292, 392, 392, 312,
+ 312, 168, 168, 168, 168, 168, 200, 760,
+ 312, 352, 352, 352, 312, 372, 372, 140,
+ 140, 996, 140, 140, 140, 140, 372, 312,
+ 312, 392, 168, 168, 168, 392, 244, 196,
+ 196, 352, 180, 148, 148, 148, 148, 196,
+ 68, 196, 400, 180, 180, 180, 932, 68,
+ 1016, 1008, 312, 312, 452, 292, 380, 380,
+ 180, 180, 180, 1008, 1008, 324, 324, 932,
+ 372, 352, 724, 1004, 292, 292, 292, 292,
+ 1004, 380, 1004, 324, 324, 324, 400, 512,
+ 400, 180, 180, 180, 180, 400, 1004, 352,
+ 244, 196, 196, 28, 28, 180, 180, 180,
+ 292, 196, 576, 180, 180, 180, 180, 180,
+ 1004, 452, 1016, 792, 244, 352, 804, 244,
+ 244, 244, 244, 264, 724, 264, 180, 180,
+ 352, 264, 40, 40, 216, 724, 792, 264,
+ 792, 180, 180, 180, 500, 264, 352, 180,
+ 372, 180, 148, 148, 148, 148, 372, 264,
+ 264, 500, 180, 180, 180, 500, 564, 700,
+ 700, 148, 148, 1004, 652, 372, 1004, 1008,
+ 652, 180, 1008, 380, 40, 40, 40, 40,
+ 380, 264, 520, 180, 180, 520, 520, 272,
+ 520, 28, 28, 724, 368, 40, 40, 40,
+ 40, 700, 700, 484, 700, 700, 380, 724,
+ 108, 368, 108, 108, 40, 40, 40, 40,
+ 108, 380, 380, 108, 652, 652, 772, 620,
+ 620, 108, 1016, 72, 996, 388, 652, 40,
+ 40, 40, 40, 40, 224, 40, 40, 40,
+ 108, 564, 264, 108, 520, 224, 224, 224,
+ 108, 264, 40, 108, 388, 264, 108, 1008,
+ 564, 388, 996, 996, 996, 996, 564, 1008,
+ 576, 1008, 564, 724, 108, 996, 108, 996,
+ 996, 620, 108, 148, 216, 108, 108, 564,
+ 1008, 856, 944, 372, 228, 992, 168, 140,
+ 140, 140, 792, 168, 168, 792, 228, 228,
+ 140, 28, 228, 28, 28, 28, 400, 652,
+ 372, 372, 400, 228, 228, 724, 400, 340,
+ 400, 108, 28, 168, 140, 140, 108, 228,
+ 168, 108, 1004, 228, 1004, 400, 168, 28,
+ 1004, 168, 168, 168, 108, 324, 324, 28,
+ 28, 28, 392, 372, 108, 324, 324, 400,
+ 400, 372, 792, 500, 532, 28, 236, 712,
+ 792, 28, 324, 28, 400, 400, 28, 216,
+ 400, 400, 380, 380, 620, 620, 400, 380,
+ 868, 324, 236, 324, 236, 236, 500, 500,
+ 468, 392, 392, 56, 56, 56, 56, 56,
+ 392, 400, 996, 996, 996, 996, 392, 468,
+ 468, 392, 392, 620, 400, 424, 424, 28,
+ 28, 28, 28, 400, 400, 996, 620, 996,
+ 620, 228, 228, 244, 400, 392, 392, 996,
+ 424, 996, 308, 996, 424, 792, 292, 324,
+ 292, 236, 236, 292, 236, 236, 468, 236,
+ 236, 520, 468, 520, 236, 792, 500, 412,
+ 412, 500, 500, 468, 1000, 424, 380, 324,
+ 324, 324, 424, 380, 380, 380, 392, 392,
+ 216, 392, 500, 380, 380, 804, 468, 412,
+ 804, 324, 324, 816, 412, 500, 500, 228,
+ 56, 56, 56, 56, 56, 56, 56, 992,
+ 228, 228, 140, 140, 140, 140, 140, 216,
+ 364, 364, 228, 364, 228, 228, 992, 372,
+ 372, 372, 424, 1016, 1016, 424, 224, 364,
+ 364, 996, 364, 140, 140, 140, 140, 424,
+ 228, 364, 868, 324, 324, 712, 364, 372,
+ 1000, 324, 324, 308, 308, 324, 324, 324,
+ 324, 468, 380, 380, 424, 804, 380, 372,
+ 372, 424, 40, 756, 620, 996, 996, 996,
+ 996, 620, 500, 368, 40, 40, 40, 1004,
+ 868, 380, 500, 424, 368, 368, 368, 424,
+ 476, 392, 424, 620, 1000, 1016, 40, 1000,
+ 996, 996, 424, 804, 484, 160, 1004, 468,
+ 368, 56, 56, 56, 252, 252, 996, 160,
+ 160, 996, 996, 996, 368, 368, 308, 308,
+ 308, 368, 160, 160, 308, 252, 252, 380,
+ 484, 252, 252, 72, 452, 516, 424, 512,
+ 392, 392, 308, 56, 56, 364, 996, 364,
+ 364, 996, 996, 364, 424, 308, 364, 368,
+ 364, 388, 72, 72, 72, 996, 516, 996,
+ 996, 996, 388, 388, 388, 364, 252, 716,
+ 64, 120, 212, 208, 428, 240, 212, 212,
+ 208, 208, 208, 240, 212, 212, 212, 252,
+ 252, 240, 252, 252, 328, 208, 84, 240,
+ 384, 84, 64, 64, 64, 64, 64, 64,
+ 364, 716, 416, 868, 160, 208, 208, 208,
+ 160, 224, 160, 1004, 208, 208, 152, 416,
+ 428, 60, 60, 60, 60, 60, 212, 212,
+ 384, 392, 152, 152, 152, 392, 836, 328,
+ 212, 212, 212, 212, 416, 384, 384, 164,
+ 328, 328, 328, 164, 224, 164, 160, 212,
+ 160, 428, 164, 212, 212, 212, 416, 716,
+ 152, 428, 428, 364, 64, 152, 152, 384,
+ 364, 64, 364, 416, 416, 164, 840, 776,
+ 196, 196, 416, 208, 208, 516, 240, 240,
+ 240, 416, 608, 164, 164, 776, 164, 208,
+ 536, 196, 120, 224, 164, 164, 240, 240,
+ 164, 820, 240, 384, 212, 384, 60, 60,
+ 60, 212, 356, 64, 776, 120, 224, 196,
+ 160, 300, 160, 160, 64, 64, 64, 452,
+ 160, 160, 144, 144, 196, 208, 144, 144,
+ 364, 208, 208, 196, 656, 144, 144, 144,
+ 656, 656, 196, 840, 144, 196, 1020, 208,
+ 716, 208, 208, 572, 240, 240, 656, 120,
+ 120, 120, 120, 208, 840, 208, 208, 364,
+ 656, 240, 164, 164, 120, 120, 656, 716,
+ 60, 92, 92, 316, 92, 92, 92, 316,
+ 316, 316, 316, 164, 676, 676, 164, 1012,
+ 92, 92, 92, 364, 1012, 572, 508, 92,
+ 356, 92, 92, 92, 356, 164, 92, 92,
+ 196, 548, 572, 820, 984, 144, 128, 128,
+ 1016, 164, 160, 64, 64, 724, 96, 96,
+ 96, 96, 572, 724, 132, 132, 540, 96,
+ 96, 820, 60, 60, 60, 60, 152, 428,
+ 96, 96, 724, 700, 152, 700, 816, 356,
+ 60, 60, 60, 276, 540, 356, 700, 700,
+ 356, 356, 356, 520, 540, 520, 428, 428,
+ 520, 804, 540, 540, 724, 64, 64, 64,
+ 428, 64, 64, 64, 700, 96, 96, 700,
+ 96, 96, 428, 64, 64, 804, 428, 428,
+ 696, 572, 572, 456, 96, 96, 456, 716,
+ 96, 456, 572, 112, 144, 112, 112, 112,
+ 112, 456, 144, 132, 132, 144, 456, 572,
+ 112, 112, 112, 572, 508, 508, 132, 112,
+ 112, 508, 64, 64, 64, 64, 132, 508,
+ 508, 696, 572, 576, 804, 132, 656, 132,
+ 132, 144, 144, 144, 144, 276, 92, 144,
+ 92, 96, 96, 92, 144, 128, 92, 92,
+ 676, 92, 276, 732, 732, 132, 316, 316,
+ 300, 848, 816, 804, 732, 144, 112, 112,
+ 112, 804, 792, 764, 144, 816, 700, 144,
+ 700, 700, 676, 316, 316, 700, 456, 112,
+ 112, 112, 112, 456, 1012, 376, 376, 316,
+ 316, 376, 456, 316, 1000, 316, 204, 204,
+ 204, 1000, 1000, 376, 376, 1000, 120, 60,
+ 60, 212, 60, 60, 60, 212, 60, 212,
+ 456, 416, 456, 212, 212, 212, 212, 212,
+ 212, 660, 568, 504, 504, 504, 456, 568,
+ 364, 364, 240, 240, 364, 804, 224, 456,
+ 456, 132, 240, 660, 476, 132, 132, 240,
+ 240, 132, 132, 840, 716, 300, 132, 804,
+ 660, 656, 656, 816, 276, 660, 660, 276,
+ 656, 804, 132, 212, 992, 992, 212, 212,
+ 212, 212, 212, 696, 276, 536, 248, 248,
+ 384, 384, 384, 248, 536, 132, 416, 244,
+ 132, 132, 132, 240, 240, 240, 240, 536,
+ 248, 416, 456, 120, 200, 200, 120, 200,
+ 200, 200, 120, 120, 248, 808, 992, 248,
+ 1000, 200, 200, 808, 744, 992, 600, 248,
+ 624, 744, 624, 808, 808, 808, 240, 656,
+ 240, 240, 656, 120, 300, 848, 160, 240,
+ 456, 364, 120, 120, 196, 656, 196, 656,
+ 160, 160, 112, 112, 112, 860, 656, 656,
+ 160, 568, 624, 744, 600, 296, 240, 240,
+ 240, 624, 568, 568, 132, 296, 296, 296,
+ 196, 224, 196, 132, 568, 224, 132, 132,
+ 600, 600, 196, 568, 240, 240, 240, 244,
+ 196, 132, 568, 196, 196, 536, 536, 456,
+ 456, 568, 516, 992, 992, 992, 192, 192,
+ 244, 192, 192, 300, 160, 580, 992, 548,
+ 548, 656, 296, 240, 516, 296, 516, 240,
+ 240, 240, 516, 656, 624, 624, 656, 548,
+ 160, 624, 624, 624, 160, 160, 240, 160,
+ 96, 540, 92, 60, 96, 60, 60, 60,
+ 92, 92, 92, 540, 96, 96, 72, 72,
+ 92, 92, 92, 92, 92, 92, 92, 1012,
+ 604, 604, 508, 508, 984, 704, 984, 984,
+ 268, 356, 356, 60, 60, 984, 356, 604,
+ 268, 268, 356, 356, 604, 356, 456, 704,
+ 508, 704, 160, 160, 384, 60, 60, 60,
+ 60, 384, 212, 212, 356, 428, 212, 428,
+ 60, 60, 60, 60, 428, 356, 212, 212,
+ 212, 160, 196, 212, 212, 160, 504, 356,
+ 356, 196, 504, 60, 60, 60, 504, 660,
+ 60, 60, 60, 60, 60, 504, 516, 604,
+ 504, 196, 356, 356, 356, 356, 580, 196,
+ 508, 196, 508, 196, 132, 540, 504, 504,
+ 132, 132, 540, 540, 508, 508, 264, 132,
+ 984, 92, 604, 660, 92, 92, 984, 572,
+ 508, 508, 132, 132, 572, 572, 696, 508,
+ 508, 508, 456, 132, 656, 132, 572, 572,
+ 264, 580, 456, 660, 192, 656, 420, 192,
+ 192, 660, 132, 112, 112, 456, 1012, 572,
+ 508, 508, 192, 192, 572, 248, 1012, 192,
+ 628, 604, 508, 192, 604, 508, 268, 240,
+ 356, 212, 212, 224, 364, 456, 240, 240,
+ 132, 240, 504, 240, 568, 296, 568, 356,
+ 124, 268, 268, 268, 268, 268, 356, 364,
+ 820, 356, 296, 296, 132, 296, 296, 248,
+ 268, 124, 124, 124, 124, 568, 296, 296,
+ 248, 268, 268, 224, 220, 580, 296, 296,
+ 132, 600, 296, 268, 268, 268, 268, 132,
+ 504, 356, 220, 356, 220, 580, 356, 356,
+ 224, 132, 132, 508, 508, 508, 132, 604,
+ 696, 132, 220, 240, 240, 660, 212, 212,
+ 984, 984, 240, 240, 240, 984, 984, 564,
+ 132, 220, 504, 220, 568, 296, 296, 580,
+ 568, 516, 568, 364, 624, 112, 112, 112,
+ 364, 160, 364, 504, 356, 356, 356, 516,
+ 252, 504, 252, 252, 296, 296, 252, 604,
+ 508, 364, 604, 624, 624, 624, 508, 508,
+ 264, 364, 364, 656, 192, 192, 628, 628,
+ 656, 20, 588, 32, 432, 256, 20, 48,
+ 20, 20, 20, 48, 48, 432, 256, 256,
+ 256, 192, 284, 284, 284, 432, 192, 284,
+ 284, 232, 232, 232, 460, 284, 160, 160,
+ 404, 232, 404, 404, 48, 48, 48, 84,
+ 432, 84, 192, 20, 20, 20, 20, 32,
+ 32, 32, 172, 48, 48, 48, 32, 32,
+ 32, 32, 48, 48, 316, 1000, 316, 1000,
+ 32, 172, 232, 344, 344, 232, 232, 252,
+ 524, 524, 20, 20, 472, 20, 20, 472,
+ 20, 20, 20, 20, 588, 524, 524, 252,
+ 524, 160, 644, 492, 284, 284, 364, 252,
+ 172, 172, 20, 20, 20, 20, 20, 32,
+ 48, 48, 492, 48, 32, 252, 48, 252,
+ 32, 32, 32, 192, 172, 172, 684, 172,
+ 172, 444, 172, 172, 172, 796, 444, 192,
+ 256, 256, 256, 256, 256, 432, 404, 48,
+ 828, 48, 48, 48, 492, 432, 192, 192,
+ 48, 364, 20, 20, 160, 492, 492, 160,
+ 920, 796, 796, 828, 828, 192, 20, 32,
+ 20, 472, 20, 20, 456, 472, 32, 32,
+ 248, 248, 472, 472, 472, 472, 444, 444,
+ 444, 444, 684, 472, 472, 472, 752, 744,
+ 684, 364, 192, 600, 192, 684, 744, 192,
+ 492, 492, 192, 744, 192, 192, 744, 404,
+ 256, 404, 204, 204, 204, 376, 248, 256,
+ 256, 256, 404, 376, 376, 432, 256, 256,
+ 376, 112, 112, 112, 112, 112, 220, 828,
+ 256, 256, 220, 256, 192, 764, 256, 256,
+ 192, 376, 192, 376, 220, 1012, 316, 48,
+ 48, 192, 432, 316, 316, 316, 316, 248,
+ 556, 376, 376, 376, 376, 220, 432, 376,
+ 112, 1012, 192, 376, 244, 984, 984, 556,
+ 556, 984, 432, 1000, 48, 364, 364, 684,
+ 444, 124, 124, 124, 124, 124, 124, 124,
+ 124, 796, 684, 628, 628, 628, 248, 248,
+ 444, 444, 444, 248, 364, 296, 296, 296,
+ 296, 628, 364, 444, 444, 192, 444, 796,
+ 172, 172, 172, 172, 192, 244, 192, 192,
+ 444, 192, 556, 796, 172, 172, 172, 172,
+ 192, 628, 664, 248, 192, 684, 684, 192,
+ 628, 628, 628, 248, 684, 84, 84, 172,
+ 84, 684, 296, 624, 296, 476, 452, 84,
+ 84, 456, 624, 624, 624, 628, 848, 84,
+ 296, 296, 684, 684, 796, 624, 624, 624,
+ 456, 508, 508, 508, 508, 784, 628, 628,
+ 784, 628, 748, 844, 256, 80, 628, 628,
+ 628, 80, 80, 72, 796, 796, 72, 1000,
+ 84, 80, 80, 124, 124, 124, 84, 80,
+ 80, 600, 296, 84, 568, 84, 752, 624,
+ 296, 296, 296, 296, 784, 624, 84, 84,
+ 624, 624, 784, 84, 744, 744, 600, 600,
+ 600, 84, 880, 624, 784, 940, 624, 624,
+ 84, 84, 444, 556, 32, 32, 316, 316,
+ 316, 444, 704, 556, 172, 172, 340, 752,
+ 752, 556, 556, 84, 444, 340, 192, 192,
+ 632, 192, 192, 556, 912, 880, 624, 508,
+ 296, 296, 124, 296, 880, 124, 784, 628,
+ 84, 444, 124, 124, 268, 508, 508, 268,
+ 124, 124, 124, 124, 628, 604, 84, 268,
+ 268, 476, 476, 604, 100, 100, 124, 124,
+ 124, 124, 100, 84, 296, 296, 296, 84,
+ 796, 84, 508, 508, 508, 100, 704, 508,
+ 508, 508, 508, 100, 784, 704, 984, 984,
+ 704, 628, 984, 752, 548, 604, 512, 548,
+ 548, 244, 100, 100, 628, 628, 100, 936,
+ 796, 100, 752, 296, 296, 548, 796, 548,
+ 444, 72, 72, 296, 296, 72, 984, 508,
+ 984, 704, 984, 984, 508, 112, 508, 112,
+ 112, 112, 112, 784, 752, 100, 508, 508,
+ 72, 628, 476, 628, 508, 548, 1012, 112,
+ 112, 112, 340, 476, 424, 796, 1000, 1000,
+ 628, 628, 628, 796, 192, 1012, 1012, 84,
+ 84, 628, 84, 692, 508, 604, 556, 316,
+ 316, 692, 704, 556, 880, 720, 1012, 1012,
+ 604, 704, 48, 48, 720, 172, 172, 172,
+ 172, 252, 556, 252, 252, 556, 556, 556,
+ 556, 252, 828, 796, 692, 1012, 252, 1012,
+ 1012, 84, 632, 84, 252, 628, 476, 252,
+ 84, 704, 84, 424, 576, 180, 280, 148,
+ 244, 180, 264, 148, 68, 68, 280, 68,
+ 68, 68, 68, 340, 280, 280, 252, 148,
+ 148, 148, 192, 476, 192, 364, 148, 68,
+ 84, 84, 192, 244, 252, 148, 452, 148,
+ 180, 312, 148, 148, 180, 148, 244, 160,
+ 164, 180, 164, 164, 180, 180, 180, 244,
+ 548, 548, 340, 516, 516, 264, 264, 364,
+ 244, 452, 244, 244, 244, 364, 264, 264,
+ 264, 352, 68, 68, 68, 244, 244, 164,
+ 180, 164, 68, 164, 352, 68, 280, 68,
+ 68, 516, 280, 164, 312, 68, 68, 352,
+ 180, 252, 252, 68, 68, 68, 692, 512,
+ 692, 160, 312, 312, 372, 312, 160, 760,
+ 516, 312, 148, 148, 148, 148, 148, 148,
+ 280, 148, 148, 148, 148, 148, 280, 312,
+ 312, 164, 340, 340, 340, 164, 1004, 772,
+ 148, 148, 148, 160, 1016, 564, 160, 160,
+ 68, 68, 68, 68, 340, 148, 148, 164,
+ 340, 340, 148, 148, 148, 340, 160, 160,
+ 148, 1004, 1004, 148, 160, 160, 148, 484,
+ 484, 564, 100, 148, 100, 872, 484, 484,
+ 72, 1016, 1016, 72, 224, 264, 68, 100,
+ 1016, 1016, 224, 224, 224, 224, 772, 564,
+ 564, 264, 264, 264, 100, 664, 192, 68,
+ 192, 484, 484, 740, 1016, 564, 340, 264,
+ 192, 100, 164, 68, 264, 68, 84, 720,
+ 532, 244, 244, 340, 608, 264, 1004, 340,
+ 532, 1004, 140, 140, 792, 312, 312, 312,
+ 692, 392, 168, 140, 140, 140, 140, 140,
+ 392, 532, 424, 168, 532, 312, 392, 452,
+ 1000, 424, 200, 596, 596, 280, 68, 68,
+ 68, 68, 140, 140, 140, 140, 140, 140,
+ 280, 280, 312, 148, 148, 692, 452, 692,
+ 720, 148, 148, 596, 596, 280, 280, 720,
+ 280, 280, 632, 312, 632, 1004, 596, 140,
+ 140, 140, 720, 1008, 632, 720, 280, 1004,
+ 148, 148, 1004, 1016, 596, 68, 68, 68,
+ 280, 148, 392, 392, 1008, 392, 1004, 1004,
+ 1004, 1016, 1016, 904, 904, 652, 148, 148,
+ 148, 392, 632, 312, 1004, 564, 312, 340,
+ 424, 72, 148, 148, 392, 392, 1004, 1004,
+ 84, 424, 564, 544, 280, 400, 68, 68,
+ 68, 68, 68, 424, 400, 392, 392, 424,
+ 392, 392, 392, 392, 400, 400, 532, 1004,
+ 400, 532, 280, 280, 280, 1004, 400, 400,
+ 252, 280, 280, 280, 252, 544, 720, 400,
+ 400, 880, 720, 1004, 1004, 280, 280, 392,
+ 400, 400, 280, 280, 392, 392, 400, 164,
+ 164, 564, 164, 868, 280, 280, 164, 392,
+ 68, 252, 164, 932, 252, 1004, 160, 1016,
+ 1016, 160, 340, 532, 68, 68, 68, 68,
+ 68, 544, 532, 532, 164, 392, 392, 392,
+ 164, 476, 160, 160, 512, 340, 340, 340,
+ 340, 164, 160, 512, 512, 512, 512, 632,
+ 544, 544, 532, 532, 164, 216, 160, 544,
+ 544, 1016, 692, 68, 68, 544, 68, 68,
+ 68, 548, 740, 544, 392, 164, 340, 340,
+ 340, 544, 164, 68, 68, 68, 68, 632,
+ 608, 608, 692, 340, 740, 608, 608, 392,
+ 544, 596, 392, 392, 596, 544, 544, 836,
+ 392, 340, 484, 544, 340, 340, 392, 544,
+ 484, 484, 392, 340, 340, 484, 340, 340,
+ 340, 164, 164, 608, 164, 596, 740, 740,
+ 484, 484, 484, 484, 740, 836, 392, 544,
+ 544, 900, 836, 216, 692, 164, 484, 164,
+ 836, 544, 1004, 1004, 1004, 164, 484, 544,
+ 544, 692, 160, 1004, 1004, 160, 484, 836,
+ 484, 484, 160, 836, 1016, 1004, 160, 1004,
+ 424, 68, 68, 424, 68, 68, 532, 596,
+ 280, 532, 280, 280, 280, 164, 532, 532,
+ 164, 760, 596, 164, 216, 160, 596, 532,
+ 424, 84, 84, 532, 532, 596, 84, 1000,
+ 244, 244, 340, 68, 68, 244, 244, 340,
+ 68, 68, 596, 352, 244, 244, 392, 68,
+ 532, 68, 68, 392, 1004, 544, 352, 68,
+ 68, 532, 632, 352, 1004, 632, 544, 340,
+ 340, 532, 512, 512, 512, 1004, 280, 280,
+ 280, 280, 1004, 1004, 544, 340, 340, 312,
+ 400, 760, 400, 312, 400, 340, 340, 340,
+ 340, 392, 512, 452, 392, 392, 1004, 1004,
+ 1004, 1004, 512, 512, 544, 544, 544, 608,
+ 100, 216, 476, 512, 216, 216, 216, 216,
+ 512, 476, 476, 544, 244, 692, 300, 300,
+ 164, 100, 72, 72, 72, 72, 300, 100,
+ 100, 100, 596, 784, 300, 300, 300, 392,
+ 484, 784, 484, 596, 300, 476, 476, 72,
+ 72, 72, 216, 216, 300, 300, 216, 216,
+ 216, 216, 300, 608, 300, 300, 100, 216,
+ 72, 72, 544, 484, 300, 300, 300, 72,
+ 484, 484, 484, 484, 984, 216, 984, 72,
+ 544, 544, 544, 544, 692, 596, 596, 548,
+ 548, 300, 300, 300, 596, 164, 608, 164,
+ 596, 608, 512, 512, 164, 160, 596, 160,
+ 160, 544, 544, 548, 596, 596, 100, 544,
+ 512, 512, 512, 100, 100, 632, 100, 100,
+ 100, 100, 100, 300, 300, 596, 484, 484,
+ 512, 512, 512, 512, 512, 300, 596, 300,
+ 216, 548, 100, 596, 596, 100, 484, 632,
+ 484, 596, 596, 596, 608, 100, 608, 484,
+ 608, 608, 72, 420, 300, 100, 72, 72,
+ 72, 72, 100, 100, 72, 548, 300, 596,
+ 300, 72, 72, 100, 484, 300, 300, 100,
+ 596, 72, 72, 72, 476, 476, 784, 388,
+ 420, 84, 84, 300, 300, 100, 512, 84,
+ 72, 596, 596, 72, 392, 784, 300, 244,
+ 224, 224, 224, 224, 748, 784, 1000, 1000,
+ 216, 244, 224, 224, 72, 72, 388, 1000,
+ 84, 388, 224, 224, 216, 216, 216, 84,
+ 224, 224, 84, 216, 84, 300, 216, 80,
+ 84, 72, 72, 72, 216,
+};
+
+static long _vq_q_lsp32_1[] = {
+ 584, 796, 224, 780, 812, 980, 992, 884,
+ 860, 228, 760, 120, 712, 168, 1020, 1020,
+ 1020, 168, 200, 712, 1020, 16, 712, 1020,
+ 16, 200, 712, 12, 16, 1020, 712, 760,
+ 12, 1020, 1020, 120, 228, 712, 712, 228,
+ 712, 592, 712, 584, 712, 1020, 16, 860,
+ 760, 1020, 120, 208, 208, 236, 924, 236,
+ 1020, 1020, 1020, 924, 760, 860, 528, 1020,
+ 760, 860, 616, 616, 884, 236, 528, 1020,
+ 916, 236, 324, 712, 944, 712, 712, 324,
+ 944, 944, 616, 916, 944, 712, 916, 528,
+ 944, 916, 944, 988, 1020, 680, 324, 916,
+ 680, 712, 916, 916, 712, 916, 16, 680,
+ 664, 584, 16, 712, 1020, 584, 776, 228,
+ 944, 884, 988, 916, 712, 916, 944, 616,
+ 512, 924, 592, 228, 712, 884, 616, 944,
+ 884, 592, 616, 712, 884, 944, 552, 664,
+ 552, 616, 916, 776, 884, 884, 228, 200,
+ 992, 808, 808, 992, 884, 528, 536, 228,
+ 992, 712, 88, 884, 916, 616, 884, 916,
+ 988, 712, 488, 528, 992, 992, 884, 120,
+ 228, 712, 584, 452, 768, 768, 228, 884,
+ 884, 228, 992, 592, 712, 992, 800, 800,
+ 992, 536, 16, 884, 884, 992, 536, 884,
+ 800, 440, 1020, 536, 916, 992, 88, 712,
+ 384, 16, 384, 384, 884, 712, 776, 592,
+ 916, 776, 800, 16, 776, 208, 384, 536,
+ 992, 120, 840, 712, 776, 776, 840, 712,
+ 840, 776, 712, 840, 992, 536, 840, 840,
+ 536, 592, 384, 536, 536, 416, 384, 776,
+ 208, 536, 884, 16, 536, 560, 12, 776,
+ 12, 416, 800, 416, 536, 768, 536, 776,
+ 840, 832, 860, 776, 924, 840, 200, 832,
+ 924, 712, 776, 840, 924, 840, 1020, 1020,
+ 776, 840, 832, 1020, 800, 988, 776, 1020,
+ 680, 760, 592, 800, 1020, 560, 1020, 948,
+ 440, 680, 496, 776, 680, 776, 916, 800,
+ 776, 592, 980, 416, 440, 776, 948, 948,
+ 776, 948, 496, 440, 776, 776, 776, 980,
+ 948, 980, 980, 1020, 948, 236, 948, 860,
+ 208, 1020, 948, 948, 1020, 948, 832, 980,
+ 16, 860, 176, 464, 536, 468, 396, 440,
+ 144, 680, 948, 208, 208, 948, 436, 464,
+ 860, 208, 648, 648, 860, 948, 128, 152,
+ 688, 152, 336, 440, 440, 336, 440, 408,
+ 688, 948, 680, 688, 464, 436, 152, 208,
+ 440, 776, 948, 980, 648, 948, 408, 352,
+ 648, 320, 440, 320, 948, 288, 440, 776,
+ 512, 348, 320, 128, 328, 152, 440, 852,
+ 4, 440, 208, 328, 852, 396, 396, 852,
+ 852, 328, 396, 852, 664, 648, 464, 208,
+ 396, 440, 896, 896, 440, 396, 440, 436,
+ 328, 676, 336, 128, 152, 852, 852, 152,
+ 852, 896, 336, 184, 396, 852, 152, 328,
+ 664, 924, 896, 336, 440, 832, 328, 632,
+ 832, 496, 352, 896, 436, 852, 496, 336,
+ 664, 832, 496, 440, 396, 852, 560, 852,
+ 328, 396, 336, 440, 688, 260, 440, 688,
+ 832, 396, 528, 688, 396, 244, 924, 924,
+ 396, 440, 648, 440, 648, 8, 440, 944,
+ 336, 996, 916, 884, 884, 688, 468, 308,
+ 468, 988, 916, 184, 916, 924, 688, 916,
+ 916, 688, 308, 688, 916, 896, 884, 468,
+ 688, 688, 884, 336, 996, 328, 396, 688,
+ 884, 408, 584, 672, 672, 396, 884, 396,
+ 884, 640, 916, 884, 884, 468, 884, 916,
+ 956, 956, 884, 916, 708, 956, 916, 708,
+ 884, 688, 948, 236, 208, 440, 672, 680,
+ 236, 708, 680, 708, 916, 680, 948, 680,
+ 440, 640, 672, 916, 584, 688, 680, 688,
+ 956, 864, 688, 956, 864, 440, 396, 884,
+ 328, 396, 440, 664, 956, 916, 688, 864,
+ 884, 768, 672, 416, 852, 884, 916, 336,
+ 184, 384, 328, 440, 956, 384, 328, 384,
+ 440, 440, 384, 768, 328, 336, 384, 384,
+ 336, 672, 308, 384, 88, 184, 12, 184,
+ 12, 12, 384, 308, 336, 384, 884, 592,
+ 992, 996, 916, 88, 384, 184, 672, 884,
+ 384, 384, 884, 184, 328, 328, 884, 536,
+ 536, 768, 592, 384, 956, 384, 536, 12,
+ 844, 352, 768, 616, 664, 592, 592, 996,
+ 384, 584, 884, 616, 384, 996, 536, 104,
+ 956, 672, 820, 336, 996, 396, 852, 328,
+ 640, 520, 852, 552, 328, 396, 676, 328,
+ 852, 912, 616, 552, 616, 852, 336, 552,
+ 488, 552, 812, 328, 852, 996, 328, 536,
+ 852, 384, 552, 536, 488, 384, 812, 852,
+ 820, 820, 852, 852, 812, 820, 76, 520,
+ 420, 672, 672, 440, 240, 416, 536, 208,
+ 12, 640, 748, 12, 584, 328, 384, 416,
+ 488, 536, 416, 12, 672, 384, 416, 12,
+ 584, 760, 672, 616, 416, 852, 536, 536,
+ 536, 672, 776, 152, 852, 208, 328, 416,
+ 440, 440, 416, 488, 616, 328, 416, 584,
+ 988, 760, 640, 708, 672, 852, 416, 328,
+ 708, 672, 328, 416, 640, 672, 692, 640,
+ 488, 384, 640, 708, 416, 640, 980, 416,
+ 488, 104, 980, 616, 776, 488, 488, 780,
+ 888, 852, 680, 184, 876, 208, 396, 996,
+ 480, 788, 788, 480, 788, 104, 480, 396,
+ 688, 236, 688, 788, 688, 788, 488, 236,
+ 480, 788, 672, 608, 488, 104, 996, 616,
+ 76, 688, 480, 788, 876, 876, 640, 788,
+ 876, 876, 908, 336, 688, 396, 396, 688,
+ 308, 996, 308, 468, 688, 584, 552, 688,
+ 788, 864, 468, 688, 788, 972, 664, 768,
+ 768, 688, 788, 876, 336, 688, 876, 688,
+ 876, 956, 688, 412, 292, 156, 236, 292,
+ 236, 292, 864, 1020, 1020, 412, 324, 680,
+ 876, 156, 480, 236, 412, 680, 956, 788,
+ 680, 788, 864, 412, 680, 736, 680, 956,
+ 412, 760, 768, 864, 480, 972, 956, 480,
+ 236, 412, 680, 680, 412, 680, 708, 480,
+ 788, 876, 788, 708, 324, 680, 1020, 640,
+ 680, 956, 956, 688, 916, 412, 864, 640,
+ 788, 864, 468, 788, 736, 916, 788, 864,
+ 736, 324, 876, 468, 688, 788, 488, 708,
+ 688, 608, 640, 12, 788, 956, 768, 876,
+ 688, 788, 672, 692, 708, 708, 788, 668,
+ 640, 468, 680, 668, 708, 788, 668, 788,
+ 640, 640, 156, 1020, 852, 948, 128, 144,
+ 208, 396, 396, 396, 128, 144, 640, 668,
+ 396, 144, 948, 696, 396, 696, 668, 696,
+ 876, 1020, 156, 680, 948, 696, 680, 948,
+ 636, 668, 688, 396, 876, 680, 128, 440,
+ 708, 708, 440, 696, 948, 636, 876, 668,
+ 396, 876, 708, 336, 760, 276, 640, 688,
+ 396, 488, 640, 440, 876, 824, 668, 696,
+ 680, 736, 688, 732, 748, 144, 236, 156,
+ 668, 1020, 760, 236, 292, 292, 760, 692,
+ 488, 156, 760, 1020, 860, 888, 888, 860,
+ 888, 668, 888, 760, 668, 488, 1000, 748,
+ 760, 292, 480, 480, 760, 748, 888, 888,
+ 668, 208, 888, 888, 764, 732, 484, 1000,
+ 276, 888, 996, 640, 748, 732, 876, 128,
+ 812, 676, 676, 640, 676, 668, 852, 608,
+ 736, 736, 184, 144, 812, 336, 396, 676,
+ 640, 668, 676, 696, 676, 760, 636, 972,
+ 676, 812, 972, 736, 676, 852, 396, 812,
+ 308, 812, 336, 396, 336, 736, 396, 852,
+ 812, 812, 668, 736, 780, 748, 156, 748,
+ 668, 972, 812, 688, 876, 780, 156, 676,
+ 780, 144, 676, 1000, 780, 972, 396, 780,
+ 780, 780, 876, 780, 736, 676, 780, 876,
+ 876, 780, 876, 612, 908, 396, 688, 876,
+ 612, 688, 736, 972, 480, 780, 736, 972,
+ 780, 612, 480, 780, 876, 908, 908, 876,
+ 908, 668, 908, 780, 720, 668, 636, 908,
+ 332, 396, 812, 668, 480, 396, 780, 812,
+ 812, 812, 876, 636, 612, 480, 668, 308,
+ 396, 480, 304, 396, 876, 908, 632, 612,
+ 736, 844, 748, 732, 812, 204, 732, 888,
+ 248, 732, 764, 764, 668, 888, 84, 748,
+ 668, 696, 748, 668, 844, 812, 780, 748,
+ 732, 748, 780, 780, 748, 780, 276, 780,
+ 732, 812, 636, 812, 696, 820, 780, 812,
+ 668, 820, 460, 676, 732, 812, 844, 844,
+ 812, 844, 636, 732, 812, 844, 696, 872,
+ 668, 636, 844, 652, 480, 332, 576, 360,
+ 748, 664, 760, 760, 156, 664, 664, 352,
+ 664, 664, 760, 748, 612, 748, 156, 248,
+ 748, 888, 636, 760, 220, 636, 420, 448,
+ 360, 272, 748, 748, 360, 748, 244, 272,
+ 360, 448, 352, 448, 360, 448, 452, 452,
+ 636, 448, 452, 664, 664, 352, 448, 452,
+ 664, 612, 452, 636, 612, 448, 452, 452,
+ 580, 220, 748, 476, 664, 360, 420, 420,
+ 360, 420, 612, 664, 664, 696, 476, 304,
+ 664, 664, 748, 748, 388, 224, 564, 244,
+ 576, 272, 452, 664, 708, 452, 972, 576,
+ 576, 664, 452, 576, 576, 220, 452, 564,
+ 576, 756, 756, 576, 756, 736, 564, 736,
+ 576, 564, 576, 244, 264, 264, 224, 264,
+ 576, 576, 264, 576, 612, 576, 632, 736,
+ 612, 272, 576, 420, 388, 360, 388, 420,
+ 420, 388, 708, 640, 244, 188, 388, 576,
+ 756, 708, 576, 756, 640, 388, 576, 756,
+ 708, 484, 636, 636, 244, 388, 576, 576,
+ 388, 612, 640, 420, 476, 272, 388, 740,
+ 956, 728, 576, 636, 576, 756, 636, 420,
+ 388, 420, 476, 476, 612, 748, 812, 332,
+ 756, 996, 756, 564, 612, 216, 360, 756,
+ 388, 332, 908, 908, 420, 272, 388, 756,
+ 908, 908, 756, 908, 388, 636, 612, 420,
+ 272, 420, 332, 360, 104, 908, 360, 388,
+ 956, 388, 972, 136, 420, 388, 608, 728,
+ 728, 332, 420, 756, 388, 388, 552, 388,
+ 728, 272, 420, 692, 552, 520, 216, 332,
+ 388, 420, 728, 388, 420, 552, 756, 420,
+ 332, 1000, 520, 488, 388, 816, 520, 332,
+ 812, 332, 812, 844, 488, 812, 844, 816,
+ 80, 780, 844, 332, 360, 420, 476, 816,
+ 748, 476, 784, 748, 420, 784, 784, 784,
+ 420, 332, 748, 360, 700, 700, 420, 784,
+ 564, 700, 488, 360, 332, 748, 484, 816,
+ 1000, 844, 748, 692, 640, 640, 812, 488,
+ 748, 844, 816, 360, 700, 812, 676, 844,
+ 360, 748, 780, 520, 748, 780, 700, 912,
+ 488, 728, 728, 564, 816, 816, 748, 844,
+ 844, 728, 788, 576, 564, 352, 760, 452,
+ 748, 292, 448, 480, 448, 700, 520, 748,
+ 700, 748, 292, 760, 700, 520, 760, 484,
+ 136, 488, 824, 352, 448, 452, 640, 448,
+ 276, 760, 352, 824, 824, 824, 728, 292,
+ 780, 324, 352, 360, 188, 412, 448, 728,
+ 640, 448, 640, 488, 412, 448, 480, 488,
+ 692, 640, 136, 360, 480, 448, 448, 380,
+ 412, 352, 448, 104, 448, 412, 352, 380,
+ 412, 728, 412, 448, 520, 360, 748, 480,
+ 780, 552, 748, 480, 816, 640, 756, 448,
+ 412, 188, 380, 960, 576, 380, 960, 960,
+ 448, 352, 380, 636, 728, 380, 448, 380,
+ 412, 412, 448, 816, 448, 576, 576, 412,
+ 448, 636, 292, 412, 816, 576, 480, 412,
+ 960, 380, 412, 960, 960, 664, 960, 700,
+ 412, 484, 816, 816, 448, 480, 620, 728,
+ 576, 480, 620, 756, 756, 756, 620, 380,
+ 756, 620, 480, 216, 960, 728, 576, 756,
+ 700, 576, 620, 756, 816, 620, 276, 636,
+ 876, 756, 480, 412, 324, 324, 368, 788,
+ 620, 380, 412, 412, 700, 412, 788, 696,
+ 380, 788, 788, 788, 412, 788, 412, 696,
+ 412, 292, 480, 412, 960, 640, 480, 620,
+ 728, 620, 636, 640, 412, 480, 620, 640,
+ 480, 136, 960, 756, 380, 188, 368, 388,
+ 388, 368, 388, 728, 380, 756, 368, 380,
+ 816, 620, 620, 380, 620, 756, 520, 368,
+ 360, 812, 332, 736, 480, 780, 584, 924,
+ 780, 908, 728, 480, 676, 908, 360, 360,
+ 876, 724, 724, 780, 876, 816, 500, 576,
+ 816, 500, 480, 188, 480, 392, 420, 724,
+ 816, 388, 812, 908, 724, 908, 788, 308,
+ 332, 332, 332, 756, 480, 788, 908, 804,
+ 788, 804, 500, 756, 868, 868, 480, 756,
+ 804, 868, 756, 804, 724, 812, 868, 368,
+ 788, 1004, 804, 724, 876, 500, 364, 788,
+ 412, 804, 804, 388, 620, 756, 788, 368,
+ 364, 908, 480, 788, 196, 816, 564, 392,
+ 728, 480, 224, 964, 548, 608, 1016, 392,
+ 756, 244, 964, 964, 868, 756, 388, 964,
+ 868, 724, 944, 388, 652, 168, 312, 292,
+ 352, 180, 372, 372, 372, 352, 352, 964,
+ 372, 760, 292, 352, 324, 964, 900, 352,
+ 324, 352, 964, 352, 964, 760, 1020, 500,
+ 824, 292, 352, 312, 868, 372, 724, 312,
+ 824, 760, 352, 312, 760, 964, 500, 760,
+ 824, 372, 312, 760, 200, 856, 856, 856,
+ 760, 372, 760, 856, 372, 856, 1020, 148,
+ 1016, 652, 168, 312, 372, 652, 652, 372,
+ 652, 400, 312, 372, 652, 964, 632, 868,
+ 724, 372, 564, 180, 312, 372, 652, 392,
+ 244, 500, 548, 312, 372, 652, 964, 632,
+ 964, 932, 652, 564, 564, 452, 620, 576,
+ 292, 380, 352, 1016, 724, 352, 372, 964,
+ 380, 372, 932, 964, 324, 412, 352, 380,
+ 932, 412, 724, 352, 380, 412, 932, 632,
+ 724, 352, 576, 292, 824, 1004, 1016, 448,
+ 452, 724, 1016, 292, 180, 292, 576, 620,
+ 576, 964, 620, 264, 352, 244, 576, 452,
+ 900, 824, 728, 804, 352, 372, 816, 352,
+ 264, 576, 380, 576, 804, 352, 564, 620,
+ 372, 352, 180, 264, 452, 792, 816, 380,
+ 804, 380, 264, 576, 804, 380, 380, 352,
+ 380, 652, 180, 264, 372, 772, 772, 372,
+ 772, 792, 264, 372, 772, 724, 608, 792,
+ 804, 372, 652, 792, 772, 652, 500, 520,
+ 772, 380, 728, 652, 180, 264, 380, 772,
+ 772, 380, 792, 264, 380, 816, 700, 664,
+ 728, 652, 620, 728, 976, 368, 380, 576,
+ 620, 728, 724, 564, 724, 792, 620, 792,
+ 816, 756, 792, 724, 772, 380, 620, 976,
+ 700, 620, 976, 728, 772, 976, 976, 652,
+ 772, 520, 772, 996, 1016, 1016, 1016, 652,
+ 368, 756, 620, 576, 388, 224, 264, 564,
+ 1008, 772, 564, 500, 856, 264, 564, 772,
+ 856, 564, 388, 792, 772, 564, 520, 856,
+ 620, 756, 388, 620, 564, 756, 756, 728,
+ 756, 724, 620, 932, 932, 756, 724, 652,
+ 564, 652, 1008, 564, 272, 728, 856, 652,
+ 520, 932, 976, 380, 712, 944, 228, 168,
+ 200, 992, 932, 200, 992, 856, 992, 996,
+ 228, 168, 884, 228, 372, 652, 932, 944,
+ 652, 944, 792, 372, 652, 792, 792, 564,
+ 724, 792, 884, 372, 168, 228, 724, 652,
+ 228, 400, 932, 372, 792, 1004, 372, 168,
+ 724, 1020, 200, 712, 856, 352, 1020, 324,
+ 944, 372, 400, 712, 816, 372, 712, 1008,
+ 500, 712, 900, 792, 792, 292, 884, 944,
+ 856, 236, 380, 324, 856, 792, 620, 420,
+ 532, 500, 620, 944, 652, 944, 1004, 944,
+ 900, 944, 324, 468, 468, 620, 900, 868,
+ 620, 868, 964, 228, 712, 468, 996, 884,
+ 500, 900, 884, 944, 468, 620, 900, 620,
+ 884, 964, 400, 884, 500, 532, 900, 944,
+ 652, 996, 620, 900, 424, 652, 944, 620,
+ 652, 996, 652, 608, 532, 400, 424, 884,
+ 500, 620, 468, 468, 792, 856, 620, 412,
+ 324, 292, 412, 412, 324, 412, 788, 468,
+ 620, 856, 620, 792, 620, 928, 928, 468,
+ 620, 792, 816, 620, 792, 816, 788, 412,
+ 944, 380, 500, 468, 468, 620, 816, 500,
+ 476, 424, 868, 412, 468, 928, 620, 468,
+ 816, 412, 468, 928, 468, 816, 804, 368,
+ 712, 228, 992, 996, 384, 1016, 976, 996,
+ 996, 976, 992, 1016, 228, 652, 372, 512,
+ 928, 816, 1016, 500, 992, 1016, 1016, 652,
+ 1016, 976, 928, 976, 772, 816, 740, 928,
+ 816, 1016, 424, 324, 200, 992, 228, 500,
+ 372, 868, 928, 976, 372, 976, 392, 976,
+ 424, 368, 372, 324, 468, 352, 380, 468,
+ 976, 976, 468, 976, 792, 964, 620, 380,
+ 976, 724, 388, 788, 652, 368, 756, 620,
+ 976, 976, 868, 756, 368, 380, 620, 900,
+ 928, 620, 868, 868, 380, 620, 976, 500,
+ 512, 424, 792, 756, 792, 772, 772, 424,
+ 652, 772, 900, 868, 872, 868, 868, 620,
+ 380, 308, 996, 468, 900, 868, 468, 900,
+ 868, 308, 368, 468, 468, 788, 368, 468,
+ 976, 468, 252, 1004, 468, 792, 880, 788,
+ 608, 928, 424, 484, 512, 880, 880, 664,
+ 880, 424, 1016, 976, 996, 880, 308, 424,
+ 392, 308, 368, 516, 868, 368, 868, 388,
+ 424, 976, 388, 996, 812, 1016, 868, 772,
+ 388, 1016, 1016, 1016, 772, 516, 868, 796,
+ 660, 1012, 656, 820, 776, 716, 384, 852,
+ 416, 240, 536, 536, 328, 240, 416, 516,
+ 364, 416, 424, 880, 416, 240, 1000, 852,
+ 536, 364, 428, 152, 852, 208, 416, 716,
+ 928, 980, 716, 900, 868, 416, 716, 980,
+ 964, 608, 1004, 900, 852, 716, 416, 980,
+ 716, 428, 152, 212, 384, 416, 384, 416,
+ 416, 900, 428, 852, 384, 868, 964, 852,
+ 328, 384, 416, 428, 428, 416, 428, 964,
+ 384, 416, 428, 836, 484, 392, 164, 852,
+ 836, 852, 868, 852, 416, 716, 716, 852,
+ 428, 716, 980, 516, 208, 980, 416, 416,
+ 880, 416, 392, 776, 840, 868, 980, 840,
+ 516, 548, 536, 416, 240, 548, 416, 840,
+ 980, 776, 740, 548, 516, 840, 196, 240,
+ 840, 516, 240, 244, 868, 516, 536, 840,
+ 196, 852, 820, 820, 356, 852, 384, 212,
+ 852, 852, 852, 716, 980, 840, 564, 516,
+ 868, 912, 516, 196, 656, 208, 144, 576,
+ 164, 548, 948, 980, 964, 980, 208, 860,
+ 392, 980, 860, 392, 980, 656, 860, 1020,
+ 860, 1020, 364, 980, 1020, 868, 980, 860,
+ 980, 240, 716, 716, 656, 716, 716, 980,
+ 840, 208, 240, 240, 980, 240, 656, 392,
+ 980, 656, 392, 364, 656, 860, 860, 732,
+ 656, 540, 96, 1012, 820, 316, 676, 676,
+ 676, 812, 820, 196, 812, 820, 964, 820,
+ 508, 572, 1012, 516, 676, 1012, 572, 676,
+ 820, 356, 852, 508, 508, 880, 820, 852,
+ 836, 1016, 1012, 852, 1016, 572, 676, 144,
+ 964, 252, 724, 96, 572, 960, 852, 128,
+ 572, 676, 676, 728, 960, 728, 572, 540,
+ 676, 852, 96, 852, 152, 428, 428, 852,
+ 152, 428, 816, 816, 428, 724, 960, 820,
+ 428, 356, 540, 700, 852, 540, 728, 792,
+ 428, 540, 716, 700, 716, 728, 540, 716,
+ 816, 960, 852, 716, 804, 852, 128, 980,
+ 716, 572, 96, 428, 804, 152, 428, 724,
+ 428, 572, 572, 572, 716, 816, 572, 716,
+ 700, 716, 980, 960, 152, 128, 696, 852,
+ 572, 804, 852, 208, 572, 1012, 144, 656,
+ 860, 804, 656, 804, 456, 1012, 696, 1012,
+ 508, 572, 656, 656, 572, 656, 696, 508,
+ 1012, 1012, 144, 948, 980, 572, 456, 572,
+ 716, 960, 656, 608, 816, 816, 716, 804,
+ 276, 208, 656, 980, 572, 816, 1012, 732,
+ 852, 144, 676, 96, 852, 144, 316, 820,
+ 732, 676, 696, 820, 852, 724, 732, 676,
+ 632, 928, 848, 848, 820, 732, 1012, 764,
+ 144, 816, 928, 860, 764, 848, 848, 1012,
+ 816, 792, 732, 460, 1012, 804, 700, 764,
+ 376, 1012, 732, 928, 732, 732, 820, 376,
+ 1012, 1012, 804, 732, 848, 376, 316, 376,
+ 732, 700, 816, 732, 764, 792, 704, 808,
+ 384, 716, 504, 416, 840, 568, 212, 416,
+ 928, 428, 848, 416, 240, 504, 568, 660,
+ 840, 840, 840, 568, 660, 840, 804, 660,
+ 848, 804, 568, 660, 456, 848, 576, 848,
+ 804, 848, 656, 716, 784, 804, 456, 716,
+ 840, 364, 364, 980, 840, 420, 804, 816,
+ 840, 660, 716, 848, 848, 716, 980, 816,
+ 840, 848, 848, 820, 536, 568, 240, 416,
+ 384, 536, 568, 848, 696, 568, 848, 696,
+ 536, 568, 840, 276, 568, 276, 840, 264,
+ 848, 696, 248, 416, 840, 536, 568, 568,
+ 848, 840, 696, 536, 656, 744, 860, 808,
+ 992, 840, 992, 808, 816, 840, 808, 364,
+ 848, 808, 860, 860, 808, 744, 808, 792,
+ 656, 808, 808, 840, 920, 920, 860, 840,
+ 656, 808, 808, 240, 476, 960, 456, 808,
+ 516, 456, 808, 656, 456, 860, 364, 808,
+ 516, 456, 656, 860, 920, 920, 860, 920,
+ 196, 660, 840, 808, 744, 600, 296, 568,
+ 808, 808, 624, 808, 724, 568, 624, 808,
+ 456, 264, 364, 364, 600, 244, 196, 456,
+ 624, 808, 724, 600, 992, 536, 568, 608,
+ 960, 516, 808, 804, 728, 568, 808, 580,
+ 516, 840, 580, 808, 536, 568, 580, 516,
+ 452, 456, 364, 664, 456, 752, 600, 752,
+ 580, 980, 660, 296, 752, 624, 580, 808,
+ 660, 656, 548, 840, 660, 656, 660, 580,
+ 752, 808, 656, 840, 580, 548, 840, 516,
+ 296, 572, 356, 704, 676, 540, 96, 604,
+ 96, 540, 604, 604, 540, 604, 548, 160,
+ 316, 676, 820, 508, 604, 1012, 704, 704,
+ 1012, 704, 604, 704, 752, 820, 580, 72,
+ 504, 820, 508, 268, 356, 548, 604, 704,
+ 356, 604, 604, 936, 936, 704, 516, 936,
+ 604, 820, 580, 516, 428, 820, 212, 384,
+ 568, 568, 568, 384, 820, 540, 660, 716,
+ 212, 356, 428, 504, 504, 504, 428, 356,
+ 504, 456, 580, 356, 504, 196, 716, 504,
+ 716, 516, 716, 504, 660, 840, 660, 716,
+ 540, 356, 504, 604, 660, 604, 752, 660,
+ 604, 548, 504, 604, 508, 540, 728, 548,
+ 716, 580, 540, 456, 580, 604, 540, 660,
+ 456, 196, 716, 660, 604, 660, 608, 728,
+ 728, 1012, 716, 840, 508, 572, 580, 604,
+ 572, 604, 516, 364, 604, 660, 960, 572,
+ 656, 660, 696, 276, 660, 960, 656, 660,
+ 564, 696, 580, 716, 696, 660, 476, 580,
+ 456, 716, 580, 508, 1012, 696, 656, 604,
+ 656, 572, 848, 248, 656, 364, 628, 364,
+ 656, 628, 604, 248, 1012, 628, 660, 296,
+ 820, 568, 240, 608, 848, 848, 356, 504,
+ 456, 568, 568, 820, 820, 508, 600, 504,
+ 268, 568, 296, 356, 820, 936, 820, 456,
+ 936, 820, 356, 936, 248, 820, 568, 580,
+ 504, 268, 296, 568, 624, 624, 568, 624,
+ 276, 568, 296, 564, 364, 728, 504, 568,
+ 636, 820, 600, 936, 508, 356, 504, 960,
+ 604, 504, 696, 508, 580, 696, 820, 936,
+ 264, 636, 580, 604, 704, 936, 220, 704,
+ 960, 728, 580, 508, 296, 840, 504, 240,
+ 580, 220, 568, 504, 660, 728, 132, 576,
+ 364, 248, 568, 752, 660, 624, 660, 804,
+ 660, 752, 624, 752, 660, 660, 920, 508,
+ 516, 516, 516, 660, 604, 504, 508, 940,
+ 940, 716, 880, 516, 660, 508, 364, 660,
+ 604, 940, 628, 660, 656, 628, 628, 656,
+ 872, 880, 516, 660, 940, 516, 656, 660,
+ 660, 508, 796, 644, 556, 404, 284, 432,
+ 48, 492, 588, 588, 492, 492, 284, 432,
+ 492, 364, 492, 432, 588, 588, 252, 432,
+ 404, 284, 460, 588, 588, 460, 252, 516,
+ 460, 460, 432, 460, 432, 460, 588, 364,
+ 460, 192, 752, 588, 32, 48, 472, 48,
+ 172, 472, 472, 172, 172, 460, 588, 48,
+ 316, 556, 316, 556, 556, 928, 460, 424,
+ 172, 316, 284, 892, 524, 344, 524, 1000,
+ 588, 892, 284, 492, 644, 472, 892, 892,
+ 892, 524, 588, 644, 644, 588, 644, 928,
+ 644, 252, 892, 892, 492, 524, 456, 928,
+ 472, 828, 172, 492, 952, 32, 48, 48,
+ 952, 492, 952, 172, 48, 456, 556, 364,
+ 952, 172, 444, 928, 556, 444, 952, 444,
+ 684, 684, 444, 796, 952, 952, 952, 456,
+ 492, 920, 404, 432, 828, 828, 432, 796,
+ 952, 432, 492, 828, 828, 492, 364, 252,
+ 952, 816, 492, 952, 456, 828, 920, 252,
+ 952, 952, 828, 920, 952, 1000, 492, 444,
+ 892, 644, 32, 472, 516, 952, 472, 952,
+ 972, 1000, 600, 892, 644, 892, 472, 600,
+ 684, 952, 952, 600, 684, 744, 972, 952,
+ 744, 516, 752, 684, 580, 744, 892, 516,
+ 892, 920, 364, 920, 972, 220, 892, 600,
+ 556, 432, 764, 376, 404, 404, 972, 376,
+ 404, 764, 764, 764, 404, 828, 376, 432,
+ 432, 1012, 376, 764, 256, 828, 736, 920,
+ 828, 920, 248, 764, 972, 920, 764, 376,
+ 736, 828, 220, 1012, 580, 828, 1012, 316,
+ 432, 248, 556, 432, 460, 376, 556, 364,
+ 820, 556, 820, 460, 432, 752, 460, 432,
+ 376, 828, 1000, 556, 784, 972, 752, 1012,
+ 828, 220, 556, 816, 556, 848, 816, 704,
+ 600, 624, 172, 296, 444, 628, 684, 796,
+ 968, 968, 796, 684, 796, 968, 816, 364,
+ 684, 796, 968, 1000, 516, 444, 684, 628,
+ 796, 796, 456, 684, 796, 848, 684, 828,
+ 556, 444, 796, 968, 456, 632, 364, 516,
+ 556, 1000, 796, 828, 952, 968, 684, 796,
+ 248, 684, 784, 1000, 1000, 796, 968, 248,
+ 684, 796, 952, 1000, 796, 972, 1000, 828,
+ 248, 952, 508, 920, 624, 748, 512, 192,
+ 816, 580, 628, 684, 796, 684, 928, 728,
+ 796, 920, 796, 920, 920, 628, 656, 920,
+ 868, 656, 628, 796, 920, 972, 796, 920,
+ 844, 656, 784, 972, 828, 972, 796, 828,
+ 920, 844, 748, 844, 828, 920, 784, 748,
+ 664, 748, 1000, 684, 296, 600, 912, 888,
+ 84, 624, 624, 748, 600, 784, 940, 656,
+ 600, 808, 624, 684, 940, 684, 940, 784,
+ 744, 808, 880, 880, 920, 808, 684, 624,
+ 744, 364, 940, 744, 940, 972, 684, 744,
+ 940, 784, 828, 936, 556, 444, 556, 820,
+ 704, 820, 968, 704, 444, 556, 512, 784,
+ 940, 796, 968, 192, 556, 452, 940, 752,
+ 912, 880, 1000, 704, 940, 940, 936, 628,
+ 508, 628, 296, 660, 912, 628, 912, 660,
+ 784, 820, 444, 968, 296, 936, 628, 628,
+ 268, 604, 628, 936, 936, 936, 912, 604,
+ 628, 912, 784, 628, 784, 912, 296, 936,
+ 628, 796, 476, 912, 508, 628, 796, 784,
+ 936, 476, 936, 628, 796, 940, 968, 604,
+ 628, 704, 796, 752, 844, 796, 844, 972,
+ 796, 704, 72, 784, 940, 628, 608, 784,
+ 752, 452, 940, 784, 796, 936, 752, 968,
+ 936, 548, 784, 444, 796, 784, 968, 752,
+ 936, 752, 548, 508, 820, 100, 784, 936,
+ 752, 820, 548, 72, 704, 820, 796, 1012,
+ 508, 628, 656, 844, 972, 476, 628, 920,
+ 100, 656, 784, 656, 1012, 880, 628, 1012,
+ 628, 796, 564, 748, 720, 828, 720, 424,
+ 796, 920, 828, 828, 1000, 628, 796, 192,
+ 972, 796, 424, 912, 820, 628, 968, 556,
+ 1012, 940, 820, 1012, 912, 912, 820, 704,
+ 704, 968, 556, 828, 880, 968, 556, 796,
+ 828, 912, 796, 880, 720, 704, 1012, 796,
+ 828, 692, 968, 828, 720, 828, 940, 704,
+ 628, 720, 664, 880, 424, 704, 512, 880,
+ 424, 796, 880, 720, 584, 456, 476, 544,
+ 932, 564, 772, 372, 264, 244, 312, 148,
+ 280, 340, 824, 824, 340, 824, 880, 280,
+ 340, 824, 880, 664, 252, 880, 312, 148,
+ 192, 880, 720, 824, 1000, 264, 824, 180,
+ 452, 824, 180, 312, 312, 180, 452, 252,
+ 392, 340, 252, 880, 244, 264, 340, 576,
+ 752, 940, 452, 940, 752, 340, 824, 548,
+ 264, 824, 452, 340, 824, 940, 452, 340,
+ 372, 824, 264, 244, 352, 352, 264, 940,
+ 264, 880, 824, 516, 760, 856, 824, 280,
+ 372, 940, 312, 252, 372, 824, 312, 824,
+ 312, 516, 940, 180, 352, 372, 940, 664,
+ 940, 940, 372, 856, 856, 760, 692, 824,
+ 548, 372, 312, 180, 1016, 772, 372, 264,
+ 904, 564, 652, 312, 280, 340, 340, 340,
+ 340, 548, 1004, 452, 564, 516, 564, 872,
+ 564, 1016, 772, 548, 772, 1016, 516, 164,
+ 904, 148, 340, 872, 872, 340, 872, 692,
+ 872, 904, 340, 1004, 564, 1004, 252, 752,
+ 904, 872, 904, 1004, 692, 548, 1016, 872,
+ 564, 872, 548, 872, 160, 904, 1016, 872,
+ 160, 872, 904, 100, 608, 740, 264, 692,
+ 772, 872, 264, 564, 772, 872, 872, 772,
+ 872, 564, 772, 872, 940, 912, 252, 740,
+ 1000, 1016, 872, 872, 740, 872, 452, 340,
+ 940, 912, 784, 244, 872, 264, 784, 900,
+ 900, 264, 608, 608, 872, 872, 532, 608,
+ 720, 692, 652, 1016, 932, 1004, 760, 856,
+ 720, 720, 280, 1008, 200, 168, 856, 312,
+ 532, 720, 532, 312, 792, 856, 424, 608,
+ 424, 900, 1008, 912, 880, 932, 280, 856,
+ 372, 140, 856, 372, 148, 280, 312, 1004,
+ 312, 1004, 1004, 280, 1004, 900, 564, 720,
+ 912, 280, 312, 692, 720, 312, 372, 880,
+ 312, 856, 912, 856, 880, 932, 632, 1008,
+ 856, 932, 880, 856, 720, 912, 932, 904,
+ 1004, 1016, 1016, 904, 880, 148, 280, 904,
+ 904, 280, 720, 596, 1016, 632, 1016, 932,
+ 904, 904, 932, 932, 964, 1016, 340, 1004,
+ 312, 900, 880, 564, 564, 652, 1004, 1004,
+ 632, 1016, 1004, 1016, 424, 632, 564, 1016,
+ 424, 720, 1016, 824, 340, 964, 280, 532,
+ 856, 392, 400, 880, 904, 400, 904, 720,
+ 856, 400, 532, 544, 532, 544, 544, 792,
+ 932, 544, 400, 1004, 532, 532, 1004, 532,
+ 720, 400, 1004, 544, 424, 904, 880, 1004,
+ 544, 900, 880, 904, 544, 1004, 932, 880,
+ 532, 792, 400, 856, 720, 424, 856, 900,
+ 392, 608, 880, 900, 532, 792, 900, 964,
+ 392, 880, 720, 964, 692, 904, 692, 904,
+ 964, 252, 1004, 904, 340, 392, 532, 544,
+ 632, 632, 544, 632, 880, 532, 544, 632,
+ 692, 912, 692, 164, 692, 512, 532, 544,
+ 632, 900, 868, 532, 544, 632, 720, 720,
+ 632, 720, 544, 720, 596, 564, 1004, 632,
+ 692, 836, 720, 872, 392, 632, 340, 544,
+ 740, 836, 904, 740, 836, 392, 544, 904,
+ 740, 740, 836, 340, 608, 632, 740, 740,
+ 632, 740, 836, 608, 836, 740, 632, 904,
+ 740, 836, 632, 740, 740, 740, 904, 904,
+ 836, 904, 872, 692, 484, 544, 740, 740,
+ 544, 740, 596, 484, 692, 692, 544, 608,
+ 740, 596, 392, 740, 836, 692, 964, 872,
+ 544, 740, 836, 904, 836, 900, 836, 740,
+ 836, 964, 900, 452, 836, 868, 872, 836,
+ 900, 904, 532, 544, 836, 692, 836, 692,
+ 836, 900, 836, 904, 484, 692, 1016, 964,
+ 1016, 836, 164, 964, 836, 692, 1004, 836,
+ 512, 632, 280, 532, 856, 532, 760, 692,
+ 932, 760, 532, 792, 856, 692, 792, 856,
+ 596, 792, 836, 392, 576, 548, 900, 760,
+ 532, 424, 632, 632, 720, 692, 760, 760,
+ 452, 824, 632, 244, 340, 340, 608, 608,
+ 244, 352, 632, 632, 352, 632, 596, 340,
+ 824, 280, 532, 900, 692, 900, 760, 352,
+ 632, 544, 824, 824, 544, 760, 964, 512,
+ 824, 824, 532, 824, 632, 544, 824, 312,
+ 340, 1004, 900, 532, 900, 1004, 532, 792,
+ 544, 824, 1004, 824, 532, 532, 1004, 452,
+ 512, 544, 824, 512, 532, 400, 452, 824,
+ 532, 512, 720, 532, 692, 596, 836, 664,
+ 564, 420, 912, 692, 300, 476, 512, 608,
+ 608, 512, 608, 720, 300, 720, 476, 608,
+ 596, 476, 100, 300, 692, 484, 484, 300,
+ 692, 596, 692, 880, 596, 692, 484, 784,
+ 608, 912, 596, 692, 784, 608, 692, 216,
+ 476, 300, 300, 476, 476, 692, 692, 484,
+ 300, 608, 548, 692, 608, 692, 548, 244,
+ 784, 548, 720, 608, 596, 484, 740, 100,
+ 692, 596, 740, 836, 548, 512, 72, 1016,
+ 596, 740, 836, 692, 740, 740, 692, 836,
+ 596, 596, 608, 632, 692, 836, 632, 596,
+ 692, 740, 596, 608, 548, 548, 608, 164,
+ 548, 596, 632, 596, 632, 740, 548, 692,
+ 544, 608, 692, 692, 512, 912, 160, 596,
+ 692, 912, 164, 596, 912, 692, 596, 548,
+ 608, 632, 692, 720, 912, 596, 692, 548,
+ 224, 692, 692, 632, 720, 548, 548, 720,
+ 692, 692, 632, 608, 632, 300, 912, 836,
+ 632, 912, 692, 632, 420, 484, 100, 300,
+ 160, 100, 300, 476, 548, 1016, 784, 784,
+ 784, 300, 484, 912, 1016, 484, 548, 900,
+ 940, 476, 844, 420, 960, 748, 844, 420,
+ 476, 784, 748, 596, 784, 300, 692, 476,
+ 784, 632, 740, 476, 632, 844, 608, 420,
+ 244, 300, 484, 740, 760, 912, 888, 760,
+ 244, 300, 1016, 564, 216, 484, 1016, 748,
+ 888, 484, 388, 420, 224, 300, 484, 760,
+ 300, 484, 748, 300, 1000, 420, 388, 84,
+ 476, 216, 484, 564, 484,
+};
+
+static encode_aux_nearestmatch _vq_auxn_lsp32_1 = {
+ _vq_ptr0_lsp32_1,
+ _vq_ptr1_lsp32_1,
+ _vq_p_lsp32_1,
+ _vq_q_lsp32_1,
+ 5077, 5077
+};
+
+static static_codebook _vq_book_lsp32_1 = {
+ 4, 256,
+ _vq_lengthlist_lsp32_1,
+ 2, 1603705124, 1582427982, 8, 1,
+ _vq_quantlist_lsp32_1,
+ &_vq_auxn_lsp32_1,
+ NULL,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0_0a.vqh b/include/vorbis/book/res0_0a.vqh
new file mode 100644
index 00000000..d563cf5f
--- /dev/null
+++ b/include/vorbis/book/res0_0a.vqh
@@ -0,0 +1,103 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/vqbuild
+
+ ********************************************************************/
+
+#ifndef _V_res0_0a_VQH_
+#define _V_res0_0a_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_0a[] = {
+ 0,
+ 4,
+ 5,
+ -4,
+ 6,
+ -5,
+ 3,
+ 8,
+ 2,
+ -6,
+ -8,
+ -2,
+ 7,
+ -7,
+ -3,
+ 11,
+ -11,
+ -9,
+ 1,
+ 10,
+ 9,
+ -1,
+ -10,
+ -12,
+ 12,
+ -13,
+ 13,
+ 14,
+ -14,
+};
+
+static long _vq_lengthlist_res0_0a[] = {
+ 2, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6,
+ 6, 6, 6, 6, 6, 6, 7, 8, 9,10,11,12,12,
+};
+
+static long _vq_ptr0_res0_0a[] = {
+ -1, -2, -3, -4, 15, 26, 7, 19,
+ -9, -10, 1, 8, 2, 12, -15, -16,
+ -17, 16, 25, 10, 17, -22, -23, 9,
+ 3, -26, 11, 21,
+};
+
+static long _vq_ptr1_res0_0a[] = {
+ -14, -8, -6, -5, 24, 27, -7, 20,
+ -12, -11, 6, 18, -13, 4, -21, -19,
+ -18, 23, 28, -20, 22, -25, -24, 13,
+ 5, -27, 14, 0,
+};
+
+static long _vq_p_res0_0a[] = {
+ 15, 15, 15, 15, 15, 26, 7, 19,
+ 1, 1, 1, 8, 2, 12, 16, 16,
+ 16, 16, 25, 10, 17, 9, 9, 9,
+ 3, 11, 11, 21,
+};
+
+static long _vq_q_res0_0a[] = {
+ 16, 1, 19, 27, 24, 27, 20, 20,
+ 2, 18, 6, 18, 4, 4, 3, 22,
+ 28, 23, 28, 17, 22, 21, 5, 13,
+ 5, 21, 14, 0,
+};
+
+static encode_aux _vq_aux_res0_0a = {
+ _vq_ptr0_res0_0a,
+ _vq_ptr1_res0_0a,
+ _vq_p_res0_0a,
+ _vq_q_res0_0a,
+ 28, 28
+};
+
+static static_codebook _vq_book_res0_0a = {
+ 1, 29, 1, 1610612736, 1614282752, 4, 0, 1, 1, 4,
+ _vq_quantlist_res0_0a,
+ _vq_lengthlist_res0_0a,
+ &_vq_aux_res0_0a,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0_0b.vqh b/include/vorbis/book/res0_0b.vqh
new file mode 100644
index 00000000..bd8777bd
--- /dev/null
+++ b/include/vorbis/book/res0_0b.vqh
@@ -0,0 +1,184 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/vqbuild
+
+ ********************************************************************/
+
+#ifndef _V_res0_0b_VQH_
+#define _V_res0_0b_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_0b[] = {
+ 0, 0,
+ 4, 0,
+ -4, 0,
+ 0, -3,
+ -7, 0,
+ -5, -7,
+ 0, 4,
+ 0, -7,
+ -4, -4,
+ 8, 0,
+ 0, 7,
+ -4, 3,
+ -8, 6,
+ -8, -7,
+ 5, 5,
+ -7, 4,
+ 3, 5,
+ 7, 8,
+ 5, 2,
+ 4, -5,
+ 3, 3,
+ -2, 6,
+ 4, -2,
+ -8, -4,
+ 2, -4,
+ 8, -6,
+ -8, -6,
+ -5, 6,
+ 8, 3,
+ 9, 8,
+ 4, -8,
+ -2, 9,
+ -7, 7,
+ 7, -8,
+ 5, 9,
+ -5, 9,
+ -7, 8,
+ 9, -8,
+ 7, 6,
+ 7, -4,
+ 6, -9,
+ -9, 4,
+ -9, 0,
+ 7, 5,
+ 5, 7,
+ 5, -7,
+ -4, 6,
+ 3, 7,
+ 9, -3,
+ 5, -4,
+ 6, -2,
+ -7, -9,
+ 2, -8,
+ 9, 5,
+ -9, 9,
+ 3, 9,
+};
+
+static long _vq_lengthlist_res0_0b[] = {
+ 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 8, 8,
+};
+
+static long _vq_ptr0_res0_0b[] = {
+ -1, -2, -3, -4, -5, -6, 21, 46,
+ -9, 6, 0, -12, -13, 31, 21, -16,
+ 31, 35, -19, 54, -21, -22, 12, 15,
+ -25, 32, 27, 54, 35, -30, -31, -32,
+ 1, 20, -35, -36, -37, 14, 16, 18,
+ 20, -42, 18, -44, 18, -46, 43, 53,
+ -49, -50, -51, 29, 38, -54, -55, 14,
+ 38, -58, 17, 34, -61, 16, -63, 55,
+ 47, -66, -67, -68, -69, -70, -71, 4,
+ 42, -74, 15, -76, -77, 3, -79, 1,
+ 22, -82, 2, 9, -85, 3, 42, -88,
+ 4, 23, -91, -92, 5, 7, -95, -96,
+ 13, 5, 5, -100, -101, -102, -103, -104,
+ 30, 19, 19, -108, 7, 24, -111, -112,
+ 33, 40, -115, -116, 45, -118, 33, 37,
+ -121, -122, -123, 39, 45, 45, 48, -128,
+ 1, -130, 22, 49, -133, 48,
+};
+
+static long _vq_ptr1_res0_0b[] = {
+ -65, -29, -18, -11, -8, -7, 11, 11,
+ -10, 11, 11, -15, -14, 10, 10, -17,
+ 46, 46, -24, -20, 11, -23, 41, 41,
+ -27, -26, 11, -28, 36, -48, -41, -34,
+ -33, 0, -40, -39, -38, 20, 20, 20,
+ 6, -43, 9, -45, 28, -47, 28, 28,
+ -60, -53, -52, 53, 53, -57, -56, 44,
+ 44, -59, 44, 44, -62, 10, -64, 10,
+ 10, -99, -84, -75, -73, 11, -72, 23,
+ 23, 41, 11, -81, -78, 0, -80, 0,
+ 0, -10, 11, 50, -90, -86, -87, -89,
+ 8, 8, -94, -93, 8, 8, -98, -97,
+ 51, 51, 26, -114, -110, -107, -106, -105,
+ 52, 52, 45, -109, 52, 52, 37, -113,
+ 45, 45, -127, -120, -117, -119, 25, 25,
+ -126, -125, -124, 25, 25, 49, 25, -132,
+ -129, -131, 50, 50, -83, 50,
+};
+
+static long _vq_p_res0_0b[] = {
+ 110, 24, 92, 12, 42, 42, 42, 92,
+ 12, 12, 0, 42, 62, 62, 42, 62,
+ 62, 70, 24, 108, 30, 24, 24, 30,
+ 64, 64, 54, 108, 70, 36, 2, 2,
+ 2, 40, 32, 28, 28, 28, 32, 36,
+ 40, 18, 36, 36, 36, 86, 86, 106,
+ 28, 58, 58, 58, 76, 28, 28, 28,
+ 76, 34, 34, 68, 32, 32, 110, 110,
+ 94, 6, 4, 8, 8, 8, 8, 8,
+ 84, 30, 30, 6, 6, 6, 2, 2,
+ 44, 4, 4, 18, 6, 6, 84, 8,
+ 8, 46, 16, 10, 10, 14, 26, 26,
+ 26, 10, 10, 38, 60, 38, 60, 60,
+ 60, 38, 38, 14, 14, 48, 66, 66,
+ 66, 80, 78, 66, 90, 66, 66, 74,
+ 78, 78, 78, 78, 90, 90, 96, 2,
+ 2, 44, 44, 98, 96, 96,
+};
+
+static long _vq_q_res0_0b[] = {
+ 14, 106, 54, 20, 12, 92, 22, 22,
+ 0, 22, 22, 92, 42, 20, 20, 70,
+ 92, 92, 64, 24, 22, 30, 82, 82,
+ 72, 54, 22, 72, 72, 68, 18, 36,
+ 40, 0, 12, 36, 32, 40, 40, 40,
+ 12, 56, 18, 86, 56, 106, 56, 56,
+ 32, 34, 76, 106, 106, 68, 76, 88,
+ 88, 68, 88, 88, 94, 20, 94, 20,
+ 20, 48, 16, 4, 30, 22, 84, 46,
+ 46, 82, 22, 4, 44, 0, 44, 0,
+ 0, 0, 22, 100, 14, 16, 46, 46,
+ 16, 16, 52, 14, 16, 16, 52, 10,
+ 102, 102, 52, 98, 80, 48, 90, 38,
+ 104, 104, 90, 48, 104, 104, 74, 80,
+ 90, 90, 100, 78, 50, 74, 50, 50,
+ 96, 98, 90, 50, 50, 98, 50, 18,
+ 44, 98, 100, 100, 18, 100,
+};
+
+static encode_aux _vq_aux_res0_0b = {
+ _vq_ptr0_res0_0b,
+ _vq_ptr1_res0_0b,
+ _vq_p_res0_0b,
+ _vq_q_res0_0b,
+ 134, 134
+};
+
+static static_codebook _vq_book_res0_0b = {
+ 2, 56, 1, 1610612736, 1614282752, 4, 0, 1, 1, 4,
+ _vq_quantlist_res0_0b,
+ _vq_lengthlist_res0_0b,
+ &_vq_aux_res0_0b,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0_0c.vqh b/include/vorbis/book/res0_0c.vqh
new file mode 100644
index 00000000..150293ac
--- /dev/null
+++ b/include/vorbis/book/res0_0c.vqh
@@ -0,0 +1,2752 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/vqbuild
+
+ ********************************************************************/
+
+#ifndef _V_res0_0c_VQH_
+#define _V_res0_0c_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_0c[] = {
+ 0, 0, 0, 0,
+ 0, 5, 0, 0,
+ 0, -1, -3, 0,
+ 0, 0, 0, 5,
+ 5, 0, 0, 0,
+ -5, 0, 0, 0,
+ 0, 5, 0, 5,
+ -4, 0, 0, -4,
+ 0, -3, 4, 0,
+ -3, 3, 1, 0,
+ 0, 1, -6, 0,
+ 3, 4, 0, 0,
+ -1, 0, 2, 3,
+ 0, -4, 0, -5,
+ 2, 0, 0, -4,
+ 0, 4, 4, 0,
+ 0, 5, -4, 0,
+ 3, -4, 0, 0,
+ 0, -5, 0, 1,
+ 0, 0, -3, -4,
+ -1, 0, 4, -3,
+ 0, 0, -5, 3,
+ 0, 0, 4, 0,
+ 3, 0, 4, 0,
+ -3, 0, -5, 0,
+ -5, 0, 2, 0,
+ -5, 0, 0, 3,
+ 1, 1, -1, 0,
+ 1, -5, 0, 5,
+ -1, 3, 0, -3,
+ 4, 0, 0, 5,
+ 4, 0, -5, 0,
+ 0, 0, 0, -6,
+ 0, -5, 5, -3,
+ 0, -3, 0, -2,
+ -3, -4, 0, 0,
+ 5, 4, 4, 0,
+ -3, 0, -3, 3,
+ -3, -1, 4, -6,
+ 3, -2, -3, 2,
+ -2, 3, -3, 2,
+ 5, 0, -1, -7,
+ 4, 5, 1, -3,
+ 5, 7, -1, 0,
+ -4, -6, 5, -5,
+ -5, 3, -1, -3,
+ 6, -4, 4, 0,
+ 5, 5, 4, 3,
+ -4, -7, 3, 0,
+ 0, 5, 6, -4,
+ 0, 3, -5, 5,
+ -6, 4, 4, -5,
+ 0, 0, -6, -4,
+ 0, 3, -6, -4,
+ 5, 4, 1, 5,
+ 2, 5, 3, 4,
+ 2, 5, -1, 5,
+ -6, -3, 4, -2,
+ -7, -7, 0, 0,
+ 4, -5, 6, -3,
+ 5, 5, 1, -6,
+ 4, -5, 0, -5,
+ -3, -3, 6, 0,
+ -5, -3, -3, 1,
+ -4, 0, 6, 0,
+ -3, 4, 6, -2,
+ -6, 0, -2, 6,
+ 0, 4, -3, -5,
+ 1, -4, 4, -6,
+ 4, 3, 5, -5,
+ -2, 5, -6, -4,
+ 4, -4, 6, 0,
+ 1, 8, 1, 0,
+ -4, -6, 1, 3,
+ 0, -7, 6, 0,
+ 7, 0, 0, -5,
+ -4, 0, -6, 5,
+ -6, -6, 5, 0,
+ -3, -3, 6, -3,
+ 3, -4, 3, 5,
+ 0, 3, 4, 6,
+ -6, -5, 1, 4,
+ 4, -5, -4, 4,
+ 5, -4, -3, -1,
+ -5, 4, -2, 5,
+ 6, 0, 3, -5,
+ -5, -3, 4, 2,
+ 5, 0, -4, -3,
+ 0, 4, 6, 3,
+ 0, 3, 3, -3,
+ 0, -4, -6, 0,
+ -5, -6, -5, 3,
+ 5, 2, 3, 3,
+ 6, 0, 4, 0,
+ 4, -6, 3, -4,
+ 5, -7, 4, 0,
+ 4, 4, 5, 6,
+ 0, 0, 5, 5,
+ 4, 0, -5, 5,
+ -7, 0, -4, 0,
+ 0, -5, -5, 3,
+ -5, 6, 0, -1,
+ -5, 0, 4, 5,
+ 6, -4, -5, 0,
+ 4, 3, -4, 0,
+ 5, 0, 6, -4,
+ 4, 0, -6, -5,
+ 3, 0, 4, 4,
+ -4, -5, -1, 6,
+ 7, -5, 0, 5,
+ 5, -2, 0, 2,
+ 0, -3, -5, 5,
+ -2, 6, -5, 5,
+ 6, -4, 0, -4,
+ 6, -4, 4, -6,
+ -4, 2, 6, -6,
+ 0, -6, 4, 3,
+ -6, 4, 5, 0,
+ -5, 4, -5, -1,
+ 6, 0, 5, 5,
+ 5, 5, 5, -3,
+ 4, 4, -3, -3,
+ -6, 4, -3, 0,
+ 5, 5, 0, 3,
+ 0, 5, 0, -5,
+ -2, -2, 0, 5,
+ 1, 0, 7, 0,
+ 0, 6, 7, 0,
+ -4, -4, -3, -4,
+ 5, 7, 5, 0,
+ 0, -5, -3, -4,
+ 7, -5, 0, 0,
+ 1, 0, 6, -6,
+ -5, 4, -6, 3,
+ -3, 6, 3, -4,
+ 5, 0, -2, 0,
+ 8, 4, -1, 0,
+ -8, 6, 0, 1,
+ -3, 4, 0, 5,
+ 4, 4, 6, 1,
+ 2, -4, -4, 0,
+ -4, 0, -6, -6,
+ 5, 3, -4, -5,
+ 6, -4, -4, -5,
+ -4, -6, 1, -3,
+ -7, 5, 0, -5,
+ 0, -3, 5, 5,
+ -4, -4, 5, 5,
+ -6, 0, 4, -4,
+ -6, 0, -1, -7,
+ 0, -7, -1, -1,
+ -4, -4, -6, 0,
+ 3, -4, -6, -4,
+ 2, 0, 2, -2,
+ -3, 4, 0, 2,
+ -5, -4, 0, -6,
+ -5, -4, 3, -6,
+ -3, -3, -5, 5,
+ -5, -6, -3, 0,
+ 7, 0, 0, 8,
+ 0, -6, 6, 6,
+ 3, -7, -6, 0,
+ 4, -6, -4, -4,
+ -3, 0, 6, 3,
+ -1, -3, -4, -7,
+ 0, -4, 7, 2,
+ 4, 3, -2, 6,
+ -6, -4, -5, 5,
+ 5, -7, 0, 4,
+ -8, 0, 0, -3,
+ 5, -7, -4, 0,
+ 3, 6, -5, 5,
+ 3, 5, -3, 2,
+ -6, -5, -1, 6,
+ -3, 2, 4, 3,
+ -6, 0, 5, 4,
+ -6, 5, 3, 4,
+ -5, 3, 5, 3,
+ -8, 0, 0, 5,
+ -6, -4, -4, -6,
+ -4, 7, 3, 1,
+ 4, -4, 7, 3,
+ 3, 3, -6, 5,
+ -7, 4, 3, -2,
+ -1, -4, -6, -4,
+ -6, 7, -3, 1,
+ -4, 6, 6, 0,
+ -5, 4, 5, 6,
+ 4, -2, 4, 3,
+ 6, 6, -5, 3,
+ 8, 0, -3, 3,
+ -8, 1, -3, -5,
+ 8, 0, -3, -7,
+ 3, -4, -4, -6,
+ 4, 0, 4, 8,
+ -3, 0, 6, 7,
+ 5, -4, -6, 4,
+ 7, -4, -2, 4,
+ 7, -4, 4, 5,
+ -5, -4, -5, -2,
+ 3, 5, -7, 0,
+ 4, 8, -5, 0,
+ 3, -3, 6, 4,
+ 0, 7, 6, 4,
+ -1, 7, -2, -2,
+ 5, 3, -6, -1,
+ -5, -1, -3, -3,
+ -5, 1, -4, -3,
+ 0, -5, -4, 6,
+ 4, -7, 4, 4,
+ 5, 4, -5, 5,
+ 2, 6, -5, -3,
+ 3, -4, -5, 7,
+ 7, 4, 0, -3,
+ 6, 4, -3, -3,
+ -4, 5, -3, 2,
+ 0, 5, -8, 3,
+ -1, 8, -6, 0,
+ 7, 2, 0, 6,
+ -6, 2, 1, 6,
+ 1, -2, 0, 8,
+ -3, 8, -1, 3,
+ 7, -8, 0, -1,
+ 1, 4, 4, -7,
+ 4, 4, -6, -5,
+ -4, -5, -6, -5,
+ 5, -1, -6, 3,
+ 6, 6, -5, -3,
+ 6, 3, -4, 3,
+ -4, -1, -6, -4,
+ -3, 6, 4, 5,
+ -7, -6, 4, 3,
+ 0, -6, -7, -5,
+ -4, 3, 0, -7,
+ -3, -7, -3, -4,
+ -7, 4, -3, 6,
+ -3, -3, 2, 6,
+ -6, 4, -4, -6,
+ -5, 4, -6, -5,
+ -4, 6, -3, -5,
+ -8, -4, 0, -3,
+ -1, -8, -7, 0,
+ -7, -8, -3, 0,
+ -8, -1, 4, 6,
+ -7, 8, -4, -2,
+ -5, 6, 6, 4,
+ -8, -5, -1, 6,
+ 6, 6, 5, 5,
+ 4, -7, -6, 4,
+ 8, -3, -4, -2,
+ 6, -4, -4, 7,
+ 8, 4, 3, 6,
+ 8, 7, 2, -3,
+ -5, -7, -6, -3,
+ -7, -6, -3, -3,
+ 0, -8, -5, 4,
+};
+
+static long _vq_lengthlist_res0_0c[] = {
+ 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+};
+
+static long _vq_ptr0_res0_0c[] = {
+ -1, -2, -3, -4, -5, -6, -7, -8,
+ -9, -10, -11, 55, -13, 6, -15, 55,
+ 72, -18, -19, 43, 11, -22, -23, 54,
+ 55, -26, -27, -28, 55, 11, -31, 56,
+ -33, 56, 190, -36, -37, -38, -39, -40,
+ -41, 47, 247, -44, 55, -46, 203, -34,
+ -15, 197, -51, 72, -53, 72, 43, 55,
+ -57, -58, -59, 54, 247, -62, -63, -64,
+ -65, -66, 36, 252, 129, -70, 43, 190,
+ -73, -74, -75, -76, 36, 93, -79, -80,
+ 11, -82, -83, -84, -85, 47, -71, -86,
+ 92, -90, -91, 54, 123, 92, 123, -96,
+ -97, -98, -99, -100, -13, 131, 113, -104,
+ 1, 72, 112, -108, -109, -110, -111, 1,
+ 16, 172, -105, -102, -18, 253, 110, -118,
+ -121, 6, 56, -124, -80, 17, 27, 172,
+ -129, -130, -131, -132, -133, -134, 6, -136,
+ -137, 54, -125, 55, -141, -142, -143, 55,
+ 92, 107, -147, 27, -149, 6, -151, 166,
+ -153, 56, 30, -156, 6, -158, -159, 54,
+ -33, -138, -163, -164, 11, 123, 27, -168,
+ -169, 159, -171, 166, -173, 159, -175, -176,
+ -159, -161, 218, -180, 194, 92, -183, -184,
+ -185, 80, 110, 54, 96, 92, 194, 80,
+ 96, -194, -195, -196, -197, 55, 11, 11,
+ -29, 83, -203, -204, 36, 23, -207, -76,
+ -201, -208, -211, 23, 17, -214, -124, 234,
+ -212, -216, -219, -220, 11, 27, 23, -211,
+ 87, 92, -227, -228, -229, 36, -231, -232,
+ 47, 129, 247, -236, -237, -238, -15, -224,
+ 88, 80, 15, 88, -245, -246, -247, -248,
+ -232, 249, 203, -252, -232, -201, -253, -256,
+ 96, -258, -259, -260, 55, 96, 96, -264,
+ -265, -15, 31, 103, -269, -243, -267, 83,
+ -256, -271, -275, -59, -273, 55, -279, -280,
+ -281, -229, -276, -284, 92, 36, -287, -288,
+ -289, 23, 107, -292, 92, -294, 92, -296,
+ -297, -298, -299, -300, -301, 47, 54, -304,
+ -84, -4670, -282, -306, -309, 96, 162, -312,
+ -91, 162, 249, -305, -314, 83, 113, -320,
+ -321, -91, 249, 83, -325, -88, 249, 119,
+ -309, 75, -329, -277, -330, -334, -292, -332,
+ 119, -256, -335, -340, 194, -338, -343, -277,
+ 110, -346, -256, 197, 168, -290, -348, 83,
+ -353, -354, 80, -356, 96, -358, -359, 96,
+ 107, 194, -363, -364, -365, -366, -367, -368,
+ -369, -370, 42, -372, 60, -374, -375, -376,
+ 42, 69, 69, -380, -381, -382, 49, -377,
+ 17, 120, -387, 69, 89, 132, -391, -392,
+ -393, -394, 49, 72, -397, 15, -399, -400,
+ 42, -402, 49, -384, 49, -406, -407, -408,
+ -409, -410, 42, -403, -411, -414, -415, -416,
+ -417, 36, 196, 127, -421, 42, 120, -424,
+ -425, -410, 170, -426, -429, 120, 197, -432,
+ 60, 196, -435, -436, -437, -438, 36, -433,
+ 15, 82, -443, -444, 1, 15, -20, -441,
+ -447, -450, -451, 15, -453, -454, 15, -426,
+ -457, -454, -455, -458, -461, 127, 170, -464,
+ -51, 170, 127, -468, -250, 170, 168, -470,
+ -473, -474, -475, -476, -477, -478, -479, 36,
+ 42, 36, 36, -229, -471, -484, -487, 85,
+ 93, -490, -491, -492, -493, -494, -480, -485,
+ 83, -498, 60, 103, -501, 42, -487, 83,
+ -505, -506, -410, -503, 213, -429, 170, -510,
+ -513, -514, 60, -511, -517, 85, 105, -515,
+ -521, -522, -523, -524, -525, -526, 69, 105,
+ -529, 85, -310, -532, 69, 85, -535, 93,
+ -537, -538, -539, -540, -229, -530, 93, 93,
+ -545, -546, -289, 140, 126, -542, 17, 93,
+ 105, -554, -555, 69, -550, -558, 105, 120,
+ -561, -378, 170, 36, 89, 93, 105, -568,
+ -80, -562, -220, -569, 168, -574, 14, 69,
+ -572, -578, -579, -580, -581, -582, 42, -444,
+ -576, -586, -587, 1, 204, -590, 72, 103,
+ -593, -594, -376, 161, 124, -382, -595, 89,
+ 124, -602, 49, 72, -605, -606, -607, -608,
+ -609, -400, -598, -610, -613, 14, -378, -611,
+ -617, -618, 42, 14, -621, -376, -615, -599,
+ -622, -624, -627, -377, 140, 85, 132, -632,
+ -633, -634, -372, 31, -377, -635, 103, -640,
+ 14, -642, 124, -644, -645, -646, 41, -638,
+ 60, 60, -651, 14, -647, -654, -655, -656,
+ -657, 42, -659, 11, 124, -662, 14, 27,
+ -220, 2, -221, 83, 4, -670, -671, -672,
+ -673, -674, -675, 67, -677, -678, -679, 53,
+ 211, -682, 67, -667, -685, 67, 70, -688,
+ 53, 67, 53, 16, 27, -694, -695, -696,
+ -697, -698, 14, 67, -699, 162, -646, -701,
+ 67, -706, -707, -708, 41, -710, 14, 19,
+ 87, 121, -715, -716, 41, -718, 41, 106,
+ 19, -722, -723, -724, 52, 87, -720, -703,
+ -729, 53, -731, 53, -733, 19, -735, -736,
+ 53, 67, -739, 53, 106, -742, 53, 205,
+ -678, -315, -727, 106, 121, -737, -747, -752,
+ -725, 52, -755, 87, -753, -758, 205, -756,
+ -761, -762, 53, -764, -765, 52, 10, 2,
+ -769, 104, -771, -772, -773, -774, 14, -759,
+ -777, 19, 87, -780, -767, 232, 27, -224,
+ 193, -784, -787, -788, -224, 193, 104, -789,
+ 205, -794, -769, 130, 205, -795, -799, -800,
+ -801, -802, -803, -804, -805, -506, -978, 161,
+ -807, -70, -808, 90, 161, -814, 11, 213,
+ -432, -812, -817, 93, -80, -818, 136, 135,
+ -825, -826, -827, -828, 41, 130, -828, 130,
+ -833, 41, 75, -836, -480, 162, 14, -498,
+ -837, -842, -843, -844, 75, 213, -840, -487,
+ -846, -850, -851, -852, -853, 42, -855, 43,
+ 121, -858, -859, 60, -831, 121, 211, 14,
+ -588, -550, -867, -675, -840, 121, -871, 211,
+ -868, -874, -875, 14, -877, -878, 11, 170,
+ 27, 214, 135, -884, -885, -886, -887, -888,
+ -889, -716, 162, 87, -893, 75, 162, -755,
+ -894, 192, 162, -900, -901, 75, -903, 87,
+ -905, -906, 87, -908, 190, -898, -911, -912,
+ 14, -914, -915, -224, 161, 104, -755, -916,
+ -919, 104, -920, -924, -925, 67, 121, -718,
+ -922, 60, -931, -932, -859, -928, -935, -936,
+ 75, 213, 192, -933, -941, -942, -718, -939,
+ 234, -946, 75, -944, -949, -929, 130, -950,
+ 214, -954, -955, -956, 104, 205, -959, 214,
+ -961, -962, -737, 150, 211, -966, -862, 130,
+ 224, -970, -971, -972, 205, 214, -975, 121,
+ -967, -757, -1936, 90, -979, -982, -713, -980,
+ 227, -986, 224, -983, -989, -990, -991, -992,
+ -993, 50, 21, -996, -997, 10, 104, -1000,
+ -1001, 172, 16, -987, -1005, -1006, -1007, -1008,
+ -1009, 10, 104, 21, 13, -1001, 130, 182,
+ 172, -1018, -1019, 182, 2, 200, -1023, -1024,
+ 104, -1020, 2, 19, -1029, -1030, -1031, -1032,
+ -1033, 171, -1035, 172, 200, 217, -1039, -1040,
+ 50, 16, -1043, -1044, -1045, -1046, 50, 182,
+ 172, -1050, -1051, 171, -1027, 172, -1055, -1051,
+ 150, 200, -1059, 172, -1061, 16, -1014, -1064,
+ 16, 112, -1067, -1053, 13, -1070, -1059, -1068,
+ 189, -1071, -1075, -1076, 189, -1073, 200, 232,
+ -1081, -1082, -1083, -1084, -1085, 53, 200, 130,
+ -1089, 70, 211, -1092, -1093, 16, -1087, 204,
+ -1097, -1098, -1064, -1094, 201, 90, -1103, -1104,
+ 200, -1106, 201, -1108, -1109, -1110, -1111, -1112,
+ -1113, 43, 16, -1035, -1101, 184, 43, -1120,
+ 1, -1117, -1123, -1124, -1125, 11, -1121, 16,
+ -4647, 52, -1129, -1132, -1133, -1114, -1130, -1136,
+ -1137, 43, -1139, 204, 204, 184, -1143, -1144,
+ -1114, -1141, 19, -1148, -1001, -1141, 201, 164,
+ -1153, -1104, -1151, 164, -1157, 16, -1155, -1160,
+ -1161, -1162, -1163, 200, -1158, -1166, -1167, 205,
+ -680, -1164, -1171, -1172, -1173, 43, -1169, -1359,
+ -1174, -1176, -1179, -956, 143, -975, -747, -1184,
+ -972, 87, -1185, -1186, -1189, -1190, -1191, -1192,
+ -1193, -1194, -1195, -1196, -1197, 166, 123, -667,
+ 56, -1202, 171, -1204, -1205, 189, -701, 210,
+ 190, -1210, 98, -1206, -1213, -1214, -1215, 190,
+ -1217, -1218, -1219, 189, -1211, -1222, -1205, 249,
+ -1207, -638, 218, 159, -1229, -1215, -638, -1232,
+ -91, -1185, 218, -1236, -94, -1233, 251, -1234,
+ -271, -1242, -1243, -159, -1240, -1244, -1245, 123,
+ -1249, -1250, -1251, -1252, -1253, -1113, 249, 192,
+ -1257, -1258, 171, -1255, -1035, -903, 87, -1264,
+ -1265, 172, 113, -1268, 189, -1270, -33, 75,
+ -1265, -1271, -1273, -1276, -1277, -1202, -1274, 172,
+ -1281, -1265, -1278, 14, -1205, 87, -1285, 171,
+ 172, -1290, -1291, -1113, 106, -1294, 189, -1219,
+ -1255, 227, -1299, -1300, 43, 41, -1301, -1304,
+ -1305, -1306, 43, 11, -1309, -814, 41, -1247,
+ -1310, -1312, -1300, 193, -1265, 87, -1319, -1215,
+ -1310, -1322, -1323, -1324, 104, -1320, -1327, 228,
+ 205, -1330, -1331, -1332, -1333, -1334, -1335, -1336,
+ -1337, -1338, 50, -1301, -1341, 171, -1310, -122,
+ 87, 171, -1347, -1348, -1349, -1350, 166, 182,
+ 41, -1354, -1355, 171, -1352, 172, 14, -1410,
+ -1310, 61, 50, -1351, -1361, 98, -1367, -1053,
+ 41, 21, -1371, -1372, -1046, -1368, 112, 171,
+ -1051, -1373, -1379, -153, -1377, -1380, -122, -1381,
+ -1383, -1386, -1387, -1388, -1001, -1283, -1277, -4706,
+ -1361, 83, -1395, -1265, -1393, 182, -4836, -1391,
+ 193, -313, -1399, -1401, 61, -1406, -1407, -1397,
+ -1404, -313, -4675, -1409, 83, -1210, -313, -1024,
+ -1414, -1418, 226, 31, -1421, -1422, -1423, -1424,
+ -1425, -1426, -1427, -1428, -1429, -1430, -1431, -1432,
+ -1433, 38, 115, -1436, 20, -1438, 7, 7,
+ 233, 89, -1443, -1444, 20, -1446, -642, -1416,
+ 29, -1450, 7, -1452, -1453, -1454, -1455, -1456,
+ -1457, -1458, 49, -1460, -1461, 20, 115, 89,
+ -1465, 115, -382, -1447, 249, -636, 128, 83,
+ -1471, -599, -1472, -1474, 20, 126, -1479, -1480,
+ -1481, 89, 223, -642, 17, -1484, -125, -1488,
+ -1489, -1490, -1491, 7, 9, -1494, -1495, 65,
+ 14, -1498, -1499, 9, -1501, -1502, -1503, 64,
+ 65, 117, -1507, -1508, 183, 25, -1511, 7,
+ 115, 51, -1515, -1516, -1517, -1518, 64, -1496,
+ -1521, -1522, 78, -1283, -1436, 17, -1361, -1528,
+ 65, -1495, -1526, -1530, -1533, 65, -1535, -1536,
+ -1537, -1538, -394, -1531, 65, 126, 65, 126,
+ 15, -1539, -1547, -1548, 9, -1550, 65, -224,
+ -1553, -1554, 15, 9, -1557, -1558, -1559, -1560,
+ -623, -4815, 87, 2, -1565, -1566, -602, -1563,
+ 223, -1465, 162, -599, -1570, -1574, 115, -1572,
+ -1577, -1578, 51, -1575, -1581, -1582, 65, 89,
+ 19, -1586, -1587, 1, 89, -1590, -603, 19,
+ 124, 2, -1595, -1596, -1538, -4783, -1593, -574,
+ 186, -1602, -602, 2, -1079, -1603, 83, -1608,
+ -1609, -394, -1606, -445, 17, -1614, 49, -603,
+ 14, 61, -1619, -1620, -1621, 9, -1617, -4815,
+ -1622, -1624, -1627, -1628, -1629, -1630, -1631, -1632,
+ -1633, 51, 65, 32, 183, 186, -1578, 14,
+ -1641, 183, 186, -1508, -1639, -1644, 65, -1434,
+ -1591, 115, 134, -1652, -1653, -1654, -1655, -1513,
+ -1068, -1656, -1659, -1660, -1661, -1662, 45, 9,
+ -1665, -1621, -1657, 101, 29, -1670, 7, -1672,
+ 45, 29, -1675, -1676, -1670, 13, 51, -1677,
+ -1681, -1682, -1683, -1684, 45, -1686, 51, 183,
+ -1689, 183, 134, -1684, 19, -1694, 101, -1692,
+ -1697, -1686, 193, 233, -1690, 19, 19, -1704,
+ -1705, -1706, -1707, 1, -1663, 13, -1711, 72,
+ -1713, 101, 204, -1716, -1717, -1718, -1719, 67,
+ -1721, 204, 124, 164, -1725, -1726, -1722, -1723,
+ 233, 32, -1727, -1732, -1733, 101, 204, 134,
+ -1737, -1738, 45, -1730, -1739, -1742, -1743, -1744,
+ -1745, -1746, -1555, -1740, 61, -1750, 15, 20,
+ -1753, -1754, 38, -1756, -1757, 7, -1748, 13,
+ -1761, -1762, 64, -1759, -1436, 61, -1765, -1768,
+ -1751, -1766, -1771, 22, 25, -1774, -1775, -1776,
+ -1777, -1778, 20, -566, -1769, -828, -527, -1781,
+ -1783, -564, -1784, -1788, -1789, -1790, -1791, 15,
+ -1793, -1794, 22, 23, -1797, 22, -1786, -720,
+ -1801, 1, -1803, -1804, 15, -784, -1807, -1808,
+ -1809, -1810, -1811, -1812, 1, 52, -1815, 16,
+ -1813, -1818, 9, 29, -1821, -1822, -689, -1816,
+ -1823, 16, -1824, -1828, -1829, 1, 52, -1832,
+ -1833, -1757, 164, -1836, -704, -1834, -1837, -1840,
+ -1841, -1842, 19, -1838, -1845, 27, 162, -640,
+ -1846, -1702, -1848, -1852, -1853, -1854, 20, -574,
+ -1850, -1856, 132, 20, -1861, -574, -1857, -564,
+ -1862, 220, -1867, -1868, -1869, 14, 153, -1845,
+ 30, 28, 29, 197, -1877, -1878, -1879, -1880,
+ -1881, -1882, -1813, 28, 53, 19, -1887, -1888,
+ 40, 10, -1891, -1892, 52, 19, -1895, -1896,
+ -997, -1883, 2, -777, 212, 82, 2, -1904,
+ -1905, -1906, 99, -1908, -1885, -1901, 206, -1912,
+ 24, 82, 24, -1916, -1917, 164, 19, -1920,
+ -1921, 52, 229, -1918, -1913, -1924, -1927, -1928,
+ 67, -1918, 168, -1932, -1933, -1934, 7, 19,
+ 199, -1930, -1937, 41, -1938, -1942, -1943, -1944,
+ -1945, 7, 206, -1940, 5, -1842, 30, 2,
+ -1953, -1954, 19, 207, 82, -1958, -1959, -1960,
+ -1961, -1962, -1085, 197, 16, -685, 39, -1966,
+ -1969, 53, 67, -1967, -1973, -1974, -1975, -1976,
+ 40, -1971, 40, 111, -1981, -1982, 67, 98,
+ -1127, -1983, 45, -1815, 82, -1990, 40, -1992,
+ -1993, -689, 39, -1936, -1994, 45, -1999, -1912,
+ -1996, -2002, -2003, 45, 207, -2006, -2007, 70,
+ 118, -2010, 207, -2000, -2013, -2014, -2015, -1089,
+ -2011, -2016, 204, -2020, 16, 30, -2023, -2024,
+ -2025, -2026, 183, -1684, 98, 191, -2031, 67,
+ -2033, 244, -2035, -2036, -2037, 45, 237, -2040,
+ 145, -2028, -2043, -1728, 98, -171, 253, 159,
+ -2047, -2050, -2051, -2052, 67, 237, -2055, 141,
+ -2048, 233, -2059, -2060, -2061, -2062, -2063, 191,
+ 207, 207, 141, 149, -2069, -2010, -2056, -2070,
+ -2073, 141, 103, 99, -2077, -2078, -2079, -2080,
+ -2081, 244, 197, -2084, -2037, 190, -2085, -2088,
+ 101, 196, -2091, -2081, -2089, -2092, -2088, -2093,
+ 190, -2098, -2099, -2031, 39, -2100, 98, -2104,
+ -2105, -2106, -2107, 45, -2102, -1997, 190, -2112,
+ 45, 118, 244, -2009, -2171, -2110, 159, 118,
+ -2121, -2122, -2052, -2118, -2123, -2126, -2127, 70,
+ -2124, -2130, -2131, 70, 118, -2081, -2128, -2089,
+ -2137, 244, -2089, -2140, 207, -2142, -2143, -2081,
+ 248, 238, -2038, -1901, -2147, -2150, -2132, -2148,
+ 196, -4815, 98, -2154, -2157, -2158, -2159, -2160,
+ -2161, 67, 141, 82, -2163, -2166, -2167, -1670,
+ 82, 39, -1727, -3488, -2169, -2172, -2175, 164,
+ 141, -2178, -2179, -2180, -1945, -2173, 45, 9,
+ -2185, -2186, -1450, -2181, -2187, 28, -2191, -2192,
+ -2193, -2194, 7, 169, -2197, -2198, -2199, 45,
+ 191, -2202, 169, -2204, -2205, 191, -2207, 206,
+ -2189, -2200, 109, -2210, -2213, -2214, -2202, 110,
+ 99, 109, -2182, -2217, 169, -2222, -2223, -2224,
+ -2225, -2194, -2219, 148, -2195, -1963, -2229, -2232,
+ 169, -2047, -2235, -2236, 51, -2233, 233, -2240,
+ -2241, -2242, -2199, -2237, 82, -2244, -2247, -2195,
+ 168, 145, -1686, -2248, -2253, 169, -2251, -2256,
+ -2257, -2258, -2259, -2260, -2261, -2262, 40, 1,
+ -112, -2254, -2267, -2268, 1, 204, 1, -2272,
+ -2273, -2274, -2275, -2276, -2277, -2278, 40, 50,
+ -2281, -2282, 6, -2279, 197, 56, -2287, -2288,
+ -2278, 110, -2291, 84, -2293, -2279, 17, -2296,
+ 84, -2298, 6, 39, -2301, 6, -2303, -2304,
+ -2305, 6, 112, 215, -2309, -2310, -2311, 84,
+ -2313, 84, 138, -2307, -2299, -2318, 215, -2316,
+ -2321, -2322, 112, 221, -2319, -2326, -2327, -2328,
+ -2329, -2330, -2331, 40, 24, -2334, 10, -2324,
+ -2337, -2338, 10, -2335, 118, -2342, -2343, 40,
+ 118, -2346, -2347, -1064, -2047, 215, -2351, 118,
+ -1095, -908, -2355, -2356, -2357, -2358, 185, 122,
+ -2344, -2353, -2361, 244, -2365, 185, -2367, -2368,
+ 185, -2362, -1095, -2369, 4, -2374, -2375, -2376,
+ -2377, -2378, -2379, 40, -125, -1372, 184, -2380,
+ -2383, 18, -2387, -1046, 17, -2388, -2389, -2392,
+ 112, -2390, 216, -2396, -2397, -2398, -2278, -118,
+ -2399, -2279, -1845, -2402, -2405, -2406, 50, 76,
+ -2409, -2407, 3, 112, -2413, 84, -1845, -2416,
+ -2417, -2412, -2382, -2414, 28, -2422, -2423, -2424,
+ -2425, 185, 217, 215, -2429, -2411, -2420, 110,
+ -2349, -2431, -2435, -1065, 39, -2307, -2436, -2438,
+ -2441, -2442, 76, 133, -2445, -2446, 185, -2448,
+ 84, -2450, 84, -2439, -2453, -2425, -2451, -2454,
+ -2457, 122, -2455, -2460, -2461, 10, -2463, -2464,
+ 40, -2466, -2467, 24, 98, -2470, 99, 21,
+ -2473, -2474, -2475, -2476, 37, -2478, -2479, 40,
+ 10, -2471, 76, 24, -2485, -2486, -1046, -1994,
+ -2338, -2487, -2491, 76, -2493, -2494, -2495, -2496,
+ -2497, 37, -2499, 66, 84, -2502, 37, 40,
+ -2505, 37, -2507, 50, -2509, -2510, -2502, 39,
+ -2511, -2407, -2512, 190, -2517, -2518, 66, 76,
+ -2407, -2515, 84, -2521, -2525, -2526, -2527, 66,
+ -2450, -2096, -2503, -2529, -2533, 99, 39, -2536,
+ -2497, 226, -2539, -2540, 37, 50, -2541, 39,
+ -2543, -2546, -2547, 40, -2549, -2550, -2551, -2552,
+ -2553, -1990, -2544, 6, -2557, -2558, 6, 221,
+ 1, 1, -2563, 6, 39, -2418, -2564, -2566,
+ -2569, -2570, -2571, -2479, -2567, -2572, -2565, -2573,
+ 111, -2578, -2541, -2576, 166, 220, -2583, -2584,
+ -2497, -2154, 40, -2558, 182, -2590, -2591, 12,
+ 3, -2588, -2595, 26, 21, -2598, -2599, 37,
+ 40, -2602, 24, -2604, -2605, -2547, -2596, 9,
+ 40, -2606, -2611, -2612, -2613, -2614, 99, -2616,
+ -2617, 185, 21, -2620, 244, -2618, -2621, -2624,
+ 99, -2626, -2627, 185, 122, 185, -2631, -2632,
+ -2633, -2634, 244, 101, 244, -2544, -2639, -2640,
+ 101, -2637, -2643, -2644, -2182, 226, -2647, -2648,
+ 169, -2650, 191, -2652, -2653, 99, -2655, 122,
+ 137, 207, -2659, -1662, 90, 137, -1684, -2660,
+ 10, 191, -2664, -2668, -2669, -2670, -2671, -1818,
+ -2666, -2560, 10, -2676, -2677, -2678, -2679, -2560,
+ -2674, 101, 180, 221, -444, -2680, 72, 204,
+ -2689, -2690, -2691, -2627, 31, 221, -2635, -811,
+ -2697, -2681, 90, -2698, 137, 185, 103, -2627,
+ -2702, -2706, -2707, -2464, -2704, -2607, 39, -2712,
+ 122, -2710, -2715, -2607, -2713, -2574, -2716, -2718,
+ -2721, -2722, -2723, 26, 9, -2719, -2727, -2728,
+ -2729, -2730, -2731, 176, 84, -2725, 34, 138,
+ -2595, 2, -1591, -2740, -2741, 178, 26, -2744,
+ -2450, 17, 137, -2748, 122, -2750, -2751, -2752,
+ -2753, -2754, -2755, 6, 55, 12, 18, 11,
+ -2761, -1829, -2758, 12, -2765, -2766, -2767, -2768,
+ -143, 17, -2769, -2772, -2773, 12, 80, -2776,
+ 12, 174, -2770, -241, -2778, -2782, 88, 97,
+ -2785, -2786, -2787, -2788, -2789, 12, 22, 174,
+ 88, -2794, 15, 22, -2797, 88, 107, 2,
+ -2801, -2802, -2803, -2804, 80, 88, -2807, 163,
+ 88, -2810, 163, 97, -2813, -2814, -2815, -2816,
+ -2817, -2818, -2819, 163, 174, -2822, 174, 187,
+ -2825, -2826, -2827, 174, 187, 88, -2831, -2832,
+ -2833, 177, 245, -2828, -2799, -2836, -2829, -2710,
+ -2839, -2842, -2843, -241, -2840, 19, -2847, -2848,
+ 80, 203, -2829, 52, 203, -2851, -2855, -2856,
+ 174, -2858, -2859, 176, -2853, -2717, -2860, -2862,
+ -2865, -2866, 174, -2868, 187, 195, -2871, 176,
+ -2296, 248, 219, -2876, -2877, -2878, 12, -2827,
+ 28, -2882, 230, 82, -2885, 80, -2887, -2888,
+ 6, 230, -2891, 80, -2883, -2894, -2895, -2896,
+ 6, -2898, -2899, 9, 15, -2902, -444, 168,
+ 180, -445, -2903, 6, -14, 225, -2906, -2910,
+ 15, 18, -2915, -2827, -2913, -2918, -2919, 180,
+ -2889, 82, 221, -510, -2925, 6, 221, -139,
+ -2923, -2928, -2931, -2932, -2933, 55, 18, -2829,
+ -2934, -2938, 80, -2940, -2941, -2942, -2943, -2944,
+ -2827, 39, -2945, 177, -2946, 180, 180, -2952,
+ -2953, 180, 186, -2956, 203, -2948, -2959, -2829,
+ 208, -1979, -2834, 82, -2963, -2966, -2967, 174,
+ 15, -2970, -2968, -2964, 100, -2974, -2975, -2976,
+ 15, 88, -1600, 82, -2979, 180, -2980, -2984,
+ -2985, -2986, -2987, -2988, -2220, 196, 25, 25,
+ -2993, -2994, 178, -2996, 26, -2996, -2963, -2744,
+ 164, -2998, -1913, -3004, -2731, 39, 219, -3005,
+ -3009, -3010, -3011, -2810, -3007, 174, 195, -3016,
+ -3017, -3018, -3019, -3020, -3021, 175, 243, -2868,
+ -3012, 102, 187, 176, -3029, -3030, -3031, -3032,
+ 174, -2868, 161, -3036, 177, -3034, 187, -3040,
+ -3027, -3037, 208, -3044, 177, 100, 195, 174,
+ 100, -3050, -3051, -3052, -3053, -2607, 161, -2878,
+ -3054, 174, -3059, -3060, 9, -3062, -3063, -3057,
+ -3056, -3064, -3067, 176, 100, -3070, 26, -3072,
+ -3067, -811, 219, -812, -3077, 169, 64, -3080,
+ 9, 25, -3083, 175, 176, 177, -3087, -3088,
+ 176, -3075, -3091, -3092, -3093, -3094, -3095, 163,
+ -3097, 174, -3099, -3100, -3101, 9, 82, -3104,
+ 64, -3106, 9, 65, -3109, -3110, -2819, -3054,
+ 64, -2168, -3115, -3116, 9, 25, -1503, 100,
+ -2168, -3122, -3123, -3124, -3125, -3116, -3120, -3126,
+ -3129, -3116, -595, -3102, -3133, 180, -3131, -2899,
+ 196, -3138, 15, -2921, -3139, -3142, -3143, -2607,
+ -3005, -3067, -3144, -3146, -3147, -3150, -3151, 174,
+ -3153, -3154, -3155, 176, -3133, -3148, -3159, -3160,
+ -3085, -3157, 245, -1637, -3161, -3164, 180, -1637,
+ -3165, -3170, -3171, -3172, -3173, -3174, -3116, -3168,
+ -3177, 183, -3175, 183, -3181, -3182, -3183, -3184,
+ 180, 63, 99, -3177, 178, 26, 66, -3192,
+ -3133, -3190, -2731, -3193, 117, -3195, -3199, -1518,
+ 63, -2231, -3000, 173, -3203, -1508, 99, 24,
+ -3209, -1687, -3207, -3212, -3213, -3214, -3215, -3216,
+ -3217, -3218, -3219, -3220, -3221, 58, -3223, -3224,
+ 58, 81, 58, -3228, -3229, 173, 81, 81,
+ -3233, -3234, 243, -3236, 173, -3238, 81, 147,
+ -3241, -3242, -3243, -3244, 73, 108, -3238, 63,
+ -3247, -3248, -3245, 76, 125, -3254, -3255, 58,
+ 178, 63, -3259, 86, -3261, -3262, -3263, -3234,
+ -3257, 86, -3237, -3202, 167, -3268, -3259, -3269,
+ -2527, -3274, -3275, 243, 231, -3265, 63, -3278,
+ -3281, 12, -3283, -3284, 86, 167, 81, 25,
+ -3289, -3290, -3291, -3292, -3293, -3294, -3295, 163,
+ 64, -3298, 175, -3300, 175, -3302, -3303, -3304,
+ 163, 12, -3307, 12, -3032, -3285, 25, -3312,
+ -2809, -3267, -3309, 63, 167, 175, -3319, -3320,
+ 12, -3322, 175, -3188, -3316, -3326, 86, -3328,
+ -3329, -3330, 175, -3332, -3333, -3334, 178, -3025,
+ -3324, 125, 26, -3340, -3341, -3342, -3343, -3344,
+ -3345, -3304, 63, -3346, -3317, 37, -3349, 195,
+ 163, -3354, -3355, 175, 102, -3358, 86, -3360,
+ -3361, 243, -3350, -3362, -3365, -3366, -3234, -3363,
+ -3367, -3370, 102, -3368, -3373, -3374, 195, -3371,
+ -3313, 21, 151, 2, -3381, -3382, -3383, -3384,
+ -3385, -3386, 8, -3379, -3389, -3390, 163, 97,
+ 165, -3394, 165, 71, -3397, -3398, -2810, -3387,
+ -3401, 97, 12, -3404, -3405, -3406, -3407, -3408,
+ 163, 62, 8, -3412, 12, -3414, -3415, 8,
+ -1794, -2476, 25, 0, -3421, -3422, -3423, -3424,
+ 62, -3426, 86, -3417, -3296, 5, -3431, -3432,
+ -3433, -3434, 160, 231, -3437, 146, -3439, -3440,
+ -3441, 8, 18, -3444, -3445, 12, -3447, -3244,
+ 63, -3450, -3259, -3448, -3453, 146, -3455, 116,
+ 125, -3458, -3459, -3460, -3461, 8, 48, 86,
+ 73, -3466, -3467, -3461, 26, -3424, -3468, -3448,
+ 77, -3474, -3475, -3476, -3477, -3478, 48, 77,
+ 62, -3482, 62, 37, -3485, -3486, 77, -3483,
+ -3522, -3487, -3489, -3492, -3493, 62, 125, 116,
+ -3497, -3498, -3499, 73, 63, 128, 37, -3502,
+ -3265, -3503, -3505, -3508, -3509, -3510, -3511, -3512,
+ -3513, 160, -3506, -3495, 12, -3516, -3519, -3520,
+ 165, -3517, 52, -1951, -3523, -3526, 195, 37,
+ -3527, -3530, -3531, -3532, -3533, 8, 62, -3536,
+ 165, -3538, 8, -3540, 8, 74, -3543, 62,
+ -3528, -3544, -3547, -3548, -3461, 2, -3551, -3552,
+ -3462, 18, 150, -3553, -3553, -3556, -3559, -3464,
+ 18, -3560, 242, -3221, -3561, 12, 18, -3568,
+ -3569, -3570, -3571, -3572, 38, 78, -3575, -3576,
+ -3577, -1068, -3564, -3580, 20, -3578, -3583, -3584,
+ 68, -3581, -3587, -3588, -3589, 8, -3591, -1778,
+ -3585, 34, -3592, -3596, -3597, -3598, 38, 44,
+ -3601, -3602, -3603, 59, -3605, 68, 114, 59,
+ -3609, -3610, 8, -3612, 74, -3614, 44, 33,
+ -3617, -3618, -3619, -1068, 91, -3620, -3623, 33,
+ 199, 94, -3624, -3628, 68, 63, 94, 8,
+ -3633, -3634, 44, 78, -3637, -3638, 68, 132,
+ -3635, -3629, -3643, -3644, -3645, 59, 126, 71,
+ -3640, -944, -3641, 105, -3650, -3654, -3386, 242,
+ -3655, -3394, 254, 74, 78, 254, -3663, -3664,
+ -3665, -3666, -3667, -3668, -3669, -3670, -3671, 57,
+ 99, -3674, -3675, 48, -3248, -3409, -3676, -3678,
+ -3409, 254, 58, -3684, -3685, 57, 64, -3682,
+ -3689, -3690, -3691, -3692, 44, 144, -3695, 57,
+ -3687, -3698, 57, 77, -3701, -3702, -3703, -3462,
+ 58, 144, -3685, 242, -3707, -3710, 58, -3712,
+ 58, -3698, -3708, -3716, -3717, -3718, -3597, 144,
+ -3714, -3692, -3720, 78, -3451, -3633, -3719, 240,
+ -3727, 44, -3731, -3732, -3733, -3734, 48, 8,
+ -3734, -2220, -3737, -3740, -3741, -3742, -3743, 48,
+ 74, -3480, 150, 81, -3749, -3750, -3751, -3634,
+ 58, 74, -3755, 48, -3752, -3758, 48, 77,
+ -3761, -3729, -3756, 33, -3765, 78, -3762, -3768,
+ -3769, -3770, 8, -3766, -3773, 62, 108, 64,
+ -3777, -3778, -3779, -3780, -1433, 81, -3781, -3784,
+ 57, -3782, -3787, 38, -3789, -3790, 44, -3792,
+ -3695, -3464, 148, -3793, 44, 144, 155, -3800,
+ -3801, -3802, -3803, -1491, -3468, -3806, 57, 169,
+ -3448, 58, -3811, 169, 148, -3814, -3815, -3710,
+ -3808, -3818, -3819, 144, -3816, -3822, -3823, -3824,
+ -3825, 7, 57, 99, 7, -3830, 149, -3832,
+ -3833, 57, 178, -3836, -3693, -3834, 178, -3840,
+ 240, -3838, -3843, -3844, -3845, -3846, -3847, -3848,
+ 38, 13, 7, -3852, 7, -3841, -3855, -3856,
+ 44, 13, -3859, -3860, -3861, 13, 81, 234,
+ -3448, -3864, 68, -3868, -3869, 13, -1068, -3865,
+ 144, -3874, 242, -3876, -3877, 48, -3705, -3871,
+ -2499, -3710, 63, -3882, -3885, -3886, -3887, -3888,
+ 13, 144, 144, -3892, -3461, -3883, -3705, -3893,
+ 34, 33, -3872, -3229, -3899, -3902, -3903, -3904,
+ -3905, -3906, -3907, -3908, -3909, 46, 85, -3912,
+ 59, -3914, -3915, -3916, 85, -3918, 68, 105,
+ -4160, -3900, 63, -3924, -533, -3229, -3925, 63,
+ -3929, -3930, 23, 71, -3933, -3934, 46, 167,
+ -3931, -3935, -3937, -3940, -3941, -3942, 68, -574,
+ -3938, 68, -3947, 85, 113, -3944, -3951, -3605,
+ -3949, -3954, 75, -3956, 41, -3952, -3959, -3960,
+ 61, 113, -3910, -3957, -3963, -3966, -3967, -3968,
+ -3969, -3970, -3971, -3972, -3973, 46, 17, 17,
+ -3977, -3978, -3979, 8, 74, 74, -3964, -3984,
+ -3985, -3986, 59, -3988, -3989, 59, 125, -3992,
+ 71, 111, -3995, 17, -3989, -3993, 94, -3975,
+ -3997, 21, -4003, 59, -4005, -4006, 8, -4008,
+ -4009, 46, 100, -4012, 17, -4010, -4015, -4016,
+ -3945, -4013, 33, 28, -4021, -4006, -2972, -4022,
+ -2799, -4026, -4027, -4028, 8, -4024, 17, -1612,
+ 28, -2758, 2, 125, -4037, 74, 18, 116,
+ -4041, -4042, -4043, -4044, -4045, -4046, 46, 18,
+ -4049, -4012, -4047, -4050, 94, -4051, -4055, -3912,
+ -4053, 100, -4059, -4060, -4061, 61, 68, 61,
+ -3959, 234, -4057, 21, -4069, 94, -4067, -4072,
+ -4073, 46, -4075, -4076, 46, 94, 95, -4080,
+ -4081, -4082, -4083, 61, 94, -4086, 17, -4070,
+ -384, 37, -4084, -4089, -318, -4091, 131, 37,
+ -4097, -4098, -4099, 61, -1068, 76, -4103, 68,
+ -4105, -4106, -4107, -4108, -1748, -4101, 94, 94,
+ -4113, -1068, 2, 63, -4117, -1612, 37, -4118,
+ -4110, -4119, 68, -3207, -4125, -4126, -4127, -4128,
+ -4129, -4130, 168, -4132, -550, 63, 21, -3379,
+ -4137, -550, -4135, 222, -4141, 95, -4138, -4144,
+ 17, -1889, 95, 209, -4149, -4150, 93, 76,
+ -4153, -4154, -4155, -4156, 46, 23, -4151, -2380,
+ -4344, -4158, -4161, -4162, -384, 21, -4165, -4168,
+ -4169, -4170, -4171, -4172, -4173, 46, 76, -4176,
+ -4177, 46, -4179, -470, 76, -4095, -4078, -4181,
+ -2540, 46, 168, -4188, -4189, 168, -4184, 253,
+ -4190, 212, -4195, -4196, 168, 46, 198, -4200,
+ -4177, 208, -4201, -4204, 198, -4206, 109, 220,
+ -4209, -4210, -4211, -4212, -4213, -4214, -4215, -3610,
+ 111, -3516, 111, -4218, -4221, -3441, -4032, 165,
+ 18, 116, -4227, -4228, -4229, -3516, -4222, 107,
+ -4233, -1771, -4230, 23, -2790, -4234, 165, -4237,
+ -4241, -4242, -4243, -4244, -4245, -3244, -2471, -4246,
+ -4249, 28, -3494, -4252, 160, 116, 160, -4256,
+ -3442, 125, -4259, 28, -2189, -4262, -3402, -4260,
+ 125, -4263, -4267, -3250, -4191, 108, -3250, 28,
+ -4270, -4259, -4272, -4276, 220, 66, -4279, 219,
+ -4281, -3445, 66, -4089, -3401, -4283, -4287, -3374,
+ -4285, 66, -4289, -4292, -4293, -4294, 97, 220,
+ -4290, -4298, -4299, -3402, -4296, -4302, -4264, -4300,
+ -4305, -4306, 97, 3, -4303, -4310, -4311, -3401,
+ -3203, 194, 66, -361, -3285, -4318, 107, -154,
+ -4316, -4320, -4323, -4324, -4325, -4326, -4327, -4328,
+ -4329, 160, 165, -2468, -3540, -2471, -4335, -4336,
+ -4252, 50, 98, -4223, -1369, -4340, -4343, -4336,
+ -4705, -4341, -4337, 202, -4349, 79, -4351, 79,
+ -4346, -4354, -4355, -4356, -4357, 8, 165, -4360,
+ 8, -4352, -4363, 181, -4361, -4366, -4367, -4368,
+ -4369, 46, 181, -4372, -4373, 181, -4364, 181,
+ -4375, -4374, 151, -4380, 71, 8, -4057, -4384,
+ -4385, -4386, -4376, 234, 208, 108, -4391, 188,
+ -4389, -4394, -4395, -4396, 79, 202, -4198, 108,
+ -4401, 188, 198, -4404, 181, -4406, 79, -4399,
+ -4409, 71, 188, -4013, -4413, -4414, -4415, 17,
+ -4417, -4418, -4156, -4411, -4421, -4422, 79, -4424,
+ 188, 91, -4396, -4425, -4427, -4430, -4431, -4432,
+ -4433, -4130, -4428, -4434, -4437, 109, -4439, -4440,
+ 79, 91, 109, -4396, -4441, 28, -2388, -4441,
+ 79, -3315, -4451, -4452, -4453, -2388, -4449, -4454,
+ 28, -4458, 160, -4406, -4455, 28, -4460, -4464,
+ -3540, 100, -2294, -4465, -4469, -4470, -4471, -4472,
+ 160, -3774, -4475, -4476, -4477, 79, -4479, 194,
+ 194, -4473, -4483, -4484, -4485, -4477, -2385, -180,
+ 18, 109, -4491, -4492, -4493, 159, 198, -4496,
+ 188, -4498, 194, 198, 202, -4502, -4503, -4504,
+ 17, 73, -4507, 46, 23, -4510, -4511, -4512,
+ -4513, 188, -4515, 188, 92, -4508, -4505, -4518,
+ -4521, 23, -4523, -225, -4519, 35, -77, 18,
+ -4527, -4516, -3629, -4532, -4533, -4534, -4535, 159,
+ -180, -4530, -4539, 119, -4541, 92, -4537, 181,
+ -4545, -4546, -4547, -4548, -4549, 188, -4542, -284,
+ 255, 100, -4555, -284, -4553, -4558, -361, 241,
+ 194, -4562, -4563, -4564, -4565, -4357, -3378, -4568,
+ 165, -4570, -4571, -4572, 181, 71, 188, 202,
+ -4577, -4578, -3589, 100, -3620, -3647, -4580, -4582,
+ -4585, -4586, 22, -4583, -4589, -4590, -4591, 188,
+ -4235, 150, -4593, -4596, -4597, -4598, -4599, -4568,
+ -4594, -3401, 100, 100, -3247, 195, 194, -4608,
+ -4609, -4610, -4611, 181, 90, -4614, 188, -4612,
+ -4615, -4618, -4619, -4560, -4616, -4620, -360, -3379,
+ -4010, -3555, -4627, -4628, -4629, -4630, -4631, -4632,
+ -4633, -4634, -4635, -2175, -4625, 179, -4639, 164,
+ -4641, -4642, -4643, -4644, 179, 206, 179, 199,
+ -4645, -4636, 128, -4652, -4653, -4654, -4655, 179,
+ -4657, 206, -2195, -4649, -2200, -4659, -4663, 169,
+ -3620, -4666, -4667, -4668, -4669, -4670, 179, 128,
+ 206, -4674, -4675, 199, -4664, -4678, 206, -3629,
+ -4681, -4655, -4679, -4671, -4425, -4684, -4687, -4688,
+ -4689, -4690, -1155, 253, 52, 184, -4695, 164,
+ -4697, -4698, -4639, -4691, 225, -4650, -3707, -4702,
+ -1391, 184, 184, 150, -3624, -4707, 167, -4712,
+ 164, -4714, -4715, 2, -4717, 24, -4710, -4720,
+ -4647, 91, 167, -4724, 184, -4722, -1128, -4708,
+ 91, 63, -4727, 173, -4731, -4734, -4735, -4736,
+ -4737, 7, -4732, 63, -4741, -4695, -4739, -4744,
+ 19, 167, -4747, 13, -4745, -1591, -4748, 128,
+ -4750, -4754, -4755, -4756, -4757, -4758, -4759, -4760,
+ 7, 240, 149, -4764, -4765, 169, -4752, -4762,
+ -4766, 242, -2220, -4769, 240, -4774, 5, -3705,
+ 73, -4776, -4779, -4780, 206, 128, 169, 253,
+ -3707, -4784, -4787, -4788, -4789, -4790, 7, -4785,
+ 7, -4794, 13, -4791, 32, -4798, 128, -4795,
+ -4801, -4781, -4799, 151, 242, -979, 99, -4808,
+ -4809, -4810, -1834, -2799, -4813, 13, -4804, 128,
+ -4811, 164, 234, -2664, -4821, -4822, -4823, -4824,
+ -4655, -1902, 234, 254, -4829, -4830, 128, -2480,
+ 234, -4831, -4830, 184, -4814, 253, -4837, -4840,
+ -4841, -1398,
+};
+
+static long _vq_ptr1_res0_0c[] = {
+ -3211, -1420, -669, -362, -128, -95, -61, -35,
+ -17, -12, 11, 15, -14, 72, -16, 203,
+ 203, -21, -20, 72, 72, -25, -24, 56,
+ 56, -30, -29, 123, 72, 123, -32, 72,
+ -29, 123, 110, -56, -52, -48, -45, -43,
+ -42, 129, 129, 247, 129, -42, 129, 131,
+ -50, 109, 203, 129, -55, -54, 129, 123,
+ 55, -60, 123, 247, 251, -81, -72, -69,
+ -68, -67, 136, 136, 252, -68, 252, -49,
+ -78, -77, 136, 92, 4, 4, 92, 123,
+ 4, -89, -88, -42, -60, 251, 103, -47,
+ 251, -93, -92, 251, 252, -94, 136, -116,
+ -107, -106, -105, -103, -31, 4, 4, 72,
+ 56, 221, 221, -114, 221, -113, -112, 204,
+ 204, 16, 204, -101, -120, -215, 4, -101,
+ -123, -122, 172, -127, -126, 4, 4, 27,
+ -226, -193, -167, -146, -140, -135, 80, -139,
+ -55, 123, 131, 80, -144, 11, 80, 107,
+ -145, 30, -155, -148, -150, 3, -152, 56,
+ -154, 3, 3, -162, -157, -160, 123, 30,
+ 30, -119, -166, -165, 30, 30, 30, -182,
+ -172, -170, 220, 30, -174, 194, -181, -179,
+ -178, -115, 30, 218, 30, 218, -189, -187,
+ -180, 30, 135, -188, 194, -190, -191, -192,
+ 107, -202, -200, -199, -198, 92, 92, 15,
+ 27, 135, -213, -206, -205, 92, -210, -77,
+ 131, -186, -77, 4, 135, -223, -218, -4671,
+ -209, -177, -222, -221, 153, 153, 153, -225,
+ 135, 4, -278, -235, -230, 139, -234, -233,
+ 139, 139, 139, -244, -242, -241, -240, 249,
+ 203, 88, -243, 139, -274, -263, -257, -251,
+ -250, 135, 139, -255, -234, -249, -239, 247,
+ 139, -262, -261, 247, 139, 247, 203, -268,
+ 139, -262, 135, 135, -272, -250, -266, 31,
+ 203, 135, -277, 96, -270, 96, -295, -286,
+ -285, -283, -254, 139, 119, 93, -293, -291,
+ -290, 139, 139, 107, 139, 139, 93, -342,
+ -339, -319, -256, -303, -302, 55, 55, -311,
+ -308, -117, -217, -87, -60, 251, 222, -308,
+ -60, 143, -313, -806, -310, -316, 222, -331,
+ -324, -309, 131, 113, -328, -327, -323, 251,
+ -327, 113, -326, -333, -322, -337, -336, -318,
+ 139, 119, -317, -327, 251, -307, -352, -345,
+ 131, -349, -336, -344, -49, -336, -347, 131,
+ -357, -355, 107, 107, 97, -361, -360, 119,
+ 119, 107, -577, -472, -434, -405, -390, -389,
+ -373, -371, 120, 120, 223, -379, -378, -377,
+ 223, 223, 89, -386, -383, 120, 223, -385,
+ 131, 223, -388, 120, 120, 223, -398, -396,
+ 120, -395, 127, 127, 72, 120, -404, -401,
+ 89, -388, 120, -351, 72, -413, 60, -20,
+ -19, 72, 252, 222, -350, -423, -419, 15,
+ -370, 120, 248, -420, -422, 129, 129, -431,
+ -428, -68, 103, -418, -68, 252, 103, -429,
+ 252, 103, -449, -442, -440, -51, 129, -430,
+ -51, 103, -446, -445, 72, 72, -445, -430,
+ -439, -463, -452, 126, -456, -243, 139, -430,
+ -460, -233, -448, -427, -233, 139, 197, -467,
+ -466, 248, 129, -233, -461, 222, 222, -469,
+ -520, -489, -486, -483, -482, -481, -480, 213,
+ 213, 252, 11, -233, -465, -462, -488, 213,
+ 213, -400, -516, -502, -500, -497, -487, -459,
+ 222, -487, 213, 140, 85, 69, -504, 140,
+ -512, -509, -508, -499, 252, -508, 140, 103,
+ -429, 213, 120, -507, -518, 120, 120, -496,
+ -567, -536, -534, -531, -528, -527, 132, 132,
+ -527, 132, 83, -533, 153, 153, 105, 153,
+ -560, -553, -544, -543, -542, -519, 139, 105,
+ -551, -549, -548, 150, 139, 126, 150, -552,
+ 126, -557, -552, 126, -547, -559, 139, 139,
+ -565, -563, 150, -564, 153, -566, 153, -573,
+ -570, -547, -222, -556, 17, -575, 153, -533,
+ -571, -604, -592, -585, -583, 72, 11, 11,
+ -541, -589, -588, 124, 124, -588, 124, -547,
+ -600, -597, -596, 103, 223, -599, -433, 223,
+ -601, -603, 134, 134, -653, -631, -626, -616,
+ -612, -378, 255, -591, -614, 69, 153, -584,
+ -620, -619, 124, 124, -623, 124, -495, -596,
+ -412, -341, -629, 132, 152, -630, 153, -643,
+ -639, -636, 14, 152, -389, -628, 152, -641,
+ 32, 223, 32, -649, -648, -640, 32, -628,
+ 14, -650, -529, 132, -637, -664, -661, -660,
+ -658, 14, 14, 29, 29, -663, 29, 29,
+ -666, -652, -668, 152, 153, -988, -798, -693,
+ -687, -676, 204, 124, -684, -681, -680, 224,
+ 224, -680, 224, -638, -686, 211, 211, -690,
+ -689, 29, -691, -692, 121, -760, -721, -705,
+ -700, -699, 19, 19, -702, 152, -704, -638,
+ 32, -714, -712, -709, 87, -711, 87, 87,
+ -713, 142, -720, -717, 192, -719, 142, 142,
+ 106, -734, -728, -726, -725, 106, 87, -683,
+ -730, 67, -732, 121, 87, 121, -749, -738,
+ -737, 121, -741, -740, 224, -744, -743, 211,
+ -748, -1604, -665, 152, 224, -751, 31, -757,
+ -754, 152, -713, 142, 130, -713, 142, -750,
+ -770, -768, -763, -766, 19, 31, -767, 31,
+ 211, 121, -786, -779, -776, -224, 27, -746,
+ -778, 27, 27, -783, -782, 152, 31, -266,
+ 152, -781, -793, -792, -790, 130, -266, -785,
+ 31, -692, -796, 152, 121, -628, -883, -849,
+ -824, -819, -816, -813, -67, -809, -1175, 152,
+ -797, -508, -791, 140, 140, -815, 136, 136,
+ -508, -811, 241, -820, -822, -810, -823, 4,
+ -841, -835, -830, -648, 14, 232, -832, 150,
+ -834, 85, 85, -839, -838, 150, 213, 14,
+ -831, -847, -77, -845, 4, 4, -829, 93,
+ -789, -873, -863, -857, -854, 121, -856, 214,
+ 214, -861, -856, 214, -547, -862, 227, -864,
+ -866, -860, -870, -869, 83, 124, -869, 124,
+ -865, -881, -876, 121, -880, -692, 121, -547,
+ 135, -882, 136, -923, -904, -899, -710, -895,
+ -892, -891, -879, 192, -891, 192, 140, -897,
+ -503, 142, 83, -902, 249, 135, 135, 249,
+ -910, -907, 31, -266, 135, 170, -913, 121,
+ 135, -921, -918, -917, 170, 135, -758, -909,
+ -896, -713, -890, -953, -930, -926, -927, -929,
+ -872, 142, -952, -940, -934, -848, -938, -937,
+ 214, 214, -937, -821, -948, -945, -897, -775,
+ 150, -897, 142, 241, -897, 75, 140, 150,
+ 136, -960, -958, -957, 214, 214, 136, 135,
+ 136, -965, -964, 241, 121, -969, -968, 241,
+ 227, -977, -974, -973, 227, 227, -973, 227,
+ -963, -981, -2153, 241, -963, -985, -984, -976,
+ 142, -984, 142, -951, -1188, -1080, -1028, -1004,
+ -995, -994, 27, -999, -998, 27, 27, -127,
+ -1002, 104, 104, -947, -1026, -1016, -1013, -1011,
+ -1010, 31, 31, -1010, -1003, -1015, 34, 21,
+ -1017, -1022, -1021, -1010, 34, 104, -792, 31,
+ 228, -1014, -266, -1014, -1066, -1038, -1037, -1034,
+ 201, 200, -1036, 201, 201, 221, -1063, -1042,
+ -1041, 112, -1054, -1049, -1048, -1047, 216, 216,
+ 216, -1053, -1047, 216, -1025, 182, -1058, -1057,
+ 34, 216, -1060, 200, -1057, 216, -1056, -1065,
+ 217, 217, -1074, -1069, 34, -1001, -1072, -1062,
+ 200, -1052, -1078, -1036, 201, -1012, -972, 234,
+ -1107, -1091, -1088, 10, -1086, 211, -680, 234,
+ -1090, 217, 217, -1096, -1095, -1037, -1079, 217,
+ -1102, -1090, -1100, 241, 217, 232, -1105, 217,
+ 211, 217, 211, -1131, -1119, -1118, -1115, -1114,
+ 72, 201, 201, -1114, 130, 232, 104, -1122,
+ -113, -829, -1000, -1127, -998, 27, -1116, 27,
+ -4700, 232, -1126, -1159, -1142, -1135, -1099, -1140,
+ -1138, 121, 121, 211, -1106, 130, -1152, -1147,
+ -1036, 2, 130, -1002, -1150, -1146, 104, 184,
+ -1156, -1106, -1149, 52, -964, 121, 19, -1170,
+ -1165, -862, 224, 227, -1154, -1168, 227, 224,
+ 227, -1145, -1178, -974, -973, 227, -1134, -1597,
+ -1077, -943, -1183, -1181, 152, 214, -1180, -973,
+ -975, 152, -1180, -1182, -1329, -1248, -1212, -1208,
+ 30, -1201, -1200, -33, -1198, 228, 228, -1180,
+ 171, -1203, 189, -1207, -1198, 228, -1180, 228,
+ -1209, -1207, 228, -1199, -1227, -1216, 228, 136,
+ -1221, -1198, 228, 136, -1187, -1224, 218, 152,
+ -1226, -1223, 228, -1228, -1241, -1231, 31, -1235,
+ -1234, -1230, 251, -1239, -1238, -1225, 136, 136,
+ -906, -1247, -178, -165, -903, -1237, -1220, 4,
+ -1303, -1289, -1269, -1263, -1256, -1076, 143, 143,
+ -1260, -1076, 201, -1254, -1076, -1259, 113, -1267,
+ -1024, 228, 143, 228, 104, -1275, -1272, 143,
+ -1198, -1255, -1266, -1287, -1280, -1279, -1262, 189,
+ -1284, -1207, -1261, 113, -1207, -1283, -1282, -1288,
+ 123, -1298, -1295, -1293, 143, 201, 227, -1297,
+ -1292, 136, -94, -67, 136, 143, -1255, -1314,
+ -880, -1308, -1307, 172, -1311, 4, 193, 136,
+ -1302, -1296, -1316, 106, -1318, -1315, -1321, 205,
+ -1317, -1328, -1326, -882, 136, -1313, 136, 135,
+ 136, -1385, -1378, -1370, -1366, -1362, -1346, -1343,
+ -1340, -1053, 182, -1266, -1053, 182, -1339, -1345,
+ 193, 172, -1343, -1353, -1053, -1351, 210, 210,
+ -1344, -1357, -1351, 210, -1342, -1351, 193, -1470,
+ -1358, 113, -1363, -1365, -1283, 210, -1369, 98,
+ 113, 98, -1376, -1375, -1374, 14, 216, 112,
+ 182, -1364, -1382, -171, -1360, -1356, -994, -1325,
+ -1286, -1405, -1390, 182, 27, 83, -1394, -4700,
+ -1389, 193, -1280, -1397, 143, 228, -3863, -1128,
+ 143, -1400, 141, -1396, 143, -1413, -1209, -1207,
+ -1266, -1266, 234, -1408, 143, -1415, -1412, -1417,
+ -1411, -1419, 228, 228, -2255, -1876, -1741, -1556,
+ -1487, -1451, -1442, 149, -1441, -1439, -1437, -1435,
+ -1434, 148, 148, 115, 148, 20, 148, -1440,
+ 148, 115, -1445, 29, 89, -1449, -1448, -1403,
+ 32, 233, 29, -1478, -1476, -1469, -1464, -1459,
+ 89, 115, 132, -1463, -1462, 132, 132, 132,
+ -1466, 223, -389, -1392, 113, -1473, -4832, -1468,
+ -1467, -389, -1384, -1246, -1477, 132, -1448, -1483,
+ -1482, 32, 32, -1482, 83, -224, -102, -1534,
+ -1510, -1493, -1492, 25, 25, -1497, -1436, 148,
+ 83, -1500, 65, 183, -1506, -1505, -1504, 117,
+ 117, 148, -1509, 117, 148, 148, -1514, -1512,
+ -1513, 148, -1532, -1527, -1520, -1436, 148, -1484,
+ -1524, -1434, 148, 17, -1434, 113, -1525, -1529,
+ 20, -1434, -1523, -1519, 115, 126, -1546, -1543,
+ -1542, -1541, -1540, -1486, 127, 127, 115, -1544,
+ -461, -1485, -1552, -1549, 65, -1444, 89, 31,
+ -1555, 126, 89, 29, -1651, -1618, -1585, -1576,
+ -1564, -1087, 140, -1562, -1571, -1569, -1568, -1551,
+ 134, 134, -503, -1573, -1567, -1568, 134, -1545,
+ -1580, -1574, 134, -1475, -1574, -1583, 134, 134,
+ 140, -1594, -1589, -1588, 124, -1588, -1592, 34,
+ 134, -1591, -1607, -1601, -1600, 234, -1584, 34,
+ 127, -1581, 89, -1599, -2046, -1598, 34, -1613,
+ -1611, 72, 130, 127, 34, -1615, 89, -1583,
+ -1612, 14, -1626, -1581, -1583, 134, -1616, 225,
+ -1610, -1605, -1649, -1646, -1643, -1638, -1636, -1504,
+ -1634, 183, 183, 34, -1637, 117, -1640, 34,
+ -1642, 134, 134, -1504, -1635, -1591, -1647, 134,
+ 32, -1650, 233, -1703, -1658, 233, 115, -1508,
+ -1635, -1648, -1674, -1669, -1664, -1663, 101, 101,
+ -1668, -1667, -1645, 134, 134, -1671, 233, -1673,
+ 233, 233, -1680, -1633, -1678, 130, 233, -1146,
+ -1696, -1688, -1685, 183, 145, -1687, 145, 145,
+ -1691, -1690, 145, -1693, 193, -1690, 145, -1679,
+ -1700, -1699, 32, 145, -1699, -1698, 32, -1715,
+ -1710, -1708, 101, 134, 29, -1702, -1712, 204,
+ -1714, 29, 29, -1731, -1724, -1714, -1720, 204,
+ -1722, 239, 239, 32, -1673, -1729, -1728, -1702,
+ 239, 233, -1709, -1736, -1734, 204, -1735, 239,
+ -1668, -1728, 134, -1701, -1695, -1806, -1773, -1752,
+ -1749, -1444, 0, -1666, 34, -1751, 22, 0,
+ -1760, -1755, 20, -1436, -1751, 0, -1639, 193,
+ -1767, -1764, -1509, 14, -1509, 193, 14, -1770,
+ 25, -1763, -1772, 0, 0, -1800, -1787, -1785,
+ -1782, -1779, 153, -630, -640, 193, -1477, -640,
+ -1780, 132, -1758, -552, -1792, 89, 126, 23,
+ -1796, -1795, 126, 126, -564, 153, -1747, -784,
+ -1802, 0, -1771, 89, 0, 106, -1831, -1827,
+ -1820, -1817, -1814, -663, 29, 106, -663, 29,
+ 152, -1819, 0, 0, -1825, -1714, 124, -1805,
+ -1799, -1714, -1146, -1125, 89, 15, 19, -1851,
+ -1835, 32, 130, -1839, -1448, -1146, -1830, -1847,
+ -1844, -1819, 0, -1826, -1819, 0, 130, -1849,
+ -1843, 27, -1798, -1866, -1860, -1858, -1855, -630,
+ -1625, -1579, -1859, 32, -1863, 32, -1177, -1448,
+ -625, 250, -1874, -1871, -1870, 0, 0, -1870,
+ -1865, -1872, -1845, 250, -2022, -1957, -1926, -1903,
+ -1886, -1884, 53, 208, -1885, 207, 207, -1890,
+ -1889, 24, -1894, -1893, 24, 24, -1902, -1899,
+ -1898, 212, 27, -1898, 250, 250, 24, -1914,
+ 141, -1907, 206, -1911, -1910, -1900, 207, -1910,
+ 207, 28, -1915, -1919, -1918, 141, 141, -1923,
+ -1922, 141, 141, -1922, -1909, -1897, -1941, -1931,
+ -1929, 207, 250, -1939, -1916, -1935, 206, 206,
+ 225, 28, -1925, -1723, -1875, -1952, -1948, -1935,
+ -1946, 5, 5, -1873, -1949, -1951, -1909, 0,
+ -663, -1955, 29, 29, 197, -1991, -1980, -1972,
+ -1968, -1965, -1964, 30, 211, -1964, 30, -1963,
+ -1970, 207, -1885, -1956, 207, -1061, -1978, -1889,
+ 24, -1950, 16, 212, -1986, -1984, -112, 212,
+ 19, -1979, -1987, -1989, -1983, 29, 27, -1998,
+ -1997, -1825, 98, -1623, -1988, 207, -2012, -2001,
+ -1985, -2005, -2004, 118, 118, -2009, -2008, 238,
+ 238, -2008, 238, -1966, 238, -2019, -2018, -1095,
+ -1977, -1947, 118, -2018, 118, 220, -2156, -2076,
+ -2049, -2030, -2027, -2029, 220, 145, -2032, 233,
+ -2034, 237, -2042, -2039, -2038, 239, 239, -2038,
+ 239, -2021, -2039, -2038, 30, -2044, 234, 30,
+ -2044, -2058, -2054, -2053, 239, 238, -2057, -2053,
+ -2045, 237, -2075, -2068, -2066, -2065, -2064, 237,
+ 237, 141, -2067, 237, -2072, -2053, -2041, -2017,
+ -2053, 238, 226, 207, -2103, -2097, -2090, -2083,
+ -2040, 239, -2074, -2087, -2040, 197, -2082, -2040,
+ 239, 250, -2094, -1721, -1875, -430, -1721, -2086,
+ 226, -1714, -1721, 239, -2096, -2095, 250, -2120,
+ -2114, -2109, -689, 29, -1875, -2111, -1875, -2113,
+ 122, 122, -2115, -2119, -4833, -2108, 250, 237,
+ -2139, -2125, -1721, -1875, -2102, -2136, -2129, -2018,
+ -2117, -2133, -2132, 239, 239, -2132, -2101, -1900,
+ -1095, 217, 248, -2141, 239, -2149, -2146, -2145,
+ 250, 239, -2145, -2144, -2138, -2146, -2145, -2135,
+ 226, -2909, 226, -2152, -2221, -2177, -2165, -1673,
+ -1729, -2162, 233, 98, -2155, -2170, -1702, 32,
+ 196, -2168, -2174, -3920, -2164, -2102, -2176, 149,
+ 149, -2190, -2184, -2183, -2182, -2151, 5, 5,
+ -1672, 207, -2107, -2134, -2071, 220, -2212, -2201,
+ -2196, -2195, 149, 149, -2200, 169, 207, 149,
+ 149, -2203, 206, -2209, -2206, 206, -2065, 141,
+ -2021, -2176, -2021, -2208, -2218, -2216, 191, 30,
+ -1910, 30, -2220, -2215, 5, -2239, -2234, -2231,
+ -2228, -2227, -2211, 149, -2227, -2215, -2219, -1509,
+ 148, -2217, -2238, -2227, 149, -2230, 149, -2250,
+ -2246, -1684, -2238, -2226, 109, -49, -2249, 191,
+ 109, 149, -2252, -49, -1687, 145, -2245, -2749,
+ -2610, -2548, -2459, -2325, -2271, -2264, -2263, 16,
+ -2266, -1913, -2270, -2269, 215, 215, 221, -2302,
+ -2300, -2297, -2286, -2280, -2279, 56, 112, 112,
+ -2283, 56, 112, -2285, 110, 112, -2292, -2290,
+ 138, 28, 138, 112, -2295, 138, 110, 112,
+ 138, 154, -2296, 110, 16, 56, 235, -2308,
+ -2306, 221, -2307, 221, -2320, -2315, -2312, 221,
+ -2314, 154, 154, -2317, -2294, -2314, 154, -2289,
+ -2307, -2323, 138, 138, -2284, -2373, -2354, -2341,
+ -2336, -2333, -2332, 118, 118, -2332, 118, -2265,
+ -2340, -1061, 216, -2243, 216, -2345, -2344, 215,
+ 215, -2352, -2350, -2349, -178, 217, 215, 217,
+ 215, 30, -2364, -2363, -2360, -2359, 215, 215,
+ -2359, 110, -2348, 118, -2366, 244, -2370, -2349,
+ 217, -2339, -2349, -2188, 0, -2395, -2391, -2386,
+ -2381, -1041, 112, 216, -118, -1061, 234, -212,
+ -2372, 28, -1061, -2338, 28, -2289, -2385, -2394,
+ -1037, -2384, 217, -2415, -2404, -2401, -2291, 30,
+ 135, -2291, 135, -2400, -2408, -2407, 133, 133,
+ -2412, -2411, 0, 133, -2411, 133, -2410, -2440,
+ -2421, 221, -2909, -154, 3, -2434, -2428, -2427,
+ -2426, 133, 133, 133, -2432, -2426, -154, 3,
+ 133, -154, -2437, 221, 3, -1037, -154, -2433,
+ -2444, -2443, 235, 235, -2452, -2447, 84, -2449,
+ 122, -2443, 235, -2430, -2456, -2427, -2419, -2403,
+ -2427, 133, -2393, -2492, -2472, -2462, -2465, 118,
+ 122, -2469, -2113, 122, 3, -2113, 122, 3,
+ -2484, -2482, -2477, 21, 24, -1889, -2480, 21,
+ 21, -2468, -2483, 133, -2490, 133, -2488, -2438,
+ 21, -2481, 133, 216, -2535, -2524, -2504, -2501,
+ -2498, 26, -2500, 26, 26, -2503, 133, 133,
+ -2508, -2506, 66, 84, -2516, -2513, -2413, 28,
+ -2489, -2413, -2458, 4, -2520, -2519, 84, 84,
+ -2522, -118, -2443, -908, -2530, -2528, 235, 99,
+ 133, -2154, -2532, 31, -2457, 133, 135, -2545,
+ -2538, 31, -2542, -2541, 3, 3, -2296, 31,
+ -2537, 50, 138, 154, -2582, -2568, -2562, -2556,
+ -2555, 50, -2534, 50, -2561, -2559, 154, -2560,
+ 154, 27, -110, -444, 190, -2153, -2554, -2531,
+ -2577, -2414, -2480, 27, -2523, -2514, -1995, -2371,
+ 226, -2580, 21, 212, -2581, 3, -2597, -2587,
+ -2586, -2579, 138, -2589, 98, -2594, -2314, -2592,
+ 138, 226, -2314, 154, 226, -2603, -2601, -2600,
+ 5, 99, 5, -2560, -2608, -2607, -2593, 154,
+ 0, -2585, -2667, -2642, -2630, -2623, -2615, -2358,
+ -2619, -2113, 31, -2113, 122, -2537, -2154, -2625,
+ 235, -2629, -2628, 137, 137, 235, -2638, -2620,
+ -2636, -2635, 137, 137, 145, -2622, 204, -2359,
+ 215, -2609, -2658, -2649, -2646, -2618, 191, 5,
+ 99, -2651, 122, -2657, -2654, 5, -2656, 5,
+ 5, 122, -2665, -2661, 31, -2662, -1687, -2645,
+ 90, -2628, 21, -2720, -2703, -2675, -2673, 154,
+ -2663, 72, 2, -2688, -2684, -2683, -2682, -2681,
+ 90, 154, 101, 154, -2686, -2672, -2687, 221,
+ -2701, -2696, -2694, -2693, 140, 137, 221, -2692,
+ -2700, -2318, 226, -2695, 154, -2269, 31, -2705,
+ -2537, -2714, -2711, -2709, -2699, 122, 140, -2318,
+ 154, 226, -2654, 5, -2074, -1117, 2, -2708,
+ -2726, -2724, 219, 5, -2314, -2685, -2739, -2735,
+ -2323, -2693, -2732, 137, 137, -2641, 0, -2736,
+ -2700, -2734, -2737, -2743, -2742, 122, 122, -2747,
+ -2746, 140, 235, 137, 235, -2983, -2812, -2764,
+ -2759, -2757, -2756, 12, 12, -2581, 34, -2760,
+ 0, -2763, -1020, 15, -2800, -2784, -2775, -2771,
+ -354, 2, -2762, 107, -2774, 3, 3, -2779,
+ -2777, -241, -2745, -2781, -2738, -2783, 107, 107,
+ -2793, 107, -2791, -2790, 97, 88, 97, -2792,
+ 97, -2796, -2795, 23, -1794, -2798, 126, 140,
+ -2806, 194, 195, -2805, 96, 96, -2809, -2808,
+ 126, -2811, 195, 195, -2893, -2870, -2854, -2841,
+ -2824, -2821, -2820, 177, 177, -2823, 195, 195,
+ -2830, -2829, -2828, 230, 230, 230, -2838, -2835,
+ -2834, 230, 230, -2834, -2692, -811, -2834, -2692,
+ -266, -2846, -2823, 195, -2837, 2, -2850, -2849,
+ 230, 230, -2852, 2, -2834, -2845, -2864, -2857,
+ 187, -2835, -2834, 230, -2844, -1561, -2780, -2733,
+ -2867, 102, 219, -2869, 219, 219, -2875, -2872,
+ -2874, 255, 138, -2884, -2879, 138, 154, -2881,
+ 255, -2314, 154, 255, -2886, 219, -2890, -2889,
+ 138, 138, -2889, 138, -2880, -2930, -2914, -2907,
+ -2897, -2901, -2900, 180, 180, -2905, -2904, 255,
+ 72, 180, 28, -2908, -2912, 234, -2892, -2873,
+ -16, 140, -2924, -2917, 255, -2922, -2920, 154,
+ 154, 140, -2889, -2921, -2927, -2926, 230, -2849,
+ -2916, -2911, -2939, -2935, -241, 88, 150, -2937,
+ -547, 230, 203, -2965, -2951, -2950, -2949, -2947,
+ -2829, 17, 140, -2829, -2936, 230, 186, -2955,
+ -2954, 203, 203, -2958, -2949, -2929, -2962, -2849,
+ 212, -2960, -2849, 212, -2960, -2969, -2968, 88,
+ 88, -2973, -2953, -2961, 111, -2981, -2978, -2977,
+ 127, 127, -2977, 111, -2972, -1600, -2971, -3090,
+ -3008, -2997, -2992, -2991, -2990, 212, 5, 137,
+ -2995, 137, 5, 5, 137, -2999, -2989, -3003,
+ 234, -2982, 196, -2746, -3006, 196, 137, 100,
+ -3076, -3049, -3015, -3013, -3002, -3014, 102, -3046,
+ -3028, -3026, -3023, -3022, 187, 219, 219, -3025,
+ -3001, 219, -3027, 219, -3039, -3035, -3033, 219,
+ 102, 102, 241, -3038, -3025, -979, 102, -3043,
+ -2868, 140, 255, -2868, 219, -3042, -3047, -3025,
+ 248, -3058, 102, 26, -3055, 174, 248, -3057,
+ -3048, 154, -3061, 176, 174, -3069, -3066, -2314,
+ -3045, -3041, -2314, 154, 140, -3071, 138, -3074,
+ 138, -3068, -2314, -3068, -3082, -3078, -3079, -3081,
+ 26, 26, -3086, -3084, -3085, 117, -3081, 25,
+ 177, -3073, -3169, -3121, -3108, -3098, -3096, 88,
+ 15, 22, -3105, -3103, -1750, 22, 248, 15,
+ 22, -3107, 15, 15, -3114, -2820, -3112, -3102,
+ 177, -3111, -3118, -3117, 117, 117, -3117, 196,
+ -3119, -3141, -1600, -3135, -3128, -1504, -3113, -3089,
+ -3132, -1637, -441, -418, -1637, 117, -3130, -3137,
+ 140, -2950, 186, -3136, -433, -3149, -3116, -3145,
+ 140, -2919, -499, -3140, -3134, -3152, 176, 180,
+ -3158, -3156, 117, 245, 245, -3127, -3166, -3163,
+ -3162, -3065, 117, -3162, -3024, -2957, -3167, 245,
+ -2863, -3198, -3191, -3180, -3179, -3176, 25, -2575,
+ -3117, 117, -1864, 101, -3179, -3187, -1641, -1642,
+ 134, -2723, -3185, -1637, 26, 125, 125, -2635,
+ -3194, -3189, -3196, -3188, 137, -3186, -3208, -3201,
+ 125, -3205, -2909, 66, -3200, -1509, 151, 151,
+ 117, 137, -3206, -4626, -3901, -3567, -3380, -3288,
+ -3280, -3253, -3232, -3227, -3222, 73, -3226, -3225,
+ 231, 231, 246, -3231, -3230, 246, 246, 108,
+ -3240, -3235, 236, -3237, 236, -3239, 236, 236,
+ -3250, -3239, -3246, -3245, 236, 236, -3245, 151,
+ -3206, -3210, -3252, 99, 236, -3260, -3258, -3256,
+ -3238, -3251, 26, 236, -3273, -3266, -3265, 147,
+ -3249, 147, -3270, -2861, 151, 76, -3239, -3264,
+ -3251, -3277, -3276, 147, 147, -3276, 99, -3251,
+ -3286, -3282, 125, -3081, 26, 76, -3287, 35,
+ -3327, -3318, -3311, -3301, -3299, -3297, -3296, 25,
+ 25, 25, 64, 86, 25, -3306, -3305, 86,
+ 102, 86, -3308, 102, -3310, -3279, 102, -3317,
+ -3014, -1402, -3272, 157, 157, 102, -3321, 26,
+ 125, -3323, 26, -3325, -3315, 26, 25, -3339,
+ -3331, 178, 86, -3337, -3335, 26, 219, 26,
+ 66, -3338, 236, -3022, -3364, -3359, -3353, -3351,
+ -3348, -3014, 66, 99, -3014, 99, -2527, -3352,
+ 147, -3357, -3356, 147, 147, 147, 102, -3265,
+ -3358, 102, -3347, -3336, -3372, -3369, -3239, -3314,
+ -3271, -3239, 236, -3204, -3369, -3239, 236, -3197,
+ -745, 24, 158, 90, -3430, -3403, -3396, -3393,
+ -3388, -1794, 126, -3378, -3392, -3391, 126, 126,
+ 126, -3395, 74, 74, -3402, -3400, 146, -3377,
+ 195, 146, 146, -3413, -3410, 22, -3409, 86,
+ 146, 86, -3411, 86, 22, -3420, -3418, -3416,
+ 25, -1902, -3419, 35, 126, -3428, -3425, 25,
+ 35, -3287, 35, -3377, 86, 35, -3546, -3507,
+ -3457, -3438, -3435, -3436, 236, 147, -3443, -3442,
+ 12, 146, 116, -3446, 146, 236, -3449, 116,
+ 35, -3452, 116, -3429, -3454, 236, -3239, 236,
+ 35, -3473, -3465, -3463, -3462, 35, 35, -3464,
+ 35, -3472, -3469, 86, 35, -3426, -3456, 125,
+ 86, -3496, -3491, -3481, -3480, -3479, 231, 231,
+ 77, -3484, -3265, 125, -3277, -3276, 147, -3471,
+ -4717, -3470, -3451, -3495, -3265, 147, 3, 147,
+ -3504, -3277, -3276, 147, 2, -3681, 2, -3500,
+ -3495, -3494, -3490, -3529, -3493, -3525, -3518, -3515,
+ -3437, 147, -3427, -3437, 0, -2410, -3515, -3437,
+ 147, -3494, 184, -2410, -2471, -3437, 147, 0,
+ 3, -3542, -3537, -3535, -3534, 74, 74, 74,
+ 62, -3539, 18, -3541, 116, 116, -3486, -3520,
+ -3524, -3521, -3565, -3562, -3550, 35, -3558, -3555,
+ -3554, 35, 35, -3554, -3456, -3549, -3553, 150,
+ 0, -2734, -3563, 35, -1951, -3566, 125, -3662,
+ -3642, -3595, -3574, -3573, 132, 20, -3586, -3582,
+ -3579, 32, -3557, -1635, 34, -3545, -1461, 132,
+ 32, -3514, -630, -3590, 34, 22, 22, -3593,
+ -3399, 153, -3375, -3600, -3599, 78, 156, 78,
+ -3608, -3607, -3604, 132, -3606, 132, 132, 94,
+ -3631, -3611, 34, -3613, 150, -3616, -3615, 150,
+ -3627, -3625, -3622, -1056, 158, -3378, -1056, 34,
+ 158, -3615, -3378, -3630, -3623, 158, 33, -3632,
+ -3636, -3635, 33, 33, -3640, -3639, 33, 33,
+ 132, -3378, -3653, -3648, -3647, -3646, 33, 126,
+ -3651, 254, -3626, -1477, -3621, -3657, -3536, 91,
+ -3652, -3659, -3656, -3660, -3646, 240, -3842, -3776,
+ -3715, -3688, -3683, -3462, -3680, -3673, -3480, 77,
+ 240, -3677, -3472, 86, -3672, -3472, -3661, -3658,
+ 64, 158, 240, -3686, 20, 35, -3287, -3661,
+ -3700, -3697, -3694, -3693, 156, 156, -3693, 156,
+ -3681, -3699, 144, 144, -3711, -3709, -3706, -3705,
+ 158, 35, -3705, 158, -3704, 144, 35, -3713,
+ 144, 77, -3226, -3730, -3725, -3573, -3721, -3649,
+ -3696, -3723, -3679, 156, -2653, -3729, -3501, 35,
+ -3429, 144, -3767, -3739, -3736, -3735, 74, 33,
+ -3534, -3728, -3724, -3760, -3748, -3745, -3744, 77,
+ 77, -3744, -3553, -3448, -3757, -3635, -3754, -3753,
+ 81, 33, 74, 33, -3747, -3759, 78, 78,
+ -3764, -3763, -3746, 144, -3763, 144, -3738, -3775,
+ -3772, -3573, 20, -3722, -3573, 20, 125, 78,
+ -3799, -3788, -3786, -3783, -1522, 125, -3774, -1522,
+ 148, -3189, 20, 7, -3796, -3791, 57, -3723,
+ -3794, -3556, 156, -3785, -3797, -3798, 156, -3813,
+ -3809, 35, -1438, -3805, -3429, -3807, 25, 25,
+ 108, -3810, -3812, 240, 240, -3821, -3817, 240,
+ -3804, 35, -3661, 240, -3795, -3829, -3828, -3826,
+ 35, 144, -3705, -2723, 240, -3831, 156, -3835,
+ -3819, 240, 99, -3839, -3798, -3827, 246, -3798,
+ 156, -3230, -3873, -3854, -3851, 33, -3850, -3849,
+ 32, 32, 13, -3623, 20, -3837, -3867, -3858,
+ -3857, 144, -3866, -3836, -3798, 156, 35, 241,
+ -3862, -3230, 156, -3870, 33, 68, -3872, 99,
+ 34, -3884, -3875, -3881, -3878, 150, -3554, -3853,
+ -3188, -3705, 26, 178, -3891, 150, -3890, -3889,
+ 234, 234, 155, -3897, -3894, -3880, -3896, -3838,
+ 35, -3898, -1056, -3838, -3895, -4208, -4124, -3965,
+ -3939, -3928, -3911, 153, -3910, 114, 114, -3913,
+ 114, -3923, -3604, -3917, 105, -3919, 114, 114,
+ -4838, -3278, 91, -3919, -566, 91, -3922, 246,
+ -535, -3932, -3931, 105, -3936, -543, 105, 91,
+ 93, -3922, -3927, -3950, -3946, -3943, 85, -3945,
+ -3926, 153, -668, -3948, 153, 99, -3953, 114,
+ -3921, -3958, -3955, -3910, 114, -3879, -3962, -3961,
+ 114, 114, -3961, -3820, -3771, -4040, -4025, -4014,
+ -4002, -3976, -3975, -3974, 94, 59, 94, 95,
+ -3994, -3983, -3981, -3980, 95, -3630, -3594, -3987,
+ 71, 94, 33, -3991, -3980, 95, 157, -3980,
+ 95, 157, -3999, -3996, -3998, -3990, 95, -3992,
+ 208, -4000, -4004, 23, -4007, 17, 153, -4011,
+ -222, 153, 255, -222, 153, -3042, -4020, -3630,
+ -4018, -4001, 153, 111, -3623, -3593, -4019, 125,
+ 111, -4036, -4031, -4030, -2734, -4023, 0, -4033,
+ 125, -1056, 3, -4034, -4039, -4038, 95, 150,
+ -4096, -4071, -4054, -4048, 153, -3607, 94, 2,
+ -4052, -3948, -4035, -4032, -3948, -4029, -4058, -3918,
+ -4017, 157, -4064, -4063, -4062, 94, 94, 153,
+ -4068, -3681, -3993, 157, -3961, 114, -3993, -4079,
+ -4074, 17, -4077, 95, 222, -4078, 222, -4069,
+ -4088, -4085, -4084, 222, 222, -4084, 222, -4066,
+ -4090, 157, -4092, 21, -4094, -4087, 222, 21,
+ -4122, -4104, -4100, 68, -4102, -4095, 33, 34,
+ 95, -4116, -4112, -4111, -4110, -4093, 34, 150,
+ 150, -4110, 100, 100, -4120, -1056, -4115, -4114,
+ 150, -4109, -574, 157, -4148, -4143, -4136, 255,
+ -4131, 17, 28, -2388, -2934, -4123, 90, -4134,
+ -4140, -4139, 157, 150, -4139, 150, -4133, -4146,
+ -3442, -3377, -4147, 116, -4167, -4152, -102, 24,
+ -4164, -4159, -4157, 23, 110, -77, -4145, -211,
+ 232, -4142, -4121, -4056, -344, 111, 157, -3992,
+ -4194, -4187, -4185, -4175, -3975, 95, -4166, -4178,
+ 222, 131, -4182, -4094, 21, -4180, -4094, -4174,
+ 125, -4186, 209, -4164, -344, 131, 21, -3681,
+ -4183, 220, -4199, -4197, 110, -4198, 209, -4203,
+ -344, 220, -4193, -4205, 110, 110, 131, -3494,
+ -4322, -4240, -4226, -4220, -1870, -4217, 18, 0,
+ 220, 18, 208, 125, -4224, -4223, 208, 146,
+ -4225, 146, -4238, -4236, -4232, -4231, -4219, 0,
+ -4235, 107, -4216, 107, 107, -4207, -3391, -4202,
+ -4278, -4266, -4255, -4248, -3252, 28, -4239, -4192,
+ -4251, -3453, -2581, -4253, 146, -4254, 236, -4261,
+ -4258, 220, -4225, 146, -4257, -3566, -4264, -4201,
+ 146, -4250, -4273, -4271, -4065, 220, -4269, -3252,
+ -2581, -4275, -4265, -3453, 236, -3494, -4291, -4280,
+ -4284, -3370, -3990, -3990, -4286, -4282, -3370, -3453,
+ -4277, 236, -3252, -4309, -4297, -3453, -4295, 146,
+ -3250, -4304, -4301, 3, -4288, 236, 3, -4274,
+ -3453, -4307, 236, 236, -4247, -4315, -4313, 194,
+ -3245, -2581, 76, -4317, -4314, -4319, 3, -2581,
+ -4312, -4308, -4501, -4468, -4412, -4353, -4332, -3541,
+ -4330, 181, 181, -2581, -4334, 98, -4342, -4339,
+ -4225, 111, -4337, -4225, -4338, -4333, -4348, -4347,
+ 151, -4331, 21, 146, -4350, 202, -4225, 146,
+ -4180, -4365, -4362, -4359, -4358, 71, 71, 116,
+ -3394, 182, -3395, 74, -4345, -4379, -4376, -4371,
+ -4370, 71, 71, -4375, -3992, 95, -4321, 209,
+ -4198, -4163, 157, -4383, -4381, -4147, -4378, -4408,
+ -4403, -4393, -4390, 158, 157, 157, -4198, 209,
+ -4388, -4400, -4398, -4397, 209, 209, 202, 255,
+ -4402, 202, 202, -4405, 116, -4147, 116, -3042,
+ -4410, 209, -4147, -4407, -4450, -4429, -4416, 209,
+ -4426, -4420, 198, -4392, -4423, 198, 110, -4204,
+ 110, 255, -4198, -4399, -4392, -4446, -4443, -4438,
+ -4436, -2289, -4419, -4382, 110, 28, -4442, -4437,
+ 28, 157, 110, -4445, -4389, 209, -4448, -4378,
+ -2289, -4378, -4463, -4457, -4456, -2385, -4447, -4444,
+ 116, -4459, 116, -4461, -3629, -4225, -4435, -4466,
+ 188, 208, 188, -1883, -4490, -4482, -4474, -4349,
+ 202, -4467, -4480, -4478, 146, 220, 220, 146,
+ -4347, -4462, 188, -4489, -4487, 30, 255, 220,
+ 108, 220, -4495, 119, -4494, 109, 109, -4497,
+ 198, -4500, -4499, 119, 119, -4561, -4531, -4506,
+ -222, 108, -4509, -4508, 93, -4529, -4520, -4517,
+ -4514, 23, -4516, 107, 107, -294, -4488, -3774,
+ -4522, 110, -4526, -118, -4486, 158, -118, 158,
+ -4525, 30, 125, -4543, -4538, -4536, 30, 119,
+ 119, -4528, -4540, 30, -178, 30, -4524, -4544,
+ -4554, -4499, -4551, 119, -2215, 30, -4481, 110,
+ 241, 241, -4557, 30, -4552, -4560, 30, 158,
+ 119, -4595, -4584, -4576, -4569, -4567, -4559, 71,
+ 202, -4574, 126, -4573, 188, 188, -4575, 126,
+ -4581, -1795, 126, 158, -4559, -1795, -4579, -4566,
+ -4588, 126, -222, -4556, -2798, -4592, 107, 93,
+ 93, 158, 255, -4607, -4606, -4605, -3391, -4601,
+ -4587, -4347, -4593, 151, -4603, 146, 202, -4617,
+ -4347, -4613, -4500, 119, 158, -4500, 119, -3378,
+ -4604, -4575, -4622, -4500, -4602, -4600, -4500, 100,
+ 140, 255, -3178, -4802, -4839, -4733, -4686, -4662,
+ -4651, -4640, -4638, -4637, -4624, 149, 141, 229,
+ -4648, -4647, -4646, -4645, 229, 229, 141, 229,
+ -4650, -4623, 229, -4658, -4656, 128, 149, 155,
+ 128, 149, -4660, -4621, 206, -4550, -4665, -1906,
+ 241, -3681, -4680, -4673, -4672, -4671, 254, 254,
+ 128, -4677, -4671, 254, -4566, -4671, 254, 151,
+ -4683, 240, -4676, 240, -3707, -4682, -4713, -4711,
+ -4696, -4694, -4692, 158, -4693, 19, 229, 19,
+ -4704, -4701, -4700, 241, 229, -4700, -4559, -4699,
+ -4701, 225, 229, -4703, -4387, -4685, 66, 141,
+ 225, -4719, -4716, 206, -4645, 229, 246, -4723,
+ -4645, 246, 246, -4726, -4700, -4721, -4701, -3681,
+ 108, -4728, -4268, 108, -4728, -4807, -4753, -4740,
+ -4672, -2175, -4729, 108, -4743, 13, 91, -4746,
+ -1020, 108, -4749, -1014, -4728, -4751, -4742, -1014,
+ -4738, -4786, -4778, -4773, -4770, -4763, -4762, -4761,
+ 155, 155, 155, -4767, -4761, 155, -4725, -4761,
+ -4718, 246, -4772, -4768, 5, 155, -4775, -3727,
+ 158, -3620, -4782, -4781, 35, 35, -4775, 254,
+ -4777, -4771, -4797, -4793, -4792, -3849, 32, -4709,
+ 34, -4796, -3890, -4661, 155, -4800, -3857, -4377,
+ -3894, -3896, -3982, 241, 254, -4803, -4805, -4820,
+ -4817, -4812, 234, -811, -1561, 128, -4783, 234,
+ -4806, -4818, -4762, 24, -4834, -3681, -4828, -4827,
+ -4826, -4819, 155, 155, -4832, -4826, 155, -4825,
+ 254, -4816, -4767, -4803, -4730, 151, -4835, -2116,
+ -3376, -3726,
+};
+
+static long _vq_p_res0_0c[] = {
+ 4, 544, 60, 664, 172, 188, 24, 224,
+ 24, 60, 220, 220, 24, 24, 220, 220,
+ 288, 172, 172, 172, 44, 216, 216, 216,
+ 220, 220, 220, 220, 220, 44, 288, 224,
+ 224, 224, 760, 188, 188, 188, 220, 188,
+ 188, 188, 988, 220, 220, 812, 812, 440,
+ 220, 788, 288, 288, 172, 288, 172, 220,
+ 216, 216, 216, 216, 988, 144, 172, 144,
+ 144, 144, 144, 1008, 516, 172, 172, 760,
+ 144, 144, 144, 144, 144, 372, 44, 44,
+ 44, 188, 188, 188, 188, 188, 788, 788,
+ 368, 216, 216, 216, 492, 368, 492, 4,
+ 224, 224, 24, 24, 24, 524, 452, 4,
+ 4, 288, 448, 4, 64, 4, 4, 4,
+ 64, 688, 288, 452, 172, 1012, 440, 440,
+ 224, 24, 224, 44, 44, 68, 108, 688,
+ 872, 120, 24, 220, 216, 24, 24, 216,
+ 216, 216, 68, 220, 220, 220, 220, 220,
+ 368, 428, 664, 108, 24, 24, 664, 664,
+ 224, 224, 120, 224, 24, 216, 216, 216,
+ 224, 68, 44, 44, 44, 492, 108, 636,
+ 664, 636, 120, 664, 636, 636, 216, 216,
+ 216, 68, 872, 776, 776, 368, 216, 320,
+ 320, 320, 440, 216, 384, 368, 776, 320,
+ 384, 220, 220, 220, 220, 220, 44, 44,
+ 44, 332, 144, 368, 144, 92, 144, 144,
+ 332, 332, 92, 92, 68, 44, 16, 936,
+ 68, 540, 44, 44, 44, 108, 92, 92,
+ 348, 368, 352, 144, 144, 144, 188, 188,
+ 188, 516, 988, 320, 220, 220, 220, 348,
+ 352, 320, 60, 352, 188, 188, 188, 812,
+ 188, 996, 812, 188, 188, 332, 332, 384,
+ 384, 220, 220, 220, 220, 384, 384, 220,
+ 220, 220, 124, 412, 352, 352, 412, 332,
+ 384, 332, 216, 216, 332, 220, 144, 144,
+ 368, 144, 412, 368, 368, 144, 92, 92,
+ 92, 92, 428, 368, 368, 368, 368, 368,
+ 384, 188, 188, 220, 188, 188, 216, 188,
+ 188, 716, 996, 332, 384, 384, 648, 216,
+ 216, 648, 996, 716, 996, 332, 452, 216,
+ 216, 216, 996, 332, 368, 368, 996, 476,
+ 384, 300, 300, 220, 452, 368, 368, 996,
+ 476, 384, 452, 776, 776, 300, 220, 220,
+ 440, 384, 384, 788, 672, 428, 672, 332,
+ 320, 320, 320, 384, 384, 384, 384, 384,
+ 428, 776, 144, 60, 480, 196, 240, 276,
+ 240, 168, 168, 240, 240, 168, 168, 168,
+ 168, 276, 276, 196, 196, 196, 196, 276,
+ 68, 480, 276, 276, 356, 528, 60, 196,
+ 196, 196, 196, 288, 60, 60, 168, 168,
+ 168, 196, 196, 68, 196, 288, 168, 168,
+ 168, 168, 168, 524, 332, 144, 144, 144,
+ 144, 144, 784, 508, 168, 168, 480, 168,
+ 168, 168, 680, 680, 480, 480, 788, 240,
+ 240, 784, 144, 144, 144, 144, 144, 784,
+ 60, 328, 4, 4, 4, 60, 44, 328,
+ 328, 352, 504, 60, 352, 60, 60, 680,
+ 60, 60, 680, 328, 508, 508, 680, 288,
+ 288, 680, 508, 508, 812, 680, 672, 672,
+ 168, 144, 144, 168, 168, 852, 144, 144,
+ 168, 144, 144, 144, 672, 672, 340, 340,
+ 372, 276, 276, 276, 240, 168, 168, 672,
+ 332, 240, 240, 412, 276, 168, 340, 332,
+ 168, 168, 168, 332, 852, 480, 680, 680,
+ 240, 240, 240, 680, 340, 340, 420, 680,
+ 372, 340, 340, 420, 276, 276, 276, 420,
+ 340, 340, 648, 276, 276, 340, 372, 372,
+ 92, 144, 144, 144, 144, 648, 372, 372,
+ 92, 92, 92, 560, 504, 372, 68, 372,
+ 420, 276, 276, 276, 68, 420, 420, 480,
+ 144, 276, 680, 144, 356, 372, 420, 44,
+ 16, 680, 44, 680, 672, 56, 56, 276,
+ 672, 196, 4, 168, 168, 168, 168, 4,
+ 68, 4, 4, 4, 816, 288, 288, 412,
+ 356, 168, 168, 644, 496, 196, 644, 356,
+ 496, 196, 196, 288, 276, 168, 56, 276,
+ 168, 168, 644, 644, 56, 56, 356, 644,
+ 56, 168, 168, 56, 168, 168, 644, 356,
+ 680, 680, 276, 276, 560, 340, 528, 276,
+ 240, 240, 240, 124, 276, 124, 412, 56,
+ 56, 496, 496, 164, 164, 164, 164, 412,
+ 240, 240, 56, 56, 412, 56, 44, 168,
+ 168, 168, 44, 44, 496, 56, 56, 108,
+ 44, 8, 108, 332, 16, 164, 208, 280,
+ 844, 816, 268, 268, 212, 212, 212, 212,
+ 844, 268, 268, 332, 268, 268, 280, 268,
+ 212, 268, 212, 64, 108, 424, 164, 268,
+ 56, 56, 56, 268, 76, 648, 164, 648,
+ 268, 348, 56, 164, 164, 56, 56, 76,
+ 348, 484, 164, 768, 164, 164, 164, 424,
+ 76, 208, 208, 208, 208, 348, 76, 648,
+ 268, 212, 212, 212, 76, 76, 896, 268,
+ 212, 268, 424, 212, 424, 820, 212, 820,
+ 844, 900, 332, 424, 484, 268, 424, 348,
+ 424, 208, 348, 348, 208, 820, 820, 208,
+ 208, 212, 212, 208, 208, 208, 40, 8,
+ 416, 416, 56, 76, 56, 56, 56, 208,
+ 76, 76, 348, 108, 8, 928, 108, 348,
+ 772, 772, 348, 348, 348, 772, 416, 520,
+ 820, 416, 416, 520, 820, 520, 372, 852,
+ 44, 852, 168, 168, 852, 168, 900, 644,
+ 644, 172, 644, 360, 644, 44, 44, 852,
+ 240, 644, 644, 372, 44, 360, 544, 540,
+ 56, 300, 240, 164, 164, 520, 56, 520,
+ 164, 164, 300, 168, 168, 648, 56, 240,
+ 648, 300, 300, 300, 300, 852, 648, 340,
+ 648, 268, 240, 172, 168, 168, 172, 172,
+ 484, 856, 240, 240, 520, 484, 844, 56,
+ 816, 68, 268, 268, 648, 484, 844, 844,
+ 648, 484, 56, 56, 44, 44, 44, 680,
+ 108, 856, 540, 348, 768, 768, 164, 164,
+ 164, 164, 648, 348, 300, 300, 648, 348,
+ 648, 768, 648, 300, 300, 300, 348, 348,
+ 760, 348, 348, 760, 760, 648, 56, 56,
+ 56, 348, 416, 348, 644, 416, 348, 644,
+ 644, 416, 644, 300, 484, 268, 484, 164,
+ 644, 240, 852, 856, 240, 644, 300, 300,
+ 300, 852, 768, 648, 164, 164, 164, 644,
+ 936, 300, 300, 600, 240, 240, 520, 520,
+ 856, 416, 416, 416, 416, 820, 540, 856,
+ 856, 268, 268, 600, 844, 844, 844, 520,
+ 896, 856, 820, 820, 820, 856, 484, 484,
+ 520, 820, 796, 360, 360, 484, 484, 360,
+ 908, 896, 896, 360, 212, 200, 40, 108,
+ 84, 200, 84, 40, 40, 40, 416, 416,
+ 688, 688, 64, 520, 416, 40, 40, 40,
+ 40, 40, 416, 84, 52, 688, 520, 728,
+ 688, 800, 728, 728, 8, 800, 416, 416,
+ 416, 8, 8, 76, 684, 804, 804, 684,
+ 684, 684, 688, 688, 800, 868, 864, 448,
+ 200, 64, 728, 200, 200, 200, 200, 728,
+ 688, 684, 684, 684, 76, 688, 684, 684,
+ 600, 800, 688, 688, 64, 64, 520, 64,
+ 64, 448, 688, 728, 52, 800, 688, 52,
+ 756, 52, 804, 756, 756, 8, 800, 928,
+ 280, 212, 212, 212, 212, 212, 800, 520,
+ 280, 280, 844, 816, 64, 64, 520, 816,
+ 64, 64, 64, 928, 804, 360, 800, 800,
+ 800, 804, 804, 44, 172, 688, 172, 172,
+ 172, 172, 64, 688, 360, 736, 172, 4,
+ 4, 736, 44, 44, 44, 44, 736, 64,
+ 796, 208, 208, 804, 172, 64, 360, 172,
+ 172, 172, 844, 816, 816, 736, 688, 800,
+ 64, 736, 76, 688, 688, 736, 804, 656,
+ 800, 800, 656, 656, 64, 64, 208, 844,
+ 800, 800, 800, 800, 208, 820, 820, 820,
+ 844, 76, 172, 172, 172, 172, 656, 796,
+ 656, 736, 416, 416, 572, 484, 424, 820,
+ 820, 348, 348, 348, 760, 664, 664, 664,
+ 664, 664, 664, 664, 664, 664, 492, 332,
+ 224, 684, 684, 756, 756, 756, 648, 840,
+ 760, 392, 392, 648, 756, 760, 760, 760,
+ 492, 756, 756, 756, 332, 756, 756, 996,
+ 840, 412, 872, 636, 544, 760, 412, 216,
+ 216, 348, 872, 492, 492, 348, 1004, 872,
+ 332, 120, 216, 216, 332, 332, 996, 492,
+ 224, 912, 172, 804, 172, 172, 996, 768,
+ 684, 684, 684, 768, 688, 348, 348, 688,
+ 688, 688, 452, 756, 756, 224, 224, 300,
+ 688, 300, 300, 756, 684, 684, 300, 688,
+ 688, 688, 300, 56, 756, 348, 56, 684,
+ 688, 756, 172, 172, 424, 756, 756, 756,
+ 768, 908, 172, 172, 172, 164, 164, 44,
+ 44, 172, 172, 44, 44, 44, 164, 492,
+ 772, 772, 172, 772, 688, 348, 760, 760,
+ 164, 416, 416, 416, 416, 348, 912, 912,
+ 820, 84, 728, 224, 200, 664, 200, 200,
+ 200, 200, 200, 164, 684, 684, 772, 224,
+ 348, 684, 664, 664, 664, 664, 664, 728,
+ 164, 684, 684, 684, 348, 688, 56, 796,
+ 164, 244, 200, 728, 244, 392, 728, 728,
+ 164, 84, 200, 200, 200, 164, 448, 684,
+ 684, 164, 664, 224, 244, 56, 688, 244,
+ 164, 688, 416, 688, 416, 56, 684, 736,
+ 244, 332, 728, 688, 332, 728, 1012, 736,
+ 772, 648, 916, 648, 244, 728, 728, 728,
+ 244, 648, 796, 648, 332, 392, 648, 416,
+ 332, 904, 904, 124, 116, 356, 536, 80,
+ 276, 152, 152, 152, 80, 152, 152, 152,
+ 152, 152, 460, 80, 80, 28, 28, 28,
+ 932, 356, 356, 356, 80, 128, 496, 244,
+ 116, 28, 28, 528, 196, 196, 356, 196,
+ 196, 196, 196, 80, 80, 80, 460, 356,
+ 460, 460, 196, 648, 996, 276, 512, 332,
+ 996, 356, 332, 772, 80, 504, 356, 356,
+ 356, 356, 892, 496, 68, 68, 68, 256,
+ 732, 28, 28, 28, 36, 80, 260, 260,
+ 56, 36, 36, 36, 256, 256, 256, 256,
+ 260, 468, 732, 732, 732, 100, 204, 28,
+ 460, 204, 256, 256, 256, 256, 256, 56,
+ 312, 312, 312, 56, 80, 68, 244, 80,
+ 260, 260, 244, 244, 260, 260, 196, 196,
+ 196, 196, 196, 56, 260, 504, 260, 504,
+ 60, 56, 260, 36, 36, 260, 260, 348,
+ 356, 60, 60, 36, 356, 892, 204, 196,
+ 496, 512, 348, 8, 196, 196, 196, 8,
+ 892, 460, 648, 356, 332, 460, 460, 648,
+ 204, 204, 204, 8, 260, 260, 260, 356,
+ 76, 4, 4, 4, 356, 288, 288, 76,
+ 496, 8, 260, 744, 260, 1012, 8, 56,
+ 744, 196, 196, 8, 928, 56, 332, 60,
+ 196, 196, 332, 60, 68, 196, 196, 288,
+ 56, 244, 36, 36, 36, 36, 244, 512,
+ 68, 244, 204, 204, 204, 260, 260, 732,
+ 204, 204, 260, 128, 732, 744, 204, 56,
+ 732, 732, 744, 732, 56, 56, 260, 460,
+ 76, 460, 536, 580, 460, 204, 204, 204,
+ 52, 52, 36, 536, 180, 180, 180, 36,
+ 36, 36, 52, 404, 116, 28, 28, 180,
+ 180, 116, 28, 28, 28, 52, 204, 52,
+ 180, 204, 180, 180, 180, 204, 204, 732,
+ 732, 732, 536, 180, 76, 404, 404, 772,
+ 204, 204, 772, 932, 536, 76, 76, 4,
+ 4, 4, 4, 4, 36, 52, 288, 288,
+ 404, 404, 816, 496, 268, 496, 268, 268,
+ 816, 816, 496, 656, 496, 496, 496, 656,
+ 932, 128, 656, 404, 404, 404, 816, 536,
+ 180, 180, 180, 656, 656, 256, 256, 36,
+ 36, 36, 36, 520, 244, 60, 60, 80,
+ 28, 152, 152, 28, 28, 28, 244, 52,
+ 256, 256, 256, 52, 80, 244, 244, 80,
+ 80, 244, 88, 88, 100, 612, 80, 80,
+ 80, 80, 80, 420, 52, 164, 420, 164,
+ 164, 356, 52, 92, 60, 60, 60, 60,
+ 92, 88, 88, 92, 88, 88, 244, 76,
+ 4, 4, 60, 60, 60, 772, 4, 36,
+ 4, 108, 4, 4, 4, 208, 64, 64,
+ 208, 36, 36, 116, 268, 268, 268, 208,
+ 208, 64, 772, 4, 4, 4, 208, 28,
+ 28, 28, 656, 268, 268, 656, 656, 116,
+ 76, 76, 76, 656, 108, 108, 648, 56,
+ 648, 76, 648, 356, 80, 56, 80, 56,
+ 52, 76, 528, 80, 56, 56, 300, 356,
+ 656, 880, 56, 56, 56, 56, 612, 108,
+ 120, 112, 116, 788, 40, 564, 212, 212,
+ 212, 208, 208, 112, 212, 76, 96, 160,
+ 160, 40, 208, 208, 208, 76, 40, 40,
+ 40, 832, 8, 76, 848, 328, 8, 828,
+ 828, 396, 396, 76, 76, 328, 824, 96,
+ 96, 328, 96, 656, 656, 656, 76, 208,
+ 208, 208, 916, 76, 112, 328, 656, 268,
+ 268, 76, 672, 76, 824, 28, 28, 76,
+ 796, 672, 672, 164, 328, 824, 28, 28,
+ 28, 28, 824, 848, 20, 76, 120, 8,
+ 76, 76, 76, 828, 328, 212, 40, 212,
+ 64, 212, 212, 788, 64, 268, 156, 156,
+ 212, 212, 268, 156, 96, 40, 40, 160,
+ 160, 788, 160, 444, 268, 268, 268, 392,
+ 64, 392, 180, 64, 328, 108, 160, 268,
+ 268, 268, 156, 796, 156, 180, 180, 96,
+ 156, 180, 180, 180, 828, 280, 280, 280,
+ 472, 828, 828, 392, 280, 280, 280, 280,
+ 392, 156, 816, 64, 64, 120, 976, 764,
+ 180, 764, 732, 180, 392, 764, 268, 268,
+ 976, 976, 180, 180, 180, 180, 948, 580,
+ 580, 392, 932, 932, 392, 664, 1012, 636,
+ 636, 268, 268, 268, 268, 948, 564, 564,
+ 636, 932, 764, 764, 764, 764, 764, 764,
+ 828, 828, 564, 596, 828, 828, 636, 636,
+ 564, 564, 412, 396, 404, 180, 180, 976,
+ 976, 976, 788, 180, 180, 760, 760, 404,
+ 404, 784, 976, 976, 784, 784, 404, 784,
+ 760, 268, 268, 268, 156, 156, 392, 180,
+ 180, 268, 180, 180, 392, 828, 760, 180,
+ 180, 472, 976, 828, 736, 760, 636, 472,
+ 280, 268, 268, 636, 636, 280, 816, 280,
+ 636, 280, 280, 280, 472, 976, 392, 784,
+ 976, 976, 784, 828, 828, 976, 976, 976,
+ 992, 952, 948, 328, 328, 472, 472, 328,
+ 784, 512, 392, 392, 824, 76, 268, 268,
+ 268, 268, 564, 328, 328, 28, 28, 28,
+ 328, 156, 128, 916, 156, 784, 656, 656,
+ 564, 932, 36, 180, 28, 392, 180, 36,
+ 28, 180, 28, 328, 760, 112, 28, 28,
+ 28, 28, 28, 676, 180, 180, 180, 180,
+ 764, 676, 676, 824, 764, 764, 824, 824,
+ 112, 764, 436, 436, 824, 676, 676, 440,
+ 396, 436, 180, 436, 676, 28, 28, 28,
+ 28, 28, 440, 592, 676, 788, 788, 676,
+ 676, 636, 204, 204, 204, 636, 932, 180,
+ 180, 932, 180, 636, 328, 328, 676, 676,
+ 672, 580, 204, 672, 676, 676, 672, 160,
+ 200, 532, 24, 224, 816, 160, 160, 4,
+ 64, 672, 860, 4, 4, 816, 4, 160,
+ 160, 160, 24, 160, 160, 160, 160, 200,
+ 24, 24, 24, 200, 788, 224, 160, 160,
+ 160, 440, 336, 336, 200, 200, 68, 336,
+ 336, 552, 24, 156, 24, 24, 336, 24,
+ 24, 24, 448, 860, 336, 336, 884, 336,
+ 336, 336, 552, 884, 156, 860, 860, 156,
+ 448, 448, 448, 884, 156, 472, 160, 96,
+ 160, 160, 160, 160, 96, 40, 40, 156,
+ 40, 40, 40, 156, 472, 160, 160, 160,
+ 472, 64, 64, 64, 636, 860, 472, 472,
+ 816, 760, 472, 740, 740, 740, 740, 488,
+ 472, 760, 760, 976, 976, 740, 740, 740,
+ 740, 760, 816, 436, 16, 864, 64, 160,
+ 160, 160, 160, 160, 68, 200, 736, 440,
+ 68, 72, 40, 200, 68, 68, 68, 448,
+ 448, 72, 864, 160, 160, 160, 160, 440,
+ 440, 200, 108, 108, 200, 200, 200, 304,
+ 304, 304, 12, 448, 336, 336, 108, 448,
+ 336, 448, 736, 108, 112, 740, 740, 740,
+ 740, 740, 868, 860, 448, 448, 112, 440,
+ 860, 440, 448, 448, 156, 860, 156, 156,
+ 304, 304, 304, 532, 336, 740, 740, 488,
+ 336, 336, 336, 440, 740, 740, 156, 156,
+ 488, 488, 156, 40, 472, 40, 160, 160,
+ 160, 96, 96, 96, 392, 396, 396, 84,
+ 160, 160, 148, 148, 148, 160, 160, 160,
+ 40, 84, 304, 96, 200, 200, 200, 392,
+ 40, 156, 304, 304, 264, 148, 160, 336,
+ 148, 148, 264, 264, 336, 148, 148, 160,
+ 200, 148, 200, 200, 148, 148, 148, 156,
+ 112, 304, 84, 760, 264, 264, 264, 304,
+ 304, 760, 336, 440, 336, 264, 264, 264,
+ 336, 760, 160, 904, 396, 396, 156, 148,
+ 104, 904, 148, 148, 148, 200, 200, 156,
+ 156, 160, 160, 160, 40, 24, 160, 160,
+ 160, 160, 124, 24, 24, 24, 24, 884,
+ 4, 4, 24, 24, 156, 736, 760, 156,
+ 160, 160, 160, 160, 156, 760, 736, 108,
+ 444, 200, 200, 444, 664, 880, 48, 160,
+ 148, 392, 160, 24, 728, 48, 48, 48,
+ 12, 392, 104, 104, 84, 148, 160, 148,
+ 160, 96, 96, 160, 616, 160, 84, 36,
+ 160, 84, 180, 860, 740, 976, 396, 488,
+ 740, 740, 84, 976, 976, 84, 84, 396,
+ 396, 488, 740, 740, 488, 740, 976, 404,
+ 404, 976, 976, 404, 976, 156, 404, 404,
+ 404, 156, 676, 180, 180, 904, 676, 676,
+ 676, 764, 764, 396, 396, 396, 488, 488,
+ 548, 828, 180, 404, 360, 548, 180, 360,
+ 40, 764, 40, 404, 404, 36, 36, 36,
+ 40, 4, 40, 4, 720, 404, 4, 4,
+ 40, 404, 720, 884, 4, 8, 288, 816,
+ 404, 884, 740, 740, 124, 884, 404, 360,
+ 404, 404, 360, 904, 548, 740, 412, 740,
+ 412, 160, 160, 160, 412, 36, 156, 488,
+ 488, 156, 36, 36, 156, 900, 156, 156,
+ 36, 104, 104, 104, 36, 156, 704, 336,
+ 336, 704, 704, 704, 336, 360, 136, 552,
+ 104, 8, 76, 712, 712, 712, 104, 336,
+ 336, 68, 548, 488, 488, 220, 12, 24,
+ 24, 24, 24, 24, 220, 48, 72, 44,
+ 48, 4, 72, 48, 48, 220, 220, 220,
+ 220, 68, 68, 48, 48, 48, 320, 48,
+ 48, 696, 8, 320, 68, 352, 352, 388,
+ 48, 696, 48, 48, 48, 48, 88, 696,
+ 352, 60, 60, 88, 352, 352, 428, 8,
+ 320, 320, 320, 320, 320, 352, 352, 652,
+ 352, 652, 652, 388, 704, 748, 320, 696,
+ 652, 708, 652, 652, 696, 696, 696, 748,
+ 696, 696, 696, 696, 748, 352, 708, 708,
+ 708, 708, 980, 748, 8, 8, 352, 156,
+ 156, 748, 320, 320, 156, 76, 320, 320,
+ 320, 812, 352, 208, 812, 208, 704, 696,
+ 696, 704, 704, 704, 208, 736, 156, 68,
+ 696, 696, 696, 748, 748, 780, 704, 704,
+ 336, 992, 876, 696, 48, 48, 48, 696,
+ 112, 920, 920, 328, 876, 320, 24, 24,
+ 24, 920, 320, 320, 328, 288, 4, 4,
+ 24, 36, 36, 36, 60, 4, 4, 672,
+ 720, 60, 672, 24, 220, 900, 672, 328,
+ 60, 72, 696, 696, 72, 720, 720, 720,
+ 920, 328, 884, 680, 24, 24, 884, 220,
+ 680, 72, 220, 220, 220, 220, 72, 352,
+ 72, 812, 320, 980, 708, 696, 696, 696,
+ 696, 156, 68, 708, 68, 720, 720, 744,
+ 720, 720, 744, 720, 812, 68, 352, 352,
+ 832, 444, 980, 328, 328, 696, 696, 696,
+ 60, 812, 352, 328, 400, 60, 60, 60,
+ 60, 352, 744, 328, 328, 720, 400, 748,
+ 336, 712, 100, 676, 676, 784, 100, 100,
+ 712, 712, 712, 104, 104, 104, 328, 336,
+ 656, 784, 328, 876, 704, 156, 876, 156,
+ 696, 748, 652, 652, 156, 696, 780, 748,
+ 700, 700, 700, 700, 700, 700, 972, 748,
+ 156, 408, 748, 704, 696, 696, 696, 696,
+ 696, 748, 644, 708, 708, 644, 748, 704,
+ 704, 360, 832, 708, 708, 400, 780, 696,
+ 400, 48, 696, 696, 36, 36, 644, 48,
+ 644, 696, 36, 696, 36, 696, 696, 696,
+ 992, 1020, 704, 704, 400, 104, 104, 704,
+ 704, 360, 876, 644, 36, 676, 256, 36,
+ 36, 100, 700, 700, 704, 708, 704, 708,
+ 704, 644, 352, 256, 260, 652, 652, 652,
+ 696, 696, 256, 36, 36, 36, 328, 256,
+ 256, 36, 36, 260, 708, 652, 652, 644,
+ 256, 784, 36, 36, 36, 100, 256, 400,
+ 328, 260, 260, 260, 260, 36, 400, 328,
+ 36, 36, 644, 328, 720, 720, 784, 36,
+ 784, 60, 60, 328, 328, 36, 720, 36,
+ 156, 704, 156, 156, 156, 696, 696, 696,
+ 704, 704, 704, 704, 720, 156, 708, 708,
+ 708, 328, 980, 744, 992, 360, 720, 744,
+ 784, 36, 732, 36, 36, 36, 36, 360,
+ 732, 732, 156, 732, 720, 720, 720, 720,
+ 720, 252, 396, 732, 712, 104, 264, 720,
+ 720, 264, 704, 264, 468, 264, 676, 256,
+ 252, 676, 656, 692, 692, 732, 396, 96,
+ 732, 732, 96, 32, 228, 944, 712, 324,
+ 292, 292, 924, 292, 292, 232, 324, 232,
+ 232, 324, 232, 692, 692, 692, 324, 324,
+ 692, 972, 972, 692, 692, 324, 324, 588,
+ 292, 324, 292, 292, 292, 432, 324, 252,
+ 252, 252, 432, 304, 500, 712, 324, 232,
+ 712, 252, 344, 344, 324, 972, 972, 972,
+ 304, 344, 324, 656, 668, 668, 344, 668,
+ 264, 972, 972, 972, 924, 344, 252, 252,
+ 344, 48, 344, 344, 344, 668, 324, 100,
+ 48, 408, 48, 700, 652, 652, 652, 652,
+ 256, 700, 700, 700, 700, 652, 652, 652,
+ 652, 48, 48, 48, 696, 668, 100, 652,
+ 652, 656, 668, 252, 668, 700, 48, 48,
+ 48, 700, 700, 712, 668, 100, 344, 712,
+ 700, 700, 700, 408, 712, 712, 712, 408,
+ 668, 500, 104, 408, 344, 700, 652, 408,
+ 652, 652, 252, 252, 700, 148, 148, 780,
+ 652, 700, 700, 700, 408, 344, 344, 972,
+ 972, 972, 148, 148, 972, 972, 972, 148,
+ 148, 408, 408, 148, 780, 780, 780, 148,
+ 736, 84, 604, 8, 652, 660, 660, 32,
+ 32, 32, 32, 360, 652, 652, 652, 388,
+ 660, 660, 660, 284, 652, 652, 652, 8,
+ 388, 388, 48, 652, 652, 652, 652, 652,
+ 652, 248, 32, 48, 48, 32, 32, 32,
+ 88, 148, 100, 0, 248, 248, 248, 248,
+ 248, 344, 344, 148, 256, 20, 296, 192,
+ 640, 640, 640, 924, 588, 584, 32, 32,
+ 32, 32, 72, 48, 48, 48, 292, 292,
+ 252, 344, 344, 252, 584, 584, 464, 464,
+ 500, 32, 192, 192, 32, 32, 192, 344,
+ 292, 248, 32, 32, 104, 248, 104, 252,
+ 308, 192, 192, 192, 192, 192, 192, 308,
+ 248, 248, 248, 148, 308, 308, 308, 148,
+ 736, 148, 104, 248, 248, 248, 500, 464,
+ 292, 292, 292, 292, 252, 512, 148, 148,
+ 344, 148, 8, 640, 660, 640, 640, 640,
+ 640, 640, 252, 464, 48, 48, 660, 660,
+ 660, 48, 208, 8, 8, 780, 780, 148,
+ 148, 296, 660, 32, 32, 32, 248, 660,
+ 660, 72, 32, 32, 32, 296, 248, 248,
+ 148, 148, 292, 192, 32, 8, 192, 192,
+ 192, 72, 600, 72, 72, 72, 292, 292,
+ 72, 72, 968, 292, 72, 48, 72, 456,
+ 80, 80, 152, 152, 152, 312, 52, 52,
+ 52, 52, 0, 80, 80, 72, 272, 272,
+ 272, 48, 80, 32, 32, 32, 80, 80,
+ 252, 136, 48, 152, 152, 152, 152, 176,
+ 236, 272, 236, 236, 272, 272, 456, 236,
+ 52, 32, 32, 296, 296, 176, 176, 132,
+ 52, 52, 52, 52, 364, 364, 132, 132,
+ 796, 376, 796, 272, 272, 252, 376, 32,
+ 176, 176, 176, 312, 272, 272, 272, 528,
+ 312, 252, 236, 236, 236, 236, 504, 284,
+ 312, 936, 252, 420, 252, 32, 32, 968,
+ 968, 660, 1016, 296, 312, 1016, 308, 296,
+ 228, 256, 344, 344, 228, 228, 228, 228,
+ 396, 192, 192, 192, 252, 248, 252, 396,
+ 248, 1016, 232, 228, 228, 228, 256, 232,
+ 176, 176, 176, 176, 176, 576, 228, 228,
+ 232, 228, 228, 308, 192, 192, 192, 192,
+ 232, 576, 228, 968, 968, 232, 232, 232,
+ 232, 228, 968, 152, 152, 152, 152, 576,
+ 968, 176, 232, 312, 252, 312, 936, 960,
+ 960, 176, 192, 32, 32, 192, 192, 32,
+ 192, 676, 676, 192, 248, 192, 192, 192,
+ 296, 248, 600, 324, 176, 176, 176, 176,
+ 232, 296, 192, 192, 232, 192, 192, 308,
+ 176, 176, 252, 132, 312, 312, 232, 248,
+ 32, 32, 32, 140, 248, 248, 432, 256,
+ 176, 152, 228, 152, 152, 324, 324, 228,
+ 228, 324, 152, 152, 228, 176, 176, 228,
+ 228, 292, 592, 292, 176, 576, 620, 592,
+ 228, 100, 228, 28, 104, 228, 228, 676,
+ 252, 232, 676, 676, 592, 1016, 232, 232,
+ 252, 576, 576, 576, 252, 28, 576, 28,
+ 28, 28, 228, 396, 28, 596, 596, 228,
+ 228, 228, 712, 576, 576, 712, 712, 960,
+ 960, 712, 272, 152, 152, 152, 152, 152,
+ 152, 52, 28, 80, 28, 324, 176, 176,
+ 176, 52, 52, 52, 52, 52, 324, 936,
+ 252, 252, 272, 132, 52, 52, 52, 252,
+ 576, 232, 968, 192, 192, 192, 576, 252,
+ 264, 232, 252, 252, 52, 576, 52, 52,
+ 52, 576, 576, 32, 32, 252, 576, 264,
+ 136, 132, 576, 692, 692, 244, 272, 340,
+ 236, 236, 184, 184, 184, 184, 340, 236,
+ 236, 272, 420, 340, 340, 272, 272, 420,
+ 900, 712, 252, 340, 340, 692, 692, 252,
+ 92, 92, 92, 284, 184, 184, 184, 668,
+ 284, 668, 668, 56, 56, 340, 272, 56,
+ 668, 272, 452, 340, 452, 252, 272, 272,
+ 668, 300, 300, 164, 164, 692, 244, 244,
+ 244, 452, 340, 692, 712, 32, 376, 236,
+ 284, 184, 184, 184, 184, 184, 68, 68,
+ 32, 32, 32, 32, 296, 296, 232, 376,
+ 236, 236, 236, 236, 236, 236, 500, 284,
+ 284, 444, 236, 68, 236, 444, 376, 68,
+ 444, 84, 236, 236, 32, 32, 32, 184,
+ 184, 184, 400, 68, 68, 400, 272, 272,
+ 272, 400, 132, 112, 32, 32, 400, 444,
+ 8, 68, 32, 32, 32, 8, 68, 68,
+ 112, 72, 8, 500, 380, 296, 72, 464,
+ 236, 236, 184, 184, 376, 184, 184, 72,
+ 68, 68, 72, 72, 376, 72, 236, 236,
+ 8, 400, 272, 272, 244, 244, 272, 244,
+ 244, 936, 400, 84, 376, 376, 84, 184,
+ 68, 184, 184, 184, 184, 376, 380, 452,
+ 244, 244, 244, 244, 376, 68, 68, 84,
+ 68, 148, 376, 148, 452, 148, 524, 148,
+ 136, 272, 244, 244, 52, 304, 272, 272,
+ 376, 244, 244, 244, 244, 304, 376, 376,
+ 52, 52, 8, 252, 68, 68, 148, 252,
+ 376, 8, 272, 604, 72, 672, 672, 72,
+ 672, 672, 672, 72, 68, 252, 84, 8,
+ 68, 68, 360, 888, 380, 380, 360, 68,
+ 68, 40, 380, 836, 452, 452, 372, 304,
+ 184, 184, 184, 184, 184, 92, 304, 68,
+ 736, 304, 360, 96, 68, 84, 444, 184,
+ 380, 184, 380, 68, 184, 184, 304, 184,
+ 524, 184, 672, 672, 304, 148, 380, 148,
+ 148, 184, 672, 672, 672, 672, 148, 1012,
+ 500, 848, 672, 672, 672, 184, 792, 184,
+ 184, 832, 832, 792, 792, 436, 436, 880,
+ 48, 32, 32, 48, 32, 32, 32, 32,
+ 444, 48, 444, 444, 32, 32, 112, 660,
+ 72, 464, 88, 48, 48, 48, 112, 428,
+ 88, 88, 832, 92, 388, 444, 660, 444,
+ 112, 292, 292, 292, 292, 292, 84, 832,
+ 112, 112, 500, 584, 640, 464, 640, 112,
+ 72, 500, 112, 112, 112, 48, 48, 112,
+ 500, 112, 500, 432, 1012, 432, 500, 112,
+ 500, 112, 432, 880, 880, 264, 408, 876,
+ 48, 48, 264, 148, 388, 148, 780, 780,
+ 148, 264, 264, 48, 880, 880, 388, 880,
+ 264, 48, 48, 48, 432, 500, 500, 264,
+ 388, 388, 388, 12, 264, 388, 388, 388,
+ 692, 776, 264, 776, 668, 428, 428, 120,
+ 668, 668, 316, 112, 660, 640, 724, 660,
+ 640, 640, 660, 392, 32, 84, 660, 640,
+ 640, 200, 392, 660, 84, 200, 640, 640,
+ 736, 200, 200, 808, 808, 316, 316, 316,
+ 200, 296, 660, 284, 32, 32, 660, 296,
+ 32, 200, 724, 724, 728, 184, 184, 184,
+ 184, 184, 724, 380, 724, 724, 392, 724,
+ 724, 200, 604, 32, 284, 32, 400, 724,
+ 808, 724, 724, 936, 832, 432, 752, 752,
+ 432, 316, 316, 316, 316, 808, 792, 432,
+ 752, 752, 792, 724, 724, 316, 316, 432,
+ 284, 284, 752, 400, 836, 792, 68, 68,
+ 752, 184, 184, 400, 316, 316, 316, 752,
+ 752, 364, 316, 364, 364, 672, 672, 672,
+ 672, 672, 364, 364, 436, 436, 316, 316,
+ 316, 364, 436, 316, 364, 112, 68, 364,
+ 316, 252, 316, 72, 72, 68, 252, 252,
+ 112, 640, 640, 316, 364, 112, 252, 32,
+ 32, 400, 68, 400, 316, 640, 640, 640,
+ 640, 432, 316, 316, 316, 316, 776, 776,
+ 776, 500, 316, 316, 316, 316, 112, 776,
+ 72, 436, 636, 792, 636, 636, 792, 752,
+ 752, 792, 776, 792, 808, 184, 372, 68,
+ 68, 292, 184, 184, 92, 440, 752, 752,
+ 92, 752, 752, 752, 368, 92, 292, 72,
+ 92, 92, 368, 368, 292, 140, 372, 72,
+ 72, 428, 252, 636, 636, 636, 636, 636,
+ 776, 252, 476, 476, 368, 368, 252, 724,
+ 752, 752, 752, 752, 752, 752, 72, 368,
+ 1020, 400, 368, 368, 400, 428, 428, 964,
+ 776, 32, 284, 752, 32, 32, 604, 660,
+ 660, 724, 724, 724, 724, 284, 752, 808,
+ 32, 32, 32, 400, 364, 284, 364, 364,
+ 88, 92, 88, 364, 92, 752, 752, 752,
+ 92, 600, 600, 388, 388, 388, 808, 660,
+ 600, 388, 400, 400, 252, 780, 776, 752,
+ 752, 724, 724, 724, 360, 752, 752, 360,
+ 360, 428, 776, 776, 360, 360, 428, 360,
+ 400, 72, 252, 656, 28, 736, 716, 596,
+ 656, 656, 716, 656, 72, 716, 656, 656,
+ 716, 716, 916, 716, 716, 824, 716, 796,
+ 824, 72, 512, 716, 716, 716, 716, 716,
+ 824, 824, 676, 72, 764, 360, 676, 676,
+ 364, 796, 824, 716, 716, 716, 716, 512,
+ 824, 796, 796, 796, 364, 824, 824, 252,
+ 716, 716, 252, 1016, 364, 968, 656, 916,
+ 76, 736, 656, 1012, 208, 736, 76, 656,
+ 656, 656, 656, 1012, 900, 512, 968, 968,
+ 736, 736, 736, 600, 796, 1012, 668, 656,
+ 656, 96, 8, 8, 96, 96, 668, 824,
+ 796, 364, 668, 736, 736, 668, 796, 796,
+ 364, 252, 796, 692, 692, 28, 656, 28,
+ 28, 28, 692, 252, 656, 656, 252, 8,
+ 76, 668, 52, 52, 668, 76, 668, 512,
+ 668, 824, 28, 28, 28, 28, 28, 28,
+ 28, 960, 596, 676, 676, 676, 692, 596,
+ 692, 968, 676, 968, 960, 576, 20, 576,
+ 292, 292, 824, 824, 824, 512, 676, 1012,
+ 968, 292, 28, 28, 52, 28, 28, 668,
+ 28, 52, 52, 668, 128, 52, 512, 968,
+ 512, 512, 832, 604, 968, 360, 396, 656,
+ 512, 656, 656, 8, 52, 52, 968, 512,
+ 8, 656, 936, 360, 1016, 512, 716, 716,
+ 716, 8, 936, 1016, 512, 512, 512, 84,
+ 936, 96, 512, 736, 968, 1012, 1012, 796,
+ 968, 796,
+};
+
+static long _vq_q_res0_0c[] = {
+ 72, 20, 820, 892, 428, 64, 372, 988,
+ 224, 288, 44, 60, 220, 288, 288, 812,
+ 812, 492, 44, 288, 288, 492, 220, 224,
+ 224, 224, 44, 492, 288, 492, 492, 288,
+ 44, 492, 440, 216, 492, 288, 812, 220,
+ 988, 516, 516, 988, 516, 988, 516, 524,
+ 288, 436, 812, 516, 492, 516, 516, 492,
+ 220, 1004, 492, 988, 1004, 188, 44, 172,
+ 516, 1008, 544, 544, 1008, 516, 1008, 788,
+ 44, 372, 544, 368, 16, 16, 368, 492,
+ 16, 492, 368, 516, 988, 1004, 412, 524,
+ 1004, 368, 492, 1004, 1008, 492, 544, 44,
+ 688, 448, 884, 4, 224, 16, 16, 288,
+ 224, 884, 884, 288, 884, 688, 64, 816,
+ 816, 64, 816, 524, 688, 1016, 16, 524,
+ 44, 224, 688, 688, 108, 16, 16, 108,
+ 1004, 16, 776, 224, 368, 220, 320, 320,
+ 220, 492, 524, 320, 368, 44, 320, 428,
+ 428, 120, 216, 12, 224, 12, 120, 224,
+ 120, 12, 12, 44, 224, 224, 492, 120,
+ 120, 440, 108, 492, 120, 120, 120, 320,
+ 872, 664, 880, 120, 872, 776, 368, 776,
+ 872, 452, 120, 872, 120, 872, 368, 384,
+ 776, 120, 540, 384, 776, 428, 428, 428,
+ 428, 92, 108, 60, 44, 368, 368, 60,
+ 108, 540, 44, 372, 368, 368, 92, 372,
+ 524, 440, 372, 16, 540, 368, 612, 1016,
+ 332, 16, 92, 108, 612, 612, 612, 368,
+ 540, 16, 428, 220, 188, 556, 988, 516,
+ 556, 556, 556, 384, 60, 320, 352, 996,
+ 812, 352, 352, 556, 216, 352, 220, 988,
+ 812, 540, 556, 384, 988, 996, 348, 988,
+ 556, 812, 384, 988, 556, 988, 812, 352,
+ 556, 384, 540, 540, 384, 812, 124, 124,
+ 812, 540, 220, 384, 412, 384, 188, 92,
+ 372, 368, 996, 556, 476, 372, 372, 368,
+ 428, 556, 556, 428, 556, 556, 372, 428,
+ 776, 368, 556, 384, 216, 220, 220, 216,
+ 384, 936, 524, 788, 988, 1004, 888, 384,
+ 988, 572, 572, 900, 888, 996, 888, 220,
+ 368, 384, 524, 452, 384, 476, 452, 1004,
+ 476, 452, 996, 368, 524, 384, 476, 888,
+ 556, 476, 572, 476, 1004, 16, 320, 428,
+ 524, 428, 476, 524, 788, 476, 524, 524,
+ 776, 384, 428, 428, 388, 776, 428, 476,
+ 476, 428, 116, 92, 556, 516, 288, 528,
+ 276, 240, 480, 480, 892, 480, 356, 276,
+ 892, 892, 356, 356, 276, 480, 892, 480,
+ 524, 892, 356, 480, 480, 892, 356, 60,
+ 480, 288, 508, 508, 288, 480, 288, 480,
+ 356, 356, 480, 332, 288, 516, 240, 44,
+ 172, 288, 1008, 888, 788, 1008, 516, 60,
+ 168, 480, 992, 516, 480, 516, 516, 240,
+ 480, 516, 412, 992, 516, 1008, 412, 480,
+ 1008, 412, 556, 44, 60, 288, 516, 788,
+ 288, 412, 44, 60, 288, 288, 60, 788,
+ 784, 812, 556, 504, 508, 352, 556, 788,
+ 508, 516, 328, 992, 516, 556, 788, 812,
+ 508, 992, 516, 516, 508, 888, 888, 680,
+ 612, 480, 372, 556, 44, 1008, 168, 852,
+ 852, 1008, 44, 516, 992, 788, 372, 852,
+ 852, 356, 420, 480, 276, 240, 340, 328,
+ 888, 340, 852, 560, 340, 276, 480, 560,
+ 240, 480, 852, 412, 1008, 852, 560, 412,
+ 1008, 852, 480, 332, 420, 480, 480, 888,
+ 16, 92, 372, 612, 340, 420, 528, 528,
+ 420, 528, 332, 340, 612, 612, 420, 612,
+ 612, 480, 92, 420, 372, 680, 556, 420,
+ 420, 372, 504, 600, 556, 504, 600, 420,
+ 504, 480, 420, 504, 560, 480, 556, 556,
+ 372, 612, 600, 612, 612, 612, 612, 276,
+ 612, 560, 92, 68, 68, 340, 612, 340,
+ 680, 276, 356, 496, 4, 288, 44, 44,
+ 332, 288, 816, 496, 496, 816, 496, 560,
+ 536, 356, 496, 412, 892, 356, 784, 892,
+ 536, 288, 536, 536, 16, 240, 340, 892,
+ 56, 276, 1020, 560, 612, 276, 612, 680,
+ 356, 56, 496, 496, 356, 496, 992, 496,
+ 524, 996, 340, 528, 608, 612, 612, 340,
+ 496, 276, 56, 608, 528, 560, 608, 496,
+ 128, 892, 128, 340, 240, 56, 128, 560,
+ 56, 340, 340, 528, 124, 612, 108, 496,
+ 44, 56, 56, 116, 116, 108, 116, 116,
+ 108, 560, 16, 608, 612, 684, 852, 424,
+ 484, 844, 816, 496, 280, 268, 844, 896,
+ 896, 844, 896, 412, 280, 844, 844, 484,
+ 268, 116, 484, 484, 484, 124, 896, 568,
+ 128, 268, 76, 76, 128, 608, 268, 412,
+ 128, 424, 484, 56, 348, 76, 348, 348,
+ 568, 568, 76, 424, 768, 424, 568, 568,
+ 424, 896, 212, 76, 424, 424, 348, 332,
+ 76, 268, 76, 484, 348, 484, 568, 896,
+ 268, 484, 820, 896, 896, 896, 820, 844,
+ 484, 928, 560, 608, 896, 568, 124, 820,
+ 568, 608, 484, 568, 520, 484, 568, 424,
+ 348, 484, 40, 40, 76, 124, 124, 124,
+ 844, 484, 484, 8, 76, 348, 108, 560,
+ 348, 108, 108, 540, 108, 608, 124, 124,
+ 608, 928, 484, 820, 124, 520, 124, 608,
+ 124, 108, 820, 608, 484, 560, 996, 856,
+ 56, 16, 240, 44, 544, 172, 1012, 608,
+ 560, 852, 928, 560, 560, 852, 544, 544,
+ 852, 360, 964, 16, 544, 608, 16, 16,
+ 16, 852, 300, 240, 56, 928, 300, 600,
+ 300, 340, 340, 240, 56, 600, 852, 56,
+ 520, 340, 372, 852, 16, 16, 928, 372,
+ 772, 108, 496, 908, 172, 484, 484, 856,
+ 856, 908, 484, 856, 560, 908, 908, 484,
+ 844, 560, 844, 484, 332, 496, 484, 496,
+ 560, 856, 108, 484, 540, 108, 484, 600,
+ 540, 544, 544, 856, 416, 996, 56, 568,
+ 300, 348, 600, 768, 348, 768, 560, 768,
+ 332, 568, 332, 348, 996, 540, 540, 996,
+ 484, 540, 124, 124, 540, 680, 348, 484,
+ 540, 484, 820, 416, 680, 540, 820, 648,
+ 560, 484, 600, 820, 856, 568, 568, 240,
+ 520, 568, 544, 568, 852, 928, 768, 852,
+ 856, 856, 856, 608, 240, 300, 768, 412,
+ 600, 768, 568, 964, 768, 300, 560, 600,
+ 544, 484, 540, 820, 856, 856, 544, 540,
+ 544, 568, 844, 964, 484, 484, 896, 964,
+ 908, 568, 484, 856, 908, 908, 856, 908,
+ 600, 896, 512, 964, 600, 896, 908, 520,
+ 568, 908, 568, 560, 872, 816, 864, 124,
+ 416, 84, 108, 64, 416, 108, 108, 108,
+ 64, 416, 416, 936, 540, 800, 728, 84,
+ 416, 124, 124, 416, 520, 728, 136, 84,
+ 416, 820, 800, 416, 136, 416, 820, 124,
+ 912, 520, 124, 520, 756, 864, 868, 688,
+ 804, 800, 800, 804, 804, 884, 868, 864,
+ 448, 448, 800, 684, 688, 728, 864, 864,
+ 864, 688, 728, 864, 8, 728, 688, 800,
+ 136, 864, 864, 800, 800, 864, 600, 448,
+ 868, 868, 804, 800, 136, 416, 756, 520,
+ 800, 76, 820, 800, 804, 360, 820, 936,
+ 856, 64, 280, 40, 800, 844, 844, 936,
+ 844, 868, 868, 844, 816, 868, 928, 868,
+ 800, 844, 804, 964, 868, 928, 804, 868,
+ 844, 868, 844, 484, 44, 416, 688, 64,
+ 288, 804, 804, 64, 520, 928, 416, 44,
+ 64, 520, 688, 64, 416, 108, 360, 108,
+ 900, 928, 736, 908, 416, 844, 964, 804,
+ 844, 484, 484, 844, 844, 520, 844, 416,
+ 800, 8, 520, 64, 804, 76, 416, 736,
+ 484, 804, 520, 208, 844, 484, 76, 484,
+ 820, 844, 896, 908, 736, 844, 908, 896,
+ 908, 8, 416, 484, 856, 908, 928, 1012,
+ 52, 608, 820, 484, 608, 856, 572, 856,
+ 484, 608, 572, 424, 904, 688, 872, 392,
+ 120, 840, 684, 224, 492, 912, 912, 572,
+ 684, 840, 756, 840, 492, 912, 572, 912,
+ 912, 840, 912, 332, 1004, 872, 912, 544,
+ 872, 492, 912, 544, 348, 840, 872, 608,
+ 872, 996, 912, 872, 16, 872, 124, 492,
+ 872, 124, 1004, 872, 1004, 996, 544, 544,
+ 348, 16, 872, 492, 996, 412, 572, 16,
+ 108, 544, 492, 416, 688, 756, 572, 572,
+ 688, 756, 804, 996, 756, 572, 452, 756,
+ 416, 912, 572, 912, 416, 684, 688, 572,
+ 492, 768, 452, 492, 840, 688, 348, 756,
+ 756, 840, 996, 452, 840, 452, 300, 688,
+ 492, 492, 544, 756, 572, 804, 908, 908,
+ 424, 544, 492, 1008, 544, 572, 768, 416,
+ 108, 544, 44, 688, 492, 16, 772, 544,
+ 572, 424, 416, 424, 416, 424, 912, 820,
+ 348, 820, 912, 540, 544, 572, 544, 540,
+ 544, 124, 108, 448, 84, 392, 664, 224,
+ 684, 688, 728, 452, 688, 728, 572, 684,
+ 772, 688, 224, 684, 688, 728, 840, 840,
+ 348, 688, 728, 840, 572, 728, 772, 512,
+ 56, 452, 728, 392, 56, 840, 84, 392,
+ 452, 392, 728, 684, 448, 56, 864, 448,
+ 728, 244, 688, 120, 772, 348, 108, 768,
+ 300, 392, 912, 728, 108, 332, 840, 900,
+ 56, 772, 840, 728, 572, 912, 964, 796,
+ 572, 772, 564, 332, 572, 904, 392, 840,
+ 452, 452, 936, 244, 572, 904, 332, 124,
+ 452, 124, 912, 912, 616, 828, 0, 536,
+ 508, 528, 128, 596, 356, 932, 28, 80,
+ 460, 592, 592, 460, 592, 80, 592, 932,
+ 592, 460, 128, 116, 356, 932, 116, 772,
+ 128, 932, 116, 128, 504, 276, 892, 80,
+ 356, 460, 528, 356, 460, 528, 528, 528,
+ 528, 892, 528, 56, 452, 356, 936, 996,
+ 572, 528, 348, 608, 528, 528, 116, 496,
+ 892, 128, 128, 892, 332, 540, 452, 60,
+ 460, 592, 36, 100, 100, 100, 80, 592,
+ 332, 100, 260, 732, 100, 592, 260, 468,
+ 468, 592, 100, 468, 592, 592, 260, 592,
+ 592, 592, 504, 260, 312, 80, 592, 68,
+ 80, 460, 592, 68, 460, 452, 68, 460,
+ 80, 460, 56, 332, 460, 504, 356, 60,
+ 460, 504, 260, 16, 508, 508, 460, 508,
+ 508, 540, 60, 356, 260, 80, 356, 124,
+ 116, 504, 356, 116, 116, 932, 744, 260,
+ 536, 520, 560, 348, 356, 460, 892, 124,
+ 536, 536, 332, 536, 348, 892, 536, 244,
+ 260, 460, 536, 424, 460, 356, 536, 536,
+ 560, 60, 288, 356, 496, 356, 496, 136,
+ 536, 136, 60, 536, 744, 936, 560, 136,
+ 508, 260, 356, 136, 1012, 76, 136, 356,
+ 60, 288, 520, 508, 136, 536, 356, 356,
+ 136, 56, 732, 260, 356, 536, 136, 900,
+ 332, 76, 932, 460, 592, 536, 744, 468,
+ 260, 732, 732, 136, 744, 468, 732, 136,
+ 744, 536, 536, 468, 128, 76, 460, 536,
+ 128, 932, 932, 956, 536, 932, 460, 732,
+ 128, 76, 732, 932, 116, 36, 404, 404,
+ 116, 404, 56, 536, 536, 116, 932, 116,
+ 932, 932, 180, 732, 204, 520, 932, 76,
+ 932, 536, 204, 732, 580, 732, 580, 580,
+ 404, 536, 580, 404, 772, 536, 580, 520,
+ 536, 932, 128, 580, 932, 772, 128, 496,
+ 816, 116, 404, 536, 116, 128, 404, 816,
+ 816, 116, 116, 536, 932, 116, 496, 816,
+ 496, 956, 956, 128, 116, 128, 932, 76,
+ 956, 932, 52, 116, 536, 816, 536, 956,
+ 116, 932, 536, 772, 520, 268, 504, 100,
+ 88, 80, 0, 136, 136, 80, 88, 0,
+ 100, 28, 80, 592, 80, 0, 56, 772,
+ 88, 80, 100, 56, 100, 772, 56, 88,
+ 100, 52, 100, 0, 0, 0, 88, 356,
+ 504, 528, 612, 528, 128, 772, 504, 128,
+ 244, 528, 136, 420, 88, 356, 504, 92,
+ 612, 92, 504, 504, 356, 612, 520, 772,
+ 60, 0, 88, 356, 0, 424, 56, 60,
+ 816, 0, 64, 108, 116, 424, 108, 116,
+ 608, 116, 0, 0, 64, 816, 496, 772,
+ 76, 816, 520, 44, 356, 60, 76, 80,
+ 116, 128, 520, 76, 116, 76, 208, 128,
+ 108, 116, 0, 772, 116, 0, 520, 76,
+ 772, 108, 244, 108, 356, 128, 612, 528,
+ 68, 348, 128, 128, 356, 128, 964, 116,
+ 436, 1000, 116, 108, 612, 0, 0, 612,
+ 880, 880, 0, 1000, 580, 952, 268, 564,
+ 40, 76, 212, 832, 76, 828, 828, 8,
+ 96, 96, 40, 76, 96, 96, 96, 76,
+ 8, 848, 108, 8, 1000, 1000, 96, 916,
+ 564, 828, 824, 96, 824, 848, 828, 824,
+ 828, 112, 916, 208, 76, 564, 564, 76,
+ 916, 564, 564, 916, 848, 832, 20, 128,
+ 76, 828, 1000, 128, 564, 76, 824, 824,
+ 900, 112, 328, 128, 788, 828, 0, 76,
+ 824, 20, 20, 880, 0, 8, 1000, 0,
+ 108, 828, 116, 116, 788, 280, 108, 40,
+ 76, 268, 64, 120, 844, 64, 120, 788,
+ 268, 828, 76, 328, 828, 864, 64, 40,
+ 96, 1000, 64, 848, 116, 76, 64, 848,
+ 76, 444, 116, 108, 848, 116, 108, 280,
+ 828, 816, 392, 512, 328, 828, 816, 472,
+ 444, 280, 828, 472, 472, 828, 472, 952,
+ 952, 472, 952, 120, 952, 64, 472, 816,
+ 1000, 112, 472, 816, 472, 880, 592, 472,
+ 828, 948, 580, 764, 880, 580, 956, 932,
+ 580, 948, 932, 580, 948, 956, 956, 948,
+ 956, 120, 580, 948, 120, 392, 936, 120,
+ 392, 828, 564, 952, 956, 952, 932, 952,
+ 664, 948, 396, 952, 596, 564, 828, 948,
+ 948, 564, 596, 948, 564, 948, 880, 1000,
+ 948, 952, 904, 828, 472, 116, 816, 404,
+ 580, 956, 904, 404, 580, 788, 904, 580,
+ 956, 1000, 404, 816, 788, 412, 816, 904,
+ 904, 116, 816, 956, 904, 788, 1000, 956,
+ 948, 828, 268, 116, 788, 472, 788, 472,
+ 488, 488, 472, 948, 360, 392, 1000, 948,
+ 952, 280, 816, 788, 392, 868, 956, 816,
+ 760, 976, 472, 956, 956, 472, 904, 848,
+ 816, 868, 992, 952, 956, 472, 948, 952,
+ 1000, 956, 952, 992, 784, 948, 952, 848,
+ 904, 900, 904, 784, 592, 828, 76, 116,
+ 128, 932, 932, 392, 784, 596, 76, 128,
+ 784, 328, 596, 604, 904, 1000, 564, 596,
+ 596, 596, 116, 36, 180, 848, 20, 20,
+ 932, 828, 180, 788, 120, 880, 20, 824,
+ 180, 676, 596, 596, 764, 676, 828, 596,
+ 596, 764, 824, 596, 828, 824, 828, 564,
+ 120, 564, 880, 112, 20, 396, 764, 120,
+ 824, 120, 676, 440, 20, 180, 932, 100,
+ 676, 592, 112, 596, 592, 440, 436, 100,
+ 592, 436, 932, 592, 596, 788, 596, 732,
+ 676, 580, 932, 880, 436, 788, 580, 764,
+ 436, 596, 732, 788, 732, 580, 328, 696,
+ 732, 0, 12, 864, 552, 860, 64, 64,
+ 860, 112, 884, 816, 860, 860, 884, 860,
+ 64, 616, 552, 24, 200, 224, 448, 448,
+ 200, 224, 448, 224, 440, 448, 200, 336,
+ 552, 112, 552, 448, 336, 552, 440, 448,
+ 552, 616, 552, 440, 64, 224, 940, 552,
+ 448, 884, 884, 884, 448, 860, 552, 884,
+ 552, 616, 616, 616, 68, 552, 616, 112,
+ 860, 884, 552, 552, 788, 532, 488, 860,
+ 64, 40, 96, 472, 472, 96, 472, 328,
+ 472, 64, 864, 120, 864, 64, 472, 860,
+ 860, 816, 472, 860, 872, 868, 860, 868,
+ 860, 120, 868, 976, 472, 488, 860, 860,
+ 488, 440, 872, 472, 868, 976, 816, 860,
+ 868, 788, 860, 1000, 0, 532, 868, 40,
+ 200, 64, 448, 864, 440, 64, 936, 540,
+ 0, 112, 64, 40, 112, 440, 72, 864,
+ 868, 0, 868, 860, 532, 200, 336, 120,
+ 540, 336, 540, 16, 448, 304, 532, 532,
+ 336, 448, 0, 532, 448, 532, 12, 940,
+ 860, 884, 900, 120, 12, 884, 448, 860,
+ 868, 532, 532, 532, 860, 868, 120, 12,
+ 532, 120, 860, 884, 12, 868, 120, 440,
+ 336, 532, 940, 940, 860, 940, 336, 940,
+ 488, 532, 940, 112, 488, 860, 108, 540,
+ 860, 532, 68, 264, 532, 96, 96, 472,
+ 488, 396, 472, 488, 12, 472, 488, 12,
+ 200, 532, 160, 84, 96, 96, 40, 84,
+ 84, 392, 532, 532, 304, 532, 84, 120,
+ 84, 84, 532, 864, 552, 488, 304, 532,
+ 336, 104, 336, 104, 104, 160, 532, 532,
+ 304, 200, 264, 336, 264, 304, 336, 112,
+ 120, 336, 108, 16, 940, 304, 336, 336,
+ 940, 440, 940, 540, 488, 336, 940, 396,
+ 532, 392, 488, 124, 488, 532, 540, 160,
+ 552, 124, 336, 200, 12, 12, 552, 124,
+ 904, 200, 552, 616, 96, 12, 64, 4,
+ 24, 200, 540, 200, 108, 4, 616, 616,
+ 616, 108, 64, 4, 760, 512, 540, 392,
+ 200, 12, 40, 108, 440, 120, 796, 1000,
+ 904, 664, 84, 848, 12, 12, 0, 616,
+ 160, 444, 552, 552, 392, 104, 616, 12,
+ 552, 904, 552, 616, 904, 616, 96, 160,
+ 20, 396, 20, 4, 0, 36, 392, 616,
+ 0, 444, 36, 20, 404, 548, 488, 860,
+ 976, 488, 124, 472, 488, 904, 392, 488,
+ 940, 940, 488, 548, 548, 940, 816, 488,
+ 580, 404, 548, 548, 580, 84, 816, 488,
+ 860, 444, 580, 488, 676, 124, 764, 20,
+ 396, 396, 488, 828, 488, 20, 548, 20,
+ 20, 488, 488, 580, 124, 580, 732, 904,
+ 360, 488, 84, 876, 488, 404, 4, 616,
+ 124, 288, 8, 860, 288, 884, 720, 404,
+ 360, 616, 404, 616, 816, 84, 816, 884,
+ 816, 616, 404, 884, 560, 548, 884, 124,
+ 548, 860, 904, 124, 616, 816, 124, 860,
+ 904, 20, 860, 36, 560, 488, 560, 860,
+ 616, 904, 488, 20, 412, 928, 8, 124,
+ 548, 616, 876, 20, 616, 84, 940, 616,
+ 552, 884, 336, 548, 548, 444, 0, 616,
+ 548, 136, 8, 940, 104, 488, 488, 488,
+ 548, 560, 940, 548, 940, 100, 552, 320,
+ 4, 12, 220, 48, 48, 12, 136, 48,
+ 0, 48, 8, 60, 780, 60, 352, 48,
+ 320, 8, 136, 428, 320, 12, 12, 388,
+ 320, 320, 560, 388, 0, 388, 428, 428,
+ 60, 428, 696, 88, 388, 352, 388, 352,
+ 388, 352, 88, 92, 88, 504, 504, 560,
+ 388, 776, 780, 352, 384, 384, 388, 352,
+ 504, 388, 780, 780, 720, 552, 876, 320,
+ 352, 748, 696, 708, 708, 748, 780, 780,
+ 708, 352, 748, 920, 920, 920, 352, 748,
+ 980, 920, 920, 980, 124, 360, 980, 124,
+ 540, 920, 748, 780, 8, 8, 352, 812,
+ 920, 920, 812, 8, 920, 76, 876, 920,
+ 748, 748, 980, 920, 360, 520, 68, 392,
+ 748, 408, 876, 780, 876, 876, 920, 552,
+ 876, 1020, 552, 320, 696, 552, 616, 552,
+ 1020, 552, 616, 1020, 552, 876, 320, 920,
+ 552, 552, 920, 552, 112, 508, 616, 220,
+ 4, 4, 60, 720, 720, 60, 720, 1020,
+ 288, 720, 112, 220, 60, 936, 328, 992,
+ 288, 560, 320, 616, 1020, 884, 920, 616,
+ 616, 560, 920, 328, 220, 920, 920, 812,
+ 1020, 112, 60, 812, 320, 352, 600, 812,
+ 560, 920, 812, 508, 980, 744, 720, 708,
+ 352, 68, 560, 352, 72, 920, 744, 980,
+ 744, 812, 812, 980, 920, 328, 980, 812,
+ 848, 832, 812, 848, 832, 744, 60, 352,
+ 352, 508, 812, 444, 444, 720, 744, 352,
+ 508, 508, 352, 444, 400, 744, 832, 980,
+ 552, 876, 104, 548, 100, 848, 20, 548,
+ 104, 548, 20, 20, 548, 876, 784, 876,
+ 936, 444, 784, 940, 876, 784, 548, 400,
+ 100, 552, 708, 696, 328, 780, 408, 780,
+ 708, 704, 408, 972, 748, 876, 876, 408,
+ 444, 876, 876, 876, 704, 708, 748, 876,
+ 408, 408, 964, 748, 408, 360, 408, 708,
+ 748, 560, 1020, 748, 876, 1020, 408, 408,
+ 992, 552, 408, 104, 48, 696, 992, 696,
+ 400, 616, 616, 704, 696, 876, 704, 552,
+ 1020, 964, 552, 616, 560, 876, 552, 876,
+ 552, 400, 552, 400, 704, 100, 100, 100,
+ 104, 104, 100, 708, 708, 468, 104, 100,
+ 708, 360, 580, 744, 468, 256, 696, 352,
+ 60, 88, 260, 256, 60, 88, 992, 60,
+ 88, 260, 60, 60, 468, 696, 256, 328,
+ 708, 992, 256, 100, 468, 468, 100, 784,
+ 400, 708, 508, 60, 744, 260, 992, 560,
+ 720, 744, 328, 784, 744, 468, 412, 60,
+ 560, 720, 744, 784, 412, 696, 468, 720,
+ 560, 720, 412, 328, 992, 708, 704, 720,
+ 708, 720, 468, 980, 980, 400, 720, 744,
+ 980, 1020, 468, 980, 848, 600, 744, 980,
+ 904, 676, 548, 720, 404, 732, 100, 120,
+ 100, 468, 332, 404, 404, 468, 732, 744,
+ 536, 104, 104, 744, 104, 500, 500, 404,
+ 548, 104, 468, 712, 548, 396, 548, 100,
+ 500, 732, 900, 264, 252, 100, 604, 604,
+ 468, 548, 396, 8, 440, 624, 296, 408,
+ 140, 344, 588, 432, 324, 292, 984, 324,
+ 924, 924, 984, 432, 324, 984, 984, 432,
+ 432, 324, 944, 324, 944, 588, 944, 944,
+ 500, 588, 324, 432, 944, 944, 432, 604,
+ 396, 96, 500, 396, 944, 972, 344, 324,
+ 324, 304, 104, 944, 924, 324, 344, 588,
+ 96, 588, 344, 736, 604, 304, 588, 252,
+ 304, 344, 924, 588, 588, 924, 396, 304,
+ 140, 344, 500, 100, 104, 304, 140, 140,
+ 944, 104, 388, 408, 344, 700, 256, 100,
+ 100, 100, 256, 344, 100, 696, 48, 344,
+ 408, 344, 696, 408, 100, 252, 408, 700,
+ 408, 564, 264, 628, 628, 408, 100, 104,
+ 500, 100, 104, 100, 252, 104, 100, 972,
+ 408, 712, 344, 944, 408, 104, 876, 104,
+ 264, 944, 944, 876, 944, 972, 344, 588,
+ 700, 780, 264, 396, 780, 396, 264, 588,
+ 588, 344, 408, 588, 588, 588, 408, 588,
+ 344, 408, 252, 628, 780, 408, 588, 304,
+ 96, 588, 944, 500, 408, 588, 944, 104,
+ 1012, 96, 632, 360, 588, 248, 584, 296,
+ 660, 88, 504, 604, 660, 388, 504, 504,
+ 504, 284, 296, 296, 48, 388, 584, 84,
+ 780, 584, 584, 256, 48, 88, 248, 344,
+ 584, 344, 48, 344, 88, 248, 140, 88,
+ 100, 8, 140, 140, 504, 256, 344, 100,
+ 140, 100, 140, 84, 344, 140, 600, 296,
+ 308, 464, 588, 588, 944, 588, 344, 464,
+ 48, 584, 464, 344, 584, 944, 588, 464,
+ 140, 588, 464, 20, 588, 944, 588, 944,
+ 140, 464, 248, 344, 192, 140, 140, 140,
+ 140, 308, 248, 344, 140, 344, 500, 500,
+ 344, 292, 464, 344, 248, 308, 924, 924,
+ 308, 308, 344, 500, 344, 924, 588, 252,
+ 916, 104, 20, 464, 344, 588, 12, 588,
+ 464, 344, 924, 588, 8, 632, 8, 252,
+ 464, 500, 140, 296, 248, 780, 660, 464,
+ 584, 588, 96, 584, 0, 12, 464, 584,
+ 588, 500, 736, 12, 84, 584, 588, 0,
+ 12, 308, 464, 660, 248, 296, 296, 296,
+ 248, 296, 72, 296, 464, 464, 308, 588,
+ 8, 48, 500, 232, 72, 140, 292, 72,
+ 600, 140, 140, 600, 500, 8, 72, 600,
+ 0, 136, 232, 140, 8, 72, 500, 960,
+ 504, 132, 272, 312, 528, 80, 88, 272,
+ 80, 128, 140, 128, 136, 12, 80, 528,
+ 128, 104, 528, 80, 136, 88, 88, 136,
+ 604, 612, 712, 272, 176, 312, 624, 312,
+ 132, 376, 272, 528, 456, 528, 528, 376,
+ 528, 132, 136, 132, 600, 272, 132, 600,
+ 272, 376, 132, 600, 632, 604, 600, 136,
+ 632, 132, 604, 376, 132, 632, 132, 132,
+ 272, 312, 132, 132, 312, 528, 132, 132,
+ 528, 604, 296, 528, 284, 132, 132, 504,
+ 504, 1016, 796, 528, 364, 132, 660, 364,
+ 632, 132, 632, 132, 132, 960, 600, 596,
+ 312, 624, 100, 140, 256, 344, 248, 308,
+ 960, 248, 308, 344, 960, 308, 1016, 796,
+ 256, 632, 960, 100, 80, 140, 100, 1016,
+ 192, 308, 228, 576, 624, 624, 576, 624,
+ 632, 308, 576, 576, 308, 232, 228, 576,
+ 632, 140, 576, 632, 232, 576, 140, 308,
+ 576, 308, 984, 248, 132, 80, 176, 936,
+ 1016, 312, 252, 624, 396, 576, 632, 140,
+ 20, 576, 256, 312, 248, 132, 296, 132,
+ 248, 960, 396, 576, 312, 248, 296, 308,
+ 308, 296, 140, 140, 308, 312, 192, 296,
+ 324, 132, 296, 132, 140, 308, 312, 312,
+ 312, 132, 72, 576, 132, 576, 960, 256,
+ 248, 312, 80, 632, 312, 80, 500, 312,
+ 960, 624, 80, 228, 312, 500, 432, 312,
+ 592, 104, 80, 28, 576, 624, 228, 312,
+ 592, 500, 624, 324, 624, 624, 624, 624,
+ 960, 140, 592, 228, 20, 676, 100, 100,
+ 432, 960, 592, 960, 960, 620, 576, 960,
+ 104, 140, 1016, 960, 292, 624, 960, 228,
+ 140, 576, 140, 104, 960, 620, 624, 624,
+ 576, 960, 396, 960, 620, 104, 984, 620,
+ 624, 324, 600, 624, 80, 132, 28, 52,
+ 128, 128, 52, 136, 80, 104, 132, 624,
+ 576, 576, 272, 576, 620, 624, 140, 964,
+ 324, 984, 624, 576, 132, 272, 576, 396,
+ 136, 620, 232, 232, 576, 600, 600, 104,
+ 712, 576, 104, 712, 136, 600, 620, 576,
+ 936, 936, 620, 132, 136, 264, 136, 984,
+ 140, 576, 600, 712, 264, 388, 436, 376,
+ 244, 284, 420, 612, 340, 456, 456, 420,
+ 456, 612, 528, 456, 420, 420, 456, 456,
+ 1012, 396, 364, 456, 420, 364, 252, 984,
+ 612, 372, 420, 420, 284, 372, 420, 364,
+ 372, 252, 984, 456, 16, 612, 340, 272,
+ 692, 612, 16, 452, 612, 396, 340, 456,
+ 264, 452, 340, 340, 456, 324, 340, 452,
+ 456, 456, 452, 432, 960, 244, 600, 272,
+ 92, 284, 380, 68, 376, 236, 376, 380,
+ 68, 284, 132, 296, 380, 132, 84, 380,
+ 284, 376, 132, 284, 296, 380, 628, 296,
+ 380, 628, 284, 376, 376, 500, 380, 284,
+ 832, 444, 612, 92, 92, 68, 612, 68,
+ 92, 612, 1020, 92, 612, 832, 136, 376,
+ 132, 444, 612, 444, 132, 136, 112, 500,
+ 444, 380, 72, 68, 136, 400, 0, 72,
+ 500, 600, 12, 12, 600, 380, 380, 600,
+ 132, 380, 456, 452, 612, 236, 376, 8,
+ 376, 452, 500, 112, 452, 400, 376, 272,
+ 84, 628, 456, 612, 272, 376, 376, 612,
+ 376, 632, 444, 628, 452, 456, 444, 452,
+ 376, 68, 376, 380, 888, 380, 888, 456,
+ 452, 68, 376, 888, 888, 376, 888, 400,
+ 452, 628, 452, 84, 524, 444, 888, 84,
+ 612, 376, 52, 272, 272, 84, 132, 136,
+ 380, 68, 52, 600, 376, 628, 136, 600,
+ 600, 376, 400, 400, 376, 600, 252, 8,
+ 600, 84, 612, 628, 440, 836, 888, 1020,
+ 72, 68, 112, 112, 72, 604, 360, 84,
+ 380, 888, 628, 600, 888, 600, 604, 380,
+ 72, 84, 836, 464, 888, 524, 452, 96,
+ 524, 68, 372, 92, 440, 372, 84, 92,
+ 928, 604, 400, 112, 440, 444, 628, 284,
+ 792, 440, 836, 524, 68, 380, 628, 380,
+ 888, 524, 380, 524, 84, 304, 524, 628,
+ 500, 836, 836, 68, 440, 524, 84, 1016,
+ 628, 880, 436, 836, 440, 792, 836, 792,
+ 440, 880, 848, 436, 440, 440, 524, 12,
+ 752, 500, 88, 584, 612, 48, 72, 0,
+ 880, 72, 832, 500, 464, 660, 832, 584,
+ 464, 584, 504, 388, 88, 428, 444, 0,
+ 92, 428, 880, 428, 428, 12, 388, 848,
+ 12, 432, 72, 464, 500, 112, 444, 628,
+ 464, 944, 880, 944, 584, 944, 944, 500,
+ 112, 880, 464, 584, 500, 72, 500, 832,
+ 584, 12, 880, 112, 936, 880, 880, 500,
+ 12, 880, 832, 584, 944, 500, 500, 944,
+ 388, 408, 628, 500, 780, 264, 408, 584,
+ 12, 944, 500, 428, 12, 944, 880, 584,
+ 432, 388, 500, 12, 628, 944, 12, 880,
+ 584, 12, 944, 944, 304, 428, 880, 776,
+ 432, 880, 304, 880, 264, 120, 12, 880,
+ 692, 628, 428, 880, 72, 836, 808, 296,
+ 660, 724, 724, 880, 660, 392, 808, 660,
+ 464, 444, 444, 464, 444, 12, 316, 808,
+ 604, 880, 84, 584, 584, 808, 464, 584,
+ 304, 836, 724, 296, 660, 284, 284, 464,
+ 296, 728, 284, 296, 392, 752, 792, 380,
+ 724, 284, 284, 836, 284, 380, 832, 836,
+ 792, 40, 628, 752, 464, 464, 604, 284,
+ 464, 808, 752, 632, 628, 628, 792, 836,
+ 832, 752, 792, 808, 836, 836, 808, 1020,
+ 792, 808, 808, 836, 464, 836, 464, 832,
+ 752, 836, 836, 432, 464, 436, 752, 836,
+ 836, 752, 792, 628, 752, 792, 440, 792,
+ 440, 1020, 792, 432, 628, 68, 836, 316,
+ 436, 440, 400, 604, 440, 112, 440, 436,
+ 112, 628, 440, 112, 432, 836, 440, 604,
+ 440, 604, 752, 316, 464, 72, 364, 432,
+ 464, 112, 464, 112, 632, 464, 400, 68,
+ 752, 832, 752, 112, 792, 436, 584, 316,
+ 808, 832, 808, 776, 584, 880, 880, 584,
+ 808, 628, 752, 436, 776, 120, 1020, 880,
+ 432, 880, 776, 476, 792, 436, 436, 476,
+ 792, 808, 792, 476, 476, 284, 476, 440,
+ 92, 432, 752, 372, 372, 120, 440, 372,
+ 428, 92, 368, 428, 428, 368, 72, 500,
+ 16, 440, 372, 440, 1020, 632, 440, 632,
+ 140, 120, 500, 752, 872, 776, 120, 476,
+ 476, 140, 872, 120, 872, 120, 432, 752,
+ 428, 792, 368, 476, 440, 120, 400, 440,
+ 964, 964, 428, 120, 1020, 476, 120, 632,
+ 476, 584, 372, 92, 752, 660, 964, 284,
+ 808, 808, 504, 284, 752, 752, 808, 504,
+ 284, 92, 504, 632, 964, 92, 400, 604,
+ 428, 504, 92, 1020, 504, 92, 428, 372,
+ 372, 632, 1020, 428, 776, 780, 504, 584,
+ 964, 808, 632, 604, 400, 584, 808, 428,
+ 584, 752, 808, 476, 632, 808, 476, 604,
+ 400, 504, 428, 808, 600, 964, 808, 400,
+ 560, 1020, 332, 432, 964, 520, 900, 960,
+ 620, 512, 564, 716, 400, 596, 564, 916,
+ 512, 796, 564, 824, 916, 916, 564, 916,
+ 512, 8, 916, 764, 824, 512, 596, 620,
+ 512, 596, 764, 632, 824, 628, 960, 824,
+ 964, 632, 960, 796, 824, 512, 1016, 1016,
+ 512, 824, 512, 1016, 604, 512, 1016, 604,
+ 1016, 960, 364, 960, 632, 604, 796, 564,
+ 512, 916, 736, 632, 736, 76, 916, 76,
+ 736, 512, 900, 964, 916, 900, 964, 1012,
+ 512, 900, 916, 632, 936, 604, 264, 564,
+ 900, 796, 96, 824, 824, 916, 984, 512,
+ 824, 984, 984, 512, 916, 364, 512, 1016,
+ 432, 364, 1012, 432, 364, 716, 620, 76,
+ 824, 656, 252, 432, 512, 52, 364, 512,
+ 8, 432, 512, 520, 364, 512, 252, 520,
+ 692, 136, 824, 140, 20, 676, 596, 960,
+ 620, 620, 620, 596, 960, 620, 984, 960,
+ 264, 984, 960, 364, 20, 620, 140, 960,
+ 632, 364, 960, 512, 140, 140, 960, 1016,
+ 364, 432, 140, 620, 136, 52, 128, 604,
+ 136, 128, 620, 628, 620, 136, 576, 200,
+ 576, 136, 20, 964, 1016, 604, 604, 716,
+ 620, 512, 936, 360, 520, 512, 1012, 936,
+ 604, 620, 620, 96, 960, 632, 512, 1016,
+ 936, 360, 620, 620, 1016, 936, 620, 360,
+ 1016, 604, 960, 964, 632, 604, 964, 604,
+ 716, 512,
+};
+
+static encode_aux _vq_aux_res0_0c = {
+ _vq_ptr0_res0_0c,
+ _vq_ptr1_res0_0c,
+ _vq_p_res0_0c,
+ _vq_q_res0_0c,
+ 4842, 4842
+};
+
+static static_codebook _vq_book_res0_0c = {
+ 4, 256, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4,
+ _vq_quantlist_res0_0c,
+ _vq_lengthlist_res0_0c,
+ &_vq_aux_res0_0c,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0_0d.vqh b/include/vorbis/book/res0_0d.vqh
new file mode 100644
index 00000000..7a92aa49
--- /dev/null
+++ b/include/vorbis/book/res0_0d.vqh
@@ -0,0 +1,1799 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/vqbuild
+
+ ********************************************************************/
+
+#ifndef _V_res0_0d_VQH_
+#define _V_res0_0d_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_0d[] = {
+ 0, -4, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 3, 0,
+ 0, 3, 0, 0,
+ -4, 0, 0, 0,
+ 0, 0, -3, 0,
+ 0, -3, -3, 0,
+ 0, 0, 0, -3,
+ 0, 0, 0, 3,
+ 2, 0, 0, 0,
+ 0, 3, 0, 4,
+ 0, 4, -4, -3,
+ 6, 0, 0, 0,
+ -4, 0, 3, 4,
+ 0, 4, 4, -4,
+ 0, 3, -5, 0,
+ 0, 5, -3, 0,
+ 3, -1, 4, -2,
+ 3, 3, 4, 0,
+ 0, 0, 3, -4,
+ 0, 1, 0, -6,
+ 0, -1, 7, 0,
+ 0, 0, -7, 0,
+ 0, -7, 0, 1,
+ 0, 5, 1, 0,
+ 0, 0, -2, -4,
+ 5, 0, 0, -3,
+ -3, 0, -3, 0,
+ 0, 0, 0, 7,
+ 3, -1, 3, -4,
+ 0, -4, 4, -3,
+ 5, -4, 3, 0,
+ 0, 0, 5, 5,
+ 0, 0, 2, 5,
+ 4, 0, 0, 3,
+ 5, 0, 5, 0,
+ 6, 5, 0, 0,
+ 5, 0, -5, 0,
+ 0, 5, 0, -4,
+ 0, 1, 4, 1,
+ -3, 0, -4, 4,
+ -2, -3, 0, 0,
+ 0, -3, 0, 4,
+ 1, -5, 4, 0,
+ 0, 0, -3, 4,
+ 3, 4, 1, 3,
+ -3, 0, 0, 3,
+ -4, -4, 0, 3,
+ 0, 3, 5, 0,
+ -3, 0, 5, 0,
+ 0, 0, -6, -3,
+ -5, 0, 3, 0,
+ 4, 1, 1, 0,
+ 4, -4, 0, 0,
+ -4, 0, 0, -3,
+ 3, -3, 0, -4,
+ -3, 3, 0, 0,
+ 3, 0, -2, 0,
+ 0, -5, 0, -4,
+ 3, 6, 1, 0,
+ 4, 3, -5, 0,
+ -2, 3, -5, 0,
+ 0, 2, -4, -6,
+ 7, 1, -2, 0,
+ 5, 0, -3, -4,
+ -3, 3, 3, 3,
+ -4, 0, 6, 1,
+ -3, -4, 5, 0,
+ -3, 4, 5, 0,
+ -3, -7, 0, 0,
+ -6, -6, 0, 0,
+ -7, 0, 0, 3,
+ -7, 0, 0, -5,
+ -4, 0, 0, -6,
+ 4, 2, 0, 4,
+ 0, -5, 4, 3,
+ 5, 0, 3, 5,
+ -5, 0, -3, -3,
+ -4, 5, -3, 0,
+ 0, -5, -3, 3,
+ 0, -5, 0, 6,
+ 0, 1, 6, -3,
+ -3, -3, 2, -3,
+ 0, 2, -4, 4,
+ 2, 0, -6, 3,
+ 0, 8, 0, 1,
+ 7, 0, 0, 5,
+ 6, 0, 0, -6,
+ -3, 3, -3, -3,
+ 4, 3, -3, -2,
+ 3, 0, -5, -4,
+ -3, 0, -4, -4,
+ 0, -4, -5, -3,
+ -2, 6, 0, -3,
+ 0, 5, -4, 2,
+ -3, -5, -4, 0,
+ 0, 0, 4, -2,
+ 3, 1, 0, -6,
+ 8, 0, 1, -1,
+ -8, 0, 0, 0,
+ 4, 0, 5, 4,
+ -3, 2, 3, -4,
+ 5, -3, -4, 0,
+ 6, -3, 0, 1,
+ 3, -3, 2, 3,
+ -5, -3, 1, 0,
+ -7, 0, -4, 0,
+ 4, 0, -3, 5,
+ 5, 0, -4, 3,
+ -5, 4, 0, -2,
+ 0, 4, 3, 4,
+ 0, 4, -3, 4,
+ -3, 2, -3, 4,
+ -4, 3, -3, 0,
+ -4, 0, -6, 1,
+ 0, -3, -5, 3,
+ 0, -3, 0, -6,
+ 3, -7, 0, 0,
+ 0, 7, 4, 0,
+ -5, 0, 3, -4,
+ 0, -2, 4, -5,
+ 3, -1, 0, 6,
+ 3, 3, 3, -3,
+ 3, 3, -2, 3,
+ -4, 3, 0, 4,
+ -3, 4, -2, 2,
+ -5, 5, 0, 1,
+ -5, 2, 0, 0,
+ -5, 3, 3, 0,
+ -3, -3, 0, -4,
+ -1, 5, 0, 6,
+ 1, -3, 4, 2,
+ 3, -5, -3, 0,
+ 0, -4, -7, 0,
+ 0, 0, -5, 6,
+ -2, 0, 4, -3,
+ -3, -4, -1, -2,
+ -5, 0, 0, 6,
+ -5, -3, 4, 0,
+ -5, -3, -4, 0,
+ -2, -3, 3, 4,
+ 4, 5, 0, -4,
+ -3, -1, -3, -2,
+ 3, -5, 0, 4,
+ -3, -3, -3, 3,
+ -3, 3, 3, -1,
+ -3, 3, 0, -4,
+ 2, 2, 0, -3,
+ 2, -3, -2, 2,
+ 0, -2, -4, -4,
+ 3, 5, -3, 0,
+ 3, 1, 4, 3,
+ 2, 3, 7, 0,
+ 0, -7, -5, 0,
+ 0, 7, -5, 0,
+ -6, -3, 0, -3,
+ -5, 2, 2, 3,
+ 0, 2, 5, 5,
+ 0, 5, 5, 2,
+ 2, 4, -3, -3,
+ 3, 1, -2, -4,
+ -4, -6, 0, -3,
+ -2, 5, 3, -3,
+ -2, -4, 3, 2,
+ 0, -7, -1, -2,
+ -3, 0, -3, -6,
+ 0, 1, 3, -6,
+ 0, 0, 6, -6,
+ -3, -6, 3, 0,
+ 6, 3, 0, 3,
+ 2, -3, -3, -4,
+ 8, -4, 0, 0,
+ -5, 7, 0, 0,
+ -3, 6, 3, 0,
+ 3, -2, -2, -3,
+ -6, -4, -1, 1,
+};
+
+static long _vq_lengthlist_res0_0d[] = {
+ 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+};
+
+static long _vq_ptr0_res0_0d[] = {
+ -1, -2, -3, -4, -5, -6, -7, -8,
+ 152, 21, 14, 39, -13, 152, 158, -16,
+ -17, -18, -19, 3, -21, 3, 52, -24,
+ -25, 18, 52, 39, -29, -30, 3, -32,
+ -33, 3, 96, -36, -19, 1, -39, 1,
+ 7, -42, -43, 3, 39, 48, 39, -48,
+ 14, 24, -51, -52, 14, -54, 14, -56,
+ 14, 96, 7, -60, -61, -62, 18, 96,
+ -65, 122, 52, -68, -69, 85, -71, -72,
+ 14, -74, -13, 3, 18, -78, 152, 118,
+ -81, -14, -75, 78, -49, 16, 61, -88,
+ -89, -90, 3, -92, -69, -86, 24, -96,
+ -97, 24, 93, 93, -101, -102, -103, -104,
+ -72, 61, -107, 162, -105, 14, -108, -112,
+ -113, 18, 118, -110, -117, -118, -119, 3,
+ -121, -122, 18, 122, -125, 24, 113, -128,
+ 14, 14, 112, -130, -133, -134, 24, 106,
+ -137, -138, 38, -135, -141, -142, 38, 141,
+ -139, -146, -147, -148, -149, 18, 36, 52,
+ -153, -154, -155, -156, 36, -144, -123, 112,
+ 114, 36, 141, -164, -165, -166, -167, 62,
+ -169, 20, 25, -172, -173, -174, -175, 14,
+ 106, -178, 166, -180, -181, -182, 20, 97,
+ -185, -186, 97, 38, -189, -138, -176, 27,
+ -65, -191, -193, -196, -182, 78, -199, -200,
+ 19, 113, 166, 78, 122, -169, -203, -182,
+ -206, 113, -211, -54, 112, -212, -129, 27,
+ -215, -218, -219, -220, -221, 152, -223, -224,
+ 81, 21, -227, -228, -113, 61, 35, -232,
+ 81, -234, -235, -236, -56, -229, -239, -224,
+ -237, 96, -240, -244, 14, -246, 14, 166,
+ -249, -250, -251, -252, -253, -254, -255, -256,
+ 17, -258, 17, 30, -261, -9, -242, 96,
+ 21, -266, -267, -256, 127, -270, 81, 167,
+ -273, 17, 96, -276, 29, -278, -279, -280,
+ -281, 19, 46, -284, 166, -282, -287, 29,
+ 166, 124, -291, -270, -289, 29, -295, 152,
+ -297, -298, -299, -300, 0, -214, 4, -302,
+ -305, 17, -307, -308, -309, 19, 30, -34,
+ -303, 30, -315, -316, -317, -318, -319, -320,
+ 17, -322, 29, 30, 55, -326, 0, -328,
+ -329, 30, 126, -332, -333, 0, 19, 0,
+ 55, 7, -339, -340, -309, 125, 116, 116,
+ -345, -346, -322, 113, -349, 116, 29, -352,
+ -353, 23, -355, -356, 31, -358, 31, 53,
+ 43, 117, -363, -364, 30, 164, -347, 55,
+ -369, 0, 164, -372, -373, -374, 62, -376,
+ -377, 20, 25, -380, -381, -382, -383, -384,
+ -385, 19, -387, 20, 166, -388, -366, -392,
+ 97, -207, -301, 46, 124, -183, 124, 112,
+ -399, -402, -403, -404, -405, -406, -407, 26,
+ -409, 87, -400, 87, -413, 97, -415, -416,
+ 26, -410, -419, -183, -417, -420, -65, 112,
+ -425, -426, -409, 71, -429, -430, 29, -427,
+ -433, 166, -431, -436, -437, 87, 97, 116,
+ 55, -442, -443, -444, -445, 17, -34, 71,
+ -449, 1, 2, -40, -447, -454, 19, -452,
+ 19, -458, 1, -460, -461, -462, -463, -464,
+ -465, -466, -467, 17, 26, 17, -471, 98,
+ 35, 122, -475, -476, 26, -455, -479, 29,
+ 29, 98, 26, 98, -485, 26, 46, 29,
+ 147, 81, 19, -492, -493, -494, -495, -496,
+ -497, 62, 40, 62, -501, 170, 90, -504,
+ 25, -506, 165, 116, -509, 102, -511, -512,
+ 170, -514, -515, 64, 170, -518, 90, -498,
+ 112, -522, 117, -520, -525, -526, -527, -528,
+ 26, -530, 26, 171, -533, -534, 26, -523,
+ 171, -538, 98, 31, -541, 171, -543, 12,
+ -545, 26, 53, -548, -549, -550, 6, -552,
+ 62, -504, 71, -554, -557, 153, -559, -560,
+ -561, 164, 92, 92, -565, -566, -563, -555,
+ -569, -570, 170, 149, -573, 116, -575, 6,
+ -577, -578, -579, 22, -581, 92, -583, 92,
+ -502, -567, 50, -588, 25, -590, -591, 22,
+ -593, 5, -595, 5, 4, -598, -599, -600,
+ 90, -583, 27, 170, 64, -602, -607, 153,
+ -609, -610, -611, -612, 92, 102, -615, -516,
+ 71, -618, 102, 132, -562, -616, 132, 102,
+ -625, -626, -627, -628, -629, -369, -621, -630,
+ -633, -370, -631, -634, 40, 170, 13, -618,
+ -638, -619, 28, 6, -645, -646, -647, 0,
+ -369, 46, 10, -652, 0, -654, -655, 117,
+ -650, -658, -361, -656, 132, -662, -663, 0,
+ -665, -546, -659, 55, 53, -670, -671, -672,
+ -673, -504, -666, 6, 6, -678, -679, 5,
+ -396, 6, -681, 10, -685, 174, 7, -688,
+ -689, 0, -75, -692, -693, -694, -695, -696,
+ 3, 11, 16, 11, 15, -702, -703, -704,
+ 60, 154, 85, -708, 159, 89, -711, -712,
+ -713, -714, -715, 154, 16, -718, 15, -690,
+ -721, 11, 15, -724, -725, 154, -708, -719,
+ -729, 15, 16, -705, 124, -734, -735, -736,
+ -737, -738, 3, -721, 130, 3, 159, -744,
+ -745, 16, 28, 85, -749, -707, -394, -746,
+ -751, -754, -755, -709, 10, -758, 36, -760,
+ -758, -756, -161, 124, -765, -766, 3, 112,
+ 147, 24, -771, 85, -156, -767, 150, -776,
+ -777, -778, -779, -780, -781, -782, 11, 10,
+ 62, 20, -787, -788, 11, 90, -791, 62,
+ -783, -792, -795, -796, -797, -798, 64, 89,
+ -793, -802, -803, 62, -805, -806, -807, -808,
+ 159, 125, -811, 89, 111, -814, -815, 160,
+ 89, -812, -819, -820, -497, -783, -823, -824,
+ 160, 25, 25, -821, -829, -830, 62, -832,
+ -833, -834, -835, -836, -837, 3, 57, 5,
+ -841, 11, -843, -782, -827, -808, -844, -848,
+ -849, -850, 160, -852, 25, 40, 160, -856,
+ -857, -858, 3, -839, 83, 7, -863, -33,
+ -860, -864, -21, -865, -867, -870, -871, -872,
+ -873, 60, -700, -853, 22, -878, 22, -789,
+ -520, 5, -883, -884, -885, -886, 60, 90,
+ 89, 112, -891, 60, 89, -894, -704, 28,
+ -895, -729, -896, -898, -901, -902, -903, -904,
+ 159, -899, -907, 160, -909, -907, -905, -910,
+ -852, 83, -915, 90, -913, -918, -919, -920,
+ 11, 15, 15, -924, -788, 61, -925, -928,
+ 25, -926, -931, -932, -933, -934, -935, -936,
+ -937, -938, 12, -940, 63, 64, 63, -929,
+ 26, -946, -947, -948, -949, -950, 12, 16,
+ -953, 26, -75, -471, 16, -956, -959, -960,
+ 63, 98, -963, 26, 94, -966, -468, -956,
+ -197, 98, -971, -972, -973, -974, -975, 64,
+ -968, -978, -979, -980, -854, 78, -981, -2912,
+ -982, 85, -987, -416, 154, -988, 166, -989,
+ -991, -994, -995, 26, 61, -998, 87, -996,
+ -1001, 64, -995, -956, 64, -1006, -1007, 89,
+ -995, 78, -1011, 36, 61, -987, -1440, -1012,
+ -1015, -1016, -1019, -1020, 160, -1017, -119, -1021,
+ -22, -1023, -1025, 3, -850, 127, -709, 54,
+ 77, -1034, -1035, -886, -1032, -1038, 63, 89,
+ -1041, -704, -1036, 109, 99, 77, -1047, -1048,
+ -1049, -515, -1045, -1050, -1053, -1054, -1055, 64,
+ 99, 72, -1055, -1057, 37, -907, -1059, -1064,
+ 160, -1062, -1067, -1068, -1069, -1070, -1071, -1072,
+ -1073, -1074, 3, 85, -1077, -1078, 158, 39,
+ -1081, 24, 110, -1084, -1085, 158, 18, 45,
+ -1089, -1090, -1091, 158, -1093, 24, -1095, 85,
+ 110, -1098, -1075, 106, 24, 99, 24, 118,
+ -1105, -1106, 157, -1108, -1109, -1110, 152, 158,
+ -1113, -1114, 157, 110, -1111, -1101, 4, -1120,
+ -1121, -1122, 158, -1124, -13, -1118, -14, -1125,
+ -1101, -1130, -1110, 77, 39, -1134, 18, -1131,
+ -1082, -1135, -1043, -1137, 71, -1142, 21, -1144,
+ 157, 32, -1147, -1148, -1149, -1150, -1151, 3,
+ -1153, -1154, 10, -1140, -1155, -1158, -1159, -783,
+ 27, 110, -1163, 85, -1160, -1163, -1164, 45,
+ -1169, 3, -1166, -1172, -1173, -1174, -1175, -1176,
+ -650, 27, 39, 28, -1181, 33, 78, -1184,
+ -1185, -1186, -1187, -1144, -925, -1188, -1191, 33,
+ -1189, -1145, 88, 27, 32, 28, 28, -1200,
+ -1201, -1202, -1203, 74, -1205, 74, 76, 45,
+ -1209, -1210, 157, -1114, 88, 33, 61, -1216,
+ -1217, -1218, 169, -1220, -1221, 12, -1214, -3041,
+ -1222, -1224, -1227, 169, -1229, -149, 114, 36,
+ 91, -471, -1232, 35, -1237, 3, -1239, -149,
+ -1032, -1240, -1243, -156, -1241, 27, -1247, -1248,
+ -1249, -1110, -1245, -1252, -1253, -1134, 106, 52,
+ -1177, -1207, 77, -1258, 152, 100, -1263, 35,
+ -1259, 39, 1, -1268, -1269, 74, 76, 86,
+ -1273, -1274, -1275, -1205, -1264, -1276, -1279, 169,
+ -1277, -1279, 114, 91, -1285, 34, -1283, -1288,
+ -1289, -1290, -1291, -1292, -886, 22, -1293, 61,
+ -1297, -942, -1295, -1298, -1299, -1302, -1303, 169,
+ 36, -704, -1300, 123, -1309, -1310, 3, -1312,
+ -1313, -1314, -1315, -700, 165, -1318, 83, 5,
+ -1321, -1322, 60, -1324, 15, 94, -1327, -1328,
+ -873, 165, -1331, 15, 84, 84, 83, -1336,
+ -1337, -1338, -1339, 3, 45, -1342, 10, -1212,
+ -1345, 3, 62, -1348, 15, -988, -1346, -698,
+ -1350, -985, 25, -1163, -1354, -1356, -1359, -718,
+ 20, 85, -2194, 62, -1363, -1366, -1367, -1368,
+ -1369, -950, -1364, -1372, -1373, 34, -1375, -1376,
+ 63, -1378, -1379, -1380, -1381, -1382, 74, 45,
+ -1227, 165, 45, -1385, -1389, -1227, 54, 77,
+ 73, -1394, -21, -1392, 123, -1398, 45, -1395,
+ -1399, -1402, -1403, -1404, -1405, 60, 37, -1038,
+ 91, -1376, -1391, 108, -1333, 77, -1415, 107,
+ 74, -1413, 63, -839, -1417, 123, 9, -1424,
+ -1425, -1426, 5, -1428, 28, 10, -1431, -1334,
+ -1420, 44, -895, -1391, -1057, -1438, -783, -1436,
+ 109, -1198, 109, 88, -1445, -1446, -1447, -1448,
+ -1431, -1362, -1443, -1258, -1453, 107, -1451, -1456,
+ -1457, 84, -1454, 72, 111, -1462, 74, 107,
+ 44, 28, -1467, -1468, -1469, -1470, 3, -1472,
+ -1473, -1474, -783, -1459, -1475, -1478, 74, 74,
+ -1481, 74, -1182, -1484, 5, -1470, -86, -1486,
+ -1489, 34, 123, 8, -1493, -1494, 74, -1496,
+ 28, -1258, -1499, 74, 86, -1502, -1503, -1504,
+ -1505, -1506, -1507, -1508, -1509, -1510, -1511, -1512,
+ -1513, 12, 88, 12, -1517, 63, -1346, -1517,
+ 62, 98, -1523, -1524, 12, -1526, 34, 63,
+ -788, -1530, -1531, -1532, -1533, -1534, -1535, 12,
+ -1528, 86, -1539, 63, -1541, 86, 103, -1222,
+ -1545, 86, -1547, 103, -1549, -1550, 76, -1545,
+ -1543, 34, -1555, -1556, 76, -1558, 31, 103,
+ -1561, 86, -1563, 103, 53, -1566, -1567, 98,
+ -1569, -1570, 103, -1572, -1573, 31, -1547, -1552,
+ -1575, -1578, -1579, -1580, -1581, 35, -1576, 98,
+ -1489, 56, 7, -1588, -1589, -1590, -1206, -1586,
+ -1593, 100, -1390, -1596, -1285, -1594, -1619, -75,
+ -1599, -1602, -1603, -1604, -1605, -1606, 12, -1573,
+ 88, -1608, -1611, -1612, 17, -1614, 12, 27,
+ -1617, -1618, 12, 162, -1615, 27, -1623, 35,
+ -75, -1583, -1624, 31, -1629, -1630, -1631, -1206,
+ -86, 27, -1635, -1636, -1637, 34, -1639, 103,
+ -1641, -1642, -1547, 61, 53, 53, 104, -1643,
+ -1649, -1650, -1651, -1652, 76, 34, -1655, -1500,
+ -1647, 107, -1653, -75, 88, -1662, -1663, -1664,
+ -1637, 61, 121, -1668, 107, -1665, -1669, 108,
+ -1673, 103, -1670, 143, -1677, -1678, 34, -1680,
+ 34, 38, -1465, 93, 44, -1686, -1687, -1688,
+ -1689, -1690, -1691, -1692, -1612, -1683, 20, -22,
+ 3, -1696, -1699, 131, -1701, -1702, -689, -1697,
+ -1705, 43, -1707, 21, -1709, 75, -9, 88,
+ -1711, -1714, -1715, -1716, -1717, -1718, -1719, 75,
+ 93, -326, 88, -1724, 23, 43, -1727, 104,
+ -1722, -1730, -1731, -1573, 78, -1734, 43, -1736,
+ -1737, 104, -1732, 104, -1741, -1573, -1738, -1742,
+ -1734, 16, -1747, 75, -1723, -1392, -1745, 78,
+ 117, -1754, -326, -1751, 23, -1758, 163, -1760,
+ -1646, -1755, -1752, 88, 11, -1766, -1767, 104,
+ 148, -1770, -689, -1764, -1771, -668, 154, -1774,
+ 0, 42, -1779, 76, 31, -1559, 154, -1784,
+ -1785, -221, -1632, 21, -1627, -1786, -1791, -1792,
+ 31, -1794, -1795, -1593, -1789, -1796, 88, -1800,
+ -1801, -1802, -1803, -1804, -1805, -1806, -1206, -1798,
+ -1807, 32, -1811, 100, -1808, -1814, 32, -1812,
+ 76, 33, -1819, 33, 104, -1822, -1823, -1824,
+ -1825, 21, 32, -1828, 100, -1815, -1831, -1832,
+ -1833, 21, -1829, 128, -1837, -1826, -268, -1132,
+ 128, 131, -1213, -1840, -1843, -1846, -1847, -1848,
+ -1849, -27, 51, 145, -22, 4, -1855, -1737,
+ -1853, -1699, -1856, -1860, -1181, 126, 131, -1864,
+ 42, -1861, -1867, 0, -1869, -1870, -1871, 0,
+ -1266, -1865, 2, -1874, 156, -1878, -1879, -1496,
+ -1876, 121, -1883, 42, -1885, -1886, -1887, -1888,
+ -1889, -1213, -1880, 8, -1678, 4, -1678, 99,
+ -1895, -1820, 71, -1898, 8, 9, -1903, -1904,
+ -1678, -1899, 121, -1905, -1820, -1907, 42, -1864,
+ 99, -1914, -1678, 71, 148, -1915, -1919, -1920,
+ -1921, -1922, 75, 99, -1925, -1926, -1927, -1928,
+ 80, -1930, 104, -1817, -1923, -1934, -1935, 28,
+ 33, 156, -1939, -1940, -1941, 104, 121, -1944,
+ -1777, -1937, -1945, -1666, 49, -1950, -1951, -1952,
+ 0, 42, -1955, -1719, 66, -1956, 66, 28,
+ -1961, 21, -1963, -1964, -1965, 75, 42, 33,
+ -1969, 32, -1958, -1972, -1973, -1969, 128, 131,
+ -1937, -1978, -1979, 33, -1976, -1953, 156, -1967,
+ 13, 42, -1987, -1988, -1989, -1990, -607, -1984,
+ 117, -1994, -1724, -1991, 164, 164, -1999, 171,
+ -2001, -2002, -2003, 0, 23, -652, -1995, 101,
+ -2006, -2008, -663, 124, -2013, -1563, 125, -2016,
+ -2017, 132, 124, -2018, -2021, -2022, -2023, -942,
+ -2019, -1898, -2027, 102, 63, 102, -2031, -1606,
+ 124, -2034, -2035, -613, -2032, -2038, 102, 156,
+ 73, -2039, -2041, -2044, -2045, -2046, -2047, 102,
+ -2042, -1639, -2048, -554, -2053, 53, 148, 108,
+ 13, -2058, -2059, -2060, -2061, -2062, -2063, -2064,
+ 153, 79, -2067, 115, 133, -2070, -2071, 79,
+ -2056, -2074, -2075, -2076, 0, 156, -2056, -2078,
+ -2081, -2082, -2083, -2084, -2085, -2086, 84, 115,
+ 108, -1668, -2079, -2090, -2093, -839, 4, -2096,
+ 84, 44, -1415, -2094, -2099, -2102, -2103, 6,
+ -2105, -2106, -2107, 84, -2109, -2110, -2086, 173,
+ -2113, -2027, 126, 172, 108, -2115, -2119, -2096,
+ 109, -2120, -1060, -2121, -1861, -2126, -2127, -591,
+ 109, -623, -2128, 37, -2133, 102, -2130, -839,
+ -347, 6, -2139, -2140, -2141, -623, 78, 132,
+ -2145, 115, -2147, -591, -2142, 78, -2040, -1720,
+ -2151, -2154, -2155, -2156, 102, -2017, -2152, 127,
+ -839, 119, -2137, -2161, 99, -2166, -2167, -2168,
+ -2169, -2170, -2171, 153, 72, -2174, -647, -2172,
+ -2175, -2178, -2076, 127, 79, 79, 109, -2184,
+ -2185, -2186, -2187, -2188, 0, -2182, -2191, -2192,
+ 79, -1923, 101, -2193, -2195, -2198, -1867, -1057,
+ 23, -2199, -2203, -2204, -2205, 80, 42, -2004,
+ -2201, -2208, -689, -2209, -1668, 2, -2215, -2216,
+ -1777, 39, -2217, 39, 66, -2222, -2223, -895,
+ -2220, -2226, -2227, -1668, -2224, 121, -2231, -2232,
+ -2233, 84, 107, -1456, -2194, 48, 68, -2240,
+ 115, -2238, 115, -2217, 148, 157, -2247, -2248,
+ -2249, -2250, -2087, -2245, 49, 44, -2255, -2256,
+ 5, -1840, -2253, -2238, 5, -2259, -2263, -2264,
+ -2265, 5, 128, -2220, 8, 44, -2267, -2272,
+ -2273, -2274, -2275, -2276, -2277, -2278, -2279, -2280,
+ -2281, -2282, 73, 20, 19, -2220, 166, 101,
+ -2289, -309, 65, 135, -2293, 73, 54, 166,
+ -2297, 81, 167, -2300, -2301, -2302, -2303, -2304,
+ 73, -2306, 73, 116, -2309, 73, -2290, -2312,
+ 167, -2314, 19, 120, -2317, -2318, -2319, 82,
+ 30, -2322, -2323, -2324, 82, 119, -2310, -2328,
+ -2329, -2330, 82, 4, 41, -2334, -2335, -2336,
+ 4, 135, 135, -2340, -2341, 96, -2236, -2326,
+ 156, -2346, -2347, -2348, -2349, -2350, -2351, 67,
+ -2344, -2324, -2352, 128, -2330, -1861, 168, -2360,
+ -2220, 65, -2363, -2364, -2351, 156, 49, -2365,
+ -2369, -2370, -2324, -2367, 1, -2374, -2375, 49,
+ 135, -2378, 119, 51, -2381, -2382, 66, 67,
+ -2385, -2386, -2387, -2388, 67, 3, -2389, -2392,
+ 81, 21, -2395, 21, -2397, -263, -2390, -2398,
+ -2401, 49, -2403, -2404, 67, 163, 41, -2399,
+ -2409, -2332, 173, -2401, -2410, 51, -2415, -2416,
+ 105, -2412, 41, -2420, -2421, -2422, -2423, -2424,
+ -2425, -1354, 172, -2428, -506, 109, 129, -507,
+ -2429, 93, -2435, -1520, -2433, -2438, -2439, -2440,
+ 25, -2436, -2441, -2442, -2445, -504, 118, 142,
+ 7, -2450, 92, 136, -2453, -2454, -2455, 129,
+ 85, -2456, -2459, 116, -2461, -2462, -2463, 155,
+ 72, -2466, 155, 129, -2469, -2306, -2457, 165,
+ 77, -2470, -2475, -2476, -2477, 77, -2473, 93,
+ -2481, -2482, -2483, 155, 172, 155, -2487, 129,
+ 136, -2490, -2491, -2492, 155, -2494, -2495, 77,
+ 106, -2498, -2499, -2500, -2501, -2502, -591, 24,
+ -2505, 27, -2503, -2506, -2509, -579, 85, 114,
+ -2513, 95, 133, 139, -1283, -2149, -881, -747,
+ -2521, 27, 5, -2524, -2525, -2526, -583, -2519,
+ -2529, -583, 125, -2530, -2533, -2534, 91, 85,
+ -586, -2535, -75, -2540, -2541, 155, -2543, -2544,
+ 95, 139, -2488, 85, -2547, -2550, -2551, -2552,
+ -2553, -2554, -2555, -2556, -2557, -2558, -2541, -2548,
+ 129, -2562, 161, -2559, 105, 161, -2567, 82,
+ 82, -2503, 82, 119, -2573, -2574, 69, -2576,
+ 70, 24, 70, -2580, -2581, 161, -2577, -2584,
+ -2585, -2586, 82, -2361, -2589, 168, -2587, -2389,
+ -2593, -2594, -2595, -2596, 155, 99, -2599, 155,
+ -2591, -2602, -2603, 155, 105, -2492, 65, -2608,
+ 136, 139, -2611, 71, -2606, -2614, 106, 68,
+ -2617, -2618, 4, -2496, -2615, -2622, -2623, 4,
+ -2625, 99, 158, -2724, -2626, -2628, -2631, 155,
+ 105, -2634, -2635, -2636, -573, -2629, -2639, -2640,
+ 161, 110, -2319, 158, 24, 82, -2647, 41,
+ -2649, 129, 65, -2652, -2653, -2654, 69, 95,
+ -2657, 161, -2659, 82, -2661, -2662, -2663, 0,
+ 41, -2666, -2640, -2650, -2667, -2670, -2671, -2672,
+ 164, 95, -2675, 92, -2456, -2676, -2679, -2680,
+ -2681, -2682, -2683, -2684, -2685, 27, 5, -593,
+ -2677, 4, -2691, 4, -2693, -2694, 41, -2696,
+ 41, -2688, -2699, -2700, 41, -2647, -2697, -2704,
+ 136, -2706, -2707, -2708, -2709, -2675, 33, -2673,
+ 65, 6, 92, -2712, 156, -2718, -2719, 4,
+ -2721, 41, -2716, -2607, -3100, -2722, -2725, 126,
+ -2729, -2730, -2731, -2732, -2733, 67, -1965, -809,
+ 163, -2738, -2739, -2740, -2741, 163, 105, 105,
+ 168, -2746, -2747, 67, -763, -2750, 163, -2752,
+ 0, -2754, 69, 23, 163, -2758, -2741, -2748,
+ -2761, -2762, -2763, -2764, 69, -783, 168, -2768,
+ -2769, 70, -2765, -2772, 168, -1163, -2775, -2776,
+ -2777, 66, -2773, 67, -2778, -2782, -2783, -2784,
+ 67, 163, -2787, -2788, -2789, -2790, 163, -2792,
+ -2793, 13, 72, 65, 65, -2798, -2799, -2800,
+ -2801, 13, -2796, -2220, -1159, -27, -2804, -2806,
+ -2807, -2810, -2811, 13, -2808, -1145, 157, -2816,
+ -2817, -2818, -2819, 163, 157, 46, -2823, -2824,
+ 41, 66, -2827, -1864, -2825, 65, -2829, -2710,
+ -2830, -2834, 39, -2832, -2837, -649, -2835, -2838,
+ -1266, 157, -2843, -2844, -2845, 28, -746, 80,
+ 13, -2850, 28, -2852, -2853, 80, -2848, -2856,
+ -2857, -1496, -2854, 13, -2794, -2859, -2800, -2864,
+ 42, -2862, -2867, -2868, -2869, -2870, -2871, -2801,
+ -2865, -1956, -2872, -2876, -2220, -2874, 163, -2877,
+ -2881, -2882, -2741, 96, -2885, 13, 47, -2885,
+ 2, 48, -2891, -2892, -2893, 13, -2895, -2896,
+ 13, -2219, -2860, -2897, 51, -2902, 13, 71,
+ -2905, -2906, 46, 68, -2220, -2910, -2736, -2908,
+ 81, 68, -2915, 71, -596, -2913, 41, 46,
+ -2921, -2604, 152, 47, 41, -2926, -2853, -2922,
+ -2886, -2927, 137, -2932, -555, -2898, 51, -2934,
+ -2937, -2938, 46, 47, -2571, 71, -2943, -2944,
+ -2945, -2946, -2947, -557, -2940, -2950, -2951, -2754,
+ 4, 0, 69, 135, -2957, -2958, 69, 23,
+ -2961, 79, -2963, 80, -2955, -2966, -2967, -2968,
+ 0, 95, 95, -2972, -2973, -2065, -2298, 95,
+ -2977, -2978, 153, 95, -2981, -2982, -2983, -2984,
+ -2985, 69, -2325, -2673, -2297, -2988, -2991, 70,
+ -2989, 70, -2382, -2996, -2969, -2994, -2609, -2997,
+ -3001, -3002, 95, 175, -2939, 173, -75, -3008,
+ -3009, -2970, 24, -3002, 162, 115, 115, -3012,
+ 139, -3018, -3019, 27, 41, 27, 46, 6,
+ -3025, -3026, -3027, 80, -3015, -3030, 42, 79,
+ -2933, -3028, -1974, -3036, -3037, -3038, -3039, -2509,
+ 101, 68, -3041, 115, -3045, 22, 114, -3042,
+ -3049, -3050, -3051, 114, -3047, -3054, -3055, -3056,
+ -3057, 27, 5, -3060, 40, 114, 40, -3064,
+ 27, -1440, 145, -3068, -3069, -1434, 166, 119,
+ 101, -3072, -3075, -853, 119, -3076, -1684, -3077,
+ -3079, -3082, 134, 115, 40, 42, 46, -3084,
+ -3080, 137, -3091, -3092, -3064, -1683, 46, 162,
+ -1140, -3095, -3016, -3097, -3099, -3102, -3103, -3104,
+ -3105, -3106, -3107, -3108, 73, -3110, 73,
+};
+
+static long _vq_ptr1_res0_0d[] = {
+ -2271, -1066, -491, -248, -163, -67, -15, -10,
+ -9, 2, -11, -12, -14, 48, 48, -50,
+ -28, -23, -20, 2, -22, 9, 9, -27,
+ -26, 2, 2, 2, -41, -31, 14, -35,
+ -34, 7, 7, -38, 7, 56, -40, 2,
+ 2, -46, -44, 39, -45, 2, -47, -49,
+ 48, 48, -59, -53, 38, -55, 122, -57,
+ 96, -58, 147, -64, 35, 48, -63, 122,
+ -66, 147, 147, -87, -70, 118, -73, 118,
+ 24, -77, -76, 56, 48, -80, -79, 48,
+ -84, -79, -37, -82, -79, 113, 113, -145,
+ -100, -91, 38, -95, -94, -85, 118, -99,
+ -98, 38, 38, 118, -116, -111, -109, -106,
+ 38, 78, -97, 38, -93, -94, 93, -94,
+ -114, 122, 122, -83, -127, -120, 18, 147,
+ -124, -123, 59, 59, -123, 59, 114, -132,
+ -124, 101, 114, -126, -136, -123, 147, 114,
+ -140, -65, 147, 113, -138, -143, 59, 59,
+ -131, -152, -150, 35, 118, 52, -151, 59,
+ -162, -161, -158, -143, 59, 127, -143, 40,
+ -159, 52, 147, -217, -210, -171, -168, 38,
+ -170, 38, 38, -195, -179, -177, -65, 147,
+ 40, 122, 147, -184, 166, -183, 147, 147,
+ -188, -187, 141, 141, -192, -162, -160, 106,
+ -162, -190, -157, -204, -198, 125, -202, -65,
+ 147, 56, -65, 56, -205, -207, -201, -58,
+ -197, 125, -38, -63, 125, -209, -983, -209,
+ -213, -233, -226, -222, 21, 35, -225, 96,
+ 48, 96, -231, 96, -230, 27, 122, 96,
+ 122, -245, -243, -238, 122, 112, -63, -241,
+ -216, 48, -208, 122, 166, -247, 167, 167,
+ -371, -351, -296, -294, -275, -265, -260, -257,
+ 21, -259, 43, 43, -264, -263, -194, 2,
+ 30, -272, -271, -269, 56, 21, 167, 120,
+ -274, 120, 120, -277, 30, -290, -286, -283,
+ -271, 120, 56, -271, 120, -268, -288, 120,
+ -271, 56, 120, -293, -285, 167, 35, 81,
+ -314, -304, -38, 7, 2, -990, 56, -268,
+ -306, 7, -313, -311, -310, 7, 7, 30,
+ -292, 2, -338, -331, -325, -324, -321, 30,
+ 55, -323, 55, 55, 58, -327, 43, 43,
+ -324, 58, 127, -335, 7, -334, 30, -336,
+ -337, 58, -344, -343, -342, 127, 7, 120,
+ -350, -348, 120, 127, 120, 55, 7, -362,
+ -354, 164, -360, -357, 117, -359, 55, 55,
+ -361, 53, -367, -322, -365, 43, -341, -368,
+ -370, 58, 58, -441, -401, -379, -375, 97,
+ -378, 116, 116, 167, -342, -393, -389, -386,
+ 166, 97, -388, 97, 97, -391, -330, 147,
+ 122, -397, -1223, 127, 125, -58, 46, 46,
+ -398, -424, -412, -411, -392, -408, 55, 97,
+ 55, 97, -396, 98, -414, 7, -418, -65,
+ 147, -395, -422, -162, -390, -312, 141, 124,
+ -435, 7, -428, 124, -432, -392, 122, -423,
+ -392, 122, 46, -439, -438, 55, 55, -440,
+ 7, -459, -453, -446, 9, 2, -448, 99,
+ -451, -450, 9, 9, 4, -456, -322, -434,
+ -457, 9, 7, -489, -484, -482, -474, -470,
+ 122, -469, -468, 98, 98, 52, -472, 52,
+ -473, 52, -480, -478, -473, -421, 122, 52,
+ -481, 122, -483, 31, -487, -22, 137, -488,
+ 9, -490, 122, -691, -547, -508, -500, -499,
+ -387, 97, 137, 25, -503, -502, 149, -505,
+ 149, -507, 149, 149, -521, -510, -437, -513,
+ 55, -517, -516, 174, 174, -516, 174, -486,
+ 137, -524, -324, 46, -540, -537, -532, -529,
+ 31, -531, 53, 53, -536, -437, 55, -519,
+ 55, -539, 171, 171, -542, 174, -544, 53,
+ -546, 174, 174, -624, -576, -556, -551, -553,
+ 149, -507, 137, -486, -558, 164, -564, -563,
+ -562, 6, 6, 58, -574, -568, 149, -519,
+ -572, -571, 58, 58, 149, 58, 149, 58,
+ -597, -587, -580, 133, -582, 133, -584, 149,
+ -586, -535, 149, -589, 5, -592, 50, 6,
+ -594, 6, -586, 149, 46, -606, -604, -601,
+ 92, -603, 46, 149, -518, -596, -608, 132,
+ -623, -620, -614, -613, 132, 132, -617, 132,
+ 46, -619, 174, 174, -622, -605, 6, 133,
+ -669, -644, -639, -637, -632, -575, -585, -477,
+ -570, -575, -262, -115, 46, -622, -636, -641,
+ 137, -643, -640, 174, -657, -651, -648, 164,
+ -324, 8, 8, -653, 117, -359, 55, 58,
+ -649, -661, -660, 28, 53, -664, 9, 53,
+ -668, -667, -398, 174, 9, -687, -682, -677,
+ -676, -675, -642, 149, 7, -681, -458, 7,
+ 56, 1, -684, 56, -686, 9, 9, -571,
+ 6, 9, -683, -775, -748, -733, -701, -699,
+ -697, -698, 85, -700, 5, -710, -706, -705,
+ 150, 150, -707, -709, 150, 150, -731, -723,
+ -720, -717, -716, 94, 94, -716, 94, -680,
+ -722, 16, 16, -726, 159, 16, -728, -674,
+ -730, 150, 150, 85, 137, -743, 62, -741,
+ -739, 38, 16, 38, -732, -742, 38, -747,
+ -98, 38, 137, 93, -759, -753, -2627, -740,
+ 112, 147, -757, 141, 124, 141, 150, -769,
+ -762, 125, -764, 130, -768, -151, 59, 130,
+ 59, -770, -772, 59, -774, -763, 59, -930,
+ -831, -794, -786, -784, 25, -138, 147, 130,
+ -785, 25, -790, -789, 50, 50, -789, -586,
+ -763, -773, -828, -801, -409, -799, 90, 90,
+ -761, -818, -804, 159, -186, -813, -810, -162,
+ 147, 130, -162, 147, 130, -816, 147, 141,
+ 141, -809, -799, -822, 90, 125, -826, -825,
+ 97, 97, 90, -817, 38, 97, 20, -869,
+ -847, -842, -840, -839, -838, 150, 150, 57,
+ 5, 25, -845, 25, -800, 89, -752, -855,
+ -854, -851, 57, -839, 57, 134, 147, -862,
+ -859, 147, 57, -861, 40, 57, -866, -458,
+ -159, -853, -488, 125, 5, -900, -882, -877,
+ -874, 22, -876, 137, 5, -879, 90, -881,
+ -875, 50, -893, -890, -888, -887, 37, 37,
+ -887, 134, -892, 57, 57, -897, -838, 134,
+ -889, -838, -880, -732, -917, -908, -906, -799,
+ 90, -868, 89, 90, -912, -826, -846, -727,
+ -914, 114, -839, 57, 112, -923, -922, -921,
+ 159, 159, 50, -927, -881, 114, -130, -881,
+ 50, -916, -1033, -1018, -970, -945, -944, -515,
+ -942, -939, 63, -941, 26, 26, 57, -212,
+ 87, -965, -958, -955, -952, -471, 52, 56,
+ -471, 52, -951, -161, 125, -954, -962, -961,
+ 36, 36, -961, 36, 125, -969, -411, -964,
+ -964, 141, -1005, -1002, -1000, -977, -944, 87,
+ -967, -993, -986, -419, -162, 85, -698, -3072,
+ -976, 94, -419, -162, 85, -698, 101, -985,
+ -984, -997, -186, 141, 125, -186, 141, -964,
+ 57, 160, -1004, -999, 89, -1013, -1008, 36,
+ -1010, 16, -162, 147, 16, -66, -1390, -1009,
+ -1003, -992, -1027, -1022, -686, -957, -1024, -943,
+ -488, -911, -635, -1028, -1030, 54, -838, 142,
+ 142, -1046, -1040, -1037, -1031, -1039, 37, 37,
+ -1030, 57, -1029, 119, 106, 106, -1063, -1061,
+ -1052, -618, -1044, 54, -1058, -518, -915, 57,
+ 54, 54, -1060, -1056, 57, 57, -1051, -839,
+ 89, -1042, -1501, -1287, -1215, -1146, -1104, -1083,
+ -1076, 39, -1075, 24, -1080, -1079, 24, 48,
+ -1082, 39, 39, -1088, -1086, 18, -1087, 59,
+ -1097, -1092, 24, 45, -1094, 45, -1096, 45,
+ 45, -1102, -1100, 127, -1087, 127, -1103, 59,
+ -1141, -1107, 100, -1119, -1112, -1111, 151, 151,
+ -1116, -1115, 151, 151, -1115, -1099, 127, -1136,
+ -1129, -1123, 39, -1126, 18, 106, -76, -1117,
+ 106, -1133, -1132, 127, 151, -1132, 151, 106,
+ -1133, -1128, 54, -1127, 106, -1143, 39, -1145,
+ 39, 39, -1171, -1168, -1157, -1152, 45, 10,
+ -1095, -1075, 24, 4, -1139, -1165, -1162, -1161,
+ 127, 130, -1161, 130, 106, -1167, -1156, 130,
+ 1, -1082, -1065, -1199, -1183, -1179, 74, 130,
+ -1178, 113, 8, -1180, -1178, 8, 113, -1198,
+ -1196, -1193, -1190, -1082, -126, -1182, -1082, 39,
+ -1177, -1191, 56, -1194, -1197, 33, 130, 32,
+ -1208, -1207, -1204, 33, -1206, 151, 151, 151,
+ -1207, -1211, 110, -1213, 91, 151, 91, -1246,
+ -1236, -1226, -1219, -959, -961, 36, -1212, -1598,
+ -1195, -1192, -1228, 52, -1233, -1231, 142, -471,
+ 142, -1235, -1230, 52, -1238, 52, -1242, -161,
+ 114, -1234, 52, -1087, -135, 114, -1267, -1265,
+ -1260, -1251, -126, -1257, -1132, -1255, 113, 151,
+ -1254, -1255, 113, -1254, -1261, -1262, -1255, 151,
+ -1256, -1266, 8, -1272, -1270, 169, -1271, 169,
+ -1284, -1281, -1278, -1207, -1250, -1244, -1207, 151,
+ -1225, -1255, 50, 50, -1255, 151, -1282, -1365,
+ -1308, -1301, -1296, -1060, -1038, 114, -1286, 50,
+ -1007, -892, 114, -1294, -1280, -1305, -1304, 123,
+ 123, -1307, -1170, 150, -1335, -1311, 83, -1334,
+ -1326, -1320, -1317, 123, 146, -1319, 123, 123,
+ -1323, 123, 94, -1325, 123, 123, -1333, -1330,
+ 84, 91, -1332, 22, 22, 123, 134, -1347,
+ -1167, -1344, -1341, -1340, 123, -1340, 123, -1329,
+ 123, 111, 88, -1358, -1349, -1351, -1343, -1353,
+ -1316, -1355, 165, -812, 146, -1352, -1361, 123,
+ 165, -1305, -1138, 165, -1360, -1423, -1401, -1374,
+ -1371, 63, -1357, 57, 9, 52, -1393, -1377,
+ 123, -1271, -1388, -1386, -1384, -1383, 52, 52,
+ 45, 54, -1303, 146, 123, -1373, 146, 54,
+ 54, -1397, -1396, -1391, 9, -22, -1396, -1390,
+ -1387, -1418, -1412, -1409, -1407, -1406, 108, 108,
+ 54, -1411, -1408, 123, -1414, 165, -1416, 108,
+ -1411, -1410, -1419, -1421, -1343, -1422, 57, -1466,
+ -1444, -1437, -1427, -1430, -1429, 44, -1434, -1433,
+ -1400, 134, -1433, 165, -1435, -1441, -812, -1432,
+ 146, -812, 113, 113, -1465, -1460, 111, -1455,
+ -1452, -1014, -1442, -1442, -1433, 134, -1450, -1453,
+ -1433, 134, -1440, -1458, -1461, -1463, 107, -1464,
+ 123, 121, -1492, -1483, -1471, 45, 8, -1480,
+ -1479, -1477, -1167, -1439, -1370, 45, 130, 8,
+ -1340, 123, -1443, -1488, -1485, -1266, -1443, -1482,
+ -1490, 9, -1491, 9, -1498, 130, -1495, -1181,
+ 8, -1487, -1500, 121, 121, -1986, -1685, -1628,
+ -1577, -1554, -1548, -1529, -1522, -1519, -1516, -1515,
+ -1271, 169, -1283, 34, -1271, 169, -1514, -1521,
+ 50, 169, -1527, -1525, 57, 57, 108, -1526,
+ -1520, -1546, -1544, -1540, -1538, -1537, -538, 171,
+ -1518, 98, 98, 86, -1542, 171, -538, -1283,
+ 108, 103, 171, 53, -1551, 34, 35, -1553,
+ -1536, 103, -1565, -1560, -1557, -1559, 104, 104,
+ -1562, 143, -1564, 143, 143, -1568, 171, 103,
+ -1571, 117, 171, -1574, 171, 53, -531, -1497,
+ -1476, -1601, -1587, -1584, -1583, -950, -1306, 35,
+ -22, 146, 146, -1595, 104, -1592, 35, -1585,
+ -1263, 151, -1585, -1262, 104, -1591, -3072, 146,
+ -1597, -1625, -1616, -1610, -1607, 53, 103, -1547,
+ 7, -1600, -1613, 31, 9, -22, 9, 56,
+ -1622, -1557, 31, 145, -303, -37, -950, 104,
+ -1621, -1627, -1620, 35, -1676, -1648, -1634, -1285,
+ 88, 5, -668, -1640, -1638, 148, 53, 148,
+ -1645, -1644, 104, 5, 148, -1646, 143, -1633,
+ -1672, -1661, -1654, -1653, 121, 121, -1658, -1657,
+ -1632, 121, -1657, -201, -1659, -1671, -1415, -1667,
+ -1666, -1660, 148, -1666, 148, -1656, -1626, 57,
+ -1675, -1668, -1609, 148, -1682, -1679, 8, -1422,
+ 57, 146, -1684, 146, 8, -1799, -1778, -1713,
+ -1706, -1700, -1698, -1695, -450, -1681, -1693, -450,
+ 146, -1585, 9, 2, -1704, 2, 131, -1694,
+ 2, 131, -1708, 43, -1710, 21, -1699, 146,
+ -1585, -1759, -1753, -1746, -1726, -1721, -1705, 131,
+ 109, -1723, 109, -1725, 117, 117, -1729, -663,
+ -1720, -1740, -1735, -1733, 109, 131, 53, -1739,
+ -1705, 131, -1728, 53, -1744, -361, -1712, -1703,
+ 117, 88, -1748, 143, -1752, -2571, 93, 88,
+ 143, -1757, -1756, 93, 43, 43, 131, -1765,
+ -1762, -1750, -1564, 93, 93, -1776, -1769, -1768,
+ 9, -1773, -1768, -1763, -1761, -1768, 11, -1772,
+ -1777, 148, -1783, -1780, -1781, 143, 78, -1790,
+ -1788, -1787, 16, 35, 131, -1482, -1793, 35,
+ 131, -1737, -1263, 104, -1782, -1775, -75, -1918,
+ -1845, -1821, -1818, -1816, -1810, -1809, -1213, 113,
+ -1797, 33, -1813, -1213, -1743, -1213, 151, -1674,
+ -1817, 104, -1820, 121, 121, -1842, -1830, -1827,
+ -1826, 131, 131, -1826, 131, -1582, -1836, -1825,
+ -1132, 151, -1026, 56, -1839, 151, -1835, -1841,
+ 145, 151, -1841, 51, -1838, -1877, -1854, -1852,
+ -1699, 151, 145, 56, 151, -1851, -1866, -1857,
+ -1850, -1859, -1844, -1863, -1862, 56, 8, -1862,
+ 8, -1835, -1868, 42, -1875, -1872, 2, 8,
+ -1874, -1838, 8, 9, 128, -1884, -1882, -1881,
+ -1873, 8, 121, 44, -1902, -1900, -1897, -1894,
+ -1892, -1891, -1858, 151, 151, 51, -1881, -1893,
+ -1101, -1285, 127, -1101, -1901, 151, -1911, -1908,
+ -1906, -330, -1864, -1896, -1910, -1890, 121, -1913,
+ 51, -1491, -1916, 51, 8, -1912, -1949, -1924,
+ -1646, 80, 23, 128, -1938, -1933, -1931, -1929,
+ 121, 121, 42, 42, 51, -1819, -1936, 42,
+ 42, 51, -1943, -1942, 143, 148, 143, -1947,
+ -1675, -1932, -1917, 143, 51, -1959, -1954, -1953,
+ 131, 131, -1953, -1758, 51, -1948, 128, -1960,
+ -1962, 32, -1971, -1968, -1966, 140, -1967, 140,
+ -1967, 140, -1957, -1977, -1737, -1975, 51, 140,
+ -1974, -1981, -1737, 131, -1970, -1983, 66, -1985,
+ 66, 140, -2057, -2020, -1998, -1993, -1992, -1982,
+ 132, -1997, -1996, -1980, 117, 132, -2000, 117,
+ -2010, -2005, -2004, 143, 143, -1762, -1840, 146,
+ -1946, -1909, -2012, -268, -2015, 148, 126, -1675,
+ -1644, 148, 126, -2014, -2030, -2028, -2026, -1060,
+ -2011, -330, 37, 57, -2029, 108, -2033, 57,
+ 127, -2043, -1574, -2037, -330, -1547, 53, 127,
+ 146, -330, -2036, -2055, -2052, -2049, -1644, 148,
+ -2025, -1644, -2024, -732, -2054, 57, 57, -1639,
+ 137, -2165, -2080, -2073, -2069, -2066, 6, -2065,
+ 115, 115, -2068, 6, 6, -622, 115, 132,
+ -554, -2068, -2017, -622, 6, 46, 46, -2077,
+ -2101, -2092, 134, -2089, -2088, -2087, 148, 148,
+ 148, -2088, -2072, -2051, -2098, -2095, -2091, -2097,
+ 57, 57, -2097, -2050, -2009, -2104, 9, 148,
+ -2138, -2125, -2108, 5, -2118, -2112, 108, 128,
+ -2116, -2054, 128, -2114, -2054, -2111, -2122, -1671,
+ 145, -1840, -1671, -2117, -268, -2132, -2129, 133,
+ 56, -2131, -268, 133, -2135, -1060, -2124, -2137,
+ 126, 57, -2153, -2146, -2144, -2143, -2136, 133,
+ 133, 132, -2066, -2068, -2134, 172, -2007, -2149,
+ -2148, -2160, -2157, 148, 6, -2103, -2123, -1974,
+ -2162, 51, -2054, -2159, 119, -2221, -2183, -681,
+ -2177, -2173, -561, 6, 119, -353, 6, -2164,
+ -2163, -2181, -2180, 128, 6, 23, 128, -2210,
+ -2202, -2197, -2190, -1777, 148, -2179, -1944, -1675,
+ 148, -2179, 54, -2189, -1029, -2004, -2200, 99,
+ 42, -2196, -1935, -2207, -2206, 143, 143, 42,
+ -2176, -2158, -2212, -2100, -2214, 145, -1916, -1675,
+ -1666, 145, -2213, 49, 49, -2246, -2244, -2225,
+ -2219, -2230, -2229, 134, -2218, 134, -2242, -2235,
+ -2234, 44, 44, -2239, -2150, 145, 145, -1433,
+ 134, -2237, -1668, -2241, -1680, -2243, -2262, -2260,
+ -2254, -2253, -2103, -2228, 145, 148, -2258, -2103,
+ 148, -2252, 6, 49, -1684, -2257, -2268, -1684,
+ -1266, 8, 49, -2266, -2269, -1422, -2261, -3101,
+ -2728, -2419, -2327, -2299, -2295, 165, -2288, -2286,
+ -2284, -2283, 166, 166, -2283, 68, -2287, 135,
+ -2292, -2291, 49, 7, -2294, 7, 7, -2296,
+ -2298, 135, 135, -2311, 7, -573, -2308, -2305,
+ 82, -2307, 129, 129, 120, 116, 68, -2316,
+ -2313, -2315, 135, 135, -2321, -2320, 135, 58,
+ 135, -2315, -2325, 129, 135, 135, -2285, -2345,
+ -2333, -2331, 30, -2332, 2, -2339, -2338, -2337,
+ 2, 2, 54, -38, 2, 135, -1749, -2270,
+ -1958, -2402, -2380, -2359, -2356, -2353, -2320, 135,
+ -2343, -2320, -2251, -1851, -2358, -2355, 30, -2362,
+ 67, 56, -2368, -2324, -2366, -2361, 135, 126,
+ -2373, -2325, 51, -2357, -1851, -2377, -2376, 138,
+ 138, -2379, 138, 138, -2384, -2383, 21, 21,
+ -2391, -2320, 2, -264, 30, 145, 2, -2394,
+ -2393, 49, -2396, 135, -2400, -2337, -2372, -2371,
+ 135, 2, -2408, -2406, -2405, 41, -2401, -2354,
+ -2414, -2411, 56, -2413, -1851, 2, -2418, -2379,
+ 138, -1861, 138, -2549, -2489, -2458, -2449, -2434,
+ -2427, 149, 173, -2431, -2430, 173, 149, -2430,
+ -2426, 173, -2444, -2437, -2426, -586, -506, -1329,
+ 91, -2432, 145, -2417, -2448, -2447, 173, 149,
+ 142, -2452, -2451, 58, -2447, -571, 136, 58,
+ 173, 93, -2474, -2460, -2468, -2465, -2464, 73,
+ 73, -2467, 54, 54, -2472, -2471, -2446, 129,
+ -1385, 126, -2480, -1032, -1329, 91, -2443, 56,
+ -2486, -2485, -1032, 142, 56, 129, -2488, 142,
+ 142, -2497, -2493, 99, 139, 114, -2496, 139,
+ 139, -2523, -2515, -2508, -1293, -2504, 5, 56,
+ -593, 6, -2484, -2479, -2512, -2511, 172, 133,
+ -2514, 139, 139, -2516, -2518, -2510, -2520, -2517,
+ -2522, 142, 142, -2539, 133, -2528, 136, -2507,
+ -2532, -586, 56, -1861, -2536, -2447, 149, 126,
+ -2447, -2531, -2503, 133, -2542, 136, -2546, -2545,
+ 142, 142, -2545, -2538, -2537, -2633, -2592, -2579,
+ -2572, -2570, -2568, -2565, -2564, -2561, -2560, -2527,
+ 136, -2560, 136, -2478, 136, -2566, 105, 129,
+ -2467, -1851, -2571, 54, -2578, -2575, 70, -2562,
+ 136, 173, 105, -2583, -2578, 168, -2569, -2379,
+ -2588, -2416, 138, 24, -2416, 138, -2582, -2361,
+ -2621, -2616, -2610, -2598, -2597, 105, -2601, -2578,
+ -2590, -2605, -2604, 175, 175, -2607, 48, -2609,
+ 175, 175, -2613, -1044, -2600, -2609, 175, 173,
+ 142, -2619, 175, 175, -2446, -2630, -2624, 99,
+ -2415, -2379, 173, -3088, -2446, -2620, -2632, 99,
+ 54, -2678, -2651, -2645, -2638, -14, -2642, -2455,
+ 58, 173, -2455, -2641, -2643, -2646, -2648, 7,
+ -2294, 7, 158, -2660, -2655, 168, 161, -2656,
+ -2658, 82, 136, 41, -2665, 58, -2664, 136,
+ 136, -2669, -370, 173, -2644, -370, -2674, -2673,
+ 136, 136, -2673, 136, -2668, -2637, -2705, -2698,
+ -2690, -2689, -2687, -2686, 142, 1, 1, 142,
+ -2612, 142, -2692, 1, 1, -2695, 6, -2488,
+ 142, -2563, -2703, -2701, 54, 142, -2407, 142,
+ 54, -2717, -2664, -2714, -2711, 6, 46, -2713,
+ 124, 136, -2488, 46, 124, -2723, -2720, 139,
+ -2609, 175, -2715, -2545, -1693, -289, -2710, 130,
+ -2942, -2786, -2774, -2751, -2737, -2734, -2736, -2727,
+ 140, -2745, -2744, -2743, -2742, 47, 47, 41,
+ 105, -2749, -2589, 138, -2727, 168, 138, -2757,
+ -2753, -2755, 23, -2756, 168, -2760, 41, -2735,
+ -2771, -2767, -2766, -2744, 105, -809, 47, -2744,
+ 105, 47, -2759, -2743, 41, 126, -2781, -2779,
+ -2747, 138, -2770, -1961, -1861, 2, -2785, 21,
+ 49, 21, -2866, -2842, -2815, -2797, -2791, -1968,
+ 140, 33, 146, 33, 130, -2809, -2393, -2803,
+ -2220, 49, -1161, -2805, -2802, -2401, -2795, 126,
+ -2780, -2813, -1191, 39, -2726, 33, -1161, -2831,
+ -2822, -2821, -2332, 2, 33, 140, -2826, -649,
+ 8, 39, -1985, -649, 157, 39, -1144, -2833,
+ -2828, -2836, -1874, -2820, -2840, -1874, -2814, -2812,
+ 2, -2710, -2849, -2847, 137, -1809, -2841, -1967,
+ 124, -2851, 44, -2855, -746, 137, -2716, -2863,
+ -2827, -649, -2056, 32, -1390, 157, -2861, -486,
+ 137, -2858, -2925, -2914, -2904, -2880, -2875, -2873,
+ -2846, 49, -2839, -2736, -2878, -2702, 49, -2211,
+ -2890, -2887, -2884, 145, -2886, 140, 140, -2379,
+ -2883, 49, -2901, -2894, 71, 51, -2415, -2379,
+ 138, -2889, -2571, -2888, -2252, -2903, 47, 47,
+ -2909, -2413, -2736, 49, -2907, -2742, -2886, -2900,
+ 145, -224, -2920, -2916, -2918, -2912, -2919, 47,
+ -2924, -2923, -2917, 175, 47, -2931, -2928, -2911,
+ -2930, -2899, 140, -2941, -2936, -2342, 54, -2338,
+ -486, -2939, 144, 144, -2338, 175, -3035, -3017,
+ -2980, -2965, -2956, -2949, -2935, -353, -2954, -2953,
+ 54, 23, 41, -2952, -2960, -2959, 47, 47,
+ -2962, 80, -2959, 47, -2948, -2971, -2970, -2969,
+ 41, 41, 6, -2976, 6, -2975, -2325, 115,
+ 6, -2979, 133, 133, -3007, -2995, -2990, -2987,
+ -2664, 136, -2366, -2664, -2986, -2974, -2993, -2513,
+ -2964, -2608, -2161, -2998, 144, -2992, -3000, -2929,
+ -3004, -3003, 144, 144, -3003, 145, -3005, -3016,
+ -3014, -3011, 93, -3013, 173, 144, -2068, 93,
+ 144, -3024, -3021, -3020, 42, -3022, -3023, 144,
+ -3029, 28, -2939, 144, -3010, -3004, -3031, 144,
+ -1449, -3006, 145, -3090, -3067, -3048, -3044, -3043,
+ 119, 162, -2241, 133, -3046, 134, -853, -3034,
+ -2686, -3053, -3013, 144, -3033, -3063, -3061, -3059,
+ -3058, 44, 44, 44, 5, -3062, 44, -3051,
+ 144, 145, 146, -3081, -3074, -1883, -3040, 145,
+ 145, -3071, -3078, -1433, 128, -3073, -649, -3066,
+ -3065, -3085, -3083, -3084, 144, -3086, -3087, -3089,
+ 7, 144, -3096, -3094, 4, -1440, -3089, 146,
+ -3098, -1440, -3003, -2120, -3093, -1834, -2879, -2999,
+ -3052, -750, -3032, -3109, 20, -3070, 119,
+};
+
+static long _vq_p_res0_0d[] = {
+ 48, 80, 324, 96, 96, 8, 608, 84,
+ 608, 84, 56, 156, 608, 608, 632, 12,
+ 72, 12, 8, 12, 12, 12, 208, 72,
+ 72, 72, 208, 156, 384, 56, 12, 384,
+ 12, 12, 384, 12, 12, 4, 4, 4,
+ 28, 12, 12, 12, 156, 192, 156, 56,
+ 56, 96, 56, 152, 56, 488, 56, 56,
+ 56, 384, 28, 72, 72, 72, 72, 384,
+ 488, 488, 208, 632, 340, 340, 56, 56,
+ 56, 72, 608, 12, 72, 608, 608, 472,
+ 632, 632, 12, 312, 96, 64, 244, 12,
+ 340, 12, 12, 340, 340, 244, 96, 96,
+ 96, 96, 372, 372, 472, 56, 648, 56,
+ 56, 244, 648, 648, 312, 56, 312, 72,
+ 72, 72, 472, 452, 12, 12, 12, 12,
+ 72, 72, 72, 488, 96, 96, 452, 56,
+ 56, 56, 448, 448, 96, 96, 96, 424,
+ 488, 152, 152, 424, 564, 152, 152, 564,
+ 424, 72, 72, 72, 72, 72, 144, 208,
+ 488, 488, 144, 144, 144, 452, 488, 448,
+ 456, 144, 564, 76, 76, 248, 248, 248,
+ 80, 80, 100, 56, 56, 56, 56, 56,
+ 424, 664, 664, 80, 80, 80, 80, 388,
+ 388, 388, 388, 152, 152, 152, 424, 108,
+ 488, 108, 108, 76, 80, 312, 76, 76,
+ 76, 452, 664, 312, 488, 152, 312, 80,
+ 452, 452, 384, 56, 448, 448, 56, 108,
+ 108, 608, 608, 608, 608, 608, 324, 324,
+ 324, 84, 72, 72, 72, 244, 140, 324,
+ 324, 324, 324, 56, 56, 244, 324, 324,
+ 244, 384, 108, 56, 56, 56, 56, 664,
+ 120, 68, 664, 68, 68, 120, 68, 84,
+ 68, 68, 68, 120, 384, 84, 244, 384,
+ 84, 324, 324, 68, 508, 324, 324, 668,
+ 68, 68, 384, 120, 116, 76, 76, 76,
+ 76, 76, 184, 664, 664, 184, 116, 116,
+ 664, 496, 668, 324, 496, 116, 608, 608,
+ 4, 0, 0, 0, 0, 56, 16, 16,
+ 68, 68, 384, 76, 76, 76, 120, 384,
+ 16, 120, 120, 68, 68, 120, 68, 68,
+ 68, 116, 116, 120, 220, 0, 0, 120,
+ 120, 120, 504, 120, 120, 0, 76, 0,
+ 220, 28, 76, 76, 76, 500, 464, 464,
+ 220, 116, 116, 452, 464, 464, 116, 468,
+ 92, 92, 124, 468, 124, 124, 124, 212,
+ 172, 468, 120, 120, 120, 656, 452, 220,
+ 0, 0, 656, 80, 76, 248, 248, 80,
+ 80, 80, 100, 664, 80, 76, 76, 76,
+ 76, 76, 80, 80, 664, 664, 500, 488,
+ 388, 80, 56, 184, 496, 388, 496, 448,
+ 448, 104, 220, 104, 104, 104, 104, 104,
+ 348, 348, 448, 348, 28, 388, 104, 104,
+ 104, 500, 388, 388, 448, 500, 488, 448,
+ 116, 116, 348, 284, 116, 116, 116, 284,
+ 664, 664, 496, 388, 348, 348, 388, 464,
+ 220, 28, 68, 68, 68, 68, 384, 284,
+ 4, 4, 8, 28, 284, 116, 76, 16,
+ 76, 28, 4, 68, 68, 68, 68, 68,
+ 68, 104, 68, 68, 104, 68, 392, 392,
+ 140, 488, 104, 104, 104, 284, 116, 116,
+ 116, 392, 104, 392, 208, 104, 184, 116,
+ 588, 324, 76, 656, 348, 464, 80, 80,
+ 248, 248, 160, 248, 680, 680, 360, 100,
+ 100, 660, 660, 464, 256, 408, 256, 220,
+ 680, 256, 256, 256, 680, 360, 360, 160,
+ 448, 468, 468, 448, 220, 104, 212, 124,
+ 104, 104, 104, 684, 104, 104, 104, 448,
+ 684, 392, 392, 124, 684, 684, 48, 48,
+ 104, 104, 212, 200, 656, 100, 24, 248,
+ 248, 100, 284, 284, 612, 612, 656, 656,
+ 656, 656, 368, 368, 368, 368, 368, 284,
+ 680, 680, 680, 596, 464, 464, 24, 24,
+ 88, 368, 88, 88, 532, 368, 368, 368,
+ 360, 284, 200, 100, 100, 88, 88, 88,
+ 24, 20, 20, 20, 16, 360, 680, 360,
+ 360, 368, 108, 680, 256, 108, 612, 612,
+ 368, 680, 368, 368, 368, 408, 680, 680,
+ 284, 408, 408, 528, 368, 284, 528, 408,
+ 220, 680, 680, 656, 0, 0, 108, 160,
+ 656, 656, 284, 184, 160, 680, 52, 408,
+ 184, 528, 112, 24, 656, 656, 656, 0,
+ 0, 184, 40, 0, 0, 468, 468, 468,
+ 40, 528, 468, 40, 528, 0, 0, 0,
+ 696, 212, 40, 220, 212, 100, 100, 100,
+ 100, 100, 496, 24, 24, 20, 20, 20,
+ 496, 24, 24, 40, 696, 696, 28, 0,
+ 0, 0, 12, 340, 64, 616, 12, 12,
+ 12, 44, 64, 44, 60, 240, 240, 240,
+ 240, 616, 340, 636, 636, 356, 64, 44,
+ 616, 616, 616, 616, 64, 60, 60, 40,
+ 44, 44, 60, 616, 616, 616, 636, 12,
+ 60, 60, 64, 616, 496, 44, 44, 44,
+ 12, 12, 12, 44, 520, 12, 636, 64,
+ 64, 64, 112, 340, 564, 636, 664, 112,
+ 112, 564, 356, 356, 40, 144, 144, 12,
+ 600, 496, 144, 496, 12, 12, 12, 448,
+ 588, 96, 340, 340, 144, 448, 600, 44,
+ 388, 44, 100, 44, 44, 44, 44, 40,
+ 248, 80, 44, 44, 44, 360, 248, 248,
+ 40, 40, 640, 256, 256, 256, 256, 356,
+ 448, 636, 248, 248, 640, 636, 636, 636,
+ 636, 500, 356, 356, 444, 640, 640, 640,
+ 356, 444, 640, 248, 248, 40, 640, 640,
+ 640, 100, 100, 40, 248, 80, 248, 12,
+ 44, 12, 12, 12, 12, 12, 228, 20,
+ 44, 44, 44, 44, 444, 636, 40, 100,
+ 100, 640, 640, 100, 100, 160, 640, 20,
+ 12, 12, 12, 20, 332, 28, 28, 12,
+ 332, 332, 12, 448, 332, 240, 20, 60,
+ 240, 240, 60, 160, 88, 88, 88, 360,
+ 448, 20, 356, 360, 240, 240, 240, 360,
+ 356, 448, 240, 240, 356, 240, 240, 112,
+ 112, 60, 112, 448, 360, 356, 636, 636,
+ 636, 496, 640, 640, 640, 640, 332, 448,
+ 100, 332, 360, 360, 332, 60, 44, 44,
+ 44, 60, 60, 44, 44, 244, 244, 100,
+ 100, 244, 48, 104, 252, 256, 256, 104,
+ 104, 48, 48, 252, 252, 256, 252, 244,
+ 104, 252, 48, 104, 48, 48, 48, 64,
+ 104, 104, 12, 392, 64, 500, 252, 252,
+ 252, 392, 104, 104, 376, 104, 104, 64,
+ 312, 392, 256, 640, 104, 256, 256, 256,
+ 312, 640, 640, 640, 640, 312, 312, 324,
+ 340, 340, 104, 104, 616, 616, 664, 616,
+ 616, 104, 104, 104, 244, 348, 348, 244,
+ 640, 256, 104, 64, 256, 144, 356, 356,
+ 104, 312, 144, 144, 244, 104, 436, 244,
+ 312, 244, 36, 28, 640, 312, 12, 616,
+ 208, 376, 40, 12, 640, 508, 356, 216,
+ 308, 252, 148, 240, 308, 252, 252, 356,
+ 240, 240, 308, 436, 396, 308, 256, 256,
+ 408, 256, 308, 308, 360, 256, 256, 256,
+ 396, 288, 256, 288, 148, 640, 288, 356,
+ 640, 396, 340, 608, 440, 608, 180, 12,
+ 12, 12, 12, 340, 632, 632, 632, 156,
+ 96, 96, 440, 72, 632, 632, 72, 180,
+ 632, 632, 632, 632, 96, 96, 340, 340,
+ 440, 340, 340, 424, 96, 396, 96, 472,
+ 608, 400, 628, 628, 608, 608, 608, 632,
+ 628, 628, 628, 440, 632, 396, 16, 632,
+ 632, 156, 632, 608, 608, 16, 632, 16,
+ 396, 608, 608, 308, 156, 72, 72, 308,
+ 440, 308, 476, 308, 284, 84, 84, 628,
+ 628, 128, 96, 40, 12, 12, 12, 12,
+ 96, 40, 40, 284, 284, 440, 40, 40,
+ 108, 440, 340, 340, 108, 340, 108, 180,
+ 12, 12, 16, 40, 40, 40, 40, 40,
+ 40, 108, 156, 112, 132, 132, 312, 440,
+ 628, 628, 628, 628, 244, 244, 132, 132,
+ 244, 128, 352, 108, 128, 112, 112, 628,
+ 296, 296, 132, 296, 296, 296, 304, 180,
+ 440, 440, 628, 628, 352, 132, 244, 144,
+ 676, 48, 676, 48, 48, 48, 244, 272,
+ 244, 352, 676, 676, 72, 72, 456, 144,
+ 364, 392, 364, 140, 12, 12, 72, 72,
+ 308, 308, 180, 144, 308, 108, 72, 72,
+ 72, 608, 108, 72, 72, 72, 424, 208,
+ 108, 180, 308, 308, 608, 400, 140, 140,
+ 308, 156, 4, 304, 296, 296, 304, 344,
+ 296, 180, 296, 296, 424, 108, 676, 676,
+ 308, 676, 456, 364, 136, 136, 364, 616,
+ 252, 356, 240, 240, 240, 88, 88, 244,
+ 252, 252, 244, 244, 88, 144, 676, 676,
+ 144, 240, 452, 492, 332, 12, 12, 336,
+ 332, 332, 60, 60, 660, 332, 332, 20,
+ 240, 240, 240, 60, 60, 376, 240, 240,
+ 240, 660, 60, 60, 336, 336, 332, 12,
+ 40, 40, 12, 12, 180, 40, 40, 352,
+ 444, 12, 248, 444, 60, 616, 248, 64,
+ 352, 376, 100, 340, 100, 100, 376, 376,
+ 80, 340, 404, 248, 248, 252, 676, 48,
+ 252, 48, 80, 208, 208, 136, 136, 252,
+ 252, 296, 296, 296, 296, 296, 296, 180,
+ 676, 660, 180, 660, 136, 676, 216, 308,
+ 292, 12, 12, 292, 492, 180, 180, 292,
+ 292, 336, 252, 240, 240, 240, 148, 252,
+ 364, 252, 308, 432, 336, 308, 428, 428,
+ 296, 660, 252, 20, 308, 492, 36, 176,
+ 40, 332, 20, 40, 112, 40, 332, 332,
+ 352, 176, 112, 308, 288, 40, 40, 288,
+ 436, 112, 436, 352, 428, 332, 332, 332,
+ 332, 404, 352, 308, 428, 428, 308, 336,
+ 336, 336, 352, 288, 444, 296, 296, 428,
+ 176, 112, 40, 296, 12, 12, 12, 40,
+ 40, 40, 40, 436, 292, 296, 296, 296,
+ 296, 296, 312, 12, 20, 12, 244, 244,
+ 136, 136, 492, 32, 112, 112, 296, 112,
+ 112, 308, 296, 296, 344, 400, 252, 392,
+ 344, 136, 48, 136, 344, 48, 48, 344,
+ 48, 48, 352, 48, 252, 252, 248, 252,
+ 248, 392, 48, 48, 48, 136, 136, 252,
+ 44, 48, 252, 48, 48, 48, 48, 48,
+ 44, 344, 252, 252, 344, 344, 412, 244,
+ 412, 344, 412, 412, 304, 304, 304, 344,
+ 244, 136, 304, 304, 304, 124, 124, 412,
+ 344, 344, 412, 412, 212, 392, 392, 392,
+ 468, 684, 412, 124, 124, 124, 412, 44,
+ 312, 304, 48, 48, 48, 140, 436, 392,
+ 136, 224, 28, 304, 304, 304, 304, 28,
+ 400, 400, 216, 136, 136, 216, 648, 224,
+ 12, 48, 68, 212, 48, 48, 48, 124,
+ 352, 352, 68, 68, 68, 48, 48, 108,
+ 124, 48, 48, 648, 108, 108, 140, 140,
+ 12, 392, 12, 124, 428, 416, 304, 304,
+ 244, 108, 136, 136, 136, 136, 412, 412,
+ 412, 416, 412, 244, 212, 212, 416, 244,
+ 484, 304, 304, 304, 304, 136, 344, 344,
+ 108, 428, 136, 12, 352, 136, 136, 136,
+ 136, 244, 484, 428, 428, 12, 20, 432,
+ 412, 412, 16, 572, 136, 32, 136, 136,
+ 136, 152, 484, 372, 176, 124, 68, 68,
+ 68, 68, 68, 68, 68, 372, 80, 208,
+ 12, 12, 8, 524, 0, 0, 0, 12,
+ 524, 172, 172, 84, 300, 300, 84, 352,
+ 352, 300, 300, 416, 300, 300, 300, 300,
+ 372, 0, 352, 92, 92, 172, 0, 416,
+ 352, 416, 124, 124, 312, 172, 172, 172,
+ 416, 416, 312, 416, 124, 124, 372, 352,
+ 172, 64, 300, 300, 92, 292, 64, 312,
+ 468, 0, 0, 312, 92, 652, 652, 572,
+ 416, 312, 468, 352, 44, 416, 416, 416,
+ 592, 0, 0, 44, 44, 212, 616, 616,
+ 0, 168, 304, 304, 124, 416, 616, 84,
+ 84, 608, 244, 84, 140, 244, 124, 124,
+ 124, 400, 400, 400, 244, 244, 352, 136,
+ 304, 416, 304, 400, 304, 304, 304, 352,
+ 12, 128, 400, 400, 44, 128, 128, 372,
+ 304, 132, 132, 132, 416, 128, 400, 84,
+ 84, 84, 128, 400, 400, 12, 84, 156,
+ 84, 84, 660, 512, 128, 128, 508, 156,
+ 512, 524, 132, 512, 580, 0, 156, 8,
+ 156, 156, 204, 580, 36, 16, 416, 416,
+ 16, 8, 16, 132, 132, 504, 524, 168,
+ 168, 504, 168, 0, 4, 0, 0, 0,
+ 4, 504, 8, 8, 624, 112, 112, 112,
+ 624, 484, 168, 168, 132, 136, 132, 132,
+ 132, 132, 624, 32, 136, 16, 136, 396,
+ 16, 416, 284, 284, 32, 36, 416, 136,
+ 136, 284, 484, 284, 416, 396, 168, 168,
+ 396, 592, 136, 284, 592, 284, 320, 300,
+ 300, 300, 300, 396, 320, 320, 320, 320,
+ 320, 168, 416, 132, 512, 112, 112, 112,
+ 132, 624, 416, 416, 416, 416, 484, 168,
+ 168, 624, 624, 484, 196, 0, 0, 0,
+ 0, 168, 300, 300, 264, 264, 264, 112,
+ 84, 84, 300, 300, 300, 300, 168, 132,
+ 128, 128, 512, 128, 128, 128, 512, 524,
+ 624, 416, 132, 132, 624, 524, 624, 132,
+ 52, 168, 684, 92, 612, 612, 612, 52,
+ 468, 468, 92, 52, 656, 656, 684, 684,
+ 468, 92, 0, 0, 92, 0, 204, 404,
+ 52, 264, 0, 496, 412, 572, 500, 528,
+ 528, 528, 496, 496, 252, 148, 252, 252,
+ 504, 284, 408, 408, 252, 408, 48, 48,
+ 496, 528, 408, 528, 496, 408, 408, 624,
+ 292, 624, 624, 408, 408, 408, 408, 408,
+ 624, 412, 624, 284, 212, 212, 592, 432,
+ 52, 408, 0, 316, 612, 612, 612, 612,
+ 612, 316, 460, 460, 532, 316, 316, 316,
+ 52, 528, 24, 0, 0, 624, 52, 52,
+ 428, 592, 336, 336, 336, 336, 336, 460,
+ 432, 428, 624, 624, 336, 20, 16, 336,
+ 336, 176, 432, 184, 184, 36, 24, 24,
+ 336, 336, 20, 336, 408, 336, 336, 692,
+ 408, 408, 504, 688, 432, 688, 336, 336,
+ 436, 436, 148, 436, 504, 88, 88, 88,
+ 436, 408, 436, 148, 148, 408, 436, 20,
+ 452, 24, 460, 528, 408, 408, 312, 528,
+ 460, 460, 88, 88, 312, 312, 292, 436,
+ 688, 408, 408, 408, 408, 528, 508, 508,
+ 20, 476, 24, 476, 396, 316, 24, 0,
+ 612, 612, 612, 612, 288, 0, 0, 288,
+ 396, 0, 0, 508, 316, 316, 436, 320,
+ 316, 316, 0, 0, 0, 436, 316, 316,
+ 316, 396, 404, 396, 436, 0, 0, 288,
+ 92, 288, 320, 320, 320, 320, 168, 92,
+ 436, 396, 0, 312, 428, 8, 168, 484,
+ 168, 156, 156, 156, 264, 428, 176, 112,
+ 264, 484, 428, 428, 196, 484, 176, 428,
+ 336, 336, 428, 336, 216, 192, 272, 460,
+ 460, 272, 460, 156, 592, 628, 24, 592,
+ 460, 460, 460, 272, 196, 176, 20, 20,
+ 20, 512, 176, 272, 20, 272, 20, 20,
+ 20, 20, 512, 264, 32, 176, 264, 164,
+ 292, 324, 292, 80, 76, 80, 80, 76,
+ 292, 292, 292, 80, 76, 264, 664, 404,
+ 540, 76, 260, 540, 292, 292, 216, 664,
+ 324, 324, 668, 292, 516, 328, 328, 328,
+ 292, 292, 292, 464, 464, 292, 260, 76,
+ 668, 76, 76, 480, 120, 328, 328, 328,
+ 120, 328, 328, 328, 328, 476, 260, 16,
+ 164, 328, 328, 16, 164, 16, 16, 16,
+ 16, 540, 540, 540, 540, 384, 404, 260,
+ 624, 328, 328, 120, 268, 268, 268, 268,
+ 624, 328, 260, 512, 328, 504, 672, 264,
+ 264, 260, 268, 268, 268, 624, 196, 260,
+ 328, 328, 328, 260, 4, 196, 196, 196,
+ 540, 476, 476, 204, 264, 264, 264, 268,
+ 268, 268, 268, 268, 268, 12, 12, 324,
+ 324, 84, 84, 84, 384, 384, 12, 12,
+ 196, 196, 268, 652, 268, 652, 164, 12,
+ 196, 164, 692, 196, 692, 204, 420, 420,
+ 420, 692, 164, 364, 248, 100, 464, 516,
+ 100, 660, 688, 660, 660, 436, 516, 464,
+ 436, 372, 364, 248, 372, 364, 364, 100,
+ 100, 372, 692, 688, 100, 100, 472, 568,
+ 28, 368, 368, 544, 544, 544, 516, 516,
+ 340, 340, 216, 464, 620, 292, 620, 620,
+ 288, 620, 620, 516, 516, 292, 340, 660,
+ 308, 340, 660, 364, 308, 308, 340, 372,
+ 620, 308, 620, 620, 688, 620, 516, 516,
+ 544, 308, 620, 620, 620, 424, 308, 308,
+ 424, 88, 88, 108, 108, 88, 88, 96,
+ 108, 108, 96, 96, 456, 88, 340, 456,
+ 380, 380, 532, 556, 364, 312, 200, 372,
+ 108, 108, 20, 368, 368, 544, 368, 340,
+ 368, 368, 500, 500, 364, 364, 364, 340,
+ 200, 340, 12, 380, 620, 620, 380, 380,
+ 380, 556, 544, 340, 96, 420, 328, 620,
+ 620, 620, 620, 620, 620, 620, 620, 12,
+ 516, 644, 644, 96, 420, 644, 328, 328,
+ 328, 96, 328, 476, 644, 276, 276, 280,
+ 280, 96, 280, 280, 672, 644, 692, 420,
+ 328, 328, 328, 260, 672, 672, 260, 12,
+ 280, 620, 620, 396, 620, 396, 280, 620,
+ 12, 420, 620, 620, 420, 620, 260, 544,
+ 544, 556, 396, 284, 192, 424, 424, 272,
+ 556, 16, 16, 556, 272, 16, 16, 16,
+ 396, 396, 632, 648, 632, 632, 620, 620,
+ 420, 464, 516, 464, 464, 272, 644, 644,
+ 644, 440, 328, 632, 96, 328, 164, 164,
+ 516, 516, 260, 276, 276, 644, 276, 380,
+ 644, 644, 164, 328, 0, 544, 0, 0,
+ 164, 644, 644, 260, 260, 544, 656, 656,
+ 656, 380, 368, 368, 340, 260, 108, 16,
+ 108, 108, 108, 108, 108, 108, 20, 24,
+ 272, 16, 16, 16, 164, 24, 164, 164,
+ 164, 260, 164, 216, 164, 28, 692, 544,
+ 544, 380, 380, 380, 368, 368, 132, 380,
+ 260, 24, 368, 260, 624, 164, 16, 16,
+ 164, 164, 624, 544, 648, 260, 260, 504,
+ 264, 280, 300, 300, 300, 268, 300, 500,
+ 652, 420, 652, 652, 652, 652, 420, 420,
+ 672, 268, 268, 268, 496, 652, 652, 0,
+ 0, 276, 276, 92, 652, 652, 652, 496,
+ 276, 276, 276, 276, 276, 40, 672, 280,
+ 280, 280, 40, 672, 672, 340, 264, 264,
+ 264, 264, 340, 268, 500, 268, 268, 268,
+ 268, 652, 168, 52, 52, 652, 652, 52,
+ 52, 52, 288, 260, 260, 264, 264, 52,
+ 52, 52, 260, 264, 40, 156, 40, 260,
+ 260, 52, 52, 52, 40, 128, 628, 652,
+ 652, 652, 652, 652, 628, 184, 164, 164,
+ 164, 264, 184, 168, 264, 260, 260, 132,
+ 260, 156, 156, 260, 184, 184, 260, 628,
+ 4, 628, 128, 112, 112, 112, 112, 320,
+ 52, 176, 112, 320, 320, 320, 52, 112,
+ 112, 112, 496, 52, 288, 52, 264, 168,
+ 168, 128, 52, 652, 52, 264, 52, 52,
+ 52, 264, 52, 264, 264, 40, 652, 632,
+ 652, 652, 652, 384, 52, 52, 188, 52,
+ 8, 192, 420, 284, 52, 52, 52, 52,
+ 52, 156, 288, 156, 204, 52, 52, 284,
+ 184, 184, 184, 272, 264, 652, 652, 272,
+ 324, 272, 16, 284, 16, 272, 164, 184,
+ 420, 420, 608, 188, 164, 320, 320, 192,
+ 188, 272, 548, 188, 284, 288, 204, 204,
+ 188, 184, 184, 188, 476, 284, 380, 380,
+ 316, 276, 0, 612, 476, 276, 0, 276,
+ 16, 0, 276, 540, 276, 276, 276, 92,
+ 316, 316, 320, 320, 16, 0, 0, 0,
+ 0, 380, 380, 460, 316, 316, 668, 380,
+ 380, 612, 612, 380, 164, 276, 276, 276,
+ 276, 276, 476, 380, 324, 324, 380, 280,
+ 196, 280, 264, 164, 164, 264, 556, 540,
+ 380, 380, 380, 700, 188, 692, 12, 380,
+ 380, 24, 96, 380, 648, 460, 460, 648,
+ 556, 164, 164, 108, 164, 108, 184, 24,
+ 320, 320, 320, 320, 648, 168, 168, 316,
+ 288, 648, 512, 456, 88, 88, 460, 456,
+ 404, 272, 648, 460, 88, 88, 456, 272,
+ 108, 460, 456, 456, 272, 160, 108, 108,
+ 108, 108, 20, 160, 160, 456, 160, 108,
+ 108, 436, 580, 176, 112, 112, 664, 476,
+ 404, 404, 160, 160, 476, 512, 176, 404,
+ 404, 460, 536, 460, 160, 168, 184, 160,
+ 404, 548, 16, 108, 108, 372, 184, 648,
+ 424, 648, 556, 648, 648, 272, 664, 404,
+ 476, 292, 80, 80, 292, 292, 292,
+};
+
+static long _vq_q_res0_0d[] = {
+ 396, 484, 148, 220, 664, 236, 72, 192,
+ 84, 8, 192, 192, 632, 192, 192, 588,
+ 192, 72, 36, 8, 208, 36, 36, 156,
+ 208, 8, 8, 8, 192, 384, 56, 8,
+ 384, 28, 28, 4, 28, 224, 28, 8,
+ 8, 96, 8, 156, 8, 8, 192, 96,
+ 192, 192, 192, 588, 152, 588, 488, 588,
+ 384, 28, 588, 208, 140, 192, 488, 488,
+ 208, 588, 588, 236, 96, 472, 192, 472,
+ 96, 472, 72, 224, 192, 632, 472, 192,
+ 96, 472, 4, 224, 472, 452, 452, 208,
+ 236, 96, 152, 372, 96, 64, 472, 472,
+ 372, 152, 152, 472, 236, 488, 472, 648,
+ 152, 312, 96, 152, 452, 472, 372, 96,
+ 472, 488, 488, 224, 152, 96, 72, 588,
+ 96, 488, 236, 236, 488, 236, 456, 152,
+ 488, 404, 456, 452, 152, 236, 588, 456,
+ 564, 488, 588, 452, 588, 564, 236, 236,
+ 448, 488, 236, 140, 472, 208, 236, 236,
+ 588, 208, 488, 564, 236, 508, 564, 160,
+ 160, 208, 588, 324, 384, 388, 80, 152,
+ 100, 152, 152, 76, 152, 664, 488, 588,
+ 160, 488, 588, 152, 664, 388, 588, 588,
+ 588, 152, 564, 564, 488, 564, 456, 424,
+ 564, 160, 452, 28, 664, 500, 664, 488,
+ 588, 224, 488, 224, 588, 588, 452, 28,
+ 500, 500, 8, 384, 500, 452, 324, 452,
+ 448, 56, 72, 324, 84, 140, 84, 384,
+ 192, 384, 324, 384, 140, 108, 488, 384,
+ 488, 668, 664, 324, 488, 448, 488, 384,
+ 452, 192, 224, 488, 664, 664, 668, 668,
+ 588, 124, 464, 140, 116, 480, 384, 120,
+ 84, 120, 172, 172, 120, 384, 456, 8,
+ 120, 384, 480, 324, 224, 84, 668, 480,
+ 384, 480, 480, 480, 120, 324, 116, 664,
+ 668, 480, 224, 668, 480, 508, 668, 480,
+ 668, 224, 480, 116, 184, 668, 140, 324,
+ 220, 120, 4, 28, 8, 664, 224, 508,
+ 384, 28, 8, 384, 120, 28, 28, 120,
+ 184, 8, 480, 28, 172, 232, 116, 120,
+ 220, 120, 220, 220, 232, 120, 172, 172,
+ 220, 232, 508, 232, 28, 120, 120, 232,
+ 232, 232, 116, 480, 464, 508, 28, 480,
+ 28, 464, 480, 508, 480, 220, 28, 232,
+ 172, 656, 172, 212, 468, 212, 220, 220,
+ 468, 212, 232, 220, 172, 172, 500, 232,
+ 656, 232, 232, 8, 116, 664, 80, 388,
+ 100, 464, 464, 668, 464, 28, 488, 80,
+ 664, 388, 664, 388, 388, 488, 504, 588,
+ 488, 388, 648, 508, 500, 28, 184, 184,
+ 496, 116, 28, 392, 488, 348, 220, 388,
+ 220, 388, 500, 392, 588, 28, 388, 488,
+ 588, 508, 488, 564, 452, 224, 564, 496,
+ 220, 28, 116, 496, 664, 388, 488, 448,
+ 388, 488, 184, 464, 388, 220, 220, 220,
+ 28, 588, 116, 384, 36, 8, 8, 396,
+ 28, 36, 36, 36, 16, 28, 116, 184,
+ 28, 36, 28, 324, 36, 124, 116, 140,
+ 488, 208, 104, 392, 392, 208, 140, 208,
+ 488, 208, 392, 116, 488, 508, 488, 208,
+ 392, 488, 392, 124, 588, 208, 548, 588,
+ 36, 488, 488, 600, 24, 220, 464, 100,
+ 80, 388, 548, 100, 464, 596, 596, 464,
+ 596, 464, 596, 596, 104, 696, 348, 696,
+ 220, 360, 680, 696, 696, 680, 696, 184,
+ 548, 212, 220, 184, 696, 392, 220, 212,
+ 124, 684, 212, 212, 684, 348, 220, 160,
+ 220, 124, 684, 684, 212, 696, 104, 212,
+ 212, 696, 696, 36, 528, 680, 596, 100,
+ 596, 464, 548, 184, 368, 656, 680, 232,
+ 368, 24, 24, 232, 24, 680, 596, 160,
+ 464, 596, 232, 232, 596, 232, 596, 232,
+ 408, 24, 200, 532, 200, 532, 200, 596,
+ 200, 448, 596, 596, 20, 20, 200, 24,
+ 596, 24, 200, 596, 184, 408, 696, 680,
+ 368, 680, 184, 596, 696, 16, 368, 528,
+ 532, 24, 680, 408, 528, 528, 408, 528,
+ 184, 528, 696, 696, 528, 16, 24, 532,
+ 28, 220, 696, 528, 656, 24, 160, 500,
+ 680, 24, 424, 4, 184, 528, 184, 528,
+ 548, 24, 548, 696, 528, 468, 232, 656,
+ 220, 32, 32, 212, 468, 212, 220, 232,
+ 184, 696, 528, 112, 212, 220, 36, 212,
+ 36, 220, 496, 696, 36, 232, 696, 20,
+ 28, 24, 548, 596, 28, 24, 4, 28,
+ 224, 4, 696, 224, 28, 36, 36, 232,
+ 24, 36, 40, 696, 236, 372, 600, 20,
+ 64, 64, 340, 60, 20, 60, 356, 616,
+ 600, 600, 600, 356, 600, 600, 340, 636,
+ 44, 60, 64, 376, 376, 64, 376, 496,
+ 60, 64, 64, 600, 636, 64, 64, 32,
+ 64, 600, 600, 340, 548, 372, 248, 636,
+ 44, 152, 64, 152, 548, 636, 152, 340,
+ 372, 152, 548, 372, 236, 564, 584, 520,
+ 448, 588, 144, 564, 496, 564, 600, 96,
+ 236, 500, 236, 520, 588, 208, 236, 520,
+ 236, 236, 600, 236, 600, 496, 236, 48,
+ 36, 636, 200, 248, 100, 152, 588, 520,
+ 100, 100, 248, 360, 200, 200, 360, 200,
+ 496, 448, 80, 640, 348, 356, 360, 360,
+ 500, 360, 640, 636, 388, 640, 356, 564,
+ 588, 520, 564, 588, 520, 356, 588, 564,
+ 564, 500, 356, 640, 360, 500, 360, 100,
+ 388, 388, 360, 444, 152, 388, 80, 60,
+ 28, 588, 44, 20, 228, 600, 600, 228,
+ 20, 100, 636, 100, 448, 356, 112, 28,
+ 588, 100, 228, 20, 228, 536, 588, 4,
+ 20, 588, 228, 28, 160, 228, 588, 4,
+ 448, 536, 588, 500, 20, 636, 228, 200,
+ 60, 88, 88, 548, 20, 200, 360, 20,
+ 160, 200, 600, 228, 356, 360, 148, 148,
+ 360, 536, 356, 228, 228, 60, 228, 536,
+ 448, 228, 548, 496, 200, 228, 640, 356,
+ 360, 500, 356, 360, 228, 100, 444, 184,
+ 20, 456, 20, 228, 448, 20, 200, 60,
+ 636, 636, 200, 100, 20, 456, 448, 20,
+ 200, 332, 148, 36, 356, 392, 348, 696,
+ 228, 104, 252, 256, 104, 104, 228, 500,
+ 348, 348, 252, 144, 104, 392, 208, 224,
+ 392, 208, 64, 144, 500, 224, 104, 392,
+ 144, 144, 392, 144, 500, 564, 348, 376,
+ 376, 564, 144, 356, 228, 640, 104, 348,
+ 64, 348, 104, 388, 564, 340, 64, 404,
+ 500, 376, 388, 564, 340, 64, 404, 376,
+ 312, 348, 388, 564, 500, 388, 564, 376,
+ 228, 640, 356, 376, 356, 208, 564, 144,
+ 144, 64, 564, 588, 64, 208, 216, 312,
+ 500, 616, 228, 588, 28, 224, 36, 456,
+ 588, 444, 16, 228, 356, 216, 228, 568,
+ 568, 256, 228, 356, 216, 356, 148, 148,
+ 356, 228, 508, 476, 424, 424, 356, 640,
+ 148, 408, 396, 216, 148, 696, 360, 228,
+ 216, 216, 148, 396, 228, 228, 308, 20,
+ 356, 508, 468, 336, 208, 112, 604, 180,
+ 440, 156, 96, 96, 440, 192, 96, 192,
+ 440, 156, 156, 440, 180, 72, 180, 236,
+ 472, 440, 96, 180, 440, 180, 440, 180,
+ 180, 472, 236, 508, 236, 508, 472, 236,
+ 84, 604, 400, 156, 628, 632, 604, 604,
+ 632, 440, 604, 604, 440, 424, 508, 440,
+ 604, 192, 156, 632, 72, 424, 72, 396,
+ 424, 72, 156, 508, 604, 156, 604, 424,
+ 604, 396, 216, 16, 424, 128, 156, 128,
+ 156, 156, 132, 156, 440, 96, 180, 40,
+ 180, 340, 96, 16, 396, 180, 340, 440,
+ 508, 520, 440, 520, 424, 180, 16, 520,
+ 4, 156, 216, 180, 440, 132, 296, 520,
+ 156, 452, 32, 132, 156, 32, 452, 520,
+ 112, 128, 132, 440, 452, 312, 440, 156,
+ 108, 132, 224, 352, 132, 132, 520, 128,
+ 440, 180, 604, 132, 304, 604, 604, 604,
+ 180, 604, 440, 132, 364, 604, 364, 604,
+ 180, 208, 144, 252, 392, 144, 352, 580,
+ 108, 452, 144, 208, 140, 144, 568, 208,
+ 568, 140, 456, 208, 180, 208, 180, 144,
+ 456, 364, 208, 180, 424, 456, 676, 4,
+ 140, 72, 452, 180, 156, 208, 452, 604,
+ 424, 208, 452, 424, 140, 604, 208, 604,
+ 108, 32, 32, 604, 304, 676, 676, 676,
+ 136, 208, 676, 180, 456, 568, 180, 604,
+ 352, 208, 200, 200, 208, 604, 456, 484,
+ 332, 600, 356, 228, 252, 456, 200, 200,
+ 144, 356, 456, 88, 108, 600, 144, 492,
+ 492, 492, 508, 600, 444, 20, 332, 536,
+ 336, 376, 332, 492, 584, 20, 492, 492,
+ 60, 492, 376, 376, 492, 492, 492, 60,
+ 336, 364, 336, 88, 88, 492, 536, 64,
+ 520, 444, 40, 492, 492, 180, 492, 660,
+ 492, 444, 352, 492, 376, 376, 364, 376,
+ 584, 444, 660, 444, 584, 352, 600, 492,
+ 660, 600, 476, 660, 80, 112, 432, 676,
+ 228, 252, 584, 228, 36, 208, 36, 676,
+ 492, 344, 136, 492, 676, 180, 208, 208,
+ 180, 216, 492, 584, 492, 136, 584, 216,
+ 216, 180, 492, 308, 36, 208, 492, 584,
+ 660, 20, 428, 492, 252, 432, 432, 432,
+ 216, 432, 364, 492, 432, 660, 492, 432,
+ 492, 364, 228, 492, 352, 228, 228, 32,
+ 492, 444, 176, 332, 176, 176, 112, 176,
+ 584, 536, 176, 660, 308, 112, 444, 292,
+ 584, 444, 452, 452, 484, 492, 444, 336,
+ 428, 584, 436, 436, 176, 536, 352, 428,
+ 176, 536, 584, 308, 492, 492, 428, 492,
+ 492, 484, 112, 136, 40, 180, 32, 492,
+ 32, 296, 180, 216, 80, 180, 520, 32,
+ 180, 492, 352, 36, 32, 4, 352, 312,
+ 32, 36, 32, 36, 484, 520, 112, 132,
+ 32, 352, 344, 484, 484, 532, 652, 176,
+ 604, 416, 304, 412, 432, 392, 252, 136,
+ 344, 676, 364, 136, 344, 676, 364, 392,
+ 200, 676, 252, 136, 228, 228, 432, 432,
+ 248, 212, 432, 412, 252, 344, 392, 684,
+ 352, 392, 392, 344, 412, 684, 684, 200,
+ 432, 412, 684, 212, 344, 136, 140, 136,
+ 44, 412, 392, 344, 416, 412, 416, 416,
+ 412, 572, 212, 572, 572, 124, 684, 412,
+ 212, 468, 684, 412, 684, 212, 684, 312,
+ 436, 124, 304, 136, 392, 208, 508, 140,
+ 208, 584, 584, 136, 416, 400, 140, 224,
+ 140, 604, 224, 208, 416, 28, 404, 584,
+ 28, 392, 140, 36, 124, 212, 412, 412,
+ 28, 584, 208, 124, 36, 208, 36, 224,
+ 140, 412, 124, 580, 16, 4, 208, 416,
+ 4, 124, 508, 140, 176, 484, 416, 136,
+ 352, 20, 36, 416, 412, 592, 212, 592,
+ 572, 592, 416, 20, 592, 572, 572, 108,
+ 572, 592, 344, 136, 484, 484, 136, 428,
+ 452, 484, 428, 452, 452, 228, 432, 428,
+ 484, 452, 592, 484, 592, 20, 4, 228,
+ 572, 592, 216, 592, 176, 36, 32, 36,
+ 228, 584, 176, 584, 32, 132, 140, 124,
+ 84, 172, 524, 208, 8, 152, 584, 8,
+ 584, 224, 36, 8, 172, 8, 524, 152,
+ 8, 524, 524, 172, 524, 84, 524, 584,
+ 224, 168, 652, 572, 416, 92, 172, 524,
+ 436, 92, 436, 172, 468, 468, 172, 212,
+ 372, 468, 416, 172, 436, 524, 212, 212,
+ 172, 524, 372, 212, 172, 468, 584, 152,
+ 468, 352, 92, 572, 572, 476, 372, 352,
+ 572, 652, 92, 372, 172, 172, 524, 592,
+ 212, 64, 212, 372, 372, 168, 212, 592,
+ 36, 212, 592, 352, 64, 592, 44, 64,
+ 592, 592, 400, 416, 416, 572, 312, 400,
+ 524, 84, 64, 140, 524, 312, 416, 140,
+ 524, 524, 140, 416, 616, 44, 224, 572,
+ 136, 524, 484, 416, 400, 128, 132, 452,
+ 64, 132, 128, 604, 152, 132, 604, 4,
+ 416, 416, 416, 484, 484, 132, 604, 400,
+ 128, 524, 524, 128, 524, 308, 128, 524,
+ 156, 604, 520, 224, 156, 604, 512, 524,
+ 580, 604, 524, 204, 224, 592, 32, 36,
+ 524, 604, 580, 224, 604, 224, 36, 32,
+ 204, 32, 508, 168, 524, 224, 32, 524,
+ 32, 512, 32, 168, 36, 4, 8, 32,
+ 8, 508, 32, 36, 512, 132, 168, 484,
+ 504, 32, 484, 176, 168, 36, 416, 484,
+ 136, 32, 204, 604, 604, 204, 484, 204,
+ 508, 604, 508, 396, 36, 604, 592, 416,
+ 484, 504, 32, 16, 168, 512, 484, 592,
+ 204, 36, 592, 204, 32, 396, 560, 168,
+ 416, 320, 92, 512, 572, 112, 132, 168,
+ 484, 484, 168, 168, 204, 484, 132, 168,
+ 168, 204, 168, 484, 572, 592, 572, 484,
+ 572, 512, 284, 572, 204, 416, 652, 168,
+ 524, 524, 168, 652, 204, 196, 512, 132,
+ 524, 128, 524, 128, 168, 560, 560, 560,
+ 132, 560, 204, 132, 416, 524, 204, 560,
+ 512, 168, 416, 524, 264, 560, 264, 168,
+ 264, 560, 176, 148, 572, 656, 468, 624,
+ 528, 528, 656, 204, 468, 528, 212, 468,
+ 528, 468, 92, 572, 572, 212, 580, 584,
+ 284, 224, 528, 224, 212, 592, 504, 572,
+ 212, 592, 504, 500, 412, 432, 408, 148,
+ 224, 504, 148, 228, 432, 432, 408, 228,
+ 508, 592, 684, 212, 504, 412, 212, 508,
+ 584, 504, 496, 432, 228, 412, 212, 592,
+ 284, 212, 500, 496, 592, 228, 228, 592,
+ 548, 168, 228, 592, 528, 532, 24, 316,
+ 460, 460, 532, 24, 24, 24, 460, 528,
+ 284, 532, 592, 528, 24, 184, 184, 624,
+ 148, 228, 536, 428, 432, 460, 592, 592,
+ 592, 432, 284, 496, 432, 176, 184, 176,
+ 228, 228, 228, 508, 204, 228, 36, 592,
+ 460, 88, 228, 20, 148, 408, 432, 512,
+ 432, 592, 512, 504, 592, 692, 148, 432,
+ 580, 512, 432, 504, 508, 20, 148, 532,
+ 224, 148, 508, 532, 20, 148, 504, 24,
+ 504, 228, 592, 24, 460, 528, 504, 532,
+ 532, 528, 460, 532, 436, 688, 404, 688,
+ 504, 228, 528, 592, 24, 24, 512, 512,
+ 24, 204, 592, 512, 476, 460, 592, 4,
+ 316, 92, 656, 24, 476, 92, 24, 396,
+ 204, 92, 316, 512, 24, 92, 512, 484,
+ 320, 92, 316, 168, 592, 508, 168, 572,
+ 592, 508, 216, 436, 216, 572, 92, 396,
+ 168, 436, 112, 92, 168, 572, 572, 168,
+ 476, 504, 592, 500, 484, 580, 32, 572,
+ 484, 580, 8, 196, 196, 4, 228, 176,
+ 156, 176, 484, 536, 580, 536, 592, 536,
+ 428, 176, 176, 460, 584, 580, 580, 176,
+ 536, 192, 592, 192, 228, 156, 4, 32,
+ 20, 176, 24, 196, 580, 592, 176, 24,
+ 592, 196, 24, 196, 176, 512, 228, 176,
+ 4, 32, 196, 512, 228, 228, 272, 224,
+ 320, 556, 16, 464, 668, 660, 28, 540,
+ 76, 80, 664, 664, 664, 272, 540, 540,
+ 216, 540, 196, 28, 216, 28, 28, 668,
+ 668, 540, 540, 476, 28, 232, 480, 516,
+ 328, 464, 516, 516, 480, 464, 272, 328,
+ 480, 480, 540, 540, 480, 120, 540, 232,
+ 540, 480, 476, 516, 540, 540, 264, 204,
+ 4, 164, 120, 164, 8, 4, 216, 540,
+ 8, 8, 216, 28, 8, 540, 476, 512,
+ 512, 164, 384, 204, 672, 328, 120, 540,
+ 260, 120, 156, 580, 672, 512, 120, 552,
+ 268, 224, 552, 328, 196, 260, 540, 504,
+ 552, 476, 204, 512, 224, 204, 540, 552,
+ 552, 204, 552, 552, 196, 268, 84, 84,
+ 196, 540, 8, 84, 120, 580, 8, 540,
+ 84, 196, 196, 540, 196, 540, 224, 260,
+ 540, 8, 552, 8, 652, 164, 8, 156,
+ 552, 204, 224, 204, 580, 8, 164, 204,
+ 552, 504, 552, 164, 88, 216, 232, 568,
+ 516, 596, 692, 464, 516, 692, 596, 516,
+ 688, 692, 568, 660, 688, 200, 596, 660,
+ 364, 436, 580, 504, 28, 568, 692, 596,
+ 568, 596, 544, 232, 568, 596, 544, 232,
+ 692, 372, 568, 516, 308, 516, 288, 292,
+ 292, 516, 216, 216, 216, 660, 472, 516,
+ 216, 504, 516, 568, 660, 364, 688, 224,
+ 544, 516, 308, 568, 224, 516, 544, 568,
+ 568, 568, 308, 396, 556, 456, 424, 556,
+ 556, 368, 200, 556, 456, 108, 20, 224,
+ 20, 24, 688, 372, 556, 456, 688, 532,
+ 532, 556, 556, 568, 568, 340, 568, 688,
+ 20, 568, 568, 380, 532, 568, 544, 96,
+ 568, 200, 224, 504, 200, 568, 596, 504,
+ 568, 500, 96, 532, 568, 544, 544, 556,
+ 568, 568, 556, 96, 500, 164, 16, 552,
+ 280, 476, 216, 328, 420, 644, 516, 372,
+ 544, 516, 544, 692, 544, 328, 420, 516,
+ 216, 580, 476, 216, 420, 644, 280, 644,
+ 544, 692, 420, 552, 420, 672, 580, 204,
+ 672, 420, 552, 96, 420, 552, 692, 224,
+ 552, 568, 424, 700, 396, 420, 700, 280,
+ 96, 544, 420, 700, 700, 544, 192, 556,
+ 700, 700, 700, 396, 580, 556, 700, 692,
+ 568, 556, 700, 700, 472, 216, 420, 396,
+ 420, 204, 692, 404, 472, 272, 216, 396,
+ 216, 20, 544, 28, 516, 192, 328, 516,
+ 232, 692, 516, 440, 440, 516, 516, 28,
+ 216, 28, 632, 656, 544, 672, 644, 544,
+ 544, 328, 544, 164, 656, 232, 164, 544,
+ 544, 544, 656, 692, 440, 232, 368, 380,
+ 544, 544, 380, 544, 440, 272, 556, 216,
+ 164, 16, 24, 20, 568, 4, 4, 568,
+ 580, 568, 164, 4, 4, 544, 24, 544,
+ 568, 504, 544, 28, 216, 568, 512, 568,
+ 216, 556, 164, 568, 380, 24, 184, 24,
+ 496, 544, 568, 184, 496, 544, 164, 556,
+ 556, 700, 260, 568, 152, 224, 132, 520,
+ 532, 700, 84, 92, 672, 652, 652, 504,
+ 560, 552, 672, 164, 420, 188, 188, 164,
+ 420, 652, 672, 552, 504, 672, 552, 164,
+ 672, 672, 92, 672, 672, 672, 164, 500,
+ 164, 280, 188, 672, 420, 500, 188, 672,
+ 420, 188, 496, 420, 164, 504, 652, 84,
+ 268, 552, 500, 84, 224, 8, 652, 84,
+ 196, 84, 188, 112, 184, 196, 560, 128,
+ 560, 132, 584, 132, 520, 128, 84, 156,
+ 264, 196, 440, 156, 260, 196, 132, 504,
+ 496, 128, 132, 156, 184, 132, 440, 156,
+ 168, 560, 164, 8, 132, 560, 168, 184,
+ 32, 156, 560, 184, 628, 156, 628, 32,
+ 264, 184, 8, 132, 4, 8, 440, 496,
+ 8, 132, 176, 560, 548, 132, 132, 560,
+ 496, 184, 176, 168, 112, 548, 624, 548,
+ 168, 184, 548, 128, 216, 628, 128, 184,
+ 548, 548, 548, 164, 184, 552, 560, 264,
+ 132, 196, 260, 560, 652, 96, 196, 396,
+ 420, 552, 560, 580, 188, 560, 560, 552,
+ 580, 196, 188, 420, 284, 204, 420, 204,
+ 552, 192, 476, 8, 580, 284, 188, 188,
+ 188, 204, 560, 196, 272, 420, 188, 580,
+ 580, 192, 420, 16, 164, 580, 184, 188,
+ 164, 188, 192, 700, 188, 576, 188, 196,
+ 548, 156, 560, 700, 188, 292, 216, 540,
+ 548, 188, 576, 576, 540, 700, 456, 184,
+ 576, 380, 188, 276, 204, 656, 164, 0,
+ 216, 92, 164, 216, 316, 92, 188, 188,
+ 188, 320, 92, 188, 204, 316, 24, 380,
+ 164, 164, 24, 532, 24, 380, 476, 460,
+ 24, 380, 532, 532, 24, 188, 280, 380,
+ 164, 544, 196, 164, 196, 668, 700, 380,
+ 204, 700, 204, 188, 576, 196, 576, 580,
+ 188, 700, 576, 576, 700, 580, 580, 556,
+ 532, 576, 372, 460, 692, 576, 532, 372,
+ 576, 188, 576, 164, 168, 576, 576, 576,
+ 168, 112, 188, 576, 96, 188, 576, 576,
+ 436, 580, 580, 556, 112, 108, 160, 460,
+ 476, 648, 580, 532, 456, 536, 160, 512,
+ 4, 160, 460, 576, 692, 576, 456, 160,
+ 20, 176, 176, 176, 20, 160, 176, 456,
+ 576, 580, 584, 576, 160, 168, 404, 580,
+ 580, 476, 184, 176, 512, 580, 184, 584,
+ 436, 168, 576, 576, 576, 576, 576, 548,
+ 28, 576, 424, 184, 16, 436, 576, 584,
+ 556, 436, 700, 580, 372, 20, 496, 540,
+ 204, 648, 584, 664, 80, 664, 476,
+};
+
+static encode_aux _vq_aux_res0_0d = {
+ _vq_ptr0_res0_0d,
+ _vq_ptr1_res0_0d,
+ _vq_p_res0_0d,
+ _vq_q_res0_0d,
+ 3111, 3111
+};
+
+static static_codebook _vq_book_res0_0d = {
+ 4, 176, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4,
+ _vq_quantlist_res0_0d,
+ _vq_lengthlist_res0_0d,
+ &_vq_aux_res0_0d,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0_0e.vqh b/include/vorbis/book/res0_0e.vqh
new file mode 100644
index 00000000..df7d84a7
--- /dev/null
+++ b/include/vorbis/book/res0_0e.vqh
@@ -0,0 +1,928 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/vqbuild
+
+ ********************************************************************/
+
+#ifndef _V_res0_0e_VQH_
+#define _V_res0_0e_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_0e[] = {
+ 0, 0, 0, 0,
+ 0, 0, -3, 0,
+ 0, 3, 0, 0,
+ -3, 0, 0, 0,
+ 0, 0, 3, 0,
+ 3, 0, 0, 0,
+ 0, 0, 0, 3,
+ 0, 0, 0, -2,
+ 0, -3, 0, 0,
+ 0, 0, 6, 0,
+ 0, -1, -3, -3,
+ 3, 0, -4, 0,
+ 0, 3, -4, 0,
+ 0, 0, 4, -3,
+ 3, -3, 0, 0,
+ 0, -6, 0, 0,
+ 0, -4, -4, 0,
+ 3, 0, 3, 0,
+ 0, -4, 4, 0,
+ 0, 0, 0, -4,
+ 0, -3, 0, -4,
+ 5, 0, 3, 0,
+ 3, 0, 0, 4,
+ 3, 0, 3, 3,
+ 2, 0, -3, 3,
+ 0, 3, 2, 3,
+ 0, 4, 0, 4,
+ 0, 5, 3, 0,
+ -3, 0, 1, -4,
+ 4, 0, 0, -4,
+ -2, 2, 3, 0,
+ 4, 3, 0, 0,
+ -3, 2, -3, 0,
+ 0, 0, -4, 4,
+ -3, -2, 0, 0,
+ -3, 2, 0, 0,
+ 3, 3, 0, -2,
+ -5, 0, 0, 3,
+ 0, 0, 2, 3,
+ 0, 0, 0, -7,
+ 2, 0, 0, -2,
+ 2, 4, 0, 0,
+ 0, 2, 0, 3,
+ 0, -2, -2, 0,
+ 0, 0, 4, 3,
+ 0, 3, 5, 0,
+ -3, -2, 3, 0,
+ -5, 0, 0, 0,
+ 7, 0, 0, 0,
+ 3, 3, 0, 2,
+ -2, -2, 0, 3,
+ -3, 0, 3, 3,
+ 0, -3, 2, 3,
+ -3, 0, -2, 3,
+ 0, -4, 0, 4,
+ 0, 0, -1, 5,
+ 0, 2, -2, -1,
+ 0, 4, -1, -2,
+ -3, 0, 3, -1,
+ 2, 3, 3, 0,
+ -3, 0, -3, 0,
+ 3, -5, 0, 0,
+ 0, 0, -5, -4,
+ -4, 0, 0, -3,
+ -3, -3, 0, -3,
+ 0, 3, 0, -4,
+ 0, 3, -3, 3,
+ 3, -3, 0, 2,
+ 0, 7, 0, 0,
+ -2, -5, 0, 0,
+ -5, -4, 0, 0,
+ 0, 0, -7, 0,
+ -2, -3, -3, 0,
+ -3, 3, 0, -2,
+ 5, 0, -3, 0,
+ 0, 0, 3, 5,
+ 0, 2, 2, -3,
+ 0, 4, 3, -3,
+ -3, 6, 0, 0,
+ -2, 3, 0, 3,
+ -5, 0, -2, 0,
+ -3, 4, 1, 0,
+ -2, 4, -1, 0,
+ 5, -4, 0, 0,
+ 2, 0, -3, -3,
+ 4, 0, -2, -3,
+ -2, 0, 0, 6,
+ -5, 3, 0, 0,
+ -5, 0, 4, 0,
+ -4, 0, -4, 0,
+ -3, 0, -6, 0,
+ -8, 0, 0, 0,
+ 5, 0, 0, 3,
+ 7, 1, 1, 0,
+ 2, 2, 2, 2,
+ -3, 2, 0, 4,
+ 5, 2, 0, 1,
+};
+
+static long _vq_lengthlist_res0_0e[] = {
+ 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9,
+ 9,
+};
+
+static long _vq_ptr0_res0_0e[] = {
+ -1, -2, -3, -4, -5, -6, -7, -8,
+ -9, -10, -11, -12, -13, 10, 7, -16,
+ 19, 48, 62, -20, 39, 85, 63, 1,
+ -25, -26, -27, 0, 7, 61, -31, -32,
+ 1, -34, 32, -36, 80, -38, -39, -40,
+ -41, 32, -43, -44, 10, -46, -47, 60,
+ 63, 62, -51, -52, 62, 89, -55, -56,
+ -57, -58, -59, 33, 43, 16, -63, 33,
+ 90, -66, -67, -68, -69, 10, 83, -72,
+ -73, -74, 10, 43, -70, -78, -79, 1,
+ -75, 48, 67, -84, 10, 16, -87, -88,
+ 16, -90, -91, 10, -93, -94, 60, 90,
+ -97, 89, 83, -98, -101, 60, -103, 62,
+ -99, -106, -107, -108, -109, 80, -111, 60,
+ 83, -114, 80, -94, -112, -116, -119, -120,
+ 60, -122, -74, 48, 64, -94, -123, 5,
+ -129, -130, 34, -132, -133, 34, -127, 67,
+ -137, -138, -139, -140, -141, 32, 35, 80,
+ -145, -146, -147, 80, 34, 37, -151, -152,
+ -153, -154, -36, 14, 3, 53, -159, -160,
+ 34, 3, -163, 80, -155, 3, -167, 50,
+ 53, -170, -171, -133, -164, 70, -167, -172,
+ 37, 50, -179, -180, -181, -149, -175, -184,
+ 37, 53, -187, -188, 86, -182, -191, 50,
+ -189, -194, -195, 86, -197, 53, 55, -200,
+ -201, 0, -192, -204, 3, -206, -207, -208,
+ -209, 33, -32, 24, -211, -141, 83, -216,
+ -217, -168, 29, 75, -218, 14, -223, 53,
+ -221, -226, -227, -228, 33, -230, -75, 29,
+ -231, 44, -232, 17, 50, -195, -221, 53,
+ -241, -242, -243, -244, -245, -246, -247, 33,
+ 21, 54, -251, -252, 86, -248, -253, -256,
+ -257, 50, -254, -260, 54, -258, -263, -264,
+ 43, 50, 43, -268, -269, -270, -271, -272,
+ -273, 0, 43, -276, 50, -273, 83, 6,
+ 43, 54, -283, 34, 4, -286, -287, 75,
+ 52, -290, 38, -292, -257, 14, -293, -294,
+ -297, -298, -299, -283, 16, 43, -303, -304,
+ -305, -306, -307, 15, 8, 52, -301, 69,
+ -313, -314, -315, 50, -310, -281, 11, -320,
+ 52, -318, 15, 18, -325, -326, -327, 33,
+ 16, -330, -331, -274, -321, -332, -61, 11,
+ -337, -133, -335, 24, -339, -342, -343, -122,
+ -592, -340, 43, 7, -349, -350, -351, 10,
+ -353, 19, 7, -356, 39, -346, 16, -360,
+ -361, -362, -363, -133, 11, -364, -365, -75,
+ 0, -368, -371, -130, -369, 24, -375, -376,
+ -130, -373, -311, 1, 0, -382, -383, 64,
+ 69, -386, -387, -388, -274, -380, 7, -392,
+ -390, -389, 20, -396, 64, -393, -124, 24,
+ -401, -402, -403, -404, -405, -406, 15, 11,
+ -409, 61, 24, -323, -410, -412, 8, 18,
+ -417, -418, 16, -420, -421, -274, -413, -422,
+ -425, 16, -423, -428, -429, -430, -431, -432,
+ -433, -434, -435, -436, -437, 32, -439, 80,
+ 35, 80, 63, -444, -445, -446, -440, -426,
+ 47, -450, -451, 47, 87, 14, 58, -456,
+ -451, 16, -457, -460, 3, -462, -463, -464,
+ 30, -466, 35, -448, 14, -470, 30, -472,
+ -473, 47, 3, 58, -477, -478, -479, 35,
+ -481, 37, 47, -484, 37, -486, 3, 47,
+ -489, -490, -491, -492, 35, 14, -274, -496,
+ -184, -494, 51, -188, -497, -502, -503, -504,
+ -505, -130, 14, 37, -509, -510, -511, 80,
+ 70, -514, 47, 40, -517, -507, -515, -514,
+ 14, 80, -523, -524, 63, 43, -527, -528,
+ -529, 37, 51, -532, -533, -534, 46, -514,
+ 40, 88, -539, -535, -1054, -536, -541, -454,
+ 14, 88, -547, -548, -479, 43, -551, -552,
+ -553, 28, 13, -556, 58, -549, -559, 30,
+ -561, 9, -563, 9, -520, -566, -567, -568,
+ -569, -570, -571, 13, 84, -574, -283, -351,
+ 46, -578, 46, -396, -575, -582, 9, -584,
+ -585, -586, 13, 18, -589, -284, -580, -590,
+ -1442, -591, -593, -596, -597, -598, -599, 28,
+ 64, 84, -603, -604, 13, -407, 25, 84,
+ -515, -610, 9, -612, -586, 1, 4, -616,
+ -617, 58, -613, -620, -621, -622, -623, -624,
+ 28, -626, 19, 11, -353, -627, 10, -606,
+ -630, 10, -635, -636, -637, 34, -633, 1,
+ -460, -407, -641, -644, -645, -646, -647, -648,
+ -649, 9, 58, -652, -653, -654, -655, -656,
+ 75, 38, 75, -660, 50, -662, 38, 50,
+ 86, -666, -667, -668, -669, -290, -642, 52,
+ -673, 51, -675, -676, 44, -670, -631, -677,
+ -681, 46, 44, 51, -685, -681, 10, -686,
+ -660, 84, 39, -692, -693, -694, 34, -696,
+ 46, 50, -699, 37, -690, -702, 0, -486,
+ 29, -706, 3, -704, -709, -710, 0, -712,
+ -713, -649, -707, 46, -717, -718, 46, 4,
+ -721, 52, 29, -724, -725, -726, -727, -130,
+ -722, -536, -731, 46, -729, -576, -732, -415,
+ -734, -738, -739, -681, 13, -355, -604, 29,
+ -745, -746, -747, -748, -201, -743, 38, -752,
+ -753, 25, 75, -756, -757, -758, 25, 44,
+ -761, 38, -749, -764, -765, 30, -762, 9,
+ -290, 4, 40, -772, -773, -774, -775, -776,
+ -777, 25, 79, -780, 30, -770, -783, 25,
+ -785, 79, -769, 25, -789, -790, -791, -785,
+ 17, 13, 35, 35, 35, -798, -799, 78,
+ -801, 79, 81, -804, -805, -785, -793, 87,
+ -492, -806, -440, -809, 81, -814, -815, -816,
+ -817, -818, 32, 12, -821, -822, 33, 53,
+ 42, -826, -63, 40, 1, 53, -201, -604,
+ 1, -834, -835, -836, -818, 29, 79, 79,
+ -837, 26, -843, 78, -838, -840, 82, 86,
+ -849, 26, -851, -852, -853, -785, -323, -493,
+ -857, 42, 53, -855, -861, -862, -863, -864,
+ -865, -866, -867, 32, -869, 12, 56, -872,
+ -873, 12, -827, -743, -877, -878, -879, 32,
+ -881, -44, -875, -882, -885, 1, -883, -867,
+ -886, -890, -891, 0, 1, 56, -895, -896,
+ -897, -898, -44, -493, 39, -902, -903, 39,
+ 62, -906, 19, -899, 10, -910, -911, -912,
+ -913, 56, -906, 0, 57, 7, -919, 57,
+ -453, -16, 15, -924, 56, 57, -927, -928,
+ -929, -930, -931, -932, -933, -934, 32, -922,
+ -937, 82, -935, -940, -941, 35, 21, -678,
+ 0, 29, -947, -440, 40, 82, -951, 12,
+ 82, -954, -955, 12, -957, -958, 78, 57,
+ -961, 82, -963, -964, 78, -948, 29, -968,
+ -969, 78, -966, -972, 79, -974, -975, 35,
+ -970, 82, -979, -980, 0, -982, 2, -924,
+ 0, -925, -984, 65, -989, -990, -991, -992,
+ -993, 27, -995, -649, -986, 45, -999, 30,
+ -1001, -1002, -1003, 30, -996, -1006, -1007, -1008,
+ -1009, 76, -1011, 13, -999, -1004, -1013, -1016,
+ -1017, 77, 44, 9, -1021, -1022, 76, -1019,
+ -1025, 13, 0, -1028, 28, -1030, -1031, 30,
+ -1023, 35, -1018, -1036, -1037, -1038, 27, -964,
+ 23, -1040, -1043, -1044, 76, 77, -1047, -1048,
+ -1049, -941, -1041, 87, -1053, 81, 75, -1053,
+ -655, 38, -1059, -1060, -1061, -1062, -1063, -1064,
+ -1065, -1044, -1057, 44, -1028, 23, -1069, -1072,
+ -1073, -1074, 76, -1070, -906, -1075, 9, 7,
+ -1081, -1082, 28, -1078, -903, 52, 23, -690,
+ -1086, -586, 23, 19, -943, -1090, 23, 77,
+ -1094, 0, 63, -941, -1096, 6, -1103, -1104,
+ -1105, -1106, -1107, -1108, 76, -1092, 5, 22,
+ -1113, -1114, -1115, -1116, 36, 56, -1119, 84,
+ -1111, -1122, 36, 84, -1125, -1126, -1127, 40,
+ -1120, 22, 84, -1132, -1133, -1134, -1135, -1136,
+ -1137, 36, -1139, -1140, 27, 41, 27, -1144,
+ -1145, -1146, 76, 77, 77, -1147, -1129, -1150,
+ 77, 41, -1155, -1156, 36, -1158, -1153, -1151,
+ -1159, -1162, 2, 94, -1074, 38, -1165, -1168,
+ -1169, -1170, 76, 13, -1147, -1166, 45, -1176,
+ -1177, -1146, 0, -1180, 36, -1182, -380, -1178,
+ -1185, 41, 2, -1188, -1189, 41, 59, 2,
+ -1193, -1194, -1195, -1196, -1197, 24, -1199, -407,
+ -1183, -1200, 11, -1202, -1201, 1, 56, -1208,
+ -955, -1204, 54, -339, -1213, -1214, -1215, 24,
+ 49, 24, -1219, -1220, 36, -1222, -1223, -1224,
+ 31, 41, -1217, -1228, -1229, -951, -260, 41,
+ -1111, -1234, -951, -1232, 2, -1238, -1239, 12,
+ -1162, -1235, -1243, 82, -1245, -1246, -1247, -1248,
+ -1249, 26, 66, -1162, -1241, -1254, -1255, 41,
+ -1257, -846, -1252, 2, -195, -1262, 26, 22,
+ -1189, -1263, -1265, -1268, -1269, -1270, -1271, -1272,
+ 21, 29, -1275, -1276, -1277, -1278, -1279, -1280,
+ 76, 13, -1283, -1284, 29, -1266, 13, -1285,
+ -1281, 14, 59, -1292, -1293, -1294, 29, -1289,
+ -1297, -1298, 36, -948, 17, -1085, -1303, -627,
+ 5, -1306, -1307, 36, -1304, -515, -721, 84,
+ 29, -1314, -1315, -1316, -1317, 21, 29, -273,
+ 29, -1322, -1323, -1324, -231, -1319, -1325, 85,
+ -948, 15, 85, -1109, -1329, -1334, -1335, -1336,
+ 93, 31, -1339, 36, 83, 85, -1343, -1344,
+ 93, -1346, -1347, 48, 5, -1350, -1351, -1352,
+ -1353, -1354, 24, 49, -1357, 24, -493, 11,
+ -1361, -364, -1358, 31, -1365, -1366, 31, 96,
+ -1369, -127, -1362, 92, -1367, -1370, -1373, -1376,
+ -1377, -1378, -1379, 31, -1281, -1380, -1290, -719,
+ -1385, -1386, -1387, -1388, -1389, -1390, -1391, 21,
+ 31, -1394, 31, -1396, -1363, -582, -1397, -1400,
+ 59, -1398, -1403, 93, -1405, -1392, -1401, 5,
+ -1409, -1355, 21, -1410, -1190, -1411, 54, -1416,
+ 21, 93, -1419, -1420, -1421, -1422, -1423, -1424,
+ -787, 52, -1427, 75, 75, 22, 38, -1432,
+ -1433, -1434, -1435, -1436, 22, 42, -1439, 26,
+ 15, -1214, 9, -1440, -1443, -1446, -1262, 44,
+ 23, -1448, -1451, 0, -1262, -1449, -1455, 1,
+ 22, -824, -1456, -1458, -1461, 22, -1463, 26,
+ 21, -1262, -1464, -1468, -1215, -1466, -822, -1469,
+ 55, -1474, -1475, 21, 23, -1471, -1479, -1480,
+ -1481, -1482, -1456, -1477, 94, 23, -1487, 23,
+ -1489, 49, -1491, 49, 96, -1494, -1495, -1496,
+ 22, -1498, 22, 49, -373, 23, -1532, 21,
+ -1503, -1506, -1507, -1508, -1509, 25, -1504, -1038,
+ 9, -1514, -1515, -787, 59, -1518, 26, 42,
+ -1521, 0, -1523, 30, -1516, 49, -997, -1528,
+ -1529, 0, -1531, -1523, -676, -997,
+};
+
+static long _vq_ptr1_res0_0e[] = {
+ -1102, -744, -427, -240, -136, -37, -24, -23,
+ -22, -19, -18, -15, -14, 63, 63, -14,
+ 63, 74, 63, -16, 63, -17, 64, 7,
+ -30, -28, 7, 3, -22, 67, -33, 7,
+ 60, -35, 63, 63, 60, -105, -54, -50,
+ -42, 89, -45, 63, 62, -49, -48, 89,
+ 89, 89, 71, -53, 90, 90, -100, -65,
+ -62, -61, -60, 16, 16, 72, -64, 71,
+ 71, -86, -83, -71, -32, 60, 67, -77,
+ -61, -75, 72, 72, -29, -80, 16, 72,
+ -61, 92, 92, -85, 71, 71, -85, -89,
+ 90, -92, 72, 90, -96, -95, 72, 72,
+ -95, 72, 92, -82, -102, 62, -64, 71,
+ -81, -118, -113, -110, 63, 64, -22, 64,
+ 74, -115, 89, -97, -17, 67, -128, -121,
+ 63, -125, -124, 5, 72, -124, 74, 74,
+ -131, 64, 70, -75, -94, 72, 67, 74,
+ -205, -178, -144, -143, -142, 53, 53, 53,
+ -169, -150, -148, 37, -149, 50, -165, -162,
+ -158, -157, -156, 74, 60, 60, -161, 53,
+ 60, 53, -133, 72, -135, -166, -168, 72,
+ 72, -176, -174, -173, -134, 72, 70, -126,
+ -177, 70, -199, -193, -186, -183, -117, -185,
+ 95, 95, -190, -185, 95, -104, -185, 95,
+ -76, -196, 6, 55, -198, 6, 6, -203,
+ -197, 6, -21, 53, 6, -225, -213, 72,
+ -210, 53, -157, 74, -202, -215, 48, -222,
+ -115, 89, 48, -233, -214, 5, -53, 90,
+ 48, -236, -229, 72, 50, -166, -168, 5,
+ -224, 94, -220, 5, -237, -239, -235, 55,
+ -341, -296, -267, -262, -250, -249, -198, 6,
+ -235, 55, -255, -249, -198, -238, 48, -259,
+ -198, 6, -234, -198, 6, -212, -266, -265,
+ 54, 54, 6, -285, -284, -282, -280, -275,
+ -274, 8, 8, -277, 8, -279, 61, 8,
+ -281, 8, 50, 8, 8, -291, -289, -288,
+ 54, 52, 4, -288, -260, 67, -29, 16,
+ -324, -302, 70, -276, 67, 67, -322, -312,
+ -311, -309, -308, 69, 69, -308, -300, 72,
+ -319, -317, -308, 69, -295, 69, 16, -281,
+ 8, -60, -323, 8, -336, -329, -328, 54,
+ 54, -334, 72, -281, -316, -278, 54, 67,
+ -327, -167, 43, 67, -301, -359, -348, -347,
+ -1502, -338, 5, 64, -358, -355, -352, 20,
+ -354, 20, 20, -353, 20, -221, 20, -385,
+ -370, -367, -347, -124, 5, -221, -357, -124,
+ -366, -345, -374, -177, -333, 5, -381, -378,
+ 72, 1, -173, 5, 5, 72, -384, 70,
+ 70, -400, -398, -391, -390, -379, 8, -395,
+ -394, -377, 8, -394, 8, -201, 20, 1,
+ -419, -416, -414, -411, -408, -394, 8, 71,
+ -394, 8, 71, -394, -407, -399, -415, 69,
+ 20, 8, 69, -61, -424, -394, -63, -397,
+ 20, 8, -372, -565, -546, -501, -488, -461,
+ -443, -442, -441, -438, 87, 35, -440, 87,
+ 87, 73, 73, -455, -454, -449, -448, -261,
+ 87, -442, -452, 63, 63, 61, 63, -459,
+ -454, -453, 20, 58, 63, -476, -469, -465,
+ 35, -467, 47, 88, 16, -471, 88, -475,
+ -474, 58, 58, 88, -485, -483, -480, 3,
+ -482, 3, 3, 87, 47, -487, 51, 88,
+ -495, -440, 53, -184, 95, 8, -493, -499,
+ -498, -468, 95, 51, -458, -526, 86, -521,
+ -508, -507, 85, 70, -516, -513, -512, 91,
+ 91, -512, 91, 85, -519, 91, -506, 70,
+ 20, -522, 91, -383, 70, -520, -531, 91,
+ -530, 88, 88, -538, -535, 70, 47, -537,
+ 84, 91, -543, 63, -1057, 43, -525, -545,
+ 84, 63, -558, -550, 58, 20, 39, -555,
+ -554, 58, 58, -442, 73, -544, -560, 58,
+ -562, 51, -475, 88, 84, -643, -619, -595,
+ -581, -573, -415, 46, 20, -577, -576, -572,
+ 8, -579, 69, 69, -564, -583, 18, -588,
+ -587, 20, 7, 20, -392, -323, -557, -542,
+ 44, -518, -500, -609, -602, -347, -600, 20,
+ 20, -103, -352, -354, 20, -601, 44, 85,
+ -607, -611, 58, -615, -614, 84, 7, 4,
+ -347, 64, -608, -634, -355, -628, -625, 64,
+ 7, -347, 64, 85, -600, -618, -629, -1057,
+ -605, 16, -640, -383, -22, 64, -60, -638,
+ -14, -85, 1, -708, -691, -651, 51, -650,
+ 46, 4, 4, -665, -661, -659, -658, -657,
+ 52, 52, 51, 51, 52, -663, 86, -664,
+ 51, -684, -680, -674, -672, -671, -639, 4,
+ 52, 4, -672, -671, 4, -632, -540, -594,
+ -682, 52, -683, 52, -688, -683, 84, 20,
+ -683, 19, 19, -701, -698, -695, 50, -697,
+ 51, 51, -697, 51, -689, -703, 4, -705,
+ 19, -650, 4, -689, -723, -711, 34, 88,
+ -716, -715, -700, 4, -720, -719, 18, 18,
+ -719, 18, 40, -737, -735, -733, -730, -384,
+ 85, -728, -384, 70, -714, 69, -687, 8,
+ -679, -721, -315, -660, 19, -740, -353, 20,
+ -860, -813, -771, -751, -750, -353, 42, -767,
+ -755, -754, 38, -763, -760, -759, 51, 51,
+ -759, 51, -742, -759, 51, 38, -741, -768,
+ -676, 17, 17, -797, -788, -787, -782, -779,
+ -778, 81, 81, -778, 81, -769, -784, 95,
+ -498, 95, 18, 42, -796, -795, -794, -492,
+ 18, 18, 42, 2, 81, -803, -800, 81,
+ -802, 82, 82, -810, -808, -807, -792, 95,
+ 87, -786, -812, -781, 87, -833, -825, -820,
+ 90, -819, 66, 66, 55, -823, 66, -824,
+ 66, -829, -828, 20, 71, -830, -832, -827,
+ 6, -847, -841, -839, -838, 13, 66, -440,
+ -831, -842, -844, 82, -846, -811, 66, -848,
+ -850, 95, -142, -858, -856, -185, 20, -394,
+ 53, 95, 66, -854, -988, -926, -894, -876,
+ -871, 57, -868, 56, -870, 62, 62, -103,
+ -64, 71, -520, -520, -887, -103, -880, 1,
+ -884, -870, -874, -859, 56, 62, -845, -889,
+ -766, -893, -892, 56, 56, 7, -921, -909,
+ -908, -901, -900, 18, 62, -905, -904, 65,
+ 65, -904, 65, -792, 7, -918, -916, -914,
+ 7, 65, 7, -493, -917, 65, -904, 65,
+ -278, -923, -920, -925, 73, 73, -978, -967,
+ -953, -950, -946, -939, -936, -924, 73, -915,
+ -924, 73, -907, -936, -924, 73, -770, -219,
+ -942, 83, 73, -949, 5, 87, -952, 56,
+ 56, -962, -956, 57, -960, -959, 68, 68,
+ 57, 68, -937, -949, 87, -221, 14, -971,
+ 68, -801, -965, -973, 2, -977, -802, 82,
+ -945, 2, -981, 7, 2, -983, 73, -985,
+ -976, -987, -944, 73, -1058, -1035, -1000, 88,
+ -994, 45, -998, -997, -938, 4, 4, 45,
+ -1026, -1020, -1005, -702, -888, -1015, -1012, -1010,
+ 45, 4, 4, 45, -1011, -736, -447, -999,
+ -1011, 45, 17, 17, -1024, -553, 58, -1018,
+ 58, 4, -1027, -1029, 73, -1033, -556, 73,
+ -676, -556, -769, -1042, -1039, 81, 68, -812,
+ -769, -1034, -1046, -1045, 73, 73, 88, -1055,
+ -1052, -1051, -1032, 73, -1051, 73, 44, -982,
+ -1054, 44, -1097, -1095, -612, -1087, -1080, -1071,
+ -1068, -987, 52, 52, -987, 52, -1067, -1079,
+ -1076, -917, 65, -1066, -917, -1056, -1077, 73,
+ -1084, -906, 65, -1050, -906, 67, 67, -1089,
+ -1085, -1091, 94, 7, -768, 5, 38, -987,
+ -1093, -1098, -1099, -1079, -1088, 67, -1483, -1418,
+ -1267, -1192, -1131, -1112, -1084, -1190, 6, 6,
+ -1124, -1121, -1118, -1117, 57, 57, -1117, 57,
+ -1110, -1123, 65, 65, -1130, -1123, -906, 65,
+ -1101, 52, 56, -1175, -1167, -1154, -1152, -1143,
+ -1138, 59, -1142, -1141, 59, 59, 2, -1149,
+ -1148, -1147, 59, 59, 2, -1137, -657, -1085,
+ -1153, 68, -1164, -1157, 41, -1161, -959, -1128,
+ -1100, -959, 68, 5, -1122, 5, -1163, -1172,
+ -1171, 59, 45, 59, -1174, -235, 59, -1181,
+ -1179, 40, 67, 40, 2, -1187, -1184, 38,
+ -1186, 5, 5, -1191, -1190, 94, 94, 59,
+ -1218, -1212, -1207, -1203, -1198, 11, -1202, -873,
+ 4, -1173, 1, -1205, -1160, -1206, 5, -1130,
+ -1117, -1083, -1101, -1210, 5, -822, -1216, 66,
+ 66, 55, -1244, -1227, -1221, 68, -1206, 56,
+ -1225, 2, 6, -1233, -1153, -1231, 55, 56,
+ -198, -1237, -1236, -1230, 56, -1240, 2, 68,
+ -1242, -1226, 68, 57, -1264, -1261, -1253, -1251,
+ -1250, 68, 68, 66, -1211, -1256, 68, 66,
+ -1162, -1259, -246, 66, -249, -1216, 66, 55,
+ -1038, 75, -1260, -1342, -1302, -1274, -1273, 36,
+ 31, 36, 39, -1291, -1288, -1282, -1281, 40,
+ 17, 17, -1286, -770, 17, -1258, -770, -1209,
+ -1290, 18, 17, -1296, 17, -1122, 65, -792,
+ -1290, -1299, 17, 17, 67, -1300, -1313, -1305,
+ -1301, -1309, -607, 85, -1295, -1311, -589, -1312,
+ 85, -1333, -1321, -1320, -1318, 5, -948, -1085,
+ 93, -126, -1328, -1327, -123, -1310, -1308, 48,
+ -1330, 61, 5, -344, 18, -1341, -1338, -1337,
+ 36, 36, -948, 5, -1332, 74, -1375, -1349,
+ -1345, -1348, 92, 96, 92, 71, -1360, -1359,
+ -1356, -1355, 96, 96, -1348, 92, -323, 49,
+ -1364, -1363, -792, 5, -1368, -1367, 74, 74,
+ -1372, -1371, 83, 74, -1371, -1340, -1326, -1384,
+ -1382, -1137, -1141, 59, -769, -792, 5, -792,
+ -1415, -1408, -1402, -1395, -1393, -1392, 5, 96,
+ 96, 5, 17, -1399, -235, -792, -1383, -235,
+ 5, -1381, -1404, 96, 59, -1407, 5, 96,
+ -1412, -1407, 83, -1406, -1391, -1374, 67, -1417,
+ 92, 92, -1505, -1473, -1431, -1429, -1428, -1426,
+ 38, -1414, 38, 42, 26, -1430, 94, -1460,
+ -1450, -1441, -1438, -1437, 49, 49, -1437, 49,
+ 54, -1445, 59, 61, -1425, -1216, -824, 18,
+ -1447, -721, -1452, 1, -1454, -1444, -1457, -1259,
+ 92, -1259, -82, -339, -1465, -1462, -195, 55,
+ -1086, -1467, -1459, -1470, 55, -1453, -1472, -1413,
+ 66, -1478, -1476, 23, -235, -1287, -1493, -1488,
+ -1486, -1485, -1348, -1014, 17, 92, 94, 5,
+ -1490, 94, -1492, 92, 92, -1356, -1500, -1497,
+ 42, -1499, 5, 5, 49, 17, -1526, 17,
+ -1501, -1527, -1520, -1513, -1511, -1249, -1484, 59,
+ -1510, 75, -1517, 2, 4, -1519, 2, 2,
+ -1525, -1522, -1191, 59, 94, -1190, -1524, -1512,
+ -1331, -1530, -1533, 4, 94, -1516,
+};
+
+static long _vq_p_res0_0e[] = {
+ 188, 136, 172, 240, 40, 28, 40, 40,
+ 40, 40, 40, 40, 40, 40, 28, 76,
+ 76, 192, 248, 156, 156, 340, 252, 4,
+ 0, 12, 12, 0, 28, 244, 28, 240,
+ 4, 128, 128, 240, 320, 4, 128, 240,
+ 128, 128, 40, 40, 40, 240, 240, 240,
+ 252, 248, 360, 248, 248, 356, 40, 132,
+ 64, 132, 132, 132, 172, 64, 132, 132,
+ 360, 4, 4, 240, 40, 40, 332, 40,
+ 40, 40, 40, 172, 332, 4, 4, 4,
+ 172, 192, 268, 40, 40, 64, 360, 64,
+ 64, 40, 40, 40, 240, 240, 240, 360,
+ 356, 356, 332, 332, 240, 240, 248, 248,
+ 332, 320, 252, 320, 320, 320, 240, 240,
+ 332, 320, 320, 240, 332, 332, 40, 252,
+ 240, 40, 40, 192, 256, 240, 192, 20,
+ 256, 136, 136, 136, 136, 136, 20, 268,
+ 320, 136, 128, 128, 128, 128, 140, 320,
+ 320, 148, 320, 320, 136, 148, 136, 240,
+ 320, 320, 320, 56, 12, 212, 136, 136,
+ 136, 12, 320, 320, 56, 12, 200, 200,
+ 212, 136, 136, 136, 56, 280, 200, 56,
+ 148, 200, 200, 200, 148, 200, 56, 148,
+ 148, 212, 344, 344, 344, 20, 200, 200,
+ 56, 344, 344, 344, 212, 212, 220, 0,
+ 0, 0, 56, 12, 12, 128, 132, 212,
+ 132, 132, 4, 96, 96, 128, 332, 240,
+ 212, 212, 116, 300, 116, 56, 212, 212,
+ 56, 132, 132, 132, 132, 172, 172, 116,
+ 116, 176, 56, 68, 200, 344, 56, 212,
+ 24, 152, 132, 132, 132, 132, 132, 132,
+ 84, 216, 344, 344, 344, 84, 84, 200,
+ 200, 200, 84, 216, 216, 68, 200, 172,
+ 172, 200, 172, 0, 0, 0, 200, 172,
+ 0, 0, 172, 200, 200, 0, 332, 24,
+ 172, 216, 136, 136, 16, 152, 300, 300,
+ 208, 152, 152, 200, 200, 56, 56, 56,
+ 60, 136, 200, 136, 64, 172, 208, 60,
+ 60, 60, 60, 60, 32, 208, 172, 276,
+ 200, 200, 200, 200, 172, 216, 44, 208,
+ 208, 44, 60, 72, 172, 132, 132, 132,
+ 64, 172, 172, 172, 44, 56, 64, 44,
+ 200, 136, 44, 96, 96, 40, 256, 40,
+ 36, 96, 172, 28, 40, 40, 40, 40,
+ 76, 76, 28, 156, 156, 172, 64, 136,
+ 172, 136, 136, 136, 44, 44, 44, 172,
+ 0, 56, 200, 136, 96, 96, 136, 136,
+ 136, 96, 276, 4, 0, 256, 256, 256,
+ 276, 256, 172, 172, 172, 0, 28, 28,
+ 28, 0, 80, 256, 256, 96, 256, 96,
+ 276, 60, 60, 60, 60, 60, 60, 44,
+ 244, 244, 96, 72, 96, 44, 32, 72,
+ 64, 64, 64, 172, 172, 172, 96, 44,
+ 64, 64, 4, 348, 148, 348, 12, 320,
+ 320, 320, 128, 128, 128, 128, 320, 320,
+ 140, 320, 252, 140, 140, 140, 140, 44,
+ 188, 348, 188, 188, 348, 56, 232, 188,
+ 188, 64, 56, 12, 12, 120, 140, 120,
+ 120, 140, 140, 348, 56, 120, 120, 188,
+ 188, 188, 12, 232, 148, 140, 140, 140,
+ 148, 148, 188, 188, 148, 204, 12, 188,
+ 140, 148, 148, 140, 140, 56, 172, 148,
+ 148, 172, 204, 344, 172, 136, 148, 188,
+ 136, 136, 56, 148, 320, 320, 320, 320,
+ 280, 188, 188, 160, 148, 148, 160, 188,
+ 56, 320, 252, 252, 252, 172, 148, 148,
+ 148, 148, 204, 184, 184, 184, 184, 188,
+ 160, 352, 188, 188, 300, 160, 160, 232,
+ 56, 352, 112, 12, 140, 172, 112, 112,
+ 112, 112, 52, 232, 232, 172, 120, 120,
+ 204, 36, 36, 36, 56, 156, 232, 184,
+ 256, 72, 184, 52, 336, 136, 136, 40,
+ 184, 184, 184, 256, 40, 36, 36, 52,
+ 52, 52, 52, 72, 16, 16, 40, 40,
+ 36, 336, 40, 112, 112, 112, 112, 112,
+ 256, 336, 52, 52, 52, 44, 100, 336,
+ 160, 36, 36, 52, 52, 4, 16, 232,
+ 232, 232, 4, 112, 112, 112, 112, 112,
+ 112, 76, 76, 44, 76, 44, 40, 100,
+ 40, 40, 136, 136, 136, 136, 40, 4,
+ 12, 44, 44, 148, 152, 36, 36, 36,
+ 36, 36, 232, 300, 300, 152, 152, 300,
+ 300, 152, 300, 200, 200, 152, 152, 200,
+ 344, 152, 152, 152, 152, 152, 44, 208,
+ 204, 204, 176, 176, 176, 172, 100, 44,
+ 184, 184, 176, 204, 184, 184, 40, 40,
+ 200, 336, 156, 136, 136, 136, 136, 184,
+ 184, 200, 148, 148, 156, 0, 0, 204,
+ 116, 12, 12, 116, 352, 0, 0, 184,
+ 36, 36, 116, 184, 184, 184, 184, 16,
+ 208, 208, 116, 136, 184, 136, 136, 136,
+ 116, 336, 184, 184, 160, 184, 116, 72,
+ 156, 184, 184, 184, 52, 156, 52, 116,
+ 344, 120, 36, 0, 0, 116, 152, 120,
+ 300, 100, 300, 100, 100, 100, 100, 176,
+ 152, 152, 116, 120, 120, 120, 116, 36,
+ 152, 16, 160, 100, 120, 316, 120, 100,
+ 100, 100, 316, 120, 120, 160, 100, 100,
+ 316, 316, 16, 100, 316, 316, 316, 316,
+ 68, 52, 140, 140, 140, 312, 312, 312,
+ 316, 316, 324, 316, 316, 316, 52, 348,
+ 140, 52, 140, 52, 324, 4, 128, 128,
+ 128, 128, 128, 48, 212, 132, 132, 212,
+ 168, 132, 132, 160, 4, 212, 0, 52,
+ 4, 128, 128, 128, 128, 116, 316, 316,
+ 116, 104, 312, 312, 316, 116, 328, 344,
+ 104, 104, 316, 316, 316, 316, 72, 56,
+ 168, 168, 212, 56, 48, 40, 128, 48,
+ 128, 224, 128, 128, 48, 48, 224, 48,
+ 48, 48, 160, 116, 40, 4, 128, 128,
+ 40, 40, 116, 160, 4, 4, 56, 128,
+ 160, 4, 0, 0, 4, 224, 260, 40,
+ 76, 40, 40, 56, 156, 156, 156, 156,
+ 248, 76, 76, 56, 40, 224, 224, 224,
+ 224, 224, 76, 0, 228, 28, 228, 228,
+ 56, 252, 60, 224, 224, 228, 128, 128,
+ 224, 128, 128, 128, 128, 128, 128, 244,
+ 328, 328, 244, 140, 140, 140, 84, 100,
+ 0, 116, 140, 140, 160, 328, 48, 48,
+ 328, 228, 48, 48, 312, 312, 312, 228,
+ 328, 328, 312, 312, 312, 160, 116, 312,
+ 312, 312, 116, 316, 316, 140, 140, 140,
+ 56, 328, 28, 8, 0, 8, 8, 224,
+ 0, 228, 56, 260, 120, 120, 36, 120,
+ 108, 108, 36, 36, 20, 180, 120, 120,
+ 304, 120, 0, 120, 244, 304, 304, 304,
+ 304, 304, 52, 52, 120, 60, 80, 308,
+ 308, 308, 176, 36, 304, 304, 304, 36,
+ 52, 52, 0, 112, 112, 120, 120, 120,
+ 36, 140, 176, 312, 108, 108, 108, 312,
+ 92, 92, 308, 304, 304, 308, 324, 140,
+ 140, 140, 92, 348, 324, 324, 300, 324,
+ 152, 152, 112, 304, 304, 304, 304, 112,
+ 304, 304, 152, 176, 112, 92, 92, 260,
+ 304, 304, 304, 92, 76, 92, 36, 28,
+ 112, 112, 112, 152, 156, 208, 92, 156,
+ 92, 52, 92, 76, 100, 376, 92, 308,
+ 152, 0, 252, 140, 152, 24, 164, 144,
+ 328, 304, 336, 304, 304, 100, 20, 88,
+ 144, 228, 144, 144, 144, 224, 336, 336,
+ 88, 144, 144, 336, 160, 160, 160, 160,
+ 88, 88, 336, 108, 108, 308, 108, 108,
+ 144, 144, 164, 108, 108, 164, 108, 304,
+ 304, 304, 304, 308, 308, 308, 88, 88,
+ 308, 164, 228, 144, 144, 164, 164, 152,
+ 88, 8, 8, 376, 304, 152, 152, 304,
+ 304, 304, 304, 52, 308, 376, 180, 144,
+ 304, 304, 0, 144, 144, 0, 0, 0,
+ 164, 164, 8, 164, 164, 164, 236, 8,
+ 44, 48, 44, 48, 96, 96, 48, 44,
+ 0, 0, 44, 44, 0, 4, 224, 48,
+ 48, 88, 216, 96, 96, 96, 96, 96,
+ 196, 96, 48, 124, 144, 164, 124, 164,
+ 124, 164, 96, 164, 48, 48, 216, 164,
+ 88, 224, 48, 88, 8, 48, 48, 48,
+ 8, 88, 228, 328, 104, 164, 104, 104,
+ 104, 104, 264, 8, 88, 164, 164, 164,
+ 328, 328, 96, 8, 344, 104, 104, 88,
+ 164, 88, 300, 116, 52, 84, 84, 84,
+ 84, 116, 116, 304, 304, 304, 304, 304,
+ 304, 52, 116, 116, 116, 300, 52, 132,
+ 52, 56, 236, 116, 116, 116, 116, 56,
+ 144, 144, 144, 160, 68, 208, 44, 44,
+ 20, 144, 144, 144, 208, 160, 208, 336,
+ 116, 116, 372, 84, 84, 84, 116, 32,
+ 116, 340, 116, 116, 116, 0, 0, 340,
+ 160, 60, 340, 100, 244, 144, 124, 372,
+ 372, 124, 144, 144, 332, 340, 44, 192,
+ 372, 192, 192, 192, 20, 44, 96, 96,
+ 384, 96, 96, 196, 96, 96, 56, 44,
+ 44, 44, 56, 124, 124, 124, 124, 384,
+ 20, 20, 56, 368, 384, 56, 244, 144,
+ 124, 124, 124, 124, 52, 52, 236, 16,
+ 384, 124, 84, 84, 84, 84, 84, 84,
+ 124, 68, 124, 124, 124, 36, 36, 236,
+ 236, 36, 372, 372, 124, 124, 68, 20,
+ 196, 196, 84, 84, 376, 84, 216, 84,
+ 84, 372, 96, 104, 300, 100, 100, 100,
+ 100, 208, 300, 300, 300, 88, 152, 168,
+ 196, 88, 88, 88, 88, 168, 104, 104,
+ 60, 96, 36, 60, 244, 168, 104, 176,
+ 92, 92, 0, 0, 104, 92, 4, 4,
+ 88, 168, 88, 88, 88, 88, 104, 104,
+ 84, 104, 92, 96, 96, 84, 132, 92,
+ 220, 84, 84, 84, 92, 56, 92, 88,
+ 88, 88, 88, 300, 376, 92, 92, 92,
+ 376, 196, 196, 196, 384, 88, 88, 168,
+ 88, 88, 88, 196, 96, 92, 176, 84,
+ 84, 108, 100, 108, 100, 100, 92, 108,
+ 36, 100, 100, 100, 236, 104, 104, 168,
+ 0, 0, 120, 120, 236, 196, 180, 236,
+ 0, 0, 120, 120, 176, 180,
+};
+
+static long _vq_q_res0_0e[] = {
+ 384, 8, 232, 32, 148, 288, 240, 4,
+ 256, 156, 248, 76, 28, 252, 252, 28,
+ 252, 296, 252, 76, 252, 296, 256, 28,
+ 4, 252, 28, 12, 252, 268, 252, 28,
+ 240, 240, 252, 252, 240, 136, 4, 360,
+ 240, 356, 240, 252, 248, 248, 252, 356,
+ 356, 356, 284, 356, 360, 360, 248, 4,
+ 284, 288, 172, 64, 64, 288, 360, 284,
+ 284, 360, 284, 288, 4, 240, 268, 4,
+ 64, 172, 288, 288, 244, 172, 64, 288,
+ 64, 368, 368, 64, 284, 284, 284, 288,
+ 360, 240, 288, 360, 356, 360, 288, 288,
+ 360, 288, 368, 268, 360, 248, 360, 284,
+ 192, 136, 356, 240, 252, 256, 252, 256,
+ 296, 240, 356, 356, 192, 268, 172, 256,
+ 252, 240, 256, 20, 288, 256, 296, 296,
+ 288, 256, 280, 172, 240, 288, 268, 296,
+ 356, 24, 240, 320, 140, 212, 212, 212,
+ 280, 212, 136, 148, 200, 200, 200, 288,
+ 136, 212, 12, 296, 240, 240, 12, 212,
+ 240, 212, 136, 288, 268, 212, 212, 288,
+ 288, 148, 200, 280, 20, 288, 280, 192,
+ 200, 280, 12, 24, 344, 212, 332, 212,
+ 380, 380, 200, 212, 380, 368, 212, 380,
+ 244, 212, 24, 220, 220, 24, 24, 12,
+ 212, 24, 340, 212, 24, 220, 360, 288,
+ 4, 212, 212, 296, 268, 356, 192, 360,
+ 240, 356, 192, 376, 332, 20, 356, 360,
+ 192, 220, 212, 288, 200, 200, 212, 20,
+ 56, 376, 332, 20, 212, 212, 68, 220,
+ 256, 60, 32, 172, 200, 216, 220, 24,
+ 68, 220, 200, 216, 24, 56, 192, 216,
+ 220, 24, 332, 220, 24, 268, 24, 200,
+ 216, 216, 24, 152, 16, 136, 216, 24,
+ 172, 32, 32, 24, 32, 24, 244, 32,
+ 216, 32, 200, 32, 32, 200, 152, 208,
+ 216, 208, 16, 208, 216, 268, 244, 64,
+ 64, 276, 280, 200, 268, 268, 72, 216,
+ 288, 208, 32, 276, 276, 32, 64, 288,
+ 208, 216, 32, 276, 56, 276, 64, 216,
+ 32, 172, 72, 32, 200, 172, 64, 216,
+ 216, 64, 288, 216, 56, 332, 216, 268,
+ 216, 200, 172, 268, 172, 172, 80, 28,
+ 180, 44, 20, 256, 64, 156, 76, 80,
+ 28, 80, 80, 76, 80, 56, 80, 32,
+ 276, 172, 28, 256, 20, 56, 172, 256,
+ 20, 268, 276, 200, 64, 20, 256, 276,
+ 288, 4, 280, 20, 20, 288, 276, 280,
+ 280, 276, 288, 80, 28, 4, 32, 256,
+ 80, 96, 32, 80, 32, 24, 80, 4,
+ 288, 64, 276, 72, 244, 80, 32, 284,
+ 80, 32, 284, 80, 44, 4, 276, 276,
+ 80, 32, 276, 288, 64, 80, 132, 20,
+ 80, 32, 172, 32, 52, 364, 380, 148,
+ 188, 252, 292, 320, 348, 140, 140, 348,
+ 348, 292, 292, 12, 232, 292, 188, 296,
+ 348, 292, 348, 252, 252, 244, 252, 12,
+ 232, 244, 80, 232, 252, 204, 232, 348,
+ 140, 348, 188, 352, 64, 232, 352, 352,
+ 12, 232, 232, 352, 204, 348, 148, 12,
+ 188, 12, 12, 348, 188, 352, 204, 352,
+ 204, 348, 212, 148, 380, 32, 56, 344,
+ 204, 64, 380, 204, 244, 184, 344, 252,
+ 188, 148, 340, 280, 148, 188, 280, 364,
+ 364, 280, 364, 340, 188, 364, 56, 280,
+ 80, 252, 364, 256, 280, 56, 188, 364,
+ 204, 352, 352, 232, 352, 280, 188, 352,
+ 336, 364, 232, 252, 152, 172, 56, 352,
+ 336, 252, 352, 252, 232, 80, 156, 252,
+ 52, 232, 232, 252, 292, 56, 352, 232,
+ 352, 204, 232, 352, 336, 344, 252, 232,
+ 80, 256, 72, 184, 80, 256, 184, 336,
+ 32, 256, 276, 276, 56, 52, 72, 16,
+ 72, 80, 28, 80, 28, 72, 172, 160,
+ 176, 340, 64, 232, 52, 28, 256, 80,
+ 80, 248, 76, 28, 80, 336, 176, 340,
+ 336, 52, 232, 232, 16, 336, 28, 16,
+ 28, 256, 160, 252, 156, 80, 76, 256,
+ 28, 28, 256, 340, 256, 336, 336, 152,
+ 248, 64, 12, 280, 252, 256, 172, 172,
+ 28, 64, 4, 280, 12, 176, 204, 232,
+ 184, 16, 16, 176, 344, 200, 204, 152,
+ 208, 208, 204, 204, 208, 204, 344, 204,
+ 204, 200, 184, 176, 204, 208, 172, 16,
+ 208, 16, 204, 208, 16, 336, 300, 56,
+ 204, 208, 204, 208, 200, 204, 336, 80,
+ 204, 76, 76, 12, 148, 184, 200, 200,
+ 204, 204, 200, 204, 336, 12, 16, 232,
+ 76, 232, 16, 336, 280, 16, 136, 352,
+ 72, 184, 156, 16, 208, 16, 72, 72,
+ 16, 72, 160, 200, 72, 32, 184, 276,
+ 340, 340, 276, 280, 76, 276, 80, 32,
+ 248, 72, 276, 200, 76, 52, 76, 80,
+ 260, 264, 312, 16, 152, 76, 168, 16,
+ 204, 152, 152, 120, 152, 176, 204, 204,
+ 176, 204, 52, 176, 204, 152, 156, 176,
+ 176, 68, 68, 312, 140, 168, 204, 120,
+ 316, 324, 324, 316, 324, 16, 316, 380,
+ 204, 380, 72, 168, 324, 8, 168, 140,
+ 72, 72, 168, 8, 324, 348, 316, 324,
+ 324, 328, 328, 324, 140, 348, 68, 380,
+ 348, 16, 324, 160, 348, 140, 4, 212,
+ 360, 48, 264, 264, 220, 212, 264, 264,
+ 264, 24, 4, 80, 284, 24, 4, 160,
+ 24, 212, 328, 140, 316, 52, 264, 140,
+ 160, 316, 316, 328, 328, 68, 264, 380,
+ 316, 380, 140, 264, 168, 212, 80, 80,
+ 212, 380, 264, 72, 232, 324, 292, 4,
+ 360, 228, 48, 224, 224, 248, 248, 248,
+ 360, 284, 56, 56, 28, 284, 224, 4,
+ 4, 224, 160, 32, 224, 248, 68, 4,
+ 76, 28, 4, 224, 224, 28, 292, 224,
+ 28, 76, 156, 72, 248, 76, 248, 260,
+ 260, 248, 260, 68, 28, 248, 228, 76,
+ 28, 260, 28, 32, 260, 260, 248, 260,
+ 332, 292, 244, 228, 292, 292, 28, 316,
+ 228, 48, 348, 140, 328, 224, 292, 32,
+ 224, 292, 72, 328, 224, 292, 68, 376,
+ 84, 332, 292, 328, 20, 348, 328, 224,
+ 224, 292, 328, 228, 328, 228, 272, 272,
+ 228, 272, 292, 328, 348, 56, 56, 324,
+ 272, 328, 160, 328, 8, 8, 324, 328,
+ 332, 8, 260, 28, 8, 228, 292, 228,
+ 20, 260, 68, 292, 76, 324, 52, 352,
+ 120, 180, 120, 180, 32, 16, 16, 180,
+ 292, 232, 304, 16, 80, 308, 120, 52,
+ 180, 16, 16, 180, 52, 64, 368, 120,
+ 52, 180, 68, 68, 52, 112, 232, 176,
+ 232, 16, 140, 232, 292, 140, 232, 292,
+ 16, 292, 16, 292, 312, 324, 272, 324,
+ 68, 176, 324, 308, 292, 292, 352, 8,
+ 324, 348, 36, 292, 348, 292, 176, 8,
+ 176, 176, 252, 308, 16, 52, 156, 76,
+ 112, 260, 208, 208, 260, 208, 176, 292,
+ 76, 28, 260, 152, 28, 300, 176, 292,
+ 156, 76, 260, 16, 76, 268, 268, 52,
+ 208, 76, 376, 28, 16, 20, 152, 260,
+ 376, 140, 292, 28, 208, 268, 32, 152,
+ 192, 264, 236, 144, 260, 236, 24, 24,
+ 160, 260, 336, 224, 228, 228, 224, 228,
+ 20, 336, 260, 260, 224, 336, 76, 260,
+ 268, 208, 224, 376, 180, 260, 272, 308,
+ 164, 236, 8, 164, 236, 236, 8, 144,
+ 8, 308, 236, 236, 8, 144, 152, 268,
+ 272, 272, 260, 228, 164, 8, 228, 24,
+ 92, 228, 272, 20, 144, 20, 376, 308,
+ 52, 236, 180, 236, 180, 68, 236, 164,
+ 144, 160, 268, 160, 8, 236, 8, 152,
+ 8, 20, 20, 8, 236, 376, 376, 236,
+ 124, 264, 336, 224, 48, 44, 4, 48,
+ 16, 20, 4, 224, 24, 224, 20, 336,
+ 224, 300, 268, 216, 20, 132, 196, 264,
+ 264, 220, 264, 48, 164, 272, 20, 224,
+ 164, 8, 24, 228, 272, 164, 220, 224,
+ 220, 228, 8, 216, 224, 228, 8, 272,
+ 228, 96, 272, 228, 108, 196, 164, 8,
+ 264, 272, 272, 264, 268, 8, 272, 264,
+ 272, 8, 132, 264, 216, 196, 264, 220,
+ 272, 300, 344, 196, 296, 68, 116, 144,
+ 124, 144, 156, 144, 236, 116, 52, 160,
+ 68, 68, 52, 160, 68, 24, 68, 16,
+ 236, 72, 68, 160, 68, 144, 260, 68,
+ 236, 160, 68, 68, 268, 68, 296, 336,
+ 268, 160, 336, 340, 72, 336, 16, 340,
+ 340, 144, 192, 372, 116, 20, 160, 268,
+ 372, 296, 160, 340, 192, 16, 20, 192,
+ 340, 244, 20, 180, 72, 340, 20, 124,
+ 144, 144, 160, 20, 244, 296, 164, 296,
+ 192, 20, 368, 384, 368, 284, 296, 44,
+ 368, 196, 384, 384, 20, 368, 72, 196,
+ 296, 124, 68, 20, 20, 384, 296, 296,
+ 384, 368, 332, 296, 368, 244, 268, 384,
+ 20, 144, 164, 236, 16, 72, 20, 68,
+ 368, 196, 372, 236, 68, 124, 20, 384,
+ 384, 20, 68, 236, 68, 68, 16, 68,
+ 20, 52, 124, 384, 236, 20, 20, 384,
+ 376, 20, 332, 68, 384, 56, 268, 372,
+ 368, 368, 180, 368, 220, 376, 104, 300,
+ 152, 268, 152, 168, 104, 376, 376, 220,
+ 8, 96, 104, 168, 196, 196, 168, 196,
+ 216, 168, 236, 244, 268, 196, 168, 72,
+ 176, 208, 168, 4, 168, 268, 168, 264,
+ 368, 8, 268, 96, 96, 220, 344, 220,
+ 92, 220, 368, 132, 220, 72, 220, 68,
+ 264, 368, 68, 92, 68, 24, 96, 196,
+ 376, 92, 20, 336, 68, 368, 376, 20,
+ 368, 376, 384, 368, 368, 368, 96, 196,
+ 168, 196, 20, 20, 196, 68, 180, 68,
+ 92, 180, 376, 8, 108, 104, 376, 236,
+ 68, 300, 104, 8, 16, 168, 8, 8,
+ 196, 8, 8, 236, 376, 376, 236, 68,
+ 152, 16, 180, 16, 376, 236,
+};
+
+static encode_aux _vq_aux_res0_0e = {
+ _vq_ptr0_res0_0e,
+ _vq_ptr1_res0_0e,
+ _vq_p_res0_0e,
+ _vq_q_res0_0e,
+ 1534, 1534
+};
+
+static static_codebook _vq_book_res0_0e = {
+ 4, 97, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4,
+ _vq_quantlist_res0_0e,
+ _vq_lengthlist_res0_0e,
+ &_vq_aux_res0_0e,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0_0f.vqh b/include/vorbis/book/res0_0f.vqh
new file mode 100644
index 00000000..91764357
--- /dev/null
+++ b/include/vorbis/book/res0_0f.vqh
@@ -0,0 +1,368 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/vqbuild
+
+ ********************************************************************/
+
+#ifndef _V_res0_0f_VQH_
+#define _V_res0_0f_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_0f[] = {
+ 0, 0, 0, 0,
+ 0, 2, 0, 0,
+ 0, 4, 0, 0,
+ 0, 0, -3, 0,
+ -2, 0, 0, 0,
+ 0, 0, 0, -2,
+ 0, -2, 0, 0,
+ 3, 0, 0, 0,
+ 1, 0, 1, 0,
+ 0, 0, 3, 0,
+ 0, 0, 0, 2,
+ 2, 2, 0, 0,
+ -3, 0, -1, 0,
+ 3, -3, 0, 0,
+ 0, 0, -2, 2,
+ 0, 0, -2, -2,
+ 2, 0, -3, 0,
+ 0, 0, -5, 0,
+ 0, -2, 2, 0,
+ 0, 0, 3, -2,
+ 0, 2, 0, 2,
+ -2, -3, 0, 0,
+ 0, 0, 0, 5,
+ 0, 0, 0, -4,
+ 0, 0, 3, 2,
+ -3, 0, 2, 0,
+ 0, 2, 3, 0,
+ 0, -3, -1, 0,
+ 0, 0, 0, -6,
+ 3, 3, 0, 0,
+ 0, 0, 6, 0,
+ -2, 0, 0, 3,
+ 0, 3, 0, -2,
+ 6, 0, 0, 0,
+ 0, -6, 0, 0,
+ -2, 2, 0, 0,
+ -3, 0, 0, -3,
+ 0, -2, 0, -3,
+ 2, 0, 0, 3,
+ 0, -3, 0, 2,
+ 0, -3, 0, -2,
+ 0, -2, -3, 0,
+ 2, 0, 0, 2,
+ -6, 0, 0, 0,
+ 3, 0, 3, 0,
+ 0, 2, 0, -4,
+ -4, 2, 0, 0,
+ -4, 0, 0, 2,
+ 0, 2, 2, -1,
+ -2, 0, -1, -2,
+ -2, 4, 0, 0,
+ -1, -2, 0, 2,
+ 0, -4, 2, 0,
+ 0, 2, 2, 2,
+ 2, -2, 2, 0,
+ -2, -2, 0, -2,
+ -2, 2, 0, -2,
+ -2, 2, 2, 0,
+ -2, -2, 2, 0,
+ -2, 0, 2, -2,
+};
+
+static long _vq_lengthlist_res0_0f[] = {
+ 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+};
+
+static long _vq_ptr0_res0_0f[] = {
+ -1, -2, -3, -4, -5, -6, -7, 2,
+ 1, -10, -11, 45, 32, -14, 28, 15,
+ -17, -18, -19, -20, 1, -22, 29, 2,
+ 2, 3, -27, 0, 7, 29, -31, 33,
+ 16, -34, -35, 2, 3, -38, 0, 1,
+ -41, -42, 0, -36, 21, 16, -47, -48,
+ 15, -44, -51, 33, -53, -54, 48, -56,
+ -57, 30, -59, 19, 26, -62, -63, 19,
+ 8, -66, -67, 8, -69, 44, -71, -72,
+ -73, 45, -75, -76, -22, 41, 32, -23,
+ 27, -80, -83, -84, -85, 1, -87, -88,
+ 2, -90, 48, 11, 48, -81, -95, 45,
+ -97, -98, -99, 29, 7, -102, 11, 4,
+ -105, 33, -103, 29, -109, -110, -90, 21,
+ 8, -91, 12, -114, -91, -115, 44, -120,
+ -121, -122, -123, -14, -117, 19, -127, 45,
+ -129, 5, 4, 32, -133, -134, -135, 48,
+ 19, -138, 5, -130, -141, 1, 39, 33,
+ -145, -100, 34, 27, -149, -150, -151, -152,
+ -36, -147, 14, 14, 2, -158, -159, 11,
+ -161, -162, -163, 14, 38, 20, 38, -168,
+ 11, -170, 16, 7, -173, -174, -175, -176,
+ -177, -178, 29, 17, -181, -182, 2, 20,
+ -185, 11, 3, -188, 20, 42, -186, 29,
+ -193, 33, -195, 33, -100, -190, 42, -200,
+ -201, -202, 24, -183, -197, 22, -207, -208,
+ 38, 24, -211, 22, -204, -214, -215, 20,
+ 42, -218, -219, 8, -212, -222, -223, 8,
+ 35, 31, -227, -219, -225, -230, 24, 53,
+ 30, 24, -235, -236, -237, -238, -239, -240,
+ 13, -242, 13, 40, -245, -246, -247, 5,
+ 37, 7, 54, 6, -253, -254, -255, 5,
+ 37, -258, -259, 18, 37, 47, 34, 40,
+ -265, -266, -267, 15, -261, -270, -271, 15,
+ 5, -14, 50, 37, -277, -278, -80, -274,
+ 46, -282, 15, -271, -280, 40, -287, -288,
+ -289, -290, 13, -292, -293, -294, -80, -284,
+ 14, -298, 14, -300, 39, 51, 6, 14,
+ 39, -306, -307, -308, -309, -80, 14, 3,
+ 13, -314, -315, 13, 17, 39, -311, -320,
+ -321, -322, -80, 14, -325, 16, -327, -328,
+ 13, 12, -331, -332, 13, -251, -329, -334,
+ -31, 12, -339, -332, -36, -340, 4, -344,
+ -345, -346, -347, 13, -349, 54, 8, 31,
+ -353, -354, -355, -356, -357, 54, -359, -57,
+ -351, 18, 30, 54, 30, -366, -367, -166,
+ -360, 39, -371, -372, -373, -374, 18, -368,
+ -377, -378, 39, -380, -381, 51, -375, -211,
+ 51, 39, -387, -388, -389, -390, -391, -392,
+ 3, 49, -395, -396, -397, 49, 4, 4,
+ -401, -402, 12, 36, 47, -406, -407, -408,
+ 48, -410, 56, 57, 46, -414, -415, 50,
+ 32, 36, 45, -420, -421, -422, -14, -404,
+ -425, -426, -427, 49, 36, -129, -423, 21,
+ 23, -434, -435, 49, -437, -438, -439, 36,
+ 25, 43, 55, -444, -445, -446, 55, 40,
+ -449, 30, 25, 58, -453, -454, -455, 46,
+ 50, 25, -459, 57, -461, -462, -463, -464,
+ -351, -402, 47, -342, -466, -468, -471, 43,
+ -473, 47, 31, -476, 24, -57, 46, 25,
+ -481, 51, -483, -484, 21, 52, -487, -488,
+ -489, -490, -491, -492, -478,
+};
+
+static long _vq_ptr1_res0_0f[] = {
+ -386, -234, -148, -50, -16, -9, 11, -8,
+ 32, -13, -12, 15, 15, -15, 23, 23,
+ -33, -26, -24, -21, 2, -23, 11, 11,
+ -25, 16, -29, -28, 8, -30, -32, 7,
+ 7, -37, 32, -36, 17, -40, -39, 15,
+ -46, -43, 16, -45, 6, 17, 17, -32,
+ 7, 41, -70, -52, -61, -55, 19, -58,
+ 26, 9, -60, 9, 9, -65, -64, 44,
+ 44, -68, 26, 9, 26, 9, -119, -94,
+ -74, 11, -82, -79, -78, 6, 11, -78,
+ 6, -77, -92, -86, 2, 11, -89, 11,
+ 26, -91, 26, 26, -78, -49, -107, -96,
+ -104, -101, -100, 44, 44, -100, 44, 41,
+ -100, 44, 21, -108, -116, -113, -112, 41,
+ 26, -112, 41, -111, -118, -106, 26, -143,
+ -132, -131, -126, -125, -93, 23, -128, 19,
+ -125, 23, 51, 5, -140, -137, -136, 8,
+ 8, -136, 8, -124, -131, 5, 21, -144,
+ 23, -64, -142, -146, -172, -157, -156, -45,
+ -154, -139, 17, 41, 20, -167, -160, 20,
+ -166, -165, -164, 22, 22, 22, 42, -169,
+ 42, -171, 42, 42, -199, -191, 8, -187,
+ -180, -156, 20, 41, -184, -183, 53, 53,
+ -183, 53, 12, -166, -189, 53, 4, -192,
+ -194, 38, -196, 42, -198, -114, 44, -226,
+ -213, -206, -203, -205, -179, 53, -210, -209,
+ 10, 10, -209, 10, -155, -217, -216, 10,
+ 10, -221, -189, 53, -153, -219, -209, 10,
+ 20, 20, -232, -229, -224, -231, 26, 26,
+ -233, 44, -286, -264, -252, -244, 54, -241,
+ 37, -243, 6, 6, -249, 6, -248, 7,
+ 7, -250, -251, 8, -262, -257, -256, 19,
+ 19, -256, -260, 40, 40, 35, -263, 52,
+ -269, -179, 7, 16, -228, -276, -272, 41,
+ -273, -275, 20, 23, -283, -281, -243, -224,
+ 35, 40, 6, -285, -279, 41, -343, -319,
+ -305, -291, 42, -304, -302, -297, -296, -268,
+ 6, -299, 51, -301, 6, 6, -303, 42,
+ 22, -316, -313, 52, -312, -242, 35, -310,
+ 39, 39, 52, 34, -317, -77, -295, -330,
+ -326, -324, 41, 4, 6, 41, 6, -325,
+ 41, 4, -336, -333, 7, -28, -323, 51,
+ -338, 17, -171, -32, -337, -335, 10, -365,
+ -352, 44, -171, -348, -350, 42, 42, 10,
+ -364, -363, -358, 8, 24, 9, -362, -361,
+ -342, 9, 24, 52, 44, -370, 22, -369,
+ 22, 42, -385, -376, -209, 10, 51, 12,
+ -379, 22, 24, -383, -209, 10, 51, 24,
+ 21, 52, -452, -419, -405, -394, 17, -393,
+ 15, 15, -400, -399, -398, 36, 36, 5,
+ -398, -403, 43, 43, 51, -412, -409, 59,
+ 57, -411, 59, 59, -413, -417, -416, 56,
+ 56, -418, 56, -443, -436, -433, -424, -130,
+ -432, -429, -428, 23, 23, -428, -384, 43,
+ 59, 37, 59, 55, -442, -441, -440, 59,
+ 59, 25, 43, -448, 59, -447, 21, 21,
+ -450, 19, -451, 59, -486, -460, -457, -456,
+ 57, -458, 53, 26, -480, -470, 22, -467,
+ -209, -431, 21, -209, 43, -465, -475, -472,
+ -474, 25, 25, -477, 25, -479, 43, 9,
+ -482, 24, 9, -485, 58, 58, -220, -318,
+ -341, -382, -430, -469, -402,
+};
+
+static long _vq_p_res0_0f[] = {
+ 0, 8, 180, 12, 180, 4, 4, 8,
+ 4, 180, 180, 180, 128, 112, 112, 60,
+ 44, 44, 4, 4, 4, 116, 116, 8,
+ 8, 12, 0, 0, 28, 116, 132, 132,
+ 64, 128, 8, 8, 12, 4, 0, 4,
+ 12, 0, 0, 12, 84, 64, 60, 60,
+ 60, 84, 120, 132, 120, 192, 192, 120,
+ 120, 120, 76, 76, 104, 76, 76, 76,
+ 32, 32, 32, 32, 176, 176, 44, 4,
+ 180, 180, 116, 116, 116, 164, 128, 8,
+ 108, 108, 8, 4, 4, 4, 8, 8,
+ 8, 192, 192, 44, 192, 108, 28, 180,
+ 116, 116, 116, 116, 28, 44, 44, 16,
+ 132, 132, 16, 116, 32, 192, 192, 84,
+ 32, 44, 48, 48, 44, 48, 176, 20,
+ 180, 180, 112, 112, 16, 76, 180, 180,
+ 20, 20, 16, 128, 192, 192, 192, 192,
+ 76, 20, 20, 204, 4, 4, 156, 132,
+ 28, 28, 136, 108, 68, 12, 56, 56,
+ 12, 156, 56, 56, 8, 56, 44, 44,
+ 56, 56, 56, 56, 152, 80, 152, 44,
+ 44, 64, 64, 28, 116, 44, 44, 44,
+ 116, 116, 116, 68, 8, 8, 8, 80,
+ 44, 44, 12, 80, 80, 168, 48, 116,
+ 152, 132, 132, 132, 28, 12, 168, 168,
+ 152, 80, 96, 80, 12, 88, 152, 152,
+ 152, 96, 88, 88, 12, 80, 80, 80,
+ 168, 168, 32, 32, 56, 96, 32, 32,
+ 140, 124, 32, 32, 124, 96, 96, 212,
+ 120, 96, 112, 216, 216, 52, 52, 148,
+ 52, 52, 52, 160, 20, 20, 20, 20,
+ 148, 28, 216, 24, 72, 20, 20, 20,
+ 148, 72, 72, 72, 148, 188, 136, 160,
+ 64, 60, 60, 60, 188, 20, 60, 60,
+ 20, 112, 200, 148, 108, 108, 108, 200,
+ 184, 60, 60, 60, 184, 160, 164, 156,
+ 56, 52, 52, 56, 156, 108, 108, 184,
+ 56, 56, 56, 156, 156, 204, 24, 56,
+ 156, 108, 108, 108, 108, 108, 56, 12,
+ 52, 136, 136, 52, 68, 156, 56, 108,
+ 108, 108, 108, 56, 64, 64, 52, 52,
+ 52, 48, 32, 52, 52, 24, 48, 56,
+ 132, 48, 52, 52, 12, 12, 16, 216,
+ 52, 216, 216, 52, 216, 216, 32, 124,
+ 216, 72, 216, 216, 216, 216, 72, 120,
+ 124, 72, 120, 216, 120, 152, 152, 152,
+ 124, 156, 72, 72, 72, 72, 72, 124,
+ 156, 156, 156, 204, 204, 204, 124, 88,
+ 204, 156, 112, 192, 196, 12, 12, 12,
+ 12, 196, 196, 196, 196, 196, 16, 16,
+ 48, 48, 48, 144, 188, 192, 192, 192,
+ 192, 224, 224, 228, 184, 200, 200, 200,
+ 128, 144, 180, 144, 20, 144, 112, 188,
+ 144, 196, 196, 196, 144, 20, 188, 84,
+ 92, 220, 220, 196, 144, 144, 144, 144,
+ 100, 172, 220, 220, 220, 220, 220, 160,
+ 76, 120, 100, 232, 120, 200, 184, 184,
+ 200, 100, 228, 228, 100, 16, 124, 124,
+ 124, 48, 188, 16, 188, 188, 124, 172,
+ 188, 188, 124, 96, 96, 120, 184, 100,
+ 204, 204, 232, 84, 84, 208, 124, 48,
+ 124, 188, 48, 184, 184,
+};
+
+static long _vq_q_res0_0f[] = {
+ 16, 136, 88, 192, 64, 60, 44, 128,
+ 128, 92, 128, 60, 60, 60, 92, 92,
+ 60, 28, 12, 44, 8, 8, 44, 44,
+ 12, 64, 64, 32, 32, 28, 64, 28,
+ 28, 60, 128, 12, 68, 12, 4, 60,
+ 60, 12, 64, 64, 24, 68, 68, 64,
+ 28, 164, 128, 176, 176, 104, 76, 76,
+ 104, 36, 104, 36, 36, 36, 32, 176,
+ 176, 176, 104, 36, 104, 36, 20, 32,
+ 128, 44, 192, 8, 128, 24, 44, 128,
+ 24, 164, 128, 192, 8, 44, 192, 44,
+ 104, 44, 104, 104, 128, 84, 32, 44,
+ 132, 44, 28, 176, 176, 28, 176, 164,
+ 28, 176, 84, 44, 176, 44, 32, 164,
+ 104, 32, 164, 84, 176, 16, 104, 28,
+ 192, 128, 180, 76, 24, 92, 20, 76,
+ 76, 92, 204, 20, 128, 20, 76, 32,
+ 32, 76, 32, 84, 128, 20, 84, 28,
+ 92, 32, 84, 84, 176, 152, 80, 64,
+ 56, 204, 68, 164, 80, 64, 168, 80,
+ 168, 80, 152, 88, 88, 88, 168, 64,
+ 168, 28, 168, 168, 96, 28, 32, 168,
+ 44, 8, 80, 164, 44, 80, 212, 212,
+ 80, 212, 48, 152, 168, 212, 16, 28,
+ 168, 152, 28, 168, 168, 164, 176, 176,
+ 168, 152, 212, 88, 68, 212, 88, 96,
+ 40, 40, 96, 40, 56, 212, 168, 40,
+ 40, 96, 168, 212, 204, 212, 96, 40,
+ 80, 80, 176, 96, 140, 212, 104, 104,
+ 96, 176, 88, 60, 72, 28, 216, 160,
+ 148, 160, 24, 24, 32, 24, 148, 28,
+ 28, 32, 32, 32, 208, 72, 148, 76,
+ 76, 76, 148, 160, 160, 140, 160, 208,
+ 148, 164, 28, 64, 124, 24, 148, 164,
+ 148, 148, 80, 92, 164, 60, 160, 140,
+ 140, 160, 24, 160, 200, 164, 96, 28,
+ 164, 156, 168, 88, 168, 156, 56, 188,
+ 24, 156, 204, 204, 24, 24, 168, 168,
+ 88, 164, 136, 208, 156, 52, 140, 140,
+ 156, 156, 208, 136, 164, 164, 80, 28,
+ 52, 64, 164, 16, 24, 164, 24, 64,
+ 164, 16, 168, 24, 28, 28, 56, 204,
+ 52, 68, 168, 64, 48, 56, 40, 156,
+ 208, 176, 28, 216, 32, 168, 168, 40,
+ 176, 208, 72, 32, 96, 36, 96, 72,
+ 16, 36, 96, 208, 176, 204, 88, 156,
+ 88, 168, 208, 156, 96, 40, 204, 48,
+ 204, 88, 96, 88, 96, 40, 204, 96,
+ 84, 208, 88, 76, 224, 48, 68, 196,
+ 60, 60, 48, 20, 16, 144, 144, 20,
+ 16, 144, 172, 172, 204, 128, 224, 236,
+ 228, 228, 236, 236, 224, 144, 128, 224,
+ 224, 224, 224, 232, 172, 220, 144, 16,
+ 236, 20, 144, 92, 92, 144, 84, 172,
+ 236, 148, 236, 220, 220, 172, 100, 236,
+ 236, 100, 172, 232, 236, 160, 84, 84,
+ 236, 76, 236, 236, 68, 84, 100, 228,
+ 228, 228, 212, 104, 232, 100, 88, 16,
+ 96, 84, 84, 96, 172, 48, 96, 100,
+ 124, 100, 100, 36, 100, 100, 172, 36,
+ 232, 96, 36, 208, 232, 232, 24, 140,
+ 56, 124, 16, 188, 48,
+};
+
+static encode_aux _vq_aux_res0_0f = {
+ _vq_ptr0_res0_0f,
+ _vq_ptr1_res0_0f,
+ _vq_p_res0_0f,
+ _vq_q_res0_0f,
+ 493, 493
+};
+
+static static_codebook _vq_book_res0_0f = {
+ 4, 60, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4,
+ _vq_quantlist_res0_0f,
+ _vq_lengthlist_res0_0f,
+ &_vq_aux_res0_0f,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0_0g.vqh b/include/vorbis/book/res0_0g.vqh
new file mode 100644
index 00000000..3abd04e4
--- /dev/null
+++ b/include/vorbis/book/res0_0g.vqh
@@ -0,0 +1,926 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/vqbuild
+
+ ********************************************************************/
+
+#ifndef _V_res0_0g_VQH_
+#define _V_res0_0g_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_0g[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 0, -2, 0,
+ -2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2,
+ 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -1,
+ 0, 0, 0, 0, -1, 0, 0, 0,
+ 0, 0, 0, 0, 0, -1, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -2, 0, 0, 0, 0, 0,
+ 0, 0, 0, -2, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2, 0,
+ 0, -1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -3, 0, 0, 0,
+ 0, -3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -2, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -3,
+ 0, 0, 0, 1, 0, 0, 2, 0,
+ 0, 0, -2, 2, 0, 0, 0, 0,
+ 2, -2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -2, 0, 0, 1, 0,
+ 2, 0, 0, -2, 0, 0, 0, 0,
+ 0, 2, 2, 0, 0, 0, 0, 0,
+ -2, -2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 0,
+ -3, 0, 0, -1, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 1,
+ -2, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 0, 0, 0,
+ 0, 1, 0, 0, 1, 0, 0, 0,
+ 0, 0, 1, 1, -1, 0, 0, 0,
+ 0, 0, 0, 2, -2, 0, 0, 0,
+ 0, 0, 0, 0, -2, 0, 0, -2,
+ 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, -2, -2, 0, 0,
+ 0, 0, 0, 1, 0, -1, 0, 0,
+ 0, 0, 0, 2, 0, 0, -2, 0,
+ 0, 0, 0, 0, 2, -2, 0, 0,
+ 0, 0, 0, 0, -2, 2, 0, 0,
+ 2, 0, 0, 2, 0, 0, 0, 0,
+ 0, -2, -2, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 2, 0,
+ 0, 0, 1, -1, 0, 0, 0, 0,
+ 0, -1, 0, 0, -1, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, -2,
+ 0, 0, 0, 0, 4, 0, 0, 0,
+ 0, -1, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, -2, 0, 0, 2,
+ -2, 0, 0, 0, 0, 0, 0, -2,
+ 0, 0, 0, 0, 0, -2, -2, 0,
+ 0, 0, 0, 0, 2, 0, 0, -2,
+ 0, 0, 2, -2, 0, 0, 0, 0,
+ 0, 0, 0, 3, -4, 0, 0, 0,
+ 0, 0, 0, 4, 3, 0, 0, 0,
+};
+
+static long _vq_lengthlist_res0_0g[] = {
+ 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 9,10,10,
+};
+
+static long _vq_ptr0_res0_0g[] = {
+ -1, -2, -3, -4, -5, 22, 23, -8,
+ 21, 12, -11, -12, 43, 23, 21, 40,
+ 12, 18, 50, 57, 49, 32, -23, -24,
+ 39, -26, -27, 21, -29, 27, -31, -32,
+ 34, 40, 12, 47, 18, -38, 21, -40,
+ -41, 40, -43, 22, 27, 5, -47, 39,
+ -49, 44, 27, -52, -53, -54, 35, 21,
+ 44, 47, -59, -60, -61, -62, -63, -64,
+ 21, -66, -67, -68, -69, 34, 35, 35,
+ -73, 35, 7, 42, -77, -78, 34, 36,
+ 6, 36, 56, -84, -85, -86, -87, 34,
+ 35, 36, 34, 34, -93, 36, 40, -96,
+ -97, -98, -99, -100, -101, -102, 34, 35,
+ -105, -106, -107, -108, -109, 34, 35, 34,
+ -113, 35, 38, 39, 7, -118, 34, 48,
+ -121, 21, -123, -109, 26, -71, 25, 34,
+ 51, -130, -131, -132, -108, -1608, 46, -134,
+ 34, 45, 22, 43, -141, -142, -143, -73,
+ -135, 56, -147, -148, -149, 35, 17, -152,
+ 56, 56, -155, -156, -157, -158, -159, -160,
+ -109, 11, -163, 35, 35, -103, -161, 40,
+ 39, -170, -171, 34, -173, 38, 25, -176,
+ 35, 34, -179, -180, -181, -182, -183, -184,
+ -185, -186, -187, 5, 22, -190, 40, 22,
+ -193, -194, -195, -196, 34, 5, -199, -200,
+ 21, 21, -203, 43, -205, -206, -207, -208,
+ -209, 34, -211, 37, -213, 40, 24, -216,
+ 21, -218, 37, -220, -221, 37, -223, 57,
+ 43, -226, -227, -228, -229, 21, 5, 22,
+ -233, 35, 5, -236, -237, -238, -239, 5,
+ -214, -218, -240, 40, 22, -246, 37, 46,
+ 22, 40, 4, -252, -253, -254, -255, -256,
+ -257, -258, 34, 12, 3, -230, 24, -262,
+ -265, 40, -267, -268, 5, 37, -271, -272,
+ -229, 25, -273, 21, 12, 3, -279, -280,
+ -281, -27, -274, -284, -285, 39, 22, 54,
+ -289, 21, -291, -32, 15, 39, 39, 31,
+ -297, -298, -299, -300, -301, -302, -285, 28,
+ 40, -306, 39, 40, -303, 22, -311, 41,
+ 45, -314, 4, -223, -312, -318, 41, 49,
+ -321, -322, -323, -324, -325, -326, -327, 21,
+ -329, 22, -331, -332, 21, 43, 52, -327,
+ -334, 5, -339, -327, 1, 22, -224, 9,
+ -345, 43, 34, 26, -139, -343, -351, 40,
+ -353, 40, 14, 32, -357, -358, -359, -360,
+ -361, 21, -363, -364, 5, 45, -367, -368,
+ 34, 1, 12, -249, 29, -365, 1, -376,
+ -377, -378, -304, 9, -379, -224, -380, -382,
+ -385, -309, 52, 1, -372, 10, -389, -392,
+ -393, -394, 21, 30, 4, -390, -399, -400,
+ -401, -402, -403, -404, -405, -406, -407, 21,
+ -409, -186, -388, -397, 48, 1, -415, -416,
+ 6, 22, 43, -420, -421, -422, 21, -424,
+ 40, -91, -413, 6, -426, -430, -431, -432,
+ -433, 5, 6, 5, -437, 40, 5, 21,
+ -428, 22, -443, 21, -445, 40, -447, -448,
+ 48, -450, 49, -452, -453, 6, -440, -456,
+ 52, 48, -459, -196, -457, 21, -463, 6,
+ -333, -412, 22, -468, -469, -470, -471, -472,
+ -473, -474, -475, -476, -477, -478, -479, 17,
+ 7, 45, -483, 7, -485, -486, 42, 2,
+ -489, -490, 36, 36, -493, 38, 38, 45,
+ 26, -498, -499, -500, -501, -502, -503, -504,
+ -505, 34, -507, -508, 36, 42, -511, -80,
+ -487, -514, 6, -516, -517, 7, 8, 38,
+ 42, 47, -523, 42, -509, -434, -527, 36,
+ -529, -530, 36, 47, -533, 38, -525, 36,
+ 38, 42, -539, -540, -541, 24, 46, -534,
+ -545, -546, 36, -548, -549, -550, -551, -552,
+ 42, -505, -543, 12, -557, 36, 38, -560,
+ 12, -554, -542, -561, -565, -566, 36, 38,
+ 25, 23, -563, -572, 47, -574, 11, -576,
+ -577, -578, -579, -580, 17, -557, -570, 44,
+ -334, 36, 17, 44, -589, -590, -173, 10,
+ 47, 44, 47, -596, -597, -598, -599, -600,
+ -601, -602, -603, -109, 10, 10, -607, 36,
+ -607, 10, 42, -612, -613, -109, 6, 17,
+ -614, 36, -619, -620, -621, -622, -623, -624,
+ -625, -32, -616, 17, 26, -523, -626, 38,
+ -518, -630, -633, -636, -637, -638, -639, -640,
+ -641, -642, -643, 36, 9, -646, -647, -648,
+ 6, -650, -651, -652, -653, 17, -655, 7,
+ 9, 17, -634, -660, -661, 42, -658, 25,
+ -665, -666, 42, 26, -669, -670, -671, -672,
+ -673, -653, 9, 42, -656, -678, -679, -680,
+ -681, -655, 2, -614, -685, 51, -687, -688,
+ 11, -690, -691, -675, -683, -694, -695, -523,
+ -692, 10, -699, -700, -701, -702, -703, -704,
+ 36, 45, 6, 36, 36, 7, 10, -712,
+ -713, -714, -715, -716, -717, 36, -705, -720,
+ -514, -718, -516, -410, -721, -724, 38, -725,
+ 36, 33, 38, -732, -733, -734, -735, -516,
+ -723, 49, 1, 38, -741, 38, -128, 41,
+ -745, -746, 34, -748, -749, -750, -751, 38,
+ 46, -754, 42, -756, 42, -743, 46, 36,
+ 42, 29, -763, -764, 17, 52, 17, 38,
+ 42, 25, -771, 25, 38, -688, 48, 25,
+ 42, 11, -779, -780, -781, -782, 17, -311,
+ 42, 11, -787, -788, 27, -783, -791, -792,
+ -793, 6, -795, -796, 7, 45, 42, -800,
+ -801, -802, -803, -804, 17, -806, -807, 7,
+ 52, -810, -796, -808, -813, 29, -815, 51,
+ 48, -818, 17, -816, -821, -822, -823, -824,
+ 7, 38, 53, -824, -591, -828, -150, 52,
+ 24, 10, -831, -836, -837, -838, 36, 6,
+ -29, 48, -843, 46, -845, -846, 34, -848,
+ -849, 6, 36, -852, -850, -841, -855, 7,
+ 26, 52, 36, -518, 9, -860, -863, -864,
+ -865, -866, 41, 27, 11, 13, 23, 1,
+ -873, 18, 48, -876, -877, -878, -879, -262,
+ 8, -882, 12, 23, -885, -886, -887, -888,
+ -889, 23, 28, 15, -893, 24, -895, -587,
+ -880, 28, -899, -900, -259, -119, -882, 52,
+ 19, -906, 44, -908, 27, -910, 24, 18,
+ 13, -914, 44, 27, 4, -918, -919, 24,
+ 27, -922, -923, 24, -925, 18, 8, -928,
+ 44, 27, -931, -932, 44, -926, -736, -933,
+ -935, -938, -939, 28, 18, 19, 41, -944,
+ -945, -880, -457, 23, 44, 27, 19, -946,
+ -953, -954, -955, -956, -957, -958, -959, -960,
+ -961, -880, -808, -925, 19, 19, 18, 53,
+ -969, 12, 18, -972, -311, -434, -973, -976,
+ -977, 27, 41, -980, -981, 44, -983, 41,
+ -985, 23, 44, -974, -989, 41, 12, -992,
+ 23, -994, -995, -996, 8, -998, -999, -1000,
+ -1001, -1002, -1003, -1004, -1005, -889, -987, -1006,
+ -1009, 25, 10, -1012, -1013, -1014, 44, -1016,
+ -1017, 27, -1019, -1020, 46, -1022, 11, -1024,
+ -1025, 11, 2, -925, 9, 10, 23, 55,
+ -1033, -1034, -1035, -1036, -1037, -1038, -889, 9,
+ 13, 1, 9, -1044, -1045, -1046, -1047, -932,
+ -1042, 10, -880, -929, -1050, -1054, -1055, -1056,
+ -1057, -929, 9, 6, -1059, -1062, 12, 18,
+ 13, -1066, -1067, -882, -1060, -1068, -1071, -925,
+ -1069, 4, -1075, 13, -1077, -1078, 12, -1080,
+ 1, -1072, -1083, 1, -1041, -1081, -1085, -752,
+ -1086, -1090, 44, -259, -1088, -1094, -1095, 44,
+ -1097, -929, -1092, -1075, 8, -1026, 6, -1102,
+ -161, -1103, 55, -1108, 46, 55, -1111, -1112,
+ 28, -1114, -1115, -1095, -1105, -1118, -1119, -1120,
+ -1121, -1122, -434, 28, -1123, 23, -1124, 48,
+ -1129, 23, 15, -1132, 18, -934, -1126, -1134,
+ -1137, 23, -765, 23, -1138, 44, -1143, 48,
+ 29, 2, -1147, -1148, -883, 24, 44, 49,
+ 54, 27, -1149, -1156, -1157, 24, -1159, -1160,
+ -1161, -1162, -1163, -1164, -1165, -1166, -1167, 24,
+ -1169, 25, 9, -1172, -1173, -1174, -1175, -1176,
+ -1177, 9, -1179, 24, 45, -1182, -1183, 24,
+ -1185, 28, 1, -1188, 28, -1190, 45, 30,
+ -1193, -1186, 25, 8, -1197, 30, -1195, -1200,
+ 28, -1202, -1203, -933, -1133, 11, 10, -1208,
+ 9, -1177, 11, -1212, -1213, -926, 24, 24,
+ -904, -1215, -1217, -1197, 25, -1220, -1223, -1224,
+ -1225, -1226, -1227, -1228, -1229, -1183, -434, -1232,
+ -1233, 46, -813, -1230, -1235, -312, -1236, -1240,
+ -1188, -1238, -1243, -1244, -1245, -1246, -926, -1241,
+ 3, -904, -816, -1250, -1248, -1183, -1253, -1256,
+ -1257, 12, -1254, -1258, -1261, -1262, 1, -1204,
+ -1259, -1264, -1267, -1268, -1269, -1270, -137, -1265,
+ -1273, -880, 46, 45, -1277, -1278, 8, -1280,
+ 10, 12, -1283, 41, -1285, -1286, 24, -1288,
+ 45, 4, 26, 14, -1293, -1294, 9, -370,
+ -1281, -1298, 24, 46, -1301, -1302, 24, -1304,
+ 28, -1186, -1299, -1306, -1188, -1307, -1191, -1309,
+ -1313, -1314, 41, 31, -1317, -1318, 8, -942,
+ 26, -912, -1320, 26, -1325, 8, 10, -933,
+ -1263, -1323, -1329, -1332, 10, -1330, -1335, -1336,
+ -1337, -1338, -1339, -1340, -1341, -1342, -1170, 41,
+ 1, -370, 19, -1348, -1349, 26, -1083, 8,
+ -1353, -1354, -1355, -1356, 25, 46, 25, -1351,
+ -1361, -1362, 41, -1359, -1365, -1366, -1367, -1368,
+ -1369, -1323, -1363, -1372, -1233, -1370, 55, 55,
+ -1377, -1378, 26, -259, -1351, 2, -1381, 26,
+ 26, 19, -1387, -1388, 26, -1390, -259, 8,
+ -1262, -1391, -1393, -1396, -259, -1394, -1397, 11,
+ -1401, -1402, -1403, 11, -369, -1404, -1083, -1408,
+ -1409, -1410, -1411, -1412, -1413, -1414, -1415, 8,
+ 19, -259, -1406, 12, 53, -1422, -1042, -1381,
+ -1425, -1170, 29, 53, -1429, -1430, 26, 53,
+ -1343, -1426, 12, 55, -1437, -1438, -1439, -880,
+ -1433, 11, 2, 25, 11, -1446, -1447, -1448,
+ -1449, -1450, -1058, -1444, 25, 10, 2, -1456,
+ -710, -1451, 2, 0, -1461, -1462, -1463, -1464,
+ -1465, -1466, -1467, -1468, 8, 19, -609, -1457,
+ -1473, -1042, -1471, 9, 10, 53, -1479, -1480,
+ -1343, 11, 53, 13, 41, 9, -369, -1488,
+ -1489, -1490, -1414, 49, 11, -1492, -1049, -1493,
+ 10, -1495, 10, -1497, -1501, -1502, 41, 26,
+ -1505, -1506, -1507, -1508, -1502, 1, 26, -1512,
+ 9, -604, -1326, -1477, -1514, -1518, -1519, -1520,
+ -1521, -1522, -1523, -1524, -1525, -1526, -1512, 10,
+ -1527, -1530, 25, -1528, -1533, 14, 25, -1536,
+ 1, -1538, -1539, -1540, 25, 11, 29, 11,
+ 1, -1546, 2, -1543, -1549, -1530, -1547, -1344,
+ -1550, -1554, -1064, -1326, 30, -1558, -1348, -1491,
+ -1555, -1562, -1563, -1564, -496, 1, 10, -1568,
+ -1569, -1570, -1571, -1572, 10, 1, -1022, -1566,
+ -777, -1326, -1576, -1578, 1, 41, -1583, -1584,
+ -1585, -1326, 10, -1586, 1, -1587, -1441, -1592,
+ -604, -1590, -1541, 29, 2, -1598, -1599, -604,
+ -1595, -1480, -1291, -1420, 8, -1606, -1596, -1604,
+ -1415, 19,
+};
+
+static long _vq_ptr1_res0_0g[] = {
+ -467, -58, -22, -19, -7, -6, 44, -14,
+ -9, -10, -13, 30, 50, 50, -15, -16,
+ -17, -18, 32, -20, -21, 54, -37, -25,
+ 53, -28, 27, 28, -30, 52, 32, -33,
+ 12, -34, -35, -36, 50, -51, -39, -46,
+ -42, 22, -44, 27, -45, 50, -48, 50,
+ -50, 50, 50, -55, 56, 40, 47, -56,
+ -57, 50, -178, -95, -83, -82, -65, 36,
+ 42, -76, -72, -71, -70, 42, 42, 43,
+ -74, 22, -75, 22, -81, -79, 36, -80,
+ 7, 43, 42, -92, -91, -90, -88, 40,
+ -89, 40, 52, 48, -94, 22, 42, -154,
+ -140, -129, -120, -104, -103, 35, 21, 51,
+ -117, -115, -112, -111, -110, 7, 7, 39,
+ -114, 39, 39, -116, 22, -103, 51, 19,
+ -127, -122, -125, 43, -119, 7, -124, -128,
+ 30, -138, 26, -137, -136, -1609, 54, 2,
+ 14, 14, -139, 14, -146, 43, -145, 37,
+ -126, 37, -153, -151, -150, 38, 38, 38,
+ 17, 51, -175, -169, -168, -165, -164, -162,
+ 40, 29, 7, 40, 3, -167, 49, 51,
+ 40, 51, -172, 38, -24, 53, -166, -177,
+ 14, 31, -398, -313, -278, -204, -192, 32,
+ -191, -189, -188, 43, 43, 22, 43, 31,
+ -201, -198, -197, 31, 26, 31, 5, 45,
+ 31, -202, 26, 30, 28, -251, -225, -215,
+ -210, 30, -212, 40, -203, 30, 28, -217,
+ 30, -219, 22, 30, -222, 57, -224, 32,
+ 32, -235, -232, -231, -230, 4, 4, 4,
+ 22, -234, 37, -248, -243, -241, -41, 22,
+ 25, 40, -174, -244, -245, -223, 32, 55,
+ -249, -250, 32, -275, -270, -266, -264, -261,
+ -260, -259, 4, 4, 4, -260, 55, -247,
+ 3, 4, 40, -269, 3, 3, 12, -260,
+ 5, -263, -242, -276, -277, 32, -296, -288,
+ -283, 43, -144, -286, 22, 32, -203, 20,
+ -295, -290, -294, -293, 20, 12, 26, 3,
+ -310, 3, -309, -224, -307, -305, -304, -292,
+ 32, 53, 19, 12, -287, 32, -223, 53,
+ 28, -320, -315, -317, -308, -319, 32, 32,
+ -356, -344, -338, -330, -328, 31, 14, 45,
+ 31, 14, -335, -203, -333, 45, 31, -337,
+ -316, 14, -341, 33, 48, -342, 33, -340,
+ -348, -346, -347, 32, -350, -336, -352, 31,
+ -354, 14, -355, 33, -375, -366, 28, -362,
+ 1, 3, -277, 32, 1, 20, -371, -370,
+ -369, 3, 1, -374, -880, 52, 32, -391,
+ -384, -381, -374, 20, 54, -374, 48, 1,
+ -381, -374, -287, 54, -133, 54, -387, -395,
+ 22, 32, 1, -396, -309, 2, -458, -441,
+ 28, -439, -419, -417, -408, 6, 22, 43,
+ -414, -190, -1607, -386, 52, 20, 43, 40,
+ 22, -418, 20, -423, 5, 48, 20, -429,
+ -425, -427, 54, -412, 52, -438, -436, -435,
+ -434, 20, 20, 52, 52, 20, 48, -168,
+ -412, -442, -444, 54, -446, 54, -224, -449,
+ 32, -451, 54, -455, -21, 54, 2, 54,
+ 32, 20, -464, -461, -287, -462, 40, 31,
+ -466, -460, 33, -862, -778, -547, -497, -496,
+ -494, -491, -488, -484, -482, -481, -480, 45,
+ 45, 15, 45, 24, 24, -481, 15, 20,
+ 45, 42, 24, -492, 24, 45, -495, 51,
+ 14, -544, 18, -128, -535, -522, -520, -506,
+ 38, 47, -513, -510, -509, 47, 47, 42,
+ 54, -515, 38, -519, -518, 38, 38, 47,
+ -521, 51, -524, 51, -526, -287, -528, 28,
+ -532, -531, 15, 15, -531, 15, -512, -536,
+ -537, -538, 51, 15, -542, 47, 47, -386,
+ 28, 48, 20, -595, -564, -562, -558, -556,
+ -553, -555, -465, 47, 48, 47, -559, -521,
+ 51, -454, 55, -411, -573, -571, -567, -568,
+ -569, -509, -383, 51, 30, -588, -575, -587,
+ -586, -585, -509, -581, 36, -583, -373, 47,
+ 33, 2, 51, 18, -593, 51, -592, 2,
+ 53, -594, 18, -744, -635, -618, 20, -611,
+ -608, -606, 48, -80, 33, 45, 6, 48,
+ -610, 14, 48, -617, -150, -615, 14, 7,
+ 31, 38, -128, -632, -631, -629, -628, -627,
+ 26, 7, -609, 26, 51, 26, -605, 51,
+ 26, -604, -591, 20, -711, -668, -663, -645,
+ 6, 42, -644, 25, 25, -649, 42, 9,
+ 25, -659, -657, -654, 9, 14, -656, 14,
+ 14, -644, -584, 14, -644, 25, 54, -664,
+ 14, -128, 30, 48, -698, -677, -523, -675,
+ 11, 2, -667, 14, 2, -693, -689, -686,
+ -684, -682, 14, -682, 2, 14, 51, 2,
+ 14, 11, 51, 2, -496, 11, 14, -697,
+ -676, 51, -710, -709, -708, -707, -706, -80,
+ 7, -696, 10, 42, 14, 2, 11, -731,
+ -730, -631, -728, -719, -173, 53, -674, -173,
+ -722, 33, -726, -1603, -662, -582, 14, -349,
+ 10, 54, 11, -740, 25, 53, -739, 14,
+ -1601, -729, -737, 9, -742, 30, 53, -738,
+ -762, -759, -747, 55, -758, -753, -752, 12,
+ 12, -755, 26, -752, 12, -727, 51, -760,
+ -667, -334, -770, -766, -758, 54, -767, -768,
+ -769, 55, -775, -772, -773, 51, -765, -776,
+ -777, 2, -835, -790, -784, -519, 11, 10,
+ -785, -786, 51, -594, 18, -774, -830, -820,
+ -799, -794, -798, -797, 31, 31, 31, -817,
+ -805, 51, 42, 31, 3, -809, -523, 51,
+ 20, -814, -812, -287, 31, 3, -295, 3,
+ 54, 42, -161, -811, -827, -631, -825, 31,
+ 8, 31, 20, -813, 20, -826, -832, 53,
+ -833, -161, -829, -844, -842, -840, -839, 52,
+ 47, 53, 55, 11, -859, -856, -847, 20,
+ -851, -850, 52, -854, 42, -834, 42, 52,
+ -857, -858, 31, -850, 53, -853, -1158, -1107,
+ -875, -870, -867, -868, -869, 49, -871, -872,
+ -869, 49, -831, -952, -884, -881, 25, 46,
+ 19, -883, 16, 18, -937, -892, 24, -890,
+ 30, 16, -891, 16, -898, -894, 1, -897,
+ -874, 18, -905, 1, -902, 52, -891, 19,
+ 15, -909, -907, 15, 1, -913, -911, -912,
+ 15, -917, -915, -916, 15, -927, -921, -920,
+ 15, -924, 15, 16, -891, 16, 15, -930,
+ -929, 16, -924, -891, 16, -904, -1593, -903,
+ -901, -943, -941, -940, 15, -942, 15, -947,
+ 41, 44, 15, -948, -949, -950, -925, 52,
+ -997, -991, -988, -982, -978, -975, -971, -968,
+ -966, -963, 15, -965, 20, 16, -967, 16,
+ -970, 53, 19, -925, 12, -964, -292, 12,
+ 53, 19, -979, 27, 53, 19, -986, -984,
+ 44, 19, -925, -962, -990, 46, 18, -993,
+ 25, 46, 53, 30, 16, -1104, -1032, -1030,
+ -1011, 13, 2, 46, -1008, -932, -951, -936,
+ -932, 16, -292, -1015, 27, 11, 2, -1018,
+ 46, 11, -1021, 18, 16, -1023, 13, -1027,
+ -1026, 16, 16, -1026, -1010, 20, -1031, 18,
+ -1087, -1043, 12, -932, -1041, 2, -1040, -1029,
+ 16, 16, 19, -1053, 13, -1051, -1041, -1026,
+ 10, 19, -1049, 1, -1048, -1076, -1061, 2,
+ -882, -1040, 10, 19, 10, -1065, -1063, -1064,
+ 2, -1070, 4, -1040, -1058, -1052, -1074, -1073,
+ -1039, 16, 16, 4, -1079, 1, 2, -1082,
+ -1064, -1028, -1084, 2, -925, -1007, -896, -1089,
+ -861, -1091, 30, -1093, -819, -1096, 16, 27,
+ -1099, 2, -789, -1101, 48, -1073, -1100, 45,
+ -1106, 10, 29, -1110, -1109, 48, -1155, -1146,
+ -1113, -1145, -1141, -1117, -1098, -1136, -1128, -1127,
+ -487, -1125, -292, 20, -808, 20, -1116, 15,
+ -1130, 48, -1131, -1027, 48, -1589, -761, -757,
+ -1139, -1014, 31, -925, 2, -1142, 2, -29,
+ -1140, 53, -1153, -1150, 44, -777, -1151, -1152,
+ 16, -816, -1144, 25, 28, 54, -1271, -1334,
+ -1276, -1222, -1171, -1168, 45, 46, 1, 30,
+ 1, -1170, 30, 10, -656, -1199, -1187, -1178,
+ 1, 45, -1181, -1180, 1, -1184, 1, 15,
+ -1186, 15, 15, -1189, 4, -1192, -1191, 4,
+ -1196, -916, 53, 24, -916, 15, -1194, -1201,
+ 19, -1211, -1209, -1207, -1581, -487, -1205, 19,
+ 15, 15, -287, -1219, -1216, -916, -1210, 11,
+ -916, -710, 25, 4, 20, 10, -1266, -1237,
+ -1234, -1231, 45, 55, 1, 19, -1029, 55,
+ 19, 4, -797, -710, -1221, -1239, -1218, -1242,
+ 1, -1214, -1260, -1255, -1252, -1249, -1248, -1206,
+ 15, -1248, -1247, -1198, -916, -1185, -312, -904,
+ -916, 15, -287, -1251, -1252, 15, 4, -1579,
+ -1154, -1135, -1272, 1, 4, 31, 26, -282,
+ 31, -1275, -260, 19, -1292, -1282, -1279, -1180,
+ 1, 3, -1290, -1284, 1, -1287, 33, -1289,
+ 33, 33, -1291, 33, -1308, -1295, 1, -1297,
+ -369, -1300, -1280, -813, -1303, 1, 13, -1305,
+ 1, -912, 1, -1296, -1310, -1274, -1312, -1106,
+ -1324, -1316, -1183, 33, -1319, 4, 41, -1321,
+ -1315, -916, 1, 55, -1327, -1326, 4, -1331,
+ -1398, -247, -1322, -904, 15, -1311, -1328, -1445,
+ -1407, -1360, -1352, -1350, -1347, -1345, -1344, 19,
+ 30, 30, 3, 12, 1, 30, 30, 3,
+ -1358, 2, -1357, 1, 30, 30, -1323, -1346,
+ -1364, -969, 11, 53, -1400, -1395, -1386, -1382,
+ -1376, -1371, -1343, -1375, -1374, 4, 4, 2,
+ -1379, 2, 4, -1381, -1281, 4, -1384, 31,
+ -969, 31, -1389, 1, 2, -1392, 2, -1385,
+ -1381, -1383, -1380, -1262, -1075, -1373, -1333, 49,
+ -1381, -1083, -1145, 53, -813, -1262, 4, -1435,
+ -1431, -1428, -1424, -1421, -1419, -1417, -1416, 4,
+ 4, 19, -1405, -1420, 4, 12, 53, -260,
+ 4, -1427, 4, 30, 12, 53, 19, -1432,
+ -1434, -260, 19, -1436, -1356, -1443, -1403, -1441,
+ -1423, 19, -260, 19, 4, -1504, -1460, -1455,
+ -1454, -1453, -1452, -260, 10, 30, 30, -1458,
+ 4, -1442, -1459, 4, -1503, -1487, -1484, -1478,
+ -1475, -1472, -1470, -1469, 14, 14, 19, -1440,
+ 10, 14, -1418, -1476, -1477, 14, 10, -1042,
+ -1482, -260, 19, 3, -1485, -1452, -1483, -1500,
+ -1498, -1496, -1494, 33, 3, -1483, 4, -1486,
+ -1191, -1481, -1420, -1474, 53, 30, 4, 53,
+ -1517, -1510, 26, 49, 53, -260, -1511, -1513,
+ 33, -1515, -260, 33, -1509, -1588, -1561, -1557,
+ -1548, -1544, -1537, -1534, -1532, -1529, -1291, -777,
+ -1516, -1291, 33, -1499, 33, 30, -1535, 30,
+ 14, -1533, -1536, -609, 14, 33, 31, 31,
+ -1545, 30, -1540, -1542, -1551, 30, -1541, -1553,
+ -1289, -1556, 33, 11, 33, 33, 14, 4,
+ -1552, -1567, 1, 4, -682, 33, -1565, -1582,
+ -1580, -1577, -1574, -1573, 13, 13, -1573, -1560,
+ -1575, -1262, -1531, -1399, -1381, -1315, -1591, 33,
+ -1392, -1381, 3, 11, -1559, -1385, 53, -1597,
+ -1594, 29, -1596, 19, 33, -1605, -1602, -1289,
+ 3, -1600, -1289, -813, 31, -1602, 4, -1385,
+ -260, -260,
+};
+
+static long _vq_p_res0_0g[] = {
+ 296, 144, 184, 144, 352, 176, 184, 344,
+ 168, 96, 344, 344, 344, 184, 168, 320,
+ 96, 144, 400, 456, 392, 256, 272, 312,
+ 312, 168, 168, 168, 216, 216, 400, 272,
+ 272, 320, 96, 376, 144, 176, 168, 176,
+ 320, 320, 176, 176, 216, 40, 312, 312,
+ 352, 352, 216, 280, 280, 280, 280, 168,
+ 352, 376, 136, 48, 168, 280, 168, 168,
+ 168, 280, 272, 272, 272, 272, 280, 280,
+ 280, 280, 56, 336, 272, 272, 272, 288,
+ 48, 288, 448, 272, 288, 288, 272, 272,
+ 280, 288, 272, 272, 288, 288, 320, 168,
+ 272, 168, 312, 168, 272, 168, 272, 280,
+ 56, 280, 272, 280, 272, 272, 280, 272,
+ 280, 280, 304, 312, 56, 272, 272, 384,
+ 344, 168, 272, 272, 208, 280, 200, 272,
+ 408, 272, 272, 272, 280, 64, 368, 368,
+ 272, 360, 176, 344, 176, 280, 280, 280,
+ 368, 448, 280, 280, 280, 280, 136, 448,
+ 448, 448, 320, 280, 280, 56, 56, 272,
+ 272, 88, 280, 280, 280, 280, 88, 320,
+ 312, 272, 272, 272, 304, 304, 200, 280,
+ 280, 272, 32, 312, 40, 208, 176, 40,
+ 40, 40, 40, 40, 176, 320, 320, 176,
+ 272, 272, 272, 208, 272, 40, 168, 168,
+ 168, 168, 344, 344, 168, 176, 240, 272,
+ 272, 272, 296, 296, 320, 320, 192, 168,
+ 168, 176, 296, 344, 296, 296, 456, 456,
+ 344, 168, 168, 168, 168, 168, 40, 176,
+ 296, 280, 40, 40, 40, 40, 40, 40,
+ 192, 296, 192, 320, 176, 296, 296, 368,
+ 176, 320, 32, 40, 272, 272, 272, 272,
+ 272, 272, 272, 96, 24, 40, 192, 192,
+ 320, 320, 40, 40, 40, 296, 168, 168,
+ 168, 200, 368, 168, 96, 24, 168, 176,
+ 168, 168, 440, 312, 312, 312, 176, 432,
+ 312, 168, 272, 272, 120, 312, 312, 248,
+ 312, 312, 312, 312, 312, 320, 312, 224,
+ 320, 312, 312, 320, 120, 176, 328, 328,
+ 360, 392, 32, 456, 360, 328, 328, 392,
+ 208, 360, 40, 176, 168, 360, 360, 168,
+ 176, 176, 344, 168, 168, 344, 416, 360,
+ 416, 40, 168, 168, 8, 176, 256, 72,
+ 208, 344, 272, 208, 344, 8, 248, 320,
+ 320, 320, 112, 256, 272, 168, 168, 168,
+ 168, 168, 8, 8, 40, 360, 96, 272,
+ 272, 8, 96, 320, 232, 360, 8, 320,
+ 320, 320, 320, 72, 72, 344, 72, 72,
+ 176, 176, 416, 8, 232, 80, 80, 168,
+ 168, 168, 168, 240, 32, 80, 416, 312,
+ 168, 40, 344, 48, 168, 168, 168, 168,
+ 40, 40, 232, 80, 384, 8, 48, 48,
+ 48, 176, 344, 168, 168, 168, 168, 272,
+ 320, 272, 8, 48, 8, 48, 48, 48,
+ 40, 40, 48, 40, 320, 320, 40, 168,
+ 8, 176, 168, 168, 320, 320, 48, 384,
+ 384, 392, 392, 48, 48, 48, 8, 416,
+ 416, 384, 272, 272, 384, 168, 48, 48,
+ 344, 416, 176, 136, 72, 224, 136, 360,
+ 136, 136, 136, 136, 136, 56, 136, 136,
+ 56, 360, 192, 56, 336, 336, 336, 16,
+ 288, 288, 288, 288, 304, 304, 304, 360,
+ 208, 56, 376, 56, 56, 56, 56, 272,
+ 272, 272, 288, 288, 288, 336, 56, 56,
+ 16, 48, 48, 56, 56, 56, 64, 304,
+ 336, 376, 408, 336, 336, 48, 224, 288,
+ 288, 288, 288, 376, 304, 304, 48, 288,
+ 304, 336, 192, 192, 192, 192, 368, 48,
+ 288, 288, 288, 144, 96, 272, 288, 96,
+ 336, 272, 48, 96, 376, 288, 304, 96,
+ 96, 48, 368, 48, 184, 184, 288, 304,
+ 200, 184, 48, 376, 376, 136, 88, 376,
+ 376, 376, 136, 136, 136, 288, 48, 352,
+ 416, 288, 136, 352, 304, 376, 304, 80,
+ 376, 352, 376, 56, 208, 288, 288, 48,
+ 272, 272, 272, 272, 80, 80, 288, 288,
+ 288, 80, 336, 136, 272, 272, 48, 136,
+ 48, 288, 272, 272, 272, 272, 272, 272,
+ 272, 272, 48, 136, 208, 336, 48, 304,
+ 64, 112, 48, 288, 136, 200, 136, 288,
+ 288, 288, 288, 288, 72, 48, 48, 48,
+ 48, 56, 56, 136, 136, 136, 56, 56,
+ 72, 136, 48, 336, 336, 336, 264, 200,
+ 408, 336, 336, 208, 136, 136, 136, 136,
+ 136, 136, 72, 336, 72, 56, 56, 56,
+ 56, 56, 16, 48, 408, 408, 88, 88,
+ 88, 336, 336, 336, 48, 80, 80, 336,
+ 48, 80, 288, 288, 48, 56, 288, 288,
+ 288, 360, 48, 288, 288, 56, 80, 48,
+ 56, 56, 304, 288, 288, 288, 48, 64,
+ 48, 112, 56, 64, 208, 112, 304, 48,
+ 288, 264, 304, 72, 64, 64, 56, 304,
+ 64, 392, 8, 304, 304, 304, 408, 328,
+ 272, 368, 272, 368, 96, 304, 304, 304,
+ 368, 208, 336, 336, 336, 392, 368, 288,
+ 336, 232, 368, 368, 136, 416, 136, 304,
+ 336, 200, 304, 200, 304, 88, 384, 200,
+ 336, 88, 80, 216, 304, 136, 136, 328,
+ 336, 88, 376, 216, 216, 328, 56, 136,
+ 360, 48, 56, 56, 56, 360, 336, 56,
+ 136, 136, 136, 136, 136, 336, 56, 56,
+ 416, 56, 56, 416, 232, 232, 408, 408,
+ 384, 136, 136, 384, 304, 56, 56, 56,
+ 56, 304, 424, 56, 16, 16, 136, 416,
+ 192, 80, 416, 88, 288, 288, 288, 48,
+ 216, 384, 368, 368, 56, 56, 272, 416,
+ 48, 48, 288, 288, 288, 384, 56, 56,
+ 208, 416, 288, 64, 72, 72, 144, 32,
+ 392, 328, 328, 216, 88, 104, 184, 8,
+ 144, 144, 384, 224, 368, 192, 192, 192,
+ 64, 96, 96, 184, 192, 184, 184, 184,
+ 184, 184, 224, 120, 224, 192, 224, 352,
+ 64, 224, 96, 96, 32, 384, 96, 416,
+ 152, 8, 352, 8, 216, 104, 192, 144,
+ 104, 32, 352, 216, 32, 192, 216, 192,
+ 216, 192, 192, 192, 144, 144, 64, 216,
+ 352, 216, 352, 352, 352, 64, 64, 64,
+ 64, 120, 224, 224, 144, 152, 328, 64,
+ 64, 64, 384, 184, 352, 216, 152, 384,
+ 328, 328, 64, 64, 64, 64, 64, 64,
+ 64, 64, 416, 144, 152, 152, 144, 424,
+ 96, 96, 144, 328, 328, 48, 48, 216,
+ 216, 216, 328, 352, 352, 352, 184, 328,
+ 184, 184, 352, 48, 368, 328, 96, 184,
+ 184, 64, 64, 64, 64, 216, 200, 368,
+ 184, 184, 184, 200, 184, 184, 48, 48,
+ 200, 200, 80, 352, 352, 352, 352, 216,
+ 216, 216, 368, 368, 368, 104, 88, 88,
+ 88, 88, 16, 144, 72, 80, 184, 440,
+ 184, 184, 184, 184, 184, 184, 184, 72,
+ 104, 8, 72, 352, 352, 352, 352, 352,
+ 72, 80, 64, 216, 64, 216, 216, 216,
+ 216, 216, 72, 48, 48, 16, 96, 144,
+ 104, 96, 96, 96, 48, 48, 144, 144,
+ 48, 32, 104, 104, 96, 96, 96, 104,
+ 8, 48, 16, 8, 8, 72, 48, 368,
+ 48, 240, 352, 96, 48, 352, 352, 352,
+ 216, 216, 64, 104, 64, 16, 48, 48,
+ 88, 48, 440, 368, 368, 440, 48, 48,
+ 224, 48, 48, 216, 360, 48, 48, 48,
+ 48, 48, 48, 224, 224, 184, 224, 384,
+ 184, 184, 120, 384, 144, 64, 48, 64,
+ 352, 184, 416, 184, 416, 352, 216, 384,
+ 232, 16, 184, 144, 184, 192, 352, 392,
+ 432, 216, 88, 192, 192, 192, 32, 224,
+ 368, 72, 200, 192, 192, 192, 192, 192,
+ 72, 200, 72, 192, 360, 192, 192, 72,
+ 72, 72, 360, 192, 360, 192, 192, 192,
+ 224, 224, 8, 224, 224, 360, 360, 240,
+ 8, 8, 200, 64, 240, 240, 192, 224,
+ 224, 72, 64, 64, 64, 88, 80, 72,
+ 72, 360, 88, 64, 64, 64, 192, 192,
+ 152, 192, 192, 240, 200, 200, 192, 192,
+ 192, 192, 192, 192, 192, 192, 48, 368,
+ 368, 368, 232, 48, 48, 360, 48, 224,
+ 224, 48, 96, 64, 64, 64, 64, 48,
+ 24, 152, 384, 48, 24, 192, 192, 96,
+ 96, 96, 192, 360, 8, 8, 8, 328,
+ 48, 88, 208, 360, 360, 360, 360, 48,
+ 360, 64, 368, 360, 360, 80, 64, 80,
+ 80, 96, 360, 328, 360, 192, 192, 360,
+ 360, 32, 208, 112, 8, 72, 72, 96,
+ 96, 80, 192, 368, 192, 192, 192, 224,
+ 224, 8, 368, 368, 224, 96, 240, 368,
+ 328, 192, 328, 248, 64, 64, 64, 328,
+ 208, 104, 208, 208, 32, 64, 80, 64,
+ 88, 208, 368, 80, 80, 208, 72, 368,
+ 368, 240, 72, 72, 72, 72, 72, 328,
+ 8, 96, 152, 208, 208, 208, 16, 64,
+ 368, 200, 200, 200, 200, 368, 200, 64,
+ 328, 88, 328, 64, 368, 368, 368, 368,
+ 440, 208, 64, 368, 368, 64, 440, 440,
+ 208, 208, 208, 96, 64, 16, 16, 208,
+ 208, 152, 208, 208, 208, 96, 96, 64,
+ 8, 64, 208, 96, 96, 208, 64, 88,
+ 88, 88, 88, 88, 8, 24, 16, 328,
+ 64, 64, 152, 64, 64, 64, 64, 64,
+ 152, 96, 16, 96, 424, 72, 72, 16,
+ 240, 72, 232, 424, 208, 208, 208, 424,
+ 328, 232, 96, 440, 64, 64, 64, 64,
+ 232, 88, 16, 200, 88, 64, 0, 240,
+ 72, 72, 72, 88, 200, 80, 16, 80,
+ 80, 88, 16, 0, 64, 72, 64, 64,
+ 64, 64, 64, 64, 64, 152, 80, 88,
+ 72, 72, 88, 72, 80, 424, 328, 328,
+ 328, 88, 424, 104, 328, 72, 8, 64,
+ 64, 64, 64, 392, 88, 88, 80, 88,
+ 80, 104, 80, 104, 328, 328, 328, 208,
+ 328, 328, 328, 328, 328, 8, 208, 72,
+ 72, 80, 80, 112, 80, 104, 240, 72,
+ 72, 72, 72, 72, 72, 72, 72, 80,
+ 88, 200, 200, 80, 240, 112, 200, 8,
+ 8, 80, 80, 200, 200, 88, 232, 88,
+ 8, 16, 16, 88, 200, 200, 248, 8,
+ 248, 104, 104, 80, 240, 112, 208, 392,
+ 80, 208, 208, 208, 208, 8, 80, 104,
+ 104, 104, 80, 80, 80, 8, 88, 8,
+ 16, 80, 248, 104, 8, 328, 8, 8,
+ 80, 80, 80, 80, 8, 80, 88, 88,
+ 80, 88, 88, 232, 16, 80, 80, 80,
+ 232, 328, 112, 424, 64, 16, 16, 64,
+ 64, 152,
+};
+
+static long _vq_q_res0_0g[] = {
+ 88, 112, 376, 392, 400, 352, 352, 256,
+ 400, 400, 184, 240, 400, 400, 256, 400,
+ 400, 400, 256, 256, 256, 432, 280, 400,
+ 424, 400, 216, 224, 400, 416, 256, 400,
+ 96, 400, 400, 400, 400, 376, 400, 352,
+ 400, 176, 400, 216, 400, 400, 352, 400,
+ 216, 400, 400, 400, 448, 320, 376, 400,
+ 400, 400, 256, 312, 416, 448, 280, 288,
+ 336, 288, 56, 344, 280, 336, 336, 344,
+ 336, 176, 336, 176, 344, 48, 288, 48,
+ 56, 344, 336, 336, 384, 416, 288, 320,
+ 288, 320, 416, 384, 320, 176, 336, 24,
+ 448, 360, 344, 312, 408, 280, 168, 408,
+ 408, 176, 304, 312, 280, 56, 56, 312,
+ 304, 312, 312, 176, 176, 280, 408, 152,
+ 240, 280, 280, 344, 384, 56, 384, 240,
+ 240, 344, 208, 360, 112, 152, 432, 16,
+ 112, 112, 344, 112, 408, 344, 448, 296,
+ 384, 296, 408, 448, 136, 304, 304, 304,
+ 136, 408, 112, 304, 312, 408, 24, 280,
+ 320, 232, 56, 320, 24, 320, 392, 408,
+ 320, 408, 312, 304, 312, 424, 88, 248,
+ 112, 248, 160, 264, 312, 96, 360, 256,
+ 248, 320, 176, 344, 344, 176, 344, 248,
+ 344, 168, 40, 248, 208, 248, 40, 360,
+ 248, 344, 208, 240, 224, 24, 32, 168,
+ 344, 240, 344, 320, 344, 240, 224, 344,
+ 240, 344, 176, 240, 344, 456, 344, 256,
+ 256, 256, 296, 176, 40, 32, 32, 32,
+ 176, 296, 296, 32, 256, 296, 320, 176,
+ 200, 320, 88, 256, 256, 456, 256, 440,
+ 32, 32, 256, 256, 168, 296, 320, 40,
+ 24, 96, 32, 32, 32, 24, 440, 368,
+ 24, 32, 320, 296, 24, 24, 96, 24,
+ 40, 368, 88, 256, 256, 256, 328, 24,
+ 312, 344, 384, 344, 176, 256, 344, 160,
+ 24, 312, 208, 312, 160, 96, 208, 24,
+ 328, 24, 176, 344, 96, 424, 320, 120,
+ 256, 424, 152, 96, 432, 256, 256, 424,
+ 224, 264, 256, 392, 120, 392, 256, 256,
+ 96, 208, 256, 344, 176, 248, 112, 360,
+ 248, 112, 112, 240, 360, 360, 248, 112,
+ 120, 112, 256, 264, 384, 264, 264, 8,
+ 264, 208, 208, 256, 264, 120, 264, 248,
+ 256, 112, 264, 264, 344, 96, 224, 40,
+ 8, 24, 24, 256, 8, 160, 256, 96,
+ 8, 24, 8, 8, 152, 416, 256, 32,
+ 176, 344, 8, 160, 432, 8, 384, 8,
+ 344, 8, 432, 432, 24, 432, 8, 32,
+ 176, 256, 8, 256, 256, 16, 248, 256,
+ 224, 312, 384, 160, 40, 48, 176, 344,
+ 48, 320, 248, 160, 416, 160, 344, 320,
+ 176, 160, 160, 48, 40, 384, 160, 40,
+ 384, 48, 432, 384, 416, 384, 320, 416,
+ 48, 160, 160, 416, 416, 160, 384, 312,
+ 384, 256, 256, 432, 256, 432, 344, 432,
+ 256, 256, 432, 416, 256, 432, 16, 432,
+ 256, 160, 344, 48, 432, 48, 320, 248,
+ 264, 432, 264, 104, 232, 16, 376, 112,
+ 408, 304, 288, 336, 192, 120, 56, 360,
+ 360, 120, 360, 192, 192, 360, 120, 160,
+ 360, 336, 192, 304, 192, 360, 408, 408,
+ 112, 384, 144, 240, 192, 120, 408, 56,
+ 304, 376, 304, 48, 376, 376, 376, 336,
+ 432, 56, 304, 376, 64, 304, 304, 376,
+ 408, 408, 120, 408, 120, 432, 120, 224,
+ 304, 376, 120, 120, 376, 120, 16, 192,
+ 192, 192, 408, 120, 368, 376, 376, 416,
+ 224, 384, 160, 112, 144, 368, 304, 384,
+ 376, 96, 384, 376, 384, 376, 376, 376,
+ 408, 8, 440, 80, 144, 240, 376, 376,
+ 376, 376, 72, 408, 240, 304, 376, 144,
+ 408, 16, 336, 376, 288, 352, 360, 376,
+ 264, 16, 408, 144, 352, 408, 376, 16,
+ 424, 376, 144, 368, 112, 208, 160, 304,
+ 336, 288, 384, 48, 264, 360, 48, 384,
+ 336, 112, 384, 288, 304, 136, 112, 56,
+ 248, 304, 240, 64, 304, 336, 408, 136,
+ 208, 56, 80, 208, 408, 208, 360, 408,
+ 208, 264, 16, 160, 304, 88, 408, 56,
+ 48, 336, 72, 200, 200, 56, 336, 72,
+ 200, 336, 200, 56, 72, 112, 72, 112,
+ 112, 200, 416, 112, 72, 200, 432, 240,
+ 112, 408, 240, 384, 288, 56, 408, 336,
+ 88, 16, 208, 112, 16, 80, 336, 88,
+ 408, 16, 112, 16, 16, 112, 408, 16,
+ 112, 88, 408, 16, 208, 88, 112, 80,
+ 72, 408, 88, 16, 112, 336, 80, 48,
+ 56, 112, 80, 336, 112, 16, 88, 72,
+ 88, 408, 80, 56, 304, 424, 384, 424,
+ 56, 264, 112, 424, 416, 160, 112, 120,
+ 80, 432, 88, 240, 200, 424, 72, 112,
+ 328, 432, 432, 72, 408, 240, 424, 432,
+ 136, 384, 96, 440, 408, 208, 368, 96,
+ 96, 368, 208, 368, 96, 160, 408, 384,
+ 384, 416, 88, 440, 368, 432, 440, 440,
+ 440, 440, 16, 88, 88, 408, 432, 88,
+ 88, 16, 160, 232, 216, 304, 88, 80,
+ 376, 376, 408, 376, 144, 432, 192, 304,
+ 408, 56, 336, 360, 248, 248, 248, 88,
+ 56, 408, 336, 248, 24, 24, 336, 408,
+ 160, 408, 24, 432, 248, 24, 248, 24,
+ 432, 336, 88, 160, 24, 408, 304, 248,
+ 64, 248, 160, 24, 160, 424, 88, 424,
+ 88, 88, 16, 248, 88, 376, 416, 416,
+ 376, 424, 440, 88, 64, 248, 56, 160,
+ 56, 416, 416, 56, 336, 16, 336, 416,
+ 248, 248, 248, 416, 424, 16, 112, 160,
+ 128, 144, 392, 104, 104, 392, 104, 104,
+ 104, 392, 424, 16, 120, 144, 200, 368,
+ 152, 144, 128, 144, 152, 144, 192, 120,
+ 240, 128, 120, 128, 120, 224, 8, 224,
+ 424, 144, 144, 8, 128, 416, 120, 152,
+ 120, 128, 8, 120, 8, 128, 104, 104,
+ 120, 128, 32, 32, 120, 352, 128, 216,
+ 120, 144, 120, 128, 120, 128, 120, 144,
+ 216, 128, 144, 120, 128, 152, 88, 416,
+ 384, 128, 152, 120, 120, 120, 120, 128,
+ 328, 352, 120, 144, 128, 144, 128, 416,
+ 104, 200, 368, 184, 352, 216, 328, 96,
+ 424, 128, 120, 152, 160, 128, 424, 128,
+ 144, 424, 152, 128, 96, 152, 120, 96,
+ 424, 152, 352, 216, 424, 152, 128, 184,
+ 352, 152, 144, 416, 96, 368, 144, 128,
+ 200, 368, 424, 240, 128, 232, 240, 440,
+ 144, 104, 16, 368, 200, 352, 384, 64,
+ 352, 128, 120, 128, 216, 88, 16, 128,
+ 368, 88, 88, 144, 128, 128, 104, 144,
+ 16, 128, 128, 16, 120, 160, 440, 144,
+ 240, 144, 96, 352, 8, 16, 104, 160,
+ 128, 128, 152, 144, 104, 216, 8, 16,
+ 80, 152, 80, 8, 72, 8, 144, 16,
+ 96, 104, 80, 152, 80, 128, 16, 16,
+ 16, 144, 32, 104, 72, 64, 104, 32,
+ 160, 128, 128, 32, 128, 8, 16, 128,
+ 104, 120, 128, 16, 144, 384, 424, 32,
+ 16, 32, 240, 128, 432, 32, 128, 216,
+ 32, 16, 328, 128, 384, 32, 64, 360,
+ 440, 80, 232, 128, 384, 384, 192, 432,
+ 120, 424, 416, 128, 120, 352, 128, 384,
+ 16, 184, 120, 160, 416, 160, 120, 120,
+ 128, 384, 128, 128, 384, 80, 248, 264,
+ 128, 352, 248, 128, 16, 416, 16, 416,
+ 416, 424, 384, 432, 352, 88, 432, 432,
+ 128, 432, 416, 200, 224, 432, 160, 16,
+ 104, 208, 120, 200, 360, 368, 8, 240,
+ 8, 240, 240, 80, 112, 152, 32, 120,
+ 8, 360, 120, 360, 8, 224, 8, 120,
+ 8, 120, 120, 120, 32, 120, 240, 32,
+ 240, 32, 424, 192, 32, 120, 200, 120,
+ 152, 240, 360, 72, 264, 16, 16, 152,
+ 120, 120, 432, 240, 152, 32, 432, 88,
+ 32, 80, 200, 32, 160, 80, 112, 224,
+ 232, 368, 360, 440, 8, 152, 80, 440,
+ 152, 32, 248, 88, 200, 120, 192, 120,
+ 8, 432, 8, 96, 32, 152, 24, 16,
+ 120, 24, 160, 64, 32, 224, 360, 152,
+ 32, 120, 160, 88, 24, 120, 32, 104,
+ 416, 264, 152, 8, 32, 248, 208, 368,
+ 248, 360, 32, 152, 120, 112, 360, 360,
+ 8, 24, 112, 264, 8, 360, 264, 32,
+ 264, 264, 112, 264, 32, 120, 8, 104,
+ 8, 120, 80, 232, 120, 8, 104, 120,
+ 8, 104, 8, 96, 120, 32, 120, 440,
+ 152, 104, 192, 264, 120, 32, 328, 104,
+ 248, 32, 8, 440, 120, 32, 32, 80,
+ 440, 368, 248, 152, 120, 96, 232, 264,
+ 152, 32, 200, 16, 208, 96, 8, 152,
+ 240, 240, 24, 96, 8, 240, 240, 24,
+ 440, 16, 368, 8, 240, 240, 440, 152,
+ 368, 424, 88, 424, 88, 104, 8, 424,
+ 96, 368, 328, 16, 440, 32, 32, 16,
+ 96, 16, 32, 16, 96, 32, 424, 248,
+ 424, 248, 96, 8, 16, 8, 16, 152,
+ 16, 208, 96, 8, 104, 424, 368, 392,
+ 32, 8, 16, 424, 232, 32, 32, 88,
+ 328, 208, 240, 72, 424, 96, 152, 32,
+ 32, 152, 24, 424, 32, 96, 424, 24,
+ 32, 424, 32, 240, 96, 424, 152, 152,
+ 96, 24, 152, 152, 240, 200, 424, 88,
+ 16, 152, 24, 152, 32, 264, 64, 32,
+ 16, 240, 200, 24, 80, 240, 240, 16,
+ 32, 16, 32, 32, 208, 240, 200, 328,
+ 424, 72, 80, 152, 112, 112, 152, 232,
+ 80, 112, 8, 424, 424, 112, 80, 72,
+ 424, 32, 152, 24, 200, 200, 104, 328,
+ 424, 240, 80, 264, 24, 104, 32, 8,
+ 240, 32, 424, 232, 424, 240, 32, 424,
+ 104, 264, 208, 392, 424, 24, 264, 112,
+ 264, 112, 24, 264, 8, 392, 32, 208,
+ 104, 16, 80, 8, 240, 200, 112, 88,
+ 24, 112, 264, 232, 264, 240, 8, 240,
+ 112, 240, 8, 80, 112, 264, 248, 248,
+ 16, 240, 112, 232, 104, 240, 264, 104,
+ 32, 240, 264, 88, 264, 264, 112, 32,
+ 248, 264, 8, 32, 16, 264, 8, 264,
+ 16, 32, 88, 8, 104, 104, 8, 248,
+ 248, 8, 24, 392, 16, 264, 112, 264,
+ 8, 16, 24, 88, 392, 152, 424, 112,
+ 88, 232, 16, 152, 264, 16, 112, 32,
+ 24, 24, 32, 24, 248, 112, 32, 152,
+ 24, 24,
+};
+
+static encode_aux _vq_aux_res0_0g = {
+ _vq_ptr0_res0_0g,
+ _vq_ptr1_res0_0g,
+ _vq_p_res0_0g,
+ _vq_q_res0_0g,
+ 1610, 1610
+};
+
+static static_codebook _vq_book_res0_0g = {
+ 8, 58, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4,
+ _vq_quantlist_res0_0g,
+ _vq_lengthlist_res0_0g,
+ &_vq_aux_res0_0g,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0a0aux.vqh b/include/vorbis/book/res0a0aux.vqh
new file mode 100644
index 00000000..9c299332
--- /dev/null
+++ b/include/vorbis/book/res0a0aux.vqh
@@ -0,0 +1,291 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_res0a0aux_VQH_
+#define _V_res0a0aux_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_res0a0aux[] = {
+ 15,15,15,15,15,15,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,13,14,14,14,14,14,13,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,
+ 14,14,14,14,14,12,10,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,
+ 14,14,14,14,14,14,13,14,14,14,13,13,14,14,13,14,
+ 14,14,14,14,13,14,13,14,14,14,13,13,13,14,14,13,
+ 14,14,13,14,14,13,11,14,14,14,14,14,14,14,13,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,13,14,13,14,
+ 14,14,13,12,14,13,12,14,14,14,12,14,12,12,11,14,
+ 14,14,14,14,14,11,10,14,14,14,14,14,14,13,12,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,13,12,11,11,11,13,
+ 14,14,13,11,11,10,11,14,14,14,13,10,12, 9, 8,13,
+ 14,14,14,13,12, 9, 8,13,14,14,14,14,14,12,12,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,13,14,13,14,14,14,13,12,11,11,12,14,
+ 14,14,12,11,10,10,10,13,14,14,13,11,10, 8, 8,14,
+ 14,14,14,12,11, 9, 8,14,14,14,14,14,14,13,12,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,14,13,14,14,14,13,12,11,11,12,14,
+ 14,14,13,10,10, 9,10,14,14,13,13,10,10, 7, 7,14,
+ 14,14,14,12,11, 8, 6,13,14,14,14,14,14,13,11,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,
+ 14,14,14,12,12,12,13,14,14,14,14,12,11,10, 9,14,
+ 14,14,14,13,12, 9, 7,13,14,14,14,14,14,12, 9,12,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,12,14,14,14,14,14,14,14,12,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,14,14,14,14,14,14,13,13,14,14,14,
+ 14,14,14,14,13,13,13,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,13,14,14,14,14,14,14,14,14,13,13,14,14,14,
+ 14,14,14,14,13,14,13,14,14,14,14,13,13,13,12,14,
+ 14,14,13,14,14,14,11,14,14,14,14,14,14,14,13,14,
+ 14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,13,13,13,13,14,14,
+ 14,14,14,13,13,13,12,14,14,14,14,12,13,11,11,14,
+ 14,13,13,14,13,12,10,13,14,14,14,14,14,14,13,13,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,
+ 14,14,13,14,14,14,14,14,14,13,14,11,11,11,11,14,
+ 14,13,12,10,10, 9,10,14,14,14,13,10,10, 8, 8,13,
+ 14,13,13,11,12, 9, 8,14,14,14,14,14,14,13,12,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,12,14,14,14,14,14,13,13,10,10,10,12,14,
+ 14,13,13,10, 9, 9,10,14,14,14,12,10, 9, 8, 8,13,
+ 14,14,13,12,12, 9, 8,13,14,14,14,14,14,13,12,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,
+ 14,14,14,13,14,13,13,14,14,14,12,10,10, 9,12,14,
+ 14,14,13,10, 9, 9,10,14,14,14,13, 9, 8, 7, 7,14,
+ 14,14,13,12,10, 8, 7,14,14,14,14,14,13,12,10,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,13,14,14,14,13,12,13,12,14,13,
+ 14,14,14,11,12,11,12,14,14,14,13,13,11, 9,10,14,
+ 14,14,14,12,11, 9, 8,12,14,14,14,14,14,11, 9,12,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,13,11,14,14,14,14,14,14,14,12,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,13,13,14,14,14,14,13,13,13,13,14,
+ 14,14,14,14,14,13,13,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,13,14,14,14,14,12,12,13,13,14,
+ 14,14,14,13,12,12,11,14,14,14,13,12,12,12,11,13,
+ 14,14,13,13,12,12,11,14,14,14,14,14,14,14,12,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,13,14,14,14,14,12,11,12,11,12,13,
+ 14,14,14,10,10, 9,10,14,14,14,14, 9,10, 9, 8,13,
+ 14,14,12,12,11,10, 9,14,14,14,14,14,14,14,12,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,13,14,13,14,14,14,14,14,14,13,10,11,11,13,12,
+ 14,14,13,10,10, 9,10,13,14,14,12, 9, 9, 8, 8,14,
+ 14,14,13,12,11, 9, 8,14,14,14,14,14,14,13,12,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,
+ 14,14,14,12,14,14,14,13,14,14,13,10,11,10,11,13,
+ 14,14,13,10, 9, 9,11,13,14,14,12, 9, 8, 8, 8,12,
+ 14,14,13,11,10, 9, 8,13,14,14,14,14,13,12,11,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,13,13,14,13,
+ 14,14,14,12,12,12,13,14,14,14,14,13,11,11,11,13,
+ 14,14,14,14,13, 9, 8,12,14,14,14,14,14,11,10,12,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,11,12,14,14,14,14,14,14,13,12,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,
+ 14,14,14,13,14,14,13,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,14,13,14,
+ 14,14,13,14,14,13,14,14,14,14,14,13,13,14,13,14,
+ 14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,13,14,14,14,14,14,13,13,13,11,14,
+ 14,14,14,14,13,14,11,14,14,14,14,14,14,13,13,14,
+ 14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,
+ 14,14,14,13,13,13,13,13,13,14,14,11,11,13,12,12,
+ 14,14,13,10,10,10,10,13,14,14,14,11,10, 9, 8,12,
+ 14,14,14,13,12,10, 9,13,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,
+ 14,13,13,13,13,13,13,13,14,14,12,11,10,11,12,12,
+ 14,14,13,10,10,10,11,11,14,14,13,10,10, 8, 8,11,
+ 14,14,14,13,12,11, 9,11,14,14,14,14,14,14,13,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,13,14,13,13,14,14,12,14,13,13,11,11,11,12,10,
+ 14,14,12,10,10, 9,11,10,14,14,13,10, 9, 8, 8, 9,
+ 14,14,14,12,11,10, 9,10,14,14,14,14,14,13,13,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,13,13,13,13,13,14,13,
+ 14,14,13,12,12,12,13,11,14,14,13,13,12,10,11,11,
+ 14,14,14,14,12,11,10, 8,14,14,14,14,14,13,11,11,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,13,14,13,14,14,14,14,14,14,13,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,13,13,14,13,14,14,14,14,14,14,13,14,14,14,12,
+ 14,14,14,13,13,12,14,12,14,14,14,14,13,12,11,11,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,
+ 13,14,14,14,14,14,14,14,14,13,13,14,13,14,13,11,
+ 14,14,13,13,12,12,12,11,14,14,14,13,12,12,11,10,
+ 14,14,14,14,14,13,11,10,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,14,14,14,13,13,14,14,14,14,
+ 14,14,13,12,13,14,14,12,14,14,13,12,14,13,14,10,
+ 14,14,13,12,13,12,12, 9,14,14,14,12,11,10,11, 8,
+ 14,14,14,14,12,13,11, 8,14,14,14,14,14,14,14,10,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,14,14,13,14,13,12,12,13,14,14,11,
+ 14,14,14,13,14,13,14,11,14,13,14,13,13,13,13, 8,
+ 14,14,14,14,14,13,13, 7,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,11,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,13,14,14,14,14,14,13,14,14,13,13,14,13,13,11,
+ 14,14,14,14,13,13,14,11,14,14,14,13,14,14,13,10,
+ 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,14,14,13,13,13,14,14,14,14,
+ 14,14,14,12,14,13,14,14,14,14,13,12,13,13,14,11,
+ 14,14,13,13,12,13,13, 9,14,14,14,14,13,14,13, 8,
+ 14,14,14,14,14,13,14, 9,14,14,14,14,14,14,14,11,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,13,12,14,14,14,14,14,14,12,11,12,12,13, 9,
+ 14,14,13,12,13,12,12, 8,14,14,14,13,12,12,13, 6,
+ 14,14,14,13,14,12,12, 6,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,13,14,14,13,14,14,12,12,13,13,14,11,
+ 14,14,13,12,13,13,13, 8,14,14,13,13,13,13,14, 6,
+ 14,14,14,14,13,13,14, 5,14,14,14,14,14,14,13, 6,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,13,
+ 14,14,14,14,14,14,13,10,14,14,14,14,14,14,14,11,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,14,13,14,14,14,12,14,14,14,14,14,14,14,12,
+ 14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,13,12,13,12,
+ 14,14,14,14,14,13,14,10,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,13,14,14, 9,14,14,14,14,14,14,14,12,
+ 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,
+ 14,14,13,14,14,14,13,13,14,14,14,12,14,13,14,10,
+ 14,14,14,13,13,13,14, 8,14,14,14,13,14,13,13, 6,
+ 14,14,14,14,14,14,14, 6,14,14,14,14,14,14,14, 7,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,13,13,14,11,14,14,14,13,13,14,13,11,
+ 14,14,13,13,13,13,14, 9,14,14,14,13,12,12,14, 6,
+ 14,14,14,14,14,13,13, 4,14,14,14,14,14,14,14, 4,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,10,14,14,14,14,14,14,14, 9,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,12,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,
+ 14,14,14,14,14,14,14,10,14,14,14,14,14,14,14,11,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,10,
+};
+
+static static_codebook _huff_book_res0a0aux = {
+ 4, 4096,
+ _huff_lengthlist_res0a0aux,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0a1aux.vqh b/include/vorbis/book/res0a1aux.vqh
new file mode 100644
index 00000000..82e55393
--- /dev/null
+++ b/include/vorbis/book/res0a1aux.vqh
@@ -0,0 +1,291 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_res0a1aux_VQH_
+#define _V_res0a1aux_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_res0a1aux[] = {
+ 13,12,13,13,14,14,17,20,13,13,13,13,14,15,16,20,
+ 13,12,12,12,14,14,16,20,13,12,12,12,14,14,15,19,
+ 14,14,14,14,15,16,17,20,15,14,14,14,16,16,17,20,
+ 15,14,15,15,19,16,18,20,20,20,20,19,20,20,17,19,
+ 13,13,13,13,14,15,17,18,13,12,12,12,14,14,16,20,
+ 13,12,12,12,13,14,15,20,13,12,11,11,13,13,15,19,
+ 14,13,13,13,14,14,16,20,15,13,14,13,14,15,15,20,
+ 15,15,15,15,16,17,15,18,20,20,20,20,20,20,17,18,
+ 13,12,12,12,13,14,16,20,13,11,11,11,13,14,15,20,
+ 12,11,11,10,12,13,15,18,12,10,10,10,11,12,15,18,
+ 13,12,12,11,13,13,15,18,14,13,13,12,13,13,14,17,
+ 15,15,14,14,16,15,15,16,20,20,18,19,20,20,17,20,
+ 13,12,12,11,13,13,15,19,12,11,11,10,12,13,15,20,
+ 12,10,10,10,11,12,15,19,11,10, 9, 9,10,11,13,20,
+ 13,11,11,10,11,12,13,18,13,12,12,11,12,12,12,15,
+ 15,14,13,14,15,14,13,14,20,19,17,18,18,19,16,16,
+ 15,14,14,13,14,14,16,20,14,13,12,12,13,13,15,20,
+ 13,12,11,11,13,13,15,20,12,11,10,10,11,12,14,18,
+ 14,13,12,11,12,12,13,20,15,14,13,12,12,12,13,15,
+ 18,15,14,14,15,14,13,13,20,20,18,20,18,17,16,15,
+ 16,14,14,13,14,14,15,20,15,14,14,13,14,14,15,18,
+ 14,13,13,12,13,14,15,19,13,13,12,11,12,12,14,19,
+ 15,14,13,11,12,12,14,17,15,14,13,12,12,12,12,15,
+ 16,14,15,13,14,13,12,13,19,17,17,16,17,16,15,14,
+ 17,16,16,15,16,15,17,20,17,17,16,16,16,16,17,18,
+ 17,18,15,15,16,15,16,20,16,16,15,14,14,14,15,20,
+ 17,17,15,14,14,14,15,20,17,15,15,14,14,13,13,17,
+ 18,15,14,14,13,13,12,14,19,17,15,15,16,14,14,15,
+ 20,19,18,19,18,19,18,20,20,19,19,19,20,20,19,20,
+ 20,20,19,20,20,19,20,18,20,19,20,20,20,20,18,20,
+ 20,20,20,20,19,19,20,20,20,20,19,19,19,16,16,19,
+ 19,19,18,17,17,16,14,16,20,19,18,18,17,17,15,14,
+ 14,13,14,13,15,14,15,20,14,14,13,13,14,14,17,20,
+ 14,13,13,13,14,14,16,20,14,13,13,12,14,14,15,19,
+ 16,15,14,14,15,16,17,20,15,15,15,14,16,15,16,20,
+ 17,16,16,15,17,17,16,19,20,19,19,20,20,20,19,20,
+ 14,14,13,13,15,15,15,20,14,13,13,13,14,14,17,20,
+ 14,13,12,12,14,14,17,20,14,13,12,12,13,13,15,20,
+ 17,15,14,14,15,15,16,18,16,16,14,14,15,15,17,20,
+ 17,17,16,15,17,16,16,17,20,20,20,20,20,19,19,18,
+ 15,13,13,12,14,14,16,19,14,13,12,12,13,14,16,19,
+ 14,12,12,11,13,14,16,20,13,12,11,11,12,13,15,20,
+ 15,14,13,13,13,14,15,20,15,15,14,14,14,14,15,18,
+ 17,16,16,16,16,15,15,17,20,20,20,20,20,19,19,19,
+ 15,13,13,12,13,14,15,19,14,13,12,12,13,14,16,20,
+ 13,12,11,11,12,13,15,18,13,12,11,10,11,12,14,19,
+ 15,14,12,11,12,12,14,20,15,14,13,12,13,12,14,17,
+ 18,15,14,14,15,14,14,16,20,20,20,19,18,18,17,16,
+ 16,16,15,14,15,14,16,20,16,15,14,14,14,15,15,19,
+ 15,14,13,12,14,14,16,20,15,14,12,11,13,13,15,19,
+ 17,15,14,12,13,13,14,20,17,15,14,13,13,13,14,18,
+ 19,15,15,15,16,15,15,15,20,20,20,20,20,19,18,17,
+ 18,16,16,15,16,16,16,19,16,16,15,15,15,15,16,20,
+ 16,15,14,13,15,14,15,18,16,14,13,12,13,13,14,18,
+ 17,15,14,13,13,13,15,20,17,15,14,13,13,13,13,19,
+ 17,15,15,14,16,14,14,15,20,19,18,17,19,17,16,17,
+ 19,18,17,17,17,17,17,20,19,17,17,16,17,15,16,17,
+ 18,16,16,15,16,15,15,19,18,16,15,14,15,14,14,18,
+ 17,16,16,15,15,15,15,19,17,16,16,15,15,14,14,18,
+ 18,15,15,15,16,15,13,16,18,18,17,16,17,16,15,16,
+ 20,20,20,20,20,20,20,20,20,20,20,20,19,19,19,19,
+ 20,19,20,20,20,19,17,17,20,19,20,18,20,20,18,16,
+ 20,20,19,20,20,19,17,19,20,20,18,20,20,18,17,18,
+ 20,20,18,18,20,18,15,16,20,19,16,16,18,16,14,14,
+ 14,14,13,13,14,14,15,18,14,14,13,13,14,15,16,20,
+ 14,14,13,12,14,14,15,20,14,13,13,12,13,13,15,19,
+ 15,15,14,14,15,14,16,20,16,16,15,14,15,15,16,20,
+ 16,16,16,15,16,15,15,19,20,20,19,20,20,19,17,20,
+ 14,14,13,13,14,14,16,20,15,14,13,12,15,15,16,20,
+ 14,13,12,12,13,14,15,19,15,14,12,11,12,13,15,18,
+ 17,16,14,13,14,15,16,20,17,15,14,14,14,14,15,18,
+ 19,16,17,16,15,15,15,19,20,20,20,20,19,20,19,18,
+ 14,14,13,12,14,14,16,20,15,14,13,12,13,14,16,19,
+ 15,13,12,11,12,13,15,17,14,13,12,10,11,12,14,17,
+ 16,15,13,12,12,13,14,19,16,15,14,13,13,13,14,18,
+ 20,17,15,15,15,14,14,17,20,20,20,20,18,20,17,16,
+ 15,14,13,13,14,14,15,19,15,14,13,12,13,13,15,19,
+ 15,13,12,11,12,12,14,17,14,13,11,10,10,11,13,15,
+ 16,14,13,11,11,11,13,17,17,14,13,11,12,11,12,17,
+ 17,15,14,13,13,12,12,15,20,19,19,19,20,17,17,15,
+ 18,17,15,14,15,16,17,18,17,16,15,14,15,15,16,20,
+ 17,16,14,13,13,13,14,18,16,15,13,11,12,12,13,17,
+ 18,15,14,12,12,12,13,18,17,16,14,12,12,12,12,17,
+ 19,16,15,13,14,13,13,16,20,20,20,18,19,18,17,16,
+ 18,17,16,15,15,16,17,18,17,16,15,15,15,14,15,18,
+ 17,15,14,14,14,13,14,18,17,15,14,12,13,12,13,17,
+ 17,16,14,12,13,12,13,19,17,15,14,12,12,12,12,18,
+ 18,16,15,13,14,12,12,15,20,20,18,17,17,17,15,16,
+ 18,19,17,17,17,17,17,20,20,19,17,16,17,15,15,19,
+ 17,16,16,14,15,15,14,16,17,16,14,14,14,13,13,16,
+ 19,16,15,14,14,14,14,18,18,15,16,14,14,13,12,16,
+ 18,17,14,13,14,13,12,14,20,19,16,15,16,15,14,15,
+ 20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,19,
+ 20,20,19,19,20,17,16,17,20,20,20,19,18,17,15,16,
+ 20,20,20,20,17,17,16,17,20,20,18,16,17,16,16,17,
+ 20,19,16,15,17,16,14,15,20,18,15,14,15,15,14,13,
+ 14,14,14,13,14,14,15,19,14,14,13,13,14,15,15,19,
+ 14,14,13,12,13,14,15,18,14,14,13,12,13,13,14,19,
+ 16,15,14,13,14,14,15,18,15,15,14,14,14,14,14,19,
+ 16,17,15,15,15,15,14,20,19,18,19,19,20,19,18,20,
+ 14,13,13,13,14,14,15,20,15,14,13,12,14,14,16,19,
+ 15,13,12,11,13,13,15,19,14,13,12,11,12,13,14,17,
+ 16,15,14,13,13,13,15,18,16,15,14,13,14,14,14,17,
+ 17,16,15,15,15,14,14,16,20,19,19,20,20,18,19,16,
+ 14,13,13,13,14,14,15,18,14,14,13,12,13,14,16,19,
+ 14,14,12,11,12,12,15,15,14,13,11,10,10,11,13,14,
+ 16,14,12,11,11,12,13,17,16,14,13,11,12,11,13,17,
+ 18,15,15,13,13,13,13,16,20,19,19,19,18,18,18,13,
+ 15,14,13,13,13,14,15,18,15,14,13,12,13,13,15,18,
+ 15,13,12,10,11,11,13,14,14,13,11, 8, 9, 9,11,13,
+ 15,14,12, 9, 9, 9,11,16,16,14,12, 9, 9, 9,10,15,
+ 18,15,13,12,11,11,11,14,20,20,18,16,18,18,15,13,
+ 18,16,15,15,15,15,16,19,16,16,14,14,15,14,15,18,
+ 16,15,14,12,12,12,14,16,15,15,12,10,10,10,11,15,
+ 15,15,13,10, 9, 9,11,16,16,15,13,10, 9, 9,10,15,
+ 18,16,14,12,11,10,11,15,19,20,19,17,19,16,16,14,
+ 18,17,17,16,15,15,16,19,18,16,15,14,15,14,14,17,
+ 17,15,13,13,13,12,13,16,15,14,12,10,10,10,11,16,
+ 16,15,13,10,10, 9,11,16,16,15,13,10, 9, 8, 9,15,
+ 17,16,14,11,11,10,10,14,20,20,18,16,17,15,15,14,
+ 19,20,18,18,18,17,17,19,20,20,17,15,16,15,14,16,
+ 20,17,16,14,14,13,12,15,18,16,15,12,12,11,11,15,
+ 18,16,14,12,12,11,11,15,17,16,14,12,11,10,10,15,
+ 18,15,13,11,12,10, 9,13,19,20,16,14,16,15,13,13,
+ 20,20,20,20,20,20,20,20,20,20,20,20,20,18,17,18,
+ 20,20,20,20,19,18,16,16,20,20,20,20,17,18,15,16,
+ 20,19,19,17,17,17,16,16,20,20,17,16,17,15,15,16,
+ 20,18,15,14,14,15,13,15,20,17,16,14,16,15,14,11,
+ 15,16,15,14,16,16,16,19,16,17,16,15,15,16,17,19,
+ 15,15,15,14,15,14,16,19,16,15,14,14,14,14,15,18,
+ 17,17,16,15,15,14,16,19,17,16,16,15,15,14,15,18,
+ 17,16,16,15,15,15,16,19,20,20,20,18,18,18,17,20,
+ 15,16,15,15,16,16,17,20,16,16,15,14,15,16,16,20,
+ 16,16,14,13,14,15,15,20,17,15,14,13,13,14,15,18,
+ 17,17,15,14,15,14,15,18,18,16,15,15,15,14,15,20,
+ 18,16,16,15,15,15,15,17,20,20,19,18,18,18,18,18,
+ 15,15,15,14,15,15,17,20,17,15,14,14,15,15,16,20,
+ 16,15,14,13,14,13,15,19,16,15,13,11,12,12,14,17,
+ 16,16,14,12,13,13,14,17,17,16,14,13,13,12,13,17,
+ 18,16,15,14,14,14,14,16,20,20,18,20,19,18,17,15,
+ 17,15,15,14,15,15,15,19,17,15,14,14,14,14,16,19,
+ 17,15,13,12,12,12,14,17,16,14,12, 9, 9, 9,12,14,
+ 17,15,13,10, 9, 9,11,15,16,15,13,10, 9, 9,10,15,
+ 20,16,14,12,12,11,11,15,20,20,20,18,19,17,16,13,
+ 18,16,16,15,15,16,16,19,18,18,17,15,16,16,16,20,
+ 17,16,15,13,13,13,14,18,16,15,13,10, 9,10,12,14,
+ 17,15,14,10, 9, 8,11,14,16,17,13,10, 8, 8,10,14,
+ 19,16,15,12,11,10,11,15,20,20,17,17,17,17,16,13,
+ 20,19,16,15,16,16,16,20,19,19,17,15,16,16,16,18,
+ 16,16,15,13,13,13,13,17,16,15,13,10,10, 9,11,15,
+ 16,16,14,10, 9, 8,10,13,16,16,14,10, 8, 7, 8,12,
+ 19,17,15,11,10, 9, 9,13,20,20,18,15,17,15,15,12,
+ 19,20,18,18,19,18,18,19,19,18,17,17,17,15,15,18,
+ 19,18,16,15,15,14,13,16,17,16,15,13,12,11,11,15,
+ 19,17,15,12,12,11,11,15,18,16,14,12,10, 9, 9,13,
+ 18,17,14,12,11,10, 9,12,20,20,17,16,16,15,13,13,
+ 20,20,20,20,20,20,20,20,20,20,20,20,20,18,20,20,
+ 20,20,20,20,20,18,18,18,20,20,20,18,17,17,15,16,
+ 20,20,20,17,18,18,16,18,20,20,20,17,17,16,15,17,
+ 20,20,18,15,18,16,14,15,20,18,17,16,16,16,14,10,
+ 16,16,16,15,16,16,16,18,17,17,16,16,16,16,17,20,
+ 16,17,16,15,15,15,16,19,16,16,16,14,14,14,15,18,
+ 17,17,16,16,15,16,15,17,16,17,16,15,16,15,15,17,
+ 17,17,16,15,16,15,15,17,20,20,19,18,18,17,15,17,
+ 16,16,16,15,16,16,17,20,17,17,16,15,16,15,18,20,
+ 18,16,15,14,15,15,15,20,17,16,15,14,14,14,14,17,
+ 20,17,16,15,15,15,15,18,18,16,15,15,15,14,14,17,
+ 17,16,15,14,14,14,14,16,20,20,20,20,18,16,16,17,
+ 17,16,15,16,15,16,17,20,17,17,16,14,15,15,16,19,
+ 17,16,15,13,14,14,16,19,16,15,14,12,13,12,14,19,
+ 18,17,15,13,13,13,14,18,17,16,14,13,13,12,13,17,
+ 19,16,15,13,14,13,13,15,20,20,18,19,18,17,16,15,
+ 16,16,15,14,15,15,16,20,17,16,15,14,15,15,16,19,
+ 16,15,14,12,13,12,14,17,16,14,12,10,10,10,11,15,
+ 17,15,13,10,10, 9,11,15,18,15,13,10, 9, 9,10,14,
+ 18,15,14,12,12,11,10,14,20,19,19,17,17,16,15,13,
+ 17,18,17,16,16,16,17,19,18,17,16,15,15,15,15,20,
+ 18,17,16,13,14,13,14,19,16,16,13,10, 9, 9,11,14,
+ 17,16,13,10, 8, 8,10,13,17,16,13,10, 8, 7, 9,12,
+ 17,17,14,12,11, 9, 9,13,20,20,19,16,16,15,14,12,
+ 18,18,16,15,17,16,17,18,18,16,16,15,15,15,15,18,
+ 18,17,15,13,13,13,13,17,17,16,13,10, 9, 9,11,14,
+ 16,17,13, 9, 8, 7, 9,12,17,16,13, 9, 7, 6, 7,10,
+ 16,16,14,11, 9, 7, 7,11,20,20,20,16,15,14,14,10,
+ 17,17,18,16,17,17,16,18,20,17,18,16,17,16,14,17,
+ 18,18,16,15,15,14,13,16,17,16,14,12,11,11,11,14,
+ 18,16,14,11,10, 9,10,13,17,16,14,11, 9, 7, 7,11,
+ 16,16,14,11,10, 7, 6, 9,19,18,17,15,15,13,11,10,
+ 20,20,20,20,20,20,20,19,20,20,20,20,20,20,19,18,
+ 20,20,20,19,20,20,18,20,20,20,19,18,17,16,16,15,
+ 20,20,19,17,17,16,15,15,20,20,18,17,16,15,14,14,
+ 19,20,18,15,15,14,12,13,19,19,16,15,16,15,13, 8,
+ 18,19,20,17,16,17,16,20,19,20,18,19,18,17,19,20,
+ 17,17,17,17,18,17,18,19,16,18,17,16,17,16,16,18,
+ 19,20,17,17,19,17,18,18,18,20,19,17,19,17,16,16,
+ 17,19,17,17,16,15,16,16,20,19,19,18,17,16,16,16,
+ 18,17,19,17,17,16,19,18,17,18,18,17,19,18,19,19,
+ 18,18,17,16,16,15,16,20,20,18,16,15,16,14,15,18,
+ 18,18,18,16,16,16,15,17,20,18,17,16,15,16,15,17,
+ 20,17,16,15,15,15,14,15,20,20,17,18,17,16,15,15,
+ 17,18,17,17,18,17,16,20,18,19,17,16,16,16,16,19,
+ 18,17,16,15,16,15,16,18,20,16,16,14,14,14,15,17,
+ 18,17,17,15,15,15,14,17,17,19,16,14,15,14,13,16,
+ 18,17,15,14,14,14,13,14,20,20,20,20,17,16,15,14,
+ 17,17,17,16,17,18,17,18,18,18,17,15,15,15,15,19,
+ 19,17,16,14,14,13,13,17,17,16,14,12,12,11,12,15,
+ 18,17,15,12,12,11,12,16,18,17,15,12,11,11,11,15,
+ 17,17,15,12,12,11,10,13,20,20,17,16,16,15,13,13,
+ 19,19,17,17,17,17,18,20,19,18,16,16,18,15,17,20,
+ 18,19,16,14,15,14,14,16,18,18,15,12,12,11,12,16,
+ 20,18,15,12,11,10,11,15,17,17,15,11,11, 9,10,13,
+ 19,18,15,12,12,10, 9,13,20,20,18,16,16,15,13,12,
+ 20,20,17,18,18,16,16,18,18,18,17,15,16,15,14,18,
+ 18,18,16,14,14,13,13,16,18,17,14,11,11,11,11,14,
+ 20,19,15,11,10, 9,10,13,18,17,14,10, 9, 7, 7,11,
+ 18,16,14,11,10, 8, 6,10,19,19,17,15,15,13,11, 9,
+ 18,19,18,16,17,18,16,18,18,20,17,17,18,15,14,16,
+ 18,18,17,15,16,14,13,15,17,17,14,12,12,11,10,13,
+ 18,17,15,12,11,10,10,13,17,18,14,11, 9, 7, 7,10,
+ 16,14,13,11,10, 7, 4, 7,18,15,16,14,13,12, 8, 7,
+ 20,20,20,20,20,20,19,19,20,20,19,20,20,20,18,20,
+ 20,19,20,18,20,19,16,17,20,20,20,18,17,16,14,14,
+ 20,20,18,16,17,15,14,14,20,20,18,16,15,14,12,12,
+ 18,19,15,14,14,12, 8, 9,16,17,16,14,15,13,10, 7,
+ 20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20,
+ 20,20,20,20,20,20,20,20,19,20,20,20,20,20,19,20,
+ 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,
+ 20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,17,
+ 20,20,20,20,19,20,20,20,20,19,20,20,20,20,20,20,
+ 18,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,
+ 20,20,19,20,20,20,19,19,20,20,20,20,20,20,20,20,
+ 20,20,20,20,20,20,18,18,20,20,20,20,20,20,19,16,
+ 20,20,20,19,20,20,19,20,19,20,20,20,20,20,20,20,
+ 19,20,20,19,20,20,18,20,20,20,20,20,19,19,18,19,
+ 20,20,20,20,20,20,18,19,20,20,20,19,18,19,20,19,
+ 20,20,20,18,18,17,16,16,20,20,20,18,16,16,15,14,
+ 19,20,20,20,19,20,20,20,20,20,20,20,20,20,19,20,
+ 20,20,20,19,19,20,19,19,20,19,20,17,18,17,16,16,
+ 20,20,18,20,20,18,17,17,20,20,20,19,18,18,16,16,
+ 20,20,18,15,15,14,13,14,20,20,18,16,15,14,14,12,
+ 20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20,
+ 20,20,20,20,20,19,17,19,20,20,19,20,18,18,16,16,
+ 20,20,20,18,20,19,16,17,20,20,20,17,19,16,15,17,
+ 20,19,20,16,15,15,14,15,20,20,20,16,16,16,14,12,
+ 20,18,20,20,20,20,19,20,20,20,20,20,20,20,20,20,
+ 20,20,19,20,20,19,17,18,20,19,18,17,17,16,15,15,
+ 20,20,20,17,17,16,15,17,20,19,18,17,17,15,14,15,
+ 20,20,18,15,16,14,12,13,20,20,20,17,16,16,13,12,
+ 20,20,20,20,20,20,19,20,20,20,20,20,20,19,18,20,
+ 20,20,19,18,20,19,16,16,20,20,19,16,18,15,14,14,
+ 20,20,20,16,16,15,13,15,20,19,16,16,15,13,12,13,
+ 19,20,17,14,14,12, 8, 9,19,20,18,16,17,14,10, 9,
+ 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
+ 20,20,20,19,19,20,18,15,20,20,20,18,18,17,14,13,
+ 20,20,20,18,19,17,14,13,20,20,19,16,17,15,13,12,
+ 18,20,17,14,15,13,10,10,18,19,16,14,14,12, 9, 2,
+};
+
+static static_codebook _huff_book_res0a1aux = {
+ 4, 4096,
+ _huff_lengthlist_res0a1aux,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0a_0.vqh b/include/vorbis/book/res0a_0.vqh
new file mode 100644
index 00000000..7e06cb10
--- /dev/null
+++ b/include/vorbis/book/res0a_0.vqh
@@ -0,0 +1,151 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0a_0_VQH_
+#define _V_res0a_0_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0a_0[] = {
+ 0,
+ 8,
+ 14,
+ 20,
+ 25,
+ 30,
+ 34,
+ 37,
+ 40,
+ 42,
+ 44,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 56,
+ 58,
+ 60,
+ 63,
+ 66,
+ 70,
+ 75,
+ 80,
+ 86,
+ 92,
+ 100,
+};
+
+static long _vq_lengthlist_res0a_0[] = {
+ 20,20,20,20,19,19,19,19,19,19,18,18,18,17,16,15,
+ 16,18,18,19,18,18,19,19,19,19,19,19,19,19,19,19,
+ 19,19,19,19,19,18,18,19,17,18,18,17,16,15,14,16,
+ 17,17,18,18,17,17,17,19,19,19,19,19,19,19,19,19,
+ 19,19,17,17,17,17,17,18,16,16,16,15,13,12,14,14,
+ 16,16,16,16,17,17,18,18,19,19,19,19,19,19,19,18,
+ 17,16,17,15,16,15,15,15,14,14,13,12,11,12,13,14,
+ 14,14,15,16,16,16,16,18,19,19,19,19,16,17,15,16,
+ 15,13,13,13,13,13,13,12,13,12,11, 9,11,12,12,13,
+ 12,13,13,13,14,14,16,17,18,18,19,14,14,14,14,13,
+ 12,12,11,11,11,11,11,11,10, 9, 8, 9,10,11,11,11,
+ 11,11,12,12,12,13,16,17,17,17,14,14,14,14,13,11,
+ 12,11,11,11,11,11,11,10,10, 8,10,10,11,11,11,11,
+ 11,12,12,12,13,15,16,18,18,14,14,13,14,13,11,11,
+ 11,11,11,11,11,11,10,10, 8,10,10,11,11,11,11,11,
+ 11,11,11,13,15,17,17,16,14,14,14,14,12,11,11,11,
+ 11,11,10,10,10,10, 9, 8, 9,10,10,10,10,11,11,11,
+ 11,11,13,15,16,16,17,14,14,14,14,12,11,11,11,11,
+ 11,10,10,10,10, 9, 8, 9,10,10,10,10,10,10,11,11,
+ 11,12,14,16,17,16,13,14,14,13,12,10,10,10,10,10,
+ 9, 9,10, 9, 9, 7, 9, 9,10, 9, 9,10,10,10,10,10,
+ 12,14,16,16,18,14,14,14,13,12,10,10,10,10,10, 9,
+ 9, 9, 9, 8, 7, 8, 9, 9, 9, 9,10,10,10,10,10,12,
+ 14,15,18,18,14,15,14,13,12,10,10,10,10,10, 9, 9,
+ 9, 9, 8, 7, 8, 9, 9, 9, 9,10,10,10,10,10,12,14,
+ 15,17,17,14,14,13,13,11,10,10,10, 9, 9, 9, 9, 9,
+ 8, 8, 6, 8, 8, 9, 9, 9, 9, 9,10,10,10,11,13,15,
+ 16,18,14,14,13,12,10, 9, 9, 9, 9, 9, 8, 8, 8, 7,
+ 7, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,10,12,14,16,
+ 16,12,12,11,10, 9, 7, 8, 8, 8, 8, 7, 7, 7, 6, 5,
+ 4, 5, 6, 7, 7, 7, 8, 8, 8, 8, 7, 8,10,11,12,13,
+ 14,14,13,11,10, 9, 9, 9, 9, 9, 8, 8, 8, 7, 7, 6,
+ 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,10,12,14,15,16,14,
+ 14,13,13,11,10,10,10,10, 9, 9, 9, 9, 8, 8, 6, 8,
+ 8, 9, 9, 9, 9,10,10,10,10,11,13,14,16,17,14,14,
+ 14,13,12,10,10,10,10,10, 9, 9, 9, 9, 8, 7, 8, 9,
+ 10, 9, 9,10,10,10,10,10,12,14,15,17,18,14,14,14,
+ 13,11,10,10,10,10,10, 9, 9, 9, 9, 8, 7, 8, 9, 9,
+ 9, 9,10,10,10,10,10,12,14,16,16,18,13,14,14,13,
+ 12,10,10,10,10,10, 9, 9,10, 9, 9, 7, 9, 9,10, 9,
+ 10,10,10,10,10,10,12,14,16,16,19,14,14,14,14,12,
+ 11,11,11,10,10,10,10,10,10, 9, 8, 9,10,10,10,10,
+ 10,11,11,11,11,12,15,16,18,18,14,14,14,14,12,11,
+ 11,11,11,11,10,10,10,10, 9, 8, 9,10,10,10,10,11,
+ 11,11,11,11,13,15,16,18,17,14,14,13,14,13,11,11,
+ 11,11,11,11,10,11,10,10, 8,10,10,11,11,11,11,11,
+ 11,11,11,13,15,16,18,18,14,14,14,14,13,12,11,11,
+ 11,11,11,11,11,10,10, 8,10,10,11,11,11,11,11,11,
+ 11,12,13,15,16,18,17,15,15,14,14,13,12,12,11,11,
+ 11,11,11,11,10, 9, 8, 9,10,11,11,11,11,11,12,12,
+ 12,13,15,16,17,18,16,16,16,15,15,14,13,13,13,13,
+ 12,13,13,12,11, 9,11,12,12,12,13,13,13,13,13,14,
+ 16,18,18,19,19,18,18,17,18,16,16,16,17,15,16,14,
+ 14,14,13,12,11,12,13,14,14,15,15,15,15,16,17,17,
+ 19,18,19,19,19,19,19,19,18,18,17,18,18,16,16,17,
+ 15,15,13,12,13,15,16,16,16,17,17,16,17,17,19,19,
+ 19,19,19,19,19,19,19,19,18,18,18,16,18,19,17,17,
+ 17,15,13,15,17,17,17,17,18,19,18,18,18,19,19,19,
+ 19,19,19,19,19,19,19,18,18,19,19,18,18,17,18,19,
+ 16,15,16,17,18,18,18,19,18,19,19,19,19,19,19,19,
+ 19,
+};
+
+static double _vq_quantthresh_res0a_0[] = {
+ -46, -39, -33, -28, -23, -18, -14.5, -11.5,
+ -9, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5,
+ 1.5, 2.5, 3.5, 5, 7, 9, 11.5, 14.5,
+ 18, 23, 28, 33, 39, 46,
+};
+
+static long _vq_quantmap_res0a_0[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30,
+};
+
+static encode_aux_threshmatch _vq_aux_res0a_0 = {
+ _vq_quantthresh_res0a_0,
+ _vq_quantmap_res0a_0,
+ 31,
+ 31
+};
+
+static static_codebook _vq_book_res0a_0 = {
+ 2, 961,
+ _vq_lengthlist_res0a_0,
+ 1, -524746752, 1611661312, 7, 0,
+ _vq_quantlist_res0a_0,
+ NULL,
+ &_vq_aux_res0a_0
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0a_1.vqh b/include/vorbis/book/res0a_1.vqh
new file mode 100644
index 00000000..1a4b2747
--- /dev/null
+++ b/include/vorbis/book/res0a_1.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0a_1_VQH_
+#define _V_res0a_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0a_1[] = {
+ 0,
+ 3,
+ 6,
+ 8,
+ 10,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 22,
+ 24,
+ 26,
+ 29,
+ 32,
+};
+
+static long _vq_lengthlist_res0a_1[] = {
+ 13,13,13,13,13,12,12,11,10, 9,10,11,12,12,13,13,
+ 13,13,14,13,12,12,12,11,11,11,10, 9, 7, 8,10,11,
+ 11,11,12,12,12,13,13,12,12,12,11,11,11,10, 9, 7,
+ 9,10,11,11,11,12,12,12,13,12,11,11,12,11,11,11,
+ 10, 9, 8, 9,10,11,11,11,12,12,12,12,12,11,11,11,
+ 11,10,10,10, 8, 7, 8, 9,11,10,11,11,11,11,12,11,
+ 10,10,11,10,10,10, 9, 8, 7, 8, 9,10,10,10,11,10,
+ 10,11,11,10,10,11,10,10,10, 9, 8, 7, 8, 9,10,10,
+ 10,11,10,10,11,10, 9,10,10, 9, 9, 9, 8, 7, 6, 7,
+ 8, 9, 9, 9,10,10, 9,10, 9, 8, 8, 9, 8, 8, 8, 7,
+ 6, 5, 6, 7, 8, 8, 8, 9, 8, 8, 9, 8, 7, 7, 8, 7,
+ 7, 6, 6, 5, 3, 5, 6, 6, 7, 7, 8, 7, 7, 8, 9, 8,
+ 8, 9, 8, 8, 8, 7, 6, 5, 6, 7, 8, 8, 8, 9, 8, 8,
+ 9,10, 9,10,10, 9, 9, 9, 8, 7, 6, 7, 8, 9, 9, 9,
+ 10, 9, 9,10,11,10,10,11,10,10,10, 9, 8, 7, 8, 9,
+ 10,10,10,11,10,10,11,11,10,10,11,10,10,10, 9, 8,
+ 7, 8, 9,10,10,10,11,10,10,11,12,11,11,11,11,10,
+ 10, 9, 8, 7, 8, 9,10,10,11,11,11,11,11,12,11,11,
+ 12,11,11,11,10, 9, 8, 9,10,11,11,11,12,11,11,12,
+ 12,12,12,12,11,11,11,10, 9, 7, 9,10,11,11,11,12,
+ 12,12,12,13,12,12,12,11,11,11,10, 9, 7, 9,10,11,
+ 11,11,12,12,12,13,13,13,13,13,13,12,12,11,10, 9,
+ 10,11,12,12,12,13,13,13,14,
+};
+
+static double _vq_quantthresh_res0a_1[] = {
+ -14.5, -11.5, -9, -7, -5, -3.5, -2.5, -1.5,
+ -0.5, 0.5, 1.5, 2.5, 3.5, 5, 7, 9,
+ 11.5, 14.5,
+};
+
+static long _vq_quantmap_res0a_1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18,
+};
+
+static encode_aux_threshmatch _vq_aux_res0a_1 = {
+ _vq_quantthresh_res0a_1,
+ _vq_quantmap_res0a_1,
+ 19,
+ 19
+};
+
+static static_codebook _vq_book_res0a_1 = {
+ 2, 361,
+ _vq_lengthlist_res0a_1,
+ 1, -527433728, 1611661312, 6, 0,
+ _vq_quantlist_res0a_1,
+ NULL,
+ &_vq_aux_res0a_1
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0a_2.vqh b/include/vorbis/book/res0a_2.vqh
new file mode 100644
index 00000000..4ada5d27
--- /dev/null
+++ b/include/vorbis/book/res0a_2.vqh
@@ -0,0 +1,85 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0a_2_VQH_
+#define _V_res0a_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0a_2[] = {
+ 0,
+ 2,
+ 4,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 16,
+ 18,
+ 20,
+};
+
+static long _vq_lengthlist_res0a_2[] = {
+ 16,15,13,13,12,11,10, 8,10,11,12,13,13,14,16,14,
+ 13,12,11,11,10, 8, 7, 8,10,11,11,12,13,14,13,12,
+ 11,11,10,10, 8, 7, 8,10,10,11,11,12,14,12,11,11,
+ 11,10, 9, 8, 7, 8, 9,10,11,11,11,12,12,11,10,10,
+ 10, 9, 8, 7, 8, 9,10,10,10,11,12,11,10, 9, 9, 9,
+ 8, 7, 6, 7, 8, 9, 9, 9,10,11, 9, 8, 8, 8, 8, 7,
+ 5, 4, 6, 7, 8, 8, 8, 8, 9, 8, 7, 7, 7, 6, 6, 4,
+ 3, 4, 6, 6, 7, 7, 7, 8, 9, 8, 8, 8, 8, 7, 5, 4,
+ 6, 7, 8, 8, 8, 8, 9,11,10, 9, 9, 9, 8, 7, 6, 7,
+ 8, 9, 9, 9,10,11,12,11,10,10,10, 9, 8, 7, 8, 9,
+ 10,10,10,11,12,12,11,11,11,10, 9, 8, 7, 8, 9,10,
+ 10,11,11,12,13,12,11,11,11,10, 8, 7, 8, 9,11,11,
+ 11,12,13,14,13,12,11,11,10, 8, 7, 8,10,11,11,12,
+ 13,14,16,15,14,12,12,11,10, 8,10,11,12,13,13,14,
+ 16,
+};
+
+static double _vq_quantthresh_res0a_2[] = {
+ -9, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5,
+ 1.5, 2.5, 3.5, 5, 7, 9,
+};
+
+static long _vq_quantmap_res0a_2[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14,
+};
+
+static encode_aux_threshmatch _vq_aux_res0a_2 = {
+ _vq_quantthresh_res0a_2,
+ _vq_quantmap_res0a_2,
+ 15,
+ 15
+};
+
+static static_codebook _vq_book_res0a_2 = {
+ 2, 225,
+ _vq_lengthlist_res0a_2,
+ 1, -529268736, 1611661312, 5, 0,
+ _vq_quantlist_res0a_2,
+ NULL,
+ &_vq_aux_res0a_2
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0a_3.vqh b/include/vorbis/book/res0a_3.vqh
new file mode 100644
index 00000000..9aeeb2d3
--- /dev/null
+++ b/include/vorbis/book/res0a_3.vqh
@@ -0,0 +1,74 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0a_3_VQH_
+#define _V_res0a_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0a_3[] = {
+ 0,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 12,
+};
+
+static long _vq_lengthlist_res0a_3[] = {
+ 14,12,12,11, 9, 8, 9,11,12,12,14,12,11,10, 9, 7,
+ 6, 8, 9,10,11,12,11,10,10, 9, 8, 7, 8, 9,10,10,
+ 12,10, 9, 9, 8, 6, 6, 6, 8, 9, 9,10, 9, 7, 8, 6,
+ 5, 4, 5, 6, 8, 7, 9, 8, 6, 7, 5, 4, 3, 4, 5, 7,
+ 6, 8, 9, 7, 8, 6, 5, 4, 5, 6, 8, 7, 9,11, 9, 9,
+ 8, 6, 6, 6, 8, 9, 9,10,12,10,10, 9, 8, 7, 8, 9,
+ 10,10,12,12,11,10, 9, 8, 6, 7, 9,10,11,12,14,12,
+ 12,11, 9, 8, 9,11,12,12,14,
+};
+
+static double _vq_quantthresh_res0a_3[] = {
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5,
+};
+
+static long _vq_quantmap_res0a_3[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10,
+};
+
+static encode_aux_threshmatch _vq_aux_res0a_3 = {
+ _vq_quantthresh_res0a_3,
+ _vq_quantmap_res0a_3,
+ 11,
+ 11
+};
+
+static static_codebook _vq_book_res0a_3 = {
+ 2, 121,
+ _vq_lengthlist_res0a_3,
+ 1, -531103744, 1611661312, 4, 0,
+ _vq_quantlist_res0a_3,
+ NULL,
+ &_vq_aux_res0a_3
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0a_4.vqh b/include/vorbis/book/res0a_4.vqh
new file mode 100644
index 00000000..ef64452f
--- /dev/null
+++ b/include/vorbis/book/res0a_4.vqh
@@ -0,0 +1,211 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0a_4_VQH_
+#define _V_res0a_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0a_4[] = {
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+};
+
+static long _vq_lengthlist_res0a_4[] = {
+ 18,17,18,17,17,19,18,18,17,15,15,16,17,18,18,16,
+ 14,14,14,16,17,17,15,14,13,14,15,17,17,16,15,14,
+ 14,16,17,19,17,16,15,16,17,18,21,18,17,17,17,19,
+ 20,17,17,15,15,15,16,18,17,15,14,13,14,16,17,16,
+ 14,13,12,13,14,16,15,14,12,11,12,13,15,16,14,13,
+ 12,13,14,16,17,15,14,13,14,16,17,17,16,16,15,16,
+ 16,19,18,16,14,14,14,16,17,16,14,13,12,13,14,16,
+ 14,13,11,10,11,13,15,14,12,11, 9,10,12,14,15,13,
+ 11,10,11,13,14,15,14,13,12,13,14,16,18,16,15,14,
+ 15,16,17,17,16,14,13,14,16,16,15,14,12,11,12,14,
+ 15,14,12,11,10,11,12,14,13,11,10, 8, 9,11,13,14,
+ 12,10,10,11,12,14,15,14,12,11,12,13,15,17,15,14,
+ 13,14,15,16,17,16,15,14,15,16,17,16,14,13,12,13,
+ 14,15,15,13,11,10,11,13,15,14,12,10, 9,11,12,14,
+ 15,13,11,10,11,13,15,16,14,13,12,13,14,16,18,16,
+ 15,14,15,15,19,18,17,16,15,15,17,18,17,15,14,13,
+ 14,15,16,16,14,13,12,13,14,16,15,13,12,11,12,14,
+ 15,16,14,13,12,13,14,16,16,15,14,14,14,15,17,18,
+ 17,16,15,15,17,18,18,18,17,16,16,17,19,19,16,16,
+ 15,16,17,17,17,16,15,13,14,16,17,16,15,14,13,14,
+ 15,17,17,16,15,14,15,16,16,19,17,16,15,16,18,19,
+ 19,18,18,17,18,18,21,17,16,15,15,16,17,18,17,15,
+ 14,13,14,15,17,16,14,13,12,13,15,16,15,13,12,11,
+ 12,14,15,16,14,13,12,13,14,16,17,15,14,13,14,16,
+ 16,19,17,16,15,16,17,18,16,15,14,13,14,15,17,15,
+ 14,13,13,14,15,15,14,13,12,11,12,13,14,13,13,12,
+ 11,11,13,14,14,13,12,11,12,13,14,16,15,13,13,13,
+ 14,15,17,15,14,13,14,15,17,16,14,13,12,13,14,16,
+ 14,13,12,11,12,13,14,13,12,11,10,11,12,13,12,11,
+ 10, 9,10,12,12,13,12,11,10,11,12,13,14,13,12,11,
+ 12,13,14,15,14,13,12,13,14,16,16,13,12,11,12,13,
+ 15,13,13,12,11,12,13,13,12,12,10, 9,10,12,12,11,
+ 11, 9, 8, 9,11,11,12,11,10, 9,10,11,12,13,13,11,
+ 11,12,13,14,15,13,12,11,12,13,15,16,14,13,12,13,
+ 14,15,14,14,12,11,12,13,14,13,12,11,10,11,12,13,
+ 12,12,10, 9,10,12,12,13,12,11,10,11,12,13,14,13,
+ 12,12,12,14,14,15,14,13,12,13,14,16,17,15,14,13,
+ 14,15,16,16,14,14,13,13,14,15,14,14,12,11,12,13,
+ 14,14,13,12,11,11,13,13,14,13,12,11,12,13,14,16,
+ 14,13,13,13,14,16,16,16,14,14,14,16,16,18,16,16,
+ 15,16,16,17,17,15,14,13,14,15,17,16,14,13,12,13,
+ 14,16,15,14,12,11,12,14,16,16,14,13,12,13,14,16,
+ 18,16,14,13,14,16,17,17,17,16,16,16,17,17,16,15,
+ 14,14,14,16,17,16,14,13,12,13,14,16,14,13,11,10,
+ 11,13,15,14,12,11,10,11,12,14,15,13,11,10,11,13,
+ 15,15,14,13,12,13,14,15,17,16,14,14,14,15,17,15,
+ 14,13,12,13,14,16,14,13,12,11,12,13,14,13,12,11,
+ 10,11,12,13,12,11,10, 9,10,11,12,13,12,11,10,11,
+ 12,13,14,13,12,11,12,13,14,16,14,13,12,13,14,16,
+ 14,13,11,10,11,13,15,13,12,11,10,11,12,13,11,11,
+ 9, 8, 9,11,11,10,10, 9, 8, 9,10,10,11,11, 9, 9,
+ 9,11,11,13,12,11,10,11,12,13,14,13,11,11,11,13,
+ 14,14,12,10,10,11,12,14,12,11,10, 9,10,11,12,10,
+ 10, 9, 8, 8,10,10, 9, 9, 8, 7, 8, 9, 9,10,10, 9,
+ 8, 9,10,10,12,11,10, 9,10,11,12,14,12,10, 9,10,
+ 12,14,14,13,11,11,11,12,15,13,12,11,10,11,12,13,
+ 11,11, 9, 9, 9,11,11,10,10, 9, 8, 9,10,10,11,11,
+ 9, 9, 9,11,11,13,12,11,10,11,12,13,14,13,11,11,
+ 11,13,14,16,14,13,12,13,14,15,14,13,12,11,12,13,
+ 14,13,12,11,10,11,12,13,12,11,10, 9,10,12,12,13,
+ 12,11,10,11,12,13,14,13,12,11,12,13,14,15,14,13,
+ 12,13,14,16,17,16,15,14,14,15,17,15,14,13,12,13,
+ 14,15,14,13,11,10,11,13,15,14,12,10,10,11,12,14,
+ 14,13,11,10,11,13,14,16,14,13,12,13,14,15,18,16,
+ 15,14,15,16,17,16,15,14,13,14,15,16,15,13,12,11,
+ 12,14,15,13,12,10, 9,10,12,14,13,11,10, 8,10,11,
+ 13,14,12,10, 9,10,12,14,15,13,12,11,12,13,15,16,
+ 15,14,13,14,15,17,15,13,12,11,12,13,15,13,12,11,
+ 10,11,13,13,12,11,10, 9,10,11,12,11,11, 9, 8, 9,
+ 11,11,12,12,10, 9,10,11,12,13,12,11,11,11,13,13,
+ 15,13,12,11,12,13,15,14,12,10, 9,10,12,14,12,11,
+ 10, 9,10,11,12,10,10, 8, 8, 8,10,10, 9, 9, 8, 7,
+ 8, 9, 9,10,10, 8, 8, 8,10,10,12,11,10, 9,10,11,
+ 12,13,12,10, 9,10,12,13,12,11, 9, 8, 9,11,13,11,
+ 10, 9, 8, 9,10,11, 9, 9, 8, 7, 8, 9, 9, 8, 8, 7,
+ 5, 7, 8, 8, 9, 9, 8, 7, 8, 9, 9,11,11, 9, 8, 9,
+ 10,11,13,11, 9, 8, 9,11,13,14,12,10, 9,10,12,14,
+ 12,11,10, 9,10,11,12,10,10, 8, 8, 9,10,10, 9, 9,
+ 8, 7, 8, 9, 9,10,10, 8, 8, 8,10,10,12,11,10, 9,
+ 10,11,12,14,12,10, 9,10,12,13,15,13,12,11,12,13,
+ 15,13,13,11,11,11,12,13,12,11,10, 9,10,11,12,11,
+ 11, 9, 8, 9,11,11,12,11,10, 9,10,11,12,14,13,11,
+ 11,11,12,13,15,13,12,11,12,13,15,16,15,14,13,14,
+ 15,16,15,13,12,11,12,13,15,14,12,10, 9,10,12,14,
+ 13,11,10, 8,10,11,13,14,12,11, 9,10,12,14,15,14,
+ 12,11,12,13,15,16,15,14,13,14,15,16,17,16,14,14,
+ 15,16,16,16,14,13,12,13,14,16,15,13,11,10,11,13,
+ 15,14,12,11,10,11,12,14,15,13,11,10,11,13,14,15,
+ 14,13,12,13,14,16,17,15,15,14,14,16,17,16,14,13,
+ 12,13,14,16,14,13,12,11,12,13,14,13,12,11,10,11,
+ 12,13,12,12,10, 9,10,11,12,13,12,11,10,11,12,13,
+ 14,13,12,11,12,13,14,16,14,13,12,13,14,15,14,13,
+ 11,11,11,13,15,13,12,11,10,11,12,13,11,11, 9, 9,
+ 9,11,11,10,10, 9, 8, 9,10,10,11,11, 9, 9, 9,11,
+ 11,13,12,11,10,11,12,13,14,13,11,10,11,13,14,14,
+ 12,10,10,10,12,14,12,11,10, 9,10,11,12,10,10, 9,
+ 8, 9,10,10, 9, 9, 8, 7, 8, 9, 9,10,10, 9, 8, 9,
+ 10,10,12,11,10, 9,10,11,12,14,12,11,10,10,12,14,
+ 14,13,11,10,11,13,14,13,12,11,10,11,12,13,11,11,
+ 9, 9, 9,11,11,10,10, 9, 8, 9,10,10,11,11, 9, 9,
+ 9,11,11,13,12,11,10,11,12,13,14,13,11,10,11,12,
+ 14,16,14,13,12,13,14,16,14,13,12,11,12,13,14,12,
+ 12,11,10,11,12,13,12,12,10, 9,10,12,12,13,12,11,
+ 10,11,12,13,14,13,12,11,12,13,14,16,14,13,12,13,
+ 14,16,19,16,15,14,14,15,17,16,14,13,12,13,14,16,
+ 14,13,11,10,11,13,15,14,12,11, 9,10,12,14,15,13,
+ 11,10,11,13,15,16,14,13,12,13,14,16,17,17,15,14,
+ 14,15,17,18,16,16,15,15,17,19,17,15,14,13,14,15,
+ 18,16,14,13,12,13,14,15,15,14,12,11,12,14,15,16,
+ 14,13,12,13,14,16,16,15,14,13,14,15,16,18,16,16,
+ 15,16,18,18,16,15,14,14,14,15,17,16,15,14,13,13,
+ 14,16,14,13,12,12,12,13,14,14,13,11,11,11,13,13,
+ 14,13,12,11,12,14,14,15,14,13,13,13,15,15,16,15,
+ 14,13,14,16,17,16,14,13,12,13,14,16,14,13,12,11,
+ 12,13,14,13,12,11,10,11,12,13,12,12,10, 9,10,12,
+ 12,13,12,11,10,11,12,13,14,13,12,11,12,14,14,16,
+ 14,13,12,13,15,16,15,14,12,11,12,13,15,13,13,11,
+ 11,11,13,13,12,11,10, 9,10,11,12,11,11, 9, 8, 9,
+ 11,11,12,12,10, 9,10,12,12,13,13,11,11,11,13,13,
+ 15,14,12,11,12,14,15,16,14,13,12,13,14,16,14,13,
+ 12,11,12,13,14,13,12,11,10,11,12,13,12,11,10, 9,
+ 10,12,12,13,12,11,10,11,12,13,14,13,12,12,12,13,
+ 14,16,14,13,12,13,14,16,16,15,14,14,14,16,16,16,
+ 14,13,13,13,15,16,14,13,12,11,12,13,14,13,13,11,
+ 11,11,13,14,14,13,12,11,12,13,14,15,15,13,13,13,
+ 14,15,16,16,14,13,14,15,16,18,17,16,15,16,17,19,
+ 17,15,14,13,14,16,17,16,14,13,12,13,14,16,15,13,
+ 12,11,12,13,15,16,14,13,12,13,14,16,17,15,14,13,
+ 14,15,17,18,17,15,15,16,16,18,20,18,17,18,17,18,
+ 19,18,17,16,15,16,17,18,17,16,15,14,15,16,18,16,
+ 15,14,13,14,15,16,17,16,15,14,14,16,17,18,16,15,
+ 15,16,17,18,19,17,16,16,17,19,18,18,18,16,15,16,
+ 17,18,16,15,14,14,14,15,17,16,14,13,12,13,14,17,
+ 15,13,12,11,12,14,15,16,14,13,12,13,14,16,17,16,
+ 14,13,14,15,17,19,17,16,15,16,16,18,17,16,15,14,
+ 15,15,17,16,14,13,12,13,14,16,15,13,11,11,11,13,
+ 14,14,12,10, 9,10,12,14,15,13,11,11,11,13,15,16,
+ 15,13,12,13,14,16,17,16,14,14,14,16,17,16,15,14,
+ 13,14,15,16,15,14,12,11,12,14,15,14,12,11,10,11,
+ 12,14,13,11,10, 8,10,11,13,14,12,11,10,11,12,14,
+ 15,13,12,11,12,14,15,17,15,14,13,14,15,16,18,16,
+ 14,14,14,16,17,15,14,13,12,13,14,16,15,13,11,10,
+ 11,13,14,14,12,10, 9,11,12,14,15,13,11,10,11,13,
+ 15,16,14,13,12,13,14,15,16,16,15,14,14,16,19,19,
+ 18,16,15,16,17,18,18,16,14,14,14,15,17,16,14,13,
+ 12,13,14,16,15,13,12,11,12,13,15,16,14,13,12,13,
+ 14,16,16,16,14,13,14,16,16,18,17,16,15,16,16,20,
+ 19,17,17,16,18,17,19,17,17,16,15,16,17,20,17,16,
+ 15,14,15,16,18,16,15,14,13,14,15,17,17,16,14,14,
+ 15,16,17,18,17,16,15,16,17,19,20,18,17,16,18,17,
+ 17,
+};
+
+static double _vq_quantthresh_res0a_4[] = {
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+};
+
+static long _vq_quantmap_res0a_4[] = {
+ 0, 1, 2, 3, 4, 5, 6,
+};
+
+static encode_aux_threshmatch _vq_aux_res0a_4 = {
+ _vq_quantthresh_res0a_4,
+ _vq_quantmap_res0a_4,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0a_4 = {
+ 4, 2401,
+ _vq_lengthlist_res0a_4,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0a_4,
+ NULL,
+ &_vq_aux_res0a_4
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0a_5.vqh b/include/vorbis/book/res0a_5.vqh
new file mode 100644
index 00000000..8b90e46c
--- /dev/null
+++ b/include/vorbis/book/res0a_5.vqh
@@ -0,0 +1,98 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0a_5_VQH_
+#define _V_res0a_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0a_5[] = {
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+};
+
+static long _vq_lengthlist_res0a_5[] = {
+ 15,14,13,14,16,14,12,11,12,14,13,12,11,12,13,14,
+ 12,12,12,14,16,14,13,14,16,14,12,12,12,14,12,10,
+ 9,11,13,11,10, 8,10,12,12,10,10,10,12,14,12,12,
+ 12,14,13,12,11,12,13,11,10, 9,10,12,11, 8, 7, 9,
+ 11,11,10, 8,10,12,13,12,11,11,13,14,12,12,12,14,
+ 12,11,10,10,12,12,10, 8,10,11,12,10,10,11,12,14,
+ 12,12,12,14,15,14,13,14,15,14,12,11,12,14,13,11,
+ 11,12,13,14,12,12,12,14,15,14,13,14,16,13,12,11,
+ 12,14,12,10, 9,10,12,12,10, 9,10,12,13,11,10,11,
+ 12,14,12,12,12,14,12,10,10,11,12,10, 9, 8, 9,11,
+ 10, 8, 7, 8,10,11, 9, 8, 9,10,12,10,10,10,12,11,
+ 10, 9,10,12,10, 8, 7, 8,10, 8, 7, 6, 7, 8, 9, 8,
+ 7, 8, 9,12,10, 9,10,12,12,11,10,10,12,11, 9, 8,
+ 9,10,10, 8, 7, 8,10,10, 9, 8, 9,10,12,10,10,10,
+ 12,14,12,12,12,13,12,10,10,10,12,12,10, 8,10,12,
+ 12,10,10,10,12,14,12,12,12,14,13,11,11,12,13,11,
+ 10, 8,10,12,11, 9, 7, 9,11,12,10, 8,10,12,13,11,
+ 11,12,13,11, 9, 8,10,11, 9, 8, 7, 8, 9, 8, 7, 6,
+ 7, 8, 9, 8, 7, 8, 9,11, 9, 9, 9,12,10, 8, 7, 8,
+ 11, 8, 7, 6, 7, 8, 7, 6, 4, 6, 7, 8, 7, 6, 7, 8,
+ 10, 8, 7, 8,10,11,10, 9, 9,11, 9, 8, 7, 8, 9, 8,
+ 7, 6, 7, 8, 9, 8, 7, 8, 9,11, 9, 9, 9,11,13,12,
+ 11,11,13,12,10, 8,10,12,11, 8, 7, 9,11,11,10, 8,
+ 10,11,13,12,11,11,13,14,12,11,12,14,12,11,10,10,
+ 12,12,10, 9,10,11,12,10,10,10,12,14,12,11,12,14,
+ 12,10,10,11,12,10, 9, 8, 9,10,10, 8, 7, 8, 9,10,
+ 9, 8, 9,10,12,10,10,11,12,11,10, 9,10,11, 9, 8,
+ 7, 8,10, 8, 7, 6, 7, 8, 9, 8, 7, 8, 9,12,10, 9,
+ 10,11,12,10,10,10,12,10, 9, 8, 9,10,10, 8, 7, 8,
+ 10,10, 9, 8, 9,10,12,10,10,10,12,14,12,12,12,14,
+ 12,10,10,11,12,12,10, 9,10,12,12,10, 9,10,12,14,
+ 12,11,12,14,15,14,13,14,15,14,12,11,12,14,13,11,
+ 11,11,13,14,12,12,12,14,15,14,13,14,16,14,12,12,
+ 12,14,12,10, 9,10,12,12,10, 8,10,12,12,10,10,10,
+ 12,14,12,12,12,14,13,12,11,12,13,12,10, 8,10,12,
+ 11, 9, 7, 8,11,12,10, 9,10,11,13,12,11,12,13,14,
+ 12,12,12,14,12,10, 9,11,12,12, 9, 8,10,12,12,10,
+ 10,10,12,14,12,11,12,14,16,14,13,14,16,14,12,12,
+ 12,14,13,12,10,12,13,14,12,11,12,14,16,14,13,14,
+ 15,
+};
+
+static double _vq_quantthresh_res0a_5[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0a_5[] = {
+ 0, 1, 2, 3, 4,
+};
+
+static encode_aux_threshmatch _vq_aux_res0a_5 = {
+ _vq_quantthresh_res0a_5,
+ _vq_quantmap_res0a_5,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0a_5 = {
+ 4, 625,
+ _vq_lengthlist_res0a_5,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0a_5,
+ NULL,
+ &_vq_aux_res0a_5
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0a_6.vqh b/include/vorbis/book/res0a_6.vqh
new file mode 100644
index 00000000..6902a34c
--- /dev/null
+++ b/include/vorbis/book/res0a_6.vqh
@@ -0,0 +1,62 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0a_6_VQH_
+#define _V_res0a_6_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0a_6[] = {
+ 0,
+ 1,
+ 2,
+};
+
+static long _vq_lengthlist_res0a_6[] = {
+ 10, 8,10, 8, 7, 8,10, 8,10, 8, 7, 8, 7, 4, 7, 8,
+ 7, 8,10, 8,10, 8, 7, 8,10, 8,10, 8, 7, 8, 7, 5,
+ 7, 8, 7, 8, 6, 5, 7, 4, 2, 4, 7, 4, 6, 8, 7, 8,
+ 7, 5, 7, 8, 7, 8,10, 8,10, 8, 7, 8,10, 8,10, 8,
+ 7, 8, 7, 4, 7, 8, 7, 8,10, 8,10, 8, 7, 8,10, 8,
+ 10,
+};
+
+static double _vq_quantthresh_res0a_6[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0a_6[] = {
+ 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_aux_res0a_6 = {
+ _vq_quantthresh_res0a_6,
+ _vq_quantmap_res0a_6,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0a_6 = {
+ 4, 81,
+ _vq_lengthlist_res0a_6,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0a_6,
+ NULL,
+ &_vq_aux_res0a_6
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0b_0.vqh b/include/vorbis/book/res0b_0.vqh
new file mode 100644
index 00000000..8f8f4322
--- /dev/null
+++ b/include/vorbis/book/res0b_0.vqh
@@ -0,0 +1,132 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0b_0_VQH_
+#define _V_res0b_0_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0b_0[] = {
+ 0,
+ 8,
+ 14,
+ 20,
+ 25,
+ 30,
+ 34,
+ 37,
+ 40,
+ 42,
+ 44,
+ 46,
+ 48,
+ 50,
+ 52,
+ 54,
+ 56,
+ 58,
+ 60,
+ 63,
+ 66,
+ 70,
+ 75,
+ 80,
+ 86,
+ 92,
+ 100,
+};
+
+static long _vq_lengthlist_res0b_0[] = {
+ 19,19,19,19,19,19,19,19,19,19,18,17,16,14,17,18,
+ 18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
+ 19,18,18,19,17,18,17,15,13,16,17,18,17,17,17,19,
+ 19,19,19,19,19,19,19,19,19,19,17,17,17,17,17,18,
+ 16,15,14,12,13,15,16,16,16,17,18,18,19,19,19,19,
+ 19,19,19,18,17,16,16,15,16,15,15,15,14,12,10,12,
+ 13,14,15,16,16,16,16,18,19,19,19,19,16,17,15,16,
+ 15,13,13,13,13,13,13,12,11, 9,11,12,12,13,13,13,
+ 14,14,15,17,18,18,19,14,14,14,14,13,12,12,11,11,
+ 11,11,10, 9, 7, 9,10,11,11,11,11,12,12,13,16,17,
+ 17,17,14,14,14,14,13,11,11,11,11,11,11,10, 9, 8,
+ 9,10,11,11,11,11,11,12,13,15,16,18,18,14,14,13,
+ 13,13,11,11,11,11,11,11,10, 9, 8, 9,10,11,11,11,
+ 11,11,11,13,15,17,16,16,14,14,14,13,12,11,11,11,
+ 11,11,10,10, 9, 8, 9,10,10,11,11,11,11,11,13,15,
+ 16,16,17,13,14,14,14,12,11,11,11,10,10,10, 9, 9,
+ 7, 9, 9,10,10,10,11,11,11,12,14,15,17,16,13,14,
+ 14,13,12,10,10,10,10,10, 9, 9, 8, 7, 8, 9, 9,10,
+ 10,10,10,10,12,14,15,16,18,13,13,13,12,11, 9, 9,
+ 9, 9, 9, 9, 8, 7, 6, 7, 8, 9, 9, 9, 9, 9,10,11,
+ 13,15,18,17,13,13,12,11,10, 8, 8, 9, 8, 8, 8, 7,
+ 6, 5, 6, 7, 8, 8, 8, 9, 9, 8,10,12,14,15,17,12,
+ 12,10, 9, 8, 7, 7, 8, 7, 7, 6, 6, 5, 3, 4, 6, 7,
+ 7, 7, 8, 7, 7, 8, 9,11,12,13,13,13,12,11,10, 8,
+ 9, 9, 8, 8, 8, 7, 6, 5, 6, 7, 8, 8, 8, 9, 9, 8,
+ 10,12,13,15,16,13,14,13,12,11, 9,10, 9, 9, 9, 9,
+ 8, 7, 6, 7, 8, 9, 9, 9,10, 9, 9,11,13,15,16,18,
+ 13,13,13,13,12,10,10,10,10,10, 9, 9, 8, 7, 8, 9,
+ 9,10,10,10,10,10,12,14,15,16,19,13,14,13,14,12,
+ 11,11,11,10,10,10, 9, 9, 7, 9, 9,10,10,10,11,11,
+ 11,12,14,16,18,18,13,14,14,14,12,11,11,11,11,11,
+ 10,10, 9, 8, 9,10,10,11,11,11,11,11,13,15,16,18,
+ 17,14,14,13,14,13,11,11,11,11,11,10,10, 9, 8, 9,
+ 10,11,11,11,11,11,11,13,15,16,18,18,14,14,14,14,
+ 13,11,11,11,11,11,11,10, 9, 8, 9,10,11,11,11,11,
+ 11,12,13,15,16,18,17,14,14,14,13,13,12,12,11,11,
+ 11,11,10, 9, 7, 9,10,11,11,11,11,12,12,13,15,16,
+ 17,18,16,16,16,15,15,13,13,13,13,13,12,12,10, 9,
+ 11,12,13,13,13,13,13,14,15,18,18,19,19,18,18,17,
+ 18,16,16,16,17,15,16,14,14,12,10,12,13,15,15,15,
+ 15,16,17,17,19,18,19,19,19,19,19,19,18,18,17,18,
+ 18,16,16,16,14,11,14,15,16,17,17,16,17,17,19,19,
+ 19,19,19,19,19,19,19,19,18,18,18,16,18,19,16,16,
+ 13,15,16,17,18,19,18,18,18,19,19,19,19,19,19,19,
+ 19,19,19,18,18,19,19,18,18,16,17,14,16,18,18,19,
+ 18,19,19,19,19,19,19,19,19,
+};
+
+static double _vq_quantthresh_res0b_0[] = {
+ -46, -39, -33, -28, -23, -18, -14.5, -11.5,
+ -9, -7, -5, -3, -1, 1, 3, 5,
+ 7, 9, 11.5, 14.5, 18, 23, 28, 33,
+ 39, 46,
+};
+
+static long _vq_quantmap_res0b_0[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26,
+};
+
+static encode_aux_threshmatch _vq_aux_res0b_0 = {
+ _vq_quantthresh_res0b_0,
+ _vq_quantmap_res0b_0,
+ 27,
+ 27
+};
+
+static static_codebook _vq_book_res0b_0 = {
+ 2, 729,
+ _vq_lengthlist_res0b_0,
+ 1, -524746752, 1611661312, 7, 0,
+ _vq_quantlist_res0b_0,
+ NULL,
+ &_vq_aux_res0b_0
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0b_1.vqh b/include/vorbis/book/res0b_1.vqh
new file mode 100644
index 00000000..636dddcc
--- /dev/null
+++ b/include/vorbis/book/res0b_1.vqh
@@ -0,0 +1,85 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0b_1_VQH_
+#define _V_res0b_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0b_1[] = {
+ 0,
+ 3,
+ 6,
+ 8,
+ 10,
+ 12,
+ 14,
+ 16,
+ 18,
+ 20,
+ 22,
+ 24,
+ 26,
+ 29,
+ 32,
+};
+
+static long _vq_lengthlist_res0b_1[] = {
+ 14,13,13,13,13,12,10, 8,10,12,13,13,13,13,14,13,
+ 12,12,12,11,11, 9, 7, 9,11,11,12,12,12,13,13,12,
+ 12,12,11,11, 9, 7, 9,11,11,12,12,12,13,12,11,12,
+ 12,11,11, 9, 8, 9,11,12,12,12,12,12,12,11,11,11,
+ 11,10, 8, 7, 9,10,11,11,11,11,12,11,10,10,10,10,
+ 9, 8, 6, 7, 9,10,10,10,10,11, 9, 8, 8, 9, 8, 7,
+ 6, 4, 6, 7, 8, 9, 9, 8, 9, 8, 6, 7, 7, 7, 6, 4,
+ 2, 4, 6, 6, 7, 7, 6, 8, 9, 8, 9, 9, 8, 7, 6, 4,
+ 6, 7, 8, 9, 9, 8, 9,11,10,10,10,10, 9, 7, 6, 7,
+ 9,10,10,10,10,11,12,11,11,11,11,10, 9, 7, 8,10,
+ 11,11,11,11,12,12,12,12,12,11,11, 9, 8, 9,11,11,
+ 12,12,11,12,12,12,12,12,11,11, 9, 7, 9,11,11,12,
+ 12,12,12,13,12,12,12,12,11, 9, 7, 9,10,11,12,12,
+ 12,13,14,13,13,13,13,12,10, 8,10,12,13,13,13,13,
+ 14,
+};
+
+static double _vq_quantthresh_res0b_1[] = {
+ -14.5, -11.5, -9, -7, -5, -3, -1, 1,
+ 3, 5, 7, 9, 11.5, 14.5,
+};
+
+static long _vq_quantmap_res0b_1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14,
+};
+
+static encode_aux_threshmatch _vq_aux_res0b_1 = {
+ _vq_quantthresh_res0b_1,
+ _vq_quantmap_res0b_1,
+ 15,
+ 15
+};
+
+static static_codebook _vq_book_res0b_1 = {
+ 2, 225,
+ _vq_lengthlist_res0b_1,
+ 1, -527433728, 1611661312, 6, 0,
+ _vq_quantlist_res0b_1,
+ NULL,
+ &_vq_aux_res0b_1
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0b_2.vqh b/include/vorbis/book/res0b_2.vqh
new file mode 100644
index 00000000..48069951
--- /dev/null
+++ b/include/vorbis/book/res0b_2.vqh
@@ -0,0 +1,74 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0b_2_VQH_
+#define _V_res0b_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0b_2[] = {
+ 0,
+ 2,
+ 4,
+ 6,
+ 8,
+ 10,
+ 12,
+ 14,
+ 16,
+ 18,
+ 20,
+};
+
+static long _vq_lengthlist_res0b_2[] = {
+ 16,14,13,12,10, 8,10,12,13,14,16,14,13,12,10, 8,
+ 6, 8,10,12,13,14,13,12,11,10, 8, 6, 8,10,11,12,
+ 13,12,10,10, 9, 7, 6, 7, 9,10,10,12,10, 8, 8, 7,
+ 6, 4, 5, 7, 8, 8,10, 7, 6, 6, 5, 4, 2, 4, 5, 6,
+ 6, 7,10, 8, 8, 7, 5, 4, 6, 7, 8, 8,10,12,10,10,
+ 9, 7, 6, 7, 9,10,10,12,13,12,11,10, 8, 6, 8,10,
+ 11,12,13,14,13,12,10, 8, 6, 8,10,12,13,14,16,14,
+ 14,12,10, 8,10,12,13,14,16,
+};
+
+static double _vq_quantthresh_res0b_2[] = {
+ -9, -7, -5, -3, -1, 1, 3, 5,
+ 7, 9,
+};
+
+static long _vq_quantmap_res0b_2[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10,
+};
+
+static encode_aux_threshmatch _vq_aux_res0b_2 = {
+ _vq_quantthresh_res0b_2,
+ _vq_quantmap_res0b_2,
+ 11,
+ 11
+};
+
+static static_codebook _vq_book_res0b_2 = {
+ 2, 121,
+ _vq_lengthlist_res0b_2,
+ 1, -529268736, 1611661312, 5, 0,
+ _vq_quantlist_res0b_2,
+ NULL,
+ &_vq_aux_res0b_2
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0b_3.vqh b/include/vorbis/book/res0b_3.vqh
new file mode 100644
index 00000000..e272e46c
--- /dev/null
+++ b/include/vorbis/book/res0b_3.vqh
@@ -0,0 +1,211 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0b_3_VQH_
+#define _V_res0b_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0b_3[] = {
+ 0,
+ 2,
+ 4,
+ 6,
+ 8,
+ 10,
+ 12,
+};
+
+static long _vq_lengthlist_res0b_3[] = {
+ 21,21,20,20,21,21,21,21,19,18,18,19,20,19,20,19,
+ 18,17,18,19,20,20,19,17,15,17,18,19,20,20,18,17,
+ 19,18,19,20,20,20,19,19,20,20,20,20,20,19,20,19,
+ 20,20,20,18,19,19,19,20,20,19,17,17,19,19,19,19,
+ 18,16,15,16,18,19,18,17,15,13,15,17,19,19,18,16,
+ 15,16,17,19,19,19,18,17,18,19,20,19,19,20,19,20,
+ 19,20,20,19,20,17,18,19,20,19,19,16,15,17,19,18,
+ 18,17,14,13,14,17,17,17,15,13,11,13,15,17,19,17,
+ 14,13,14,16,18,19,18,17,15,17,18,20,19,19,18,17,
+ 19,19,20,19,19,17,16,18,19,19,18,18,15,13,15,17,
+ 20,17,15,13,11,13,15,17,15,13,11, 9,11,13,15,17,
+ 15,13,11,13,15,17,19,17,15,13,15,16,19,19,18,17,
+ 16,17,20,20,20,20,18,18,18,18,20,20,17,16,15,16,
+ 19,18,18,16,14,13,14,16,17,16,15,13,11,13,15,16,
+ 19,17,14,13,14,16,18,19,18,16,15,17,19,18,19,19,
+ 18,16,19,19,20,20,20,20,18,19,19,20,20,19,18,17,
+ 18,18,20,19,17,17,14,16,17,19,18,18,15,13,15,17,
+ 19,19,18,16,15,16,18,19,20,20,18,17,19,19,20,20,
+ 20,20,17,20,20,20,20,20,19,20,20,19,20,19,20,19,
+ 19,19,20,20,20,20,19,16,18,19,20,20,19,17,16,17,
+ 19,19,20,19,19,16,18,19,20,20,20,20,18,20,19,20,
+ 20,20,20,19,20,20,20,20,20,18,18,20,20,20,20,19,
+ 17,16,19,19,19,19,18,16,15,16,18,20,19,17,15,13,
+ 15,17,19,20,19,16,15,17,18,20,19,19,18,18,18,20,
+ 20,20,19,18,19,19,20,20,20,19,19,17,18,19,20,19,
+ 17,15,14,17,17,18,19,16,14,13,14,17,18,17,15,13,
+ 11,13,15,17,18,16,14,13,14,16,18,20,18,16,15,16,
+ 17,19,20,19,19,17,18,19,19,19,17,16,15,17,19,19,
+ 19,16,14,13,14,16,18,17,14,12,10,12,14,16,15,13,
+ 10, 9,11,13,15,17,14,12,11,12,14,16,18,16,14,13,
+ 14,17,17,19,18,17,15,16,18,19,19,17,15,13,15,17,
+ 19,17,15,13,11,13,15,18,15,13,11, 9,11,13,15,13,
+ 11, 9, 7, 9,11,13,15,13,11, 9,11,13,15,18,15,13,
+ 11,13,15,17,18,18,15,14,15,17,18,20,18,17,16,16,
+ 18,19,20,16,14,13,14,16,18,17,15,12,10,12,14,17,
+ 15,13,11, 9,10,13,15,17,14,12,11,12,14,16,19,16,
+ 14,13,14,17,18,20,19,16,15,16,17,20,20,19,19,17,
+ 18,19,20,19,18,16,14,16,16,20,19,16,14,13,14,16,
+ 18,17,15,13,11,13,15,17,17,16,14,13,14,16,19,19,
+ 19,16,15,16,17,19,19,19,18,18,18,19,20,20,20,19,
+ 18,20,20,20,20,19,18,17,18,19,20,19,18,16,15,17,
+ 18,20,17,18,15,13,15,17,18,19,18,16,15,16,17,20,
+ 20,20,19,18,17,18,20,20,20,19,19,19,20,20,20,18,
+ 17,17,18,19,20,20,17,16,15,17,18,19,18,16,14,13,
+ 14,16,19,17,15,13,11,13,15,17,19,17,14,13,14,16,
+ 19,19,19,16,15,16,18,20,20,19,19,17,19,19,20,18,
+ 17,16,15,16,17,19,19,16,14,13,14,16,18,16,14,12,
+ 10,12,14,16,15,13,11, 9,10,13,15,17,14,12,10,12,
+ 14,17,17,16,14,13,14,16,19,20,18,16,15,16,18,18,
+ 17,16,15,13,14,17,18,16,14,12,11,12,14,16,14,12,
+ 10, 9,10,12,14,13,11, 9, 7, 9,10,13,15,12,10, 9,
+ 10,12,14,16,14,12,11,12,14,16,19,16,14,13,14,16,
+ 18,17,15,13,11,13,15,17,15,13,11, 9,11,13,15,12,
+ 10, 9, 7, 9,10,13,11, 9, 7, 6, 7, 9,11,13,10, 9,
+ 7, 9,10,13,15,12,11, 9,11,13,15,17,15,13,11,13,
+ 15,17,18,16,14,13,14,16,18,17,14,12,10,12,14,17,
+ 14,12,10, 9,10,12,14,13,10, 9, 7, 9,11,13,14,12,
+ 10, 9,10,12,14,17,14,12,11,12,14,16,18,16,14,13,
+ 14,16,19,19,20,16,15,16,18,18,18,16,14,13,14,15,
+ 17,17,14,12,10,12,14,16,15,13,11, 9,11,13,15,16,
+ 14,12,10,12,14,16,17,16,14,13,14,15,19,19,19,16,
+ 15,16,18,19,20,19,19,16,18,18,20,19,18,17,15,16,
+ 18,19,19,16,14,12,14,16,19,18,15,13,11,13,15,16,
+ 18,16,14,13,14,16,18,20,18,16,15,16,18,19,20,19,
+ 20,17,17,19,20,20,19,17,15,17,18,20,18,17,15,13,
+ 15,17,18,17,15,12,11,13,15,17,15,13,11, 9,11,13,
+ 15,17,15,13,11,12,15,17,19,17,14,13,15,16,18,20,
+ 19,17,15,18,18,19,17,16,15,13,15,16,19,16,15,13,
+ 11,13,15,17,15,13,10, 9,10,13,15,13,11, 9, 7, 9,
+ 11,13,14,13,10, 9,10,13,15,17,15,13,11,13,15,16,
+ 18,17,15,13,15,17,19,17,15,12,11,12,15,16,14,12,
+ 10, 9,10,12,15,13,10, 9, 7, 9,10,12,11, 9, 7, 5,
+ 7, 9,11,12,10, 9, 7, 9,10,12,14,12,10, 9,10,13,
+ 14,17,15,12,11,13,15,16,15,13,11, 8,11,13,15,13,
+ 11, 9, 7, 9,11,13,10, 8, 7, 5, 7, 8,10, 8, 6, 5,
+ 3, 5, 6, 8,10, 8, 7, 5, 7, 8,10,13,11, 9, 7, 9,
+ 11,13,15,13,11, 8,11,13,15,17,15,13,11,12,15,16,
+ 15,12,10, 9,10,12,15,12,10, 9, 7, 9,10,12,11, 9,
+ 7, 5, 7, 9,11,12,10, 9, 7, 9,10,12,14,13,10, 9,
+ 10,12,14,16,15,12,11,12,15,16,19,17,15,13,15,17,
+ 18,17,15,12,11,13,15,17,15,13,10, 9,11,13,15,13,
+ 11, 9, 7, 9,11,13,15,13,10, 9,10,12,15,17,15,13,
+ 11,12,14,17,18,17,15,13,15,17,18,20,19,17,15,17,
+ 19,20,19,17,15,13,15,17,18,17,15,13,11,13,15,17,
+ 15,13,11, 8,11,13,15,16,15,13,11,13,15,16,19,17,
+ 15,13,15,16,18,20,18,16,15,16,19,18,20,19,19,17,
+ 17,20,20,19,18,17,15,17,19,19,18,16,14,13,14,17,
+ 18,16,15,13,11,13,15,17,18,17,14,13,14,16,19,18,
+ 18,16,15,16,18,18,20,20,18,18,17,19,20,19,17,16,
+ 15,17,19,19,18,16,14,13,14,17,18,16,14,12,10,12,
+ 14,16,15,13,11, 9,11,13,15,16,14,12,10,12,14,17,
+ 18,16,14,12,14,16,18,18,18,17,15,16,19,19,19,16,
+ 15,13,14,16,19,16,14,12,11,12,14,16,14,12,10, 9,
+ 10,12,14,12,11, 9, 7, 9,10,12,14,12,10, 9,10,12,
+ 14,16,14,12,11,12,14,17,19,16,14,13,14,17,18,17,
+ 15,13,11,13,15,17,15,13,11, 9,10,12,14,12,10, 9,
+ 7, 9,10,12,11, 9, 7, 6, 7, 9,11,12,10, 9, 7, 9,
+ 10,12,15,13,10, 9,10,13,15,16,15,13,11,13,15,17,
+ 19,16,14,13,14,16,18,16,14,12,11,12,14,16,14,12,
+ 10, 9,10,12,14,13,11, 9, 7, 9,10,13,14,12,10, 9,
+ 10,12,14,16,14,12,10,12,14,16,18,16,14,13,14,16,
+ 18,19,17,16,16,16,19,20,17,16,14,13,14,16,18,16,
+ 14,12,10,12,14,17,15,13,11, 9,11,13,15,16,14,12,
+ 10,12,14,16,18,16,14,12,13,16,19,19,18,17,15,16,
+ 17,20,20,20,17,17,18,20,20,20,18,16,15,16,18,19,
+ 18,16,14,13,14,16,18,17,15,13,11,13,15,17,18,16,
+ 14,13,15,16,19,19,18,17,15,16,19,20,20,18,18,18,
+ 18,19,19,20,19,19,19,20,20,19,20,18,19,17,18,18,
+ 19,20,18,16,15,16,19,18,19,17,15,13,15,16,20,20,
+ 18,16,15,16,19,19,20,18,18,17,18,19,20,20,19,19,
+ 18,20,20,20,19,19,17,17,18,19,20,18,19,16,15,16,
+ 19,20,18,16,14,13,14,16,18,16,15,13,11,13,15,17,
+ 19,16,14,13,14,16,18,18,17,16,15,16,18,19,19,20,
+ 19,17,18,19,20,20,18,17,15,16,18,18,19,16,14,13,
+ 14,16,18,17,14,12,11,12,14,17,15,13,11, 9,11,13,
+ 15,17,14,12,10,12,14,16,18,16,14,13,14,16,17,19,
+ 18,16,15,16,19,20,17,17,15,13,15,17,19,16,15,13,
+ 11,13,15,17,15,13,11, 9,11,13,15,13,11, 9, 7, 9,
+ 11,13,15,13,11, 9,11,13,15,17,15,13,11,13,15,17,
+ 19,18,15,14,15,17,18,20,18,16,15,17,17,19,18,16,
+ 14,13,14,16,19,16,14,12,11,12,15,16,15,13,10, 9,
+ 11,13,15,16,14,12,10,12,14,16,18,16,14,13,14,16,
+ 19,20,19,17,16,16,19,19,19,19,18,16,18,18,20,20,
+ 17,16,14,16,18,19,19,16,14,13,14,16,19,17,15,13,
+ 11,13,15,18,17,16,14,12,14,16,18,20,18,16,15,15,
+ 16,20,20,19,17,17,18,20,20,20,20,20,19,20,20,20,
+ 19,19,17,17,19,20,20,19,18,16,15,16,18,20,20,17,
+ 15,13,15,17,19,20,18,17,15,16,18,20,20,20,18,18,
+ 17,18,20,20,20,19,18,20,19,20,20,20,19,20,20,20,
+ 20,20,20,20,18,20,20,20,20,20,19,17,19,19,20,20,
+ 18,17,15,17,19,19,20,19,18,17,18,19,20,20,20,19,
+ 18,19,20,20,20,19,20,20,20,20,20,20,20,20,18,20,
+ 20,20,20,19,18,17,18,20,20,19,18,16,15,17,18,20,
+ 18,17,15,13,15,17,18,19,18,16,15,16,17,20,20,19,
+ 18,16,17,18,19,20,19,19,19,20,20,20,20,20,19,17,
+ 20,20,20,20,18,16,15,16,18,19,18,17,14,13,14,16,
+ 18,17,15,13,11,13,15,17,18,16,14,13,14,17,17,19,
+ 18,16,15,16,17,19,20,19,19,17,19,19,20,19,20,17,
+ 16,17,19,20,19,17,15,13,15,17,20,17,15,13,11,13,
+ 15,17,15,13,11, 9,11,13,15,16,15,13,11,13,15,17,
+ 18,18,15,13,15,18,19,19,19,17,16,17,18,20,19,19,
+ 17,17,19,19,20,20,18,17,15,16,18,20,18,16,14,13,
+ 14,16,19,17,15,13,11,13,15,16,18,16,14,13,14,16,
+ 19,19,18,16,15,17,18,20,20,20,18,17,19,19,20,20,
+ 20,19,18,20,20,19,20,19,19,17,19,20,20,19,18,16,
+ 15,17,19,19,18,18,15,13,15,17,20,19,19,16,15,16,
+ 17,20,19,19,17,17,17,19,20,20,20,19,20,19,19,20,
+ 20,20,20,20,20,20,20,20,20,20,20,19,19,20,20,19,
+ 18,17,17,20,20,19,18,18,15,17,19,19,18,19,19,16,
+ 19,19,20,20,20,19,19,19,20,20,20,20,19,20,19,20,
+ 20,
+};
+
+static double _vq_quantthresh_res0b_3[] = {
+ -5, -3, -1, 1, 3, 5,
+};
+
+static long _vq_quantmap_res0b_3[] = {
+ 0, 1, 2, 3, 4, 5, 6,
+};
+
+static encode_aux_threshmatch _vq_aux_res0b_3 = {
+ _vq_quantthresh_res0b_3,
+ _vq_quantmap_res0b_3,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0b_3 = {
+ 4, 2401,
+ _vq_lengthlist_res0b_3,
+ 1, -531103744, 1611661312, 4, 0,
+ _vq_quantlist_res0b_3,
+ NULL,
+ &_vq_aux_res0b_3
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0b_4.vqh b/include/vorbis/book/res0b_4.vqh
new file mode 100644
index 00000000..ff4cbdaa
--- /dev/null
+++ b/include/vorbis/book/res0b_4.vqh
@@ -0,0 +1,98 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0b_4_VQH_
+#define _V_res0b_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0b_4[] = {
+ 0,
+ 1,
+ 3,
+ 5,
+ 6,
+};
+
+static long _vq_lengthlist_res0b_4[] = {
+ 14,14,13,15,16,14,14,12,14,15,13,12, 9,12,13,14,
+ 14,12,14,15,15,15,13,15,16,15,13,12,14,15,14,12,
+ 10,13,14,12,11, 8,10,12,14,13,10,12,13,15,14,12,
+ 14,15,13,12,10,12,13,12,11, 8,11,12,10, 8, 6, 8,
+ 10,12,11, 8,11,12,13,12,10,12,13,14,14,12,14,15,
+ 14,13,11,13,14,12,11, 8,11,12,14,13,10,13,14,15,
+ 14,12,14,15,16,15,13,14,15,15,14,11,13,15,13,12,
+ 9,12,13,14,14,12,14,15,15,15,13,15,16,14,13,11,
+ 14,15,14,12,10,12,14,12,10, 8,10,12,14,12,11,12,
+ 14,15,14,12,13,14,13,12,10,13,14,12,12,10,12,13,
+ 11,10, 8,10,11,13,12,10,12,12,13,12,11,12,14,12,
+ 10, 8,11,12,10,10, 8,10,11, 8, 8, 5, 8, 8,11,10,
+ 8,10,10,11,11, 8,10,12,14,12,10,12,13,13,12,10,
+ 12,13,10,10, 8,10,11,12,12,10,12,13,13,13,11,13,
+ 14,15,13,11,13,14,13,13,10,13,14,12,10, 8,11,12,
+ 14,13,10,12,14,15,14,12,13,15,12,11, 9,12,13,12,
+ 10, 8,11,12, 9, 8, 6, 8, 9,12,10, 8,10,12,12,11,
+ 9,12,13,11,10, 8,10,11,10,10, 8,10,10, 8, 8, 5,
+ 8, 8,10,10, 8,10,10,11,10, 8,10,11, 9, 8, 6, 8,
+ 9, 8, 7, 5, 7, 8, 6, 5, 3, 5, 6, 8, 8, 5, 7, 8,
+ 9, 8, 6, 8, 9,11,10, 8,10,11,10,10, 8,10,10, 8,
+ 8, 5, 8, 8,10,10, 7,10,10,11,10, 8,10,11,13,12,
+ 9,11,13,11,10, 8,10,12,10, 8, 6, 8,10,12,10, 8,
+ 10,12,13,12, 9,12,12,15,14,12,13,15,14,12,11,13,
+ 14,12,10, 8,10,12,14,13,10,13,13,14,13,11,14,15,
+ 14,13,11,12,14,13,12,10,12,12,10,10, 8,10,10,13,
+ 12,10,12,13,13,12,10,13,14,12,10, 8,10,12,10,10,
+ 8,10,10, 8, 8, 5, 8, 8,11,10, 8,10,10,12,11, 8,
+ 11,12,14,13,10,12,14,12,12,10,12,13,10,10, 8,10,
+ 11,12,12,10,12,12,13,13,10,12,13,15,14,12,14,15,
+ 14,12,10,12,14,12,10, 8,11,12,14,13,10,12,14,15,
+ 14,12,13,14,16,15,13,15,16,15,13,12,14,15,13,12,
+ 9,12,13,15,13,11,13,15,15,14,13,15,16,15,14,12,
+ 14,15,14,13,11,13,14,12,11, 8,11,12,14,13,10,13,
+ 14,15,14,12,14,15,13,12,10,12,13,12,11, 8,10,12,
+ 10, 8, 6, 8,10,12,11, 8,11,12,13,12,10,12,13,15,
+ 14,12,14,15,14,13,10,13,14,12,10, 8,11,12,14,13,
+ 10,12,14,15,14,12,13,15,16,15,13,15,16,14,14,12,
+ 14,15,13,12, 9,12,13,15,14,11,13,15,16,15,13,14,
+ 15,
+};
+
+static double _vq_quantthresh_res0b_4[] = {
+ -2, -1, 1, 2,
+};
+
+static long _vq_quantmap_res0b_4[] = {
+ 0, 1, 2, 3, 4,
+};
+
+static encode_aux_threshmatch _vq_aux_res0b_4 = {
+ _vq_quantthresh_res0b_4,
+ _vq_quantmap_res0b_4,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0b_4 = {
+ 4, 625,
+ _vq_lengthlist_res0b_4,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0b_4,
+ NULL,
+ &_vq_aux_res0b_4
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0b_5.vqh b/include/vorbis/book/res0b_5.vqh
new file mode 100644
index 00000000..b7f8e9f4
--- /dev/null
+++ b/include/vorbis/book/res0b_5.vqh
@@ -0,0 +1,62 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/latticebuild
+
+ ********************************************************************/
+
+#ifndef _V_res0b_5_VQH_
+#define _V_res0b_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0b_5[] = {
+ 0,
+ 2,
+ 4,
+};
+
+static long _vq_lengthlist_res0b_5[] = {
+ 11, 9,12, 9, 7, 9,12, 9,12, 9, 7,10, 7, 4, 7, 9,
+ 7, 9,12, 9,11, 9, 7, 9,12, 9,12, 9, 7, 9, 7, 4,
+ 7, 9, 7, 9, 7, 4, 7, 4, 2, 4, 7, 4, 7, 9, 7, 9,
+ 7, 4, 7, 9, 7, 9,12, 9,12,10, 7, 9,11, 9,12, 9,
+ 7,10, 7, 4, 7,10, 7, 9,12, 9,12, 9, 7,10,12, 9,
+ 11,
+};
+
+static double _vq_quantthresh_res0b_5[] = {
+ -1, 1,
+};
+
+static long _vq_quantmap_res0b_5[] = {
+ 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_aux_res0b_5 = {
+ _vq_quantthresh_res0b_5,
+ _vq_quantmap_res0b_5,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0b_5 = {
+ 4, 81,
+ _vq_lengthlist_res0b_5,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0b_5,
+ NULL,
+ &_vq_aux_res0b_5
+};
+
+
+#endif
diff --git a/include/vorbis/book/res0b_6.vqh b/include/vorbis/book/res0b_6.vqh
new file mode 100644
index 00000000..35d34096
--- /dev/null
+++ b/include/vorbis/book/res0b_6.vqh
@@ -0,0 +1,166 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0b_6_VQH_
+#define _V_res0b_6_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0b_6[] = {
+ 0,
+ 1,
+ 2,
+};
+
+static long _vq_lengthlist_res0b_6[] = {
+ 10, 8,10, 8, 7, 8,10, 8,10, 8, 6, 8, 7, 0, 4, 8,
+ 7, 8,10, 8,10, 8, 6, 8,10, 8,10, 8, 7, 8, 7, 0,
+ 6, 8, 7, 8, 4, 0, 6, 0, 2, 0, 6, 0, 6, 8, 6, 8,
+ 7, 0, 3, 8, 4, 8,10, 8,10, 8, 6, 8,10, 8,10, 8,
+ 6, 8, 6, 0, 4, 8, 7, 8,10, 8,10, 8, 6, 8,10, 8,
+ 10,
+};
+
+static double _vq_quantthresh_res0b_6[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0b_6[] = {
+ 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0b_6 = {
+ _vq_quantthresh_res0b_6,
+ _vq_quantmap_res0b_6,
+ 3,
+ 3
+};
+
+static long _vq_ptr0_res0b_6[] = {
+ -1, -2, -3, -4, -5, 4, -7, 28,
+ 40, -10, -11, 10, 38, -14, -15, 28,
+ 40, -18, 38, 40, -21, -22, -23, 10,
+ 40, -26, -27, 36, 46, -30, 40, 46,
+ -33, 22, -35, 40, 46, -38, -39, -40,
+ 4, -42, 12, 22, -45, -46, -47, 12,
+ 42, -50, 40, 42, -53, 30, 40, -56,
+ -57, -58, 30, -60, 40, 58, -63, -64,
+ 36, 48, -67, -68, 40, 66, -71, 48,
+ -73, -74, -75, -76, 4, -78, 14, 22,
+ -81, -82, -83, 14, 44, -86, 40, 44,
+ -89, 32, 40, -92, -93, -94, 32, -96,
+ 40, 58, -99, -100, 38, 50, -103, -104,
+ 40, 68, -107, 50, -109, -110, -111, -112,
+ 4, -114, 34, 40, -117, -118, -119, -120,
+ 16, 40, 40, -124, 34, 22, -127, -128,
+ -129, 16, -131, -132, 16, 44, 40, 44,
+ -137, -138, -139, -140, 34, -142, 40, 58,
+ -145, 40, 44, -148, 40, 42, -151, -152,
+ 22, -154, 40, -156, -157, 40, 52, -160,
+ 44, 52, 22, -164, 40, -166, 40, 70,
+};
+
+static long _vq_ptr1_res0b_6[] = {
+ -72, -37, -20, -9, -6, 40, -8, 58,
+ 58, -13, -12, 40, 40, -17, -16, 64,
+ 64, -19, 64, 64, -32, -25, -24, 46,
+ 46, -29, -28, 64, 64, -31, 64, 64,
+ -34, 46, -36, 76, 76, -55, -44, -41,
+ 40, -43, 40, 40, -52, -49, -48, 48,
+ 48, -51, 48, 48, -54, 42, 42, -62,
+ -59, 58, 66, -61, 66, 66, -66, -65,
+ 66, 66, -70, -69, 76, 76, 66, 76,
+ -108, -91, -80, -77, 40, -79, 40, 40,
+ -88, -85, -84, 50, 50, -87, 50, 50,
+ -90, 44, 44, -98, -95, 58, 68, -97,
+ 68, 68, -102, -101, 68, 68, -106, -105,
+ 76, 76, 68, 76, -126, -116, -113, 40,
+ 58, -115, 58, 58, -125, -123, -122, -121,
+ 44, 44, 42, 40, 44, 40, -150, -136,
+ -130, 42, -134, -133, 52, 52, -135, 52,
+ -147, -144, -141, 58, 70, -143, 70, 70,
+ -146, 70, 70, -149, 70, 70, -162, -153,
+ 52, -155, 42, -159, -158, 70, 70, -161,
+ 70, 70, -163, -165, 58, -167, 76, 76,
+};
+
+static long _vq_p_res0b_6[] = {
+ 144, 152, 112, 16, 16, 16, 112, 112,
+ 160, 40, 40, 40, 152, 112, 112, 112,
+ 160, 152, 152, 160, 40, 40, 40, 40,
+ 160, 144, 144, 144, 184, 160, 160, 184,
+ 88, 88, 160, 160, 184, 48, 16, 16,
+ 16, 48, 48, 88, 48, 48, 48, 48,
+ 168, 160, 160, 168, 120, 120, 160, 120,
+ 120, 120, 120, 160, 160, 232, 144, 144,
+ 144, 192, 160, 160, 160, 264, 192, 192,
+ 152, 56, 16, 16, 16, 56, 56, 88,
+ 56, 56, 56, 56, 176, 160, 160, 176,
+ 128, 128, 160, 128, 128, 128, 128, 160,
+ 160, 232, 152, 152, 152, 200, 160, 160,
+ 160, 272, 200, 200, 16, 16, 16, 16,
+ 16, 136, 136, 160, 64, 64, 64, 64,
+ 64, 160, 160, 136, 136, 88, 136, 64,
+ 168, 64, 64, 64, 64, 176, 160, 176,
+ 136, 136, 136, 136, 136, 160, 160, 232,
+ 160, 160, 176, 160, 160, 168, 208, 88,
+ 88, 168, 160, 160, 160, 160, 208, 176,
+ 176, 208, 88, 232, 160, 160, 160, 280,
+};
+
+static long _vq_q_res0b_6[] = {
+ 176, 168, 144, 40, 112, 160, 160, 232,
+ 232, 112, 152, 160, 160, 152, 160, 256,
+ 256, 160, 256, 256, 88, 144, 160, 184,
+ 184, 160, 184, 256, 256, 184, 256, 256,
+ 160, 184, 184, 304, 304, 144, 120, 48,
+ 160, 88, 160, 160, 120, 160, 168, 192,
+ 192, 168, 192, 192, 160, 168, 168, 144,
+ 160, 232, 264, 232, 264, 264, 160, 192,
+ 264, 264, 192, 264, 304, 304, 264, 304,
+ 168, 152, 128, 56, 160, 88, 160, 160,
+ 128, 160, 176, 200, 200, 176, 200, 200,
+ 160, 176, 176, 152, 160, 232, 272, 232,
+ 272, 272, 160, 200, 272, 272, 200, 272,
+ 304, 304, 272, 304, 280, 64, 136, 160,
+ 232, 160, 232, 232, 88, 136, 168, 160,
+ 176, 176, 168, 160, 176, 160, 304, 136,
+ 208, 168, 160, 176, 208, 208, 208, 208,
+ 168, 176, 160, 232, 280, 232, 280, 280,
+ 176, 280, 280, 168, 280, 280, 304, 160,
+ 208, 208, 168, 176, 208, 280, 280, 208,
+ 280, 280, 304, 280, 232, 280, 304, 304,
+};
+
+static encode_aux_nearestmatch _vq_auxn_res0b_6 = {
+ _vq_ptr0_res0b_6,
+ _vq_ptr1_res0b_6,
+ _vq_p_res0b_6,
+ _vq_q_res0b_6,
+ 168, 168
+};
+
+static static_codebook _vq_book_res0b_6 = {
+ 4, 81,
+ _vq_lengthlist_res0b_6,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0b_6,
+ &_vq_auxn_res0b_6,
+ &_vq_auxt_res0b_6,
+};
+
+
+#endif
diff --git a/include/vorbis/book/resaux0_long.vqh b/include/vorbis/book/resaux0_long.vqh
new file mode 100644
index 00000000..b6b58568
--- /dev/null
+++ b/include/vorbis/book/resaux0_long.vqh
@@ -0,0 +1,289 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_long_VQH_
+#define _V_resaux0_long_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_long[] = {
+ 19,19,19,19,19,19,18,18,18,16,17,15,18,17,18,18,
+ 18,17,15,15,16,17,17,18,18,16,15,15,17,17,18,18,
+ 18,17,17,17,16,16,18,18,18,18,17,18,18,18,18,18,
+ 18,18,18,18,17,18,18,18,18,18,18,18,18,18,18,18,
+ 18,17,18,17,18,18,18,18,16,13,12,13,13,15,18,18,
+ 18,13,12,12,13,15,18,18,18,15,13,13,13,14,16,18,
+ 18,17,15,14,15,16,16,18,18,18,18,16,16,16,17,18,
+ 18,18,18,18,17,16,17,18,18,18,18,18,18,18,18,18,
+ 18,18,17,17,18,18,18,18,18,13,12,13,14,15,18,18,
+ 17,13,11,12,13,15,16,18,18,14,12,12,13,15,15,18,
+ 18,18,14,13,13,14,15,18,18,17,15,15,15,15,16,18,
+ 18,18,18,17,16,16,16,17,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,17,18,18,18,15,14,14,15,16,18,18,
+ 18,15,13,14,15,15,18,18,18,16,14,14,13,14,17,18,
+ 18,17,14,14,13,14,15,18,18,17,15,14,14,14,15,17,
+ 18,18,16,15,15,15,17,16,18,18,18,18,18,18,18,17,
+ 18,18,18,18,18,18,18,18,18,17,16,15,16,17,18,18,
+ 18,17,15,15,15,16,18,18,18,17,14,14,14,14,16,18,
+ 18,18,15,14,13,14,15,18,18,17,15,15,14,14,15,18,
+ 18,18,17,16,15,15,15,18,18,18,18,18,18,17,17,18,
+ 18,18,18,18,18,18,18,18,18,18,17,17,17,17,18,18,
+ 18,18,16,17,17,17,18,18,18,18,16,16,16,15,17,17,
+ 18,18,16,15,14,15,17,18,17,17,16,14,14,15,15,17,
+ 18,18,17,16,14,15,15,18,18,18,18,18,16,17,17,16,
+ 18,18,18,18,18,18,18,18,18,18,18,18,17,17,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,17,16,17,18,18,
+ 18,18,17,16,16,16,17,18,18,17,17,16,16,15,15,17,
+ 18,18,18,15,14,14,14,16,18,18,18,17,17,14,15,15,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,16,17,18,
+ 18,18,18,18,17,15,15,16,18,18,18,18,17,16,15,15,
+ 18,18,18,17,18,17,18,18,18,14,13,13,14,16,18,18,
+ 18,14,12,12,13,16,17,18,18,14,13,12,13,14,18,18,
+ 18,16,14,14,15,16,17,18,17,17,17,16,17,16,17,18,
+ 18,18,18,16,16,15,18,18,18,18,18,18,18,18,18,18,
+ 18,15,15,15,16,16,18,18,17,10, 9,10,11,14,17,18,
+ 16,10, 8, 9,11,13,17,18,16,12,10,10,11,13,18,18,
+ 16,13,12,11,12,14,16,17,18,16,14,14,14,16,17,18,
+ 18,18,18,16,17,16,16,18,18,18,18,18,18,18,18,18,
+ 18,17,16,16,15,16,17,18,17,11, 9,10,12,14,18,18,
+ 17,10, 8, 9,10,13,16,18,16,11, 9,10,11,13,16,18,
+ 17,13,11,11,12,13,14,18,18,16,13,13,13,14,15,18,
+ 18,17,16,15,15,16,16,18,18,18,18,18,18,18,17,18,
+ 18,16,17,17,16,16,18,18,18,13,12,12,13,15,18,18,
+ 17,12,10,11,11,13,16,18,18,13,11,11,11,13,15,18,
+ 18,15,12,11,11,13,15,18,18,16,14,13,13,13,15,18,
+ 18,17,16,15,14,15,15,18,18,18,18,17,17,18,18,18,
+ 18,18,16,17,17,17,18,18,18,16,14,14,14,16,18,18,
+ 18,16,12,12,13,14,16,18,17,16,13,12,12,13,16,18,
+ 18,16,13,12,12,13,15,17,17,18,14,13,13,13,15,18,
+ 18,18,16,16,14,14,15,16,18,18,18,18,17,17,16,17,
+ 18,18,18,17,18,18,18,18,18,17,16,17,16,17,17,18,
+ 18,18,16,15,15,16,18,18,18,17,15,14,14,14,16,18,
+ 18,17,14,14,14,14,16,18,18,18,15,14,14,14,15,17,
+ 18,18,17,16,14,14,14,16,18,18,18,18,18,17,16,17,
+ 18,18,18,17,18,18,18,18,18,18,18,18,17,18,18,18,
+ 18,18,17,17,18,18,18,18,18,18,17,16,16,17,17,18,
+ 18,18,17,17,16,16,16,18,18,18,16,16,15,13,15,18,
+ 18,18,17,16,15,13,13,14,18,18,18,18,17,14,13,14,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,17,16,18,
+ 18,18,18,18,17,16,16,16,18,18,18,18,17,16,15,16,
+ 18,18,18,17,16,18,18,18,17,14,14,15,15,17,18,18,
+ 16,15,13,13,15,17,18,18,17,15,14,14,13,15,17,18,
+ 18,17,15,14,15,15,18,18,18,17,16,16,15,17,18,18,
+ 18,18,17,18,16,17,18,18,18,18,18,18,18,18,18,18,
+ 18,17,17,17,16,17,18,18,17,12,11,11,13,16,18,18,
+ 15,12,10,10,12,14,16,18,15,14,12,11,12,13,16,18,
+ 15,15,13,13,13,14,16,18,17,17,16,15,15,15,17,18,
+ 17,18,18,18,17,18,17,18,18,18,18,18,18,18,18,18,
+ 18,17,17,15,15,15,18,18,17,12,10,11,12,14,17,18,
+ 15,12, 8, 8, 9,11,15,18,15,13, 9, 9,10,11,14,18,
+ 15,14,11,10,11,11,13,18,16,17,14,13,13,13,13,17,
+ 18,18,16,16,15,15,15,16,18,18,18,18,18,18,17,18,
+ 18,18,18,15,16,16,18,18,18,15,12,12,12,15,17,18,
+ 18,13, 9, 9,10,11,14,18,16,14,10, 9,10,10,13,18,
+ 17,15,11,10,10,10,12,17,18,17,14,13,11,11,11,15,
+ 18,18,18,15,15,14,13,15,18,18,18,18,18,17,17,17,
+ 18,18,17,18,17,17,17,18,18,17,15,14,14,16,18,18,
+ 17,14,11,10,11,12,15,18,18,15,11,10,10,11,13,18,
+ 17,15,12,11,10,10,12,17,17,16,13,12,11,11,11,16,
+ 18,17,16,15,14,13,12,15,18,18,18,18,18,18,16,14,
+ 18,18,18,18,17,17,17,18,18,18,17,16,16,16,17,18,
+ 18,17,13,12,12,13,15,18,17,16,13,12,12,12,13,17,
+ 18,17,13,12,12,12,13,17,17,17,13,13,12,12,12,17,
+ 18,16,14,14,13,12,12,14,18,18,18,18,17,16,15,16,
+ 18,18,18,18,18,18,17,18,18,18,18,18,17,17,18,18,
+ 18,18,18,16,15,15,16,17,18,18,16,16,15,14,15,18,
+ 18,18,15,15,14,14,14,17,18,17,15,14,13,13,13,16,
+ 18,18,15,14,12,12,12,13,18,17,18,16,14,13,13,14,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,17,17,18,17,18,18,18,18,16,16,16,16,
+ 18,18,17,18,15,14,13,14,18,18,18,18,16,14,14,14,
+ 18,18,18,18,18,17,18,18,18,15,17,16,17,18,18,18,
+ 18,17,16,17,17,16,17,18,18,18,16,15,16,17,18,18,
+ 17,17,17,17,16,16,18,18,18,18,18,17,18,18,17,18,
+ 18,18,18,18,18,17,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,17,16,18,17,18,18,15,15,15,14,16,17,18,
+ 17,16,13,13,13,14,18,18,16,17,14,13,13,14,17,18,
+ 17,17,15,14,14,15,16,17,18,17,17,16,15,16,17,18,
+ 18,18,18,18,17,17,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,17,17,17,17,18,18,15,13,13,13,15,18,18,
+ 16,13,10, 9,10,11,14,18,16,14,10,10,10,11,13,18,
+ 17,15,12,10,10,11,12,18,17,18,14,13,12,12,13,16,
+ 18,17,17,15,15,14,15,16,18,18,18,18,18,18,18,17,
+ 18,18,17,18,15,15,17,18,18,17,14,14,13,15,17,18,
+ 18,14,10, 9,10,11,13,18,17,14,10, 9, 9,10,12,17,
+ 17,16,11,10, 9, 9,11,17,17,17,13,12,10,10,11,15,
+ 18,18,16,14,13,12,12,14,18,18,18,18,17,17,17,16,
+ 18,18,18,17,16,16,18,18,18,18,15,14,15,15,16,18,
+ 16,16,11,10,10,11,14,18,18,15,11,10, 9,10,11,18,
+ 17,15,11,10, 9, 9,10,16,18,16,12,11,10, 9,10,14,
+ 18,18,15,13,12,11,10,13,18,18,18,17,18,15,15,15,
+ 18,18,18,17,16,16,17,18,18,18,16,16,15,17,15,18,
+ 18,17,13,13,12,12,14,17,17,16,13,12,11,11,12,17,
+ 18,16,13,11,10,10,11,15,18,17,13,11,10,10,10,14,
+ 18,17,14,13,11,11,10,12,18,18,17,17,16,15,14,14,
+ 18,18,18,17,17,17,18,18,18,18,18,18,17,16,16,18,
+ 18,18,17,16,14,14,15,17,17,18,16,15,14,13,13,15,
+ 18,18,14,14,13,12,12,15,18,17,14,13,12,11,11,14,
+ 18,17,14,13,12,11,10,12,18,18,17,16,14,14,13,13,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,17,18,18,18,18,18,18,17,17,17,
+ 18,18,18,18,18,16,17,17,18,18,18,17,16,15,15,15,
+ 18,18,18,16,15,14,13,14,18,18,18,17,16,15,14,15,
+ 18,18,18,18,18,18,18,18,18,18,17,18,18,17,18,18,
+ 18,18,17,17,16,17,18,18,18,18,18,17,17,16,18,18,
+ 18,18,17,17,16,17,16,18,18,18,18,17,17,17,16,18,
+ 18,18,18,18,18,17,17,18,18,18,18,18,18,17,17,18,
+ 18,18,17,18,18,18,18,18,18,17,16,17,16,18,17,18,
+ 17,18,15,14,14,15,16,18,18,17,14,15,14,15,18,18,
+ 17,18,17,15,14,15,16,18,18,18,16,17,15,15,17,18,
+ 18,18,18,17,16,16,17,18,18,18,18,18,18,18,18,18,
+ 18,18,18,17,17,17,17,18,17,17,14,14,14,15,17,18,
+ 17,15,11,10,11,12,15,18,18,15,11,10,10,11,13,18,
+ 18,16,12,11,10,11,12,17,18,18,14,13,12,12,12,15,
+ 18,18,17,16,13,13,13,16,18,18,18,17,18,17,18,17,
+ 18,17,17,18,16,17,17,18,18,17,15,14,14,15,17,18,
+ 18,15,11,10,10,11,13,18,18,15,11, 9, 9, 9,11,17,
+ 18,15,11,10, 9, 9,10,16,18,16,13,11,10,10,10,14,
+ 18,18,15,13,12,11,11,14,18,18,18,18,17,16,16,17,
+ 18,18,18,17,15,17,18,18,18,17,15,15,15,15,17,18,
+ 18,15,11,10,10,11,13,18,18,14,11, 9, 9, 9,11,18,
+ 17,16,11, 9, 8, 8, 9,15,17,16,12,10, 9, 8, 9,13,
+ 18,18,15,12,11,10, 9,12,18,18,18,17,15,15,14,16,
+ 18,18,17,18,18,17,16,17,18,18,17,16,16,14,16,18,
+ 18,17,13,12,12,12,13,17,18,17,12,11,10,10,11,16,
+ 17,17,12,10, 9, 9,10,14,17,17,13,10, 9, 8, 8,12,
+ 18,18,14,12,10, 9, 8,10,18,18,17,15,14,14,12,13,
+ 18,18,18,17,18,17,15,17,18,18,18,18,18,18,15,17,
+ 18,18,16,15,15,14,13,17,17,17,15,13,13,12,12,16,
+ 18,17,14,12,11,11,11,14,17,18,13,11,10, 9, 9,13,
+ 17,17,14,12,10, 9, 8,10,18,18,18,16,13,13,12,11,
+ 18,18,18,18,18,18,18,17,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,17,18,18,18,18,18,17,17,16,17,
+ 18,18,18,18,17,15,15,16,18,18,18,17,14,14,14,16,
+ 18,18,17,15,13,12,12,13,18,18,18,17,14,13,13,12,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,17,17,16,17,18,18,
+ 18,18,18,18,18,17,17,18,18,18,18,18,16,17,16,18,
+ 18,18,18,18,17,15,16,18,18,18,18,18,17,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,16,16,17,16,18,18,17,18,17,17,17,17,17,18,
+ 18,18,17,16,15,15,15,18,18,18,18,17,15,16,17,18,
+ 18,18,17,17,16,16,18,17,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,17,18,17,17,15,17,16,17,18,18,
+ 17,17,13,12,12,13,15,17,18,17,13,12,11,12,14,17,
+ 18,17,14,12,11,11,13,18,18,18,16,13,12,12,13,16,
+ 17,18,16,15,14,13,13,15,18,18,17,17,18,17,16,17,
+ 18,18,18,17,17,18,16,18,18,18,16,15,16,16,16,18,
+ 18,16,12,11,11,12,13,17,18,16,11,10,10,11,12,16,
+ 18,18,12,10,10, 9,11,15,18,18,14,12,10,10,10,14,
+ 17,18,15,13,12,11,11,14,18,18,18,18,17,16,15,16,
+ 18,18,18,17,18,18,16,17,18,16,17,16,16,16,17,18,
+ 17,16,12,11,11,11,13,17,17,16,11, 9, 9, 9,11,16,
+ 18,17,11, 9, 8, 8, 9,14,17,17,12,10, 9, 8, 8,12,
+ 18,17,14,12,10, 9, 9,11,18,18,18,16,15,14,13,14,
+ 18,18,18,18,16,17,15,18,18,17,17,17,17,17,17,18,
+ 18,16,13,12,12,12,13,17,18,16,12,10,10,10,11,15,
+ 18,16,11,10, 8, 8, 9,13,18,17,12,10, 8, 7, 7,11,
+ 17,18,14,12,10, 8, 7, 9,18,18,16,15,14,12,11,11,
+ 18,18,18,18,18,18,15,17,18,18,17,17,18,17,16,18,
+ 18,18,17,15,15,14,13,15,17,18,14,13,12,12,12,15,
+ 17,18,13,12,10, 9,10,13,17,17,14,11, 9, 8, 8,11,
+ 17,17,14,12, 9, 7, 6, 8,18,18,16,16,13,11, 9, 8,
+ 18,18,18,18,18,18,17,18,18,18,18,18,18,18,17,18,
+ 18,18,18,18,18,18,18,17,18,18,18,18,17,17,15,16,
+ 18,18,17,17,15,14,13,15,18,18,16,16,14,12,12,13,
+ 18,18,17,15,14,11,10,11,18,18,18,16,14,12,11,10,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,17,18,18,
+ 18,18,18,18,18,17,18,18,18,18,18,18,17,18,18,18,
+ 18,18,18,18,18,18,17,17,18,18,18,18,18,18,18,17,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,17,18,18,
+ 18,18,17,18,17,18,18,18,18,18,18,17,18,17,18,18,
+ 18,18,18,18,17,17,18,17,18,18,18,17,18,16,17,18,
+ 18,18,18,18,17,17,17,17,18,18,18,18,17,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,15,15,14,16,17,18,18,18,15,15,14,14,15,17,
+ 18,18,17,14,14,13,14,18,18,18,17,16,14,13,13,15,
+ 18,18,17,16,15,14,13,15,18,18,17,17,18,16,15,16,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,17,17,18,
+ 18,17,13,13,13,14,15,18,18,17,13,12,12,12,13,16,
+ 18,17,13,12,11,11,12,15,18,18,16,13,12,11,11,14,
+ 18,18,16,15,13,12,11,13,18,18,18,17,16,15,13,14,
+ 18,18,18,18,18,17,18,17,18,18,18,16,17,17,18,18,
+ 18,17,14,12,13,13,14,17,18,17,13,11,11,11,12,16,
+ 18,18,13,11,10,10,10,14,17,18,13,12,10, 9, 9,13,
+ 18,18,16,13,11,10, 9,11,18,18,17,17,16,13,12,13,
+ 18,18,18,18,18,18,16,18,18,18,18,18,16,17,16,17,
+ 18,18,14,13,13,14,13,16,18,18,13,11,10,11,11,14,
+ 18,17,13,11, 9, 9, 9,12,17,18,13,11, 9, 8, 8,11,
+ 17,18,15,12,10, 8, 7, 8,18,18,17,16,14,12,10,10,
+ 18,18,18,18,18,17,17,18,18,18,18,18,18,18,18,18,
+ 18,18,15,15,14,14,13,14,18,18,15,13,12,12,11,14,
+ 17,18,14,12,10,10,10,12,16,18,14,11, 9, 8, 7,10,
+ 17,18,14,11, 9, 7, 5, 6,18,18,18,15,13,10, 7, 6,
+ 18,18,18,18,18,18,17,17,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,17,17,18,18,18,18,18,17,15,15,
+ 18,18,18,16,16,14,13,14,18,18,17,14,13,12,10,12,
+ 17,18,15,14,12, 9, 7, 8,17,18,17,14,14,11, 8, 6,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,17,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,16,17,
+ 18,18,18,18,18,18,15,17,18,18,18,18,18,18,17,17,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,17,18,18,18,18,18,18,18,17,17,17,18,18,
+ 18,18,18,18,18,18,17,17,18,18,18,18,18,16,15,16,
+ 18,18,18,17,17,17,15,15,18,18,18,18,17,16,16,16,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,17,17,18,18,18,18,18,17,18,17,18,15,17,
+ 18,18,18,17,17,16,15,16,18,18,18,17,17,15,13,14,
+ 18,18,18,18,17,14,13,13,18,18,18,18,17,15,14,13,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,17,17,17,17,18,18,18,18,18,15,16,15,16,
+ 18,18,18,16,15,15,13,14,18,18,18,17,14,13,12,12,
+ 18,18,18,16,14,12,10,11,18,17,18,17,16,13,11,11,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,17,15,17,18,18,17,16,18,15,14,15,
+ 18,18,16,16,14,14,12,13,18,18,16,14,14,11,10,11,
+ 18,18,17,14,12, 9, 7, 8,18,18,17,16,14,11, 8, 7,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,17,18,18,18,18,17,18,18,16,17,
+ 18,18,18,17,17,15,14,14,18,18,17,15,15,13,11,11,
+ 18,18,18,17,13,10, 7, 8,18,18,15,14,13,10, 7, 2,
+};
+
+static static_codebook _huff_book_resaux0_long = {
+ 4, 4096, 0, 0, 0, 0, 0, 0, 0, 0,
+ NULL,
+ _huff_lengthlist_resaux0_long,
+ NULL,
+};
+
+
+#endif
diff --git a/include/vorbis/book/resaux0_short.vqh b/include/vorbis/book/resaux0_short.vqh
new file mode 100644
index 00000000..8798195f
--- /dev/null
+++ b/include/vorbis/book/resaux0_short.vqh
@@ -0,0 +1,289 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_short_VQH_
+#define _V_resaux0_short_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_short[] = {
+ 14,14,11,14,13,14,14,14,14,11, 8, 9,11,13,14,14,
+ 12,11, 8, 8,10,11,12,14,14,14,12,11,11,13,13,14,
+ 14,14,13,14,12,11,11,14,14,14,14,14,13,14,12,14,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,13,14,
+ 14,14,11,14,12,12,14,14,12, 9, 6, 8,10,12,13,14,
+ 11, 9, 6, 7, 8, 9,10,14,14,13,10, 9,11,11,12,14,
+ 14,14,14,11,13,11,11,13,14,14,14,13,13,11,11,14,
+ 14,14,14,14,14,12,11,14,14,14,14,14,14,14,11,14,
+ 13,14,14,14,12,14,14,14,14,12,11,11,13,14,14,14,
+ 11,11, 8, 8, 9,10,11,14,14,14,11,10, 9,10,12,14,
+ 14,14,11,11,10,11,10,14,14,14,14,12,12,10,11,14,
+ 14,14,14,14,14,13,12,13,14,14,14,14,14,13,12,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,13,12,12,12,14,14,14,14,14,11,10,10,12,14,
+ 14,14,13,12,12,11,11,14,14,14,14,12,10,14,12,14,
+ 14,14,14,13,12,12,12,13,14,14,14,14,14,14,13,12,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,12,14,14,14,14,13,14,12,12,14,14,
+ 14,14,14,12,11,11,12,14,14,14,14,14,11,12,12,14,
+ 14,14,14,13,14,11,10,11,14,14,14,14,14,14,12,11,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,12,12,14,14,14,14,14,14,11,11,12,14,
+ 14,14,14,14,12,11,10,12,14,14,14,14,14,14,10,10,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,12,14,14,14,14,14,14,12,11,12,14,
+ 14,14,14,14,11, 9, 9,11,14,14,14,14,14,14, 9, 9,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,13,10,11,14,14,14,14,14,13, 9, 9,
+ 14,14,13,14,14,14,14,13,13,11, 8, 9,12,14,13,14,
+ 14,11, 8, 9,10,12,14,12,14,14,12,12,14,13,13,14,
+ 14,14,13,14,12,13,12,14,14,14,14,14,14,13,14,14,
+ 14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,
+ 12,12,10,13,14,13,14,14,12,10, 6, 8,10,11,14,14,
+ 10, 8, 6, 7, 8, 9,11,14,14,13,11,11,10,10,13,14,
+ 14,14,12,12,11,12,11,12,14,14,14,14,14,12,13,13,
+ 14,14,14,14,14,12,12,12,14,14,14,14,14,14,12,13,
+ 14,14,13,14,13,14,14,14,12,11,10,11,13,13,14,14,
+ 14,11, 8, 8, 9, 9,13,14,14,14,10,10,10,10,13,14,
+ 14,14,13,11,10,10,11,13,14,14,14,12,12,14,14,13,
+ 14,14,14,14,13,14,11,12,14,14,14,14,14,14,13,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,12,14,13,14,14,14,14,14,13,11,11,11,14,14,
+ 14,14,12,12,10,11,11,13,14,14,13,13,12,11,13,13,
+ 14,14,14,14,14,12,11,10,14,14,14,14,14,14,12,12,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,12,12,14,14,14,14,14,13,12,11,14,14,
+ 14,14,12,12,11,13,14,14,14,14,14,13,13,13,14,14,
+ 14,14,14,14,13,12,10,12,14,14,14,14,14,14,12,11,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,13,14,14,14,14,14,14,13,14,14,14,
+ 14,14,14,12,11,13,14,14,14,14,14,12,13,12,11,14,
+ 14,14,14,14,12,10,10,13,14,14,14,14,14,14,11,12,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,12,14,14,14,14,14,13,14,12,13,14,
+ 14,14,14,14,12,10, 9,12,14,14,14,14,14,12, 9,10,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,11,11,13,14,14,14,14,14,13, 9,10,
+ 14,14,14,14,14,11,12,13,14,14,14,13,14,14,14,14,
+ 14,14,12,14,13,13,12,11,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,13,11,11,14,14, 9,10,12,12,11,13,
+ 14,13, 9,10,11,12,10,11,14,14,12,13,14,12,12,10,
+ 14,14,14,14,14,14,13, 7,14,14,14,14,14,14,14,10,
+ 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,12,14,14,14,11,13,14,13,13,12,
+ 14,14,10,10,11,13,10,11,14,14,12,13,12,12,12,11,
+ 14,14,13,13,14,12,12, 7,14,14,14,14,14,12,14, 6,
+ 14,14,14,14,14,14,14, 7,14,14,14,14,14,14,14,11,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,13,10,13,13,12,13,14,14,14,14,12,13,13,14,
+ 14,14,13,13,12,12,14,10,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,14,14,13, 7,14,14,14,14,14,14,14,10,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,13,12,13,14,
+ 14,14,14,12,13,12,12,12,14,14,13,14,13,14,14, 9,
+ 14,14,14,14,14,14,13, 7,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,
+ 14,14,13,12,12,14,13,14,14,14,14,13,14,13,13,11,
+ 14,14,14,14,11,11,13, 7,14,14,14,14,14,14,12, 8,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,12,13,14,14,14,14,14,14,11,12,14,14,
+ 14,14,14,13,14,10, 9,10,14,14,14,14,14,14, 9, 9,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,13,12,11,11,14,14,14,14,14,14, 9,10,
+ 14,14,14,14,14,14,11,14,14,14,14,14,14,14,13,14,
+ 14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,13,11,12,14,14,11,11,13,12,12,14,
+ 14,14,11,11,12,12,13,11,14,14,14,14,14,14,13, 9,
+ 14,14,14,14,14,14,14, 9,14,14,14,14,14,14,14,10,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,12,12,14,14,14,11,14,14,14,13,14,
+ 14,14,11,11,13,14,11,11,14,14,14,14,14,14,13,11,
+ 14,14,14,14,14,13,14, 7,14,14,14,14,14,14,13, 7,
+ 14,14,14,14,14,14,14, 8,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14,
+ 14,14,13,11,12,13,14,13,14,14,14,14,12,14,14,14,
+ 14,14,14,12,14,14,14,10,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,14,14,14, 7,14,14,14,14,14,14,14,10,
+ 14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,
+ 14,14,13,12,13,14,13,14,14,14,14,13,13,13,14,12,
+ 14,14,13,13,14,14,14,12,14,14,14,14,14,13,14, 9,
+ 14,14,14,14,12,13,14, 7,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,14,14,14,14,14,14,12,14,12,14,14,
+ 14,14,14,13,14,13,14,14,14,14,14,14,13,12,13,11,
+ 14,14,14,13,11,13,12, 6,14,14,14,14,14,14,14, 7,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,12,14,13,14,14,14,14,13,12,10,11,13,
+ 14,14,14,12,12,10, 9, 8,14,14,14,14,14,11, 9, 7,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,
+ 14,14,14,14,12,10, 9,13,14,14,14,14,14,14, 8, 9,
+ 14,14,14,14,14,13,12,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,12,11,14,14,14,14,14,13,13,12,14,
+ 14,14,13,13,14,14,12,12,14,14,14,14,14,14,13,10,
+ 14,14,14,14,14,14,14,10,14,14,14,14,14,14,14,11,
+ 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,13,11,14,14,14,14,14,13,14,13,13,
+ 14,14,13,12,13,14,14,13,14,14,14,13,14,14,13,11,
+ 14,14,14,13,13,14,13, 9,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,14,14,14, 9,14,14,14,14,14,14,14,12,
+ 14,14,14,14,14,14,13,14,14,14,12,14,13,14,13,14,
+ 14,14,13,12,14,14,13,12,14,14,14,14,14,14,14,12,
+ 14,14,14,14,13,14,14,11,14,14,14,14,14,13,13, 9,
+ 14,14,14,14,14,14,14, 8,14,14,14,14,14,14,14,10,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,
+ 14,14,14,13,12,14,14,14,14,14,14,12,12,13,14,13,
+ 14,14,14,12,13,14,14,12,14,14,14,14,14,14,14,10,
+ 14,14,14,14,14,13,14, 7,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,11,14,14,14,14,14,13,13,12,13,14,14,
+ 14,14,14,14,12,12,14,14,14,14,14,14,12,12,12,12,
+ 14,14,14,14,11,12,13, 6,14,14,14,14,14,14,13, 6,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,12,13,14,14,14,14,14,14,12,11,12,13,
+ 14,14,13,13,11, 9, 9, 8,14,14,14,14,12,11, 9, 6,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,13,11,14,
+ 14,14,14,14,13,11, 9,11,14,14,14,14,14,11, 8, 8,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,11,13,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,13,13,14,14,14,14,14,14,13,11,
+ 14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,12,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,14,12,13,14,14,14,14,13,14,14,12,
+ 14,14,14,14,14,13,13,10,14,14,14,14,14,14,14,11,
+ 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,13,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,12,
+ 14,14,14,14,14,14,14,10,14,14,14,14,14,14,14,11,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,13,13,14,14,14,14,14,14,14,13,14,14,14,
+ 14,14,14,13,13,14,12,13,14,14,14,14,11,14,14,12,
+ 14,14,14,14,14,14,14, 8,14,14,14,14,14,14,14, 9,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,13,13,13,14,14,14,14,14,14,14,13,13,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,12,12,13,11,
+ 14,14,14,14,12,10,12, 7,14,14,14,14,14,14,14, 7,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,13,12,12,14,14,14,14,14,14,13,13,13,14,14,
+ 14,14,14,14,13,12,14,14,14,14,14,14,11,10,11,14,
+ 14,14,14,13,11, 9,10, 7,14,14,14,14,14,11, 9, 6,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,13,14,14,14,14,14,14,14,13,13,14,
+ 14,14,14,13,12,11, 9,12,14,14,14,14,14,12, 8, 9,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,
+ 14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,10,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,13,13,14,
+ 14,14,14,14,14,13,14, 9,14,14,14,14,14,14,14, 7,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,
+ 14,14,13,14,13,11,12, 6,14,14,14,14,14,14,14, 5,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,12,10,14,14,14,14,14,13,13, 8,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,11,14,14,14,14,14,14,14, 8,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,13,13,13,13,13,13,13, 7,
+};
+
+static static_codebook _huff_book_resaux0_short = {
+ 4, 4096, 0, 0, 0, 0, 0, 0, 0, 0,
+ NULL,
+ _huff_lengthlist_resaux0_short,
+ NULL,
+};
+
+
+#endif
diff --git a/include/vorbis/codebook.h b/include/vorbis/codebook.h
index d9680fb8..ffe9a3dd 100644
--- a/include/vorbis/codebook.h
+++ b/include/vorbis/codebook.h
@@ -12,7 +12,7 @@
********************************************************************
function: codebook types
- last mod: $Id: codebook.h,v 1.4 2000/01/28 09:05:00 xiphmont Exp $
+ last mod: $Id: codebook.h,v 1.5 2000/05/08 20:49:43 xiphmont Exp $
********************************************************************/
@@ -33,23 +33,40 @@
*/
typedef struct static_codebook{
- long dim; /* codebook dimensions (elements per vector) */
- long entries; /* codebook entries */
-
- /* mapping */
- long q_min; /* packed 24 bit float; quant value 0 maps to minval */
- long q_delta; /* packed 24 bit float; val 1 - val 0 == delta */
- int q_quant; /* 0 < quant <= 16 */
- int q_sequencep; /* bitflag */
-
- long *quantlist; /* list of dim*entries quantized entry values */
-
- long *lengthlist; /* codeword lengths in bits */
-
- struct encode_aux *encode_tree;
+ long dim; /* codebook dimensions (elements per vector) */
+ long entries; /* codebook entries */
+ long *lengthlist; /* codeword lengths in bits */
+
+ /* mapping ***************************************************************/
+ int maptype; /* 0=none
+ 1=implicitly populated values from map column
+ 2=listed arbitrary values */
+
+ /* The below does a linear, single monotonic sequence mapping. */
+ long q_min; /* packed 32 bit float; quant value 0 maps to minval */
+ long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */
+ int q_quant; /* bits: 0 < quant <= 16 */
+ int q_sequencep; /* bitflag */
+
+ /* additional information for log (dB) mapping; the linear mapping
+ is assumed to actually be values in dB. encodebias is used to
+ assign an error weight to 0 dB. We have two additional flags:
+ zeroflag indicates if entry zero is to represent -Inf dB; negflag
+ indicates if we're to represent negative linear values in a
+ mirror of the positive mapping. */
+
+ long *quantlist; /* map == 1: (int)(entries/dim) element column map
+ map == 2: list of dim*entries quantized entry vals
+ */
+
+ /* encode helpers ********************************************************/
+ struct encode_aux_nearestmatch *nearest_tree;
+ struct encode_aux_threshmatch *thresh_tree;
} static_codebook;
-typedef struct encode_aux{
+/* this structures an arbitrary trained book to quickly find the
+ nearest cell match */
+typedef struct encode_aux_nearestmatch{
/* pre-calculated partitioning tree */
long *ptr0;
long *ptr1;
@@ -58,7 +75,15 @@ typedef struct encode_aux{
long *q; /* decision points (each is an entry) */
long aux; /* number of tree entries */
long alloc;
-} encode_aux;
+} encode_aux_nearestmatch;
+
+/* assumes a maptype of 1; encode side only, so that's OK */
+typedef struct encode_aux_threshmatch{
+ double *quantthresh;
+ long *quantmap;
+ int quantvals;
+ int threshvals;
+} encode_aux_threshmatch;
typedef struct decode_aux{
long *ptr0;
@@ -77,8 +102,6 @@ typedef struct codebook{
} codebook;
-#define VQ_FEXP_BIAS 20 /* bias toward values smaller than 1. */
-
#endif
diff --git a/include/vorbis/codec.h b/include/vorbis/codec.h
index 709e5e68..c283ccee 100644
--- a/include/vorbis/codec.h
+++ b/include/vorbis/codec.h
@@ -12,7 +12,7 @@
********************************************************************
function: libvorbis codec headers
- last mod: $Id: codec.h,v 1.14 2000/05/01 06:27:05 jon Exp $
+ last mod: $Id: codec.h,v 1.15 2000/05/08 20:49:43 xiphmont Exp $
********************************************************************/
@@ -52,9 +52,35 @@ typedef struct {
/* psychoacoustic setup ********************************************/
typedef struct vorbis_info_psy{
- double maskthresh[MAX_BARK];
- double lrolldB;
- double hrolldB;
+ int athp;
+ int decayp;
+ int smoothp;
+ int noisefitp;
+ int noisefit_subblock;
+ double noisefit_threshdB;
+
+ double ath_att;
+
+ int tonemaskp;
+ double toneatt_250Hz[5];
+ double toneatt_500Hz[5];
+ double toneatt_1000Hz[5];
+ double toneatt_2000Hz[5];
+ double toneatt_4000Hz[5];
+ double toneatt_8000Hz[5];
+
+ int noisemaskp;
+ double noiseatt_250Hz[5];
+ double noiseatt_500Hz[5];
+ double noiseatt_1000Hz[5];
+ double noiseatt_2000Hz[5];
+ double noiseatt_4000Hz[5];
+ double noiseatt_8000Hz[5];
+
+ double max_curve_dB;
+
+ double attack_coeff;
+ double decay_coeff;
} vorbis_info_psy;
/* vorbis_info contains all the setup information specific to the
diff --git a/include/vorbis/internal.h b/include/vorbis/internal.h
index 63f4ae50..c3ef48bb 100644
--- a/include/vorbis/internal.h
+++ b/include/vorbis/internal.h
@@ -13,7 +13,7 @@
function: libvorbis codec internal types. These structures are
'visible', but generally uninteresting to the developer
- last mod: $Id: internal.h,v 1.4 2000/01/22 13:28:12 xiphmont Exp $
+ last mod: $Id: internal.h,v 1.5 2000/05/08 20:49:43 xiphmont Exp $
********************************************************************/
diff --git a/include/vorbis/modes.h b/include/vorbis/modes.h
index 2c4c9207..f7d952aa 100644
--- a/include/vorbis/modes.h
+++ b/include/vorbis/modes.h
@@ -12,7 +12,7 @@
********************************************************************
function: predefined encoding modes
- last mod: $Id: modes.h,v 1.9 2000/02/23 11:42:00 xiphmont Exp $
+ last mod: $Id: modes.h,v 1.10 2000/05/08 20:49:43 xiphmont Exp $
********************************************************************/
@@ -25,43 +25,68 @@
#include "vorbis/book/lsp20_0.vqh"
#include "vorbis/book/lsp32_0.vqh"
-
-#include "vorbis/book/resshort8aux.vqh"
-#include "vorbis/book/reslong8aux.vqh"
-
-#include "vorbis/book/resX_1.vqh"
-
-#include "vorbis/book/res128_0a.vqh"
-#include "vorbis/book/res1024_0a.vqh"
-/*#include "vorbis/book/res128_0b.vqh"
-#include "vorbis/book/res128_0c7x4.vqh"
-#include "vorbis/book/res1024_1a.vqh"
-#include "vorbis/book/res1024_0b.vqh"
-#include "vorbis/book/res1024_0c8x4.vqh"*/
-
-/*
- 0 1 2 3 4 5 6 7 8 9
- 0, 100, 200, 300, 400, 510, 630, 770, 920, 1080,
-
- 10 11 12 13 14 15 16 17 18 19
- 1270, 1480, 1720, 2000, 2320, 2700, 3150, 3700, 4400, 5300,
-
- 20 21 22 23 24 25 26 Bark
- 6400, 7700, 9500, 12000, 15500, 20500, 27000 Hz */
-
-/* a good set of rolloffs for nigh-transparent masking */
+#include "vorbis/book/res0a0aux.vqh"
+#include "vorbis/book/res0a1aux.vqh"
+
+#include "vorbis/book/res0a_0.vqh"
+#include "vorbis/book/res0a_1.vqh"
+#include "vorbis/book/res0a_2.vqh"
+#include "vorbis/book/res0a_3.vqh"
+#include "vorbis/book/res0a_4.vqh"
+#include "vorbis/book/res0a_5.vqh"
+#include "vorbis/book/res0a_6.vqh"
+
+#include "vorbis/book/res0b_0.vqh"
+#include "vorbis/book/res0b_1.vqh"
+#include "vorbis/book/res0b_2.vqh"
+#include "vorbis/book/res0b_3.vqh"
+#include "vorbis/book/res0b_4.vqh"
+#include "vorbis/book/res0b_5.vqh"
+#include "vorbis/book/res0b_6.vqh"
+
+/* A farily high quality setting mix */
static vorbis_info_psy _psy_set0={
- { -20, -20, -14, -14, -14, -14, -14, -14, -14, -14,
- -14, -14, -16, -16, -16, -16, -18, -18, -16, -16,
- -12, -10, -6, -3, -2, -1, -0}, 16,8
+ 1,/*athp*/
+ 1,/*decayp*/
+ 1,/*smoothp*/
+ 0,8,0.,
+
+ -130.,
+
+ 1,/* tonemaskp*/
+ {-35.,-40.,-60.,-80.,-80.}, /* remember that el 4 is an 80 dB curve, not 100 */
+ {-35.,-40.,-60.,-80.,-95.},
+ {-35.,-40.,-60.,-80.,-95.},
+ {-35.,-40.,-60.,-80.,-95.},
+ {-35.,-40.,-60.,-80.,-95.},
+ {-65.,-60.,-60.,-80.,-90.}, /* remember that el 1 is a 60 dB curve, not 40 */
+
+ 1,/*noisemaskp*/
+ {-100.,-100.,-100.,-200.,-200.}, /* this is the 500 Hz curve, which
+ is too wrong to work */
+ {-60.,-60.,-60.,-80.,-80.},
+ {-60.,-60.,-60.,-80.,-80.},
+ {-60.,-60.,-60.,-80.,-80.},
+ {-60.,-60.,-60.,-80.,-80.},
+ {-50.,-55.,-60.,-80.,-80.},
+
+ 110.,
+
+ .9998, .9998 /* attack/decay control */
};
/* with GNUisms, this could be short and readable. Oh well */
static vorbis_info_time0 _time_set0={0};
-static vorbis_info_floor0 _floor_set0={20, 44100, 64, 12,140, 1, {0} };
-static vorbis_info_floor0 _floor_set1={32, 44100, 256, 12,140, 1, {1} };
-static vorbis_info_residue0 _residue_set0={0, 128, 8,4,2,{0,1,1,1},{4,6,6}};
-static vorbis_info_residue0 _residue_set1={0,1024, 8,4,3,{0,1,1,1},{5,6,6}};
+static vorbis_info_floor0 _floor_set0={20, 44100, 64, 12,150, 1, {0} };
+static vorbis_info_floor0 _floor_set1={32, 44100, 256, 12,150, 1, {1} };
+static vorbis_info_residue0 _residue_set0={0, 128, 16,8,2,
+ {16.5,10.5,6.5,3.5,2.5,1.5,.5},
+ {1,1,1,1,1,1,1,0},
+ {4,5,6,7,8,9,10}};
+static vorbis_info_residue0 _residue_set1={0,1024, 16,8,3,
+ {16.5,10.5,6.5,3.5,2.5,1.5,.5},
+ {1,1,1,1,1,1,1,0},
+ {4,5,6,7,8,9,10}};
static vorbis_info_mapping0 _mapping_set0={1, {0,0}, {0}, {0}, {0}, {0}};
static vorbis_info_mapping0 _mapping_set1={1, {0,0}, {0}, {1}, {1}, {0}};
static vorbis_info_mode _mode_set0={0,0,0,0};
@@ -74,7 +99,7 @@ vorbis_info info_A={
/* smallblock, largeblock */
{256, 2048},
/* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 7, 1,
+ 2, 2, 1, 2, 2, 11, 1,
/* modes */
{&_mode_set0,&_mode_set1},
/* maps */
@@ -89,23 +114,16 @@ vorbis_info info_A={
{&_vq_book_lsp20_0, /* 0 */
&_vq_book_lsp32_0, /* 1 */
- &_huff_book_resshort8aux,/* 2 */
- &_huff_book_reslong8aux, /* 3 */
-
- &_vq_book_res128_0a, /* 4 */
- &_vq_book_res1024_0a, /* 5 */
-
-#if 0
- &_vq_book_res128_0a, /* 4 */
- &_vq_book_res128_0b, /* 5 */
- &_vq_book_res128_0c7x4, /* 6 */
- &_vq_book_res1024_1a, /* 7 */
- &_vq_book_res1024_0b, /* 8 */
- &_vq_book_res1024_0c8x4,/* 9 */
-#endif
-
- &_vq_book_resX_1,
+ &_huff_book_res0a0aux,
+ &_huff_book_res0a1aux,
+ &_vq_book_res0a_0,
+ &_vq_book_res0a_1,
+ &_vq_book_res0a_2,
+ &_vq_book_res0a_3,
+ &_vq_book_res0a_4,
+ &_vq_book_res0b_5,
+ &_vq_book_res0b_6,
},
/* psy */
{&_psy_set0},
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 68c7ead0..f40a99e4 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -1,6 +1,6 @@
# vorbis makefile configured for use with gcc on any platform
-# $Id: Makefile.in,v 1.25 2000/04/12 07:55:06 msmith Exp $
+# $Id: Makefile.in,v 1.26 2000/05/08 20:49:47 xiphmont Exp $
###############################################################################
# #
@@ -31,17 +31,17 @@ HFILES = ../include/vorbis/codec.h \
../include/vorbis/internal.h ../include/vorbis/backends.h \
../include/vorbis/codebook.h \
bitwise.h envelope.h lpc.h lsp.h bookinternal.h misc.h\
- psy.h smallft.h window.h scales.h os.h mdct.h registry.h
+ psy.h smallft.h window.h scales.h os.h mdct.h registry.h\
+ masking.h sharedbook.h
LFILES = framing.o mdct.o smallft.o block.o envelope.o window.o\
lsp.o lpc.o analysis.o synthesis.o psy.o info.o bitwise.o\
time0.o floor0.o res0.o mapping0.o registry.o\
- codebook.o
+ codebook.o sharedbook.o vorbisfile.o
VF_HFILES = ../include/vorbis/vorbisfile.h ../include/vorbis/codec.h \
../include/vorbis/internal.h ../include/vorbis/codebook.h \
os.h misc.h
VF_LFILES = vorbisfile.o
-
all:
$(MAKE) target CFLAGS="$(OPT)"
@@ -54,7 +54,7 @@ analysis:
profile:
$(MAKE) target CFLAGS="$(PROFILE)"
-target: libvorbis.a vorbisfile.a
+target: libvorbis.a vorbisfile.a psytune
selftest:
$(MAKE) clean
@@ -62,11 +62,15 @@ selftest:
$(CC) $(DEBUG) $(LDFLAGS) -D_V_SELFTEST bitwise.c\
-o test_bitwise -lm
$(CC) $(DEBUG) $(LDFLAGS) -c bitwise.c
- $(CC) $(DEBUG) $(LDFLAGS) -D_V_SELFTEST codebook.c bitwise.o\
- -o test_codebook -lm
+ $(CC) $(DEBUG) $(LDFLAGS) -D_V_SELFTEST sharedbook.c\
+ -o test_sharedbook -lm
+ $(CC) $(DEBUG) $(LDFLAGS) -c sharedbook.c
+ $(CC) $(DEBUG) $(LDFLAGS) -D_V_SELFTEST codebook.c \
+ sharedbook.o bitwise.o -o test_codebook -lm
@echo
@./test_framing
@./test_bitwise
+ @./test_sharedbook
@./test_codebook
libvorbis.a: $(LFILES)
@@ -77,6 +81,10 @@ vorbisfile.a: $(VF_LFILES)
$(AR) -r vorbisfile.a $^
$(RANLIB) vorbisfile.a
+psytune: mdct.o psy.o lpc.o smallft.o window.o psytune.o floor0.o \
+ bitwise.o lsp.o codebook.o sharedbook.o
+ $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
+
$(LFILES): $(HFILES)
$(VF_LFILES): $(VF_HFILES)
diff --git a/lib/analysis.c b/lib/analysis.c
index ba0c31be..6043aba4 100644
--- a/lib/analysis.c
+++ b/lib/analysis.c
@@ -12,7 +12,7 @@
********************************************************************
function: single-block PCM analysis mode dispatch
- last mod: $Id: analysis.c,v 1.25 2000/03/10 13:21:18 xiphmont Exp $
+ last mod: $Id: analysis.c,v 1.26 2000/05/08 20:49:48 xiphmont Exp $
********************************************************************/
@@ -22,7 +22,7 @@
#include "vorbis/codec.h"
#include "bitwise.h"
#include "registry.h"
-#include "misc.h"
+#include "scales.h"
/* decides between modes, dispatches to the appropriate mapping. */
int vorbis_analysis(vorbis_block *vb,ogg_packet *op){
@@ -70,17 +70,30 @@ int vorbis_analysis(vorbis_block *vb,ogg_packet *op){
}
/* there was no great place to put this.... */
-void _analysis_output(char *base,int i,double *v,int n){
+void _analysis_output(char *base,int i,double *v,int n,int bark,int dB){
#ifdef ANALYSIS
int j;
FILE *of;
char buffer[80];
sprintf(buffer,"%s_%d.m",base,i);
of=fopen(buffer,"w");
- for(j=0;j<n;j++)
- fprintf(of,"%g\n",v[j]);
+
+ for(j=0;j<n;j++){
+ if(dB && v[j]==0)
+ fprintf(of,"\n\n");
+ else{
+ if(bark)
+ fprintf(of,"%g ",toBARK(22050.*j/n));
+ else
+ fprintf(of,"%g ",(double)j);
+
+ if(dB){
+ fprintf(of,"%g\n",todB(fabs(v[j])));
+ }else{
+ fprintf(of,"%g\n",v[j]);
+ }
+ }
+ }
fclose(of);
#endif
}
-
-
diff --git a/lib/block.c b/lib/block.c
index 7347201a..f7ba7fb6 100644
--- a/lib/block.c
+++ b/lib/block.c
@@ -12,7 +12,7 @@
********************************************************************
function: PCM data vector blocking, windowing and dis/reassembly
- last mod: $Id: block.c,v 1.29 2000/04/03 08:30:49 xiphmont Exp $
+ last mod: $Id: block.c,v 1.30 2000/05/08 20:49:48 xiphmont Exp $
Handle windowing, overlap-add, etc of the PCM vectors. This is made
more amusing by Vorbis' current two allowed block sizes.
@@ -34,6 +34,7 @@
#include "lpc.h"
#include "bitwise.h"
#include "registry.h"
+#include "sharedbook.h"
#include "bookinternal.h"
#include "misc.h"
diff --git a/lib/bookinternal.h b/lib/bookinternal.h
index 0c25f8b9..f3e9ff15 100644
--- a/lib/bookinternal.h
+++ b/lib/bookinternal.h
@@ -12,7 +12,7 @@
********************************************************************
function: basic codebook pack/unpack/code/decode operations
- last mod: $Id: bookinternal.h,v 1.6 2000/02/23 09:24:25 xiphmont Exp $
+ last mod: $Id: bookinternal.h,v 1.7 2000/05/08 20:49:48 xiphmont Exp $
********************************************************************/
@@ -24,17 +24,14 @@
extern int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *b);
extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c);
-extern void vorbis_staticbook_clear(static_codebook *b);
-
-extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source);
-extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
-extern void vorbis_book_clear(codebook *b);
extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b);
extern int vorbis_book_encodev(codebook *book, double *a, oggpack_buffer *b);
-extern int vorbis_book_encodevE(codebook *book, double *a, oggpack_buffer *b);
-extern double vorbis_book_vE(codebook *book, double *a);
+extern int vorbis_book_encodevs(codebook *book, double *a, oggpack_buffer *b,
+ int step,int stagetype);
+
extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
-extern long vorbis_book_decodev(codebook *book, double *a, oggpack_buffer *b);
+extern long vorbis_book_decodevs(codebook *book, double *a, oggpack_buffer *b,
+ int step,int stagetype);
#endif
diff --git a/lib/codebook.c b/lib/codebook.c
index fafdca9f..760e84e3 100644
--- a/lib/codebook.c
+++ b/lib/codebook.c
@@ -12,7 +12,7 @@
********************************************************************
function: basic codebook pack/unpack/code/decode operations
- last mod: $Id: codebook.c,v 1.13 2000/04/03 08:30:49 xiphmont Exp $
+ last mod: $Id: codebook.c,v 1.14 2000/05/08 20:49:48 xiphmont Exp $
********************************************************************/
@@ -22,206 +22,11 @@
#include "vorbis/codec.h"
#include "vorbis/codebook.h"
#include "bitwise.h"
+#include "scales.h"
+#include "sharedbook.h"
#include "bookinternal.h"
#include "misc.h"
-/**** pack/unpack helpers ******************************************/
-static int ilog(unsigned int v){
- int ret=0;
- while(v){
- ret++;
- v>>=1;
- }
- return(ret);
-}
-
-/* code that packs the 24 bit float can be found in vq/bookutil.c */
-
-static double _float24_unpack(long val){
- double mant=val&0x3ffff;
- double sign=val&0x800000;
- double exp =(val&0x7c0000)>>18;
- if(sign)mant= -mant;
- return(ldexp(mant,exp-17-VQ_FEXP_BIAS));
-}
-
-/* given a list of word lengths, generate a list of codewords. Works
- for length ordered or unordered, always assigns the lowest valued
- codewords first */
-long *_make_words(long *l,long n){
- long i,j;
- long marker[33];
- long *r=malloc(n*sizeof(long));
- memset(marker,0,sizeof(marker));
-
- for(i=0;i<n;i++){
- long length=l[i];
- long entry=marker[length];
-
- /* when we claim a node for an entry, we also claim the nodes
- below it (pruning off the imagined tree that may have dangled
- from it) as well as blocking the use of any nodes directly
- above for leaves */
-
- /* update ourself */
- if(length<32 && (entry>>length)){
- /* error condition; the lengths must specify an overpopulated tree */
- free(r);
- return(NULL);
- }
- r[i]=entry;
-
- /* Look to see if the next shorter marker points to the node
- above. if so, update it and repeat. */
- {
- for(j=length;j>0;j--){
-
- if(marker[j]&1){
- /* have to jump branches */
- if(j==1)
- marker[1]++;
- else
- marker[j]=marker[j-1]<<1;
- break; /* invariant says next upper marker would already
- have been moved if it was on the same path */
- }
- marker[j]++;
- }
- }
-
- /* prune the tree; the implicit invariant says all the longer
- markers were dangling from our just-taken node. Dangle them
- from our *new* node. */
- for(j=length+1;j<33;j++)
- if((marker[j]>>1) == entry){
- entry=marker[j];
- marker[j]=marker[j-1]<<1;
- }else
- break;
- }
-
- /* bitreverse the words because our bitwise packer/unpacker is LSb
- endian */
- for(i=0;i<n;i++){
- long temp=0;
- for(j=0;j<l[i];j++){
- temp<<=1;
- temp|=(r[i]>>j)&1;
- }
- r[i]=temp;
- }
-
- return(r);
-}
-
-/* build the decode helper tree from the codewords */
-decode_aux *_make_decode_tree(codebook *c){
- const static_codebook *s=c->c;
- long top=0,i,j;
- decode_aux *t=malloc(sizeof(decode_aux));
- long *ptr0=t->ptr0=calloc(c->entries*2,sizeof(long));
- long *ptr1=t->ptr1=calloc(c->entries*2,sizeof(long));
- long *codelist=_make_words(s->lengthlist,s->entries);
-
- if(codelist==NULL)return(NULL);
- t->aux=c->entries*2;
-
- for(i=0;i<c->entries;i++){
- long ptr=0;
- for(j=0;j<s->lengthlist[i]-1;j++){
- int bit=(codelist[i]>>j)&1;
- if(!bit){
- if(!ptr0[ptr])
- ptr0[ptr]= ++top;
- ptr=ptr0[ptr];
- }else{
- if(!ptr1[ptr])
- ptr1[ptr]= ++top;
- ptr=ptr1[ptr];
- }
- }
- if(!((codelist[i]>>j)&1))
- ptr0[ptr]=-i;
- else
- ptr1[ptr]=-i;
- }
- free(codelist);
- return(t);
-}
-
-/* unpack the quantized list of values for encode/decode ***********/
-static double *_book_unquantize(const static_codebook *b){
- long j,k;
- if(b->quantlist){
- double mindel=_float24_unpack(b->q_min);
- double delta=_float24_unpack(b->q_delta);
- double *r=malloc(sizeof(double)*b->entries*b->dim);
-
- for(j=0;j<b->entries;j++){
- double last=0.;
- for(k=0;k<b->dim;k++){
- double val=b->quantlist[j*b->dim+k]*delta+last+mindel;
- r[j*b->dim+k]=val;
- if(b->q_sequencep)last=val;
- }
- }
- return(r);
- }else
- return(NULL);
-}
-
-void vorbis_staticbook_clear(static_codebook *b){
- if(b->quantlist)free(b->quantlist);
- if(b->lengthlist)free(b->lengthlist);
- if(b->encode_tree){
- free(b->encode_tree->ptr0);
- free(b->encode_tree->ptr1);
- free(b->encode_tree->p);
- free(b->encode_tree->q);
- memset(b->encode_tree,0,sizeof(encode_aux));
- free(b->encode_tree);
- }
- memset(b,0,sizeof(static_codebook));
-}
-
-void vorbis_book_clear(codebook *b){
- /* static book is not cleared; we're likely called on the lookup and
- the static codebook belongs to the info struct */
- if(b->decode_tree){
- free(b->decode_tree->ptr0);
- free(b->decode_tree->ptr1);
- memset(b->decode_tree,0,sizeof(decode_aux));
- free(b->decode_tree);
- }
- if(b->valuelist)free(b->valuelist);
- if(b->codelist)free(b->codelist);
- memset(b,0,sizeof(codebook));
-}
-
-int vorbis_book_init_encode(codebook *c,const static_codebook *s){
- memset(c,0,sizeof(codebook));
- c->c=s;
- c->entries=s->entries;
- c->dim=s->dim;
- c->codelist=_make_words(s->lengthlist,s->entries);
- c->valuelist=_book_unquantize(s);
- return(0);
-}
-
-int vorbis_book_init_decode(codebook *c,const static_codebook *s){
- memset(c,0,sizeof(codebook));
- c->c=s;
- c->entries=s->entries;
- c->dim=s->dim;
- c->valuelist=_book_unquantize(s);
- c->decode_tree=_make_decode_tree(c);
- if(c->decode_tree==NULL)goto err_out;
- return(0);
- err_out:
- vorbis_book_clear(c);
- return(-1);
-}
-
/* packs the given codebook into the bitstream **************************/
int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){
@@ -254,42 +59,88 @@ int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){
long last=c->lengthlist[i-1];
if(this>last){
for(j=last;j<this;j++){
- _oggpack_write(opb,i-count,ilog(c->entries-count));
+ _oggpack_write(opb,i-count,_ilog(c->entries-count));
count=i;
}
}
}
- _oggpack_write(opb,i-count,ilog(c->entries-count));
-
+ _oggpack_write(opb,i-count,_ilog(c->entries-count));
+
}else{
/* length random. Again, we don't code the codeword itself, just
the length. This time, though, we have to encode each length */
_oggpack_write(opb,0,1); /* unordered */
+
+ /* algortihmic mapping has use for 'unused entries', which we tag
+ here. The algorithmic mapping happens as usual, but the unused
+ entry has no codeword. */
for(i=0;i<c->entries;i++)
- _oggpack_write(opb,c->lengthlist[i]-1,5);
+ if(c->lengthlist[i]==0)break;
+
+ if(i==c->entries){
+ _oggpack_write(opb,0,1); /* no unused entries */
+ for(i=0;i<c->entries;i++)
+ _oggpack_write(opb,c->lengthlist[i]-1,5);
+ }else{
+ _oggpack_write(opb,1,1); /* we have unused entries; thus we tag */
+ for(i=0;i<c->entries;i++){
+ if(c->lengthlist[i]==0){
+ _oggpack_write(opb,0,1);
+ }else{
+ _oggpack_write(opb,1,1);
+ _oggpack_write(opb,c->lengthlist[i]-1,5);
+ }
+ }
+ }
}
/* is the entry number the desired return value, or do we have a
- mapping? */
- if(c->quantlist){
- /* we have a mapping. bundle it out. */
- _oggpack_write(opb,1,1);
-
+ mapping? If we have a mapping, what type? */
+ _oggpack_write(opb,c->maptype,4);
+ switch(c->maptype){
+ case 0:
+ /* no mapping */
+ break;
+ case 1:case 2:
+ /* implicitly populated value mapping */
+ /* explicitly populated value mapping */
+
+ if(!c->quantlist){
+ /* no quantlist? error */
+ return(-1);
+ }
+
/* values that define the dequantization */
- _oggpack_write(opb,c->q_min,24);
- _oggpack_write(opb,c->q_delta,24);
+ _oggpack_write(opb,c->q_min,32);
+ _oggpack_write(opb,c->q_delta,32);
_oggpack_write(opb,c->q_quant-1,4);
_oggpack_write(opb,c->q_sequencep,1);
+
+ {
+ int quantvals;
+ switch(c->maptype){
+ case 1:
+ /* a single column of (c->entries/c->dim) quantized values for
+ building a full value list algorithmically (square lattice) */
+ quantvals=_book_maptype1_quantvals(c);
+ break;
+ case 2:
+ /* every value (c->entries*c->dim total) specified explicitly */
+ quantvals=c->entries*c->dim;
+ break;
+ }
- /* quantized values */
- for(i=0;i<c->entries*c->dim;i++)
- _oggpack_write(opb,c->quantlist[i],c->q_quant);
+ /* quantized values */
+ for(i=0;i<quantvals;i++)
+ _oggpack_write(opb,labs(c->quantlist[i]),c->q_quant);
- }else{
- /* no mapping. */
- _oggpack_write(opb,0,1);
+ }
+ break;
+ default:
+ /* error case; we don't have any other map types now */
+ return(-1);
}
-
+
return(0);
}
@@ -312,10 +163,26 @@ int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){
case 0:
/* unordered */
s->lengthlist=malloc(sizeof(long)*s->entries);
- for(i=0;i<s->entries;i++){
- long num=_oggpack_read(opb,5);
- if(num==-1)goto _eofout;
- s->lengthlist[i]=num+1;
+
+ /* allocated but unused entries? */
+ if(_oggpack_read(opb,1)){
+ /* yes, unused entries */
+
+ for(i=0;i<s->entries;i++){
+ if(_oggpack_read(opb,1)){
+ long num=_oggpack_read(opb,5);
+ if(num==-1)goto _eofout;
+ s->lengthlist[i]=num+1;
+ }else
+ s->lengthlist[i]=0;
+ }
+ }else{
+ /* all entries used; no tagging */
+ for(i=0;i<s->entries;i++){
+ long num=_oggpack_read(opb,5);
+ if(num==-1)goto _eofout;
+ s->lengthlist[i]=num+1;
+ }
}
break;
@@ -324,9 +191,9 @@ int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){
{
long length=_oggpack_read(opb,5)+1;
s->lengthlist=malloc(sizeof(long)*s->entries);
-
+
for(i=0;i<s->entries;){
- long num=_oggpack_read(opb,ilog(s->entries-i));
+ long num=_oggpack_read(opb,_ilog(s->entries-i));
if(num==-1)goto _eofout;
for(j=0;j<num;j++,i++)
s->lengthlist[i]=length;
@@ -340,88 +207,103 @@ int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){
}
/* Do we have a mapping to unpack? */
- if(_oggpack_read(opb,1)){
+ switch((s->maptype=_oggpack_read(opb,4))){
+ case 0:
+ /* no mapping */
+ break;
+ case 1: case 2:
+ /* implicitly populated value mapping */
+ /* explicitly populated value mapping */
- /* values that define the dequantization */
- s->q_min=_oggpack_read(opb,24);
- s->q_delta=_oggpack_read(opb,24);
+ s->q_min=_oggpack_read(opb,32);
+ s->q_delta=_oggpack_read(opb,32);
s->q_quant=_oggpack_read(opb,4)+1;
s->q_sequencep=_oggpack_read(opb,1);
- /* quantized values */
- s->quantlist=malloc(sizeof(double)*s->entries*s->dim);
- for(i=0;i<s->entries*s->dim;i++)
- s->quantlist[i]=_oggpack_read(opb,s->q_quant);
- if(s->quantlist[i-1]==-1)goto _eofout;
+ {
+ int quantvals;
+ switch(s->maptype){
+ case 1:
+ quantvals=_book_maptype1_quantvals(s);
+ break;
+ case 2:
+ quantvals=s->entries*s->dim;
+ break;
+ }
+
+ /* quantized values */
+ s->quantlist=malloc(sizeof(double)*quantvals);
+ for(i=0;i<quantvals;i++)
+ s->quantlist[i]=_oggpack_read(opb,s->q_quant);
+
+ if(s->quantlist[quantvals-1]==-1)goto _eofout;
+ }
+ break;
+ default:
+ goto _errout;
}
/* all set */
return(0);
-
+
_errout:
_eofout:
vorbis_staticbook_clear(s);
return(-1);
}
-/* returns the number of bits ***************************************/
+/* returns the number of bits ************************************************/
int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b){
_oggpack_write(b,book->codelist[a],book->c->lengthlist[a]);
return(book->c->lengthlist[a]);
}
-static int _best(codebook *book, double *a){
- encode_aux *t=book->c->encode_tree;
- int dim=book->dim;
- int ptr=0,k;
- /* optimized, using the decision tree */
- while(1){
- double c=0.;
- double *p=book->valuelist+t->p[ptr];
- double *q=book->valuelist+t->q[ptr];
-
- for(k=0;k<dim;k++)
- c+=(p[k]-q[k])*(a[k]-(p[k]+q[k])*.5);
-
- if(c>0.) /* in A */
- ptr= -t->ptr0[ptr];
- else /* in B */
- ptr= -t->ptr1[ptr];
- if(ptr<=0)break;
- }
- return(-ptr);
-}
+/* One the encode side, our vector writers are each designed for a
+specific purpose, and the encoder is not flexible without modification:
+
+The LSP vector coder uses a single stage nearest-match with no
+interleave, so no step and no error return. This is specced by floor0
+and doesn't change.
+
+Residue0 encoding interleaves, uses multiple stages, and each stage
+peels of a specific amount of resolution from a lattice (thus we want
+to match by threshhold, not nearest match). Residue doesn't *have* to
+be encoded that way, but to change it, one will need to add more
+infrastructure on the encode side (decode side is specced and simpler) */
+/* floor0 LSP (single stage, non interleaved, nearest match) */
/* returns the number of bits and *modifies a* to the quantization value *****/
-int vorbis_book_encodev(codebook *book, double *a, oggpack_buffer *b){
- int dim=book->dim;
- int best=_best(book,a);
- memcpy(a,book->valuelist+best*dim,dim*sizeof(double));
- return(vorbis_book_encode(book,best,b));}
-
-/* returns the number of bits and *modifies a* to the quantization error *****/
-int vorbis_book_encodevE(codebook *book, double *a, oggpack_buffer *b){
+int vorbis_book_encodev(codebook *book,double *a,oggpack_buffer *b){
int dim=book->dim,k;
- int best=_best(book,a);
+ int best=_best(book,a,1);
for(k=0;k<dim;k++)
- a[k]-=(book->valuelist+best*dim)[k];
+ a[k]=(book->valuelist+best*dim)[k];
return(vorbis_book_encode(book,best,b));
}
-/* returns the total squared quantization error for best match and sets each
- element of a to local error ***************/
-double vorbis_book_vE(codebook *book, double *a){
- int dim=book->dim,k;
- int best=_best(book,a);
- double acc=0.;
- for(k=0;k<dim;k++){
- double val=(book->valuelist+best*dim)[k];
- a[k]-=val;
- acc+=a[k]*a[k];
- }
- return(acc);
+/* res0 (multistage, interleave, lattice) */
+/* returns the number of bits and *modifies a* to the remainder value ********/
+int vorbis_book_encodevs(codebook *book,double *a,oggpack_buffer *b,
+ int step,int addmul){
+
+ int best=vorbis_book_besterror(book,a,step,addmul);
+ return(vorbis_book_encode(book,best,b));
}
+/* Decode side is specced and easier, because we don't need to find
+ matches using different criteria; we simply read and map. There are
+ two things we need to do 'depending':
+
+ We may need to support interleave. We don't really, but it's
+ convenient to do it here rather than rebuild the vector later.
+
+ Cascades may be additive or multiplicitive; this is not inherent in
+ the codebook, but set in the code using the codebook. Like
+ interleaving, it's easiest to do it here.
+ stage==0 -> declarative (set the value)
+ stage==1 -> additive
+ stage==2 -> multiplicitive */
+
/* returns the entry number or -1 on eof *************************************/
long vorbis_book_decode(codebook *book, oggpack_buffer *b){
long ptr=0;
@@ -442,11 +324,25 @@ long vorbis_book_decode(codebook *book, oggpack_buffer *b){
}
/* returns the entry number or -1 on eof *************************************/
-long vorbis_book_decodev(codebook *book, double *a, oggpack_buffer *b){
+long vorbis_book_decodevs(codebook *book,double *a,oggpack_buffer *b,
+ int step,int addmul){
long entry=vorbis_book_decode(book,b);
- int i;
+ int i,o;
if(entry==-1)return(-1);
- for(i=0;i<book->dim;i++)a[i]+=(book->valuelist+entry*book->dim)[i];
+ switch(addmul){
+ case -1:
+ for(i=0,o=0;i<book->dim;i++,o+=step)
+ a[o]=(book->valuelist+entry*book->dim)[i];
+ break;
+ case 0:
+ for(i=0,o=0;i<book->dim;i++,o+=step)
+ a[o]+=(book->valuelist+entry*book->dim)[i];
+ break;
+ case 1:
+ for(i=0,o=0;i<book->dim;i++,o+=step)
+ a[o]*=(book->valuelist+entry*book->dim)[i];
+ break;
+ }
return(entry);
}
@@ -460,10 +356,10 @@ long vorbis_book_decodev(codebook *book, double *a, oggpack_buffer *b){
#include <stdio.h>
#include "vorbis/book/lsp20_0.vqh"
#include "vorbis/book/lsp32_0.vqh"
+#include "vorbis/book/res0_1a.vqh"
#define TESTSIZE 40
-#define TESTDIM 4
-double test1[40]={
+double test1[TESTSIZE]={
0.105939,
0.215373,
0.429117,
@@ -515,7 +411,7 @@ double test1[40]={
0.708603,
};
-double test2[40]={
+double test2[TESTSIZE]={
0.088654,
0.165742,
0.279013,
@@ -567,8 +463,16 @@ double test2[40]={
0.375124,
};
-static_codebook *testlist[]={&_vq_book_lsp20_0,&_vq_book_lsp32_0,NULL};
-double *testvec[]={test1,test2};
+double test3[TESTSIZE]={
+ 0,1,-2,3,4,-5,6,7,8,9,
+ 8,-2,7,-1,4,6,8,3,1,-9,
+ 10,11,12,13,14,15,26,17,18,19,
+ 30,-25,-30,-1,-5,-32,4,3,-2,0};
+
+static_codebook *testlist[]={&_vq_book_lsp20_0,
+ &_vq_book_lsp32_0,
+ &_vq_book_res0_1a,NULL};
+double *testvec[]={test1,test2,test3};
int main(){
oggpack_buffer write;
@@ -594,10 +498,10 @@ int main(){
we can write */
vorbis_staticbook_pack(testlist[ptr],&write);
fprintf(stderr,"Codebook size %ld bytes... ",_oggpack_bytes(&write));
- for(i=0;i<TESTSIZE;i+=TESTDIM)
+ for(i=0;i<TESTSIZE;i+=c.dim)
vorbis_book_encodev(&c,qv+i,&write);
vorbis_book_clear(&c);
-
+
fprintf(stderr,"OK.\n");
fprintf(stderr,"\tunpacking/decoding %ld... ",ptr);
@@ -612,21 +516,24 @@ int main(){
exit(1);
}
- for(i=0;i<TESTSIZE;i+=TESTDIM)
- if(vorbis_book_decodev(&c,iv+i,&read)==-1){
+ for(i=0;i<TESTSIZE;i+=c.dim)
+ if(vorbis_book_decodevs(&c,iv+i,&read,1,-1)==-1){
fprintf(stderr,"Error reading codebook test data (EOP).\n");
exit(1);
}
for(i=0;i<TESTSIZE;i++)
if(fabs(qv[i]-iv[i])>.000001){
- fprintf(stderr,"input (%g) != output (%g) at position (%ld)\n",
- iv[i],testvec[ptr][i]-qv[i],i);
+ fprintf(stderr,"read (%g) != written (%g) at position (%ld)\n",
+ iv[i],qv[i],i);
exit(1);
}
fprintf(stderr,"OK\n");
ptr++;
}
+
+ /* The above is the trivial stuff; now try unquantizing a log scale codebook */
+
exit(0);
}
diff --git a/lib/envelope.c b/lib/envelope.c
index a66b23a6..5ec2c6e6 100644
--- a/lib/envelope.c
+++ b/lib/envelope.c
@@ -12,7 +12,7 @@
********************************************************************
function: PCM data envelope analysis and manipulation
- last mod: $Id: envelope.c,v 1.16 2000/03/10 13:21:18 xiphmont Exp $
+ last mod: $Id: envelope.c,v 1.17 2000/05/08 20:49:48 xiphmont Exp $
Preecho calculation.
@@ -90,30 +90,6 @@ void _ve_envelope_deltas(vorbis_dsp_state *v){
}
v->envelope_current=dtotal;
-#ifdef ANALYSIS
- {
- static int frameno=0;
- FILE *out;
- char buffer[80];
- int j,k;
-
- sprintf(buffer,"delt%d.m",frameno);
- out=fopen(buffer,"w+");
- for(j=0;j<v->envelope_current;j++)
- fprintf(out,"%d %g\n",j*vi->envelopesa+vi->envelopesa/2,v->multipliers[j]);
- fclose(out);
-
- sprintf(buffer,"deltpcm%d.m",frameno++);
- out=fopen(buffer,"w+");
- for(k=0;k<vi->channels;k++){
- for(j=0;j<v->pcm_current;j++)
- fprintf(out,"%d %g\n",j,v->pcm[k][j]);
- fprintf(out,"\n");
- }
- fclose(out);
- }
-#endif
-
}
}
diff --git a/lib/floor0.c b/lib/floor0.c
index 728a74ae..241766e5 100644
--- a/lib/floor0.c
+++ b/lib/floor0.c
@@ -12,7 +12,7 @@
********************************************************************
function: floor backend 0 implementation
- last mod: $Id: floor0.c,v 1.13 2000/04/06 15:47:55 xiphmont Exp $
+ last mod: $Id: floor0.c,v 1.14 2000/05/08 20:49:48 xiphmont Exp $
********************************************************************/
@@ -25,16 +25,16 @@
#include "lpc.h"
#include "lsp.h"
#include "bookinternal.h"
+#include "sharedbook.h"
#include "scales.h"
#include "misc.h"
#include "os.h"
typedef struct {
long n;
- long m;
-
- double ampscale;
- double ampvals;
+ int ln;
+ int m;
+ int *linearmap;
vorbis_info_floor0 *vi;
lpc_lookup lpclook;
@@ -50,6 +50,7 @@ static void free_info(vorbis_info_floor *i){
static void free_look(vorbis_look_floor *i){
vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
if(i){
+ if(look->linearmap)free(look->linearmap);
lpc_clear(&look->lpclook);
memset(look,0,sizeof(vorbis_look_floor0));
free(look);
@@ -64,8 +65,8 @@ static void pack (vorbis_info_floor *i,oggpack_buffer *opb){
_oggpack_write(opb,info->barkmap,16);
_oggpack_write(opb,info->ampbits,6);
_oggpack_write(opb,info->ampdB,8);
- _oggpack_write(opb,info->stages-1,4);
- for(j=0;j<info->stages;j++)
+ _oggpack_write(opb,info->numbooks-1,4);
+ for(j=0;j<info->numbooks;j++)
_oggpack_write(opb,info->books[j],8);
}
@@ -77,14 +78,14 @@ static vorbis_info_floor *unpack (vorbis_info *vi,oggpack_buffer *opb){
info->barkmap=_oggpack_read(opb,16);
info->ampbits=_oggpack_read(opb,6);
info->ampdB=_oggpack_read(opb,8);
- info->stages=_oggpack_read(opb,4)+1;
+ info->numbooks=_oggpack_read(opb,4)+1;
if(info->order<1)goto err_out;
if(info->rate<1)goto err_out;
if(info->barkmap<1)goto err_out;
- if(info->stages<1)goto err_out;
+ if(info->numbooks<1)goto err_out;
- for(j=0;j<info->stages;j++){
+ for(j=0;j<info->numbooks;j++){
info->books[j]=_oggpack_read(opb,8);
if(info->books[j]<0 || info->books[j]>=vi->books)goto err_out;
}
@@ -94,60 +95,183 @@ static vorbis_info_floor *unpack (vorbis_info *vi,oggpack_buffer *opb){
return(NULL);
}
+/* initialize Bark scale and normalization lookups. We could do this
+ with static tables, but Vorbis allows a number of possible
+ combinations, so it's best to do it computationally.
+
+ The below is authoritative in terms of defining scale mapping.
+ Note that the scale depends on the sampling rate as well as the
+ linear block and mapping sizes */
+
static vorbis_look_floor *look (vorbis_dsp_state *vd,vorbis_info_mode *mi,
vorbis_info_floor *i){
+ int j;
+ double scale;
vorbis_info *vi=vd->vi;
vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
vorbis_look_floor0 *look=malloc(sizeof(vorbis_look_floor0));
look->m=info->order;
look->n=vi->blocksizes[mi->blockflag]/2;
+ look->ln=info->barkmap;
look->vi=info;
- lpc_init(&look->lpclook,look->n,info->barkmap,info->rate,look->m);
+ lpc_init(&look->lpclook,look->ln,look->m);
+ /* we choose a scaling constant so that:
+ floor(bark(rate/2-1)*C)=mapped-1
+ floor(bark(rate/2)*C)=mapped */
+ scale=look->ln/toBARK(info->rate/2.);
+
+ /* the mapping from a linear scale to a smaller bark scale is
+ straightforward. We do *not* make sure that the linear mapping
+ does not skip bark-scale bins; the decoder simply skips them and
+ the encoder may do what it wishes in filling them. They're
+ necessary in some mapping combinations to keep the scale spacing
+ accurate */
+ look->linearmap=malloc(look->n*sizeof(int));
+ for(j=0;j<look->n;j++){
+ int val=floor( toBARK((info->rate/2.)/look->n*j)
+ *scale); /* bark numbers represent band edges */
+ if(val>look->ln)val=look->ln; /* guard against the approximation */
+ look->linearmap[j]=val;
+ }
return look;
}
#include <stdio.h>
+
+/* less efficient than the decode side (written for clarity). We're
+ not bottlenecked here anyway */
+double _curve_to_lpc(double *curve,double *lpc,vorbis_look_floor0 *l,
+ long frameno){
+ /* map the input curve to a bark-scale curve for encoding */
+
+ int mapped=l->ln;
+ double *work=alloca(sizeof(double)*mapped);
+ int i,j,last=0;
+
+ memset(work,0,sizeof(double)*mapped);
+
+ /* Only the decode side is behavior-specced; for now in the encoder,
+ we select the maximum value of each band as representative (this
+ helps make sure peaks don't go out of range. In error terms,
+ selecting min would make more sense, but the codebook is trained
+ numerically, so we don't actually lose. We'd still want to
+ use the original curve for error and noise estimation */
+
+ for(i=0;i<l->n;i++){
+ int bark=l->linearmap[i];
+ if(work[bark]<curve[i])work[bark]=curve[i];
+ if(bark>last+1){
+ /* If the bark scale is climbing rapidly, some bins may end up
+ going unused. This isn't a waste actually; it keeps the
+ scale resolution even so that the LPC generator has an easy
+ time. However, if we leave the bins empty we lose energy.
+ So, fill 'em in. The decoder does not do anything with he
+ unused bins, so we can fill them anyway we like to end up
+ with a better spectral curve */
+
+ /* we'll always have a bin zero, so we don't need to guard init */
+ long span=bark-last;
+ for(j=1;j<span;j++){
+ double del=(double)j/span;
+ work[j+last]=work[bark]*del+work[last]*(1.-del);
+ }
+ }
+ last=bark;
+ }
+
+#if 0
+ { /******************/
+ FILE *of;
+ char buffer[80];
+ int i;
+
+ sprintf(buffer,"Fmask_%d.m",frameno);
+ of=fopen(buffer,"w");
+ for(i=0;i<mapped;i++)
+ fprintf(of,"%g\n",work[i]);
+ fclose(of);
+ }
+#endif
+
+ return vorbis_lpc_from_curve(work,lpc,&(l->lpclook));
+}
+
+/* generate the whole freq response curve of an LPC IIR filter */
+
+void _lpc_to_curve(double *curve,double *lpc,double amp,
+ vorbis_look_floor0 *l,char *name,long frameno){
+ double *lcurve=alloca(sizeof(double)*(l->ln*2));
+ int i;
+
+ if(amp==0){
+ memset(curve,0,sizeof(double)*l->n);
+ return;
+ }
+ vorbis_lpc_to_curve(lcurve,lpc,amp,&(l->lpclook));
+
+#if 0
+ { /******************/
+ FILE *of;
+ char buffer[80];
+ int i;
+
+ sprintf(buffer,"%s_%d.m",name,frameno);
+ of=fopen(buffer,"w");
+ for(i=0;i<l->ln;i++)
+ fprintf(of,"%g\n",lcurve[i]);
+ fclose(of);
+ }
+#endif
+
+ for(i=0;i<l->n;i++)curve[i]=lcurve[l->linearmap[i]];
+
+}
+
+static long seq=0;
static int forward(vorbis_block *vb,vorbis_look_floor *i,
double *in,double *out){
- long j,k,stage;
+ long j,k;
vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
vorbis_info_floor0 *info=look->vi;
+ double *work=alloca(look->n*sizeof(double));
double amp;
long bits=0;
+ /* our floor comes in on a linear scale; go to a [-Inf...0] dB
+ scale. The curve has to be positive, so we offset it. */
+ for(j=0;j<look->n;j++)work[j]=todB(in[j])+info->ampdB;
+
/* use 'out' as temp storage */
/* Convert our floor to a set of lpc coefficients */
- amp=sqrt(vorbis_curve_to_lpc(in,out,&look->lpclook));
-
- /* amp is in the range 0. to 1. (well, more like .7). Log scale it */
+ amp=sqrt(_curve_to_lpc(work,out,look,vb->sequence));
- /* 0 == 0 dB
- (1<<ampbits)-1 == amp dB = 1. amp */
+ /* amp is in the range (0. to ampdB]. Encode that range using
+ ampbits bits */
+
{
- long ampscale=fromdB(info->ampdB);
long maxval=(1<<info->ampbits)-1;
-
- long val=todB(amp*ampscale)/info->ampdB*maxval+1;
+
+ long val=rint(amp/info->ampdB*maxval);
if(val<0)val=0; /* likely */
if(val>maxval)val=maxval; /* not bloody likely */
_oggpack_write(&vb->opb,val,info->ampbits);
if(val>0)
- amp=fromdB((val-.5)/maxval*info->ampdB)/ampscale;
+ amp=(float)val/maxval*info->ampdB;
else
amp=0;
}
if(amp>0){
- double *work=alloca(sizeof(double)*look->m);
-
+
/* LSP <-> LPC is orthogonal and LSP quantizes more stably */
vorbis_lpc_to_lsp(out,out,look->m);
- memcpy(work,out,sizeof(double)*look->m);
-
+#ifdef ANALYSIS
+ if(vb->mode==0)_analysis_output("lsp",seq++,out,look->m,0,0);
+#endif
#ifdef TRAIN
{
int j;
@@ -162,43 +286,39 @@ static int forward(vorbis_block *vb,vorbis_look_floor *i,
}
#endif
+#if 0
+ { /******************/
+ vorbis_lsp_to_lpc(out,work,look->m);
+ _lpc_to_curve(work,work,amp,look,"Fprefloor",vb->sequence);
+ }
+#endif
+
/* code the spectral envelope, and keep track of the actual
quantized values; we don't want creeping error as each block is
nailed to the last quantized value of the previous block. */
-
- /* first stage is a bit different because quantization error must be
- handled carefully */
- for(stage=0;stage<info->stages;stage++){
- codebook *b=vb->vd->fullbooks+info->books[stage];
-
- if(stage==0){
- double last=0.;
- for(j=0;j<look->m;){
- for(k=0;k<b->dim;k++)out[j+k]-=last;
- bits+=vorbis_book_encodev(b,out+j,&vb->opb);
- for(k=0;k<b->dim;k++,j++){
- out[j]+=last;
- work[j]-=out[j];
- }
- last=out[j-1];
- }
- }else{
- memcpy(out,work,sizeof(double)*look->m);
- for(j=0;j<look->m;){
- bits+=vorbis_book_encodev(b,out+j,&vb->opb);
- for(k=0;k<b->dim;k++,j++)work[j]-=out[j];
- }
+
+ /* the spec supports using one of a number of codebooks. Right
+ now, encode using this lib supports only one */
+ _oggpack_write(&vb->opb,0,_ilog(info->numbooks));
+
+ {
+ codebook *b=vb->vd->fullbooks+info->books[0];
+ double last=0.;
+ for(j=0;j<look->m;){
+ for(k=0;k<b->dim;k++)out[j+k]-=last;
+ bits+=vorbis_book_encodev(b,out+j,&vb->opb);
+ for(k=0;k<b->dim;k++,j++)out[j]+=last;
+ last=out[j-1];
}
}
+
/* take the coefficients back to a spectral envelope curve */
vorbis_lsp_to_lpc(out,out,look->m);
- vorbis_lpc_to_curve(out,out,amp,&look->lpclook);
- fprintf(stderr,"Encoded %ld LSP coefficients in %ld bits\n",look->m,bits);
+ _lpc_to_curve(out,out,amp,look,"Ffloor",vb->sequence);
+ for(j=0;j<look->n;j++)out[j]= fromdB(out[j]-info->ampdB);
return(1);
}
- fprintf(stderr,"Encoded %ld LSP coefficients in %ld bits\n",look->m,bits);
-
memset(out,0,sizeof(double)*look->n);
return(0);
}
@@ -206,35 +326,34 @@ static int forward(vorbis_block *vb,vorbis_look_floor *i,
static int inverse(vorbis_block *vb,vorbis_look_floor *i,double *out){
vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
vorbis_info_floor0 *info=look->vi;
- int j,k,stage;
+ int j,k;
- long ampraw=_oggpack_read(&vb->opb,info->ampbits);
+ int ampraw=_oggpack_read(&vb->opb,info->ampbits);
if(ampraw>0){
- long ampscale=fromdB(info->ampdB);
long maxval=(1<<info->ampbits)-1;
- double amp=fromdB((ampraw-.5)/maxval*info->ampdB)/ampscale;
+ double amp=(float)ampraw/maxval*info->ampdB;
+ int booknum=_oggpack_read(&vb->opb,_ilog(info->numbooks));
+ codebook *b=vb->vd->fullbooks+info->books[booknum];
+ double last=0.;
memset(out,0,sizeof(double)*look->m);
- for(stage=0;stage<info->stages;stage++){
- codebook *b=vb->vd->fullbooks+info->books[stage];
- for(j=0;j<look->m;j+=b->dim)
- vorbis_book_decodev(b,out+j,&vb->opb);
- if(stage==0){
- double last=0.;
- for(j=0;j<look->m;){
- for(k=0;k<b->dim;k++,j++)out[j]+=last;
- last=out[j-1];
- }
- }
+
+ for(j=0;j<look->m;j+=b->dim)
+ vorbis_book_decodevs(b,out+j,&vb->opb,1,-1);
+ for(j=0;j<look->m;){
+ for(k=0;k<b->dim;k++,j++)out[j]+=last;
+ last=out[j-1];
}
-
/* take the coefficients back to a spectral envelope curve */
vorbis_lsp_to_lpc(out,out,look->m);
- vorbis_lpc_to_curve(out,out,amp,&look->lpclook);
+ _lpc_to_curve(out,out,amp,look,"",0);
+
+ for(j=0;j<look->n;j++)out[j]= fromdB(out[j]-info->ampdB);
return(1);
}else
memset(out,0,sizeof(double)*look->n);
+
return(0);
}
diff --git a/lib/info.c b/lib/info.c
index c73cb02f..43b823d4 100644
--- a/lib/info.c
+++ b/lib/info.c
@@ -12,7 +12,7 @@
********************************************************************
function: maintain the info structure, info <-> header packets
- last mod: $Id: info.c,v 1.23 2000/03/10 13:21:18 xiphmont Exp $
+ last mod: $Id: info.c,v 1.24 2000/05/08 20:49:48 xiphmont Exp $
********************************************************************/
@@ -24,6 +24,7 @@
#include "vorbis/codec.h"
#include "vorbis/backends.h"
#include "bitwise.h"
+#include "sharedbook.h"
#include "bookinternal.h"
#include "registry.h"
#include "window.h"
@@ -341,7 +342,7 @@ static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){
}
static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
- char temp[]="Xiphophorus libVorbis I 20000223";
+ char temp[]="Xiphophorus libVorbis I 20000508";
/* preamble */
_oggpack_write(opb,0x03,8);
diff --git a/lib/lpc.c b/lib/lpc.c
index 63e510f6..f2d30b0d 100644
--- a/lib/lpc.c
+++ b/lib/lpc.c
@@ -12,7 +12,7 @@
********************************************************************
function: LPC low level routines
- last mod: $Id: lpc.c,v 1.19 2000/05/01 05:46:23 jon Exp $
+ last mod: $Id: lpc.c,v 1.20 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
@@ -114,7 +114,7 @@ double vorbis_lpc_from_data(double *data,double *lpc,int n,int m){
/* Input : n element envelope spectral curve
Output: m lpc coefficients, excitation energy */
-double vorbis_lpc_from_spectrum(double *curve,double *lpc,lpc_lookup *l){
+double vorbis_lpc_from_curve(double *curve,double *lpc,lpc_lookup *l){
int n=l->ln;
int m=l->m;
double *work=alloca(sizeof(double)*(n+n));
@@ -143,132 +143,23 @@ double vorbis_lpc_from_spectrum(double *curve,double *lpc,lpc_lookup *l){
return(vorbis_lpc_from_data(work,lpc,n,m));
}
-/* initialize Bark scale and normalization lookups. We could do this
- with static tables, but Vorbis allows a number of possible
- combinations, so it's best to do it computationally.
-
- The below is authoritative in terms of defining scale mapping.
- Note that the scale depends on the sampling rate as well as the
- linear block and mapping sizes */
-
-void lpc_init(lpc_lookup *l,int n, long mapped, long rate, int m){
- int i;
- double scale;
+void lpc_init(lpc_lookup *l,long mapped, int m){
memset(l,0,sizeof(lpc_lookup));
- l->n=n;
l->ln=mapped;
l->m=m;
- l->linearmap=malloc(n*sizeof(int));
- l->barknorm=malloc(mapped*sizeof(double));
-
- /* we choose a scaling constant so that:
- floor(bark(rate/2-1)*C)=mapped-1
- floor(bark(rate/2)*C)=mapped */
-
- scale=mapped/toBARK(rate/2.);
-
- /* the mapping from a linear scale to a smaller bark scale is
- straightforward. We do *not* make sure that the linear mapping
- does not skip bark-scale bins; the decoder simply skips them and
- the encoder may do what it wishes in filling them. They're
- necessary in some mapping combinations to keep the scale spacing
- accurate */
- {
- int last=-1;
- for(i=0;i<n;i++){
- int val=floor( toBARK((rate/2.)/n*i) *scale); /* bark numbers
- represent
- band edges */
- if(val>=mapped)val=mapped; /* guard against the approximation */
- l->linearmap[i]=val;
- last=val;
- }
- }
-
- /* 'Normalization' is just making sure that power isn't lost in the
- log scale by virtue of compressing the scale in higher
- frequencies. We figure the weight of bands in proportion to
- their linear/bark width ratio below, again, authoritatively. We
- use computed width (not the number of actual bins above) for
- smoothness in the scale; they should agree closely */
-
- /* keep it 0. to 1., else the dynamic range starts spreading through
- all the squaring... */
-
- for(i=0;i<mapped;i++)
- l->barknorm[i]=(fromBARK((i+1)/scale)-fromBARK(i/scale));
- for(i=0;i<mapped;i++)
- l->barknorm[i]/=l->barknorm[mapped-1];
-
- /* we cheat decoding the LPC spectrum via FFTs */
-
+ /* we cheat decoding the LPC spectrum via FFTs */
drft_init(&l->fft,mapped*2);
}
void lpc_clear(lpc_lookup *l){
if(l){
- if(l->barknorm)free(l->barknorm);
- if(l->linearmap)free(l->linearmap);
drft_clear(&l->fft);
}
}
-
-/* less efficient than the decode side (written for clarity). We're
- not bottlenecked here anyway */
-static int frameno=-1;
-
-double vorbis_curve_to_lpc(double *curve,double *lpc,lpc_lookup *l){
- /* map the input curve to a bark-scale curve for encoding */
-
- int mapped=l->ln;
- double *work=alloca(sizeof(double)*mapped);
- int i,j,last=0;
-
- frameno++;
- _analysis_output("lpc_pre",frameno,curve,l->n);
-
- memset(work,0,sizeof(double)*mapped);
-
- /* Only the decode side is behavior-specced; for now in the encoder,
- we select the maximum value of each band as representative (this
- helps make sure peaks don't go out of range. In error terms,
- selecting min would make more sense, but the codebook is trained
- numerically, so we don't actually lose. We'd still want to
- use the original curve for error and noise estimation */
-
- for(i=0;i<l->n;i++){
- int bark=l->linearmap[i];
- if(work[bark]<curve[i])work[bark]=curve[i];
- if(bark>last+1){
- /* If the bark scale is climbing rapidly, some bins may end up
- going unused. This isn't a waste actually; it keeps the
- scale resolution even so that the LPC generator has an easy
- time. However, if we leave the bins empty we lose energy.
- So, fill 'em in. The decoder does not do anything with he
- unused bins, so we can fill them anyway we like to end up
- with a better spectral curve */
-
- /* we'll always have a bin zero, so we don't need to guard init */
- long span=bark-last;
- for(j=1;j<span;j++){
- double del=(double)j/span;
- work[j+last]=work[bark]*del+work[last]*(1.-del);
- }
- }
- last=bark;
- }
- _analysis_output("lpc_prelog",frameno,work,l->ln);
- for(i=0;i<mapped;i++)work[i]*=l->barknorm[i];
- _analysis_output("lpc_prelognorm",frameno,work,l->ln);
-
- return vorbis_lpc_from_spectrum(work,lpc,l);
-}
-
-
/* One can do this the long way by generating the transfer function in
the time domain and taking the forward FFT of the result. The
results from direct calculation are cleaner and faster.
@@ -276,8 +167,8 @@ double vorbis_curve_to_lpc(double *curve,double *lpc,lpc_lookup *l){
This version does a linear curve generation and then later
interpolates the log curve from the linear curve. */
-void _vlpc_de_helper(double *curve,double *lpc,double amp,
- lpc_lookup *l){
+void vorbis_lpc_to_curve(double *curve,double *lpc,double amp,
+ lpc_lookup *l){
int i;
memset(curve,0,sizeof(double)*l->ln*2);
if(amp==0)return;
@@ -303,26 +194,6 @@ void _vlpc_de_helper(double *curve,double *lpc,double amp,
}
}
-/* generate the whole freq response curve of an LPC IIR filter */
-
-void vorbis_lpc_to_curve(double *curve,double *lpc,double amp,lpc_lookup *l){
- double *lcurve=alloca(sizeof(double)*(l->ln*2));
- int i;
-
- if(amp==0){
- memset(curve,0,sizeof(double)*l->n);
- return;
- }
- _vlpc_de_helper(lcurve,lpc,amp,l);
- _analysis_output("lpc_lognorm",frameno,lcurve,l->ln);
-
- for(i=0;i<l->ln;i++)lcurve[i]/=l->barknorm[i];
- _analysis_output("lpc_log",frameno,lcurve,l->ln);
- for(i=0;i<l->n;i++)curve[i]=lcurve[l->linearmap[i]];
- _analysis_output("lpc",frameno,curve,l->n);
-
-}
-
/* subtract or add an lpc filter to data. Vorbis doesn't actually use this. */
void vorbis_lpc_residue(double *coeff,double *prime,int m,
diff --git a/lib/lpc.h b/lib/lpc.h
index 21d4912f..677dd185 100644
--- a/lib/lpc.h
+++ b/lib/lpc.h
@@ -12,7 +12,7 @@
********************************************************************
function: LPC low level routines
- last mod: $Id: lpc.h,v 1.9 2000/01/28 09:05:12 xiphmont Exp $
+ last mod: $Id: lpc.h,v 1.10 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
@@ -24,26 +24,20 @@
typedef struct lpclook{
/* en/decode lookups */
- int *linearmap;
- double *barknorm;
drft_lookup fft;
- int n;
int ln;
int m;
} lpc_lookup;
-extern void lpc_init(lpc_lookup *l,int n, long mapped, long rate, int m);
+extern void lpc_init(lpc_lookup *l,long mapped, int m);
extern void lpc_clear(lpc_lookup *l);
/* simple linear scale LPC code */
extern double vorbis_lpc_from_data(double *data,double *lpc,int n,int m);
-extern double vorbis_lpc_from_spectrum(double *curve,double *lpc,lpc_lookup *l);
-
-/* log scale layer */
-extern double vorbis_curve_to_lpc(double *curve,double *lpc,lpc_lookup *l);
-extern void vorbis_lpc_to_curve(double *curve,double *lpc, double amp,
+extern double vorbis_lpc_from_curve(double *curve,double *lpc,lpc_lookup *l);
+extern void vorbis_lpc_to_curve(double *curve,double *lpc,double amp,
lpc_lookup *l);
/* standard lpc stuff */
diff --git a/lib/lsp.c b/lib/lsp.c
index 959912d4..286cb9ae 100644
--- a/lib/lsp.c
+++ b/lib/lsp.c
@@ -12,7 +12,7 @@
********************************************************************
function: LSP (also called LSF) conversion routines
- last mod: $Id: lsp.c,v 1.7 2000/04/06 16:46:51 xiphmont Exp $
+ last mod: $Id: lsp.c,v 1.8 2000/05/08 20:49:49 xiphmont Exp $
The LSP generation code is taken (with minimal modification) from
"On the Computation of the LSP Frequencies" by Joseph Rothweiler
@@ -22,9 +22,20 @@
********************************************************************/
+/* Note that the lpc-lsp conversion finds the roots of polynomial with
+ an iterative root polisher (CACM algorithm 283). It *is* possible
+ to confuse this algorithm into not converging; that should only
+ happen with absurdly closely spaced roots (very sharp peaks in the
+ LPC f response) which in turn should be impossible in our use of
+ the code. If this *does* happen anyway, it's a bug in the floor
+ finder; find the cause of the confusion (probably a single bin
+ spike or accidental near-double-limit resolution problems) and
+ correct it. */
+
#include <math.h>
#include <string.h>
#include <stdlib.h>
+#include "lsp.h"
#include "os.h"
#include "misc.h"
@@ -76,29 +87,18 @@ void vorbis_lsp_to_lpc(double *lsp,double *lpc,int m){
}
}
-static void kw(double *r,int n) {
- double *s=alloca(sizeof(double)*(n/2+1));
- double *c=alloca(sizeof(double)*(n+1));
- int i, j, k;
-
- s[0] = 1.0;
- s[1] = -2.0;
- s[2] = 2.0;
- for(i=3;i<=n/2;i++) s[i] = s[i-2];
-
- for(k=0;k<=n;k++) {
- c[k] = r[k];
- j = 1;
- for(i=k+2;i<=n;i+=2) {
- c[k] += s[j]*r[i];
- s[j] -= s[j-1];
- j++;
+static void cheby(double *g, int ord) {
+ int i, j;
+
+ g[0] *= 0.5;
+ for(i=2; i<= ord; i++) {
+ for(j=ord; j >= i; j--) {
+ g[j-2] -= g[j];
+ g[j] += g[j];
}
}
- for(k=0;k<=n;k++) r[k] = c[k];
}
-
static int comp(const void *a,const void *b){
if(*(double *)a<*(double *)b)
return(1);
@@ -126,6 +126,7 @@ static void cacm283(double *a,int ord,double *r){
}
delta = val/p;
r[i] -= delta;
+
error += delta*delta;
}
}
@@ -160,8 +161,8 @@ void vorbis_lpc_to_lsp(double *lpc,double *lsp,int m){
for(i=0; i<order2;i++) g2[order2-i-1] += g2[order2-i];
/* Convert into polynomials in cos(alpha) */
- kw(g1,order2);
- kw(g2,order2);
+ cheby(g1,order2);
+ cheby(g2,order2);
/* Find the roots of the 2 even polynomials.*/
@@ -169,7 +170,7 @@ void vorbis_lpc_to_lsp(double *lpc,double *lsp,int m){
cacm283(g2,order2,g2r);
for(i=0;i<m;i+=2){
- lsp[i] = acos(g1r[i/2]*.5);
- lsp[i+1] = acos(g2r[i/2]*.5);
+ lsp[i] = acos(g1r[i/2]);
+ lsp[i+1] = acos(g2r[i/2]);
}
}
diff --git a/lib/mapping0.c b/lib/mapping0.c
index 6cb36bb2..63bc9477 100644
--- a/lib/mapping0.c
+++ b/lib/mapping0.c
@@ -12,7 +12,7 @@
********************************************************************
function: channel mapping 0 implementation
- last mod: $Id: mapping0.c,v 1.11 2000/02/23 09:24:29 xiphmont Exp $
+ last mod: $Id: mapping0.c,v 1.12 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
@@ -49,6 +49,10 @@ typedef struct {
vorbis_func_floor **floor_func;
vorbis_func_residue **residue_func;
+ int ch;
+ double **decay;
+ long lastframe; /* if a different mode is called, we need to
+ invalidate decay */
} vorbis_look_mapping0;
static void free_info(vorbis_info_mapping *i){
@@ -68,6 +72,12 @@ static void free_look(vorbis_look_mapping *look){
l->residue_func[i]->free_look(l->residue_look[i]);
if(l->psy_look)_vp_psy_clear(l->psy_look+i);
}
+ if(l->decay){
+ for(i=0;i<l->ch;i++){
+ if(l->decay[i])free(l->decay[i]);
+ }
+ free(l->decay);
+ }
free(l->time_func);
free(l->floor_func);
free(l->residue_func);
@@ -119,6 +129,13 @@ static vorbis_look_mapping *look(vorbis_dsp_state *vd,vorbis_info_mode *vm,
}
}
+ look->ch=vi->channels;
+ if(vi->psys){
+ look->decay=calloc(vi->channels,sizeof(double *));
+ for(i=0;i<vi->channels;i++)
+ look->decay[i]=calloc(vi->blocksizes[vm->blockflag]/2,sizeof(double));
+ }
+
return(look);
}
@@ -178,8 +195,10 @@ static vorbis_info_mapping *unpack(vorbis_info *vi,oggpack_buffer *opb){
#include "psy.h"
#include "bitwise.h"
#include "spectrum.h"
+#include "scales.h"
/* no time mapping implementation for now */
+static long seq=0;
static int forward(vorbis_block *vb,vorbis_look_mapping *l){
vorbis_dsp_state *vd=vb->vd;
vorbis_info *vi=vd->vi;
@@ -213,52 +232,52 @@ static int forward(vorbis_block *vb,vorbis_look_mapping *l){
}
{
- double *decfloor=_vorbis_block_alloc(vb,n*sizeof(double)/2);
- /*double *floor=_vorbis_block_alloc(vb,n*sizeof(double)/2);*/
+ double *floor=_vorbis_block_alloc(vb,n*sizeof(double)/2);
double *mask=_vorbis_block_alloc(vb,n*sizeof(double)/2);
for(i=0;i<vi->channels;i++){
double *pcm=vb->pcm[i];
+ double *decay=look->decay[i];
int submap=info->chmuxlist[i];
- /* perform psychoacoustics; takes PCM vector;
- returns two curves: the desired transform floor and the masking curve */
- /*memset(floor,0,sizeof(double)*n/2);*/
- memset(mask,0,sizeof(double)*n/2);
- /*_vp_mask_floor(look->psy_look+submap,pcm,floor,0); we use
- unnormalized masks as floors for now */
- _vp_mask_floor(look->psy_look+submap,pcm,mask,1);
+ /* if some other mode/mapping was called last frame, our decay
+ accumulator is out of date. Clear it. */
+ if(look->lastframe+1 != vb->sequence)
+ memset(decay,0,n*sizeof(double)/2);
+
+ /* perform psychoacoustics; do masking */
+ _vp_compute_mask(look->psy_look+submap,pcm,floor,mask,decay);
- /* perform floor encoding; takes transform floor, returns decoded floor */
- /* nonzero[i]=look->floor_func[submap]->
- forward(vb,look->floor_look[submap],floor,decfloor);*/
+ _analysis_output("mdct",seq,pcm,n/2,0,1);
+ _analysis_output("lmdct",seq,pcm,n/2,0,0);
+ _analysis_output("prefloor",seq,floor,n/2,0,1);
+
+ /* perform floor encoding */
nonzero[i]=look->floor_func[submap]->
- forward(vb,look->floor_look[submap],mask,decfloor);
+ forward(vb,look->floor_look[submap],floor,floor);
+
+ _analysis_output("floor",seq,floor,n/2,0,1);
+ /* apply the floor, do optional noise levelling */
+ _vp_apply_floor(look->psy_look+submap,pcm,floor,mask);
+
+ _analysis_output("res",seq++,pcm,n/2,0,0);
+
#ifdef TRAIN
if(nonzero[i]){
FILE *of;
char buffer[80];
int i;
- sprintf(buffer,"masked_%d.vqd",vb->mode);
+ sprintf(buffer,"residue_%d.vqd",vb->mode);
of=fopen(buffer,"a");
for(i=0;i<n/2;i++)
- fprintf(of,"%g, ",pcm[i]/mask[i]);
- fprintf(of,"\n");
- fclose(of);
- sprintf(buffer,"floored_%d.vqd",vb->mode);
- of=fopen(buffer,"a");
- for(i=0;i<n/2;i++)
- fprintf(of,"%g, ",pcm[i]/decfloor[i]);
+ fprintf(of,"%g, ",pcm[i]);
fprintf(of,"\n");
fclose(of);
}
#endif
- /* no iterative residue/floor tuning at the moment */
- if(nonzero[i])for(j=0;j<n/2;j++)pcm[j]/=decfloor[j];
-
}
/* perform residue encoding with residue mapping; this is
@@ -278,6 +297,7 @@ static int forward(vorbis_block *vb,vorbis_look_mapping *l){
}
}
+ look->lastframe=vb->sequence;
return(0);
}
@@ -305,6 +325,7 @@ static int inverse(vorbis_block *vb,vorbis_look_mapping *l){
int submap=info->chmuxlist[i];
nonzero[i]=look->floor_func[submap]->
inverse(vb,look->floor_look[submap],pcm);
+ _analysis_output("ifloor",seq+i,pcm,n/2,0,1);
}
/* recover the residue, apply directly to the spectral envelope */
@@ -323,6 +344,7 @@ static int inverse(vorbis_block *vb,vorbis_look_mapping *l){
/* only MDCT right now.... */
for(i=0;i<vi->channels;i++){
double *pcm=vb->pcm[i];
+ _analysis_output("out",seq++,pcm,n/2,0,0);
mdct_backward(vd->transform[vb->W][0],pcm,pcm);
}
diff --git a/lib/masking.h b/lib/masking.h
index dd9c67c0..b398b6b8 100644
--- a/lib/masking.h
+++ b/lib/masking.h
@@ -12,7 +12,7 @@
********************************************************************
function: masking curve data for psychoacoustics
- last mod: $Id: masking.h,v 1.1 2000/03/27 03:10:54 xiphmont Exp $
+ last mod: $Id: masking.h,v 1.2 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
@@ -37,113 +37,173 @@ double ATH_Bark_dB[]={
#define EHMER_MAX 56
double tone_250_40dB_SL[EHMER_MAX]={
- -67, -61, -55, -49, -43, -37, -31, -25, -19,-13, -7, -1, 4, 9, 15, 20,
- 22, 23, 22, 19, 18, 18, 16, 13, 9, 7, 3, 1, -1, -3, -6, -8,
- -10, -13, -16, -19, -21, -24, -28, -32, -36,-40,-44,-48,-52,-56,-60,-65,
- -70, -75, -80, -85, -90, -95,-100,-105};
+-900,-900,-900,-900,-900,-900,-900,-900, -19, -13, -7, -1, 4, 9, 15, 20,
+ 22, 23, 22, 19, 18, 18, 16, 13, 9, 7, 3, 1, -1, -3, -6, -8,
+ -10, -13, -16, -19, -21, -24, -28, -32, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_250_60dB_SL[EHMER_MAX]={
- -58, -50, -42, -36, -30, -23, -17, -11, -5, 1, 7, 13, 19, 25, 30, 33,
+-900,-900,-900,-900,-900,-900,-900, -10, -5, 1, 7, 13, 19, 25, 30, 33,
36, 39, 38, 37, 38, 39, 39, 40, 38, 36, 35, 34, 33, 31, 29, 28,
28, 28, 25, 20, 14, 10, 5, 0, -5,-10,-15,-20,-25,-30,-35,-40,
- -45, -50, -55, -60, -65, -70, -75, -80};
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_250_80dB_SL[EHMER_MAX]={
- -45, -38, -31, -24, -17, -10, -2, 4, 10, 17, 24, 30, 37, 41, 48, 49,
+-900,-900,-900,-900,-900,-900,-900, -10, 10, 17, 24, 30, 37, 41, 48, 49,
50, 53, 54, 53, 53, 54, 55, 57, 57, 57, 58, 59, 60, 58, 57, 58,
59, 58, 57, 54, 52, 50, 49, 47, 46, 47, 46, 44, 43, 42, 41, 40,
38, 32, 27, 22, 17, 11, 6, 0};
double tone_500_40dB_SL[EHMER_MAX]={
- -74, -68, -62, -56, -50, -44, -38, -32, -26,-20,-14, -8, -2, 4, 10, 17,
- 23, 16, 12, 9, 6, 3, 0, -3, -7,-10,-13,-16,-20,-23,-26,-30,
- -33, -36, -40, -43, -46, -50, -55, -60, -63,-66,-70,-75,-80,-85,-90,-95,
--100,-105,-110,-115,-120,-125,-130,-135};
+-900,-900,-900,-900,-900,-900,-900, -10, -26, -20, -14, -8, -2, 4, 10, 17,
+ 23, 16, 12, 9, 6, 3, 0, -3, -7, -10, -13, -16, -20, -23, -26, -30,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_500_60dB_SL[EHMER_MAX]={
- -64, -58, -52, -46, -40, -36, -30, -24, -18,-12, -6, 0, 6, 13, 20, 30,
- 39, 34, 31, 29, 29, 27, 24, 21, 18, 16, 13, 8, 6, 3, 1, -1,
- -5, -2, -5, -8, -12, -15, -18, -22, -25,-30,-35,-40,-45,-50,-55,-60,
- -65, -70, -75, -80, -85, -90, -95,-100};
+-900,-900,-900,-900,-900,-900,-900,-900, -18, -12, -6, 0, 6, 13, 20, 30,
+ 39, 34, 31, 29, 29, 27, 24, 21, 18, 16, 13, 8, 6, 3, 1, -1,
+ -5, -2, -5, -8, -12, -15, -18, -22, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_500_80dB_SL[EHMER_MAX]={
- -70, -64, -58, -52, -46, -40, -34, -28, -22,-16,-10, 0, 10, 20, 32, 43,
+-900,-900,-900,-900,-900,-900,-900,-900, -22,-16,-10, 0, 10, 20, 32, 43,
53, 52, 52, 50, 49, 50, 52, 55, 55, 54, 51, 49, 46, 44, 44, 42,
38, 34, 32, 29, 29, 28, 25, 23, 20, 16, 10, 7, 4, 2, -1, -4,
-7, -10, -15, -20, -25, -30, -35, -40};
double tone_500_100dB_SL[EHMER_MAX]={
- -56, -50, -44, -38, -32, -26, -20, -13, -7, 2, 10, 19, 27, 35, 55, 56,
+-900,-900,-900,-900,-900,-900,-900, -10, -7, 2, 10, 19, 27, 35, 55, 56,
62, 61, 60, 58, 57, 57, 59, 63, 65, 66, 62, 60, 57, 57, 58, 58,
57, 56, 56, 56, 57, 57, 56, 57, 57, 54, 47, 41, 37, 28, 21, 16,
10, 3, -3, -8, -13, -18, -23, -28};
double tone_1000_40dB_SL[EHMER_MAX]={
--135,-125,-115,-105, -95, -85, -75, -65, -55, -45, -35, -25, -15, -5, 5, 15,
- 25, 20, 13, 8, 3, -3, -9, -15, -20, -26, -31, -36, -42, -47, -52, -58,
- -63, -69, -74, -79, -85, -90, -95, -101,-106,-111,-116,-122,-127,-132,-138,-143,
--148,-153,-159,-164,-169,-175,-180, -185};
-
+-900,-900,-900,-900,-900,-900,-900,-900, -55, -40, -30, -20, -10, 0, 9, 20,
+ 27, 20, 13, 14, 13, 5, -1, -6, -11, -20, -30,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_1000_60dB_SL[EHMER_MAX]={
--120,-110,-100, -90, -80, -70, -60, -50, -40,-30,-20,-10, 0, 10, 20, 30,
- 39, 33, 24, 23, 21, 17, 13, 8, 3, -2, -8,-13,-18, -23, -28, -33,
- -38, -43, -48, -53, -58, -63, -68, -73, -78,-83,-88,-93,-98,-103,-108,-113,
--118,-123,-128,-133,-138,-143,-148,-153};
+-900,-900,-900,-900,-900,-900,-900, -43, -33,-23,-13, -3, 7, 17, 25, 37,
+ 42, 33, 25, 25, 23, 18, 13, 9, 4, -1, -7,-13,-18, -23, -28, -33,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_1000_80dB_SL[EHMER_MAX]={
--120,-110,-100, -90, -80, -70, -60, -50, -40,-30,-20,-10, 0, 10, 24, 42,
- 56, 55, 46, 41, 39, 37, 41, 46, 45, 41, 39, 35, 35, 34, 33, 31,
- 28, 22, 15, 10, 5, -2, -10, -18, -26,-34,-42,-50,-58,-66,-74,-82,
- -90, -95,-100,-105,-110,-115,-120,-125};
+-900,-900,-900,-900,-900,-900,-900, -35, -25,-14, -4, 6, 16, 27, 33, 50,
+ 59, 57, 47, 41, 40, 43, 47, 48, 47, 42, 39, 37, 37, 36, 35, 32,
+ 30, 27, 21, 15, 5, -2, -10, -18, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_1000_100dB_SL[EHMER_MAX]={
--114,-104, -94, -84, -74, -64, -54, -44, -34,-24,-14, -4, 6, 16, 33, 53,
- 65, 65, 55, 49, 43, 40, 44, 54, 59, 58, 49, 43, 52, 57, 57, 58,
+-900,-900,-900,-900,-900,-900, -40, -30, -20,-10, 0, 10, 23, 33, 45, 60,
+ 70, 72, 55, 49, 43, 40, 44, 54, 59, 58, 49, 43, 52, 57, 57, 58,
58, 54, 49, 47, 42, 39, 33, 28, 20, 15, 5, 0, -5,-15,-20,-25,
- -30, -35, -40, -45, -50, -55, -60, -65};
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_2000_40dB_SL[EHMER_MAX]={
--120,-110,-100, -90, -80, -70, -60, -50, -40, -30, -21, -12, -3, 5, 12, 20,
- 25, 21, 15, 5, -5, -15, -25, -35, -45, -55, -65, -75, -85, -95,-104,-112,
--120,-125,-130,-135,-140,-145,-150,-155, -160,-165,-170,-175,-180,-185,-190,-195,
--200,-205,-210,-215,-220,-225,-230,-235};
+-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -3, 5, 12, 20,
+ 24, 21, 14, 5, -5, -15, -25, -35, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_2000_60dB_SL[EHMER_MAX]={
--120,-110,-100, -90, -80, -70, -60, -50, -40, -30, -21, -12, -2, 8, 19, 32,
- 38, 34, 25, 17, 14, 13, 11, 7, 3, -2, -6, -10, -14, -20, -26, -32,
- -40, -48, -56, -64, -72, -80, -88, -96, -104,-112,-120,-128,-135,-142,-149,-156,
--163,-170,-177,-184,-191,-198,-205,-212};
+-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -2, 8, 19, 31,
+ 38, 34, 24, 17, 14, 13, 11, 7, 3, -2, -6, -10, -14, -20, -26, -32,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_2000_80dB_SL[EHMER_MAX]={
--120,-110,-100, -90, -80, -70, -60, -50, -40, -30, -21, -12, -2, 13, 28, 41,
- 52, 51, 43, 35, 28, 29, 35, 37, 37, 35, 31, 28, 25, 22, 19, 15,
- 11, 8, 6, 2, -6, -14, -22, -30, -38, -44, -52, -60, -68, -76, -84, -90,
- -95,-100,-105,-110,-115,-120,-125,-130};
+-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -2, 13, 28, 40,
+ 51, 51, 43, 35, 28, 29, 35, 37, 37, 35, 31, 28, 25, 22, 19, 15,
+ 11, 8, 6, 2, -6, -14, -22, -30, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_2000_100dB_SL[EHMER_MAX]={
--120,-110,-100, -90, -80, -70, -60, -50, -40, -30, -21, -10, 6, 25, 42, 60,
- 67, 61, 53, 43, 35, 31, 34, 47, 58, 51, 43, 45, 54, 59, 59, 56,
- 54, 51, 40, 29, 20, 11, 2, -8, -17, -26, -35, -44, -53, -62, -71, -80,
- -89, -98,-105,-110,-115,-120,-125,-130};
+-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -10, 6, 25, 42, 60,
+ 66, 60, 53, 43, 35, 31, 34, 47, 58, 51, 43, 45, 54, 59, 59, 56,
+ 54, 51, 40, 29, 20, 11, 2, -8, -17, -26, -35,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_4000_40dB_SL[EHMER_MAX]={
--150,-140,-130,-120,-110,-100, -90, -80, -70, -56, -43, -30, -17, -5, 7, 15,
- 21, 13, 5, -2, -10, -17, -24, -31, -38, -45, -52, -59, -66, -73, -80, -87,
- -94,-100,-105,-110,-115,-120,-125,-130, -135,-140,-145,-150,-155,-160,-165,-170,
--175,-180,-185,-190,-195,-200,-205,-210};
+-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, 0, 3, 10, 18,
+ 24, 21, 14, 5, -5, -15, -25, -35, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
double tone_4000_60dB_SL[EHMER_MAX]={
--150,-140,-130,-120,-110,-100, -90, -80, -70, -56, -43, -30, -17, -5, 10, 27,
- 37, 32, 20, 16, 10, 5, -5, -15, -20, -25, -30, -35, -40, -45, -50, -55,
- -60, -65, -70, -75, -80, -85, -90, -95, -100,-105,-110,-115,-120,-125,-130,-135,
--140,-145,-150,-155,-160,-165,-170,-175};
+-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -2, 8, 19, 31,
+ 38, 34, 26, 20, 16, 11, 9, 7, 3, -2, -6, -10, -14, -20, -26, -32,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
double tone_4000_80dB_SL[EHMER_MAX]={
--140,-130,-120,-110,-100, -90, -80, -70, -60, -50, -40, -29, -12, 5, 19, 37,
- 49, 48, 35, 33, 36, 36, 36, 31, 27, 17, 8, 0, -8, -16, -24, -32,
- -40, -48, -56, -64, -70, -75, -80, -85, -90, -95,-100,-105,-110,-115,-120,-125,
--130,-135,-140,-145,-150,-155,-160,-165};
+-900,-900,-900,-900,-900,-900,-900,-900, -60, -50, -40, -29, -12, 5, 19, 37,
+ 51, 49, 38, 32, 36, 36, 36, 31, 30, 22, 15, 5, -5, -16, -24, -32,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
double tone_4000_100dB_SL[EHMER_MAX]={
- -20, -12, -8, -4, 0, 4, 8, 11, 15, 22, 26, 28, 32, 36, 43, 54,
- 61, 60, 45, 41, 48, 49, 40, 26, 40, 40, 33, 29, 24, 19, 14, 9,
- 4, -1, -6, -11, -16, -21, -26, -31, -36, -41, -46, -51, -56, -61, -66, -71,
- -76, -81, -86, -91, -96,-101,-106,-111};
+ -20, -12, -8, -4, 0, 4, 8, 11, 15, 22, 26, 28, 32, 36, 43, 52,
+ 65, 61, 45, 41, 48, 49, 40, 30, 45, 30, 20, 10, 0, -10, -19, -28,
+ -37,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
+double tone_8000_60dB_SL[EHMER_MAX]={
+-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -5, 0, 15, 35,
+ 43, 40, 37, 36, 33, 30, 27, 24, 21, 18, 15, 12, 9, 5, -5, -15,
+ -25, -35,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
+double tone_8000_80dB_SL[EHMER_MAX]={
+-900,-900,-900,-900,-900,-900,-900, -10, -1, 2, 6, 10, 13, 19, 25, 35,
+ 63, 60, 56, 53, 50, 47, 44, 41, 38, 35, 32, 29, 26, 22, 15, 5,
+ -5, -15, -25, -35,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
double tone_8000_100dB_SL[EHMER_MAX]={
-18, -12, -7, -3, 0, 2, 6, 9, 12, 19, 22, 21, 19, 21, 40, 40,
- 69, 55,
- /* educated guessing from here on out */
- 35, 31, 38, 39, 30, 16, 30, 30, 23, 19, 14, 9, 4, -1,
- -6, -11, -16, -21, -26, -31, -36, -41, -46, -51, -56, -61, -66, -71, -76, -81,
- -86, -91, -96,-101,-106,-111,-116,-121};
+ 80, 60, 35, 25, 15, 5, -5, -15, -25, -35,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
+double noise_500_60dB_SL[EHMER_MAX]={
+-900,-900,-900,-900,-900, -20, -11, -2, 7, 16, 25, 34, 43, 52, 61, 66,
+ 69, 68, 58, 50, 44, 38, 32, 28, 25, 24, 20, 18, 17, 12, 10, 8,
+ 5, 0, -5, -8, -12, -15, -18, -22, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
+double noise_500_80dB_SL[EHMER_MAX]={
+-900,-900,-900, -20, -10, -1, 8, 17, 26, 35, 44, 53, 62, 70, 79, 83,
+ 85, 85, 81, 77, 74, 71, 68, 63, 61, 59, 56, 55, 54, 52, 48, 47,
+ 45, 46, 45, 43, 40, 37, 33, 32, 35, 32, 30, 29, 20, 10, 0, -10,
+ -20, -30,-900,-900,-900,-900,-900,-900};
+
+double noise_1000_60dB_SL[EHMER_MAX]={
+-900,-900,-900,-900, -24, -15, -6, 3, 12, 21, 28, 34, 40, 48, 57, 60,
+ 61, 56, 54, 45, 36, 27, 21, 19, 17, 13, 10, 0, -10, -20, -20,-900,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
+double noise_1000_80dB_SL[EHMER_MAX]={
+-900, -26, -17, -8, 1, 10, 19, 28, 37, 41, 46, 51, 58, 68, 74, 81,
+ 80, 81, 70, 66, 58, 61, 59, 55, 54, 53, 52, 49, 48, 42, 38, 38,
+ 39, 34, 30, 27, 20, 10, 0, -10, -20, -30,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
+double noise_2000_60dB_SL[EHMER_MAX]={
+-900,-900,-900, -34, -25, -16, -7, 2, 11, 18, 23, 30, 35, 42, 51, 58,
+ 58, 57, 50, 40, 30, 21, 15, 10, 0, -10, -20, -30,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
+double noise_2000_80dB_SL[EHMER_MAX]={
+-900, -26, -17, -8, 1, 10, 19, 28, 33, 38, 43, 48, 53, 62, 70, 77,
+ 77, 75, 70, 67, 68, 66, 62, 61, 60, 59, 52, 47, 39, 35, 34, 35,
+ 35, 33, 30, 27, 20, 10, 0, -10, -20, -30,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
+double noise_4000_60dB_SL[EHMER_MAX]={
+-900,-900,-900, -34, -25, -16, -7, 2, 11, 20, 25, 31, 37, 45, 56, 62,
+ 64, 61, 50, 35, 25, 15, 5, -5, -15 -25, -35,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
+
+double noise_4000_80dB_SL[EHMER_MAX]={
+-900, -26, -17, -8, 1, 10, 19, 26, 33, 39, 45, 50, 55, 65, 75, 82,
+ 84, 81, 78, 72, 70, 69, 66, 61, 50, 48, 46, 40, 35, 30, 25, 20,
+ 15, 10, 5, 0, -10, -20, -30,-900, -900,-900,-900,-900,-900,-900,-900,-900,
+-900,-900,-900,-900,-900,-900,-900,-900};
#endif
diff --git a/lib/misc.h b/lib/misc.h
index 7a4ae1b0..5e4eceb4 100644
--- a/lib/misc.h
+++ b/lib/misc.h
@@ -12,7 +12,7 @@
********************************************************************
function: miscellaneous prototypes
- last mod: $Id: misc.h,v 1.3 2000/03/10 13:21:18 xiphmont Exp $
+ last mod: $Id: misc.h,v 1.4 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
@@ -22,7 +22,7 @@
extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes);
extern void _vorbis_block_ripcord(vorbis_block *vb);
-extern void _analysis_output(char *base,int i,double *v,int n);
+extern void _analysis_output(char *base,int i,double *v,int n,int bark,int dB);
#ifdef DEBUG_LEAKS
extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line);
diff --git a/lib/os.h b/lib/os.h
index 7c0c65d4..6509aee4 100644
--- a/lib/os.h
+++ b/lib/os.h
@@ -14,7 +14,7 @@
********************************************************************
function: #ifdef jail to whip a few platforms into the UNIX ideal.
- last mod: $Id: os.h,v 1.4 2000/05/01 06:26:52 jon Exp $
+ last mod: $Id: os.h,v 1.5 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
@@ -25,14 +25,10 @@
#define M_PI (3.1415926539)
#endif
-#ifndef rint
-/* not strictly correct, but Vorbis doesn't care */
-#define rint(x) (floor((x)+0.5))
-#endif
-
-#ifndef alloca
+#ifndef __GNUC__
#ifdef _WIN32
# define alloca(x) (_alloca(x))
+# define rint(x) (floor((x)+0.5))
#endif
#endif
diff --git a/lib/psy.c b/lib/psy.c
index f0af41f1..27bdff3d 100644
--- a/lib/psy.c
+++ b/lib/psy.c
@@ -12,16 +12,16 @@
********************************************************************
function: psychoacoustics not including preecho
- last mod: $Id: psy.c,v 1.18 2000/04/03 08:30:49 xiphmont Exp $
+ last mod: $Id: psy.c,v 1.19 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
#include <stdlib.h>
#include <math.h>
#include <string.h>
-#include <stdio.h>
#include "vorbis/codec.h"
+#include "masking.h"
#include "psy.h"
#include "os.h"
#include "lpc.h"
@@ -29,8 +29,20 @@
#include "scales.h"
#include "misc.h"
-/* Set up decibel threshhold slopes on a Bark frequency scale */
+/* Why Bark scale for encoding but not masking? Because masking has a
+ strong harmonic dependancy */
+
+/* the beginnings of real psychoacoustic infrastructure. This is
+ still not tightly tuned */
+void _vi_psy_free(vorbis_info_psy *i){
+ if(i){
+ memset(i,0,sizeof(vorbis_info_psy));
+ free(i);
+ }
+}
+/* Set up decibel threshhold slopes on a Bark frequency scale */
+/* the only bit left on a Bark scale. No reason to change it right now */
static void set_curve(double *ref,double *c,int n, double crate){
int i,j=0;
@@ -45,104 +57,560 @@ static void set_curve(double *ref,double *c,int n, double crate){
}
}
+static void min_curve(double *c,
+ double *c2){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)if(c2[i]<c[i])c[i]=c2[i];
+}
+static void max_curve(double *c,
+ double *c2){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)if(c2[i]>c[i])c[i]=c2[i];
+}
+
+static void attenuate_curve(double *c,double att){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)
+ c[i]+=att;
+}
+
+static void linear_curve(double *c){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)
+ if(c[i]<=-900.)
+ c[i]=0.;
+ else
+ c[i]=fromdB(c[i]);
+}
+
+static void interp_curve_dB(double *c,double *c1,double *c2,double del){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)
+ c[i]=fromdB(todB(c2[i])*del+todB(c1[i])*(1.-del));
+}
+
+static void interp_curve(double *c,double *c1,double *c2,double del){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)
+ c[i]=c2[i]*del+c1[i]*(1.-del);
+}
+
+static void setup_curve(double **c,
+ int oc,
+ double *curveatt_dB){
+ int i,j;
+ double tempc[9][EHMER_MAX];
+ double ath[EHMER_MAX];
+
+ for(i=0;i<EHMER_MAX;i++){
+ double bark=toBARK(fromOC(oc*.5+(i-EHMER_OFFSET)*.125));
+ int ibark=floor(bark);
+ double del=bark-ibark;
+ if(ibark<26)
+ ath[i]=ATH_Bark_dB[ibark]*(1.-del)+ATH_Bark_dB[ibark+1]*del;
+ else
+ ath[i]=200;
+ }
+
+ memcpy(c[0],c[2],sizeof(double)*EHMER_MAX);
+
+ /* the temp curves are a bit roundabout, but this is only in
+ init. */
+ for(i=0;i<5;i++){
+ memcpy(tempc[i*2],c[i*2],sizeof(double)*EHMER_MAX);
+ attenuate_curve(tempc[i*2],curveatt_dB[i]+(i+1)*20);
+ max_curve(tempc[i*2],ath);
+ attenuate_curve(tempc[i*2],-(i+1)*20);
+ }
+
+ /* normalize them so the driving amplitude is 0dB */
+ for(i=0;i<5;i++){
+ attenuate_curve(c[i*2],curveatt_dB[i]);
+ }
+
+ /* The c array is comes in as dB curves at 20 40 60 80 100 dB.
+ interpolate intermediate dB curves */
+ for(i=0;i<7;i+=2){
+ interp_curve(c[i+1],c[i],c[i+2],.5);
+ interp_curve(tempc[i+1],tempc[i],tempc[i+2],.5);
+ }
+
+ /* take things out of dB domain into linear amplitude */
+ for(i=0;i<9;i++)
+ linear_curve(c[i]);
+ for(i=0;i<9;i++)
+ linear_curve(tempc[i]);
+
+ /* Now limit the louder curves.
+
+ the idea is this: We don't know what the playback attenuation
+ will be; 0dB SL moves every time the user twiddles the volume
+ knob. So that means we have to use a single 'most pessimal' curve
+ for all masking amplitudes, right? Wrong. The *loudest* sound
+ can be in (we assume) a range of ...+100dB] SL. However, sounds
+ 20dB down will be in a range ...+80], 40dB down is from ...+60],
+ etc... */
+
+ for(i=8;i>=0;i--){
+ for(j=0;j<i;j++)
+ min_curve(c[i],tempc[j]);
+ }
+}
+
+
void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,int n,long rate){
- long i;
+ long i,j;
+ double rate2=rate/2.;
memset(p,0,sizeof(vorbis_look_psy));
- p->maskthresh=malloc(n*sizeof(double));
- p->barknum=malloc(n*sizeof(double));
+ p->ath=malloc(n*sizeof(double));
+ p->octave=malloc(n*sizeof(int));
p->vi=vi;
p->n=n;
/* set up the lookups for a given blocksize and sample rate */
/* Vorbis max sample rate is limited by 26 Bark (54kHz) */
- set_curve(vi->maskthresh, p->maskthresh, n,rate);
-
+ set_curve(ATH_Bark_dB, p->ath,n,rate);
for(i=0;i<n;i++)
- p->barknum[i]=toBARK(rate/2.*i/n);
+ p->ath[i]=fromdB(p->ath[i]+vi->ath_att);
-#ifdef ANALYSIS
- {
- int j;
- FILE *out;
- char buffer[80];
-
- sprintf(buffer,"mask_threshhold_%d.m",n);
- out=fopen(buffer,"w+");
- for(j=0;j<n;j++)
- fprintf(out,"%g\n",p->maskthresh[j]);
- fclose(out);
+ for(i=0;i<n;i++){
+ int oc=rint(toOC((i+.5)*rate2/n)*2.);
+ if(oc<0)oc=0;
+ if(oc>10)oc=10;
+ p->octave[i]=oc;
+ }
+
+ p->tonecurves=malloc(11*sizeof(double **));
+ p->noisecurves=malloc(11*sizeof(double **));
+ for(i=0;i<11;i++){
+ p->tonecurves[i]=malloc(9*sizeof(double *));
+ p->noisecurves[i]=malloc(9*sizeof(double *));
}
-#endif
+ for(i=0;i<11;i++)
+ for(j=0;j<9;j++){
+ p->tonecurves[i][j]=malloc(EHMER_MAX*sizeof(double));
+ p->noisecurves[i][j]=malloc(EHMER_MAX*sizeof(double));
+ }
+
+ memcpy(p->tonecurves[0][2],tone_250_40dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[0][4],tone_250_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[0][6],tone_250_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[0][8],tone_250_80dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->tonecurves[2][2],tone_500_40dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[2][4],tone_500_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[2][6],tone_500_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[2][8],tone_500_100dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->tonecurves[4][2],tone_1000_40dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[4][4],tone_1000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[4][6],tone_1000_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[4][8],tone_1000_100dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->tonecurves[6][2],tone_2000_40dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[6][4],tone_2000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[6][6],tone_2000_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[6][8],tone_2000_100dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->tonecurves[8][2],tone_4000_40dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[8][4],tone_4000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[8][6],tone_4000_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[8][8],tone_4000_100dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->tonecurves[10][2],tone_8000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[10][4],tone_8000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[10][6],tone_8000_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->tonecurves[10][8],tone_8000_100dB_SL,sizeof(double)*EHMER_MAX);
+
+
+ memcpy(p->noisecurves[0][2],noise_500_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[0][4],noise_500_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[0][6],noise_500_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[0][8],noise_500_80dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->noisecurves[2][2],noise_500_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[2][4],noise_500_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[2][6],noise_500_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[2][8],noise_500_80dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->noisecurves[4][2],noise_1000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[4][4],noise_1000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[4][6],noise_1000_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[4][8],noise_1000_80dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->noisecurves[6][2],noise_2000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[6][4],noise_2000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[6][6],noise_2000_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[6][8],noise_2000_80dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->noisecurves[8][2],noise_4000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[8][4],noise_4000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[8][6],noise_4000_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[8][8],noise_4000_80dB_SL,sizeof(double)*EHMER_MAX);
+
+ memcpy(p->noisecurves[10][2],noise_4000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[10][4],noise_4000_60dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[10][6],noise_4000_80dB_SL,sizeof(double)*EHMER_MAX);
+ memcpy(p->noisecurves[10][8],noise_4000_80dB_SL,sizeof(double)*EHMER_MAX);
+
+ setup_curve(p->tonecurves[0],0,vi->toneatt_250Hz);
+ setup_curve(p->tonecurves[2],2,vi->toneatt_500Hz);
+ setup_curve(p->tonecurves[4],4,vi->toneatt_1000Hz);
+ setup_curve(p->tonecurves[6],6,vi->toneatt_2000Hz);
+ setup_curve(p->tonecurves[8],8,vi->toneatt_4000Hz);
+ setup_curve(p->tonecurves[10],10,vi->toneatt_8000Hz);
+
+ setup_curve(p->noisecurves[0],0,vi->noiseatt_250Hz);
+ setup_curve(p->noisecurves[2],2,vi->noiseatt_500Hz);
+ setup_curve(p->noisecurves[4],4,vi->noiseatt_1000Hz);
+ setup_curve(p->noisecurves[6],6,vi->noiseatt_2000Hz);
+ setup_curve(p->noisecurves[8],8,vi->noiseatt_4000Hz);
+ setup_curve(p->noisecurves[10],10,vi->noiseatt_8000Hz);
+
+ for(i=1;i<11;i+=2)
+ for(j=0;j<9;j++){
+ interp_curve_dB(p->tonecurves[i][j],
+ p->tonecurves[i-1][j],
+ p->tonecurves[i+1][j],.5);
+ interp_curve_dB(p->noisecurves[i][j],
+ p->noisecurves[i-1][j],
+ p->noisecurves[i+1][j],.5);
+ }
}
void _vp_psy_clear(vorbis_look_psy *p){
+ int i,j;
if(p){
- if(p->maskthresh)free(p->maskthresh);
- if(p->barknum)free(p->barknum);
+ if(p->ath)free(p->ath);
+ if(p->octave)free(p->octave);
+ if(p->noisecurves){
+ for(i=0;i<11;i++){
+ for(j=0;j<9;j++){
+ free(p->tonecurves[i][j]);
+ free(p->noisecurves[i][j]);
+ }
+ free(p->noisecurves[i]);
+ free(p->tonecurves[i]);
+ }
+ free(p->tonecurves);
+ free(p->noisecurves);
+ }
memset(p,0,sizeof(vorbis_look_psy));
}
}
-/* Masking curve: linear rolloff on a Bark/dB scale, attenuated by
- maskthresh */
+static void compute_decay(vorbis_look_psy *p,double *f, double *decay, int n){
+ int i;
+ /* handle decay */
+ if(p->vi->decayp && decay){
+ double decscale=1.-pow(p->vi->decay_coeff,n);
+ double attscale=1.-pow(p->vi->attack_coeff,n);
+ for(i=0;i<n;i++){
+ double del=f[i]-decay[i];
+ if(del>0)
+ /* add energy */
+ decay[i]+=del*attscale;
+ else
+ /* remove energy */
+ decay[i]+=del*decscale;
+ if(decay[i]>f[i])f[i]=decay[i];
+ }
+ }
+}
-void _vp_mask_floor(vorbis_look_psy *p,double *f, double *floor,int attp){
- int n=p->n;
- double hroll=p->vi->hrolldB;
- double lroll=p->vi->lrolldB;
- double curmask=todB(f[0])+(attp?p->maskthresh[0]:0);
- double curoc=0.;
- long i;
+static double _eights[EHMER_MAX+1]={
+ .2500000000000000000,.2726269331663144148,
+ .2973017787506802667,.3242098886627524165,
+ .3535533905932737622,.3855527063519852059,
+ .4204482076268572715,.4585020216023356159,
+ .5000000000000000000,.5452538663326288296,
+ .5946035575013605334,.6484197773255048330,
+ .7071067811865475244,.7711054127039704118,
+ .8408964152537145430,.9170040432046712317,
+ 1.000000000000000000,1.090507732665257659,
+ 1.189207115002721066,1.296839554651009665,
+ 1.414213562373095048,1.542210825407940823,
+ 1.681792830507429085,1.834008086409342463,
+ 2.000000000000000000,2.181015465330515318,
+ 2.378414230005442133,2.593679109302019331,
+ 2.828427124746190097,3.084421650815881646,
+ 3.363585661014858171,3.668016172818684926,
+ 4.000000000000000000,4.362030930661030635,
+ 4.756828460010884265,5.187358218604038662,
+ 5.656854249492380193,6.168843301631763292,
+ 6.727171322029716341,7.336032345637369851,
+ 8.000000000000000000,8.724061861322061270,
+ 9.513656920021768529,10.37471643720807732,
+ 11.31370849898476038,12.33768660326352658,
+ 13.45434264405943268,14.67206469127473970,
+ 16.00000000000000000,17.44812372264412253,
+ 19.02731384004353705,20.74943287441615464,
+ 22.62741699796952076,24.67537320652705316,
+ 26.90868528811886536,29.34412938254947939};
+
+static void seed_peaks(double *floor,
+ double **curves,
+ double amp,double specmax,
+ int x,int n,double specatt){
+ int i;
+ double x16=x*(1./16.);
+ int prevx=x*_eights[0]-x16;
+ int nextx;
+
+ /* make this attenuation adjustable */
+ int choice=rint((todB(amp)-specmax+specatt)/10.)-2;
+ if(choice<0)choice=0;
+ if(choice>8)choice=8;
+
+ for(i=0;i<EHMER_MAX;i++){
+ if(prevx<n){
+ double lin=curves[choice][i];
+ nextx=x*_eights[i]+x16;
+ nextx=(nextx<n?nextx:n);
+ if(lin){
+ lin*=amp;
+ if(floor[prevx]<lin)floor[prevx]=lin;
+ }
+ prevx=nextx;
+ }
+ }
+}
+
+static void seed_generic(vorbis_look_psy *p,
+ double ***curves,
+ double *f,
+ double *flr,
+ double specmax){
+ vorbis_info_psy *vi=p->vi;
+ long n=p->n,i;
+
+ /* prime the working vector with peak values */
+ /* Use the 250 Hz curve up to 250 Hz and 8kHz curve after 8kHz. */
+ for(i=0;i<n;i++)
+ if(f[i]>flr[i])
+ seed_peaks(flr,curves[p->octave[i]],f[i],
+ specmax,i,n,vi->max_curve_dB);
+}
+
+/* bleaugh, this is more complicated than it needs to be */
+static void max_seeds(vorbis_look_psy *p,double *flr){
+ long n=p->n,i,j;
+ long *posstack=alloca(n*sizeof(long));
+ double *ampstack=alloca(n*sizeof(double));
+ long stack=0;
- /* run mask forward then backward */
for(i=0;i<n;i++){
- double newmask=todB(f[i])+(attp?p->maskthresh[i]:0);
- double newoc=p->barknum[i];
- double roll=curmask-(newoc-curoc)*hroll;
- double troll;
- if(newmask>roll){
- roll=curmask=newmask;
- curoc=newoc;
+ if(stack<2){
+ posstack[stack]=i;
+ ampstack[stack++]=flr[i];
+ }else{
+ while(1){
+ if(flr[i]<ampstack[stack-1]){
+ posstack[stack]=i;
+ ampstack[stack++]=flr[i];
+ break;
+ }else{
+ if(i<posstack[stack-1]*17/15){
+ if(stack>1 && ampstack[stack-1]<ampstack[stack-2] &&
+ i<posstack[stack-2]*17/15){
+ /* we completely overlap, making stack-1 irrelevant. pop it */
+ stack--;
+ continue;
+ }
+ }
+ posstack[stack]=i;
+ ampstack[stack++]=flr[i];
+ break;
+
+ }
+ }
}
- troll=fromdB(roll);
- if(floor[i]<troll)floor[i]=troll;
- }
-
- curmask=todB(f[n-1])+(attp?p->maskthresh[n-1]:0);
- curoc=p->barknum[n-1];
- for(i=n-1;i>=0;i--){
- double newmask=todB(f[i])+(attp?p->maskthresh[i]:0);
- double newoc=p->barknum[i];
- double roll=curmask-(curoc-newoc)*lroll;
- double troll;
- if(newmask>roll){
- roll=curmask=newmask;
- curoc=newoc;
+ }
+
+ /* the stack now contains only the positions that are relevant. Scan
+ 'em straight through */
+ {
+ long pos=0;
+ for(i=0;i<stack;i++){
+ long endpos;
+ if(i<stack-1 && ampstack[i+1]>ampstack[i]){
+ endpos=posstack[i+1];
+ }else{
+ endpos=posstack[i]*17/15;
+ }
+ if(endpos>n)endpos=n;
+ for(j=pos;j<endpos;j++)flr[j]=ampstack[i];
+ pos=endpos;
}
- troll=fromdB(roll);
- if(floor[i]<troll)floor[i]=troll;
+ }
+
+ /* there. Linear time. I now remember this was on a problem set I
+ had in Grad Skool... I didn't solve it at the time ;-) */
+}
+
+#define noiseBIAS 5
+static void third_octave_noise(vorbis_look_psy *p,double *f,double *noise){
+ long i,n=p->n;
+ long lo=0,hi=0;
+ double acc=0.;
+
+ for(i=0;i<n;i++){
+ /* not exactly correct, (the center frequency should be centered
+ on a *log* scale), but not worth quibbling */
+ long newhi=i*7/5+noiseBIAS;
+ long newlo=i*5/7-noiseBIAS;
+ if(newhi>n)newhi=n;
+
+ for(;lo<newlo;lo++)
+ acc-=todB(f[lo]); /* yeah, this ain't RMS */
+ for(;hi<newhi;hi++)
+ acc+=todB(f[hi]);
+ noise[i]=fromdB(acc/(hi-lo));
}
}
-/* s must be padded at the end with m-1 zeroes */
-static void time_convolve(double *s,double *r,int n,int m){
- int i;
+/* stability doesn't matter */
+static int comp(const void *a,const void *b){
+ if(fabs(**(double **)a)<fabs(**(double **)b))
+ return(1);
+ else
+ return(-1);
+}
+
+static int frameno=-1;
+void _vp_compute_mask(vorbis_look_psy *p,double *f,
+ double *flr,
+ double *mask,
+ double *decay){
+ double *noise=alloca(sizeof(double)*p->n);
+ double *work=alloca(sizeof(double)*p->n);
+ int i,n=p->n;
+ double specmax=0.;
+
+ frameno++;
+
+ /* don't use the smoothed data for noise */
+ third_octave_noise(p,f,noise);
+
+ /* compute, update and apply decay accumulator */
+ for(i=0;i<n;i++)work[i]=fabs(f[i]);
+ compute_decay(p,work,decay,n);
+ if(p->vi->smoothp){
+ /* compute power^.5 of three neighboring bins to smooth for peaks
+ that get split twixt bins/peaks that nail the bin. This evens
+ out treatment as we're not doing additive masking any longer. */
+ double acc=work[0]*work[0]+work[1]*work[1];
+ double prev=work[0];
+
+ work[0]=sqrt(acc);
+ for(i=1;i<n-1;i++){
+ double this=work[i];
+ acc+=work[i+1]*work[i+1];
+ work[i]=sqrt(acc);
+ acc-=prev*prev;
+ prev=this;
+ }
+ work[n-1]=sqrt(acc);
+ }
+
+ /* find the highest peak so we know the limits */
for(i=0;i<n;i++){
- int j;
- double acc=0;
+ if(work[i]>specmax)specmax=work[i];
+ }
+ specmax=todB(specmax);
+
+ memset(flr,0,n*sizeof(double));
+ /* seed the tone masking */
+ if(p->vi->tonemaskp)
+ seed_generic(p,p->tonecurves,work,flr,specmax);
+
+ /* seed the noise masking */
+ if(p->vi->noisemaskp)
+ seed_generic(p,p->noisecurves,noise,flr,specmax);
+
+ /* chase the seeds */
+ max_seeds(p,flr);
+
+ /* mask off the ATH */
+ if(p->vi->athp)
+ for(i=0;i<n;i++)
+ mask[i]=max(p->ath[i],flr[i]*.5);
+ else
+ for(i=0;i<n;i++)
+ mask[i]=flr[i]*.5;
+}
+
- for(j=0;j<m;j++)
- acc+=s[i+j]*r[m-j-1];
+/* this applies the floor and (optionally) tries to preserve noise
+ energy in low resolution portions of the spectrum */
+/* f and flr are *linear* scale, not dB */
+void _vp_apply_floor(vorbis_look_psy *p,double *f,
+ double *flr,double *mask){
+ double *work=alloca(p->n*sizeof(double));
+ double thresh=fromdB(p->vi->noisefit_threshdB);
+ int i,j,addcount=0;
+ thresh*=thresh;
- s[i]=acc;
+ /* subtract the floor */
+ for(j=0;j<p->n;j++){
+ if(flr[j]<=0 || fabs(f[j])<mask[j])
+ work[j]=0.;
+ else
+ work[j]=f[j]/flr[j];
}
-}
-void _vi_psy_free(vorbis_info_psy *i){
- if(i){
- memset(i,0,sizeof(vorbis_info_psy));
- free(i);
+ /* look at spectral energy levels. Noise is noise; sensation level
+ is important */
+ if(p->vi->noisefitp){
+ double **index=alloca(p->vi->noisefit_subblock*sizeof(double *));
+
+ /* we're looking for zero values that we want to reinstate (to
+ floor level) in order to raise the SL noise level back closer
+ to original. Desired result; the SL of each block being as
+ close to (but still less than) the original as possible. Don't
+ bother if the net result is a change of less than
+ p->vi->noisefit_thresh dB */
+ for(i=0;i<p->n;){
+ double original_SL=0.;
+ double current_SL=0.;
+ int z=0;
+
+ /* compute current SL */
+ for(j=0;j<p->vi->noisefit_subblock && i<p->n;j++,i++){
+ double y=(f[i]*f[i]);
+ original_SL+=y;
+ if(work[i]){
+ current_SL+=y;
+ }else{
+ index[z++]=f+i;
+ }
+ }
+
+ /* sort the values below mask; add back the largest first, stop
+ when we violate the desired result above (which may be
+ immediately) */
+ if(z && current_SL*thresh<original_SL){
+ qsort(index,z,sizeof(double *),&comp);
+
+ for(j=0;j<z;j++){
+ int p=index[j]-f;
+ double val=flr[p]*flr[p]+current_SL;
+
+ if(val<original_SL && mask[p]<flr[p]){
+ addcount++;
+ if(f[p]>0)
+ work[p]=1;
+ else
+ work[p]=-1;
+ current_SL=val;
+ }else
+ break;
+ }
+ }
+ }
}
+ memcpy(f,work,p->n*sizeof(double));
}
+
diff --git a/lib/psy.h b/lib/psy.h
index 5f41163c..1e708e86 100644
--- a/lib/psy.h
+++ b/lib/psy.h
@@ -12,19 +12,27 @@
********************************************************************
function: random psychoacoustics (not including preecho)
- last mod: $Id: psy.h,v 1.11 2000/02/12 08:33:08 xiphmont Exp $
+ last mod: $Id: psy.h,v 1.12 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
#ifndef _V_PSY_H_
#define _V_PSY_H_
+#include "smallft.h"
+
+#ifndef EHMER_MAX
+#define EHMER_MAX 56
+#endif
typedef struct {
int n;
struct vorbis_info_psy *vi;
- double *maskthresh;
- double *barknum;
+ double ***tonecurves;
+ double ***noisecurves;
+
+ double *ath;
+ int *octave;
} vorbis_look_psy;
@@ -32,9 +40,13 @@ extern void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,int n,long rat
extern void _vp_psy_clear(vorbis_look_psy *p);
extern void *_vi_psy_dup(void *source);
extern void _vi_psy_free(vorbis_info_psy *i);
+extern void _vp_compute_mask(vorbis_look_psy *p,double *f,
+ double *floor,
+ double *mask,
+ double *decay);
+extern void _vp_apply_floor(vorbis_look_psy *p,double *f,
+ double *flr,double *mask);
-extern void _vp_mask_floor(vorbis_look_psy *p,double *pcm,double *floor,
- int attp);
#endif
diff --git a/lib/psytune.c b/lib/psytune.c
index e615df88..9ad8c9c3 100644
--- a/lib/psytune.c
+++ b/lib/psytune.c
@@ -13,7 +13,7 @@
function: simple utility that runs audio through the psychoacoustics
without encoding
- last mod: $Id: psytune.c,v 1.2 2000/04/03 08:30:49 xiphmont Exp $
+ last mod: $Id: psytune.c,v 1.3 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
@@ -27,35 +27,184 @@
#include "psy.h"
#include "mdct.h"
#include "window.h"
+#include "scales.h"
+#include "lpc.h"
static vorbis_info_psy _psy_set0={
- {-20, -20, -14, -14, -14, -14, -14, -14, -14, -14,
- -14, -14, -16, -16, -16, -16, -18, -18, -16, -16,
- -12, -10, -6, -3, -1, -1, -0}, 0., (.6/1024), 10,4
+ 1,/*athp*/
+ 1,/*decayp*/
+ 1,/*smoothp*/
+ 1,8,0.,
+
+ -130.,
+
+ 1,/* tonemaskp*/
+ {-35.,-40.,-60.,-80.,-80.}, /* remember that el 4 is an 80 dB curve, not 100 */
+ {-35.,-40.,-60.,-80.,-95.},
+ {-35.,-40.,-60.,-80.,-95.},
+ {-35.,-40.,-60.,-80.,-95.},
+ {-35.,-40.,-60.,-80.,-95.},
+ {-65.,-60.,-60.,-80.,-90.}, /* remember that el 1 is a 60 dB curve, not 40 */
+
+ 1,/*noisemaskp*/
+ {-100.,-100.,-100.,-200.,-200.}, /* this is the 500 Hz curve, which
+ is too wrong to work */
+ {-60.,-60.,-60.,-80.,-80.},
+ {-60.,-60.,-60.,-80.,-80.},
+ {-60.,-60.,-60.,-80.,-80.},
+ {-60.,-60.,-60.,-80.,-80.},
+ {-50.,-55.,-60.,-80.,-80.},
+
+ 110.,
+
+ .9998, .9997 /* attack/decay control */
};
+static int noisy=0;
+void analysis(char *base,int i,double *v,int n,int bark,int dB){
+ if(noisy){
+ int j;
+ FILE *of;
+ char buffer[80];
+ sprintf(buffer,"%s_%d.m",base,i);
+ of=fopen(buffer,"w");
+
+ for(j=0;j<n;j++){
+ if(dB && v[j]==0)
+ fprintf(of,"\n\n");
+ else{
+ if(bark)
+ fprintf(of,"%g ",toBARK(22050.*j/n));
+ else
+ fprintf(of,"%g ",(double)j);
+
+ if(dB){
+ fprintf(of,"%g\n",todB(fabs(v[j])));
+ }else{
+ fprintf(of,"%g\n",v[j]);
+ }
+ }
+ }
+ fclose(of);
+ }
+}
+
+typedef struct {
+ long n;
+ int ln;
+ int m;
+ int *linearmap;
+
+ vorbis_info_floor0 *vi;
+ lpc_lookup lpclook;
+} vorbis_look_floor0;
+
+extern double _curve_to_lpc(double *curve,double *lpc,vorbis_look_floor0 *l,
+ long frameno);
+extern void _lpc_to_curve(double *curve,double *lpc,double amp,
+ vorbis_look_floor0 *l,char *name,long frameno);
+
+long frameno=0;
+
+/* hacked from floor0.c */
+static void floorinit(vorbis_look_floor0 *look,int n,int m,int ln){
+ int j;
+ double scale;
+ look->m=m;
+ look->n=n;
+ look->ln=ln;
+ lpc_init(&look->lpclook,look->ln,look->m);
+
+ scale=look->ln/toBARK(22050.);
+
+ look->linearmap=malloc(look->n*sizeof(int));
+ for(j=0;j<look->n;j++){
+ int val=floor( toBARK(22050./n*j) *scale);
+ if(val>look->ln)val=look->ln;
+ look->linearmap[j]=val;
+ }
+}
+
int main(int argc,char *argv[]){
int eos=0;
+ double nonz=0.;
double acc=0.;
double tot=0.;
- int framesize=argv[1]?atoi(argv[1]):2048;
- double *pcm[2],*out[2],*window,*mask,*decay[2];
+
+ int framesize=2048;
+ int order=32;
+
+ double *pcm[2],*out[2],*window,*decay[2],*lpc,*floor,*mask;
signed char *buffer,*buffer2;
mdct_lookup m_look;
vorbis_look_psy p_look;
+ long i,j,k;
+
+ vorbis_look_floor0 floorlook;
+
+ int ath=0;
+ int decayp=0;
+ argv++;
+ while(*argv){
+ if(*argv[0]=='-'){
+ /* option */
+ if(argv[0][1]=='v'){
+ noisy=0;
+ }
+ if(argv[0][1]=='A'){
+ ath=0;
+ }
+ if(argv[0][1]=='D'){
+ decayp=0;
+ }
+ if(argv[0][1]=='X'){
+ ath=0;
+ decayp=0;
+ }
+ }else
+ if(*argv[0]=='+'){
+ /* option */
+ if(argv[0][1]=='v'){
+ noisy=1;
+ }
+ if(argv[0][1]=='A'){
+ ath=1;
+ }
+ if(argv[0][1]=='D'){
+ decayp=1;
+ }
+ if(argv[0][1]=='X'){
+ ath=1;
+ decayp=1;
+ }
+ }else
+ framesize=atoi(argv[0]);
+ argv++;
+ }
+
pcm[0]=malloc(framesize*sizeof(double));
pcm[1]=malloc(framesize*sizeof(double));
out[0]=calloc(framesize/2,sizeof(double));
out[1]=calloc(framesize/2,sizeof(double));
decay[0]=calloc(framesize/2,sizeof(double));
decay[1]=calloc(framesize/2,sizeof(double));
- mask=malloc(framesize/2*sizeof(double));
+ floor=malloc(framesize*sizeof(double));
+ mask=malloc(framesize*sizeof(double));
+ lpc=malloc(order*sizeof(double));
buffer=malloc(framesize*4);
buffer2=buffer+framesize*2;
window=_vorbis_window(0,framesize,framesize/2,framesize/2);
mdct_init(&m_look,framesize);
_vp_psy_init(&p_look,&_psy_set0,framesize/2,44100);
+ floorinit(&floorlook,framesize/2,order,framesize/8);
+
+ for(i=0;i<11;i++)
+ for(j=0;j<9;j++)
+ analysis("Ptonecurve",i*10+j,p_look.tonecurves[i][j],EHMER_MAX,0,1);
+ for(i=0;i<11;i++)
+ for(j=0;j<9;j++)
+ analysis("Pnoisecurve",i*10+j,p_look.noisecurves[i][j],EHMER_MAX,0,1);
/* we cheat on the WAV header; we just bypass 44 bytes and never
verify that it matches 16bit/stereo/44.1kHz. */
@@ -64,10 +213,11 @@ int main(int argc,char *argv[]){
fwrite(buffer,1,44,stdout);
memset(buffer,0,framesize*2);
+ analysis("window",0,window,framesize,0,0);
+
fprintf(stderr,"Processing for frame size %d...\n",framesize);
while(!eos){
- long i,j,k;
long bytes=fread(buffer2,1,framesize*2,stdin);
if(bytes<framesize*2)
memset(buffer2+bytes,0,framesize*2-bytes);
@@ -83,32 +233,52 @@ int main(int argc,char *argv[]){
}
for(i=0;i<2;i++){
+ double amp;
+
+ analysis("pre",frameno,pcm[i],framesize,0,0);
+
+ /* do the psychacoustics */
for(j=0;j<framesize;j++)
pcm[i][j]*=window[j];
mdct_forward(&m_look,pcm[i],pcm[i]);
- /* do the psychacoustics */
+ analysis("mdct",frameno,pcm[i],framesize/2,1,1);
- memset(mask,0,sizeof(double)*framesize/2);
- _vp_mask_floor(&p_look,pcm[i],mask,decay[i],1);
+ _vp_compute_mask(&p_look,pcm[i],floor,mask,decay[i]);
+
+ analysis("prefloor",frameno,floor,framesize/2,1,1);
+ analysis("mask",frameno,mask,framesize/2,1,1);
+ analysis("decay",frameno,decay[i],framesize/2,1,1);
+
+ amp=_curve_to_lpc(floor,lpc,&floorlook,frameno);
+ _lpc_to_curve(floor,lpc,sqrt(amp),&floorlook,"Ffloor",frameno);
+ analysis("floor",frameno,floor,framesize/2,1,1);
- /* quantize according to masking */
+ _vp_apply_floor(&p_look,pcm[i],floor,mask);
+ analysis("quant",frameno,pcm[i],framesize/2,1,1);
+
+ /* re-add floor */
for(j=0;j<framesize/2;j++){
- double val;
- if(mask[j]==0)
- val=0;
- else
- val=rint(pcm[i][j]/mask[j]);
- acc+=log(fabs(val)*2.+1.)/log(2);
+ double val=rint(pcm[i][j]);
tot++;
- pcm[i][j]=val*mask[j];
+ if(val){
+ nonz++;
+ acc+=log(fabs(val)*2.+1.)/log(2);
+ pcm[i][j]=val*floor[j];
+ }else{
+ pcm[i][j]=0;
+ }
}
+
+ analysis("final",frameno,pcm[i],framesize/2,1,1);
/* take it back to time */
mdct_backward(&m_look,pcm[i],pcm[i]);
for(j=0;j<framesize/2;j++)
out[i][j]+=pcm[i][j]*window[j];
+
+ frameno++;
}
/* write data. Use the part of buffer we're about to shift out */
@@ -137,6 +307,8 @@ int main(int argc,char *argv[]){
eos=1;
}
fprintf(stderr,"average raw bits of entropy: %.03g/sample\n",acc/tot);
+ fprintf(stderr,"average nonzero samples: %.03g/%d\n",nonz/tot*framesize/2,
+ framesize/2);
fprintf(stderr,"Done\n\n");
return 0;
}
diff --git a/lib/res0.c b/lib/res0.c
index a6ad557b..64259fdc 100644
--- a/lib/res0.c
+++ b/lib/res0.c
@@ -12,7 +12,7 @@
********************************************************************
function: residue backend 0 implementation
- last mod: $Id: res0.c,v 1.11 2000/04/06 15:55:41 xiphmont Exp $
+ last mod: $Id: res0.c,v 1.12 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
@@ -28,8 +28,8 @@
#include "vorbis/codec.h"
#include "bitwise.h"
#include "registry.h"
-#include "scales.h"
#include "bookinternal.h"
+#include "sharedbook.h"
#include "misc.h"
#include "os.h"
@@ -38,9 +38,7 @@ typedef struct {
int parts;
codebook *phrasebook;
-
codebook ***partbooks;
- int *partstages;
int partvals;
int **decodemap;
@@ -63,7 +61,6 @@ void free_look(vorbis_look_residue *i){
for(j=0;j<look->partvals;j++)
free(look->decodemap[j]);
free(look->decodemap);
- if(look->partstages)free(look->partstages);
memset(i,0,sizeof(vorbis_look_residue0));
free(i);
}
@@ -98,8 +95,9 @@ vorbis_info_residue *unpack(vorbis_info *vi,oggpack_buffer *opb){
info->grouping=_oggpack_read(opb,24)+1;
info->partitions=_oggpack_read(opb,6)+1;
info->groupbook=_oggpack_read(opb,8);
- for(j=0;j<info->partitions;j++)
+ for(j=0;j<info->partitions;j++){
acc+=info->secondstages[j]=_oggpack_read(opb,4);
+ }
for(j=0;j<acc;j++)
info->booklist[j]=_oggpack_read(opb,8);
@@ -126,7 +124,6 @@ vorbis_look_residue *look (vorbis_dsp_state *vd,vorbis_info_mode *vm,
dim=look->phrasebook->dim;
look->partbooks=calloc(look->parts,sizeof(codebook **));
- look->partstages=calloc(look->parts,sizeof(int));
for(j=0;j<look->parts;j++){
int stages=info->secondstages[j];
@@ -135,10 +132,9 @@ vorbis_look_residue *look (vorbis_dsp_state *vd,vorbis_info_mode *vm,
for(k=0;k<stages;k++)
look->partbooks[j][k]=vd->fullbooks+info->booklist[acc++];
}
- look->partstages[j]=stages;
}
- look->partvals=pow(look->parts,dim);
+ look->partvals=rint(pow(look->parts,dim));
look->decodemap=malloc(look->partvals*sizeof(int *));
for(j=0;j<look->partvals;j++){
long val=j;
@@ -155,76 +151,48 @@ vorbis_look_residue *look (vorbis_dsp_state *vd,vorbis_info_mode *vm,
return(look);
}
-/* returns the distance error from encoding with this book set */
-static double _testpart(double *vec,int n, int stages, codebook **books){
- int i,j;
-
- double *work=alloca(n*sizeof(double)),acc=0.;
- memcpy(work,vec,n*sizeof(double));
-
- if(stages==0){
- /* a mild hack. We want partitions with samples values under
- fabs(.5) to be fully zeroed; if this case is met, we return an
- error of -1 (which cannot be beaten). If the samples values
- don't meet this criteria, return the real error */
- for(i=0;i<n;i++)
- if(fabs(vec[i])>.5)break;
- if(i==n)return(-1.);
-
- /* real (squared) error */
- for(i=0;i<n;i++)
- acc+=vec[i]*vec[i];
-
- }else{
- for(j=0;j<stages;j++){
- acc=0.;
- for(i=0;i<n;i+=books[j]->dim)
- acc+=vorbis_book_vE(books[j],work+i);
- }
- }
-
- return(acc);
-}
-
-static int _testhack(double *vec,int n){
- int i;
- double acc=0.;
+/* classify by max quantized amplitude only */
+static int _testhack(double *vec,int n,vorbis_look_residue0 *look){
+ vorbis_info_residue0 *info=look->info;
double max=0.;
+ int i;
+
for(i=0;i<n;i++)
- acc+=todB(fabs(vec[i]));
- acc=fromdB(acc/n);
- for(i=0;i<n;i++)
- max=(fabs(vec[i])>max?fabs(vec[i]):max);
-
- if(max<.5)return(0);
- if(max<2.5 && acc<1.5)return(1);
- if(max<6.)return(2);
- return(3);
+ if(fabs(vec[i])>max)max=fabs(vec[i]);
+
+ for(i=0;i<look->parts-1;i++)
+ if(max>=info->ampmax[i])
+ break;
+ return(i);
}
static int _encodepart(oggpack_buffer *opb,double *vec, int n,
int stages, codebook **books){
int i,j,bits=0;
- double *work=alloca(n*sizeof(double));
- memcpy(work,vec,n*sizeof(double));
+ for(j=0;j<stages;j++){
+ int dim=books[j]->dim;
+ int step=n/dim;
+ for(i=0;i<step;i++)
+ bits+=vorbis_book_encodevs(books[j],vec+i,opb,step,0);
+
+ }
- for(j=0;j<stages;j++)
- for(i=0;i<n;i+=books[j]->dim)
- bits+=vorbis_book_encodevE(books[j],work+i,opb);
-
return(bits);
}
static int _decodepart(oggpack_buffer *opb,double *work,double *vec, int n,
int stages, codebook **books){
int i,j;
-
- memset(work,0,n*sizeof(double));
- for(j=0;j<stages;j++)
- for(i=0;i<n;i+=books[j]->dim)
- vorbis_book_decodev(books[j],work+i,opb);
-
+
+ memset(work,0,sizeof(double)*n);
+ for(j=0;j<stages;j++){
+ int dim=books[j]->dim;
+ int step=n/dim;
+ for(i=0;i<step;i++)
+ vorbis_book_decodevs(books[j],work+i,opb,step,0);
+ }
+
for(i=0;i<n;i++)
vec[i]*=work[i];
@@ -251,11 +219,10 @@ int forward(vorbis_block *vb,vorbis_look_residue *vl,
long **partword=_vorbis_block_alloc(vb,ch*sizeof(long *));
partvals=partwords*partitions_per_word;
- /* we find/encode the patition type for each partition of each
+ /* we find the patition type for each partition of each
channel. We'll go back and do the interleaved encoding in a
bit. For now, clarity */
- if(ch)_analysis_output("a_res",vb->sequence,in[0],n);
memset(resbits,0,sizeof(long)*possible_partitions);
memset(resvals,0,sizeof(long)*possible_partitions);
@@ -264,34 +231,16 @@ int forward(vorbis_block *vb,vorbis_look_residue *vl,
memset(partword[i],0,n/samples_per_partition*sizeof(long));
}
- for(i=info->begin,l=0;i<info->end;i+=samples_per_partition,l++){
- for(j=0;j<ch;j++){
-
- /* find the best encoding for the partition using each possible
- book. Use the book that had lowest error (we arrange the
- books to make optimal choice very obvious and not even think
- about bits) */
- partword[j][l]=_testhack(in[j]+i,samples_per_partition);
-
-#if 0
- double best=_testpart(in[j]+i,samples_per_partition,
- look->partstages[0],look->partbooks[0]);
- for(k=1;k<info->partitions;k++){
- double this=_testpart(in[j]+i,samples_per_partition,
- look->partstages[k],look->partbooks[k]);
- if(this<best){
- best=this;
- partword[j][l]=k;
- }
- }
-#endif
- }
- }
+ for(i=info->begin,l=0;i<info->end;i+=samples_per_partition,l++)
+ for(j=0;j<ch;j++)
+ /* do the partition decision based on the number of 'bits'
+ needed to encode the block */
+ partword[j][l]=_testhack(in[j]+i,samples_per_partition,look);
/* we code the partition words for each channel, then the residual
words for a partition per channel until we've written all the
- partitions for that partition word. Then write the next parition
- channel words... */
+ residual words for that partition word. Then write the next
+ parition channel words... */
for(i=info->begin,l=0;i<info->end;){
/* first we encode a partition codeword for each channel */
@@ -306,7 +255,7 @@ int forward(vorbis_block *vb,vorbis_look_residue *vl,
for(j=0;j<ch;j++){
resbits[partword[j][l]]+=
_encodepart(&vb->opb,in[j]+i,samples_per_partition,
- look->partstages[partword[j][l]],
+ info->secondstages[partword[j][l]],
look->partbooks[partword[j][l]]);
resvals[partword[j][l]]+=samples_per_partition;
}
@@ -314,12 +263,13 @@ int forward(vorbis_block *vb,vorbis_look_residue *vl,
}
for(i=0;i<possible_partitions;i++)resbitsT+=resbits[i];
- fprintf(stderr,"Encoded %ld res vectors in %ld phrasing and %ld res bits\n\t",
+ fprintf(stderr,
+ "Encoded %ld res vectors in %ld phrasing and %ld res bits\n\t",
ch*(info->end-info->begin),phrasebits,resbitsT);
for(i=0;i<possible_partitions;i++)
fprintf(stderr,"%ld(%ld):%ld ",i,resvals[i],resbits[i]);
fprintf(stderr,"\n");
-
+
return(0);
}
@@ -352,13 +302,11 @@ int inverse(vorbis_block *vb,vorbis_look_residue *vl,double **in,int ch){
for(j=0;j<ch;j++){
int part=partword[j][k];
_decodepart(&vb->opb,work,in[j]+i,samples_per_partition,
- look->partstages[part],
+ info->secondstages[part],
look->partbooks[part]);
}
}
- if(ch)_analysis_output("s_res",vb->sequence,in[0],n);
-
return(0);
}
diff --git a/lib/scales.h b/lib/scales.h
index 3e9519de..3a507011 100644
--- a/lib/scales.h
+++ b/lib/scales.h
@@ -12,7 +12,7 @@
********************************************************************
function: linear scale -> dB, Bark and Mel scales
- last mod: $Id: scales.h,v 1.1 2000/01/04 09:05:03 xiphmont Exp $
+ last mod: $Id: scales.h,v 1.2 2000/05/08 20:49:49 xiphmont Exp $
********************************************************************/
@@ -25,6 +25,7 @@
#define max(x,y) ((x)<(y)?(y):(x))
/* 20log10(x) */
+#define DYNAMIC_RANGE_dB 200.
#define todB(x) ((x)==0?-9.e40:log(fabs(x))*8.6858896)
#define fromdB(x) (exp((x)*.11512925))
@@ -38,9 +39,16 @@
all f in Hz, z in Bark */
-#define toBARK(f) (13.1*atan(.00074*(f))+2.24*atan((f)*(f)*1.85e-8)+1e-4*(f))
+#define toBARK(f) (13.1*atan(.00074*(f))+2.24*atan((f)*(f)*1.85e-8)+1e-4*(f))
#define fromBARK(z) (102.*(z)-2.*pow(z,2.)+.4*pow(z,3)+pow(1.46,z)-1.)
-#define toMEL(f) (log(1.+(f)*.001)*1442.695)
+#define toMEL(f) (log(1.+(f)*.001)*1442.695)
#define fromMEL(m) (1000.*exp((m)/1442.695)-1000.)
+/* Frequency to octave. We arbitrarily declare 250.0 Hz to be octave
+ 0.0 */
+
+#define toOC(f) (log(f)*1.442695-7.965784)
+#define fromOC(o) (exp(((o)+7.965784)*.693147))
+
#endif
+
diff --git a/lib/sharedbook.c b/lib/sharedbook.c
new file mode 100644
index 00000000..b8b00759
--- /dev/null
+++ b/lib/sharedbook.c
@@ -0,0 +1,545 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: basic shared codebook operations
+ last mod: $Id: sharedbook.c,v 1.2 2000/05/08 20:49:49 xiphmont Exp $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include "vorbis/codec.h"
+#include "vorbis/codebook.h"
+#include "bitwise.h"
+#include "scales.h"
+#include "sharedbook.h"
+
+/**** pack/unpack helpers ******************************************/
+int _ilog(unsigned int v){
+ int ret=0;
+ while(v){
+ ret++;
+ v>>=1;
+ }
+ return(ret);
+}
+
+/* 32 bit float (not IEEE; nonnormalized mantissa +
+ biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm
+ Why not IEEE? It's just not that important here. */
+
+#define VQ_FEXP 10
+#define VQ_FMAN 21
+#define VQ_FEXP_BIAS 768 /* bias toward values smaller than 1. */
+
+/* doesn't currently guard under/overflow */
+long _float32_pack(double val){
+ int sign=0;
+ long exp;
+ long mant;
+ if(val<0){
+ sign=0x80000000;
+ val= -val;
+ }
+ exp= floor(log(val)/log(2));
+ mant=rint(ldexp(val,(VQ_FMAN-1)-exp));
+ exp=(exp+VQ_FEXP_BIAS)<<VQ_FMAN;
+
+ return(sign|exp|mant);
+}
+
+double _float32_unpack(long val){
+ double mant=val&0x1fffff;
+ double sign=val&0x80000000;
+ double exp =(val&0x7fe00000)>>VQ_FMAN;
+ if(sign)mant= -mant;
+ return(ldexp(mant,exp-(VQ_FMAN-1)-VQ_FEXP_BIAS));
+}
+
+/* given a list of word lengths, generate a list of codewords. Works
+ for length ordered or unordered, always assigns the lowest valued
+ codewords first. Extended to handle unused entries (length 0) */
+long *_make_words(long *l,long n){
+ long i,j;
+ long marker[33];
+ long *r=malloc(n*sizeof(long));
+ memset(marker,0,sizeof(marker));
+
+ for(i=0;i<n;i++){
+ long length=l[i];
+ if(length>0){
+ long entry=marker[length];
+
+ /* when we claim a node for an entry, we also claim the nodes
+ below it (pruning off the imagined tree that may have dangled
+ from it) as well as blocking the use of any nodes directly
+ above for leaves */
+
+ /* update ourself */
+ if(length<32 && (entry>>length)){
+ /* error condition; the lengths must specify an overpopulated tree */
+ free(r);
+ return(NULL);
+ }
+ r[i]=entry;
+
+ /* Look to see if the next shorter marker points to the node
+ above. if so, update it and repeat. */
+ {
+ for(j=length;j>0;j--){
+
+ if(marker[j]&1){
+ /* have to jump branches */
+ if(j==1)
+ marker[1]++;
+ else
+ marker[j]=marker[j-1]<<1;
+ break; /* invariant says next upper marker would already
+ have been moved if it was on the same path */
+ }
+ marker[j]++;
+ }
+ }
+
+ /* prune the tree; the implicit invariant says all the longer
+ markers were dangling from our just-taken node. Dangle them
+ from our *new* node. */
+ for(j=length+1;j<33;j++)
+ if((marker[j]>>1) == entry){
+ entry=marker[j];
+ marker[j]=marker[j-1]<<1;
+ }else
+ break;
+ }
+ }
+
+ /* bitreverse the words because our bitwise packer/unpacker is LSb
+ endian */
+ for(i=0;i<n;i++){
+ long temp=0;
+ for(j=0;j<l[i];j++){
+ temp<<=1;
+ temp|=(r[i]>>j)&1;
+ }
+ r[i]=temp;
+ }
+
+ return(r);
+}
+
+/* build the decode helper tree from the codewords */
+decode_aux *_make_decode_tree(codebook *c){
+ const static_codebook *s=c->c;
+ long top=0,i,j;
+ decode_aux *t=malloc(sizeof(decode_aux));
+ long *ptr0=t->ptr0=calloc(c->entries*2,sizeof(long));
+ long *ptr1=t->ptr1=calloc(c->entries*2,sizeof(long));
+ long *codelist=_make_words(s->lengthlist,s->entries);
+
+ if(codelist==NULL)return(NULL);
+ t->aux=c->entries*2;
+
+ for(i=0;i<c->entries;i++){
+ if(s->lengthlist[i]>0){
+ long ptr=0;
+ for(j=0;j<s->lengthlist[i]-1;j++){
+ int bit=(codelist[i]>>j)&1;
+ if(!bit){
+ if(!ptr0[ptr])
+ ptr0[ptr]= ++top;
+ ptr=ptr0[ptr];
+ }else{
+ if(!ptr1[ptr])
+ ptr1[ptr]= ++top;
+ ptr=ptr1[ptr];
+ }
+ }
+ if(!((codelist[i]>>j)&1))
+ ptr0[ptr]=-i;
+ else
+ ptr1[ptr]=-i;
+ }
+ }
+ free(codelist);
+ return(t);
+}
+
+/* there might be a straightforward one-line way to do the below
+ that's portable and totally safe against roundoff, but I haven't
+ thought of it. Therefore, we opt on the side of caution */
+long _book_maptype1_quantvals(const static_codebook *b){
+ long vals=floor(pow(b->entries,1./b->dim));
+
+ /* the above *should* be reliable, but we'll not assume that FP is
+ ever reliable when bitstream sync is at stake; verify via integer
+ means that vals really is the greatest value of dim for which
+ vals^b->bim <= b->entries */
+ /* treat the above as an initial guess */
+ while(1){
+ long acc=1;
+ long acc1=1;
+ int i;
+ for(i=0;i<b->dim;i++){
+ acc*=vals;
+ acc1*=vals+1;
+ }
+ if(acc<=b->entries && acc1>b->entries){
+ return(vals);
+ }else{
+ if(acc>b->entries){
+ vals--;
+ }else{
+ vals++;
+ }
+ }
+ }
+}
+
+/* unpack the quantized list of values for encode/decode ***********/
+/* we need to deal with two map types: in map type 1, the values are
+ generated algorithmically (each column of the vector counts through
+ the values in the quant vector). in map type 2, all the values came
+ in in an explicit list. Both value lists must be unpacked */
+double *_book_unquantize(const static_codebook *b){
+ long j,k;
+ if(b->maptype==1 || b->maptype==2){
+ int quantvals;
+ double mindel=_float32_unpack(b->q_min);
+ double delta=_float32_unpack(b->q_delta);
+ double *r=calloc(b->entries*b->dim,sizeof(double));
+
+ /* maptype 1 and 2 both use a quantized value vector, but
+ different sizes */
+ switch(b->maptype){
+ case 1:
+ /* most of the time, entries%dimensions == 0, but we need to be
+ well defined. We define that the possible vales at each
+ scalar is values == entries/dim. If entries%dim != 0, we'll
+ have 'too few' values (values*dim<entries), which means that
+ we'll have 'left over' entries; left over entries use zeroed
+ values (and are wasted). So don't generate codebooks like
+ that */
+ quantvals=_book_maptype1_quantvals(b);
+ for(j=0;j<b->entries;j++){
+ double last=0.;
+ int indexdiv=1;
+ for(k=0;k<b->dim;k++){
+ int index= (j/indexdiv)%quantvals;
+ double val=b->quantlist[index];
+ val=fabs(val)*delta+mindel+last;
+ if(b->q_sequencep)last=val;
+ r[j*b->dim+k]=val;
+ indexdiv*=quantvals;
+ }
+ }
+ break;
+ case 2:
+ for(j=0;j<b->entries;j++){
+ double last=0.;
+ for(k=0;k<b->dim;k++){
+ double val=b->quantlist[j*b->dim+k];
+ val=fabs(val)*delta+mindel+last;
+ if(b->q_sequencep)last=val;
+ r[j*b->dim+k]=val;
+ }
+ }
+ }
+ return(r);
+ }
+ return(NULL);
+}
+
+void vorbis_staticbook_clear(static_codebook *b){
+ if(b->quantlist)free(b->quantlist);
+ if(b->lengthlist)free(b->lengthlist);
+ if(b->nearest_tree){
+ free(b->nearest_tree->ptr0);
+ free(b->nearest_tree->ptr1);
+ free(b->nearest_tree->p);
+ free(b->nearest_tree->q);
+ memset(b->nearest_tree,0,sizeof(encode_aux_nearestmatch));
+ free(b->nearest_tree);
+ }
+ if(b->thresh_tree){
+ free(b->thresh_tree->quantthresh);
+ free(b->thresh_tree->quantmap);
+ memset(b->thresh_tree,0,sizeof(encode_aux_threshmatch));
+ free(b->thresh_tree);
+ }
+ memset(b,0,sizeof(static_codebook));
+}
+
+void vorbis_book_clear(codebook *b){
+ /* static book is not cleared; we're likely called on the lookup and
+ the static codebook belongs to the info struct */
+ if(b->decode_tree){
+ free(b->decode_tree->ptr0);
+ free(b->decode_tree->ptr1);
+ memset(b->decode_tree,0,sizeof(decode_aux));
+ free(b->decode_tree);
+ }
+ if(b->valuelist)free(b->valuelist);
+ if(b->codelist)free(b->codelist);
+ memset(b,0,sizeof(codebook));
+}
+
+int vorbis_book_init_encode(codebook *c,const static_codebook *s){
+ memset(c,0,sizeof(codebook));
+ c->c=s;
+ c->entries=s->entries;
+ c->dim=s->dim;
+ c->codelist=_make_words(s->lengthlist,s->entries);
+ c->valuelist=_book_unquantize(s);
+ return(0);
+}
+
+int vorbis_book_init_decode(codebook *c,const static_codebook *s){
+ memset(c,0,sizeof(codebook));
+ c->c=s;
+ c->entries=s->entries;
+ c->dim=s->dim;
+ c->valuelist=_book_unquantize(s);
+ c->decode_tree=_make_decode_tree(c);
+ if(c->decode_tree==NULL)goto err_out;
+ return(0);
+ err_out:
+ vorbis_book_clear(c);
+ return(-1);
+}
+
+int _best(codebook *book, double *a, int step){
+ encode_aux_nearestmatch *nt=book->c->nearest_tree;
+ encode_aux_threshmatch *tt=book->c->thresh_tree;
+ int dim=book->dim;
+ int ptr=0,k,o;
+
+ /* we assume for now that a thresh tree is the only other possibility */
+ if(tt){
+ int index=0;
+ /* find the quant val of each scalar */
+ for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
+ int i;
+ /* linear search the quant list for now; it's small and although
+ with > 8 entries, it would be faster to bisect, this would be
+ a misplaced optimization for now */
+ for(i=0;i<tt->threshvals-1;i++)
+ if(a[o]<tt->quantthresh[i])break;
+
+ index=(index*tt->quantvals)+tt->quantmap[i];
+ }
+ /* regular lattices are easy :-) */
+ if(book->c->lengthlist[index]>0) /* is this unused? If so, we'll
+ use a decision tree after all
+ and fall through*/
+ return(index);
+ }
+
+ if(nt){
+ /* optimized using the decision tree */
+ while(1){
+ double c=0.;
+ double *p=book->valuelist+nt->p[ptr];
+ double *q=book->valuelist+nt->q[ptr];
+
+ for(k=0,o=0;k<dim;k++,o+=step)
+ c+=(p[k]-q[k])*(a[o]-(p[k]+q[k])*.5);
+
+ if(c>0.) /* in A */
+ ptr= -nt->ptr0[ptr];
+ else /* in B */
+ ptr= -nt->ptr1[ptr];
+ if(ptr<=0)break;
+ }
+ return(-ptr);
+ }
+
+ return(-1);
+}
+
+static double _dist(int el,double *a, double *b){
+ int i;
+ double acc=0.;
+ for(i=0;i<el;i++){
+ double val=(a[i]-b[i]);
+ acc+=val*val;
+ }
+ return(acc);
+}
+
+/* returns the entry number and *modifies a* to the remainder value ********/
+int vorbis_book_besterror(codebook *book,double *a,int step,int addmul){
+ int dim=book->dim,i,o;
+ int best=_best(book,a,step);
+ switch(addmul){
+ case 0:
+ for(i=0,o=0;i<dim;i++,o+=step)
+ a[o]-=(book->valuelist+best*dim)[i];
+ break;
+ case 1:
+ for(i=0,o=0;i<dim;i++,o+=step){
+ double val=(book->valuelist+best*dim)[i];
+ if(val==0){
+ a[o]=0;
+ }else{
+ a[o]/=val;
+ }
+ }
+ break;
+ }
+ return(best);
+}
+
+long vorbis_book_codeword(codebook *book,int entry){
+ return book->codelist[entry];
+}
+
+long vorbis_book_codelen(codebook *book,int entry){
+ return book->c->lengthlist[entry];
+}
+
+#ifdef _V_SELFTEST
+
+/* Unit tests of the dequantizer; this stuff will be OK
+ cross-platform, I simply want to be sure that special mapping cases
+ actually work properly; a bug could go unnoticed for a while */
+
+#include <stdio.h>
+
+/* cases:
+
+ no mapping
+ full, explicit mapping
+ algorithmic mapping
+
+ nonsequential
+ sequential
+*/
+
+static long full_quantlist1[]={0,1,2,3, 4,5,6,7, 8,3,6,1};
+static long partial_quantlist1[]={0,7,2};
+
+/* no mapping */
+static_codebook test1={
+ 4,16,
+ NULL,
+ 0,
+ 0,0,0,0,
+ NULL,
+ NULL,NULL
+};
+static double *test1_result=NULL;
+
+/* linear, full mapping, nonsequential */
+static_codebook test2={
+ 4,3,
+ NULL,
+ 2,
+ -533200896,1611661312,4,0,
+ full_quantlist1,
+ NULL,NULL
+};
+static double test2_result[]={-3,-2,-1,0, 1,2,3,4, 5,0,3,-2};
+
+/* linear, full mapping, sequential */
+static_codebook test3={
+ 4,3,
+ NULL,
+ 2,
+ -533200896,1611661312,4,1,
+ full_quantlist1,
+ NULL,NULL
+};
+static double test3_result[]={-3,-5,-6,-6, 1,3,6,10, 5,5,8,6};
+
+/* linear, algorithmic mapping, nonsequential */
+static_codebook test4={
+ 3,27,
+ NULL,
+ 1,
+ -533200896,1611661312,4,0,
+ partial_quantlist1,
+ NULL,NULL
+};
+static double test4_result[]={-3,-3,-3, 4,-3,-3, -1,-3,-3,
+ -3, 4,-3, 4, 4,-3, -1, 4,-3,
+ -3,-1,-3, 4,-1,-3, -1,-1,-3,
+ -3,-3, 4, 4,-3, 4, -1,-3, 4,
+ -3, 4, 4, 4, 4, 4, -1, 4, 4,
+ -3,-1, 4, 4,-1, 4, -1,-1, 4,
+ -3,-3,-1, 4,-3,-1, -1,-3,-1,
+ -3, 4,-1, 4, 4,-1, -1, 4,-1,
+ -3,-1,-1, 4,-1,-1, -1,-1,-1};
+
+/* linear, algorithmic mapping, sequential */
+static_codebook test5={
+ 3,27,
+ NULL,
+ 1,
+ -533200896,1611661312,4,1,
+ partial_quantlist1,
+ NULL,NULL
+};
+static double test5_result[]={-3,-6,-9, 4, 1,-2, -1,-4,-7,
+ -3, 1,-2, 4, 8, 5, -1, 3, 0,
+ -3,-4,-7, 4, 3, 0, -1,-2,-5,
+ -3,-6,-2, 4, 1, 5, -1,-4, 0,
+ -3, 1, 5, 4, 8,12, -1, 3, 7,
+ -3,-4, 0, 4, 3, 7, -1,-2, 2,
+ -3,-6,-7, 4, 1, 0, -1,-4,-5,
+ -3, 1, 0, 4, 8, 7, -1, 3, 2,
+ -3,-4,-5, 4, 3, 2, -1,-2,-3};
+
+void run_test(static_codebook *b,double *comp){
+ double *out=_book_unquantize(b);
+ int i;
+
+ if(comp){
+ if(!out){
+ fprintf(stderr,"_book_unquantize incorrectly returned NULL\n");
+ exit(1);
+ }
+
+ for(i=0;i<b->entries*b->dim;i++)
+ if(fabs(out[i]-comp[i])>.0001){
+ fprintf(stderr,"disagreement in unquantized and reference data:\n"
+ "position %d, %g != %g\n",i,out[i],comp[i]);
+ exit(1);
+ }
+
+ }else{
+ if(out){
+ fprintf(stderr,"_book_unquantize returned a value array: \n"
+ " correct result should have been NULL\n");
+ exit(1);
+ }
+ }
+}
+
+int main(){
+ /* run the nine dequant tests, and compare to the hand-rolled results */
+ fprintf(stderr,"Dequant test 1... ");
+ run_test(&test1,test1_result);
+ fprintf(stderr,"OK\nDequant test 2... ");
+ run_test(&test2,test2_result);
+ fprintf(stderr,"OK\nDequant test 3... ");
+ run_test(&test3,test3_result);
+ fprintf(stderr,"OK\nDequant test 4... ");
+ run_test(&test4,test4_result);
+ fprintf(stderr,"OK\nDequant test 5... ");
+ run_test(&test5,test5_result);
+ fprintf(stderr,"OK\n\n");
+
+ return(0);
+}
+
+#endif
diff --git a/lib/sharedbook.h b/lib/sharedbook.h
new file mode 100644
index 00000000..df2c1fc4
--- /dev/null
+++ b/lib/sharedbook.h
@@ -0,0 +1,43 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: basic shared codebook operations
+ last mod: $Id: sharedbook.h,v 1.2 2000/05/08 20:49:50 xiphmont Exp $
+
+ ********************************************************************/
+
+#ifndef _V_INT_SHCODEBOOK_H_
+#define _V_INT_SHCODEBOOK_H_
+
+#include "vorbis/codebook.h"
+
+extern void vorbis_staticbook_clear(static_codebook *b);
+extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source);
+extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
+extern void vorbis_book_clear(codebook *b);
+
+extern double *_book_unquantize(const static_codebook *b);
+extern double *_book_logdist(const static_codebook *b,double *vals);
+extern double _float32_unpack(long val);
+extern long _float32_pack(double val);
+extern int _best(codebook *book, double *a, int step);
+extern int _ilog(unsigned int v);
+extern long _book_maptype1_quantvals(const static_codebook *b);
+
+extern int vorbis_book_besterror(codebook *book,double *a,int step,int addmul);
+extern long vorbis_book_codeword(codebook *book,int entry);
+extern long vorbis_book_codelen(codebook *book,int entry);
+
+
+
+#endif
diff --git a/vq/Makefile.in b/vq/Makefile.in
index d088a2ff..79720ac8 100644
--- a/vq/Makefile.in
+++ b/vq/Makefile.in
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.10 2000/02/23 09:24:33 xiphmont Exp $
+# $Id: Makefile.in,v 1.11 2000/05/08 20:49:50 xiphmont Exp $
###############################################################################
# #
@@ -27,9 +27,10 @@ LIBS=@LIBS@ -lm
HFILES = ../include/vorbis/codebook.h vqgen.h vqext.h bookutil.h
-OFILES = vqgen.o vqsplit.o bookutil.o
+OFILES = vqgen.o vqsplit.o bookutil.o ../lib/sharedbook.o
ALLOFILES = $(OFILES) lspdata.o genericdata.o train.o build.o run.o\
- cascade.o partition.o metrics.o residuedata.o
+ cascade.o partition.o metrics.o residuedata.o latticebuild.o\
+ latticepare.o
all:
$(MAKE) target CFLAGS="$(OPT)"
@@ -40,7 +41,7 @@ debug:
profile:
$(MAKE) target CFLAGS="$(PROFILE)"
-target: lspvqtrain genericvqtrain residuevqtrain vqbuild vqcascade vqpartition vqmetrics
+target: lspvqtrain genericvqtrain residuevqtrain vqbuild vqcascade vqmetrics latticebuild latticepare
lspvqtrain: $(OFILES) lspdata.o train.o
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
@@ -57,12 +58,16 @@ vqbuild: $(OFILES) build.o
vqcascade: $(OFILES) run.o cascade.o
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
-vqpartition: $(OFILES) run.o partition.o
+vqmetrics: $(OFILES) run.o metrics.o
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
-vqmetrics: $(OFILES) run.o metrics.o
+latticebuild: $(OFILES) latticebuild.o
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
+latticepare: $(OFILES) latticepare.o
+ $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
+
+
$(ALLOFILES): $(HFILES)
.c.o:
@@ -73,7 +78,7 @@ $(OFILES): $(HFILES)
clean:
-rm -f *.o *.a test* *~ *.out *.m config.* \
lspvqtrain genericvqtrain residuevqtrain\
- vqbuild vqmetrics vqpartition vqcascade
+ vqbuild vqmetrics latticebuild vqcascade latticepare
distclean: clean
-rm -f Makefile
diff --git a/vq/bookutil.c b/vq/bookutil.c
index cb4d43a2..b6c8bffd 100644
--- a/vq/bookutil.c
+++ b/vq/bookutil.c
@@ -12,7 +12,7 @@
********************************************************************
function: utility functions for loading .vqh and .vqd files
- last mod: $Id: bookutil.c,v 1.12 2000/02/23 09:10:10 xiphmont Exp $
+ last mod: $Id: bookutil.c,v 1.13 2000/05/08 20:49:50 xiphmont Exp $
********************************************************************/
@@ -22,26 +22,9 @@
#include <string.h>
#include <errno.h>
#include "vorbis/codebook.h"
+#include "../lib/sharedbook.h"
#include "bookutil.h"
-void codebook_unquantize(codebook *b){
- long j,k;
- const static_codebook *c=b->c;
- double mindel=float24_unpack(c->q_min);
- double delta=float24_unpack(c->q_delta);
- if(!b->valuelist)b->valuelist=malloc(sizeof(double)*c->entries*c->dim);
-
- for(j=0;j<c->entries;j++){
- double last=0.;
- for(k=0;k<c->dim;k++){
- double val=c->quantlist[j*c->dim+k]*delta+last+mindel;
- b->valuelist[j*c->dim+k]=val;
- if(c->q_sequencep)last=val;
-
- }
- }
-}
-
/* A few little utils for reading files */
/* read a line. Use global, persistent buffering */
static char *linebuffer=NULL;
@@ -135,6 +118,13 @@ void reset_next_value(void){
v_sofar=0;
}
+char *setup_line(FILE *in){
+ reset_next_value();
+ value_line_buff=get_line(in);
+ return(value_line_buff);
+}
+
+
int get_vector(codebook *b,FILE *in,int start, int n,double *a){
int i;
const static_codebook *c=b->c;
@@ -190,13 +180,13 @@ char *find_seek_to(FILE *in,char *s){
codebook *codebook_load(char *filename){
codebook *b=calloc(1,sizeof(codebook));
static_codebook *c=(static_codebook *)(b->c=calloc(1,sizeof(static_codebook)));
- encode_aux *a=calloc(1,sizeof(encode_aux));
+ encode_aux_nearestmatch *a=NULL;
+ encode_aux_threshmatch *t=NULL;
+ int quant_to_read=0;
FILE *in=fopen(filename,"r");
char *line;
long i;
- c->encode_tree=a;
-
if(in==NULL){
fprintf(stderr,"Couldn't open codebook %s\n",filename);
exit(1);
@@ -207,36 +197,133 @@ codebook *codebook_load(char *filename){
/* get the major important values */
line=get_line(in);
- if(sscanf(line,"%ld, %ld, %ld, %ld, %d, %d",
- &(c->dim),&(c->entries),&(c->q_min),&(c->q_delta),&(c->q_quant),
- &(c->q_sequencep))!=6){
+ if(sscanf(line,"%ld, %ld,",
+ &(c->dim),&(c->entries))!=2){
fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line);
exit(1);
}
-
- /* find the auxiliary encode struct (if any) */
- find_seek_to(in,"static encode_aux _vq_aux_");
- /* how big? */
line=get_line(in);
line=get_line(in);
- line=get_line(in);
- line=get_line(in);
- line=get_line(in);
- if(sscanf(line,"%ld, %ld",&(a->aux),&(a->alloc))!=2){
- fprintf(stderr,"2: syntax in %s in line:\t %s",filename,line);
+ if(sscanf(line,"%d, %ld, %ld, %d, %d,",
+ &(c->maptype),&(c->q_min),&(c->q_delta),&(c->q_quant),
+ &(c->q_sequencep))!=5){
+ fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line);
exit(1);
}
+
+ /* find the auxiliary encode struct[s] (if any) */
+ if(find_seek_to(in,"static encode_aux_nearestmatch _vq_aux")){
+ /* how big? */
+ c->nearest_tree=a=calloc(1,sizeof(encode_aux_nearestmatch));
+ line=get_line(in);
+ line=get_line(in);
+ line=get_line(in);
+ line=get_line(in);
+ line=get_line(in);
+ if(sscanf(line,"%ld, %ld",&(a->aux),&(a->alloc))!=2){
+ fprintf(stderr,"2: syntax in %s in line:\t %s",filename,line);
+ exit(1);
+ }
+
+ /* load ptr0 */
+ find_seek_to(in,"static long _vq_ptr0");
+ reset_next_value();
+ a->ptr0=malloc(sizeof(long)*a->aux);
+ for(i=0;i<a->aux;i++)
+ if(get_next_ivalue(in,a->ptr0+i)){
+ fprintf(stderr,"out of data while reading codebook %s\n",filename);
+ exit(1);
+ }
+
+ /* load ptr1 */
+ find_seek_to(in,"static long _vq_ptr1");
+ reset_next_value();
+ a->ptr1=malloc(sizeof(long)*a->aux);
+ for(i=0;i<a->aux;i++)
+ if(get_next_ivalue(in,a->ptr1+i)){
+ fprintf(stderr,"out of data while reading codebook %s\n",filename);
+ exit(1);
+ }
+
+
+ /* load p */
+ find_seek_to(in,"static long _vq_p_");
+ reset_next_value();
+ a->p=malloc(sizeof(long)*a->aux);
+ for(i=0;i<a->aux;i++)
+ if(get_next_ivalue(in,a->p+i)){
+ fprintf(stderr,"out of data while reading codebook %s\n",filename);
+ exit(1);
+ }
+
+ /* load q */
+ find_seek_to(in,"static long _vq_q_");
+ reset_next_value();
+ a->q=malloc(sizeof(long)*a->aux);
+ for(i=0;i<a->aux;i++)
+ if(get_next_ivalue(in,a->q+i)){
+ fprintf(stderr,"out of data while reading codebook %s\n",filename);
+ exit(1);
+ }
+ }
+
+ if(find_seek_to(in,"static encode_aux_threshmatch _vq_aux")){
+ /* how big? */
+ c->thresh_tree=t=calloc(1,sizeof(encode_aux_threshmatch));
+ line=get_line(in);
+ line=get_line(in);
+ line=get_line(in);
+ if(sscanf(line,"%d",&(t->quantvals))!=1){
+ fprintf(stderr,"3: syntax in %s in line:\t %s",filename,line);
+ exit(1);
+ }
+ line=get_line(in);
+ if(sscanf(line,"%d",&(t->threshvals))!=1){
+ fprintf(stderr,"4: syntax in %s in line:\t %s",filename,line);
+ exit(1);
+ }
+ /* load quantthresh */
+ find_seek_to(in,"static double _vq_quantthresh_");
+ reset_next_value();
+ t->quantthresh=malloc(sizeof(double)*t->threshvals);
+ for(i=0;i<t->threshvals-1;i++)
+ if(get_next_value(in,t->quantthresh+i)){
+ fprintf(stderr,"out of data 1 while reading codebook %s\n",filename);
+ exit(1);
+ }
+ /* load quantmap */
+ find_seek_to(in,"static long _vq_quantmap_");
+ reset_next_value();
+ t->quantmap=malloc(sizeof(long)*t->threshvals);
+ for(i=0;i<t->threshvals;i++)
+ if(get_next_ivalue(in,t->quantmap+i)){
+ fprintf(stderr,"out of data 2 while reading codebook %s\n",filename);
+ exit(1);
+ }
+ }
+
+ switch(c->maptype){
+ case 0:
+ quant_to_read=0;
+ break;
+ case 1:
+ quant_to_read=_book_maptype1_quantvals(c);
+ break;
+ case 2:
+ quant_to_read=c->entries*c->dim;
+ break;
+ }
/* load the quantized entries */
find_seek_to(in,"static long _vq_quantlist_");
reset_next_value();
- c->quantlist=malloc(sizeof(long)*c->entries*c->dim);
- for(i=0;i<c->entries*c->dim;i++)
+ c->quantlist=malloc(sizeof(long)*quant_to_read);
+ for(i=0;i<quant_to_read;i++)
if(get_next_ivalue(in,c->quantlist+i)){
fprintf(stderr,"out of data while reading codebook %s\n",filename);
exit(1);
}
-
+
/* load the lengthlist */
find_seek_to(in,"static long _vq_lengthlist");
reset_next_value();
@@ -247,112 +334,14 @@ codebook *codebook_load(char *filename){
exit(1);
}
- /* load ptr0 */
- find_seek_to(in,"static long _vq_ptr0");
- reset_next_value();
- a->ptr0=malloc(sizeof(long)*a->aux);
- for(i=0;i<a->aux;i++)
- if(get_next_ivalue(in,a->ptr0+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
-
- /* load ptr1 */
- find_seek_to(in,"static long _vq_ptr1");
- reset_next_value();
- a->ptr1=malloc(sizeof(long)*a->aux);
- for(i=0;i<a->aux;i++)
- if(get_next_ivalue(in,a->ptr1+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
-
-
- /* load p */
- find_seek_to(in,"static long _vq_p_");
- reset_next_value();
- a->p=malloc(sizeof(long)*a->aux);
- for(i=0;i<a->aux;i++)
- if(get_next_ivalue(in,a->p+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
-
- /* load q */
- find_seek_to(in,"static long _vq_q_");
- reset_next_value();
- a->q=malloc(sizeof(long)*a->aux);
- for(i=0;i<a->aux;i++)
- if(get_next_ivalue(in,a->q+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
-
/* got it all */
fclose(in);
+
+ vorbis_book_init_encode(b,c);
- /* unquantize the entries while we're at it */
- codebook_unquantize(b);
-
- /* don't need n and c */
return(b);
}
-int codebook_entry(codebook *b,double *val){
- const static_codebook *c=b->c;
- encode_aux *t=c->encode_tree;
- double *n=alloca(c->dim*sizeof(double));
- int ptr=0,k;
-
- do{
- double C=0.;
- double *p=b->valuelist+t->p[ptr];
- double *q=b->valuelist+t->q[ptr];
-
- for(k=0;k<c->dim;k++){
- n[k]=p[k]-q[k];
- C-=(p[k]+q[k])*n[k];
- }
- C/=2.;
-
- for(k=0;k<c->dim;k++)
- C+=n[k]*val[k];
-
- if(C>0.) /* in A */
- ptr=-t->ptr0[ptr];
- else /* in B */
- ptr=-t->ptr1[ptr];
- }while(ptr>0);
-
- return(-ptr);
-}
-
-/* 24 bit float (not IEEE; nonnormalized mantissa +
- biased exponent ): neeeeemm mmmmmmmm mmmmmmmm */
-
-long float24_pack(double val){
- int sign=0;
- long exp;
- long mant;
- if(val<0){
- sign=0x800000;
- val= -val;
- }
- exp= floor(log(val)/log(2));
- mant=rint(ldexp(val,17-exp));
- exp=(exp+VQ_FEXP_BIAS)<<18;
-
- return(sign|exp|mant);
-}
-
-double float24_unpack(long val){
- double mant=val&0x3ffff;
- double sign=val&0x800000;
- double exp =(val&0x7c0000)>>18;
- if(sign)mant= -mant;
- return(ldexp(mant,exp-17-VQ_FEXP_BIAS));
-}
-
void spinnit(char *s,int n){
static int p=0;
static long lasttime=0;
@@ -388,6 +377,8 @@ void spinnit(char *s,int n){
void build_tree_from_lengths(int vals, long *hist, long *lengths){
int i,j;
long *membership=malloc(vals*sizeof(long));
+ long *histsave=alloca(vals*sizeof(long));
+ memcpy(histsave,hist,vals*sizeof(long));
for(i=0;i<vals;i++)membership[i]=i;
@@ -431,5 +422,172 @@ void build_tree_from_lengths(int vals, long *hist, long *lengths){
exit(1);
}
+ /* for sanity check purposes: how many bits would it have taken to
+ encode the training set? */
+ {
+ long bitsum=0;
+ long samples=0;
+ for(i=0;i<vals;i++){
+ bitsum+=(histsave[i]-1)*lengths[i];
+ samples+=histsave[i]-1;
+ }
+ fprintf(stderr,"\rTotal samples in training set: %ld \n",samples);
+ fprintf(stderr,"\rTotal bits used to represent training set: %ld\n",
+ bitsum);
+ }
+
free(membership);
}
+
+void write_codebook(FILE *out,char *name,const static_codebook *c){
+ encode_aux_threshmatch *t=c->thresh_tree;
+ encode_aux_nearestmatch *n=c->nearest_tree;
+ int j,k;
+
+ /* save the book in C header form */
+ fprintf(out,
+ "/********************************************************************\n"
+ " * *\n"
+ " * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *\n"
+ " * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *\n"
+ " * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *\n"
+ " * PLEASE READ THESE TERMS DISTRIBUTING. *\n"
+ " * *\n"
+ " * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *\n"
+ " * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *\n"
+ " * http://www.xiph.org/ *\n"
+ " * *\n"
+ " ********************************************************************\n"
+ "\n"
+ " function: static codebook autogenerated by vq/somethingorother\n"
+ "\n"
+ " ********************************************************************/\n\n");
+
+ fprintf(out,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",name,name);
+ fprintf(out,"#include \"vorbis/codebook.h\"\n\n");
+
+ /* first, the static vectors, then the book structure to tie it together. */
+ /* quantlist */
+ if(c->quantlist){
+ long vals=(c->maptype==1?_book_maptype1_quantvals(c):c->entries*c->dim);
+ fprintf(out,"static long _vq_quantlist_%s[] = {\n",name);
+ for(j=0;j<vals;j++){
+ fprintf(out,"\t%ld,\n",c->quantlist[j]);
+ }
+ fprintf(out,"};\n\n");
+ }
+
+ /* lengthlist */
+ fprintf(out,"static long _vq_lengthlist_%s[] = {\n",name);
+ for(j=0;j<c->entries;){
+ fprintf(out,"\t");
+ for(k=0;k<16 && j<c->entries;k++,j++)
+ fprintf(out,"%2ld,",c->lengthlist[j]);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ if(t){
+ /* quantthresh */
+ fprintf(out,"static double _vq_quantthresh_%s[] = {\n",name);
+ for(j=0;j<t->threshvals-1;){
+ fprintf(out,"\t");
+ for(k=0;k<8 && j<t->threshvals-1;k++,j++)
+ fprintf(out,"%.5g, ",t->quantthresh[j]);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ /* quantmap */
+ fprintf(out,"static long _vq_quantmap_%s[] = {\n",name);
+ for(j=0;j<t->threshvals;){
+ fprintf(out,"\t");
+ for(k=0;k<8 && j<t->threshvals;k++,j++)
+ fprintf(out,"%5ld,",t->quantmap[j]);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ fprintf(out,"static encode_aux_threshmatch _vq_auxt_%s = {\n",name);
+ fprintf(out,"\t_vq_quantthresh_%s,\n",name);
+ fprintf(out,"\t_vq_quantmap_%s,\n",name);
+ fprintf(out,"\t%d,\n",t->quantvals);
+ fprintf(out,"\t%d\n};\n\n",t->threshvals);
+ }
+
+ if(n){
+
+ /* ptr0 */
+ fprintf(out,"static long _vq_ptr0_%s[] = {\n",name);
+ for(j=0;j<n->aux;){
+ fprintf(out,"\t");
+ for(k=0;k<8 && j<n->aux;k++,j++)
+ fprintf(out,"%6ld,",n->ptr0[j]);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ /* ptr1 */
+ fprintf(out,"static long _vq_ptr1_%s[] = {\n",name);
+ for(j=0;j<n->aux;){
+ fprintf(out,"\t");
+ for(k=0;k<8 && j<n->aux;k++,j++)
+ fprintf(out,"%6ld,",n->ptr1[j]);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ /* p */
+ fprintf(out,"static long _vq_p_%s[] = {\n",name);
+ for(j=0;j<n->aux;){
+ fprintf(out,"\t");
+ for(k=0;k<8 && j<n->aux;k++,j++)
+ fprintf(out,"%6ld,",n->p[j]*c->dim);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ /* q */
+ fprintf(out,"static long _vq_q_%s[] = {\n",name);
+ for(j=0;j<n->aux;){
+ fprintf(out,"\t");
+ for(k=0;k<8 && j<n->aux;k++,j++)
+ fprintf(out,"%6ld,",n->q[j]*c->dim);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ fprintf(out,"static encode_aux_nearestmatch _vq_auxn_%s = {\n",name);
+ fprintf(out,"\t_vq_ptr0_%s,\n",name);
+ fprintf(out,"\t_vq_ptr1_%s,\n",name);
+ fprintf(out,"\t_vq_p_%s,\n",name);
+ fprintf(out,"\t_vq_q_%s,\n",name);
+ fprintf(out,"\t%ld, %ld\n};\n\n",n->aux,n->aux);
+ }
+
+ /* tie it all together */
+
+ fprintf(out,"static static_codebook _vq_book_%s = {\n",name);
+
+ fprintf(out,"\t%ld, %ld,\n",c->dim,c->entries);
+ fprintf(out,"\t_vq_lengthlist_%s,\n",name);
+ fprintf(out,"\t%d, %ld, %ld, %d, %d,\n",
+ c->maptype,c->q_min,c->q_delta,c->q_quant,c->q_sequencep);
+ if(c->quantlist)
+ fprintf(out,"\t_vq_quantlist_%s,\n",name);
+ else
+ fprintf(out,"\tNULL,\n");
+
+ if(n)
+ fprintf(out,"\t&_vq_auxn_%s,\n",name);
+ else
+ fprintf(out,"\tNULL,\n");
+ if(t)
+ fprintf(out,"\t&_vq_auxt_%s,\n",name);
+ else
+ fprintf(out,"\tNULL,\n");
+
+ fprintf(out,"};\n\n");
+
+ fprintf(out,"\n#endif\n");
+}
diff --git a/vq/bookutil.h b/vq/bookutil.h
index cc5f4bc4..583c548d 100644
--- a/vq/bookutil.h
+++ b/vq/bookutil.h
@@ -12,7 +12,7 @@
********************************************************************
function: utility functions for loading .vqh and .vqd files
- last mod: $Id: bookutil.h,v 1.4 2000/02/21 01:12:54 xiphmont Exp $
+ last mod: $Id: bookutil.h,v 1.5 2000/05/08 20:49:50 xiphmont Exp $
********************************************************************/
@@ -24,8 +24,8 @@
#include "vorbis/codebook.h"
-extern void codebook_unquantize(codebook *b);
extern char *get_line(FILE *in);
+extern char *setup_line(FILE *in);
extern int get_line_value(FILE *in,double *value);
extern int get_next_value(FILE *in,double *value);
extern int get_next_ivalue(FILE *in,long *ivalue);
@@ -34,11 +34,9 @@ extern int get_vector(codebook *b,FILE *in,int start,int num,double *a);
extern char *find_seek_to(FILE *in,char *s);
extern codebook *codebook_load(char *filename);
-extern int codebook_entry(codebook *b,double *val);
+extern void write_codebook(FILE *out,char *name,const static_codebook *c);
extern void spinnit(char *s,int n);
-extern long float24_pack(double val);
-extern double float24_unpack(long val);
extern void build_tree_from_lengths(int vals, long *hist, long *lengths);
#endif
diff --git a/vq/build.c b/vq/build.c
index eb15d00e..09dfb20d 100644
--- a/vq/build.c
+++ b/vq/build.c
@@ -12,7 +12,7 @@
********************************************************************
function: utility main for building codebooks from training sets
- last mod: $Id: build.c,v 1.12 2000/02/16 16:18:34 xiphmont Exp $
+ last mod: $Id: build.c,v 1.13 2000/05/08 20:49:50 xiphmont Exp $
********************************************************************/
@@ -22,6 +22,8 @@
#include <string.h>
#include <errno.h>
#include "vorbis/codebook.h"
+#include "../lib/sharedbook.h"
+#include "bookutil.h"
#include "vqgen.h"
#include "vqsplit.h"
@@ -183,109 +185,14 @@ int main(int argc,char *argv[]){
/* build the book */
vqsp_book(&v,&b,quantlist);
+ c.q_min=q.min;
+ c.q_delta=q.delta;
+ c.q_quant=q.quant;
+ c.q_sequencep=q.sequencep;
/* save the book in C header form */
- fprintf(out,
- "/********************************************************************\n"
- " * *\n"
- " * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *\n"
- " * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *\n"
- " * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *\n"
- " * PLEASE READ THESE TERMS DISTRIBUTING. *\n"
- " * *\n"
- " * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *\n"
- " * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *\n"
- " * http://www.xiph.org/ *\n"
- " * *\n"
- " ********************************************************************\n"
- "\n"
- " function: static codebook autogenerated by vq/vqbuild\n"
- "\n"
- " ********************************************************************/\n\n");
+ write_codebook(out,name,b.c);
- fprintf(out,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",name,name);
- fprintf(out,"#include \"vorbis/codebook.h\"\n\n");
-
- /* first, the static vectors, then the book structure to tie it together. */
- /* quantlist */
- fprintf(out,"static long _vq_quantlist_%s[] = {\n",name);
- i=0;
- for(j=0;j<c.entries;j++){
- fprintf(out,"\t");
- for(k=0;k<dim;k++)
- fprintf(out,"%5ld, ",c.quantlist[i++]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* lengthlist */
- fprintf(out,"static long _vq_lengthlist_%s[] = {\n",name);
- for(j=0;j<c.entries;){
- fprintf(out,"\t");
- for(k=0;k<16 && j<c.entries;k++,j++)
- fprintf(out,"%2ld,",c.lengthlist[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* ptr0 */
- fprintf(out,"static long _vq_ptr0_%s[] = {\n",name);
- for(j=0;j<c.encode_tree->aux;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<c.encode_tree->aux;k++,j++)
- fprintf(out,"%6ld,",c.encode_tree->ptr0[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* ptr1 */
- fprintf(out,"static long _vq_ptr1_%s[] = {\n",name);
- for(j=0;j<c.encode_tree->aux;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<c.encode_tree->aux;k++,j++)
- fprintf(out,"%6ld,",c.encode_tree->ptr1[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* p */
- fprintf(out,"static long _vq_p_%s[] = {\n",name);
- for(j=0;j<c.encode_tree->aux;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<c.encode_tree->aux;k++,j++)
- fprintf(out,"%6ld,",c.encode_tree->p[j]*c.dim);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* q */
- fprintf(out,"static long _vq_q_%s[] = {\n",name);
- for(j=0;j<c.encode_tree->aux;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<c.encode_tree->aux;k++,j++)
- fprintf(out,"%6ld,",c.encode_tree->q[j]*c.dim);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* tie it all together */
-
- fprintf(out,"static encode_aux _vq_aux_%s = {\n",name);
- fprintf(out,"\t_vq_ptr0_%s,\n",name);
- fprintf(out,"\t_vq_ptr1_%s,\n",name);
- fprintf(out,"\t_vq_p_%s,\n",name);
- fprintf(out,"\t_vq_q_%s,\n",name);
- fprintf(out,"\t%ld, %ld\n};\n\n",c.encode_tree->aux,c.encode_tree->aux);
-
- fprintf(out,"static static_codebook _vq_book_%s = {\n",name);
- fprintf(out,"\t%ld, %ld, %ld, %ld, %d, %d,\n",
- c.dim,c.entries,q.min,q.delta,q.quant,q.sequencep);
- fprintf(out,"\t_vq_quantlist_%s,\n",name);
- fprintf(out,"\t_vq_lengthlist_%s,\n",name);
- fprintf(out,"\t&_vq_aux_%s,\n",name);
- fprintf(out,"};\n\n");
-
- fprintf(out,"\n#endif\n");
fclose(out);
exit(0);
}
diff --git a/vq/cascade.c b/vq/cascade.c
index dfd2a6ec..dac193b6 100644
--- a/vq/cascade.c
+++ b/vq/cascade.c
@@ -12,7 +12,7 @@
********************************************************************
function: function call to do simple data cascading
- last mod: $Id: cascade.c,v 1.5 2000/01/21 13:42:37 xiphmont Exp $
+ last mod: $Id: cascade.c,v 1.6 2000/05/08 20:49:50 xiphmont Exp $
********************************************************************/
@@ -21,49 +21,64 @@
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
+#include "vorbis/codebook.h"
+#include "../lib/sharedbook.h"
#include "bookutil.h"
/* set up metrics */
double count=0.;
-int dim=-1;
-double *work=NULL;
+
void process_preprocess(codebook **bs,char *basename){
- while(*bs){
- codebook *b=*bs;
- if(dim==-1){
- dim=b->c->dim;
- work=malloc(sizeof(double)*dim);
- }else{
- if(dim!=b->c->dim){
- fprintf(stderr,"Each codebook in a cascade must have the same dimensional order\n");
- exit(1);
- }
- }
- bs++;
- }
}
void process_postprocess(codebook **b,char *basename){
fprintf(stderr,"Done. \n");
}
-void process_vector(codebook **bs,double *a){
- int i;
- memcpy(work,a,dim*sizeof(double));
+double process_one(codebook *b,double *a,int dim,int step,int addmul,
+ double base){
+ int j;
+
+ if(b->c->q_sequencep){
+ double temp;
+ for(j=0;j<dim;j++){
+ temp=a[j*step];
+ a[j*step]-=base;
+ }
+ base=temp;
+ }
+
+ vorbis_book_besterror(b,a,step,addmul);
+
+ return base;
+}
+void process_vector(codebook **bs,int *addmul,int inter,double *a,int n){
+ int i,bi=0;
+ int booknum=0;
+
while(*bs){
+ double base=0.;
codebook *b=*bs;
- int entry=codebook_entry(b,work);
- double *e=b->valuelist+b->c->dim*entry;
+ int dim=b->dim;
+
+ if(inter){
+ for(i=0;i<n/dim;i++)
+ base=process_one(b,a+i,dim,n/dim,addmul[bi],base);
+ }else{
+ for(i=0;i<=n-dim;i+=dim)
+ base=process_one(b,a+i,dim,1,addmul[bi],base);
+ }
- for(i=0;i<b->c->dim;i++)work[i]-=e[i];
bs++;
+ booknum++;
+ bi++;
}
- for(i=0;i<dim;i++)
- fprintf(stdout,"%f, ",work[i]);
+ for(i=0;i<n;i++)
+ fprintf(stdout,"%f, ",a[i]);
fprintf(stdout,"\n");
if((long)(count++)%100)spinnit("working.... lines: ",count);
@@ -71,7 +86,8 @@ void process_vector(codebook **bs,double *a){
void process_usage(void){
fprintf(stderr,
- "usage: vqcascade book.vqh [book.vqh]... datafile.vqd [datafile.vqd]...\n\n"
+ "usage: vqcascade [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n"
+ " datafile.vqd [datafile.vqd]...\n\n"
" data can be taken on stdin. residual error data sent to\n"
" stdout.\n\n");
diff --git a/vq/genericdata.c b/vq/genericdata.c
index 08a31bbb..2a6ffb95 100644
--- a/vq/genericdata.c
+++ b/vq/genericdata.c
@@ -12,7 +12,7 @@
********************************************************************
function: generic euclidian distance metric for VQ codebooks
- last mod: $Id: genericdata.c,v 1.4 2000/02/21 01:12:55 xiphmont Exp $
+ last mod: $Id: genericdata.c,v 1.5 2000/05/08 20:49:50 xiphmont Exp $
********************************************************************/
@@ -47,7 +47,7 @@ double vqext_metric(vqgen *v,double *e, double *p){
return sqrt(acc/v->elements);
}
-void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols){
+void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols,int num){
vqgen_addpoint(v,b+start,NULL);
}
diff --git a/vq/huffbuild.c b/vq/huffbuild.c
index 757b34e5..ba12f6ec 100644
--- a/vq/huffbuild.c
+++ b/vq/huffbuild.c
@@ -12,7 +12,7 @@
********************************************************************
function: hufftree builder
- last mod: $Id: huffbuild.c,v 1.2 2000/02/23 09:23:51 xiphmont Exp $
+ last mod: $Id: huffbuild.c,v 1.3 2000/05/08 20:49:42 xiphmont Exp $
********************************************************************/
@@ -176,10 +176,11 @@ int main(int argc, char *argv[]){
/* the toplevel book */
fprintf(file,"static static_codebook _huff_book_%s = {\n",base);
- fprintf(file,"\t%d, %ld, %d, %d, %d, %d,\n",
- subn,vals,0,0,0,0);
- fprintf(file,"\tNULL,\n");
+ fprintf(file,"\t%d, %ld,\n",subn,vals);
fprintf(file,"\t_huff_lengthlist_%s,\n",base);
+ fprintf(file,"\t0, 0, 0, 0, 0,\n");
+ fprintf(file,"\tNULL,\n");
+ fprintf(file,"\tNULL,\n");
fprintf(file,"\tNULL,\n");
fprintf(file,"};\n\n");
diff --git a/vq/latticebuild.c b/vq/latticebuild.c
new file mode 100644
index 00000000..9dadcbc3
--- /dev/null
+++ b/vq/latticebuild.c
@@ -0,0 +1,336 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: utility main for building codebooks from lattice descriptions
+ last mod: $Id: latticebuild.c,v 1.2 2000/05/08 20:49:50 xiphmont Exp $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include "vorbis/codebook.h"
+#include "../lib/sharedbook.h"
+#include "bookutil.h"
+
+/* The purpose of this util is actually just to count hits and finish
+ packaging the description into a static codebook.
+
+ command line:
+ vqlattice description.vql datafile.vqd
+
+ the lattice description file contains five lines:
+
+ <n> <dim> <multiplicitavep>
+ <value_0> <value_1> <value_2> ... <value_n-1>
+ <m>
+ <thresh_0> <thresh_1> <thresh_2> ... <thresh_m-2>
+ <map_0> <map_1> <map_2> ... <map_m-1>
+
+ vqlattice sends residual data (for the next stage) to stdout, and
+ produces description.vqh */
+
+static int ilog(unsigned int v){
+ int ret=0;
+ while(v){
+ ret++;
+ v>>=1;
+ }
+ return(ret);
+}
+
+int main(int argc,char *argv[]){
+ codebook b;
+ static_codebook c;
+ encode_aux_threshmatch t;
+ double *quantlist;
+ long *hits;
+
+ int entries=-1,dim=-1,quantvals=-1,addmul=-1,threshvals=-1;
+ FILE *out=NULL;
+ FILE *in=NULL;
+ char *line,*name;
+ long j,k;
+
+ memset(&b,0,sizeof(b));
+ memset(&c,0,sizeof(c));
+ memset(&t,0,sizeof(t));
+
+ if(argv[1]==NULL){
+ fprintf(stderr,"Need a lattice description file on the command line.\n");
+ exit(1);
+ }
+
+ {
+ char *ptr;
+ char *filename=calloc(strlen(argv[1])+4,1);
+
+ strcpy(filename,argv[1]);
+ in=fopen(filename,"r");
+ if(!in){
+ fprintf(stderr,"Could not open input file %s\n",filename);
+ exit(1);
+ }
+
+ ptr=strrchr(filename,'.');
+ if(ptr){
+ *ptr='\0';
+ name=strdup(filename);
+ sprintf(ptr,".vqh");
+ }else{
+ name=strdup(filename);
+ strcat(filename,".vqh");
+ }
+
+ out=fopen(filename,"w");
+ if(out==NULL){
+ fprintf(stderr,"Unable to open %s for writing\n",filename);
+ exit(1);
+ }
+ }
+
+ /* read the description */
+ line=get_line(in);
+ if(sscanf(line,"%d %d %d",&quantvals,&dim,&addmul)!=3){
+ fprintf(stderr,"Syntax error reading book file (line 1)\n");
+ exit(1);
+ }
+ entries=pow(quantvals,dim);
+ c.thresh_tree=&t;
+ c.dim=dim;
+ c.entries=entries;
+ c.lengthlist=malloc(entries*sizeof(long));
+ c.maptype=1;
+ c.q_sequencep=0;
+ c.quantlist=calloc(quantvals,sizeof(long));
+
+ quantlist=malloc(sizeof(long)*c.dim*c.entries);
+ hits=malloc(c.entries*sizeof(long));
+ for(j=0;j<entries;j++)hits[j]=1;
+ for(j=0;j<entries;j++)c.lengthlist[j]=1;
+
+ reset_next_value();
+ setup_line(in);
+ for(j=0;j<quantvals;j++){
+ if(get_line_value(in,quantlist+j)==-1){
+ fprintf(stderr,"Ran out of data on line 2 of description file\n");
+ exit(1);
+ }
+ }
+
+ line=setup_line(in);
+ if(sscanf(line,"%d",&threshvals)!=1){
+ fprintf(stderr,"Syntax error reading book file (line 3)\n");
+ exit(1);
+ }
+
+ t.quantthresh=calloc(threshvals-1,sizeof(double));
+ t.quantmap=calloc(threshvals,sizeof(int));
+ t.threshvals=threshvals;
+ t.quantvals=quantvals;
+
+ setup_line(in);
+ for(j=0;j<threshvals-1;j++){
+ if(get_line_value(in,t.quantthresh+j)==-1){
+ fprintf(stderr,"Ran out of data on line 4 of description file\n");
+ exit(1);
+ }
+ }
+
+ setup_line(in);
+ for(j=0;j<threshvals;j++){
+ if(get_next_ivalue(in,t.quantmap+j)==-1){
+ fprintf(stderr,"Ran out of data on line 5 of description file\n");
+ exit(1);
+ }
+ }
+
+ /* gen a real quant list from the more easily human-grokked input */
+ {
+ double min=quantlist[0];
+ double mindel=1;
+ for(j=1;j<quantvals;j++){
+ if(quantlist[j]<min)min=quantlist[j];
+ for(k=0;k<j;k++){
+ double del=quantlist[k]-min;
+ /* really underpowered :-P know that this will only factor
+ powers of two (duh) */
+ while((int)(del/mindel)+.01<del/mindel){mindel/=2;}
+ }
+ }
+ c.q_min=_float32_pack(min);
+ c.q_delta=_float32_pack(mindel);
+ c.q_quant=0;
+
+ min=_float32_unpack(c.q_min);
+ mindel=_float32_unpack(c.q_delta);
+ for(j=0;j<quantvals;j++){
+ c.quantlist[j]=rint((quantlist[j]-min)/mindel);
+ if(ilog(c.quantlist[j])>c.q_quant)c.q_quant=ilog(c.quantlist[j]);
+ }
+ }
+
+ vorbis_book_init_encode(&b,&c);
+ fclose(in);
+
+ /* at this point, we have enough to do best entry matching. We
+ don't have counts yet, but that's OK; match, write residual data,
+ and track hits. The build word lengths when we're done */
+
+ /* we have to do our own de-interleave */
+ if(argv[2]==NULL){
+ fprintf(stderr,"Need a data file on the command line.\n");
+ exit(1);
+ }
+ in=fopen(argv[2],"r");
+ if(!in){
+ fprintf(stderr,"Could not open input file %s\n",argv[2]);
+ exit(1);
+ }
+
+ {
+ int cols=0;
+ long lines=0;
+ double *vec;
+ int interleaved;
+ line=setup_line(in);
+ /* count cols before we start reading */
+ {
+ char *temp=line;
+ while(*temp==' ')temp++;
+ for(cols=0;*temp;cols++){
+ while(*temp>32)temp++;
+ while(*temp==' ')temp++;
+ }
+ }
+ vec=alloca(cols*sizeof(double));
+ interleaved=cols/dim;
+
+ while(line){
+ lines++;
+
+ if(!(lines&0xff))spinnit("lines so far...",lines);
+
+ /* don't need to deinterleave; besterror does that for us */
+ for(j=0;j<cols;j++)
+ if(get_line_value(in,vec+j)){
+ fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
+ exit(1);
+ }
+
+ /* process */
+ for(j=0;j<interleaved;j++)
+ hits[vorbis_book_besterror(&b,vec+j,interleaved,addmul)]++;
+
+ /* write */
+ for(j=0;j<cols;j++)
+ fprintf(stdout,"%g, ",vec[j]);
+ fprintf(stdout,"\n");
+
+ line=setup_line(in);
+ }
+ }
+ fclose(in);
+
+ /* build the codeword lengths */
+ memset(c.lengthlist,0,sizeof(long)*entries);
+ build_tree_from_lengths(entries,hits,c.lengthlist);
+
+ /* save the book in C header form */
+ fprintf(out,
+ "/********************************************************************\n"
+ " * *\n"
+ " * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *\n"
+ " * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *\n"
+ " * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *\n"
+ " * PLEASE READ THESE TERMS DISTRIBUTING. *\n"
+ " * *\n"
+ " * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *\n"
+ " * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *\n"
+ " * http://www.xiph.org/ *\n"
+ " * *\n"
+ " ********************************************************************\n"
+ "\n"
+ " function: static codebook autogenerated by vq/latticebuild\n"
+ "\n"
+ " ********************************************************************/\n\n");
+
+ fprintf(out,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",name,name);
+ fprintf(out,"#include \"vorbis/codebook.h\"\n\n");
+
+ /* first, the static vectors, then the book structure to tie it together. */
+ /* quantlist */
+ fprintf(out,"static long _vq_quantlist_%s[] = {\n",name);
+ for(j=0;j<_book_maptype1_quantvals(&c);j++){
+ fprintf(out,"\t%ld,\n",c.quantlist[j]);
+ }
+ fprintf(out,"};\n\n");
+
+ /* lengthlist */
+ fprintf(out,"static long _vq_lengthlist_%s[] = {\n",name);
+ for(j=0;j<c.entries;){
+ fprintf(out,"\t");
+ for(k=0;k<16 && j<c.entries;k++,j++)
+ fprintf(out,"%2ld,",c.lengthlist[j]);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ /* quantthresh */
+ fprintf(out,"static double _vq_quantthresh_%s[] = {\n",name);
+ for(j=0;j<t.threshvals-1;){
+ fprintf(out,"\t");
+ for(k=0;k<8 && j<t.threshvals-1;k++,j++)
+ fprintf(out,"%.5g, ",t.quantthresh[j]);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ /* quantmap */
+ fprintf(out,"static long _vq_quantmap_%s[] = {\n",name);
+ for(j=0;j<t.threshvals;){
+ fprintf(out,"\t");
+ for(k=0;k<8 && j<t.threshvals;k++,j++)
+ fprintf(out,"%5ld,",t.quantmap[j]);
+ fprintf(out,"\n");
+ }
+ fprintf(out,"};\n\n");
+
+ /* tie it all together */
+
+ fprintf(out,"static encode_aux_threshmatch _vq_aux_%s = {\n",name);
+ fprintf(out,"\t_vq_quantthresh_%s,\n",name);
+ fprintf(out,"\t_vq_quantmap_%s,\n",name);
+ fprintf(out,"\t%d,\n",t.quantvals);
+ fprintf(out,"\t%d\n};\n\n",t.threshvals);
+
+ fprintf(out,"static static_codebook _vq_book_%s = {\n",name);
+
+ fprintf(out,"\t%ld, %ld,\n",c.dim,c.entries);
+ fprintf(out,"\t_vq_lengthlist_%s,\n",name);
+ fprintf(out,"\t1, %ld, %ld, %d, %d,\n",
+ c.q_min,c.q_delta,c.q_quant,c.q_sequencep);
+ fprintf(out,"\t_vq_quantlist_%s,\n",name);
+ fprintf(out,"\tNULL,\n");
+ fprintf(out,"\t&_vq_aux_%s\n",name);
+ fprintf(out,"};\n\n");
+
+ fprintf(out,"\n#endif\n");
+ fclose(out);
+
+ fprintf(stderr,"\r "
+ "\nDone.\n");
+ exit(0);
+}
diff --git a/vq/latticepare.c b/vq/latticepare.c
new file mode 100644
index 00000000..316fcefd
--- /dev/null
+++ b/vq/latticepare.c
@@ -0,0 +1,567 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: utility for paring low hit count cells from lattice codebook
+ last mod: $Id: latticepare.c,v 1.2 2000/05/08 20:49:50 xiphmont Exp $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include "vorbis/codebook.h"
+#include "../lib/sharedbook.h"
+#include "bookutil.h"
+#include "vqgen.h"
+#include "vqsplit.h"
+
+/* Lattice codebooks have two strengths: important fetaures that are
+ poorly modelled by global error minimization training (eg, strong
+ peaks) are not neglected 2) compact quantized representation.
+
+ A fully populated lattice codebook, however, swings point 1 too far
+ in the opposite direction; rare features need not be modelled quite
+ so religiously and as such, we waste bits unless we eliminate the
+ least common cells. The codebook rep supports unused cells, so we
+ need to tag such cells and build an auxiliary (non-thresh) search
+ mechanism to find the proper match quickly */
+
+/* two basic steps; first is pare the cell for which dispersal creates
+ the least additional error. This will naturally choose
+ low-population cells and cells that have not taken on points from
+ neighboring paring (but does not result in the lattice collapsing
+ inward and leaving low population ares totally unmodelled). After
+ paring has removed the desired number of cells, we need to build an
+ auxiliary search for each culled point */
+
+/* Although lattice books (due to threshhold-based matching) do not
+ actually use error to make cell selections (in fact, it need not
+ bear any relation), the 'secondbest' entry finder here is in fact
+ error/distance based, so latticepare is only useful on such books */
+
+/* command line:
+ latticepare latticebook.vqh input_data.vqd <target_cells>
+
+ produces a new output book on stdout
+*/
+
+static double _dist(int el,double *a, double *b){
+ int i;
+ double acc=0.;
+ for(i=0;i<el;i++){
+ double val=(a[i]-b[i]);
+ acc+=val*val;
+ }
+ return(acc);
+}
+
+static double *pointlist;
+static long points=0;
+
+void add_vector(codebook *b,double *vec,long n){
+ int dim=b->dim,i,j;
+ int step=n/dim;
+ for(i=0;i<step;i++){
+ for(j=i;j<n;j+=step){
+ pointlist[points++]=vec[j];
+ }
+ }
+}
+
+/* search neighboring [non-culled] cells for lowest distance. Spiral
+ out in the event culling is deep */
+static int secondbest(codebook *b,double *vec,int best){
+ encode_aux_threshmatch *tt=b->c->thresh_tree;
+ int dim=b->dim;
+ int i,j,spiral=1;
+ int *index=alloca(dim*sizeof(int)*2);
+ int *mod=index+dim;
+ int entry=best;
+
+ double bestmetric=0;
+ int bestentry=-1;
+
+ /* decompose index */
+ for(i=0;i<dim;i++){
+ index[i]=best%tt->quantvals;
+ best/=tt->quantvals;
+ }
+
+ /* hit one off on all sides of it; most likely we'll find a possible
+ match */
+ /* suboptimal for unaligned entries */
+#if 0
+ for(i=0;i<dim;i++){
+ /* one up */
+ if(index[i]+1<tt->quantvals){
+ int newentry=entry+rint(pow(tt->quantvals,i));
+ if(b->c->lengthlist[newentry]>0){
+ double thismetric=_dist(dim, vec, b->valuelist+newentry*dim);
+
+ if(bestentry==-1 || bestmetric>thismetric){
+ bestmetric=thismetric;
+ bestentry=newentry;
+ }
+ }
+ }
+
+ /* one down */
+ if(index[i]-1>=0){
+ int newentry=entry-rint(pow(tt->quantvals,i));
+ if(b->c->lengthlist[newentry]>0){
+ double thismetric=_dist(dim, vec, b->valuelist+newentry*dim);
+
+ if(bestentry==-1 || bestmetric>thismetric){
+ bestmetric=thismetric;
+ bestentry=newentry;
+ }
+ }
+ }
+ }
+
+#endif
+ /* no match? search all cells, binary count, that are one away on
+ one or more axes. Then continue out until there's a match.
+ We'll find one eventually, it's relatively OK to be inefficient
+ as the attempt above will almost always succeed */
+ while(bestentry==-1){
+ for(i=0;i<dim;i++)mod[i]= -spiral;
+ while(1){
+ int newentry=entry;
+
+ /* update the mod */
+ for(j=0;j<dim;j++){
+ if(mod[j]<=spiral)
+ break;
+ else{
+ if(j+1<dim){
+ mod[j]= -spiral;
+ mod[j+1]++;
+ }
+ }
+ }
+ if(j==dim)break;
+
+ /* reconstitute the entry */
+ for(j=0;j<dim;j++){
+ if(index[j]+mod[j]<0 || index[j]+mod[j]>=tt->quantvals){
+ newentry=-1;
+ break;
+ }
+ newentry+=mod[j]*rint(pow(tt->quantvals,j));
+ }
+
+ if(newentry!=-1 && newentry!=entry)
+ if(b->c->lengthlist[newentry]>0){
+ double thismetric=_dist(dim, vec, b->valuelist+newentry*dim);
+
+ if(bestentry==-1 || bestmetric>thismetric){
+ bestmetric=thismetric;
+ bestentry=newentry;
+ }
+ }
+ mod[0]++;
+ }
+ spiral++;
+ }
+
+ return(bestentry);
+}
+
+void usage(void){
+ fprintf(stderr,"Ogg/Vorbis lattice codebook paring utility\n\n"
+ "usage: latticepare book.vqh data.vqd <target_cells>\n"
+ " -<n_0,n_1,...> [-<n_0,n_1,...>]\n\n"
+ "where <target_cells> is the desired number of final cells (or -1\n"
+ "for no change) and n,n,n,n...n are explicit entries to cull\n\n"
+ "produces new book on stdout\n\n");
+ exit(1);
+}
+
+int main(int argc,char *argv[]){
+ char *basename;
+ codebook *b=NULL;
+ int entries=0;
+ int dim=0;
+ long i,j,target=-1;
+ int *cvec=NULL;
+
+ long *cullist=malloc(sizeof(int));
+ long culls=0;
+
+ argv++;
+
+
+ if(*argv==NULL){
+ usage();
+ exit(1);
+ }
+
+ /* yes, this is evil. However, it's very convenient to parse file
+ extentions */
+
+ while(*argv){
+ if(*argv[0]=='-'){
+ char *ptr=argv[0];
+ long index=0;
+ /* explicit cull */
+ if(!b)usage();
+ if(!cvec)cvec=malloc(dim*sizeof(int)); /* lazy ;-) */
+
+ for(i=0;i<dim;i++){
+ if(!ptr){
+ fprintf(stderr,"too few values in cull argument %s\n",argv[0]);
+ exit(1);
+ }
+ cvec[i]=atoi(ptr+1);
+ if(cvec[i]<0 || cvec[i]>=b->c->thresh_tree->quantvals){
+ fprintf(stderr,"value too large in cull argument %s\n",argv[0]);
+ exit(1);
+ }
+
+ ptr=strchr(ptr+1,',');
+ }
+ if(ptr){
+ fprintf(stderr,"too many values in cull argument %s\n",argv[0]);
+ exit(1);
+ }
+ for(i=dim;i>0;i--)
+ index=index*b->c->thresh_tree->quantvals+cvec[i-1];
+
+ cullist=realloc(cullist,++culls*sizeof(long));
+ cullist[culls-1]=index;
+ fprintf(stderr,"\rExplicitly culling index %ld\n",index);
+ argv++;
+
+ }else{
+ /* input file. What kind? */
+ char *dot;
+ char *ext=NULL;
+ char *name=strdup(*argv++);
+ dot=strrchr(name,'.');
+ if(dot)
+ ext=dot+1;
+ else{
+ ext="";
+ target=atol(name);
+ if(target==0)target=entries;
+ }
+
+
+ /* codebook */
+ if(!strcmp(ext,"vqh")){
+
+ basename=strrchr(name,'/');
+ if(basename)
+ basename=strdup(basename)+1;
+ else
+ basename=strdup(name);
+ dot=strrchr(basename,'.');
+ if(dot)*dot='\0';
+
+ b=codebook_load(name);
+ dim=b->dim;
+ entries=b->entries;
+ }
+
+ /* data file; we do actually need to suck it into memory */
+ /* we're dealing with just one book, so we can de-interleave */
+ if(!strcmp(ext,"vqd") && !points){
+ int cols;
+ long lines=0;
+ char *line;
+ double *vec;
+ FILE *in=fopen(name,"r");
+ if(!in){
+ fprintf(stderr,"Could not open input file %s\n",name);
+ exit(1);
+ }
+
+ reset_next_value();
+ line=setup_line(in);
+ /* count cols before we start reading */
+ {
+ char *temp=line;
+ while(*temp==' ')temp++;
+ for(cols=0;*temp;cols++){
+ while(*temp>32)temp++;
+ while(*temp==' ')temp++;
+ }
+ }
+ vec=alloca(cols*sizeof(double));
+ /* count, then load, to avoid fragmenting the hell out of
+ memory */
+ while(line){
+ lines++;
+ for(j=0;j<cols;j++)
+ if(get_line_value(in,vec+j)){
+ fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
+ exit(1);
+ }
+ if((lines&0xff)==0)spinnit("counting samples...",lines*cols);
+ line=setup_line(in);
+ }
+ pointlist=malloc(cols*lines*sizeof(double));
+
+ rewind(in);
+ line=setup_line(in);
+ while(line){
+ lines--;
+ for(j=0;j<cols;j++)
+ if(get_line_value(in,vec+j)){
+ fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
+ exit(1);
+ }
+ /* deinterleave, add to heap */
+ add_vector(b,vec,cols);
+ if((lines&0xff)==0)spinnit("loading samples...",lines*cols);
+
+ line=setup_line(in);
+ }
+ fclose(in);
+ }
+ }
+ }
+ if(!entries || !points)usage();
+ if(target==-1)usage();
+
+ points/=dim;
+
+
+ /* set up auxiliary vectors for error tracking */
+ {
+ encode_aux_nearestmatch *nt=NULL;
+ long pointssofar=0;
+ long *pointindex;
+ long indexedpoints=0;
+ long *entryindex;
+ long *reventry;
+ long *membership=malloc(points*sizeof(long));
+ long *cellhead=malloc(entries*sizeof(long));
+ long *cellcount=calloc(entries,sizeof(long));
+ double *cellerror1=calloc(entries,sizeof(double)); /* error for
+ firstentries */
+ double *cellerror2=calloc(entries,sizeof(double)); /* error for
+ secondentry */
+ double globalerror=0.;
+ long cellsleft=entries;
+ for(i=0;i<points;i++)membership[i]=-1;
+ for(i=0;i<entries;i++)cellhead[i]=-1;
+
+ for(i=0;i<points;i++){
+ /* assign vectors to the nearest cell. Also keep track of second
+ nearest for error statistics */
+ double *ppt=pointlist+i*dim;
+ int firstentry=_best(b,ppt,1);
+ int secondentry=secondbest(b,ppt,firstentry);
+
+ double firstmetric=_dist(dim,b->valuelist+dim*firstentry,ppt);
+ double secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt);
+
+ if(!(i&0xff))spinnit("initializing... ",points-i);
+
+ membership[i]=cellhead[firstentry];
+ cellhead[firstentry]=i;
+
+ cellerror1[firstentry]+=firstmetric;
+ cellcount[firstentry]++;
+ globalerror+=firstmetric;
+ cellerror2[firstentry]+=secondmetric;
+
+ }
+
+ /* handle the explicit cull list */
+ for(i=0;i<culls;i++){
+ long bestcell=cullist[i];
+ char buf[80];
+ sprintf(buf,"explicit culls (%d left)... ",(int)culls-i);
+
+ /* disperse cell. move each point out, adding it (properly) to
+ the second best */
+ if(b->c->lengthlist[bestcell]>0){
+ long head=cellhead[bestcell];
+ b->c->lengthlist[bestcell]=0;
+ cellhead[bestcell]=-1;
+ while(head!=-1){
+ /* head is a point number */
+ double *ppt=pointlist+head*dim;
+ int newentry=secondbest(b,ppt,bestcell);
+ int secondentry=secondbest(b,pointlist+head*dim,newentry);
+ double firstmetric=_dist(dim,b->valuelist+dim*newentry,ppt);
+ double secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt);
+ long next=membership[head];
+ cellcount[newentry]++;
+ cellcount[bestcell]--;
+ cellerror1[newentry]+=firstmetric;
+ cellerror2[newentry]+=secondmetric;
+ spinnit(buf,cellcount[bestcell]);
+
+ membership[head]=cellhead[newentry];
+ cellhead[newentry]=head;
+ head=next;
+ }
+ cellsleft--;
+ }
+ }
+
+ /* do the automatic cull request */
+ while(cellsleft>target){
+ int bestcell=-1;
+ double besterror=0;
+ long head=-1;
+ spinnit("cells left to eliminate... ",cellsleft-target);
+
+ /* find the cell with lowest removal impact */
+ for(i=0;i<entries;i++){
+ if(b->c->lengthlist[i]>0){
+ double thiserror=globalerror-cellerror1[i]+cellerror2[i];
+ if(bestcell==-1 || besterror>thiserror){
+ besterror=thiserror;
+ bestcell=i;
+ }
+ }
+ }
+
+ /* disperse it. move each point out, adding it (properly) to
+ the second best */
+ b->c->lengthlist[bestcell]=0;
+ head=cellhead[bestcell];
+ cellhead[bestcell]=-1;
+ while(head!=-1){
+ /* head is a point number */
+ double *ppt=pointlist+head*dim;
+ int newentry=secondbest(b,ppt,bestcell);
+ int secondentry=secondbest(b,pointlist+head*dim,newentry);
+ double firstmetric=_dist(dim,b->valuelist+dim*newentry,ppt);
+ double secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt);
+ long next=membership[head];
+ cellerror1[newentry]+=firstmetric;
+ cellerror2[newentry]+=secondmetric;
+
+ membership[head]=cellhead[newentry];
+ cellhead[newentry]=head;
+ head=next;
+ }
+
+ cellsleft--;
+ }
+
+ /* paring is over. Build decision trees using points that now fall
+ through the thresh matcher. */
+ /* we don't free membership; we flatten it in order to use in lp_split */
+
+ for(i=0;i<entries;i++){
+ long head=cellhead[i];
+ spinnit("rearranging membership cache... ",entries-i);
+ while(head!=-1){
+ long next=membership[head];
+ membership[head]=i;
+ head=next;
+ }
+ }
+
+ free(cellhead);
+ free(cellerror1);
+ free(cellerror2);
+
+ pointindex=malloc(points*sizeof(long));
+ /* make a point index of fall-through points */
+ for(i=0;i<points;i++){
+ int best=_best(b,pointlist+i*dim,1);
+ if(best==-1)
+ pointindex[indexedpoints++]=i;
+ spinnit("finding orphaned points... ",points-i);
+ }
+
+ /* make an entry index */
+ entryindex=malloc(entries*sizeof(long));
+ target=0;
+ for(i=0;i<entries;i++){
+ if(b->c->lengthlist[i]>0)
+ entryindex[target++]=i;
+ }
+
+ /* make working space for a reverse entry index */
+ reventry=malloc(entries*sizeof(long));
+
+ /* do the split */
+ nt=b->c->nearest_tree=
+ calloc(1,sizeof(encode_aux_nearestmatch));
+
+ nt->alloc=4096;
+ nt->ptr0=malloc(sizeof(long)*nt->alloc);
+ nt->ptr1=malloc(sizeof(long)*nt->alloc);
+ nt->p=malloc(sizeof(long)*nt->alloc);
+ nt->q=malloc(sizeof(long)*nt->alloc);
+ nt->aux=0;
+
+ fprintf(stderr,"Leaves added: %d \n",
+ lp_split(pointlist,points,
+ b,entryindex,target,
+ pointindex,indexedpoints,
+ membership,reventry,
+ 0,&pointssofar));
+ free(membership);
+ free(reventry);
+ free(pointindex);
+
+ /* recount hits. Build new lengthlist. reuse entryindex storage */
+ for(i=0;i<entries;i++)entryindex[i]=1;
+ for(i=0;i<points;i++){
+ int best=_best(b,pointlist+i*dim,1);
+ if(!(i&0xff))spinnit("counting hits...",i);
+ if(best==-1){
+ fprintf(stderr,"\nINTERNAL ERROR; a point count not be matched to a\n"
+ "codebook entry. The new decision tree is broken.\n");
+ exit(1);
+ }
+ entryindex[best]++;
+ }
+
+ /* the lengthlist builder doesn't actually deal with 0 hit entries.
+ So, we pack the 'sparse' hit list into a dense list, then unpack
+ the lengths after the build */
+ {
+ int upper=0;
+ long *lengthlist=calloc(entries,sizeof(long));
+ for(i=0;i<entries;i++)
+ if(b->c->lengthlist[i]>0)
+ entryindex[upper++]=entryindex[i];
+
+ /* sanity check */
+ if(upper != target){
+ fprintf(stderr,"\nINTERNAL ERROR; packed the wrong number of entries\n");
+ exit(1);
+ }
+
+
+ build_tree_from_lengths(upper,entryindex,lengthlist);
+
+ upper=0;
+ for(i=0;i<entries;i++)
+ if(b->c->lengthlist[i]>0)
+ b->c->lengthlist[i]=lengthlist[upper++];
+ }
+ }
+ /* we're done. write it out. */
+ write_codebook(stdout,"foo",b->c);
+
+ fprintf(stderr,"\r \nDone.\n");
+ return(0);
+}
+
+
+
+
diff --git a/vq/lspdata.c b/vq/lspdata.c
index a377eb78..1181ac41 100644
--- a/vq/lspdata.c
+++ b/vq/lspdata.c
@@ -12,7 +12,7 @@
********************************************************************
function: metrics and quantization code for LSP VQ codebooks
- last mod: $Id: lspdata.c,v 1.11 2000/02/21 01:12:56 xiphmont Exp $
+ last mod: $Id: lspdata.c,v 1.12 2000/05/08 20:49:50 xiphmont Exp $
********************************************************************/
@@ -21,24 +21,70 @@
#include <stdio.h>
#include "vqgen.h"
#include "vqext.h"
+#include "../lib/sharedbook.h"
char *vqext_booktype="LSPdata";
quant_meta q={0,0,0,1}; /* set sequence data */
int vqext_aux=1;
+double global_maxdel=M_PI;
+double global_mindel=M_PI;
+#if 0
+void vqext_quantize(vqgen *v,quant_meta *q){
+ double delta,mindel;
+ double maxquant=((1<<q->quant)-1);
+ int j,k;
+
+ /* first find the basic delta amount from the maximum span to be
+ encoded. Loosen the delta slightly to allow for additional error
+ during sequence quantization */
+
+ delta=(global_maxdel-global_mindel)/((1<<q->quant)-1.5);
+
+ q->min=_float32_pack(global_mindel);
+ q->delta=_float32_pack(delta);
+
+ mindel=_float32_unpack(q->min);
+ delta=_float32_unpack(q->delta);
+
+ for(j=0;j<v->entries;j++){
+ double last=0;
+ for(k=0;k<v->elements;k++){
+ double val=_now(v,j)[k];
+ double now=rint((val-last-mindel)/delta);
+
+ _now(v,j)[k]=now;
+ if(now<0){
+ /* be paranoid; this should be impossible */
+ fprintf(stderr,"fault; quantized value<0\n");
+ exit(1);
+ }
+
+ if(now>maxquant){
+ /* be paranoid; this should be impossible */
+ fprintf(stderr,"fault; quantized value>max\n");
+ exit(1);
+ }
+ last=(now*delta)+mindel+last;
+ }
+ }
+
+}
+#else
void vqext_quantize(vqgen *v,quant_meta *q){
vqgen_quantize(v,q);
}
+#endif
+double *weight=NULL;
+#if 0
/* LSP training metric. We weight error proportional to distance
*between* LSP vector values. The idea of this metric is not to set
final cells, but get the midpoint spacing into a form conducive to
what we want, which is weighting toward preserving narrower
features. */
-double global_maxdel=M_PI;
#define FUDGE (global_maxdel-weight[i])
-double *weight=NULL;
double *vqext_weight(vqgen *v,double *p){
int i;
@@ -52,6 +98,12 @@ double *vqext_weight(vqgen *v,double *p){
}
return p;
}
+#else
+#define FUDGE 1.
+double *vqext_weight(vqgen *v,double *p){
+ return p;
+}
+#endif
/* candidate,actual */
double vqext_metric(vqgen *v,double *e, double *p){
@@ -72,7 +124,7 @@ double vqext_metric(vqgen *v,double *e, double *p){
trailing space */
/* assume vqext_aux==1 */
-void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols){
+void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols,int num){
double *a=alloca(sizeof(double)*(dim+1)); /* +aux */
double base=0;
int i;
@@ -92,16 +144,17 @@ void vqext_preprocess(vqgen *v){
long j,k;
global_maxdel=0.;
+ global_mindel=M_PI;
for(j=0;j<v->points;j++){
double last=0.;
for(k=0;k<v->elements+v->aux;k++){
double p=_point(v,j)[k];
if(p-last>global_maxdel)global_maxdel=p-last;
+ if(p-last<global_mindel)global_mindel=p-last;
last=p;
}
}
- global_maxdel*=1.1;
weight=malloc(sizeof(double)*v->elements);
}
diff --git a/vq/metrics.c b/vq/metrics.c
index 5b555953..79089b33 100644
--- a/vq/metrics.c
+++ b/vq/metrics.c
@@ -12,7 +12,7 @@
********************************************************************
function: function calls to collect codebook metrics
- last mod: $Id: metrics.c,v 1.6 2000/02/16 16:18:37 xiphmont Exp $
+ last mod: $Id: metrics.c,v 1.7 2000/05/08 20:49:50 xiphmont Exp $
********************************************************************/
@@ -20,67 +20,67 @@
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
+#include "vorbis/codebook.h"
+#include "../lib/sharedbook.h"
#include "bookutil.h"
+/* collect the following metrics:
+
+ mean and mean squared amplitude
+ mean and mean squared error
+ mean and mean squared error (per sample) by entry
+ worst case fit by entry
+ entry cell size
+ hits by entry
+ total bits
+ total samples
+ (average bits per sample)*/
+
+
/* set up metrics */
double meanamplitude_acc=0.;
double meanamplitudesq_acc=0.;
double meanerror_acc=0.;
double meanerrorsq_acc=0.;
-double meandev_acc=0.;
-
-double *histogram=NULL;
-double *histogram_error=NULL;
-double *histogram_errorsq=NULL;
-double *histogram_distance=NULL;
-double *histogram_hi=NULL;
-double *histogram_lo=NULL;
+double **histogram=NULL;
+double **histogram_error=NULL;
+double **histogram_errorsq=NULL;
+double **histogram_hi=NULL;
+double **histogram_lo=NULL;
+double bits=0.;
double count=0.;
-int books=0;
-int dim=-1;
-double *work;
-
static double *_now(codebook *c, int i){
return c->valuelist+i*c->c->dim;
}
-int histerrsort(const void *a, const void *b){
- double av=histogram_distance[*((long *)a)];
- double bv=histogram_distance[*((long *)b)];
- if(av<bv)return(-1);
- return(1);
-}
+int books=0;
void process_preprocess(codebook **bs,char *basename){
- while(bs[books]){
- codebook *b=bs[books];
- if(dim==-1){
- dim=b->c->dim;
- work=malloc(sizeof(double)*dim);
- }else{
- if(dim!=b->c->dim){
- fprintf(stderr,"Each codebook in a cascade must have the same dimensional order\n");
- exit(1);
- }
- }
- books++;
- }
-
+ int i;
+ while(bs[books])books++;
+
if(books){
- const static_codebook *b=bs[books-1]->c;
- histogram=calloc(b->entries,sizeof(double));
- histogram_distance=calloc(b->entries,sizeof(double));
- histogram_errorsq=calloc(b->entries*dim,sizeof(double));
- histogram_error=calloc(b->entries*dim,sizeof(double));
- histogram_hi=calloc(b->entries*dim,sizeof(double));
- histogram_lo=calloc(b->entries*dim,sizeof(double));
+ histogram=calloc(books,sizeof(double *));
+ histogram_error=calloc(books,sizeof(double *));
+ histogram_errorsq=calloc(books,sizeof(double *));
+ histogram_hi=calloc(books,sizeof(double *));
+ histogram_lo=calloc(books,sizeof(double *));
}else{
fprintf(stderr,"Specify at least one codebook\n");
exit(1);
}
+
+ for(i=0;i<books;i++){
+ codebook *b=bs[i];
+ histogram[i]=calloc(b->entries,sizeof(double));
+ histogram_error[i]=calloc(b->entries*b->dim,sizeof(double));
+ histogram_errorsq[i]=calloc(b->entries*b->dim,sizeof(double));
+ histogram_hi[i]=calloc(b->entries*b->dim,sizeof(double));
+ histogram_lo[i]=calloc(b->entries*b->dim,sizeof(double));
+ }
}
static double _dist(int el,double *a, double *b){
@@ -93,189 +93,197 @@ static double _dist(int el,double *a, double *b){
return acc;
}
-void cell_spacing(codebook **b){
- int i,j,k;
- for(i=0;i<books;i++){
- double min,max,mean=0.,meansq=0.;
- codebook *c=b[i];
+void cell_spacing(codebook *c){
+ int j,k;
+ double min=-1,max=-1,mean=0.,meansq=0.;
+ long total=0;
- fprintf(stderr,"\nCell spacing for book %d:\n",i);
-
- /* minimum, maximum, mean, ms cell spacing */
- for(j=0;j<c->c->entries;j++){
+ /* minimum, maximum, mean, ms cell spacing */
+ for(j=0;j<c->c->entries;j++){
+ if(c->c->lengthlist[j]>0){
double localmin=-1.;
for(k=0;k<c->c->entries;k++){
- double this=_dist(c->c->dim,_now(c,j),_now(c,k));
- if(j!=k &&
- (localmin==-1 || this<localmin))
- localmin=this;
+ if(c->c->lengthlist[k]>0){
+ double this=_dist(c->c->dim,_now(c,j),_now(c,k));
+ if(j!=k &&
+ (localmin==-1 || this<localmin))
+ localmin=this;
+ }
}
- if(j==0 || localmin<min)min=localmin;
- if(j==0 || localmin>max)max=localmin;
+ if(min==-1 || localmin<min)min=localmin;
+ if(max==-1 || localmin>max)max=localmin;
mean+=sqrt(localmin);
meansq+=localmin;
+ total++;
}
-
- fprintf(stderr,"\tminimum cell spacing (closest side): %g\n",sqrt(min));
- fprintf(stderr,"\tmaximum cell spacing (closest side): %g\n",sqrt(max));
- fprintf(stderr,"\tmean closest side spacing: %g\n",mean/c->c->entries);
- fprintf(stderr,"\tmean sq closest side spacing: %g\n",sqrt(meansq/c->c->entries));
}
+
+ fprintf(stderr,"\tminimum cell spacing (closest side): %g\n",sqrt(min));
+ fprintf(stderr,"\tmaximum cell spacing (closest side): %g\n",sqrt(max));
+ fprintf(stderr,"\tmean closest side spacing: %g\n",mean/total);
+ fprintf(stderr,"\tmean sq closest side spacing: %g\n",sqrt(meansq/total));
}
-void process_postprocess(codebook **b,char *basename){
- int i,j,k;
+void process_postprocess(codebook **bs,char *basename){
+ int i,k,book;
char *buffer=alloca(strlen(basename)+80);
- codebook *bb=b[books-1];
- fprintf(stderr,"Done. Processed %ld data points for %ld entries:\n",
- (long)count,bb->c->entries);
- fprintf(stderr,"\tglobal mean amplitude: %g\n",
- meanamplitude_acc/(count*dim));
- fprintf(stderr,"\tglobal mean squared amplitude: %g\n",
- sqrt(meanamplitudesq_acc/(count*dim)));
+ fprintf(stderr,"Done. Processed %ld data points:\n\n",
+ (long)count);
+
+ fprintf(stderr,"Global statistics:******************\n\n");
+
+ fprintf(stderr,"\ttotal samples: %ld\n",(long)count);
+ fprintf(stderr,"\ttotal bits required to code: %ld\n",(long)bits);
+ fprintf(stderr,"\taverage bits per sample: %g\n\n",bits/count);
- fprintf(stderr,"\tglobal mean error: %g\n",
- meanerror_acc/(count*dim));
- fprintf(stderr,"\tglobal mean squared error: %g\n",
- sqrt(meanerrorsq_acc/(count*dim)));
- fprintf(stderr,"\tglobal mean deviation: %g\n",
- meandev_acc/(count*dim));
+ fprintf(stderr,"\tmean sample amplitude: %g\n",
+ meanamplitude_acc/count);
+ fprintf(stderr,"\tmean squared sample amplitude: %g\n\n",
+ sqrt(meanamplitudesq_acc/count));
- cell_spacing(b);
+ fprintf(stderr,"\tmean code error: %g\n",
+ meanerror_acc/count);
+ fprintf(stderr,"\tmean squared code error: %g\n\n",
+ sqrt(meanerrorsq_acc/count));
- {
+ for(book=0;book<books;book++){
FILE *out;
+ codebook *b=bs[book];
+ int n=b->c->entries;
+ int dim=b->c->dim;
- sprintf(buffer,"%s-mse.m",basename);
+ fprintf(stderr,"Book %d statistics:------------------\n",book);
+
+ cell_spacing(b);
+
+ sprintf(buffer,"%s-%d-mse.m",basename,book);
out=fopen(buffer,"w");
if(!out){
fprintf(stderr,"Could not open file %s for writing\n",buffer);
exit(1);
}
-
- for(i=0;i<bb->c->entries;i++){
- for(k=0;k<bb->c->dim;k++){
- fprintf(out,"%ld, %g, %g\n",
- i*bb->c->dim+k,(bb->valuelist+i*bb->c->dim)[k],
- sqrt((histogram_errorsq+i*bb->c->dim)[k]/histogram[i]));
+
+ for(i=0;i<n;i++){
+ for(k=0;k<dim;k++){
+ fprintf(out,"%d, %g, %g\n",
+ i*dim+k,(b->valuelist+i*dim)[k],
+ sqrt((histogram_errorsq[book]+i*dim)[k]/histogram[book][i]));
}
}
fclose(out);
-
- sprintf(buffer,"%s-me.m",basename);
+
+ sprintf(buffer,"%s-%d-me.m",basename,book);
out=fopen(buffer,"w");
if(!out){
fprintf(stderr,"Could not open file %s for writing\n",buffer);
exit(1);
}
-
- for(i=0;i<bb->c->entries;i++){
- for(k=0;k<bb->c->dim;k++){
- fprintf(out,"%ld, %g, %g\n",
- i*bb->c->dim+k,(bb->valuelist+i*bb->c->dim)[k],
- (histogram_error+i*bb->c->dim)[k]/histogram[i]);
+
+ for(i=0;i<n;i++){
+ for(k=0;k<dim;k++){
+ fprintf(out,"%d, %g, %g\n",
+ i*dim+k,(b->valuelist+i*dim)[k],
+ (histogram_error[book]+i*dim)[k]/histogram[book][i]);
}
}
fclose(out);
- sprintf(buffer,"%s-worst.m",basename);
+ sprintf(buffer,"%s-%d-worst.m",basename,book);
out=fopen(buffer,"w");
if(!out){
fprintf(stderr,"Could not open file %s for writing\n",buffer);
exit(1);
}
-
- for(i=0;i<bb->c->entries;i++){
- for(k=0;k<bb->c->dim;k++){
- fprintf(out,"%ld, %g, %g, %g\n",
- i*bb->c->dim+k,(bb->valuelist+i*bb->c->dim)[k],
- (bb->valuelist+i*bb->c->dim)[k]+(histogram_lo+i*bb->c->dim)[k],
- (bb->valuelist+i*bb->c->dim)[k]+(histogram_hi+i*bb->c->dim)[k]);
+
+ for(i=0;i<n;i++){
+ for(k=0;k<dim;k++){
+ fprintf(out,"%d, %g, %g, %g\n",
+ i*dim+k,(b->valuelist+i*dim)[k],
+ (b->valuelist+i*dim)[k]+(histogram_lo[book]+i*dim)[k],
+ (b->valuelist+i*dim)[k]+(histogram_hi[book]+i*dim)[k]);
}
}
fclose(out);
}
+}
- {
- FILE *out;
- long *index=alloca(sizeof(long)*bb->c->entries);
- sprintf(buffer,"%s-distance.m",basename);
- out=fopen(buffer,"w");
- if(!out){
- fprintf(stderr,"Could not open file %s for writing\n",buffer);
- exit(1);
- }
- for(j=0;j<bb->c->entries;j++){
- if(histogram[j])histogram_distance[j]/=histogram[j];
- index[j]=j;
+double process_one(codebook *b,int book,double *a,int dim,int step,int addmul,
+ double base){
+ int j,entry;
+ double amplitude=0.;
+
+ if(book==0){
+ double last=base;
+ for(j=0;j<dim;j++){
+ amplitude=a[j*step]-last;
+ meanamplitude_acc+=fabs(amplitude);
+ meanamplitudesq_acc+=amplitude*amplitude;
+ count++;
+ last=a[j*step];
}
+ }
- qsort(index,bb->c->entries,sizeof(long),histerrsort);
+ if(b->c->q_sequencep){
+ double temp;
+ for(j=0;j<dim;j++){
+ temp=a[j*step];
+ a[j*step]-=base;
+ }
+ base=temp;
+ }
- for(j=0;j<bb->c->entries;j++)
- for(k=0;k<histogram[index[j]];k++)
- fprintf(out,"%g,\n",histogram_distance[index[j]]);
- fclose(out);
-
+ entry=vorbis_book_besterror(b,a,step,addmul);
+
+ histogram[book][entry]++;
+ bits+=vorbis_book_codelen(b,entry);
+
+ for(j=0;j<dim;j++){
+ double error=a[j*step];
+
+ if(book==books-1){
+ meanerror_acc+=fabs(error);
+ meanerrorsq_acc+=error*error;
+ }
+ histogram_errorsq[book][entry*dim+j]+=error*error;
+ histogram_error[book][entry*dim+j]+=fabs(error);
+ if(histogram[book][entry]==0 || histogram_hi[book][entry*dim+j]<error)
+ histogram_hi[book][entry*dim+j]=error;
+ if(histogram[book][entry]==0 || histogram_lo[book][entry*dim+j]>error)
+ histogram_lo[book][entry*dim+j]=error;
}
+ return base;
}
-void process_vector(codebook **bs,double *a){
+
+void process_vector(codebook **bs,int *addmul,int inter,double *a,int n){
int bi;
int i;
- double amplitude=0.;
- double distance=0.;
- double base=0.;
- int entry;
- double *e;
- memcpy(work,a,sizeof(double)*dim);
for(bi=0;bi<books;bi++){
codebook *b=bs[bi];
- entry=codebook_entry(b,work);
- e=b->valuelist+b->c->dim*entry;
- for(i=0;i<b->c->dim;i++)work[i]-=e[i];
- }
+ int dim=b->dim;
+ double base=0.;
- for(i=0;i<dim;i++){
- double error=work[i];
- if(bs[0]->c->q_sequencep){
- amplitude=a[i]-base;
- base=a[i];
- }else
- amplitude=a[i];
-
- meanamplitude_acc+=fabs(amplitude);
- meanamplitudesq_acc+=amplitude*amplitude;
- meanerror_acc+=fabs(error);
- meanerrorsq_acc+=error*error;
-
- if(amplitude)
- meandev_acc+=fabs(error/amplitude);
- else
- meandev_acc+=fabs(error); /* yeah, yeah */
-
- histogram_errorsq[entry*dim+i]+=error*error;
- histogram_error[entry*dim+i]+=fabs(error);
- if(histogram[entry]==0 || histogram_hi[entry*dim+i]<error)
- histogram_hi[entry*dim+i]=error;
- if(histogram[entry]==0 || histogram_lo[entry*dim+i]>error)
- histogram_lo[entry*dim+i]=error;
- distance+=error*error;
+ if(inter){
+ for(i=0;i<n/dim;i++)
+ base=process_one(b,bi,a+i,dim,n/dim,addmul[bi],base);
+ }else{
+ for(i=0;i<=n-dim;i+=dim)
+ base=process_one(b,bi,a+i,dim,1,addmul[bi],base);
+ }
}
-
- histogram[entry]++;
- histogram_distance[entry]+=sqrt(distance);
-
- if((long)(count++)%100)spinnit("working.... lines: ",count);
+
+ if((long)(count)%100)spinnit("working.... samples: ",count);
}
void process_usage(void){
fprintf(stderr,
- "usage: vqmetrics <codebook>.vqh datafile.vqd [datafile.vqd]...\n\n"
- " data can be taken on stdin. Output goes to output files:\n"
+ "usage: vqmetrics [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n"
+ " datafile.vqd [datafile.vqd]...\n\n"
+ " data can be taken on stdin. -i indicates interleaved coding.\n"
+ " Output goes to output files:\n"
" basename-me.m: gnuplot: mean error by entry value\n"
" basename-mse.m: gnuplot: mean square error by entry value\n"
" basename-worst.m: gnuplot: worst error by entry value\n"
diff --git a/vq/partition.c b/vq/partition.c
deleted file mode 100644
index 4694c571..00000000
--- a/vq/partition.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
- * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: function call to do data partitioning
- last mod: $Id: partition.c,v 1.3 2000/01/21 13:42:39 xiphmont Exp $
-
- ********************************************************************/
-
-/* make n files, one for each cell. partition the input data into the
- N cells */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "bookutil.h"
-
-/* open all the partitioning files */
-FILE **out;
-long count;
-
-void process_preprocess(codebook **b,char *basename){
- int i;
- char *buffer=alloca(strlen(basename)+80);
- codebook *b0=*b;
-
- if(!b0){
- fprintf(stderr,"Specify at least one codebook, binky.\n");
- exit(1);
- }
- if(b[1]){
- fprintf(stderr,"Ignoring all but first codebook\n");
- exit(1);
- }
-
- out=malloc(sizeof(FILE *)*b0->c->entries);
- for(i=0;i<b0->c->entries;i++){
- sprintf(buffer,"%s-%dp.vqd",basename,i);
- out[i]=fopen(buffer,"w");
- if(out[i]==NULL){
- fprintf(stderr,"Could not open file %s\n",buffer);
- exit(1);
- }
- }
-}
-
-void process_postprocess(codebook **b,char *basename){
- codebook *b0=*b;
- int i;
- for(i=0;i<b0->c->entries;i++)
- fclose(out[i]);
- fprintf(stderr,"Done. \n");
-}
-
-/* just redirect this entry to the appropriate partition file */
-void process_vector(codebook **b,double *a){
- codebook *b0=*b;
- int entry=codebook_entry(b0,a);
- int i;
-
- for(i=0;i<b0->c->dim;i++)
- fprintf(out[entry],"%f, ",a[i]);
- fprintf(out[entry],"\n");
- if(count++%100)spinnit("working.... lines: ",count);
-}
-
-void process_usage(void){
- fprintf(stderr,
- "usage: vqpartition codebook.vqh datafile.vqd [datafile.vqd]...\n\n"
- " data can be taken on stdin. partitioning data is written to\n"
-
- " files named <basename>-<n>p.vqh.\n\n");
-
-}
-
-
-
-
diff --git a/vq/residue_entropy b/vq/residue_entropy
new file mode 100755
index 00000000..7aa44bc5
--- /dev/null
+++ b/vq/residue_entropy
@@ -0,0 +1,51 @@
+#!/usr/bin/perl
+
+use POSIX;
+my($groupn,$quant,$sink)=@ARGV;
+my%hash;
+my$count=0;
+my$lines=0;
+
+if(!defined($quant)){
+ print "Usage: residue_entropy <groupsize> <quant>\n";
+ exit(1);
+}
+$|=1;
+
+while (<STDIN>) {
+ chop;
+ my@nums = ();
+ @nums = split(/,/);
+ $lines++;
+
+ my$step=$#nums/$groupn;
+ for(my$i=0;$i<$step;$i++){
+ my$key="";
+ for(my$j=$i;$j<$#nums;$j+=$step){
+
+ $num=$nums[$j];
+ if($num!=0){
+ if($num<0){
+ $num= -POSIX::floor(log(-$num)*8.6858896/$quant+.5)-1;
+ }else{
+ $num= POSIX::floor(log($num)*8.6858896/$quant+.5)+1;
+ }
+ }else{
+ $num=0;
+ }
+ $key.=":$num";
+ }
+
+ if(!defined($hash{$key})){
+ $count++;
+ $hash{$key}=1;
+ }
+ }
+
+ if(($lines % 1000)==0){
+ print "\rworking... $lines lines, found $count values so far";
+ }
+}
+
+print "\r$count values total \n";
+print "Done.\n\n";
diff --git a/vq/residuedata.c b/vq/residuedata.c
index a1b68a95..84bd6d9a 100644
--- a/vq/residuedata.c
+++ b/vq/residuedata.c
@@ -12,7 +12,7 @@
********************************************************************
function: metrics and quantization code for residue VQ codebooks
- last mod: $Id: residuedata.c,v 1.2 2000/02/21 01:12:57 xiphmont Exp $
+ last mod: $Id: residuedata.c,v 1.3 2000/05/08 20:49:51 xiphmont Exp $
********************************************************************/
@@ -22,68 +22,43 @@
#include <string.h>
#include "vqgen.h"
#include "bookutil.h"
+#include "../lib/sharedbook.h"
+#include "../lib/scales.h"
#include "vqext.h"
+float scalequant=3.;
char *vqext_booktype="RESdata";
quant_meta q={0,0,0,0}; /* set sequence data */
int vqext_aux=0;
static double *quant_save=NULL;
-/* LSP training metric. We weight error proportional to distance
- *between* LSP vector values. The idea of this metric is not to set
- final cells, but get the midpoint spacing into a form conducive to
- what we want, which is weighting toward preserving narrower
- features. */
-
double *vqext_weight(vqgen *v,double *p){
return p;
}
-/* quantize aligned on unit boundaries */
-
-static double _delta(double min,double max,int bits){
- double delta=1.;
- int vals=(1<<bits);
- while(1){
- double qmax=rint(max/delta);
- double qmin=rint(min/delta);
- int qvals=rint(qmax-qmin)+1;
-
- if(qvals>vals){
- delta*=2;
- }else if(qvals*2<=vals){
- delta*=.5;
- }else{
- min=qmin*delta;
- break;
- }
- }
- return(delta);
-}
+/* quantize aligned on unit boundaries. Because our grid is likely
+ very coarse, play 'shuffle the blocks'; don't allow multiple
+ entries to fill the same spot as is nearly certain to happen. */
void vqext_quantize(vqgen *v,quant_meta *q){
- int i,j,k;
+ int j,k;
long dim=v->elements;
long n=v->entries;
- double min,vals,delta=1.;
+ double max=-1;
double *test=alloca(sizeof(double)*dim);
int moved=0;
- min=-((1<<q->quant)/2-1);
- vals=1<<q->quant;
- q->min=float24_pack(rint(min/delta)*delta);
- q->delta=float24_pack(delta);
/* allow movement only to unoccupied coordinates on the coarse grid */
for(j=0;j<n;j++){
for(k=0;k<dim;k++){
double val=_now(v,j)[k];
- val=rint((val-min)/delta);
- if(val<0)val=0;
- if(val>=vals)val=vals-1;
- test[k]=val;
+ double norm=rint(fabs(val)/scalequant);
+ if(norm>max)max=norm;
+ test[k]=norm;
}
+
/* allow move only if unoccupied */
if(quant_save){
for(k=0;k<n;k++)
@@ -99,14 +74,20 @@ void vqext_quantize(vqgen *v,quant_meta *q){
}
}
+ /* unlike the other trainers, we fill in our quantization
+ information (as we know granularity beforehand and don't need to
+ maximize it) */
+
+ q->min=_float32_pack(0.);
+ q->delta=_float32_pack(scalequant);
+ q->quant=_ilog(max);
+
if(quant_save){
memcpy(_now(v,0),quant_save,sizeof(double)*dim*n);
fprintf(stderr,"cells shifted this iteration: %d\n",moved);
}
}
-/* this should probably go to a x^6/4 error metric */
-
/* candidate,actual */
double vqext_metric(vqgen *v,double *e, double *p){
int i;
@@ -118,15 +99,18 @@ double vqext_metric(vqgen *v,double *e, double *p){
return sqrt(acc);
}
-void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols){
+/* We don't interleave here; we assume that the interleave is provided
+ for us by residuesplit in vorbis/huff/ */
+void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols,int num){
vqgen_addpoint(v,b+start,NULL);
}
/* need to reseed because of the coarse quantization we tend to use on
residuals (which causes lots & lots of dupes) */
void vqext_preprocess(vqgen *v){
- long i,j,k,l,min,max;
+ long i,j,k,l;
double *test=alloca(sizeof(double)*v->elements);
+ scalequant=q.quant;
vqext_quantize(v,&q);
vqgen_unquantize(v,&q);
@@ -142,17 +126,14 @@ void vqext_preprocess(vqgen *v){
if(k<v->entries){
fprintf(stderr,"reseeding with quantization....\n");
- min=-((1<<q.quant)/2-1);
- max=min+(1<<q.quant)-1;
/* seed the inputs to input points, but points on unit boundaries,
ignoring quantbits for now, making sure each seed is unique */
for(i=0,j=0;i<v->points && j<v->entries;i++){
for(k=0;k<v->elements;k++){
- test[k]=rint(_point(v,i)[k]);
- if(test[k]<min)test[k]=min;
- if(test[k]>max)test[k]=max;
+ double val=_point(v,i)[k];
+ test[k]=rint(val/scalequant)*scalequant;
}
for(l=0;l<j;l++){
@@ -178,3 +159,4 @@ void vqext_preprocess(vqgen *v){
vqgen_unquantize(v,&q);
}
+
diff --git a/vq/residuesplit.c b/vq/residuesplit.c
index 28205f1b..6e15733a 100644
--- a/vq/residuesplit.c
+++ b/vq/residuesplit.c
@@ -11,8 +11,8 @@
* *
********************************************************************
- function: residue backend 0 partitioner
- last mod: $Id: residuesplit.c,v 1.1 2000/02/12 08:33:01 xiphmont Exp $
+ function: residue backend 0 partitioner/classifier
+ last mod: $Id: residuesplit.c,v 1.2 2000/05/08 20:49:42 xiphmont Exp $
********************************************************************/
@@ -20,64 +20,35 @@
#include <string.h>
#include <math.h>
#include <stdio.h>
-#include "../lib/scales.h"
#include "../vq/bookutil.h"
-/* take a masking curve and raw residue; eliminate the inaduble and
- quantize to the final form handed to the VQ. All and any tricks to
- squeeze out bits given knowledge of the encoding mode should go
- here too */
-
-/* modifies the pcm vector, returns book membership in aux */
-
-/* This is currently a bit specific to/hardwired for mapping 0; things
- will need to change in the future when we het real multichannel
- mappings */
-
-static double _maxval(double *v,int n){
- int i;
- double acc=0.;
- for(i=0;i<n;i++){
- double val=fabs(v[i]);
- if(acc<val)acc=val;
- }
- return(acc);
-}
-
-/* mean dB actually */
-static double _meanval(double *v,int n){
- int i;
- double acc=0.;
- for(i=0;i<n;i++)
- acc+=todB(fabs(v[i]));
- return(fromdB(acc/n));
-}
-
static FILE *of;
static FILE **or;
-int quantaux(double *mask, double *floor,int n,
- double *maskmbound,double *maskabound,double *floorbound,
- int parts, int subn){
- long i,j;
+/* currently classify only by maximum amplitude */
- for(i=0;i<=n-subn;){
- double maxmask=_maxval(mask+i,subn);
- double meanmask=_meanval(mask+i,subn);
- double meanfloor=_meanval(floor+i,subn);
- int aux;
+/* This is currently a bit specific to/hardwired for mapping 0; things
+ will need to change in the future when we get real multichannel
+ mappings */
+int quantaux(double *res,int n,double *bound,int parts, int subn){
+ long i,j,aux;
+
+ for(i=0;i<=n-subn;i+=subn){
+ double max=0.;
+ for(j=0;j<subn;j++)
+ if(fabs(res[i+j])>max)max=fabs(res[i+j]);
+
for(j=0;j<parts-1;j++)
- if(maxmask<maskmbound[j] &&
- meanmask<maskabound[j] &&
- meanfloor<floorbound[j])
+ if(max>=bound[j])
break;
aux=j;
-
- fprintf(of,"%d, ",aux);
-
- for(j=0;j<subn;j++,i++)
- fprintf(or[aux],"%g, ",floor[i]);
+
+ fprintf(of,"%ld, ",aux);
+
+ for(j=0;j<subn;j++)
+ fprintf(or[aux],"%g, ",res[j+i]);
+
fprintf(or[aux],"\n");
}
@@ -111,12 +82,12 @@ static int getline(FILE *in,double *vec,int begin,int n){
static void usage(){
fprintf(stderr,
"usage:\n"
- "residuesplit <mask> <floor> <begin,n,group> <baseout> <m,a,f> [<m,a,f>]...\n"
+ "residuesplit <res> <begin,n,group> <baseout> <min> [<min>]...\n"
" where begin,n,group is first scalar, \n"
" number of scalars of each in line,\n"
" number of scalars in a group\n"
- " m,a,f are the boundary conditions for each group\n"
- "eg: residuesplit mask.vqd floor.vqd 0,1024,32 res .5 2.5,1.5 ,,.25\n"
+ " min is the minimum peak value required for membership in a group\n"
+ "eg: residuesplit mask.vqd floor.vqd 0,1024,16 res 25.5 13.5 7.5 1.5 0\n"
"produces resaux.vqd and res_0...n.vqd\n\n");
exit(1);
}
@@ -125,18 +96,16 @@ int main(int argc, char *argv[]){
char *buffer;
char *base;
int i,parts,begin,n,subn;
- FILE *mask;
- FILE *floor;
- double *maskmbound,*maskabound,*maskvec;
- double *floorbound,*floorvec;
+ FILE *res;
+ double *bound,*vec;
+ long c=0;
+ if(argc<5)usage();
- if(argc<6)usage();
-
- base=strdup(argv[4]);
+ base=strdup(argv[3]);
buffer=alloca(strlen(base)+20);
{
- char *pos=strchr(argv[3],',');
- begin=atoi(argv[3]);
+ char *pos=strchr(argv[2],',');
+ begin=atoi(argv[2]);
if(!pos)
usage();
else
@@ -152,44 +121,20 @@ int main(int argc, char *argv[]){
}
}
- /* how many parts? Need to scan m,f... */
- parts=argc-4; /* yes, one past */
- maskmbound=malloc(sizeof(double)*parts);
- maskabound=malloc(sizeof(double)*parts);
- floorbound=malloc(sizeof(double)*parts);
+ /* how many parts?... */
+ parts=argc-3;
+ bound=malloc(sizeof(double)*parts);
for(i=0;i<parts-1;i++){
- char *pos=strchr(argv[5+i],',');
- maskmbound[i]=atof(argv[5+i]);
- if(*argv[5+i]==',')maskmbound[i]=1e50;
- if(!pos){
- maskabound[i]=1e50;
- floorbound[i]=1e50;
- }else{
- maskabound[i]=atof(pos+1);
- if(pos[1]==',')maskabound[i]=1e50;
- pos=strchr(pos+1,',');
- if(!pos)
- floorbound[i]=1e50;
- else{
- floorbound[i]=atof(pos+1);
- }
- }
+ bound[i]=atof(argv[4+i]);
}
- maskmbound[i]=1e50;
- maskabound[i]=1e50;
- floorbound[i]=1e50;
+ bound[i]=0;
- mask=fopen(argv[1],"r");
- if(!mask){
+ res=fopen(argv[1],"r");
+ if(!res){
fprintf(stderr,"Could not open file %s\n",argv[1]);
exit(1);
}
- floor=fopen(argv[2],"r");
- if(!mask){
- fprintf(stderr,"Could not open file %s\n",argv[2]);
- exit(1);
- }
or=alloca(parts*sizeof(FILE*));
sprintf(buffer,"%saux.vqd",base);
@@ -207,21 +152,21 @@ int main(int argc, char *argv[]){
}
}
- maskvec=malloc(sizeof(double)*n);
- floorvec=malloc(sizeof(double)*n);
+ vec=malloc(sizeof(double)*n);
/* get the input line by line and process it */
- while(!feof(mask) && !feof(floor)){
- if(getline(mask,maskvec,begin,n) &&
- getline(floor,floorvec,begin,n))
- quantaux(maskvec,floorvec,n,
- maskmbound,maskabound,floorbound,parts,subn);
-
+ while(!feof(res)){
+ if(getline(res,vec,begin,n))
+ quantaux(vec,n,bound,parts,subn);
+ c++;
+ if(!(c&0xf)){
+ spinnit("kB so far...",(int)(ftell(res)/1024));
+ }
}
- fclose(mask);
- fclose(floor);
+ fclose(res);
fclose(of);
for(i=0;i<parts;i++)
fclose(or[i]);
+ fprintf(stderr,"\rDone \n");
return(0);
}
diff --git a/vq/run.c b/vq/run.c
index b6b55279..4ba26f0e 100644
--- a/vq/run.c
+++ b/vq/run.c
@@ -12,7 +12,7 @@
********************************************************************
function: utility main for loading and operating on codebooks
- last mod: $Id: run.c,v 1.9 2000/02/23 09:10:11 xiphmont Exp $
+ last mod: $Id: run.c,v 1.10 2000/05/08 20:49:51 xiphmont Exp $
********************************************************************/
@@ -29,7 +29,8 @@
#include "bookutil.h"
/* command line:
- utilname input_book.vqh input_data.vqd [input_data.vqd]
+ utilname [-i] +|* input_book.vqh [+|* input_book.vqh]
+ input_data.vqd [input_data.vqd]
produces output data on stdout
(may also take input data from stdin)
@@ -38,16 +39,17 @@
extern void process_preprocess(codebook **b,char *basename);
extern void process_postprocess(codebook **b,char *basename);
-extern void process_vector(codebook **b,double *a);
+extern void process_vector(codebook **b,int *addmul, int inter,double *a,int n);
extern void process_usage(void);
int main(int argc,char *argv[]){
char *basename;
- double *a=NULL;
codebook **b=calloc(1,sizeof(codebook *));
+ int *addmul=calloc(1,sizeof(int));
int books=0;
int input=0;
-
+ int interleave=0;
+ int j;
int start=0;
int num=-1;
argv++;
@@ -74,6 +76,11 @@ int main(int argc,char *argv[]){
}
argv+=2;
}
+ if(argv[0][1]=='i'){
+ /* interleave */
+ interleave=1;
+ argv+=1;
+ }
}else{
/* input file. What kind? */
char *dot;
@@ -87,11 +94,18 @@ int main(int argc,char *argv[]){
/* codebook */
if(!strcmp(ext,"vqh")){
+ int multp=0;
if(input){
fprintf(stderr,"specify all input data (.vqd) files following\n"
"codebook header (.vqh) files\n");
exit(1);
}
+ /* is it additive or multiplicative? */
+ if(name[0]=='*'){
+ multp=1;
+ name++;
+ }
+ if(name[0]=='+')name++;
basename=strrchr(name,'/');
if(basename)
@@ -102,13 +116,18 @@ int main(int argc,char *argv[]){
if(dot)*dot='\0';
b=realloc(b,sizeof(codebook *)*(books+2));
- b[books++]=codebook_load(name);
+ b[books]=codebook_load(name);
+ addmul=realloc(addmul,sizeof(int)*(books+1));
+ addmul[books++]=multp;
b[books]=NULL;
- if(!a)a=malloc(sizeof(double)*b[books-1]->c->dim);
}
/* data file */
if(!strcmp(ext,"vqd")){
+ int cols;
+ long lines=0;
+ char *line;
+ double *vec;
FILE *in=fopen(name,"r");
if(!in){
fprintf(stderr,"Could not open input file %s\n",name);
@@ -121,10 +140,29 @@ int main(int argc,char *argv[]){
}
reset_next_value();
-
- while(get_vector(*b,in,start,num,a)!=-1)
- process_vector(b,a);
-
+ line=setup_line(in);
+ /* count cols before we start reading */
+ {
+ char *temp=line;
+ while(*temp==' ')temp++;
+ for(cols=0;*temp;cols++){
+ while(*temp>32)temp++;
+ while(*temp==' ')temp++;
+ }
+ }
+ vec=alloca(cols*sizeof(double));
+ while(line){
+ lines++;
+ for(j=0;j<cols;j++)
+ if(get_line_value(in,vec+j)){
+ fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
+ exit(1);
+ }
+ /* ignores -s for now */
+ process_vector(b,addmul,interleave,vec,cols);
+
+ line=setup_line(in);
+ }
fclose(in);
}
}
@@ -138,14 +176,38 @@ int main(int argc,char *argv[]){
exit(1);
}
if((S_IFIFO|S_IFREG|S_IFSOCK)&st.st_mode){
+ int cols;
+ char *line;
+ long lines=0;
+ double *vec;
if(!input){
process_preprocess(b,basename);
input++;
}
- reset_next_value();
- while(get_vector(*b,stdin,start,num,a)!=-1)
- process_vector(b,a);
+ line=setup_line(stdin);
+ /* count cols before we start reading */
+ {
+ char *temp=line;
+ while(*temp==' ')temp++;
+ for(cols=0;*temp;cols++){
+ while(*temp>32)temp++;
+ while(*temp==' ')temp++;
+ }
+ }
+ vec=alloca(cols*sizeof(double));
+ while(line){
+ lines++;
+ for(j=0;j<cols;j++)
+ if(get_line_value(stdin,vec+j)){
+ fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
+ exit(1);
+ }
+ /* ignores -s for now */
+ process_vector(b,addmul,interleave,vec,cols);
+
+ line=setup_line(stdin);
+ }
}
}
diff --git a/vq/train.c b/vq/train.c
index a30ec1ad..39f5b1a2 100644
--- a/vq/train.c
+++ b/vq/train.c
@@ -12,7 +12,7 @@
********************************************************************
function: utility main for training codebooks
- last mod: $Id: train.c,v 1.16 2000/02/21 01:12:58 xiphmont Exp $
+ last mod: $Id: train.c,v 1.17 2000/05/08 20:49:51 xiphmont Exp $
********************************************************************/
@@ -53,7 +53,8 @@ static void usage(void){
" -s[ubvector] <start[,num]>\n"
" -e[rror] <desired_error>\n"
" -i[terations] <maxiterations>\n"
- " -d[istance] desired minimum cell radius from midpoint\n\n"
+ " -d[istance] desired minimum cell radius from midpoint\n"
+ " -b <dummy> eliminate cell size biasing; use normal LBG\n\n"
"examples:\n"
" train a new codebook to 1%% tolerance on datafile 'foo':\n"
" xxxvqtrain book -p 256,6,8 -e .01 foo\n"
@@ -78,6 +79,7 @@ int main(int argc,char *argv[]){
int start=0,num=-1;
double desired=.05,mindist=0.;
int iter=1000;
+ int biasp=1;
FILE *out=NULL;
char *line;
@@ -213,6 +215,9 @@ int main(int argc,char *argv[]){
if(sscanf(argv[1],"%d",&iter)!=1)
goto syner;
break;
+ case 'b':
+ biasp=0;
+ break;
default:
fprintf(stderr,"Unknown option %s\n",argv[0]);
exit(1);
@@ -275,7 +280,7 @@ int main(int argc,char *argv[]){
}
if(num<=0)num=(cols-start)/dim;
for(i=0;i<num;i++)
- vqext_addpoint_adj(&v,b,start+i*dim,dim,cols);
+ vqext_addpoint_adj(&v,b,start+i*dim,dim,cols,num);
}
}
@@ -300,7 +305,7 @@ int main(int argc,char *argv[]){
vqgen_unquantize(&v,&q);
vqgen_cellmetric(&v);
}
- result=vqgen_iterate(&v);
+ result=vqgen_iterate(&v,biasp);
vqext_quantize(&v,&q);
if(result<desired)break;
}
@@ -310,7 +315,8 @@ int main(int argc,char *argv[]){
fprintf(out,"# OggVorbis VQ codebook trainer, intermediate file\n");
fprintf(out,"%s\n",vqext_booktype);
fprintf(out,"%d %d %d\n",entries,dim,vqext_aux);
- fprintf(out,"%ld %ld %d %d\n",q.min,q.delta,q.quant,q.sequencep);
+ fprintf(out,"%ld %ld %d %d\n",
+ q.min,q.delta,q.quant,q.sequencep);
/* quantized entries */
fprintf(out,"# quantized entries---\n");
diff --git a/vq/vqext.h b/vq/vqext.h
index 986a32ad..194689a5 100644
--- a/vq/vqext.h
+++ b/vq/vqext.h
@@ -12,7 +12,7 @@
********************************************************************
function: prototypes for extermal metrics specific to data type
- last mod: $Id: vqext.h,v 1.8 2000/02/21 01:12:59 xiphmont Exp $
+ last mod: $Id: vqext.h,v 1.9 2000/05/08 20:49:51 xiphmont Exp $
********************************************************************/
@@ -27,7 +27,7 @@ extern int vqext_aux;
extern double vqext_metric(vqgen *v,double *e, double *p);
extern double *vqext_weight(vqgen *v,double *p);
-extern void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols);
+extern void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols,int num);
extern void vqext_preprocess(vqgen *v);
extern void vqext_quantize(vqgen *v,quant_meta *);
diff --git a/vq/vqgen.c b/vq/vqgen.c
index 858c84d3..74c83ea2 100644
--- a/vq/vqgen.c
+++ b/vq/vqgen.c
@@ -12,7 +12,7 @@
********************************************************************
function: train a VQ codebook
- last mod: $Id: vqgen.c,v 1.30 2000/02/21 01:13:00 xiphmont Exp $
+ last mod: $Id: vqgen.c,v 1.31 2000/05/08 20:49:51 xiphmont Exp $
********************************************************************/
@@ -32,6 +32,7 @@
#include "vqgen.h"
#include "bookutil.h"
+#include "../lib/sharedbook.h"
/* Codebook generation happens in two steps:
@@ -88,10 +89,11 @@ int directdsort(const void *a, const void *b){
}
void vqgen_cellmetric(vqgen *v){
- int i,j,k;
+ int j,k;
double min=-1.,max=-1.,mean=0.,acc=0.;
long dup=0,unused=0;
#ifdef NOISY
+ int i;
char buff[80];
double spacings[v->entries];
int count=0;
@@ -190,8 +192,11 @@ void vqgen_quantize(vqgen *v,quant_meta *q){
delta=(maxdel-mindel)/((1<<q->quant)-1.5);
- q->min=float24_pack(mindel);
- q->delta=float24_pack(delta);
+ q->min=_float32_pack(mindel);
+ q->delta=_float32_pack(delta);
+
+ mindel=_float32_unpack(q->min);
+ delta=_float32_unpack(q->delta);
for(j=0;j<v->entries;j++){
double last=0;
@@ -216,19 +221,20 @@ void vqgen_quantize(vqgen *v,quant_meta *q){
}
}
-/* much easier :-) */
+/* much easier :-). Unlike in the codebook, we don't un-log log
+ scales; we just make sure they're properly offset. */
void vqgen_unquantize(vqgen *v,quant_meta *q){
long j,k;
- double mindel=float24_unpack(q->min);
- double delta=float24_unpack(q->delta);
+ double mindel=_float32_unpack(q->min);
+ double delta=_float32_unpack(q->delta);
for(j=0;j<v->entries;j++){
double last=0.;
for(k=0;k<v->elements;k++){
- double now=_now(v,j)[k]*delta+last+mindel;
- _now(v,j)[k]=now;
+ double now=_now(v,j)[k];
+ now=fabs(now)*delta+last+mindel;
if(q->sequencep)last=now;
-
+ _now(v,j)[k]=now;
}
}
}
@@ -274,7 +280,7 @@ void vqgen_addpoint(vqgen *v, double *p,double *a){
if(!(v->points&0xff))spinnit("loading... ",v->points);
}
-double vqgen_iterate(vqgen *v){
+double vqgen_iterate(vqgen *v,int biasp){
long i,j,k;
long biasable;
@@ -311,109 +317,113 @@ double vqgen_iterate(vqgen *v){
memset(nearcount,0,sizeof(long)*v->entries);
memset(v->assigned,0,sizeof(long)*v->entries);
biasable=0;
- for(i=0;i<v->points;i++){
- double *ppt=v->weight_func(v,_point(v,i));
- double firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0];
- double secondmetric=v->metric_func(v,_now(v,1),ppt)+v->bias[1];
- long firstentry=0;
- long secondentry=1;
- int biasflag=1;
-
- if(!(i&0xff))spinnit("biasing... ",v->points+v->points+v->entries-i);
-
- if(firstmetric>secondmetric){
- double temp=firstmetric;
- firstmetric=secondmetric;
- secondmetric=temp;
- firstentry=1;
- secondentry=0;
- }
-
- for(j=2;j<v->entries;j++){
- double thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j];
- if(thismetric<secondmetric){
- if(thismetric<firstmetric){
- secondmetric=firstmetric;
- secondentry=firstentry;
- firstmetric=thismetric;
- firstentry=j;
- }else{
- secondmetric=thismetric;
- secondentry=j;
- }
- }
- }
-
- j=firstentry;
- for(j=0;j<v->entries;j++){
+ if(biasp){
+ for(i=0;i<v->points;i++){
+ double *ppt=v->weight_func(v,_point(v,i));
+ double firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0];
+ double secondmetric=v->metric_func(v,_now(v,1),ppt)+v->bias[1];
+ long firstentry=0;
+ long secondentry=1;
+ int biasflag=1;
- double thismetric,localmetric;
- double *nearbiasptr=nearbias+desired2*j;
- long k=nearcount[j];
+ if(!(i&0xff))spinnit("biasing... ",v->points+v->points+v->entries-i);
- localmetric=v->metric_func(v,_now(v,j),ppt);
- /* 'thismetric' is to be the bias value necessary in the current
- arrangement for entry j to capture point i */
- if(firstentry==j){
- /* use the secondary entry as the threshhold */
- thismetric=secondmetric-localmetric;
- }else{
- /* use the primary entry as the threshhold */
- thismetric=firstmetric-localmetric;
+ if(firstmetric>secondmetric){
+ double temp=firstmetric;
+ firstmetric=secondmetric;
+ secondmetric=temp;
+ firstentry=1;
+ secondentry=0;
}
-
- /* support the idea of 'minimum distance'... if we want the
- cells in a codebook to be roughly some minimum size (as with
- the low resolution residue books) */
- if(localmetric>=v->mindist){
-
- /* a cute two-stage delayed sorting hack */
- if(k<desired){
- nearbiasptr[k]=thismetric;
- k++;
- if(k==desired){
- spinnit("biasing... ",v->points+v->points+v->entries-i);
- qsort(nearbiasptr,desired,sizeof(double),directdsort);
+ for(j=2;j<v->entries;j++){
+ double thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j];
+ if(thismetric<secondmetric){
+ if(thismetric<firstmetric){
+ secondmetric=firstmetric;
+ secondentry=firstentry;
+ firstmetric=thismetric;
+ firstentry=j;
+ }else{
+ secondmetric=thismetric;
+ secondentry=j;
}
+ }
+ }
+
+ j=firstentry;
+ for(j=0;j<v->entries;j++){
+
+ double thismetric,localmetric;
+ double *nearbiasptr=nearbias+desired2*j;
+ long k=nearcount[j];
+
+ localmetric=v->metric_func(v,_now(v,j),ppt);
+ /* 'thismetric' is to be the bias value necessary in the current
+ arrangement for entry j to capture point i */
+ if(firstentry==j){
+ /* use the secondary entry as the threshhold */
+ thismetric=secondmetric-localmetric;
+ }else{
+ /* use the primary entry as the threshhold */
+ thismetric=firstmetric-localmetric;
+ }
+
+ /* support the idea of 'minimum distance'... if we want the
+ cells in a codebook to be roughly some minimum size (as with
+ the low resolution residue books) */
+
+ if(localmetric>=v->mindist){
- }else if(thismetric>nearbiasptr[desired-1]){
- nearbiasptr[k]=thismetric;
- k++;
- if(k==desired2){
- spinnit("biasing... ",v->points+v->points+v->entries-i);
- qsort(nearbiasptr,desired2,sizeof(double),directdsort);
- k=desired;
+ /* a cute two-stage delayed sorting hack */
+ if(k<desired){
+ nearbiasptr[k]=thismetric;
+ k++;
+ if(k==desired){
+ spinnit("biasing... ",v->points+v->points+v->entries-i);
+ qsort(nearbiasptr,desired,sizeof(double),directdsort);
+ }
+
+ }else if(thismetric>nearbiasptr[desired-1]){
+ nearbiasptr[k]=thismetric;
+ k++;
+ if(k==desired2){
+ spinnit("biasing... ",v->points+v->points+v->entries-i);
+ qsort(nearbiasptr,desired2,sizeof(double),directdsort);
+ k=desired;
+ }
}
- }
- nearcount[j]=k;
- }else
- biasflag=0;
+ nearcount[j]=k;
+ }else
+ biasflag=0;
+ }
+ biasable+=biasflag;
}
- biasable+=biasflag;
- }
-
- /* inflate/deflate */
-
- for(i=0;i<v->entries;i++){
- double *nearbiasptr=nearbias+desired2*i;
-
- spinnit("biasing... ",v->points+v->entries-i);
-
- /* due to the delayed sorting, we likely need to finish it off....*/
- if(nearcount[i]>desired)
- qsort(nearbiasptr,nearcount[i],sizeof(double),directdsort);
-
- /* desired is the *maximum* bias queue size. If we're using
- minimum distance, we're not interested in the max size... we're
- interested in the biasable number of points */
- {
- long localdesired=(double)biasable/v->entries;
- if(localdesired)
- v->bias[i]=nearbiasptr[localdesired-1];
- else
- v->bias[i]=nearbiasptr[0];
+
+ /* inflate/deflate */
+
+ for(i=0;i<v->entries;i++){
+ double *nearbiasptr=nearbias+desired2*i;
+
+ spinnit("biasing... ",v->points+v->entries-i);
+
+ /* due to the delayed sorting, we likely need to finish it off....*/
+ if(nearcount[i]>desired)
+ qsort(nearbiasptr,nearcount[i],sizeof(double),directdsort);
+
+ /* desired is the *maximum* bias queue size. If we're using
+ minimum distance, we're not interested in the max size... we're
+ interested in the biasable number of points */
+ {
+ long localdesired=(double)biasable/v->entries;
+ if(localdesired)
+ v->bias[i]=nearbiasptr[localdesired-1];
+ else
+ v->bias[i]=nearbiasptr[0];
+ }
}
+ }else{
+ memset(v->bias,0,v->entries*sizeof(double));
}
/* Now assign with new bias and find new midpoints */
diff --git a/vq/vqgen.h b/vq/vqgen.h
index 738484b5..8de0e0bc 100644
--- a/vq/vqgen.h
+++ b/vq/vqgen.h
@@ -12,7 +12,7 @@
********************************************************************
function: build a VQ codebook
- last mod: $Id: vqgen.h,v 1.12 2000/02/21 01:13:01 xiphmont Exp $
+ last mod: $Id: vqgen.h,v 1.13 2000/05/08 20:49:51 xiphmont Exp $
********************************************************************/
@@ -68,7 +68,7 @@ extern void vqgen_init(vqgen *v,
double *(*weight)(vqgen *,double *));
extern void vqgen_addpoint(vqgen *v, double *p,double *aux);
-extern double vqgen_iterate(vqgen *v);
+extern double vqgen_iterate(vqgen *v,int biasp);
extern void vqgen_unquantize(vqgen *v,quant_meta *q);
extern void vqgen_quantize(vqgen *v,quant_meta *q);
extern void vqgen_cellmetric(vqgen *v);
diff --git a/vq/vqsplit.c b/vq/vqsplit.c
index 26552055..c54751bd 100644
--- a/vq/vqsplit.c
+++ b/vq/vqsplit.c
@@ -12,7 +12,7 @@
********************************************************************
function: build a VQ codebook and the encoding decision 'tree'
- last mod: $Id: vqsplit.c,v 1.18 2000/02/23 09:10:13 xiphmont Exp $
+ last mod: $Id: vqsplit.c,v 1.19 2000/05/08 20:49:51 xiphmont Exp $
********************************************************************/
@@ -34,6 +34,7 @@
#include "vqgen.h"
#include "vqsplit.h"
#include "bookutil.h"
+#include "../lib/sharedbook.h"
/* Codebook generation happens in two steps:
@@ -67,18 +68,39 @@ int iascsort(const void *a,const void *b){
return(av-bv);
}
-/* grab it from vqgen.c */
-extern double _dist(vqgen *v,double *a, double *b);
+static double _Ndist(int el,double *a, double *b){
+ int i;
+ double acc=0.;
+ for(i=0;i<el;i++){
+ double val=(a[i]-b[i]);
+ acc+=val*val;
+ }
+ return sqrt(acc);
+}
+
+#define _Npoint(i) (pointlist+dim*(i))
+#define _Nnow(i) (entrylist+dim*(i))
+
/* goes through the split, but just counts it and returns a metric*/
-void vqsp_count(vqgen *v,long *membership,
- long *entryindex,long entries,
- long *pointindex,long points,
- long *entryA,long *entryB,
- double *n, double c,
- long *entriesA,long *entriesB,long *entriesC){
- long i,j,k;
+int vqsp_count(double *entrylist,double *pointlist,int dim,
+ long *membership,long *reventry,
+ long *entryindex,long entries,
+ long *pointindex,long points,int splitp,
+ long *entryA,long *entryB,
+ long besti,long bestj,
+ long *entriesA,long *entriesB,long *entriesC){
+ long i,j;
long A=0,B=0,C=0;
+ long pointsA=0;
+ long pointsB=0;
+ long *temppointsA=NULL;
+ long *temppointsB=NULL;
+
+ if(splitp){
+ temppointsA=malloc(points*sizeof(long));
+ temppointsB=malloc(points*sizeof(long));
+ }
memset(entryA,0,sizeof(long)*entries);
memset(entryB,0,sizeof(long)*entries);
@@ -87,17 +109,29 @@ void vqsp_count(vqgen *v,long *membership,
both? */
for(i=0;i<points;i++){
- double *ppt=_point(v,pointindex[i]);
- long firstentry=membership[i];
- double position=-c;
-
- if(!entryA[firstentry] || !entryB[firstentry]){
- for(k=0;k<v->elements;k++)
- position+=ppt[k]*n[k];
- if(position>0.)
- entryA[firstentry]=1;
- else
- entryB[firstentry]=1;
+ double *ppt=_Npoint(pointindex[i]);
+ long firstentry=membership[pointindex[i]];
+
+ if(firstentry==besti){
+ entryA[reventry[firstentry]]=1;
+ if(splitp)temppointsA[pointsA++]=pointindex[i];
+ continue;
+ }
+ if(firstentry==bestj){
+ entryB[reventry[firstentry]]=1;
+ if(splitp)temppointsB[pointsB++]=pointindex[i];
+ continue;
+ }
+ {
+ double distA=_Ndist(dim,ppt,_Nnow(besti));
+ double distB=_Ndist(dim,ppt,_Nnow(bestj));
+ if(distA<distB){
+ entryA[reventry[firstentry]]=1;
+ if(splitp)temppointsA[pointsA++]=pointindex[i];
+ }else{
+ entryB[reventry[firstentry]]=1;
+ if(splitp)temppointsB[pointsB++]=pointindex[i];
+ }
}
}
@@ -113,24 +147,23 @@ void vqsp_count(vqgen *v,long *membership,
*entriesA=A;
*entriesB=B;
*entriesC=C;
-}
-
-void pq_in_out(vqgen *v,double *n,double *c,double *p,double *q){
- int k;
- *c=0.;
- for(k=0;k<v->elements;k++){
- double center=(p[k]+q[k])/2.;
- n[k]=(center-q[k])*2.;
- *c+=center*n[k];
+ if(splitp){
+ memcpy(pointindex,temppointsA,sizeof(long)*pointsA);
+ memcpy(pointindex+pointsA,temppointsB,sizeof(long)*pointsB);
+ free(temppointsA);
+ free(temppointsB);
}
+ return(pointsA);
}
-int lp_split(vqgen *v,codebook *b,
+int lp_split(double *pointlist,long totalpoints,
+ codebook *b,
long *entryindex,long entries,
long *pointindex,long points,
+ long *membership,long *reventry,
long depth, long *pointsofar){
- encode_aux *t=b->c->encode_tree;
+ encode_aux_nearestmatch *t=b->c->nearest_tree;
/* The encoder, regardless of book, will be using a straight
euclidian distance-to-point metric to determine closest point.
@@ -138,9 +171,9 @@ int lp_split(vqgen *v,codebook *b,
codebook set spacing and distribution using special metrics and
even a midpoint division won't disturb the basic properties) */
+ int dim=b->dim;
+ double *entrylist=b->valuelist;
long ret;
- double *n=alloca(sizeof(double)*v->elements);
- double c;
long *entryA=calloc(entries,sizeof(long));
long *entryB=calloc(entries,sizeof(long));
long entriesA=0;
@@ -149,39 +182,15 @@ int lp_split(vqgen *v,codebook *b,
long pointsA=0;
long i,j,k;
- long *membership=malloc(sizeof(long)*points);
-
long besti=-1;
long bestj=-1;
-
- char spinbuf[80];
- sprintf(spinbuf,"splitting [%ld left]... ",v->points-*pointsofar);
-
- if(depth==22 && points==9 && entries==2 && *pointsofar==252935){
- fprintf(stderr,"HERE\n");
-
- }
-
- /* which cells do points belong to? Do this before n^2 best pair chooser. */
-
- for(i=0;i<points;i++){
- double *ppt=_point(v,pointindex[i]);
- long firstentry=0;
- double firstmetric=_dist(v,_now(v,entryindex[0]),ppt);
-
- if(points*entries>64*1024)spinnit(spinbuf,entries);
+ char spinbuf[80];
+ sprintf(spinbuf,"splitting [%ld left]... ",totalpoints-*pointsofar);
- for(j=1;j<entries;j++){
- double thismetric=_dist(v,_now(v,entryindex[j]),ppt);
- if(thismetric<=firstmetric){ /* Not <; on the line goes to higher number */
- firstmetric=thismetric;
- firstentry=j;
- }
- }
-
- membership[i]=firstentry;
- }
+ /* one reverse index needed */
+ for(i=0;i<b->entries;i++)reventry[i]=-1;
+ for(i=0;i<entries;i++)reventry[entryindex[i]]=i;
/* We need to find the dividing hyperplane. find the median of each
axis as the centerpoint and the normal facing farthest point */
@@ -196,12 +205,12 @@ int lp_split(vqgen *v,codebook *b,
for(i=0;i<entries-1;i++){
for(j=i+1;j<entries;j++){
spinnit(spinbuf,entries-i);
- pq_in_out(v,n,&c,_now(v,entryindex[i]),_now(v,entryindex[j]));
- vqsp_count(v,membership,
+ vqsp_count(b->valuelist,pointlist,dim,
+ membership,reventry,
entryindex,entries,
- pointindex,points,
+ pointindex,points,0,
entryA,entryB,
- n, c,
+ entryindex[i],entryindex[j],
&entriesA,&entriesB,&entriesC);
this=(entriesA-entriesC)*(entriesB-entriesC);
@@ -221,20 +230,20 @@ int lp_split(vqgen *v,codebook *b,
}
}
}else{
- double *p=alloca(v->elements*sizeof(double));
- double *q=alloca(v->elements*sizeof(double));
+ double *p=alloca(dim*sizeof(double));
+ double *q=alloca(dim*sizeof(double));
double best=0.;
/* try COG/normal and furthest pairs */
/* meanpoint */
/* eventually, we want to select the closest entry and figure n/c
from p/q (because storing n/c is too large */
- for(k=0;k<v->elements;k++){
+ for(k=0;k<dim;k++){
spinnit(spinbuf,entries);
p[k]=0.;
for(j=0;j<entries;j++)
- p[k]+=v->entrylist[entryindex[j]*v->elements+k];
+ p[k]+=b->valuelist[entryindex[j]*dim+k];
p[k]/=entries;
}
@@ -244,18 +253,18 @@ int lp_split(vqgen *v,codebook *b,
center */
for(i=0;i<entries;i++){
- double *ppi=_now(v,entryindex[i]);
+ double *ppi=_Nnow(entryindex[i]);
double ref_best=0.;
double ref_j=-1;
double this;
spinnit(spinbuf,entries-i);
- for(k=0;k<v->elements;k++)
+ for(k=0;k<dim;k++)
q[k]=2*p[k]-ppi[k];
for(j=0;j<entries;j++){
if(j!=i){
- double this=_dist(v,q,_now(v,entryindex[j]));
+ double this=_Ndist(dim,q,_Nnow(entryindex[j]));
if(ref_j==-1 || this<=ref_best){ /* <=, not <; very important */
ref_best=this;
ref_j=entryindex[j];
@@ -263,12 +272,12 @@ int lp_split(vqgen *v,codebook *b,
}
}
- pq_in_out(v,n,&c,ppi,_now(v,ref_j));
- vqsp_count(v,membership,
+ vqsp_count(b->valuelist,pointlist,dim,
+ membership,reventry,
entryindex,entries,
- pointindex,points,
+ pointindex,points,0,
entryA,entryB,
- n, c,
+ entryindex[i],ref_j,
&entriesA,&entriesB,&entriesC);
this=(entriesA-entriesC)*(entriesB-entriesC);
@@ -297,44 +306,13 @@ int lp_split(vqgen *v,codebook *b,
/* find cells enclosing points */
/* count A/B points */
- pq_in_out(v,n,&c,_now(v,besti),_now(v,bestj));
- vqsp_count(v,membership,
- entryindex,entries,
- pointindex,points,
- entryA,entryB,
- n, c,
- &entriesA,&entriesB,&entriesC);
-
- free(membership);
-
- /* the point index is split, so we do an Order n rearrangement into
- A first/B last and just pass it on */
- {
- long Aptr=0;
- long Bptr=points-1;
- while(Aptr<=Bptr){
- while(Aptr<=Bptr){
- double position=-c;
- for(k=0;k<v->elements;k++)
- position+=_point(v,pointindex[Aptr])[k]*n[k];
- if(position<=0.)break; /* not in A */
- Aptr++;
- }
- while(Aptr<=Bptr){
- double position=-c;
- for(k=0;k<v->elements;k++)
- position+=_point(v,pointindex[Bptr])[k]*n[k];
- if(position>0.)break; /* not in B */
- Bptr--;
- }
- if(Aptr<Bptr){
- long temp=pointindex[Aptr];
- pointindex[Aptr]=pointindex[Bptr];
- pointindex[Bptr]=temp;
- }
- pointsA=Aptr;
- }
- }
+ pointsA=vqsp_count(b->valuelist,pointlist,dim,
+ membership,reventry,
+ entryindex,entries,
+ pointindex,points,1,
+ entryA,entryB,
+ besti,bestj,
+ &entriesA,&entriesB,&entriesC);
/* fprintf(stderr,"split: total=%ld depth=%ld set A=%ld:%ld:%ld=B\n",
entries,depth,entriesA-entriesC,entriesC,entriesB-entriesC);*/
@@ -357,7 +335,8 @@ int lp_split(vqgen *v,codebook *b,
*pointsofar+=pointsA;
}else{
t->ptr0[thisaux]= -t->aux;
- ret=lp_split(v,b,entryA,entriesA,pointindex,pointsA,depth+1,pointsofar);
+ ret=lp_split(pointlist,totalpoints,b,entryA,entriesA,pointindex,pointsA,
+ membership,reventry,depth+1,pointsofar);
}
if(entriesB==1){
ret++;
@@ -365,7 +344,8 @@ int lp_split(vqgen *v,codebook *b,
*pointsofar+=points-pointsA;
}else{
t->ptr1[thisaux]= -t->aux;
- ret+=lp_split(v,b,entryB,entriesB,pointindex+pointsA,points-pointsA,
+ ret+=lp_split(pointlist,totalpoints,b,entryB,entriesB,pointindex+pointsA,
+ points-pointsA,membership,reventry,
depth+1,pointsofar);
}
}
@@ -374,7 +354,7 @@ int lp_split(vqgen *v,codebook *b,
return(ret);
}
-static int _node_eq(encode_aux *v, long a, long b){
+static int _node_eq(encode_aux_nearestmatch *v, long a, long b){
long Aptr0=v->ptr0[a];
long Aptr1=v->ptr1[a];
long Bptr0=v->ptr0[b];
@@ -393,12 +373,13 @@ static int _node_eq(encode_aux *v, long a, long b){
void vqsp_book(vqgen *v, codebook *b, long *quantlist){
long i,j;
static_codebook *c=(static_codebook *)b->c;
- encode_aux *t;
+ encode_aux_nearestmatch *t;
memset(b,0,sizeof(codebook));
memset(c,0,sizeof(static_codebook));
b->c=c;
- t=c->encode_tree=calloc(1,sizeof(encode_aux));
+ t=c->nearest_tree=calloc(1,sizeof(encode_aux_nearestmatch));
+ c->maptype=2;
/* make sure there are no duplicate entries and that every
entry has points */
@@ -406,7 +387,7 @@ void vqsp_book(vqgen *v, codebook *b, long *quantlist){
for(i=0;i<v->entries;){
/* duplicate? if so, eliminate */
for(j=0;j<i;j++){
- if(_dist(v,_now(v,i),_now(v,j))==0.){
+ if(_Ndist(v->elements,_now(v,i),_now(v,j))==0.){
fprintf(stderr,"found a duplicate entry! removing...\n");
v->entries--;
memcpy(_now(v,i),_now(v,v->entries),sizeof(double)*v->elements);
@@ -422,13 +403,13 @@ void vqsp_book(vqgen *v, codebook *b, long *quantlist){
v->assigned=calloc(v->entries,sizeof(long));
for(i=0;i<v->points;i++){
double *ppt=_point(v,i);
- double firstmetric=_dist(v,_now(v,0),ppt);
+ double firstmetric=_Ndist(v->elements,_now(v,0),ppt);
long firstentry=0;
if(!(i&0xff))spinnit("checking... ",v->points-i);
for(j=0;j<v->entries;j++){
- double thismetric=_dist(v,_now(v,j),ppt);
+ double thismetric=_Ndist(v->elements,_now(v,j),ppt);
if(thismetric<firstmetric){
firstmetric=thismetric;
firstentry=j;
@@ -457,6 +438,8 @@ void vqsp_book(vqgen *v, codebook *b, long *quantlist){
{
long *entryindex=malloc(v->entries*sizeof(long *));
long *pointindex=malloc(v->points*sizeof(long));
+ long *membership=malloc(v->points*sizeof(long));
+ long *reventry=malloc(v->entries*sizeof(long));
long pointssofar=0;
for(i=0;i<v->entries;i++)entryindex[i]=i;
@@ -471,12 +454,41 @@ void vqsp_book(vqgen *v, codebook *b, long *quantlist){
c->dim=v->elements;
c->entries=v->entries;
c->lengthlist=calloc(c->entries,sizeof(long));
+ b->valuelist=v->entrylist; /* temporary; replaced later */
+ b->dim=c->dim;
+ b->entries=c->entries;
+
+ for(i=0;i<v->points;i++)membership[i]=-1;
+ for(i=0;i<v->points;i++){
+ double *ppt=_point(v,i);
+ long firstentry=0;
+ double firstmetric=_Ndist(v->elements,_now(v,0),ppt);
+ if(!(i&0xff))spinnit("assigning... ",v->points-i);
+
+ for(j=1;j<v->entries;j++){
+ if(v->assigned[j]!=-1){
+ double thismetric=_Ndist(v->elements,_now(v,j),ppt);
+ if(thismetric<=firstmetric){
+ firstmetric=thismetric;
+ firstentry=j;
+ }
+ }
+ }
+
+ membership[i]=firstentry;
+ }
+
fprintf(stderr,"Leaves added: %d \n",
- lp_split(v,b,entryindex,v->entries,
- pointindex,v->points,0,&pointssofar));
+ lp_split(v->pointlist,v->points,
+ b,entryindex,v->entries,
+ pointindex,v->points,
+ membership,reventry,
+ 0,&pointssofar));
free(pointindex);
+ free(membership);
+ free(reventry);
fprintf(stderr,"Paring/rerouting redundant branches... ");
@@ -536,14 +548,16 @@ void vqsp_book(vqgen *v, codebook *b, long *quantlist){
{
long *probability=malloc(c->entries*sizeof(long));
for(i=0;i<c->entries;i++)probability[i]=1; /* trivial guard */
- b->valuelist=v->entrylist; /* temporary for vqenc_entry; replaced later */
+ b->dim=c->dim;
/* sigh. A necessary hack */
for(i=0;i<t->aux;i++)t->p[i]*=c->dim;
for(i=0;i<t->aux;i++)t->q[i]*=c->dim;
for(i=0;i<v->points;i++){
- int ret=codebook_entry(b,v->pointlist+i*v->elements);
+ /* we use the linear matcher regardless becuase the trainer
+ doesn't convert log to linear */
+ int ret=_best(b,v->pointlist+i*v->elements,1);
probability[ret]++;
if(!(i&0xff))spinnit("counting hits... ",v->points-i);
}
diff --git a/vq/vqsplit.h b/vq/vqsplit.h
index 6c910462..d09265bd 100644
--- a/vq/vqsplit.h
+++ b/vq/vqsplit.h
@@ -12,7 +12,7 @@
********************************************************************
function: build a VQ codebook decision tree
- last mod: $Id: vqsplit.h,v 1.1 2000/01/05 10:15:00 xiphmont Exp $
+ last mod: $Id: vqsplit.h,v 1.2 2000/05/08 20:49:51 xiphmont Exp $
********************************************************************/
@@ -23,6 +23,12 @@
extern void vqsp_book(vqgen *v,codebook *b,long *quantlist);
extern int vqenc_entry(codebook *b,double *val);
+extern int lp_split(double *pointlist,long totalpoints,
+ codebook *b,
+ long *entryindex,long entries,
+ long *pointindex,long points,
+ long *membership,long *reventry,
+ long depth, long *pointsofar);
#endif